@datagrok/eda 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.js CHANGED
@@ -1,2 +1,2 @@
1
- var eda;(()=>{"use strict";var t={m:{},d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},u:t=>t+".js"};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var e;t.g.importScripts&&(e=t.g.location+"");var n=t.g.document;if(!e&&n&&(n.currentScript&&(e=n.currentScript.src),!e)){var r=n.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&!e;)e=r[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),t.p=e})(),t.b=document.baseURI||self.location.href;var e={};t.r(e),t.d(e,{PCA:()=>Pe,PLS:()=>Le,_package:()=>ke,applyLinearKernelSVM:()=>Re,applyPolynomialKernelSVM:()=>Me,applyRBFkernelSVM:()=>Te,applySigmoidKernelSVM:()=>$e,demoMultivariateAnalysis:()=>Ee,info:()=>De,init:()=>Fe,testDataLinearNonSeparable:()=>xe,testDataLinearSeparable:()=>Ie,trainLinearKernelSVM:()=>Ve,trainPolynomialKernelSVM:()=>Be,trainRBFkernelSVM:()=>Ne,trainSigmoidKernelSVM:()=>Oe});const n=grok,r=ui,a=DG;var o;function i(t){return e=this,n=void 0,a=function*(){yield new Promise((e=>setTimeout(e,t)))},new((r=void 0)||(r=Promise))((function(t,o){function i(t){try{l(a.next(t))}catch(t){o(t)}}function s(t){try{l(a.throw(t))}catch(t){o(t)}}function l(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(i,s)}l((a=a.apply(e,n||[])).next())}));var e,n,r,a}!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(o||(o={}));var s=function(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function s(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,s)}l((r=r.apply(t,e||[])).next())}))};class l{constructor(t,e,n=!1,a){var o;this.name="",this.description="",this._isAutomatic=!1,this._autoStartFirstStep=!1,this._currentStep=0,this._isStopped=!1,this._isCancelled=!1,this._isStepProcessed=!1,this._root=r.div([],{id:"demo-script",classes:"tutorials-root tutorials-track demo-app-script"}),this._steps=[],this._mainHeader=r.panel([],"tutorials-main-header"),this._header=r.h2(""),this._headerDiv=r.divH([],"tutorials-root-header"),this._stopStartBtn=r.button(r.iconFA("pause"),(()=>this._changeStopState()),"Play / pause"),this._restartBtn=r.button(r.iconFA("redo"),(()=>this._restartScript()),"Restart"),this._nextStepBtn=r.button(r.iconFA("play"),(()=>{this._isStepProcessed||this._nextStep()}),"Next step"),this._activity=r.panel([],"tutorials-root-description"),this._progressDiv=r.divV([],"tutorials-root-progress"),this._progress=r.element("progress"),this._progressSteps=r.divText(""),this._closeBtn=r.button(r.iconFA("chevron-left"),(()=>this._closeDock()),"Back to demo"),this.name=t,this.description=e,this._isAutomatic=n,this._autoStartFirstStep=null!==(o=null==a?void 0:a.autoStartFirstStep)&&void 0!==o&&o,this._progress.max=0,this._progress.value=1,l.currentObject=this}get steps(){return this._steps}get stepNumber(){return this._steps.length}_addHeader(){this._createHeaderDiv(),this._createProgressDiv(),this._mainHeader.append(this._headerDiv,this._progressDiv)}_createHeaderDiv(){this._header.innerText=this.name,this._headerDiv.append(this._closeBtn),this._headerDiv.append(this._header),this._nextStepBtn.firstChild.className="grok-icon fas fa-play",this._headerDiv.append(this._isAutomatic?this._stopStartBtn:this._nextStepBtn)}_createProgressDiv(){this._progress.max=this.stepNumber,this._progressDiv.append(this._progress),this._progressSteps=r.divText(`Step: ${this._progress.value} of ${this.stepNumber}`),this._progressDiv.append(this._progressSteps)}_addDescription(){var t;this._activity.append(r.div(this.description,"tutorials-root-description"));for(let e=0;e<this.stepNumber;e++){let n=r.iconFA("clock");this._isAutomatic||0===e&&(n=r.iconFA("play",(()=>this._nextStep()),"Next step"),n.className="grok-icon fas fa-play");const a=r.div(this._steps[e].name,"grok-tutorial-entry-instruction"),o=r.div(null===(t=this._steps[e].options)||void 0===t?void 0:t.description,"grok-tutorial-step-description hidden"),i=r.divH([n,a],"grok-tutorial-entry");this._activity.append(i,o)}}_initRoot(){var t,e,r;n.shell.windows.showContextPanel=!0,n.shell.windows.showHelp=!1;const o=Array.from(n.shell.dockManager.rootNode.children)[0];this._node=n.shell.dockManager.dock(this._root,a.DOCK_TYPE.FILL,o,""),(null===(e=null===(t=o.parent.container.containerElement.firstElementChild)||void 0===t?void 0:t.lastElementChild)||void 0===e?void 0:e.classList.contains("tab-handle-list-container"))&&(null===(r=o.parent.container.containerElement.firstElementChild)||void 0===r||r.lastElementChild.remove()),this._node.container.containerElement.classList.add("tutorials-demo-script-container"),this._addHeader(),this._root.append(this._mainHeader),this._addDescription(),this._root.append(this._activity)}_nextStep(){var t,e;return s(this,void 0,void 0,(function*(){this._isStepProcessed=!0,this._isAutomatic||(this._nextStepBtn.classList.add("disabled"),this._nextStepBtn.firstChild.classList.add("fa-disabled"));const n=this._activity.getElementsByClassName("grok-tutorial-entry")[this._currentStep],a=this._activity.getElementsByClassName("grok-icon")[this._currentStep],o=this._activity.getElementsByClassName("grok-tutorial-step-description")[this._currentStep];a.className="grok-icon far fa-spinner-third fa-spin",o.classList.remove("hidden"),o.classList.add("visible");const s=n,l=(null===(t=this._steps[this._currentStep].options)||void 0===t?void 0:t.delay)?null===(e=this._steps[this._currentStep].options)||void 0===e?void 0:e.delay:2e3;yield this._steps[this._currentStep].func(),this._scrollTo(this._root,s.offsetTop-this._mainHeader.offsetHeight),this._isAutomatic&&(yield this._countdown(n,a,l),yield i(l));const c=r.iconFA("check");if(a.replaceWith(c),c.className="grok-icon far fa-check",this._progress.value++,this._progressSteps.innerText=`Step: ${this._progress.value} of ${this.stepNumber}`,this._currentStep++,this._isStepProcessed=!1,this._currentStep!==this.stepNumber){if(!this._isAutomatic){const t=this._activity.getElementsByClassName("grok-icon")[this._currentStep],e=r.iconFA("play",(()=>this._nextStep()),"Next step");e.className="grok-icon fas fa-play",t.replaceWith(e),this._nextStepBtn.classList.remove("disabled"),this._nextStepBtn.firstChild.classList.remove("fa-disabled")}}else this._isAutomatic?this._stopStartBtn.replaceWith(this._restartBtn):this._nextStepBtn.replaceWith(this._restartBtn)}))}_startScript(){return s(this,void 0,void 0,(function*(){for(let t=this._currentStep;t<this.stepNumber&&!this._isStopped&&!this._isCancelled;t++)yield this._nextStep()}))}_scrollTo(t,e){t.focus(),t.scrollTop=e}_countdown(t,e,n){return s(this,void 0,void 0,(function*(){const a=r.div([],"demo-script-countdown");e.classList.add("hidden");let o=n/1e3;const i=this._createSVGIndicator(o);a.append(i),t.prepend(a);const s=setInterval((()=>{o--,0===o&&(clearInterval(s),a.remove(),e.classList.remove("hidden"),e.classList.add("visible"))}),1e3)}))}_createSVGIndicator(t){const e=document.createElementNS("http://www.w3.org/2000/svg","svg"),n=document.createElementNS("http://www.w3.org/2000/svg","circle");return n.setAttributeNS(null,"cx","7"),n.setAttributeNS(null,"cy","7"),n.setAttributeNS(null,"r","6"),n.setAttributeNS(null,"style",`animation: countdown ${t}s linear infinite forwards`),e.append(n),e}_changeStopState(){const t=this._stopStartBtn.getElementsByClassName("grok-icon");t[0].className="grok-icon fas fa-play",this._isStopped=!this._isStopped,this._isStopped||(t[0].className="grok-icon fal fa-pause",this._isStepProcessed||this._startScript())}_restartScript(){n.shell.dockManager.close(this._node),n.shell.closeAll(),this._clearRoot(),this._setInitParams(),this.start()}_clearRoot(){this._root=r.div([],{id:"demo-script",classes:"tutorials-root tutorials-track demo-app-script"}),this._mainHeader=r.panel([],"tutorials-main-header"),this._header=r.h2(""),this._headerDiv=r.divH([],"tutorials-root-header"),this._activity=r.panel([],"tutorials-root-description"),this._progressDiv=r.divV([],"tutorials-root-progress"),this._progress=r.element("progress"),this._progressSteps=r.divText(""),this._progress.max=0,this._progress.value=1}_setInitParams(){this._currentStep=0,this._isStopped=!1,this._isCancelled=!1,this._stopStartBtn.getElementsByClassName("grok-icon")[0].className="grok-icon fal fa-pause",this._nextStepBtn.classList.remove("disabled")}_closeDock(){n.shell.dockManager.close(this._node),this.cancelScript()}cancelScript(){this._isCancelled=!0,l.currentObject=null}step(t,e,n){return this._steps[this.steps.length]={name:t,func:e,options:n},this}start(){return s(this,void 0,void 0,(function*(){this._initRoot(),n.shell.newView(this.name),this._isAutomatic?this._startScript():this._autoStartFirstStep&&(yield this._nextStep())}))}}l.currentObject=null,Int32Array,Float32Array,DG.Column.fromInt32Array,DG.Column.fromFloat32Array;const c="num",u="floatColumn",m="intColumn",d="floatColumns",h="newFloatColumns",p="intColumns",f="newIntColumns",y="newFloatColumn",v="newIntColumn",w="column",g="_callResult",_="numOfRows",b="numOfColumns",S="ref",C="value",A="tableFromColumns",k="objects",D="int",F="double",P={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array};function L(t,e){let n,r=[],a=0;for(const o in t){const i=t[o],s=i.type;if(o!==g){switch(s){case c:case D:case F:i.data=e[a],a++;break;case m:case u:let r,o=e[a];r=o.type===D&&s===m||o.type===F&&s===u?o.getRawData():new P[s](o.getRawData()),i.data={array:r,numOfRows:r.length},a++;break;case v:case y:let l=0;n=i[_][S],l=t[n].type===c?t[n].data:t[n].data[i[_][C]],i.data={numOfRows:l},a++;break;case p:case d:let w=[];for(let t of e[a].toList())t.type===D&&s===m||t.type===F&&s===u?w.push(t.getRawData()):w.push(new P[s](t.getRawData()));i.data={arrays:w,numOfRows:w[0].length,numOfColumns:w.length},a++;break;case f:case h:let g=0,A=0;n=i[_][S],g=t[n].type===c?t[n].data:t[n].data[i[_][C]],n=i[b][S],A=t[n].type===c?t[n].data:t[n].data[i[b][C]],i.data={numOfRows:g,numOfColumns:A},a++;break;default:return}r.push(i)}}return r}function E(t,e){t.arguments._callResult=e.callResult,function(t,e){const n={newFloatColumns:DG.Column.fromFloat32Array,newIntColumns:DG.Column.fromInt32Array,newFloatColumn:DG.Column.fromFloat32Array,newIntColumn:DG.Column.fromInt32Array};let r=0;for(const a in t){const o=t[a];switch(o.type){case c:case D:case F:case m:case u:case d:case p:break;case y:case v:let t;null==o.name?t=(0).toString():s=o.name,o.column=n[o.type](t,e[r].array);break;case f:case h:let a=[],i=e[r].arrays.length,s=[];if(null==o.names)for(let t=1;t<=i;t++)s.push(t.toString());else s=o.names;for(let t=0;t<i;t++)a.push(n[o.type](s[t],e[r].arrays[t]));o.columns=a}r++}}(t.arguments,e.args);let n=function(t){let e=t.output;const n={newFloatColumns:"columns",newIntColumns:"columns",newFloatColumn:"column",newIntColumn:"column"};switch(e.type){case c:case D:case F:return t.arguments[e.source];case w:return t.arguments[e.source].column;case A:return DG.DataFrame.fromColumns(t.arguments[e.source].columns);case k:let r=[];for(let a of e.source){let e=t.arguments[a];r.push(e[n[e.type]])}return r}}(t);return function(t){for(const e in t){const n=t[e];switch(n.type){case c:case D:case F:case m:case u:case p:case d:break;case v:case y:n.column=null;break;case f:case h:n.columns=null}}}(t.arguments),n}const I=1,x=1,V=1,R=0,N=100,T=1e8,B="components must be positive.",M="components must not be greater than feautures count.",O="min must be less than max.",$="features must be positive.",H="samples must be positive.",W="violators percentage must be from the range from 0 to 100.",j="dataframe is too big.";function G(t,e){if(e<I)throw new Error(B);if(e>t.length)throw new Error(M);if(t.length*t.byIndex(0).length>T)throw new Error(j)}var z=function(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function s(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,s)}l((r=r.apply(t,e||[])).next())}))};function K(e,n,r,a){return z(this,void 0,void 0,(function*(){let e;G(n,a);let o=async function(e,n,r,a){return new Promise(((e,o)=>{const i=new Worker(new URL(t.p+t.u(93),t.b));i.postMessage(L(EDA.partialLeastSquareRegression.arguments,[n,r,a])),i.onmessage=function(t){i.terminate(),e(E(EDA.partialLeastSquareRegression,t.data))}}))}(0,n,r,a);return yield o.then((t=>{e=t}),(t=>{throw new Error(`Error: ${t}`)})),e}))}function U(t,e,n){n.name=e.name+"(predicted)";let r=a.DataFrame.fromColumns([t,e,n]);return r.name="Reference vs. Predicted",a.Viewer.scatterPlot(r,{title:r.name,x:e.name,y:n.name,showRegressionLine:!0,markerType:"circle",labels:t.name})}function q(t,e){e.name="regression coefficient";let n=[];for(const e of t)n.push(e.name);let r=a.Column.fromStrings("feature",n),o=a.DataFrame.fromColumns([r,e]);return o.name="Regression Coefficients",a.Viewer.barChart(o,{title:o.name,split:"feature",value:"regression coefficient",valueAggrType:"avg"})}function Y(t,e,n){let r=[t];for(let t=0;t<e.length;t++)e[t].name=`x.score.t${t+1}`,r.push(e[t]);for(let t=0;t<n.length;t++)n[t].name=`y.score.u${t+1}`,r.push(n[t]);let o=a.DataFrame.fromColumns(r);o.name="Scores";const i=e.length>1?1:0;return a.Viewer.scatterPlot(o,{title:o.name,x:e[0].name,y:e[i].name,markerType:"circle",labels:t.name})}var J=function(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function s(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,s)}l((r=r.apply(t,e||[])).next())}))};const Q=0,X=1,Z="Feature #",tt="Label";function et(){return a.DataFrame.fromColumns([a.Column.fromStrings("model",["alfaromeo","audi","bmw","chevrolet","dodge1","dodge2","honda1","honda2","isuzu","jaguar","mazda","mercedes","mercury","mitsubishi","nissan1","nissan2","peugot","plymouth","porsche","saab","subaru","toyota1","toyota2","toyota3","toyota4","volkswagen1","volkswagen2","volvo1","volvo2","volvo3"]),a.Column.fromInt32Array("diesel",new Int32Array([0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,1])),a.Column.fromInt32Array("turbo",new Int32Array([0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1])),a.Column.fromInt32Array("two.doors",new Int32Array([1,0,1,0,1,0,1,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0])),a.Column.fromInt32Array("hatchback",new Int32Array([1,0,0,0,1,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0])),a.Column.fromFloat32Array("wheel.base",new Float32Array([94.5,105.80000305175781,101.19999694824219,94.5,93.69999694824219,93.69999694824219,93.69999694824219,96.5,94.30000305175781,113,93.0999984741211,115.5999984741211,102.69999694824219,93.69999694824219,94.5,94.5,93.69999694824219,114.19999694824219,89.5,99.0999984741211,97.19999694824219,95.69999694824219,95.69999694824219,98.4000015258789,102.4000015258789,97.30000305175781,100.4000015258789,104.30000305175781,109.0999984741211,109.0999984741211])),a.Column.fromFloat32Array("length",new Float32Array([171.1999969482422,192.6999969482422,176.8000030517578,158.8000030517578,157.3000030517578,157.3000030517578,150,175.39999389648438,170.6999969482422,199.60000610351562,166.8000030517578,202.60000610351562,178.39999389648438,157.3000030517578,170.1999969482422,165.3000030517578,157.3000030517578,198.89999389648438,168.89999389648438,186.60000610351562,172,158.6999969482422,166.3000030517578,176.1999969482422,175.60000610351562,171.6999969482422,180.1999969482422,188.8000030517578,188.8000030517578,188.8000030517578])),a.Column.fromFloat32Array("width",new Float32Array([65.5,71.4000015258789,64.80000305175781,63.599998474121094,63.79999923706055,63.79999923706055,64,65.19999694824219,61.79999923706055,69.5999984741211,64.19999694824219,71.69999694824219,68,64.4000015258789,63.79999923706055,63.79999923706055,63.79999923706055,68.4000015258789,65,66.5,65.4000015258789,63.599998474121094,64.4000015258789,65.5999984741211,66.5,65.5,66.9000015258789,67.19999694824219,68.80000305175781,68.9000015258789])),a.Column.fromFloat32Array("height",new Float32Array([52.400001525878906,55.70000076293945,54.29999923706055,52,50.79999923706055,50.599998474121094,52.599998474121094,54.099998474121094,53.5,52.79999923706055,54.099998474121094,56.29999923706055,54.79999923706055,50.79999923706055,53.5,54.5,50.599998474121094,58.70000076293945,51.599998474121094,56.099998474121094,52.5,54.5,53,52,54.900001525878906,55.70000076293945,55.099998474121094,56.20000076293945,55.5,55.5])),a.Column.fromInt32Array("curb.weight",new Int32Array([2823,2844,2395,1909,2128,1967,1956,2304,2337,4066,1950,3770,2910,1918,2024,1951,1967,3430,2800,2695,2190,1985,2275,2551,2480,2261,2661,2912,3049,3217])),a.Column.fromInt32Array("eng.size",new Int32Array([152,136,108,90,98,90,92,110,111,258,91,183,140,92,97,97,90,152,194,121,108,92,110,146,110,97,136,141,141,145])),a.Column.fromInt32Array("horsepower",new Int32Array([154,110,101,70,102,68,76,86,78,176,68,123,175,68,69,69,68,95,207,110,82,62,56,116,73,52,110,114,160,106])),a.Column.fromInt32Array("peak.rpm",new Int32Array([5e3,5500,5800,5400,5500,5500,6e3,5800,4800,4750,5e3,4350,5e3,5500,5200,5200,5500,4150,5900,5250,4400,4800,4500,4800,4500,4800,5500,5400,5300,4800])),a.Column.fromInt32Array("symbol",new Int32Array([1,1,2,0,1,1,1,0,0,0,1,-1,1,2,1,1,1,0,3,2,0,1,0,2,-1,2,0,-2,-1,-1])),a.Column.fromInt32Array("city.mpg",new Int32Array([19,19,23,38,24,31,30,27,24,15,31,22,19,37,31,31,31,25,17,21,28,35,34,24,30,37,19,23,19,26])),a.Column.fromInt32Array("highway.mpg",new Int32Array([26,25,29,43,30,38,34,33,29,19,38,25,24,41,37,37,38,25,25,28,33,39,36,30,33,46,24,28,25,27])),a.Column.fromInt32Array("price",new Int32Array([16500,17710,16430,6575,7957,6229,7129,8845,6785,35550,7395,31600,16503,5389,7349,7299,6229,13860,37028,12170,7775,5348,7898,9989,10698,7775,13295,12940,19045,22470]))])}function nt(e,n,r,o,i,s,l,c){return J(this,void 0,void 0,(function*(){!function(t,e,n,r,a){if(n>=r)throw new Error(O);if(e<V)throw new Error($);if(t<x)throw new Error(H);if(a<R||a>N)throw new Error(W)}(o,i,s,l,c);const u=a.Column.fromList("double","kernelParams",n);let m,d=async function(e,n,r,a,o,i,s){return new Promise(((l,c)=>{const u=new Worker(new URL(t.p+t.u(584),t.b));u.postMessage(L(EDA.generateDataset.arguments,[e,n,r,a,o,i,s])),u.onmessage=function(t){u.terminate(),l(E(EDA.generateDataset,t.data))}}))}(e,u,o,i,s,l,c);yield d.then((t=>{m=t}),(t=>{throw new Error(`Error: ${t}`)})),m[X].name=tt;for(const t of m[Q])t.name=Z+t.name;const h=a.DataFrame.fromColumns(m[Q]);return h.name=r,h.columns.add(m[X]),h}))}var rt=function(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function s(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,s)}l((r=r.apply(t,e||[])).next())}))};const at=0,ot=1,it=2,st=3,lt=4,ct=0,ut=1,mt=2,dt=3,ht=4,pt=5,ft=6,yt=7,vt=0,wt=1,gt=2,_t=3,bt=0,St=0,Ct=1,At=0,kt=1,Dt=0,Ft=0,Pt=0,Lt=0,Et="gamma must be strictly positive.",It="sigma must be strictly positive.",xt="c must be strictly positive.",Vt="d must be strictly positive.",Rt="incorrect kernel.",Nt="Labels",Tt="predicted",Bt="correctness",Mt="Confusion matrix",Ot="mean",$t="std dev",Ht="alpha",Wt="weight",jt="gamma",Gt="kernel",zt="kernel params",Kt="kernel param 1",Ut="kernel param 2",qt="features count",Yt="train samples count",Jt="Train error,%",Qt=["linear","polynomial","RBF","sigmoid"],Xt="positive (P)",Zt="negative (N)",te="predicted positive (PP)",ee="predicted negative (PN)",ne="Sensitivity",re="Specificity",ae="Balanced accuracy",oe="Positive predicitve value",ie="Negative predicitve value",se="Model report",le="Predicted labels",ce="Train labels",ue="Prediction correctness",me="prediction",de=4,he=3,pe=2,fe=0,ye=1,ve=2,we=0,ge=1;function _e(e,n,r){return rt(this,void 0,void 0,(function*(){let o=n.columns,i=o.byName(r);return o.remove(r),yield function(e,n,r){return rt(this,void 0,void 0,(function*(){!function(t){if(t.gamma<=Dt)throw new Error(Et);switch(t.kernel){case at:return;case it:if(t.sigma<=Ft)throw new Error(It);return;case ot:if(t.cParam<=Pt)throw new Error(xt);if(t.dParam<=Lt)throw new Error(Vt);return;case st:return;default:throw new Error(Rt)}}(e);const o=[we,we];switch(e.kernel){case at:break;case it:o[bt]=e.sigma;break;case ot:o[St]=e.cParam,o[Ct]=e.dParam;break;case st:o[At]=e.kappa,o[kt]=e.theta;break;default:throw new Error(Rt)}let i,s=a.Column.fromList("double",zt,o),l=n.toList(),c=l[0].length+ge,u=l.length+ge,m=lt,d=async function(e,n,r,a,o,i,s,l){return new Promise(((c,u)=>{const m=new Worker(new URL(t.p+t.u(111),t.b));m.postMessage(L(EDA.trainAndAnalyzeLSSVM.arguments,[e,n,r,a,o,i,s,l])),m.onmessage=function(t){m.terminate(),c(E(EDA.trainAndAnalyzeLSSVM,t.data))}}))}(e.gamma,e.kernel,s,c,u,m,n,r);yield d.then((t=>{i=t}),(t=>{throw new Error(`Error: ${t}`)})),i[ut].name=Ot,i[mt].name=$t,i[dt].name=Ht,i[ht].name=Wt,i[pt].name=Tt,i[ft].name=Bt,i[yt].name=Mt;let h={trainGamma:e.gamma,kernelType:e.kernel,kernelParams:s,trainLabels:r,normalizedTrainData:a.DataFrame.fromColumns(i[ct]),means:i[ut],stdDevs:i[mt],modelParams:i[dt],modelWeights:i[ht],predictedLabels:i[pt],correctness:i[ft],confusionMatrix:i[yt],trainError:void 0,featuresCount:l.length,trainSamplesCount:l[0].length};return function(t){let e=t.confusionMatrix.getRawData(),n=e[vt],r=e[_t],a=e[gt],o=e[wt],i=n+o,s=a+r,l=n/i,c=r/s,u=n/(n+a),m=r/(r+o),d=(n+r)/(i+s),h=(l+c)/2;t.sensitivity=l,t.specificity=c,t.balancedAccuracy=h,t.positivePredicitveValue=u,t.negativePredicitveValue=m,t.trainError=100*(1-d)}(h),h}))}(e,o,i)}))}function be(t,e){t.name=se,t.columns.add(e.trainLabels),t.columns.add(e.predictedLabels),t.columns.add(e.correctness);let r=n.shell.addTableView(t);r.addViewer(a.Viewer.form(function(t){let e=t.kernelParams.getRawData();return a.DataFrame.fromColumns([a.Column.fromList("double",jt,[t.trainGamma]),a.Column.fromStrings(Gt,[Qt[t.kernelType]]),a.Column.fromList("double",Kt,[e[0]]),a.Column.fromList("double",Ut,[e[1]]),a.Column.fromList("double",qt,[t.featuresCount]),a.Column.fromList("double",Yt,[t.trainSamplesCount]),a.Column.fromList("double",Jt,[t.trainError]),a.Column.fromList("double",ae,[t.balancedAccuracy]),a.Column.fromList("double",ne,[t.sensitivity]),a.Column.fromList("double",re,[t.specificity]),a.Column.fromList("double",oe,[t.positivePredicitveValue]),a.Column.fromList("double",ie,[t.negativePredicitveValue])])}(e))),r.addViewer(a.Viewer.scatterPlot(t,{title:le,color:e.predictedLabels.name})),r.addViewer(a.Viewer.scatterPlot(t,{title:ce,color:e.trainLabels.name})),r.addViewer(a.Viewer.grid(function(t){let e=t.confusionMatrix.getRawData();return a.DataFrame.fromColumns([a.Column.fromStrings("",[Xt,Zt]),a.Column.fromList("int",te,[e[vt],e[gt]]),a.Column.fromList("int",ee,[e[wt],e[_t]])])}(e))),r.addViewer(a.Viewer.scatterPlot(t,{title:ue,color:e.correctness.name}))}function Se(t){let e=t.normalizedTrainData.columns,n=t.trainSamplesCount,r=t.featuresCount,a=new Uint8Array(de*(he+pe+n+r+r+n+ge+r+ge+r*n)),o=a.buffer,i=0,s=new Int32Array(o,i,he);s[fe]=t.kernelType,s[ye]=n,s[ve]=r,i+=he*de;let l=new Float32Array(o,i,pe);l.set(t.kernelParams.getRawData()),i+=pe*de,l=new Float32Array(o,i,n),l.set(t.trainLabels.getRawData()),i+=n*de,l=new Float32Array(o,i,r),l.set(t.means.getRawData()),i+=r*de,l=new Float32Array(o,i,r),l.set(t.stdDevs.getRawData()),i+=r*de,l=new Float32Array(o,i,n+ge),l.set(t.modelParams.getRawData()),i+=(n+ge)*de,l=new Float32Array(o,i,r+ge),l.set(t.modelWeights.getRawData()),i+=(r+ge)*de;for(const t of e)l=new Float32Array(o,i,r),l.set(t.getRawData()),i+=r*de;return a}function Ce(e,n){return rt(this,void 0,void 0,(function*(){let r=function(t){let e=t.buffer,n=0,r=new Int32Array(e,n,he);n+=he*de;let o=r[ye],i=r[ve];const s=a.Column.fromFloat32Array(zt,new Float32Array(e,n,pe));n+=pe*de;const l=a.Column.fromFloat32Array(Nt,new Float32Array(e,n,o));n+=o*de;const c=a.Column.fromFloat32Array(Ot,new Float32Array(e,n,i));n+=i*de;const u=a.Column.fromFloat32Array($t,new Float32Array(e,n,i));n+=i*de;const m=a.Column.fromFloat32Array(Ht,new Float32Array(e,n,o+ge));n+=(o+ge)*de;const d=a.Column.fromFloat32Array(Wt,new Float32Array(e,n,i+ge));n+=(i+ge)*de;let h=[];for(let t=0;t<o;t++)h.push(a.Column.fromFloat32Array(t.toString(),new Float32Array(e,n,i))),n+=i*de;const p=a.DataFrame.fromColumns(h);return{kernelType:r[fe],kernelParams:s,trainLabels:l,means:c,stdDevs:u,modelParams:m,modelWeights:d,normalizedTrainData:p}}(new Uint8Array(n)),o=yield function(e,n){return rt(this,void 0,void 0,(function*(){let r,a=async function(e,n,r,a,o,i,s,l,c){return new Promise(((u,m)=>{const d=new Worker(new URL(t.p+t.u(604),t.b));d.postMessage(L(EDA.predictByLSSVM.arguments,[e,n,r,a,o,i,s,l,c])),d.onmessage=function(t){d.terminate(),u(E(EDA.predictByLSSVM,t.data))}}))}(e.kernelType,e.kernelParams,e.normalizedTrainData.columns,e.trainLabels,e.means,e.stdDevs,e.modelParams,e.modelWeights,n);return yield a.then((t=>{r=t}),(t=>{throw new Error(`Error: ${t}`)})),r}))}(r,e.columns);return o.name=me,a.DataFrame.fromColumns([o])}))}var Ae=function(t,e,n,r){return new(n||(n=Promise))((function(a,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function s(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?a(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,s)}l((r=r.apply(t,e||[])).next())}))};const ke=new a.Package;function De(){n.shell.info(ke.webRoot)}function Fe(){return Ae(this,void 0,void 0,(function*(){yield async function(){await initEDA()}()}))}function Pe(e,n,r,a,o){return Ae(this,void 0,void 0,(function*(){return function(t){for(const e of t.columns.toList())e.name="PCA"+e.name;return t}(yield function(e,n,r,a,o){return z(this,void 0,void 0,(function*(){G(n,r);let e,i=async function(e,n,r,a,o){return new Promise(((e,i)=>{const s=new Worker(new URL(t.p+t.u(155),t.b));s.postMessage(L(EDA.principalComponentAnalysis.arguments,[n,r,a,o])),s.onmessage=function(t){s.terminate(),e(E(EDA.principalComponentAnalysis,t.data))}}))}(0,n,r,a?1:0,o?1:0);return yield i.then((t=>{e=t}),(t=>{throw new Error(`Error: ${t}`)})),e}))}(0,n,r,a,o))}))}function Le(t,e,r,o,i){return Ae(this,void 0,void 0,(function*(){const s=yield K(0,r,o,i);!function(t,e,r,o,i){let s=n.shell.getTableView(t.name);s.addViewer(U(e,o,i[0])),s.addViewer(q(r,i[1])),s.addViewer(function(t,e){let n=[],r=[];for(let e of t)r.push(e.name);n.push(a.Column.fromStrings("labels",r));for(let t=0;t<e.length;t++)e[t].name=`x.loading.p${t+1}`,n.push(e[t]);let o=a.DataFrame.fromColumns(n);return o.name="Loadings",a.Viewer.scatterPlot(o,{title:o.name,x:e[0].name,y:e[e.length-1].name,markerType:"circle",labels:"labels"})}(r,i[4])),s.addViewer(Y(e,i[2],i[3]))}(t,e,r,o,s)}))}function Ee(){return Ae(this,void 0,void 0,(function*(){const t=new l("Partial least squares regression","Analysis of multidimensional data."),e=et(),a=e.columns.byName("model"),o=e.columns.byName("price"),i=e.columns.remove("price").remove("model"),s=yield K(0,i,o,3),c=et();let u,m;c.name="Cars",yield t.step("Data",(()=>Ae(this,void 0,void 0,(function*(){n.shell.addTableView(c),u=n.shell.getTableView(c.name)}))),{description:"Each car has many features - patterns extraction is complicated.",delay:0}).step("Model",(()=>Ae(this,void 0,void 0,(function*(){m=r.dialog({title:"Multivariate Analysis (PLS)"}).add(r.tableInput("Table",c)).add(r.columnsInput("Features",e,i.toList,{available:void 0,checked:i.names()})).add(r.columnInput("Names",e,a,void 0)).add(r.columnInput("Predict",e,o,void 0)).add(r.intInput("Components",3,void 0)).onOK((()=>{n.shell.info("Multivariate analysis has been already performed.")})).show({x:400,y:140})}))),{description:"Predict car price by its other features.",delay:0}).step("Regression coeffcicients",(()=>Ae(this,void 0,void 0,(function*(){m.close(),u.addViewer(q(i,s[1]))}))),{description:'The feature "diesel" affects the price the most.',delay:0}).step("Scores",(()=>Ae(this,void 0,void 0,(function*(){u.addViewer(Y(a,s[2],s[3]))}))),{description:"Similarities & dissimilarities: alfaromeo and mercedes are different.",delay:0}).step("Prediction",(()=>Ae(this,void 0,void 0,(function*(){u.addViewer(U(a,o,s[0]))}))),{description:"Closer to the line means better price prediction.",delay:0}).start()}))}function Ie(t,e,n,r,a,o){return Ae(this,void 0,void 0,(function*(){return yield nt(at,[0,0],t,e,n,r,a,o)}))}function xe(t,e,n,r,a,o,i){return Ae(this,void 0,void 0,(function*(){return yield nt(it,[e,0],t,n,r,a,o,i)}))}function Ve(t,e,n,r){return Ae(this,void 0,void 0,(function*(){const a=yield _e({gamma:n,kernel:at},t,e);return r&&be(t,a),Se(a)}))}function Re(t,e){return Ae(this,void 0,void 0,(function*(){return yield Ce(t,e)}))}function Ne(t,e,n,r,a){return Ae(this,void 0,void 0,(function*(){const o=yield _e({gamma:n,kernel:it,sigma:r},t,e);return a&&be(t,o),Se(o)}))}function Te(t,e){return Ae(this,void 0,void 0,(function*(){return yield Ce(t,e)}))}function Be(t,e,n,r,a,o){return Ae(this,void 0,void 0,(function*(){const i=yield _e({gamma:n,kernel:ot,cParam:r,dParam:a},t,e);return o&&be(t,i),Se(i)}))}function Me(t,e){return Ae(this,void 0,void 0,(function*(){return yield Ce(t,e)}))}function Oe(t,e,n,r,a,o){return Ae(this,void 0,void 0,(function*(){const i=yield _e({gamma:n,kernel:st,kappa:r,theta:a},t,e);return o&&be(t,i),Se(i)}))}function $e(t,e){return Ae(this,void 0,void 0,(function*(){return yield Ce(t,e)}))}eda=e})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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eUYsRUFDbkMsR0FDSixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS9leHRlcm5hbCB2YXIgXCJncm9rXCIiLCJ3ZWJwYWNrOi8vZWRhL2V4dGVybmFsIHZhciBcInVpXCIiLCJ3ZWJwYWNrOi8vZWRhL2V4dGVybmFsIHZhciBcIkRHXCIiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3Rlc3QuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdHV0b3JpYWxzL3NyYy9kZW1vLXNjcmlwdC5qcyIsIndlYnBhY2s6Ly9lZGEvLi93YXNtL2NhbGxXYXNtLmpzIiwid2VicGFjazovL2VkYS8uL3dhc20vY2FsbFdhc21Gb3JXZWJXb3JrZXIuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vc3JjL3V0aWxzLnRzIiwid2VicGFjazovL2VkYS8uL3NyYy9FREF0b29scy50cyIsIndlYnBhY2s6Ly9lZGEvLi93YXNtL0VEQUFQSS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9zcmMvRURBdWkudHMiLCJ3ZWJwYWNrOi8vZWRhLy4vc3JjL2RhdGFHZW5lcmF0b3JzLnRzIiwid2VicGFjazovL2VkYS8uL3NyYy9zdm0udHMiLCJ3ZWJwYWNrOi8vZWRhLy4vc3JjL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIHJlcXVpcmUgc2NvcGVcbnZhciBfX3dlYnBhY2tfcmVxdWlyZV9fID0ge307XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQzNTk6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCJjb25zdCBfX1dFQlBBQ0tfTkFNRVNQQUNFX09CSkVDVF9fID0gZ3JvazsiLCJjb25zdCBfX1dFQlBBQ0tfTkFNRVNQQUNFX09CSkVDVF9fID0gdWk7IiwiY29uc3QgX19XRUJQQUNLX05BTUVTUEFDRV9PQkpFQ1RfXyA9IERHOyIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuZXhwb3J0IGNvbnN0IHRlc3RzID0ge307XG5jb25zdCBhdXRvVGVzdHNDYXROYW1lID0gJ0F1dG8gVGVzdHMnO1xuY29uc3Qgd2FzUmVnaXN0ZXJlZCA9IHt9O1xuZXhwb3J0IGxldCBjdXJyZW50Q2F0ZWdvcnk7XG5leHBvcnQgdmFyIGFzc3VyZTtcbihmdW5jdGlvbiAoYXNzdXJlKSB7XG4gICAgZnVuY3Rpb24gbm90TnVsbCh2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lID09IG51bGwgPyAnVmFsdWUnIDogbmFtZX0gbm90IGRlZmluZWRgKTtcbiAgICB9XG4gICAgYXNzdXJlLm5vdE51bGwgPSBub3ROdWxsO1xufSkoYXNzdXJlIHx8IChhc3N1cmUgPSB7fSkpO1xuZXhwb3J0IGNsYXNzIFRlc3RDb250ZXh0IHtcbiAgICBjb25zdHJ1Y3RvcihjYXRjaFVuaGFuZGxlZCwgcmVwb3J0KSB7XG4gICAgICAgIHRoaXMuY2F0Y2hVbmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlcG9ydCA9IGZhbHNlO1xuICAgICAgICBpZiAoY2F0Y2hVbmhhbmRsZWQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hVbmhhbmRsZWQgPSBjYXRjaFVuaGFuZGxlZDtcbiAgICAgICAgaWYgKHJlcG9ydCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5yZXBvcnQgPSByZXBvcnQ7XG4gICAgfVxuICAgIDtcbn1cbmV4cG9ydCBjbGFzcyBUZXN0IHtcbiAgICBjb25zdHJ1Y3RvcihjYXRlZ29yeSwgbmFtZSwgdGVzdCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDogKG9wdGlvbnMgPSB7fSk7XG4gICAgICAgIChfYSA9IG9wdGlvbnMudGltZW91dCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogKG9wdGlvbnMudGltZW91dCA9IDMwMDAwKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy50ZXN0ID0gKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0geWllbGQgdGVzdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RFdmVudChldmVudCwgaGFuZGxlciwgdHJpZ2dlciwgbXMgPSAwKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHN1YjtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN1YiA9IGV2ZW50LnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIoYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgnT0snKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1wcm9taXNlLXJlamVjdC1lcnJvcnNcbiAgICAgICAgICAgICAgICByZWplY3QoJ3RpbWVvdXQnKTtcbiAgICAgICAgICAgIH0sIG1zKTtcbiAgICAgICAgICAgIHRyaWdnZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdGVzdChuYW1lLCB0ZXN0LCBvcHRpb25zKSB7XG4gICAgaWYgKHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0gPT0gdW5kZWZpbmVkKVxuICAgICAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldID0ge307XG4gICAgaWYgKHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0udGVzdHMgPT0gdW5kZWZpbmVkKVxuICAgICAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldLnRlc3RzID0gW107XG4gICAgdGVzdHNbY3VycmVudENhdGVnb3J5XS50ZXN0cy5wdXNoKG5ldyBUZXN0KGN1cnJlbnRDYXRlZ29yeSwgbmFtZSwgdGVzdCwgb3B0aW9ucykpO1xufVxuLyogVGVzdHMgdHdvIG9iamVjdHMgZm9yIGVxdWFsaXR5LCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZXkgYXJlIG5vdCBlcXVhbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3QoYWN0dWFsLCBleHBlY3RlZCA9IHRydWUsIGVycm9yKSB7XG4gICAgaWYgKGVycm9yKVxuICAgICAgICBlcnJvciA9IGAke2Vycm9yfSwgYDtcbiAgICBlbHNlXG4gICAgICAgIGVycm9yID0gJyc7XG4gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJvcn1FeHBlY3RlZCBcIiR7ZXhwZWN0ZWR9XCIsIGdvdCBcIiR7YWN0dWFsfVwiYCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0RmxvYXQoYWN0dWFsLCBleHBlY3RlZCwgdG9sZXJhbmNlID0gMC4wMDEsIGVycm9yKSB7XG4gICAgaWYgKChhY3R1YWwgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB8fFxuICAgICAgICAoYWN0dWFsID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgJiYgZXhwZWN0ZWQgPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkgfHxcbiAgICAgICAgKGFjdHVhbCA9PT0gTnVtYmVyLk5hTiAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLk5hTikgfHwgKGlzTmFOKGFjdHVhbCkgJiYgaXNOYU4oZXhwZWN0ZWQpKSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGFyZUVxdWFsID0gTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDwgdG9sZXJhbmNlO1xuICAgIGV4cGVjdChhcmVFcXVhbCwgdHJ1ZSwgYCR7ZXJyb3IgIT09IG51bGwgJiYgZXJyb3IgIT09IHZvaWQgMCA/IGVycm9yIDogJyd9ICh0b2xlcmFuY2UgPSAke3RvbGVyYW5jZX0pYCk7XG4gICAgaWYgKCFhcmVFcXVhbClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfSAodG9sZXJhbmNlID0gJHt0b2xlcmFuY2V9KWApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdFRhYmxlKGFjdHVhbCwgZXhwZWN0ZWQsIGVycm9yKSB7XG4gICAgY29uc3QgZXhwZWN0ZWRSb3dDb3VudCA9IGV4cGVjdGVkLnJvd0NvdW50O1xuICAgIGNvbnN0IGFjdHVhbFJvd0NvdW50ID0gYWN0dWFsLnJvd0NvdW50O1xuICAgIGV4cGVjdChhY3R1YWxSb3dDb3VudCwgZXhwZWN0ZWRSb3dDb3VudCwgYCR7ZXJyb3IgIT09IG51bGwgJiYgZXJyb3IgIT09IHZvaWQgMCA/IGVycm9yIDogJyd9LCByb3cgY291bnRgKTtcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBleHBlY3RlZC5jb2x1bW5zKSB7XG4gICAgICAgIGNvbnN0IGFjdHVhbENvbHVtbiA9IGFjdHVhbC5jb2x1bW5zLmJ5TmFtZShjb2x1bW4ubmFtZSk7XG4gICAgICAgIGlmIChhY3R1YWxDb2x1bW4gPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7Y29sdW1uLm5hbWV9IG5vdCBmb3VuZGApO1xuICAgICAgICBpZiAoYWN0dWFsQ29sdW1uLnR5cGUgIT0gY29sdW1uLnR5cGUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbHVtbiAke2NvbHVtbi5uYW1lfSB0eXBlIGV4cGVjdGVkICR7Y29sdW1uLnR5cGV9IGdvdCAke2FjdHVhbENvbHVtbi50eXBlfWApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cGVjdGVkUm93Q291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2x1bW4uZ2V0KGkpO1xuICAgICAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhY3R1YWxDb2x1bW4uZ2V0KGkpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09IERHLlRZUEUuRkxPQVQpXG4gICAgICAgICAgICAgICAgZXhwZWN0RmxvYXQoYWN0dWFsVmFsdWUsIHZhbHVlLCAwLjAwMDEsIGVycm9yKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbHVtbi50eXBlID09IERHLlRZUEUuREFURV9USU1FKVxuICAgICAgICAgICAgICAgIGV4cGVjdChhY3R1YWxWYWx1ZS5pc1NhbWUodmFsdWUpLCB0cnVlLCBlcnJvcik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZXhwZWN0KGFjdHVhbFZhbHVlLCB2YWx1ZSwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdE9iamVjdChhY3R1YWwsIGV4cGVjdGVkKSB7XG4gICAgZm9yIChjb25zdCBbZXhwZWN0ZWRLZXksIGV4cGVjdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGV4cGVjdGVkKSkge1xuICAgICAgICBpZiAoIWFjdHVhbC5oYXNPd25Qcm9wZXJ0eShleHBlY3RlZEtleSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHByb3BlcnR5IFwiJHtleHBlY3RlZEtleX1cIiBub3QgZm91bmRgKTtcbiAgICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhY3R1YWxbZXhwZWN0ZWRLZXldO1xuICAgICAgICBpZiAoYWN0dWFsVmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiBleHBlY3RlZFZhbHVlIGluc3RhbmNlb2YgQXJyYXkpXG4gICAgICAgICAgICBleHBlY3RBcnJheShhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGVsc2UgaWYgKGFjdHVhbFZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIGV4cGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAgICAgICBleHBlY3RPYmplY3QoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUpO1xuICAgICAgICBlbHNlIGlmIChOdW1iZXIuaXNGaW5pdGUoYWN0dWFsVmFsdWUpICYmIE51bWJlci5pc0Zpbml0ZShleHBlY3RlZFZhbHVlKSlcbiAgICAgICAgICAgIGV4cGVjdEZsb2F0KGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgICAgICAgZWxzZSBpZiAoYWN0dWFsVmFsdWUgIT0gZXhwZWN0ZWRWYWx1ZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgKCR7ZXhwZWN0ZWRWYWx1ZX0pIGZvciBrZXkgJyR7ZXhwZWN0ZWRLZXl9JywgZ290ICgke2FjdHVhbFZhbHVlfSlgKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0QXJyYXkoYWN0dWFsLCBleHBlY3RlZCkge1xuICAgIGNvbnN0IGFjdHVhbExlbmd0aCA9IGFjdHVhbC5sZW5ndGg7XG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSBleHBlY3RlZC5sZW5ndGg7XG4gICAgaWYgKGFjdHVhbExlbmd0aCAhPSBleHBlY3RlZExlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5cyBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aDogYWN0dWFsIGFycmF5IGxlbmd0aCBpcyAke2FjdHVhbExlbmd0aH0gYCArXG4gICAgICAgICAgICBgYW5kIGV4cGVjdGVkIGFycmF5IGxlbmd0aCBpcyAke2V4cGVjdGVkTGVuZ3RofWApO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhY3R1YWxbaV0gaW5zdGFuY2VvZiBBcnJheSAmJiBleHBlY3RlZFtpXSBpbnN0YW5jZW9mIEFycmF5KVxuICAgICAgICAgICAgZXhwZWN0QXJyYXkoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7XG4gICAgICAgIGVsc2UgaWYgKGFjdHVhbFtpXSBpbnN0YW5jZW9mIE9iamVjdCAmJiBleHBlY3RlZFtpXSBpbnN0YW5jZW9mIE9iamVjdClcbiAgICAgICAgICAgIGV4cGVjdE9iamVjdChhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTtcbiAgICAgICAgZWxzZSBpZiAoYWN0dWFsW2ldICE9IGV4cGVjdGVkW2ldKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2V4cGVjdGVkW2ldfSBhdCBwb3NpdGlvbiAke2l9LCBnb3QgJHthY3R1YWxbaV19YCk7XG4gICAgfVxufVxuLyogRGVmaW5lcyBhIHRlc3Qgc3VpdGUuICovXG5leHBvcnQgZnVuY3Rpb24gY2F0ZWdvcnkoY2F0ZWdvcnksIHRlc3RzKSB7XG4gICAgY3VycmVudENhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGVzdHMoKTtcbn1cbi8qIERlZmluZXMgYSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIHRlc3RzIGluIHRoaXMgY2F0ZWdvcnkgYXJlIGV4ZWN1dGVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJlZm9yZShiZWZvcmUpIHtcbiAgICBpZiAodGVzdHNbY3VycmVudENhdGVnb3J5XSA9PSB1bmRlZmluZWQpXG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0gPSB7fTtcbiAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldLmJlZm9yZSA9IGJlZm9yZTtcbn1cbi8qIERlZmluZXMgYSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgdGVzdHMgaW4gdGhpcyBjYXRlZ29yeSBhcmUgZXhlY3V0ZWQuICovXG5leHBvcnQgZnVuY3Rpb24gYWZ0ZXIoYWZ0ZXIpIHtcbiAgICBpZiAodGVzdHNbY3VycmVudENhdGVnb3J5XSA9PSB1bmRlZmluZWQpXG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0gPSB7fTtcbiAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldLmFmdGVyID0gYWZ0ZXI7XG59XG5mdW5jdGlvbiBhZGROYW1lc3BhY2UocywgZikge1xuICAgIHJldHVybiBzLnJlcGxhY2UobmV3IFJlZ0V4cChmLm5hbWUsICdnaScpLCBmLm5xTmFtZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW5pdEF1dG9UZXN0cyhwYWNrYWdlSWQsIG1vZHVsZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICh3YXNSZWdpc3RlcmVkW3BhY2thZ2VJZF0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG1vZHVsZVRlc3RzID0gbW9kdWxlID8gbW9kdWxlLnRlc3RzIDogdGVzdHM7XG4gICAgICAgIGlmIChtb2R1bGVUZXN0c1thdXRvVGVzdHNDYXROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB3YXNSZWdpc3RlcmVkW3BhY2thZ2VJZF0gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZHVsZUF1dG9UZXN0cyA9IFtdO1xuICAgICAgICBjb25zdCBwYWNrRnVuY3Rpb25zID0geWllbGQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5maWx0ZXIoYHBhY2thZ2UuaWQgPSBcIiR7cGFja2FnZUlkfVwiYCkubGlzdCgpO1xuICAgICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKC8uKlxcL1xcL1xccypza2lwWzpcXHNdKiguKikkLyk7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBwYWNrRnVuY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXN0cyA9IGYub3B0aW9uc1sndGVzdCddO1xuICAgICAgICAgICAgaWYgKCEodGVzdHMgJiYgQXJyYXkuaXNBcnJheSh0ZXN0cykgJiYgdGVzdHMubGVuZ3RoKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBza2lwUmVhc29ucyA9IHRlc3RzW2ldLm1hdGNoKHJlZyk7XG4gICAgICAgICAgICAgICAgbGV0IHNraXBSZWFzb247XG4gICAgICAgICAgICAgICAgaWYgKHNraXBSZWFzb25zICYmIChza2lwUmVhc29ucyA9PT0gbnVsbCB8fCBza2lwUmVhc29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2tpcFJlYXNvbnMubGVuZ3RoKSA+IDEpXG4gICAgICAgICAgICAgICAgICAgIHNraXBSZWFzb24gPSBza2lwUmVhc29uc1sxXTtcbiAgICAgICAgICAgICAgICBtb2R1bGVBdXRvVGVzdHMucHVzaChuZXcgVGVzdChhdXRvVGVzdHNDYXROYW1lLCB0ZXN0cy5sZW5ndGggPT09IDEgPyBmLm5hbWUgOiBgJHtmLm5hbWV9ICR7aSArIDF9YCwgKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSB5aWVsZCBncm9rLmZ1bmN0aW9ucy5ldmFsKGFkZE5hbWVzcGFjZSh0ZXN0c1tpXSwgZikpO1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9PSB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgYEZhaWxlZDogJHt0ZXN0c1tpXX1gO1xuICAgICAgICAgICAgICAgIH0pLCB7IHNraXBSZWFzb246IHNraXBSZWFzb24gfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdhc1JlZ2lzdGVyZWRbcGFja2FnZUlkXSA9IHRydWU7XG4gICAgICAgIGlmICghbW9kdWxlQXV0b1Rlc3RzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbW9kdWxlVGVzdHNbYXV0b1Rlc3RzQ2F0TmFtZV0gPSB7IHRlc3RzOiBtb2R1bGVBdXRvVGVzdHMgfTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydW5UZXN0cyhvcHRpb25zKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIHZhciBfZTtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwYWNrYWdlXyA9IChfYiA9IChfYSA9IGdyb2suZnVuY3Rpb25zLmdldEN1cnJlbnRDYWxsKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mdW5jKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucGFja2FnZTtcbiAgICAgICAgeWllbGQgaW5pdEF1dG9UZXN0cyhwYWNrYWdlXy5pZCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgY29uc29sZS5sb2coYFJ1bm5pbmcgdGVzdHNgKTtcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDogKG9wdGlvbnMgPSB7fSk7XG4gICAgICAgIChfYyA9IChfZSA9IG9wdGlvbnMpLnRlc3RDb250ZXh0KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAoX2UudGVzdENvbnRleHQgPSBuZXcgVGVzdENvbnRleHQoKSk7XG4gICAgICAgIGdyb2suc2hlbGwubGFzdEVycm9yID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRlc3RzKSkge1xuICAgICAgICAgICAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2F0ZWdvcnkpICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICgha2V5LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2F0ZWdvcnkudG9Mb3dlckNhc2UoKSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0ZWQgJHtrZXl9IGNhdGVnb3J5YCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5iZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlLmJlZm9yZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5iZWZvcmVTdGF0dXMgPSB4LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ID0gKF9kID0gdmFsdWUudGVzdHMpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgcmVzLnB1c2goeWllbGQgZXhlY1Rlc3QodFtpXSwgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnRlc3QpKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoeWllbGQgUHJvbWlzZS5hbGwocmVzKSkuZmlsdGVyKChkKSA9PiBkLnJlc3VsdCAhPSAnc2tpcHBlZCcpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWZ0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlLmFmdGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICAgIHZhbHVlLmFmdGVyU3RhdHVzID0geC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbHVlLmFmdGVyU3RhdHVzKVxuICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7IGNhdGVnb3J5OiBrZXksIG5hbWU6ICdpbml0JywgcmVzdWx0OiB2YWx1ZS5hZnRlclN0YXR1cywgc3VjY2VzczogZmFsc2UsIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5iZWZvcmVTdGF0dXMpXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHsgY2F0ZWdvcnk6IGtleSwgbmFtZTogJ2luaXQnLCByZXN1bHQ6IHZhbHVlLmJlZm9yZVN0YXR1cywgc3VjY2VzczogZmFsc2UsIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCguLi5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy50ZXN0Q29udGV4dC5jYXRjaFVuaGFuZGxlZCkge1xuICAgICAgICAgICAgeWllbGQgZGVsYXkoMTAwMCk7XG4gICAgICAgICAgICBpZiAoZ3Jvay5zaGVsbC5sYXN0RXJyb3IubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnVW5oYW5kbGVkIGV4Y2VwdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZXhjZXB0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogZ3Jvay5zaGVsbC5sYXN0RXJyb3IsIHN1Y2Nlc3M6IGZhbHNlLCBtczogMCwgc2tpcHBlZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy50ZXN0Q29udGV4dC5yZXBvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBERy5Mb2dnZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSByZXN1bHRzLmZpbHRlcigocikgPT4gci5zdWNjZXNzKS5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIoKHIpID0+IHIuc2tpcHBlZCkubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzdWx0cy5maWx0ZXIoKHIpID0+ICFyLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSAnUGFja2FnZSBAcGFja2FnZSB0ZXN0ZWQ6IEBzdWNjZXNzZnVsIHN1Y2Nlc3NmdWwsIEBza2lwcGVkIHNraXBwZWQsIEBmYWlsZWQgZmFpbGVkIHRlc3RzJztcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzZnVsOiBzdWNjZXNzZnVsLFxuICAgICAgICAgICAgICAgIHNraXBwZWQ6IHNraXBwZWQsXG4gICAgICAgICAgICAgICAgZmFpbGVkOiBmYWlsZWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIHBhY2thZ2U6IHBhY2thZ2VfXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCByIG9mIGZhaWxlZClcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgeyBbYCR7ci5jYXRlZ29yeX0gfCAke3IubmFtZX1gXTogci5yZXN1bHQgfSk7XG4gICAgICAgICAgICBsb2dnZXIubG9nKGRlc2NyaXB0aW9uLCBwYXJhbXMsICdwYWNrYWdlLXRlc3RlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZXhlY1Rlc3QodCwgcHJlZGljYXRlKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHI7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHByZWRpY2F0ZSAhPSB1bmRlZmluZWQgJiYgKCF0Lm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHByZWRpY2F0ZS50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIGNvbnN0IHNraXAgPSAoKF9hID0gdC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2tpcFJlYXNvbikgfHwgZmlsdGVyO1xuICAgICAgICBjb25zdCBza2lwUmVhc29uID0gZmlsdGVyID8gJ3NraXBwZWQnIDogKF9iID0gdC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc2tpcFJlYXNvbjtcbiAgICAgICAgaWYgKCFza2lwKVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0ZWQgJHt0LmNhdGVnb3J5fSAke3QubmFtZX1gKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHNraXApXG4gICAgICAgICAgICAgICAgciA9IHsgc3VjY2VzczogdHJ1ZSwgcmVzdWx0OiBza2lwUmVhc29uLCBtczogMCwgc2tpcHBlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHIgPSB7IHN1Y2Nlc3M6IHRydWUsIHJlc3VsdDogKF9jID0geWllbGQgdC50ZXN0KCkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICdPSycsIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoICh4KSB7XG4gICAgICAgICAgICByID0geyBzdWNjZXNzOiBmYWxzZSwgcmVzdWx0OiB4LnRvU3RyaW5nKCksIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3AgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHIubXMgPSBzdG9wIC0gc3RhcnQ7XG4gICAgICAgIGlmICghc2tpcClcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCAke3QuY2F0ZWdvcnl9ICR7dC5uYW1lfSBmb3IgJHtyLm1zfSBtc2ApO1xuICAgICAgICByLmNhdGVnb3J5ID0gdC5jYXRlZ29yeTtcbiAgICAgICAgci5uYW1lID0gdC5uYW1lO1xuICAgICAgICByZXR1cm4gcjtcbiAgICB9KTtcbn1cbi8qIFdhaXRzIFttc10gbWlsbGlzZWNvbmRzICovXG5leHBvcnQgZnVuY3Rpb24gZGVsYXkobXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB5aWVsZCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtcykpO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGF3YWl0Q2hlY2soY2hlY2tIYW5kbGVyLCBlcnJvciA9ICdUaW1lb3V0IGV4Y2VlZGVkJywgd2FpdCA9IDUwMCwgaW50ZXJ2YWwgPSA1MCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIH0sIHdhaXQpO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2tIYW5kbGVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGludGVydmFsKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEaWFsb2dQcmVzZW50KGRpYWxvZ1RpdGxlKSB7XG4gICAgY29uc3QgZGlhbG9ncyA9IERHLkRpYWxvZy5nZXRPcGVuRGlhbG9ncygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlhbG9ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGlhbG9nc1tpXS50aXRsZSA9PSBkaWFsb2dUaXRsZSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gdGVzdFZpZXdlcih2LCBkZiwgZGV0ZWN0U2VtYW50aWNUeXBlcyA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKGRldGVjdFNlbWFudGljVHlwZXMpXG4gICAgICAgICAgICB5aWVsZCBncm9rLmRhdGEuZGV0ZWN0U2VtYW50aWNUeXBlcyhkZik7XG4gICAgICAgIGNvbnN0IHR2ID0gZ3Jvay5zaGVsbC5hZGRUYWJsZVZpZXcoZGYpO1xuICAgICAgICBjb25zdCB2aWV3ZXJOYW1lID0gYFtuYW1lPXZpZXdlci0ke3YucmVwbGFjZSgvXFxzKy9nLCAnLScpfSBpXWA7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gYCR7dmlld2VyTmFtZX0gY2FudmFzLCR7dmlld2VyTmFtZX0gc3ZnLCR7dmlld2VyTmFtZX0gaW1nLFxuICAgICR7dmlld2VyTmFtZX0gaW5wdXQsJHt2aWV3ZXJOYW1lfSBoMSwke3ZpZXdlck5hbWV9IGFgO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB2aWV3ZXIgPSB0di5hZGRWaWV3ZXIodik7XG4gICAgICAgICAgICB5aWVsZCBhd2FpdENoZWNrKCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpICE9PSBudWxsLCAnY2Fubm90IGxvYWQgdmlld2VyJywgMzAwMCk7XG4gICAgICAgICAgICByZXMucHVzaChBcnJheS5mcm9tKHR2LnZpZXdlcnMpLmxlbmd0aCk7XG4gICAgICAgICAgICBBcnJheS5mcm9tKGRmLnJvdygwKS5jZWxscykuZm9yRWFjaCgoYykgPT4gYy52YWx1ZSA9IG51bGwpO1xuICAgICAgICAgICAgZGYucm93cy5zZWxlY3QoKHJvdykgPT4gcm93LmlkeCA+IDEgJiYgcm93LmlkeCA8IDcpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDc7IGkgPCAxMjsgaSsrKVxuICAgICAgICAgICAgICAgIGRmLmZpbHRlci5zZXQoaSwgZmFsc2UpO1xuICAgICAgICAgICAgZGYuY3VycmVudFJvd0lkeCA9IDE7XG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IHZpZXdlci5nZXRPcHRpb25zKHRydWUpLmxvb2s7XG4gICAgICAgICAgICBjb25zdCBuZXdQcm9wcyA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMpLmZpbHRlcigoaykgPT4gdHlwZW9mIHByb3BzW2tdID09PSAnYm9vbGVhbicpLmZvckVhY2goKGspID0+IG5ld1Byb3BzW2tdID0gIXByb3BzW2tdKTtcbiAgICAgICAgICAgIHZpZXdlci5zZXRPcHRpb25zKG5ld1Byb3BzKTtcbiAgICAgICAgICAgIHlpZWxkIGRlbGF5KDI1MCk7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSB0di5zYXZlTGF5b3V0KCk7XG4gICAgICAgICAgICBjb25zdCBvbGRQcm9wcyA9IHZpZXdlci5nZXRPcHRpb25zKCkubG9vaztcbiAgICAgICAgICAgIHR2LnJlc2V0TGF5b3V0KCk7XG4gICAgICAgICAgICByZXMucHVzaChBcnJheS5mcm9tKHR2LnZpZXdlcnMpLmxlbmd0aCk7XG4gICAgICAgICAgICB0di5sb2FkTGF5b3V0KGxheW91dCk7XG4gICAgICAgICAgICB5aWVsZCBhd2FpdENoZWNrKCgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpICE9PSBudWxsLCAnY2Fubm90IGxvYWQgdmlld2VyIGZyb20gbGF5b3V0JywgMzAwMCk7XG4gICAgICAgICAgICB5aWVsZCBkZWxheSgyNTApO1xuICAgICAgICAgICAgcmVzLnB1c2goQXJyYXkuZnJvbSh0di52aWV3ZXJzKS5sZW5ndGgpO1xuICAgICAgICAgICAgdmlld2VyID0gQXJyYXkuZnJvbSh0di52aWV3ZXJzKS5maW5kKCh2KSA9PiB2LnR5cGUgIT09ICdHcmlkJyk7XG4gICAgICAgICAgICBleHBlY3RBcnJheShyZXMsIFsyLCAxLCAyXSk7XG4gICAgICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkodmlld2VyLmdldE9wdGlvbnMoKS5sb29rKSwgSlNPTi5zdHJpbmdpZnkob2xkUHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHR2LmNsb3NlKCk7XG4gICAgICAgICAgICBncm9rLnNoZWxsLmNsb3NlVGFibGUoZGYpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR1Z6ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblJsYzNRdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJRVUVzVDBGQlR5eExRVUZMTEVsQlFVa3NUVUZCVFN4dFFrRkJiVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUzNSRExFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NSMEZMWkN4RlFVRkZMRU5CUVVNN1FVRkZVQ3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRmxCUVZrc1EwRkJRenRCUVVOMFF5eE5RVUZOTEdGQlFXRXNSMEZCTmtJc1JVRkJSU3hEUVVGRE8wRkJRMjVFTEUxQlFVMHNRMEZCUXl4SlFVRkpMR1ZCUVhWQ0xFTkJRVU03UVVGRmJrTXNUVUZCVFN4TFFVRlhMRTFCUVUwc1EwRkxkRUk3UVVGTVJDeFhRVUZwUWl4TlFVRk5PMGxCUTNKQ0xGTkJRV2RDTEU5QlFVOHNRMEZCUXl4TFFVRlZMRVZCUVVVc1NVRkJZVHRSUVVNdlF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4SlFVRkpPMWxCUTJZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVOd1JTeERRVUZETzBsQlNHVXNZMEZCVHl4VlFVZDBRaXhEUVVGQk8wRkJRMGdzUTBGQlF5eEZRVXhuUWl4TlFVRk5MRXRCUVU0c1RVRkJUU3hSUVV0MFFqdEJRVkZFTEUxQlFVMHNUMEZCVHl4WFFVRlhPMGxCU1hSQ0xGbEJRVmtzWTBGQmQwSXNSVUZCUlN4TlFVRm5RanRSUVVoMFJDeHRRa0ZCWXl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOMFFpeFhRVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUjJJc1NVRkJTU3hqUVVGakxFdEJRVXNzVTBGQlV6dFpRVUZGTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1kwRkJZeXhEUVVGRE8xRkJRM1pGTEVsQlFVa3NUVUZCVFN4TFFVRkxMRk5CUVZNN1dVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJRVUVzUTBGQlF6dERRVU5JTzBGQlJVUXNUVUZCVFN4UFFVRlBMRWxCUVVrN1NVRk5aaXhaUVVGWkxGRkJRV2RDTEVWQlFVVXNTVUZCV1N4RlFVRkZMRWxCUVhkQ0xFVkJRVVVzVDBGQmNVSTdPMUZCUTNwR0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NVVUZCVVN4RFFVRkRPMUZCUTNwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFOUJRVThzWVVGQlVDeFBRVUZQTEdOQlFWQXNUMEZCVHl4SlFVRlFMRTlCUVU4c1IwRkJTeXhGUVVGRkxFVkJRVU03VVVGRFppeE5RVUZCTEU5QlFVOHNRMEZCUXl4UFFVRlBMRzlEUVVGbUxFOUJRVThzUTBGQlF5eFBRVUZQTEVkQlFVc3NTMEZCU3l4RlFVRkRPMUZCUXpGQ0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMUZCUTNaQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCZFVJc1JVRkJSVHRaUVVOdVF5eFBRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVU4c1QwRkJUeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTzJkQ1FVTXpReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdaMEpCUTJoQ0xFbEJRVWs3YjBKQlEwWXNUVUZCVFN4SFFVRkhMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU03YVVKQlEzWkNPMmRDUVVGRExFOUJRVThzUTBGQlRTeEZRVUZGTzI5Q1FVTm1MRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZEV0R0blFrRkRSQ3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEYkVJc1EwRkJReXhEUVVGQkxFTkJRVU1zUTBGQlF6dFJRVU5NTEVOQlFVTXNRMEZCUVN4RFFVRkRPMGxCUTBvc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFZRVUZuUWl4VFFVRlRMRU5CUVVrc1MwRkJiMElzUlVGRGNrUXNUMEZCTUVJc1JVRkJSU3hQUVVGdFFpeEZRVUZGTEV0QlFXRXNRMEZCUXpzN1VVRkRMMFFzU1VGQlNTeEhRVUZwUWl4RFFVRkRPMUZCUTNSQ0xFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVU3V1VGRGNrTXNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlR0blFrRkROMElzU1VGQlNUdHZRa0ZEUml4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03YVVKQlEyWTdaMEpCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3YjBKQlExWXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU5ZTzJkQ1FVTkVMRWRCUVVjc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dG5Ra0ZEYkVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEyaENMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzVlVGQlZTeERRVUZETEVkQlFVY3NSVUZCUlR0blFrRkRaQ3hIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdaMEpCUTJ4Q0xIZEVRVUYzUkR0blFrRkRlRVFzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMWxCUTNCQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTlFMRTlCUVU4c1JVRkJSU3hEUVVGRE8xRkJRMW9zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVEN4RFFVRkRPME5CUVVFN1FVRkZSQ3hOUVVGTkxGVkJRVlVzU1VGQlNTeERRVUZETEVsQlFWa3NSVUZCUlN4SlFVRjNRaXhGUVVGRkxFOUJRWEZDTzBsQlEyaEdMRWxCUVVrc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEpRVUZKTEZOQlFWTTdVVUZEY2tNc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTTVRaXhKUVVGSkxFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWxCUVVrc1UwRkJVenRSUVVNelF5eExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU53UXl4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUzBGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0pHTEVOQlFVTTdRVUZGUkN4blJrRkJaMFk3UVVGRGFFWXNUVUZCVFN4VlFVRlZMRTFCUVUwc1EwRkJReXhOUVVGWExFVkJRVVVzVjBGQlowSXNTVUZCU1N4RlFVRkZMRXRCUVdNN1NVRkRkRVVzU1VGQlNTeExRVUZMTzFGQlExQXNTMEZCU3l4SFFVRkhMRWRCUVVjc1MwRkJTeXhKUVVGSkxFTkJRVU03TzFGQlEyeENMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGFFSXNTVUZCU1N4TlFVRk5MRXRCUVVzc1VVRkJVVHRSUVVOeVFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWRCUVVjc1MwRkJTeXhoUVVGaExGRkJRVkVzVjBGQlZ5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNaRkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNWMEZCVnl4RFFVRkRMRTFCUVdNc1JVRkJSU3hSUVVGblFpeEZRVUZGTEZOQlFWTXNSMEZCUnl4TFFVRkxMRVZCUVVVc1MwRkJZenRKUVVNM1JpeEpRVUZKTEVOQlFVTXNUVUZCVFN4TFFVRkxMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNTVUZCU1N4UlFVRlJMRXRCUVVzc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRPMUZCUXpsRkxFTkJRVU1zVFVGQlRTeExRVUZMTEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeFJRVUZSTEV0QlFVc3NUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETzFGQlF6bEZMRU5CUVVNc1RVRkJUU3hMUVVGTExFMUJRVTBzUTBGQlF5eEhRVUZITEVsQlFVa3NVVUZCVVN4TFFVRkxMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETVVZc1QwRkJUenRKUVVOVUxFMUJRVTBzVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXp0SlFVTjZSQ3hOUVVGTkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SFFVRkhMRXRCUVVzc1lVRkJUQ3hMUVVGTExHTkJRVXdzUzBGQlN5eEhRVUZKTEVWQlFVVXNhVUpCUVdsQ0xGTkJRVk1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEY0VVc1NVRkJTU3hEUVVGRExGRkJRVkU3VVVGRFdDeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRmxCUVZrc1VVRkJVU3hUUVVGVExFMUJRVTBzYVVKQlFXbENMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRGRFWXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zVFVGQmFVSXNSVUZCUlN4UlFVRnRRaXhGUVVGRkxFdEJRV003U1VGRGFFWXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRPMGxCUXpORExFMUJRVTBzWTBGQll5eEhRVUZITEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNN1NVRkRka01zVFVGQlRTeERRVUZETEdOQlFXTXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeEhRVUZITEV0QlFVc3NZVUZCVEN4TFFVRkxMR05CUVV3c1MwRkJTeXhIUVVGSkxFVkJRVVVzWVVGQllTeERRVUZETEVOQlFVTTdTVUZGZEVVc1MwRkJTeXhOUVVGTkxFMUJRVTBzU1VGQlNTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RlFVRkZPMUZCUTNKRExFMUJRVTBzV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTjRSQ3hKUVVGSkxGbEJRVmtzU1VGQlNTeEpRVUZKTzFsQlEzUkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zVlVGQlZTeE5RVUZOTEVOQlFVTXNTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOeVJDeEpRVUZKTEZsQlFWa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWs3V1VGRGJFTXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFMUJRVTBzUTBGQlF5eEpRVUZKTEd0Q1FVRnJRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeFJRVUZSTEZsQlFWa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMnBITEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU42UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpWQ0xFMUJRVTBzVjBGQlZ5eEhRVUZITEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3p0blFrRkRPVUlzVjBGQlZ5eERRVUZETEZkQlFWY3NSVUZCUlN4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJsQ1FVTTFReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVE8yZENRVU4yUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03TzJkQ1FVVXZReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRUUVVOeVF6dExRVU5HTzBGQlEwZ3NRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zVFVGQk9FSXNSVUZCUlN4UlFVRm5RenRKUVVNelJpeExRVUZMTEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1lVRkJZU3hEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSVHRSUVVOdVJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhYUVVGWExFTkJRVU03V1VGRGNrTXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh6UWtGQmMwSXNWMEZCVnl4aFFVRmhMRU5CUVVNc1EwRkJRenRSUVVWc1JTeE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGVFTXNTVUZCU1N4WFFVRlhMRmxCUVZrc1MwRkJTeXhKUVVGSkxHRkJRV0VzV1VGQldTeExRVUZMTzFsQlEyaEZMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzWVVGQllTeERRVUZETEVOQlFVTTdZVUZEY2tNc1NVRkJTU3hYUVVGWExGbEJRVmtzVFVGQlRTeEpRVUZKTEdGQlFXRXNXVUZCV1N4TlFVRk5PMWxCUTNaRkxGbEJRVmtzUTBGQlF5eFhRVUZYTEVWQlFVVXNZVUZCWVN4RFFVRkRMRU5CUVVNN1lVRkRkRU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNZVUZCWVN4RFFVRkRPMWxCUTNKRkxGZEJRVmNzUTBGQlF5eFhRVUZYTEVWQlFVVXNZVUZCWVN4RFFVRkRMRU5CUVVNN1lVRkRja01zU1VGQlNTeFhRVUZYTEVsQlFVa3NZVUZCWVR0WlFVTnVReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdGQlFXRXNZVUZCWVN4alFVRmpMRmRCUVZjc1YwRkJWeXhYUVVGWExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEycEhPMEZCUTBnc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFhRVUZYTEVOQlFVTXNUVUZCYzBJc1JVRkJSU3hSUVVGM1FqdEpRVU14UlN4TlFVRk5MRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEyNURMRTFCUVUwc1kwRkJZeXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZGtNc1NVRkJTU3haUVVGWkxFbEJRVWtzWTBGQll5eEZRVUZGTzFGQlEyeERMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTUVSQlFUQkVMRmxCUVZrc1IwRkJSenRaUVVOMlJpeG5RMEZCWjBNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUTBGQlF6dExRVU55UkR0SlFVVkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4WlFVRlpMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGNrTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUzBGQlN5eEpRVUZKTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hMUVVGTE8xbEJRelZFTEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRha01zU1VGQlNTeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRmxCUVZrc1RVRkJUU3hKUVVGSkxGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4TlFVRk5PMWxCUTI1RkxGbEJRVmtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYkVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNdlFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRmxCUVZrc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhUUVVGVExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1MwRkRha1k3UVVGRFNDeERRVUZETzBGQlJVUXNNa0pCUVRKQ08wRkJRek5DTEUxQlFVMHNWVUZCVlN4UlFVRlJMRU5CUVVNc1VVRkJaMElzUlVGQlJTeExRVUZwUWp0SlFVTXhSQ3hsUVVGbExFZEJRVWNzVVVGQlVTeERRVUZETzBsQlF6TkNMRXRCUVVzc1JVRkJSU3hEUVVGRE8wRkJRMVlzUTBGQlF6dEJRVVZFTEhWR1FVRjFSanRCUVVOMlJpeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRTFCUVRKQ08wbEJRMmhFTEVsQlFVa3NTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJReXhKUVVGSkxGTkJRVk03VVVGRGNrTXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU01UWl4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXp0QlFVTjZReXhEUVVGRE8wRkJSVVFzYzBaQlFYTkdPMEZCUTNSR0xFMUJRVTBzVlVGQlZTeExRVUZMTEVOQlFVTXNTMEZCTUVJN1NVRkRPVU1zU1VGQlNTeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1UwRkJVenRSUVVOeVF5eExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRemxDTEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzBGQlEzWkRMRU5CUVVNN1FVRkZSQ3hUUVVGVExGbEJRVmtzUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVlR0SlFVTjZReXhQUVVGUExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGRrUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJaMElzWVVGQllTeERRVUZETEZOQlFXbENMRVZCUVVVc1RVRkJXVHM3VVVGRGFrVXNTVUZCU1N4aFFVRmhMRU5CUVVNc1UwRkJVeXhEUVVGRE8xbEJRVVVzVDBGQlR6dFJRVU55UXl4TlFVRk5MRmRCUVZjc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU5zUkN4SlFVRkpMRmRCUVZjc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TFFVRkxMRk5CUVZNc1JVRkJSVHRaUVVNdlF5eGhRVUZoTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMmhETEU5QlFVODdVMEZEVWp0UlFVTkVMRTFCUVUwc1pVRkJaU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU16UWl4TlFVRk5MR0ZCUVdFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVU0zUml4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRE8xRkJRMjVFTEV0QlFVc3NUVUZCVFN4RFFVRkRMRWxCUVVrc1lVRkJZU3hGUVVGRk8xbEJRemRDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEYUVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0blFrRkJSU3hUUVVGVE8xbEJReTlFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU55UXl4TlFVRk5MRmRCUVZjc1IwRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU53UkN4SlFVRkpMRlZCUVZVc1EwRkJRenRuUWtGRFppeEpRVUZKTEZkQlFWY3NTVUZCU1N4RFFVRkJMRmRCUVZjc1lVRkJXQ3hYUVVGWExIVkNRVUZZTEZkQlFWY3NRMEZCUlN4TlFVRk5MRWxCUVVjc1EwRkJRenR2UWtGQlJTeFZRVUZWTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UlN4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFdEJRVXNzUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVZNc1JVRkJSVHR2UWtGRE4wY3NUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMnBGTERSRFFVRTBRenR2UWtGRE5VTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1NVRkJTVHQzUWtGQlJTeE5RVUZOTEZkQlFWY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEyaEVMRU5CUVVNc1EwRkJRU3hGUVVGRkxFVkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVNdlFqdFRRVU5HTzFGQlEwUXNZVUZCWVN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFMUJRVTA3V1VGQlJTeFBRVUZQTzFGQlEzQkRMRmRCUVZjc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRkhMRVZCUVVNc1MwRkJTeXhGUVVGRkxHVkJRV1VzUlVGQlF5eERRVUZETzBsQlF6TkVMRU5CUVVNN1EwRkJRVHRCUVVWRUxFMUJRVTBzVlVGQlowSXNVVUZCVVN4RFFVRkRMRTlCUVhWRk96czdPMUZCUTNCSExFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVRXNUVUZCUVN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExHTkJRV01zUlVGQlJTd3dRMEZCUlN4SlFVRkpMREJEUVVGRkxFOUJRVThzUTBGQlF6dFJRVU5vUlN4TlFVRk5MR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEYWtNc1RVRkJUU3hQUVVGUExFZEJRM1ZFTEVWQlFVVXNRMEZCUXp0UlFVTjJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkQ0xFOUJRVThzWVVGQlVDeFBRVUZQTEdOQlFWQXNUMEZCVHl4SlFVRlFMRTlCUVU4c1IwRkJTeXhGUVVGRkxFVkJRVU03VVVGRFppeFpRVUZCTEU5QlFWRXNSVUZCUXl4WFFVRlhMSFZEUVVGWUxGZEJRVmNzUjBGQlN5eEpRVUZKTEZkQlFWY3NSVUZCUlN4RlFVRkRPMUZCUXpORExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVNeFFpeExRVUZMTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRaUVVOb1JDeEpRVUZKTEVOQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEZGQlFWRXNTMEZCU1N4VFFVRlRMRVZCUVVVN1owSkJRMnhETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeFJRVUZSTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN2IwSkJRMmhGTEZOQlFWTTdZVUZEV2p0WlFVTkVMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eEhRVUZITEZkQlFWY3NRMEZCUXl4RFFVRkRPMWxCUTNaRExFbEJRVWs3WjBKQlEwWXNTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUVHR2UWtGRFpDeE5RVUZOTEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRoUVVONFFqdFpRVUZETEU5QlFVOHNRMEZCVFN4RlFVRkZPMmRDUVVObUxFdEJRVXNzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8yRkJRMjVETzFsQlEwUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJRU3hMUVVGTExFTkJRVU1zUzBGQlN5eHRRMEZCU1N4RlFVRkZMRU5CUVVNN1dVRkROVUlzVFVGQlRTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTJZc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTXZRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQTEdGQlFWQXNUMEZCVHl4MVFrRkJVQ3hQUVVGUExFTkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTm9SQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVNelJTeEpRVUZKTzJkQ1FVTkdMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXM3YjBKQlEySXNUVUZCVFN4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03WVVGRGRrSTdXVUZCUXl4UFFVRlBMRU5CUVUwc1JVRkJSVHRuUWtGRFppeExRVUZMTEVOQlFVTXNWMEZCVnl4SFFVRkhMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dGhRVU5zUXp0WlFVTkVMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmM3WjBKQlEyNUNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVU1zUTBGQlF5eERRVUZETzFsQlF6ZEhMRWxCUVVrc1MwRkJTeXhEUVVGRExGbEJRVms3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEV0QlFVc3NRMEZCUXl4WlFVRlpMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVU1zUTBGQlF5eERRVUZETzFsQlF6bEhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjJRanRSUVVORUxFbEJRVWtzVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4alFVRmpMRVZCUVVVN1dVRkRkRU1zVFVGQlRTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzJkQ1FVTnVReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzI5Q1FVTllMRkZCUVZFc1JVRkJSU3h6UWtGQmMwSTdiMEpCUTJoRExFbEJRVWtzUlVGQlJTeFpRVUZaTzI5Q1FVTnNRaXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1JVRkJSU3hMUVVGTE8ybENRVU53UlN4RFFVRkRMRU5CUVVNN1lVRkRTanRUUVVOR08xRkJRMFFzU1VGQlNTeFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVNNVFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRVZCUVVVc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFpRVU12UWl4TlFVRk5MRlZCUVZVc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUXpORUxFMUJRVTBzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGRGVFUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEYWtRc1RVRkJUU3hYUVVGWExFZEJRVWNzZVVaQlFYbEdMRU5CUVVNN1dVRkRPVWNzVFVGQlRTeE5RVUZOTEVkQlFVYzdaMEpCUTJJc1ZVRkJWU3hGUVVGRkxGVkJRVlU3WjBKQlEzUkNMRTlCUVU4c1JVRkJSU3hQUVVGUE8yZENRVU5vUWl4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTA3WjBKQlEzSkNMRTlCUVU4c1JVRkJSU3hSUVVGUk8yRkJRMnhDTEVOQlFVTTdXVUZEUml4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFMUJRVTA3WjBKQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRkZCUVZFc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42Uml4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF6dFRRVU51UkR0UlFVTkVMRTlCUVU4c1QwRkJUeXhEUVVGRE96dERRVU5vUWp0QlFVVkVMRk5CUVdVc1VVRkJVU3hEUVVGRExFTkJRVThzUlVGQlJTeFRRVUUyUWpzN08xRkJRelZFTEVsQlFVa3NRMEZCZFVjc1EwRkJRenRSUVVNMVJ5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRWxCUVVrc1UwRkJVeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFRRVUZUTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pITEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVFc1RVRkJRU3hEUVVGRExFTkJRVU1zVDBGQlR5d3dRMEZCUlN4VlFVRlZMRXRCUVVrc1RVRkJUU3hEUVVGRE8xRkJRemRETEUxQlFVMHNWVUZCVlN4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRkJMRU5CUVVNc1EwRkJReXhQUVVGUExEQkRRVUZGTEZWQlFWVXNRMEZCUXp0UlFVTTVSQ3hKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVU5RTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zVVVGQlVTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMnBFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRGVrSXNTVUZCU1R0WlFVTkdMRWxCUVVrc1NVRkJTVHRuUWtGRFRpeERRVUZETEVkQlFVY3NSVUZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFZRVUZYTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTTdPMmRDUVVVdlJDeERRVUZETEVkQlFVY3NSVUZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hGUVVGRkxFMUJRVTBzUlVGQlJTeE5RVUZCTEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3h0UTBGQlNTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZETEVOQlFVTTdVMEZET1VVN1VVRkJReXhQUVVGUExFTkJRVTBzUlVGQlJUdFpRVU5tTEVOQlFVTXNSMEZCUnl4RlFVRkRMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVNc1EwRkJRenRUUVVOdVJUdFJRVU5FTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRGVFSXNZVUZCWVR0UlFVTmlMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTndRaXhKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVU5RTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zVVVGQlVTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEYWtVc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTNoQ0xFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOb1FpeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1EwRkRWanRCUVVWRUxEWkNRVUUyUWp0QlFVTTNRaXhOUVVGTkxGVkJRV2RDTEV0QlFVc3NRMEZCUXl4RlFVRlZPenRSUVVOd1F5eE5RVUZOTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE9VTXNRMEZCUXp0RFFVRkJPMEZCUlVRc1RVRkJUU3hWUVVGblFpeFZRVUZWTEVOQlFVTXNXVUZCTWtJc1JVRkRNVVFzVVVGQlowSXNhMEpCUVd0Q0xFVkJRVVVzVDBGQlpTeEhRVUZITEVWQlFVVXNWMEZCYlVJc1JVRkJSVHM3VVVGRE4wVXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZCUlR0WlFVTnlReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTzJkQ1FVTmtMR0ZCUVdFc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1RVRkJUU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNMElzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTFRc1lVRkJZVHRaUVVOaUxFMUJRVTBzVlVGQlZTeEhRVUZaTEZkQlFWY3NRMEZCUXl4SFFVRkhMRVZCUVVVN1owSkJRek5ETEVsQlFVa3NXVUZCV1N4RlFVRkZMRVZCUVVVN2IwSkJRMnhDTEdGQlFXRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenR2UWtGRE1VSXNUMEZCVHl4RlFVRkZMRU5CUVVNN2FVSkJRMWc3V1VGRFNDeERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRaaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5NTEVOQlFVTTdRMEZCUVR0QlFVVkVMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVjBGQmJVSTdTVUZEYWtRc1RVRkJUU3hQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRKUVVNelF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOMlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzVjBGQlZ6dFpRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJRenRMUVVObU8wbEJRMFFzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGblFpeFZRVUZWTEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVdkQ0xFVkJRVVVzYzBKQlFTdENMRXRCUVVzN08xRkJRMmhITEVsQlFVa3NiVUpCUVcxQ08xbEJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJwRkxFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzWkRMRTFCUVUwc1ZVRkJWU3hIUVVGSExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUXk5RUxFMUJRVTBzVVVGQlVTeEhRVUZITEVkQlFVY3NWVUZCVlN4WFFVRlhMRlZCUVZVc1VVRkJVU3hWUVVGVk8wMUJRMnBGTEZWQlFWVXNWVUZCVlN4VlFVRlZMRTlCUVU4c1ZVRkJWU3hKUVVGSkxFTkJRVU03VVVGRGVFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNUdFpRVU5HTEVsQlFVa3NUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETjBJc1RVRkJUU3hWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlF6bEVMRzlDUVVGdlFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUXpsQ0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRlRU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU16UkN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGQlJTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZEY2tRc1JVRkJSU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEY2tJc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03V1VGRE0wTXNUVUZCVFN4UlFVRlJMRWRCUVRSQ0xFVkJRVVVzUTBGQlF6dFpRVU0zUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1UwRkJVeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU40Unl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFsQlF6VkNMRTFCUVUwc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycENMRTFCUVUwc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0WlFVTXZRaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRekZETEVWQlFVVXNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJRenRaUVVOcVFpeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRM2hETEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRGRFSXNUVUZCVFN4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRemxFTEdkRFFVRm5ReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlF6RkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycENMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZEZUVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eE5RVUZOTEVOQlFVVXNRMEZCUXp0WlFVTm9SU3hYUVVGWExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6VkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE5VVTdaMEpCUVZNN1dVRkRVaXhGUVVGRkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEV0N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFVTXpRanRKUVVOSUxFTkJRVU03UTBGQlFTSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYm1sdGNHOXlkQ0I3VDJKelpYSjJZV0pzWlN3Z1UzVmljMk55YVhCMGFXOXVmU0JtY205dElDZHllR3B6Snp0Y2JtbHRjRzl5ZENCVWFXMWxiM1YwSUQwZ1RtOWtaVXBUTGxScGJXVnZkWFE3WEc1cGJYQnZjblFnZTBSaGRHRkdjbUZ0WlgwZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dVpYaHdiM0owSUdOdmJuTjBJSFJsYzNSek9pQjdYRzRnSUZ0clpYazZJSE4wY21sdVoxMDZJSHRjYmlBZ0lDQjBaWE4wY3o4NklGUmxjM1JiWFN3Z1ltVm1iM0psUHpvZ0tDa2dQVDRnVUhKdmJXbHpaVHgyYjJsa1Bpd2dZV1owWlhJL09pQW9LU0E5UGlCUWNtOXRhWE5sUEhadmFXUStMRnh1SUNBZ0lHSmxabTl5WlZOMFlYUjFjejg2SUhOMGNtbHVaeXdnWVdaMFpYSlRkR0YwZFhNL09pQnpkSEpwYm1kY2JpQWdmVnh1ZlNBOUlIdDlPMXh1WEc1amIyNXpkQ0JoZFhSdlZHVnpkSE5EWVhST1lXMWxJRDBnSjBGMWRHOGdWR1Z6ZEhNbk8xeHVZMjl1YzNRZ2QyRnpVbVZuYVhOMFpYSmxaRG9nZTF0clpYazZJSE4wY21sdVoxMDZJR0p2YjJ4bFlXNTlJRDBnZTMwN1hHNWxlSEJ2Y25RZ2JHVjBJR04xY25KbGJuUkRZWFJsWjI5eWVUb2djM1J5YVc1bk8xeHVYRzVsZUhCdmNuUWdibUZ0WlhOd1lXTmxJR0Z6YzNWeVpTQjdYRzRnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNST2RXeHNLSFpoYkhWbE9pQmhibmtzSUc1aGJXVS9PaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ0pIdHVZVzFsSUQwOUlHNTFiR3dnUHlBblZtRnNkV1VuSURvZ2JtRnRaWDBnYm05MElHUmxabWx1WldSZ0tUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRlJsYzNSUGNIUnBiMjV6SUh0Y2JpQWdkR2x0Wlc5MWREODZJRzUxYldKbGNqdGNiaUFnZFc1b1lXNWtiR1ZrUlhoalpYQjBhVzl1VkdsdFpXOTFkRDg2SUc1MWJXSmxjanRjYmlBZ2MydHBjRkpsWVhOdmJqODZJSE4wY21sdVp6dGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlJsYzNSRGIyNTBaWGgwSUh0Y2JpQWdZMkYwWTJoVmJtaGhibVJzWldRZ1BTQjBjblZsTzF4dUlDQnlaWEJ2Y25RZ1BTQm1ZV3h6WlR0Y2JseHVJQ0JqYjI1emRISjFZM1J2Y2loallYUmphRlZ1YUdGdVpHeGxaRDg2SUdKdmIyeGxZVzRzSUhKbGNHOXlkRDg2SUdKdmIyeGxZVzRwSUh0Y2JpQWdJQ0JwWmlBb1kyRjBZMmhWYm1oaGJtUnNaV1FnSVQwOUlIVnVaR1ZtYVc1bFpDa2dkR2hwY3k1allYUmphRlZ1YUdGdVpHeGxaQ0E5SUdOaGRHTm9WVzVvWVc1a2JHVmtPMXh1SUNBZ0lHbG1JQ2h5WlhCdmNuUWdJVDA5SUhWdVpHVm1hVzVsWkNrZ2RHaHBjeTV5WlhCdmNuUWdQU0J5WlhCdmNuUTdYRzRnSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlVaWE4wSUh0Y2JpQWdkR1Z6ZERvZ0tDa2dQVDRnVUhKdmJXbHpaVHhoYm5rK08xeHVJQ0J1WVcxbE9pQnpkSEpwYm1jN1hHNGdJR05oZEdWbmIzSjVPaUJ6ZEhKcGJtYzdYRzRnSUc5d2RHbHZibk0vT2lCVVpYTjBUM0IwYVc5dWN6dGNibHh1SUNCamIyNXpkSEoxWTNSdmNpaGpZWFJsWjI5eWVUb2djM1J5YVc1bkxDQnVZVzFsT2lCemRISnBibWNzSUhSbGMzUTZJQ2dwSUQwK0lGQnliMjFwYzJVOFlXNTVQaXdnYjNCMGFXOXVjejg2SUZSbGMzUlBjSFJwYjI1ektTQjdYRzRnSUNBZ2RHaHBjeTVqWVhSbFoyOXllU0E5SUdOaGRHVm5iM0o1TzF4dUlDQWdJSFJvYVhNdWJtRnRaU0E5SUc1aGJXVTdYRzRnSUNBZ2IzQjBhVzl1Y3lBL1B6MGdlMzA3WEc0Z0lDQWdiM0IwYVc5dWN5NTBhVzFsYjNWMElEOC9QU0F6TURBd01EdGNiaUFnSUNCMGFHbHpMbTl3ZEdsdmJuTWdQU0J2Y0hScGIyNXpPMXh1SUNBZ0lIUm9hWE11ZEdWemRDQTlJR0Z6ZVc1aklDZ3BPaUJRY205dGFYTmxQR0Z1ZVQ0Z1BUNGdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJRY205dGFYTmxLR0Z6ZVc1aklDaHlaWE52YkhabExDQnlaV3BsWTNRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYkdWMElISmxjM1ZzZENBOUlDY25PMXh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJR0YzWVdsMElIUmxjM1FvS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pUb2dZVzU1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVZxWldOMEtHVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGMyOXNkbVVvY21WemRXeDBLVHRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDA3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdGemVXNWpJR1oxYm1OMGFXOXVJSFJsYzNSRmRtVnVkRHhVUGlobGRtVnVkRG9nVDJKelpYSjJZV0pzWlR4VVBpeGNiaUFnYUdGdVpHeGxjam9nS0dGeVozTTZJRlFwSUQwK0lIWnZhV1FzSUhSeWFXZG5aWEk2SUNncElEMCtJSFp2YVdRc0lHMXpPaUJ1ZFcxaVpYSWdQU0F3S1RvZ1VISnZiV2x6WlR4emRISnBibWMrSUh0Y2JpQWdiR1YwSUhOMVlqb2dVM1ZpYzJOeWFYQjBhVzl1TzF4dUlDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9LSEpsYzI5c2RtVXNJSEpsYW1WamRDa2dQVDRnZTF4dUlDQWdJSE4xWWlBOUlHVjJaVzUwTG5OMVluTmpjbWxpWlNnb1lYSm5jeWtnUFQ0Z2UxeHVJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnYUdGdVpHeGxjaWhoY21kektUdGNiaUFnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnY21WcVpXTjBLR1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYzNWaUxuVnVjM1ZpYzJOeWFXSmxLQ2s3WEc0Z0lDQWdJQ0J5WlhOdmJIWmxLQ2RQU3ljcE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb0tDa2dQVDRnZTF4dUlDQWdJQ0FnYzNWaUxuVnVjM1ZpYzJOeWFXSmxLQ2s3WEc0Z0lDQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnY0hKbFptVnlMWEJ5YjIxcGMyVXRjbVZxWldOMExXVnljbTl5YzF4dUlDQWdJQ0FnY21WcVpXTjBLQ2QwYVcxbGIzVjBKeWs3WEc0Z0lDQWdmU3dnYlhNcE8xeHVJQ0FnSUhSeWFXZG5aWElvS1R0Y2JpQWdmU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBaWE4wS0c1aGJXVTZJSE4wY21sdVp5d2dkR1Z6ZERvZ0tDa2dQVDRnVUhKdmJXbHpaVHhoYm5rK0xDQnZjSFJwYjI1elB6b2dWR1Z6ZEU5d2RHbHZibk1wT2lCMmIybGtJSHRjYmlBZ2FXWWdLSFJsYzNSelcyTjFjbkpsYm5SRFlYUmxaMjl5ZVYwZ1BUMGdkVzVrWldacGJtVmtLVnh1SUNBZ0lIUmxjM1J6VzJOMWNuSmxiblJEWVhSbFoyOXllVjBnUFNCN2ZUdGNiaUFnYVdZZ0tIUmxjM1J6VzJOMWNuSmxiblJEWVhSbFoyOXllVjB1ZEdWemRITWdQVDBnZFc1a1pXWnBibVZrS1Z4dUlDQWdJSFJsYzNSelcyTjFjbkpsYm5SRFlYUmxaMjl5ZVYwdWRHVnpkSE1nUFNCYlhUdGNiaUFnZEdWemRITmJZM1Z5Y21WdWRFTmhkR1ZuYjNKNVhTNTBaWE4wY3lFdWNIVnphQ2h1WlhjZ1ZHVnpkQ2hqZFhKeVpXNTBRMkYwWldkdmNua3NJRzVoYldVc0lIUmxjM1FzSUc5d2RHbHZibk1wS1R0Y2JuMWNibHh1THlvZ1ZHVnpkSE1nZEhkdklHOWlhbVZqZEhNZ1ptOXlJR1Z4ZFdGc2FYUjVMQ0IwYUhKdmQzTWdZVzRnWlhoalpYQjBhVzl1SUdsbUlIUm9aWGtnWVhKbElHNXZkQ0JsY1hWaGJDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJsZUhCbFkzUW9ZV04wZFdGc09pQmhibmtzSUdWNGNHVmpkR1ZrT2lCaGJua2dQU0IwY25WbExDQmxjbkp2Y2o4NklITjBjbWx1WnlrNklIWnZhV1FnZTF4dUlDQnBaaUFvWlhKeWIzSXBYRzRnSUNBZ1pYSnliM0lnUFNCZ0pIdGxjbkp2Y24wc0lHQTdYRzRnSUdWc2MyVWdaWEp5YjNJZ1BTQW5KenRjYmlBZ2FXWWdLR0ZqZEhWaGJDQWhQVDBnWlhod1pXTjBaV1FwWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQWtlMlZ5Y205eWZVVjRjR1ZqZEdWa0lGd2lKSHRsZUhCbFkzUmxaSDFjSWl3Z1oyOTBJRndpSkh0aFkzUjFZV3g5WENKZ0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWNGNHVmpkRVpzYjJGMEtHRmpkSFZoYkRvZ2JuVnRZbVZ5TENCbGVIQmxZM1JsWkRvZ2JuVnRZbVZ5TENCMGIyeGxjbUZ1WTJVZ1BTQXdMakF3TVN3Z1pYSnliM0kvT2lCemRISnBibWNwT2lCMmIybGtJSHRjYmlBZ2FXWWdLQ2hoWTNSMVlXd2dQVDA5SUU1MWJXSmxjaTVRVDFOSlZFbFdSVjlKVGtaSlRrbFVXU0FtSmlCbGVIQmxZM1JsWkNBOVBUMGdUblZ0WW1WeUxsQlBVMGxVU1ZaRlgwbE9Sa2xPU1ZSWktTQjhmRnh1SUNBZ0lDQWdLR0ZqZEhWaGJDQTlQVDBnVG5WdFltVnlMazVGUjBGVVNWWkZYMGxPUmtsT1NWUlpJQ1ltSUdWNGNHVmpkR1ZrSUQwOVBTQk9kVzFpWlhJdVRrVkhRVlJKVmtWZlNVNUdTVTVKVkZrcElIeDhYRzRnSUNBZ0lDQW9ZV04wZFdGc0lEMDlQU0JPZFcxaVpYSXVUbUZPSUNZbUlHVjRjR1ZqZEdWa0lEMDlQU0JPZFcxaVpYSXVUbUZPS1NCOGZDQW9hWE5PWVU0b1lXTjBkV0ZzS1NBbUppQnBjMDVoVGlobGVIQmxZM1JsWkNrcEtWeHVJQ0FnSUhKbGRIVnlianRjYmlBZ1kyOXVjM1FnWVhKbFJYRjFZV3dnUFNCTllYUm9MbUZpY3loaFkzUjFZV3dnTFNCbGVIQmxZM1JsWkNrZ1BDQjBiMnhsY21GdVkyVTdYRzRnSUdWNGNHVmpkQ2hoY21WRmNYVmhiQ3dnZEhKMVpTd2dZQ1I3WlhKeWIzSWdQejhnSnlkOUlDaDBiMnhsY21GdVkyVWdQU0FrZTNSdmJHVnlZVzVqWlgwcFlDazdYRzRnSUdsbUlDZ2hZWEpsUlhGMVlXd3BYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCRmVIQmxZM1JsWkNBa2UyVjRjR1ZqZEdWa2ZTd2daMjkwSUNSN1lXTjBkV0ZzZlNBb2RHOXNaWEpoYm1ObElEMGdKSHQwYjJ4bGNtRnVZMlY5S1dBcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhod1pXTjBWR0ZpYkdVb1lXTjBkV0ZzT2lCRVlYUmhSbkpoYldVc0lHVjRjR1ZqZEdWa09pQkVZWFJoUm5KaGJXVXNJR1Z5Y205eVB6b2djM1J5YVc1bktUb2dkbTlwWkNCN1hHNGdJR052Ym5OMElHVjRjR1ZqZEdWa1VtOTNRMjkxYm5RZ1BTQmxlSEJsWTNSbFpDNXliM2REYjNWdWREdGNiaUFnWTI5dWMzUWdZV04wZFdGc1VtOTNRMjkxYm5RZ1BTQmhZM1IxWVd3dWNtOTNRMjkxYm5RN1hHNGdJR1Y0Y0dWamRDaGhZM1IxWVd4U2IzZERiM1Z1ZEN3Z1pYaHdaV04wWldSU2IzZERiM1Z1ZEN3Z1lDUjdaWEp5YjNJZ1B6OGdKeWQ5TENCeWIzY2dZMjkxYm5SZ0tUdGNibHh1SUNCbWIzSWdLR052Ym5OMElHTnZiSFZ0YmlCdlppQmxlSEJsWTNSbFpDNWpiMngxYlc1ektTQjdYRzRnSUNBZ1kyOXVjM1FnWVdOMGRXRnNRMjlzZFcxdUlEMGdZV04wZFdGc0xtTnZiSFZ0Ym5NdVlubE9ZVzFsS0dOdmJIVnRiaTV1WVcxbEtUdGNiaUFnSUNCcFppQW9ZV04wZFdGc1EyOXNkVzF1SUQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRU52YkhWdGJpQWtlMk52YkhWdGJpNXVZVzFsZlNCdWIzUWdabTkxYm1SZ0tUdGNiaUFnSUNCcFppQW9ZV04wZFdGc1EyOXNkVzF1TG5SNWNHVWdJVDBnWTI5c2RXMXVMblI1Y0dVcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVOdmJIVnRiaUFrZTJOdmJIVnRiaTV1WVcxbGZTQjBlWEJsSUdWNGNHVmpkR1ZrSUNSN1kyOXNkVzF1TG5SNWNHVjlJR2R2ZENBa2UyRmpkSFZoYkVOdmJIVnRiaTUwZVhCbGZXQXBPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2daWGh3WldOMFpXUlNiM2REYjNWdWREc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0IyWVd4MVpTQTlJR052YkhWdGJpNW5aWFFvYVNrN1hHNGdJQ0FnSUNCamIyNXpkQ0JoWTNSMVlXeFdZV3gxWlNBOUlHRmpkSFZoYkVOdmJIVnRiaTVuWlhRb2FTazdYRzRnSUNBZ0lDQnBaaUFvWTI5c2RXMXVMblI1Y0dVZ1BUMGdSRWN1VkZsUVJTNUdURTlCVkNsY2JpQWdJQ0FnSUNBZ1pYaHdaV04wUm14dllYUW9ZV04wZFdGc1ZtRnNkV1VzSUhaaGJIVmxMQ0F3TGpBd01ERXNJR1Z5Y205eUtUdGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHTnZiSFZ0Ymk1MGVYQmxJRDA5SUVSSExsUlpVRVV1UkVGVVJWOVVTVTFGS1Z4dUlDQWdJQ0FnSUNCbGVIQmxZM1FvWVdOMGRXRnNWbUZzZFdVdWFYTlRZVzFsS0haaGJIVmxLU3dnZEhKMVpTd2daWEp5YjNJcE8xeHVJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0JsZUhCbFkzUW9ZV04wZFdGc1ZtRnNkV1VzSUhaaGJIVmxMQ0JsY25KdmNpazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmxlSEJsWTNSUFltcGxZM1FvWVdOMGRXRnNPaUI3SUZ0clpYazZJSE4wY21sdVoxMDZJR0Z1ZVNCOUxDQmxlSEJsWTNSbFpEb2dleUJiYTJWNU9pQnpkSEpwYm1kZE9pQmhibmtnZlNrZ2UxeHVJQ0JtYjNJZ0tHTnZibk4wSUZ0bGVIQmxZM1JsWkV0bGVTd2daWGh3WldOMFpXUldZV3gxWlYwZ2IyWWdUMkpxWldOMExtVnVkSEpwWlhNb1pYaHdaV04wWldRcEtTQjdYRzRnSUNBZ2FXWWdLQ0ZoWTNSMVlXd3VhR0Z6VDNkdVVISnZjR1Z5ZEhrb1pYaHdaV04wWldSTFpYa3BLVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkZlSEJsWTNSbFpDQndjbTl3WlhKMGVTQmNJaVI3Wlhod1pXTjBaV1JMWlhsOVhDSWdibTkwSUdadmRXNWtZQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQmhZM1IxWVd4V1lXeDFaU0E5SUdGamRIVmhiRnRsZUhCbFkzUmxaRXRsZVYwN1hHNGdJQ0FnYVdZZ0tHRmpkSFZoYkZaaGJIVmxJR2x1YzNSaGJtTmxiMllnUVhKeVlYa2dKaVlnWlhod1pXTjBaV1JXWVd4MVpTQnBibk4wWVc1alpXOW1JRUZ5Y21GNUtWeHVJQ0FnSUNBZ1pYaHdaV04wUVhKeVlYa29ZV04wZFdGc1ZtRnNkV1VzSUdWNGNHVmpkR1ZrVm1Gc2RXVXBPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tHRmpkSFZoYkZaaGJIVmxJR2x1YzNSaGJtTmxiMllnVDJKcVpXTjBJQ1ltSUdWNGNHVmpkR1ZrVm1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJQWW1wbFkzUXBYRzRnSUNBZ0lDQmxlSEJsWTNSUFltcGxZM1FvWVdOMGRXRnNWbUZzZFdVc0lHVjRjR1ZqZEdWa1ZtRnNkV1VwTzF4dUlDQWdJR1ZzYzJVZ2FXWWdLRTUxYldKbGNpNXBjMFpwYm1sMFpTaGhZM1IxWVd4V1lXeDFaU2tnSmlZZ1RuVnRZbVZ5TG1selJtbHVhWFJsS0dWNGNHVmpkR1ZrVm1Gc2RXVXBLVnh1SUNBZ0lDQWdaWGh3WldOMFJteHZZWFFvWVdOMGRXRnNWbUZzZFdVc0lHVjRjR1ZqZEdWa1ZtRnNkV1VwTzF4dUlDQWdJR1ZzYzJVZ2FXWWdLR0ZqZEhWaGJGWmhiSFZsSUNFOUlHVjRjR1ZqZEdWa1ZtRnNkV1VwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRVY0Y0dWamRHVmtJQ2drZTJWNGNHVmpkR1ZrVm1Gc2RXVjlLU0JtYjNJZ2EyVjVJQ2NrZTJWNGNHVmpkR1ZrUzJWNWZTY3NJR2R2ZENBb0pIdGhZM1IxWVd4V1lXeDFaWDBwWUNrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVjRjR1ZqZEVGeWNtRjVLR0ZqZEhWaGJEb2dRWEp5WVhsTWFXdGxQR0Z1ZVQ0c0lHVjRjR1ZqZEdWa09pQkJjbkpoZVV4cGEyVThZVzU1UGlrZ2UxeHVJQ0JqYjI1emRDQmhZM1IxWVd4TVpXNW5kR2dnUFNCaFkzUjFZV3d1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0JsZUhCbFkzUmxaRXhsYm1kMGFDQTlJR1Y0Y0dWamRHVmtMbXhsYm1kMGFEdGNibHh1SUNCcFppQW9ZV04wZFdGc1RHVnVaM1JvSUNFOUlHVjRjR1ZqZEdWa1RHVnVaM1JvS1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JCY25KaGVYTWdZWEpsSUc5bUlHUnBabVpsY21WdWRDQnNaVzVuZEdnNklHRmpkSFZoYkNCaGNuSmhlU0JzWlc1bmRHZ2dhWE1nSkh0aFkzUjFZV3hNWlc1bmRHaDlJR0FnSzF4dUlDQWdJQ0FnWUdGdVpDQmxlSEJsWTNSbFpDQmhjbkpoZVNCc1pXNW5kR2dnYVhNZ0pIdGxlSEJsWTNSbFpFeGxibWQwYUgxZ0tUdGNiaUFnZlZ4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWVdOMGRXRnNUR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0JwWmlBb1lXTjBkV0ZzVzJsZElHbHVjM1JoYm1ObGIyWWdRWEp5WVhrZ0ppWWdaWGh3WldOMFpXUmJhVjBnYVc1emRHRnVZMlZ2WmlCQmNuSmhlU2xjYmlBZ0lDQWdJR1Y0Y0dWamRFRnljbUY1S0dGamRIVmhiRnRwWFN3Z1pYaHdaV04wWldSYmFWMHBPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tHRmpkSFZoYkZ0cFhTQnBibk4wWVc1alpXOW1JRTlpYW1WamRDQW1KaUJsZUhCbFkzUmxaRnRwWFNCcGJuTjBZVzVqWlc5bUlFOWlhbVZqZENsY2JpQWdJQ0FnSUdWNGNHVmpkRTlpYW1WamRDaGhZM1IxWVd4YmFWMHNJR1Y0Y0dWamRHVmtXMmxkS1R0Y2JpQWdJQ0JsYkhObElHbG1JQ2hoWTNSMVlXeGJhVjBnSVQwZ1pYaHdaV04wWldSYmFWMHBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFVjRjR1ZqZEdWa0lDUjdaWGh3WldOMFpXUmJhVjE5SUdGMElIQnZjMmwwYVc5dUlDUjdhWDBzSUdkdmRDQWtlMkZqZEhWaGJGdHBYWDFnS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaUJFWldacGJtVnpJR0VnZEdWemRDQnpkV2wwWlM0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpZWFJsWjI5eWVTaGpZWFJsWjI5eWVUb2djM1J5YVc1bkxDQjBaWE4wY3pvZ0tDa2dQVDRnZG05cFpDazZJSFp2YVdRZ2UxeHVJQ0JqZFhKeVpXNTBRMkYwWldkdmNua2dQU0JqWVhSbFoyOXllVHRjYmlBZ2RHVnpkSE1vS1R0Y2JuMWNibHh1THlvZ1JHVm1hVzVsY3lCaElHWjFibU4wYVc5dUlIUnZJR0psSUdWNFpXTjFkR1ZrSUdKbFptOXlaU0IwYUdVZ2RHVnpkSE1nYVc0Z2RHaHBjeUJqWVhSbFoyOXllU0JoY21VZ1pYaGxZM1YwWldRdUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZbVZtYjNKbEtHSmxabTl5WlRvZ0tDa2dQVDRnVUhKdmJXbHpaVHgyYjJsa1BpazZJSFp2YVdRZ2UxeHVJQ0JwWmlBb2RHVnpkSE5iWTNWeWNtVnVkRU5oZEdWbmIzSjVYU0E5UFNCMWJtUmxabWx1WldRcFhHNGdJQ0FnZEdWemRITmJZM1Z5Y21WdWRFTmhkR1ZuYjNKNVhTQTlJSHQ5TzF4dUlDQjBaWE4wYzF0amRYSnlaVzUwUTJGMFpXZHZjbmxkTG1KbFptOXlaU0E5SUdKbFptOXlaVHRjYm4xY2JseHVMeW9nUkdWbWFXNWxjeUJoSUdaMWJtTjBhVzl1SUhSdklHSmxJR1Y0WldOMWRHVmtJR0ZtZEdWeUlIUm9aU0IwWlhOMGN5QnBiaUIwYUdseklHTmhkR1ZuYjNKNUlHRnlaU0JsZUdWamRYUmxaQzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaFpuUmxjaWhoWm5SbGNqb2dLQ2tnUFQ0Z1VISnZiV2x6WlR4MmIybGtQaWs2SUhadmFXUWdlMXh1SUNCcFppQW9kR1Z6ZEhOYlkzVnljbVZ1ZEVOaGRHVm5iM0o1WFNBOVBTQjFibVJsWm1sdVpXUXBYRzRnSUNBZ2RHVnpkSE5iWTNWeWNtVnVkRU5oZEdWbmIzSjVYU0E5SUh0OU8xeHVJQ0IwWlhOMGMxdGpkWEp5Wlc1MFEyRjBaV2R2Y25sZExtRm1kR1Z5SUQwZ1lXWjBaWEk3WEc1OVhHNWNibVoxYm1OMGFXOXVJR0ZrWkU1aGJXVnpjR0ZqWlNoek9pQnpkSEpwYm1jc0lHWTZJRVJITGtaMWJtTXBPaUJ6ZEhKcGJtY2dlMXh1SUNCeVpYUjFjbTRnY3k1eVpYQnNZV05sS0c1bGR5QlNaV2RGZUhBb1ppNXVZVzFsTENBbloya25LU3dnWmk1dWNVNWhiV1VwTzF4dWZWeHVYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z2FXNXBkRUYxZEc5VVpYTjBjeWh3WVdOcllXZGxTV1E2SUhOMGNtbHVaeXdnYlc5a2RXeGxQem9nWVc1NUtTQjdYRzRnSUdsbUlDaDNZWE5TWldkcGMzUmxjbVZrVzNCaFkydGhaMlZKWkYwcElISmxkSFZ5Ymp0Y2JpQWdZMjl1YzNRZ2JXOWtkV3hsVkdWemRITWdQU0J0YjJSMWJHVWdQeUJ0YjJSMWJHVXVkR1Z6ZEhNZ09pQjBaWE4wY3p0Y2JpQWdhV1lnS0cxdlpIVnNaVlJsYzNSelcyRjFkRzlVWlhOMGMwTmhkRTVoYldWZElDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0IzWVhOU1pXZHBjM1JsY21Wa1czQmhZMnRoWjJWSlpGMGdQU0IwY25WbE8xeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVJQ0JqYjI1emRDQnRiMlIxYkdWQmRYUnZWR1Z6ZEhNZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnY0dGamEwWjFibU4wYVc5dWN5QTlJR0YzWVdsMElHZHliMnN1WkdGd2FTNW1kVzVqZEdsdmJuTXVabWxzZEdWeUtHQndZV05yWVdkbExtbGtJRDBnWENJa2UzQmhZMnRoWjJWSlpIMWNJbUFwTG14cGMzUW9LVHRjYmlBZ1kyOXVjM1FnY21WbklEMGdibVYzSUZKbFowVjRjQ2d2TGlwY1hDOWNYQzljWEhNcWMydHBjRnM2WEZ4elhTb29MaW9wSkM4cE8xeHVJQ0JtYjNJZ0tHTnZibk4wSUdZZ2IyWWdjR0ZqYTBaMWJtTjBhVzl1Y3lrZ2UxeHVJQ0FnSUdOdmJuTjBJSFJsYzNSeklEMGdaaTV2Y0hScGIyNXpXeWQwWlhOMEoxMDdYRzRnSUNBZ2FXWWdLQ0VvZEdWemRITWdKaVlnUVhKeVlYa3VhWE5CY25KaGVTaDBaWE4wY3lrZ0ppWWdkR1Z6ZEhNdWJHVnVaM1JvS1NrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMFpYTjBjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzJ0cGNGSmxZWE52Ym5NZ1BTQW9kR1Z6ZEhOYmFWMGdZWE1nYzNSeWFXNW5LUzV0WVhSamFDaHlaV2NwTzF4dUlDQWdJQ0FnYkdWMElITnJhWEJTWldGemIyNDdYRzRnSUNBZ0lDQnBaaUFvYzJ0cGNGSmxZWE52Ym5NZ0ppWWdjMnRwY0ZKbFlYTnZibk0vTG14bGJtZDBhQ0ErSURFcElITnJhWEJTWldGemIyNGdQU0J6YTJsd1VtVmhjMjl1YzFzeFhUdGNiaUFnSUNBZ0lHMXZaSFZzWlVGMWRHOVVaWE4wY3k1d2RYTm9LRzVsZHlCVVpYTjBLR0YxZEc5VVpYTjBjME5oZEU1aGJXVXNJSFJsYzNSekxteGxibWQwYUNBOVBUMGdNU0EvSUdZdWJtRnRaU0E2SUdBa2UyWXVibUZ0WlgwZ0pIdHBJQ3NnTVgxZ0xDQmhjM2x1WXlBb0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEpsY3lBOUlHRjNZV2wwSUdkeWIyc3VablZ1WTNScGIyNXpMbVYyWVd3b1lXUmtUbUZ0WlhOd1lXTmxLSFJsYzNSelcybGRMQ0JtS1NrN1hHNGdJQ0FnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnVieTEwYUhKdmR5MXNhWFJsY21Gc1hHNGdJQ0FnSUNBZ0lHbG1JQ2h5WlhNZ0lUMDlJSFJ5ZFdVcElIUm9jbTkzSUdCR1lXbHNaV1E2SUNSN2RHVnpkSE5iYVYxOVlEdGNiaUFnSUNBZ0lIMHNJSHR6YTJsd1VtVmhjMjl1T2lCemEybHdVbVZoYzI5dWZTa3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQjNZWE5TWldkcGMzUmxjbVZrVzNCaFkydGhaMlZKWkYwZ1BTQjBjblZsTzF4dUlDQnBaaUFvSVcxdlpIVnNaVUYxZEc5VVpYTjBjeTVzWlc1bmRHZ3BJSEpsZEhWeWJqdGNiaUFnYlc5a2RXeGxWR1Z6ZEhOYllYVjBiMVJsYzNSelEyRjBUbUZ0WlYwZ1BTQjdkR1Z6ZEhNNklHMXZaSFZzWlVGMWRHOVVaWE4wYzMwN1hHNTlYRzVjYm1WNGNHOXlkQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQnlkVzVVWlhOMGN5aHZjSFJwYjI1elB6b2dlMk5oZEdWbmIzSjVQem9nYzNSeWFXNW5MQ0IwWlhOMFB6b2djM1J5YVc1bkxDQjBaWE4wUTI5dWRHVjRkRDg2SUZSbGMzUkRiMjUwWlhoMGZTa2dlMXh1SUNCamIyNXpkQ0J3WVdOcllXZGxYeUE5SUdkeWIyc3VablZ1WTNScGIyNXpMbWRsZEVOMWNuSmxiblJEWVd4c0tDay9MbVoxYm1NL0xuQmhZMnRoWjJVN1hHNGdJR0YzWVdsMElHbHVhWFJCZFhSdlZHVnpkSE1vY0dGamEyRm5aVjh1YVdRcE8xeHVJQ0JqYjI1emRDQnlaWE4xYkhSek9pQjdJR05oZEdWbmIzSjVQem9nYzNSeWFXNW5MQ0J1WVcxbFB6b2djM1J5YVc1bkxDQnpkV05qWlhOek9pQmliMjlzWldGdUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2REb2djM1J5YVc1bkxDQnRjem9nYm5WdFltVnlMQ0J6YTJsd2NHVmtPaUJpYjI5c1pXRnVJSDFiWFNBOUlGdGRPMXh1SUNCamIyNXpiMnhsTG14dlp5aGdVblZ1Ym1sdVp5QjBaWE4wYzJBcE8xeHVJQ0J2Y0hScGIyNXpJRDgvUFNCN2ZUdGNiaUFnYjNCMGFXOXVjeUV1ZEdWemRFTnZiblJsZUhRZ1B6ODlJRzVsZHlCVVpYTjBRMjl1ZEdWNGRDZ3BPMXh1SUNCbmNtOXJMbk5vWld4c0xteGhjM1JGY25KdmNpQTlJQ2NuTzF4dUlDQm1iM0lnS0dOdmJuTjBJRnRyWlhrc0lIWmhiSFZsWFNCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3loMFpYTjBjeWtwSUh0Y2JpQWdJQ0JwWmlBb2IzQjBhVzl1Y3o4dVkyRjBaV2R2Y25rZ0lUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lXdGxlUzUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29iM0IwYVc5dWN6OHVZMkYwWldkdmNua3VkRzlNYjNkbGNrTmhjMlVvS1NrcFhHNGdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emIyeGxMbXh2WnloZ1UzUmhjblJsWkNBa2UydGxlWDBnWTJGMFpXZHZjbmxnS1R0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2FXWWdLSFpoYkhWbExtSmxabTl5WlNsY2JpQWdJQ0FnSUNBZ1lYZGhhWFFnZG1Gc2RXVXVZbVZtYjNKbEtDazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb2VEb2dZVzU1S1NCN1hHNGdJQ0FnSUNCMllXeDFaUzVpWldadmNtVlRkR0YwZFhNZ1BTQjRMblJ2VTNSeWFXNW5LQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUhRZ1BTQjJZV3gxWlM1MFpYTjBjeUEvUHlCYlhUdGNiaUFnSUNCamIyNXpkQ0J5WlhNZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFF1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCeVpYTXVjSFZ6YUNoaGQyRnBkQ0JsZUdWalZHVnpkQ2gwVzJsZExDQnZjSFJwYjI1elB5NTBaWE4wS1NrN1hHNGdJQ0FnWTI5dWMzUWdaR0YwWVNBOUlDaGhkMkZwZENCUWNtOXRhWE5sTG1Gc2JDaHlaWE1wS1M1bWFXeDBaWElvS0dRcElEMCtJR1F1Y21WemRXeDBJQ0U5SUNkemEybHdjR1ZrSnlrN1hHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lHbG1JQ2gyWVd4MVpTNWhablJsY2lsY2JpQWdJQ0FnSUNBZ1lYZGhhWFFnZG1Gc2RXVXVZV1owWlhJb0tUdGNiaUFnSUNCOUlHTmhkR05vSUNoNE9pQmhibmtwSUh0Y2JpQWdJQ0FnSUhaaGJIVmxMbUZtZEdWeVUzUmhkSFZ6SUQwZ2VDNTBiMU4wY21sdVp5Z3BPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kbUZzZFdVdVlXWjBaWEpUZEdGMGRYTXBYRzRnSUNBZ0lDQmtZWFJoTG5CMWMyZ29lMk5oZEdWbmIzSjVPaUJyWlhrc0lHNWhiV1U2SUNkcGJtbDBKeXdnY21WemRXeDBPaUIyWVd4MVpTNWhablJsY2xOMFlYUjFjeXdnYzNWalkyVnpjem9nWm1Gc2MyVXNJRzF6T2lBd0xDQnphMmx3Y0dWa09pQm1ZV3h6WlgwcE8xeHVJQ0FnSUdsbUlDaDJZV3gxWlM1aVpXWnZjbVZUZEdGMGRYTXBYRzRnSUNBZ0lDQmtZWFJoTG5CMWMyZ29lMk5oZEdWbmIzSjVPaUJyWlhrc0lHNWhiV1U2SUNkcGJtbDBKeXdnY21WemRXeDBPaUIyWVd4MVpTNWlaV1p2Y21WVGRHRjBkWE1zSUhOMVkyTmxjM002SUdaaGJITmxMQ0J0Y3pvZ01Dd2djMnRwY0hCbFpEb2dabUZzYzJWOUtUdGNiaUFnSUNCeVpYTjFiSFJ6TG5CMWMyZ29MaTR1WkdGMFlTazdYRzRnSUgxY2JpQWdhV1lnS0c5d2RHbHZibk11ZEdWemRFTnZiblJsZUhRdVkyRjBZMmhWYm1oaGJtUnNaV1FwSUh0Y2JpQWdJQ0JoZDJGcGRDQmtaV3hoZVNneE1EQXdLVHRjYmlBZ0lDQnBaaUFvWjNKdmF5NXphR1ZzYkM1c1lYTjBSWEp5YjNJdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdjbVZ6ZFd4MGN5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ1kyRjBaV2R2Y25rNklDZFZibWhoYm1Sc1pXUWdaWGhqWlhCMGFXOXVjeWNzWEc0Z0lDQWdJQ0FnSUc1aGJXVTZJQ2RsZUdObGNIUnBiMjV6Snl4Y2JpQWdJQ0FnSUNBZ2NtVnpkV3gwT2lCbmNtOXJMbk5vWld4c0xteGhjM1JGY25KdmNpd2djM1ZqWTJWemN6b2dabUZzYzJVc0lHMXpPaUF3TENCemEybHdjR1ZrT2lCbVlXeHpaVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJR2xtSUNodmNIUnBiMjV6TG5SbGMzUkRiMjUwWlhoMExuSmxjRzl5ZENrZ2UxeHVJQ0FnSUdOdmJuTjBJR3h2WjJkbGNpQTlJRzVsZHlCRVJ5NU1iMmRuWlhJb0tUdGNiaUFnSUNCamIyNXpkQ0J6ZFdOalpYTnpablZzSUQwZ2NtVnpkV3gwY3k1bWFXeDBaWElvS0hJcElEMCtJSEl1YzNWalkyVnpjeWt1YkdWdVozUm9PMXh1SUNBZ0lHTnZibk4wSUhOcmFYQndaV1FnUFNCeVpYTjFiSFJ6TG1acGJIUmxjaWdvY2lrZ1BUNGdjaTV6YTJsd2NHVmtLUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnWm1GcGJHVmtJRDBnY21WemRXeDBjeTVtYVd4MFpYSW9LSElwSUQwK0lDRnlMbk4xWTJObGMzTXBPMXh1SUNBZ0lHTnZibk4wSUdSbGMyTnlhWEIwYVc5dUlEMGdKMUJoWTJ0aFoyVWdRSEJoWTJ0aFoyVWdkR1Z6ZEdWa09pQkFjM1ZqWTJWemMyWjFiQ0J6ZFdOalpYTnpablZzTENCQWMydHBjSEJsWkNCemEybHdjR1ZrTENCQVptRnBiR1ZrSUdaaGFXeGxaQ0IwWlhOMGN5YzdYRzRnSUNBZ1kyOXVjM1FnY0dGeVlXMXpJRDBnZTF4dUlDQWdJQ0FnYzNWalkyVnpjMloxYkRvZ2MzVmpZMlZ6YzJaMWJDeGNiaUFnSUNBZ0lITnJhWEJ3WldRNklITnJhWEJ3WldRc1hHNGdJQ0FnSUNCbVlXbHNaV1E2SUdaaGFXeGxaQzVzWlc1bmRHZ3NYRzRnSUNBZ0lDQndZV05yWVdkbE9pQndZV05yWVdkbFgxeHVJQ0FnSUgwN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCeUlHOW1JR1poYVd4bFpDa2dUMkpxWldOMExtRnpjMmxuYmlod1lYSmhiWE1zSUh0YllDUjdjaTVqWVhSbFoyOXllWDBnZkNBa2UzSXVibUZ0WlgxZ1hUb2djaTV5WlhOMWJIUjlLVHRjYmlBZ0lDQnNiMmRuWlhJdWJHOW5LR1JsYzJOeWFYQjBhVzl1TENCd1lYSmhiWE1zSUNkd1lXTnJZV2RsTFhSbGMzUmxaQ2NwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUnpPMXh1ZlZ4dVhHNWhjM2x1WXlCbWRXNWpkR2x2YmlCbGVHVmpWR1Z6ZENoME9pQlVaWE4wTENCd2NtVmthV05oZEdVNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpDa2dlMXh1SUNCc1pYUWdjam9nZXlCallYUmxaMjl5ZVQ4NklITjBjbWx1Wnl3Z2JtRnRaVDg2SUhOMGNtbHVaeXdnYzNWalkyVnpjem9nWW05dmJHVmhiaXdnY21WemRXeDBPaUJ6ZEhKcGJtY3NJRzF6T2lCdWRXMWlaWElzSUhOcmFYQndaV1E2SUdKdmIyeGxZVzRnZlR0Y2JpQWdZMjl1YzNRZ1ptbHNkR1Z5SUQwZ2NISmxaR2xqWVhSbElDRTlJSFZ1WkdWbWFXNWxaQ0FtSmlBb0lYUXVibUZ0WlM1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvY0hKbFpHbGpZWFJsTG5SdlRHOTNaWEpEWVhObEtDa3BLVHRjYmlBZ1kyOXVjM1FnYzJ0cGNDQTlJSFF1YjNCMGFXOXVjejh1YzJ0cGNGSmxZWE52YmlCOGZDQm1hV3gwWlhJN1hHNGdJR052Ym5OMElITnJhWEJTWldGemIyNGdQU0JtYVd4MFpYSWdQeUFuYzJ0cGNIQmxaQ2NnT2lCMExtOXdkR2x2Ym5NL0xuTnJhWEJTWldGemIyNDdYRzRnSUdsbUlDZ2hjMnRwY0NsY2JpQWdJQ0JqYjI1emIyeGxMbXh2WnloZ1UzUmhjblJsWkNBa2UzUXVZMkYwWldkdmNubDlJQ1I3ZEM1dVlXMWxmV0FwTzF4dUlDQmpiMjV6ZENCemRHRnlkQ0E5SUc1bGR5QkVZWFJsS0NrN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnYVdZZ0tITnJhWEFwWEc0Z0lDQWdJQ0J5SUQwZ2UzTjFZMk5sYzNNNklIUnlkV1VzSUhKbGMzVnNkRG9nYzJ0cGNGSmxZWE52YmlFc0lHMXpPaUF3TENCemEybHdjR1ZrT2lCMGNuVmxmVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0J5SUQwZ2UzTjFZMk5sYzNNNklIUnlkV1VzSUhKbGMzVnNkRG9nWVhkaGFYUWdkQzUwWlhOMEtDa2dQejhnSjA5TEp5d2diWE02SURBc0lITnJhWEJ3WldRNklHWmhiSE5sZlR0Y2JpQWdmU0JqWVhSamFDQW9lRG9nWVc1NUtTQjdYRzRnSUNBZ2NpQTlJSHR6ZFdOalpYTnpPaUJtWVd4elpTd2djbVZ6ZFd4ME9pQjRMblJ2VTNSeWFXNW5LQ2tzSUcxek9pQXdMQ0J6YTJsd2NHVmtPaUJtWVd4elpYMDdYRzRnSUgxY2JpQWdZMjl1YzNRZ2MzUnZjQ0E5SUc1bGR5QkVZWFJsS0NrN1hHNGdJQzh2SUVCMGN5MXBaMjV2Y21WY2JpQWdjaTV0Y3lBOUlITjBiM0FnTFNCemRHRnlkRHRjYmlBZ2FXWWdLQ0Z6YTJsd0tWeHVJQ0FnSUdOdmJuTnZiR1V1Ykc5bktHQkdhVzVwYzJobFpDQWtlM1F1WTJGMFpXZHZjbmw5SUNSN2RDNXVZVzFsZlNCbWIzSWdKSHR5TG0xemZTQnRjMkFwTzF4dUlDQnlMbU5oZEdWbmIzSjVJRDBnZEM1allYUmxaMjl5ZVR0Y2JpQWdjaTV1WVcxbElEMGdkQzV1WVcxbE8xeHVJQ0J5WlhSMWNtNGdjanRjYm4xY2JseHVMeW9nVjJGcGRITWdXMjF6WFNCdGFXeHNhWE5sWTI5dVpITWdLaTljYm1WNGNHOXlkQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQmtaV3hoZVNodGN6b2diblZ0WW1WeUtTQjdYRzRnSUdGM1lXbDBJRzVsZHlCUWNtOXRhWE5sS0NoeUtTQTlQaUJ6WlhSVWFXMWxiM1YwS0hJc0lHMXpLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCaGQyRnBkRU5vWldOcktHTm9aV05yU0dGdVpHeGxjam9nS0NrZ1BUNGdZbTl2YkdWaGJpeGNiaUFnWlhKeWIzSTZJSE4wY21sdVp5QTlJQ2RVYVcxbGIzVjBJR1Y0WTJWbFpHVmtKeXdnZDJGcGREb2diblZ0WW1WeUlEMGdOVEF3TENCcGJuUmxjblpoYkRvZ2JuVnRZbVZ5SUQwZ05UQXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0NoeVpYTnZiSFpsTENCeVpXcGxZM1FwSUQwK0lIdGNiaUFnSUNCelpYUlVhVzFsYjNWMEtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUdOc1pXRnlTVzUwWlhKMllXd29hVzUwWlhKMllXeEpaQ2s3WEc0Z0lDQWdJQ0J5WldwbFkzUW9ibVYzSUVWeWNtOXlLR1Z5Y205eUtTazdYRzRnSUNBZ2ZTd2dkMkZwZENrN1hHNGdJQ0FnTHk4Z1FIUnpMV2xuYm05eVpWeHVJQ0FnSUdOdmJuTjBJR2x1ZEdWeWRtRnNTV1E2SUZScGJXVnZkWFFnUFNCelpYUkpiblJsY25aaGJDZ29LU0E5UGlCN1hHNGdJQ0FnSUNCcFppQW9ZMmhsWTJ0SVlXNWtiR1Z5S0NrcElIdGNiaUFnSUNBZ0lDQWdZMnhsWVhKSmJuUmxjblpoYkNocGJuUmxjblpoYkVsa0tUdGNiaUFnSUNBZ0lDQWdjbVZ6YjJ4MlpTZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHNJR2x1ZEdWeWRtRnNLVHRjYmlBZ2ZTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwUnBZV3h2WjFCeVpYTmxiblFvWkdsaGJHOW5WR2wwYkdVNklITjBjbWx1WnlrNklHSnZiMnhsWVc0Z2UxeHVJQ0JqYjI1emRDQmthV0ZzYjJkeklEMGdSRWN1UkdsaGJHOW5MbWRsZEU5d1pXNUVhV0ZzYjJkektDazdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHbGhiRzluY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHbG1JQ2hrYVdGc2IyZHpXMmxkTG5ScGRHeGxJRDA5SUdScFlXeHZaMVJwZEd4bEtWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHWmhiSE5sTzF4dWZWeHVYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z2RHVnpkRlpwWlhkbGNpaDJPaUJ6ZEhKcGJtY3NJR1JtT2lCRVJ5NUVZWFJoUm5KaGJXVXNJR1JsZEdWamRGTmxiV0Z1ZEdsalZIbHdaWE02SUdKdmIyeGxZVzRnUFNCbVlXeHpaU2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNCcFppQW9aR1YwWldOMFUyVnRZVzUwYVdOVWVYQmxjeWtnWVhkaGFYUWdaM0p2YXk1a1lYUmhMbVJsZEdWamRGTmxiV0Z1ZEdsalZIbHdaWE1vWkdZcE8xeHVJQ0JqYjI1emRDQjBkaUE5SUdkeWIyc3VjMmhsYkd3dVlXUmtWR0ZpYkdWV2FXVjNLR1JtS1R0Y2JpQWdZMjl1YzNRZ2RtbGxkMlZ5VG1GdFpTQTlJR0JiYm1GdFpUMTJhV1YzWlhJdEpIdDJMbkpsY0d4aFkyVW9MMXhjY3lzdlp5d2dKeTBuS1gwZ2FWMWdPMXh1SUNCamIyNXpkQ0J6Wld4bFkzUnZjaUE5SUdBa2UzWnBaWGRsY2s1aGJXVjlJR05oYm5aaGN5d2tlM1pwWlhkbGNrNWhiV1Y5SUhOMlp5d2tlM1pwWlhkbGNrNWhiV1Y5SUdsdFp5eGNiaUFnSUNBa2UzWnBaWGRsY2s1aGJXVjlJR2x1Y0hWMExDUjdkbWxsZDJWeVRtRnRaWDBnYURFc0pIdDJhV1YzWlhKT1lXMWxmU0JoWUR0Y2JpQWdZMjl1YzNRZ2NtVnpJRDBnVzEwN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnYkdWMElIWnBaWGRsY2lBOUlIUjJMbUZrWkZacFpYZGxjaWgyS1R0Y2JpQWdJQ0JoZDJGcGRDQmhkMkZwZEVOb1pXTnJLQ2dwSUQwK0lHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvYzJWc1pXTjBiM0lwSUNFOVBTQnVkV3hzTEZ4dUlDQWdJQ0FnSjJOaGJtNXZkQ0JzYjJGa0lIWnBaWGRsY2ljc0lETXdNREFwTzF4dUlDQWdJSEpsY3k1d2RYTm9LRUZ5Y21GNUxtWnliMjBvZEhZdWRtbGxkMlZ5Y3lrdWJHVnVaM1JvS1R0Y2JpQWdJQ0JCY25KaGVTNW1jbTl0S0dSbUxuSnZkeWd3S1M1alpXeHNjeWt1Wm05eVJXRmphQ2dvWXlrZ1BUNGdZeTUyWVd4MVpTQTlJRzUxYkd3cE8xeHVJQ0FnSUdSbUxuSnZkM011YzJWc1pXTjBLQ2h5YjNjcElEMCtJSEp2ZHk1cFpIZ2dQaUF4SUNZbUlISnZkeTVwWkhnZ1BDQTNLVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTnpzZ2FTQThJREV5T3lCcEt5c3BJR1JtTG1acGJIUmxjaTV6WlhRb2FTd2dabUZzYzJVcE8xeHVJQ0FnSUdSbUxtTjFjbkpsYm5SU2IzZEpaSGdnUFNBeE8xeHVJQ0FnSUdOdmJuTjBJSEJ5YjNCeklEMGdkbWxsZDJWeUxtZGxkRTl3ZEdsdmJuTW9kSEoxWlNrdWJHOXZhenRjYmlBZ0lDQmpiMjV6ZENCdVpYZFFjbTl3Y3pvZ1VtVmpiM0prUEhOMGNtbHVaeXdnWW05dmJHVmhiajRnUFNCN2ZUdGNiaUFnSUNCUFltcGxZM1F1YTJWNWN5aHdjbTl3Y3lrdVptbHNkR1Z5S0NocktTQTlQaUIwZVhCbGIyWWdjSEp2Y0hOYmExMGdQVDA5SUNkaWIyOXNaV0Z1SnlrdVptOXlSV0ZqYUNnb2F5a2dQVDRnYm1WM1VISnZjSE5iYTEwZ1BTQWhjSEp2Y0hOYmExMHBPMXh1SUNBZ0lIWnBaWGRsY2k1elpYUlBjSFJwYjI1ektHNWxkMUJ5YjNCektUdGNiaUFnSUNCaGQyRnBkQ0JrWld4aGVTZ3lOVEFwTzF4dUlDQWdJR052Ym5OMElHeGhlVzkxZENBOUlIUjJMbk5oZG1WTVlYbHZkWFFvS1R0Y2JpQWdJQ0JqYjI1emRDQnZiR1JRY205d2N5QTlJSFpwWlhkbGNpNW5aWFJQY0hScGIyNXpLQ2t1Ykc5dmF6dGNiaUFnSUNCMGRpNXlaWE5sZEV4aGVXOTFkQ2dwTzF4dUlDQWdJSEpsY3k1d2RYTm9LRUZ5Y21GNUxtWnliMjBvZEhZdWRtbGxkMlZ5Y3lrdWJHVnVaM1JvS1R0Y2JpQWdJQ0IwZGk1c2IyRmtUR0Y1YjNWMEtHeGhlVzkxZENrN1hHNGdJQ0FnWVhkaGFYUWdZWGRoYVhSRGFHVmpheWdvS1NBOVBpQmtiMk4xYldWdWRDNXhkV1Z5ZVZObGJHVmpkRzl5S0hObGJHVmpkRzl5S1NBaFBUMGdiblZzYkN4Y2JpQWdJQ0FnSUNkallXNXViM1FnYkc5aFpDQjJhV1YzWlhJZ1puSnZiU0JzWVhsdmRYUW5MQ0F6TURBd0tUdGNiaUFnSUNCaGQyRnBkQ0JrWld4aGVTZ3lOVEFwTzF4dUlDQWdJSEpsY3k1d2RYTm9LRUZ5Y21GNUxtWnliMjBvZEhZdWRtbGxkMlZ5Y3lrdWJHVnVaM1JvS1R0Y2JpQWdJQ0IyYVdWM1pYSWdQU0JCY25KaGVTNW1jbTl0S0hSMkxuWnBaWGRsY25NcExtWnBibVFvS0hZcElEMCtJSFl1ZEhsd1pTQWhQVDBnSjBkeWFXUW5LU0U3WEc0Z0lDQWdaWGh3WldOMFFYSnlZWGtvY21WekxDQmJNaXdnTVN3Z01sMHBPMXh1SUNBZ0lHVjRjR1ZqZENoS1UwOU9Mbk4wY21sdVoybG1lU2gyYVdWM1pYSXVaMlYwVDNCMGFXOXVjeWdwTG14dmIyc3BMQ0JLVTA5T0xuTjBjbWx1WjJsbWVTaHZiR1JRY205d2N5a3BPMXh1SUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUhSMkxtTnNiM05sS0NrN1hHNGdJQ0FnWjNKdmF5NXphR1ZzYkM1amJHOXpaVlJoWW14bEtHUm1LVHRjYmlBZ2ZWeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdGVzdCc7XG4vKiogRGVtbyBzY3JpcHQgY2xhc3MuIENvdWxkIGJlIHVzZWQgZm9yIGNyZWF0aW5nIGRlbW8gc2NyaXB0cyB0byBzaG93IHRoZSBwbGF0Zm9ybSBjYXBhYmlsaXRpZXMgKi9cbmV4cG9ydCBjbGFzcyBEZW1vU2NyaXB0IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBkZXNjcmlwdGlvbiwgaXNBdXRvbWF0aWMgPSBmYWxzZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMubmFtZSA9ICcnO1xuICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuX2lzQXV0b21hdGljID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2F1dG9TdGFydEZpcnN0U3RlcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jdXJyZW50U3RlcCA9IDA7XG4gICAgICAgIHRoaXMuX2lzU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0NhbmNlbGxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc1N0ZXBQcm9jZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm9vdCA9IHVpLmRpdihbXSwgeyBpZDogJ2RlbW8tc2NyaXB0JyxcbiAgICAgICAgICAgIGNsYXNzZXM6ICd0dXRvcmlhbHMtcm9vdCB0dXRvcmlhbHMtdHJhY2sgZGVtby1hcHAtc2NyaXB0JyB9KTtcbiAgICAgICAgdGhpcy5fc3RlcHMgPSBbXTtcbiAgICAgICAgdGhpcy5fbWFpbkhlYWRlciA9IHVpLnBhbmVsKFtdLCAndHV0b3JpYWxzLW1haW4taGVhZGVyJyk7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IHVpLmgyKCcnKTtcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2ID0gdWkuZGl2SChbXSwgJ3R1dG9yaWFscy1yb290LWhlYWRlcicpO1xuICAgICAgICB0aGlzLl9zdG9wU3RhcnRCdG4gPSB1aS5idXR0b24odWkuaWNvbkZBKCdwYXVzZScpLCAoKSA9PiB0aGlzLl9jaGFuZ2VTdG9wU3RhdGUoKSwgJ1BsYXkgLyBwYXVzZScpO1xuICAgICAgICB0aGlzLl9yZXN0YXJ0QnRuID0gdWkuYnV0dG9uKHVpLmljb25GQSgncmVkbycpLCAoKSA9PiB0aGlzLl9yZXN0YXJ0U2NyaXB0KCksICdSZXN0YXJ0Jyk7XG4gICAgICAgIHRoaXMuX25leHRTdGVwQnRuID0gdWkuYnV0dG9uKHVpLmljb25GQSgncGxheScpLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzU3RlcFByb2Nlc3NlZClcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0U3RlcCgpO1xuICAgICAgICB9LCAnTmV4dCBzdGVwJyk7XG4gICAgICAgIHRoaXMuX2FjdGl2aXR5ID0gdWkucGFuZWwoW10sICd0dXRvcmlhbHMtcm9vdC1kZXNjcmlwdGlvbicpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc0RpdiA9IHVpLmRpdlYoW10sICd0dXRvcmlhbHMtcm9vdC1wcm9ncmVzcycpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHVpLmVsZW1lbnQoJ3Byb2dyZXNzJyk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzU3RlcHMgPSB1aS5kaXZUZXh0KCcnKTtcbiAgICAgICAgdGhpcy5fY2xvc2VCdG4gPSB1aS5idXR0b24odWkuaWNvbkZBKCdjaGV2cm9uLWxlZnQnKSwgKCkgPT4gdGhpcy5fY2xvc2VEb2NrKCksICdCYWNrIHRvIGRlbW8nKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLl9pc0F1dG9tYXRpYyA9IGlzQXV0b21hdGljO1xuICAgICAgICB0aGlzLl9hdXRvU3RhcnRGaXJzdFN0ZXAgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXV0b1N0YXJ0Rmlyc3RTdGVwKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubWF4ID0gMDtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MudmFsdWUgPSAxO1xuICAgICAgICBEZW1vU2NyaXB0LmN1cnJlbnRPYmplY3QgPSB0aGlzO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBkZW1vIHNjcmlwdCBzdGVwcyAqL1xuICAgIGdldCBzdGVwcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBzO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYW1vdW50IG9mIGRlbW8gc2NyaXB0IHN0ZXBzICovXG4gICAgZ2V0IHN0ZXBOdW1iZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwcy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKiBBZGRzIHNjcmlwdCBoZWFkZXIgKi9cbiAgICBfYWRkSGVhZGVyKCkge1xuICAgICAgICB0aGlzLl9jcmVhdGVIZWFkZXJEaXYoKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlUHJvZ3Jlc3NEaXYoKTtcbiAgICAgICAgdGhpcy5fbWFpbkhlYWRlci5hcHBlbmQodGhpcy5faGVhZGVyRGl2LCB0aGlzLl9wcm9ncmVzc0Rpdik7XG4gICAgfVxuICAgIC8qKiBDcmVhdGVzIHNjcmlwdCBoZWFkZXIgZGl2ICovXG4gICAgX2NyZWF0ZUhlYWRlckRpdigpIHtcbiAgICAgICAgdGhpcy5faGVhZGVyLmlubmVyVGV4dCA9IHRoaXMubmFtZTtcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2LmFwcGVuZCh0aGlzLl9jbG9zZUJ0bik7XG4gICAgICAgIHRoaXMuX2hlYWRlckRpdi5hcHBlbmQodGhpcy5faGVhZGVyKTtcbiAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4uZmlyc3RDaGlsZC5jbGFzc05hbWUgPSAnZ3Jvay1pY29uIGZhcyBmYS1wbGF5JztcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2LmFwcGVuZCh0aGlzLl9pc0F1dG9tYXRpYyA/IHRoaXMuX3N0b3BTdGFydEJ0biA6IHRoaXMuX25leHRTdGVwQnRuKTtcbiAgICB9XG4gICAgLyoqIENyZWF0ZXMgc2NyaXB0IHByb2dyZXNzIGRpdiAqL1xuICAgIF9jcmVhdGVQcm9ncmVzc0RpdigpIHtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubWF4ID0gdGhpcy5zdGVwTnVtYmVyO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc0Rpdi5hcHBlbmQodGhpcy5fcHJvZ3Jlc3MpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc1N0ZXBzID0gdWkuZGl2VGV4dChgU3RlcDogJHt0aGlzLl9wcm9ncmVzcy52YWx1ZX0gb2YgJHt0aGlzLnN0ZXBOdW1iZXJ9YCk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzRGl2LmFwcGVuZCh0aGlzLl9wcm9ncmVzc1N0ZXBzKTtcbiAgICB9XG4gICAgLyoqIEFkZHMgZGVzY3JpcHRpb24gb2YgdGhlIHNjcmlwdCAqL1xuICAgIF9hZGREZXNjcmlwdGlvbigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLl9hY3Rpdml0eS5hcHBlbmQodWkuZGl2KHRoaXMuZGVzY3JpcHRpb24sICd0dXRvcmlhbHMtcm9vdC1kZXNjcmlwdGlvbicpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXBOdW1iZXI7IGkrKykge1xuICAgICAgICAgICAgbGV0IGluc3RydWN0aW9uSW5kaWNhdG9yID0gdWkuaWNvbkZBKCdjbG9jaycpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uSW5kaWNhdG9yID0gdWkuaWNvbkZBKCdwbGF5JywgKCkgPT4gdGhpcy5fbmV4dFN0ZXAoKSwgJ05leHQgc3RlcCcpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbkluZGljYXRvci5jbGFzc05hbWUgPSAnZ3Jvay1pY29uIGZhcyBmYS1wbGF5JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbnN0cnVjdGlvbkRpdiA9IHVpLmRpdih0aGlzLl9zdGVwc1tpXS5uYW1lLCAnZ3Jvay10dXRvcmlhbC1lbnRyeS1pbnN0cnVjdGlvbicpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0ZXBEZXNjcmlwdGlvbiA9IHVpLmRpdigoX2EgPSB0aGlzLl9zdGVwc1tpXS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVzY3JpcHRpb24sICdncm9rLXR1dG9yaWFsLXN0ZXAtZGVzY3JpcHRpb24gaGlkZGVuJyk7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHVpLmRpdkgoW1xuICAgICAgICAgICAgICAgIGluc3RydWN0aW9uSW5kaWNhdG9yLFxuICAgICAgICAgICAgICAgIGluc3RydWN0aW9uRGl2LFxuICAgICAgICAgICAgXSwgJ2dyb2stdHV0b3JpYWwtZW50cnknKTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2aXR5LmFwcGVuZChlbnRyeSwgY3VycmVudFN0ZXBEZXNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEluaXRpYWxpemVzIHRoZSByb290IG9mIHRoZSBkZW1vIHNjcmlwdCAqL1xuICAgIF9pbml0Um9vdCgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGdyb2suc2hlbGwud2luZG93cy5zaG93Q29udGV4dFBhbmVsID0gdHJ1ZTtcbiAgICAgICAgZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dIZWxwID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNjcmlwdERvY2tOb2RlID0gQXJyYXkuZnJvbShncm9rLnNoZWxsLmRvY2tNYW5hZ2VyLnJvb3ROb2RlLmNoaWxkcmVuKVswXTtcbiAgICAgICAgdGhpcy5fbm9kZSA9IGdyb2suc2hlbGwuZG9ja01hbmFnZXIuZG9jayh0aGlzLl9yb290LCBERy5ET0NLX1RZUEUuRklMTCwgc2NyaXB0RG9ja05vZGUsICcnKTtcbiAgICAgICAgaWYgKChfYiA9IChfYSA9IHNjcmlwdERvY2tOb2RlLnBhcmVudC5jb250YWluZXIuY29udGFpbmVyRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhc3RFbGVtZW50Q2hpbGQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jbGFzc0xpc3QuY29udGFpbnMoJ3RhYi1oYW5kbGUtbGlzdC1jb250YWluZXInKSlcbiAgICAgICAgICAgIChfYyA9IHNjcmlwdERvY2tOb2RlLnBhcmVudC5jb250YWluZXIuY29udGFpbmVyRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxhc3RFbGVtZW50Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuX25vZGUuY29udGFpbmVyLmNvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHV0b3JpYWxzLWRlbW8tc2NyaXB0LWNvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLl9hZGRIZWFkZXIoKTtcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmQodGhpcy5fbWFpbkhlYWRlcik7XG4gICAgICAgIHRoaXMuX2FkZERlc2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kKHRoaXMuX2FjdGl2aXR5KTtcbiAgICB9XG4gICAgLyoqIFByb2Nlc3NlcyBuZXh0IHN0ZXAgKi9cbiAgICBfbmV4dFN0ZXAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1N0ZXBQcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRTdGVwQnRuLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4uZmlyc3RDaGlsZC5jbGFzc0xpc3QuYWRkKCdmYS1kaXNhYmxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9hY3Rpdml0eS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdncm9rLXR1dG9yaWFsLWVudHJ5JylbdGhpcy5fY3VycmVudFN0ZXBdO1xuICAgICAgICAgICAgY29uc3QgZW50cnlJbmRpY2F0b3IgPSB0aGlzLl9hY3Rpdml0eS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdncm9rLWljb24nKVt0aGlzLl9jdXJyZW50U3RlcF07XG4gICAgICAgICAgICBjb25zdCBlbnRyeUluc3RydWN0aW9uID0gdGhpcy5fYWN0aXZpdHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3Jvay10dXRvcmlhbC1zdGVwLWRlc2NyaXB0aW9uJylbdGhpcy5fY3VycmVudFN0ZXBdO1xuICAgICAgICAgICAgZW50cnlJbmRpY2F0b3IuY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXIgZmEtc3Bpbm5lci10aGlyZCBmYS1zcGluJztcbiAgICAgICAgICAgIGVudHJ5SW5zdHJ1Y3Rpb24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICBlbnRyeUluc3RydWN0aW9uLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gZW50cnk7XG4gICAgICAgICAgICBjb25zdCBzdGVwRGVsYXkgPSAoKF9hID0gdGhpcy5fc3RlcHNbdGhpcy5fY3VycmVudFN0ZXBdLm9wdGlvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWxheSkgP1xuICAgICAgICAgICAgICAgIChfYiA9IHRoaXMuX3N0ZXBzW3RoaXMuX2N1cnJlbnRTdGVwXS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGVsYXkgOiAyMDAwO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5fc3RlcHNbdGhpcy5fY3VycmVudFN0ZXBdLmZ1bmMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvKHRoaXMuX3Jvb3QsIGN1cnJlbnRTdGVwLm9mZnNldFRvcCAtIHRoaXMuX21haW5IZWFkZXIub2Zmc2V0SGVpZ2h0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHRoaXMuX2NvdW50ZG93bihlbnRyeSwgZW50cnlJbmRpY2F0b3IsIHN0ZXBEZWxheSk7XG4gICAgICAgICAgICAgICAgeWllbGQgZGVsYXkoc3RlcERlbGF5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld0VudHJ5SW5kaWNhdG9yID0gdWkuaWNvbkZBKCdjaGVjaycpO1xuICAgICAgICAgICAgZW50cnlJbmRpY2F0b3IucmVwbGFjZVdpdGgobmV3RW50cnlJbmRpY2F0b3IpO1xuICAgICAgICAgICAgbmV3RW50cnlJbmRpY2F0b3IuY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXIgZmEtY2hlY2snO1xuICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MudmFsdWUrKztcbiAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzU3RlcHMuaW5uZXJUZXh0ID0gYFN0ZXA6ICR7dGhpcy5fcHJvZ3Jlc3MudmFsdWV9IG9mICR7dGhpcy5zdGVwTnVtYmVyfWA7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RlcCsrO1xuICAgICAgICAgICAgdGhpcy5faXNTdGVwUHJvY2Vzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFN0ZXAgPT09IHRoaXMuc3RlcE51bWJlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQXV0b21hdGljID8gdGhpcy5fc3RvcFN0YXJ0QnRuLnJlcGxhY2VXaXRoKHRoaXMuX3Jlc3RhcnRCdG4pIDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4ucmVwbGFjZVdpdGgodGhpcy5fcmVzdGFydEJ0bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGVwRW50cnlJbmRpY2F0b3IgPSB0aGlzLl9hY3Rpdml0eS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdncm9rLWljb24nKVt0aGlzLl9jdXJyZW50U3RlcF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnROZXh0U3RlcEljb24gPSB1aS5pY29uRkEoJ3BsYXknLCAoKSA9PiB0aGlzLl9uZXh0U3RlcCgpLCAnTmV4dCBzdGVwJyk7XG4gICAgICAgICAgICAgICAgc3RhcnROZXh0U3RlcEljb24uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXMgZmEtcGxheSc7XG4gICAgICAgICAgICAgICAgbmV4dFN0ZXBFbnRyeUluZGljYXRvci5yZXBsYWNlV2l0aChzdGFydE5leHRTdGVwSWNvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4uY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0U3RlcEJ0bi5maXJzdENoaWxkLmNsYXNzTGlzdC5yZW1vdmUoJ2ZhLWRpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogU3RhcnRzIHRoZSBkZW1vIHNjcmlwdCBhY3Rpb25zICovXG4gICAgX3N0YXJ0U2NyaXB0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuX2N1cnJlbnRTdGVwOyBpIDwgdGhpcy5zdGVwTnVtYmVyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNTdG9wcGVkIHx8IHRoaXMuX2lzQ2FuY2VsbGVkKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLl9uZXh0U3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2Nyb2xscyB0byB0aGUgY3VycmVudCBzdGVwXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBDdXJyZW50IHN0ZXAgZWxlbWVudCBpbiByb290XG4gICAgICogQHBhcmFtIHkgLSB5IGNvb3JkaW5hdGUgb2YgdGhlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBfc2Nyb2xsVG8oZWxlbWVudCwgeSkge1xuICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0geTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWRkcyBhbiBpbnRlcmFjdGl2ZSBkZWxheSBpbmRpY2F0b3JcbiAgICAgKiBAcGFyYW0gZWxlbWVudCAtIEN1cnJlbnQgc3RlcCBlbGVtZW50XG4gICAgICogQHBhcmFtIGluZGljYXRvciAtIEN1cnJlbnQgc3RlcCBpbmRpY2F0b3JcbiAgICAgKiBAcGFyYW0gdGltZSAtIEluZGljYXRvciBhbmltYXRpb24gdGltZVxuICAgICAqL1xuICAgIF9jb3VudGRvd24oZWxlbWVudCwgaW5kaWNhdG9yLCB0aW1lKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudGRvd25EaXYgPSB1aS5kaXYoW10sICdkZW1vLXNjcmlwdC1jb3VudGRvd24nKTtcbiAgICAgICAgICAgIGluZGljYXRvci5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIGxldCBjb3VudGRvd24gPSB0aW1lIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuX2NyZWF0ZVNWR0luZGljYXRvcihjb3VudGRvd24pO1xuICAgICAgICAgICAgY291bnRkb3duRGl2LmFwcGVuZChzdmcpO1xuICAgICAgICAgICAgZWxlbWVudC5wcmVwZW5kKGNvdW50ZG93bkRpdik7XG4gICAgICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb3VudGRvd24tLTtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRkb3duID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGRvd25EaXYucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRvci5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgU1ZHIHdpdGggY291bnRkb3duIGNpcmNsZVxuICAgICAqIEBwYXJhbSBjb3VudGRvd24gLSBjb3VudGRvd24gdGltZVxuICAgICAqIEByZXR1cm5zIFNWRyBjb3VudGRvd24gaW5kaWNhdG9yXG4gICAgICovXG4gICAgX2NyZWF0ZVNWR0luZGljYXRvcihjb3VudGRvd24pIHtcbiAgICAgICAgY29uc3Qgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnKTtcbiAgICAgICAgY29uc3QgY2lyY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdjaXJjbGUnKTtcbiAgICAgICAgY2lyY2xlLnNldEF0dHJpYnV0ZU5TKG51bGwsICdjeCcsICc3Jyk7XG4gICAgICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnY3knLCAnNycpO1xuICAgICAgICBjaXJjbGUuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3InLCAnNicpO1xuICAgICAgICBjaXJjbGUuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3N0eWxlJywgYGFuaW1hdGlvbjogY291bnRkb3duICR7Y291bnRkb3dufXMgbGluZWFyIGluZmluaXRlIGZvcndhcmRzYCk7XG4gICAgICAgIHN2Zy5hcHBlbmQoY2lyY2xlKTtcbiAgICAgICAgcmV0dXJuIHN2ZztcbiAgICB9XG4gICAgLyoqIENoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSBkZW1vIHNjcmlwdCAoc3RvcC9wbGF5KSAqL1xuICAgIF9jaGFuZ2VTdG9wU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9zdG9wU3RhcnRCdG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3Jvay1pY29uJyk7XG4gICAgICAgIGljb25bMF0uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXMgZmEtcGxheSc7XG4gICAgICAgIHRoaXMuX2lzU3RvcHBlZCA9ICF0aGlzLl9pc1N0b3BwZWQ7XG4gICAgICAgIGlmICghdGhpcy5faXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBpY29uWzBdLmNsYXNzTmFtZSA9ICdncm9rLWljb24gZmFsIGZhLXBhdXNlJztcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNTdGVwUHJvY2Vzc2VkKVxuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2NyaXB0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFJlc3RhcnRzIHRoZSBzY3JpcHQgKi9cbiAgICBfcmVzdGFydFNjcmlwdCgpIHtcbiAgICAgICAgZ3Jvay5zaGVsbC5kb2NrTWFuYWdlci5jbG9zZSh0aGlzLl9ub2RlKTtcbiAgICAgICAgZ3Jvay5zaGVsbC5jbG9zZUFsbCgpO1xuICAgICAgICB0aGlzLl9jbGVhclJvb3QoKTtcbiAgICAgICAgdGhpcy5fc2V0SW5pdFBhcmFtcygpO1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICAgIC8qKiBDbGVhcnMgdGhlIHJvb3QgZWxlbWVudCAqL1xuICAgIF9jbGVhclJvb3QoKSB7XG4gICAgICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXYoW10sIHsgaWQ6ICdkZW1vLXNjcmlwdCcsIGNsYXNzZXM6ICd0dXRvcmlhbHMtcm9vdCB0dXRvcmlhbHMtdHJhY2sgZGVtby1hcHAtc2NyaXB0JyB9KTtcbiAgICAgICAgdGhpcy5fbWFpbkhlYWRlciA9IHVpLnBhbmVsKFtdLCAndHV0b3JpYWxzLW1haW4taGVhZGVyJyk7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IHVpLmgyKCcnKTtcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2ID0gdWkuZGl2SChbXSwgJ3R1dG9yaWFscy1yb290LWhlYWRlcicpO1xuICAgICAgICB0aGlzLl9hY3Rpdml0eSA9IHVpLnBhbmVsKFtdLCAndHV0b3JpYWxzLXJvb3QtZGVzY3JpcHRpb24nKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3NEaXYgPSB1aS5kaXZWKFtdLCAndHV0b3JpYWxzLXJvb3QtcHJvZ3Jlc3MnKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB1aS5lbGVtZW50KCdwcm9ncmVzcycpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc1N0ZXBzID0gdWkuZGl2VGV4dCgnJyk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLm1heCA9IDA7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLnZhbHVlID0gMTtcbiAgICB9XG4gICAgLyoqIFNldHMgaW5pdGlhbCBwYXJhbWV0ZXJzICovXG4gICAgX3NldEluaXRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTdGVwID0gMDtcbiAgICAgICAgdGhpcy5faXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzQ2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9zdG9wU3RhcnRCdG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3Jvay1pY29uJyk7XG4gICAgICAgIGljb25bMF0uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYWwgZmEtcGF1c2UnO1xuICAgICAgICB0aGlzLl9uZXh0U3RlcEJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdkaXNhYmxlZCcpO1xuICAgIH1cbiAgICAvKiogQ2xvc2VzIGRlbW8gc2NyaXB0IGRvY2sgKi9cbiAgICBfY2xvc2VEb2NrKCkge1xuICAgICAgICBncm9rLnNoZWxsLmRvY2tNYW5hZ2VyLmNsb3NlKHRoaXMuX25vZGUpO1xuICAgICAgICB0aGlzLmNhbmNlbFNjcmlwdCgpO1xuICAgIH1cbiAgICAvKiogQ2FuY2VscyB0aGUgc2NyaXB0ICovXG4gICAgY2FuY2VsU2NyaXB0KCkge1xuICAgICAgICB0aGlzLl9pc0NhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIERlbW9TY3JpcHQuY3VycmVudE9iamVjdCA9IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBuZXcgc3RlcCB0byBzY3JpcHRcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFN0ZXAgbmFtZVxuICAgICAqIEBwYXJhbSBmdW5jIC0gU3RlcCBmdW5jdGlvblxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gU3RlcCBvcHRpb25zIChkZXNjcmlwdGlvbiBhbmQgZGVsYXkgYWZ0ZXIgc3RlcCBlbmRzKVxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGN1cnJlbnQgZGVtbyBzY3JpcHQgb2JqZWN0XG4gICAgICovXG4gICAgc3RlcChuYW1lLCBmdW5jLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3N0ZXBzW3RoaXMuc3RlcHMubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBmdW5jOiBmdW5jLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKiBTdGFydHMgdGhlIGRlbW8gc2NyaXB0ICovXG4gICAgc3RhcnQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0Um9vdCgpO1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5uZXdWaWV3KHRoaXMubmFtZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNBdXRvbWF0aWMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFNjcmlwdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9hdXRvU3RhcnRGaXJzdFN0ZXApXG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy5fbmV4dFN0ZXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuRGVtb1NjcmlwdC5jdXJyZW50T2JqZWN0ID0gbnVsbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHVnRieTF6WTNKcGNIUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKa1pXMXZMWE5qY21sd2RDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZCUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRGRFTXNUMEZCVHl4TFFVRkxMRWxCUVVrc1RVRkJUU3h0UWtGQmJVSXNRMEZCUXp0QlFVVXhReXhQUVVGUExFVkJRVU1zUzBGQlN5eEZRVUZETEUxQlFVMHNiME5CUVc5RExFTkJRVU03UVVGbGVrUXNiVWRCUVcxSE8wRkJRMjVITEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCZFVOeVFpeFpRVUZaTEVsQlFWa3NSVUZCUlN4WFFVRnRRaXhGUVVGRkxHTkJRWFZDTEV0QlFVc3NSVUZEZWtVc1QwRkJkME03TzFGQmRrTXhReXhUUVVGSkxFZEJRVmNzUlVGQlJTeERRVUZETzFGQlEyeENMR2RDUVVGWExFZEJRVmNzUlVGQlJTeERRVUZETzFGQlNXcENMR2xDUVVGWkxFZEJRVmtzUzBGQlN5eERRVUZETzFGQlF6bENMSGRDUVVGdFFpeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVTnlReXhwUWtGQldTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTjZRaXhsUVVGVkxFZEJRVmtzUzBGQlN5eERRVUZETzFGQlF6VkNMR2xDUVVGWkxFZEJRVmtzUzBGQlN5eERRVUZETzFGQlF6bENMSEZDUVVGblFpeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVVnNReXhWUVVGTExFZEJRVzFDTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZGTEdGQlFXRTdXVUZETTBRc1QwRkJUeXhGUVVGRkxHZEVRVUZuUkN4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVWMFJDeFhRVUZOTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUlhCQ0xHZENRVUZYTEVkQlFXMUNMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeEZRVUZGTEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNFVXNXVUZCVHl4SFFVRjFRaXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNoRExHVkJRVlVzUjBGQmJVSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzZFVKQlFYVkNMRU5CUVVNc1EwRkJRenRSUVVOc1JTeHJRa0ZCWVN4SFFVRnpRaXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRM0pGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8xRkJRM3BETEdkQ1FVRlhMRWRCUVhOQ0xFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZEZEVjc2FVSkJRVmtzUjBGQmMwSXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSVHRaUVVNeFJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFqdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzFGQlEzSkNMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVZTTEdOQlFWTXNSMEZCYlVJc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVWQlFVVXNORUpCUVRSQ0xFTkJRVU1zUTBGQlF6dFJRVVYyUlN4cFFrRkJXU3hIUVVGdFFpeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3g1UWtGQmVVSXNRMEZCUXl4RFFVRkRPMUZCUTNSRkxHTkJRVk1zUjBGQmQwSXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU40UkN4dFFrRkJZeXhIUVVGdFFpeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSMmhFTEdOQlFWTXNSMEZCYzBJc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hqUVVGakxFTkJRVU1zUTBGQlF6dFJRVXR1U0N4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExGZEJRVmNzUTBGQlF6dFJRVU12UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExGZEJRVmNzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNhMEpCUVd0Q0xHMURRVUZKTEV0QlFVc3NRMEZCUXp0UlFVVm9SU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRka0lzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSWHBDTEZWQlFWVXNRMEZCUXl4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJRMnhETEVOQlFVTTdTVUZGUkN4blEwRkJaME03U1VGRGFFTXNTVUZCU1N4TFFVRkxPMUZCUTFBc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1NVRkZSQ3c0UTBGQk9FTTdTVUZET1VNc1NVRkJTU3hWUVVGVk8xRkJRMW9zVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNMVFpeERRVUZETzBsQlIwUXNlVUpCUVhsQ08wbEJRMnBDTEZWQlFWVTdVVUZEYUVJc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFTkJRVU03VVVGRE1VSXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03U1VGRE9VUXNRMEZCUXp0SlFVVkVMR2REUVVGblF6dEpRVU40UWl4blFrRkJaMEk3VVVGRGRFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0UlFVTnVReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGRrTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUlhCRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWVUZCTUVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNN1VVRkZiRVlzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMGxCUTNKR0xFTkJRVU03U1VGRlJDeHJRMEZCYTBNN1NVRkRNVUlzYTBKQlFXdENPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4UFFVRlBMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJYaEdMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVOb1JDeERRVUZETzBsQlJVUXNjVU5CUVhGRE8wbEJRemRDTEdWQlFXVTdPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN3MFFrRkJORUlzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGT1VVc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZUVNc1NVRkJTU3h2UWtGQmIwSXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFsQlF6bERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzJkQ1FVTjBRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdiMEpCUTFnc2IwSkJRVzlDTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzI5Q1FVTTVSU3h2UWtGQmIwSXNRMEZCUXl4VFFVRlRMRWRCUVVjc2RVSkJRWFZDTEVOQlFVTTdhVUpCUXpGRU8yRkJRMFk3V1VGRFJDeE5RVUZOTEdOQlFXTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxHbERRVUZwUXl4RFFVRkRMRU5CUVVNN1dVRkRkRVlzVFVGQlRTeHpRa0ZCYzBJc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTERCRFFVRkZMRmRCUVZjc1JVRkRka1VzZFVOQlFYVkRMRU5CUVVNc1EwRkJRenRaUVVNelF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU53UWl4dlFrRkJiMEk3WjBKQlEzQkNMR05CUVdNN1lVRkRaaXhGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1dVRkZNVUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1UwRkRkRVE3U1VGRFNDeERRVUZETzBsQlJVUXNPRU5CUVRoRE8wbEJRM1JETEZOQlFWTTdPMUZCUTJZc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNaMEpCUVdkQ0xFZEJRVWNzU1VGQlNTeERRVUZETzFGQlF6TkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZjRU1zVFVGQlRTeGpRVUZqTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTDBVc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeGpRVUZqTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkZOVVlzU1VGQlNTeE5RVUZCTEUxQlFVRXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc2FVSkJRV2xDTERCRFFVRkZMR2RDUVVGblFpd3dRMEZEZEVZc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5d3lRa0ZCTWtJc1EwRkJRenRaUVVNdlF5eE5RVUZCTEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMR2xDUVVGcFFpd3dRMEZCUlN4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0UlFVVm9SeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMR2xEUVVGcFF5eERRVUZETEVOQlFVTTdVVUZGZGtZc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlEyeENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVWd1F5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNN1VVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBsQlEzQkRMRU5CUVVNN1NVRkZSQ3d3UWtGQk1FSTdTVUZEV2l4VFFVRlRPenM3V1VGRGNrSXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTTNRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0blFrRkRkRUlzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzJkQ1FVTXpReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZWQlFUQkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTTFSVHRaUVVWRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkRPVVlzVFVGQlRTeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdXVUZETjBZc1RVRkJUU3huUWtGQlowSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMR2REUVVGblF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xbEJSWEJJTEdOQlFXTXNRMEZCUXl4VFFVRlRMRWRCUVVjc2QwTkJRWGRETEVOQlFVTTdXVUZEY0VVc1owSkJRV2RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFpRVU0xUXl4blFrRkJaMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJSVEZETEUxQlFVMHNWMEZCVnl4SFFVRkhMRXRCUVhWQ0xFTkJRVU03V1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hOUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFOUJRVThzTUVOQlFVVXNTMEZCU3l4RlFVRkRMRU5CUVVNN1owSkJReTlFTEUxQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNUMEZCVHl3d1EwRkJSU3hMUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVVjRSQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzFsQlF6VkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4WFFVRlhMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkRiRVlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMmRDUVVOeVFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJiMElzUlVGQlJTeGpRVUUyUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8yZENRVU4wUml4TlFVRk5MRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dGhRVU40UWp0WlFVVkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU0zUXl4alFVRmpMRU5CUVVNc1YwRkJWeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1dVRkRPVU1zYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhIUVVGSExIZENRVUYzUWl4RFFVRkRPMWxCUlhaRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1UwRkJVeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03V1VGRmRFWXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8xbEJRM0JDTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZGT1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1owSkJRM3BETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTndSU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlEyeEVMRTlCUVU4N1lVRkRVanRaUVVWRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMmRDUVVOMFFpeE5RVUZOTEhOQ1FVRnpRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8yZENRVU55Unl4TlFVRk5MR2xDUVVGcFFpeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtZc2FVSkJRV2xDTEVOQlFVTXNVMEZCVXl4SFFVRkhMSFZDUVVGMVFpeERRVUZETzJkQ1FVTjBSQ3h6UWtGQmMwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0blFrRkRkRVFzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzJkQ1FVTTVReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZWQlFUQkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTXZSVHM3UzBGRFJqdEpRVVZFTEhGRFFVRnhRenRKUVVOMlFpeFpRVUZaT3p0WlFVTjRRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM2hFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldUdHZRa0ZEZEVNc1RVRkJUVHRuUWtGRlVpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRoUVVONFFqdFJRVU5JTEVOQlFVTTdTMEZCUVR0SlFVVkVPenM3TzA5QlNVYzdTVUZEU3l4VFFVRlRMRU5CUVVNc1QwRkJkVUlzUlVGQlJTeERRVUZUTzFGQlEyeEVMRTlCUVU4c1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFJRVU5vUWl4UFFVRlBMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU40UWl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRWeXhWUVVGVkxFTkJRVU1zVDBGQmIwSXNSVUZCUlN4VFFVRnpRaXhGUVVGRkxFbEJRVms3TzFsQlEycEdMRTFCUVUwc1dVRkJXU3hIUVVGdFFpeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3gxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMWxCUlhwRkxGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xbEJSV3hETEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRE5VSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJSV2hFTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVVU1UWl4TlFVRk5MRkZCUVZFc1IwRkJSeXhYUVVGWExFTkJRVU1zUjBGQlJ5eEZRVUZGTzJkQ1FVTm9ReXhUUVVGVExFVkJRVVVzUTBGQlF6dG5Ra0ZEV2l4SlFVRkpMRk5CUVZNc1MwRkJTeXhEUVVGRExFVkJRVVU3YjBKQlEyNUNMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHZRa0ZEZUVJc1dVRkJXU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzI5Q1FVVjBRaXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR2UWtGRGNrTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdhVUpCUTNCRE8xbEJRMGdzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTFnc1EwRkJRenRMUVVGQk8wbEJSVVE3T3pzN1QwRkpSenRKUVVOTExHMUNRVUZ0UWl4RFFVRkRMRk5CUVdsQ08xRkJRek5ETEUxQlFVMHNSMEZCUnl4SFFVRkhMRkZCUVZFc1EwRkJReXhsUVVGbExFTkJRVU1zTkVKQlFUUkNMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE1VVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1VVRkJVU3hEUVVGRExHVkJRV1VzUTBGQlF5dzBRa0ZCTkVJc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU5vUml4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRka01zVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzWkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVVzZDBKQlFYZENMRk5CUVZNc05FSkJRVFJDTEVOQlFVTXNRMEZCUXp0UlFVTndSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUlc1Q0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVMSFZFUVVGMVJEdEpRVU12UXl4blFrRkJaMEk3VVVGRGRFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU53UlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8xRkJRelZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzFGQlJXNURMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTzFsQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NkMEpCUVhkQ0xFTkJRVU03V1VGRE4wTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSTdaMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0VFFVTjJRanRKUVVOSUxFTkJRVU03U1VGRlJDd3dRa0ZCTUVJN1NVRkRiRUlzWTBGQll6dFJRVU53UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVUwc1EwRkJReXhEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03VVVGRGRFSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJRMnhDTEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOMFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJSVVFzT0VKQlFUaENPMGxCUTNSQ0xGVkJRVlU3VVVGRGFFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJSU3hoUVVGaExFVkJRVVVzVDBGQlR5eEZRVUZGTEdkRVFVRm5SQ3hGUVVGRExFTkJRVU1zUTBGQlF6dFJRVVY0Unl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RlFVRkZMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZEZWtRc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRM3BDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVVYyUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RlFVRkZMRFJDUVVFMFFpeERRVUZETEVOQlFVTTdVVUZGTlVRc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3g1UWtGQmVVSXNRMEZCUXl4RFFVRkRPMUZCUXpORUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU40UXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkZja01zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM1pDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU16UWl4RFFVRkRPMGxCUlVRc09FSkJRVGhDTzBsQlEzUkNMR05CUVdNN1VVRkRjRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZNVUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOd1JTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExIZENRVUYzUWl4RFFVRkRPMUZCUXpkRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRc09FSkJRVGhDTzBsQlEzUkNMRlZCUVZVN1VVRkRhRUlzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZOTEVOQlFVTXNRMEZCUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdTVUZEZEVJc1EwRkJRenRKUVVWRUxIbENRVUY1UWp0SlFVTjZRaXhaUVVGWk8xRkJRMVlzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRla0lzVlVGQlZTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkRiRU1zUTBGQlF6dEpRVVZFT3pzN096czdUMEZOUnp0SlFVTklMRWxCUVVrc1EwRkJReXhKUVVGWkxFVkJRVVVzU1VGQmVVSXNSVUZCUlN4UFFVRm5SRHRSUVVNMVJpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVYzdXVUZETDBJc1NVRkJTU3hGUVVGRkxFbEJRVWs3V1VGRFZpeEpRVUZKTEVWQlFVVXNTVUZCU1R0WlFVTldMRTlCUVU4c1JVRkJSU3hQUVVGUE8xTkJRMnBDTEVOQlFVTTdVVUZEUml4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDdzJRa0ZCTmtJN1NVRkRka0lzUzBGQlN6czdXVUZEVkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03V1VGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUlRsQ0xFbEJRVWtzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0blFrRkRja0lzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeFBRVUZQTzJGQlExSTdXVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXh0UWtGQmJVSTdaMEpCUXpGQ0xFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFTkJRVU03UzBGQlFUczdRVUYwVmswc2QwSkJRV0VzUjBGQmMwSXNTVUZCU1N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1JFY2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMlJuSnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibHh1YVcxd2IzSjBJSHRrWld4aGVYMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkR1Z6ZENjN1hHNWNibHh1THlvcUlGUjVjR1VnWm05eUlIdEFiR2x1YXlCRVpXMXZVMk55YVhCMGZTQnpkR1Z3SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JUZEdWd0lEMGdlMXh1SUNCdVlXMWxPaUJ6ZEhKcGJtYzdYRzRnSUdaMWJtTTZJQ2dwSUQwK0lGQnliMjFwYzJVOGRtOXBaRDQ3WEc1Y2JpQWdMeW9xSUZOMFpYQWdiM0IwYVc5dWN6b2daR1Z6WTNKcGNIUnBiMjRnWVc1a0lHUmxiR0Y1SUNocGJpQnRjeWtnWVdaMFpYSWdablZ1WTNScGIyNGdaVzVrY3lBcUwxeHVJQ0J2Y0hScGIyNXpQem9nZTF4dUlDQWdJR1JsYzJOeWFYQjBhVzl1UHpvZ2MzUnlhVzVuTzF4dUlDQWdJR1JsYkdGNVB6b2diblZ0WW1WeU8xeHVJQ0I5WEc1OU8xeHVYRzR2S2lvZ1JHVnRieUJ6WTNKcGNIUWdZMnhoYzNNdUlFTnZkV3hrSUdKbElIVnpaV1FnWm05eUlHTnlaV0YwYVc1bklHUmxiVzhnYzJOeWFYQjBjeUIwYnlCemFHOTNJSFJvWlNCd2JHRjBabTl5YlNCallYQmhZbWxzYVhScFpYTWdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QkVaVzF2VTJOeWFYQjBJSHRjYmlBZ2JtRnRaVG9nYzNSeWFXNW5JRDBnSnljN1hHNGdJR1JsYzJOeWFYQjBhVzl1T2lCemRISnBibWNnUFNBbkp6dGNibHh1SUNCemRHRjBhV01nWTNWeWNtVnVkRTlpYW1WamREb2dSR1Z0YjFOamNtbHdkQ0I4SUc1MWJHd2dQU0J1ZFd4c08xeHVYRzRnSUhCeWFYWmhkR1VnWDJselFYVjBiMjFoZEdsak9pQmliMjlzWldGdUlEMGdabUZzYzJVN1hHNGdJSEJ5YVhaaGRHVWdYMkYxZEc5VGRHRnlkRVpwY25OMFUzUmxjRG9nWW05dmJHVmhiaUE5SUdaaGJITmxPMXh1SUNCd2NtbDJZWFJsSUY5amRYSnlaVzUwVTNSbGNEb2diblZ0WW1WeUlEMGdNRHRjYmlBZ2NISnBkbUYwWlNCZmFYTlRkRzl3Y0dWa09pQmliMjlzWldGdUlEMGdabUZzYzJVN1hHNGdJSEJ5YVhaaGRHVWdYMmx6UTJGdVkyVnNiR1ZrT2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlU3WEc0Z0lIQnlhWFpoZEdVZ1gybHpVM1JsY0ZCeWIyTmxjM05sWkRvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTzF4dVhHNGdJSEJ5YVhaaGRHVWdYM0p2YjNRNklFaFVUVXhFYVhaRmJHVnRaVzUwSUQwZ2RXa3VaR2wyS0Z0ZExDQjdhV1E2SUNka1pXMXZMWE5qY21sd2RDY3NYRzRnSUNBZ1kyeGhjM05sY3pvZ0ozUjFkRzl5YVdGc2N5MXliMjkwSUhSMWRHOXlhV0ZzY3kxMGNtRmpheUJrWlcxdkxXRndjQzF6WTNKcGNIUW5mU2s3WEc1Y2JpQWdjSEpwZG1GMFpTQmZjM1JsY0hNNklGTjBaWEJiWFNBOUlGdGRPMXh1WEc0Z0lIQnlhWFpoZEdVZ1gyMWhhVzVJWldGa1pYSTZJRWhVVFV4RWFYWkZiR1Z0Wlc1MElEMGdkV2t1Y0dGdVpXd29XMTBzSUNkMGRYUnZjbWxoYkhNdGJXRnBiaTFvWldGa1pYSW5LVHRjYmlBZ2NISnBkbUYwWlNCZmFHVmhaR1Z5T2lCSVZFMU1TR1ZoWkdsdVowVnNaVzFsYm5RZ1BTQjFhUzVvTWlnbkp5azdYRzRnSUhCeWFYWmhkR1VnWDJobFlXUmxja1JwZGpvZ1NGUk5URVJwZGtWc1pXMWxiblFnUFNCMWFTNWthWFpJS0Z0ZExDQW5kSFYwYjNKcFlXeHpMWEp2YjNRdGFHVmhaR1Z5SnlrN1hHNGdJSEJ5YVhaaGRHVWdYM04wYjNCVGRHRnlkRUowYmpvZ1NGUk5URUoxZEhSdmJrVnNaVzFsYm5RZ1BTQjFhUzVpZFhSMGIyNG9kV2t1YVdOdmJrWkJLQ2R3WVhWelpTY3BMRnh1SUNBZ0lDZ3BJRDArSUhSb2FYTXVYMk5vWVc1blpWTjBiM0JUZEdGMFpTZ3BMQ0FuVUd4aGVTQXZJSEJoZFhObEp5azdYRzRnSUhCeWFYWmhkR1VnWDNKbGMzUmhjblJDZEc0NklFaFVUVXhDZFhSMGIyNUZiR1Z0Wlc1MElEMGdkV2t1WW5WMGRHOXVLSFZwTG1samIyNUdRU2duY21Wa2J5Y3BMQ0FvS1NBOVBpQjBhR2x6TGw5eVpYTjBZWEowVTJOeWFYQjBLQ2tzSUNkU1pYTjBZWEowSnlrN1hHNGdJSEJ5YVhaaGRHVWdYMjVsZUhSVGRHVndRblJ1T2lCSVZFMU1RblYwZEc5dVJXeGxiV1Z1ZENBOUlIVnBMbUoxZEhSdmJpaDFhUzVwWTI5dVJrRW9KM0JzWVhrbktTd2dLQ2tnUFQ0Z2UxeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1ZmFYTlRkR1Z3VUhKdlkyVnpjMlZrS1Z4dUlDQWdJQ0FnZEdocGN5NWZibVY0ZEZOMFpYQW9LVHRjYmlBZ2ZTd2dKMDVsZUhRZ2MzUmxjQ2NwTzF4dVhHNGdJSEJ5YVhaaGRHVWdYMkZqZEdsMmFYUjVPaUJJVkUxTVJHbDJSV3hsYldWdWRDQTlJSFZwTG5CaGJtVnNLRnRkTENBbmRIVjBiM0pwWVd4ekxYSnZiM1F0WkdWelkzSnBjSFJwYjI0bktUdGNibHh1SUNCd2NtbDJZWFJsSUY5d2NtOW5jbVZ6YzBScGRqb2dTRlJOVEVScGRrVnNaVzFsYm5RZ1BTQjFhUzVrYVhaV0tGdGRMQ0FuZEhWMGIzSnBZV3h6TFhKdmIzUXRjSEp2WjNKbGMzTW5LVHRjYmlBZ2NISnBkbUYwWlNCZmNISnZaM0psYzNNNklFaFVUVXhRY205bmNtVnpjMFZzWlcxbGJuUWdQU0IxYVM1bGJHVnRaVzUwS0Nkd2NtOW5jbVZ6Y3ljcE8xeHVJQ0J3Y21sMllYUmxJRjl3Y205bmNtVnpjMU4wWlhCek9pQklWRTFNUkdsMlJXeGxiV1Z1ZENBOUlIVnBMbVJwZGxSbGVIUW9KeWNwTzF4dVhHNGdJSEJ5YVhaaGRHVWdYMjV2WkdVL09pQkVSeTVFYjJOclRtOWtaVHRjYmlBZ2NISnBkbUYwWlNCZlkyeHZjMlZDZEc0NklFaFVUVXhDZFhSMGIyNUZiR1Z0Wlc1MElEMGdkV2t1WW5WMGRHOXVLSFZwTG1samIyNUdRU2duWTJobGRuSnZiaTFzWldaMEp5a3NJQ2dwSUQwK0lIUm9hWE11WDJOc2IzTmxSRzlqYXlncExDQW5RbUZqYXlCMGJ5QmtaVzF2SnlrN1hHNWNibHh1SUNCamIyNXpkSEoxWTNSdmNpaHVZVzFsT2lCemRISnBibWNzSUdSbGMyTnlhWEIwYVc5dU9pQnpkSEpwYm1jc0lHbHpRWFYwYjIxaGRHbGpPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVXNYRzRnSUNBZ2IzQjBhVzl1Y3o4NklIdGhkWFJ2VTNSaGNuUkdhWEp6ZEZOMFpYQS9PaUJpYjI5c1pXRnVmU2tnZTF4dUlDQWdJSFJvYVhNdWJtRnRaU0E5SUc1aGJXVTdYRzRnSUNBZ2RHaHBjeTVrWlhOamNtbHdkR2x2YmlBOUlHUmxjMk55YVhCMGFXOXVPMXh1SUNBZ0lIUm9hWE11WDJselFYVjBiMjFoZEdsaklEMGdhWE5CZFhSdmJXRjBhV003WEc0Z0lDQWdkR2hwY3k1ZllYVjBiMU4wWVhKMFJtbHljM1JUZEdWd0lEMGdiM0IwYVc5dWN6OHVZWFYwYjFOMFlYSjBSbWx5YzNSVGRHVndJRDgvSUdaaGJITmxPMXh1WEc0Z0lDQWdkR2hwY3k1ZmNISnZaM0psYzNNdWJXRjRJRDBnTUR0Y2JpQWdJQ0IwYUdsekxsOXdjbTluY21WemN5NTJZV3gxWlNBOUlERTdYRzVjYmlBZ0lDQkVaVzF2VTJOeWFYQjBMbU4xY25KbGJuUlBZbXBsWTNRZ1BTQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRkpsZEhWeWJuTWdaR1Z0YnlCelkzSnBjSFFnYzNSbGNITWdLaTljYmlBZ1oyVjBJSE4wWlhCektDazZJRk4wWlhCYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM04wWlhCek8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUZKbGRIVnlibk1nZEdobElHRnRiM1Z1ZENCdlppQmtaVzF2SUhOamNtbHdkQ0J6ZEdWd2N5QXFMMXh1SUNCblpYUWdjM1JsY0U1MWJXSmxjaWdwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5emRHVndjeTVzWlc1bmRHZzdYRzRnSUgxY2JseHVYRzRnSUM4cUtpQkJaR1J6SUhOamNtbHdkQ0JvWldGa1pYSWdLaTljYmlBZ2NISnBkbUYwWlNCZllXUmtTR1ZoWkdWeUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMk55WldGMFpVaGxZV1JsY2tScGRpZ3BPMXh1SUNBZ0lIUm9hWE11WDJOeVpXRjBaVkJ5YjJkeVpYTnpSR2wyS0NrN1hHNGdJQ0FnZEdocGN5NWZiV0ZwYmtobFlXUmxjaTVoY0hCbGJtUW9kR2hwY3k1ZmFHVmhaR1Z5UkdsMkxDQjBhR2x6TGw5d2NtOW5jbVZ6YzBScGRpazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1EzSmxZWFJsY3lCelkzSnBjSFFnYUdWaFpHVnlJR1JwZGlBcUwxeHVJQ0J3Y21sMllYUmxJRjlqY21WaGRHVklaV0ZrWlhKRWFYWW9LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmYUdWaFpHVnlMbWx1Ym1WeVZHVjRkQ0E5SUhSb2FYTXVibUZ0WlR0Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWXVZWEJ3Wlc1a0tIUm9hWE11WDJOc2IzTmxRblJ1S1R0Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWXVZWEJ3Wlc1a0tIUm9hWE11WDJobFlXUmxjaWs3WEc1Y2JpQWdJQ0FvZEdocGN5NWZibVY0ZEZOMFpYQkNkRzR1Wm1seWMzUkRhR2xzWkNCaGN5QklWRTFNUld4bGJXVnVkQ2t1WTJ4aGMzTk9ZVzFsSUQwZ0oyZHliMnN0YVdOdmJpQm1ZWE1nWm1FdGNHeGhlU2M3WEc1Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWXVZWEJ3Wlc1a0tIUm9hWE11WDJselFYVjBiMjFoZEdsaklEOGdkR2hwY3k1ZmMzUnZjRk4wWVhKMFFuUnVJRG9nZEdocGN5NWZibVY0ZEZOMFpYQkNkRzRwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRU55WldGMFpYTWdjMk55YVhCMElIQnliMmR5WlhOeklHUnBkaUFxTDF4dUlDQndjbWwyWVhSbElGOWpjbVZoZEdWUWNtOW5jbVZ6YzBScGRpZ3BPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDl3Y205bmNtVnpjeTV0WVhnZ1BTQjBhR2x6TG5OMFpYQk9kVzFpWlhJN1hHNGdJQ0FnZEdocGN5NWZjSEp2WjNKbGMzTkVhWFl1WVhCd1pXNWtLSFJvYVhNdVgzQnliMmR5WlhOektUdGNiaUFnSUNCMGFHbHpMbDl3Y205bmNtVnpjMU4wWlhCeklEMGdkV2t1WkdsMlZHVjRkQ2hnVTNSbGNEb2dKSHQwYUdsekxsOXdjbTluY21WemN5NTJZV3gxWlgwZ2IyWWdKSHQwYUdsekxuTjBaWEJPZFcxaVpYSjlZQ2s3WEc1Y2JpQWdJQ0IwYUdsekxsOXdjbTluY21WemMwUnBkaTVoY0hCbGJtUW9kR2hwY3k1ZmNISnZaM0psYzNOVGRHVndjeWs3WEc0Z0lIMWNibHh1SUNBdktpb2dRV1JrY3lCa1pYTmpjbWx3ZEdsdmJpQnZaaUIwYUdVZ2MyTnlhWEIwSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMkZrWkVSbGMyTnlhWEIwYVc5dUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMkZqZEdsMmFYUjVMbUZ3Y0dWdVpDaDFhUzVrYVhZb2RHaHBjeTVrWlhOamNtbHdkR2x2Yml3Z0ozUjFkRzl5YVdGc2N5MXliMjkwTFdSbGMyTnlhWEIwYVc5dUp5a3BPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwYUdsekxuTjBaWEJPZFcxaVpYSTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJR2x1YzNSeWRXTjBhVzl1U1c1a2FXTmhkRzl5SUQwZ2RXa3VhV052YmtaQktDZGpiRzlqYXljcE8xeHVJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxsOXBjMEYxZEc5dFlYUnBZeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9hU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdWMzUnlkV04wYVc5dVNXNWthV05oZEc5eUlEMGdkV2t1YVdOdmJrWkJLQ2R3YkdGNUp5d2dLQ2tnUFQ0Z2RHaHBjeTVmYm1WNGRGTjBaWEFvS1N3Z0owNWxlSFFnYzNSbGNDY3BPMXh1SUNBZ0lDQWdJQ0FnSUdsdWMzUnlkV04wYVc5dVNXNWthV05oZEc5eUxtTnNZWE56VG1GdFpTQTlJQ2RuY205ckxXbGpiMjRnWm1GeklHWmhMWEJzWVhrbk8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpiMjV6ZENCcGJuTjBjblZqZEdsdmJrUnBkaUE5SUhWcExtUnBkaWgwYUdsekxsOXpkR1Z3YzF0cFhTNXVZVzFsTENBblozSnZheTEwZFhSdmNtbGhiQzFsYm5SeWVTMXBibk4wY25WamRHbHZiaWNwTzF4dUlDQWdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRGTjBaWEJFWlhOamNtbHdkR2x2YmlBOUlIVnBMbVJwZGloMGFHbHpMbDl6ZEdWd2MxdHBYUzV2Y0hScGIyNXpQeTVrWlhOamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUNBZ0oyZHliMnN0ZEhWMGIzSnBZV3d0YzNSbGNDMWtaWE5qY21sd2RHbHZiaUJvYVdSa1pXNG5LVHRjYmlBZ0lDQWdJR052Ym5OMElHVnVkSEo1SUQwZ2RXa3VaR2wyU0NoYlhHNGdJQ0FnSUNBZ0lHbHVjM1J5ZFdOMGFXOXVTVzVrYVdOaGRHOXlMRnh1SUNBZ0lDQWdJQ0JwYm5OMGNuVmpkR2x2YmtScGRpeGNiaUFnSUNBZ0lGMHNJQ2RuY205ckxYUjFkRzl5YVdGc0xXVnVkSEo1SnlrN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJGamRHbDJhWFI1TG1Gd2NHVnVaQ2hsYm5SeWVTd2dZM1Z5Y21WdWRGTjBaWEJFWlhOamNtbHdkR2x2YmlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FJRWx1YVhScFlXeHBlbVZ6SUhSb1pTQnliMjkwSUc5bUlIUm9aU0JrWlcxdklITmpjbWx3ZENBcUwxeHVJQ0J3Y21sMllYUmxJRjlwYm1sMFVtOXZkQ2dwT2lCMmIybGtJSHRjYmlBZ0lDQm5jbTlyTG5Ob1pXeHNMbmRwYm1SdmQzTXVjMmh2ZDBOdmJuUmxlSFJRWVc1bGJDQTlJSFJ5ZFdVN1hHNGdJQ0FnWjNKdmF5NXphR1ZzYkM1M2FXNWtiM2R6TG5Ob2IzZElaV3h3SUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0JqYjI1emRDQnpZM0pwY0hSRWIyTnJUbTlrWlNBOUlFRnljbUY1TG1aeWIyMG9aM0p2YXk1emFHVnNiQzVrYjJOclRXRnVZV2RsY2k1eWIyOTBUbTlrWlM1amFHbHNaSEpsYmlsYk1GMDdYRzVjYmlBZ0lDQjBhR2x6TGw5dWIyUmxJRDBnWjNKdmF5NXphR1ZzYkM1a2IyTnJUV0Z1WVdkbGNpNWtiMk5yS0hSb2FYTXVYM0p2YjNRc0lFUkhMa1JQUTB0ZlZGbFFSUzVHU1V4TUxDQnpZM0pwY0hSRWIyTnJUbTlrWlN3Z0p5Y3BPMXh1WEc0Z0lDQWdhV1lnS0hOamNtbHdkRVJ2WTJ0T2IyUmxMbkJoY21WdWRDNWpiMjUwWVdsdVpYSXVZMjl1ZEdGcGJtVnlSV3hsYldWdWRDNW1hWEp6ZEVWc1pXMWxiblJEYUdsc1pEOHViR0Z6ZEVWc1pXMWxiblJEYUdsc1pEOHVYRzRnSUNBZ0lDQmpiR0Z6YzB4cGMzUXVZMjl1ZEdGcGJuTW9KM1JoWWkxb1lXNWtiR1V0YkdsemRDMWpiMjUwWVdsdVpYSW5LU2xjYmlBZ0lDQWdJSE5qY21sd2RFUnZZMnRPYjJSbExuQmhjbVZ1ZEM1amIyNTBZV2x1WlhJdVkyOXVkR0ZwYm1WeVJXeGxiV1Z1ZEM1bWFYSnpkRVZzWlcxbGJuUkRhR2xzWkQ4dWJHRnpkRVZzWlcxbGJuUkRhR2xzWkM1eVpXMXZkbVVvS1R0Y2JseHVJQ0FnSUhSb2FYTXVYMjV2WkdVdVkyOXVkR0ZwYm1WeUxtTnZiblJoYVc1bGNrVnNaVzFsYm5RdVkyeGhjM05NYVhOMExtRmtaQ2duZEhWMGIzSnBZV3h6TFdSbGJXOHRjMk55YVhCMExXTnZiblJoYVc1bGNpY3BPMXh1WEc0Z0lDQWdkR2hwY3k1ZllXUmtTR1ZoWkdWeUtDazdYRzRnSUNBZ2RHaHBjeTVmY205dmRDNWhjSEJsYm1Rb2RHaHBjeTVmYldGcGJraGxZV1JsY2lrN1hHNWNiaUFnSUNCMGFHbHpMbDloWkdSRVpYTmpjbWx3ZEdsdmJpZ3BPMXh1SUNBZ0lIUm9hWE11WDNKdmIzUXVZWEJ3Wlc1a0tIUm9hWE11WDJGamRHbDJhWFI1S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJRY205alpYTnpaWE1nYm1WNGRDQnpkR1Z3SUNvdlhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1gyNWxlSFJUZEdWd0tDazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUhSb2FYTXVYMmx6VTNSbGNGQnliMk5sYzNObFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TGw5cGMwRjFkRzl0WVhScFl5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmJtVjRkRk4wWlhCQ2RHNHVZMnhoYzNOTWFYTjBMbUZrWkNnblpHbHpZV0pzWldRbktUdGNiaUFnSUNBZ0lDaDBhR2x6TGw5dVpYaDBVM1JsY0VKMGJpNW1hWEp6ZEVOb2FXeGtJR0Z6SUVoVVRVeEZiR1Z0Wlc1MEtTNWpiR0Z6YzB4cGMzUXVZV1JrS0NkbVlTMWthWE5oWW14bFpDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdWdWRISjVJRDBnZEdocGN5NWZZV04wYVhacGRIa3VaMlYwUld4bGJXVnVkSE5DZVVOc1lYTnpUbUZ0WlNnblozSnZheTEwZFhSdmNtbGhiQzFsYm5SeWVTY3BXM1JvYVhNdVgyTjFjbkpsYm5SVGRHVndYVHRjYmlBZ0lDQmpiMjV6ZENCbGJuUnllVWx1WkdsallYUnZjaUE5SUhSb2FYTXVYMkZqZEdsMmFYUjVMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVb0oyZHliMnN0YVdOdmJpY3BXM1JvYVhNdVgyTjFjbkpsYm5SVGRHVndYVHRjYmlBZ0lDQmpiMjV6ZENCbGJuUnllVWx1YzNSeWRXTjBhVzl1SUQwZ2RHaHBjeTVmWVdOMGFYWnBkSGt1WjJWMFJXeGxiV1Z1ZEhOQ2VVTnNZWE56VG1GdFpTZ25aM0p2YXkxMGRYUnZjbWxoYkMxemRHVndMV1JsYzJOeWFYQjBhVzl1SnlsYmRHaHBjeTVmWTNWeWNtVnVkRk4wWlhCZE8xeHVYRzRnSUNBZ1pXNTBjbmxKYm1ScFkyRjBiM0l1WTJ4aGMzTk9ZVzFsSUQwZ0oyZHliMnN0YVdOdmJpQm1ZWElnWm1FdGMzQnBibTVsY2kxMGFHbHlaQ0JtWVMxemNHbHVKenRjYmlBZ0lDQmxiblJ5ZVVsdWMzUnlkV04wYVc5dUxtTnNZWE56VEdsemRDNXlaVzF2ZG1Vb0oyaHBaR1JsYmljcE8xeHVJQ0FnSUdWdWRISjVTVzV6ZEhKMVkzUnBiMjR1WTJ4aGMzTk1hWE4wTG1Ga1pDZ25kbWx6YVdKc1pTY3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ1kzVnljbVZ1ZEZOMFpYQWdQU0JsYm5SeWVTQmhjeUJJVkUxTVJHbDJSV3hsYldWdWREdGNiaUFnSUNCamIyNXpkQ0J6ZEdWd1JHVnNZWGtnUFNCMGFHbHpMbDl6ZEdWd2MxdDBhR2x6TGw5amRYSnlaVzUwVTNSbGNGMHViM0IwYVc5dWN6OHVaR1ZzWVhrZ1AxeHVJQ0FnSUNBZ2RHaHBjeTVmYzNSbGNITmJkR2hwY3k1ZlkzVnljbVZ1ZEZOMFpYQmRMbTl3ZEdsdmJuTS9MbVJsYkdGNUlTQTZJREl3TURBN1hHNWNiaUFnSUNCaGQyRnBkQ0IwYUdsekxsOXpkR1Z3YzF0MGFHbHpMbDlqZFhKeVpXNTBVM1JsY0YwdVpuVnVZeWdwTzF4dUlDQWdJSFJvYVhNdVgzTmpjbTlzYkZSdktIUm9hWE11WDNKdmIzUXNJR04xY25KbGJuUlRkR1Z3TG05bVpuTmxkRlJ2Y0NBdElIUm9hWE11WDIxaGFXNUlaV0ZrWlhJdWIyWm1jMlYwU0dWcFoyaDBLVHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZhWE5CZFhSdmJXRjBhV01wSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdVgyTnZkVzUwWkc5M2JpaGxiblJ5ZVNCaGN5QklWRTFNUld4bGJXVnVkQ3dnWlc1MGNubEpibVJwWTJGMGIzSWdZWE1nU0ZSTlRFVnNaVzFsYm5Rc0lITjBaWEJFWld4aGVTazdYRzRnSUNBZ0lDQmhkMkZwZENCa1pXeGhlU2h6ZEdWd1JHVnNZWGtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHNWxkMFZ1ZEhKNVNXNWthV05oZEc5eUlEMGdkV2t1YVdOdmJrWkJLQ2RqYUdWamF5Y3BPMXh1SUNBZ0lHVnVkSEo1U1c1a2FXTmhkRzl5TG5KbGNHeGhZMlZYYVhSb0tHNWxkMFZ1ZEhKNVNXNWthV05oZEc5eUtUdGNiaUFnSUNCdVpYZEZiblJ5ZVVsdVpHbGpZWFJ2Y2k1amJHRnpjMDVoYldVZ1BTQW5aM0p2YXkxcFkyOXVJR1poY2lCbVlTMWphR1ZqYXljN1hHNWNiaUFnSUNCMGFHbHpMbDl3Y205bmNtVnpjeTUyWVd4MVpTc3JPMXh1SUNBZ0lIUm9hWE11WDNCeWIyZHlaWE56VTNSbGNITXVhVzV1WlhKVVpYaDBJRDBnWUZOMFpYQTZJQ1I3ZEdocGN5NWZjSEp2WjNKbGMzTXVkbUZzZFdWOUlHOW1JQ1I3ZEdocGN5NXpkR1Z3VG5WdFltVnlmV0E3WEc1Y2JpQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFUzUmxjQ3NyTzF4dUlDQWdJSFJvYVhNdVgybHpVM1JsY0ZCeWIyTmxjM05sWkNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WDJOMWNuSmxiblJUZEdWd0lEMDlQU0IwYUdsekxuTjBaWEJPZFcxaVpYSXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgybHpRWFYwYjIxaGRHbGpJRDhnZEdocGN5NWZjM1J2Y0ZOMFlYSjBRblJ1TG5KbGNHeGhZMlZYYVhSb0tIUm9hWE11WDNKbGMzUmhjblJDZEc0cElEcGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmJtVjRkRk4wWlhCQ2RHNHVjbVZ3YkdGalpWZHBkR2dvZEdocGN5NWZjbVZ6ZEdGeWRFSjBiaWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOXBjMEYxZEc5dFlYUnBZeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdibVY0ZEZOMFpYQkZiblJ5ZVVsdVpHbGpZWFJ2Y2lBOUlIUm9hWE11WDJGamRHbDJhWFI1TG1kbGRFVnNaVzFsYm5SelFubERiR0Z6YzA1aGJXVW9KMmR5YjJzdGFXTnZiaWNwVzNSb2FYTXVYMk4xY25KbGJuUlRkR1Z3WFR0Y2JpQWdJQ0FnSUdOdmJuTjBJSE4wWVhKMFRtVjRkRk4wWlhCSlkyOXVJRDBnZFdrdWFXTnZia1pCS0Nkd2JHRjVKeXdnS0NrZ1BUNGdkR2hwY3k1ZmJtVjRkRk4wWlhBb0tTd2dKMDVsZUhRZ2MzUmxjQ2NwTzF4dUlDQWdJQ0FnYzNSaGNuUk9aWGgwVTNSbGNFbGpiMjR1WTJ4aGMzTk9ZVzFsSUQwZ0oyZHliMnN0YVdOdmJpQm1ZWE1nWm1FdGNHeGhlU2M3WEc0Z0lDQWdJQ0J1WlhoMFUzUmxjRVZ1ZEhKNVNXNWthV05oZEc5eUxuSmxjR3hoWTJWWGFYUm9LSE4wWVhKMFRtVjRkRk4wWlhCSlkyOXVLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyNWxlSFJUZEdWd1FuUnVMbU5zWVhOelRHbHpkQzV5WlcxdmRtVW9KMlJwYzJGaWJHVmtKeWs3WEc0Z0lDQWdJQ0FvZEdocGN5NWZibVY0ZEZOMFpYQkNkRzR1Wm1seWMzUkRhR2xzWkNCaGN5QklWRTFNUld4bGJXVnVkQ2t1WTJ4aGMzTk1hWE4wTG5KbGJXOTJaU2duWm1FdFpHbHpZV0pzWldRbktUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaW9nVTNSaGNuUnpJSFJvWlNCa1pXMXZJSE5qY21sd2RDQmhZM1JwYjI1eklDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYM04wWVhKMFUyTnlhWEIwS0NrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCMGFHbHpMbDlqZFhKeVpXNTBVM1JsY0RzZ2FTQThJSFJvYVhNdWMzUmxjRTUxYldKbGNqc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZmFYTlRkRzl3Y0dWa0lIeDhJSFJvYVhNdVgybHpRMkZ1WTJWc2JHVmtLVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNibHh1SUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVmYm1WNGRGTjBaWEFvS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1UyTnliMnhzY3lCMGJ5QjBhR1VnWTNWeWNtVnVkQ0J6ZEdWd1hHNGdJQ0FxSUVCd1lYSmhiU0JsYkdWdFpXNTBJQzBnUTNWeWNtVnVkQ0J6ZEdWd0lHVnNaVzFsYm5RZ2FXNGdjbTl2ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlU0F0SUhrZ1kyOXZjbVJwYm1GMFpTQnZaaUIwYUdVZ1pXeGxiV1Z1ZEZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmMyTnliMnhzVkc4b1pXeGxiV1Z1ZERvZ1NGUk5URVJwZGtWc1pXMWxiblFzSUhrNklHNTFiV0psY2lrNklIWnZhV1FnZTF4dUlDQWdJR1ZzWlcxbGJuUXVabTlqZFhNb0tUdGNiaUFnSUNCbGJHVnRaVzUwTG5OamNtOXNiRlJ2Y0NBOUlIazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVdSa2N5QmhiaUJwYm5SbGNtRmpkR2wyWlNCa1pXeGhlU0JwYm1ScFkyRjBiM0pjYmlBZ0lDb2dRSEJoY21GdElHVnNaVzFsYm5RZ0xTQkRkWEp5Wlc1MElITjBaWEFnWld4bGJXVnVkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2FXNWthV05oZEc5eUlDMGdRM1Z5Y21WdWRDQnpkR1Z3SUdsdVpHbGpZWFJ2Y2x4dUlDQWdLaUJBY0dGeVlXMGdkR2x0WlNBdElFbHVaR2xqWVhSdmNpQmhibWx0WVhScGIyNGdkR2x0WlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUJmWTI5MWJuUmtiM2R1S0dWc1pXMWxiblE2SUVoVVRVeEZiR1Z0Wlc1MExDQnBibVJwWTJGMGIzSTZJRWhVVFV4RmJHVnRaVzUwTENCMGFXMWxPaUJ1ZFcxaVpYSXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCamIyNXpkQ0JqYjNWdWRHUnZkMjVFYVhZNklFaFVUVXhFYVhaRmJHVnRaVzUwSUQwZ2RXa3VaR2wyS0Z0ZExDQW5aR1Z0YnkxelkzSnBjSFF0WTI5MWJuUmtiM2R1SnlrN1hHNWNiaUFnSUNCcGJtUnBZMkYwYjNJdVkyeGhjM05NYVhOMExtRmtaQ2duYUdsa1pHVnVKeWs3WEc1Y2JpQWdJQ0JzWlhRZ1kyOTFiblJrYjNkdUlEMGdkR2x0WlNBdklERXdNREE3WEc0Z0lDQWdZMjl1YzNRZ2MzWm5JRDBnZEdocGN5NWZZM0psWVhSbFUxWkhTVzVrYVdOaGRHOXlLR052ZFc1MFpHOTNiaWs3WEc1Y2JpQWdJQ0JqYjNWdWRHUnZkMjVFYVhZdVlYQndaVzVrS0hOMlp5azdYRzRnSUNBZ1pXeGxiV1Z1ZEM1d2NtVndaVzVrS0dOdmRXNTBaRzkzYmtScGRpazdYRzVjYmlBZ0lDQmpiMjV6ZENCcGJuUmxjblpoYkNBOUlITmxkRWx1ZEdWeWRtRnNLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lHTnZkVzUwWkc5M2JpMHRPMXh1SUNBZ0lDQWdhV1lnS0dOdmRXNTBaRzkzYmlBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCamJHVmhja2x1ZEdWeWRtRnNLR2x1ZEdWeWRtRnNLVHRjYmlBZ0lDQWdJQ0FnWTI5MWJuUmtiM2R1UkdsMkxuSmxiVzkyWlNncE8xeHVYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjaTVqYkdGemMweHBjM1F1Y21WdGIzWmxLQ2RvYVdSa1pXNG5LVHRjYmlBZ0lDQWdJQ0FnYVc1a2FXTmhkRzl5TG1Oc1lYTnpUR2x6ZEM1aFpHUW9KM1pwYzJsaWJHVW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0F4TURBd0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJRk5XUnlCM2FYUm9JR052ZFc1MFpHOTNiaUJqYVhKamJHVmNiaUFnSUNvZ1FIQmhjbUZ0SUdOdmRXNTBaRzkzYmlBdElHTnZkVzUwWkc5M2JpQjBhVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNXpJRk5XUnlCamIzVnVkR1J2ZDI0Z2FXNWthV05oZEc5eVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOWpjbVZoZEdWVFZrZEpibVJwWTJGMGIzSW9ZMjkxYm5Sa2IzZHVPaUJ1ZFcxaVpYSXBPaUJUVmtkVFZrZEZiR1Z0Wlc1MElIdGNiaUFnSUNCamIyNXpkQ0J6ZG1jZ1BTQmtiMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwVGxNb0oyaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabkp5d2dKM04yWnljcE8xeHVJQ0FnSUdOdmJuTjBJR05wY21Oc1pTQTlJR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5ST1V5Z25hSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY25MQ0FuWTJseVkyeGxKeWs3WEc0Z0lDQWdZMmx5WTJ4bExuTmxkRUYwZEhKcFluVjBaVTVUS0c1MWJHd3NJQ2RqZUNjc0lDYzNKeWs3WEc0Z0lDQWdZMmx5WTJ4bExuTmxkRUYwZEhKcFluVjBaVTVUS0c1MWJHd3NJQ2RqZVNjc0lDYzNKeWs3WEc0Z0lDQWdZMmx5WTJ4bExuTmxkRUYwZEhKcFluVjBaVTVUS0c1MWJHd3NJQ2R5Snl3Z0p6WW5LVHRjYmlBZ0lDQmphWEpqYkdVdWMyVjBRWFIwY21saWRYUmxUbE1vYm5Wc2JDd2dKM04wZVd4bEp5d2dZR0Z1YVcxaGRHbHZiam9nWTI5MWJuUmtiM2R1SUNSN1kyOTFiblJrYjNkdWZYTWdiR2x1WldGeUlHbHVabWx1YVhSbElHWnZjbmRoY21SellDazdYRzRnSUNBZ2MzWm5MbUZ3Y0dWdVpDaGphWEpqYkdVcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhOMlp6dGNiaUFnZlZ4dVhHNGdJQzhxS2lCRGFHRnVaMlZ6SUhSb1pTQnpkR0YwWlNCdlppQjBhR1VnWkdWdGJ5QnpZM0pwY0hRZ0tITjBiM0F2Y0d4aGVTa2dLaTljYmlBZ2NISnBkbUYwWlNCZlkyaGhibWRsVTNSdmNGTjBZWFJsS0NrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OMElHbGpiMjRnUFNCMGFHbHpMbDl6ZEc5d1UzUmhjblJDZEc0dVoyVjBSV3hsYldWdWRITkNlVU5zWVhOelRtRnRaU2duWjNKdmF5MXBZMjl1SnlrN1hHNGdJQ0FnYVdOdmJsc3dYUzVqYkdGemMwNWhiV1VnUFNBblozSnZheTFwWTI5dUlHWmhjeUJtWVMxd2JHRjVKenRjYmlBZ0lDQjBhR2x6TGw5cGMxTjBiM0J3WldRZ1BTQWhkR2hwY3k1ZmFYTlRkRzl3Y0dWa08xeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOXBjMU4wYjNCd1pXUXBJSHRjYmlBZ0lDQWdJR2xqYjI1Yk1GMHVZMnhoYzNOT1lXMWxJRDBnSjJkeWIyc3RhV052YmlCbVlXd2dabUV0Y0dGMWMyVW5PMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbDlwYzFOMFpYQlFjbTlqWlhOelpXUXBYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzTjBZWEowVTJOeWFYQjBLQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcUlGSmxjM1JoY25SeklIUm9aU0J6WTNKcGNIUWdLaTljYmlBZ2NISnBkbUYwWlNCZmNtVnpkR0Z5ZEZOamNtbHdkQ2dwT2lCMmIybGtJSHRjYmlBZ0lDQm5jbTlyTG5Ob1pXeHNMbVJ2WTJ0TllXNWhaMlZ5TG1Oc2IzTmxLSFJvYVhNdVgyNXZaR1VoS1R0Y2JpQWdJQ0JuY205ckxuTm9aV3hzTG1Oc2IzTmxRV3hzS0NrN1hHNGdJQ0FnZEdocGN5NWZZMnhsWVhKU2IyOTBLQ2s3WEc0Z0lDQWdkR2hwY3k1ZmMyVjBTVzVwZEZCaGNtRnRjeWdwTzF4dUlDQWdJSFJvYVhNdWMzUmhjblFvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJEYkdWaGNuTWdkR2hsSUhKdmIzUWdaV3hsYldWdWRDQXFMMXh1SUNCd2NtbDJZWFJsSUY5amJHVmhjbEp2YjNRb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZjbTl2ZENBOUlIVnBMbVJwZGloYlhTd2dlMmxrT2lBblpHVnRieTF6WTNKcGNIUW5MQ0JqYkdGemMyVnpPaUFuZEhWMGIzSnBZV3h6TFhKdmIzUWdkSFYwYjNKcFlXeHpMWFJ5WVdOcklHUmxiVzh0WVhCd0xYTmpjbWx3ZENkOUtUdGNibHh1SUNBZ0lIUm9hWE11WDIxaGFXNUlaV0ZrWlhJZ1BTQjFhUzV3WVc1bGJDaGJYU3dnSjNSMWRHOXlhV0ZzY3kxdFlXbHVMV2hsWVdSbGNpY3BPMXh1SUNBZ0lIUm9hWE11WDJobFlXUmxjaUE5SUhWcExtZ3lLQ2NuS1R0Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWWdQU0IxYVM1a2FYWklLRnRkTENBbmRIVjBiM0pwWVd4ekxYSnZiM1F0YUdWaFpHVnlKeWs3WEc1Y2JpQWdJQ0IwYUdsekxsOWhZM1JwZG1sMGVTQTlJSFZwTG5CaGJtVnNLRnRkTENBbmRIVjBiM0pwWVd4ekxYSnZiM1F0WkdWelkzSnBjSFJwYjI0bktUdGNibHh1SUNBZ0lIUm9hWE11WDNCeWIyZHlaWE56UkdsMklEMGdkV2t1WkdsMlZpaGJYU3dnSjNSMWRHOXlhV0ZzY3kxeWIyOTBMWEJ5YjJkeVpYTnpKeWs3WEc0Z0lDQWdkR2hwY3k1ZmNISnZaM0psYzNNZ1BTQjFhUzVsYkdWdFpXNTBLQ2R3Y205bmNtVnpjeWNwTzF4dUlDQWdJSFJvYVhNdVgzQnliMmR5WlhOelUzUmxjSE1nUFNCMWFTNWthWFpVWlhoMEtDY25LVHRjYmx4dUlDQWdJSFJvYVhNdVgzQnliMmR5WlhOekxtMWhlQ0E5SURBN1hHNGdJQ0FnZEdocGN5NWZjSEp2WjNKbGMzTXVkbUZzZFdVZ1BTQXhPMXh1SUNCOVhHNWNiaUFnTHlvcUlGTmxkSE1nYVc1cGRHbGhiQ0J3WVhKaGJXVjBaWEp6SUNvdlhHNGdJSEJ5YVhaaGRHVWdYM05sZEVsdWFYUlFZWEpoYlhNb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRGTjBaWEFnUFNBd08xeHVJQ0FnSUhSb2FYTXVYMmx6VTNSdmNIQmxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lIUm9hWE11WDJselEyRnVZMlZzYkdWa0lEMGdabUZzYzJVN1hHNWNiaUFnSUNCamIyNXpkQ0JwWTI5dUlEMGdkR2hwY3k1ZmMzUnZjRk4wWVhKMFFuUnVMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVb0oyZHliMnN0YVdOdmJpY3BPMXh1SUNBZ0lHbGpiMjViTUYwdVkyeGhjM05PWVcxbElEMGdKMmR5YjJzdGFXTnZiaUJtWVd3Z1ptRXRjR0YxYzJVbk8xeHVJQ0FnSUhSb2FYTXVYMjVsZUhSVGRHVndRblJ1TG1Oc1lYTnpUR2x6ZEM1eVpXMXZkbVVvSjJScGMyRmliR1ZrSnlrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUTJ4dmMyVnpJR1JsYlc4Z2MyTnlhWEIwSUdSdlkyc2dLaTljYmlBZ2NISnBkbUYwWlNCZlkyeHZjMlZFYjJOcktDazZJSFp2YVdRZ2UxeHVJQ0FnSUdkeWIyc3VjMmhsYkd3dVpHOWphMDFoYm1GblpYSXVZMnh2YzJVb2RHaHBjeTVmYm05a1pTRXBPMXh1SUNBZ0lIUm9hWE11WTJGdVkyVnNVMk55YVhCMEtDazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1EyRnVZMlZzY3lCMGFHVWdjMk55YVhCMElDb3ZYRzRnSUdOaGJtTmxiRk5qY21sd2RDZ3BPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDlwYzBOaGJtTmxiR3hsWkNBOUlIUnlkV1U3WEc0Z0lDQWdSR1Z0YjFOamNtbHdkQzVqZFhKeVpXNTBUMkpxWldOMElEMGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJaR1J6SUdFZ2JtVjNJSE4wWlhBZ2RHOGdjMk55YVhCMFhHNGdJQ0FxSUVCd1lYSmhiU0J1WVcxbElDMGdVM1JsY0NCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCbWRXNWpJQzBnVTNSbGNDQm1kVzVqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnYjNCMGFXOXVjeUF0SUZOMFpYQWdiM0IwYVc5dWN5QW9aR1Z6WTNKcGNIUnBiMjRnWVc1a0lHUmxiR0Y1SUdGbWRHVnlJSE4wWlhBZ1pXNWtjeWxjYmlBZ0lDb2dRSEpsZEhWeWJuTWdVbVYwZFhKdWN5QjBhR1VnWTNWeWNtVnVkQ0JrWlcxdklITmpjbWx3ZENCdlltcGxZM1JjYmlBZ0lDb3ZYRzRnSUhOMFpYQW9ibUZ0WlRvZ2MzUnlhVzVuTENCbWRXNWpPaUFvS1NBOVBpQlFjbTl0YVhObFBIWnZhV1ErTENCdmNIUnBiMjV6UHpvZ2UyUmxjMk55YVhCMGFXOXVQem9nYzNSeWFXNW5MQ0JrWld4aGVUODZJRzUxYldKbGNuMHBPaUIwYUdseklIdGNiaUFnSUNCMGFHbHpMbDl6ZEdWd2MxdDBhR2x6TG5OMFpYQnpMbXhsYm1kMGFGMGdQU0I3WEc0Z0lDQWdJQ0J1WVcxbE9pQnVZVzFsTEZ4dUlDQWdJQ0FnWm5WdVl6b2dablZ1WXl4Y2JpQWdJQ0FnSUc5d2RHbHZibk02SUc5d2RHbHZibk1zWEc0Z0lDQWdmVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlRkR0Z5ZEhNZ2RHaGxJR1JsYlc4Z2MyTnlhWEIwSUNvdlhHNGdJR0Z6ZVc1aklITjBZWEowS0NrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJSFJvYVhNdVgybHVhWFJTYjI5MEtDazdYRzRnSUNBZ1ozSnZheTV6YUdWc2JDNXVaWGRXYVdWM0tIUm9hWE11Ym1GdFpTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZhWE5CZFhSdmJXRjBhV01wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM04wWVhKMFUyTnlhWEIwS0NrN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMkYxZEc5VGRHRnlkRVpwY25OMFUzUmxjQ2xjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11WDI1bGVIUlRkR1Z3S0NrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiLy8gUnVudGltZSBzeXN0ZW0gZm9yIGV4cG9ydGVkIEMvQysrLWZ1bmN0aW9ucyBjYWxsLlxuLy8gSXQgd2FzIHByZXZpb3VzZWx5IGRldmVsb3BlZCBhbmQgZG9lcyBOT1QgcHJvdmlkZSBjYWxsIHdhc20tZnVuY3Rpb25zIGluIFdlYldvcmtlcnMuXG5cbi8vIHR5cGUtdG8taGVhcCBjb3JyZXNwb25kZW5jZVxuY29uc3QgaGVhcE1hcCA9IHtcImkzMlwiOiBcIkhFQVAzMlwiLCAvLyBJbnQzMkFycmF5XG4gICAgICAgICAgICAgICAgIFwiZjMyXCI6IFwiSEVBUEYzMlwiIC8vIEZsb2F0MzJBcnJheVxuICAgICAgICAgICAgICAgIH07XG5cbi8vIHR5cGUgc2lnbmF0dXJlIHRvIHR5cGVkIGFycmF5ICxhcHBcbmNvbnN0IHR5cGVNYXAgPSB7XCJpMzJcIjogSW50MzJBcnJheSwgLy8gSW50MzJBcnJheVxuICAgICAgICAgICAgICAgICBcImYzMlwiOiBGbG9hdDMyQXJyYXkgLy8gRmxvYXQzMkFycmF5XG4gICAgICAgICAgICAgICAgfTsgXG4gXG4vLyB0eXBlLXRvLXNoaWZ0IG1hcFxuY29uc3Qgc2hpZnRNYXAgPSB7XCJpMzJcIjogMiwgLy8gSW50MzJBcnJheVxuICAgICAgICAgICAgICAgICAgXCJmMzJcIjogMiAvLyBGbG9hdDMyQXJyYXlcbiAgICAgICAgICAgICAgICAgfTtcblxuLy8gdHlwZS10by1jb2x1bW5fY3JlYXRvciBtYXBcbmNvbnN0IHR5cGVUb0NvbHVtbkNyZWF0b3JNYXAgPSB7XCJpMzJcIjogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImYzMlwiOiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheX07XG4gXG5cbi8vIENMQVNTRVMgVEhBVCBBUkUgVVNFRCBCWSBDUFAtV1JBUFBFUlxuXG4vLyBzaW1wbGUgYXJndW1lbnQ6IGEgbnVtYmVyIFxuY2xhc3MgQXJne1xuXG4gICAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhOyAgICAgICAgXG4gICAgfVxuXG4gICAgY29tcGxlbWVudEFyck9mUGFyYW1zKGFyck9mUGFyYW1zKSB7XG4gICAgICAgIGFyck9mUGFyYW1zLnB1c2godGhpcy5kYXRhKTtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZUeXBlcyhhcnJPZlR5cGVzKSB7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7ICAgICAgICBcbiAgICB9XG5cbiAgICBhbGxvY2F0ZU1lbW9yeUZvckJ1ZmZlcihtb2R1bGUpIHt9XG5cbiAgICBpc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpe1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlKSB7fVxuXG4gICAgZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlKSB7fVxuXG4gICAgZnJlZUJ1ZmZlcihtb2R1bGUpIHt9XG59XG5cbi8vIGNvbHVtbiBhcmd1bWVudFxuY2xhc3MgQXJnQ29sdW1uIGV4dGVuZHMgQXJnIHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHRhcmdldFR5cGUsIHRvVXBkYXRlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMudHlwZSA9IHRhcmdldFR5cGU7XG4gICAgICAgIHRoaXMudG9VcGRhdGUgPSB0b1VwZGF0ZTtcbiAgICAgICAgdGhpcy5idWYgPSAwOyAgICBcbiAgICAgICAgdGhpcy5udW1PZlJvd3MgPSBkYXRhLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZQYXJhbXMoYXJyT2ZQYXJhbXMpIHtcbiAgICAgICAgYXJyT2ZQYXJhbXMucHVzaCh0aGlzLmJ1Zik7XG4gICAgICAgIGFyck9mUGFyYW1zLnB1c2godGhpcy5udW1PZlJvd3MpO1xuICAgIH1cblxuICAgIGNvbXBsZW1lbnRBcnJPZlR5cGVzKGFyck9mVHlwZXMpIHtcbiAgICAgICAgYXJyT2ZUeXBlcy5wdXNoKCdudW1iZXInKTtcbiAgICAgICAgYXJyT2ZUeXBlcy5wdXNoKCdudW1iZXInKTsgICAgICAgIFxuICAgIH1cblxuICAgIGFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyKG1vZHVsZSkge1xuICAgICAgICB0aGlzLmJ1ZiA9IG1vZHVsZS5fbWFsbG9jKHRoaXMubnVtT2ZSb3dzICogdHlwZU1hcFt0aGlzLnR5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICB9XG5cbiAgICBpc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpe1xuICAgICAgICByZXR1cm4gKHRoaXMuYnVmICE9IDApO1xuICAgIH1cblxuICAgIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07ICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgYXJyYXkgPSBudWxsO1xuICAgICAgICAgICAgbGV0IGNvbCA9IHRoaXMuZGF0YTtcblxuICAgICAgICAgICAgaWYoKChjb2wudHlwZSA9PSAnaW50JykgJiYgKHR5cGUgPT0gJ2kzMicpKSBcbiAgICAgICAgICAgICAgIHx8ICgoY29sLnR5cGUgPT0gJ2RvdWJsZScpICYmICh0eXBlID09ICdmMzInKSkpXG4gICAgICAgICAgICAgIGFycmF5ID0gY29sLmdldFJhd0RhdGEoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKTtcblxuICAgICAgICAgICAgaWYoYXJyYXkpIFxuICAgICAgICAgICAgICBoZWFwLnNldChhcnJheSwgdGhpcy5idWYgPj4gc2hpZnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlKSB7XG4gICAgICAgIGlmKHRoaXMudG9VcGRhdGUgJiYgdGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IHRoaXMuYnVmO1xuICAgICAgICAgICAgbGV0IGJ5dGVzID0gdHlwZU1hcFt0eXBlXS5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgICAgIGxldCBhcnJheSA9IHRoaXMuZGF0YS5nZXRSYXdEYXRhKCk7XG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLm51bU9mUm93czsgaSsrKVxuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gaGVhcFtidWZmZXIgLyBieXRlcyArIGldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnJlZUJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgIG1vZHVsZS5fZnJlZSh0aGlzLmJ1Zik7XG4gICAgICAgICAgIHRoaXMuYnVmID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vLyBuZXcgY29sdW1uIGFyZ3VtZW50OiBhIG5ldyBjb2x1bW4gaXMgY3JlYXRlZFxuY2xhc3MgQXJnTmV3Q29sdW1uIGV4dGVuZHMgQXJnQ29sdW1uIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXRUeXBlLCBudW1PZlJvd3MpIHtcbiAgICAgICAgc3VwZXIoW10sIHRhcmdldFR5cGUsIHRydWUpO1xuICAgICAgICB0aGlzLm51bU9mUm93cyA9IG51bU9mUm93cztcbiAgICB9XG5cbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlKSB7fVxuXG4gICAgZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlKSB7XG4gICAgICAgIGlmKHRoaXMudG9VcGRhdGUgJiYgdGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgbGV0IGJ1ZiA9IHRoaXMuYnVmO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgY29sdW1uQ3JlYXRvciA9IHR5cGVUb0NvbHVtbkNyZWF0b3JNYXBbdHlwZV07ICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBhcnIgPSBuZXcgdHlwZU1hcFt0eXBlXSh0aGlzLm51bU9mUm93cyk7ICAgICAgICAgICAgXG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgYXJyW2ldID0gaGVhcFtidWYgLyBhcnIuQllURVNfUEVSX0VMRU1FTlQgKyBpXTtcblxuICAgICAgICAgICAgdGhpcy5kYXRhID0gY29sdW1uQ3JlYXRvcignbmFtZScsIGFycik7XG5cbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coYXJyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBtaXN0YWtlLCB3aGVuIHRoaXMubnVtT2ZSb3dzID0gNSAoVE9ETzogaW52ZXN0aWdhdGUgd2h5KVxuICAgICAgICAgICAgLy90aGlzLmRhdGEgPSBjb2x1bW5DcmVhdG9yKCduYW1lJywgbmV3IHR5cGVNYXBbdHlwZV0oaGVhcC5idWZmZXIsIHRoaXMuYnVmLCB0aGlzLm51bU9mUm93cykpO1xuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuZGF0YS5nZXRSYXdEYXRhKCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBhbiBhcnJheSBvZiBjb2x1bW5zIGFyZ3VtZW50XG5jbGFzcyBBcmdDb2x1bW5zIGV4dGVuZHMgQXJnIHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHRhcmdldFR5cGUsIHRvVXBkYXRlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMudHlwZSA9IHRhcmdldFR5cGU7XG4gICAgICAgIHRoaXMudG9VcGRhdGUgPSB0b1VwZGF0ZTtcbiAgICAgICAgdGhpcy5idWYgPSAwOyAgICBcbiAgICAgICAgdGhpcy5udW1PZkNvbHVtbnMgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgdGhpcy5udW1PZlJvd3MgPSBkYXRhWzBdLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZQYXJhbXMoYXJyT2ZQYXJhbXMpIHtcbiAgICAgICAgYXJyT2ZQYXJhbXMucHVzaCh0aGlzLmJ1Zik7XG4gICAgICAgIGFyck9mUGFyYW1zLnB1c2godGhpcy5udW1PZlJvd3MpO1xuICAgICAgICBhcnJPZlBhcmFtcy5wdXNoKHRoaXMubnVtT2ZDb2x1bW5zKTtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZUeXBlcyhhcnJPZlR5cGVzKSB7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7ICAgICAgICBcbiAgICB9XG5cbiAgICBhbGxvY2F0ZU1lbW9yeUZvckJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgdGhpcy5idWYgPSBtb2R1bGUuX21hbGxvYyh0aGlzLm51bU9mUm93cyAqIHRoaXMubnVtT2ZDb2x1bW5zIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdHlwZU1hcFt0aGlzLnR5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICB9XG5cbiAgICBpc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpe1xuICAgICAgICByZXR1cm4gKHRoaXMuYnVmICE9IDApO1xuICAgIH1cblxuICAgIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICBsZXQgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHB1dCBjb2x1bW5zIGRhdGEgdG8gYnVmZmVyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5udW1PZkNvbHVtbnM7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IGNvbCA9IHRoaXMuZGF0YVtpXTtcblxuICAgICAgICAgICAgICAgIGlmKCgoY29sLnR5cGUgPT0gJ2ludCcpICYmICh0eXBlID09ICdpMzInKSkgXG4gICAgICAgICAgICAgICAgICAgfHwgKChjb2wudHlwZSA9PSAnZG91YmxlJykgJiYgKHR5cGUgPT0gJ2YzMicpKSlcbiAgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gY29sLmdldFJhd0RhdGEoKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyB0eXBlTWFwW3R5cGVdKGNvbC5nZXRSYXdEYXRhKCkpO1xuXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgZGF0YSBhcnJheVxuICAgICAgICAgICAgICAgIGlmKGFycmF5ICE9IG51bGwpIFxuICAgICAgICAgICAgICAgICAgICBoZWFwLnNldChhcnJheSwgKHRoaXMuYnVmICsgaSAqIHRoaXMubnVtT2ZSb3dzICogbnVtT2ZCeXRlcykgPj4gc2hpZnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREYXRhRnJvbUJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy50b1VwZGF0ZSAmJiB0aGlzLmlzTWVtb3J5Rm9yQnVmZmVyQWxsb2NhdGVkKCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdGhpcy50eXBlO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gdGhpcy5udW1PZlJvd3M7XG4gICAgICAgICAgICBsZXQgbnVtT2ZDb2xzID0gdGhpcy5udW1PZkNvbHVtbnM7ICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBhcnIgPSBuZXcgdHlwZU1hcFt0eXBlXShoZWFwLmJ1ZmZlciwgdGhpcy5idWYsIG51bU9mUm93cyAqIG51bU9mQ29scyk7XG4gICAgICAgXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY29sRGF0YSA9IHRoaXMuZGF0YVtpXS5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IG51bU9mUm93czsgaisrKVxuICAgICAgICAgICAgICAgICAgY29sRGF0YVtqXSA9IGFycltqICsgaSAqIG51bU9mUm93c107ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZyZWVCdWZmZXIobW9kdWxlKSB7XG4gICAgICAgIGlmKHRoaXMuaXNNZW1vcnlGb3JCdWZmZXJBbGxvY2F0ZWQoKSkge1xuICAgICAgICAgICBtb2R1bGUuX2ZyZWUodGhpcy5idWYpO1xuICAgICAgICAgICB0aGlzLmJ1ZiA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLy8gYW4gYXJyYXkgb2YgbmV3IGNvbHVtbnM6IG5ldyBjb2x1bW5zIGFyZSBjcmVhdGVkXG5jbGFzcyBBcmdOZXdDb2x1bW5zIGV4dGVuZHMgQXJnQ29sdW1ucyB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXRUeXBlLCBudW1PZlJvd3MsIG51bU9mQ29sdW1ucykge1xuICAgICAgICBzdXBlcihbW11dLCB0YXJnZXRUeXBlLCB0cnVlKTsgIFxuICAgICAgICB0aGlzLmRhdGEgPSBbXTsgICAgICAgIFxuICAgICAgICB0aGlzLm51bU9mQ29sdW1ucyA9IG51bU9mQ29sdW1ucztcbiAgICAgICAgdGhpcy5udW1PZlJvd3MgPSBudW1PZlJvd3M7XG4gICAgfVxuXG4gICAgcHV0RGF0YVRvQnVmZmVyKG1vZHVsZSkgeyB9XG5cbiAgICBnZXREYXRhRnJvbUJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy50b1VwZGF0ZSAmJiB0aGlzLmlzTWVtb3J5Rm9yQnVmZmVyQWxsb2NhdGVkKCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdGhpcy50eXBlO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gdGhpcy5udW1PZlJvd3M7XG4gICAgICAgICAgICBsZXQgbnVtT2ZDb2xzID0gdGhpcy5udW1PZkNvbHVtbnM7XG4gICAgICAgICAgICBsZXQgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7ICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBjb2x1bW5DcmVhdG9yID0gdHlwZVRvQ29sdW1uQ3JlYXRvck1hcFt0eXBlXTtcbiAgICAgICAgICAgIGxldCBidWYgPSB0aGlzLmJ1ZjtcblxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG51bU9mQ29sczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFyciA9IG5ldyB0eXBlTWFwW3R5cGVdKG51bU9mUm93cyk7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgbnVtT2ZSb3dzOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIGFycltqXSA9IGhlYXBbYnVmIC8gbnVtT2ZCeXRlcyArIGogKyBpICogbnVtT2ZSb3dzXTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEucHVzaChjb2x1bW5DcmVhdG9yKChpICsgMSkudG9TdHJpbmcoKSwgYXJyKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNyZWF0ZSBjb2x1bW5zOiBoZXJlLCBtYXkgYmUgYSBwcm9ibGVtIHdoZW4gbnVtT2ZSb3dzID0gNSAgICAgICAgICAgIFxuICAgICAgICAgICAgLypmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnB1c2goY29sdW1uQ3JlYXRvcigoaSArIDEpLnRvU3RyaW5nKCksIG5ldyB0eXBlTWFwW3R5cGVdKGhlYXAuYnVmZmVyLCBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWYgKyBpICogbnVtT2ZSb3dzICogbnVtT2ZCeXRlcywgbnVtT2ZSb3dzKSkpOyovXG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGEgd3JhcHBlciBmb3IgZXhwb3J0ZWQgQy9DKystZnVuY3Rpb24gY2FsbFxuZnVuY3Rpb24gY3BwRnVuY1dyYXBwZXIobW9kdWxlLCBjRnVuY05hbWUsIHJldHVyblR5cGUsIGFyZ3MpXG57XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIC8vIGFsbG9jYXRlIG1lbW9yeSBmb3IgYnVmZmVyc1xuICAgIGZvcihsZXQgYXJnIG9mIGFyZ3MpICAgICAgICAgXG4gICAgICAgIGFyZy5hbGxvY2F0ZU1lbW9yeUZvckJ1ZmZlcihtb2R1bGUpO1xuICAgIFxuICAgIGxldCBpc0Vub3VnaE9mTWVtb3J5QWxsb2NhdGVkID0gdHJ1ZTtcblxuICAgIC8vIGNoZWNrIG1lbW9yeSBhbGxvY2F0aW9uXG4gICAgZm9yKGxldCBhcmcgb2YgYXJncylcbiAgICAgICAgaXNFbm91Z2hPZk1lbW9yeUFsbG9jYXRlZCAmPSBhcmcuaXNNZW1vcnlGb3JCdWZmZXJBbGxvY2F0ZWQoKTsgIFxuICAgIFxuICAgIC8vIHJ1biBleHBvcnRlZCBmdW5jdGlvbiBpZiBlbm91Z2ggb2YgbWVtb3J5IGlzIGFsbG9jYXRlZFxuICAgIGlmKGlzRW5vdWdoT2ZNZW1vcnlBbGxvY2F0ZWQpIHtcblxuICAgICAgICBsZXQgcGFyYW1zID0gW107IC8vIGFyZ3VtZW50cyB0aGF0IGFyZSBwdXQgdG8gdGhlIGV4cG9ydGVkIGZ1bmN0aW9uXG4gICAgICAgIGxldCB0eXBlcyA9IFtdOyAvLyB0aGVpciB0eXBlc1xuXG4gICAgICAgIC8vIHByZXBhcmUgZGF0YSB0aGF0IGlzIHB1dCB0byBleHBvcnRlZCBmdW5jdGlvblxuICAgICAgICBmb3IobGV0IGFyZyBvZiBhcmdzKSB7XG4gICAgICAgICAgICBhcmcuY29tcGxlbWVudEFyck9mUGFyYW1zKHBhcmFtcyk7XG4gICAgICAgICAgICBhcmcuY29tcGxlbWVudEFyck9mVHlwZXModHlwZXMpO1xuICAgICAgICAgICAgYXJnLnB1dERhdGFUb0J1ZmZlcihtb2R1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV4dGVuZGVkVHlwZU9mUmV0dXJuID0gKHJldHVyblR5cGUgPT0gJ251bScpID8gJ251bWJlcicgOiBudWxsOyAgIFxuICAgICAgICBcbiAgICAgICAgLy8gY2FsbCBleHBvcnRlZCBmdW5jdGlvblxuICAgICAgICBpZihleHRlbmRlZFR5cGVPZlJldHVybilcbiAgICAgICAgICAgIHJlc3VsdCA9IG1vZHVsZS5jY2FsbChjRnVuY05hbWUsIGV4dGVuZGVkVHlwZU9mUmV0dXJuLCB0eXBlcywgcGFyYW1zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzdWx0ID0gbW9kdWxlLmNjYWxsKGNGdW5jTmFtZSwgZXh0ZW5kZWRUeXBlT2ZSZXR1cm4sIHR5cGVzLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgLy8gdXBkYXRlIGFuZCBnZXQgZGF0YSBmcm9tIGJ1ZmZlcnMgaWYgcmVxdWlyZWRcbiAgICAgICAgZm9yKGxldCBhcmcgb2YgYXJncylcbiAgICAgICAgICAgIGFyZy5nZXREYXRhRnJvbUJ1ZmZlcihtb2R1bGUpOyAgICAgICBcbiAgICB9XG5cbiAgICAvLyBjbGVhciBidWZmZXJzXG4gICAgZm9yKGxldCBhcmcgb2YgYXJncykgICAgICAgICBcbiAgICAgICAgYXJnLmZyZWVCdWZmZXIobW9kdWxlKTtcblxuICAgIGlmKHJlc3VsdCAhPSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiByZXN1bHQ7ICAgIFxufSAvLyBjcHBGdW5jV3JhcHBlclxuXG5cbi8vIEEgTEFZRVIgQkVUV0VFTiBKUyBBTkQgQ1BQLVdSQVBQRVJcblxuLy8gUGFyYW1ldGVycyBjcmVhdG9yXG5sZXQgUGFyYW0gPSB7XG4gICAgaW50Q29sdW1uIChjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdDb2x1bW4oY29sdW1uLCAnaTMyJyk7XG4gICAgfSxcbiAgICBcbiAgICBuZXdJbnRDb2x1bW4gKG51bU9mUm93cykge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ05ld0NvbHVtbignaTMyJywgbnVtT2ZSb3dzKTtcbiAgICB9LFxuXG4gICAgaW50Q29sdW1ucyhjb2x1bW5zKXtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdDb2x1bW5zKGNvbHVtbnMudG9MaXN0KCksICdpMzInKTtcbiAgICB9LFxuXG4gICAgbmV3SW50Q29sdW1ucyhudW1PZlJvd3MsIG51bU9mQ29sdW1ucykge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ05ld0NvbHVtbnMoJ2kzMicsIG51bU9mUm93cywgbnVtT2ZDb2x1bW5zKTtcbiAgICB9LFxuXG4gICAgZmxvYXRDb2x1bW4gKGNvbHVtbikge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ0NvbHVtbihjb2x1bW4sICdmMzInKTtcbiAgICB9LFxuXG4gICAgbmV3RmxvYXRDb2x1bW4gKG51bU9mUm93cykge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ05ld0NvbHVtbignZjMyJywgbnVtT2ZSb3dzKTtcbiAgICB9LFxuXG4gICAgZmxvYXRDb2x1bW5zKGNvbHVtbnMpe1xuICAgICAgICByZXR1cm4gbmV3IEFyZ0NvbHVtbnMoY29sdW1ucy50b0xpc3QoKSwgJ2YzMicpO1xuICAgIH0sXG5cbiAgICBuZXdGbG9hdENvbHVtbnMobnVtT2ZSb3dzLCBudW1PZkNvbHVtbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdOZXdDb2x1bW5zKCdmMzInLCBudW1PZlJvd3MsIG51bU9mQ29sdW1ucyk7XG4gICAgfSxcblxuICAgIGludChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmcobnVtYmVyKTtcbiAgICB9LFxuXG4gICAgbnVtKG51bWJlcikge1xuICAgICAgICByZXR1cm4gbmV3IEFyZyhudW1iZXIpO1xuICAgIH1cbn07XG5cbi8vIFJldHVybiB2YWx1ZSBjcmVhdG9yXG5sZXQgUmV0dXJuID0ge1xuICAgIHRhYmxlRnJvbUNvbHVtbnMoYXJnQ29sdW1ucykge1xuICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGFyZ0NvbHVtbnMuZGF0YSk7XG4gICAgfSxcblxuICAgIG51bShudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9LFxuXG4gICAgaW50KG51bWJlcikge1xuICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH0sXG5cbiAgICBkb3VibGUobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfSxcblxuICAgIGNvbHVtbihhcmdDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGFyZ0NvbHVtbi5kYXRhO1xuICAgIH1cbn07XG5cbi8vIFRoZSBtYWluIHRvb2wgdGhhdCBjb21iaW5lcyBhbGwgdG9nZXRoZXJcbmV4cG9ydCBmdW5jdGlvbiBjYWxsV2FzbShtb2R1bGUsIGZ1bmNOYW1lLCBpbnB1dHMpIHtcbiAgICAvLyBnZXQgc3BlY2lmaWNhdGlvbiBvZiBleHBvcnRlZCBDL0MrKy1mdW5jdGlvblxuICAgIGxldCBmdW5jU3BlY2lmaWNhdGlvbiA9IG1vZHVsZVtmdW5jTmFtZV07XG5cbiAgICAvLyBnZXQgYXJndW1uZXRzXG4gICAgbGV0IGFyZ3MgPSBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHM7IFxuXG4gICAgLy8gYXJyYXkgb2YgYXJndW1lbnRzIHRoYXQgZnVydGhlciBhcmUgdXNlZCBieSBjcHAtd3JhcHBlclxuICAgIGxldCBjcHBGdW5jSW5wdXQgPSBbXTtcblxuICAgIC8vIGNvbXBsZXRlIGFuIGlucHV0IGZvciBjcHBcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yKGxldCBrZXkgaW4gYXJncyl7XG4gICAgICAgIGxldCBhcmcgPSBhcmdzW2tleV07IFxuICAgICAgICBcbiAgICAgICAgLy8gc2tpcCBhdXhpbGlyeSBlbGVtZW50XG4gICAgICAgIGlmKGtleSA9PSAnX2NhbGxSZXN1bHQnKSAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBhbiBhcmd1bWVudFxuICAgICAgICBzd2l0Y2goYXJnLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAnZmxvYXRDb2x1bW5zJzpcbiAgICAgICAgICAgIGNhc2UgJ2ludCc6XG4gICAgICAgICAgICBjYXNlICdudW0nOlxuICAgICAgICAgICAgY2FzZSAnZmxvYXRDb2x1bW4nOlxuICAgICAgICAgICAgY2FzZSAnaW50Q29sdW1uJzpcbiAgICAgICAgICAgIGNhc2UgJ2ludENvbHVtbnMnOlxuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0gUGFyYW1bYXJnLnR5cGVdKGlucHV0c1tpXSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbmV3RmxvYXRDb2x1bW5zJzpcbiAgICAgICAgICAgIGNhc2UgJ25ld0ludENvbHVtbnMnOlxuICAgICAgICAgICAgICAgIGxldCB2YWwxID0gYXJnc1sgYXJnWydudW1PZlJvd3MnXVsncmVmJ10gXS5kYXRhW2FyZ1snbnVtT2ZSb3dzJ11bJ3ZhbHVlJ11dO1xuICAgICAgICAgICAgICAgIGxldCB2YWwyID0gYXJnc1sgYXJnWydudW1PZkNvbHVtbnMnXVsncmVmJ10gXS5kYXRhW2FyZ1snbnVtT2ZDb2x1bW5zJ11bJ3ZhbHVlJ11dO1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0gUGFyYW1bYXJnLnR5cGVdKHZhbDEsIHZhbDIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbmV3RmxvYXRDb2x1bW4nOlxuICAgICAgICAgICAgY2FzZSAnbmV3SW50Q29sdW1uJzpcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gYXJnc1sgYXJnWydudW1PZlJvd3MnXVsncmVmJ10gXS5kYXRhW2FyZ1snbnVtT2ZSb3dzJ11bJ3ZhbHVlJ11dO1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0gUGFyYW1bYXJnLnR5cGVdKHZhbCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IC8vIHN3aXRjaFxuXG4gICAgICAgIGNwcEZ1bmNJbnB1dC5wdXNoKGFyZ3Nba2V5XS5kYXRhKTtcblxuICAgIH0gLy8gZm9yIGtleSAgICBcblxuICAgIC8vIENBTEwgRVhQT1JURUQgQ1BQLUZVTkNUSU9OXG4gICAgbGV0IGNhbGxSZXN1bHQgPSBjcHBGdW5jV3JhcHBlcihtb2R1bGUsIGZ1bmNOYW1lLCAnbnVtJywgY3BwRnVuY0lucHV0KTtcblxuICAgIC8vIHN0b3JlIHJlc3VsdCB0aGF0IGlzIHJldHVybmVkIGJ5IGV4cG9ydGVkIGNwcC1mdW5jdGlvblxuICAgIGFyZ3MuX2NhbGxSZXN1bHQgPSBQYXJhbS5udW0oY2FsbFJlc3VsdCk7XG5cbiAgICAvLyBjcmVhdGUgb3V0cHV0XG4gICAgbGV0IG91dHB1dCA9IGZ1bmNTcGVjaWZpY2F0aW9uLm91dHB1dDtcblxuICAgIC8vIGlmIGEgc2luZ2xlIG9iamVjdCBtdXN0IGJlIHJldHVybmVkXG4gICAgaWYob3V0cHV0Wyd0eXBlJ10gIT0gJ29iamVjdHMnKVxuICAgICAgcmV0dXJuIFJldHVybltvdXRwdXRbJ3R5cGUnXV0oYXJnc1tvdXRwdXRbJ3NvdXJjZSddXS5kYXRhKTtcblxuICAgIGxldCBhcnJheVRvUmV0dXJuID0gW107XG5cbiAgICAvLyBwdXNoIGRhdGEgb2YgdGhlIHJlcXVpcmVkIGFyZ3VtZW50c1xuICAgIGZvcihsZXQgbmFtZSBvZiBvdXRwdXRbJ3NvdXJjZSddKVxuICAgICAgYXJyYXlUb1JldHVybi5wdXNoKGFyZ3NbbmFtZV0uZGF0YS5kYXRhKTtcblxuICAgIHJldHVybiBhcnJheVRvUmV0dXJuO1xuICB9IC8vIGNhbGxXYXNtIiwiLy8gVXRpbGl0aWVzIGZvciBjYWxsaW5nIHdhc20tZnVuY3Rpb25zIHZpYSB3ZWJ3b3JrZXIuXG5cbi8vIFdlIHVzZSBhbiBhcHByb2FjaCB0aGF0IGlzIHdlbGwgZGVzY3JpYmVkIGhlcmU6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG4vLyBJdCBoYXMgYmVlbiBtb2RpZmllZCBmb3IgdXNhZ2UgaW4gREFUQUdST0suXG5cbi8vIENvbnN0YW50cyBmb3Igd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VycyBydW50aW1lIHN5c3RlbVxuY29uc3QgVFlQRSA9ICd0eXBlJztcbmNvbnN0IE5VTV9UWVBFID0gJ251bSc7XG5jb25zdCBGTE9BVF9DT0xVTU5fVFlQRSA9ICdmbG9hdENvbHVtbic7XG5jb25zdCBJTlRfQ09MVU1OX1RZUEUgPSAnaW50Q29sdW1uJztcbmNvbnN0IEZMT0FUX0NPTFVNTlNfVFlQRSA9ICdmbG9hdENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRSA9ICduZXdGbG9hdENvbHVtbnMnO1xuY29uc3QgSU5UX0NPTFVNTlNfVFlQRSA9ICdpbnRDb2x1bW5zJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OU19UWVBFID0gJ25ld0ludENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFID0gJ25ld0Zsb2F0Q29sdW1uJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OX1RZUEUgPSAnbmV3SW50Q29sdW1uJztcbmNvbnN0IENPTFVNTiA9ICdjb2x1bW4nO1xuY29uc3QgQ0FMTF9SRVNVTFQgPSAnX2NhbGxSZXN1bHQnO1xuY29uc3QgTlVNX09GX1JPV1MgPSAnbnVtT2ZSb3dzJztcbmNvbnN0IE5VTV9PRl9DT0xVTU5TID0gJ251bU9mQ29sdW1ucyc7XG5jb25zdCBSRUYgPSAncmVmJztcbmNvbnN0IFZBTFVFID0gJ3ZhbHVlJztcbmNvbnN0IFRBQkxFX09GX0NPTFVNTlMgPSAndGFibGVGcm9tQ29sdW1ucyc7XG5jb25zdCBPQkpFQ1RTID0gJ29iamVjdHMnO1xuY29uc3QgSU5UX1RZUEUgPSAnaW50JztcbmNvbnN0IERPVUJMRV9UWVBFID0gJ2RvdWJsZSc7XG5jb25zdCBOVU1CRVIgPSAnbnVtYmVyJztcblxuLy8gVHlwZS10by1oZWFwIGNvcnJlc3BvbmRlbmNlLlxuLy8gSXQgaXMgcmVxdWlyZWQgZm9yIEpTLW1vZHVsZSBnZW5lcmF0ZWQgYnkgRW1zY3JpcHRlbixcbi8vIGFuZCBpdCBpcyB1c2VkLCB3aGVuIHBhc3NpbmcgYXJyYXkgZGF0YSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG5jb25zdCBoZWFwTWFwID0ge1xuICAgICAgICAgICAgICAgICAnaW50Q29sdW1uJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbnMnOiBcIkhFQVBGMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IFwiSEVBUEYzMlwiLFxuICAgICAgICAgICAgICAgICAnaW50Q29sdW1ucyc6IFwiSEVBUDMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiBcIkhFQVAzMlwiXG4gICAgICAgICAgICAgICAgfTtcblxuLy8gVHlwZSBzaWduYXR1cmUgdG8gdHlwZWQgYXJyYXkgbWFwLlxuLy8gSXQgaXMgdXNlZCwgd2hlbiBtYW5pcHVsYXRpbmcgY29sdW1uKHMpLlxuY29uc3QgdHlwZU1hcCA9IHtcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbic6IEludDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbic6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiBJbnQzMkFycmF5LCAgXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogSW50MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogRmxvYXQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogSW50MzJBcnJheVxuICAgICAgICAgICAgICAgIH07IFxuXG4vLyBUeXBlLXRvLXNoaWZ0IG1hcC5cbi8vIEl0IGlzIHVzZWQsIHdoZW4gcGFzc2luZyBhcnJheSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3IFxuY29uc3Qgc2hpZnRNYXAgPSB7J2ludENvbHVtbic6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogMiwgXG4gICAgICAgICAgICAgICAgICAnZmxvYXRDb2x1bW5zJzogMiwgIFxuICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiAyLCAgXG4gICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6IDIsXG4gICAgICAgICAgICAgICAgICAnbmV3RmxvYXRDb2x1bW4nOiAyLFxuICAgICAgICAgICAgICAgICAgJ25ld0ludENvbHVtbic6IDJcbiAgICAgICAgICAgICAgICAgfTsgICAgICAgICBcblxuLy8gR2V0IGlucHV0IGZvciBDKystZnVuY3Rpb24uXG4vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIHNwZWNpZmljYXRpb24gb2YgYXJndW1lbnRzIChhcmdzU3BlY2lmaWNhdGlvbikgJiBpbnB1dCBkYXRhIChpbnB1dFZhbHMpXG4vLyBhbmQgcmV0dXJucyBpbnB1dCB0aGF0IHdpbGwgYmUgZnVydGhlciB1c2VkIGluIGNwcC93YXNtLWZ1bmN0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGdldENwcElucHV0KGFyZ3NTcGVjaWZpY2F0aW9uLCBpbnB1dFZhbHMpIHtcbiAgICBsZXQgY3BwRnVuY0lucHV0ID0gW107XG4gICAgbGV0IHJlZjtcblxuICAgIC8vIGNvbXBsZXRlIGFuIGlucHV0IGZvciBjcHBcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yKGNvbnN0IGtleSBpbiBhcmdzU3BlY2lmaWNhdGlvbikge1xuICAgICAgICBjb25zdCBhcmcgPSBhcmdzU3BlY2lmaWNhdGlvbltrZXldOyBcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuICAgICAgICBcbiAgICAgICAgLy8gc2tpcCBhdXhpbGlyeSBlbGVtZW50XG4gICAgICAgIGlmKGtleSA9PT0gQ0FMTF9SRVNVTFQpICAgICAgICAgICAgIFxuICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgLy8gaGVyZSwgd2UgY29uc2lkZXIgZWFjaCB0eXBlIG9mIGlucHV0XG4gICAgICAgIHN3aXRjaCh0eXBlKSB7ICAgICAgICAgICBcbiBcbiAgICAgICAgICAgIC8vIG51bWJlcnNcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmRhdGEgPSBpbnB1dFZhbHNbaV07XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcblxuICAgICAgICAgICAgICAgIGxldCBhcnJheTtcblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgT0sgaWYgdHlwZSBvZiBjb2x1bW4gYW5kIHRhcmdldCB0eXBlIGNvaW5zaWRlXG4gICAgICAgICAgICAgICAgLy9hcnJheSA9IGlucHV0VmFsc1tpXS5nZXRSYXdEYXRhKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgY29sID0gaW5wdXRWYWxzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gaGVyZSwgd2UgY2hlY2sgdHlwZXMgYW5kIHBlcmZvcm0gYW4gYXBwcm9wcmlhdGUgdHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgaWYoICggKGNvbC50eXBlID09PSBJTlRfVFlQRSkgJiYgKHR5cGUgPT09IElOVF9DT0xVTU5fVFlQRSkgKSBcbiAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKTtcblxuICAgICAgICAgICAgICAgIC8qaWYoKChjb2wudHlwZSA9PSAnaW50JykgJiYgKHR5cGUgPT0gSU5UX0NPTFVNTl9UWVBFKSkgXG4gICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbC50eXBlID09ICdkb3VibGUnKSAmJiAodHlwZSA9PSBGTE9BVF9DT0xVTU5fVFlQRSkpKVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyB0eXBlTWFwW3R5cGVdKGNvbC5nZXRSYXdEYXRhKCkpOyovXG5cbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0eXBlc1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXknOiBhcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bU9mUm93cyc6IGFycmF5Lmxlbmd0aH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gbmV3IGNvbHVtbiBcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAwOyAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfUk9XU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIGlmIChhcmdzU3BlY2lmaWNhdGlvbltyZWZdLnR5cGUgPT09IE5VTV9UWVBFKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGFbYXJnW05VTV9PRl9ST1dTXVtWQUxVRV1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyBvciBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBbXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIE9LIGlmIHR5cGUgb2YgY29sdW1ucyBhbmQgdGFyZ2V0IHR5cGUgY29pbnNpZGVcbiAgICAgICAgICAgICAgICAvL2ZvcihsZXQgY29sIG9mIGlucHV0VmFsc1tpXS50b0xpc3QoKSlcbiAgICAgICAgICAgICAgICAvLyAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBoZXJlLCB3ZSBjaGVjayB0eXBlcyBhbmQgcGVyZm9ybSBhbiBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICBmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICBpZiggKCAoY29sLnR5cGUgPT09IElOVF9UWVBFKSAmJiAodHlwZSA9PT0gSU5UX0NPTFVNTl9UWVBFKSApIFxuICAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgIGFycmF5cy5wdXNoKGNvbC5nZXRSYXdEYXRhKCkpO1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLypmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICAgIGlmKCgoY29sLnR5cGUgPT0gJ2ludCcpICYmICh0eXBlID09IElOVF9DT0xVTU5fVFlQRSkpIFxuICAgICAgICAgICAgICAgICAgICAgIHx8ICgoY29sLnR5cGUgPT0gJ2RvdWJsZScpICYmICh0eXBlID09IEZMT0FUX0NPTFVNTl9UWVBFKSkpXG4gICAgICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7Ki9cblxuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXlzJzogYXJyYXlzLFxuICAgICAgICAgICAgICAgICAgICAnbnVtT2ZSb3dzJzogYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgJ251bU9mQ29sdW1ucyc6IGFycmF5cy5sZW5ndGh9O1xuXG4gICAgICAgICAgICAgICAgaSsrOyAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zIG9yIG5ldyBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgdmFsMSA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHZhbDIgPSAwO1xuXG4gICAgICAgICAgICAgICAgcmVmID0gYXJnW05VTV9PRl9ST1dTXVtSRUZdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDEgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwxID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfUk9XU11bVkFMVUVdXTtcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfQ09MVU1OU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1JlZjonKTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlZik7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDIgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwyID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfQ09MVU1OU11bVkFMVUVdXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsMSxcbiAgICAgICAgICAgICAgICAgICdudW1PZkNvbHVtbnMnOiB2YWwyfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICBcblxuICAgICAgICAgICAgZGVmYXVsdDogXG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBUT0RPOiBzcGVjaWZ5IGJlaGF2aW91ciAgICAgICAgICAgXG4gICAgICAgICAgICB9IC8vIHN3aXRjaCAgICAgICAgXG5cbiAgICAgICAgY3BwRnVuY0lucHV0LnB1c2goYXJnKTtcbiAgICB9IC8vIGZvciBrZXlcblxuICAgIC8vY29uc29sZS5sb2coJ2NwcEZ1bmNJbnB1dDonKTtcbiAgICAvL2NvbnNvbGUubG9nKGNwcEZ1bmNJbnB1dCk7XG5cbiAgICByZXR1cm4gY3BwRnVuY0lucHV0O1xufSAvLyBnZXRDcHBJbnB1dFxuXG4vLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIGJ1ZmZlcnMgZm9yIGFycmF5IGRhdGFcbmZ1bmN0aW9uIGFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyKG1vZHVsZSwgaW5wdXRzKSB7XG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHsgXG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2godHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOiBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuZGF0YS5idWYgPSBtb2R1bGUuX21hbGxvYyhhcmcuZGF0YS5udW1PZlJvd3MgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOiAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTogLy8gYWxsb2NhdGlvbiBtZW1vcnkgZm9yIGNvbHVtbnMgdGhhdCBhcmUgY3JlYXRlZFxuICAgICAgICAgICAgICAgIGFyZy5kYXRhLmJ1ZiA9IG1vZHVsZS5fbWFsbG9jKGFyZy5kYXRhLm51bU9mUm93cyAqIGFyZy5kYXRhLm51bU9mQ29sdW1ucyBcbiAgICAgICAgICAgICAgICAgICAgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gVE9ETzogcHJvY2VzcyBvdGhlciBjYXNlcyBhbmQgbWlzdGFrZXNcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICB9ICBcbiAgICB9XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygnaW5wdXRzIGFmdGVyIG1lbW9yeSBhbGxvY2F0aW9uOicpO1xuICAgIC8vY29uc29sZS5sb2coaW5wdXRzKTtcbn0gLy8gYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXJcblxuLy8gR2V0IGFycmF5IG9mIHZhbHVlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVBhcmFtcyhpbnB1dHMpIHtcbiAgICBsZXQgcGFyYW1zID0gW107XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcblxuICAgICAgICAgICAgLy8gbnVtYmVyc1xuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1uICYgbmV3IGNvbHVtblxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEuYnVmKTsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6IFxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhLmJ1Zik7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChhcmcuZGF0YS5udW1PZkNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbn0gLy8gZ2V0QXJyT2ZXYXNtUGFyYW1zXG5cbi8vIEdldCBhcnJheSBvZiB0eXBlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVR5cGVzKGlucHV0cykge1xuICAgIGxldCB0eXBlcyA9IFtdO1xuXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgc3dpdGNoIChhcmcudHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufSAvLyBnZXRBcnJPZldhc21UeXBlc1xuXG4vLyBQdXQgYXJyYXkgZGF0YSB0byBidWZmZXJcbmZ1bmN0aW9uIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGxldCBzaGlmdDtcbiAgICBsZXQgaGVhcDsgICAgXG4gICAgXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHNoaWZ0ID0gc2hpZnRNYXBbdHlwZV07XG4gICAgICAgICAgICAgICAgaGVhcCA9IG1vZHVsZVtoZWFwTWFwW3R5cGVdXTsgIFxuICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFyZy5kYXRhLmFycmF5LCBhcmcuZGF0YS5idWYgPj4gc2hpZnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICAgICAgICAgIGxldCBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQ29sdW1ucyA9IGFyZy5kYXRhLm51bU9mQ29sdW1ucztcbiAgICAgICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBhcmcuZGF0YS5hcnJheXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2x1bW5zOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFycmF5c1tpXSwgKGJ1ZiArIGkgKiBudW1PZlJvd3MgKiBudW1PZkJ5dGVzKSA+PiBzaGlmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uKHMpXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn0gLy8gcHV0RGF0YVRvQnVmZmVyXG5cbi8vIEdldCBhcnJheSBkYXRhIGZyb20gYnVmZmVyLlxuZnVuY3Rpb24gZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlLCBpbnB1dHMpIHtcblxuICAgIGxldCBoZWFwO1xuICAgIGxldCBudW1PZlJvd3M7XG4gICAgbGV0IG51bU9mQ29scztcbiAgICBsZXQgbnVtT2ZCeXRlczsgICAgXG4gICAgbGV0IGJ1ZjtcblxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHsgLy8gUHJvY2VzcyBlYWNoIHR5cGUgb2YgaW5wdXRcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIGNvbHVtbihzKVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTogICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UOyAgICBcbiAgICAgICAgICAgICAgICBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqXTtcblxuICAgICAgICAgICAgICAgIGFyZy5hcnJheSA9IGFycmF5O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOiBcbiAgICAgICAgICAgICAgICBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgICAgIG51bU9mUm93cyA9IGFyZy5kYXRhLm51bU9mUm93cztcbiAgICAgICAgICAgICAgICBudW1PZkNvbHMgPSBhcmcuZGF0YS5udW1PZkNvbHVtbnM7XG4gICAgICAgICAgICAgICAgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7ICAgIFxuICAgICAgICAgICAgICAgIGJ1ZiA9IGFyZy5kYXRhLmJ1ZjtcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXlzID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICBsZXQgYXJyID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgICBhcnJbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqICsgaSAqIG51bU9mUm93c107ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goYXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhcmcuYXJyYXlzID0gYXJyYXlzO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSAgICAgICAgICAgIFxufSAvLyBnZXREYXRhRnJvbUJ1ZmZlclxuXG4vLyBDbGVhciBtZW1vcnkgYWxsb2NhdGVkIGZvciBhcnJheSBkYXRhXG5mdW5jdGlvbiBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSBcbiAgICAgICAgc3dpdGNoKGFyZy50eXBlKSB7IC8vIHByb2Nlc3MgZWFjaCB0eXBlIG9mIGlucHV0XG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBlYWNoIG5vbi1udW1iZXIgY2FzZVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIG1vZHVsZS5fZnJlZShhcmcuZGF0YS5idWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgIH0gICAgXG59IC8vIGNsZWFyTWVtb3J5Rm9yQnVmZmVyXG5cbi8vIEV4dHJhY3QgbmV3bHkgY3JlYXRlZCBkYXRhOiBuZXcgY29sdW1uKHMpIGFyZSBjcmVhdGVkXG5mdW5jdGlvbiBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbkFyZ3MsIGFyZ3NBZnRlcldhc21DYWxsKSB7XG4gICAgLy8gdHlwZS10by1jb2x1bW5fY3JlYXRvciBtYXBcbiAgICBjb25zdCB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwID0geyduZXdGbG9hdENvbHVtbnMnOiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5fTtcblxuICAgIGxldCBpID0gMDtcblxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSBcbiAgICB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaChhcmcudHlwZSl7IC8vIFByb2Nlc3MgZWFjaCB0eXBlXG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4ocylcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgbmFtZTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWUgPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gKDApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBcbiAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBhcmcubmFtZTtcblxuICAgICAgICAgICAgICAgIGFyZy5jb2x1bW4gPSB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lLFxuICAgICAgICAgICAgICAgICAgICBhcmdzQWZ0ZXJXYXNtQ2FsbFtpXS5hcnJheSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gW107XG4gICAgICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWVzID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrID0gMTsgayA8PSBsZW5ndGg7IGsrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goKGspLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGVsc2UgbmFtZXMgPSBhcmcubmFtZXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lc1tqXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5c1tqXSkpO1xuXG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBjb2x1bW5zO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGkrKztcbiAgICB9XG59IC8vIGV4dHJhY3ROZXdseUNyZWF0ZWREYXRhXG5cbi8vIEdldCBvdXRwdXQgZGF0YTogb3ZlcmFsbCBvdXRwdXQgaXMgY3JlYXRlZFxuZnVuY3Rpb24gZ2V0T3V0cHV0KGZ1bmNTcGVjaWZpY2F0aW9uKSB7ICBcbiAgICBsZXQgb3V0cHV0ID0gZnVuY1NwZWNpZmljYXRpb24ub3V0cHV0O1xuICAgIFxuICAgIGNvbnN0IHR5cGVUb0RhdGFGaWVsZE1hcCA9IHsnbmV3RmxvYXRDb2x1bW5zJzogJ2NvbHVtbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6ICdjb2x1bW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiAnY29sdW1uJ307XG5cbiAgICBzd2l0Y2gob3V0cHV0LnR5cGUpIHtcblxuICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MVU1OOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW47XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFRBQkxFX09GX0NPTFVNTlM6XG4gICAgICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW5zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT0JKRUNUUzpcbiAgICAgICAgICAgIGxldCBhcnJheVRvUmV0dXJuID0gW107XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHB1c2ggZGF0YSBvZiB0aGUgcmVxdWlyZWQgYXJndW1lbnRzXG4gICAgICAgICAgICBmb3IobGV0IG5hbWUgb2Ygb3V0cHV0LnNvdXJjZSkge1xuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHNbbmFtZV07XG4gICAgICAgICAgICAgICAgYXJyYXlUb1JldHVybi5wdXNoKGFyZ1t0eXBlVG9EYXRhRmllbGRNYXBbYXJnLnR5cGVdXSk7XG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICByZXR1cm4gYXJyYXlUb1JldHVybjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbn0gLy8gZ2V0T3V0cHV0XG5cbi8vIENsZWFyIG5ld2x5IGNyZWF0ZWQgZGF0YSBmaWVsZHMgKG5ldyBjb2x1bW4ocykpXG5mdW5jdGlvbiBjbGVhck5ld2x5Q3JlYXRlZERhdGEoZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7IFxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6XG4gICAgICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICAgICAgY2FzZSBET1VCTEVfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuY29sdW1uID0gbnVsbDsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufSAvLyBjbGVhck5ld2x5Q3JlYXRlZERhdGFcblxuLy8gVEhFIE1BSU4gRlVOQ1RJT046IGEgd3JhcHBlciBmb3IgQysrLWZ1bmN0aW9uIGNhbGxcbmV4cG9ydCBmdW5jdGlvbiBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgY3BwRnVuY05hbWUsIHJldHVyblR5cGUpIHtcbiAgICAvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIGFycmF5cyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIHB1dCBkYXRhIChqdXN0IGNvbHVtbihzKSkgdG8gYWxsb2NhdGVkIGJ1ZmZlcnNcbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBDKystZnVuY3Rpb25cbiAgICBsZXQgcGFyYW1zID0gZ2V0QXJyT2ZXYXNtUGFyYW1zKGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygncGFyYW1zOicpO1xuICAgIC8vY29uc29sZS5sb2cocGFyYW1zKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzJyB0eXBlcyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgbGV0IHR5cGVzID0gZ2V0QXJyT2ZXYXNtVHlwZXMoYXJncyk7XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygndHlwZXM6Jyk7XG4gICAgLy9jb25zb2xlLmxvZyh0eXBlcyk7XG5cbiAgICAvLyBjYWxsIHdhc20tZnVuY3Rpb25cbiAgICBsZXQgcmVzdWx0ID0gbW9kdWxlLmNjYWxsKGNwcEZ1bmNOYW1lLCByZXR1cm5UeXBlLCB0eXBlcywgcGFyYW1zKTtcbiAgICBcbiAgICAvL2NvbnNvbGUubG9nKHJlc3VsdCk7XG5cbiAgICAvLyBnZXQgZGF0YSBmcm9tIGJ1ZmZlcnMgKGp1c3QgY29sdW1uKHMpKVxuICAgIGdldERhdGFGcm9tQnVmZmVyKG1vZHVsZSwgYXJncyk7ICAgICAgICBcblxuICAgIC8vIGNsZWFyIG1lbW9yeSB0aGF0IHdhcyBwcmV2aW91c2VseSBhbGxvY2F0ZWRcbiAgICBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygnZG9uZScpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0IHRoZSByZXF1aXJlZCBvdXRwdXQuXG4vLyBJdCB0YWtlcyBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZGF0YSBjb21wdXRlZFxuLy8gYW5kIGV4dHJhY3RzIHRoZSByZXF1aXJlZCByZXN1bHRzLlxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3VsdChmdW5jU3BlY2lmaWNhdGlvbiwgZGF0YUZyb21XZWJXb3JrZXIpIHtcbiAgICBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMuX2NhbGxSZXN1bHQgPSBkYXRhRnJvbVdlYldvcmtlci5jYWxsUmVzdWx0OyAgXG5cbiAgICBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMsIGRhdGFGcm9tV2ViV29ya2VyLmFyZ3MpOyAgICBcblxuICAgIGxldCBvdXRQdXQgPSBnZXRPdXRwdXQoZnVuY1NwZWNpZmljYXRpb24pO1xuXG4gICAgLy8gQmVsb3csIHdlIHJlbW92ZSBuZXdseSBjcmVhdGVkIGNvbHVtbihzKSwgd2hpY2ggYXJlIGNyZWF0ZWQgYXQgdGhlIGV4dHJhY3Rpb24tc3RlcC5cbiAgICAvLyBJdCBpcyBlc3BlY2lhbGx5IHJlcXVpcmVkLCB3aGVuIG11bHRpcGxlIGNhbGwgb2Ygd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VyLlxuICAgIGNsZWFyTmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG91dFB1dDtcbn0iLCIvLyBJbnB1dHMgY29ycmVjdG5lc3MgY2hlY2sgdG9vbHNcbi8vTGltaXRhdGlvbiBjb25zdGFudHNcbmNvbnN0IENPTVBfTUlOID0gMTtcbmNvbnN0IFNBTVBMRVNfQ09VTlRfTUlOID0gMTtcbmNvbnN0IEZFQVRVUkVTX0NPVU5UX01JTiA9IDE7XG5jb25zdCBQRVJDRU5UQUdFX01JTiA9IDA7XG5jb25zdCBQRVJDRU5UQUdFX01BWCA9IDEwMDtcbmNvbnN0IE1BWF9FTEVNRU5UU19DT1VOVCA9IDEwMDAwMDAwMDtcbi8vIEVycm9yIG1lc3NhZ2VzXG5jb25zdCBDT01QX1BPU0lUVkVfTUVTID0gJ2NvbXBvbmVudHMgbXVzdCBiZSBwb3NpdGl2ZS4nO1xuY29uc3QgQ09NUF9FWENFU1MgPSAnY29tcG9uZW50cyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gZmVhdXR1cmVzIGNvdW50Lic7XG5jb25zdCBJTkNPUkVSUkVDVF9NSU5fTUFYX01FUyA9ICdtaW4gbXVzdCBiZSBsZXNzIHRoYW4gbWF4Lic7XG5jb25zdCBJTkNPUkVSUkVDVF9GRUFUVVJFU19NRVMgPSAnZmVhdHVyZXMgbXVzdCBiZSBwb3NpdGl2ZS4nO1xuY29uc3QgSU5DT1JFUlJFQ1RfU0FNUExFU19NRVMgPSAnc2FtcGxlcyBtdXN0IGJlIHBvc2l0aXZlLic7XG5jb25zdCBJTkNPUkVSUkVDVF9QRVJDRU5UQUdFX01FUyA9ICd2aW9sYXRvcnMgcGVyY2VudGFnZSBtdXN0IGJlIGZyb20gdGhlIHJhbmdlIGZyb20gMCB0byAxMDAuJztcbmNvbnN0IERBVEFGUkFNRV9JU19UT09fQklHX01FUyA9ICdkYXRhZnJhbWUgaXMgdG9vIGJpZy4nO1xuLy8gQ2hlY2sgY29tcG9uZW50cyBjb3VudCAoUENBLCBQTFMpXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb21wb25lbmV0cyhmZWF0dXJlcywgY29tcG9uZW50cykge1xuICAgIGlmIChjb21wb25lbnRzIDwgQ09NUF9NSU4pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT01QX1BPU0lUVkVfTUVTKTtcbiAgICBpZiAoY29tcG9uZW50cyA+IGZlYXR1cmVzLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKENPTVBfRVhDRVNTKTtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoICogZmVhdHVyZXMuYnlJbmRleCgwKS5sZW5ndGggPiBNQVhfRUxFTUVOVFNfQ09VTlQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihEQVRBRlJBTUVfSVNfVE9PX0JJR19NRVMpO1xufVxuLy8gQ2hlY2sgaW5wdXRzIG9mIGRhdGEgZm9yIFNWTSB0ZXN0aW5nIGdlbmVyYXRvclxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrR2VuZXJhdG9yU1ZNaW5wdXRzKHNhbXBsZXNDb3VudCwgZmVhdHVyZXNDb3VudCwgbWluLCBtYXgsIHZpb2xhdG9yc1BlcmNlbnRhZ2UpIHtcbiAgICBpZiAobWluID49IG1heClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SRVJSRUNUX01JTl9NQVhfTUVTKTtcbiAgICBpZiAoZmVhdHVyZXNDb3VudCA8IEZFQVRVUkVTX0NPVU5UX01JTilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SRVJSRUNUX0ZFQVRVUkVTX01FUyk7XG4gICAgaWYgKHNhbXBsZXNDb3VudCA8IFNBTVBMRVNfQ09VTlRfTUlOKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5DT1JFUlJFQ1RfU0FNUExFU19NRVMpO1xuICAgIGlmICgodmlvbGF0b3JzUGVyY2VudGFnZSA8IFBFUkNFTlRBR0VfTUlOKSB8fCAodmlvbGF0b3JzUGVyY2VudGFnZSA+IFBFUkNFTlRBR0VfTUFYKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SRVJSRUNUX1BFUkNFTlRBR0VfTUVTKTtcbn1cbiIsIi8vIEV4cGxvcmF0b3J5IGRhdGEgYW5hbHlzaXMgKEVEQSkgdG9vbHNcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgX3ByaW5jaXBhbENvbXBvbmVudEFuYWx5c2lzSW5XZWJXb3JrZXIsIF9wYXJ0aWFsTGVhc3RTcXVhcmVSZWdyZXNzaW9uSW5XZWJXb3JrZXIgfSBmcm9tICcuLi93YXNtL0VEQUFQSSc7XG5pbXBvcnQgeyBjaGVja0NvbXBvbmVuZXRzIH0gZnJvbSAnLi91dGlscyc7XG4vLyBQcmluY2lwYWwgY29tcG9uZW50cyBhbmFseXNpcyAoUENBKVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVQQ0EodGFibGUsIGZlYXR1cmVzLCBjb21wb25lbnRzLCBjZW50ZXIsIHNjYWxlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY2hlY2tDb21wb25lbmV0cyhmZWF0dXJlcywgY29tcG9uZW50cyk7XG4gICAgICAgIGNvbnN0IGNlbnRlck51bSA9IGNlbnRlciA/IDEgOiAwO1xuICAgICAgICBjb25zdCBzY2FsZU51bSA9IHNjYWxlID8gMSA6IDA7XG4gICAgICAgIGxldCBfb3V0cHV0O1xuICAgICAgICBsZXQgX3Byb21pc2UgPSBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNJbldlYldvcmtlcih0YWJsZSwgZmVhdHVyZXMsIGNvbXBvbmVudHMsIGNlbnRlck51bSwgc2NhbGVOdW0pO1xuICAgICAgICB5aWVsZCBfcHJvbWlzZS50aGVuKF9yZXN1bHQgPT4geyBfb3V0cHV0ID0gX3Jlc3VsdDsgfSwgX2Vycm9yID0+IHsgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogJHtfZXJyb3J9YCk7IH0pO1xuICAgICAgICByZXR1cm4gX291dHB1dDtcbiAgICB9KTtcbn1cbi8vIFBhcnRpYWwgbGVhc3Qgc3F1YXJlIHJlZ3Jlc3Npb24gKFBMUylcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUExTKHRhYmxlLCBmZWF0dXJlcywgcHJlZGljdCwgY29tcG9uZW50cykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNoZWNrQ29tcG9uZW5ldHMoZmVhdHVyZXMsIGNvbXBvbmVudHMpO1xuICAgICAgICBsZXQgX291dHB1dDtcbiAgICAgICAgbGV0IF9wcm9taXNlID0gX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25JbldlYldvcmtlcih0YWJsZSwgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHMpO1xuICAgICAgICB5aWVsZCBfcHJvbWlzZS50aGVuKF9yZXN1bHQgPT4geyBfb3V0cHV0ID0gX3Jlc3VsdDsgfSwgX2Vycm9yID0+IHsgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogJHtfZXJyb3J9YCk7IH0pO1xuICAgICAgICByZXR1cm4gX291dHB1dDtcbiAgICB9KTtcbn1cbiIsIi8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbi8vIEphdmFTY3JpcHQgQVBJIGZvciBjYWxsIHdhc20tZnVuY3Rpb25zIGZyb20gdGhlIG1vZHVsZSBFREFcblxuLy8gSW1wb3J0cyBmb3IgY2FsbCB3YXNtIHJ1bnRpbWUtc3lzdGVtOiBpbiB0aGUgbWFpbiBzdHJlYW0gYW5kIGluIHdlYndvcmtlcnNcbmltcG9ydCB7Y2FsbFdhc219IGZyb20gJy4uL3dhc20vY2FsbFdhc20nO1xuaW1wb3J0IHtnZXRDcHBJbnB1dCwgZ2V0UmVzdWx0fSBmcm9tICcuLi93YXNtL2NhbGxXYXNtRm9yV2ViV29ya2VyJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9pbml0RURBQVBJKCkge1xuICBhd2FpdCBpbml0RURBKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXModGFibGUsIGNvbHVtbnMsIGNvbXBvbmVudHNDb3VudCwgY2VudGVyTnVtLCBzY2FsZU51bSkge1xuICByZXR1cm4gY2FsbFdhc20oRURBLCAncHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXMnLCBbY29sdW1ucywgY29tcG9uZW50c0NvdW50LCBjZW50ZXJOdW0sIHNjYWxlTnVtXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNJbldlYldvcmtlcih0YWJsZSwgY29sdW1ucywgY29tcG9uZW50c0NvdW50LCBjZW50ZXJOdW0sIHNjYWxlTnVtKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNXb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydwcmluY2lwYWxDb21wb25lbnRBbmFseXNpcyddLmFyZ3VtZW50cyxbY29sdW1ucywgY29tcG9uZW50c0NvdW50LCBjZW50ZXJOdW0sIHNjYWxlTnVtXSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3ByaW5jaXBhbENvbXBvbmVudEFuYWx5c2lzJ10sIGUuZGF0YSkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZXJyb3IoZGYsIGNvbDEsIGNvbDIpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ2Vycm9yJywgW2NvbDEsIGNvbDJdKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9lcnJvckluV2ViV29ya2VyKGRmLCBjb2wxLCBjb2wyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvZXJyb3JXb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydlcnJvciddLmFyZ3VtZW50cyxbY29sMSwgY29sMl0pKTtcbiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgcmVzb2x2ZShnZXRSZXN1bHQoRURBWydlcnJvciddLCBlLmRhdGEpKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb24odGFibGUsIGZlYXR1cmVzLCBwcmVkaWN0LCBjb21wb25lbnRzQ291bnQpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb24nLCBbZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHNDb3VudF0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25JbldlYldvcmtlcih0YWJsZSwgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHNDb3VudCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi4vd2FzbS93b3JrZXJzL3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25Xb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydwYXJ0aWFsTGVhc3RTcXVhcmVSZWdyZXNzaW9uJ10uYXJndW1lbnRzLFtmZWF0dXJlcywgcHJlZGljdCwgY29tcG9uZW50c0NvdW50XSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb24nXSwgZS5kYXRhKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9nZW5lcmF0ZURhdGFzZXQoa2VybmVsLCBrZXJuZWxQYXJhbXMsIHNhbXBsZXNDb3VudCwgZmVhdHVyZXNDb3VudCwgbWluLCBtYXgsIHZpb2xhdG9yc1BlcmNlbnRhZ2UpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ2dlbmVyYXRlRGF0YXNldCcsIFtrZXJuZWwsIGtlcm5lbFBhcmFtcywgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZV0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX2dlbmVyYXRlRGF0YXNldEluV2ViV29ya2VyKGtlcm5lbCwga2VybmVsUGFyYW1zLCBzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvZ2VuZXJhdGVEYXRhc2V0V29ya2VyLmpzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKGdldENwcElucHV0KEVEQVsnZ2VuZXJhdGVEYXRhc2V0J10uYXJndW1lbnRzLFtrZXJuZWwsIGtlcm5lbFBhcmFtcywgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZV0pKTtcbiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgcmVzb2x2ZShnZXRSZXN1bHQoRURBWydnZW5lcmF0ZURhdGFzZXQnXSwgZS5kYXRhKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9ub3JtYWxpemVEYXRhc2V0KGRhdGEpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ25vcm1hbGl6ZURhdGFzZXQnLCBbZGF0YV0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX25vcm1hbGl6ZURhdGFzZXRJbldlYldvcmtlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvbm9ybWFsaXplRGF0YXNldFdvcmtlci5qcycsIGltcG9ydC5tZXRhLnVybCkpO1xuICAgIHdvcmtlci5wb3N0TWVzc2FnZShnZXRDcHBJbnB1dChFREFbJ25vcm1hbGl6ZURhdGFzZXQnXS5hcmd1bWVudHMsW2RhdGFdKSk7XG4gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgIHJlc29sdmUoZ2V0UmVzdWx0KEVEQVsnbm9ybWFsaXplRGF0YXNldCddLCBlLmRhdGEpKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX3RyYWluTFNTVk0oZ2FtbWEsIGtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgZGF0YXNldCwgbGFiZWxzKSB7XG4gIHJldHVybiBjYWxsV2FzbShFREEsICd0cmFpbkxTU1ZNJywgW2dhbW1hLCBrZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGRhdGFzZXQsIGxhYmVsc10pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX3RyYWluTFNTVk1JbldlYldvcmtlcihnYW1tYSwga2VybmVsLCBrZXJuZWxQYXJhbXMsIG1vZGVsUGFyYW1zQ291bnQsIHByZWNvbXB1dGVkV2VpZ2h0c0NvdW50LCBkYXRhc2V0LCBsYWJlbHMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4uL3dhc20vd29ya2Vycy90cmFpbkxTU1ZNV29ya2VyLmpzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKGdldENwcElucHV0KEVEQVsndHJhaW5MU1NWTSddLmFyZ3VtZW50cyxbZ2FtbWEsIGtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgZGF0YXNldCwgbGFiZWxzXSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3RyYWluTFNTVk0nXSwgZS5kYXRhKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9wcmVkaWN0QnlMU1NWTShrZXJuZWwsIGtlcm5lbFBhcmFtcywgbm9ybWFsaXplZERhdGEsIGxhYmVscywgbWVhbnMsIHN0ZERldnMsIG1vZGVsUGFyYW1zLCBwcmVjb21wdXRlZFdlaWdodHMsIHRhcmdldERhdGEpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ3ByZWRpY3RCeUxTU1ZNJywgW2tlcm5lbCwga2VybmVsUGFyYW1zLCBub3JtYWxpemVkRGF0YSwgbGFiZWxzLCBtZWFucywgc3RkRGV2cywgbW9kZWxQYXJhbXMsIHByZWNvbXB1dGVkV2VpZ2h0cywgdGFyZ2V0RGF0YV0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX3ByZWRpY3RCeUxTU1ZNSW5XZWJXb3JrZXIoa2VybmVsLCBrZXJuZWxQYXJhbXMsIG5vcm1hbGl6ZWREYXRhLCBsYWJlbHMsIG1lYW5zLCBzdGREZXZzLCBtb2RlbFBhcmFtcywgcHJlY29tcHV0ZWRXZWlnaHRzLCB0YXJnZXREYXRhKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvcHJlZGljdEJ5TFNTVk1Xb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydwcmVkaWN0QnlMU1NWTSddLmFyZ3VtZW50cyxba2VybmVsLCBrZXJuZWxQYXJhbXMsIG5vcm1hbGl6ZWREYXRhLCBsYWJlbHMsIG1lYW5zLCBzdGREZXZzLCBtb2RlbFBhcmFtcywgcHJlY29tcHV0ZWRXZWlnaHRzLCB0YXJnZXREYXRhXSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3ByZWRpY3RCeUxTU1ZNJ10sIGUuZGF0YSkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfdHJhaW5BbmRBbmFseXplTFNTVk0oZ2FtbWEsIGtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgY29uZnVzaW9uTWF0cml4RWxlbWVudHNDb3VudCwgZGF0YXNldCwgbGFiZWxzKSB7XG4gIHJldHVybiBjYWxsV2FzbShFREEsICd0cmFpbkFuZEFuYWx5emVMU1NWTScsIFtnYW1tYSwga2VybmVsLCBrZXJuZWxQYXJhbXMsIG1vZGVsUGFyYW1zQ291bnQsIHByZWNvbXB1dGVkV2VpZ2h0c0NvdW50LCBjb25mdXNpb25NYXRyaXhFbGVtZW50c0NvdW50LCBkYXRhc2V0LCBsYWJlbHNdKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF90cmFpbkFuZEFuYWx5emVMU1NWTUluV2ViV29ya2VyKGdhbW1hLCBrZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGNvbmZ1c2lvbk1hdHJpeEVsZW1lbnRzQ291bnQsIGRhdGFzZXQsIGxhYmVscykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi4vd2FzbS93b3JrZXJzL3RyYWluQW5kQW5hbHl6ZUxTU1ZNV29ya2VyLmpzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKGdldENwcElucHV0KEVEQVsndHJhaW5BbmRBbmFseXplTFNTVk0nXS5hcmd1bWVudHMsW2dhbW1hLCBrZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGNvbmZ1c2lvbk1hdHJpeEVsZW1lbnRzQ291bnQsIGRhdGFzZXQsIGxhYmVsc10pKTtcbiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgcmVzb2x2ZShnZXRSZXN1bHQoRURBWyd0cmFpbkFuZEFuYWx5emVMU1NWTSddLCBlLmRhdGEpKTtcbiAgICB9XG4gIH0pO1xufVxuXG4iLCIvLyBDdXN0b20gVUkgZm9yIEV4cGxvcmF0b3J5IGRhdGEgYW5hbHlzaXMgKEVEQSkgdG9vbHNcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vIFJlbmFtZSBQQ0EgY29sdW1uc1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZVBDQWNvbHVtbnMocGNhVGFibGUpIHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBwY2FUYWJsZS5jb2x1bW5zLnRvTGlzdCgpKVxuICAgICAgICBjb2wubmFtZSA9ICdQQ0EnICsgY29sLm5hbWU7XG4gICAgcmV0dXJuIHBjYVRhYmxlO1xufVxuLy8gUHJlZGljdGVkIHZzIFJlZmVyZW5jZSBzY2F0dGVyIHBsb3RcbmV4cG9ydCBmdW5jdGlvbiBwcmVkaWN0ZWRWZXJzdXNSZWZlcmVuY2VTY2F0dGVyUGxvdChzYW1wbGVzTmFtZXMsIHJlZmVyZW5jZSwgcHJlZGljdGlvbikge1xuICAgIHByZWRpY3Rpb24ubmFtZSA9IHJlZmVyZW5jZS5uYW1lICsgJyhwcmVkaWN0ZWQpJztcbiAgICBsZXQgZGZSZWZlcmVuY2VQcmVkaWN0aW9uID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtzYW1wbGVzTmFtZXMsIHJlZmVyZW5jZSwgcHJlZGljdGlvbl0pO1xuICAgIGRmUmVmZXJlbmNlUHJlZGljdGlvbi5uYW1lID0gJ1JlZmVyZW5jZSB2cy4gUHJlZGljdGVkJztcbiAgICByZXR1cm4gREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmUmVmZXJlbmNlUHJlZGljdGlvbiwgeyB0aXRsZTogZGZSZWZlcmVuY2VQcmVkaWN0aW9uLm5hbWUsXG4gICAgICAgIHg6IHJlZmVyZW5jZS5uYW1lLFxuICAgICAgICB5OiBwcmVkaWN0aW9uLm5hbWUsXG4gICAgICAgIHNob3dSZWdyZXNzaW9uTGluZTogdHJ1ZSxcbiAgICAgICAgbWFya2VyVHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGxhYmVsczogc2FtcGxlc05hbWVzLm5hbWVcbiAgICB9KTtcbn1cbi8vIFJlZ3Jlc3Npb24gQ29lZmZpY2llbnRzIEJhciBDaGFydFxuZXhwb3J0IGZ1bmN0aW9uIHJlZ3Jlc3Npb25Db2VmZmljaWVudHNCYXJDaGFydChmZWF0dXJlcywgcmVncmVzc2lvbkNvZWZmcykge1xuICAgIHJlZ3Jlc3Npb25Db2VmZnMubmFtZSA9ICdyZWdyZXNzaW9uIGNvZWZmaWNpZW50JztcbiAgICBsZXQgbmFtZXNPZlByZWRpY3RvcnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBmZWF0dXJlcylcbiAgICAgICAgbmFtZXNPZlByZWRpY3RvcnMucHVzaChjb2wubmFtZSk7XG4gICAgbGV0IHByZWRpY3Rvck5hbWVzQ29sdW1uID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdmZWF0dXJlJywgbmFtZXNPZlByZWRpY3RvcnMpO1xuICAgIGxldCBkZlJlZ3JDb2VmcyA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbcHJlZGljdG9yTmFtZXNDb2x1bW4sIHJlZ3Jlc3Npb25Db2VmZnNdKTtcbiAgICBkZlJlZ3JDb2Vmcy5uYW1lID0gJ1JlZ3Jlc3Npb24gQ29lZmZpY2llbnRzJztcbiAgICByZXR1cm4gREcuVmlld2VyLmJhckNoYXJ0KGRmUmVnckNvZWZzLCB7IHRpdGxlOiBkZlJlZ3JDb2Vmcy5uYW1lLCBzcGxpdDogJ2ZlYXR1cmUnLFxuICAgICAgICB2YWx1ZTogJ3JlZ3Jlc3Npb24gY29lZmZpY2llbnQnLCB2YWx1ZUFnZ3JUeXBlOiAnYXZnJyB9KTtcbn1cbi8vIFNjb3JlcyBTY2F0dGVyIFBsb3RcbmV4cG9ydCBmdW5jdGlvbiBzY29yZXNTY2F0dGVyUGxvdChzYW1wbGVzTmFtZXMsIHhTY29yZXMsIHlTY29yZXMpIHtcbiAgICBsZXQgc2NvcmVzQ29sdW1ucyA9IFtzYW1wbGVzTmFtZXNdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeFNjb3Jlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB4U2NvcmVzW2ldLm5hbWUgPSBgeC5zY29yZS50JHtpICsgMX1gO1xuICAgICAgICBzY29yZXNDb2x1bW5zLnB1c2goeFNjb3Jlc1tpXSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeVNjb3Jlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB5U2NvcmVzW2ldLm5hbWUgPSBgeS5zY29yZS51JHtpICsgMX1gO1xuICAgICAgICBzY29yZXNDb2x1bW5zLnB1c2goeVNjb3Jlc1tpXSk7XG4gICAgfVxuICAgIGxldCBzY29yZXMgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoc2NvcmVzQ29sdW1ucyk7XG4gICAgc2NvcmVzLm5hbWUgPSAnU2NvcmVzJztcbiAgICAvL2dyb2suc2hlbGwuYWRkVGFibGVWaWV3KHNjb3Jlcyk7XG4gICAgY29uc3QgaW5kZXggPSB4U2NvcmVzLmxlbmd0aCA+IDEgPyAxIDogMDtcbiAgICByZXR1cm4gREcuVmlld2VyLnNjYXR0ZXJQbG90KHNjb3JlcywgeyB0aXRsZTogc2NvcmVzLm5hbWUsXG4gICAgICAgIHg6IHhTY29yZXNbMF0ubmFtZSxcbiAgICAgICAgeTogeFNjb3Jlc1tpbmRleF0ubmFtZSxcbiAgICAgICAgbWFya2VyVHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGxhYmVsczogc2FtcGxlc05hbWVzLm5hbWVcbiAgICB9KTtcbn1cbi8vIExvYWRpbmcgU2NhdHRlciBQbG90XG5leHBvcnQgZnVuY3Rpb24gbG9hZGluZ1NjYXR0ZXJQbG90KGZlYXR1cmVzLCB4TG9hZGluZ3MpIHtcbiAgICBsZXQgbG9hZGluZ0NvbHMgPSBbXTtcbiAgICBsZXQgbG9hZGluZ0xhYmVscyA9IFtdO1xuICAgIGZvciAobGV0IGNvbCBvZiBmZWF0dXJlcylcbiAgICAgICAgbG9hZGluZ0xhYmVscy5wdXNoKGNvbC5uYW1lKTtcbiAgICBsb2FkaW5nQ29scy5wdXNoKERHLkNvbHVtbi5mcm9tU3RyaW5ncygnbGFiZWxzJywgbG9hZGluZ0xhYmVscykpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeExvYWRpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHhMb2FkaW5nc1tpXS5uYW1lID0gYHgubG9hZGluZy5wJHtpICsgMX1gO1xuICAgICAgICBsb2FkaW5nQ29scy5wdXNoKHhMb2FkaW5nc1tpXSk7XG4gICAgfVxuICAgIGxldCBkZkxvYWRpbmdzID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGxvYWRpbmdDb2xzKTtcbiAgICBkZkxvYWRpbmdzLm5hbWUgPSAnTG9hZGluZ3MnO1xuICAgIHJldHVybiBERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGZMb2FkaW5ncywgeyB0aXRsZTogZGZMb2FkaW5ncy5uYW1lLFxuICAgICAgICB4OiB4TG9hZGluZ3NbMF0ubmFtZSxcbiAgICAgICAgeTogeExvYWRpbmdzW3hMb2FkaW5ncy5sZW5ndGggLSAxXS5uYW1lLFxuICAgICAgICBtYXJrZXJUeXBlOiAnY2lyY2xlJyxcbiAgICAgICAgbGFiZWxzOiAnbGFiZWxzJ1xuICAgIH0pO1xufVxuLy8gQWRkIFBMUyB2aXN1YWxpemF0aW9uXG5leHBvcnQgZnVuY3Rpb24gYWRkUExTdmlzdWFsaXphdGlvbih0YWJsZSwgc2FtcGxlc05hbWVzLCBmZWF0dXJlcywgcHJlZGljdCwgcGxzT3V0cHV0KSB7XG4gICAgbGV0IHZpZXcgPSBncm9rLnNoZWxsLmdldFRhYmxlVmlldyh0YWJsZS5uYW1lKTtcbiAgICAvLyAxLiBQcmVkaWN0ZWQgdnMgUmVmZXJlbmNlIHNjYXR0ZXIgcGxvdFxuICAgIHZpZXcuYWRkVmlld2VyKHByZWRpY3RlZFZlcnN1c1JlZmVyZW5jZVNjYXR0ZXJQbG90KHNhbXBsZXNOYW1lcywgcHJlZGljdCwgcGxzT3V0cHV0WzBdKSk7XG4gICAgLy8gMi4gUmVncmVzc2lvbiBDb2VmZmljaWVudHMgQmFyIENoYXJ0XG4gICAgdmlldy5hZGRWaWV3ZXIocmVncmVzc2lvbkNvZWZmaWNpZW50c0JhckNoYXJ0KGZlYXR1cmVzLCBwbHNPdXRwdXRbMV0pKTtcbiAgICAvLyAzLiBMb2FkaW5nIFNjYXR0ZXIgUGxvdFxuICAgIHZpZXcuYWRkVmlld2VyKGxvYWRpbmdTY2F0dGVyUGxvdChmZWF0dXJlcywgcGxzT3V0cHV0WzRdKSk7XG4gICAgLy8gNC4gU2NvcmVzIFNjYXR0ZXIgUGxvdFxuICAgIHZpZXcuYWRkVmlld2VyKHNjb3Jlc1NjYXR0ZXJQbG90KHNhbXBsZXNOYW1lcywgcGxzT3V0cHV0WzJdLCBwbHNPdXRwdXRbM10pKTtcbn1cbiIsIi8vIFRlc3QgZGF0YSBnZW5lcmF0aW9uIHRvb2xzXG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBjaGVja0dlbmVyYXRvclNWTWlucHV0cyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgX2dlbmVyYXRlRGF0YXNldEluV2ViV29ya2VyIH0gZnJvbSAnLi4vd2FzbS9FREFBUEknO1xuY29uc3QgU1ZNX0dFTl9GRUFUVVJFU19JTkRFWCA9IDA7XG5jb25zdCBTVk1fR0VOX0xBQkVMU19JTkRFWCA9IDE7XG5jb25zdCBTVk1fRkVBVFVSRV9OQU1FID0gJ0ZlYXR1cmUgIyc7XG5jb25zdCBTVk1fTEFCRUxfTkFNRSA9ICdMYWJlbCc7XG4vLyBSZXR1cm5zIHRoZSBkYXRhZnJhbWUgXCJjYXJzXCJcbmV4cG9ydCBmdW5jdGlvbiBjYXJzRGF0YWZyYW1lKCkge1xuICAgIHJldHVybiBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ21vZGVsJywgWydhbGZhcm9tZW8nLCAnYXVkaScsICdibXcnLCAnY2hldnJvbGV0JywgJ2RvZGdlMScsICdkb2RnZTInLCAnaG9uZGExJywgJ2hvbmRhMicsICdpc3V6dScsICdqYWd1YXInLCAnbWF6ZGEnLCAnbWVyY2VkZXMnLCAnbWVyY3VyeScsICdtaXRzdWJpc2hpJywgJ25pc3NhbjEnLCAnbmlzc2FuMicsICdwZXVnb3QnLCAncGx5bW91dGgnLCAncG9yc2NoZScsICdzYWFiJywgJ3N1YmFydScsICd0b3lvdGExJywgJ3RveW90YTInLCAndG95b3RhMycsICd0b3lvdGE0JywgJ3ZvbGtzd2FnZW4xJywgJ3ZvbGtzd2FnZW4yJywgJ3ZvbHZvMScsICd2b2x2bzInLCAndm9sdm8zJ10pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ2RpZXNlbCcsIG5ldyBJbnQzMkFycmF5KFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAxLCAwLCAwLCAwLCAxXSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ3R1cmJvJywgbmV3IEludDMyQXJyYXkoWzAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDEsIDFdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgndHdvLmRvb3JzJywgbmV3IEludDMyQXJyYXkoWzEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDBdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgnaGF0Y2hiYWNrJywgbmV3IEludDMyQXJyYXkoWzEsIDAsIDAsIDAsIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDBdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCd3aGVlbC5iYXNlJywgbmV3IEZsb2F0MzJBcnJheShbOTQuNSwgMTA1LjgwMDAwMzA1MTc1NzgxLCAxMDEuMTk5OTk2OTQ4MjQyMTksIDk0LjUsIDkzLjY5OTk5Njk0ODI0MjE5LCA5My42OTk5OTY5NDgyNDIxOSwgOTMuNjk5OTk2OTQ4MjQyMTksIDk2LjUsIDk0LjMwMDAwMzA1MTc1NzgxLCAxMTMsIDkzLjA5OTk5ODQ3NDEyMTEsIDExNS41OTk5OTg0NzQxMjExLCAxMDIuNjk5OTk2OTQ4MjQyMTksIDkzLjY5OTk5Njk0ODI0MjE5LCA5NC41LCA5NC41LCA5My42OTk5OTY5NDgyNDIxOSwgMTE0LjE5OTk5Njk0ODI0MjE5LCA4OS41LCA5OS4wOTk5OTg0NzQxMjExLCA5Ny4xOTk5OTY5NDgyNDIxOSwgOTUuNjk5OTk2OTQ4MjQyMTksIDk1LjY5OTk5Njk0ODI0MjE5LCA5OC40MDAwMDE1MjU4Nzg5LCAxMDIuNDAwMDAxNTI1ODc4OSwgOTcuMzAwMDAzMDUxNzU3ODEsIDEwMC40MDAwMDE1MjU4Nzg5LCAxMDQuMzAwMDAzMDUxNzU3ODEsIDEwOS4wOTk5OTg0NzQxMjExLCAxMDkuMDk5OTk4NDc0MTIxMV0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ2xlbmd0aCcsIG5ldyBGbG9hdDMyQXJyYXkoWzE3MS4xOTk5OTY5NDgyNDIyLCAxOTIuNjk5OTk2OTQ4MjQyMiwgMTc2LjgwMDAwMzA1MTc1NzgsIDE1OC44MDAwMDMwNTE3NTc4LCAxNTcuMzAwMDAzMDUxNzU3OCwgMTU3LjMwMDAwMzA1MTc1NzgsIDE1MCwgMTc1LjM5OTk5Mzg5NjQ4NDM4LCAxNzAuNjk5OTk2OTQ4MjQyMiwgMTk5LjYwMDAwNjEwMzUxNTYyLCAxNjYuODAwMDAzMDUxNzU3OCwgMjAyLjYwMDAwNjEwMzUxNTYyLCAxNzguMzk5OTkzODk2NDg0MzgsIDE1Ny4zMDAwMDMwNTE3NTc4LCAxNzAuMTk5OTk2OTQ4MjQyMiwgMTY1LjMwMDAwMzA1MTc1NzgsIDE1Ny4zMDAwMDMwNTE3NTc4LCAxOTguODk5OTkzODk2NDg0MzgsIDE2OC44OTk5OTM4OTY0ODQzOCwgMTg2LjYwMDAwNjEwMzUxNTYyLCAxNzIsIDE1OC42OTk5OTY5NDgyNDIyLCAxNjYuMzAwMDAzMDUxNzU3OCwgMTc2LjE5OTk5Njk0ODI0MjIsIDE3NS42MDAwMDYxMDM1MTU2MiwgMTcxLjY5OTk5Njk0ODI0MjIsIDE4MC4xOTk5OTY5NDgyNDIyLCAxODguODAwMDAzMDUxNzU3OCwgMTg4LjgwMDAwMzA1MTc1NzgsIDE4OC44MDAwMDMwNTE3NTc4XSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSgnd2lkdGgnLCBuZXcgRmxvYXQzMkFycmF5KFs2NS41LCA3MS40MDAwMDE1MjU4Nzg5LCA2NC44MDAwMDMwNTE3NTc4MSwgNjMuNTk5OTk4NDc0MTIxMDk0LCA2My43OTk5OTkyMzcwNjA1NSwgNjMuNzk5OTk5MjM3MDYwNTUsIDY0LCA2NS4xOTk5OTY5NDgyNDIxOSwgNjEuNzk5OTk5MjM3MDYwNTUsIDY5LjU5OTk5ODQ3NDEyMTEsIDY0LjE5OTk5Njk0ODI0MjE5LCA3MS42OTk5OTY5NDgyNDIxOSwgNjgsIDY0LjQwMDAwMTUyNTg3ODksIDYzLjc5OTk5OTIzNzA2MDU1LCA2My43OTk5OTkyMzcwNjA1NSwgNjMuNzk5OTk5MjM3MDYwNTUsIDY4LjQwMDAwMTUyNTg3ODksIDY1LCA2Ni41LCA2NS40MDAwMDE1MjU4Nzg5LCA2My41OTk5OTg0NzQxMjEwOTQsIDY0LjQwMDAwMTUyNTg3ODksIDY1LjU5OTk5ODQ3NDEyMTEsIDY2LjUsIDY1LjUsIDY2LjkwMDAwMTUyNTg3ODksIDY3LjE5OTk5Njk0ODI0MjE5LCA2OC44MDAwMDMwNTE3NTc4MSwgNjguOTAwMDAxNTI1ODc4OV0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ2hlaWdodCcsIG5ldyBGbG9hdDMyQXJyYXkoWzUyLjQwMDAwMTUyNTg3ODkwNiwgNTUuNzAwMDAwNzYyOTM5NDUsIDU0LjI5OTk5OTIzNzA2MDU1LCA1MiwgNTAuNzk5OTk5MjM3MDYwNTUsIDUwLjU5OTk5ODQ3NDEyMTA5NCwgNTIuNTk5OTk4NDc0MTIxMDk0LCA1NC4wOTk5OTg0NzQxMjEwOTQsIDUzLjUsIDUyLjc5OTk5OTIzNzA2MDU1LCA1NC4wOTk5OTg0NzQxMjEwOTQsIDU2LjI5OTk5OTIzNzA2MDU1LCA1NC43OTk5OTkyMzcwNjA1NSwgNTAuNzk5OTk5MjM3MDYwNTUsIDUzLjUsIDU0LjUsIDUwLjU5OTk5ODQ3NDEyMTA5NCwgNTguNzAwMDAwNzYyOTM5NDUsIDUxLjU5OTk5ODQ3NDEyMTA5NCwgNTYuMDk5OTk4NDc0MTIxMDk0LCA1Mi41LCA1NC41LCA1MywgNTIsIDU0LjkwMDAwMTUyNTg3ODkwNiwgNTUuNzAwMDAwNzYyOTM5NDUsIDU1LjA5OTk5ODQ3NDEyMTA5NCwgNTYuMjAwMDAwNzYyOTM5NDUsIDU1LjUsIDU1LjVdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgnY3VyYi53ZWlnaHQnLCBuZXcgSW50MzJBcnJheShbMjgyMywgMjg0NCwgMjM5NSwgMTkwOSwgMjEyOCwgMTk2NywgMTk1NiwgMjMwNCwgMjMzNywgNDA2NiwgMTk1MCwgMzc3MCwgMjkxMCwgMTkxOCwgMjAyNCwgMTk1MSwgMTk2NywgMzQzMCwgMjgwMCwgMjY5NSwgMjE5MCwgMTk4NSwgMjI3NSwgMjU1MSwgMjQ4MCwgMjI2MSwgMjY2MSwgMjkxMiwgMzA0OSwgMzIxN10pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdlbmcuc2l6ZScsIG5ldyBJbnQzMkFycmF5KFsxNTIsIDEzNiwgMTA4LCA5MCwgOTgsIDkwLCA5MiwgMTEwLCAxMTEsIDI1OCwgOTEsIDE4MywgMTQwLCA5MiwgOTcsIDk3LCA5MCwgMTUyLCAxOTQsIDEyMSwgMTA4LCA5MiwgMTEwLCAxNDYsIDExMCwgOTcsIDEzNiwgMTQxLCAxNDEsIDE0NV0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdob3JzZXBvd2VyJywgbmV3IEludDMyQXJyYXkoWzE1NCwgMTEwLCAxMDEsIDcwLCAxMDIsIDY4LCA3NiwgODYsIDc4LCAxNzYsIDY4LCAxMjMsIDE3NSwgNjgsIDY5LCA2OSwgNjgsIDk1LCAyMDcsIDExMCwgODIsIDYyLCA1NiwgMTE2LCA3MywgNTIsIDExMCwgMTE0LCAxNjAsIDEwNl0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdwZWFrLnJwbScsIG5ldyBJbnQzMkFycmF5KFs1MDAwLCA1NTAwLCA1ODAwLCA1NDAwLCA1NTAwLCA1NTAwLCA2MDAwLCA1ODAwLCA0ODAwLCA0NzUwLCA1MDAwLCA0MzUwLCA1MDAwLCA1NTAwLCA1MjAwLCA1MjAwLCA1NTAwLCA0MTUwLCA1OTAwLCA1MjUwLCA0NDAwLCA0ODAwLCA0NTAwLCA0ODAwLCA0NTAwLCA0ODAwLCA1NTAwLCA1NDAwLCA1MzAwLCA0ODAwXSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ3N5bWJvbCcsIG5ldyBJbnQzMkFycmF5KFsxLCAxLCAyLCAwLCAxLCAxLCAxLCAwLCAwLCAwLCAxLCAtMSwgMSwgMiwgMSwgMSwgMSwgMCwgMywgMiwgMCwgMSwgMCwgMiwgLTEsIDIsIDAsIC0yLCAtMSwgLTFdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgnY2l0eS5tcGcnLCBuZXcgSW50MzJBcnJheShbMTksIDE5LCAyMywgMzgsIDI0LCAzMSwgMzAsIDI3LCAyNCwgMTUsIDMxLCAyMiwgMTksIDM3LCAzMSwgMzEsIDMxLCAyNSwgMTcsIDIxLCAyOCwgMzUsIDM0LCAyNCwgMzAsIDM3LCAxOSwgMjMsIDE5LCAyNl0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdoaWdod2F5Lm1wZycsIG5ldyBJbnQzMkFycmF5KFsyNiwgMjUsIDI5LCA0MywgMzAsIDM4LCAzNCwgMzMsIDI5LCAxOSwgMzgsIDI1LCAyNCwgNDEsIDM3LCAzNywgMzgsIDI1LCAyNSwgMjgsIDMzLCAzOSwgMzYsIDMwLCAzMywgNDYsIDI0LCAyOCwgMjUsIDI3XSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ3ByaWNlJywgbmV3IEludDMyQXJyYXkoWzE2NTAwLCAxNzcxMCwgMTY0MzAsIDY1NzUsIDc5NTcsIDYyMjksIDcxMjksIDg4NDUsIDY3ODUsIDM1NTUwLCA3Mzk1LCAzMTYwMCwgMTY1MDMsIDUzODksIDczNDksIDcyOTksIDYyMjksIDEzODYwLCAzNzAyOCwgMTIxNzAsIDc3NzUsIDUzNDgsIDc4OTgsIDk5ODksIDEwNjk4LCA3Nzc1LCAxMzI5NSwgMTI5NDAsIDE5MDQ1LCAyMjQ3MF0pKSxcbiAgICBdKTtcbn0gLy8gY2Fyc0RhdGFmcmFtZVxuLy8gR2VuZXJhdGUgZGF0YXNldCBmb3IgdGVzdGluZyBiaW5hcnkgY2xhc3NpZmllcnNcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0RGF0YUZvckJpbmFyeUNsYXNzaWZpY2F0aW9uKGtlcm5lbCwga2VybmVsUGFyYW1zLCBuYW1lLCBzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gY2hlY2sgaW5wdXRzXG4gICAgICAgIGNoZWNrR2VuZXJhdG9yU1ZNaW5wdXRzKHNhbXBsZXNDb3VudCwgZmVhdHVyZXNDb3VudCwgbWluLCBtYXgsIHZpb2xhdG9yc1BlcmNlbnRhZ2UpO1xuICAgICAgICAvLyBrZXJuZWwgcGFyYW1zIGNvbHVtblxuICAgICAgICBjb25zdCBrZXJuZWxQYXJhbXNDb2wgPSBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsICdrZXJuZWxQYXJhbXMnLCBrZXJuZWxQYXJhbXMpO1xuICAgICAgICAvLyBDQUxMIFdBU00tQ09NUFVUQVRJT05TICBcbiAgICAgICAgbGV0IF9vdXRwdXQ7XG4gICAgICAgIGxldCBfcHJvbWlzZSA9IF9nZW5lcmF0ZURhdGFzZXRJbldlYldvcmtlcihrZXJuZWwsIGtlcm5lbFBhcmFtc0NvbCwgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZSk7XG4gICAgICAgIHlpZWxkIF9wcm9taXNlLnRoZW4oX3Jlc3VsdCA9PiB7IF9vdXRwdXQgPSBfcmVzdWx0OyB9LCBfZXJyb3IgPT4geyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yOiAke19lcnJvcn1gKTsgfSk7XG4gICAgICAgIC8vIFJlbmFtZSBsYWJlbHMgY29sdW1uXG4gICAgICAgIF9vdXRwdXRbU1ZNX0dFTl9MQUJFTFNfSU5ERVhdLm5hbWUgPSBTVk1fTEFCRUxfTkFNRTtcbiAgICAgICAgLy8gUmVuYW1lIGZlYXR1cmUgY29sdW1uc1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBfb3V0cHV0W1NWTV9HRU5fRkVBVFVSRVNfSU5ERVhdKVxuICAgICAgICAgICAgY29sLm5hbWUgPSBTVk1fRkVBVFVSRV9OQU1FICsgY29sLm5hbWU7XG4gICAgICAgIC8vIENyZWF0ZSBkYXRhZnJhbWVcbiAgICAgICAgY29uc3QgZGYgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoX291dHB1dFtTVk1fR0VOX0ZFQVRVUkVTX0lOREVYXSk7XG4gICAgICAgIGRmLm5hbWUgPSBuYW1lO1xuICAgICAgICBkZi5jb2x1bW5zLmFkZChfb3V0cHV0W1NWTV9HRU5fTEFCRUxTX0lOREVYXSk7XG4gICAgICAgIHJldHVybiBkZjtcbiAgICB9KTtcbn0gLy8gdGVzdERhdGFGb3JNYWNoaW5lTGVhcm5pbmdcbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogU3VwcG9ydCB2ZWN0b3IgbWFjaGluZSAoU1ZNKSB0b29scy5cbiAgIEl0J3MgZGV2ZWxvcGVkIGZvciBhcHBseWluZyBpbiBjb21iaW5hdGlvbiB3aXRoIERBVEFHUk9LIHByZWRpY3RpdmUgdG9vbHMuXG5cbiAgIFRyYWluaW5nICYgcHJlZGljdGluZyBhcmUgcHJvdmlkZWQgYnkgd2FzbS1jb21wdXRhdGlvbnMuXG5cbiAgIExlYXN0IHNxdWFyZSBzdXBwb3J0IHZlY3RvciBtYWNoaW5lIChMUy1TVk0pIGlzIGltcGxlbWVudGVkOlxuICAgICBbMV0gU3V5a2VucywgSi4sIFZhbmRld2FsbGUsIEouIFwiTGVhc3QgU3F1YXJlcyBTdXBwb3J0IFZlY3RvciBNYWNoaW5lIENsYXNzaWZpZXJzXCIsXG4gICAgICAgICAgIE5ldXJhbCBQcm9jZXNzaW5nIExldHRlcnMgOSwgMjkzLTMwMCAoMTk5OSkuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDIzL0E6MTAxODYyODYwOTc0MlxuKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IF90cmFpbkFuZEFuYWx5emVMU1NWTUluV2ViV29ya2VyLCBfcHJlZGljdEJ5TFNTVk1JbldlYldvcmtlciB9IGZyb20gJy4uL3dhc20vRURBQVBJJztcbi8vIDEuIENPTlNUQU5UU1xuLy8ga2VybmVsIHR5cGVzXG5leHBvcnQgY29uc3QgTElORUFSID0gMDtcbmV4cG9ydCBjb25zdCBQT0xZTk9NSUFMID0gMTtcbmV4cG9ydCBjb25zdCBSQkYgPSAyO1xuZXhwb3J0IGNvbnN0IFNJR01PSUQgPSAzO1xuLy8gb3V0cHV0LXJlbGF0ZWRcbmNvbnN0IENPTkZVU0lPTl9NQVRSX1NJWkUgPSA0O1xuY29uc3QgTk9STUFMSVpFRF9EQVRBX0lOREVYID0gMDtcbmNvbnN0IE1FQU5TX0lOREVYID0gMTtcbmNvbnN0IFNURF9ERVZTX0lOREVYID0gMjtcbmNvbnN0IE1PREVMX1BBUkFNU19JTkRFWCA9IDM7XG5jb25zdCBNT0RFTF9XRUlHSFRTX0lOREVYID0gNDtcbmNvbnN0IFBSRURJQ1RFRF9MQUJFTFNfSU5ERVggPSA1O1xuY29uc3QgQ09SUkVDVE5FU1NfSU5ERVggPSA2O1xuY29uc3QgQ09ORlVTSU9OX01BVFJJWF9JTkRFWCA9IDc7XG5jb25zdCBUUlVFX1BPU0lUSVZFX0lOREVYID0gMDtcbmNvbnN0IEZBTFNFX05FR0FUSVZFX0lOREVYID0gMTtcbmNvbnN0IEZBTFNFX1BPU0lUSVZFX0lOREVYID0gMjtcbmNvbnN0IFRSVUVfTkVHQVRJVkVfSU5ERVggPSAzO1xuLy8ga2VybmVsIHBhcmFtZXRlcnMgaW5kZWNlc1xuY29uc3QgUkJGX1NJR01BX0lOREVYID0gMDtcbmNvbnN0IFBPTFlOT01JQUxfQ19JTkRFWCA9IDA7XG5jb25zdCBQT0xZTk9NSUFMX0RfSU5ERVggPSAxO1xuY29uc3QgU0lHTU9JRF9LQVBQQV9JTkRFWCA9IDA7XG5jb25zdCBTSUdNT0lEX1RIRVRBX0lOREVYID0gMTtcbi8vIGh5cGVycGFyYW1ldGVycyBsaW1pdHNcbmNvbnN0IEdBTU1BX0lORklNVU1fTElNSVQgPSAwO1xuY29uc3QgUkJGX1NJR01BX0lORklNVU1fTElNSVQgPSAwO1xuY29uc3QgUE9MWU5PTUlBTF9DX0lORklNVU1fTElNSVQgPSAwO1xuY29uc3QgUE9MWU5PTUlBTF9EX0lORklNVU1fTElNSVQgPSAwO1xuLy8gZXJyb3IgbWVzc2FnZXNcbmNvbnN0IFdST05HX0dBTU1BX01FU1NBR0UgPSAnZ2FtbWEgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZS4nO1xuY29uc3QgV1JPTkdfUkJGX1NJR01BX01FU1NBR0UgPSAnc2lnbWEgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZS4nO1xuY29uc3QgV1JPTkdfUE9MWU5PTUlBTF9DX01FU1NBR0UgPSAnYyBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlLic7XG5jb25zdCBXUk9OR19QT0xZTk9NSUFMX0RfTUVTU0FHRSA9ICdkIG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUuJztcbmNvbnN0IFdST05HX0tFUk5FTF9NRVNTQUdFID0gJ2luY29ycmVjdCBrZXJuZWwuJztcbi8vIG5hbWVzXG5jb25zdCBMQUJFTFMgPSAnTGFiZWxzJztcbmNvbnN0IFBSRURJQ1RFRCA9ICdwcmVkaWN0ZWQnO1xuY29uc3QgQ09SUkVDVE5FU1MgPSAnY29ycmVjdG5lc3MnO1xuY29uc3QgQ09ORlVTSU9OX01BVFJJWF9OQU1FID0gJ0NvbmZ1c2lvbiBtYXRyaXgnO1xuY29uc3QgTUVBTiA9ICdtZWFuJztcbmNvbnN0IFNURF9ERVYgPSAnc3RkIGRldic7XG5jb25zdCBNT0RFTF9QQVJBTVNfTkFNRSA9ICdhbHBoYSc7XG5jb25zdCBNT0RFTF9XRUlHSFRTX05BTUUgPSAnd2VpZ2h0JztcbmNvbnN0IEdBTU1BID0gJ2dhbW1hJztcbmNvbnN0IEtFUk5FTCA9ICdrZXJuZWwnO1xuY29uc3QgS0VSTkVMX1BBUkFNUyA9ICdrZXJuZWwgcGFyYW1zJztcbmNvbnN0IEtFUk5FTF9QQVJBTV8xID0gJ2tlcm5lbCBwYXJhbSAxJztcbmNvbnN0IEtFUk5FTF9QQVJBTV8yID0gJ2tlcm5lbCBwYXJhbSAyJztcbmNvbnN0IEZFQVRVUkVTX0NPVU5UX05BTUUgPSAnZmVhdHVyZXMgY291bnQnO1xuY29uc3QgVFJBSU5fU0FNUExFU19DT1VOVF9OQU1FID0gJ3RyYWluIHNhbXBsZXMgY291bnQnO1xuY29uc3QgVFJBSU5fRVJST1IgPSAnVHJhaW4gZXJyb3IsJSc7XG5jb25zdCBLRVJORUxfVFlQRV9UT19OQU1FX01BUCA9IFsnbGluZWFyJywgJ3BvbHlub21pYWwnLCAnUkJGJywgJ3NpZ21vaWQnXTtcbmNvbnN0IFBPU0lUSVZFX05BTUUgPSAncG9zaXRpdmUgKFApJztcbmNvbnN0IE5FR0FUSVZFX05BTUUgPSAnbmVnYXRpdmUgKE4pJztcbmNvbnN0IFBSRURJQ1RFRF9QT1NJVElWRV9OQU1FID0gJ3ByZWRpY3RlZCBwb3NpdGl2ZSAoUFApJztcbmNvbnN0IFBSRURJQ1RFRF9ORUdBVElWRV9OQU1FID0gJ3ByZWRpY3RlZCBuZWdhdGl2ZSAoUE4pJztcbmNvbnN0IFNFTlNJVElWSVRZID0gJ1NlbnNpdGl2aXR5JztcbmNvbnN0IFNQRUNJRklDSVRZID0gJ1NwZWNpZmljaXR5JztcbmNvbnN0IEJBTEFOQ0VEX0FDQ1VSQUNZID0gJ0JhbGFuY2VkIGFjY3VyYWN5JztcbmNvbnN0IFBPU0lUSVZFX1BSRURJQ1RJVkVfVkFMVUUgPSAnUG9zaXRpdmUgcHJlZGljaXR2ZSB2YWx1ZSc7XG5jb25zdCBORUdBVElWRV9QUkVESUNUSVZFX1ZBTFVFID0gJ05lZ2F0aXZlIHByZWRpY2l0dmUgdmFsdWUnO1xuY29uc3QgTUxfUkVQT1JUID0gJ01vZGVsIHJlcG9ydCc7XG5jb25zdCBNTF9SRVBPUlRfUFJFRElDVEVEX0xBQkVMUyA9ICdQcmVkaWN0ZWQgbGFiZWxzJztcbmNvbnN0IE1MX1JFUE9SVF9UUkFJTl9MQUJFTFMgPSAnVHJhaW4gbGFiZWxzJztcbmNvbnN0IE1MX1JFUE9SVF9DT1JSRUNUTkVTUyA9ICdQcmVkaWN0aW9uIGNvcnJlY3RuZXNzJztcbmNvbnN0IFBSRURJQ1RJT04gPSAncHJlZGljdGlvbic7XG4vLyBQYWNrL3VucGFjayBjb25zdGFudHNcbmNvbnN0IEJZVEVTID0gNDtcbmNvbnN0IElOVFNfQ09VTlQgPSAzO1xuY29uc3QgS0VSX1BBUkFNU19DT1VOVCA9IDI7XG5jb25zdCBNT0RFTF9LRVJORUxfSU5ERVggPSAwO1xuY29uc3QgU0FNUExFU19DT1VOVF9JTkRFWCA9IDE7XG5jb25zdCBGRUFUVVJFU19DT1VOVF9JTkRFWCA9IDI7XG4vLyBtaXNjXG5jb25zdCBJTklUX1ZBTFVFID0gMDsgLy8gYW55IG51bWJlciBjYW4gYmUgdXNlZFxuY29uc3QgTFNfU1ZNX0FERF9DT05TVCA9IDE7IC8vIHNlZSBbMV0gZm9yIG1vcmUgZGV0YWlsc1xuLy8gMi4gVE9PTFNcbi8vIENoZWNrIExTLVNWTSBsZWFybmluZyBoeXBlcnBhcmFtZXRlcnNcbmZ1bmN0aW9uIGNoZWNrSHlwZXJwYXJhbWV0ZXJzKGh5cGVycGFyYW1ldGVycykge1xuICAgIC8vIGNoZWNrIGdhbW1hXG4gICAgaWYgKGh5cGVycGFyYW1ldGVycy5nYW1tYSA8PSBHQU1NQV9JTkZJTVVNX0xJTUlUKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoV1JPTkdfR0FNTUFfTUVTU0FHRSk7XG4gICAgLy8gY2hlY2sga2VybmVsICYgaXRzIHBhcmFtZXRlcnNcbiAgICBzd2l0Y2ggKGh5cGVycGFyYW1ldGVycy5rZXJuZWwpIHtcbiAgICAgICAgY2FzZSBMSU5FQVI6IC8vIHRoZSBjYXNlIG9mIGxpbmVhciBrZXJuZWxcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBSQkY6IC8vIHRoZSBjYXNlIG9mIFJCRiBrZXJuZWxcbiAgICAgICAgICAgIGlmIChoeXBlcnBhcmFtZXRlcnMuc2lnbWEgPD0gUkJGX1NJR01BX0lORklNVU1fTElNSVQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFdST05HX1JCRl9TSUdNQV9NRVNTQUdFKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSBQT0xZTk9NSUFMOiAvLyB0aGUgY2FzZSBvZiBwb2x5bm9taWFsIGtlcm5lbFxuICAgICAgICAgICAgLy8gY2hlY2sgY1xuICAgICAgICAgICAgaWYgKGh5cGVycGFyYW1ldGVycy5jUGFyYW0gPD0gUE9MWU5PTUlBTF9DX0lORklNVU1fTElNSVQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFdST05HX1BPTFlOT01JQUxfQ19NRVNTQUdFKTtcbiAgICAgICAgICAgIC8vIGNoZWNrIGRcbiAgICAgICAgICAgIGlmIChoeXBlcnBhcmFtZXRlcnMuZFBhcmFtIDw9IFBPTFlOT01JQUxfRF9JTkZJTVVNX0xJTUlUKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihXUk9OR19QT0xZTk9NSUFMX0RfTUVTU0FHRSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgU0lHTU9JRDogLy8gdGhlIGNhc2Ugb2YgcG9seW5vbWlhbCBrZXJuZWxcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZGVmYXVsdDogLy8gaW5jb3JyZWN0IGtlcm5lbFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFdST05HX0tFUk5FTF9NRVNTQUdFKTtcbiAgICB9IC8vIHN3aXRjaCAgICBcbn0gLy8gY2hlY2tIeXBlcnBhcmFtZXRlcnNcbi8vIFJldHVybmVzIGxhYmVscyBwcmVkaWN0ZWQgYnkgdGhlIG1vZGVsIHNwZWNpZmllZFxuZnVuY3Rpb24gcHJlZGljdChtb2RlbCwgZGF0YXNldCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBfb3V0cHV0O1xuICAgICAgICBsZXQgX3Byb21pc2UgPSBfcHJlZGljdEJ5TFNTVk1JbldlYldvcmtlcihtb2RlbC5rZXJuZWxUeXBlLCBtb2RlbC5rZXJuZWxQYXJhbXMsIG1vZGVsLm5vcm1hbGl6ZWRUcmFpbkRhdGEuY29sdW1ucywgbW9kZWwudHJhaW5MYWJlbHMsIG1vZGVsLm1lYW5zLCBtb2RlbC5zdGREZXZzLCBtb2RlbC5tb2RlbFBhcmFtcywgbW9kZWwubW9kZWxXZWlnaHRzLCBkYXRhc2V0KTtcbiAgICAgICAgeWllbGQgX3Byb21pc2UudGhlbihfcmVzdWx0ID0+IHsgX291dHB1dCA9IF9yZXN1bHQ7IH0sIF9lcnJvciA9PiB7IHRocm93IG5ldyBFcnJvcihgRXJyb3I6ICR7X2Vycm9yfWApOyB9KTtcbiAgICAgICAgcmV0dXJuIF9vdXRwdXQ7XG4gICAgfSk7XG59IC8vIHByZWRpY3Rcbi8vIEV2YWx1YXRlIGFjY3VyYWN5IG9mIHRoZSBtb2RlbFxuZnVuY3Rpb24gZXZhbHVhdGVBY2N1cmFjeShtb2RlbCkge1xuICAgIGxldCBkYXRhID0gbW9kZWwuY29uZnVzaW9uTWF0cml4LmdldFJhd0RhdGEoKTtcbiAgICAvLyBoZXJlLCB0aGUgY2xhc3NpYyBub3RhdGlvbiBpcyB1c2VkIChzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2Vuc2l0aXZpdHlfYW5kX3NwZWNpZmljaXR5KVxuICAgIGxldCBUUCA9IGRhdGFbVFJVRV9QT1NJVElWRV9JTkRFWF07IC8vIHRydWUgcG9zaXRpdmVcbiAgICBsZXQgVE4gPSBkYXRhW1RSVUVfTkVHQVRJVkVfSU5ERVhdOyAvLyB0cnVlIG5lZ2F0aXZlXG4gICAgbGV0IEZQID0gZGF0YVtGQUxTRV9QT1NJVElWRV9JTkRFWF07IC8vIGZhbHNlIHBvc2l0aXZlXG4gICAgbGV0IEZOID0gZGF0YVtGQUxTRV9ORUdBVElWRV9JTkRFWF07IC8vIGZhbHNlIG5lZ2F0aXZlXG4gICAgbGV0IFAgPSBUUCArIEZOOyAvLyBwb3NpdGl2ZVxuICAgIGxldCBOID0gRlAgKyBUTjsgLy8gbmVnYXRpdmVcbiAgICBsZXQgVFBSID0gVFAgLyBQOyAvLyB0cnVlIHBvc2l0aXZlIHJhdGVcbiAgICBsZXQgVE5SID0gVE4gLyBOOyAvLyB0cnVlIG5lZ2F0aXZlIHJhdGVcbiAgICBsZXQgUFBWID0gVFAgLyAoVFAgKyBGUCk7IC8vIHBvc2l0aXZlIHByZWRpY2l0dmUgdmFsdWVcbiAgICBsZXQgTlBWID0gVE4gLyAoVE4gKyBGTik7IC8vIG5lZ2F0aXZlIHByZWRpY2l0dmUgdmFsdWVcbiAgICBsZXQgQUNDID0gKFRQICsgVE4pIC8gKFAgKyBOKTsgLy8gYWNjdXJhY3lcbiAgICBsZXQgQkEgPSAoVFBSICsgVE5SKSAvIDI7IC8vIGJhbGFuY2VkIGFjY3VyYWN5XG4gICAgbW9kZWwuc2Vuc2l0aXZpdHkgPSBUUFI7XG4gICAgbW9kZWwuc3BlY2lmaWNpdHkgPSBUTlI7XG4gICAgbW9kZWwuYmFsYW5jZWRBY2N1cmFjeSA9IEJBO1xuICAgIG1vZGVsLnBvc2l0aXZlUHJlZGljaXR2ZVZhbHVlID0gUFBWO1xuICAgIG1vZGVsLm5lZ2F0aXZlUHJlZGljaXR2ZVZhbHVlID0gTlBWO1xuICAgIG1vZGVsLnRyYWluRXJyb3IgPSAoMSAtIEFDQykgKiAxMDA7IC8vIHRyYWluIGVycm9yLCAlXG59IC8vIGV2YWx1YXRlQWNjdXJhY3lcbi8vIFJldHVybnMgdHJhaW5lZCBMUy1TVk0gbW9kZWwuXG5mdW5jdGlvbiB0cmFpbkFuZEFuYWx5emVNb2RlbChoeXBlcnBhcmFtZXRlcnMsIGRhdGFzZXQsIGxhYmVscykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGNoZWNrIGNvcnJlY3RuZXNzIG9mIGh5cGVycGFyYW1ldGVyIGdhbW1hXG4gICAgICAgIGNoZWNrSHlwZXJwYXJhbWV0ZXJzKGh5cGVycGFyYW1ldGVycyk7XG4gICAgICAgIC8vIGNyZWF0ZSBkZWZhdWx0IGtlcm5lbCBwYXJhbXMgYXJyYXlcbiAgICAgICAgY29uc3Qga2VybmVsUGFyYW1zQXJyYXkgPSBbSU5JVF9WQUxVRSwgSU5JVF9WQUxVRV07XG4gICAgICAgIC8vIGZpbGwga2VybmVsUGFyYW1zXG4gICAgICAgIHN3aXRjaCAoaHlwZXJwYXJhbWV0ZXJzLmtlcm5lbCkge1xuICAgICAgICAgICAgY2FzZSBMSU5FQVI6IC8vIG5vIGtlcm5lbCBwYXJhbWV0ZXJzIGluIHRoZSBjYXNlIG9mIGxpbmVhciBrZXJuZWxcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUkJGOiAvLyBzaWdtYSBwYXJhbWV0ZXIgaW4gdGhlIGNhc2Ugb2YgUkJGLWtlcm5lbFxuICAgICAgICAgICAgICAgIGtlcm5lbFBhcmFtc0FycmF5W1JCRl9TSUdNQV9JTkRFWF0gPSBoeXBlcnBhcmFtZXRlcnMuc2lnbWE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBPTFlOT01JQUw6IC8vIHNpZ21hIHBhcmFtZXRlciBpbiB0aGUgY2FzZSBvZiBwb2x5bm9taWFsIGtlcm5lbFxuICAgICAgICAgICAgICAgIGtlcm5lbFBhcmFtc0FycmF5W1BPTFlOT01JQUxfQ19JTkRFWF0gPSBoeXBlcnBhcmFtZXRlcnMuY1BhcmFtO1xuICAgICAgICAgICAgICAgIGtlcm5lbFBhcmFtc0FycmF5W1BPTFlOT01JQUxfRF9JTkRFWF0gPSBoeXBlcnBhcmFtZXRlcnMuZFBhcmFtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTSUdNT0lEOiAvLyBzaWdtYSBwYXJhbWV0ZXIgaW4gdGhlIGNhc2Ugb2Ygc2lnbW9pZCBrZXJuZWxcbiAgICAgICAgICAgICAgICBrZXJuZWxQYXJhbXNBcnJheVtTSUdNT0lEX0tBUFBBX0lOREVYXSA9IGh5cGVycGFyYW1ldGVycy5rYXBwYTtcbiAgICAgICAgICAgICAgICBrZXJuZWxQYXJhbXNBcnJheVtTSUdNT0lEX1RIRVRBX0lOREVYXSA9IGh5cGVycGFyYW1ldGVycy50aGV0YTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIGluY29ycmVjdCBrZXJuZWwgXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFdST05HX0tFUk5FTF9NRVNTQUdFKTtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIC8vIGNyZWF0ZSBrZXJuZWwgcGFyYW1zIGNvbHVtblxuICAgICAgICBsZXQga2VybmVsUGFyYW1zID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBLRVJORUxfUEFSQU1TLCBrZXJuZWxQYXJhbXNBcnJheSk7XG4gICAgICAgIC8vIGNvbXB1dGUgc2l6ZSBvZiBtb2RlbCBwYXJhbXMgJiBwcmVjb21wdXRlZCB3ZWlndGhzXG4gICAgICAgIGxldCB0cmFpbkNvbHMgPSBkYXRhc2V0LnRvTGlzdCgpO1xuICAgICAgICBsZXQgbW9kZWxQYXJhbXNDb3VudCA9IHRyYWluQ29sc1swXS5sZW5ndGggKyBMU19TVk1fQUREX0NPTlNUO1xuICAgICAgICBsZXQgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQgPSB0cmFpbkNvbHMubGVuZ3RoICsgTFNfU1ZNX0FERF9DT05TVDtcbiAgICAgICAgbGV0IGNvbmZ1c2lvbk1hdHJpeEVsZW1lbnRzQ291bnQgPSBDT05GVVNJT05fTUFUUl9TSVpFO1xuICAgICAgICAvLyBjYWxsIHdlYmFzc2VtYmx5IHRyYWluaW5nIGZ1bmN0aW9uXG4gICAgICAgIGxldCBvdXRwdXQ7XG4gICAgICAgIGxldCBfcHJvbWlzZSA9IF90cmFpbkFuZEFuYWx5emVMU1NWTUluV2ViV29ya2VyKGh5cGVycGFyYW1ldGVycy5nYW1tYSwgaHlwZXJwYXJhbWV0ZXJzLmtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgY29uZnVzaW9uTWF0cml4RWxlbWVudHNDb3VudCwgZGF0YXNldCwgbGFiZWxzKTtcbiAgICAgICAgeWllbGQgX3Byb21pc2UudGhlbihfcmVzdWx0ID0+IHsgb3V0cHV0ID0gX3Jlc3VsdDsgfSwgX2Vycm9yID0+IHsgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogJHtfZXJyb3J9YCk7IH0pO1xuICAgICAgICAvLyByZW5hbWUgb3V0cHV0IGNvbHVtbnNcbiAgICAgICAgb3V0cHV0W01FQU5TX0lOREVYXS5uYW1lID0gTUVBTjtcbiAgICAgICAgb3V0cHV0W1NURF9ERVZTX0lOREVYXS5uYW1lID0gU1REX0RFVjtcbiAgICAgICAgb3V0cHV0W01PREVMX1BBUkFNU19JTkRFWF0ubmFtZSA9IE1PREVMX1BBUkFNU19OQU1FO1xuICAgICAgICBvdXRwdXRbTU9ERUxfV0VJR0hUU19JTkRFWF0ubmFtZSA9IE1PREVMX1dFSUdIVFNfTkFNRTtcbiAgICAgICAgb3V0cHV0W1BSRURJQ1RFRF9MQUJFTFNfSU5ERVhdLm5hbWUgPSBQUkVESUNURUQ7XG4gICAgICAgIG91dHB1dFtDT1JSRUNUTkVTU19JTkRFWF0ubmFtZSA9IENPUlJFQ1RORVNTO1xuICAgICAgICBvdXRwdXRbQ09ORlVTSU9OX01BVFJJWF9JTkRFWF0ubmFtZSA9IENPTkZVU0lPTl9NQVRSSVhfTkFNRTtcbiAgICAgICAgLy8gY29tcGxldGUgbW9kZWxcbiAgICAgICAgbGV0IG1vZGVsID0ge1xuICAgICAgICAgICAgdHJhaW5HYW1tYTogaHlwZXJwYXJhbWV0ZXJzLmdhbW1hLFxuICAgICAgICAgICAga2VybmVsVHlwZTogaHlwZXJwYXJhbWV0ZXJzLmtlcm5lbCxcbiAgICAgICAgICAgIGtlcm5lbFBhcmFtczoga2VybmVsUGFyYW1zLFxuICAgICAgICAgICAgdHJhaW5MYWJlbHM6IGxhYmVscyxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRUcmFpbkRhdGE6IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhvdXRwdXRbTk9STUFMSVpFRF9EQVRBX0lOREVYXSksXG4gICAgICAgICAgICBtZWFuczogb3V0cHV0W01FQU5TX0lOREVYXSxcbiAgICAgICAgICAgIHN0ZERldnM6IG91dHB1dFtTVERfREVWU19JTkRFWF0sXG4gICAgICAgICAgICBtb2RlbFBhcmFtczogb3V0cHV0W01PREVMX1BBUkFNU19JTkRFWF0sXG4gICAgICAgICAgICBtb2RlbFdlaWdodHM6IG91dHB1dFtNT0RFTF9XRUlHSFRTX0lOREVYXSxcbiAgICAgICAgICAgIHByZWRpY3RlZExhYmVsczogb3V0cHV0W1BSRURJQ1RFRF9MQUJFTFNfSU5ERVhdLFxuICAgICAgICAgICAgY29ycmVjdG5lc3M6IG91dHB1dFtDT1JSRUNUTkVTU19JTkRFWF0sXG4gICAgICAgICAgICBjb25mdXNpb25NYXRyaXg6IG91dHB1dFtDT05GVVNJT05fTUFUUklYX0lOREVYXSxcbiAgICAgICAgICAgIHRyYWluRXJyb3I6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZlYXR1cmVzQ291bnQ6IHRyYWluQ29scy5sZW5ndGgsXG4gICAgICAgICAgICB0cmFpblNhbXBsZXNDb3VudDogdHJhaW5Db2xzWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICBldmFsdWF0ZUFjY3VyYWN5KG1vZGVsKTtcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH0pO1xufSAvLyB0cmFpbkFuZEFuYWx5emVNb2RlbFxuLy8gV3JhcHBlciBmb3IgY29tYmluaW5nIHRoZSBmdW5jdGlvbiBcInRyYWluQW5kQW5hbHl6ZU1vZGVsXCIgd2l0aCBEYXRhZ3JvayBwcmVkaWNpdHZlIHRvb2xzXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhaW5lZE1vZGVsKGh5cGVycGFyYW1ldGVycywgZGYsIHByZWRpY3RfY29sdW1uKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBkZi5jb2x1bW5zO1xuICAgICAgICBsZXQgbGFiZWxzID0gY29sdW1ucy5ieU5hbWUocHJlZGljdF9jb2x1bW4pO1xuICAgICAgICBjb2x1bW5zLnJlbW92ZShwcmVkaWN0X2NvbHVtbik7XG4gICAgICAgIHJldHVybiB5aWVsZCB0cmFpbkFuZEFuYWx5emVNb2RlbChoeXBlcnBhcmFtZXRlcnMsIGNvbHVtbnMsIGxhYmVscyk7XG4gICAgfSk7XG59XG4vLyBSZXR1cm5zIGRhdGFmcmFtZSB3aXRoIHNob3J0IGluZm8gYWJvdXQgbW9kZWxcbmZ1bmN0aW9uIGdldE1vZGVsSW5mbyhtb2RlbCkge1xuICAgIGxldCBrZXJuZWxQYXJhbXMgPSBtb2RlbC5rZXJuZWxQYXJhbXMuZ2V0UmF3RGF0YSgpO1xuICAgIHJldHVybiBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIEdBTU1BLCBbbW9kZWwudHJhaW5HYW1tYV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbVN0cmluZ3MoS0VSTkVMLCBbS0VSTkVMX1RZUEVfVE9fTkFNRV9NQVBbbW9kZWwua2VybmVsVHlwZV1dKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBLRVJORUxfUEFSQU1fMSwgW2tlcm5lbFBhcmFtc1swXV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIEtFUk5FTF9QQVJBTV8yLCBba2VybmVsUGFyYW1zWzFdXSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgRkVBVFVSRVNfQ09VTlRfTkFNRSwgW21vZGVsLmZlYXR1cmVzQ291bnRdKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBUUkFJTl9TQU1QTEVTX0NPVU5UX05BTUUsIFttb2RlbC50cmFpblNhbXBsZXNDb3VudF0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIFRSQUlOX0VSUk9SLCBbbW9kZWwudHJhaW5FcnJvcl0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIEJBTEFOQ0VEX0FDQ1VSQUNZLCBbbW9kZWwuYmFsYW5jZWRBY2N1cmFjeV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIFNFTlNJVElWSVRZLCBbbW9kZWwuc2Vuc2l0aXZpdHldKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBTUEVDSUZJQ0lUWSwgW21vZGVsLnNwZWNpZmljaXR5XSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgUE9TSVRJVkVfUFJFRElDVElWRV9WQUxVRSwgW21vZGVsLnBvc2l0aXZlUHJlZGljaXR2ZVZhbHVlXSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgTkVHQVRJVkVfUFJFRElDVElWRV9WQUxVRSwgW21vZGVsLm5lZ2F0aXZlUHJlZGljaXR2ZVZhbHVlXSlcbiAgICBdKTtcbn1cbi8vIEdldCBkYXRhZnJhbWUgd2l0aCBjb25mdXNpb24gbWF0cml4XG5mdW5jdGlvbiBnZXRDb25mdXNpb25NYXRyaXhERihtb2RlbCkge1xuICAgIGxldCBkYXRhID0gbW9kZWwuY29uZnVzaW9uTWF0cml4LmdldFJhd0RhdGEoKTtcbiAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtcbiAgICAgICAgREcuQ29sdW1uLmZyb21TdHJpbmdzKCcnLCBbUE9TSVRJVkVfTkFNRSwgTkVHQVRJVkVfTkFNRV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2ludCcsIFBSRURJQ1RFRF9QT1NJVElWRV9OQU1FLCBbZGF0YVtUUlVFX1BPU0lUSVZFX0lOREVYXSwgZGF0YVtGQUxTRV9QT1NJVElWRV9JTkRFWF1dKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdpbnQnLCBQUkVESUNURURfTkVHQVRJVkVfTkFNRSwgW2RhdGFbRkFMU0VfTkVHQVRJVkVfSU5ERVhdLCBkYXRhW1RSVUVfTkVHQVRJVkVfSU5ERVhdXSlcbiAgICBdKTtcbn1cbi8vIFNob3cgdHJhaW5pbmcgcmVwb3J0XG5leHBvcnQgZnVuY3Rpb24gc2hvd1RyYWluUmVwb3J0KGRmLCBtb2RlbCkge1xuICAgIGRmLm5hbWUgPSBNTF9SRVBPUlQ7XG4gICAgZGYuY29sdW1ucy5hZGQobW9kZWwudHJhaW5MYWJlbHMpO1xuICAgIGRmLmNvbHVtbnMuYWRkKG1vZGVsLnByZWRpY3RlZExhYmVscyk7XG4gICAgZGYuY29sdW1ucy5hZGQobW9kZWwuY29ycmVjdG5lc3MpO1xuICAgIGxldCBkZlZpZXcgPSBncm9rLnNoZWxsLmFkZFRhYmxlVmlldyhkZik7XG4gICAgZGZWaWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuZm9ybShnZXRNb2RlbEluZm8obW9kZWwpKSk7XG4gICAgZGZWaWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHsgdGl0bGU6IE1MX1JFUE9SVF9QUkVESUNURURfTEFCRUxTLFxuICAgICAgICBjb2xvcjogbW9kZWwucHJlZGljdGVkTGFiZWxzLm5hbWVcbiAgICB9KSk7XG4gICAgZGZWaWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHsgdGl0bGU6IE1MX1JFUE9SVF9UUkFJTl9MQUJFTFMsXG4gICAgICAgIGNvbG9yOiBtb2RlbC50cmFpbkxhYmVscy5uYW1lXG4gICAgfSkpO1xuICAgIGRmVmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLmdyaWQoZ2V0Q29uZnVzaW9uTWF0cml4REYobW9kZWwpKSk7XG4gICAgZGZWaWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHsgdGl0bGU6IE1MX1JFUE9SVF9DT1JSRUNUTkVTUyxcbiAgICAgICAgY29sb3I6IG1vZGVsLmNvcnJlY3RuZXNzLm5hbWVcbiAgICB9KSk7XG59IC8vIHNob3dUcmFpblJlcG9ydFxuLy8gUmV0dXJucyB0cmFpbmVkIG1vZGVsIHBhY2tlZCBpbnRvIFVJbnQ4QXJyYXlcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrZWRNb2RlbChtb2RlbCkge1xuICAgIC8vIGdldCBwcmluY2lwYWwgZGF0YVxuICAgIGxldCBkYXRhQ29scyA9IG1vZGVsLm5vcm1hbGl6ZWRUcmFpbkRhdGEuY29sdW1ucztcbiAgICBsZXQgc2FtcGxlc0NvdW50ID0gbW9kZWwudHJhaW5TYW1wbGVzQ291bnQ7XG4gICAgbGV0IGZlYXR1cmVzQ291bnQgPSBtb2RlbC5mZWF0dXJlc0NvdW50O1xuICAgIC8qbGV0IGJ1ZmZlclNpemUgPSBCWVRFUyAqICg3ICsgZmVhdHVyZXNDb3VudCAqIHNhbXBsZXNDb3VudFxuICAgICAgKyAzICogZmVhdHVyZXNDb3VudCArIDIgKiBzYW1wbGVzQ291bnQpOyovXG4gICAgLy8gY29tcHV0ZSBzaXplIG9mIHBhY2tlZCBtb2RlbFxuICAgIGxldCBidWZmZXJTaXplID0gQllURVMgKiAoSU5UU19DT1VOVCArIEtFUl9QQVJBTVNfQ09VTlQgK1xuICAgICAgICBzYW1wbGVzQ291bnQgKyBmZWF0dXJlc0NvdW50ICsgZmVhdHVyZXNDb3VudCArIHNhbXBsZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1RcbiAgICAgICAgKyBmZWF0dXJlc0NvdW50ICsgTFNfU1ZNX0FERF9DT05TVCArIGZlYXR1cmVzQ291bnQgKiBzYW1wbGVzQ291bnQpO1xuICAgIC8vIHBhY2tlZCBtb2RlbFxuICAgIGxldCByZXN1bHQgPSBuZXcgVWludDhBcnJheShidWZmZXJTaXplKTtcbiAgICBsZXQgYnVmZmVyID0gcmVzdWx0LmJ1ZmZlcjtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAvLyBwYWNrIGtlcm5lbCB0eXBlIGFuZCBzaXplc1xuICAgIGxldCBpbnRzID0gbmV3IEludDMyQXJyYXkoYnVmZmVyLCBvZmZzZXQsIElOVFNfQ09VTlQpO1xuICAgIGludHNbTU9ERUxfS0VSTkVMX0lOREVYXSA9IG1vZGVsLmtlcm5lbFR5cGU7XG4gICAgaW50c1tTQU1QTEVTX0NPVU5UX0lOREVYXSA9IHNhbXBsZXNDb3VudDtcbiAgICBpbnRzW0ZFQVRVUkVTX0NPVU5UX0lOREVYXSA9IGZlYXR1cmVzQ291bnQ7XG4gICAgb2Zmc2V0ICs9IElOVFNfQ09VTlQgKiBCWVRFUztcbiAgICAvLyBwYWNrIGtlcm5lbCBwYXJhbWV0ZXJzXG4gICAgbGV0IGZsb2F0cyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyLCBvZmZzZXQsIEtFUl9QQVJBTVNfQ09VTlQpO1xuICAgIGZsb2F0cy5zZXQobW9kZWwua2VybmVsUGFyYW1zLmdldFJhd0RhdGEoKSk7XG4gICAgb2Zmc2V0ICs9IEtFUl9QQVJBTVNfQ09VTlQgKiBCWVRFUztcbiAgICAvLyBwYWNrIHBhY2sgbGFiZWxzIG9mIHRyYWluaW5nIGRhdGFcbiAgICBmbG9hdHMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCBzYW1wbGVzQ291bnQpO1xuICAgIGZsb2F0cy5zZXQobW9kZWwudHJhaW5MYWJlbHMuZ2V0UmF3RGF0YSgpKTtcbiAgICBvZmZzZXQgKz0gc2FtcGxlc0NvdW50ICogQllURVM7XG4gICAgLy8gcGFjayBtZWFuIHZhbHVlcyBvZiB0cmFpbmluZyBkYXRhXG4gICAgZmxvYXRzID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXIsIG9mZnNldCwgZmVhdHVyZXNDb3VudCk7XG4gICAgZmxvYXRzLnNldChtb2RlbC5tZWFucy5nZXRSYXdEYXRhKCkpO1xuICAgIG9mZnNldCArPSBmZWF0dXJlc0NvdW50ICogQllURVM7XG4gICAgLy8gcGFjayBzdGFuZGFyZCBkZXZpYXRpb25zIG9mIHRyYWluaW5nIGRhdGFcbiAgICBmbG9hdHMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCBmZWF0dXJlc0NvdW50KTtcbiAgICBmbG9hdHMuc2V0KG1vZGVsLnN0ZERldnMuZ2V0UmF3RGF0YSgpKTtcbiAgICBvZmZzZXQgKz0gZmVhdHVyZXNDb3VudCAqIEJZVEVTO1xuICAgIC8vIHBhY2sgbW9kZWwgcGFyYW10ZXJzXG4gICAgZmxvYXRzID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXIsIG9mZnNldCwgc2FtcGxlc0NvdW50ICsgTFNfU1ZNX0FERF9DT05TVCk7XG4gICAgZmxvYXRzLnNldChtb2RlbC5tb2RlbFBhcmFtcy5nZXRSYXdEYXRhKCkpO1xuICAgIG9mZnNldCArPSAoc2FtcGxlc0NvdW50ICsgTFNfU1ZNX0FERF9DT05TVCkgKiBCWVRFUztcbiAgICAvLyBwYWNrIG1vZGVsJ3MgcHJlY29tcHV0ZWQgd2VpZ2h0c1xuICAgIGZsb2F0cyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyLCBvZmZzZXQsIGZlYXR1cmVzQ291bnQgKyBMU19TVk1fQUREX0NPTlNUKTtcbiAgICBmbG9hdHMuc2V0KG1vZGVsLm1vZGVsV2VpZ2h0cy5nZXRSYXdEYXRhKCkpO1xuICAgIG9mZnNldCArPSAoZmVhdHVyZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpICogQllURVM7XG4gICAgLy8gcGFjayB0cmFpbmluZyBkYXRhc2V0XG4gICAgZm9yIChjb25zdCBjb2wgb2YgZGF0YUNvbHMpIHtcbiAgICAgICAgZmxvYXRzID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXIsIG9mZnNldCwgZmVhdHVyZXNDb3VudCk7XG4gICAgICAgIGZsb2F0cy5zZXQoY29sLmdldFJhd0RhdGEoKSk7XG4gICAgICAgIG9mZnNldCArPSBmZWF0dXJlc0NvdW50ICogQllURVM7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59IC8vIGdldFBhY2tlZE1vZGVsXG4vLyBSZXR1cm5zIHVucGFja2VkIG1vZGVsXG5mdW5jdGlvbiBnZXRVbnBhY2tlZE1vZGVsKHBhY2tlZE1vZGVsKSB7XG4gICAgbGV0IG1vZGVsQnl0ZXMgPSBwYWNrZWRNb2RlbC5idWZmZXI7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgLy8gZXh0cmFjdCBrZXJuZWwgdHlwZSBhbmQgc2l6ZXNcbiAgICBsZXQgaGVhZGVyID0gbmV3IEludDMyQXJyYXkobW9kZWxCeXRlcywgb2Zmc2V0LCBJTlRTX0NPVU5UKTtcbiAgICBvZmZzZXQgKz0gSU5UU19DT1VOVCAqIEJZVEVTO1xuICAgIGxldCBzYW1wbGVzQ291bnQgPSBoZWFkZXJbU0FNUExFU19DT1VOVF9JTkRFWF07XG4gICAgbGV0IGZlYXR1cmVzQ291bnQgPSBoZWFkZXJbRkVBVFVSRVNfQ09VTlRfSU5ERVhdO1xuICAgIC8vIGV4dHJhY3QgcGFyYW1ldGVycyBvZiBrZXJuZWxcbiAgICBjb25zdCBrZXJuZWxQYXJhbXMgPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShLRVJORUxfUEFSQU1TLCBuZXcgRmxvYXQzMkFycmF5KG1vZGVsQnl0ZXMsIG9mZnNldCwgS0VSX1BBUkFNU19DT1VOVCkpO1xuICAgIG9mZnNldCArPSBLRVJfUEFSQU1TX0NPVU5UICogQllURVM7XG4gICAgLy8gZXh0cmFjdCB0cmFpbmluZyBsYWJlbHNcbiAgICBjb25zdCB0cmFpbkxhYmVscyA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KExBQkVMUywgbmV3IEZsb2F0MzJBcnJheShtb2RlbEJ5dGVzLCBvZmZzZXQsIHNhbXBsZXNDb3VudCkpO1xuICAgIG9mZnNldCArPSBzYW1wbGVzQ291bnQgKiBCWVRFUztcbiAgICAvLyBleHRyYWN0IG1lYW4gdmFsdWVzIG9mIHRyYWluaW5nIGRhdGFcbiAgICBjb25zdCBtZWFucyA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KE1FQU4sIG5ldyBGbG9hdDMyQXJyYXkobW9kZWxCeXRlcywgb2Zmc2V0LCBmZWF0dXJlc0NvdW50KSk7XG4gICAgb2Zmc2V0ICs9IGZlYXR1cmVzQ291bnQgKiBCWVRFUztcbiAgICAvLyBleHRyYWN0IHN0YW5kYXJkIGRldmlhdGlvbnMgb2YgdHJhaW5pbmcgZGF0YVxuICAgIGNvbnN0IHN0ZERldnMgPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShTVERfREVWLCBuZXcgRmxvYXQzMkFycmF5KG1vZGVsQnl0ZXMsIG9mZnNldCwgZmVhdHVyZXNDb3VudCkpO1xuICAgIG9mZnNldCArPSBmZWF0dXJlc0NvdW50ICogQllURVM7XG4gICAgLy8gZXh0cmFjdCBwYXJhbWV0ZXJzIG9mIG1vZGVsXG4gICAgY29uc3QgbW9kZWxQYXJhbXMgPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShNT0RFTF9QQVJBTVNfTkFNRSwgbmV3IEZsb2F0MzJBcnJheShtb2RlbEJ5dGVzLCBvZmZzZXQsIHNhbXBsZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpKTtcbiAgICBvZmZzZXQgKz0gKHNhbXBsZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpICogQllURVM7XG4gICAgLy8gZXh0cmFjdCBtb2RlbCdzIHByZWNvbXB1dGVkIHdlaWdodHNcbiAgICBjb25zdCBtb2RlbFdlaWdodHMgPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShNT0RFTF9XRUlHSFRTX05BTUUsIG5ldyBGbG9hdDMyQXJyYXkobW9kZWxCeXRlcywgb2Zmc2V0LCBmZWF0dXJlc0NvdW50ICsgTFNfU1ZNX0FERF9DT05TVCkpO1xuICAgIG9mZnNldCArPSAoZmVhdHVyZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpICogQllURVM7XG4gICAgLy8gZXh0cmFjdCB0cmFpbmluZyBkYXRhIGNvbHVtbnNcbiAgICBsZXQgZGF0YUNvbHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNhbXBsZXNDb3VudDsgaSsrKSB7XG4gICAgICAgIGRhdGFDb2xzLnB1c2goREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoaS50b1N0cmluZygpLCBuZXcgRmxvYXQzMkFycmF5KG1vZGVsQnl0ZXMsIG9mZnNldCwgZmVhdHVyZXNDb3VudCkpKTtcbiAgICAgICAgb2Zmc2V0ICs9IGZlYXR1cmVzQ291bnQgKiBCWVRFUztcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsaXplZFRyYWluRGF0YSA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhkYXRhQ29scyk7XG4gICAgbGV0IG1vZGVsID0geyBrZXJuZWxUeXBlOiBoZWFkZXJbTU9ERUxfS0VSTkVMX0lOREVYXSxcbiAgICAgICAga2VybmVsUGFyYW1zOiBrZXJuZWxQYXJhbXMsXG4gICAgICAgIHRyYWluTGFiZWxzOiB0cmFpbkxhYmVscyxcbiAgICAgICAgbWVhbnM6IG1lYW5zLFxuICAgICAgICBzdGREZXZzOiBzdGREZXZzLFxuICAgICAgICBtb2RlbFBhcmFtczogbW9kZWxQYXJhbXMsXG4gICAgICAgIG1vZGVsV2VpZ2h0czogbW9kZWxXZWlnaHRzLFxuICAgICAgICBub3JtYWxpemVkVHJhaW5EYXRhOiBub3JtYWxpemVkVHJhaW5EYXRhXG4gICAgfTtcbiAgICByZXR1cm4gbW9kZWw7XG59IC8vIGdldFVucGFja2VkTW9kZWxcbi8vIFdyYXBwZXIgZm9yIGNvbWJpbmluZyB0aGUgZnVuY3Rpb24gXCJwcmVkaWN0XCIgd2l0aCBEYXRhZ3JvayBwcmVkaWNpdHZlIHRvb2xzXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJlZGljdGlvbihkZiwgcGFja2VkTW9kZWwpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgbW9kZWwgPSBnZXRVbnBhY2tlZE1vZGVsKG5ldyBVaW50OEFycmF5KHBhY2tlZE1vZGVsKSk7XG4gICAgICAgIGxldCByZXMgPSB5aWVsZCBwcmVkaWN0KG1vZGVsLCBkZi5jb2x1bW5zKTtcbiAgICAgICAgcmVzLm5hbWUgPSBQUkVESUNUSU9OO1xuICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtyZXNdKTtcbiAgICB9KTtcbn0gLy8gZ2V0UHJlZGljdGlvblxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG4vKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IERlbW9TY3JpcHQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3R1dG9yaWFscy9zcmMvZGVtby1zY3JpcHQnO1xuaW1wb3J0IHsgX2luaXRFREFBUEkgfSBmcm9tICcuLi93YXNtL0VEQUFQSSc7XG5pbXBvcnQgeyBjb21wdXRlUENBLCBjb21wdXRlUExTIH0gZnJvbSAnLi9FREF0b29scyc7XG5pbXBvcnQgeyByZW5hbWVQQ0Fjb2x1bW5zLCBhZGRQTFN2aXN1YWxpemF0aW9uLCByZWdyZXNzaW9uQ29lZmZpY2llbnRzQmFyQ2hhcnQsIHNjb3Jlc1NjYXR0ZXJQbG90LCBwcmVkaWN0ZWRWZXJzdXNSZWZlcmVuY2VTY2F0dGVyUGxvdCB9IGZyb20gJy4vRURBdWknO1xuaW1wb3J0IHsgY2Fyc0RhdGFmcmFtZSwgdGVzdERhdGFGb3JCaW5hcnlDbGFzc2lmaWNhdGlvbiB9IGZyb20gJy4vZGF0YUdlbmVyYXRvcnMnO1xuaW1wb3J0IHsgTElORUFSLCBSQkYsIFBPTFlOT01JQUwsIFNJR01PSUQsIGdldFRyYWluZWRNb2RlbCwgZ2V0UHJlZGljdGlvbiwgc2hvd1RyYWluUmVwb3J0LCBnZXRQYWNrZWRNb2RlbCB9IGZyb20gJy4vc3ZtJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG4vL25hbWU6IGluZm9cbmV4cG9ydCBmdW5jdGlvbiBpbmZvKCkge1xuICAgIGdyb2suc2hlbGwuaW5mbyhfcGFja2FnZS53ZWJSb290KTtcbn1cbi8vdGFnczogaW5pdFxuZXhwb3J0IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgeWllbGQgX2luaXRFREFBUEkoKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IFRvb2xzIHwgRGF0YSBTY2llbmNlIHwgUHJpbmNpcGFsIENvbXBvbmVudCBBbmFseXNpcy4uLlxuLy9uYW1lOiBQQ0Fcbi8vZGVzY3JpcHRpb246IFByaW5jaXBhbCBjb21wb25lbnQgYW5hbHlzaXMgKFBDQSkuXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbi8vaW5wdXQ6IGNvbHVtbl9saXN0IGZlYXR1cmVzIHt0eXBlOiBudW1lcmljYWx9XG4vL2lucHV0OiBpbnQgY29tcG9uZW50cyA9IDJcbi8vaW5wdXQ6IGJvb2wgY2VudGVyID0gdHJ1ZVxuLy9pbnB1dDogYm9vbCBzY2FsZSA9IHRydWVcbi8vb3V0cHV0OiBkYXRhZnJhbWUgcmVzdWx0IHthY3Rpb246am9pbih0YWJsZSl9XG5leHBvcnQgZnVuY3Rpb24gUENBKHRhYmxlLCBmZWF0dXJlcywgY29tcG9uZW50cywgY2VudGVyLCBzY2FsZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiByZW5hbWVQQ0Fjb2x1bW5zKHlpZWxkIGNvbXB1dGVQQ0EodGFibGUsIGZlYXR1cmVzLCBjb21wb25lbnRzLCBjZW50ZXIsIHNjYWxlKSk7XG4gICAgfSk7XG59XG4vL3RvcC1tZW51OiBNTCB8IE11bHRpdmFyaWF0ZSBBbmFseXNpcyAoUExTKS4uLlxuLy9uYW1lOiBNdWx0aXZhcmlhdGUgQW5hbHlzaXMgKFBMUylcbi8vZGVzY3JpcHRpb246IE11bHRpZGltZW5zaW9uYWwgZGF0YSBhbmFseXNpcyB1c2luZyBwYXJ0aWFsIGxlYXN0IHNxdWFyZXMgKFBMUykgcmVncmVzc2lvbi4gSXQgcmVkdWNlcyB0aGUgcHJlZGljdG9ycyB0byBhIHNtYWxsZXIgc2V0IG9mIHVuY29ycmVsYXRlZCBjb21wb25lbnRzIGFuZCBwZXJmb3JtcyBsZWFzdCBzcXVhcmVzIHJlZ3Jlc3Npb24gb24gdGhlbS5cbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuLy9pbnB1dDogY29sdW1uIG5hbWVzXG4vL2lucHV0OiBjb2x1bW5fbGlzdCBmZWF0dXJlcyB7dHlwZTogbnVtZXJpY2FsfVxuLy9pbnB1dDogY29sdW1uIHByZWRpY3Qge3R5cGU6IG51bWVyaWNhbH1cbi8vaW5wdXQ6IGludCBjb21wb25lbnRzID0gM1xuZXhwb3J0IGZ1bmN0aW9uIFBMUyh0YWJsZSwgbmFtZXMsIGZlYXR1cmVzLCBwcmVkaWN0LCBjb21wb25lbnRzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgcGxzUmVzdWx0cyA9IHlpZWxkIGNvbXB1dGVQTFModGFibGUsIGZlYXR1cmVzLCBwcmVkaWN0LCBjb21wb25lbnRzKTtcbiAgICAgICAgYWRkUExTdmlzdWFsaXphdGlvbih0YWJsZSwgbmFtZXMsIGZlYXR1cmVzLCBwcmVkaWN0LCBwbHNSZXN1bHRzKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogTVZBIGRlbW9cbi8vZGVzY3JpcHRpb246IE11bHRpZGltZW5zaW9uYWwgZGF0YSBhbmFseXNpcyB1c2luZyBwYXJ0aWFsIGxlYXN0IHNxdWFyZXMgKFBMUykgcmVncmVzc2lvbi4gSXQgcmVkdWNlcyB0aGUgcHJlZGljdG9ycyB0byBhIHNtYWxsZXIgc2V0IG9mIHVuY29ycmVsYXRlZCBjb21wb25lbnRzIGFuZCBwZXJmb3JtcyBsZWFzdCBzcXVhcmVzIHJlZ3Jlc3Npb24gb24gdGhlbS5cbi8vbWV0YS5kZW1vUGF0aDogQ29tcHV0ZSB8IE11bHRpdmFyaWF0ZSBhbmFseXNpc1xuLy9tZXRhLmlzRGVtb1NjcmlwdDogVHJ1ZVxuZXhwb3J0IGZ1bmN0aW9uIGRlbW9NdWx0aXZhcmlhdGVBbmFseXNpcygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBkZW1vU2NyaXB0ID0gbmV3IERlbW9TY3JpcHQoJ1BhcnRpYWwgbGVhc3Qgc3F1YXJlcyByZWdyZXNzaW9uJywgJ0FuYWx5c2lzIG9mIG11bHRpZGltZW5zaW9uYWwgZGF0YS4nKTtcbiAgICAgICAgY29uc3QgY2FycyA9IGNhcnNEYXRhZnJhbWUoKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IDM7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gY2Fycy5jb2x1bW5zLmJ5TmFtZSgnbW9kZWwnKTtcbiAgICAgICAgY29uc3QgcHJlZGljdCA9IGNhcnMuY29sdW1ucy5ieU5hbWUoJ3ByaWNlJyk7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gY2Fycy5jb2x1bW5zLnJlbW92ZSgncHJpY2UnKS5yZW1vdmUoJ21vZGVsJyk7XG4gICAgICAgIGNvbnN0IHBsc091dHB1dCA9IHlpZWxkIGNvbXB1dGVQTFMoY2FycywgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHMpO1xuICAgICAgICBjb25zdCBzb3VyY2VDYXJzID0gY2Fyc0RhdGFmcmFtZSgpO1xuICAgICAgICBzb3VyY2VDYXJzLm5hbWUgPSAnQ2Fycyc7XG4gICAgICAgIGxldCB2aWV3O1xuICAgICAgICBsZXQgZGlhbG9nO1xuICAgICAgICB5aWVsZCBkZW1vU2NyaXB0XG4gICAgICAgICAgICAuc3RlcCgnRGF0YScsICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwuYWRkVGFibGVWaWV3KHNvdXJjZUNhcnMpO1xuICAgICAgICAgICAgdmlldyA9IGdyb2suc2hlbGwuZ2V0VGFibGVWaWV3KHNvdXJjZUNhcnMubmFtZSk7XG4gICAgICAgIH0pLCB7IGRlc2NyaXB0aW9uOiAnRWFjaCBjYXIgaGFzIG1hbnkgZmVhdHVyZXMgLSBwYXR0ZXJucyBleHRyYWN0aW9uIGlzIGNvbXBsaWNhdGVkLicsIGRlbGF5OiAwIH0pXG4gICAgICAgICAgICAuc3RlcCgnTW9kZWwnLCAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBkaWFsb2cgPSB1aS5kaWFsb2coeyB0aXRsZTogJ011bHRpdmFyaWF0ZSBBbmFseXNpcyAoUExTKScgfSlcbiAgICAgICAgICAgICAgICAuYWRkKHVpLnRhYmxlSW5wdXQoJ1RhYmxlJywgc291cmNlQ2FycykpXG4gICAgICAgICAgICAgICAgLmFkZCh1aS5jb2x1bW5zSW5wdXQoJ0ZlYXR1cmVzJywgY2FycywgZmVhdHVyZXMudG9MaXN0LCB7IGF2YWlsYWJsZTogdW5kZWZpbmVkLCBjaGVja2VkOiBmZWF0dXJlcy5uYW1lcygpIH0pKVxuICAgICAgICAgICAgICAgIC5hZGQodWkuY29sdW1uSW5wdXQoJ05hbWVzJywgY2FycywgbmFtZXMsIHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgLmFkZCh1aS5jb2x1bW5JbnB1dCgnUHJlZGljdCcsIGNhcnMsIHByZWRpY3QsIHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgLmFkZCh1aS5pbnRJbnB1dCgnQ29tcG9uZW50cycsIGNvbXBvbmVudHMsIHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgICAgLm9uT0soKCkgPT4ge1xuICAgICAgICAgICAgICAgIGdyb2suc2hlbGwuaW5mbygnTXVsdGl2YXJpYXRlIGFuYWx5c2lzIGhhcyBiZWVuIGFscmVhZHkgcGVyZm9ybWVkLicpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc2hvdyh7IHg6IDQwMCwgeTogMTQwIH0pO1xuICAgICAgICB9KSwgeyBkZXNjcmlwdGlvbjogJ1ByZWRpY3QgY2FyIHByaWNlIGJ5IGl0cyBvdGhlciBmZWF0dXJlcy4nLCBkZWxheTogMCB9KVxuICAgICAgICAgICAgLnN0ZXAoJ1JlZ3Jlc3Npb24gY29lZmZjaWNpZW50cycsICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgdmlldy5hZGRWaWV3ZXIocmVncmVzc2lvbkNvZWZmaWNpZW50c0JhckNoYXJ0KGZlYXR1cmVzLCBwbHNPdXRwdXRbMV0pKTtcbiAgICAgICAgfSksIHsgZGVzY3JpcHRpb246ICdUaGUgZmVhdHVyZSBcImRpZXNlbFwiIGFmZmVjdHMgdGhlIHByaWNlIHRoZSBtb3N0LicsIGRlbGF5OiAwIH0pXG4gICAgICAgICAgICAuc3RlcCgnU2NvcmVzJywgKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyB2aWV3LmFkZFZpZXdlcihzY29yZXNTY2F0dGVyUGxvdChuYW1lcywgcGxzT3V0cHV0WzJdLCBwbHNPdXRwdXRbM10pKTsgfSksIHsgZGVzY3JpcHRpb246ICdTaW1pbGFyaXRpZXMgJiBkaXNzaW1pbGFyaXRpZXM6IGFsZmFyb21lbyBhbmQgbWVyY2VkZXMgYXJlIGRpZmZlcmVudC4nLCBkZWxheTogMCB9KVxuICAgICAgICAgICAgLnN0ZXAoJ1ByZWRpY3Rpb24nLCAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHZpZXcuYWRkVmlld2VyKHByZWRpY3RlZFZlcnN1c1JlZmVyZW5jZVNjYXR0ZXJQbG90KG5hbWVzLCBwcmVkaWN0LCBwbHNPdXRwdXRbMF0pKTsgfSksIHsgZGVzY3JpcHRpb246ICdDbG9zZXIgdG8gdGhlIGxpbmUgbWVhbnMgYmV0dGVyIHByaWNlIHByZWRpY3Rpb24uJywgZGVsYXk6IDAgfSlcbiAgICAgICAgICAgIC5zdGFydCgpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBHZW5lcmF0ZSBsaW5lYXIgc2VwYXJhYmxlIGRhdGFzZXRcbi8vZGVzY3JpcHRpb246IEdlbmVyYXRlcyBsaW5lYXIgc2VwYXJibGUgZGF0YXNldCBmb3IgdGVzdGluZyBiaW5hcnkgY2xhc3NpZmljYXRvcnMuXG4vL2lucHV0OiBzdHJpbmcgbmFtZSA9ICdEYXRhJyB7Y2FwdGlvbjogbmFtZTsgY2F0ZWdvcnk6IERhdGFzZXR9XG4vL2lucHV0OiBpbnQgc2FtcGxlc0NvdW50ID0gMTAwMCB7Y2FwdGlvbjogc2FtcGxlczsgY2F0ZWdvcnk6IFNpemV9XG4vL2lucHV0OiBpbnQgZmVhdHVyZXNDb3VudCA9IDIge2NhcHRpb246IGZlYXR1cmVzOyBjYXRlZ29yeTogU2l6ZX1cbi8vaW5wdXQ6IGRvdWJsZSBtaW4gPSAtMzkge2NhcHRpb246IG1pbjsgY2F0ZWdvcnk6IFJhbmdlfVxuLy9pbnB1dDogZG91YmxlIG1heCA9IDE3MyB7Y2FwdGlvbjogbWF4OyBjYXRlZ29yeTogUmFuZ2V9XG4vL2lucHV0OiBkb3VibGUgdmlvbGF0b3JzUGVyY2VudGFnZSA9IDUge2NhcHRpb246IHZpb2xhdG9yczsgdW5pdHM6ICU7IGNhdGVnb3J5OiBEYXRhc2V0fVxuLy9vdXRwdXQ6IGRhdGFmcmFtZSBkZlxuZXhwb3J0IGZ1bmN0aW9uIHRlc3REYXRhTGluZWFyU2VwYXJhYmxlKG5hbWUsIHNhbXBsZXNDb3VudCwgZmVhdHVyZXNDb3VudCwgbWluLCBtYXgsIHZpb2xhdG9yc1BlcmNlbnRhZ2UpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICByZXR1cm4geWllbGQgdGVzdERhdGFGb3JCaW5hcnlDbGFzc2lmaWNhdGlvbihMSU5FQVIsIFswLCAwXSwgbmFtZSwgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZSk7XG4gICAgfSk7XG59XG4vL25hbWU6IEdlbmVyYXRlIGxpbmVhciBub24tc2VwYXJhYmxlIGRhdGFzZXRcbi8vZGVzY3JpcHRpb246IEdlbmVyYXRlcyBsaW5lYXIgbm9uLXNlcGFyYmxlIGRhdGFzZXQgZm9yIHRlc3RpbmcgYmluYXJ5IGNsYXNzaWZpY2F0b3JzLlxuLy9pbnB1dDogc3RyaW5nIG5hbWUgPSAnRGF0YScge2NhcHRpb246IG5hbWU7IGNhdGVnb3J5OiBEYXRhc2V0fVxuLy9pbnB1dDogZG91YmxlIHNpZ21hID0gOTAgIHtjYXB0aW9uOiBzaWdtYTsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW1JCRi1rZXJuZWwgcGFyYW1hdGVyXVxuLy9pbnB1dDogaW50IHNhbXBsZXNDb3VudCA9IDEwMDAge2NhcHRpb246IHNhbXBsZXM7IGNhdGVnb3J5OiBTaXplfVxuLy9pbnB1dDogaW50IGZlYXR1cmVzQ291bnQgPSAyIHtjYXB0aW9uOiBmZWF0dXJlczsgY2F0ZWdvcnk6IFNpemV9XG4vL2lucHV0OiBkb3VibGUgbWluID0gLTM5IHtjYXB0aW9uOiBtaW47IGNhdGVnb3J5OiBSYW5nZX1cbi8vaW5wdXQ6IGRvdWJsZSBtYXggPSAxNzMge2NhcHRpb246IG1heDsgY2F0ZWdvcnk6IFJhbmdlfVxuLy9pbnB1dDogZG91YmxlIHZpb2xhdG9yc1BlcmNlbnRhZ2UgPSA1IHtjYXB0aW9uOiB2aW9sYXRvcnM7IHVuaXRzOiAlOyBjYXRlZ29yeTogRGF0YXNldH1cbi8vb3V0cHV0OiBkYXRhZnJhbWUgZGZcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0RGF0YUxpbmVhck5vblNlcGFyYWJsZShuYW1lLCBzaWdtYSwgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCB0ZXN0RGF0YUZvckJpbmFyeUNsYXNzaWZpY2F0aW9uKFJCRiwgW3NpZ21hLCAwXSwgbmFtZSwgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZSk7XG4gICAgfSk7XG59XG4vL25hbWU6IHRyYWluTGluZWFyS2VybmVsU1ZNXG4vL21ldGEubWxuYW1lOiBsaW5lYXIga2VybmVsIExTLVNWTVxuLy9tZXRhLm1scm9sZTogdHJhaW5cbi8vaW5wdXQ6IGRhdGFmcmFtZSBkZlxuLy9pbnB1dDogc3RyaW5nIHByZWRpY3RfY29sdW1uXG4vL2lucHV0OiBkb3VibGUgZ2FtbWEgPSAxLjAge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9XG4vL2lucHV0OiBib29sIHRvU2hvd1JlcG9ydCA9IGZhbHNlIHtjYXB0aW9uOiB0byBzaG93IHJlcG9ydDsgY2F0ZWdvcnk6IFJlcG9ydH1cbi8vb3V0cHV0OiBkeW5hbWljIG1vZGVsXG5leHBvcnQgZnVuY3Rpb24gdHJhaW5MaW5lYXJLZXJuZWxTVk0oZGYsIHByZWRpY3RfY29sdW1uLCBnYW1tYSwgdG9TaG93UmVwb3J0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHJhaW5lZE1vZGVsID0geWllbGQgZ2V0VHJhaW5lZE1vZGVsKHsgZ2FtbWE6IGdhbW1hLCBrZXJuZWw6IExJTkVBUiB9LCBkZiwgcHJlZGljdF9jb2x1bW4pO1xuICAgICAgICBpZiAodG9TaG93UmVwb3J0KVxuICAgICAgICAgICAgc2hvd1RyYWluUmVwb3J0KGRmLCB0cmFpbmVkTW9kZWwpO1xuICAgICAgICByZXR1cm4gZ2V0UGFja2VkTW9kZWwodHJhaW5lZE1vZGVsKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogYXBwbHlMaW5lYXJLZXJuZWxTVk1cbi8vbWV0YS5tbG5hbWU6IGxpbmVhciBrZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiBhcHBseVxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBkeW5hbWljIG1vZGVsXG4vL291dHB1dDogZGF0YWZyYW1lIHRhYmxlXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlMaW5lYXJLZXJuZWxTVk0oZGYsIG1vZGVsKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgcmV0dXJuIHlpZWxkIGdldFByZWRpY3Rpb24oZGYsIG1vZGVsKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogdHJhaW5SQkZrZXJuZWxTVk1cbi8vbWV0YS5tbG5hbWU6IFJCRi1rZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiB0cmFpblxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBzdHJpbmcgcHJlZGljdF9jb2x1bW5cbi8vaW5wdXQ6IGRvdWJsZSBnYW1tYSA9IDEuMCB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGRvdWJsZSBzaWdtYSA9IDEuNSB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGJvb2wgdG9TaG93UmVwb3J0ID0gZmFsc2Uge2NhcHRpb246IHRvIHNob3cgcmVwb3J0OyBjYXRlZ29yeTogUmVwb3J0fVxuLy9vdXRwdXQ6IGR5bmFtaWMgbW9kZWxcbmV4cG9ydCBmdW5jdGlvbiB0cmFpblJCRmtlcm5lbFNWTShkZiwgcHJlZGljdF9jb2x1bW4sIGdhbW1hLCBzaWdtYSwgdG9TaG93UmVwb3J0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHJhaW5lZE1vZGVsID0geWllbGQgZ2V0VHJhaW5lZE1vZGVsKHsgZ2FtbWE6IGdhbW1hLCBrZXJuZWw6IFJCRiwgc2lnbWE6IHNpZ21hIH0sIGRmLCBwcmVkaWN0X2NvbHVtbik7XG4gICAgICAgIGlmICh0b1Nob3dSZXBvcnQpXG4gICAgICAgICAgICBzaG93VHJhaW5SZXBvcnQoZGYsIHRyYWluZWRNb2RlbCk7XG4gICAgICAgIHJldHVybiBnZXRQYWNrZWRNb2RlbCh0cmFpbmVkTW9kZWwpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBhcHBseVJCRmtlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogUkJGLWtlcm5lbCBMUy1TVk1cbi8vbWV0YS5tbHJvbGU6IGFwcGx5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGZcbi8vaW5wdXQ6IGR5bmFtaWMgbW9kZWxcbi8vb3V0cHV0OiBkYXRhZnJhbWUgdGFibGVcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJCRmtlcm5lbFNWTShkZiwgbW9kZWwpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICByZXR1cm4geWllbGQgZ2V0UHJlZGljdGlvbihkZiwgbW9kZWwpO1xuICAgIH0pO1xufVxuLy9uYW1lOiB0cmFpblBvbHlub21pYWxLZXJuZWxTVk1cbi8vbWV0YS5tbG5hbWU6IHBvbHlub21pYWwga2VybmVsIExTLVNWTVxuLy9tZXRhLm1scm9sZTogdHJhaW5cbi8vaW5wdXQ6IGRhdGFmcmFtZSBkZlxuLy9pbnB1dDogc3RyaW5nIHByZWRpY3RfY29sdW1uXG4vL2lucHV0OiBkb3VibGUgZ2FtbWEgPSAxLjAge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9XG4vL2lucHV0OiBkb3VibGUgYyA9IDEge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9XG4vL2lucHV0OiBkb3VibGUgZCA9IDIge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9XG4vL2lucHV0OiBib29sIHRvU2hvd1JlcG9ydCA9IGZhbHNlIHtjYXB0aW9uOiB0byBzaG93IHJlcG9ydDsgY2F0ZWdvcnk6IFJlcG9ydH1cbi8vb3V0cHV0OiBkeW5hbWljIG1vZGVsXG5leHBvcnQgZnVuY3Rpb24gdHJhaW5Qb2x5bm9taWFsS2VybmVsU1ZNKGRmLCBwcmVkaWN0X2NvbHVtbiwgZ2FtbWEsIGMsIGQsIHRvU2hvd1JlcG9ydCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHRyYWluZWRNb2RlbCA9IHlpZWxkIGdldFRyYWluZWRNb2RlbCh7IGdhbW1hOiBnYW1tYSwga2VybmVsOiBQT0xZTk9NSUFMLCBjUGFyYW06IGMsIGRQYXJhbTogZCB9LCBkZiwgcHJlZGljdF9jb2x1bW4pO1xuICAgICAgICBpZiAodG9TaG93UmVwb3J0KVxuICAgICAgICAgICAgc2hvd1RyYWluUmVwb3J0KGRmLCB0cmFpbmVkTW9kZWwpO1xuICAgICAgICByZXR1cm4gZ2V0UGFja2VkTW9kZWwodHJhaW5lZE1vZGVsKTtcbiAgICB9KTtcbn0gLy8gdHJhaW5Qb2x5bm9taWFsS2VybmVsU1ZNXG4vL25hbWU6IGFwcGx5UG9seW5vbWlhbEtlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogcG9seW5vbWlhbCBrZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiBhcHBseVxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBkeW5hbWljIG1vZGVsXG4vL291dHB1dDogZGF0YWZyYW1lIHRhYmxlXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQb2x5bm9taWFsS2VybmVsU1ZNKGRmLCBtb2RlbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCBnZXRQcmVkaWN0aW9uKGRmLCBtb2RlbCk7XG4gICAgfSk7XG59XG4vL25hbWU6IHRyYWluU2lnbW9pZEtlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogc2lnbW9pZCBrZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiB0cmFpblxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBzdHJpbmcgcHJlZGljdF9jb2x1bW5cbi8vaW5wdXQ6IGRvdWJsZSBnYW1tYSA9IDEuMCB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGRvdWJsZSBrYXBwYSA9IDEge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9XG4vL2lucHV0OiBkb3VibGUgdGhldGEgPSAxIHtjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfVxuLy9pbnB1dDogYm9vbCB0b1Nob3dSZXBvcnQgPSBmYWxzZSB7Y2FwdGlvbjogdG8gc2hvdyByZXBvcnQ7IGNhdGVnb3J5OiBSZXBvcnR9XG4vL291dHB1dDogZHluYW1pYyBtb2RlbFxuZXhwb3J0IGZ1bmN0aW9uIHRyYWluU2lnbW9pZEtlcm5lbFNWTShkZiwgcHJlZGljdF9jb2x1bW4sIGdhbW1hLCBrYXBwYSwgdGhldGEsIHRvU2hvd1JlcG9ydCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHRyYWluZWRNb2RlbCA9IHlpZWxkIGdldFRyYWluZWRNb2RlbCh7IGdhbW1hOiBnYW1tYSwga2VybmVsOiBTSUdNT0lELCBrYXBwYToga2FwcGEsIHRoZXRhOiB0aGV0YSB9LCBkZiwgcHJlZGljdF9jb2x1bW4pO1xuICAgICAgICBpZiAodG9TaG93UmVwb3J0KVxuICAgICAgICAgICAgc2hvd1RyYWluUmVwb3J0KGRmLCB0cmFpbmVkTW9kZWwpO1xuICAgICAgICByZXR1cm4gZ2V0UGFja2VkTW9kZWwodHJhaW5lZE1vZGVsKTtcbiAgICB9KTtcbn0gLy8gdHJhaW5TaWdtb2lkS2VybmVsU1ZNXG4vL25hbWU6IGFwcGx5U2lnbW9pZEtlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogc2lnbW9pZCBrZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiBhcHBseVxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBkeW5hbWljIG1vZGVsXG4vL291dHB1dDogZGF0YWZyYW1lIHRhYmxlXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTaWdtb2lkS2VybmVsU1ZNKGRmLCBtb2RlbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCBnZXRQcmVkaWN0aW9uKGRmLCBtb2RlbCk7XG4gICAgfSk7XG59XG4iXSwibmFtZXMiOlsiX193ZWJwYWNrX3JlcXVpcmVfXyIsImV4cG9ydHMiLCJkZWZpbml0aW9uIiwia2V5IiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImNodW5rSWQiLCJnIiwiZ2xvYmFsVGhpcyIsInRoaXMiLCJGdW5jdGlvbiIsImUiLCJ3aW5kb3ciLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJsZW5ndGgiLCJpIiwiRXJyb3IiLCJyZXBsYWNlIiwicCIsImIiLCJiYXNlVVJJIiwic2VsZiIsImhyZWYiLCJncm9rIiwidWkiLCJERyIsImFzc3VyZSIsImRlbGF5IiwibXMiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsImdlbmVyYXRvciIsIlByb21pc2UiLCJzZXRUaW1lb3V0IiwiUCIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIm5vdE51bGwiLCJuYW1lIiwiRGVtb1NjcmlwdCIsImNvbnN0cnVjdG9yIiwiZGVzY3JpcHRpb24iLCJpc0F1dG9tYXRpYyIsIm9wdGlvbnMiLCJfYSIsIl9pc0F1dG9tYXRpYyIsIl9hdXRvU3RhcnRGaXJzdFN0ZXAiLCJfY3VycmVudFN0ZXAiLCJfaXNTdG9wcGVkIiwiX2lzQ2FuY2VsbGVkIiwiX2lzU3RlcFByb2Nlc3NlZCIsIl9yb290IiwiaWQiLCJjbGFzc2VzIiwiX3N0ZXBzIiwiX21haW5IZWFkZXIiLCJfaGVhZGVyIiwiX2hlYWRlckRpdiIsIl9zdG9wU3RhcnRCdG4iLCJfY2hhbmdlU3RvcFN0YXRlIiwiX3Jlc3RhcnRCdG4iLCJfcmVzdGFydFNjcmlwdCIsIl9uZXh0U3RlcEJ0biIsIl9uZXh0U3RlcCIsIl9hY3Rpdml0eSIsIl9wcm9ncmVzc0RpdiIsIl9wcm9ncmVzcyIsIl9wcm9ncmVzc1N0ZXBzIiwiX2Nsb3NlQnRuIiwiX2Nsb3NlRG9jayIsImF1dG9TdGFydEZpcnN0U3RlcCIsIm1heCIsImN1cnJlbnRPYmplY3QiLCJzdGVwcyIsInN0ZXBOdW1iZXIiLCJfYWRkSGVhZGVyIiwiX2NyZWF0ZUhlYWRlckRpdiIsIl9jcmVhdGVQcm9ncmVzc0RpdiIsImFwcGVuZCIsImlubmVyVGV4dCIsImZpcnN0Q2hpbGQiLCJjbGFzc05hbWUiLCJfYWRkRGVzY3JpcHRpb24iLCJpbnN0cnVjdGlvbkluZGljYXRvciIsImluc3RydWN0aW9uRGl2IiwiY3VycmVudFN0ZXBEZXNjcmlwdGlvbiIsImVudHJ5IiwiX2luaXRSb290IiwiX2IiLCJfYyIsInNjcmlwdERvY2tOb2RlIiwiQXJyYXkiLCJmcm9tIiwiX25vZGUiLCJwYXJlbnQiLCJjb250YWluZXIiLCJjb250YWluZXJFbGVtZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJsYXN0RWxlbWVudENoaWxkIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZW1vdmUiLCJhZGQiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiZW50cnlJbmRpY2F0b3IiLCJlbnRyeUluc3RydWN0aW9uIiwiY3VycmVudFN0ZXAiLCJzdGVwRGVsYXkiLCJmdW5jIiwiX3Njcm9sbFRvIiwib2Zmc2V0VG9wIiwib2Zmc2V0SGVpZ2h0IiwiX2NvdW50ZG93biIsIm5ld0VudHJ5SW5kaWNhdG9yIiwicmVwbGFjZVdpdGgiLCJuZXh0U3RlcEVudHJ5SW5kaWNhdG9yIiwic3RhcnROZXh0U3RlcEljb24iLCJfc3RhcnRTY3JpcHQiLCJlbGVtZW50IiwieSIsImZvY3VzIiwic2Nyb2xsVG9wIiwiaW5kaWNhdG9yIiwidGltZSIsImNvdW50ZG93bkRpdiIsImNvdW50ZG93biIsInN2ZyIsIl9jcmVhdGVTVkdJbmRpY2F0b3IiLCJwcmVwZW5kIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJjcmVhdGVFbGVtZW50TlMiLCJjaXJjbGUiLCJzZXRBdHRyaWJ1dGVOUyIsImljb24iLCJfY2xlYXJSb290IiwiX3NldEluaXRQYXJhbXMiLCJzdGFydCIsImNhbmNlbFNjcmlwdCIsIkludDMyQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJDb2x1bW4iLCJmcm9tSW50MzJBcnJheSIsImZyb21GbG9hdDMyQXJyYXkiLCJOVU1fVFlQRSIsIkZMT0FUX0NPTFVNTl9UWVBFIiwiSU5UX0NPTFVNTl9UWVBFIiwiRkxPQVRfQ09MVU1OU19UWVBFIiwiTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRSIsIklOVF9DT0xVTU5TX1RZUEUiLCJORVdfSU5UX0NPTFVNTlNfVFlQRSIsIk5FV19GTE9BVF9DT0xVTU5fVFlQRSIsIk5FV19JTlRfQ09MVU1OX1RZUEUiLCJDT0xVTU4iLCJDQUxMX1JFU1VMVCIsIk5VTV9PRl9ST1dTIiwiTlVNX09GX0NPTFVNTlMiLCJSRUYiLCJWQUxVRSIsIlRBQkxFX09GX0NPTFVNTlMiLCJPQkpFQ1RTIiwiSU5UX1RZUEUiLCJET1VCTEVfVFlQRSIsImFyZ3NTcGVjaWZpY2F0aW9uIiwiaW5wdXRWYWxzIiwicmVmIiwiY3BwRnVuY0lucHV0IiwiYXJnIiwidHlwZSIsImRhdGEiLCJhcnJheSIsImNvbCIsImdldFJhd0RhdGEiLCJ2YWwiLCJhcnJheXMiLCJ0b0xpc3QiLCJwdXNoIiwidmFsMSIsInZhbDIiLCJmdW5jU3BlY2lmaWNhdGlvbiIsImRhdGFGcm9tV2ViV29ya2VyIiwiYXJndW1lbnRzIiwiX2NhbGxSZXN1bHQiLCJjYWxsUmVzdWx0IiwiZnVuY1NwZWNpZmljYXRpb25BcmdzIiwiYXJnc0FmdGVyV2FzbUNhbGwiLCJ0eXBlVG9Db2x1bW5DcmVhdG9yTWFwIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJuYW1lcyIsImNvbHVtbiIsImNvbHVtbnMiLCJrIiwiaiIsImV4dHJhY3ROZXdseUNyZWF0ZWREYXRhIiwiYXJncyIsIm91dFB1dCIsIm91dHB1dCIsInR5cGVUb0RhdGFGaWVsZE1hcCIsInNvdXJjZSIsIkRhdGFGcmFtZSIsImZyb21Db2x1bW5zIiwiYXJyYXlUb1JldHVybiIsImdldE91dHB1dCIsImNsZWFyTmV3bHlDcmVhdGVkRGF0YSIsIkNPTVBfTUlOIiwiU0FNUExFU19DT1VOVF9NSU4iLCJGRUFUVVJFU19DT1VOVF9NSU4iLCJQRVJDRU5UQUdFX01JTiIsIlBFUkNFTlRBR0VfTUFYIiwiTUFYX0VMRU1FTlRTX0NPVU5UIiwiQ09NUF9QT1NJVFZFX01FUyIsIkNPTVBfRVhDRVNTIiwiSU5DT1JFUlJFQ1RfTUlOX01BWF9NRVMiLCJJTkNPUkVSUkVDVF9GRUFUVVJFU19NRVMiLCJJTkNPUkVSUkVDVF9TQU1QTEVTX01FUyIsIklOQ09SRVJSRUNUX1BFUkNFTlRBR0VfTUVTIiwiREFUQUZSQU1FX0lTX1RPT19CSUdfTUVTIiwiY2hlY2tDb21wb25lbmV0cyIsImZlYXR1cmVzIiwiY29tcG9uZW50cyIsImJ5SW5kZXgiLCJjb21wdXRlUExTIiwidGFibGUiLCJwcmVkaWN0IiwiX291dHB1dCIsIl9wcm9taXNlIiwiYXN5bmMiLCJjb21wb25lbnRzQ291bnQiLCJ3b3JrZXIiLCJXb3JrZXIiLCJVUkwiLCJwb3N0TWVzc2FnZSIsIkVEQSIsIm9ubWVzc2FnZSIsInRlcm1pbmF0ZSIsIl9wYXJ0aWFsTGVhc3RTcXVhcmVSZWdyZXNzaW9uSW5XZWJXb3JrZXIiLCJfcmVzdWx0IiwiX2Vycm9yIiwicHJlZGljdGVkVmVyc3VzUmVmZXJlbmNlU2NhdHRlclBsb3QiLCJzYW1wbGVzTmFtZXMiLCJyZWZlcmVuY2UiLCJwcmVkaWN0aW9uIiwiZGZSZWZlcmVuY2VQcmVkaWN0aW9uIiwidGl0bGUiLCJ4Iiwic2hvd1JlZ3Jlc3Npb25MaW5lIiwibWFya2VyVHlwZSIsImxhYmVscyIsInJlZ3Jlc3Npb25Db2VmZmljaWVudHNCYXJDaGFydCIsInJlZ3Jlc3Npb25Db2VmZnMiLCJuYW1lc09mUHJlZGljdG9ycyIsInByZWRpY3Rvck5hbWVzQ29sdW1uIiwiZGZSZWdyQ29lZnMiLCJzcGxpdCIsInZhbHVlQWdnclR5cGUiLCJzY29yZXNTY2F0dGVyUGxvdCIsInhTY29yZXMiLCJ5U2NvcmVzIiwic2NvcmVzQ29sdW1ucyIsInNjb3JlcyIsImluZGV4IiwiU1ZNX0dFTl9GRUFUVVJFU19JTkRFWCIsIlNWTV9HRU5fTEFCRUxTX0lOREVYIiwiU1ZNX0ZFQVRVUkVfTkFNRSIsIlNWTV9MQUJFTF9OQU1FIiwiY2Fyc0RhdGFmcmFtZSIsInRlc3REYXRhRm9yQmluYXJ5Q2xhc3NpZmljYXRpb24iLCJrZXJuZWwiLCJrZXJuZWxQYXJhbXMiLCJzYW1wbGVzQ291bnQiLCJmZWF0dXJlc0NvdW50IiwibWluIiwidmlvbGF0b3JzUGVyY2VudGFnZSIsImNoZWNrR2VuZXJhdG9yU1ZNaW5wdXRzIiwia2VybmVsUGFyYW1zQ29sIiwiX2dlbmVyYXRlRGF0YXNldEluV2ViV29ya2VyIiwiZGYiLCJMSU5FQVIiLCJQT0xZTk9NSUFMIiwiUkJGIiwiU0lHTU9JRCIsIkNPTkZVU0lPTl9NQVRSX1NJWkUiLCJOT1JNQUxJWkVEX0RBVEFfSU5ERVgiLCJNRUFOU19JTkRFWCIsIlNURF9ERVZTX0lOREVYIiwiTU9ERUxfUEFSQU1TX0lOREVYIiwiTU9ERUxfV0VJR0hUU19JTkRFWCIsIlBSRURJQ1RFRF9MQUJFTFNfSU5ERVgiLCJDT1JSRUNUTkVTU19JTkRFWCIsIkNPTkZVU0lPTl9NQVRSSVhfSU5ERVgiLCJUUlVFX1BPU0lUSVZFX0lOREVYIiwiRkFMU0VfTkVHQVRJVkVfSU5ERVgiLCJGQUxTRV9QT1NJVElWRV9JTkRFWCIsIlRSVUVfTkVHQVRJVkVfSU5ERVgiLCJSQkZfU0lHTUFfSU5ERVgiLCJQT0xZTk9NSUFMX0NfSU5ERVgiLCJQT0xZTk9NSUFMX0RfSU5ERVgiLCJTSUdNT0lEX0tBUFBBX0lOREVYIiwiU0lHTU9JRF9USEVUQV9JTkRFWCIsIkdBTU1BX0lORklNVU1fTElNSVQiLCJSQkZfU0lHTUFfSU5GSU1VTV9MSU1JVCIsIlBPTFlOT01JQUxfQ19JTkZJTVVNX0xJTUlUIiwiUE9MWU5PTUlBTF9EX0lORklNVU1fTElNSVQiLCJXUk9OR19HQU1NQV9NRVNTQUdFIiwiV1JPTkdfUkJGX1NJR01BX01FU1NBR0UiLCJXUk9OR19QT0xZTk9NSUFMX0NfTUVTU0FHRSIsIldST05HX1BPTFlOT01JQUxfRF9NRVNTQUdFIiwiV1JPTkdfS0VSTkVMX01FU1NBR0UiLCJMQUJFTFMiLCJQUkVESUNURUQiLCJDT1JSRUNUTkVTUyIsIkNPTkZVU0lPTl9NQVRSSVhfTkFNRSIsIk1FQU4iLCJTVERfREVWIiwiTU9ERUxfUEFSQU1TX05BTUUiLCJNT0RFTF9XRUlHSFRTX05BTUUiLCJHQU1NQSIsIktFUk5FTCIsIktFUk5FTF9QQVJBTVMiLCJLRVJORUxfUEFSQU1fMSIsIktFUk5FTF9QQVJBTV8yIiwiRkVBVFVSRVNfQ09VTlRfTkFNRSIsIlRSQUlOX1NBTVBMRVNfQ09VTlRfTkFNRSIsIlRSQUlOX0VSUk9SIiwiS0VSTkVMX1RZUEVfVE9fTkFNRV9NQVAiLCJQT1NJVElWRV9OQU1FIiwiTkVHQVRJVkVfTkFNRSIsIlBSRURJQ1RFRF9QT1NJVElWRV9OQU1FIiwiUFJFRElDVEVEX05FR0FUSVZFX05BTUUiLCJTRU5TSVRJVklUWSIsIlNQRUNJRklDSVRZIiwiQkFMQU5DRURfQUNDVVJBQ1kiLCJQT1NJVElWRV9QUkVESUNUSVZFX1ZBTFVFIiwiTkVHQVRJVkVfUFJFRElDVElWRV9WQUxVRSIsIk1MX1JFUE9SVCIsIk1MX1JFUE9SVF9QUkVESUNURURfTEFCRUxTIiwiTUxfUkVQT1JUX1RSQUlOX0xBQkVMUyIsIk1MX1JFUE9SVF9DT1JSRUNUTkVTUyIsIlBSRURJQ1RJT04iLCJCWVRFUyIsIklOVFNfQ09VTlQiLCJLRVJfUEFSQU1TX0NPVU5UIiwiTU9ERUxfS0VSTkVMX0lOREVYIiwiU0FNUExFU19DT1VOVF9JTkRFWCIsIkZFQVRVUkVTX0NPVU5UX0lOREVYIiwiSU5JVF9WQUxVRSIsIkxTX1NWTV9BRERfQ09OU1QiLCJnZXRUcmFpbmVkTW9kZWwiLCJoeXBlcnBhcmFtZXRlcnMiLCJwcmVkaWN0X2NvbHVtbiIsImJ5TmFtZSIsImRhdGFzZXQiLCJnYW1tYSIsInNpZ21hIiwiY1BhcmFtIiwiZFBhcmFtIiwiY2hlY2tIeXBlcnBhcmFtZXRlcnMiLCJrZXJuZWxQYXJhbXNBcnJheSIsImthcHBhIiwidGhldGEiLCJ0cmFpbkNvbHMiLCJtb2RlbFBhcmFtc0NvdW50IiwicHJlY29tcHV0ZWRXZWlnaHRzQ291bnQiLCJjb25mdXNpb25NYXRyaXhFbGVtZW50c0NvdW50IiwiX3RyYWluQW5kQW5hbHl6ZUxTU1ZNSW5XZWJXb3JrZXIiLCJtb2RlbCIsInRyYWluR2FtbWEiLCJrZXJuZWxUeXBlIiwidHJhaW5MYWJlbHMiLCJub3JtYWxpemVkVHJhaW5EYXRhIiwibWVhbnMiLCJzdGREZXZzIiwibW9kZWxQYXJhbXMiLCJtb2RlbFdlaWdodHMiLCJwcmVkaWN0ZWRMYWJlbHMiLCJjb3JyZWN0bmVzcyIsImNvbmZ1c2lvbk1hdHJpeCIsInRyYWluRXJyb3IiLCJ0cmFpblNhbXBsZXNDb3VudCIsIlRQIiwiVE4iLCJGUCIsIkZOIiwiTiIsIlRQUiIsIlROUiIsIlBQViIsIk5QViIsIkFDQyIsIkJBIiwic2Vuc2l0aXZpdHkiLCJzcGVjaWZpY2l0eSIsImJhbGFuY2VkQWNjdXJhY3kiLCJwb3NpdGl2ZVByZWRpY2l0dmVWYWx1ZSIsIm5lZ2F0aXZlUHJlZGljaXR2ZVZhbHVlIiwiZXZhbHVhdGVBY2N1cmFjeSIsInRyYWluQW5kQW5hbHl6ZU1vZGVsIiwic2hvd1RyYWluUmVwb3J0IiwiZGZWaWV3IiwiYWRkVmlld2VyIiwiZ2V0TW9kZWxJbmZvIiwiY29sb3IiLCJnZXRDb25mdXNpb25NYXRyaXhERiIsImdldFBhY2tlZE1vZGVsIiwiZGF0YUNvbHMiLCJVaW50OEFycmF5IiwiYnVmZmVyIiwib2Zmc2V0IiwiaW50cyIsImZsb2F0cyIsInNldCIsImdldFByZWRpY3Rpb24iLCJwYWNrZWRNb2RlbCIsIm1vZGVsQnl0ZXMiLCJoZWFkZXIiLCJnZXRVbnBhY2tlZE1vZGVsIiwicmVzIiwibm9ybWFsaXplZERhdGEiLCJwcmVjb21wdXRlZFdlaWdodHMiLCJ0YXJnZXREYXRhIiwiX3ByZWRpY3RCeUxTU1ZNSW5XZWJXb3JrZXIiLCJfcGFja2FnZSIsImluZm8iLCJ3ZWJSb290IiwiaW5pdCIsImluaXRFREEiLCJfaW5pdEVEQUFQSSIsIlBDQSIsImNlbnRlciIsInNjYWxlIiwicGNhVGFibGUiLCJyZW5hbWVQQ0Fjb2x1bW5zIiwiY2VudGVyTnVtIiwic2NhbGVOdW0iLCJfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNJbldlYldvcmtlciIsImNvbXB1dGVQQ0EiLCJQTFMiLCJwbHNSZXN1bHRzIiwicGxzT3V0cHV0IiwidmlldyIsInhMb2FkaW5ncyIsImxvYWRpbmdDb2xzIiwibG9hZGluZ0xhYmVscyIsImRmTG9hZGluZ3MiLCJsb2FkaW5nU2NhdHRlclBsb3QiLCJhZGRQTFN2aXN1YWxpemF0aW9uIiwiZGVtb011bHRpdmFyaWF0ZUFuYWx5c2lzIiwiZGVtb1NjcmlwdCIsImNhcnMiLCJzb3VyY2VDYXJzIiwiZGlhbG9nIiwiYXZhaWxhYmxlIiwiY2hlY2tlZCIsIm9uT0siLCJzaG93IiwiY2xvc2UiLCJ0ZXN0RGF0YUxpbmVhclNlcGFyYWJsZSIsInRlc3REYXRhTGluZWFyTm9uU2VwYXJhYmxlIiwidHJhaW5MaW5lYXJLZXJuZWxTVk0iLCJ0b1Nob3dSZXBvcnQiLCJ0cmFpbmVkTW9kZWwiLCJhcHBseUxpbmVhcktlcm5lbFNWTSIsInRyYWluUkJGa2VybmVsU1ZNIiwiYXBwbHlSQkZrZXJuZWxTVk0iLCJ0cmFpblBvbHlub21pYWxLZXJuZWxTVk0iLCJjIiwiZCIsImFwcGx5UG9seW5vbWlhbEtlcm5lbFNWTSIsInRyYWluU2lnbW9pZEtlcm5lbFNWTSIsImFwcGx5U2lnbW9pZEtlcm5lbFNWTSJdLCJzb3VyY2VSb290IjoiIn0=
1
+ var eda;(()=>{"use strict";var t={659:(t,e,r)=>{e.Z=void 0;var n=r(215);Object.defineProperty(e,"Z",{enumerable:!0,get:function(){return n.TSNE}})},215:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TSNE=void 0,e.TSNE=class{constructor(t){this.returnV=!1,this.vValue=0,this.iter=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10)}assert(t,e){if(!t)throw e||"Assertion failed"}getopt(t,e,r){return t.hasOwnProperty(e)?t[e]:r}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,e=2*Math.random()-1,r=t*t+e*e;if(0===r||r>1)return this.gaussRandom();const n=Math.sqrt(-2*Math.log(r)/r);return this.vValue=e*n,this.returnV=!0,t*n}randn(t,e){return t+this.gaussRandom()*e}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const e=new Array(t);for(let r=0;r<t;r++)e[r]=0;return e}return new Float64Array(t)}randn2d(t,e,r){const n=void 0!==r,i=[];for(let o=0;o<t;o++){const t=[];for(let i=0;i<e;i++)n?t.push(r):t.push(this.randn(0,1e-4));i.push(t)}return i}L2(t,e){const r=t.length;let n=0;for(let i=0;i<r;i++){const r=t[i],o=e[i];n+=(r-o)*(r-o)}return n}xtod(t){const e=t.length,r=this.zeros(e*e);for(let n=0;n<e;n++)for(let i=n+1;i<e;i++){const o=this.L2(t[n],t[i]);r[n*e+i]=o,r[i*e+n]=o}return r}d2p(t,e,r){const n=Math.sqrt(t.length),i=Math.floor(n);this.assert(i===n,"D should have square number of elements.");const o=Math.log(e),s=this.zeros(i*i),a=this.zeros(i);for(let e=0;e<i;e++){let n=-1/0,h=1/0,l=1,u=!1;const c=50;let f=0;for(;!u;){let s=0;for(let r=0;r<i;r++){let n=Math.exp(-t[e*i+r]*l);e===r&&(n=0),a[r]=n,s+=n}let m=0;for(let t=0;t<i;t++){let e;e=0===s?0:a[t]/s,a[t]=e,e>1e-7&&(m-=e*Math.log(e))}m>o?(n=l,h===1/0?l*=2:l=(l+h)/2):(h=l,n===-1/0?l/=2:l=(l+n)/2),f++,Math.abs(m-o)<r&&(u=!0),f>=c&&(u=!0)}for(let t=0;t<i;t++)s[e*i+t]=a[t]}const h=this.zeros(i*i),l=2*i;for(let t=0;t<i;t++)for(let e=0;e<i;e++)h[t*i+e]=Math.max((s[t*i+e]+s[e*i+t])/l,1e-100);return h}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const e=t.length,r=t[0].length;this.assert(e>0," X is empty? You must have some data!"),this.assert(r>0," X[0] is empty? Where is the data?");const n=this.xtod(t);this.P=this.d2p(n,this.perplexity,1e-4),this.N=e,this.initSolution()}initDataDist(t){const e=t.length;this.assert(e>0," X is empty? You must have some data!");const r=this.zeros(e*e);for(let n=0;n<e;n++)for(let i=n+1;i<e;i++){const o=t[n][i];r[n*e+i]=o,r[i*e+n]=o}this.P=this.d2p(r,this.perplexity,1e-4),this.N=e,this.initSolution()}initSolution(){this.Y=this.randn2d(this.N,this.dim),this.gains=this.randn2d(this.N,this.dim,1),this.ystep=this.randn2d(this.N,this.dim,0),this.iter=0}getSolution(){return this.Y}step(){this.iter+=1;const t=this.N,e=this.costGrad(this.Y),r=e.cost,n=e.grad,i=this.zeros(this.dim);for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const r=n[e][t],o=this.ystep[e][t],s=this.gains[e][t];let a=this.sign(r)===this.sign(o)?.8*s:s+.2;a<.01&&(a=.01),this.gains[e][t]=a;const h=(this.iter<250?.5:.8)*o-this.epsilon*a*n[e][t];this.ystep[e][t]=h,this.Y[e][t]+=h,i[t]+=this.Y[e][t]}for(let e=0;e<t;e++)for(let r=0;r<this.dim;r++)this.Y[e][r]-=i[r]/t;return r}debugGrad(){const t=this.N,e=this.costGrad(this.Y),r=(e.cost,e.grad),n=1e-5;for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const i=this.Y[e][t];this.Y[e][t]=i+n;const o=this.costGrad(this.Y);this.Y[e][t]=i-n;const s=this.costGrad(this.Y),a=r[e][t],h=(o.cost-s.cost)/(2*n);console.log(e+","+t+": gradcheck analytic: "+a+" vs. numerical: "+h),this.Y[e][t]=i}}costGrad(t){const e=this.N,r=this.dim,n=this.P,i=this.iter<100?4:1,o=this.zeros(e*e);let s=0;for(let n=0;n<e;n++)for(let i=n+1;i<e;i++){let a=0;for(let e=0;e<r;e++){const r=t[n][e]-t[i][e];a+=r*r}const h=1/(1+a);o[n*e+i]=h,o[i*e+n]=h,s+=2*h}const a=e*e,h=this.zeros(a);for(let t=0;t<a;t++)h[t]=Math.max(o[t]/s,1e-100);let l=0;const u=[];for(let s=0;s<e;s++){const a=new Array(r);for(let t=0;t<r;t++)a[t]=0;for(let u=0;u<e;u++){l+=-n[s*e+u]*Math.log(h[s*e+u]);const c=4*(i*n[s*e+u]-h[s*e+u])*o[s*e+u];for(let e=0;e<r;e++)a[e]+=c*(t[s][e]-t[u][e])}u.push(a)}return{cost:l,grad:u}}}},979:(t,e)=>{e.H$=void 0,e.H$=function(t,e,r){var n=function(t,e,r){if(0===t.length||0===e.length)return 0;if(r&&!r.caseSensitive&&(t=t.toUpperCase(),e=e.toUpperCase()),t===e)return 1;for(var n=0,i=t.length,o=e.length,s=Math.floor(Math.max(i,o)/2)-1,a=new Array(i),h=new Array(o),l=0;l<i;l++)for(var u=Math.max(0,l-s);u<=Math.min(o,l+s+1);u++)if(!a[l]&&!h[u]&&t[l]===e[u]){++n,a[l]=h[u]=!0;break}if(0===n)return 0;var c=0,f=0;for(l=0;l<i;l++)if(a[l]){for(;!h[f];)f++;t.charAt(l)!==e.charAt(f++)&&c++}return(n/i+n/o+(n-(c/=2))/n)/3}(t,e,r),i=0;if(n>.7){for(var o=Math.min(t.length,e.length),s=0;t[s]===e[s]&&s<4&&s<o;)++i,s++;n+=.1*i*(1-n)}return n}},251:(t,e,r)=>{r.r(e),r.d(e,{default:()=>z});const n=Object.prototype.toString;function i(t){return n.call(t).endsWith("Array]")}function o(t,e,r){let n=0;const i=r(e);for(let e=0;e<t.x.length;e++)n+=Math.abs(t.y[e]-i(t.x[e]));return n}const s=Object.prototype.toString;function a(t){const e=s.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const h=Object.prototype.toString;function l(t){const e=h.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const u=Object.prototype.toString;const c=Object.prototype.toString;function f(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");if(void 0!==r.output){if(!l(r.output))throw new TypeError("output option must be an array if specified");e=r.output}else e=new Array(t.length);var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!function(t){const e=c.call(t);return e.endsWith("Array]")&&!e.includes("Big")}(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,n=void 0===r?0:r,i=e.toIndex,o=void 0===i?t.length:i;if(n<0||n>=t.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(o<=n||o>t.length||!Number.isInteger(o))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var s=t[n],a=n+1;a<o;a++)t[a]<s&&(s=t[a]);return s}(t),i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!function(t){const e=u.call(t);return e.endsWith("Array]")&&!e.includes("Big")}(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,n=void 0===r?0:r,i=e.toIndex,o=void 0===i?t.length:i;if(n<0||n>=t.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(o<=n||o>t.length||!Number.isInteger(o))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var s=t[n],a=n+1;a<o;a++)t[a]>s&&(s=t[a]);return s}(t);if(n===i)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var o=r.min,s=void 0===o?r.autoMinMax?n:0:o,a=r.max,h=void 0===a?r.autoMinMax?i:1:a;if(s>=h)throw new RangeError("min option must be smaller than max option");for(var f=(h-s)/(i-n),m=0;m<t.length;m++)e[m]=(t[m]-n)*f+s;return e}const m=" ".repeat(2),d=" ".repeat(4);function g(t,e={}){const{maxRows:r=15,maxColumns:n=10,maxNumSize:i=8,padMinus:o="auto"}=e;return`${t.constructor.name} {\n${m}[\n${d}${function(t,e,r,n,i){const{rows:o,columns:s}=t,a=Math.min(o,e),h=Math.min(s,r),l=[];if("auto"===i){i=!1;t:for(let e=0;e<a;e++)for(let r=0;r<h;r++)if(t.get(e,r)<0){i=!0;break t}}for(let e=0;e<a;e++){let r=[];for(let o=0;o<h;o++)r.push(p(t.get(e,o),n,i));l.push(`${r.join(" ")}`)}return h!==s&&(l[l.length-1]+=` ... ${s-r} more columns`),a!==o&&l.push(`... ${o-e} more rows`),l.join(`\n${d}`)}(t,r,n,i,o)}\n${m}]\n${m}rows: ${t.rows}\n${m}columns: ${t.columns}\n}`}function p(t,e,r){return(t>=0&&r?` ${w(t,e-1)}`:w(t,e)).padEnd(e)}function w(t,e){let r=t.toString();if(r.length<=e)return r;let n=t.toFixed(e);if(n.length>e&&(n=t.toFixed(Math.max(0,e-(n.length-e)))),n.length<=e&&!n.startsWith("0.000")&&!n.startsWith("-0.000"))return n;let i=t.toExponential(e);return i.length>e&&(i=t.toExponential(Math.max(0,e-(i.length-e)))),i.slice(0)}function y(t,e,r){let n=r?t.rows:t.rows-1;if(e<0||e>n)throw new RangeError("Row index out of range")}function v(t,e,r){let n=r?t.columns:t.columns-1;if(e<0||e>n)throw new RangeError("Column index out of range")}function b(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.columns)throw new RangeError("vector size must be the same as the number of columns");return e}function _(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.rows)throw new RangeError("vector size must be the same as the number of rows");return e}function M(t,e,r,n,i){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(x("startRow",e),x("endRow",r),x("startColumn",n),x("endColumn",i),e>r||n>i||e<0||e>=t.rows||r<0||r>=t.rows||n<0||n>=t.columns||i<0||i>=t.columns)throw new RangeError("Submatrix indices are out of range")}function S(t,e=0){let r=[];for(let n=0;n<t;n++)r.push(e);return r}function x(t,e){if("number"!=typeof e)throw new TypeError(`${t} must be a number`)}function E(t){if(t.isEmpty())throw new Error("Empty matrix has no elements to index")}class C{static from1DArray(t,e,r){if(t*e!==r.length)throw new RangeError("data length does not match given dimensions");let n=new N(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.set(i,t,r[i*e+t]);return n}static rowVector(t){let e=new N(1,t.length);for(let r=0;r<t.length;r++)e.set(0,r,t[r]);return e}static columnVector(t){let e=new N(t.length,1);for(let r=0;r<t.length;r++)e.set(r,0,t[r]);return e}static zeros(t,e){return new N(t,e)}static ones(t,e){return new N(t,e).fill(1)}static rand(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{random:n=Math.random}=r;let i=new N(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)i.set(r,t,n());return i}static randInt(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{min:n=0,max:i=1e3,random:o=Math.random}=r;if(!Number.isInteger(n))throw new TypeError("min must be an integer");if(!Number.isInteger(i))throw new TypeError("max must be an integer");if(n>=i)throw new RangeError("min must be smaller than max");let s=i-n,a=new N(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++){let e=n+Math.round(o()*s);a.set(r,t,e)}return a}static eye(t,e,r){void 0===e&&(e=t),void 0===r&&(r=1);let n=Math.min(t,e),i=this.zeros(t,e);for(let t=0;t<n;t++)i.set(t,t,r);return i}static diag(t,e,r){let n=t.length;void 0===e&&(e=n),void 0===r&&(r=e);let i=Math.min(n,e,r),o=this.zeros(e,r);for(let e=0;e<i;e++)o.set(e,e,t[e]);return o}static min(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,i=new N(r,n);for(let o=0;o<r;o++)for(let r=0;r<n;r++)i.set(o,r,Math.min(t.get(o,r),e.get(o,r)));return i}static max(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,i=new this(r,n);for(let o=0;o<r;o++)for(let r=0;r<n;r++)i.set(o,r,Math.max(t.get(o,r),e.get(o,r)));return i}static checkMatrix(t){return C.isMatrix(t)?t:new N(t)}static isMatrix(t){return null!=t&&"Matrix"===t.klass}get size(){return this.rows*this.columns}apply(t){if("function"!=typeof t)throw new TypeError("callback must be a function");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.call(this,e,r);return this}to1DArray(){let t=[];for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.push(this.get(e,r));return t}to2DArray(){let t=[];for(let e=0;e<this.rows;e++){t.push([]);for(let r=0;r<this.columns;r++)t[e].push(this.get(e,r))}return t}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let t=0;t<this.rows;t++)for(let e=0;e<=t;e++)if(this.get(t,e)!==this.get(e,t))return!1;return!0}return!1}isEchelonForm(){let t=0,e=0,r=-1,n=!0,i=!1;for(;t<this.rows&&n;){for(e=0,i=!1;e<this.columns&&!1===i;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(i=!0,r=e):(n=!1,i=!0);t++}return n}isReducedEchelonForm(){let t=0,e=0,r=-1,n=!0,i=!1;for(;t<this.rows&&n;){for(e=0,i=!1;e<this.columns&&!1===i;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(i=!0,r=e):(n=!1,i=!0);for(let r=e+1;r<this.rows;r++)0!==this.get(t,r)&&(n=!1);t++}return n}echelonForm(){let t=this.clone(),e=0,r=0;for(;e<t.rows&&r<t.columns;){let n=e;for(let i=e;i<t.rows;i++)t.get(i,r)>t.get(n,r)&&(n=i);if(0===t.get(n,r))r++;else{t.swapRows(e,n);let i=t.get(e,r);for(let n=r;n<t.columns;n++)t.set(e,n,t.get(e,n)/i);for(let n=e+1;n<t.rows;n++){let i=t.get(n,r)/t.get(e,r);t.set(n,r,0);for(let o=r+1;o<t.columns;o++)t.set(n,o,t.get(n,o)-t.get(e,o)*i)}e++,r++}}return t}reducedEchelonForm(){let t=this.echelonForm(),e=t.columns,r=t.rows,n=r-1;for(;n>=0;)if(0===t.maxRow(n))n--;else{let i=0,o=!1;for(;i<r&&!1===o;)1===t.get(n,i)?o=!0:i++;for(let r=0;r<n;r++){let o=t.get(r,i);for(let s=i;s<e;s++){let e=t.get(r,s)-o*t.get(n,s);t.set(r,s,e)}}n--}return t}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{rows:e=1,columns:r=1}=t;if(!Number.isInteger(e)||e<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(r)||r<=0)throw new TypeError("columns must be a positive integer");let n=new N(this.rows*e,this.columns*r);for(let t=0;t<e;t++)for(let e=0;e<r;e++)n.setSubMatrix(this,this.rows*t,this.columns*e);return n}fill(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,t);return this}neg(){return this.mulS(-1)}getRow(t){y(this,t);let e=[];for(let r=0;r<this.columns;r++)e.push(this.get(t,r));return e}getRowVector(t){return N.rowVector(this.getRow(t))}setRow(t,e){y(this,t),e=b(this,e);for(let r=0;r<this.columns;r++)this.set(t,r,e[r]);return this}swapRows(t,e){y(this,t),y(this,e);for(let r=0;r<this.columns;r++){let n=this.get(t,r);this.set(t,r,this.get(e,r)),this.set(e,r,n)}return this}getColumn(t){v(this,t);let e=[];for(let r=0;r<this.rows;r++)e.push(this.get(r,t));return e}getColumnVector(t){return N.columnVector(this.getColumn(t))}setColumn(t,e){v(this,t),e=_(this,e);for(let r=0;r<this.rows;r++)this.set(r,t,e[r]);return this}swapColumns(t,e){v(this,t),v(this,e);for(let r=0;r<this.rows;r++){let n=this.get(r,t);this.set(r,t,this.get(r,e)),this.set(r,e,n)}return this}addRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[r]);return this}subRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[r]);return this}mulRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[r]);return this}divRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[r]);return this}addColumnVector(t){t=_(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[e]);return this}subColumnVector(t){t=_(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[e]);return this}mulColumnVector(t){t=_(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[e]);return this}divColumnVector(t){t=_(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[e]);return this}mulRow(t,e){y(this,t);for(let r=0;r<this.columns;r++)this.set(t,r,this.get(t,r)*e);return this}mulColumn(t,e){v(this,t);for(let r=0;r<this.rows;r++)this.set(r,t,this.get(r,t)*e);return this}max(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}maxIndex(){E(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)>t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}min(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}minIndex(){E(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)<t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}maxRow(t){if(y(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)>e&&(e=this.get(t,r));return e}maxRowIndex(t){y(this,t),E(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)>e&&(e=this.get(t,n),r[1]=n);return r}minRow(t){if(y(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)<e&&(e=this.get(t,r));return e}minRowIndex(t){y(this,t),E(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)<e&&(e=this.get(t,n),r[1]=n);return r}maxColumn(t){if(v(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)>e&&(e=this.get(r,t));return e}maxColumnIndex(t){v(this,t),E(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)>e&&(e=this.get(n,t),r[0]=n);return r}minColumn(t){if(v(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)<e&&(e=this.get(r,t));return e}minColumnIndex(t){v(this,t),E(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)<e&&(e=this.get(n,t),r[0]=n);return r}diag(){let t=Math.min(this.rows,this.columns),e=[];for(let r=0;r<t;r++)e.push(this.get(r,r));return e}norm(t="frobenius"){let e=0;if("max"===t)return this.max();if("frobenius"===t){for(let t=0;t<this.rows;t++)for(let r=0;r<this.columns;r++)e+=this.get(t,r)*this.get(t,r);return Math.sqrt(e)}throw new RangeError(`unknown norm type: ${t}`)}cumulativeSum(){let t=0;for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t+=this.get(e,r),this.set(e,r,t);return this}dot(t){C.isMatrix(t)&&(t=t.to1DArray());let e=this.to1DArray();if(e.length!==t.length)throw new RangeError("vectors do not have the same size");let r=0;for(let n=0;n<e.length;n++)r+=e[n]*t[n];return r}mmul(t){t=N.checkMatrix(t);let e=this.rows,r=this.columns,n=t.columns,i=new N(e,n),o=new Float64Array(r);for(let s=0;s<n;s++){for(let e=0;e<r;e++)o[e]=t.get(e,s);for(let t=0;t<e;t++){let e=0;for(let n=0;n<r;n++)e+=this.get(t,n)*o[n];i.set(t,s,e)}}return i}strassen2x2(t){t=N.checkMatrix(t);let e=new N(2,2);const r=this.get(0,0),n=t.get(0,0),i=this.get(0,1),o=t.get(0,1),s=this.get(1,0),a=t.get(1,0),h=this.get(1,1),l=t.get(1,1),u=(r+h)*(n+l),c=(s+h)*n,f=r*(o-l),m=h*(a-n),d=(r+i)*l,g=u+m-d+(i-h)*(a+l),p=f+d,w=c+m,y=u-c+f+(s-r)*(n+o);return e.set(0,0,g),e.set(0,1,p),e.set(1,0,w),e.set(1,1,y),e}strassen3x3(t){t=N.checkMatrix(t);let e=new N(3,3);const r=this.get(0,0),n=this.get(0,1),i=this.get(0,2),o=this.get(1,0),s=this.get(1,1),a=this.get(1,2),h=this.get(2,0),l=this.get(2,1),u=this.get(2,2),c=t.get(0,0),f=t.get(0,1),m=t.get(0,2),d=t.get(1,0),g=t.get(1,1),p=t.get(1,2),w=t.get(2,0),y=t.get(2,1),v=t.get(2,2),b=(r-o)*(-f+g),_=(-r+o+s)*(c-f+g),M=(o+s)*(-c+f),S=r*c,x=(-r+h+l)*(c-m+p),E=(-r+h)*(m-p),C=(h+l)*(-c+m),A=(-i+l+u)*(g+w-y),k=(i-u)*(g-y),R=i*w,I=(l+u)*(-w+y),F=(-i+s+a)*(p+w-v),D=(i-a)*(p-v),P=(s+a)*(-w+v),z=S+R+n*d,T=(r+n+i-o-s-l-u)*g+_+M+S+A+R+I,V=S+x+C+(r+n+i-s-a-h-l)*p+R+F+P,L=b+s*(-c+f+d-g-p-w+v)+_+S+R+F+D,B=b+_+M+S+a*y,O=R+F+D+P+o*m,j=S+x+E+l*(-c+m+d-g-p-w+y)+A+k+R,q=A+k+R+I+h*f,$=S+x+E+C+u*v;return e.set(0,0,z),e.set(0,1,T),e.set(0,2,V),e.set(1,0,L),e.set(1,1,B),e.set(1,2,O),e.set(2,0,j),e.set(2,1,q),e.set(2,2,$),e}mmulStrassen(t){t=N.checkMatrix(t);let e=this.clone(),r=e.rows,n=e.columns,i=t.rows,o=t.columns;function s(t,e,r){let n=t.rows,i=t.columns;if(n===e&&i===r)return t;{let n=C.zeros(e,r);return n=n.setSubMatrix(t,0,0),n}}n!==i&&console.warn(`Multiplying ${r} x ${n} and ${i} x ${o} matrix: dimensions do not match.`);let a=Math.max(r,i),h=Math.max(n,o);return e=s(e,a,h),function t(e,r,n,i){if(n<=512||i<=512)return e.mmul(r);n%2==1&&i%2==1?(e=s(e,n+1,i+1),r=s(r,n+1,i+1)):n%2==1?(e=s(e,n+1,i),r=s(r,n+1,i)):i%2==1&&(e=s(e,n,i+1),r=s(r,n,i+1));let o=parseInt(e.rows/2,10),a=parseInt(e.columns/2,10),h=e.subMatrix(0,o-1,0,a-1),l=r.subMatrix(0,o-1,0,a-1),u=e.subMatrix(0,o-1,a,e.columns-1),c=r.subMatrix(0,o-1,a,r.columns-1),f=e.subMatrix(o,e.rows-1,0,a-1),m=r.subMatrix(o,r.rows-1,0,a-1),d=e.subMatrix(o,e.rows-1,a,e.columns-1),g=r.subMatrix(o,r.rows-1,a,r.columns-1),p=t(C.add(h,d),C.add(l,g),o,a),w=t(C.add(f,d),l,o,a),y=t(h,C.sub(c,g),o,a),v=t(d,C.sub(m,l),o,a),b=t(C.add(h,u),g,o,a),_=t(C.sub(f,h),C.add(l,c),o,a),M=t(C.sub(u,d),C.add(m,g),o,a),S=C.add(p,v);S.sub(b),S.add(M);let x=C.add(y,b),E=C.add(w,v),A=C.sub(p,w);A.add(y),A.add(_);let N=C.zeros(2*S.rows,2*S.columns);return N=N.setSubMatrix(S,0,0),N=N.setSubMatrix(x,S.rows,0),N=N.setSubMatrix(E,0,S.columns),N=N.setSubMatrix(A,S.rows,S.columns),N.subMatrix(0,n-1,0,i-1)}(e,t=s(t,a,h),a,h)}scaleRows(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new N(this.rows,this.columns);for(let t=0;t<this.rows;t++){const i=this.getRow(t);i.length>0&&f(i,{min:e,max:r,output:i}),n.setRow(t,i)}return n}scaleColumns(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new N(this.rows,this.columns);for(let t=0;t<this.columns;t++){const i=this.getColumn(t);i.length&&f(i,{min:e,max:r,output:i}),n.setColumn(t,i)}return n}flipRows(){const t=Math.ceil(this.columns/2);for(let e=0;e<this.rows;e++)for(let r=0;r<t;r++){let t=this.get(e,r),n=this.get(e,this.columns-1-r);this.set(e,r,n),this.set(e,this.columns-1-r,t)}return this}flipColumns(){const t=Math.ceil(this.rows/2);for(let e=0;e<this.columns;e++)for(let r=0;r<t;r++){let t=this.get(r,e),n=this.get(this.rows-1-r,e);this.set(r,e,n),this.set(this.rows-1-r,e,t)}return this}kroneckerProduct(t){t=N.checkMatrix(t);let e=this.rows,r=this.columns,n=t.rows,i=t.columns,o=new N(e*n,r*i);for(let s=0;s<e;s++)for(let e=0;e<r;e++)for(let r=0;r<n;r++)for(let a=0;a<i;a++)o.set(n*s+r,i*e+a,this.get(s,e)*t.get(r,a));return o}kroneckerSum(t){if(t=N.checkMatrix(t),!this.isSquare()||!t.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let e=this.rows,r=t.rows,n=this.kroneckerProduct(N.eye(r,r)),i=N.eye(e,e).kroneckerProduct(t);return n.add(i)}transpose(){let t=new N(this.columns,this.rows);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(r,e,this.get(e,r));return t}sortRows(t=A){for(let e=0;e<this.rows;e++)this.setRow(e,this.getRow(e).sort(t));return this}sortColumns(t=A){for(let e=0;e<this.columns;e++)this.setColumn(e,this.getColumn(e).sort(t));return this}subMatrix(t,e,r,n){M(this,t,e,r,n);let i=new N(e-t+1,n-r+1);for(let o=t;o<=e;o++)for(let e=r;e<=n;e++)i.set(o-t,e-r,this.get(o,e));return i}subMatrixRow(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.columns-1),e>r||e<0||e>=this.columns||r<0||r>=this.columns)throw new RangeError("Argument out of range");let n=new N(t.length,r-e+1);for(let i=0;i<t.length;i++)for(let o=e;o<=r;o++){if(t[i]<0||t[i]>=this.rows)throw new RangeError(`Row index out of range: ${t[i]}`);n.set(i,o-e,this.get(t[i],o))}return n}subMatrixColumn(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.rows-1),e>r||e<0||e>=this.rows||r<0||r>=this.rows)throw new RangeError("Argument out of range");let n=new N(r-e+1,t.length);for(let i=0;i<t.length;i++)for(let o=e;o<=r;o++){if(t[i]<0||t[i]>=this.columns)throw new RangeError(`Column index out of range: ${t[i]}`);n.set(o-e,i,this.get(o,t[i]))}return n}setSubMatrix(t,e,r){if((t=N.checkMatrix(t)).isEmpty())return this;M(this,e,e+t.rows-1,r,r+t.columns-1);for(let n=0;n<t.rows;n++)for(let i=0;i<t.columns;i++)this.set(e+n,r+i,t.get(n,i));return this}selection(t,e){!function(t,e){if(!a(e))throw new TypeError("row indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.rows)throw new RangeError("row indices are out of range")}(this,t),function(t,e){if(!a(e))throw new TypeError("column indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.columns)throw new RangeError("column indices are out of range")}(this,e);let r=new N(t.length,e.length);for(let n=0;n<t.length;n++){let i=t[n];for(let t=0;t<e.length;t++){let o=e[t];r.set(n,t,this.get(i,o))}}return r}trace(){let t=Math.min(this.rows,this.columns),e=0;for(let r=0;r<t;r++)e+=this.get(r,r);return e}clone(){let t=new N(this.rows,this.columns);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(e,r,this.get(e,r));return t}sum(t){switch(t){case"row":return function(t){let e=S(t.rows);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]+=t.get(r,n);return e}(this);case"column":return function(t){let e=S(t.columns);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]+=t.get(r,n);return e}(this);case void 0:return function(t){let e=0;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e+=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}product(t){switch(t){case"row":return function(t){let e=S(t.rows,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]*=t.get(r,n);return e}(this);case"column":return function(t){let e=S(t.columns,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]*=t.get(r,n);return e}(this);case void 0:return function(t){let e=1;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e*=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}mean(t){const e=this.sum(t);switch(t){case"row":for(let t=0;t<this.rows;t++)e[t]/=this.columns;return e;case"column":for(let t=0;t<this.columns;t++)e[t]/=this.rows;return e;case void 0:return e/this.size;default:throw new Error(`invalid option: ${t}`)}}variance(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{unbiased:r=!0,mean:n=this.mean(t)}=e;if("boolean"!=typeof r)throw new TypeError("unbiased must be a boolean");switch(t){case"row":if(!a(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,i=t.columns,o=[];for(let s=0;s<n;s++){let n=0,a=0,h=0;for(let e=0;e<i;e++)h=t.get(s,e)-r[s],n+=h,a+=h*h;e?o.push((a-n*n/i)/(i-1)):o.push((a-n*n/i)/i)}return o}(this,r,n);case"column":if(!a(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,i=t.columns,o=[];for(let s=0;s<i;s++){let i=0,a=0,h=0;for(let e=0;e<n;e++)h=t.get(e,s)-r[s],i+=h,a+=h*h;e?o.push((a-i*i/n)/(n-1)):o.push((a-i*i/n)/n)}return o}(this,r,n);case void 0:if("number"!=typeof n)throw new TypeError("mean must be a number");return function(t,e,r){const n=t.rows,i=t.columns,o=n*i;let s=0,a=0,h=0;for(let e=0;e<n;e++)for(let n=0;n<i;n++)h=t.get(e,n)-r,s+=h,a+=h*h;return e?(a-s*s/o)/(o-1):(a-s*s/o)/o}(this,r,n);default:throw new Error(`invalid option: ${t}`)}}standardDeviation(t,e){"object"==typeof t&&(e=t,t=void 0);const r=this.variance(t,e);if(void 0===t)return Math.sqrt(r);for(let t=0;t<r.length;t++)r[t]=Math.sqrt(r[t]);return r}center(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{center:r=this.mean(t)}=e;switch(t){case"row":if(!a(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[r])}(this,r),this;case"column":if(!a(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[n])}(this,r),this;case void 0:if("number"!=typeof r)throw new TypeError("center must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}scale(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");let r=e.scale;switch(t){case"row":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.rows;r++){let n=0;for(let e=0;e<t.columns;e++)n+=Math.pow(t.get(r,e),2)/(t.columns-1);e.push(Math.sqrt(n))}return e}(this);else if(!a(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[r])}(this,r),this;case"column":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.columns;r++){let n=0;for(let e=0;e<t.rows;e++)n+=Math.pow(t.get(e,r),2)/(t.rows-1);e.push(Math.sqrt(n))}return e}(this);else if(!a(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[n])}(this,r),this;case void 0:if(void 0===r)r=function(t){const e=t.size-1;let r=0;for(let n=0;n<t.columns;n++)for(let i=0;i<t.rows;i++)r+=Math.pow(t.get(i,n),2)/e;return Math.sqrt(r)}(this);else if("number"!=typeof r)throw new TypeError("scale must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}toString(t){return g(this,t)}}function A(t,e){return t-e}C.prototype.klass="Matrix","undefined"!=typeof Symbol&&(C.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return g(this)}),C.random=C.rand,C.randomInt=C.randInt,C.diagonal=C.diag,C.prototype.diagonal=C.prototype.diag,C.identity=C.eye,C.prototype.negate=C.prototype.neg,C.prototype.tensorProduct=C.prototype.kroneckerProduct;class N extends C{constructor(t,e){if(super(),N.isMatrix(t))return t.clone();if(Number.isInteger(t)&&t>=0){if(this.data=[],!(Number.isInteger(e)&&e>=0))throw new TypeError("nColumns must be a positive integer");for(let r=0;r<t;r++)this.data.push(new Float64Array(e))}else{if(!a(t))throw new TypeError("First argument must be a positive number or an array");{const r=t;if("number"!=typeof(e=(t=r.length)?r[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let n=0;n<t;n++){if(r[n].length!==e)throw new RangeError("Inconsistent array dimensions");if(!r[n].every((t=>"number"==typeof t)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(r[n]))}}}this.rows=t,this.columns=e}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}removeRow(t){return y(this,t),this.data.splice(t,1),this.rows-=1,this}addRow(t,e){return void 0===e&&(e=t,t=this.rows),y(this,t,!0),e=Float64Array.from(b(this,e)),this.data.splice(t,0,e),this.rows+=1,this}removeColumn(t){v(this,t);for(let e=0;e<this.rows;e++){const r=new Float64Array(this.columns-1);for(let n=0;n<t;n++)r[n]=this.data[e][n];for(let n=t+1;n<this.columns;n++)r[n-1]=this.data[e][n];this.data[e]=r}return this.columns-=1,this}addColumn(t,e){void 0===e&&(e=t,t=this.columns),v(this,t,!0),e=_(this,e);for(let r=0;r<this.rows;r++){const n=new Float64Array(this.columns+1);let i=0;for(;i<t;i++)n[i]=this.data[r][i];for(n[i++]=e[r];i<this.columns+1;i++)n[i]=this.data[r][i-1];this.data[r]=n}return this.columns+=1,this}}!function(t,e){t.prototype.add=function(t){return"number"==typeof t?this.addS(t):this.addM(t)},t.prototype.addS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t);return this},t.prototype.addM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t.get(e,r));return this},t.add=function(t,r){return new e(t).add(r)},t.prototype.sub=function(t){return"number"==typeof t?this.subS(t):this.subM(t)},t.prototype.subS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t);return this},t.prototype.subM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t.get(e,r));return this},t.sub=function(t,r){return new e(t).sub(r)},t.prototype.subtract=t.prototype.sub,t.prototype.subtractS=t.prototype.subS,t.prototype.subtractM=t.prototype.subM,t.subtract=t.sub,t.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):this.mulM(t)},t.prototype.mulS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t);return this},t.prototype.mulM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t.get(e,r));return this},t.mul=function(t,r){return new e(t).mul(r)},t.prototype.multiply=t.prototype.mul,t.prototype.multiplyS=t.prototype.mulS,t.prototype.multiplyM=t.prototype.mulM,t.multiply=t.mul,t.prototype.div=function(t){return"number"==typeof t?this.divS(t):this.divM(t)},t.prototype.divS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t);return this},t.prototype.divM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t.get(e,r));return this},t.div=function(t,r){return new e(t).div(r)},t.prototype.divide=t.prototype.div,t.prototype.divideS=t.prototype.divS,t.prototype.divideM=t.prototype.divM,t.divide=t.div,t.prototype.mod=function(t){return"number"==typeof t?this.modS(t):this.modM(t)},t.prototype.modS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t);return this},t.prototype.modM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t.get(e,r));return this},t.mod=function(t,r){return new e(t).mod(r)},t.prototype.modulus=t.prototype.mod,t.prototype.modulusS=t.prototype.modS,t.prototype.modulusM=t.prototype.modM,t.modulus=t.mod,t.prototype.and=function(t){return"number"==typeof t?this.andS(t):this.andM(t)},t.prototype.andS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t);return this},t.prototype.andM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t.get(e,r));return this},t.and=function(t,r){return new e(t).and(r)},t.prototype.or=function(t){return"number"==typeof t?this.orS(t):this.orM(t)},t.prototype.orS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t);return this},t.prototype.orM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t.get(e,r));return this},t.or=function(t,r){return new e(t).or(r)},t.prototype.xor=function(t){return"number"==typeof t?this.xorS(t):this.xorM(t)},t.prototype.xorS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t);return this},t.prototype.xorM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t.get(e,r));return this},t.xor=function(t,r){return new e(t).xor(r)},t.prototype.leftShift=function(t){return"number"==typeof t?this.leftShiftS(t):this.leftShiftM(t)},t.prototype.leftShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t);return this},t.prototype.leftShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t.get(e,r));return this},t.leftShift=function(t,r){return new e(t).leftShift(r)},t.prototype.signPropagatingRightShift=function(t){return"number"==typeof t?this.signPropagatingRightShiftS(t):this.signPropagatingRightShiftM(t)},t.prototype.signPropagatingRightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t);return this},t.prototype.signPropagatingRightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t.get(e,r));return this},t.signPropagatingRightShift=function(t,r){return new e(t).signPropagatingRightShift(r)},t.prototype.rightShift=function(t){return"number"==typeof t?this.rightShiftS(t):this.rightShiftM(t)},t.prototype.rightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t);return this},t.prototype.rightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t.get(e,r));return this},t.rightShift=function(t,r){return new e(t).rightShift(r)},t.prototype.zeroFillRightShift=t.prototype.rightShift,t.prototype.zeroFillRightShiftS=t.prototype.rightShiftS,t.prototype.zeroFillRightShiftM=t.prototype.rightShiftM,t.zeroFillRightShift=t.rightShift,t.prototype.not=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,~this.get(t,e));return this},t.not=function(t){return new e(t).not()},t.prototype.abs=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.abs(this.get(t,e)));return this},t.abs=function(t){return new e(t).abs()},t.prototype.acos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acos(this.get(t,e)));return this},t.acos=function(t){return new e(t).acos()},t.prototype.acosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acosh(this.get(t,e)));return this},t.acosh=function(t){return new e(t).acosh()},t.prototype.asin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asin(this.get(t,e)));return this},t.asin=function(t){return new e(t).asin()},t.prototype.asinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asinh(this.get(t,e)));return this},t.asinh=function(t){return new e(t).asinh()},t.prototype.atan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atan(this.get(t,e)));return this},t.atan=function(t){return new e(t).atan()},t.prototype.atanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atanh(this.get(t,e)));return this},t.atanh=function(t){return new e(t).atanh()},t.prototype.cbrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cbrt(this.get(t,e)));return this},t.cbrt=function(t){return new e(t).cbrt()},t.prototype.ceil=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.ceil(this.get(t,e)));return this},t.ceil=function(t){return new e(t).ceil()},t.prototype.clz32=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.clz32(this.get(t,e)));return this},t.clz32=function(t){return new e(t).clz32()},t.prototype.cos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cos(this.get(t,e)));return this},t.cos=function(t){return new e(t).cos()},t.prototype.cosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cosh(this.get(t,e)));return this},t.cosh=function(t){return new e(t).cosh()},t.prototype.exp=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.exp(this.get(t,e)));return this},t.exp=function(t){return new e(t).exp()},t.prototype.expm1=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.expm1(this.get(t,e)));return this},t.expm1=function(t){return new e(t).expm1()},t.prototype.floor=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.floor(this.get(t,e)));return this},t.floor=function(t){return new e(t).floor()},t.prototype.fround=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.fround(this.get(t,e)));return this},t.fround=function(t){return new e(t).fround()},t.prototype.log=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log(this.get(t,e)));return this},t.log=function(t){return new e(t).log()},t.prototype.log1p=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log1p(this.get(t,e)));return this},t.log1p=function(t){return new e(t).log1p()},t.prototype.log10=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log10(this.get(t,e)));return this},t.log10=function(t){return new e(t).log10()},t.prototype.log2=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log2(this.get(t,e)));return this},t.log2=function(t){return new e(t).log2()},t.prototype.round=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.round(this.get(t,e)));return this},t.round=function(t){return new e(t).round()},t.prototype.sign=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sign(this.get(t,e)));return this},t.sign=function(t){return new e(t).sign()},t.prototype.sin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sin(this.get(t,e)));return this},t.sin=function(t){return new e(t).sin()},t.prototype.sinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sinh(this.get(t,e)));return this},t.sinh=function(t){return new e(t).sinh()},t.prototype.sqrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sqrt(this.get(t,e)));return this},t.sqrt=function(t){return new e(t).sqrt()},t.prototype.tan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tan(this.get(t,e)));return this},t.tan=function(t){return new e(t).tan()},t.prototype.tanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tanh(this.get(t,e)));return this},t.tanh=function(t){return new e(t).tanh()},t.prototype.trunc=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.trunc(this.get(t,e)));return this},t.trunc=function(t){return new e(t).trunc()},t.pow=function(t,r){return new e(t).pow(r)},t.prototype.pow=function(t){return"number"==typeof t?this.powS(t):this.powM(t)},t.prototype.powS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t));return this},t.prototype.powM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t.get(e,r)));return this}}(C,N);class k extends C{constructor(t){super(),this.data=t,this.rows=t.length,this.columns=t[0].length}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}}class R{constructor(t){let e,r,n,i,o,s,a,h,l,u=(t=k.checkMatrix(t)).clone(),c=u.rows,f=u.columns,m=new Float64Array(c),d=1;for(e=0;e<c;e++)m[e]=e;for(h=new Float64Array(c),r=0;r<f;r++){for(e=0;e<c;e++)h[e]=u.get(e,r);for(e=0;e<c;e++){for(l=Math.min(e,r),o=0,n=0;n<l;n++)o+=u.get(e,n)*h[n];h[e]-=o,u.set(e,r,h[e])}for(i=r,e=r+1;e<c;e++)Math.abs(h[e])>Math.abs(h[i])&&(i=e);if(i!==r){for(n=0;n<f;n++)s=u.get(i,n),u.set(i,n,u.get(r,n)),u.set(r,n,s);a=m[i],m[i]=m[r],m[r]=a,d=-d}if(r<c&&0!==u.get(r,r))for(e=r+1;e<c;e++)u.set(e,r,u.get(e,r)/u.get(r,r))}this.LU=u,this.pivotVector=m,this.pivotSign=d}isSingular(){let t=this.LU,e=t.columns;for(let r=0;r<e;r++)if(0===t.get(r,r))return!0;return!1}solve(t){t=N.checkMatrix(t);let e=this.LU;if(e.rows!==t.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let r,n,i,o=t.columns,s=t.subMatrixRow(this.pivotVector,0,o-1),a=e.columns;for(i=0;i<a;i++)for(r=i+1;r<a;r++)for(n=0;n<o;n++)s.set(r,n,s.get(r,n)-s.get(i,n)*e.get(r,i));for(i=a-1;i>=0;i--){for(n=0;n<o;n++)s.set(i,n,s.get(i,n)/e.get(i,i));for(r=0;r<i;r++)for(n=0;n<o;n++)s.set(r,n,s.get(r,n)-s.get(i,n)*e.get(r,i))}return s}get determinant(){let t=this.LU;if(!t.isSquare())throw new Error("Matrix must be square");let e=this.pivotSign,r=t.columns;for(let n=0;n<r;n++)e*=t.get(n,n);return e}get lowerTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,n=new N(e,r);for(let i=0;i<e;i++)for(let e=0;e<r;e++)i>e?n.set(i,e,t.get(i,e)):i===e?n.set(i,e,1):n.set(i,e,0);return n}get upperTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,n=new N(e,r);for(let i=0;i<e;i++)for(let e=0;e<r;e++)i<=e?n.set(i,e,t.get(i,e)):n.set(i,e,0);return n}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function I(t,e){let r=0;return Math.abs(t)>Math.abs(e)?(r=e/t,Math.abs(t)*Math.sqrt(1+r*r)):0!==e?(r=t/e,Math.abs(e)*Math.sqrt(1+r*r)):0}class F{constructor(t){let e,r,n,i,o=(t=k.checkMatrix(t)).clone(),s=t.rows,a=t.columns,h=new Float64Array(a);for(n=0;n<a;n++){let t=0;for(e=n;e<s;e++)t=I(t,o.get(e,n));if(0!==t){for(o.get(n,n)<0&&(t=-t),e=n;e<s;e++)o.set(e,n,o.get(e,n)/t);for(o.set(n,n,o.get(n,n)+1),r=n+1;r<a;r++){for(i=0,e=n;e<s;e++)i+=o.get(e,n)*o.get(e,r);for(i=-i/o.get(n,n),e=n;e<s;e++)o.set(e,r,o.get(e,r)+i*o.get(e,n))}}h[n]=-t}this.QR=o,this.Rdiag=h}solve(t){t=N.checkMatrix(t);let e=this.QR,r=e.rows;if(t.rows!==r)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let n,i,o,s,a=t.columns,h=t.clone(),l=e.columns;for(o=0;o<l;o++)for(i=0;i<a;i++){for(s=0,n=o;n<r;n++)s+=e.get(n,o)*h.get(n,i);for(s=-s/e.get(o,o),n=o;n<r;n++)h.set(n,i,h.get(n,i)+s*e.get(n,o))}for(o=l-1;o>=0;o--){for(i=0;i<a;i++)h.set(o,i,h.get(o,i)/this.Rdiag[o]);for(n=0;n<o;n++)for(i=0;i<a;i++)h.set(n,i,h.get(n,i)-h.get(o,i)*e.get(n,o))}return h.subMatrix(0,l-1,0,a-1)}isFullRank(){let t=this.QR.columns;for(let e=0;e<t;e++)if(0===this.Rdiag[e])return!1;return!0}get upperTriangularMatrix(){let t,e,r=this.QR,n=r.columns,i=new N(n,n);for(t=0;t<n;t++)for(e=0;e<n;e++)t<e?i.set(t,e,r.get(t,e)):t===e?i.set(t,e,this.Rdiag[t]):i.set(t,e,0);return i}get orthogonalMatrix(){let t,e,r,n,i=this.QR,o=i.rows,s=i.columns,a=new N(o,s);for(r=s-1;r>=0;r--){for(t=0;t<o;t++)a.set(t,r,0);for(a.set(r,r,1),e=r;e<s;e++)if(0!==i.get(r,r)){for(n=0,t=r;t<o;t++)n+=i.get(t,r)*a.get(t,e);for(n=-n/i.get(r,r),t=r;t<o;t++)a.set(t,e,a.get(t,e)+n*i.get(t,r))}}return a}}class D{constructor(t,e={}){if((t=k.checkMatrix(t)).isEmpty())throw new Error("Matrix must be non-empty");let r=t.rows,n=t.columns;const{computeLeftSingularVectors:i=!0,computeRightSingularVectors:o=!0,autoTranspose:s=!1}=e;let a,h=Boolean(i),l=Boolean(o),u=!1;if(r<n)if(s){a=t.transpose(),r=a.rows,n=a.columns,u=!0;let e=h;h=l,l=e}else a=t.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else a=t.clone();let c=Math.min(r,n),f=Math.min(r+1,n),m=new Float64Array(f),d=new N(r,c),g=new N(n,n),p=new Float64Array(n),w=new Float64Array(r),y=new Float64Array(f);for(let t=0;t<f;t++)y[t]=t;let v=Math.min(r-1,n),b=Math.max(0,Math.min(n-2,r)),_=Math.max(v,b);for(let t=0;t<_;t++){if(t<v){m[t]=0;for(let e=t;e<r;e++)m[t]=I(m[t],a.get(e,t));if(0!==m[t]){a.get(t,t)<0&&(m[t]=-m[t]);for(let e=t;e<r;e++)a.set(e,t,a.get(e,t)/m[t]);a.set(t,t,a.get(t,t)+1)}m[t]=-m[t]}for(let e=t+1;e<n;e++){if(t<v&&0!==m[t]){let n=0;for(let i=t;i<r;i++)n+=a.get(i,t)*a.get(i,e);n=-n/a.get(t,t);for(let i=t;i<r;i++)a.set(i,e,a.get(i,e)+n*a.get(i,t))}p[e]=a.get(t,e)}if(h&&t<v)for(let e=t;e<r;e++)d.set(e,t,a.get(e,t));if(t<b){p[t]=0;for(let e=t+1;e<n;e++)p[t]=I(p[t],p[e]);if(0!==p[t]){p[t+1]<0&&(p[t]=0-p[t]);for(let e=t+1;e<n;e++)p[e]/=p[t];p[t+1]+=1}if(p[t]=-p[t],t+1<r&&0!==p[t]){for(let e=t+1;e<r;e++)w[e]=0;for(let e=t+1;e<r;e++)for(let r=t+1;r<n;r++)w[e]+=p[r]*a.get(e,r);for(let e=t+1;e<n;e++){let n=-p[e]/p[t+1];for(let i=t+1;i<r;i++)a.set(i,e,a.get(i,e)+n*w[i])}}if(l)for(let e=t+1;e<n;e++)g.set(e,t,p[e])}}let M=Math.min(n,r+1);if(v<n&&(m[v]=a.get(v,v)),r<M&&(m[M-1]=0),b+1<M&&(p[b]=a.get(b,M-1)),p[M-1]=0,h){for(let t=v;t<c;t++){for(let e=0;e<r;e++)d.set(e,t,0);d.set(t,t,1)}for(let t=v-1;t>=0;t--)if(0!==m[t]){for(let e=t+1;e<c;e++){let n=0;for(let i=t;i<r;i++)n+=d.get(i,t)*d.get(i,e);n=-n/d.get(t,t);for(let i=t;i<r;i++)d.set(i,e,d.get(i,e)+n*d.get(i,t))}for(let e=t;e<r;e++)d.set(e,t,-d.get(e,t));d.set(t,t,1+d.get(t,t));for(let e=0;e<t-1;e++)d.set(e,t,0)}else{for(let e=0;e<r;e++)d.set(e,t,0);d.set(t,t,1)}}if(l)for(let t=n-1;t>=0;t--){if(t<b&&0!==p[t])for(let e=t+1;e<n;e++){let r=0;for(let i=t+1;i<n;i++)r+=g.get(i,t)*g.get(i,e);r=-r/g.get(t+1,t);for(let i=t+1;i<n;i++)g.set(i,e,g.get(i,e)+r*g.get(i,t))}for(let e=0;e<n;e++)g.set(e,t,0);g.set(t,t,1)}let S=M-1,x=0,E=Number.EPSILON;for(;M>0;){let t,e;for(t=M-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+E*Math.abs(m[t]+Math.abs(m[t+1]));if(Math.abs(p[t])<=e||Number.isNaN(p[t])){p[t]=0;break}}if(t===M-2)e=4;else{let r;for(r=M-1;r>=t&&r!==t;r--){let e=(r!==M?Math.abs(p[r]):0)+(r!==t+1?Math.abs(p[r-1]):0);if(Math.abs(m[r])<=E*e){m[r]=0;break}}r===t?e=3:r===M-1?e=1:(e=2,t=r)}switch(t++,e){case 1:{let e=p[M-2];p[M-2]=0;for(let r=M-2;r>=t;r--){let i=I(m[r],e),o=m[r]/i,s=e/i;if(m[r]=i,r!==t&&(e=-s*p[r-1],p[r-1]=o*p[r-1]),l)for(let t=0;t<n;t++)i=o*g.get(t,r)+s*g.get(t,M-1),g.set(t,M-1,-s*g.get(t,r)+o*g.get(t,M-1)),g.set(t,r,i)}break}case 2:{let e=p[t-1];p[t-1]=0;for(let n=t;n<M;n++){let i=I(m[n],e),o=m[n]/i,s=e/i;if(m[n]=i,e=-s*p[n],p[n]=o*p[n],h)for(let e=0;e<r;e++)i=o*d.get(e,n)+s*d.get(e,t-1),d.set(e,t-1,-s*d.get(e,n)+o*d.get(e,t-1)),d.set(e,n,i)}break}case 3:{const e=Math.max(Math.abs(m[M-1]),Math.abs(m[M-2]),Math.abs(p[M-2]),Math.abs(m[t]),Math.abs(p[t])),i=m[M-1]/e,o=m[M-2]/e,s=p[M-2]/e,a=m[t]/e,u=p[t]/e,c=((o+i)*(o-i)+s*s)/2,f=i*s*(i*s);let w=0;0===c&&0===f||(w=c<0?0-Math.sqrt(c*c+f):Math.sqrt(c*c+f),w=f/(c+w));let y=(a+i)*(a-i)+w,v=a*u;for(let e=t;e<M-1;e++){let i=I(y,v);0===i&&(i=Number.MIN_VALUE);let o=y/i,s=v/i;if(e!==t&&(p[e-1]=i),y=o*m[e]+s*p[e],p[e]=o*p[e]-s*m[e],v=s*m[e+1],m[e+1]=o*m[e+1],l)for(let t=0;t<n;t++)i=o*g.get(t,e)+s*g.get(t,e+1),g.set(t,e+1,-s*g.get(t,e)+o*g.get(t,e+1)),g.set(t,e,i);if(i=I(y,v),0===i&&(i=Number.MIN_VALUE),o=y/i,s=v/i,m[e]=i,y=o*p[e]+s*m[e+1],m[e+1]=-s*p[e]+o*m[e+1],v=s*p[e+1],p[e+1]=o*p[e+1],h&&e<r-1)for(let t=0;t<r;t++)i=o*d.get(t,e)+s*d.get(t,e+1),d.set(t,e+1,-s*d.get(t,e)+o*d.get(t,e+1)),d.set(t,e,i)}p[M-2]=y,x+=1;break}case 4:if(m[t]<=0&&(m[t]=m[t]<0?-m[t]:0,l))for(let e=0;e<=S;e++)g.set(e,t,-g.get(e,t));for(;t<S&&!(m[t]>=m[t+1]);){let e=m[t];if(m[t]=m[t+1],m[t+1]=e,l&&t<n-1)for(let r=0;r<n;r++)e=g.get(r,t+1),g.set(r,t+1,g.get(r,t)),g.set(r,t,e);if(h&&t<r-1)for(let n=0;n<r;n++)e=d.get(n,t+1),d.set(n,t+1,d.get(n,t)),d.set(n,t,e);t++}x=0,M--}}if(u){let t=g;g=d,d=t}this.m=r,this.n=n,this.s=m,this.U=d,this.V=g}solve(t){let e=t,r=this.threshold,n=this.s.length,i=N.zeros(n,n);for(let t=0;t<n;t++)Math.abs(this.s[t])<=r?i.set(t,t,0):i.set(t,t,1/this.s[t]);let o=this.U,s=this.rightSingularVectors,a=s.mmul(i),h=s.rows,l=o.rows,u=N.zeros(h,l);for(let t=0;t<h;t++)for(let e=0;e<l;e++){let r=0;for(let i=0;i<n;i++)r+=a.get(t,i)*o.get(e,i);u.set(t,e,r)}return u.mmul(e)}solveForDiagonal(t){return this.solve(N.diag(t))}inverse(){let t=this.V,e=this.threshold,r=t.rows,n=t.columns,i=new N(r,this.s.length);for(let o=0;o<r;o++)for(let r=0;r<n;r++)Math.abs(this.s[r])>e&&i.set(o,r,t.get(o,r)/this.s[r]);let o=this.U,s=o.rows,a=o.columns,h=new N(r,s);for(let t=0;t<r;t++)for(let e=0;e<s;e++){let r=0;for(let n=0;n<a;n++)r+=i.get(t,n)*o.get(e,n);h.set(t,e,r)}return h}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let t=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,e=0,r=this.s;for(let n=0,i=r.length;n<i;n++)r[n]>t&&e++;return e}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return N.diag(this.s)}}function P(t,e,r,n,i){let o=r*n*n,s=N.eye(e.length,e.length,o);const a=i(e);let h=new Float64Array(t.x.length);for(let e=0;e<t.x.length;e++)h[e]=a(t.x[e]);let l=function(t,e,r,n,i){const o=r.length,s=t.x.length;let a=new Array(o);for(let h=0;h<o;h++){a[h]=new Array(s);let o=r.slice();o[h]+=n;let l=i(o);for(let r=0;r<s;r++)a[h][r]=e[r]-l(t.x[r])}return new N(a)}(t,h,e,n,i),u=function(t,e){const r=t.x.length;let n=new Array(r);for(let i=0;i<r;i++)n[i]=[t.y[i]-e[i]];return new N(n)}(t,h),c=function(t,e=!1){return t=k.checkMatrix(t),e?new D(t).inverse():function(t,e,r=!1){return t=k.checkMatrix(t),e=k.checkMatrix(e),r?new D(t).solve(e):t.isSquare()?new R(t).solve(e):new F(t).solve(e)}(t,N.eye(t.rows))}(s.add(l.mmul(l.transpose())));return(e=(e=new N([e])).sub(c.mmul(l).mmul(u).mul(n).transpose())).to1DArray()}function z(t,e,r={}){let{maxIterations:n=100,gradientDifference:s=.1,damping:a=0,errorTolerance:h=.01,minValues:l,maxValues:u,initialValues:c}=r;if(a<=0)throw new Error("The damping option must be a positive number");if(!t.x||!t.y)throw new Error("The data parameter must have x and y elements");if(!i(t.x)||t.x.length<2||!i(t.y)||t.y.length<2)throw new Error("The data parameter elements must be an array with more than 2 points");if(t.x.length!==t.y.length)throw new Error("The data parameter elements must have the same size");let f=c||new Array(e.length).fill(1),m=f.length;if(u=u||new Array(m).fill(Number.MAX_SAFE_INTEGER),l=l||new Array(m).fill(Number.MIN_SAFE_INTEGER),u.length!==l.length)throw new Error("minValues and maxValues must be the same size");if(!i(f))throw new Error("initialValues must be an array");let d,g=o(t,f,e),p=g<=h;for(d=0;d<n&&!p;d++){f=P(t,f,a,s,e);for(let t=0;t<m;t++)f[t]=Math.min(Math.max(l[t],f[t]),u[t]);if(g=o(t,f,e),isNaN(g))break;p=g<=h}return{parameterValues:f,parameterError:g,iterations:d}}},378:function(t,e,r){var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(517));function o(t,e){var r=function(r){return i.empty(t).map((function(){return i.filled(e,r)}))},n=[];return n.push(r(-1)),n.push(r(1/0)),n.push(r(0)),n}function s(t,e,r,n,i){e=Math.floor(e);var o=t[0][e],s=t[1][e];if(t[2][e],r>=s[0])return 0;for(var h=0;h<o.length;h++)if(n===o[h])return 0;return a(t,e,r,n,i)}function a(t,e,r,n,i){var o=t[0][e],s=t[1][e],a=t[2][e];if(r>=s[0])return 0;s[0]=r,o[0]=n,a[0]=i;for(var h=0,l=0;;){var u=2*h+1,c=u+1,f=t[0][0].length;if(u>=f)break;if(c>=f){if(!(s[u]>r))break;l=u}else if(s[u]>=s[c]){if(!(r<s[u]))break;l=u}else{if(!(r<s[c]))break;l=c}s[h]=s[l],o[h]=o[l],a[h]=a[l],h=l}return s[h]=r,o[h]=n,a[h]=i,1}function h(t,e,r,n){for(;2*n+1<r;){var i=2*n+1,o=i+1,s=n;if(t[s]<t[i]&&(s=i),o<r&&t[s]<t[o]&&(s=o),s===n)break;var a=t[n];t[n]=t[s],t[s]=a;var h=e[n];e[n]=e[s],e[s]=h,n=s}}e.makeHeap=o,e.rejectionSample=function(t,e,r){for(var n=i.zeros(t),o=0;o<t;o++){for(var s=!0,a=0;s;){a=i.tauRandInt(e,r);for(var h=!1,l=0;l<o;l++)if(a===n[l]){h=!0;break}h||(s=!1)}n[o]=a}return n},e.heapPush=s,e.uncheckedHeapPush=a,e.buildCandidates=function(t,e,r,n,a){for(var h=o(e,n),l=0;l<e;l++)for(var u=0;u<r;u++)if(!(t[0][l][u]<0)){var c=t[0][l][u],f=t[2][l][u],m=i.tauRand(a);s(h,l,m,c,f),s(h,c,m,l,f),t[2][l][u]=0}return h},e.deheapSort=function(t){for(var e=t[0],r=t[1],n=0;n<e.length;n++)for(var i=e[n],o=r[n],s=0;s<i.length-1;s++){var a=i.length-s-1,l=o.length-s-1,u=i[0];i[0]=i[a],i[a]=u;var c=o[0];o[0]=o[l],o[l]=c,h(o,i,l,0)}return{indices:e,weights:r}},e.smallestFlagged=function(t,e){for(var r=t[0][e],n=t[1][e],i=t[2][e],o=1/0,s=-1,a=0;a>r.length;a++)1===i[a]&&n[a]<o&&(o=n[a],s=a);return s>=0?(i[s]=0,Math.floor(r[s])):-1}},221:(t,e,r)=>{var n=r(364);e.u=n.UMAP},686:function(t,e,r){var n,i=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},o=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var a=s(r(517)),h=function(){function t(t,e,r,n){if(this.entries=new Map,this.nRows=0,this.nCols=0,t.length!==e.length||t.length!==r.length)throw new Error("rows, cols and values arrays must all have the same length");this.nRows=n[0],this.nCols=n[1];for(var i=0;i<r.length;i++){var o=t[i],s=e[i];this.checkDims(o,s);var a=this.makeKey(o,s);this.entries.set(a,{value:r[i],row:o,col:s})}}return t.prototype.makeKey=function(t,e){return t+":"+e},t.prototype.checkDims=function(t,e){if(!(t<this.nRows&&e<this.nCols))throw new Error("row and/or col specified outside of matrix dimensions")},t.prototype.set=function(t,e,r){this.checkDims(t,e);var n=this.makeKey(t,e);this.entries.has(n)?this.entries.get(n).value=r:this.entries.set(n,{value:r,row:t,col:e})},t.prototype.get=function(t,e,r){void 0===r&&(r=0),this.checkDims(t,e);var n=this.makeKey(t,e);return this.entries.has(n)?this.entries.get(n).value:r},t.prototype.getAll=function(t){void 0===t&&(t=!0);var e=[];return this.entries.forEach((function(t){e.push(t)})),t&&e.sort((function(t,e){return t.row===e.row?t.col-e.col:t.row-e.row})),e},t.prototype.getDims=function(){return[this.nRows,this.nCols]},t.prototype.getRows=function(){return Array.from(this.entries,(function(t){var e=i(t,2);return e[0],e[1].row}))},t.prototype.getCols=function(){return Array.from(this.entries,(function(t){var e=i(t,2);return e[0],e[1].col}))},t.prototype.getValues=function(){return Array.from(this.entries,(function(t){var e=i(t,2);return e[0],e[1].value}))},t.prototype.forEach=function(t){this.entries.forEach((function(e){return t(e.value,e.row,e.col)}))},t.prototype.map=function(e){var r=[];this.entries.forEach((function(t){r.push(e(t.value,t.row,t.col))}));var n=[this.nRows,this.nCols];return new t(this.getRows(),this.getCols(),r,n)},t.prototype.toArray=function(){var t=this,e=a.empty(this.nRows).map((function(){return a.zeros(t.nCols)}));return this.entries.forEach((function(t){e[t.row][t.col]=t.value})),e},t}();e.SparseMatrix=h,e.transpose=function(t){var e=[],r=[],n=[];t.forEach((function(t,i,o){e.push(i),r.push(o),n.push(t)}));var i=[t.nCols,t.nRows];return new h(r,e,n,i)},e.identity=function(t){for(var e=i(t,1)[0],r=new h([],[],[],t),n=0;n<e;n++)r.set(n,n,1);return r},e.pairwiseMultiply=function(t,e){return u(t,e,(function(t,e){return t*e}))},e.add=function(t,e){return u(t,e,(function(t,e){return t+e}))},e.subtract=function(t,e){return u(t,e,(function(t,e){return t-e}))},e.maximum=function(t,e){return u(t,e,(function(t,e){return t>e?t:e}))},e.multiplyScalar=function(t,e){return t.map((function(t){return t*e}))},e.eliminateZeros=function(t){for(var e=new Set,r=t.getValues(),n=t.getRows(),i=t.getCols(),o=0;o<r.length;o++)0===r[o]&&e.add(o);var s=function(t,r){return!e.has(r)},a=r.filter(s),l=n.filter(s),u=i.filter(s);return new h(l,u,a,t.getDims())},e.normalize=function(t,e){var r,n;void 0===e&&(e="l2");var i=l[e],s=new Map;t.forEach((function(t,e,r){var n=s.get(e)||[];n.push(r),s.set(e,n)}));var a=new h([],[],[],t.getDims()),u=function(e){for(var r=s.get(e).sort(),n=r.map((function(r){return t.get(e,r)})),o=i(n),h=0;h<o.length;h++)a.set(e,r[h],o[h])};try{for(var c=o(s.keys()),f=c.next();!f.done;f=c.next())u(f.value)}catch(t){r={error:t}}finally{try{f&&!f.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}return a};var l=((n={}).max=function(t){for(var e=-1/0,r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return t.map((function(t){return t/e}))},n.l1=function(t){for(var e=0,r=0;r<t.length;r++)e+=t[r];return t.map((function(t){return t/e}))},n.l2=function(t){for(var e=0,r=0;r<t.length;r++)e+=Math.pow(t[r],2);return t.map((function(t){return Math.sqrt(Math.pow(t,2)/e)}))},n);function u(t,e,r){for(var n=new Set,i=[],o=[],s=[],a=function(n,a){i.push(n),o.push(a);var h=r(t.get(n,a),e.get(n,a));s.push(h)},l=t.getValues(),u=t.getRows(),c=t.getCols(),f=0;f<l.length;f++){var m=(w=u[f])+":"+(y=c[f]);n.add(m),a(w,y)}var d=e.getValues(),g=e.getRows(),p=e.getCols();for(f=0;f<d.length;f++){var w,y;m=(w=g[f])+":"+(y=p[f]),n.has(m)||a(w,y)}var v=[t.nRows,t.nCols];return new h(i,o,s,v)}e.getCSR=function(t){var e=[];t.forEach((function(t,r,n){e.push({value:t,row:r,col:n})})),e.sort((function(t,e){return t.row===e.row?t.col-e.col:t.row-e.row}));for(var r=[],n=[],i=[],o=-1,s=0;s<e.length;s++){var a=e[s],h=a.row,l=a.col,u=a.value;h!==o&&(o=h,i.push(s)),r.push(l),n.push(u)}return{indices:r,values:n,indptr:i}}},760:function(t,e,r){var n=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},i=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var o=i(r(378)),s=i(r(686)),a=i(r(320)),h=i(r(517));e.makeNNDescent=function(t,e){return function(r,n,i,s,a,l,u,c){void 0===s&&(s=10),void 0===a&&(a=50),void 0===l&&(l=.001),void 0===u&&(u=.5),void 0===c&&(c=!0);for(var f=r.length,m=o.makeHeap(r.length,i),d=0;d<r.length;d++)for(var g=o.rejectionSample(i,r.length,e),p=0;p<g.length;p++){var w=t(r[d],r[g[p]]);o.heapPush(m,d,w,g[p],1),o.heapPush(m,g[p],w,d,1)}if(c)for(var y=0;y<n.length;y++)for(d=0;d<n[y].length&&!(n[y][d]<0);d++)for(p=d+1;p<n[y].length&&!(n[y][p]<0);p++)w=t(r[n[y][d]],r[n[y][p]]),o.heapPush(m,n[y][d],w,n[y][p],1),o.heapPush(m,n[y][p],w,n[y][d],1);for(y=0;y<s;y++){var v=o.buildCandidates(m,f,i,a,e),b=0;for(d=0;d<f;d++)for(p=0;p<a;p++){var _=Math.floor(v[0][d][p]);if(!(_<0||h.tauRand(e)<u))for(var M=0;M<a;M++){var S=Math.floor(v[0][d][M]),x=v[2][d][p],E=v[2][d][M];S<0||!x&&!E||(w=t(r[_],r[S]),b+=o.heapPush(m,_,w,S,1),b+=o.heapPush(m,S,w,_,1))}}if(b<=l*i*r.length)break}return o.deheapSort(m)}},e.makeInitializations=function(t){return{initFromRandom:function(e,r,n,i,s){for(var a=0;a<n.length;a++)for(var l=h.rejectionSample(e,r.length,s),u=0;u<l.length;u++)if(!(l[u]<0)){var c=t(r[l[u]],n[a]);o.heapPush(i,a,c,l[u],1)}},initFromTree:function(e,r,n,i,s){for(var h=0;h<n.length;h++)for(var l=a.searchFlatTree(n[h],e,s),u=0;u<l.length;u++){if(l[u]<0)return;var c=t(r[l[u]],n[h]);o.heapPush(i,h,c,l[u],1)}}}},e.makeInitializedNNSearch=function(t){return function(e,r,i,a){for(var h,l,u=s.getCSR(r),c=u.indices,f=u.indptr,m=0;m<a.length;m++)for(var d=new Set(i[0][m]);;){var g=o.smallestFlagged(i,m);if(-1===g)break;var p=c.slice(f[g],f[g+1]);try{for(var w=n(p),y=w.next();!y.done;y=w.next()){var v=y.value;if(v!==g&&-1!==v&&!d.has(v)){var b=t(e[v],a[m]);o.uncheckedHeapPush(i,m,b,v,1),d.add(v)}}}catch(t){h={error:t}}finally{try{y&&!y.done&&(l=w.return)&&l.call(w)}finally{if(h)throw h.error}}}return i}},e.initializeSearch=function(t,e,r,i,s,a,h){var l,u,c=o.makeHeap(r.length,i);if(s(i,e,r,c,h),t)try{for(var f=n(t),m=f.next();!m.done;m=f.next())a(m.value,e,r,c,h)}catch(t){l={error:t}}finally{try{m&&!m.done&&(u=f.return)&&u.call(f)}finally{if(l)throw l.error}}return c}},320:function(t,e,r){var n=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},o=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var a=s(r(517)),h=function(t,e,r,n){this.hyperplanes=t,this.offsets=e,this.children=r,this.indices=n};function l(t,e,r,n,i){if(void 0===r&&(r=30),e.length>r){var o=function(t,e,r){var n=t[0].length,i=a.tauRandInt(e.length,r),o=a.tauRandInt(e.length,r);o=(o+=i===o?1:0)%e.length;for(var s=e[i],h=e[o],l=0,u=a.zeros(n),c=0;c<u.length;c++)u[c]=t[s][c]-t[h][c],l-=u[c]*(t[s][c]+t[h][c])/2;var f=0,m=0,d=a.zeros(e.length);for(c=0;c<e.length;c++){for(var g=l,p=0;p<n;p++)g+=u[p]*t[e[c]][p];0===g?(d[c]=a.tauRandInt(2,r),0===d[c]?f+=1:m+=1):g>0?(d[c]=0,f+=1):(d[c]=1,m+=1)}var w=a.zeros(f),y=a.zeros(m);for(f=0,m=0,c=0;c<d.length;c++)0===d[c]?(w[f]=e[c],f+=1):(y[m]=e[c],m+=1);return{indicesLeft:w,indicesRight:y,hyperplane:u,offset:l}}(t,e,i),s=o.indicesLeft,h=o.indicesRight,u=o.hyperplane,c=o.offset;return{leftChild:l(t,s,r,n+1,i),rightChild:l(t,h,r,n+1,i),isLeaf:!1,hyperplane:u,offset:c}}return{indices:e,isLeaf:!0}}function u(t,e,r,n,o,s,a){var h;if(t.isLeaf)return n[s][0]=-a,(h=o[a]).splice.apply(h,i([0,t.indices.length],t.indices)),{nodeNum:s,leafNum:a+=1};e[s]=t.hyperplane,r[s]=t.offset,n[s][0]=s+1;var l=s,c=u(t.leftChild,e,r,n,o,s+1,a);return s=c.nodeNum,a=c.leafNum,n[l][1]=s+1,{nodeNum:(c=u(t.rightChild,e,r,n,o,s+1,a)).nodeNum,leafNum:c.leafNum}}function c(t){return t.isLeaf?1:1+c(t.leftChild)+c(t.rightChild)}function f(t){return t.isLeaf?1:f(t.leftChild)+f(t.rightChild)}function m(t,e,r,n){for(var i=e,o=0;o<r.length;o++)i+=t[o]*r[o];return 0===i?a.tauRandInt(2,n):i>0?0:1}e.FlatTree=h,e.makeForest=function(t,e,r,n){var i=Math.max(10,e);return a.range(r).map((function(e,r){return function(t,e,r,n){return void 0===e&&(e=30),l(t,a.range(t.length),e,r,n)}(t,i,r,n)})).map((function(t){return function(t,e){var r=c(t),n=f(t),i=a.range(r).map((function(){return a.zeros(t.hyperplane?t.hyperplane.length:0)})),o=a.zeros(r),s=a.range(r).map((function(){return[-1,-1]})),l=a.range(n).map((function(){return a.range(e).map((function(){return-1}))}));return u(t,i,o,s,l,0,0),new h(i,o,s,l)}(t,i)}))},e.makeLeafArray=function(t){var e,r;if(t.length>0){var n=[];try{for(var s=o(t),a=s.next();!a.done;a=s.next()){var h=a.value;n.push.apply(n,i(h.indices))}}catch(t){e={error:t}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}return n}return[[-1]]},e.searchFlatTree=function(t,e,r){for(var n=0;e.children[n][0]>0;)n=0===m(e.hyperplanes[n],e.offsets[n],t,r)?e.children[n][0]:e.children[n][1];var i=-1*e.children[n][0];return e.indices[i]}},364:function(t,e,r){var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{h(n.next(t))}catch(t){o(t)}}function a(t){try{h(n.throw(t))}catch(t){o(t)}}function h(t){t.done?i(t.value):new r((function(e){e(t.value)})).then(s,a)}h((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=e.call(t,s)}catch(t){o=[6,t],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},o=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(o(arguments[e]));return t},a=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e},h=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var l=a(r(378)),u=a(r(686)),c=a(r(760)),f=a(r(320)),m=a(r(517)),d=h(r(251)),g=1e-5,p=.001,w=function(){function t(t){void 0===t&&(t={});var e=this;this.learningRate=1,this.localConnectivity=1,this.minDist=.1,this.nComponents=2,this.nEpochs=0,this.nNeighbors=15,this.negativeSampleRate=5,this.random=Math.random,this.repulsionStrength=1,this.setOpMixRatio=1,this.spread=1,this.transformQueueSize=4,this.targetMetric="categorical",this.targetWeight=.5,this.targetNNeighbors=this.nNeighbors,this.distanceFn=y,this.isInitialized=!1,this.rpForest=[],this.embedding=[],this.optimizationState=new v;var r=function(r){void 0!==t[r]&&(e[r]=t[r])};r("distanceFn"),r("learningRate"),r("localConnectivity"),r("minDist"),r("nComponents"),r("nEpochs"),r("nNeighbors"),r("negativeSampleRate"),r("random"),r("repulsionStrength"),r("setOpMixRatio"),r("spread"),r("transformQueueSize")}return t.prototype.fit=function(t){return this.initializeFit(t),this.optimizeLayout(),this.embedding},t.prototype.fitAsync=function(t,e){return void 0===e&&(e=function(){return!0}),n(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return this.initializeFit(t),[4,this.optimizeLayoutAsync(e)];case 1:return r.sent(),[2,this.embedding]}}))}))},t.prototype.setSupervisedProjection=function(t,e){void 0===e&&(e={}),this.Y=t,this.targetMetric=e.targetMetric||this.targetMetric,this.targetWeight=e.targetWeight||this.targetWeight,this.targetNNeighbors=e.targetNNeighbors||this.targetNNeighbors},t.prototype.setPrecomputedKNN=function(t,e){this.knnIndices=t,this.knnDistances=e},t.prototype.initializeFit=function(t){if(t.length<=this.nNeighbors)throw new Error("Not enough data points ("+t.length+") to create nNeighbors: "+this.nNeighbors+". Add more data points or adjust the configuration.");if(this.X===t&&this.isInitialized)return this.getNEpochs();if(this.X=t,!this.knnIndices&&!this.knnDistances){var e=this.nearestNeighbors(t);this.knnIndices=e.knnIndices,this.knnDistances=e.knnDistances}this.graph=this.fuzzySimplicialSet(t,this.nNeighbors,this.setOpMixRatio),this.makeSearchFns(),this.searchGraph=this.makeSearchGraph(t),this.processGraphForSupervisedProjection();var r=this.initializeSimplicialSetEmbedding(),n=r.head,i=r.tail,o=r.epochsPerSample;return this.optimizationState.head=n,this.optimizationState.tail=i,this.optimizationState.epochsPerSample=o,this.initializeOptimization(),this.prepareForOptimizationLoop(),this.isInitialized=!0,this.getNEpochs()},t.prototype.makeSearchFns=function(){var t=c.makeInitializations(this.distanceFn),e=t.initFromTree,r=t.initFromRandom;this.initFromTree=e,this.initFromRandom=r,this.search=c.makeInitializedNNSearch(this.distanceFn)},t.prototype.makeSearchGraph=function(t){for(var e=this.knnIndices,r=this.knnDistances,n=[t.length,t.length],i=new u.SparseMatrix([],[],[],n),o=0;o<e.length;o++)for(var s=e[o],a=r[o],h=0;h<s.length;h++){var l=s[h],c=a[h];c>0&&i.set(o,l,c)}var f=u.transpose(i);return u.maximum(i,f)},t.prototype.transform=function(t){var e=this,r=this.X;if(void 0===r||0===r.length)throw new Error("No data has been fit.");var n=Math.floor(this.nNeighbors*this.transformQueueSize);n=Math.min(r.length,n);var i=c.initializeSearch(this.rpForest,r,t,n,this.initFromRandom,this.initFromTree,this.random),o=this.search(r,this.searchGraph,i,t),s=l.deheapSort(o),a=s.indices,h=s.weights;a=a.map((function(t){return t.slice(0,e.nNeighbors)})),h=h.map((function(t){return t.slice(0,e.nNeighbors)}));var f=Math.max(0,this.localConnectivity-1),d=this.smoothKNNDistance(h,this.nNeighbors,f),g=d.sigmas,p=d.rhos,w=this.computeMembershipStrengths(a,h,g,p),y=w.rows,v=w.cols,b=w.vals,_=[t.length,r.length],M=new u.SparseMatrix(y,v,b,_),S=u.normalize(M,"l1"),x=u.getCSR(S),C=t.length,A=E(m.reshape2d(x.indices,C,this.nNeighbors),m.reshape2d(x.values,C,this.nNeighbors),this.embedding),N=this.nEpochs?this.nEpochs/3:M.nRows<=1e4?100:30,k=M.getValues().reduce((function(t,e){return e>t?e:t}),0);M=M.map((function(t){return t<k/N?0:t})),M=u.eliminateZeros(M);var R=this.makeEpochsPerSample(M.getValues(),N),I=M.getRows(),F=M.getCols();return this.assignOptimizationStateParameters({headEmbedding:A,tailEmbedding:this.embedding,head:I,tail:F,currentEpoch:0,nEpochs:N,nVertices:M.getDims()[1],epochsPerSample:R}),this.prepareForOptimizationLoop(),this.optimizeLayout()},t.prototype.processGraphForSupervisedProjection=function(){var t=this.Y,e=this.X;if(t){if(t.length!==e.length)throw new Error("Length of X and y must be equal");if("categorical"===this.targetMetric){var r=this.targetWeight<1?1/(1-this.targetWeight)*2.5:1e12;this.graph=this.categoricalSimplicialSetIntersection(this.graph,t,r)}}},t.prototype.step=function(){var t=this.optimizationState.currentEpoch;return t<this.getNEpochs()&&this.optimizeLayoutStep(t),this.optimizationState.currentEpoch},t.prototype.getEmbedding=function(){return this.embedding},t.prototype.nearestNeighbors=function(t){var e,r=this.distanceFn,n=this.nNeighbors,i=c.makeNNDescent(r,this.random),o=5+Math.floor(.5==(e=Math.pow(t.length,.5)/20)?0:Math.round(e)),s=Math.max(5,Math.floor(Math.round(function(t){return Math.log(t)/Math.log(2)}(t.length))));this.rpForest=f.makeForest(t,n,o,this.random);var a=i(t,f.makeLeafArray(this.rpForest),n,s);return{knnIndices:a.indices,knnDistances:a.weights}},t.prototype.fuzzySimplicialSet=function(t,e,r){void 0===r&&(r=1);var n=this,i=n.knnIndices,o=void 0===i?[]:i,s=n.knnDistances,a=void 0===s?[]:s,h=n.localConnectivity,l=this.smoothKNNDistance(a,e,h),c=l.sigmas,f=l.rhos,m=this.computeMembershipStrengths(o,a,c,f),d=m.rows,g=m.cols,p=m.vals,w=[t.length,t.length],y=new u.SparseMatrix(d,g,p,w),v=u.transpose(y),b=u.pairwiseMultiply(y,v),_=u.subtract(u.add(y,v),b),M=u.multiplyScalar(_,r),S=u.multiplyScalar(b,1-r);return u.add(M,S)},t.prototype.categoricalSimplicialSetIntersection=function(t,e,r,n){void 0===n&&(n=1);var i=S(t,e,n,r);return x(i=u.eliminateZeros(i))},t.prototype.smoothKNNDistance=function(t,e,r,n,i){void 0===r&&(r=1),void 0===n&&(n=64),void 0===i&&(i=1);for(var o=Math.log(e)/Math.log(2)*i,s=m.zeros(t.length),a=m.zeros(t.length),h=0;h<t.length;h++){var l=0,u=1/0,c=1,f=t[h],d=f.filter((function(t){return t>0}));if(d.length>=r){var w=Math.floor(r),y=r-w;w>0?(s[h]=d[w-1],y>g&&(s[h]+=y*(d[w]-d[w-1]))):s[h]=y*d[0]}else d.length>0&&(s[h]=m.max(d));for(var v=0;v<n;v++){for(var b=0,_=1;_<t[h].length;_++){var M=t[h][_]-s[h];b+=M>0?Math.exp(-M/c):1}if(Math.abs(b-o)<g)break;b>o?c=(l+(u=c))/2:(l=c,u===1/0?c*=2:c=(l+u)/2)}if(a[h]=c,s[h]>0){var S=m.mean(f);a[h]<p*S&&(a[h]=p*S)}else{var x=m.mean(t.map(m.mean));a[h]<p*x&&(a[h]=p*x)}}return{sigmas:a,rhos:s}},t.prototype.computeMembershipStrengths=function(t,e,r,n){for(var i=t.length,o=t[0].length,s=m.zeros(i*o),a=m.zeros(i*o),h=m.zeros(i*o),l=0;l<i;l++)for(var u=0;u<o;u++){var c=0;-1!==t[l][u]&&(c=t[l][u]===l?0:e[l][u]-n[l]<=0?1:Math.exp(-(e[l][u]-n[l])/r[l]),s[l*o+u]=l,a[l*o+u]=t[l][u],h[l*o+u]=c)}return{rows:s,cols:a,vals:h}},t.prototype.initializeSimplicialSetEmbedding=function(){for(var t=this,e=this.getNEpochs(),r=this.nComponents,n=this.graph.getValues(),i=0,o=0;o<n.length;o++){var s=n[o];i<n[o]&&(i=s)}var a=this.graph.map((function(t){return t<i/e?0:t}));this.embedding=m.zeros(a.nRows).map((function(){return m.zeros(r).map((function(){return 20*m.tauRand(t.random)-10}))}));var h=[],l=[],u=[],c=a.getAll();for(o=0;o<c.length;o++){var f=c[o];f.value&&(h.push(f.value),u.push(f.row),l.push(f.col))}return{head:l,tail:u,epochsPerSample:this.makeEpochsPerSample(h,e)}},t.prototype.makeEpochsPerSample=function(t,e){var r=m.filled(t.length,-1),n=m.max(t),i=t.map((function(t){return t/n*e}));return i.forEach((function(t,n){t>0&&(r[n]=e/i[n])})),r},t.prototype.assignOptimizationStateParameters=function(t){Object.assign(this.optimizationState,t)},t.prototype.prepareForOptimizationLoop=function(){var t=this,e=t.repulsionStrength,r=t.learningRate,n=t.negativeSampleRate,i=this.optimizationState,o=i.epochsPerSample,a=i.headEmbedding,h=i.tailEmbedding,l=a[0].length,u=a.length===h.length,c=o.map((function(t){return t/n})),f=s(c),m=s(o);this.assignOptimizationStateParameters({epochOfNextSample:m,epochOfNextNegativeSample:f,epochsPerNegativeSample:c,moveOther:u,initialAlpha:r,alpha:r,gamma:e,dim:l})},t.prototype.initializeOptimization=function(){var t=this.embedding,e=this.embedding,r=this.optimizationState,n=r.head,i=r.tail,o=r.epochsPerSample,s=this.getNEpochs(),a=this.graph.nCols,h=M(this.spread,this.minDist),l=h.a,u=h.b;this.assignOptimizationStateParameters({headEmbedding:t,tailEmbedding:e,head:n,tail:i,epochsPerSample:o,a:l,b:u,nEpochs:s,nVertices:a})},t.prototype.optimizeLayoutStep=function(t){for(var e=this.optimizationState,r=e.head,n=e.tail,i=e.headEmbedding,o=e.tailEmbedding,s=e.epochsPerSample,a=e.epochOfNextSample,h=e.epochOfNextNegativeSample,l=e.epochsPerNegativeSample,u=e.moveOther,c=e.initialAlpha,f=e.alpha,d=e.gamma,g=e.a,p=e.b,w=e.dim,y=e.nEpochs,v=e.nVertices,M=0;M<s.length;M++)if(!(a[M]>t)){var S=r[M],x=n[M],E=i[S],C=o[x],A=_(E,C),N=0;A>0&&(N=-2*g*p*Math.pow(A,p-1),N/=g*Math.pow(A,p)+1);for(var k=0;k<w;k++){var R=b(N*(E[k]-C[k]),4);E[k]+=R*f,u&&(C[k]+=-R*f)}a[M]+=s[M];for(var I=Math.floor((t-h[M])/l[M]),F=0;F<I;F++){var D=m.tauRandInt(v,this.random),P=o[D],z=_(E,P),T=0;if(z>0)T=2*d*p,T/=(.001+z)*(g*Math.pow(z,p)+1);else if(S===D)continue;for(k=0;k<w;k++)R=4,T>0&&(R=b(T*(E[k]-P[k]),4)),E[k]+=R*f}h[M]+=I*l[M]}return e.alpha=c*(1-t/y),e.currentEpoch+=1,i},t.prototype.optimizeLayoutAsync=function(t){var e=this;return void 0===t&&(t=function(){return!0}),new Promise((function(r,o){var s=function(){return n(e,void 0,void 0,(function(){var e,n,a,h,l,u;return i(this,(function(i){try{if(e=this.optimizationState,n=e.nEpochs,a=e.currentEpoch,this.embedding=this.optimizeLayoutStep(a),h=this.optimizationState.currentEpoch,l=!1===t(h),u=h===n,l||u)return[2,r(u)];setTimeout((function(){return s()}),0)}catch(t){o(t)}return[2]}))}))};setTimeout((function(){return s()}),0)}))},t.prototype.optimizeLayout=function(t){void 0===t&&(t=function(){return!0});for(var e=!1,r=[];!e;){var n=this.optimizationState,i=n.nEpochs,o=n.currentEpoch;r=this.optimizeLayoutStep(o);var s=this.optimizationState.currentEpoch,a=!1===t(s);e=s===i||a}return r},t.prototype.getNEpochs=function(){var t=this.graph;if(this.nEpochs>0)return this.nEpochs;var e=t.nRows;return e<=2500?500:e<=5e3?400:e<=7500?300:200},t}();function y(t,e){for(var r=0,n=0;n<t.length;n++)r+=Math.pow(t[n]-e[n],2);return Math.sqrt(r)}e.UMAP=w,e.euclidean=y,e.cosine=function(t,e){for(var r=0,n=0,i=0,o=0;o<t.length;o++)r+=t[o]*e[o],n+=Math.pow(t[o],2),i+=Math.pow(e[o],2);return 0===n&&0===i?0:0===n||0===i?1:1-r/Math.sqrt(n*i)};var v=function(){this.currentEpoch=0,this.headEmbedding=[],this.tailEmbedding=[],this.head=[],this.tail=[],this.epochsPerSample=[],this.epochOfNextSample=[],this.epochOfNextNegativeSample=[],this.epochsPerNegativeSample=[],this.moveOther=!0,this.initialAlpha=1,this.alpha=1,this.gamma=1,this.a=1.5769434603113077,this.b=.8950608779109733,this.dim=2,this.nEpochs=500,this.nVertices=0};function b(t,e){return t>e?e:t<-e?-e:t}function _(t,e){for(var r=0,n=0;n<t.length;n++)r+=Math.pow(t[n]-e[n],2);return r}function M(t,e){var r=m.linear(0,3*t,300).map((function(t){return t<e?1:t})),n=m.zeros(r.length).map((function(n,i){return r[i]>=e?Math.exp(-(r[i]-e)/t):n})),i={x:r,y:n},s=d.default(i,(function(t){var e=o(t,2),r=e[0],n=e[1];return function(t){return 1/(1+r*Math.pow(t,2*n))}}),{damping:1.5,initialValues:[.5,.5],gradientDifference:.1,maxIterations:100,errorTolerance:.01}).parameterValues,a=o(s,2);return{a:a[0],b:a[1]}}function S(t,e,r,n){return void 0===r&&(r=1),void 0===n&&(n=5),t.map((function(t,i,o){return-1===e[i]||-1===e[o]?t*Math.exp(-r):e[i]!==e[o]?t*Math.exp(-n):t}))}function x(t){t=u.normalize(t,"max");var e=u.transpose(t),r=u.pairwiseMultiply(e,t);return t=u.add(t,u.subtract(e,r)),u.eliminateZeros(t)}function E(t,e,r){for(var n=m.zeros(t.length).map((function(t){return m.zeros(r[0].length)})),i=0;i<t.length;i++)for(var o=0;o<t[0].length;o++)for(var s=0;s<r[0].length;s++){var a=t[i][o];n[i][s]+=e[i][o]*r[a][s]}return n}e.findABParams=M,e.fastIntersection=S,e.resetLocalConnectivity=x,e.initTransform=E},517:function(t,e){var r=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}};function n(t,e){return Math.floor(e()*t)}function i(t){for(var e=[],r=0;r<t;r++)e.push(void 0);return e}function o(t,e){return i(t).map((function(){return e}))}function s(t){return o(t,0)}function a(t){return t.reduce((function(t,e){return t+e}))}Object.defineProperty(e,"__esModule",{value:!0}),e.tauRandInt=n,e.tauRand=function(t){return t()},e.norm=function(t){var e,n,i=0;try{for(var o=r(t),s=o.next();!s.done;s=o.next()){var a=s.value;i+=Math.pow(a,2)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}return Math.sqrt(i)},e.empty=i,e.range=function(t){return i(t).map((function(t,e){return e}))},e.filled=o,e.zeros=s,e.ones=function(t){return o(t,1)},e.linear=function(t,e,r){return i(r).map((function(n,i){return t+i*((e-t)/(r-1))}))},e.sum=a,e.mean=function(t){return a(t)/t.length},e.max=function(t){for(var e=0,r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return e},e.max2d=function(t){for(var e=0,r=0;r<t.length;r++)for(var n=0;n<t[r].length;n++)e=t[r][n]>e?t[r][n]:e;return e},e.rejectionSample=function(t,e,r){for(var i=s(t),o=0;o<t;o++)for(var a=!0;a;){for(var h=n(e,r),l=!1,u=0;u<o;u++)if(h===i[u]){l=!0;break}l||(a=!1),i[o]=h}return i},e.reshape2d=function(t,e,r){var n=[],i=0;if(t.length!==e*r)throw new Error("Array dimensions must match input length.");for(var o=0;o<e;o++){for(var s=[],a=0;a<r;a++)s.push(t[i]),i+=1;n.push(s)}return n}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}r.m=t,r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.u=t=>t+".js",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;r.g.importScripts&&(t=r.g.location+"");var e=r.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var i=n.length-1;i>-1&&!t;)t=n[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=t})(),r.b=document.baseURI||self.location.href;var n={};(()=>{r.r(n),r.d(n,{PCA:()=>Nr,PLS:()=>Fr,SPE:()=>Ir,UMAP:()=>kr,_package:()=>Er,applyLinearKernelSVM:()=>Vr,applyPolynomialKernelSVM:()=>jr,applyRBFkernelSVM:()=>Br,applySigmoidKernelSVM:()=>$r,demoMultivariateAnalysis:()=>Dr,info:()=>Cr,init:()=>Ar,tSNE:()=>Rr,testDataLinearNonSeparable:()=>zr,testDataLinearSeparable:()=>Pr,trainLinearKernelSVM:()=>Tr,trainPolynomialKernelSVM:()=>Or,trainRBFkernelSVM:()=>Lr,trainSigmoidKernelSVM:()=>qr});const t=grok,e=ui,i=DG;var o;function s(t){return e=this,r=void 0,i=function*(){yield new Promise((e=>setTimeout(e,t)))},new((n=void 0)||(n=Promise))((function(t,o){function s(t){try{h(i.next(t))}catch(t){o(t)}}function a(t){try{h(i.throw(t))}catch(t){o(t)}}function h(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(s,a)}h((i=i.apply(e,r||[])).next())}));var e,r,n,i}!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(o||(o={}));var a=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{h(n.next(t))}catch(t){o(t)}}function a(t){try{h(n.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}h((n=n.apply(t,e||[])).next())}))};class h{constructor(t,r,n=!1,i){var o;this.name="",this.description="",this._isAutomatic=!1,this._autoStartFirstStep=!1,this._currentStep=0,this._isStopped=!1,this._isCancelled=!1,this._isStepProcessed=!1,this._root=e.div([],{id:"demo-script",classes:"tutorials-root tutorials-track demo-app-script"}),this._steps=[],this._mainHeader=e.panel([],"tutorials-main-header"),this._header=e.h2(""),this._headerDiv=e.divH([],"tutorials-root-header"),this._stopStartBtn=e.button(e.iconFA("pause"),(()=>this._changeStopState()),"Play / pause"),this._restartBtn=e.button(e.iconFA("redo"),(()=>this._restartScript()),"Restart"),this._nextStepBtn=e.button(e.iconFA("play"),(()=>{this._isStepProcessed||this._nextStep()}),"Next step"),this._activity=e.panel([],"tutorials-root-description"),this._progressDiv=e.divV([],"tutorials-root-progress"),this._progress=e.element("progress"),this._progressSteps=e.divText(""),this._closeBtn=e.button(e.iconFA("chevron-left"),(()=>this._closeDock()),"Back to demo"),this.name=t,this.description=r,this._isAutomatic=n,this._autoStartFirstStep=null!==(o=null==i?void 0:i.autoStartFirstStep)&&void 0!==o&&o,this._progress.max=0,this._progress.value=1,h.currentObject=this}get steps(){return this._steps}get stepNumber(){return this._steps.length}_addHeader(){this._createHeaderDiv(),this._createProgressDiv(),this._mainHeader.append(this._headerDiv,this._progressDiv)}_createHeaderDiv(){this._header.innerText=this.name,this._headerDiv.append(this._closeBtn),this._headerDiv.append(this._header),this._nextStepBtn.firstChild.className="grok-icon fas fa-play",this._headerDiv.append(this._isAutomatic?this._stopStartBtn:this._nextStepBtn)}_createProgressDiv(){this._progress.max=this.stepNumber,this._progressDiv.append(this._progress),this._progressSteps=e.divText(`Step: ${this._progress.value} of ${this.stepNumber}`),this._progressDiv.append(this._progressSteps)}_addDescription(){var t;this._activity.append(e.div(this.description,"tutorials-root-description"));for(let r=0;r<this.stepNumber;r++){let n=e.iconFA("clock");this._isAutomatic||0===r&&(n=e.iconFA("play",(()=>this._nextStep()),"Next step"),n.className="grok-icon fas fa-play");const i=e.div(this._steps[r].name,"grok-tutorial-entry-instruction"),o=e.div(null===(t=this._steps[r].options)||void 0===t?void 0:t.description,"grok-tutorial-step-description hidden"),s=e.divH([n,i],"grok-tutorial-entry");this._activity.append(s,o)}}_initRoot(){var e,r,n;t.shell.windows.showContextPanel=!0,t.shell.windows.showHelp=!1;const o=Array.from(t.shell.dockManager.rootNode.children)[0];this._node=t.shell.dockManager.dock(this._root,i.DOCK_TYPE.FILL,o,""),(null===(r=null===(e=o.parent.container.containerElement.firstElementChild)||void 0===e?void 0:e.lastElementChild)||void 0===r?void 0:r.classList.contains("tab-handle-list-container"))&&(null===(n=o.parent.container.containerElement.firstElementChild)||void 0===n||n.lastElementChild.remove()),this._node.container.containerElement.classList.add("tutorials-demo-script-container"),this._addHeader(),this._root.append(this._mainHeader),this._addDescription(),this._root.append(this._activity)}_nextStep(){var t,r;return a(this,void 0,void 0,(function*(){this._isStepProcessed=!0,this._isAutomatic||(this._nextStepBtn.classList.add("disabled"),this._nextStepBtn.firstChild.classList.add("fa-disabled"));const n=this._activity.getElementsByClassName("grok-tutorial-entry")[this._currentStep],i=this._activity.getElementsByClassName("grok-icon")[this._currentStep],o=this._activity.getElementsByClassName("grok-tutorial-step-description")[this._currentStep];i.className="grok-icon far fa-spinner-third fa-spin",o.classList.remove("hidden"),o.classList.add("visible");const a=n,h=(null===(t=this._steps[this._currentStep].options)||void 0===t?void 0:t.delay)?null===(r=this._steps[this._currentStep].options)||void 0===r?void 0:r.delay:2e3;yield this._steps[this._currentStep].func(),this._scrollTo(this._root,a.offsetTop-this._mainHeader.offsetHeight),this._isAutomatic&&(yield this._countdown(n,i,h),yield s(h));const l=e.iconFA("check");if(i.replaceWith(l),l.className="grok-icon far fa-check",this._progress.value++,this._progressSteps.innerText=`Step: ${this._progress.value} of ${this.stepNumber}`,this._currentStep++,this._isStepProcessed=!1,this._currentStep!==this.stepNumber){if(!this._isAutomatic){const t=this._activity.getElementsByClassName("grok-icon")[this._currentStep],r=e.iconFA("play",(()=>this._nextStep()),"Next step");r.className="grok-icon fas fa-play",t.replaceWith(r),this._nextStepBtn.classList.remove("disabled"),this._nextStepBtn.firstChild.classList.remove("fa-disabled")}}else this._isAutomatic?this._stopStartBtn.replaceWith(this._restartBtn):this._nextStepBtn.replaceWith(this._restartBtn)}))}_startScript(){return a(this,void 0,void 0,(function*(){for(let t=this._currentStep;t<this.stepNumber&&!this._isStopped&&!this._isCancelled;t++)yield this._nextStep()}))}_scrollTo(t,e){t.focus(),t.scrollTop=e}_countdown(t,r,n){return a(this,void 0,void 0,(function*(){const i=e.div([],"demo-script-countdown");r.classList.add("hidden");let o=n/1e3;const s=this._createSVGIndicator(o);i.append(s),t.prepend(i);const a=setInterval((()=>{o--,0===o&&(clearInterval(a),i.remove(),r.classList.remove("hidden"),r.classList.add("visible"))}),1e3)}))}_createSVGIndicator(t){const e=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=document.createElementNS("http://www.w3.org/2000/svg","circle");return r.setAttributeNS(null,"cx","7"),r.setAttributeNS(null,"cy","7"),r.setAttributeNS(null,"r","6"),r.setAttributeNS(null,"style",`animation: countdown ${t}s linear infinite forwards`),e.append(r),e}_changeStopState(){const t=this._stopStartBtn.getElementsByClassName("grok-icon");t[0].className="grok-icon fas fa-play",this._isStopped=!this._isStopped,this._isStopped||(t[0].className="grok-icon fal fa-pause",this._isStepProcessed||this._startScript())}_restartScript(){t.shell.dockManager.close(this._node),t.shell.closeAll(),this._clearRoot(),this._setInitParams(),this.start()}_clearRoot(){this._root=e.div([],{id:"demo-script",classes:"tutorials-root tutorials-track demo-app-script"}),this._mainHeader=e.panel([],"tutorials-main-header"),this._header=e.h2(""),this._headerDiv=e.divH([],"tutorials-root-header"),this._activity=e.panel([],"tutorials-root-description"),this._progressDiv=e.divV([],"tutorials-root-progress"),this._progress=e.element("progress"),this._progressSteps=e.divText(""),this._progress.max=0,this._progress.value=1}_setInitParams(){this._currentStep=0,this._isStopped=!1,this._isCancelled=!1,this._stopStartBtn.getElementsByClassName("grok-icon")[0].className="grok-icon fal fa-pause",this._nextStepBtn.classList.remove("disabled")}_closeDock(){t.shell.dockManager.close(this._node),this.cancelScript()}cancelScript(){this._isCancelled=!0,h.currentObject=null}step(t,e,r){return this._steps[this.steps.length]={name:t,func:e,options:r},this}start(){return a(this,void 0,void 0,(function*(){this._initRoot(),t.shell.newView(this.name),this._isAutomatic?this._startScript():this._autoStartFirstStep&&(yield this._nextStep())}))}}h.currentObject=null,Int32Array,Float32Array,DG.Column.fromInt32Array,DG.Column.fromFloat32Array;const l="num",u="floatColumn",c="intColumn",f="floatColumns",m="newFloatColumns",d="intColumns",g="newIntColumns",p="newFloatColumn",w="newIntColumn",y="column",v="_callResult",b="numOfRows",_="numOfColumns",M="ref",S="value",x="tableFromColumns",E="objects",C="int",A="double",N={intColumn:Int32Array,floatColumn:Float32Array,floatColumns:Float32Array,newFloatColumns:Float32Array,intColumns:Int32Array,newIntColumns:Int32Array,newFloatColumn:Float32Array,newIntColumn:Int32Array};function k(t,e){let r,n=[],i=0;for(const o in t){const s=t[o],a=s.type;if(o!==v){switch(a){case l:case C:case A:s.data=e[i],i++;break;case c:case u:let n,o=e[i];n=o.type===C&&a===c||o.type===A&&a===u?o.getRawData():new N[a](o.getRawData()),s.data={array:n,numOfRows:n.length},i++;break;case w:case p:let h=0;r=s[b][M],h=t[r].type===l?t[r].data:t[r].data[s[b][S]],s.data={numOfRows:h},i++;break;case d:case f:let y=[];for(let t of e[i].toList())t.type===C&&a===c||t.type===A&&a===u?y.push(t.getRawData()):y.push(new N[a](t.getRawData()));s.data={arrays:y,numOfRows:y[0].length,numOfColumns:y.length},i++;break;case g:case m:let v=0,x=0;r=s[b][M],v=t[r].type===l?t[r].data:t[r].data[s[b][S]],r=s[_][M],x=t[r].type===l?t[r].data:t[r].data[s[_][S]],s.data={numOfRows:v,numOfColumns:x},i++;break;default:return}n.push(s)}}return n}function R(t,e){t.arguments._callResult=e.callResult,function(t,e){const r={newFloatColumns:DG.Column.fromFloat32Array,newIntColumns:DG.Column.fromInt32Array,newFloatColumn:DG.Column.fromFloat32Array,newIntColumn:DG.Column.fromInt32Array};let n=0;for(const i in t){const o=t[i];switch(o.type){case l:case C:case A:case c:case u:case f:case d:break;case p:case w:let t;null==o.name?t=(0).toString():a=o.name,o.column=r[o.type](t,e[n].array);break;case g:case m:let i=[],s=e[n].arrays.length,a=[];if(null==o.names)for(let t=1;t<=s;t++)a.push(t.toString());else a=o.names;for(let t=0;t<s;t++)i.push(r[o.type](a[t],e[n].arrays[t]));o.columns=i}n++}}(t.arguments,e.args);let r=function(t){let e=t.output;const r={newFloatColumns:"columns",newIntColumns:"columns",newFloatColumn:"column",newIntColumn:"column"};switch(e.type){case l:case C:case A:return t.arguments[e.source];case y:return t.arguments[e.source].column;case x:return DG.DataFrame.fromColumns(t.arguments[e.source].columns);case E:let n=[];for(let i of e.source){let e=t.arguments[i];n.push(e[r[e.type]])}return n}}(t);return function(t){for(const e in t){const r=t[e];switch(r.type){case l:case C:case A:case c:case u:case d:case f:break;case w:case p:r.column=null;break;case g:case m:r.columns=null}}}(t.arguments),r}var I=r(221),F=r(659);class D extends Float32Array{}function P(t){return Math.random()*t}function z(t){return Math.floor(P(t))}function T(t=!1,e="Assertion error."){if(!t)throw new Error(e)}function V(t,e,r=1){const n=t.length;T(n==e.length,"Vector lengths do not match.");const i=new D(n);for(let n=0;n<t.length;++n)i[n]=t[n]+r*e[n];return i}function L(t,e,r=1){const n=function(t,e,r=0){return new Array(t).fill(r).map((()=>new D(e).fill(r)))}(t,e);for(let i=0;i<t;++i)for(let t=0;t<e;++t)n[i][t]=P(r);return n}function B(t,e){const r=function(t){let e=0;for(let r=0;r<t.length;++r)e+=t[r];return e}(function(t){const e=t.length,r=new D(e);for(let e=0;e<t.length;++e)r[e]=t[e]*t[e];return r}(V(t,e,-1)));return Math.sqrt(r)}function O(t){return(e,r)=>t*e+r-Math.floor((e+2)*(e+1)/2)}class j{constructor(t=!0,e=!0){const n=navigator.hardwareConcurrency;this._workerCount=t?Math.max(n-2,1):1,this._workers=new Array(this._workerCount).fill(null).map((()=>new Worker(new URL(r.p+r.u(80),r.b)))),this._terminateOnComplete=e}async calc(t,e,r=!0){return new Promise((async(n,i)=>{try{const i=t.length,o=new Array(this._workerCount),s=i*(i-1)/2;this._workerCount=Math.min(this._workerCount,s);const a=s/this._workerCount,h=new Float32Array(s);let l=0,u=1,c=0,f=Number.MIN_VALUE;for(let r=0;r<this._workerCount;r++){const n=Math.floor(r*a),m=r===this._workerCount-1?s:Math.floor((r+1)*a),d=l,g=u;r!==this._workerCount-1&&(l=i-2-Math.floor(Math.sqrt(-8*m+4*i*(i-1)-7)/2-.5),u=m-i*l+Math.floor((l+1)*(l+2)/2)),this._workers[r].postMessage({values:t,fnName:e,startRow:d,startCol:g,chunckSize:m-n}),o[r]=new Promise(((t,e)=>{this._workers[r].onmessage=({data:{error:i,distanceMatrixData:o,min:s,max:a}})=>{this._terminateOnComplete&&this._workers[r].terminate(),i?e(i):(h.set(o,n),s<c&&(c=s),a>f&&(f=a),t())}}))}await Promise.all(o),r&&h.forEach(((t,e)=>{h[e]=(t-c)/(f-c)})),n(h)}catch(t){i(t)}}))}terminate(){this._workers.forEach((t=>t.terminate()))}}class q{constructor(t){this.steps=t?.steps??0,this.cycles=t?.cycles??1e6,this.cutoff=t?.cutoff??0,this.lambda=t?.lambda??2,this.dlambda=t?.dlambda??.01,this.lambda2=this.lambda/2,this.dlambda2=this.dlambda/2,this.epsilon=t?.epsilon??1e-10,this.distanceFunction=t?.distance??B,this.distance=new Float32Array,this.distanceFunctionName=t?.distanceFunctionName}async initDistance(t){this.dmIndexFunct=O(t.length);const e=new j(!0,!1);this.distance=await e.calc(t,this.distanceFunctionName),e.terminate()}calcDistance(t,e,r){return this.distance[this.dmIndexFunct(e,r)]}async embed(t){const e=t.length,r=L(e,q.dimension,40);let n=this.lambda2;0===this.steps&&(this.steps=t.length-1),await this.initDistance(t);for(let i=0;i<this.cycles;++i){for(let i=0;i<this.steps;++i){const i=z(e);let o=z(e);for(;i==o;)o=z(e);const s=r[i],a=r[o],h=this.calcDistance(t,i,o),l=B(s,a);if(0==this.cutoff||h<=this.cutoff||l<h){const t=n*(h-l)/(l+this.epsilon),e=V(s,a,-1);r[i]=V(s,e,t),r[o]=V(a,e,-t)}}if(n-=this.dlambda2,n<=0)break}return r}}q.dimension=2;class $ extends q{async embed(t){const e=t.length,r=L(e,$.dimension,40);let n=this.lambda;await this.initDistance(t);for(let i=0;i<this.cycles;++i){const i=z(e),o=r[i];for(let s=0;s<e;++s){if(i==s)continue;const e=r[s],a=this.calcDistance(t,i,s),h=B(o,e);if(0==this.cutoff||a<=this.cutoff||h<a){const t=n*(a-h)/(h+this.epsilon),i=V(o,e,-1);r[s]=V(e,i,-t)}}if(n-=this.dlambda,n<=0)break}return r}}class W extends q{constructor(t){super(t),this.cycles=t?.cycles??1e3,this.steps=t?.steps??1e5,this.radiusPercent=t?.radiusPercent??1,this.maxDistance=t?.maxDistance??null,this.maxDistanceSteps=t?.maxDistanceSteps??null}async embed(t){const e=t.length,r=L(e,W.dimension,40);if(await this.initDistance(t),null===this.maxDistanceSteps&&(this.maxDistanceSteps=e*Math.floor((e-1)/2)),null===this.maxDistance){this.maxDistance=-1e37;for(let r=0;r<this.maxDistanceSteps;r++){const r=z(e);let n=z(e);for(;r==n;)n=z(e);const i=this.calcDistance(t,r,n);i>this.maxDistance&&(this.maxDistance=i)}}let n=this.lambda;const i=0==this.radiusPercent?this.maxDistance:this.maxDistance*this.radiusPercent;for(let o=0;o<this.cycles;++o){for(let o=0;o<this.steps;++o){const o=z(e);let s=z(e);for(;o==s;)s=z(e);const a=r[o],h=r[s],l=this.calcDistance(t,o,s),u=B(a,h);if(l<=i||u<l){const t=.5*n*(l-u)/(u+this.epsilon),e=V(a,h,-1);r[o]=V(a,e,t),r[s]=V(h,e,-t)}}if(n-=(this.lambda-this.dlambda)/(this.cycles-1),n<this.dlambda)break}return r}}const U=new Uint32Array(65536),H=(t,e)=>{if(t.length<e.length){const r=e;e=t,t=r}return 0===e.length?t.length:t.length<=32?((t,e)=>{const r=t.length,n=e.length,i=1<<r-1;let o=-1,s=0,a=r,h=r;for(;h--;)U[t.charCodeAt(h)]|=1<<h;for(h=0;h<n;h++){let t=U[e.charCodeAt(h)];const r=t|s;t|=(t&o)+o^o,s|=~(t|o),o&=t,s&i&&a++,o&i&&a--,s=s<<1|1,o=o<<1|~(r|s),s&=r}for(h=r;h--;)U[t.charCodeAt(h)]=0;return a})(t,e):((t,e)=>{const r=e.length,n=t.length,i=[],o=[],s=Math.ceil(r/32),a=Math.ceil(n/32);for(let t=0;t<s;t++)o[t]=-1,i[t]=0;let h=0;for(;h<a-1;h++){let s=0,a=-1;const l=32*h,u=Math.min(32,n)+l;for(let e=l;e<u;e++)U[t.charCodeAt(e)]|=1<<e;for(let t=0;t<r;t++){const r=U[e.charCodeAt(t)],n=o[t/32|0]>>>t&1,h=i[t/32|0]>>>t&1,l=r|s,u=((r|h)&a)+a^a|r|h;let c=s|~(u|a),f=a&u;c>>>31^n&&(o[t/32|0]^=1<<t),f>>>31^h&&(i[t/32|0]^=1<<t),c=c<<1|n,f=f<<1|h,a=f|~(l|c),s=c&l}for(let e=l;e<u;e++)U[t.charCodeAt(e)]=0}let l=0,u=-1;const c=32*h,f=Math.min(32,n-c)+c;for(let e=c;e<f;e++)U[t.charCodeAt(e)]|=1<<e;let m=n;for(let t=0;t<r;t++){const r=U[e.charCodeAt(t)],s=o[t/32|0]>>>t&1,a=i[t/32|0]>>>t&1,h=r|l,c=((r|a)&u)+u^u|r|a;let f=l|~(c|u),d=u&c;m+=f>>>n-1&1,m-=d>>>n-1&1,f>>>31^s&&(o[t/32|0]^=1<<t),d>>>31^a&&(i[t/32|0]^=1<<t),f=f<<1|s,d=d<<1|a,u=d|~(h|f),l=f&h}for(let e=c;e<f;e++)U[t.charCodeAt(e)]=0;return m})(t,e)};var G,K,Y,J,X,Q=r(979);function Z(t){return 1/t-1}!function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan"}(G||(G={})),function(t){t.Euclidean="Euclidean"}(K||(K={})),function(t){t.Tanimoto="Tanimoto",t.Dice="Dice",t.Asymmetric="Asymmetric",t.BraunBlanquet="Braun-Blanquet",t.Cosine="Cosine",t.Kulczynski="Kulczynski",t.McConnaughey="Mc-Connaughey",t.RogotGoldberg="Rogot-Goldberg",t.Russel="Russel",t.Sokal="Sokal",t.Hamming="Hamming",t.Euclidean="Euclidean"}(Y||(Y={})),function(t){t.Vector="Vector",t.String="String",t.BitArray="BitArray",t.MacroMolecule="MacroMolecule",t.Number="Number"}(J||(J={})),function(t){t.NumericDistance="NumericDistance"}(X||(X={})),Y.Tanimoto,Y.Dice,Y.Asymmetric,Y.BraunBlanquet,Y.Cosine,Y.Kulczynski,Y.McConnaughey,Y.RogotGoldberg,Y.Russel,Y.Sokal,Y.Hamming,Y.Euclidean,Y.Tanimoto,Y.Dice,Y.Asymmetric,Y.BraunBlanquet,Y.Cosine,Y.Kulczynski,Y.McConnaughey,Y.RogotGoldberg,Y.Russel,Y.Sokal,Y.Hamming,Y.Euclidean,Y.Tanimoto,Y.Dice,Y.Cosine,Y.Tanimoto,Y.Asymmetric,Y.Cosine,Y.Sokal;const tt={gapOpen:8,gapExtend:2,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};var et;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch"}(et||(et={}));const rt={[et.HAMMING]:function(){return(t,e)=>{let r=0;t.length!==e.length&&(r=Math.abs(t.length-e.length));let n=0;for(let r=0;r<Math.min(t.length,e.length);r++)t[r]!==e[r]&&n++;return n+=r,n/=Math.max(t.length,e.length),n}},[et.LEVENSHTEIN]:function(){return(t,e)=>H(t,e)/Math.max(t.length,e.length)},[et.NEEDLEMANN_WUNSCH]:function(t){return(e,r)=>{const{gapOpen:n,gapExtend:i,scoringMatrix:o,alphabetIndexes:s}={...tt,...t},a=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)],h=new Array(e.length+1).fill(!1),l=new Array(e.length+1).fill(!1);let u=0,c=1;for(let t=1;t<e.length+1;t++)a[0][t]=-n-(t-1)*i;for(let t=1;t<r.length+1;t++){a[c][0]=-n-(t-1)*i;for(let f=1;f<e.length+1;f++){const m=a[u][f-1]+o[s[e[f-1]]][s[r[t-1]]],d=a[u][f]-(h[f]?i:n),g=a[c][f-1]-(l[f-1]?i:n);a[c][f]=Math.max(m,g,d),a[c][f]===m?(h[f]=!1,l[f]=!1):a[c][f]===g?(h[f]=!1,l[f]=!0):(h[f]=!0,l[f]=!1)}u=c,c=(c+1)%2}const f=e.split("").map((t=>o[s[t]][s[t]])).reduce(((t,e)=>t+e),0),m=r.split("").map((t=>o[s[t]][s[t]])).reduce(((t,e)=>t+e),0),d=Math.max(f,m);return(d-a[u][e.length])/d}}},nt={[K.Euclidean]:B},it={[G.Levenshtein]:H,[G.JaroWinkler]:Q.H$,[G.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let r=0;for(let n=1;n<t.length;n++)r+=t[n]==e[n]?0:1;return r/t.length}}},ot={[Y.Tanimoto]:function(t,e){return Z(function(t,e){const r=t.trueCount()+e.trueCount();if(0==r)return 1;const n=t.andWithCountBits(e,!0);return n/(r-n)}(t,e))},[Y.Dice]:function(t,e){return Z(function(t,e){const r=t.trueCount()+e.trueCount();return 0==r?0:2*t.andWithCountBits(e,!0)/r}(t,e))},[Y.Asymmetric]:function(t,e){return Z(function(t,e){const r=Math.min(t.trueCount(),e.trueCount());return 0==r?0:t.andWithCountBits(e,!0)/r}(t,e))},[Y.BraunBlanquet]:function(t,e){return Z(function(t,e){const r=Math.max(t.trueCount(),e.trueCount());return 0==r?0:t.andWithCountBits(e,!0)/r}(t,e))},[Y.Cosine]:function(t,e){return Z(function(t,e){const r=t.trueCount()*e.trueCount();return 0==r?0:t.andWithCountBits(e,!0)/Math.sqrt(r)}(t,e))},[Y.Kulczynski]:function(t,e){return Z(function(t,e){const r=t.trueCount()+e.trueCount(),n=t.trueCount()*e.trueCount();return 0==n?0:t.andWithCountBits(e,!0)*r/(2*n)}(t,e))},[Y.McConnaughey]:function(t,e){return Z(function(t,e){const r=t.trueCount()+e.trueCount(),n=t.trueCount()*e.trueCount();return 0==n?0:(t.andWithCountBits(e,!0)*r-n)/n}(t,e))},[Y.RogotGoldberg]:function(t,e){return Z(function(t,e){const r=t.andWithCountBits(e,!0),n=t.countBits(!0)+e.countBits(!0),i=t.length,o=i-n+r;return r==i||o==i?1:r/n+o/(2*i-n)}(t,e))},[Y.Russel]:function(t,e){return Z(function(t,e){return 0==t.length?0:t.andWithCountBits(e,!0)/t.length}(t,e))},[Y.Sokal]:function(t,e){return Z(function(t,e){const r=t.trueCount()+e.trueCount(),n=t.andWithCountBits(e,!0);return n/(2*r-3*n)}(t,e))},[Y.Hamming]:function(t,e){return t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0)},[Y.Euclidean]:function(t,e){return Math.sqrt(t.trueCount()+e.trueCount()-2*t.andWithCountBits(e,!0))}},st={[X.NumericDistance]:function(t,e){return Math.abs(t-e)}},at={[J.Vector]:{[K.Euclidean]:nt[K.Euclidean]},[J.String]:{[G.Levenshtein]:it[G.Levenshtein],[G.JaroWinkler]:it[G.JaroWinkler],[G.Manhattan]:it[G.Manhattan]},[J.BitArray]:{[Y.Tanimoto]:ot[Y.Tanimoto],[Y.Dice]:ot[Y.Dice],[Y.Asymmetric]:ot[Y.Asymmetric],[Y.BraunBlanquet]:ot[Y.BraunBlanquet],[Y.Cosine]:ot[Y.Cosine],[Y.Kulczynski]:ot[Y.Kulczynski],[Y.McConnaughey]:ot[Y.McConnaughey],[Y.RogotGoldberg]:ot[Y.RogotGoldberg],[Y.Russel]:ot[Y.Russel],[Y.Sokal]:ot[Y.Sokal]},[J.MacroMolecule]:{[et.HAMMING]:rt[et.HAMMING],[et.LEVENSHTEIN]:rt[et.LEVENSHTEIN],[et.NEEDLEMANN_WUNSCH]:rt[et.NEEDLEMANN_WUNSCH]},[J.Number]:{[X.NumericDistance]:st[X.NumericDistance]}},ht=Object.keys(at).reduce(((t,e)=>{for(const r of Object.keys(at[e]))t[r]=e;return t}),{});class lt{constructor(t){this.method=t,this.dataType=ht[t]}getMeasure(t){const e=at;if(!e.hasOwnProperty(this.dataType)||!e[this.dataType].hasOwnProperty(this.method))throw new Error(`Unknown measure ${this.method} for data type ${this.dataType}`);return r=this.method,ht[r]==J.MacroMolecule.toString()?e[this.dataType][this.method](t):e[this.dataType][this.method];var r}static getMetricByDataType(t){return Object.keys(at[t])}static get availableMeasures(){return Object.keys(at)}}class ut{constructor(t,e=!1){if(this._length=0,this._version=0,this._updateLevel=0,this._selectedCount=0,this._selectedCountVersion=-1,this._selectedIndexesVersion=-1,this._versionedName="",this._versionedNameVersion=-1,this.SHRINK_THRESHOLD=256,"number"==typeof t){const r=t,n=ut._createBuffer(r);if(e)for(let t=0;t<n.length;t++)n[t]=-1;this._data=n,this._length=r}else{if(!(t instanceof Uint32Array))throw new Error("Invalid constructor");this._data=t,this._length=e}}getRawData(){return this._data}assureGoez(t,e){if(t<0)throw new Error(`${e} should be greater than zero`)}assureInRange(t,e,r,n){if(t<e||t>r)throw new Error(`Argument ${n} (${t}) out of range (${e}, ${r})`)}copy(t,e,r){for(let n=0;n<r;n++)e[n]=t[n]}copyFrom(t){if(this._length!=t._length)throw new Error(`Lengths differ (${this._length} != ${t._length})`);this.copy(t._data,this._data,this.lengthInInts),this._version++}get length(){return this._length}get buffer(){return this._data}set buffer(t){this._data=t,this._version++}get version(){return this._version}set version(t){this._version=t}incrementVersion(t=!0){this._version++}get lengthInInts(){return Math.floor((this._length+31)/32)}get versionedName(){return this._version==this._versionedNameVersion?this._versionedName:""}set versionedName(t){this._versionedName=t,this._versionedNameVersion=this._version}get self(){return this}setLength(t){if(t<0)throw new Error("should be >= 0");if(t==this._length)return;const e=Math.floor((t+31)/32);if(e>this._data.length||e+this.SHRINK_THRESHOLD<this._data.length){const t=new Uint32Array(e);this.copy(this._data,t,e>this._data.length?this._data.length:e),this._data=t}t>this._length&&(this._length%32>0&&(this._data[this.lengthInInts-1]&=(1<<(this._length%32&31))-1),this._data.fill(0,this.lengthInInts,e)),this._length=t,this._version++}static fromAnd(t,e){if(t._length!=e._length)throw new Error(`Lengths differ (${t._length} != ${e._length})`);const r=new ut(t._length);r._length=t._length,r._data=ut._createBuffer(r._length),r._version=0;const n=t.lengthInInts;for(let i=0;i<n;i++)r._data[i]=t._data[i]&e._data[i];return r}static _createBuffer(t){return new Uint32Array(Math.floor((t+31)/32))}static fromValues(t){const e=new ut(t.length);e._version=0;for(let r=0;r<e._length;r++)t[r]&&(e._data[Math.floor(r/32)]|=1<<(r%32&31));return e}static fromSeq(t,e){const r=new ut(t);for(let n=0;n<t;++n)r.setBit(n,e(n));return r._version=0,r}static fromString(t){return ut.fromSeq(t.length,(e=>"1"==t.charAt(e)))}static fromUint32Array(t,e){const r=new ut(t);return r._data=e,r}static fromBytes(t){const e=t.length,r=new ut(8*e);r._data=new Uint32Array(Math.floor((e+3)/4)),r._length=8*e;let n=0,i=0;for(;e-i>=4;)r._data[n++]=255&t[i]|(255&t[i+1])<<8|(255&t[i+2])<<16|(255&t[i+3])<<24,i+=4;return e-i==3&&(r._data[n]=(255&t[i+2])<<16),e-i==2&&(r._data[n]|=(255&t[i+1])<<8),e-i==1&&(r._data[n]|=255&t[i]),r._version=0,r}toString(){return`${this._length} bits, ${this.countBits(!0)} set`}equals(t){if(this==t)return!0;if(null==t)return!1;if(this._length!=t._length)return!1;if(0==this._length)return!0;for(let e=0;e<this._data.length-1;e++)if(this._data[e]!=t._data[e])return!1;for(let e=8*(this._data.length-1);e<this._length;e++)if(this.getBit(e)!=t.getBit(e))return!1;return!0}clone(){const t=new ut(0,!1);return t._data=Uint32Array.from(this._data),t._length=this._length,t._version=this._version,t}init(t,e){this.setAll(!1,!1);for(let e=0;e<this._length;e++)t(e)&&(this._data[Math.floor(e/32)]|=1<<(e%32&31));return this.incrementVersion(e),this}invert(t=!0){for(let t=0;t<this._data.length;t++)this._data[t]^=-1;this.incrementVersion(t)}setAll(t,e=!1){const r=t?-1:0,n=this.lengthInInts;for(let t=0;t<n;t++)this._data[t]=r;this.incrementVersion(e)}setIndexes(t,e=!0,r=!0,n=!0){r&&this.setAll(!e,!1);for(const r of t)this.setFast(r,e);this.incrementVersion(n)}everyIndex(t,e=!0){for(const r of t)if(this.getBit(r)!=e)return!1;return!0}anyIndex(t,e=!0){for(const r of t)if(this.getBit(r)==e)return!0;return!1}setWhere(t,e=!0,r=!0,n=!0,i=!0){if(r&&i&&this.setAll(!e,!1),i)for(let r=0;r<this._length;r++)t(r)&&this.setFast(r,e);else for(let r=0;r<this._length;r++)this.setFast(r,t(r)?e:!e);this.incrementVersion(n)}getRange(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const r=[];for(let n=t;n<e;++n)r.push(this.getBit(n));return ut.fromValues(r)}getRangeAsList(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const r=[];for(let n=t;n<e;++n)r.push(this.getBit(n));return r}setRange(t,e,r,n=!0){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length-1,"to");const i=Math.min(t,e),o=Math.max(t,e);if(r)for(let t=i;t<=o;t++)this.setTrue(t);else for(let t=i;t<=o;t++)this.setFalse(t);return this.incrementVersion(n),this}setRandom(t,e,r=!0){if(t<0||t>this._length)throw new Error("n must be >= 0 && <= Count");t>this._length/2&&this.setRandom(this._length-t,!e),this.setAll(!e);for(let r=0;r<t;){const t=Math.floor(Math.random()*this._length);this.getBit(t)!=e&&(this.setFast(t,e),r++)}this.incrementVersion(r)}and(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]&=t._data[e];return this.incrementVersion(e),this}andNot(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");const r=this.lengthInInts;for(let e=0;e<r;e++)this._data[e]&=~t._data[e];return this.incrementVersion(e),this}notAnd(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]=~this._data[e]&t._data[e];return this.incrementVersion(e),this}not(t=!0){for(let t=0,e=this.lengthInInts;t<e;t++)this._data[t]=~this._data[t];return this.incrementVersion(t),this}or(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]|=t._data[e];return this.incrementVersion(e),this}xor(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]^=t._data[e];return this.incrementVersion(e),this}insertAt(t,e,r=!1){if(this.assureInRange(t,0,this._length,"pos"),0==e)return;const n=this._length;this.setLength(this._length+e);for(let r=n-1;r>=t;r--)this.setBit(r+e,this.getBit(r));for(let n=t;n<t+e;n++)this.setBit(n,r)}removeAt(t,e=1){if(e<0)throw new Error("n cannot be negative");if(this.assureInRange(t,0,this._length-e,"pos"),this.contains(!0))for(let r=t;r<this._length-e;r++)this.setBit(r,this.getBit(r+e));this.setLength(this._length-e)}removeByMask(t,e=!0){if(this._length!=t.length)throw new Error("length != mask.length");if(t==this)this.setLength(t.countBits(!e)),this.setAll(!e);else{let r=0;for(let n=-1;-1!=(n=t.findNext(n,!e));)this.setFast(r++,this.getBit(n));this._length=r,this._version++}return this}getBit(t){return 0!=(this._data[Math.floor(t/32)]&1<<(31&t))}setBit(t,e,r=!0){this.setFast(t,e),this._version++}setFast(t,e){e?this._data[Math.floor(t/32)]|=1<<(31&t):this._data[Math.floor(t/32)]&=~(1<<(31&t))}setTrue(t){this._data[Math.floor(t/32)]|=1<<(31&t)}setFalse(t){this._data[Math.floor(t/32)]&=~(1<<(31&t))}trueCount(){return this.countBits(!0)}falseCount(){return this.countBits(!1)}countBits(t){if(0==this._length)return 0;if(this._selectedCountVersion!=this._version){this._selectedCount=0;const t=this.lengthInInts;let e=0;for(;e<t-1;e++)for(let t=this._data[e];0!=t;t>>>=8)this._selectedCount+=ut._onBitCount[255&t];let r=this._data[e];const n=31&this._length;for(0!=n&&(r&=~(4294967295<<n));0!=r;r>>>=8)this._selectedCount+=ut._onBitCount[255&r];this._selectedCountVersion=this._version}return t?this._selectedCount:this._length-this._selectedCount}countWhere(t){let e=0;if(this.trueCount()==this._length)for(let r=0;r<this._length;r++)e+=t(r)?1:0;else for(let r=-1;-1!=(r=this.findNext(r,!0));)e+=t(r)?1:0;return e}andWithCountBits(t,e){if(0==this._length)return 0;let r=0;const n=this.lengthInInts;let i=0;for(;i<n-1;i++)for(let e=this._data[i]&t._data[i];0!=e;e>>>=8)r+=ut._onBitCount[255&e];let o=this._data[i]&t._data[i];const s=31&this._length;for(0!=s&&(o&=~(4294967295<<s));0!=o;o>>>=8)r+=ut._onBitCount[255&o];return e?r:this._length-r}clear(){this.setLength(0)}contains(t){return this.findNext(-1,t)>=0}get allTrue(){return this.countBits(!0)==this._length}get allFalse(){return this.countBits(!1)==this._length}get anyTrue(){return this.countBits(!0)>0}get anyFalse(){return this.countBits(!1)>0}findNext(t,e=!0){if(this.assureInRange(t,-1,this._length,"index"),t>=this._length-1)return-1;let r=31&(t=t<0?0:t+1);const n=this.lengthInInts;for(let i=Math.floor(t/32);i<n;i++){let n=e?this._data[i]:~this._data[i];if(0!=r)n&=4294967295<<r&4294967295,r=0;else if(!e&&-4294967296==n)continue;for(let e=0;0!=n;e+=8,n>>>=8){const r=ut._firstOnBit[255&n];if(r>=0)return(t=r+32*i+e)>=this._length?-1:t}}return-1}findPrev(t,e=!0){if(0==t)return-1;this.assureInRange(t,-1,this._length,"index");let r=1+(t=t<0?this._length-1:t-1)&31;for(let n=Math.floor(t/32);n>=0;n--){let t=e?this._data[n]:~this._data[n];0!=r&&(t&=~(4294967295<<r),r=0);for(let e=24;0!=t;e-=8,t<<=8){const r=ut._lastOnBit[t>>>24];if(r>=0)return r+32*n+e}}return-1}}ut._onBitCount=Int8Array.from([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]),ut._firstOnBit=Int8Array.from([-1,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]),ut._lastOnBit=Int8Array.from([-1,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]);const ct=t=>null==t;class ft{get data(){return this._data}get size(){return this._size}constructor(t,e){if(null==e){if(null==t)throw new Error("Arguments error: data or size is required.");if(this._data=t,this._size=(1+Math.sqrt(1+8*this._data.length))/2,this._size!=Math.floor(this._size))throw new Error(`Invalid data length ${this._data.length} leads to non integer size ${this._size}`)}else{this._size=e;const r=e*(e-1)/2;if(t){if(t.length!=r)throw new Error(`Invalid data length. Observations size ${e} requires data length ${r}.`);this._data=t}else this._data=new Float32Array(r)}}_linearizeIJ(t,e){if(!(t<e))throw new Error("i must be less than j");return this._size*t+e-Math.floor((t+2)*(t+1)/2)}get(t,e){return t==e?0:t<e?this._data[this._linearizeIJ(t,e)]:this._data[this._linearizeIJ(e,t)]}set(t,e,r){this._data[this._linearizeIJ(t,e)]=r}static calc(t,e){const r=t.length,n=new ft(void 0,r);for(let i=0;i<r;i++)for(let o=i+1;o<r;o++)n.set(i,o,ct(t[i])||ct(t[o])?1:e(t[i],t[o]));return n}square(){for(let t=0;t<this._data.length;t++)this._data[t]=this._data[t]**2}add(t){if(this._size!==t._size)throw new Error(`Matrices must have the same size. This size: ${this._size}, other size: ${t._size}`);for(let e=0;e<this._data.length;e++)this._data[e]+=t._data[e]}sqrt(){for(let t=0;t<this._data.length;t++)this._data[t]=Math.sqrt(this._data[t])}normalize(){let t=0,e=this._data[0];for(let r=0;r<this._data.length;r++)this._data[r]<t&&(t=this._data[r]),this._data[r]>e&&(e=this._data[r]);const r=e-t;for(let n=0;n<this._data.length;n++)this._data[n]=0===r?this._data[n]-t:(this._data[n]-t)/(e-t)}}var mt;!function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(mt||(mt={}));class dt{constructor(t){this.data=t.data}}const gt={UMAP:class extends dt{constructor(t){super(t),T("distanceFname"in t),T("distanceFn"in t),this.distanceFn=t.distanceFn,this.distanceFname=t.distanceFname,this.dmIndexFunc=O(this.data.length),this.vectors=new Array(this.data.length).fill(0).map(((t,e)=>[e])),this.usingDistanceMatrix=!(!t.preCalculateDistanceMatrix&&this.data.length>2e4),this.usingDistanceMatrix?t.distanceFn=this._encodedDistanceMatrix.bind(this):t.distanceFn=this._encodedDistance.bind(this),this.data.length<15&&(t.nNeighbors=this.data.length-1),this.reducer=new I.u(t)}_encodedDistanceMatrix(t,e){return t[0]===e[0]?0:t[0]>e[0]?this.distanceMatrix[this.dmIndexFunc(e[0],t[0])]:this.distanceMatrix[this.dmIndexFunc(t[0],e[0])]}_encodedDistance(t,e){return this.distanceFn(this.data[t[0]],this.data[e[0]])}async transform(t){this.usingDistanceMatrix&&(this.distanceMatrix=t?await(async()=>{const t=new j(!0,!1);try{const e=await t.calc(this.data,this.distanceFname);return t.terminate(),e}catch(e){throw t.terminate(),e}})():(()=>ft.calc(this.data,((t,e)=>this.distanceFn(t,e))).data)());const e=this.reducer.fit(this.vectors);return{embedding:(r=e,new Array(r.length).fill(0).map(((t,e)=>D.from(r[e])))),...this.distanceMatrix?{distance:this.distanceMatrix}:{}};var r}},"t-SNE":class extends dt{constructor(t){super(t),this.reducer=new F.Z(t),this.iterations=t?.iterations??100,this.distanceFname=t.distanceFname,this.distanceFn=t.distanceFn}async transform(t){const e=t?await(async()=>{const t=new j(!0,!1);try{const e=await t.calc(this.data,this.distanceFname);return t.terminate(),e}catch(e){throw t.terminate(),e}})():(()=>{const t=ft.calc(this.data,((t,e)=>this.distanceFn(t,e)));return t.normalize(),t.data})(),r=function(t,e){const r=O(e);function n(t,e){const n=Number(t),i=Number(e);return r(n,i)}const i={get:(t,r,i)=>"length"===r?e:new Proxy(t,function(t){return{get:(e,r,i)=>t===r?0:e[Number(t)>Number(r)?n(r,t):n(t,r)]}}(r))};return new Proxy(t,i)}(e,this.data.length);this.reducer.initDataDist(r);for(let t=0;t<this.iterations;++t)this.reducer.step();return{distance:e,embedding:this.reducer.getSolution()}}},SPE:class extends dt{constructor(t){super(t),this.reducer=new q(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},pSPE:class extends dt{constructor(t){super(t),this.reducer=new $(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},OriginalSPE:class extends dt{constructor(t){super(t),this.reducer=new W(t)}async transform(){const t=await this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}}};class pt{constructor(t,e,r,n){const i=new lt(r).getMeasure();let o={};if("BitArray"==ht[r])for(let e=0;e<t.length;++e)t[e]=new ut(t[e]._data,t[e]._length);o="UMAP"==e?{data:t,distanceFn:i,distanceFname:r,nEpochs:n?.cycles,...n}:"t-SNE"==e?{data:t,distanceFn:i,distanceFname:r,iterations:n?.cycles??void 0,...n}:{data:t,distance:i,distanceFunctionName:r,...n},this.reducer=new gt[e](o)}async transform(t=!1,e){if(void 0===this.reducer)throw new Error("Reducer was not defined.");let{embedding:r,distance:n}=await this.reducer.transform(e);var i;return t&&(i=r,r=new Array(i[0].length).fill(0).map(((t,e)=>new D(i.length).fill(0).map(((t,r)=>i[r][e]))))),{distance:n,embedding:r}}static availableMetricsByType(t){return Object.keys(at[t])}static get availableMethods(){return Object.keys(gt)}static get availableMetrics(){let t=[];return Object.values(at).forEach((e=>{const r=Object.values(e);t=[...t,...r]})),t}}const wt=1,yt=1,vt=1,bt=0,_t=100,Mt=1e8,St="components must be positive.",xt="components must not be greater than feautures count.",Et="min must be less than max.",Ct="features must be positive.",At="samples must be positive.",Nt="violators percentage must be from the range from 0 to 100.",kt="dataframe is too big.",Rt="unsupported column type: ",It="min distance must be positive.",Ft="spread must be positive.",Dt="number of epoch must be at least 1.",Pt="number of neibors must be at least 2 and not greater than samples count.",zt="number of iterations must be at least 1.",Tt="learning rate must be positive.",Vt="perplexity must be at least 2 and not greater than samples count.",Lt="steps must be non-negative.",Bt="cycles must be positive.",Ot="cutoff must be non-negative.";function jt(t){if(t.type!=i.COLUMN_TYPE.FLOAT&&t.type!=i.COLUMN_TYPE.INT)throw new Error(Rt+t.type)}function qt(t,e){if(e<wt)throw new Error(St);if(e>t.length)throw new Error(xt);for(const e of t)jt(e)}function $t(t,e){if(qt(t,e),t.length*t.byIndex(0).length>Mt)throw new Error(kt)}function Wt(t){const e=t.toList(),r=e[0].length,n=e.length,i=[];for(let t=0;t<r;++t)i.push(Array(n));for(let t=0;t<n;++t){const n=e[t];jt(n);const o=n.getRawData();for(let e=0;e<r;++e)i[e][t]=o[e]}return i}var Ut=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{h(n.next(t))}catch(t){o(t)}}function a(t){try{h(n.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}h((n=n.apply(t,e||[])).next())}))};function Ht(t,e,n,i){return Ut(this,void 0,void 0,(function*(){return $t(e,i),yield async function(t,e,n,i){return new Promise(((t,o)=>{const s=new Worker(new URL(r.p+r.u(93),r.b));s.postMessage(k(EDA.partialLeastSquareRegression.arguments,[e,n,i])),s.onmessage=function(e){s.terminate(),t(R(EDA.partialLeastSquareRegression,e.data))}}))}(0,e,n,i)}))}function Gt(t,e,r){r.name=e.name+"(predicted)";let n=i.DataFrame.fromColumns([t,e,r]);return n.name="Reference vs. Predicted",i.Viewer.scatterPlot(n,{title:n.name,x:e.name,y:r.name,showRegressionLine:!0,markerType:"circle",labels:t.name})}function Kt(t,e){e.name="regression coefficient";let r=[];for(const e of t)r.push(e.name);let n=i.Column.fromStrings("feature",r),o=i.DataFrame.fromColumns([n,e]);return o.name="Regression Coefficients",i.Viewer.barChart(o,{title:o.name,split:"feature",value:"regression coefficient",valueAggrType:"avg"})}function Yt(t,e,r){let n=[t];for(let t=0;t<e.length;t++)e[t].name=`x.score.t${t+1}`,n.push(e[t]);for(let t=0;t<r.length;t++)r[t].name=`y.score.u${t+1}`,n.push(r[t]);let o=i.DataFrame.fromColumns(n);o.name="Scores";const s=e.length>1?1:0;return i.Viewer.scatterPlot(o,{title:o.name,x:e[0].name,y:e[s].name,markerType:"circle",labels:t.name})}var Jt=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{h(n.next(t))}catch(t){o(t)}}function a(t){try{h(n.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}h((n=n.apply(t,e||[])).next())}))};const Xt=0,Qt=1,Zt="Feature #",te="Label";function ee(){return i.DataFrame.fromColumns([i.Column.fromStrings("model",["alfaromeo","audi","bmw","chevrolet","dodge1","dodge2","honda1","honda2","isuzu","jaguar","mazda","mercedes","mercury","mitsubishi","nissan1","nissan2","peugot","plymouth","porsche","saab","subaru","toyota1","toyota2","toyota3","toyota4","volkswagen1","volkswagen2","volvo1","volvo2","volvo3"]),i.Column.fromInt32Array("diesel",new Int32Array([0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,1])),i.Column.fromInt32Array("turbo",new Int32Array([0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1])),i.Column.fromInt32Array("two.doors",new Int32Array([1,0,1,0,1,0,1,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0])),i.Column.fromInt32Array("hatchback",new Int32Array([1,0,0,0,1,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0])),i.Column.fromFloat32Array("wheel.base",new Float32Array([94.5,105.80000305175781,101.19999694824219,94.5,93.69999694824219,93.69999694824219,93.69999694824219,96.5,94.30000305175781,113,93.0999984741211,115.5999984741211,102.69999694824219,93.69999694824219,94.5,94.5,93.69999694824219,114.19999694824219,89.5,99.0999984741211,97.19999694824219,95.69999694824219,95.69999694824219,98.4000015258789,102.4000015258789,97.30000305175781,100.4000015258789,104.30000305175781,109.0999984741211,109.0999984741211])),i.Column.fromFloat32Array("length",new Float32Array([171.1999969482422,192.6999969482422,176.8000030517578,158.8000030517578,157.3000030517578,157.3000030517578,150,175.39999389648438,170.6999969482422,199.60000610351562,166.8000030517578,202.60000610351562,178.39999389648438,157.3000030517578,170.1999969482422,165.3000030517578,157.3000030517578,198.89999389648438,168.89999389648438,186.60000610351562,172,158.6999969482422,166.3000030517578,176.1999969482422,175.60000610351562,171.6999969482422,180.1999969482422,188.8000030517578,188.8000030517578,188.8000030517578])),i.Column.fromFloat32Array("width",new Float32Array([65.5,71.4000015258789,64.80000305175781,63.599998474121094,63.79999923706055,63.79999923706055,64,65.19999694824219,61.79999923706055,69.5999984741211,64.19999694824219,71.69999694824219,68,64.4000015258789,63.79999923706055,63.79999923706055,63.79999923706055,68.4000015258789,65,66.5,65.4000015258789,63.599998474121094,64.4000015258789,65.5999984741211,66.5,65.5,66.9000015258789,67.19999694824219,68.80000305175781,68.9000015258789])),i.Column.fromFloat32Array("height",new Float32Array([52.400001525878906,55.70000076293945,54.29999923706055,52,50.79999923706055,50.599998474121094,52.599998474121094,54.099998474121094,53.5,52.79999923706055,54.099998474121094,56.29999923706055,54.79999923706055,50.79999923706055,53.5,54.5,50.599998474121094,58.70000076293945,51.599998474121094,56.099998474121094,52.5,54.5,53,52,54.900001525878906,55.70000076293945,55.099998474121094,56.20000076293945,55.5,55.5])),i.Column.fromInt32Array("curb.weight",new Int32Array([2823,2844,2395,1909,2128,1967,1956,2304,2337,4066,1950,3770,2910,1918,2024,1951,1967,3430,2800,2695,2190,1985,2275,2551,2480,2261,2661,2912,3049,3217])),i.Column.fromInt32Array("eng.size",new Int32Array([152,136,108,90,98,90,92,110,111,258,91,183,140,92,97,97,90,152,194,121,108,92,110,146,110,97,136,141,141,145])),i.Column.fromInt32Array("horsepower",new Int32Array([154,110,101,70,102,68,76,86,78,176,68,123,175,68,69,69,68,95,207,110,82,62,56,116,73,52,110,114,160,106])),i.Column.fromInt32Array("peak.rpm",new Int32Array([5e3,5500,5800,5400,5500,5500,6e3,5800,4800,4750,5e3,4350,5e3,5500,5200,5200,5500,4150,5900,5250,4400,4800,4500,4800,4500,4800,5500,5400,5300,4800])),i.Column.fromInt32Array("symbol",new Int32Array([1,1,2,0,1,1,1,0,0,0,1,-1,1,2,1,1,1,0,3,2,0,1,0,2,-1,2,0,-2,-1,-1])),i.Column.fromInt32Array("city.mpg",new Int32Array([19,19,23,38,24,31,30,27,24,15,31,22,19,37,31,31,31,25,17,21,28,35,34,24,30,37,19,23,19,26])),i.Column.fromInt32Array("highway.mpg",new Int32Array([26,25,29,43,30,38,34,33,29,19,38,25,24,41,37,37,38,25,25,28,33,39,36,30,33,46,24,28,25,27])),i.Column.fromInt32Array("price",new Int32Array([16500,17710,16430,6575,7957,6229,7129,8845,6785,35550,7395,31600,16503,5389,7349,7299,6229,13860,37028,12170,7775,5348,7898,9989,10698,7775,13295,12940,19045,22470]))])}function re(t,e,n,o,s,a,h,l){return Jt(this,void 0,void 0,(function*(){!function(t,e,r,n,i){if(r>=n)throw new Error(Et);if(e<vt)throw new Error(Ct);if(t<yt)throw new Error(At);if(i<bt||i>_t)throw new Error(Nt)}(o,s,a,h,l);const u=i.Column.fromList("double","kernelParams",e);let c,f=async function(t,e,n,i,o,s,a){return new Promise(((h,l)=>{const u=new Worker(new URL(r.p+r.u(584),r.b));u.postMessage(k(EDA.generateDataset.arguments,[t,e,n,i,o,s,a])),u.onmessage=function(t){u.terminate(),h(R(EDA.generateDataset,t.data))}}))}(t,u,o,s,a,h,l);yield f.then((t=>{c=t}),(t=>{throw new Error(`Error: ${t}`)})),c[Qt].name=te;for(const t of c[Xt])t.name=Zt+t.name;const m=i.DataFrame.fromColumns(c[Xt]);return m.name=n,m.columns.add(c[Qt]),m}))}var ne=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{h(n.next(t))}catch(t){o(t)}}function a(t){try{h(n.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}h((n=n.apply(t,e||[])).next())}))};const ie=0,oe=1,se=2,ae=3,he=4,le=0,ue=1,ce=2,fe=3,me=4,de=5,ge=6,pe=7,we=0,ye=1,ve=2,be=3,_e=0,Me=0,Se=1,xe=0,Ee=1,Ce=0,Ae=0,Ne=0,ke=0,Re="gamma must be strictly positive.",Ie="sigma must be strictly positive.",Fe="c must be strictly positive.",De="d must be strictly positive.",Pe="incorrect kernel.",ze="Labels",Te="predicted",Ve="correctness",Le="Confusion matrix",Be="mean",Oe="std dev",je="alpha",qe="weight",$e="gamma",We="kernel",Ue="kernel params",He="kernel param 1",Ge="kernel param 2",Ke="features count",Ye="train samples count",Je="Train error,%",Xe=["linear","polynomial","RBF","sigmoid"],Qe="positive (P)",Ze="negative (N)",tr="predicted positive (PP)",er="predicted negative (PN)",rr="Sensitivity",nr="Specificity",ir="Balanced accuracy",or="Positive predicitve value",sr="Negative predicitve value",ar="Model report",hr="Predicted labels",lr="Train labels",ur="Prediction correctness",cr="prediction",fr=4,mr=3,dr=2,gr=0,pr=1,wr=2,yr=0,vr=1;function br(t,e,n){return ne(this,void 0,void 0,(function*(){let o=e.columns,s=o.byName(n);return o.remove(n),yield function(t,e,n){return ne(this,void 0,void 0,(function*(){!function(t){if(t.gamma<=Ce)throw new Error(Re);switch(t.kernel){case ie:return;case se:if(t.sigma<=Ae)throw new Error(Ie);return;case oe:if(t.cParam<=Ne)throw new Error(Fe);if(t.dParam<=ke)throw new Error(De);return;case ae:return;default:throw new Error(Pe)}}(t);const o=[yr,yr];switch(t.kernel){case ie:break;case se:o[_e]=t.sigma;break;case oe:o[Me]=t.cParam,o[Se]=t.dParam;break;case ae:o[xe]=t.kappa,o[Ee]=t.theta;break;default:throw new Error(Pe)}let s,a=i.Column.fromList("double",Ue,o),h=e.toList(),l=h[0].length+vr,u=h.length+vr,c=he,f=async function(t,e,n,i,o,s,a,h){return new Promise(((l,u)=>{const c=new Worker(new URL(r.p+r.u(111),r.b));c.postMessage(k(EDA.trainAndAnalyzeLSSVM.arguments,[t,e,n,i,o,s,a,h])),c.onmessage=function(t){c.terminate(),l(R(EDA.trainAndAnalyzeLSSVM,t.data))}}))}(t.gamma,t.kernel,a,l,u,c,e,n);yield f.then((t=>{s=t}),(t=>{throw new Error(`Error: ${t}`)})),s[ue].name=Be,s[ce].name=Oe,s[fe].name=je,s[me].name=qe,s[de].name=Te,s[ge].name=Ve,s[pe].name=Le;let m={trainGamma:t.gamma,kernelType:t.kernel,kernelParams:a,trainLabels:n,normalizedTrainData:i.DataFrame.fromColumns(s[le]),means:s[ue],stdDevs:s[ce],modelParams:s[fe],modelWeights:s[me],predictedLabels:s[de],correctness:s[ge],confusionMatrix:s[pe],trainError:void 0,featuresCount:h.length,trainSamplesCount:h[0].length};return function(t){let e=t.confusionMatrix.getRawData(),r=e[we],n=e[be],i=e[ve],o=e[ye],s=r+o,a=i+n,h=r/s,l=n/a,u=r/(r+i),c=n/(n+o),f=(r+n)/(s+a),m=(h+l)/2;t.sensitivity=h,t.specificity=l,t.balancedAccuracy=m,t.positivePredicitveValue=u,t.negativePredicitveValue=c,t.trainError=100*(1-f)}(m),m}))}(t,o,s)}))}function _r(e,r){e.name=ar,e.columns.add(r.trainLabels),e.columns.add(r.predictedLabels),e.columns.add(r.correctness);let n=t.shell.addTableView(e);n.addViewer(i.Viewer.form(function(t){let e=t.kernelParams.getRawData();return i.DataFrame.fromColumns([i.Column.fromList("double",$e,[t.trainGamma]),i.Column.fromStrings(We,[Xe[t.kernelType]]),i.Column.fromList("double",He,[e[0]]),i.Column.fromList("double",Ge,[e[1]]),i.Column.fromList("double",Ke,[t.featuresCount]),i.Column.fromList("double",Ye,[t.trainSamplesCount]),i.Column.fromList("double",Je,[t.trainError]),i.Column.fromList("double",ir,[t.balancedAccuracy]),i.Column.fromList("double",rr,[t.sensitivity]),i.Column.fromList("double",nr,[t.specificity]),i.Column.fromList("double",or,[t.positivePredicitveValue]),i.Column.fromList("double",sr,[t.negativePredicitveValue])])}(r))),n.addViewer(i.Viewer.scatterPlot(e,{title:hr,color:r.predictedLabels.name})),n.addViewer(i.Viewer.scatterPlot(e,{title:lr,color:r.trainLabels.name})),n.addViewer(i.Viewer.grid(function(t){let e=t.confusionMatrix.getRawData();return i.DataFrame.fromColumns([i.Column.fromStrings("",[Qe,Ze]),i.Column.fromList("int",tr,[e[we],e[ve]]),i.Column.fromList("int",er,[e[ye],e[be]])])}(r))),n.addViewer(i.Viewer.scatterPlot(e,{title:ur,color:r.correctness.name}))}function Mr(t){let e=t.normalizedTrainData.columns,r=t.trainSamplesCount,n=t.featuresCount,i=new Uint8Array(fr*(mr+dr+r+n+n+r+vr+n+vr+n*r)),o=i.buffer,s=0,a=new Int32Array(o,s,mr);a[gr]=t.kernelType,a[pr]=r,a[wr]=n,s+=mr*fr;let h=new Float32Array(o,s,dr);h.set(t.kernelParams.getRawData()),s+=dr*fr,h=new Float32Array(o,s,r),h.set(t.trainLabels.getRawData()),s+=r*fr,h=new Float32Array(o,s,n),h.set(t.means.getRawData()),s+=n*fr,h=new Float32Array(o,s,n),h.set(t.stdDevs.getRawData()),s+=n*fr,h=new Float32Array(o,s,r+vr),h.set(t.modelParams.getRawData()),s+=(r+vr)*fr,h=new Float32Array(o,s,n+vr),h.set(t.modelWeights.getRawData()),s+=(n+vr)*fr;for(const t of e)h=new Float32Array(o,s,n),h.set(t.getRawData()),s+=n*fr;return i}function Sr(t,e){return ne(this,void 0,void 0,(function*(){let n=function(t){let e=t.buffer,r=0,n=new Int32Array(e,r,mr);r+=mr*fr;let o=n[pr],s=n[wr];const a=i.Column.fromFloat32Array(Ue,new Float32Array(e,r,dr));r+=dr*fr;const h=i.Column.fromFloat32Array(ze,new Float32Array(e,r,o));r+=o*fr;const l=i.Column.fromFloat32Array(Be,new Float32Array(e,r,s));r+=s*fr;const u=i.Column.fromFloat32Array(Oe,new Float32Array(e,r,s));r+=s*fr;const c=i.Column.fromFloat32Array(je,new Float32Array(e,r,o+vr));r+=(o+vr)*fr;const f=i.Column.fromFloat32Array(qe,new Float32Array(e,r,s+vr));r+=(s+vr)*fr;let m=[];for(let t=0;t<o;t++)m.push(i.Column.fromFloat32Array(t.toString(),new Float32Array(e,r,s))),r+=s*fr;const d=i.DataFrame.fromColumns(m);return{kernelType:n[gr],kernelParams:a,trainLabels:h,means:l,stdDevs:u,modelParams:c,modelWeights:f,normalizedTrainData:d}}(new Uint8Array(e)),o=yield function(t,e){return ne(this,void 0,void 0,(function*(){let n,i=async function(t,e,n,i,o,s,a,h,l){return new Promise(((u,c)=>{const f=new Worker(new URL(r.p+r.u(604),r.b));f.postMessage(k(EDA.predictByLSSVM.arguments,[t,e,n,i,o,s,a,h,l])),f.onmessage=function(t){f.terminate(),u(R(EDA.predictByLSSVM,t.data))}}))}(t.kernelType,t.kernelParams,t.normalizedTrainData.columns,t.trainLabels,t.means,t.stdDevs,t.modelParams,t.modelWeights,e);return yield i.then((t=>{n=t}),(t=>{throw new Error(`Error: ${t}`)})),n}))}(n,t.columns);return o.name=cr,i.DataFrame.fromColumns([o])}))}var xr=function(t,e,r,n){return new(r||(r=Promise))((function(i,o){function s(t){try{h(n.next(t))}catch(t){o(t)}}function a(t){try{h(n.throw(t))}catch(t){o(t)}}function h(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,a)}h((n=n.apply(t,e||[])).next())}))};const Er=new i.Package;function Cr(){t.shell.info(Er.webRoot)}function Ar(){return xr(this,void 0,void 0,(function*(){yield async function(){await initEDA()}()}))}function Nr(t,e,n,i,o){return xr(this,void 0,void 0,(function*(){const t=yield function(t,e,n,i,o){return Ut(this,void 0,void 0,(function*(){$t(e,n);const t=i?1:0,s=o?1:0;return yield async function(t,e,n,i,o){return new Promise(((t,s)=>{const a=new Worker(new URL(r.p+r.u(155),r.b));a.postMessage(k(EDA.principalComponentAnalysis.arguments,[e,n,i,o])),a.onmessage=function(e){a.terminate(),t(R(EDA.principalComponentAnalysis,e.data))}}))}(0,e,n,t,s)}))}(0,e,n,i,o);return function(t,e){for(const t of e.toList())t.name="PCA"+t.name}(0,t.columns),t}))}function kr(t,e,n,o,s,a,h){return xr(this,void 0,void 0,(function*(){return yield function(t,e,n,o,s,a){return Ut(this,void 0,void 0,(function*(){!function(t,e,r,n,i,o){if(qt(t,e),t.length*t.byIndex(0).length>Mt)throw new Error(kt);if(i<=0)throw new Error(It);if(o<=0)throw new Error(Ft);if(r<1)throw new Error(Dt);if(n<2||n>t.byIndex(0).length)throw new Error(Pt)}(t,e,n,o,s,a);const h=Wt(t);let l,u=new Promise(((t,i)=>{const l=new Worker(new URL(r.p+r.u(694),r.b));l.postMessage({data:h,options:{nComponents:e,nEpochs:n,nNeighbors:o,minDist:s,spread:a}}),l.onmessage=function(e){l.terminate(),t(e.data.embeddings)}}));yield u.then((t=>{l=t}),(t=>{throw new Error("applying UMAP fails.")}));const c=l,f=c.length,m=[...Array(e).keys()],d=m.map((t=>new Float32Array(f)));for(let t=0;t<f;++t)for(let r=0;r<e;++r)d[r][t]=c[t][r];return i.DataFrame.fromColumns(m.map((t=>i.Column.fromFloat32Array("UMAP"+t.toString(),d[t]))))}))}(e,n,o,s,a,h)}))}function Rr(t,e,n,o,s,a){return xr(this,void 0,void 0,(function*(){return yield function(t,e,n,o,s){return Ut(this,void 0,void 0,(function*(){!function(t,e,r,n,i){if(qt(t,e),t.length*t.byIndex(0).length>Mt)throw new Error(kt);if(r<0)throw new Error(Tt);if(i<1)throw new Error(zt);if(n<2||n>t.byIndex(0).length)throw new Error(Vt)}(t,e,n,o,s);const a=Wt(t);let h,l=new Promise(((t,i)=>{const h=new Worker(new URL(r.p+r.u(729),r.b));h.postMessage({data:a,options:{learningRate:n,perplexity:o,components:e,iterations:s}}),h.onmessage=function(e){h.terminate(),t(e.data.embeddings)}}));yield l.then((t=>{h=t}),(t=>{throw new Error("applying t-SNE fails.")}));const u=h,c=u.length,f=[...Array(e).keys()],m=f.map((t=>new Float32Array(c)));for(let t=0;t<c;++t)for(let r=0;r<e;++r)m[r][t]=u[t][r];return i.DataFrame.fromColumns(f.map((t=>i.Column.fromFloat32Array("tSNE"+t.toString(),m[t]))))}))}(e,n,o,s,a)}))}function Ir(t,e,r,n,o,s,a){return xr(this,void 0,void 0,(function*(){return yield function(t,e,r,n,o,s){return Ut(this,void 0,void 0,(function*(){!function(t,e,r,n,i,o){if(qt(t,e),t.length*t.byIndex(0).length>Mt)throw new Error(kt);if(r<0)throw new Error(Lt);if(n<=0)throw new Error(Bt);if(i<0)throw new Error(Ot);if(o<=0)throw new Error(Tt)}(t,e,r,n,o,s);const a=Wt(t),h=new pt(a,"SPE",K.Euclidean,{dimension:e,steps:r,cycles:n,cutoff:o,lambda:s}),l=(yield h.transform(!1,!1)).embedding,u=l.length,c=[...Array(e).keys()],f=c.map((t=>new Float32Array(u)));for(let t=0;t<u;++t)for(let r=0;r<e;++r)f[r][t]=l[t][r];return i.DataFrame.fromColumns(c.map((t=>i.Column.fromFloat32Array("SPE"+t.toString(),f[t]))))}))}(e,r,n,o,s,a)}))}function Fr(e,r,n,o,s){return xr(this,void 0,void 0,(function*(){const a=yield Ht(0,n,o,s);!function(e,r,n,o,s){let a=t.shell.getTableView(e.name);a.addViewer(Gt(r,o,s[0])),a.addViewer(Kt(n,s[1])),a.addViewer(function(t,e){let r=[],n=[];for(let e of t)n.push(e.name);r.push(i.Column.fromStrings("labels",n));for(let t=0;t<e.length;t++)e[t].name=`x.loading.p${t+1}`,r.push(e[t]);let o=i.DataFrame.fromColumns(r);return o.name="Loadings",i.Viewer.scatterPlot(o,{title:o.name,x:e[0].name,y:e[e.length-1].name,markerType:"circle",labels:"labels"})}(n,s[4])),a.addViewer(Yt(r,s[2],s[3]))}(e,r,n,o,a)}))}function Dr(){return xr(this,void 0,void 0,(function*(){const r=new h("Partial least squares regression","Analysis of multidimensional data."),n=ee(),i=n.columns.byName("model"),o=n.columns.byName("price"),s=n.columns.remove("price").remove("model"),a=yield Ht(0,s,o,3),l=ee();let u,c;l.name="Cars",yield r.step("Data",(()=>xr(this,void 0,void 0,(function*(){t.shell.addTableView(l),u=t.shell.getTableView(l.name)}))),{description:"Each car has many features - patterns extraction is complicated.",delay:0}).step("Model",(()=>xr(this,void 0,void 0,(function*(){c=e.dialog({title:"Multivariate Analysis (PLS)"}).add(e.tableInput("Table",l)).add(e.columnsInput("Features",n,s.toList,{available:void 0,checked:s.names()})).add(e.columnInput("Names",n,i,void 0)).add(e.columnInput("Predict",n,o,void 0)).add(e.intInput("Components",3,void 0)).onOK((()=>{t.shell.info("Multivariate analysis has been already performed.")})).show({x:400,y:140})}))),{description:"Predict car price by its other features.",delay:0}).step("Regression coeffcicients",(()=>xr(this,void 0,void 0,(function*(){c.close(),u.addViewer(Kt(s,a[1]))}))),{description:'The feature "diesel" affects the price the most.',delay:0}).step("Scores",(()=>xr(this,void 0,void 0,(function*(){u.addViewer(Yt(i,a[2],a[3]))}))),{description:"Similarities & dissimilarities: alfaromeo and mercedes are different.",delay:0}).step("Prediction",(()=>xr(this,void 0,void 0,(function*(){u.addViewer(Gt(i,o,a[0]))}))),{description:"Closer to the line means better price prediction.",delay:0}).start()}))}function Pr(t,e,r,n,i,o){return xr(this,void 0,void 0,(function*(){return yield re(ie,[0,0],t,e,r,n,i,o)}))}function zr(t,e,r,n,i,o,s){return xr(this,void 0,void 0,(function*(){return yield re(se,[e,0],t,r,n,i,o,s)}))}function Tr(t,e,r,n){return xr(this,void 0,void 0,(function*(){const i=yield br({gamma:r,kernel:ie},t,e);return n&&_r(t,i),Mr(i)}))}function Vr(t,e){return xr(this,void 0,void 0,(function*(){return yield Sr(t,e)}))}function Lr(t,e,r,n,i){return xr(this,void 0,void 0,(function*(){const o=yield br({gamma:r,kernel:se,sigma:n},t,e);return i&&_r(t,o),Mr(o)}))}function Br(t,e){return xr(this,void 0,void 0,(function*(){return yield Sr(t,e)}))}function Or(t,e,r,n,i,o){return xr(this,void 0,void 0,(function*(){const s=yield br({gamma:r,kernel:oe,cParam:n,dParam:i},t,e);return o&&_r(t,s),Mr(s)}))}function jr(t,e){return xr(this,void 0,void 0,(function*(){return yield Sr(t,e)}))}function qr(t,e,r,n,i,o){return xr(this,void 0,void 0,(function*(){const s=yield br({gamma:r,kernel:ae,kappa:n,theta:i},t,e);return o&&_r(t,s),Mr(s)}))}function $r(t,e){return xr(this,void 0,void 0,(function*(){return yield Sr(t,e)}))}})(),eda=n})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3ZGLENBQUMsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQzVGLEVBQUUsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ25GLEVBQUUsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3BGLENBQUMsR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQzFGLEVBQUUsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3RGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQ3pGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQ3pGLEVBQUUsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3RGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQ3hGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQ3hGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQzdGLENBQUMsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQ2xGLENBQUMsR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQ3hGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQzVGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQzFGLENBQUMsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQ3hGLEVBQUUsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3JGLEVBQUUsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3BGLENBQUMsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQzNGLEVBQUUsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLElBVzdGQyxnQkFUZ0IsQ0FDaEIsRUFBSyxFQUFHLEVBQUssRUFBRyxFQUFLLEVBQUcsRUFBSyxFQUFHLEVBQUssRUFBRyxFQUFLLEVBQUcsRUFBSyxFQUFHLEVBQUssRUFBRyxFQUFLLEVBQ3JFLEVBQUssRUFBRyxFQUFLLEdBQUksRUFBSyxHQUFJLEVBQUssR0FBSSxFQUFLLEdBQUksRUFBSyxHQUFJLEVBQUssR0FBSSxFQUFLLEdBQ25FLEVBQUssR0FBSSxFQUFLLEdBQUksRUFBSyxHQUFJLEVBQUssR0FBSSxFQUFLLEdBQUksRUFBSyxHQUFJLElBQUssS0NyQnhELElBQUlDLElBQ1gsU0FBV0EsR0FDUEEsRUFBa0MsUUFBSSxVQUN0Q0EsRUFBc0MsWUFBSSxjQUMxQ0EsRUFBNEMsa0JBQUksbUJBQ25ELENBSkQsQ0FJR0EsS0FBNkJBLEdBQTJCLENBQUMsSUFFckQsTUFBTUMsR0FBc0IsQ0FDL0IsQ0FBQ0QsR0FBeUJFLFNDaEJ2QixXQUNILE1BQU8sQ0FBQ0MsRUFBTUMsS0FHVixJQUFJQyxFQUFPLEVBQ1BGLEVBQUtqdUMsU0FBV2t1QyxFQUFLbHVDLFNBQ3JCbXVDLEVBQU9qd0MsS0FBS3VELElBQUl3c0MsRUFBS2p1QyxPQUFTa3VDLEVBQUtsdUMsU0FDdkMsSUFBSTBJLEVBQVMsRUFDYixJQUFLLElBQUl4SixFQUFJLEVBQUdBLEVBQUloQixLQUFLOEcsSUFBSWlwQyxFQUFLanVDLE9BQVFrdUMsRUFBS2x1QyxRQUFTZCxJQUNoRCt1QyxFQUFLL3VDLEtBQU9ndkMsRUFBS2h2QyxJQUNqQndKLElBSVIsT0FGQUEsR0FBVXlsQyxFQUNWemxDLEdBQVV4SyxLQUFLMEQsSUFBSXFzQyxFQUFLanVDLE9BQVFrdUMsRUFBS2x1QyxRQUM5QjBJLENBQU0sQ0FFckIsRURDSSxDQUFDb2xDLEdBQXlCTSxhRWhCdkIsV0FDSCxNQUFPLENBQUNILEVBQU1DLElBQ0hsWSxFQUFTaVksRUFBTUMsR0FBUWh3QyxLQUFLMEQsSUFBSXFzQyxFQUFLanVDLE9BQVFrdUMsRUFBS2x1QyxPQUVqRSxFRmFJLENBQUM4dEMsR0FBeUJPLG1CRHVCdkIsU0FBd0J4SSxHQUMzQixNQUFPLENBQUNvSSxFQUFNQyxLQUNWLE1BQU0sUUFBRVIsRUFBTyxVQUFFQyxFQUFTLGNBQUVDLEVBQWEsZ0JBQUVDLEdBQW9CLElBQUtKLE1BQWdCNUgsR0FHOUU3OUIsRUFBUyxDQUNYLElBQUkvSSxNQUFNZ3ZDLEVBQUtqdUMsT0FBUyxHQUFHcUwsS0FBSyxHQUNoQyxJQUFJcE0sTUFBTWd2QyxFQUFLanVDLE9BQVMsR0FBR3FMLEtBQUssSUFJOUJpakMsRUFBZSxJQUFJcnZDLE1BQU1ndkMsRUFBS2p1QyxPQUFTLEdBQUdxTCxNQUFLLEdBQy9Da2pDLEVBQWlCLElBQUl0dkMsTUFBTWd2QyxFQUFLanVDLE9BQVMsR0FBR3FMLE1BQUssR0FHdkQsSUFBSW1qQyxFQUFVLEVBQ1ZDLEVBQVUsRUFFZCxJQUFLLElBQUl2dkMsRUFBSSxFQUFHQSxFQUFJK3VDLEVBQUtqdUMsT0FBUyxFQUFHZCxJQUNqQzhJLEVBQU8sR0FBRzlJLElBQU13dUMsR0FBV3h1QyxFQUFJLEdBQUt5dUMsRUFFeEMsSUFBSyxJQUFJenVDLEVBQUksRUFBR0EsRUFBSWd2QyxFQUFLbHVDLE9BQVMsRUFBR2QsSUFBSyxDQUN0QzhJLEVBQU95bUMsR0FBUyxJQUFNZixHQUFXeHVDLEVBQUksR0FBS3l1QyxFQUMxQyxJQUFLLElBQUlqdUMsRUFBSSxFQUFHQSxFQUFJdXVDLEVBQUtqdUMsT0FBUyxFQUFHTixJQUFLLENBQ3RDLE1BQU1rWixFQUFXNVEsRUFBT3dtQyxHQUFTOXVDLEVBQUksR0FBS2t1QyxFQUFjQyxFQUFnQkksRUFBS3Z1QyxFQUFJLEtBQUttdUMsRUFBZ0JLLEVBQUtodkMsRUFBSSxLQUN6R3d2QyxFQUFNMW1DLEVBQU93bUMsR0FBUzl1QyxJQUFNNHVDLEVBQWE1dUMsR0FBS2l1QyxFQUFZRCxHQUMxRGhlLEVBQU8xbkIsRUFBT3ltQyxHQUFTL3VDLEVBQUksSUFBTTZ1QyxFQUFlN3VDLEVBQUksR0FBS2l1QyxFQUFZRCxHQUMzRTFsQyxFQUFPeW1DLEdBQVMvdUMsR0FBS3hCLEtBQUswRCxJQUFJZ1gsRUFBVThXLEVBQU1nZixHQUUxQzFtQyxFQUFPeW1DLEdBQVMvdUMsS0FBT2taLEdBQ3ZCMDFCLEVBQWE1dUMsSUFBSyxFQUNsQjZ1QyxFQUFlN3VDLElBQUssR0FFZnNJLEVBQU95bUMsR0FBUy91QyxLQUFPZ3dCLEdBQzVCNGUsRUFBYTV1QyxJQUFLLEVBQ2xCNnVDLEVBQWU3dUMsSUFBSyxJQUdwQjR1QyxFQUFhNXVDLElBQUssRUFDbEI2dUMsRUFBZTd1QyxJQUFLLEVBRTVCLENBRUE4dUMsRUFBVUMsRUFDVkEsR0FBV0EsRUFBVSxHQUFLLENBQzlCLENBR0EsTUFBTUUsRUFBbUJWLEVBQUtXLE1BQU0sSUFBSXJwQixLQUFLam5CLEdBQU1zdkMsRUFBY0MsRUFBZ0J2dkMsSUFBSXV2QyxFQUFnQnZ2QyxNQUNoR3k0QixRQUFPLENBQUM1aUIsRUFBR0MsSUFBTUQsRUFBSUMsR0FBRyxHQUN2Qnk2QixFQUFtQlgsRUFBS1UsTUFBTSxJQUFJcnBCLEtBQUtqbkIsR0FBTXN2QyxFQUFjQyxFQUFnQnZ2QyxJQUFJdXZDLEVBQWdCdnZDLE1BQ2hHeTRCLFFBQU8sQ0FBQzVpQixFQUFHQyxJQUFNRCxFQUFJQyxHQUFHLEdBQ3ZCMDZCLEVBQVc1d0MsS0FBSzBELElBQUkrc0MsRUFBa0JFLEdBQzVDLE9BQVFDLEVBQVc5bUMsRUFBT3dtQyxHQUFTUCxFQUFLanVDLFNBQVc4dUMsQ0FBUSxDQUVuRSxHSTFGYUMsR0FBK0IsQ0FDeEMsQ0FBQ3hDLEVBQW1CaUIsV0FBWXhHLEdBRXZCZ0ksR0FBK0IsQ0FDeEMsQ0FBQzFDLEVBQW1CMkMsYUFBYyxFQUNsQyxDQUFDM0MsRUFBbUI0QyxhQUFjLEtBQ2xDLENBQUM1QyxFQUFtQjZDLFdBb0VqQixTQUEyQkMsRUFBSUMsR0FDbEMsR0FBSUQsRUFBR3B2QyxTQUFXcXZDLEVBQUdydkMsT0FDakIsT0FBTyxFQUVOLENBQ0QsSUFBSU0sRUFBTyxFQUNYLElBQUssSUFBSXBCLEVBQUksRUFBR0EsRUFBSWt3QyxFQUFHcHZDLE9BQVFkLElBQzNCb0IsR0FBUTh1QyxFQUFHbHdDLElBQU1td0MsRUFBR253QyxHQUFLLEVBQUksRUFDakMsT0FBT29CLEVBQU84dUMsRUFBR3B2QyxNQUNyQixDQUNKLEdBNUVhc3ZDLEdBQWlDLENBQzFDLENBQUM5QyxFQUFxQkssVUxnQ25CLFNBQTBCcnRDLEVBQUcyRyxHQUNoQyxPQUFPd21DLEVBUkosU0FBNEJudEMsRUFBRzJHLEdBQ2xDLE1BQU13Z0MsRUFBUW5uQyxFQUFFK3ZDLFlBQWNwcEMsRUFBRW9wQyxZQUNoQyxHQUFhLEdBQVQ1SSxFQUNBLE9BQU8sRUFDWCxNQUFNNkksRUFBU2h3QyxFQUFFaXdDLGlCQUFpQnRwQyxHQUFHLEdBQ3JDLE9BQU9xcEMsR0FBVTdJLEVBQVE2SSxFQUM3QixDQUVxQ0UsQ0FBbUJsd0MsRUFBRzJHLEdBQzNELEVLakNJLENBQUNxbUMsRUFBcUJNLE1MeUNuQixTQUFzQnR0QyxFQUFHMkcsR0FDNUIsT0FBT3dtQyxFQVJKLFNBQXdCbnRDLEVBQUcyRyxHQUM5QixNQUFNd2dDLEVBQVFubkMsRUFBRSt2QyxZQUFjcHBDLEVBQUVvcEMsWUFDaEMsT0FBYSxHQUFUNUksRUFDTyxFQUVKLEVBRFFubkMsRUFBRWl3QyxpQkFBaUJ0cEMsR0FBRyxHQUNqQndnQyxDQUN4QixDQUVxQ2dKLENBQWVud0MsRUFBRzJHLEdBQ3ZELEVLMUNJLENBQUNxbUMsRUFBcUJPLFlMc0duQixTQUE0QnZ0QyxFQUFHMkcsR0FDbEMsT0FBT3dtQyxFQVJKLFNBQThCbnRDLEVBQUcyRyxHQUNwQyxNQUFNbkIsRUFBTTlHLEtBQUs4RyxJQUFJeEYsRUFBRSt2QyxZQUFhcHBDLEVBQUVvcEMsYUFDdEMsT0FBVyxHQUFQdnFDLEVBQ08sRUFDSXhGLEVBQUVpd0MsaUJBQWlCdHBDLEdBQUcsR0FDckJuQixDQUNwQixDQUVxQzRxQyxDQUFxQnB3QyxFQUFHMkcsR0FDN0QsRUt2R0ksQ0FBQ3FtQyxFQUFxQlEsZUwrR25CLFNBQStCeHRDLEVBQUcyRyxHQUNyQyxPQUFPd21DLEVBUkosU0FBaUNudEMsRUFBRzJHLEdBQ3ZDLE1BQU12RSxFQUFNMUQsS0FBSzBELElBQUlwQyxFQUFFK3ZDLFlBQWFwcEMsRUFBRW9wQyxhQUN0QyxPQUFXLEdBQVAzdEMsRUFDTyxFQUNJcEMsRUFBRWl3QyxpQkFBaUJ0cEMsR0FBRyxHQUNyQnZFLENBQ3BCLENBRXFDaXVDLENBQXdCcndDLEVBQUcyRyxHQUNoRSxFS2hISSxDQUFDcW1DLEVBQXFCUyxRTGdEbkIsU0FBd0J6dEMsRUFBRzJHLEdBQzlCLE9BQU93bUMsRUFSSixTQUEwQm50QyxFQUFHMkcsR0FDaEMsTUFBTXdnQyxFQUFRbm5DLEVBQUUrdkMsWUFBY3BwQyxFQUFFb3BDLFlBQ2hDLE9BQWEsR0FBVDVJLEVBQ08sRUFDSW5uQyxFQUFFaXdDLGlCQUFpQnRwQyxHQUFHLEdBQ3JCakksS0FBS0ssS0FBS29vQyxFQUM5QixDQUVxQ21KLENBQWlCdHdDLEVBQUcyRyxHQUN6RCxFS2pESSxDQUFDcW1DLEVBQXFCVSxZTDhFbkIsU0FBNEIxdEMsRUFBRzJHLEdBQ2xDLE9BQU93bUMsRUFUSixTQUE4Qm50QyxFQUFHMkcsR0FDcEMsTUFBTXdnQyxFQUFRbm5DLEVBQUUrdkMsWUFBY3BwQyxFQUFFb3BDLFlBQzFCUSxFQUFZdndDLEVBQUUrdkMsWUFBY3BwQyxFQUFFb3BDLFlBQ3BDLE9BQWlCLEdBQWJRLEVBQ08sRUFDSXZ3QyxFQUFFaXdDLGlCQUFpQnRwQyxHQUFHLEdBQ3BCd2dDLEdBQVUsRUFBSW9KLEVBQ25DLENBRXFDQyxDQUFxQnh3QyxFQUFHMkcsR0FDN0QsRUsvRUksQ0FBQ3FtQyxFQUFxQlcsY0x3Rm5CLFNBQThCM3RDLEVBQUcyRyxHQUNwQyxPQUFPd21DLEVBVEosU0FBZ0NudEMsRUFBRzJHLEdBQ3RDLE1BQU13Z0MsRUFBUW5uQyxFQUFFK3ZDLFlBQWNwcEMsRUFBRW9wQyxZQUMxQlEsRUFBWXZ3QyxFQUFFK3ZDLFlBQWNwcEMsRUFBRW9wQyxZQUNwQyxPQUFpQixHQUFiUSxFQUNPLEdBQ0l2d0MsRUFBRWl3QyxpQkFBaUJ0cEMsR0FBRyxHQUNwQndnQyxFQUFRb0osR0FBYUEsQ0FDMUMsQ0FFcUNFLENBQXVCendDLEVBQUcyRyxHQUMvRCxFS3pGSSxDQUFDcW1DLEVBQXFCWSxlTGlJbkIsU0FBK0I1dEMsRUFBRzJHLEdBQ3JDLE9BQU93bUMsRUFYSixTQUFpQ250QyxFQUFHMkcsR0FDdkMsTUFBTXFwQyxFQUFTaHdDLEVBQUVpd0MsaUJBQWlCdHBDLEdBQUcsR0FDL0J3Z0MsRUFBUW5uQyxFQUFFMHdDLFdBQVUsR0FBUS9wQyxFQUFFK3BDLFdBQVUsR0FDeENobkMsRUFBTTFKLEVBQUVRLE9BQ1JtdUMsRUFBT2psQyxFQUFNeTlCLEVBQVE2SSxFQUMzQixPQUFLQSxHQUFVdG1DLEdBQVNpbEMsR0FBUWpsQyxFQUNyQixFQUVBc21DLEVBQVM3SSxFQUFRd0gsR0FBUSxFQUFJamxDLEVBQU15OUIsRUFDbEQsQ0FFcUN3SixDQUF3QjN3QyxFQUFHMkcsR0FDaEUsRUtsSUksQ0FBQ3FtQyxFQUFxQmEsUUxtSG5CLFNBQXdCN3RDLEVBQUcyRyxHQUM5QixPQUFPd21DLEVBUEosU0FBMEJudEMsRUFBRzJHLEdBQ2hDLE9BQWdCLEdBQVozRyxFQUFFUSxPQUNLLEVBQ0lSLEVBQUVpd0MsaUJBQWlCdHBDLEdBQUcsR0FDckIzRyxFQUFFUSxNQUN0QixDQUVxQ293QyxDQUFpQjV3QyxFQUFHMkcsR0FDekQsRUtwSEksQ0FBQ3FtQyxFQUFxQmMsT0wrRG5CLFNBQXVCOXRDLEVBQUcyRyxHQUM3QixPQUFPd21DLEVBTkosU0FBeUJudEMsRUFBRzJHLEdBQy9CLE1BQU13Z0MsRUFBUW5uQyxFQUFFK3ZDLFlBQWNwcEMsRUFBRW9wQyxZQUMxQkMsRUFBU2h3QyxFQUFFaXdDLGlCQUFpQnRwQyxHQUFHLEdBQ3JDLE9BQU9xcEMsR0FBVSxFQUFJN0ksRUFBUSxFQUFJNkksRUFDckMsQ0FFcUNhLENBQWdCN3dDLEVBQUcyRyxHQUN4RCxFS2hFSSxDQUFDcW1DLEVBQXFCZSxTTHNEbkIsU0FBeUIvdEMsRUFBRzJHLEdBQy9CLE9BQU8zRyxFQUFFK3ZDLFlBQWNwcEMsRUFBRW9wQyxZQUFjLEVBQUkvdkMsRUFBRWl3QyxpQkFBaUJ0cEMsR0FBRyxFQUNyRSxFS3ZESSxDQUFDcW1DLEVBQXFCZ0IsV0wrQ25CLFNBQTJCaHVDLEVBQUcyRyxHQUNqQyxPQUFPakksS0FBS0ssS0FBS2lCLEVBQUUrdkMsWUFBY3BwQyxFQUFFb3BDLFlBQWMsRUFBSS92QyxFQUFFaXdDLGlCQUFpQnRwQyxHQUFHLEdBQy9FLEdLL0NhbXFDLEdBQStCLENBQ3hDLENBQUM1RCxFQUFtQjZELGlCTG1JakIsU0FBeUIvd0MsRUFBRzJHLEdBQy9CLE9BQU9qSSxLQUFLdUQsSUFBSWpDLEVBQUkyRyxFQUN4QixHS25JYXFxQyxHQUFtQixDQUM1QixDQUFDL0QsRUFBd0JuRyxRQUFTLENBQzlCLENBQUNpRyxFQUFtQmlCLFdBQVl1QixHQUE2QnhDLEVBQW1CaUIsWUFFcEYsQ0FBQ2YsRUFBd0JnRSxRQUFTLENBQzlCLENBQUNuRSxFQUFtQjJDLGFBQWNELEdBQTZCMUMsRUFBbUIyQyxhQUNsRixDQUFDM0MsRUFBbUI0QyxhQUFjRixHQUE2QjFDLEVBQW1CNEMsYUFDbEYsQ0FBQzVDLEVBQW1CNkMsV0FBWUgsR0FBNkIxQyxFQUFtQjZDLFlBRXBGLENBQUMxQyxFQUF3QmlFLFVBQVcsQ0FDaEMsQ0FBQ2xFLEVBQXFCSyxVQUFXeUMsR0FBK0I5QyxFQUFxQkssVUFDckYsQ0FBQ0wsRUFBcUJNLE1BQU93QyxHQUErQjlDLEVBQXFCTSxNQUNqRixDQUFDTixFQUFxQk8sWUFBYXVDLEdBQStCOUMsRUFBcUJPLFlBQ3ZGLENBQUNQLEVBQXFCUSxlQUFnQnNDLEdBQStCOUMsRUFBcUJRLGVBQzFGLENBQUNSLEVBQXFCUyxRQUFTcUMsR0FBK0I5QyxFQUFxQlMsUUFDbkYsQ0FBQ1QsRUFBcUJVLFlBQWFvQyxHQUErQjlDLEVBQXFCVSxZQUN2RixDQUFDVixFQUFxQlcsY0FBZW1DLEdBQStCOUMsRUFBcUJXLGNBQ3pGLENBQUNYLEVBQXFCWSxlQUFnQmtDLEdBQStCOUMsRUFBcUJZLGVBQzFGLENBQUNaLEVBQXFCYSxRQUFTaUMsR0FBK0I5QyxFQUFxQmEsUUFDbkYsQ0FBQ2IsRUFBcUJjLE9BQVFnQyxHQUErQjlDLEVBQXFCYyxRQUV0RixDQUFDYixFQUF3QmtFLGVBQWdCLENBQ3JDLENBQUM3QyxHQUF5QkUsU0FBVUQsR0FBb0JELEdBQXlCRSxTQUNqRixDQUFDRixHQUF5Qk0sYUFBY0wsR0FBb0JELEdBQXlCTSxhQUNyRixDQUFDTixHQUF5Qk8sbUJBQW9CTixHQUFvQkQsR0FBeUJPLG9CQUUvRixDQUFDNUIsRUFBd0J4bEMsUUFBUyxDQUM5QixDQUFDeWxDLEVBQW1CNkQsaUJBQWtCRCxHQUE2QjVELEVBQW1CNkQsbUJBR2pGSyxHQUFtQmwwQyxPQUFPa3ZCLEtBQUs0a0IsSUFDdkN6WixRQUFPLENBQUM4WixFQUFLeG5CLEtBQ2QsSUFBSyxNQUFNMk4sS0FBT3Q2QixPQUFPa3ZCLEtBQUs0a0IsR0FBaUJubkIsSUFDM0N3bkIsRUFBSTdaLEdBQU8zTixFQUNmLE9BQU93bkIsQ0FBRyxHQUNYLENBQUMsR0EwQkcsTUFBTUMsR0FNVDl6QyxZQUFZK3pDLEdBQ1I3ekMsS0FBSzZ6QyxPQUFTQSxFQUNkN3pDLEtBQUs4ekMsU0FBV0osR0FBaUJHLEVBQ3JDLENBT0FFLFdBQVdDLEdBQ1AsTUFBTUMsRUFBT1gsR0FDYixJQUFLVyxFQUFLcHpDLGVBQWViLEtBQUs4ekMsWUFBY0csRUFBS2owQyxLQUFLOHpDLFVBQVVqekMsZUFBZWIsS0FBSzZ6QyxRQUNoRixNQUFNLElBQUk1cEMsTUFBTSxtQkFBbUJqSyxLQUFLNnpDLHdCQUF3Qjd6QyxLQUFLOHpDLFlBQ3pFLE9BcEM4QjNvQyxFQW9DRG5MLEtBQUs2ekMsT0FuQy9CSCxHQUFpQnZvQyxJQUFTb2tDLEVBQXdCa0UsY0FBY25yQyxXQW9DL0QyckMsRUFBS2owQyxLQUFLOHpDLFVBQVU5ekMsS0FBSzZ6QyxRQUFRRyxHQUNqQ0MsRUFBS2owQyxLQUFLOHpDLFVBQVU5ekMsS0FBSzZ6QyxRQXRDOUIsSUFBK0Ixb0MsQ0F1Q2xDLENBT0F1QywyQkFBMkJvbUMsR0FDdkIsT0FBT3QwQyxPQUFPa3ZCLEtBQUs0a0IsR0FBaUJRLEdBQ3hDLENBSVdJLCtCQUNQLE9BQU8xMEMsT0FBT2t2QixLQUFLNGtCLEdBQ3ZCLEVDbElXLE1BQU1FLEdBQ2pCMXpDLFlBQVk4bkMsRUFBS3RiLEdBQWUsR0FVNUIsR0FUQXRzQixLQUFLbTBDLFFBQVUsRUFDZm4wQyxLQUFLbzBDLFNBQVcsRUFDaEJwMEMsS0FBS3EwQyxhQUFlLEVBQ3BCcjBDLEtBQUtzMEMsZUFBaUIsRUFDdEJ0MEMsS0FBS3UwQyx1QkFBeUIsRUFDOUJ2MEMsS0FBS3cwQyx5QkFBMkIsRUFDaEN4MEMsS0FBS3kwQyxlQUFpQixHQUN0QnowQyxLQUFLMDBDLHVCQUF5QixFQUM5QjEwQyxLQUFLMjBDLGlCQUFtQixJQUNMLGlCQUFSL00sRUFBa0IsQ0FDekIsTUFBTTlrQyxFQUFTOGtDLEVBQ1RnTixFQUFPcEIsR0FBU3FCLGNBQWMveEMsR0FDcEMsR0FBSXdwQixFQUNBLElBQUssSUFBSXRxQixFQUFJLEVBQUdBLEVBQUk0eUMsRUFBSzl4QyxPQUFRZCxJQUM3QjR5QyxFQUFLNXlDLElBQU0sRUFFbkJoQyxLQUFLODBDLE1BQVFGLEVBQ2I1MEMsS0FBS20wQyxRQUFVcnhDLENBQ25CLEtBQ0ssTUFBSThrQyxhQUFlb0csYUFLcEIsTUFBTSxJQUFJL2pDLE1BQU0sdUJBSmhCakssS0FBSzgwQyxNQUFRbE4sRUFDYjVuQyxLQUFLbTBDLFFBQVU3bkIsQ0FJbkIsQ0FDSixDQUNBdWIsYUFBZSxPQUFPN25DLEtBQUs4MEMsS0FBTyxDQUNsQ0MsV0FBVzd3QyxFQUFLOHdDLEdBQ1osR0FBSTl3QyxFQUFNLEVBQ04sTUFBTSxJQUFJK0YsTUFBTSxHQUFHK3FDLGdDQUMzQixDQUNBQyxjQUFjcDFDLEVBQU9pSSxFQUFLcEQsRUFBS3N3QyxHQUMzQixHQUFLbjFDLEVBQVFpSSxHQUFTakksRUFBUTZFLEVBQzFCLE1BQU0sSUFBSXVGLE1BQU0sWUFBWStxQyxNQUFZbjFDLG9CQUF3QmlJLE1BQVFwRCxLQUNoRixDQUNBc0ssS0FBSzJ3QixFQUFLdVYsRUFBS3R6QixHQUNYLElBQUssSUFBSTVmLEVBQUksRUFBR0EsRUFBSTRmLEVBQU81ZixJQUN2Qmt6QyxFQUFJbHpDLEdBQUsyOUIsRUFBSTM5QixFQUNyQixDQUNBbXpDLFNBQVM1aEMsR0FDTCxHQUFJdlQsS0FBS20wQyxTQUFXNWdDLEVBQU00Z0MsUUFDdEIsTUFBTSxJQUFJbHFDLE1BQU0sbUJBQW1CakssS0FBS20wQyxjQUFjNWdDLEVBQU00Z0MsWUFDaEVuMEMsS0FBS2dQLEtBQUt1RSxFQUFNdWhDLE1BQU85MEMsS0FBSzgwQyxNQUFPOTBDLEtBQUtvMUMsY0FDeENwMUMsS0FBS28wQyxVQUNULENBQ0l0eEMsYUFDQSxPQUFPOUMsS0FBS20wQyxPQUNoQixDQUNJa0IsYUFDQSxPQUFPcjFDLEtBQUs4MEMsS0FDaEIsQ0FDSU8sV0FBT3pzQyxHQUNQNUksS0FBSzgwQyxNQUFRbHNDLEVBQ2I1SSxLQUFLbzBDLFVBQ1QsQ0FDSWtCLGNBQ0EsT0FBT3QxQyxLQUFLbzBDLFFBQ2hCLENBQ0lrQixZQUFRejFDLEdBQ1JHLEtBQUtvMEMsU0FBV3YwQyxDQUNwQixDQUNBMDFDLGlCQUFpQkMsR0FBUyxHQUN0QngxQyxLQUFLbzBDLFVBQ1QsQ0FDSWdCLG1CQUNBLE9BQU9wMEMsS0FBS3dDLE9BQU94RCxLQUFLbTBDLFFBQVUsSUFBUSxHQUM5QyxDQUNJc0Isb0JBQ0EsT0FBT3oxQyxLQUFLbzBDLFVBQVlwMEMsS0FBSzAwQyxzQkFBd0IxMEMsS0FBS3kwQyxlQUFpQixFQUMvRSxDQUNJZ0Isa0JBQWN0cUMsR0FDZG5MLEtBQUt5MEMsZUFBaUJ0cEMsRUFDdEJuTCxLQUFLMDBDLHNCQUF3QjEwQyxLQUFLbzBDLFFBQ3RDLENBQ0lwVSxXQUNBLE9BQU9oZ0MsSUFDWCxDQUNBMDFDLFVBQVU3MUMsR0FDTixHQUFJQSxFQUFRLEVBQ1IsTUFBTSxJQUFJb0ssTUFBTSxrQkFDcEIsR0FBSXBLLEdBQVNHLEtBQUttMEMsUUFDZCxPQUNKLE1BQU13QixFQUFjMzBDLEtBQUt3QyxPQUFPM0QsRUFBUSxJQUFRLElBQ2hELEdBQUs4MUMsRUFBYzMxQyxLQUFLODBDLE1BQU1oeUMsUUFBYTZ5QyxFQUFjMzFDLEtBQUsyMEMsaUJBQW9CMzBDLEtBQUs4MEMsTUFBTWh5QyxPQUFTLENBQ2xHLE1BQU0rSyxFQUFVLElBQUltZ0MsWUFBWTJILEdBQ2hDMzFDLEtBQUtnUCxLQUFLaFAsS0FBSzgwQyxNQUFPam5DLEVBQVU4bkMsRUFBYzMxQyxLQUFLODBDLE1BQU1oeUMsT0FBVTlDLEtBQUs4MEMsTUFBTWh5QyxPQUFTNnlDLEdBQ3ZGMzFDLEtBQUs4MEMsTUFBUWpuQyxDQUNqQixDQUNJaE8sRUFBUUcsS0FBS20wQyxVQUNUbjBDLEtBQUttMEMsUUFBVSxHQUFPLElBQ3RCbjBDLEtBQUs4MEMsTUFBTTkwQyxLQUFLbzFDLGFBQWUsS0FBTyxJQUFPcDFDLEtBQUttMEMsUUFBVSxHQUFRLEtBQVMsR0FDakZuMEMsS0FBSzgwQyxNQUFNM21DLEtBQUssRUFBR25PLEtBQUtvMUMsYUFBY08sSUFFMUMzMUMsS0FBS20wQyxRQUFVdDBDLEVBQ2ZHLEtBQUtvMEMsVUFDVCxDQUNBMW1DLGVBQWVrb0MsRUFBTUMsR0FDakIsR0FBSUQsRUFBS3pCLFNBQVcwQixFQUFLMUIsUUFDckIsTUFBTSxJQUFJbHFDLE1BQU0sbUJBQW1CMnJDLEVBQUt6QixjQUFjMEIsRUFBSzFCLFlBQy9ELE1BQU1wakMsRUFBTyxJQUFJeWlDLEdBQVNvQyxFQUFLekIsU0FDL0JwakMsRUFBS29qQyxRQUFVeUIsRUFBS3pCLFFBQ3BCcGpDLEVBQUsrakMsTUFBUXRCLEdBQVNxQixjQUFjOWpDLEVBQUtvakMsU0FDekNwakMsRUFBS3FqQyxTQUFXLEVBQ2hCLE1BQU1wb0MsRUFBTTRwQyxFQUFLUixhQUNqQixJQUFLLElBQUlwekMsRUFBSSxFQUFHQSxFQUFJZ0ssRUFBS2hLLElBQ3JCK08sRUFBSytqQyxNQUFNOXlDLEdBQUs0ekMsRUFBS2QsTUFBTTl5QyxHQUFLNnpDLEVBQUtmLE1BQU05eUMsR0FDL0MsT0FBTytPLENBQ1gsQ0FDQXJELHFCQUFxQjVLLEdBQ2pCLE9BQU8sSUFBSWtyQyxZQUFZaHRDLEtBQUt3QyxPQUFPVixFQUFTLElBQVEsSUFDeEQsQ0FDQTRLLGtCQUFrQm1lLEdBQ2QsTUFBTTlhLEVBQU8sSUFBSXlpQyxHQUFTM25CLEVBQU8vb0IsUUFDakNpTyxFQUFLcWpDLFNBQVcsRUFDaEIsSUFBSyxJQUFJcHlDLEVBQUksRUFBR0EsRUFBSStPLEVBQUtvakMsUUFBU255QyxJQUMxQjZwQixFQUFPN3BCLEtBQ1ArTyxFQUFLK2pDLE1BQU05ekMsS0FBS3dDLE1BQU14QixFQUFJLE1BQVUsSUFBT0EsRUFBSSxHQUFRLEtBRS9ELE9BQU8rTyxDQUNYLENBRUFyRCxlQUFla1UsRUFBTzhHLEdBQ2xCLE1BQU0zWCxFQUFPLElBQUl5aUMsR0FBUzV4QixHQUMxQixJQUFLLElBQUk1ZixFQUFJLEVBQUdBLEVBQUk0ZixJQUFTNWYsRUFDekIrTyxFQUFLK2tDLE9BQU85ekMsRUFBRzBtQixFQUFLMW1CLElBRXhCLE9BREErTyxFQUFLcWpDLFNBQVcsRUFDVHJqQyxDQUNYLENBRUFyRCxrQkFBa0J0TCxHQUNkLE9BQU9veEMsR0FBU3VDLFFBQVEzekMsRUFBRVUsUUFBU2QsR0FBcUIsS0FBZkksRUFBRTZGLE9BQU9qRyxJQUN0RCxDQUVBMEwsdUJBQXVCeW1DLEVBQVNXLEdBQzVCLE1BQU0vakMsRUFBTyxJQUFJeWlDLEdBQVNXLEdBRTFCLE9BREFwakMsRUFBSytqQyxNQUFRQSxFQUNOL2pDLENBQ1gsQ0FFQXJELGlCQUFpQnNvQyxHQUNiLE1BQU1ocUMsRUFBTWdxQyxFQUFNbHpDLE9BQ1ppTyxFQUFPLElBQUl5aUMsR0FBZSxFQUFOeG5DLEdBQzFCK0UsRUFBSytqQyxNQUFRLElBQUk5RyxZQUFZaHRDLEtBQUt3QyxPQUFPd0ksRUFBTSxHQUFLLElBQ3BEK0UsRUFBS29qQyxRQUFnQixFQUFObm9DLEVBQ2YsSUFBSWlxQyxFQUFPLEVBQ1BDLEVBQU8sRUFDWCxLQUFRbHFDLEVBQU1rcUMsR0FBUyxHQUNuQm5sQyxFQUFLK2pDLE1BQU1tQixLQUEyQixJQUFkRCxFQUFNRSxJQUFvQyxJQUFsQkYsRUFBTUUsRUFBTyxLQUFjLEdBQ25ELElBQWxCRixFQUFNRSxFQUFPLEtBQWMsSUFBNkIsSUFBbEJGLEVBQU1FLEVBQU8sS0FBYyxHQUN2RUEsR0FBUSxFQVNaLE9BUElscUMsRUFBTWtxQyxHQUFRLElBQ2RubEMsRUFBSytqQyxNQUFNbUIsSUFBMkIsSUFBbEJELEVBQU1FLEVBQU8sS0FBYyxJQUMvQ2xxQyxFQUFNa3FDLEdBQVEsSUFDZG5sQyxFQUFLK2pDLE1BQU1tQixLQUE0QixJQUFsQkQsRUFBTUUsRUFBTyxLQUFjLEdBQ2hEbHFDLEVBQU1rcUMsR0FBUSxJQUNkbmxDLEVBQUsrakMsTUFBTW1CLElBQXVCLElBQWRELEVBQU1FLElBQzlCbmxDLEVBQUtxakMsU0FBVyxFQUNUcmpDLENBQ1gsQ0FDQXpJLFdBQ0ksTUFBTyxHQUFHdEksS0FBS20wQyxpQkFBaUJuMEMsS0FBS2d6QyxXQUFVLFFBQ25ELENBRUFtRCxPQUFPNWlDLEdBQ0gsR0FBSXZULE1BQVF1VCxFQUNSLE9BQU8sRUFDWCxHQUFhLE1BQVRBLEVBQ0EsT0FBTyxFQUNYLEdBQUl2VCxLQUFLbTBDLFNBQVc1Z0MsRUFBTTRnQyxRQUN0QixPQUFPLEVBQ1gsR0FBb0IsR0FBaEJuMEMsS0FBS20wQyxRQUNMLE9BQU8sRUFDWCxJQUFLLElBQUlueUMsRUFBSSxFQUFHQSxFQUFJaEMsS0FBSzgwQyxNQUFNaHlDLE9BQVMsRUFBR2QsSUFDdkMsR0FBSWhDLEtBQUs4MEMsTUFBTTl5QyxJQUFNdVIsRUFBTXVoQyxNQUFNOXlDLEdBQzdCLE9BQU8sRUFDZixJQUFLLElBQUlBLEVBQThCLEdBQXpCaEMsS0FBSzgwQyxNQUFNaHlDLE9BQVMsR0FBUWQsRUFBSWhDLEtBQUttMEMsUUFBU255QyxJQUN4RCxHQUFJaEMsS0FBS28yQyxPQUFPcDBDLElBQU11UixFQUFNNmlDLE9BQU9wMEMsR0FDL0IsT0FBTyxFQUVmLE9BQU8sQ0FDWCxDQUVBNk4sUUFDSSxNQUFNd21DLEVBQVcsSUFBSTdDLEdBQVMsR0FBRyxHQUlqQyxPQUhBNkMsRUFBU3ZCLE1BQVE5RyxZQUFZNXhCLEtBQUtwYyxLQUFLODBDLE9BQ3ZDdUIsRUFBU2xDLFFBQVVuMEMsS0FBS20wQyxRQUN4QmtDLEVBQVNqQyxTQUFXcDBDLEtBQUtvMEMsU0FDbEJpQyxDQUNYLENBRUFuZCxLQUFLeFEsRUFBTThzQixHQUNQeDFDLEtBQUtzMkMsUUFBTyxHQUFPLEdBQ25CLElBQUssSUFBSXQwQyxFQUFJLEVBQUdBLEVBQUloQyxLQUFLbTBDLFFBQVNueUMsSUFDMUIwbUIsRUFBSzFtQixLQUNMaEMsS0FBSzgwQyxNQUFNOXpDLEtBQUt3QyxNQUFNeEIsRUFBSSxNQUFVLElBQU9BLEVBQUksR0FBUSxLQUcvRCxPQURBaEMsS0FBS3UxQyxpQkFBaUJDLEdBQ2Z4MUMsSUFDWCxDQUVBdTJDLE9BQU9mLEdBQVMsR0FDWixJQUFLLElBQUl4ekMsRUFBSSxFQUFHQSxFQUFJaEMsS0FBSzgwQyxNQUFNaHlDLE9BQVFkLElBQ25DaEMsS0FBSzgwQyxNQUFNOXlDLEtBQU8sRUFDdEJoQyxLQUFLdTFDLGlCQUFpQkMsRUFDMUIsQ0FFQWMsT0FBT3oyQyxFQUFPMjFDLEdBQVMsR0FDbkIsTUFBTWdCLEVBQVEzMkMsR0FBUyxFQUFJLEVBQ3JCbU0sRUFBTWhNLEtBQUtvMUMsYUFDakIsSUFBSyxJQUFJcHpDLEVBQUksRUFBR0EsRUFBSWdLLEVBQUtoSyxJQUNyQmhDLEtBQUs4MEMsTUFBTTl5QyxHQUFLdzBDLEVBQ3BCeDJDLEtBQUt1MUMsaUJBQWlCQyxFQUMxQixDQUlBaUIsV0FBV0MsRUFBUzcyQyxHQUFRLEVBQU04MkMsR0FBUSxFQUFNbkIsR0FBUyxHQUNqRG1CLEdBQ0EzMkMsS0FBS3MyQyxRQUFRejJDLEdBQU8sR0FDeEIsSUFBSyxNQUFNbUMsS0FBSzAwQyxFQUNaMTJDLEtBQUs0MkMsUUFBUTUwQyxFQUFHbkMsR0FDcEJHLEtBQUt1MUMsaUJBQWlCQyxFQUMxQixDQUNBcUIsV0FBV0gsRUFBUzcyQyxHQUFRLEdBQ3hCLElBQUssTUFBTTJNLEtBQVNrcUMsRUFDaEIsR0FBSTEyQyxLQUFLbzJDLE9BQU81cEMsSUFBVTNNLEVBQ3RCLE9BQU8sRUFFZixPQUFPLENBQ1gsQ0FDQWkzQyxTQUFTSixFQUFTNzJDLEdBQVEsR0FDdEIsSUFBSyxNQUFNMk0sS0FBU2txQyxFQUNoQixHQUFJMTJDLEtBQUtvMkMsT0FBTzVwQyxJQUFVM00sRUFDdEIsT0FBTyxFQUVmLE9BQU8sQ0FDWCxDQUNBazNDLFNBQVNDLEVBQU9uM0MsR0FBUSxFQUFNODJDLEdBQVEsRUFBTW5CLEdBQVMsRUFBTXlCLEdBQWEsR0FHcEUsR0FGSU4sR0FBU00sR0FDVGozQyxLQUFLczJDLFFBQVF6MkMsR0FBTyxHQUNwQm8zQyxFQUNBLElBQUssSUFBSWoxQyxFQUFJLEVBQUdBLEVBQUloQyxLQUFLbTBDLFFBQVNueUMsSUFDMUJnMUMsRUFBTWgxQyxJQUNOaEMsS0FBSzQyQyxRQUFRNTBDLEVBQUduQyxRQUl4QixJQUFLLElBQUltQyxFQUFJLEVBQUdBLEVBQUloQyxLQUFLbTBDLFFBQVNueUMsSUFDOUJoQyxLQUFLNDJDLFFBQVE1MEMsRUFBR2cxQyxFQUFNaDFDLEdBQUtuQyxHQUFTQSxHQUU1Q0csS0FBS3UxQyxpQkFBaUJDLEVBQzFCLENBQ0EwQixTQUFTOTZCLEVBQU0rNkIsR0FDWG4zQyxLQUFLaTFDLGNBQWM3NEIsRUFBTSxFQUFHcGMsS0FBS20wQyxRQUFVLEVBQUcsUUFDOUNuMEMsS0FBS2kxQyxjQUFja0MsRUFBSSxFQUFHbjNDLEtBQUttMEMsUUFBUyxNQUN4QyxNQUFNcnlDLEVBQU0sR0FDWixJQUFLLElBQUlFLEVBQUlvYSxFQUFNcGEsRUFBSW0xQyxJQUFNbjFDLEVBQ3pCRixFQUFJVyxLQUFLekMsS0FBS28yQyxPQUFPcDBDLElBQ3pCLE9BQU93eEMsR0FBUzRELFdBQVd0MUMsRUFDL0IsQ0FDQXUxQyxlQUFlajdCLEVBQU0rNkIsR0FDakJuM0MsS0FBS2kxQyxjQUFjNzRCLEVBQU0sRUFBR3BjLEtBQUttMEMsUUFBVSxFQUFHLFFBQzlDbjBDLEtBQUtpMUMsY0FBY2tDLEVBQUksRUFBR24zQyxLQUFLbTBDLFFBQVMsTUFDeEMsTUFBTXJ5QyxFQUFNLEdBQ1osSUFBSyxJQUFJRSxFQUFJb2EsRUFBTXBhLEVBQUltMUMsSUFBTW4xQyxFQUN6QkYsRUFBSVcsS0FBS3pDLEtBQUtvMkMsT0FBT3AwQyxJQUN6QixPQUFPRixDQUNYLENBQ0F3MUMsU0FBU2w3QixFQUFNKzZCLEVBQUl0M0MsRUFBTzIxQyxHQUFTLEdBQy9CeDFDLEtBQUtpMUMsY0FBYzc0QixFQUFNLEVBQUdwYyxLQUFLbTBDLFFBQVUsRUFBRyxRQUM5Q24wQyxLQUFLaTFDLGNBQWNrQyxFQUFJLEVBQUduM0MsS0FBS20wQyxRQUFVLEVBQUcsTUFDNUMsTUFBTXJPLEVBQVE5a0MsS0FBSzhHLElBQUlzVSxFQUFNKzZCLEdBQ3ZCNUwsRUFBTXZxQyxLQUFLMEQsSUFBSTBYLEVBQU0rNkIsR0FFM0IsR0FBSXQzQyxFQUNBLElBQUssSUFBSW1DLEVBQUk4akMsRUFBTzlqQyxHQUFLdXBDLEVBQUt2cEMsSUFDMUJoQyxLQUFLdTNDLFFBQVF2MUMsUUFHakIsSUFBSyxJQUFJQSxFQUFJOGpDLEVBQU85akMsR0FBS3VwQyxFQUFLdnBDLElBQzFCaEMsS0FBS3czQyxTQUFTeDFDLEdBR3RCLE9BREFoQyxLQUFLdTFDLGlCQUFpQkMsR0FDZngxQyxJQUNYLENBRUF5M0MsVUFBVTkxQyxFQUFHOUIsRUFBTzIxQyxHQUFTLEdBQ3pCLEdBQUk3ekMsRUFBSSxHQUFLQSxFQUFJM0IsS0FBS20wQyxRQUNsQixNQUFNLElBQUlscUMsTUFBTSw4QkFDaEJ0SSxFQUFJM0IsS0FBS20wQyxRQUFVLEdBQ25CbjBDLEtBQUt5M0MsVUFBVXozQyxLQUFLbTBDLFFBQVV4eUMsR0FBSTlCLEdBQ3RDRyxLQUFLczJDLFFBQVF6MkMsR0FDYixJQUFLLElBQUk4UCxFQUFJLEVBQUdBLEVBQUloTyxHQUFJLENBQ3BCLE1BQU1LLEVBQUloQixLQUFLd0MsTUFBTXhDLEtBQUtDLFNBQVdqQixLQUFLbTBDLFNBQ3RDbjBDLEtBQUtvMkMsT0FBT3AwQyxJQUFNbkMsSUFFdEJHLEtBQUs0MkMsUUFBUTUwQyxFQUFHbkMsR0FDaEI4UCxJQUNKLENBQ0EzUCxLQUFLdTFDLGlCQUFpQkMsRUFDMUIsQ0FHQXIzQixJQUFJdGUsRUFBTzIxQyxHQUFTLEdBQ2hCLEdBQUl4MUMsS0FBS20wQyxTQUFXdDBDLEVBQU1zMEMsUUFDdEIsTUFBTSxJQUFJbHFDLE1BQU0seUJBQ3BCLElBQUssSUFBSWpJLEVBQUksRUFBR2dLLEVBQU1oTSxLQUFLbzFDLGFBQWNwekMsRUFBSWdLLEVBQUtoSyxJQUM5Q2hDLEtBQUs4MEMsTUFBTTl5QyxJQUFNbkMsRUFBTWkxQyxNQUFNOXlDLEdBRWpDLE9BREFoQyxLQUFLdTFDLGlCQUFpQkMsR0FDZngxQyxJQUNYLENBR0EwM0MsT0FBTzczQyxFQUFPMjFDLEdBQVMsR0FDbkIsR0FBSXgxQyxLQUFLbTBDLFNBQVd0MEMsRUFBTXMwQyxRQUN0QixNQUFNLElBQUlscUMsTUFBTSx5QkFDcEIsTUFBTStCLEVBQU1oTSxLQUFLbzFDLGFBQ2pCLElBQUssSUFBSWMsRUFBTyxFQUFHQSxFQUFPbHFDLEVBQUtrcUMsSUFDM0JsMkMsS0FBSzgwQyxNQUFNb0IsS0FBVXIyQyxFQUFNaTFDLE1BQU1vQixHQUVyQyxPQURBbDJDLEtBQUt1MUMsaUJBQWlCQyxHQUNmeDFDLElBQ1gsQ0FHQTIzQyxPQUFPOTNDLEVBQU8yMUMsR0FBUyxHQUNuQixHQUFJeDFDLEtBQUttMEMsU0FBV3QwQyxFQUFNczBDLFFBQ3RCLE1BQU0sSUFBSWxxQyxNQUFNLHlCQUNwQixJQUFLLElBQUlqSSxFQUFJLEVBQUdnSyxFQUFNaE0sS0FBS28xQyxhQUFjcHpDLEVBQUlnSyxFQUFLaEssSUFDOUNoQyxLQUFLODBDLE1BQU05eUMsSUFBT2hDLEtBQUs4MEMsTUFBTTl5QyxHQUFNbkMsRUFBTWkxQyxNQUFNOXlDLEdBRW5ELE9BREFoQyxLQUFLdTFDLGlCQUFpQkMsR0FDZngxQyxJQUNYLENBRUF3ZixJQUFJZzJCLEdBQVMsR0FDVCxJQUFLLElBQUl4ekMsRUFBSSxFQUFHZ0ssRUFBTWhNLEtBQUtvMUMsYUFBY3B6QyxFQUFJZ0ssRUFBS2hLLElBQzlDaEMsS0FBSzgwQyxNQUFNOXlDLElBQU1oQyxLQUFLODBDLE1BQU05eUMsR0FFaEMsT0FEQWhDLEtBQUt1MUMsaUJBQWlCQyxHQUNmeDFDLElBQ1gsQ0FHQXNlLEdBQUd6ZSxFQUFPMjFDLEdBQVMsR0FDZixHQUFJeDFDLEtBQUttMEMsU0FBV3QwQyxFQUFNczBDLFFBQ3RCLE1BQU0sSUFBSWxxQyxNQUFNLHlCQUNwQixJQUFLLElBQUlqSSxFQUFJLEVBQUdnSyxFQUFNaE0sS0FBS28xQyxhQUFjcHpDLEVBQUlnSyxFQUFLaEssSUFDOUNoQyxLQUFLODBDLE1BQU05eUMsSUFBTW5DLEVBQU1pMUMsTUFBTTl5QyxHQUVqQyxPQURBaEMsS0FBS3UxQyxpQkFBaUJDLEdBQ2Z4MUMsSUFDWCxDQUdBeWUsSUFBSTVlLEVBQU8yMUMsR0FBUyxHQUNoQixHQUFJeDFDLEtBQUttMEMsU0FBV3QwQyxFQUFNczBDLFFBQ3RCLE1BQU0sSUFBSWxxQyxNQUFNLHlCQUNwQixJQUFLLElBQUlqSSxFQUFJLEVBQUdnSyxFQUFNaE0sS0FBS28xQyxhQUFjcHpDLEVBQUlnSyxFQUFLaEssSUFDOUNoQyxLQUFLODBDLE1BQU05eUMsSUFBTW5DLEVBQU1pMUMsTUFBTTl5QyxHQUVqQyxPQURBaEMsS0FBS3UxQyxpQkFBaUJDLEdBQ2Z4MUMsSUFDWCxDQUVBNDNDLFNBQVNDLEVBQUtsMkMsRUFBRyttQixHQUFPLEdBRXBCLEdBREExb0IsS0FBS2kxQyxjQUFjNEMsRUFBSyxFQUFHNzNDLEtBQUttMEMsUUFBUyxPQUNoQyxHQUFMeHlDLEVBQ0EsT0FJSixNQUFNbTJDLEVBQVk5M0MsS0FBS20wQyxRQUN2Qm4wQyxLQUFLMDFDLFVBQVUxMUMsS0FBS20wQyxRQUFVeHlDLEdBRTlCLElBQUssSUFBSUssRUFBSTgxQyxFQUFZLEVBQUc5MUMsR0FBSzYxQyxFQUFLNzFDLElBQ2xDaEMsS0FBSzgxQyxPQUFPOXpDLEVBQUlMLEVBQUczQixLQUFLbzJDLE9BQU9wMEMsSUFDbkMsSUFBSyxJQUFJQSxFQUFJNjFDLEVBQUs3MUMsRUFBSTYxQyxFQUFNbDJDLEVBQUdLLElBQzNCaEMsS0FBSzgxQyxPQUFPOXpDLEVBQUcwbUIsRUFFdkIsQ0FHQXF2QixTQUFTRixFQUFLbDJDLEVBQUksR0FFZCxHQUFJQSxFQUFJLEVBQ0osTUFBTSxJQUFJc0ksTUFBTSx3QkFFcEIsR0FEQWpLLEtBQUtpMUMsY0FBYzRDLEVBQUssRUFBRzczQyxLQUFLbTBDLFFBQVV4eUMsRUFBRyxPQUN6QzNCLEtBQUs2akMsVUFBUyxHQUNkLElBQUssSUFBSTdoQyxFQUFJNjFDLEVBQUs3MUMsRUFBSWhDLEtBQUttMEMsUUFBVXh5QyxFQUFHSyxJQUNwQ2hDLEtBQUs4MUMsT0FBTzl6QyxFQUFHaEMsS0FBS28yQyxPQUFPcDBDLEVBQUlMLElBRXZDM0IsS0FBSzAxQyxVQUFVMTFDLEtBQUttMEMsUUFBVXh5QyxFQUNsQyxDQUNBcTJDLGFBQWFDLEVBQU12dkIsR0FBTyxHQUN0QixHQUFJMW9CLEtBQUttMEMsU0FBVzhELEVBQUtuMUMsT0FDckIsTUFBTSxJQUFJbUgsTUFBTSx5QkFDcEIsR0FBSWd1QyxHQUFRajRDLEtBQ1JBLEtBQUswMUMsVUFBVXVDLEVBQUtqRixXQUFXdHFCLElBQy9CMW9CLEtBQUtzMkMsUUFBUTV0QixPQUVaLENBQ0QsSUFBSXd2QixFQUFTLEVBQ2IsSUFBSyxJQUFJQyxHQUFVLEdBQStDLElBQTNDQSxFQUFTRixFQUFLRyxTQUFTRCxHQUFTenZCLEtBQ25EMW9CLEtBQUs0MkMsUUFBUXNCLElBQVVsNEMsS0FBS28yQyxPQUFPK0IsSUFDdkNuNEMsS0FBS20wQyxRQUFVK0QsRUFDZmw0QyxLQUFLbzBDLFVBQ1QsQ0FDQSxPQUFPcDBDLElBQ1gsQ0FFQW8yQyxPQUFPeUIsR0FDSCxPQUFxRSxJQUE3RDczQyxLQUFLODBDLE1BQU05ekMsS0FBS3dDLE1BQU1xMEMsRUFBTSxLQUFVLElBQVksR0FBTkEsR0FDeEQsQ0FFQS9CLE9BQU8rQixFQUFLUSxFQUFLN0MsR0FBUyxHQUN0QngxQyxLQUFLNDJDLFFBQVFpQixFQUFLUSxHQUVkcjRDLEtBQUtvMEMsVUFHYixDQUVBd0MsUUFBUTUwQyxFQUFHbkMsR0FDSEEsRUFDQUcsS0FBSzgwQyxNQUFNOXpDLEtBQUt3QyxNQUFNeEIsRUFBSSxNQUFVLElBQVUsR0FBSkEsR0FFMUNoQyxLQUFLODBDLE1BQU05ekMsS0FBS3dDLE1BQU14QixFQUFJLFFBQVksSUFBVSxHQUFKQSxHQUNwRCxDQUNBdTFDLFFBQVFNLEdBQ0o3M0MsS0FBSzgwQyxNQUFNOXpDLEtBQUt3QyxNQUFNcTBDLEVBQU0sTUFBVSxJQUFZLEdBQU5BLEVBQ2hELENBQ0FMLFNBQVNLLEdBQ0w3M0MsS0FBSzgwQyxNQUFNOXpDLEtBQUt3QyxNQUFNcTBDLEVBQU0sUUFBWSxJQUFZLEdBQU5BLEdBQ2xELENBQ0F4RixZQUNJLE9BQU9yeUMsS0FBS2d6QyxXQUFVLEVBQzFCLENBQ0FzRixhQUNJLE9BQU90NEMsS0FBS2d6QyxXQUFVLEVBQzFCLENBRUFBLFVBQVVuekMsR0FDTixHQUFvQixHQUFoQkcsS0FBS20wQyxRQUNMLE9BQU8sRUFDWCxHQUFJbjBDLEtBQUt1MEMsdUJBQXlCdjBDLEtBQUtvMEMsU0FBVSxDQUM3Q3AwQyxLQUFLczBDLGVBQWlCLEVBQ3RCLE1BQU10b0MsRUFBTWhNLEtBQUtvMUMsYUFDakIsSUFBSXB6QyxFQUFJLEVBQ1IsS0FBT0EsRUFBSWdLLEVBQU0sRUFBR2hLLElBQ2hCLElBQUssSUFBSTJOLEVBQUkzUCxLQUFLODBDLE1BQU05eUMsR0FBUyxHQUFMMk4sRUFBUUEsS0FBTyxFQUN2QzNQLEtBQUtzMEMsZ0JBQWtCZCxHQUFTK0UsWUFBZ0IsSUFBSjVvQyxHQUlwRCxJQUFJQSxFQUFJM1AsS0FBSzgwQyxNQUFNOXlDLEdBQ25CLE1BQU13MkMsRUFBK0IsR0FBZng0QyxLQUFLbTBDLFFBRzNCLElBRnFCLEdBQWpCcUUsSUFDQTdvQyxLQUFPLFlBQWdCNm9DLElBQ2YsR0FBTDdvQyxFQUFRQSxLQUFPLEVBQ2xCM1AsS0FBS3MwQyxnQkFBa0JkLEdBQVMrRSxZQUFnQixJQUFKNW9DLEdBQ2hEM1AsS0FBS3UwQyxzQkFBd0J2MEMsS0FBS28wQyxRQUN0QyxDQUNBLE9BQVF2MEMsRUFBUUcsS0FBS3MwQyxlQUFpQnQwQyxLQUFLbTBDLFFBQVVuMEMsS0FBS3MwQyxjQUM5RCxDQUVBbUUsV0FBV3pCLEdBQ1AsSUFBSXhyQyxFQUFTLEVBQ2IsR0FBSXhMLEtBQUtxeUMsYUFBZXJ5QyxLQUFLbTBDLFFBQ3pCLElBQUssSUFBSW55QyxFQUFJLEVBQUdBLEVBQUloQyxLQUFLbTBDLFFBQVNueUMsSUFDOUJ3SixHQUFVd3JDLEVBQU1oMUMsR0FBSyxFQUFJLE9BRzdCLElBQUssSUFBSUEsR0FBSyxHQUFvQyxJQUFoQ0EsRUFBSWhDLEtBQUtvNEMsU0FBU3AyQyxHQUFHLEtBQ25Dd0osR0FBVXdyQyxFQUFNaDFDLEdBQUssRUFBSSxFQUVqQyxPQUFPd0osQ0FDWCxDQUVBK21DLGlCQUFpQm1HLEVBQVE3NEMsR0FDckIsR0FBb0IsR0FBaEJHLEtBQUttMEMsUUFDTCxPQUFPLEVBQ1gsSUFBSXZ5QixFQUFRLEVBQ1osTUFBTTVWLEVBQU1oTSxLQUFLbzFDLGFBQ2pCLElBQUlwekMsRUFBSSxFQUNSLEtBQU9BLEVBQUlnSyxFQUFNLEVBQUdoSyxJQUNoQixJQUFLLElBQUkyTixFQUFJM1AsS0FBSzgwQyxNQUFNOXlDLEdBQUswMkMsRUFBTzVELE1BQU05eUMsR0FBUyxHQUFMMk4sRUFBUUEsS0FBTyxFQUN6RGlTLEdBQVM0eEIsR0FBUytFLFlBQWdCLElBQUo1b0MsR0FHdEMsSUFBSUEsRUFBSTNQLEtBQUs4MEMsTUFBTTl5QyxHQUFLMDJDLEVBQU81RCxNQUFNOXlDLEdBQ3JDLE1BQU13MkMsRUFBK0IsR0FBZng0QyxLQUFLbTBDLFFBRzNCLElBRnFCLEdBQWpCcUUsSUFDQTdvQyxLQUFPLFlBQWdCNm9DLElBQ2YsR0FBTDdvQyxFQUFRQSxLQUFPLEVBQ2xCaVMsR0FBUzR4QixHQUFTK0UsWUFBZ0IsSUFBSjVvQyxHQUNsQyxPQUFROVAsRUFBUStoQixFQUFRNWhCLEtBQUttMEMsUUFBVXZ5QixDQUMzQyxDQUNBKzBCLFFBQ0kzMkMsS0FBSzAxQyxVQUFVLEVBQ25CLENBQ0E3UixTQUFTaGtDLEdBQ0wsT0FBT0csS0FBS280QyxVQUFVLEVBQUd2NEMsSUFBVSxDQUN2QyxDQUNJODRDLGNBQ0EsT0FBTzM0QyxLQUFLZ3pDLFdBQVUsSUFBU2h6QyxLQUFLbTBDLE9BQ3hDLENBQ0l5RSxlQUNBLE9BQU81NEMsS0FBS2d6QyxXQUFVLElBQVVoekMsS0FBS20wQyxPQUN6QyxDQUNJMEUsY0FDQSxPQUFPNzRDLEtBQUtnekMsV0FBVSxHQUFRLENBQ2xDLENBQ0k4RixlQUNBLE9BQU85NEMsS0FBS2d6QyxXQUFVLEdBQVMsQ0FDbkMsQ0FHQW9GLFNBQVM1ckMsRUFBTzNNLEdBQVEsR0FFcEIsR0FEQUcsS0FBS2kxQyxjQUFjem9DLEdBQVEsRUFBR3hNLEtBQUttMEMsUUFBUyxTQUN4QzNuQyxHQUFTeE0sS0FBS20wQyxRQUFVLEVBQ3hCLE9BQVEsRUFFWixJQUFJNEUsRUFBcUIsSUFEekJ2c0MsRUFBUUEsRUFBUSxFQUFJLEVBQUlBLEVBQVEsR0FFaEMsTUFBTXdzQyxFQUFVaDVDLEtBQUtvMUMsYUFDckIsSUFBSyxJQUFJcHpDLEVBQUloQixLQUFLd0MsTUFBTWdKLEVBQVEsSUFBS3hLLEVBQUlnM0MsRUFBU2gzQyxJQUFLLENBQ25ELElBQUkyTixFQUFLOVAsRUFBUUcsS0FBSzgwQyxNQUFNOXlDLElBQU1oQyxLQUFLODBDLE1BQU05eUMsR0FDN0MsR0FBa0IsR0FBZCsyQyxFQUNBcHBDLEdBQU8sWUFBY29wQyxFQUFjLFdBQ25DQSxFQUFhLE9BRVosSUFBS2w1QyxJQUFlLFlBQU44UCxFQUNmLFNBRUosSUFBSyxJQUFJbk4sRUFBSSxFQUFRLEdBQUxtTixFQUFRbk4sR0FBSyxFQUFHbU4sS0FBTyxFQUFHLENBQ3RDLE1BQU1TLEVBQUlvakMsR0FBU3lGLFlBQWdCLElBQUp0cEMsR0FDL0IsR0FBSVMsR0FBSyxFQUVMLE9BREE1RCxFQUFRNEQsRUFBUyxHQUFKcE8sRUFBVVEsSUFDVnhDLEtBQUttMEMsU0FDTixFQUNMM25DLENBRWYsQ0FDSixDQUNBLE9BQVEsQ0FDWixDQUVBMHNDLFNBQVMxc0MsRUFBTzNNLEdBQVEsR0FDcEIsR0FBYSxHQUFUMk0sRUFDQSxPQUFRLEVBQ1p4TSxLQUFLaTFDLGNBQWN6b0MsR0FBUSxFQUFHeE0sS0FBS20wQyxRQUFTLFNBRzVDLElBQUlxRSxFQUF5QixHQUY3QmhzQyxFQUFRQSxFQUFRLEVBQUl4TSxLQUFLbTBDLFFBQVUsRUFBSTNuQyxFQUFRLEdBRWIsR0FDbEMsSUFBSyxJQUFJeEssRUFGVWhCLEtBQUt3QyxNQUFNZ0osRUFBUSxJQUVieEssR0FBSyxFQUFHQSxJQUFLLENBQ2xDLElBQUkyTixFQUFLOVAsRUFBUUcsS0FBSzgwQyxNQUFNOXlDLElBQU1oQyxLQUFLODBDLE1BQU05eUMsR0FDeEIsR0FBakJ3MkMsSUFDQTdvQyxLQUFPLFlBQWdCNm9DLEdBQ3ZCQSxFQUFnQixHQUVwQixJQUFLLElBQUloMkMsRUFBSSxHQUFTLEdBQUxtTixFQUFRbk4sR0FBSyxFQUFHbU4sSUFBTSxFQUFHLENBQ3RDLE1BQU1TLEVBQUlvakMsR0FBUzJGLFdBQVd4cEMsSUFBTSxJQUNwQyxHQUFJUyxHQUFLLEVBQ0wsT0FBT0EsRUFBUyxHQUFKcE8sRUFBVVEsQ0FDOUIsQ0FDSixDQUNBLE9BQVEsQ0FDWixFQUVKZ3hDLEdBQVMrRSxZQUFjYSxVQUFVaDlCLEtBQUssQ0FDbEMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakRvM0IsR0FBU3lGLFlBQWNHLFVBQVVoOUIsS0FBSyxFQUNqQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM5QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUM3QyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxJQUVqRG8zQixHQUFTMkYsV0FBYUMsVUFBVWg5QixLQUFLLEVBQ2hDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzlDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLElDNW1CMUMsTUFBTWk5QixHQUFTLzJDLEdBQU1BLFFD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QUFNLE9BQVEsR0FBUSxZQUNuQyxhQUFhNm9ELEdBQWNsSSxFQUFJd0YsRUFDbkMsR0FDSixDQVdPLFNBQVN5RyxHQUF5QmpNLEVBQUl5RSxFQUFnQjdvQixFQUFPbjdCLEVBQUdlLEVBQUdvcUQsR0FDdEUsT0FBTyxHQUFVdnNELFVBQU0sT0FBUSxHQUFRLFlBQ25DLE1BQU13c0QsUUFBcUJ0SCxHQUFnQixDQUFFM29CLE1BQU9BLEVBQU93akIsT0FBUWMsR0FBWTJFLE9BQVFwa0QsRUFBR3FrRCxPQUFRdGpELEdBQUt3K0MsRUFBSXlFLEdBRzNHLE9BRkltSCxHQUNBckUsR0FBZ0J2SCxFQUFJNkwsR0FDakJoRSxHQUFlZ0UsRUFDMUIsR0FDSixDQU9PLFNBQVNLLEdBQXlCbE0sRUFBSXdGLEdBQ3pDLE9BQU8sR0FBVW5tRCxVQUFNLE9BQVEsR0FBUSxZQUNuQyxhQUFhNm9ELEdBQWNsSSxFQUFJd0YsRUFDbkMsR0FDSixDQVdPLFNBQVMyRyxHQUFzQm5NLEVBQUl5RSxFQUFnQjdvQixFQUFPcXBCLEVBQU9DLEVBQU8wRyxHQUMzRSxPQUFPLEdBQVV2c0QsVUFBTSxPQUFRLEdBQVEsWUFDbkMsTUFBTXdzRCxRQUFxQnRILEdBQWdCLENBQUUzb0IsTUFBT0EsRUFBT3dqQixPQUFRZ0IsR0FBUzZFLE1BQU9BLEVBQU9DLE1BQU9BLEdBQVNsRixFQUFJeUUsR0FHOUcsT0FGSW1ILEdBQ0FyRSxHQUFnQnZILEVBQUk2TCxHQUNqQmhFLEdBQWVnRSxFQUMxQixHQUNKLENBT08sU0FBU08sR0FBc0JwTSxFQUFJd0YsR0FDdEMsT0FBTyxHQUFVbm1ELFVBQU0sT0FBUSxHQUFRLFlBQ25DLGFBQWE2b0QsR0FBY2xJLEVBQUl3RixFQUNuQyxHQUNKLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGtlY2tlbHQvdHNuZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL2phcm8td2lua2xlci10eXBlc2NyaXB0L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvZXJyb3JDYWxjdWxhdGlvbi5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktcmVzY2FsZS9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LW1heC9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LW1pbi9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LXJlc2NhbGUvbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LW1heC9saWItZXM2L2luZGV4LmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2luc3BlY3QuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvdXRpbC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvc3RhdC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9tYXRoT3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy93cmFwL1dyYXBwZXJNYXRyaXgyRC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9sdS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy91dGlsLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RjL3FyLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RjL3N2ZC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvc3RlcC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kZWNvbXBvc2l0aW9ucy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9oZWFwLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy91bWFwLWpzL2Rpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9ubl9kZXNjZW50LmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy91bWFwLWpzL2Rpc3QvdHJlZS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3VtYXAuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC91dGlscy5qcyIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dldCBqYXZhc2NyaXB0IGNodW5rIGZpbGVuYW1lIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2pzb25wIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vZWRhL2V4dGVybmFsIHZhciBcImdyb2tcIiIsIndlYnBhY2s6Ly9lZGEvZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9lZGEvZXh0ZXJuYWwgdmFyIFwiREdcIiIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdGVzdC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy90dXRvcmlhbHMvc3JjL2RlbW8tc2NyaXB0LmpzIiwid2VicGFjazovL2VkYS8uL3dhc20vY2FsbFdhc20uanMiLCJ3ZWJwYWNrOi8vZWRhLy4vd2FzbS9jYWxsV2FzbUZvcldlYldvcmtlci5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9wcm94eS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L2Rpc3RhbmNlLW1hdHJpeC1zZXJ2aWNlLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zcGUuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL2Zhc3Rlc3QtbGV2ZW5zaHRlaW4vZXNtL21vZC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy9jb25zdHMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMvbmVlZGxlbWFuLXd1bnNjaC5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMvbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zL2hhbW1pbmcuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zL2xldmVuc3RlaW4uanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYml0LWFycmF5LmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9kaXN0YW5jZS1tYXRyaXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3JlZHVjZS1kaW1lbnNpb25hbGl0eS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9zcmMvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vZWRhLy4vc3JjL2VkYS10b29scy50cyIsIndlYnBhY2s6Ly9lZGEvLi93YXNtL0VEQUFQSS5qcyIsIndlYnBhY2s6Ly9lZGEvLi9zcmMvZWRhLXVpLnRzIiwid2VicGFjazovL2VkYS8uL3NyYy9kYXRhLWdlbmVyYXRvcnMudHMiLCJ3ZWJwYWNrOi8vZWRhLy4vc3JjL3N2bS50cyIsIndlYnBhY2s6Ly9lZGEvLi9zcmMvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbnZhciB0c25lXzEgPSByZXF1aXJlKFwiLi90c25lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVFNORVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHNuZV8xLlRTTkU7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbmNsYXNzIFRTTkUge1xuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuICAgICAgICAvLyByZXR1cm4gMCBtZWFuIHVuaXQgc3RhbmRhcmQgZGV2aWF0aW9uIHJhbmRvbSBudW1iZXJcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgIHRoaXMudlZhbHVlID0gMC4wO1xuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgICAgICBvcHQgPSBvcHQgfHwge307XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ3BlcnBsZXhpdHknLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICAgICAgdGhpcy5kaW0gPSB0aGlzLmdldG9wdChvcHQsICdkaW0nLCAyKTsgLy8gYnkgZGVmYXVsdCAyLUQgdFNORVxuICAgICAgICB0aGlzLmVwc2lsb24gPSB0aGlzLmdldG9wdChvcHQsICdlcHNpbG9uJywgMTApOyAvLyBsZWFybmluZyByYXRlXG4gICAgfVxuICAgIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2UgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdhdXNzUmFuZG9tKCkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5WKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCB2ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCByID0gdSAqIHUgKyB2ICogdjtcbiAgICAgICAgaWYgKHIgPT09IDAgfHwgciA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdhdXNzUmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHsgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkOyB9XG4gICAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgICB6ZXJvcyhuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKG4pID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBsYWNraW5nIGJyb3dzZXIgc3VwcG9ydFxuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gICAgLy8gb3Igd2l0aCB2YWx1ZSBzLCBpZiBwcm92aWRlZFxuICAgIHJhbmRuMmQobiwgZCwgcykge1xuICAgICAgICBjb25zdCB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCB4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4aGVyZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaCh0aGlzLnJhbmRuKDAuMCwgMWUtNCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIEwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLkwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sKSB7XG4gICAgICAgIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBoVGFyZ2V0ID0gTWF0aC5sb2cocGVycGxleGl0eSk7IC8vIHRhcmdldCBlbnRyb3B5IG9mIGRpc3RyaWJ1dGlvblxuICAgICAgICBjb25zdCBQID0gdGhpcy56ZXJvcyhuICogbik7IC8vIHRlbXBvcmFyeSBwcm9iYWJpbGl0eSBtYXRyaXhcbiAgICAgICAgY29uc3QgcHJvdyA9IHRoaXMuemVyb3Mobik7IC8vIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgY29tcGFydG1lbnRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBtYXh0cmllcyA9IDUwO1xuICAgICAgICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGogPSBNYXRoLmV4cCgtRFtpICogbiArIGpdICogYmV0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gd2UgZG9udCBjYXJlIGFib3V0IGRpYWdvbmFsc1xuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gcGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBwIGFuZCBjb21wdXRlIGVudHJvcHlcbiAgICAgICAgICAgICAgICBsZXQgbkhlcmUgPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHN1bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaiA+IDFlLTcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkanVzdCBiZXRhIGJhc2VkIG9uIHJlc3VsdFxuICAgICAgICAgICAgICAgIGlmIChuSGVyZSA+IGhUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIGZvciBtb3JlIHBlYWt5IGRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICBiZXRhbWluID0gYmV0YTsgLy8gbW92ZSB1cCB0aGUgYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWF4ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgKiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1heCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzZSBjYXNlLiBtYWtlIGRpc3RydWJ0aW9uIGxlc3MgcGVha3lcbiAgICAgICAgICAgICAgICAgICAgYmV0YW1heCA9IGJldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWluID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtaW4pIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIFBbaSAqIG4gKyBqXSA9IHByb3dbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIGxvb3Agb3ZlciBleGFtcGxlcyBpXG4gICAgICAgIC8vIHN5bW1ldHJpemUgUCBhbmQgbm9ybWFsaXplIGl0IHRvIHN1bSB0byAxIG92ZXIgYWxsIGlqXG4gICAgICAgIGNvbnN0IHBPdXQgPSB0aGlzLnplcm9zKG4gKiBuKTtcbiAgICAgICAgY29uc3QgTjIgPSBuICogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcE91dFtpICogbiArIGpdID0gTWF0aC5tYXgoKFBbaSAqIG4gKyBqXSArIFBbaiAqIG4gKyBpXSkgLyBOMiwgMWUtMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcE91dDtcbiAgICB9XG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXG4gICAgc2lnbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChEKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBEW2ldW2pdO1xuICAgICAgICAgICAgICAgIGRpc3RzW2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RzW2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgICB0aGlzLk4gPSBOO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdnYWluID0gMC4wMTtcbiAgICAgICAgICAgICAgICB9IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0gLyBOO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYodGhpcy5pdGVyJTEwMD09PTApIGNvbnNvbGUubG9nKCdpdGVyICcgKyB0aGlzLml0ZXIgKyAnLCBjb3N0OiAnICsgY29zdCk7XG4gICAgICAgIHJldHVybiBjb3N0OyAvLyByZXR1cm4gY3VycmVudCBjb3N0XG4gICAgfVxuICAgIC8vIGZvciBkZWJ1Z2dpbmc6IGdyYWRpZW50IGNoZWNrXG4gICAgZGVidWdHcmFkKCkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICBjb25zdCBxdUFyciA9IHRoaXMuemVyb3MoTiAqIE4pO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGxldCBkc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGhlcmUgPSBZW2ldW2RdIC0gWVtqXVtkXTtcbiAgICAgICAgICAgICAgICAgICAgZHN1bSArPSBkaGVyZSAqIGRoZXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgIHF1QXJyW2kgKiBOICsgal0gPSBxdTtcbiAgICAgICAgICAgICAgICBxdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIGNvbnN0IE5OID0gTiAqIE47XG4gICAgICAgIGNvbnN0IFEgPSB0aGlzLnplcm9zKE5OKTtcbiAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBOTjsgcSsrKSB7XG4gICAgICAgICAgICBRW3FdID0gTWF0aC5tYXgocXVBcnJbcV0gLyBxc3VtLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGdzdW1bZF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvc3QgKz0gLVBbaSAqIE4gKyBqXSAqIE1hdGgubG9nKFFbaSAqIE4gKyBqXSk7IC8vIGFjY3VtdWxhdGUgY29zdCAodGhlIG5vbi1jb25zdGFudCBwb3J0aW9uIGF0IGxlYXN0Li4uKVxuICAgICAgICAgICAgICAgIGNvbnN0IHByZW11bHQgPSA0ICogKHBtdWwgKiBQW2kgKiBOICsgal0gLSBRW2kgKiBOICsgal0pICogcXVBcnJbaSAqIE4gKyBqXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdzdW1bZF0gKz0gcHJlbXVsdCAqIChZW2ldW2RdIC0gWVtqXVtkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvc3QsIGdyYWQgfTtcbiAgICB9XG59XG5leHBvcnRzLlRTTkUgPSBUU05FO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2phcm8tYW5kLWphcm8td2lua2xlci1zaW1pbGFyaXR5L1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qYXJvV2lua2xlciA9IGV4cG9ydHMuamFybyA9IHZvaWQgMDtcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gRXhpdCBlYXJseSBpZiBlaXRoZXIgYXJlIGVtcHR5LlxuICAgIGlmIChzdHIxLmxlbmd0aCA9PT0gMCB8fCBzdHIyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0byB1cHBlciBpZiBjYXNlLXNlbnNpdGl2ZSBpcyBmYWxzZS5cbiAgICBpZiAob3B0aW9ucyAmJiAhb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0cjEgPSBzdHIxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHN0cjIgPSBzdHIyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHN0cjEgPT09IHN0cjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIE51bWJlciBvZiBtYXRjaGVzXG4gICAgdmFyIG0gPSAwO1xuICAgIC8vIExlbmd0aCBvZiB0d28gU3RyaW5nc1xuICAgIHZhciBsZW4xID0gc3RyMS5sZW5ndGg7XG4gICAgdmFyIGxlbjIgPSBzdHIyLmxlbmd0aDtcbiAgICAvLyBNYXhpbXVtIGRpc3RhbmNlXG4gICAgdmFyIHdpbmRvdyA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuMSwgbGVuMikgLyAyKSAtIDE7XG4gICAgLy8gSGFzaCBmb3IgbWF0Y2hlc1xuICAgIHZhciBzdHIxSGFzaCA9IG5ldyBBcnJheShsZW4xKTtcbiAgICB2YXIgc3RyMkhhc2ggPSBuZXcgQXJyYXkobGVuMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGkgLSB3aW5kb3cpOyBqIDw9IE1hdGgubWluKGxlbjIsIGkgKyB3aW5kb3cgKyAxKTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXN0cjFIYXNoW2ldICYmICFzdHIySGFzaFtqXSAmJiBzdHIxW2ldID09PSBzdHIyW2pdKSB7XG4gICAgICAgICAgICAgICAgKyttO1xuICAgICAgICAgICAgICAgIHN0cjFIYXNoW2ldID0gc3RyMkhhc2hbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQgZWFybHkgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kLlxuICAgIGlmIChtID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb3VudCB0aGUgdHJhbnNwb3NpdGlvbnMuXG4gICAgdmFyIHQgPSAwO1xuICAgIHZhciBwb2ludCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgaWYgKHN0cjFIYXNoW2ldKSB7XG4gICAgICAgICAgICB3aGlsZSAoIXN0cjJIYXNoW3BvaW50XSkge1xuICAgICAgICAgICAgICAgIHBvaW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RyMS5jaGFyQXQoaSkgIT09IHN0cjIuY2hhckF0KHBvaW50KyspKSB7XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHQgLz0gMjtcbiAgICByZXR1cm4gKG0gLyBsZW4xICsgbSAvIGxlbjIgKyAobSAtIHQpIC8gbSkgLyAzO1xufVxuZXhwb3J0cy5qYXJvID0gamFybztcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFyb1dpbmtsZXIoc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEphcm8gRGlzdGFuY2VcbiAgICB2YXIgamFyb0Rpc3QgPSBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpO1xuICAgIC8vIFNhbWUgcHJlZml4IGxlbmd0aCwgbWF4aXVtIGlzIDRcbiAgICB2YXIgcHJlZml4ID0gMDtcbiAgICBpZiAoamFyb0Rpc3QgPiAwLjcpIHtcbiAgICAgICAgdmFyIG1pbkluZGV4ID0gTWF0aC5taW4oc3RyMS5sZW5ndGgsIHN0cjIubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoc3RyMVtpXSA9PT0gc3RyMltpXSAmJiBpIDwgNCAmJiBpIDwgbWluSW5kZXgpIHtcbiAgICAgICAgICAgICsrcHJlZml4O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGphcm9EaXN0ICs9IDAuMSAqIHByZWZpeCAqICgxIC0gamFyb0Rpc3QpO1xuICAgIH1cbiAgICByZXR1cm4gamFyb0Rpc3Q7XG59XG5leHBvcnRzLmphcm9XaW5rbGVyID0gamFyb1dpbmtsZXI7XG4iLCJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQW55QXJyYXkob2JqZWN0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKG9iamVjdCkuZW5kc1dpdGgoJ0FycmF5XScpO1xufVxuIiwiLyoqXG4gKiBDYWxjdWxhdGUgY3VycmVudCBlcnJvclxuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbWV0ZXJzIC0gQXJyYXkgb2YgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVycm9yQ2FsY3VsYXRpb24oXG4gIGRhdGEsXG4gIHBhcmFtZXRlcnMsXG4gIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbikge1xuICBsZXQgZXJyb3IgPSAwO1xuICBjb25zdCBmdW5jID0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uKHBhcmFtZXRlcnMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgZXJyb3IgKz0gTWF0aC5hYnMoZGF0YS55W2ldIC0gZnVuYyhkYXRhLnhbaV0pKTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcjtcbn1cbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGFuIEFycmF5IChhcnJheSBvciB0eXBlZCBhcnJheSwgZXhjZXB0IHRob3NlIHRoYXQgY29udGFpbiBiaWdpbnQgdmFsdWVzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSB0eXBlZCBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55QXJyYXkodmFsdWUpIHtcbiAgICBjb25zdCB0YWcgPSB0b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnLmVuZHNXaXRoKCdBcnJheV0nKSAmJiAhdGFnLmluY2x1ZGVzKCdCaWcnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcbmltcG9ydCBtYXggZnJvbSAnbWwtYXJyYXktbWF4JztcbmltcG9ydCBtaW4gZnJvbSAnbWwtYXJyYXktbWluJztcblxuZnVuY3Rpb24gcmVzY2FsZShpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FueUFycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfSBlbHNlIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIG91dHB1dDtcblxuICBpZiAob3B0aW9ucy5vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghaXNBbnlBcnJheShvcHRpb25zLm91dHB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ291dHB1dCBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBpZiBzcGVjaWZpZWQnKTtcbiAgICB9XG5cbiAgICBvdXRwdXQgPSBvcHRpb25zLm91dHB1dDtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQgPSBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoKTtcbiAgfVxuXG4gIHZhciBjdXJyZW50TWluID0gbWluKGlucHV0KTtcbiAgdmFyIGN1cnJlbnRNYXggPSBtYXgoaW5wdXQpO1xuXG4gIGlmIChjdXJyZW50TWluID09PSBjdXJyZW50TWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbmltdW0gYW5kIG1heGltdW0gaW5wdXQgdmFsdWVzIGFyZSBlcXVhbC4gQ2Fubm90IHJlc2NhbGUgYSBjb25zdGFudCBhcnJheScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1pbiA9IG9wdGlvbnMubWluLFxuICAgICAgbWluVmFsdWUgPSBfb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IG9wdGlvbnMuYXV0b01pbk1heCA/IGN1cnJlbnRNaW4gOiAwIDogX29wdGlvbnMkbWluLFxuICAgICAgX29wdGlvbnMkbWF4ID0gb3B0aW9ucy5tYXgsXG4gICAgICBtYXhWYWx1ZSA9IF9vcHRpb25zJG1heCA9PT0gdm9pZCAwID8gb3B0aW9ucy5hdXRvTWluTWF4ID8gY3VycmVudE1heCA6IDEgOiBfb3B0aW9ucyRtYXg7XG5cbiAgaWYgKG1pblZhbHVlID49IG1heFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBvcHRpb24gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4IG9wdGlvbicpO1xuICB9XG5cbiAgdmFyIGZhY3RvciA9IChtYXhWYWx1ZSAtIG1pblZhbHVlKSAvIChjdXJyZW50TWF4IC0gY3VycmVudE1pbik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFtpXSA9IChpbnB1dFtpXSAtIGN1cnJlbnRNaW4pICogZmFjdG9yICsgbWluVmFsdWU7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyByZXNjYWxlIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5mdW5jdGlvbiBtaW4oaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRmcm9tSW5kZXggPSBvcHRpb25zLmZyb21JbmRleCxcbiAgICAgIGZyb21JbmRleCA9IF9vcHRpb25zJGZyb21JbmRleCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGZyb21JbmRleCxcbiAgICAgIF9vcHRpb25zJHRvSW5kZXggPSBvcHRpb25zLnRvSW5kZXgsXG4gICAgICB0b0luZGV4ID0gX29wdGlvbnMkdG9JbmRleCA9PT0gdm9pZCAwID8gaW5wdXQubGVuZ3RoIDogX29wdGlvbnMkdG9JbmRleDtcblxuICBpZiAoZnJvbUluZGV4IDwgMCB8fCBmcm9tSW5kZXggPj0gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZyb21JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoJyk7XG4gIH1cblxuICBpZiAodG9JbmRleCA8PSBmcm9tSW5kZXggfHwgdG9JbmRleCA+IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0b0luZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgnKTtcbiAgfVxuXG4gIHZhciBtaW5WYWx1ZSA9IGlucHV0W2Zyb21JbmRleF07XG5cbiAgZm9yICh2YXIgaSA9IGZyb21JbmRleCArIDE7IGkgPCB0b0luZGV4OyBpKyspIHtcbiAgICBpZiAoaW5wdXRbaV0gPCBtaW5WYWx1ZSkgbWluVmFsdWUgPSBpbnB1dFtpXTtcbiAgfVxuXG4gIHJldHVybiBtaW5WYWx1ZTtcbn1cblxuZXhwb3J0IHsgbWluIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5mdW5jdGlvbiBtYXgoaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRmcm9tSW5kZXggPSBvcHRpb25zLmZyb21JbmRleCxcbiAgICAgIGZyb21JbmRleCA9IF9vcHRpb25zJGZyb21JbmRleCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGZyb21JbmRleCxcbiAgICAgIF9vcHRpb25zJHRvSW5kZXggPSBvcHRpb25zLnRvSW5kZXgsXG4gICAgICB0b0luZGV4ID0gX29wdGlvbnMkdG9JbmRleCA9PT0gdm9pZCAwID8gaW5wdXQubGVuZ3RoIDogX29wdGlvbnMkdG9JbmRleDtcblxuICBpZiAoZnJvbUluZGV4IDwgMCB8fCBmcm9tSW5kZXggPj0gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZyb21JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoJyk7XG4gIH1cblxuICBpZiAodG9JbmRleCA8PSBmcm9tSW5kZXggfHwgdG9JbmRleCA+IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0b0luZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgnKTtcbiAgfVxuXG4gIHZhciBtYXhWYWx1ZSA9IGlucHV0W2Zyb21JbmRleF07XG5cbiAgZm9yICh2YXIgaSA9IGZyb21JbmRleCArIDE7IGkgPCB0b0luZGV4OyBpKyspIHtcbiAgICBpZiAoaW5wdXRbaV0gPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSBpbnB1dFtpXTtcbiAgfVxuXG4gIHJldHVybiBtYXhWYWx1ZTtcbn1cblxuZXhwb3J0IHsgbWF4IGFzIGRlZmF1bHQgfTtcbiIsImNvbnN0IGluZGVudCA9ICcgJy5yZXBlYXQoMik7XG5jb25zdCBpbmRlbnREYXRhID0gJyAnLnJlcGVhdCg0KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RNYXRyaXgoKSB7XG4gIHJldHVybiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnModGhpcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMobWF0cml4LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG1heFJvd3MgPSAxNSxcbiAgICBtYXhDb2x1bW5zID0gMTAsXG4gICAgbWF4TnVtU2l6ZSA9IDgsXG4gICAgcGFkTWludXMgPSAnYXV0bycsXG4gIH0gPSBvcHRpb25zO1xuICByZXR1cm4gYCR7bWF0cml4LmNvbnN0cnVjdG9yLm5hbWV9IHtcbiR7aW5kZW50fVtcbiR7aW5kZW50RGF0YX0ke2luc3BlY3REYXRhKG1hdHJpeCwgbWF4Um93cywgbWF4Q29sdW1ucywgbWF4TnVtU2l6ZSwgcGFkTWludXMpfVxuJHtpbmRlbnR9XVxuJHtpbmRlbnR9cm93czogJHttYXRyaXgucm93c31cbiR7aW5kZW50fWNvbHVtbnM6ICR7bWF0cml4LmNvbHVtbnN9XG59YDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdERhdGEobWF0cml4LCBtYXhSb3dzLCBtYXhDb2x1bW5zLCBtYXhOdW1TaXplLCBwYWRNaW51cykge1xuICBjb25zdCB7IHJvd3MsIGNvbHVtbnMgfSA9IG1hdHJpeDtcbiAgY29uc3QgbWF4SSA9IE1hdGgubWluKHJvd3MsIG1heFJvd3MpO1xuICBjb25zdCBtYXhKID0gTWF0aC5taW4oY29sdW1ucywgbWF4Q29sdW1ucyk7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gIGlmIChwYWRNaW51cyA9PT0gJ2F1dG8nKSB7XG4gICAgcGFkTWludXMgPSBmYWxzZTtcbiAgICBsb29wOiBmb3IgKGxldCBpID0gMDsgaSA8IG1heEk7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgICAgaWYgKG1hdHJpeC5nZXQoaSwgaikgPCAwKSB7XG4gICAgICAgICAgcGFkTWludXMgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1heEk7IGkrKykge1xuICAgIGxldCBsaW5lID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgIGxpbmUucHVzaChmb3JtYXROdW1iZXIobWF0cml4LmdldChpLCBqKSwgbWF4TnVtU2l6ZSwgcGFkTWludXMpKTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2goYCR7bGluZS5qb2luKCcgJyl9YCk7XG4gIH1cbiAgaWYgKG1heEogIT09IGNvbHVtbnMpIHtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdICs9IGAgLi4uICR7Y29sdW1ucyAtIG1heENvbHVtbnN9IG1vcmUgY29sdW1uc2A7XG4gIH1cbiAgaWYgKG1heEkgIT09IHJvd3MpIHtcbiAgICByZXN1bHQucHVzaChgLi4uICR7cm93cyAtIG1heFJvd3N9IG1vcmUgcm93c2ApO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbihgXFxuJHtpbmRlbnREYXRhfWApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIobnVtLCBtYXhOdW1TaXplLCBwYWRNaW51cykge1xuICByZXR1cm4gKFxuICAgIG51bSA+PSAwICYmIHBhZE1pbnVzXG4gICAgICA/IGAgJHtmb3JtYXROdW1iZXIyKG51bSwgbWF4TnVtU2l6ZSAtIDEpfWBcbiAgICAgIDogZm9ybWF0TnVtYmVyMihudW0sIG1heE51bVNpemUpXG4gICkucGFkRW5kKG1heE51bVNpemUpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIyKG51bSwgbGVuKSB7XG4gIC8vIHNtYWxsLmxlbmd0aCBudW1iZXJzIHNob3VsZCBiZSBhcyBpc1xuICBsZXQgc3RyID0gbnVtLnRvU3RyaW5nKCk7XG4gIGlmIChzdHIubGVuZ3RoIDw9IGxlbikgcmV0dXJuIHN0cjtcblxuICAvLyAoNyknMC4wMDEyMycgaXMgYmV0dGVyIHRoZW4gKDcpJzEuMjNlLTInXG4gIC8vICg4KScwLjAwMDEyMycgaXMgd29yc2UgdGhlbiAoNyknMS4yM2UtMycsXG4gIGxldCBmaXggPSBudW0udG9GaXhlZChsZW4pO1xuICBpZiAoZml4Lmxlbmd0aCA+IGxlbikge1xuICAgIGZpeCA9IG51bS50b0ZpeGVkKE1hdGgubWF4KDAsIGxlbiAtIChmaXgubGVuZ3RoIC0gbGVuKSkpO1xuICB9XG4gIGlmIChcbiAgICBmaXgubGVuZ3RoIDw9IGxlbiAmJlxuICAgICFmaXguc3RhcnRzV2l0aCgnMC4wMDAnKSAmJlxuICAgICFmaXguc3RhcnRzV2l0aCgnLTAuMDAwJylcbiAgKSB7XG4gICAgcmV0dXJuIGZpeDtcbiAgfVxuXG4gIC8vIHdlbGwsIGlmIGl0J3Mgc3RpbGwgdG9vIGxvbmcgdGhlIHVzZXIgc2hvdWxkJ3ZlIHVzZWQgbG9uZ2VyIG51bWJlcnNcbiAgbGV0IGV4cCA9IG51bS50b0V4cG9uZW50aWFsKGxlbik7XG4gIGlmIChleHAubGVuZ3RoID4gbGVuKSB7XG4gICAgZXhwID0gbnVtLnRvRXhwb25lbnRpYWwoTWF0aC5tYXgoMCwgbGVuIC0gKGV4cC5sZW5ndGggLSBsZW4pKSk7XG4gIH1cbiAgcmV0dXJuIGV4cC5zbGljZSgwKTtcbn1cbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IGEgcm93IGluZGV4IGlzIG5vdCBvdXQgb2YgYm91bmRzXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW291dGVyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dJbmRleChtYXRyaXgsIGluZGV4LCBvdXRlcikge1xuICBsZXQgbWF4ID0gb3V0ZXIgPyBtYXRyaXgucm93cyA6IG1hdHJpeC5yb3dzIC0gMTtcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IG1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdSb3cgaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCBhIGNvbHVtbiBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kc1xuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvdXRlcl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uSW5kZXgobWF0cml4LCBpbmRleCwgb3V0ZXIpIHtcbiAgbGV0IG1heCA9IG91dGVyID8gbWF0cml4LmNvbHVtbnMgOiBtYXRyaXguY29sdW1ucyAtIDE7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZScpO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgdGhlIHByb3ZpZGVkIHZlY3RvciBpcyBhbiBhcnJheSB3aXRoIHRoZSByaWdodCBsZW5ndGhcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7QXJyYXl8TWF0cml4fSB2ZWN0b3JcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUm93VmVjdG9yKG1hdHJpeCwgdmVjdG9yKSB7XG4gIGlmICh2ZWN0b3IudG8xREFycmF5KSB7XG4gICAgdmVjdG9yID0gdmVjdG9yLnRvMURBcnJheSgpO1xuICB9XG4gIGlmICh2ZWN0b3IubGVuZ3RoICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgJ3ZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiBjb2x1bW5zJyxcbiAgICApO1xuICB9XG4gIHJldHVybiB2ZWN0b3I7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgdGhlIHByb3ZpZGVkIHZlY3RvciBpcyBhbiBhcnJheSB3aXRoIHRoZSByaWdodCBsZW5ndGhcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7QXJyYXl8TWF0cml4fSB2ZWN0b3JcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uVmVjdG9yKG1hdHJpeCwgdmVjdG9yKSB7XG4gIGlmICh2ZWN0b3IudG8xREFycmF5KSB7XG4gICAgdmVjdG9yID0gdmVjdG9yLnRvMURBcnJheSgpO1xuICB9XG4gIGlmICh2ZWN0b3IubGVuZ3RoICE9PSBtYXRyaXgucm93cykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2Ygcm93cycpO1xuICB9XG4gIHJldHVybiB2ZWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd0luZGljZXMobWF0cml4LCByb3dJbmRpY2VzKSB7XG4gIGlmICghaXNBbnlBcnJheShyb3dJbmRpY2VzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JvdyBpbmRpY2VzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93SW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyb3dJbmRpY2VzW2ldIDwgMCB8fCByb3dJbmRpY2VzW2ldID49IG1hdHJpeC5yb3dzKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigncm93IGluZGljZXMgYXJlIG91dCBvZiByYW5nZScpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5JbmRpY2VzKG1hdHJpeCwgY29sdW1uSW5kaWNlcykge1xuICBpZiAoIWlzQW55QXJyYXkoY29sdW1uSW5kaWNlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb2x1bW4gaW5kaWNlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY29sdW1uSW5kaWNlc1tpXSA8IDAgfHwgY29sdW1uSW5kaWNlc1tpXSA+PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2NvbHVtbiBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmFuZ2UobWF0cml4LCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoICE9PSA1KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGVjdGVkIDQgYXJndW1lbnRzJyk7XG4gIH1cbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Um93Jywgc3RhcnRSb3cpO1xuICBjaGVja051bWJlcignZW5kUm93JywgZW5kUm93KTtcbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Q29sdW1uJywgc3RhcnRDb2x1bW4pO1xuICBjaGVja051bWJlcignZW5kQ29sdW1uJywgZW5kQ29sdW1uKTtcbiAgaWYgKFxuICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgc3RhcnRDb2x1bW4gPiBlbmRDb2x1bW4gfHxcbiAgICBzdGFydFJvdyA8IDAgfHxcbiAgICBzdGFydFJvdyA+PSBtYXRyaXgucm93cyB8fFxuICAgIGVuZFJvdyA8IDAgfHxcbiAgICBlbmRSb3cgPj0gbWF0cml4LnJvd3MgfHxcbiAgICBzdGFydENvbHVtbiA8IDAgfHxcbiAgICBzdGFydENvbHVtbiA+PSBtYXRyaXguY29sdW1ucyB8fFxuICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICBlbmRDb2x1bW4gPj0gbWF0cml4LmNvbHVtbnNcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1N1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3QXJyYXkobGVuZ3RoLCB2YWx1ZSA9IDApIHtcbiAgbGV0IGFycmF5ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBhcnJheS5wdXNoKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTnVtYmVyKG5hbWUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTm9uRW1wdHkobWF0cml4KSB7XG4gIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuaW1wb3J0IHJlc2NhbGUgZnJvbSAnbWwtYXJyYXktcmVzY2FsZSc7XG5cbmltcG9ydCB7IGluc3BlY3RNYXRyaXgsIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyB9IGZyb20gJy4vaW5zcGVjdCc7XG5pbXBvcnQgeyBpbnN0YWxsTWF0aE9wZXJhdGlvbnMgfSBmcm9tICcuL21hdGhPcGVyYXRpb25zJztcbmltcG9ydCB7XG4gIHN1bUJ5Um93LFxuICBzdW1CeUNvbHVtbixcbiAgc3VtQWxsLFxuICBwcm9kdWN0QnlSb3csXG4gIHByb2R1Y3RCeUNvbHVtbixcbiAgcHJvZHVjdEFsbCxcbiAgdmFyaWFuY2VCeVJvdyxcbiAgdmFyaWFuY2VCeUNvbHVtbixcbiAgdmFyaWFuY2VBbGwsXG4gIGNlbnRlckJ5Um93LFxuICBjZW50ZXJCeUNvbHVtbixcbiAgY2VudGVyQWxsLFxuICBzY2FsZUJ5Um93LFxuICBzY2FsZUJ5Q29sdW1uLFxuICBzY2FsZUFsbCxcbiAgZ2V0U2NhbGVCeVJvdyxcbiAgZ2V0U2NhbGVCeUNvbHVtbixcbiAgZ2V0U2NhbGVBbGwsXG59IGZyb20gJy4vc3RhdCc7XG5pbXBvcnQge1xuICBjaGVja1Jvd1ZlY3RvcixcbiAgY2hlY2tSb3dJbmRleCxcbiAgY2hlY2tDb2x1bW5JbmRleCxcbiAgY2hlY2tDb2x1bW5WZWN0b3IsXG4gIGNoZWNrUmFuZ2UsXG4gIGNoZWNrTm9uRW1wdHksXG4gIGNoZWNrUm93SW5kaWNlcyxcbiAgY2hlY2tDb2x1bW5JbmRpY2VzLFxufSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RNYXRyaXgge1xuICBzdGF0aWMgZnJvbTFEQXJyYXkobmV3Um93cywgbmV3Q29sdW1ucywgbmV3RGF0YSkge1xuICAgIGxldCBsZW5ndGggPSBuZXdSb3dzICogbmV3Q29sdW1ucztcbiAgICBpZiAobGVuZ3RoICE9PSBuZXdEYXRhLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2RhdGEgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGdpdmVuIGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobmV3Um93cywgbmV3Q29sdW1ucyk7XG4gICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgbmV3Um93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG5ld0NvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQocm93LCBjb2x1bW4sIG5ld0RhdGFbcm93ICogbmV3Q29sdW1ucyArIGNvbHVtbl0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJvd1ZlY3RvcihuZXdEYXRhKSB7XG4gICAgbGV0IHZlY3RvciA9IG5ldyBNYXRyaXgoMSwgbmV3RGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgdmVjdG9yLnNldCgwLCBpLCBuZXdEYXRhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBjb2x1bW5WZWN0b3IobmV3RGF0YSkge1xuICAgIGxldCB2ZWN0b3IgPSBuZXcgTWF0cml4KG5ld0RhdGEubGVuZ3RoLCAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZlY3Rvci5zZXQoaSwgMCwgbmV3RGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgemVyb3Mocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICB9XG5cbiAgc3RhdGljIG9uZXMocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpLmZpbGwoMSk7XG4gIH1cblxuICBzdGF0aWMgcmFuZChyb3dzLCBjb2x1bW5zLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcmFuZG9tID0gTWF0aC5yYW5kb20gfSA9IG9wdGlvbnM7XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgcmFuZG9tKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJhbmRJbnQocm93cywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IG1pbiA9IDAsIG1heCA9IDEwMDAsIHJhbmRvbSA9IE1hdGgucmFuZG9tIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGFuIGludGVnZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgaW50ZXJ2YWwgPSBtYXggLSBtaW47XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG1pbiArIE1hdGgucm91bmQocmFuZG9tKCkgKiBpbnRlcnZhbCk7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGV5ZShyb3dzLCBjb2x1bW5zLCB2YWx1ZSkge1xuICAgIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIGNvbHVtbnMgPSByb3dzO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB2YWx1ZSA9IDE7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGRpYWcoZGF0YSwgcm93cywgY29sdW1ucykge1xuICAgIGxldCBsID0gZGF0YS5sZW5ndGg7XG4gICAgaWYgKHJvd3MgPT09IHVuZGVmaW5lZCkgcm93cyA9IGw7XG4gICAgaWYgKGNvbHVtbnMgPT09IHVuZGVmaW5lZCkgY29sdW1ucyA9IHJvd3M7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKGwsIHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgZGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgbWluKG1hdHJpeDEsIG1hdHJpeDIpIHtcbiAgICBtYXRyaXgxID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgxKTtcbiAgICBtYXRyaXgyID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgyKTtcbiAgICBsZXQgcm93cyA9IG1hdHJpeDEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IG1hdHJpeDEuY29sdW1ucztcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1pbihtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBtYXgobWF0cml4MSwgbWF0cml4Mikge1xuICAgIG1hdHJpeDEgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDEpO1xuICAgIG1hdHJpeDIgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDIpO1xuICAgIGxldCByb3dzID0gbWF0cml4MS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbWF0cml4MS5jb2x1bW5zO1xuICAgIGxldCByZXN1bHQgPSBuZXcgdGhpcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1heChtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja01hdHJpeCh2YWx1ZSkge1xuICAgIHJldHVybiBBYnN0cmFjdE1hdHJpeC5pc01hdHJpeCh2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBNYXRyaXgodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGlzTWF0cml4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUua2xhc3MgPT09ICdNYXRyaXgnO1xuICB9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyAqIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGFwcGx5KGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBpLCBqKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0bzFEQXJyYXkoKSB7XG4gICAgbGV0IGFycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBhcnJheS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgdG8yREFycmF5KCkge1xuICAgIGxldCBjb3B5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29weS5wdXNoKFtdKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY29weVtpXS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8yREFycmF5KCk7XG4gIH1cblxuICBpc1Jvd1ZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAxO1xuICB9XG5cbiAgaXNDb2x1bW5WZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucyA9PT0gMTtcbiAgfVxuXG4gIGlzVmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IDEgfHwgdGhpcy5jb2x1bW5zID09PSAxO1xuICB9XG5cbiAgaXNTcXVhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gdGhpcy5jb2x1bW5zO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAwIHx8IHRoaXMuY29sdW1ucyA9PT0gMDtcbiAgfVxuXG4gIGlzU3ltbWV0cmljKCkge1xuICAgIGlmICh0aGlzLmlzU3F1YXJlKCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gaTsgaisrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopICE9PSB0aGlzLmdldChqLCBpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNFY2hlbG9uRm9ybSA9IHRydWU7XG4gICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICB3aGlsZSAoaSA8IHRoaXMucm93cyAmJiBpc0VjaGVsb25Gb3JtKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zICYmIGNoZWNrZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMCkge1xuICAgICAgICAgIGorKztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMSAmJiBqID4gcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbiA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc0VjaGVsb25Gb3JtO1xuICB9XG5cbiAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSB0cnVlO1xuICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MgJiYgaXNSZWR1Y2VkRWNoZWxvbkZvcm0pIHtcbiAgICAgIGogPSAwO1xuICAgICAgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMgJiYgY2hlY2tlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID09PSAwKSB7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KGksIGopID09PSAxICYmIGogPiBwcmV2aW91c0NvbHVtbikge1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHByZXZpb3VzQ29sdW1uID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrID0gaiArIDE7IGsgPCB0aGlzLnJvd3M7IGsrKykge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaykgIT09IDApIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc1JlZHVjZWRFY2hlbG9uRm9ybTtcbiAgfVxuXG4gIGVjaGVsb25Gb3JtKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IGggPSAwO1xuICAgIGxldCBrID0gMDtcbiAgICB3aGlsZSAoaCA8IHJlc3VsdC5yb3dzICYmIGsgPCByZXN1bHQuY29sdW1ucykge1xuICAgICAgbGV0IGlNYXggPSBoO1xuICAgICAgZm9yIChsZXQgaSA9IGg7IGkgPCByZXN1bHQucm93czsgaSsrKSB7XG4gICAgICAgIGlmIChyZXN1bHQuZ2V0KGksIGspID4gcmVzdWx0LmdldChpTWF4LCBrKSkge1xuICAgICAgICAgIGlNYXggPSBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmdldChpTWF4LCBrKSA9PT0gMCkge1xuICAgICAgICBrKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQuc3dhcFJvd3MoaCwgaU1heCk7XG4gICAgICAgIGxldCB0bXAgPSByZXN1bHQuZ2V0KGgsIGspO1xuICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHJlc3VsdC5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGgsIGosIHJlc3VsdC5nZXQoaCwgaikgLyB0bXApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSBoICsgMTsgaSA8IHJlc3VsdC5yb3dzOyBpKyspIHtcbiAgICAgICAgICBsZXQgZmFjdG9yID0gcmVzdWx0LmdldChpLCBrKSAvIHJlc3VsdC5nZXQoaCwgayk7XG4gICAgICAgICAgcmVzdWx0LnNldChpLCBrLCAwKTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCByZXN1bHQuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHJlc3VsdC5nZXQoaSwgaikgLSByZXN1bHQuZ2V0KGgsIGopICogZmFjdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaCsrO1xuICAgICAgICBrKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZWNoZWxvbkZvcm0oKTtcbiAgICBsZXQgbSA9IHJlc3VsdC5jb2x1bW5zO1xuICAgIGxldCBuID0gcmVzdWx0LnJvd3M7XG4gICAgbGV0IGggPSBuIC0gMTtcbiAgICB3aGlsZSAoaCA+PSAwKSB7XG4gICAgICBpZiAocmVzdWx0Lm1heFJvdyhoKSA9PT0gMCkge1xuICAgICAgICBoLS07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcCA9IDA7XG4gICAgICAgIGxldCBwaXZvdCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAocCA8IG4gJiYgcGl2b3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5nZXQoaCwgcCkgPT09IDEpIHtcbiAgICAgICAgICAgIHBpdm90ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGg7IGkrKykge1xuICAgICAgICAgIGxldCBmYWN0b3IgPSByZXN1bHQuZ2V0KGksIHApO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwOyBqIDwgbTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdG1wID0gcmVzdWx0LmdldChpLCBqKSAtIGZhY3RvciAqIHJlc3VsdC5nZXQoaCwgaik7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHRtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNldCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkJyk7XG4gIH1cblxuICByZXBlYXQob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHJvd3MgPSAxLCBjb2x1bW5zID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocm93cykgfHwgcm93cyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgfVxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihjb2x1bW5zKSB8fCBjb2x1bW5zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICB9XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzICogcm93cywgdGhpcy5jb2x1bW5zICogY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXRTdWJNYXRyaXgodGhpcywgdGhpcy5yb3dzICogaSwgdGhpcy5jb2x1bW5zICogaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBmaWxsKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHJldHVybiB0aGlzLm11bFMoLTEpO1xuICB9XG5cbiAgZ2V0Um93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IHJvdyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHJvdy5wdXNoKHRoaXMuZ2V0KGluZGV4LCBpKSk7XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICBnZXRSb3dWZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LnJvd1ZlY3Rvcih0aGlzLmdldFJvdyhpbmRleCkpO1xuICB9XG5cbiAgc2V0Um93KGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tSb3dWZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcFJvd3Mocm93MSwgcm93Mikge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93MSk7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KHJvdzEsIGkpO1xuICAgICAgdGhpcy5zZXQocm93MSwgaSwgdGhpcy5nZXQocm93MiwgaSkpO1xuICAgICAgdGhpcy5zZXQocm93MiwgaSwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IGNvbHVtbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbHVtbi5wdXNoKHRoaXMuZ2V0KGksIGluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBjb2x1bW47XG4gIH1cblxuICBnZXRDb2x1bW5WZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbihpbmRleCkpO1xuICB9XG5cbiAgc2V0Q29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcENvbHVtbnMoY29sdW1uMSwgY29sdW1uMikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uMSk7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KGksIGNvbHVtbjEpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMSwgdGhpcy5nZXQoaSwgY29sdW1uMikpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMiwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Um93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Q29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93KGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCB0aGlzLmdldChpbmRleCwgaSkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uKGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCB0aGlzLmdldChpLCBpbmRleCkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWF4KGJ5KSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBBcnJheSh0aGlzLnJvd3MpLmZpbGwoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXhbcm93XSkge1xuICAgICAgICAgICAgICBtYXhbcm93XSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgY29uc3QgbWF4ID0gbmV3IEFycmF5KHRoaXMuY29sdW1ucykuZmlsbChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heFtjb2x1bW5dKSB7XG4gICAgICAgICAgICAgIG1heFtjb2x1bW5dID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heCkge1xuICAgICAgICAgICAgICBtYXggPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1heEluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID4gdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbihieSkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBBcnJheSh0aGlzLnJvd3MpLmZpbGwoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW5bcm93XSkge1xuICAgICAgICAgICAgICBtaW5bcm93XSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgY29uc3QgbWluID0gbmV3IEFycmF5KHRoaXMuY29sdW1ucykuZmlsbChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbltjb2x1bW5dKSB7XG4gICAgICAgICAgICAgIG1pbltjb2x1bW5dID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgbGV0IG1pbiA9IHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbikge1xuICAgICAgICAgICAgICBtaW4gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1pbkluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopIDwgdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1heFJvdyhyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1heFJvd0luZGV4KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBsZXQgaWR4ID0gW3JvdywgMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgICBpZHhbMV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWluUm93KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWluUm93SW5kZXgocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGxldCBpZHggPSBbcm93LCAwXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICAgIGlkeFsxXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtYXhDb2x1bW4oY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhDb2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgbGV0IGlkeCA9IFswLCBjb2x1bW5dO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbkNvbHVtbihjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pbkNvbHVtbkluZGV4KGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBsZXQgaWR4ID0gWzAsIGNvbHVtbl07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgZGlhZygpIHtcbiAgICBsZXQgbWluID0gTWF0aC5taW4odGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGxldCBkaWFnID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgZGlhZy5wdXNoKHRoaXMuZ2V0KGksIGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWc7XG4gIH1cblxuICBub3JtKHR5cGUgPSAnZnJvYmVuaXVzJykge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmICh0eXBlID09PSAnbWF4Jykge1xuICAgICAgcmV0dXJuIHRoaXMubWF4KCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZnJvYmVuaXVzJykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5nZXQoaSwgaikgKiB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBjdW11bGF0aXZlU3VtKCkge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgc3VtICs9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRvdCh2ZWN0b3IyKSB7XG4gICAgaWYgKEFic3RyYWN0TWF0cml4LmlzTWF0cml4KHZlY3RvcjIpKSB2ZWN0b3IyID0gdmVjdG9yMi50bzFEQXJyYXkoKTtcbiAgICBsZXQgdmVjdG9yMSA9IHRoaXMudG8xREFycmF5KCk7XG4gICAgaWYgKHZlY3RvcjEubGVuZ3RoICE9PSB2ZWN0b3IyLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZlY3RvcnMgZG8gbm90IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICAgIH1cbiAgICBsZXQgZG90ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZlY3RvcjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRvdCArPSB2ZWN0b3IxW2ldICogdmVjdG9yMltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGRvdDtcbiAgfVxuXG4gIG1tdWwob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG5cbiAgICBsZXQgbSA9IHRoaXMucm93cztcbiAgICBsZXQgbiA9IHRoaXMuY29sdW1ucztcbiAgICBsZXQgcCA9IG90aGVyLmNvbHVtbnM7XG5cbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChtLCBwKTtcblxuICAgIGxldCBCY29saiA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBwOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgIEJjb2xqW2tdID0gb3RoZXIuZ2V0KGssIGopO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICBsZXQgcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgICAgcyArPSB0aGlzLmdldChpLCBrKSAqIEJjb2xqW2tdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuMngyKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDIsIDIpO1xuICAgIGNvbnN0IGExMSA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGIxMSA9IG90aGVyLmdldCgwLCAwKTtcbiAgICBjb25zdCBhMTIgPSB0aGlzLmdldCgwLCAxKTtcbiAgICBjb25zdCBiMTIgPSBvdGhlci5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGEyMiA9IHRoaXMuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgxLCAxKTtcblxuICAgIC8vIENvbXB1dGUgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiAgICBjb25zdCBtMSA9IChhMTEgKyBhMjIpICogKGIxMSArIGIyMik7XG4gICAgY29uc3QgbTIgPSAoYTIxICsgYTIyKSAqIGIxMTtcbiAgICBjb25zdCBtMyA9IGExMSAqIChiMTIgLSBiMjIpO1xuICAgIGNvbnN0IG00ID0gYTIyICogKGIyMSAtIGIxMSk7XG4gICAgY29uc3QgbTUgPSAoYTExICsgYTEyKSAqIGIyMjtcbiAgICBjb25zdCBtNiA9IChhMjEgLSBhMTEpICogKGIxMSArIGIxMik7XG4gICAgY29uc3QgbTcgPSAoYTEyIC0gYTIyKSAqIChiMjEgKyBiMjIpO1xuXG4gICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICBjb25zdCBjMDAgPSBtMSArIG00IC0gbTUgKyBtNztcbiAgICBjb25zdCBjMDEgPSBtMyArIG01O1xuICAgIGNvbnN0IGMxMCA9IG0yICsgbTQ7XG4gICAgY29uc3QgYzExID0gbTEgLSBtMiArIG0zICsgbTY7XG5cbiAgICByZXN1bHQuc2V0KDAsIDAsIGMwMCk7XG4gICAgcmVzdWx0LnNldCgwLCAxLCBjMDEpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuM3gzKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDMsIDMpO1xuXG4gICAgY29uc3QgYTAwID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgY29uc3QgYTAxID0gdGhpcy5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTAyID0gdGhpcy5nZXQoMCwgMik7XG4gICAgY29uc3QgYTEwID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYTExID0gdGhpcy5nZXQoMSwgMSk7XG4gICAgY29uc3QgYTEyID0gdGhpcy5nZXQoMSwgMik7XG4gICAgY29uc3QgYTIwID0gdGhpcy5nZXQoMiwgMCk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMiwgMSk7XG4gICAgY29uc3QgYTIyID0gdGhpcy5nZXQoMiwgMik7XG5cbiAgICBjb25zdCBiMDAgPSBvdGhlci5nZXQoMCwgMCk7XG4gICAgY29uc3QgYjAxID0gb3RoZXIuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGIwMiA9IG90aGVyLmdldCgwLCAyKTtcbiAgICBjb25zdCBiMTAgPSBvdGhlci5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjExID0gb3RoZXIuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIxMiA9IG90aGVyLmdldCgxLCAyKTtcbiAgICBjb25zdCBiMjAgPSBvdGhlci5nZXQoMiwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDIsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgyLCAyKTtcblxuICAgIGNvbnN0IG0xID0gKGEwMCArIGEwMSArIGEwMiAtIGExMCAtIGExMSAtIGEyMSAtIGEyMikgKiBiMTE7XG4gICAgY29uc3QgbTIgPSAoYTAwIC0gYTEwKSAqICgtYjAxICsgYjExKTtcbiAgICBjb25zdCBtMyA9IGExMSAqICgtYjAwICsgYjAxICsgYjEwIC0gYjExIC0gYjEyIC0gYjIwICsgYjIyKTtcbiAgICBjb25zdCBtNCA9ICgtYTAwICsgYTEwICsgYTExKSAqIChiMDAgLSBiMDEgKyBiMTEpO1xuICAgIGNvbnN0IG01ID0gKGExMCArIGExMSkgKiAoLWIwMCArIGIwMSk7XG4gICAgY29uc3QgbTYgPSBhMDAgKiBiMDA7XG4gICAgY29uc3QgbTcgPSAoLWEwMCArIGEyMCArIGEyMSkgKiAoYjAwIC0gYjAyICsgYjEyKTtcbiAgICBjb25zdCBtOCA9ICgtYTAwICsgYTIwKSAqIChiMDIgLSBiMTIpO1xuICAgIGNvbnN0IG05ID0gKGEyMCArIGEyMSkgKiAoLWIwMCArIGIwMik7XG4gICAgY29uc3QgbTEwID0gKGEwMCArIGEwMSArIGEwMiAtIGExMSAtIGExMiAtIGEyMCAtIGEyMSkgKiBiMTI7XG4gICAgY29uc3QgbTExID0gYTIxICogKC1iMDAgKyBiMDIgKyBiMTAgLSBiMTEgLSBiMTIgLSBiMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xMiA9ICgtYTAyICsgYTIxICsgYTIyKSAqIChiMTEgKyBiMjAgLSBiMjEpO1xuICAgIGNvbnN0IG0xMyA9IChhMDIgLSBhMjIpICogKGIxMSAtIGIyMSk7XG4gICAgY29uc3QgbTE0ID0gYTAyICogYjIwO1xuICAgIGNvbnN0IG0xNSA9IChhMjEgKyBhMjIpICogKC1iMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xNiA9ICgtYTAyICsgYTExICsgYTEyKSAqIChiMTIgKyBiMjAgLSBiMjIpO1xuICAgIGNvbnN0IG0xNyA9IChhMDIgLSBhMTIpICogKGIxMiAtIGIyMik7XG4gICAgY29uc3QgbTE4ID0gKGExMSArIGExMikgKiAoLWIyMCArIGIyMik7XG4gICAgY29uc3QgbTE5ID0gYTAxICogYjEwO1xuICAgIGNvbnN0IG0yMCA9IGExMiAqIGIyMTtcbiAgICBjb25zdCBtMjEgPSBhMTAgKiBiMDI7XG4gICAgY29uc3QgbTIyID0gYTIwICogYjAxO1xuICAgIGNvbnN0IG0yMyA9IGEyMiAqIGIyMjtcblxuICAgIGNvbnN0IGMwMCA9IG02ICsgbTE0ICsgbTE5O1xuICAgIGNvbnN0IGMwMSA9IG0xICsgbTQgKyBtNSArIG02ICsgbTEyICsgbTE0ICsgbTE1O1xuICAgIGNvbnN0IGMwMiA9IG02ICsgbTcgKyBtOSArIG0xMCArIG0xNCArIG0xNiArIG0xODtcbiAgICBjb25zdCBjMTAgPSBtMiArIG0zICsgbTQgKyBtNiArIG0xNCArIG0xNiArIG0xNztcbiAgICBjb25zdCBjMTEgPSBtMiArIG00ICsgbTUgKyBtNiArIG0yMDtcbiAgICBjb25zdCBjMTIgPSBtMTQgKyBtMTYgKyBtMTcgKyBtMTggKyBtMjE7XG4gICAgY29uc3QgYzIwID0gbTYgKyBtNyArIG04ICsgbTExICsgbTEyICsgbTEzICsgbTE0O1xuICAgIGNvbnN0IGMyMSA9IG0xMiArIG0xMyArIG0xNCArIG0xNSArIG0yMjtcbiAgICBjb25zdCBjMjIgPSBtNiArIG03ICsgbTggKyBtOSArIG0yMztcblxuICAgIHJlc3VsdC5zZXQoMCwgMCwgYzAwKTtcbiAgICByZXN1bHQuc2V0KDAsIDEsIGMwMSk7XG4gICAgcmVzdWx0LnNldCgwLCAyLCBjMDIpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmVzdWx0LnNldCgxLCAyLCBjMTIpO1xuICAgIHJlc3VsdC5zZXQoMiwgMCwgYzIwKTtcbiAgICByZXN1bHQuc2V0KDIsIDEsIGMyMSk7XG4gICAgcmVzdWx0LnNldCgyLCAyLCBjMjIpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBtbXVsU3RyYXNzZW4oeSkge1xuICAgIHkgPSBNYXRyaXguY2hlY2tNYXRyaXgoeSk7XG4gICAgbGV0IHggPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IHIxID0geC5yb3dzO1xuICAgIGxldCBjMSA9IHguY29sdW1ucztcbiAgICBsZXQgcjIgPSB5LnJvd3M7XG4gICAgbGV0IGMyID0geS5jb2x1bW5zO1xuICAgIGlmIChjMSAhPT0gcjIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNdWx0aXBseWluZyAke3IxfSB4ICR7YzF9IGFuZCAke3IyfSB4ICR7YzJ9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUHV0IGEgbWF0cml4IGludG8gdGhlIHRvcCBsZWZ0IG9mIGEgbWF0cml4IG9mIHplcm9zLlxuICAgIC8vIGByb3dzYCBhbmQgYGNvbHNgIGFyZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgb3V0cHV0IG1hdHJpeC5cbiAgICBmdW5jdGlvbiBlbWJlZChtYXQsIHJvd3MsIGNvbHMpIHtcbiAgICAgIGxldCByID0gbWF0LnJvd3M7XG4gICAgICBsZXQgYyA9IG1hdC5jb2x1bW5zO1xuICAgICAgaWYgKHIgPT09IHJvd3MgJiYgYyA9PT0gY29scykge1xuICAgICAgICByZXR1cm4gbWF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlc3VsdGF0ID0gQWJzdHJhY3RNYXRyaXguemVyb3Mocm93cywgY29scyk7XG4gICAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KG1hdCwgMCwgMCk7XG4gICAgICAgIHJldHVybiByZXN1bHRhdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgYm90aCBtYXRyaWNlcyBhcmUgdGhlIHNhbWUgc2l6ZS5cbiAgICAvLyBUaGlzIGlzIGV4Y2x1c2l2ZWx5IGZvciBzaW1wbGljaXR5OlxuICAgIC8vIHRoaXMgYWxnb3JpdGhtIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIG1hdHJpY2VzIG9mIGRpZmZlcmVudCBzaXplcy5cblxuICAgIGxldCByID0gTWF0aC5tYXgocjEsIHIyKTtcbiAgICBsZXQgYyA9IE1hdGgubWF4KGMxLCBjMik7XG4gICAgeCA9IGVtYmVkKHgsIHIsIGMpO1xuICAgIHkgPSBlbWJlZCh5LCByLCBjKTtcblxuICAgIC8vIE91ciByZWN1cnNpdmUgbXVsdGlwbGljYXRpb24gZnVuY3Rpb24uXG4gICAgZnVuY3Rpb24gYmxvY2tNdWx0KGEsIGIsIHJvd3MsIGNvbHMpIHtcbiAgICAgIC8vIEZvciBzbWFsbCBtYXRyaWNlcywgcmVzb3J0IHRvIG5haXZlIG11bHRpcGxpY2F0aW9uLlxuICAgICAgaWYgKHJvd3MgPD0gNTEyIHx8IGNvbHMgPD0gNTEyKSB7XG4gICAgICAgIHJldHVybiBhLm1tdWwoYik7IC8vIGEgaXMgZXF1aXZhbGVudCB0byB0aGlzXG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGR5bmFtaWMgcGFkZGluZy5cbiAgICAgIGlmIChyb3dzICUgMiA9PT0gMSAmJiBjb2xzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cyArIDEsIGNvbHMgKyAxKTtcbiAgICAgICAgYiA9IGVtYmVkKGIsIHJvd3MgKyAxLCBjb2xzICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKHJvd3MgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzICsgMSwgY29scyk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzICsgMSwgY29scyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHMgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBoYWxmUm93cyA9IHBhcnNlSW50KGEucm93cyAvIDIsIDEwKTtcbiAgICAgIGxldCBoYWxmQ29scyA9IHBhcnNlSW50KGEuY29sdW1ucyAvIDIsIDEwKTtcbiAgICAgIC8vIFN1YmRpdmlkZSBpbnB1dCBtYXRyaWNlcy5cbiAgICAgIGxldCBhMTEgPSBhLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG4gICAgICBsZXQgYjExID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuXG4gICAgICBsZXQgYTEyID0gYS5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjEyID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYi5jb2x1bW5zIC0gMSk7XG5cbiAgICAgIGxldCBhMjEgPSBhLnN1Yk1hdHJpeChoYWxmUm93cywgYS5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcbiAgICAgIGxldCBiMjEgPSBiLnN1Yk1hdHJpeChoYWxmUm93cywgYi5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcblxuICAgICAgbGV0IGEyMiA9IGEuc3ViTWF0cml4KGhhbGZSb3dzLCBhLnJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjIyID0gYi5zdWJNYXRyaXgoaGFsZlJvd3MsIGIucm93cyAtIDEsIGhhbGZDb2xzLCBiLmNvbHVtbnMgLSAxKTtcblxuICAgICAgLy8gQ29tcHV0ZSBpbnRlcm1lZGlhdGUgdmFsdWVzLlxuICAgICAgbGV0IG0xID0gYmxvY2tNdWx0KFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYTExLCBhMjIpLFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYjExLCBiMjIpLFxuICAgICAgICBoYWxmUm93cyxcbiAgICAgICAgaGFsZkNvbHMsXG4gICAgICApO1xuICAgICAgbGV0IG0yID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMjEsIGEyMiksIGIxMSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtMyA9IGJsb2NrTXVsdChhMTEsIEFic3RyYWN0TWF0cml4LnN1YihiMTIsIGIyMiksIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTQgPSBibG9ja011bHQoYTIyLCBBYnN0cmFjdE1hdHJpeC5zdWIoYjIxLCBiMTEpLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG01ID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMTEsIGExMiksIGIyMiwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNiA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGEyMSwgYTExKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIxMSwgYjEyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcbiAgICAgIGxldCBtNyA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGExMiwgYTIyKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIyMSwgYjIyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICAgIGxldCBjMTEgPSBBYnN0cmFjdE1hdHJpeC5hZGQobTEsIG00KTtcbiAgICAgIGMxMS5zdWIobTUpO1xuICAgICAgYzExLmFkZChtNyk7XG4gICAgICBsZXQgYzEyID0gQWJzdHJhY3RNYXRyaXguYWRkKG0zLCBtNSk7XG4gICAgICBsZXQgYzIxID0gQWJzdHJhY3RNYXRyaXguYWRkKG0yLCBtNCk7XG4gICAgICBsZXQgYzIyID0gQWJzdHJhY3RNYXRyaXguc3ViKG0xLCBtMik7XG4gICAgICBjMjIuYWRkKG0zKTtcbiAgICAgIGMyMi5hZGQobTYpO1xuXG4gICAgICAvLyBDcm9wIG91dHB1dCB0byB0aGUgZGVzaXJlZCBzaXplICh1bmRvIGR5bmFtaWMgcGFkZGluZykuXG4gICAgICBsZXQgcmVzdWx0YXQgPSBBYnN0cmFjdE1hdHJpeC56ZXJvcygyICogYzExLnJvd3MsIDIgKiBjMTEuY29sdW1ucyk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMTEsIDAsIDApO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzEyLCBjMTEucm93cywgMCk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMjEsIDAsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMyMiwgYzExLnJvd3MsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJldHVybiByZXN1bHRhdC5zdWJNYXRyaXgoMCwgcm93cyAtIDEsIDAsIGNvbHMgLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2tNdWx0KHgsIHksIHIsIGMpO1xuICB9XG5cbiAgc2NhbGVSb3dzKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coaSk7XG4gICAgICBpZiAocm93Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzY2FsZShyb3csIHsgbWluLCBtYXgsIG91dHB1dDogcm93IH0pO1xuICAgICAgfVxuICAgICAgbmV3TWF0cml4LnNldFJvdyhpLCByb3cpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc2NhbGVDb2x1bW5zKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW4oaSk7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCkge1xuICAgICAgICByZXNjYWxlKGNvbHVtbiwge1xuICAgICAgICAgIG1pbjogbWluLFxuICAgICAgICAgIG1heDogbWF4LFxuICAgICAgICAgIG91dHB1dDogY29sdW1uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5ld01hdHJpeC5zZXRDb2x1bW4oaSwgY29sdW1uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIGZsaXBSb3dzKCkge1xuICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguY2VpbCh0aGlzLmNvbHVtbnMgLyAyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1pZGRsZTsgaisrKSB7XG4gICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZ2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgbGFzdCk7XG4gICAgICAgIHRoaXMuc2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqLCBmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxpcENvbHVtbnMoKSB7XG4gICAgY29uc3QgbWlkZGxlID0gTWF0aC5jZWlsKHRoaXMucm93cyAvIDIpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlkZGxlOyBpKyspIHtcbiAgICAgICAgbGV0IGZpcnN0ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIGxldCBsYXN0ID0gdGhpcy5nZXQodGhpcy5yb3dzIC0gMSAtIGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBsYXN0KTtcbiAgICAgICAgdGhpcy5zZXQodGhpcy5yb3dzIC0gMSAtIGksIGosIGZpcnN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBrcm9uZWNrZXJQcm9kdWN0KG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuXG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSB0aGlzLmNvbHVtbnM7XG4gICAgbGV0IHAgPSBvdGhlci5yb3dzO1xuICAgIGxldCBxID0gb3RoZXIuY29sdW1ucztcblxuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KG0gKiBwLCBuICogcSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcDsgaysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBxOyBsKyspIHtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQocCAqIGkgKyBrLCBxICogaiArIGwsIHRoaXMuZ2V0KGksIGopICogb3RoZXIuZ2V0KGssIGwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGtyb25lY2tlclN1bShvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBpZiAoIXRoaXMuaXNTcXVhcmUoKSB8fCAhb3RoZXIuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLcm9uZWNrZXIgU3VtIG5lZWRzIHR3byBTcXVhcmUgTWF0cmljZXMnKTtcbiAgICB9XG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSBvdGhlci5yb3dzO1xuICAgIGxldCBBeEkgPSB0aGlzLmtyb25lY2tlclByb2R1Y3QoTWF0cml4LmV5ZShuLCBuKSk7XG4gICAgbGV0IEl4QiA9IE1hdHJpeC5leWUobSwgbSkua3JvbmVja2VyUHJvZHVjdChvdGhlcik7XG4gICAgcmV0dXJuIEF4SS5hZGQoSXhCKTtcbiAgfVxuXG4gIHRyYW5zcG9zZSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCh0aGlzLmNvbHVtbnMsIHRoaXMucm93cyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICByZXN1bHQuc2V0KGosIGksIHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNvcnRSb3dzKGNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVOdW1iZXJzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgdGhpcy5zZXRSb3coaSwgdGhpcy5nZXRSb3coaSkuc29ydChjb21wYXJlRnVuY3Rpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzb3J0Q29sdW1ucyhjb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlTnVtYmVycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0Q29sdW1uKGksIHRoaXMuZ2V0Q29sdW1uKGkpLnNvcnQoY29tcGFyZUZ1bmN0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViTWF0cml4KHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KFxuICAgICAgZW5kUm93IC0gc3RhcnRSb3cgKyAxLFxuICAgICAgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxLFxuICAgICk7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRDb2x1bW47IGogPD0gZW5kQ29sdW1uOyBqKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChpIC0gc3RhcnRSb3csIGogLSBzdGFydENvbHVtbiwgdGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3ViTWF0cml4Um93KGluZGljZXMsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBpZiAoc3RhcnRDb2x1bW4gPT09IHVuZGVmaW5lZCkgc3RhcnRDb2x1bW4gPSAwO1xuICAgIGlmIChlbmRDb2x1bW4gPT09IHVuZGVmaW5lZCkgZW5kQ29sdW1uID0gdGhpcy5jb2x1bW5zIC0gMTtcbiAgICBpZiAoXG4gICAgICBzdGFydENvbHVtbiA+IGVuZENvbHVtbiB8fFxuICAgICAgc3RhcnRDb2x1bW4gPCAwIHx8XG4gICAgICBzdGFydENvbHVtbiA+PSB0aGlzLmNvbHVtbnMgfHxcbiAgICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICAgIGVuZENvbHVtbiA+PSB0aGlzLmNvbHVtbnNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcmd1bWVudCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChpbmRpY2VzLmxlbmd0aCwgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydENvbHVtbjsgaiA8PSBlbmRDb2x1bW47IGorKykge1xuICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB0aGlzLnJvd3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUm93IGluZGV4IG91dCBvZiByYW5nZTogJHtpbmRpY2VzW2ldfWApO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSwgaiAtIHN0YXJ0Q29sdW1uLCB0aGlzLmdldChpbmRpY2VzW2ldLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdWJNYXRyaXhDb2x1bW4oaW5kaWNlcywgc3RhcnRSb3csIGVuZFJvdykge1xuICAgIGlmIChzdGFydFJvdyA9PT0gdW5kZWZpbmVkKSBzdGFydFJvdyA9IDA7XG4gICAgaWYgKGVuZFJvdyA9PT0gdW5kZWZpbmVkKSBlbmRSb3cgPSB0aGlzLnJvd3MgLSAxO1xuICAgIGlmIChcbiAgICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgICBzdGFydFJvdyA8IDAgfHxcbiAgICAgIHN0YXJ0Um93ID49IHRoaXMucm93cyB8fFxuICAgICAgZW5kUm93IDwgMCB8fFxuICAgICAgZW5kUm93ID49IHRoaXMucm93c1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FyZ3VtZW50IG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KGVuZFJvdyAtIHN0YXJ0Um93ICsgMSwgaW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Um93OyBqIDw9IGVuZFJvdzsgaisrKSB7XG4gICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHRoaXMuY29sdW1ucykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlOiAke2luZGljZXNbaV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3TWF0cml4LnNldChqIC0gc3RhcnRSb3csIGksIHRoaXMuZ2V0KGosIGluZGljZXNbaV0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHNldFN1Yk1hdHJpeChtYXRyaXgsIHN0YXJ0Um93LCBzdGFydENvbHVtbikge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgbGV0IGVuZFJvdyA9IHN0YXJ0Um93ICsgbWF0cml4LnJvd3MgLSAxO1xuICAgIGxldCBlbmRDb2x1bW4gPSBzdGFydENvbHVtbiArIG1hdHJpeC5jb2x1bW5zIC0gMTtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KHN0YXJ0Um93ICsgaSwgc3RhcnRDb2x1bW4gKyBqLCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3Rpb24ocm93SW5kaWNlcywgY29sdW1uSW5kaWNlcykge1xuICAgIGNoZWNrUm93SW5kaWNlcyh0aGlzLCByb3dJbmRpY2VzKTtcbiAgICBjaGVja0NvbHVtbkluZGljZXModGhpcywgY29sdW1uSW5kaWNlcyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgocm93SW5kaWNlcy5sZW5ndGgsIGNvbHVtbkluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0luZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCByb3dJbmRleCA9IHJvd0luZGljZXNbaV07XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbkluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gY29sdW1uSW5kaWNlc1tqXTtcbiAgICAgICAgbmV3TWF0cml4LnNldChpLCBqLCB0aGlzLmdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHRyYWNlKCkge1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbih0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgbGV0IHRyYWNlID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICB0cmFjZSArPSB0aGlzLmdldChpLCBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYWNlO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChyb3csIGNvbHVtbiwgdGhpcy5nZXQocm93LCBjb2x1bW4pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN1bShieSkge1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgIHJldHVybiBzdW1CeVJvdyh0aGlzKTtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBzdW1CeUNvbHVtbih0aGlzKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gc3VtQWxsKHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBwcm9kdWN0KGJ5KSB7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RCeVJvdyh0aGlzKTtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QnlDb2x1bW4odGhpcyk7XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RBbGwodGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1lYW4oYnkpIHtcbiAgICBjb25zdCBzdW0gPSB0aGlzLnN1bShieSk7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgICAgc3VtW2ldIC89IHRoaXMuY29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICAgICAgc3VtW2ldIC89IHRoaXMucm93cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBzdW0gLyB0aGlzLnNpemU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHZhcmlhbmNlKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyB1bmJpYXNlZCA9IHRydWUsIG1lYW4gPSB0aGlzLm1lYW4oYnkpIH0gPSBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgdW5iaWFzZWQgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5iaWFzZWQgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkobWVhbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VCeVJvdyh0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShtZWFuKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUJ5Q29sdW1uKHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmICh0eXBlb2YgbWVhbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VBbGwodGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBzdGFuZGFyZERldmlhdGlvbihieSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgdmFyaWFuY2UgPSB0aGlzLnZhcmlhbmNlKGJ5LCBvcHRpb25zKTtcbiAgICBpZiAoYnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFyaWFuY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyaWFuY2VbaV0gPSBNYXRoLnNxcnQodmFyaWFuY2VbaV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRlcihieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgY2VudGVyID0gdGhpcy5tZWFuKGJ5KSB9ID0gb3B0aW9ucztcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShjZW50ZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJCeVJvdyh0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KGNlbnRlcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckJ5Q29sdW1uKHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjZW50ZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJBbGwodGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHNjYWxlKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgbGV0IHNjYWxlID0gb3B0aW9ucy5zY2FsZTtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUJ5Um93KHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0FueUFycmF5KHNjYWxlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUJ5Um93KHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUJ5Q29sdW1uKHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0FueUFycmF5KHNjYWxlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUJ5Q29sdW1uKHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVBbGwodGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNjYWxlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUFsbCh0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZyhvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgfVxufVxuXG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUua2xhc3MgPSAnTWF0cml4JztcbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJykge1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGVbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPVxuICAgIGluc3BlY3RNYXRyaXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVOdW1iZXJzKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufVxuXG5mdW5jdGlvbiBpc0FycmF5T2ZOdW1iZXJzKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5ldmVyeSgoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcic7XG4gIH0pO1xufVxuXG4vLyBTeW5vbnltc1xuQWJzdHJhY3RNYXRyaXgucmFuZG9tID0gQWJzdHJhY3RNYXRyaXgucmFuZDtcbkFic3RyYWN0TWF0cml4LnJhbmRvbUludCA9IEFic3RyYWN0TWF0cml4LnJhbmRJbnQ7XG5BYnN0cmFjdE1hdHJpeC5kaWFnb25hbCA9IEFic3RyYWN0TWF0cml4LmRpYWc7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGlhZ29uYWwgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGlhZztcbkFic3RyYWN0TWF0cml4LmlkZW50aXR5ID0gQWJzdHJhY3RNYXRyaXguZXllO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5lZ2F0ZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5uZWc7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGVuc29yUHJvZHVjdCA9XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5rcm9uZWNrZXJQcm9kdWN0O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBYnN0cmFjdE1hdHJpeCB7XG4gIGNvbnN0cnVjdG9yKG5Sb3dzLCBuQ29sdW1ucykge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKE1hdHJpeC5pc01hdHJpeChuUm93cykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdHJ1Y3Rvci1yZXR1cm5cbiAgICAgIHJldHVybiBuUm93cy5jbG9uZSgpO1xuICAgIH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcihuUm93cykgJiYgblJvd3MgPj0gMCkge1xuICAgICAgLy8gQ3JlYXRlIGFuIGVtcHR5IG1hdHJpeFxuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihuQ29sdW1ucykgJiYgbkNvbHVtbnMgPj0gMCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5Sb3dzOyBpKyspIHtcbiAgICAgICAgICB0aGlzLmRhdGEucHVzaChuZXcgRmxvYXQ2NEFycmF5KG5Db2x1bW5zKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25Db2x1bW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0FueUFycmF5KG5Sb3dzKSkge1xuICAgICAgLy8gQ29weSB0aGUgdmFsdWVzIGZyb20gdGhlIDJEIGFycmF5XG4gICAgICBjb25zdCBhcnJheURhdGEgPSBuUm93cztcbiAgICAgIG5Sb3dzID0gYXJyYXlEYXRhLmxlbmd0aDtcbiAgICAgIG5Db2x1bW5zID0gblJvd3MgPyBhcnJheURhdGFbMF0ubGVuZ3RoIDogMDtcbiAgICAgIGlmICh0eXBlb2YgbkNvbHVtbnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ0RhdGEgbXVzdCBiZSBhIDJEIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5Sb3dzOyBpKyspIHtcbiAgICAgICAgaWYgKGFycmF5RGF0YVtpXS5sZW5ndGggIT09IG5Db2x1bW5zKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luY29uc2lzdGVudCBhcnJheSBkaW1lbnNpb25zJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5T2ZOdW1iZXJzKGFycmF5RGF0YVtpXSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnB1dCBkYXRhIGNvbnRhaW5zIG5vbi1udW1lcmljIHZhbHVlcycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKEZsb2F0NjRBcnJheS5mcm9tKGFycmF5RGF0YVtpXSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciBvciBhbiBhcnJheScsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJvd3MgPSBuUm93cztcbiAgICB0aGlzLmNvbHVtbnMgPSBuQ29sdW1ucztcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cblxuICByZW1vdmVSb3coaW5kZXgpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnJvd3MgLT0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFJvdyhpbmRleCwgYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJyYXkgPSBpbmRleDtcbiAgICAgIGluZGV4ID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4LCB0cnVlKTtcbiAgICBhcnJheSA9IEZsb2F0NjRBcnJheS5mcm9tKGNoZWNrUm93VmVjdG9yKHRoaXMsIGFycmF5KSk7XG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMCwgYXJyYXkpO1xuICAgIHRoaXMucm93cyArPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlQ29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3QgbmV3Um93ID0gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMgLSAxKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5kZXg7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBqID0gaW5kZXggKyAxOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgbmV3Um93W2ogLSAxXSA9IHRoaXMuZGF0YVtpXVtqXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVtpXSA9IG5ld1JvdztcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5zIC09IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRDb2x1bW4oaW5kZXgsIGFycmF5KSB7XG4gICAgaWYgKHR5cGVvZiBhcnJheSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGFycmF5ID0gaW5kZXg7XG4gICAgICBpbmRleCA9IHRoaXMuY29sdW1ucztcbiAgICB9XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCwgdHJ1ZSk7XG4gICAgYXJyYXkgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCBhcnJheSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3QgbmV3Um93ID0gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMgKyAxKTtcbiAgICAgIGxldCBqID0gMDtcbiAgICAgIGZvciAoOyBqIDwgaW5kZXg7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICBuZXdSb3dbaisrXSA9IGFycmF5W2ldO1xuICAgICAgZm9yICg7IGogPCB0aGlzLmNvbHVtbnMgKyAxOyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2ogLSAxXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVtpXSA9IG5ld1JvdztcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5zICs9IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuaW5zdGFsbE1hdGhPcGVyYXRpb25zKEFic3RyYWN0TWF0cml4LCBNYXRyaXgpO1xuIiwiaW1wb3J0IHsgbmV3QXJyYXkgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1CeUNvbHVtbihtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5jb2x1bW5zKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1bal0gKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUFsbChtYXRyaXgpIHtcbiAgbGV0IHYgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHYgKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlDb2x1bW4obWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXguY29sdW1ucywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2pdICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QWxsKG1hdHJpeCkge1xuICBsZXQgdiA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgdiAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQnlSb3cobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3QgdmFyaWFuY2UgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgIGxldCBzdW0xID0gMDtcbiAgICBsZXQgc3VtMiA9IDA7XG4gICAgbGV0IHggPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW5baV07XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgICBpZiAodW5iaWFzZWQpIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gY29scykgLyAoY29scyAtIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyBjb2xzKSAvIGNvbHMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFyaWFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUJ5Q29sdW1uKG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHZhcmlhbmNlID0gW107XG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICBsZXQgc3VtMSA9IDA7XG4gICAgbGV0IHN1bTIgPSAwO1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gICAgaWYgKHVuYmlhc2VkKSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHJvd3MpIC8gKHJvd3MgLSAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gcm93cykgLyByb3dzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcmlhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VBbGwobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3Qgc2l6ZSA9IHJvd3MgKiBjb2xzO1xuXG4gIGxldCBzdW0xID0gMDtcbiAgbGV0IHN1bTIgPSAwO1xuICBsZXQgeCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbjtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICB9XG4gIGlmICh1bmJpYXNlZCkge1xuICAgIHJldHVybiAoc3VtMiAtIChzdW0xICogc3VtMSkgLyBzaXplKSAvIChzaXplIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHNpemUpIC8gc2l6ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQnlSb3cobWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltpXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJCeUNvbHVtbihtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckFsbChtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlSb3cobWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5jb2x1bW5zIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlSb3cobWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlDb2x1bW4obWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5yb3dzIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlDb2x1bW4obWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQWxsKG1hdHJpeCkge1xuICBjb25zdCBkaXZpZGVyID0gbWF0cml4LnNpemUgLSAxO1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgICBzdW0gKz0gTWF0aC5wb3cobWF0cml4LmdldChpLCBqKSwgMikgLyBkaXZpZGVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFsbChtYXRyaXgsIHNjYWxlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC8gc2NhbGUpO1xuICAgIH1cbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KSB7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuYWRkUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRkTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZFMgPSBmdW5jdGlvbiBhZGRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZE0gPSBmdW5jdGlvbiBhZGRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWRkID0gZnVuY3Rpb24gYWRkKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hZGQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuc3ViUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc3ViTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlMgPSBmdW5jdGlvbiBzdWJTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1Yk0gPSBmdW5jdGlvbiBzdWJNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc3ViID0gZnVuY3Rpb24gc3ViKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zdWIodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3RTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJ0cmFjdE0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViTTtcbiAgQWJzdHJhY3RNYXRyaXguc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5zdWI7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5tdWxTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5tdWxNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUyA9IGZ1bmN0aW9uIG11bFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsTSA9IGZ1bmN0aW9uIG11bE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5tdWwgPSBmdW5jdGlvbiBtdWwobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm11bCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWw7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseVMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bHRpcGx5TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxNO1xuICBBYnN0cmFjdE1hdHJpeC5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4Lm11bDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmRpdlModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmRpdk0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZTID0gZnVuY3Rpb24gZGl2Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZNID0gZnVuY3Rpb24gZGl2TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmRpdiA9IGZ1bmN0aW9uIGRpdihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZGl2KHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXY7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdk07XG4gIEFic3RyYWN0TWF0cml4LmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LmRpdjtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm1vZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm1vZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RTID0gZnVuY3Rpb24gbW9kUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJSB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RNID0gZnVuY3Rpb24gbW9kTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICUgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm1vZCA9IGZ1bmN0aW9uIG1vZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubW9kKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kdWx1c1MgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXNNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZE07XG4gIEFic3RyYWN0TWF0cml4Lm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5tb2Q7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5hbmRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5hbmRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kUyA9IGZ1bmN0aW9uIGFuZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICYgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kTSA9IGZ1bmN0aW9uIGFuZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAmIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hbmQgPSBmdW5jdGlvbiBhbmQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFuZCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMub3JTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5vck0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vclMgPSBmdW5jdGlvbiBvclModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIHwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3JNID0gZnVuY3Rpb24gb3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgfCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgub3IgPSBmdW5jdGlvbiBvcihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgub3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMueG9yUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMueG9yTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvclMgPSBmdW5jdGlvbiB4b3JTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSBeIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvck0gPSBmdW5jdGlvbiB4b3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgXiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgueG9yID0gZnVuY3Rpb24geG9yKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC54b3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubGVmdFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubGVmdFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxlZnRTaGlmdFMgPSBmdW5jdGlvbiBsZWZ0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA8PCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnRNID0gZnVuY3Rpb24gbGVmdFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIDw8IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxlZnRTaGlmdCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0ID0gZnVuY3Rpb24gcmlnaHRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5yaWdodFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0UyA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+Pj4gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdE0gPSBmdW5jdGlvbiByaWdodFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnQ7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0TTtcbiAgQWJzdHJhY3RNYXRyaXguemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gbm90KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgfih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5ub3QgPSBmdW5jdGlvbiBub3QobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubm90KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWJzKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFicyA9IGZ1bmN0aW9uIGFicyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hYnMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWNvcyA9IGZ1bmN0aW9uIGFjb3MoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFjb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWNvcyA9IGZ1bmN0aW9uIGFjb3MobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFjb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFzaW4gPSBmdW5jdGlvbiBhc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hc2luKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFzaW4gPSBmdW5jdGlvbiBhc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFzaW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXNpbmggPSBmdW5jdGlvbiBhc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXNpbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXNpbmggPSBmdW5jdGlvbiBhc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hc2luaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hdGFuID0gZnVuY3Rpb24gYXRhbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXRhbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hdGFuID0gZnVuY3Rpb24gYXRhbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hdGFuKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmF0YW5oID0gZnVuY3Rpb24gYXRhbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmF0YW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmF0YW5oID0gZnVuY3Rpb24gYXRhbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXRhbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2JydCA9IGZ1bmN0aW9uIGNicnQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNicnQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2JydCA9IGZ1bmN0aW9uIGNicnQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2JydCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gY2VpbCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY2VpbCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jZWlsID0gZnVuY3Rpb24gY2VpbChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jZWlsKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNsejMyID0gZnVuY3Rpb24gY2x6MzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNsejMyKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNsejMyID0gZnVuY3Rpb24gY2x6MzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2x6MzIoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY29zID0gZnVuY3Rpb24gY29zKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY29zID0gZnVuY3Rpb24gY29zKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jb3NoID0gZnVuY3Rpb24gY29zaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jb3NoID0gZnVuY3Rpb24gY29zaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmV4cCA9IGZ1bmN0aW9uIGV4cCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmV4cCA9IGZ1bmN0aW9uIGV4cChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZXhwbTEgPSBmdW5jdGlvbiBleHBtMSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwbTEodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZXhwbTEgPSBmdW5jdGlvbiBleHBtMShtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHBtMSgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5mbG9vcih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmZsb29yKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZnJvdW5kKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5mcm91bmQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gbG9nKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2codGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nID0gZnVuY3Rpb24gbG9nKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cxcCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzFwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzEwID0gZnVuY3Rpb24gbG9nMTAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzEwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzEwID0gZnVuY3Rpb24gbG9nMTAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMTAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMiA9IGZ1bmN0aW9uIGxvZzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzIodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMiA9IGZ1bmN0aW9uIGxvZzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5yb3VuZCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJvdW5kKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaWduKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpZ24gPSBmdW5jdGlvbiBzaWduKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ24oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2luID0gZnVuY3Rpb24gc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2luID0gZnVuY3Rpb24gc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaW5oID0gZnVuY3Rpb24gc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2luaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaW5oID0gZnVuY3Rpb24gc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zcXJ0KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNxcnQgPSBmdW5jdGlvbiBzcXJ0KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNxcnQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGFuID0gZnVuY3Rpb24gdGFuKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50YW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudGFuID0gZnVuY3Rpb24gdGFuKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRhbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50YW5oID0gZnVuY3Rpb24gdGFuaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudGFuaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50YW5oID0gZnVuY3Rpb24gdGFuaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50YW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRydW5jID0gZnVuY3Rpb24gdHJ1bmMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRydW5jKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRydW5jID0gZnVuY3Rpb24gdHJ1bmMobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudHJ1bmMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wb3cgPSBmdW5jdGlvbiBwb3cobWF0cml4LCBhcmcwKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgucG93KGFyZzApO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3codmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMucG93Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucG93TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd1MgPSBmdW5jdGlvbiBwb3dTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnBvdyh0aGlzLmdldChpLCBqKSwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd00gPSBmdW5jdGlvbiBwb3dNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5wb3codGhpcy5nZXQoaSwgaiksIG1hdHJpeC5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBBYnN0cmFjdE1hdHJpeCB9IGZyb20gJy4uL21hdHJpeCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdyYXBwZXJNYXRyaXgyRCBleHRlbmRzIEFic3RyYWN0TWF0cml4IHtcbiAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnJvd3MgPSBkYXRhLmxlbmd0aDtcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhWzBdLmxlbmd0aDtcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMdURlY29tcG9zaXRpb24ge1xuICBjb25zdHJ1Y3RvcihtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobWF0cml4KTtcblxuICAgIGxldCBsdSA9IG1hdHJpeC5jbG9uZSgpO1xuICAgIGxldCByb3dzID0gbHUucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGx1LmNvbHVtbnM7XG4gICAgbGV0IHBpdm90VmVjdG9yID0gbmV3IEZsb2F0NjRBcnJheShyb3dzKTtcbiAgICBsZXQgcGl2b3RTaWduID0gMTtcbiAgICBsZXQgaSwgaiwgaywgcCwgcywgdCwgdjtcbiAgICBsZXQgTFVjb2xqLCBrbWF4O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgcGl2b3RWZWN0b3JbaV0gPSBpO1xuICAgIH1cblxuICAgIExVY29saiA9IG5ldyBGbG9hdDY0QXJyYXkocm93cyk7XG5cbiAgICBmb3IgKGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIExVY29saltpXSA9IGx1LmdldChpLCBqKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBrbWF4ID0gTWF0aC5taW4oaSwgaik7XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwga21heDsgaysrKSB7XG4gICAgICAgICAgcyArPSBsdS5nZXQoaSwgaykgKiBMVWNvbGpba107XG4gICAgICAgIH1cbiAgICAgICAgTFVjb2xqW2ldIC09IHM7XG4gICAgICAgIGx1LnNldChpLCBqLCBMVWNvbGpbaV0pO1xuICAgICAgfVxuXG4gICAgICBwID0gajtcbiAgICAgIGZvciAoaSA9IGogKyAxOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhMVWNvbGpbaV0pID4gTWF0aC5hYnMoTFVjb2xqW3BdKSkge1xuICAgICAgICAgIHAgPSBpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwICE9PSBqKSB7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBjb2x1bW5zOyBrKyspIHtcbiAgICAgICAgICB0ID0gbHUuZ2V0KHAsIGspO1xuICAgICAgICAgIGx1LnNldChwLCBrLCBsdS5nZXQoaiwgaykpO1xuICAgICAgICAgIGx1LnNldChqLCBrLCB0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHYgPSBwaXZvdFZlY3RvcltwXTtcbiAgICAgICAgcGl2b3RWZWN0b3JbcF0gPSBwaXZvdFZlY3RvcltqXTtcbiAgICAgICAgcGl2b3RWZWN0b3Jbal0gPSB2O1xuXG4gICAgICAgIHBpdm90U2lnbiA9IC1waXZvdFNpZ247XG4gICAgICB9XG5cbiAgICAgIGlmIChqIDwgcm93cyAmJiBsdS5nZXQoaiwgaikgIT09IDApIHtcbiAgICAgICAgZm9yIChpID0gaiArIDE7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICBsdS5zZXQoaSwgaiwgbHUuZ2V0KGksIGopIC8gbHUuZ2V0KGosIGopKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuTFUgPSBsdTtcbiAgICB0aGlzLnBpdm90VmVjdG9yID0gcGl2b3RWZWN0b3I7XG4gICAgdGhpcy5waXZvdFNpZ24gPSBwaXZvdFNpZ247XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgY29sID0gZGF0YS5jb2x1bW5zO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sOyBqKyspIHtcbiAgICAgIGlmIChkYXRhLmdldChqLCBqKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc29sdmUodmFsdWUpIHtcbiAgICB2YWx1ZSA9IE1hdHJpeC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgbHUgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gbHUucm93cztcblxuICAgIGlmIChyb3dzICE9PSB2YWx1ZS5yb3dzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTaW5ndWxhcigpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xVIG1hdHJpeCBpcyBzaW5ndWxhcicpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IFggPSB2YWx1ZS5zdWJNYXRyaXhSb3codGhpcy5waXZvdFZlY3RvciwgMCwgY291bnQgLSAxKTtcbiAgICBsZXQgY29sdW1ucyA9IGx1LmNvbHVtbnM7XG4gICAgbGV0IGksIGosIGs7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgY29sdW1uczsgaysrKSB7XG4gICAgICBmb3IgKGkgPSBrICsgMTsgaSA8IGNvbHVtbnM7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBsdS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IGNvbHVtbnMgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgWC5zZXQoaywgaiwgWC5nZXQoaywgaikgLyBsdS5nZXQoaywgaykpO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBsdS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IGRldGVybWluYW50KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBpZiAoIWRhdGEuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggbXVzdCBiZSBzcXVhcmUnKTtcbiAgICB9XG4gICAgbGV0IGRldGVybWluYW50ID0gdGhpcy5waXZvdFNpZ247XG4gICAgbGV0IGNvbCA9IGRhdGEuY29sdW1ucztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbDsgaisrKSB7XG4gICAgICBkZXRlcm1pbmFudCAqPSBkYXRhLmdldChqLCBqKTtcbiAgICB9XG4gICAgcmV0dXJuIGRldGVybWluYW50O1xuICB9XG5cbiAgZ2V0IGxvd2VyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBkYXRhLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAoaSA+IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBkYXRhLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBkYXRhLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAoaSA8PSBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgZGF0YS5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IHBpdm90UGVybXV0YXRpb25WZWN0b3IoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5waXZvdFZlY3Rvcik7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBoeXBvdGVudXNlKGEsIGIpIHtcbiAgbGV0IHIgPSAwO1xuICBpZiAoTWF0aC5hYnMoYSkgPiBNYXRoLmFicyhiKSkge1xuICAgIHIgPSBiIC8gYTtcbiAgICByZXR1cm4gTWF0aC5hYnMoYSkgKiBNYXRoLnNxcnQoMSArIHIgKiByKTtcbiAgfVxuICBpZiAoYiAhPT0gMCkge1xuICAgIHIgPSBhIC8gYjtcbiAgICByZXR1cm4gTWF0aC5hYnMoYikgKiBNYXRoLnNxcnQoMSArIHIgKiByKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5pbXBvcnQgeyBoeXBvdGVudXNlIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXJEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgcXIgPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBtID0gdmFsdWUucm93cztcbiAgICBsZXQgbiA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IHJkaWFnID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGxldCBucm0gPSAwO1xuICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICBucm0gPSBoeXBvdGVudXNlKG5ybSwgcXIuZ2V0KGksIGspKTtcbiAgICAgIH1cbiAgICAgIGlmIChucm0gIT09IDApIHtcbiAgICAgICAgaWYgKHFyLmdldChrLCBrKSA8IDApIHtcbiAgICAgICAgICBucm0gPSAtbnJtO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBxci5zZXQoaSwgaywgcXIuZ2V0KGksIGspIC8gbnJtKTtcbiAgICAgICAgfVxuICAgICAgICBxci5zZXQoaywgaywgcXIuZ2V0KGssIGspICsgMSk7XG4gICAgICAgIGZvciAoaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgcyA9IDA7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBxci5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPSAtcyAvIHFyLmdldChrLCBrKTtcbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBxci5zZXQoaSwgaiwgcXIuZ2V0KGksIGopICsgcyAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZGlhZ1trXSA9IC1ucm07XG4gICAgfVxuXG4gICAgdGhpcy5RUiA9IHFyO1xuICAgIHRoaXMuUmRpYWcgPSByZGlhZztcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBNYXRyaXguY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgbSA9IHFyLnJvd3M7XG5cbiAgICBpZiAodmFsdWUucm93cyAhPT0gbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggcm93IGRpbWVuc2lvbnMgbXVzdCBhZ3JlZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNGdWxsUmFuaygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBpcyByYW5rIGRlZmljaWVudCcpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IFggPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBuID0gcXIuY29sdW1ucztcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBYLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IG4gLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgWC5zZXQoaywgaiwgWC5nZXQoaywgaikgLyB0aGlzLlJkaWFnW2tdKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBYLnN1Yk1hdHJpeCgwLCBuIC0gMSwgMCwgY291bnQgLSAxKTtcbiAgfVxuXG4gIGlzRnVsbFJhbmsoKSB7XG4gICAgbGV0IGNvbHVtbnMgPSB0aGlzLlFSLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLlJkaWFnW2ldID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IG4gPSBxci5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChuLCBuKTtcbiAgICBsZXQgaSwgajtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChpIDwgaikge1xuICAgICAgICAgIFguc2V0KGksIGosIHFyLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIHRoaXMuUmRpYWdbaV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IG9ydGhvZ29uYWxNYXRyaXgoKSB7XG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgcm93cyA9IHFyLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBxci5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IGNvbHVtbnMgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBYLnNldChpLCBrLCAwKTtcbiAgICAgIH1cbiAgICAgIFguc2V0KGssIGssIDEpO1xuICAgICAgZm9yIChqID0gazsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAocXIuZ2V0KGssIGspICE9PSAwKSB7XG4gICAgICAgICAgcyA9IDA7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBYLmdldChpLCBqKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG5cbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxufVxuIiwiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmltcG9ydCB7IGh5cG90ZW51c2UgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBtdXN0IGJlIG5vbi1lbXB0eScpO1xuICAgIH1cblxuICAgIGxldCBtID0gdmFsdWUucm93cztcbiAgICBsZXQgbiA9IHZhbHVlLmNvbHVtbnM7XG5cbiAgICBjb25zdCB7XG4gICAgICBjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyA9IHRydWUsXG4gICAgICBjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMgPSB0cnVlLFxuICAgICAgYXV0b1RyYW5zcG9zZSA9IGZhbHNlLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgbGV0IHdhbnR1ID0gQm9vbGVhbihjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyk7XG4gICAgbGV0IHdhbnR2ID0gQm9vbGVhbihjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMpO1xuXG4gICAgbGV0IHN3YXBwZWQgPSBmYWxzZTtcbiAgICBsZXQgYTtcbiAgICBpZiAobSA8IG4pIHtcbiAgICAgIGlmICghYXV0b1RyYW5zcG9zZSkge1xuICAgICAgICBhID0gdmFsdWUuY2xvbmUoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdDb21wdXRpbmcgU1ZEIG9uIGEgbWF0cml4IHdpdGggbW9yZSBjb2x1bW5zIHRoYW4gcm93cy4gQ29uc2lkZXIgZW5hYmxpbmcgYXV0b1RyYW5zcG9zZScsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhID0gdmFsdWUudHJhbnNwb3NlKCk7XG4gICAgICAgIG0gPSBhLnJvd3M7XG4gICAgICAgIG4gPSBhLmNvbHVtbnM7XG4gICAgICAgIHN3YXBwZWQgPSB0cnVlO1xuICAgICAgICBsZXQgYXV4ID0gd2FudHU7XG4gICAgICAgIHdhbnR1ID0gd2FudHY7XG4gICAgICAgIHdhbnR2ID0gYXV4O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhID0gdmFsdWUuY2xvbmUoKTtcbiAgICB9XG5cbiAgICBsZXQgbnUgPSBNYXRoLm1pbihtLCBuKTtcbiAgICBsZXQgbmkgPSBNYXRoLm1pbihtICsgMSwgbik7XG4gICAgbGV0IHMgPSBuZXcgRmxvYXQ2NEFycmF5KG5pKTtcbiAgICBsZXQgVSA9IG5ldyBNYXRyaXgobSwgbnUpO1xuICAgIGxldCBWID0gbmV3IE1hdHJpeChuLCBuKTtcblxuICAgIGxldCBlID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBsZXQgd29yayA9IG5ldyBGbG9hdDY0QXJyYXkobSk7XG5cbiAgICBsZXQgc2kgPSBuZXcgRmxvYXQ2NEFycmF5KG5pKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5pOyBpKyspIHNpW2ldID0gaTtcblxuICAgIGxldCBuY3QgPSBNYXRoLm1pbihtIC0gMSwgbik7XG4gICAgbGV0IG5ydCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAyLCBtKSk7XG4gICAgbGV0IG1yYyA9IE1hdGgubWF4KG5jdCwgbnJ0KTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbXJjOyBrKyspIHtcbiAgICAgIGlmIChrIDwgbmN0KSB7XG4gICAgICAgIHNba10gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHNba10gPSBoeXBvdGVudXNlKHNba10sIGEuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc1trXSAhPT0gMCkge1xuICAgICAgICAgIGlmIChhLmdldChrLCBrKSA8IDApIHtcbiAgICAgICAgICAgIHNba10gPSAtc1trXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGEuc2V0KGksIGssIGEuZ2V0KGksIGspIC8gc1trXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGEuc2V0KGssIGssIGEuZ2V0KGssIGspICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgc1trXSA9IC1zW2tdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgaWYgKGsgPCBuY3QgJiYgc1trXSAhPT0gMCkge1xuICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgdCArPSBhLmdldChpLCBrKSAqIGEuZ2V0KGksIGopO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ID0gLXQgLyBhLmdldChrLCBrKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgYS5zZXQoaSwgaiwgYS5nZXQoaSwgaikgKyB0ICogYS5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlW2pdID0gYS5nZXQoaywgaik7XG4gICAgICB9XG5cbiAgICAgIGlmICh3YW50dSAmJiBrIDwgbmN0KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgVS5zZXQoaSwgaywgYS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChrIDwgbnJ0KSB7XG4gICAgICAgIGVba10gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBlW2tdID0gaHlwb3RlbnVzZShlW2tdLCBlW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGlmIChlW2sgKyAxXSA8IDApIHtcbiAgICAgICAgICAgIGVba10gPSAwIC0gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBlW2ldIC89IGVba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGVbayArIDFdICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZVtrXSA9IC1lW2tdO1xuICAgICAgICBpZiAoayArIDEgPCBtICYmIGVba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHdvcmtbaV0gPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICB3b3JrW2ldICs9IGVbal0gKiBhLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IC1lW2pdIC8gZVtrICsgMV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgYS5zZXQoaSwgaiwgYS5nZXQoaSwgaikgKyB0ICogd29ya1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgVi5zZXQoaSwgaywgZVtpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHAgPSBNYXRoLm1pbihuLCBtICsgMSk7XG4gICAgaWYgKG5jdCA8IG4pIHtcbiAgICAgIHNbbmN0XSA9IGEuZ2V0KG5jdCwgbmN0KTtcbiAgICB9XG4gICAgaWYgKG0gPCBwKSB7XG4gICAgICBzW3AgLSAxXSA9IDA7XG4gICAgfVxuICAgIGlmIChucnQgKyAxIDwgcCkge1xuICAgICAgZVtucnRdID0gYS5nZXQobnJ0LCBwIC0gMSk7XG4gICAgfVxuICAgIGVbcCAtIDFdID0gMDtcblxuICAgIGlmICh3YW50dSkge1xuICAgICAgZm9yIChsZXQgaiA9IG5jdDsgaiA8IG51OyBqKyspIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBVLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBVLnNldChqLCBqLCAxKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGsgPSBuY3QgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgICBpZiAoc1trXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG51OyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIHQgKz0gVS5nZXQoaSwgaykgKiBVLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtdCAvIFUuZ2V0KGssIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgVS5nZXQoaSwgaikgKyB0ICogVS5nZXQoaSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgLVUuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgVS5zZXQoaywgaywgMSArIFUuZ2V0KGssIGspKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGsgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFUuc2V0KGssIGssIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHdhbnR2KSB7XG4gICAgICBmb3IgKGxldCBrID0gbiAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICAgIGlmIChrIDwgbnJ0ICYmIGVba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICB0ICs9IFYuZ2V0KGksIGspICogVi5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLXQgLyBWLmdldChrICsgMSwgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgVi5nZXQoaSwgaikgKyB0ICogVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIFYuc2V0KGksIGssIDApO1xuICAgICAgICB9XG4gICAgICAgIFYuc2V0KGssIGssIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwcCA9IHAgLSAxO1xuICAgIGxldCBpdGVyID0gMDtcbiAgICBsZXQgZXBzID0gTnVtYmVyLkVQU0lMT047XG4gICAgd2hpbGUgKHAgPiAwKSB7XG4gICAgICBsZXQgaywga2FzZTtcbiAgICAgIGZvciAoayA9IHAgLSAyOyBrID49IC0xOyBrLS0pIHtcbiAgICAgICAgaWYgKGsgPT09IC0xKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxwaGEgPVxuICAgICAgICAgIE51bWJlci5NSU5fVkFMVUUgKyBlcHMgKiBNYXRoLmFicyhzW2tdICsgTWF0aC5hYnMoc1trICsgMV0pKTtcbiAgICAgICAgaWYgKE1hdGguYWJzKGVba10pIDw9IGFscGhhIHx8IE51bWJlci5pc05hTihlW2tdKSkge1xuICAgICAgICAgIGVba10gPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoayA9PT0gcCAtIDIpIHtcbiAgICAgICAga2FzZSA9IDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQga3M7XG4gICAgICAgIGZvciAoa3MgPSBwIC0gMTsga3MgPj0gazsga3MtLSkge1xuICAgICAgICAgIGlmIChrcyA9PT0gaykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIChrcyAhPT0gcCA/IE1hdGguYWJzKGVba3NdKSA6IDApICtcbiAgICAgICAgICAgIChrcyAhPT0gayArIDEgPyBNYXRoLmFicyhlW2tzIC0gMV0pIDogMCk7XG4gICAgICAgICAgaWYgKE1hdGguYWJzKHNba3NdKSA8PSBlcHMgKiB0KSB7XG4gICAgICAgICAgICBzW2tzXSA9IDA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtzID09PSBrKSB7XG4gICAgICAgICAga2FzZSA9IDM7XG4gICAgICAgIH0gZWxzZSBpZiAoa3MgPT09IHAgLSAxKSB7XG4gICAgICAgICAga2FzZSA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2FzZSA9IDI7XG4gICAgICAgICAgayA9IGtzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGsrKztcblxuICAgICAgc3dpdGNoIChrYXNlKSB7XG4gICAgICAgIGNhc2UgMToge1xuICAgICAgICAgIGxldCBmID0gZVtwIC0gMl07XG4gICAgICAgICAgZVtwIC0gMl0gPSAwO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwIC0gMjsgaiA+PSBrOyBqLS0pIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShzW2pdLCBmKTtcbiAgICAgICAgICAgIGxldCBjcyA9IHNbal0gLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZiAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGlmIChqICE9PSBrKSB7XG4gICAgICAgICAgICAgIGYgPSAtc24gKiBlW2ogLSAxXTtcbiAgICAgICAgICAgICAgZVtqIC0gMV0gPSBjcyAqIGVbaiAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVi5nZXQoaSwgaikgKyBzbiAqIFYuZ2V0KGksIHAgLSAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBwIC0gMSwgLXNuICogVi5nZXQoaSwgaikgKyBjcyAqIFYuZ2V0KGksIHAgLSAxKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAyOiB7XG4gICAgICAgICAgbGV0IGYgPSBlW2sgLSAxXTtcbiAgICAgICAgICBlW2sgLSAxXSA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCBwOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShzW2pdLCBmKTtcbiAgICAgICAgICAgIGxldCBjcyA9IHNbal0gLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZiAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGYgPSAtc24gKiBlW2pdO1xuICAgICAgICAgICAgZVtqXSA9IGNzICogZVtqXTtcbiAgICAgICAgICAgIGlmICh3YW50dSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFUuZ2V0KGksIGopICsgc24gKiBVLmdldChpLCBrIC0gMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgayAtIDEsIC1zbiAqIFUuZ2V0KGksIGopICsgY3MgKiBVLmdldChpLCBrIC0gMSkpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzoge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoXG4gICAgICAgICAgICBNYXRoLmFicyhzW3AgLSAxXSksXG4gICAgICAgICAgICBNYXRoLmFicyhzW3AgLSAyXSksXG4gICAgICAgICAgICBNYXRoLmFicyhlW3AgLSAyXSksXG4gICAgICAgICAgICBNYXRoLmFicyhzW2tdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKGVba10pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3AgPSBzW3AgLSAxXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IHNwbTEgPSBzW3AgLSAyXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGVwbTEgPSBlW3AgLSAyXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IHNrID0gc1trXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGVrID0gZVtrXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGIgPSAoKHNwbTEgKyBzcCkgKiAoc3BtMSAtIHNwKSArIGVwbTEgKiBlcG0xKSAvIDI7XG4gICAgICAgICAgY29uc3QgYyA9IHNwICogZXBtMSAqIChzcCAqIGVwbTEpO1xuICAgICAgICAgIGxldCBzaGlmdCA9IDA7XG4gICAgICAgICAgaWYgKGIgIT09IDAgfHwgYyAhPT0gMCkge1xuICAgICAgICAgICAgaWYgKGIgPCAwKSB7XG4gICAgICAgICAgICAgIHNoaWZ0ID0gMCAtIE1hdGguc3FydChiICogYiArIGMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2hpZnQgPSBNYXRoLnNxcnQoYiAqIGIgKyBjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNoaWZ0ID0gYyAvIChiICsgc2hpZnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZiA9IChzayArIHNwKSAqIChzayAtIHNwKSArIHNoaWZ0O1xuICAgICAgICAgIGxldCBnID0gc2sgKiBlaztcbiAgICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHAgLSAxOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShmLCBnKTtcbiAgICAgICAgICAgIGlmICh0ID09PSAwKSB0ID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICAgICAgICAgIGxldCBjcyA9IGYgLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZyAvIHQ7XG4gICAgICAgICAgICBpZiAoaiAhPT0gaykge1xuICAgICAgICAgICAgICBlW2ogLSAxXSA9IHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmID0gY3MgKiBzW2pdICsgc24gKiBlW2pdO1xuICAgICAgICAgICAgZVtqXSA9IGNzICogZVtqXSAtIHNuICogc1tqXTtcbiAgICAgICAgICAgIGcgPSBzbiAqIHNbaiArIDFdO1xuICAgICAgICAgICAgc1tqICsgMV0gPSBjcyAqIHNbaiArIDFdO1xuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVi5nZXQoaSwgaikgKyBzbiAqIFYuZ2V0KGksIGogKyAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqICsgMSwgLXNuICogVi5nZXQoaSwgaikgKyBjcyAqIFYuZ2V0KGksIGogKyAxKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSBoeXBvdGVudXNlKGYsIGcpO1xuICAgICAgICAgICAgaWYgKHQgPT09IDApIHQgPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgICAgICAgICAgY3MgPSBmIC8gdDtcbiAgICAgICAgICAgIHNuID0gZyAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGYgPSBjcyAqIGVbal0gKyBzbiAqIHNbaiArIDFdO1xuICAgICAgICAgICAgc1tqICsgMV0gPSAtc24gKiBlW2pdICsgY3MgKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIGcgPSBzbiAqIGVbaiArIDFdO1xuICAgICAgICAgICAgZVtqICsgMV0gPSBjcyAqIGVbaiArIDFdO1xuICAgICAgICAgICAgaWYgKHdhbnR1ICYmIGogPCBtIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFUuZ2V0KGksIGopICsgc24gKiBVLmdldChpLCBqICsgMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiArIDEsIC1zbiAqIFUuZ2V0KGksIGopICsgY3MgKiBVLmdldChpLCBqICsgMSkpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVbcCAtIDJdID0gZjtcbiAgICAgICAgICBpdGVyID0gaXRlciArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA0OiB7XG4gICAgICAgICAgaWYgKHNba10gPD0gMCkge1xuICAgICAgICAgICAgc1trXSA9IHNba10gPCAwID8gLXNba10gOiAwO1xuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHBwOyBpKyspIHtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrLCAtVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChrIDwgcHApIHtcbiAgICAgICAgICAgIGlmIChzW2tdID49IHNbayArIDFdKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHQgPSBzW2tdO1xuICAgICAgICAgICAgc1trXSA9IHNbayArIDFdO1xuICAgICAgICAgICAgc1trICsgMV0gPSB0O1xuICAgICAgICAgICAgaWYgKHdhbnR2ICYmIGsgPCBuIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBWLmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgayArIDEsIFYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhbnR1ICYmIGsgPCBtIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBVLmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgayArIDEsIFUuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVyID0gMDtcbiAgICAgICAgICBwLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm8gZGVmYXVsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzd2FwcGVkKSB7XG4gICAgICBsZXQgdG1wID0gVjtcbiAgICAgIFYgPSBVO1xuICAgICAgVSA9IHRtcDtcbiAgICB9XG5cbiAgICB0aGlzLm0gPSBtO1xuICAgIHRoaXMubiA9IG47XG4gICAgdGhpcy5zID0gcztcbiAgICB0aGlzLlUgPSBVO1xuICAgIHRoaXMuViA9IFY7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIGxldCBZID0gdmFsdWU7XG4gICAgbGV0IGUgPSB0aGlzLnRocmVzaG9sZDtcbiAgICBsZXQgc2NvbHMgPSB0aGlzLnMubGVuZ3RoO1xuICAgIGxldCBMcyA9IE1hdHJpeC56ZXJvcyhzY29scywgc2NvbHMpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29sczsgaSsrKSB7XG4gICAgICBpZiAoTWF0aC5hYnModGhpcy5zW2ldKSA8PSBlKSB7XG4gICAgICAgIExzLnNldChpLCBpLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExzLnNldChpLCBpLCAxIC8gdGhpcy5zW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgVSA9IHRoaXMuVTtcbiAgICBsZXQgViA9IHRoaXMucmlnaHRTaW5ndWxhclZlY3RvcnM7XG5cbiAgICBsZXQgVkwgPSBWLm1tdWwoTHMpO1xuICAgIGxldCB2cm93cyA9IFYucm93cztcbiAgICBsZXQgdXJvd3MgPSBVLnJvd3M7XG4gICAgbGV0IFZMVSA9IE1hdHJpeC56ZXJvcyh2cm93cywgdXJvd3MpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHVyb3dzOyBqKyspIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2NvbHM7IGsrKykge1xuICAgICAgICAgIHN1bSArPSBWTC5nZXQoaSwgaykgKiBVLmdldChqLCBrKTtcbiAgICAgICAgfVxuICAgICAgICBWTFUuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFZMVS5tbXVsKFkpO1xuICB9XG5cbiAgc29sdmVGb3JEaWFnb25hbCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnNvbHZlKE1hdHJpeC5kaWFnKHZhbHVlKSk7XG4gIH1cblxuICBpbnZlcnNlKCkge1xuICAgIGxldCBWID0gdGhpcy5WO1xuICAgIGxldCBlID0gdGhpcy50aHJlc2hvbGQ7XG4gICAgbGV0IHZyb3dzID0gVi5yb3dzO1xuICAgIGxldCB2Y29scyA9IFYuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgodnJvd3MsIHRoaXMucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZjb2xzOyBqKyspIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuc1tqXSkgPiBlKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgVi5nZXQoaSwgaikgLyB0aGlzLnNbal0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IFUgPSB0aGlzLlU7XG5cbiAgICBsZXQgdXJvd3MgPSBVLnJvd3M7XG4gICAgbGV0IHVjb2xzID0gVS5jb2x1bW5zO1xuICAgIGxldCBZID0gbmV3IE1hdHJpeCh2cm93cywgdXJvd3MpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHVyb3dzOyBqKyspIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgdWNvbHM7IGsrKykge1xuICAgICAgICAgIHN1bSArPSBYLmdldChpLCBrKSAqIFUuZ2V0KGosIGspO1xuICAgICAgICB9XG4gICAgICAgIFkuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFk7XG4gIH1cblxuICBnZXQgY29uZGl0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNbMF0gLyB0aGlzLnNbTWF0aC5taW4odGhpcy5tLCB0aGlzLm4pIC0gMV07XG4gIH1cblxuICBnZXQgbm9ybTIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc1swXTtcbiAgfVxuXG4gIGdldCByYW5rKCkge1xuICAgIGxldCB0b2wgPSBNYXRoLm1heCh0aGlzLm0sIHRoaXMubikgKiB0aGlzLnNbMF0gKiBOdW1iZXIuRVBTSUxPTjtcbiAgICBsZXQgciA9IDA7XG4gICAgbGV0IHMgPSB0aGlzLnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGlpID0gcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICBpZiAoc1tpXSA+IHRvbCkge1xuICAgICAgICByKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgZ2V0IGRpYWdvbmFsKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucyk7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCkge1xuICAgIHJldHVybiAoTnVtYmVyLkVQU0lMT04gLyAyKSAqIE1hdGgubWF4KHRoaXMubSwgdGhpcy5uKSAqIHRoaXMuc1swXTtcbiAgfVxuXG4gIGdldCBsZWZ0U2luZ3VsYXJWZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLlU7XG4gIH1cblxuICBnZXQgcmlnaHRTaW5ndWxhclZlY3RvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuVjtcbiAgfVxuXG4gIGdldCBkaWFnb25hbE1hdHJpeCgpIHtcbiAgICByZXR1cm4gTWF0cml4LmRpYWcodGhpcy5zKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaW52ZXJzZSwgTWF0cml4IH0gZnJvbSAnbWwtbWF0cml4JztcblxuLyoqXG4gKiBEaWZmZXJlbmNlIG9mIHRoZSBtYXRyaXggZnVuY3Rpb24gb3ZlciB0aGUgcGFyYW1ldGVyc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBldmFsdWF0ZWREYXRhIC0gQXJyYXkgb2YgcHJldmlvdXMgZXZhbHVhdGVkIGZ1bmN0aW9uIHZhbHVlc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbXMgLSBBcnJheSBvZiBwcmV2aW91cyBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZ3JhZGllbnREaWZmZXJlbmNlIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbUZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7TWF0cml4fVxuICovXG5mdW5jdGlvbiBncmFkaWVudEZ1bmN0aW9uKFxuICBkYXRhLFxuICBldmFsdWF0ZWREYXRhLFxuICBwYXJhbXMsXG4gIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgcGFyYW1GdW5jdGlvbixcbikge1xuICBjb25zdCBuID0gcGFyYW1zLmxlbmd0aDtcbiAgY29uc3QgbSA9IGRhdGEueC5sZW5ndGg7XG5cbiAgbGV0IGFucyA9IG5ldyBBcnJheShuKTtcblxuICBmb3IgKGxldCBwYXJhbSA9IDA7IHBhcmFtIDwgbjsgcGFyYW0rKykge1xuICAgIGFuc1twYXJhbV0gPSBuZXcgQXJyYXkobSk7XG4gICAgbGV0IGF1eFBhcmFtcyA9IHBhcmFtcy5zbGljZSgpO1xuICAgIGF1eFBhcmFtc1twYXJhbV0gKz0gZ3JhZGllbnREaWZmZXJlbmNlO1xuICAgIGxldCBmdW5jUGFyYW0gPSBwYXJhbUZ1bmN0aW9uKGF1eFBhcmFtcyk7XG5cbiAgICBmb3IgKGxldCBwb2ludCA9IDA7IHBvaW50IDwgbTsgcG9pbnQrKykge1xuICAgICAgYW5zW3BhcmFtXVtwb2ludF0gPSBldmFsdWF0ZWREYXRhW3BvaW50XSAtIGZ1bmNQYXJhbShkYXRhLnhbcG9pbnRdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNYXRyaXgoYW5zKTtcbn1cblxuLyoqXG4gKiBNYXRyaXggZnVuY3Rpb24gb3ZlciB0aGUgc2FtcGxlc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBldmFsdWF0ZWREYXRhIC0gQXJyYXkgb2YgcHJldmlvdXMgZXZhbHVhdGVkIGZ1bmN0aW9uIHZhbHVlc1xuICogQHJldHVybiB7TWF0cml4fVxuICovXG5mdW5jdGlvbiBtYXRyaXhGdW5jdGlvbihkYXRhLCBldmFsdWF0ZWREYXRhKSB7XG4gIGNvbnN0IG0gPSBkYXRhLngubGVuZ3RoO1xuXG4gIGxldCBhbnMgPSBuZXcgQXJyYXkobSk7XG5cbiAgZm9yIChsZXQgcG9pbnQgPSAwOyBwb2ludCA8IG07IHBvaW50KyspIHtcbiAgICBhbnNbcG9pbnRdID0gW2RhdGEueVtwb2ludF0gLSBldmFsdWF0ZWREYXRhW3BvaW50XV07XG4gIH1cblxuICByZXR1cm4gbmV3IE1hdHJpeChhbnMpO1xufVxuXG4vKipcbiAqIEl0ZXJhdGlvbiBmb3IgTGV2ZW5iZXJnLU1hcnF1YXJkdFxuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbXMgLSBBcnJheSBvZiBwcmV2aW91cyBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZGFtcGluZyAtIExldmVuYmVyZy1NYXJxdWFyZHQgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge251bWJlcn0gZ3JhZGllbnREaWZmZXJlbmNlIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGVwKFxuICBkYXRhLFxuICBwYXJhbXMsXG4gIGRhbXBpbmcsXG4gIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuKSB7XG4gIGxldCB2YWx1ZSA9IGRhbXBpbmcgKiBncmFkaWVudERpZmZlcmVuY2UgKiBncmFkaWVudERpZmZlcmVuY2U7XG4gIGxldCBpZGVudGl0eSA9IE1hdHJpeC5leWUocGFyYW1zLmxlbmd0aCwgcGFyYW1zLmxlbmd0aCwgdmFsdWUpO1xuXG4gIGNvbnN0IGZ1bmMgPSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24ocGFyYW1zKTtcblxuICBsZXQgZXZhbHVhdGVkRGF0YSA9IG5ldyBGbG9hdDY0QXJyYXkoZGF0YS54Lmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgZXZhbHVhdGVkRGF0YVtpXSA9IGZ1bmMoZGF0YS54W2ldKTtcbiAgfVxuXG4gIGxldCBncmFkaWVudEZ1bmMgPSBncmFkaWVudEZ1bmN0aW9uKFxuICAgIGRhdGEsXG4gICAgZXZhbHVhdGVkRGF0YSxcbiAgICBwYXJhbXMsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlLFxuICAgIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgKTtcbiAgbGV0IG1hdHJpeEZ1bmMgPSBtYXRyaXhGdW5jdGlvbihkYXRhLCBldmFsdWF0ZWREYXRhKTtcbiAgbGV0IGludmVyc2VNYXRyaXggPSBpbnZlcnNlKFxuICAgIGlkZW50aXR5LmFkZChncmFkaWVudEZ1bmMubW11bChncmFkaWVudEZ1bmMudHJhbnNwb3NlKCkpKSxcbiAgKTtcblxuICBwYXJhbXMgPSBuZXcgTWF0cml4KFtwYXJhbXNdKTtcbiAgcGFyYW1zID0gcGFyYW1zLnN1YihcbiAgICBpbnZlcnNlTWF0cml4XG4gICAgICAubW11bChncmFkaWVudEZ1bmMpXG4gICAgICAubW11bChtYXRyaXhGdW5jKVxuICAgICAgLm11bChncmFkaWVudERpZmZlcmVuY2UpXG4gICAgICAudHJhbnNwb3NlKCksXG4gICk7XG5cbiAgcmV0dXJuIHBhcmFtcy50bzFEQXJyYXkoKTtcbn1cbiIsImltcG9ydCBMdURlY29tcG9zaXRpb24gZnJvbSAnLi9kYy9sdSc7XG5pbXBvcnQgUXJEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvcXInO1xuaW1wb3J0IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvc3ZkJztcbmltcG9ydCBNYXRyaXggZnJvbSAnLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGZ1bmN0aW9uIGludmVyc2UobWF0cml4LCB1c2VTVkQgPSBmYWxzZSkge1xuICBtYXRyaXggPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgaWYgKHVzZVNWRCkge1xuICAgIHJldHVybiBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24obWF0cml4KS5pbnZlcnNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNvbHZlKG1hdHJpeCwgTWF0cml4LmV5ZShtYXRyaXgucm93cykpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb2x2ZShsZWZ0SGFuZFNpZGUsIHJpZ2h0SGFuZFNpZGUsIHVzZVNWRCA9IGZhbHNlKSB7XG4gIGxlZnRIYW5kU2lkZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChsZWZ0SGFuZFNpZGUpO1xuICByaWdodEhhbmRTaWRlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHJpZ2h0SGFuZFNpZGUpO1xuICBpZiAodXNlU1ZEKSB7XG4gICAgcmV0dXJuIG5ldyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsZWZ0SGFuZFNpZGUuaXNTcXVhcmUoKVxuICAgICAgPyBuZXcgTHVEZWNvbXBvc2l0aW9uKGxlZnRIYW5kU2lkZSkuc29sdmUocmlnaHRIYW5kU2lkZSlcbiAgICAgIDogbmV3IFFyRGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpO1xuICB9XG59XG4iLCJpbXBvcnQgaXNBcnJheSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5pbXBvcnQgZXJyb3JDYWxjdWxhdGlvbiBmcm9tICcuL2Vycm9yQ2FsY3VsYXRpb24nO1xuaW1wb3J0IHN0ZXAgZnJvbSAnLi9zdGVwJztcblxuLyoqXG4gKiBDdXJ2ZSBmaXR0aW5nIGFsZ29yaXRobVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIE9wdGlvbnMgb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZGFtcGluZ10gLSBMZXZlbmJlcmctTWFycXVhcmR0IHBhcmFtZXRlclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmdyYWRpZW50RGlmZmVyZW5jZSA9IDEwZS0yXSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5taW5WYWx1ZXNdIC0gTWluaW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5tYXhWYWx1ZXNdIC0gTWF4aW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5pbml0aWFsVmFsdWVzXSAtIEFycmF5IG9mIGluaXRpYWwgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heEl0ZXJhdGlvbnMgPSAxMDBdIC0gTWF4aW11bSBvZiBhbGxvd2VkIGl0ZXJhdGlvbnNcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5lcnJvclRvbGVyYW5jZSA9IDEwZS0zXSAtIE1pbmltdW0gdW5jZXJ0YWludHkgYWxsb3dlZCBmb3IgZWFjaCBwb2ludFxuICogQHJldHVybiB7e3BhcmFtZXRlclZhbHVlczogQXJyYXk8bnVtYmVyPiwgcGFyYW1ldGVyRXJyb3I6IG51bWJlciwgaXRlcmF0aW9uczogbnVtYmVyfX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGV2ZW5iZXJnTWFycXVhcmR0KFxuICBkYXRhLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gIG9wdGlvbnMgPSB7fSxcbikge1xuICBsZXQge1xuICAgIG1heEl0ZXJhdGlvbnMgPSAxMDAsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlID0gMTBlLTIsXG4gICAgZGFtcGluZyA9IDAsXG4gICAgZXJyb3JUb2xlcmFuY2UgPSAxMGUtMyxcbiAgICBtaW5WYWx1ZXMsXG4gICAgbWF4VmFsdWVzLFxuICAgIGluaXRpYWxWYWx1ZXMsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmIChkYW1waW5nIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYW1waW5nIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIH0gZWxzZSBpZiAoIWRhdGEueCB8fCAhZGF0YS55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMnKTtcbiAgfSBlbHNlIGlmIChcbiAgICAhaXNBcnJheShkYXRhLngpIHx8XG4gICAgZGF0YS54Lmxlbmd0aCA8IDIgfHxcbiAgICAhaXNBcnJheShkYXRhLnkpIHx8XG4gICAgZGF0YS55Lmxlbmd0aCA8IDJcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGJlIGFuIGFycmF5IHdpdGggbW9yZSB0aGFuIDIgcG9pbnRzJyxcbiAgICApO1xuICB9IGVsc2UgaWYgKGRhdGEueC5sZW5ndGggIT09IGRhdGEueS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIGluaXRpYWxWYWx1ZXMgfHwgbmV3IEFycmF5KHBhcmFtZXRlcml6ZWRGdW5jdGlvbi5sZW5ndGgpLmZpbGwoMSk7XG4gIGxldCBwYXJMZW4gPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgbWF4VmFsdWVzID0gbWF4VmFsdWVzIHx8IG5ldyBBcnJheShwYXJMZW4pLmZpbGwoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xuICBtaW5WYWx1ZXMgPSBtaW5WYWx1ZXMgfHwgbmV3IEFycmF5KHBhckxlbikuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUik7XG5cbiAgaWYgKG1heFZhbHVlcy5sZW5ndGggIT09IG1pblZhbHVlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgaWYgKCFpc0FycmF5KHBhcmFtZXRlcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGxldCBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcblxuICBsZXQgY29udmVyZ2VkID0gZXJyb3IgPD0gZXJyb3JUb2xlcmFuY2U7XG5cbiAgbGV0IGl0ZXJhdGlvbjtcbiAgZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBtYXhJdGVyYXRpb25zICYmICFjb252ZXJnZWQ7IGl0ZXJhdGlvbisrKSB7XG4gICAgcGFyYW1ldGVycyA9IHN0ZXAoXG4gICAgICBkYXRhLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICAgIGRhbXBpbmcsXG4gICAgICBncmFkaWVudERpZmZlcmVuY2UsXG4gICAgICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gICAgKTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcGFyTGVuOyBrKyspIHtcbiAgICAgIHBhcmFtZXRlcnNba10gPSBNYXRoLm1pbihcbiAgICAgICAgTWF0aC5tYXgobWluVmFsdWVzW2tdLCBwYXJhbWV0ZXJzW2tdKSxcbiAgICAgICAgbWF4VmFsdWVzW2tdLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcbiAgICBpZiAoaXNOYU4oZXJyb3IpKSBicmVhaztcbiAgICBjb252ZXJnZWQgPSBlcnJvciA8PSBlcnJvclRvbGVyYW5jZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyVmFsdWVzOiBwYXJhbWV0ZXJzLFxuICAgIHBhcmFtZXRlckVycm9yOiBlcnJvcixcbiAgICBpdGVyYXRpb25zOiBpdGVyYXRpb24sXG4gIH07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG5mdW5jdGlvbiBtYWtlSGVhcChuUG9pbnRzLCBzaXplKSB7XG4gICAgdmFyIG1ha2VBcnJheXMgPSBmdW5jdGlvbiAoZmlsbFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB1dGlscy5lbXB0eShuUG9pbnRzKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxzLmZpbGxlZChzaXplLCBmaWxsVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBoZWFwID0gW107XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoLTEpKTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cyhJbmZpbml0eSkpO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKDApKTtcbiAgICByZXR1cm4gaGVhcDtcbn1cbmV4cG9ydHMubWFrZUhlYXAgPSBtYWtlSGVhcDtcbmZ1bmN0aW9uIHJlamVjdGlvblNhbXBsZShuU2FtcGxlcywgcG9vbFNpemUsIHJhbmRvbSkge1xuICAgIHZhciByZXN1bHQgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgIHZhciByZWplY3RTYW1wbGUgPSB0cnVlO1xuICAgICAgICB2YXIgaiA9IDA7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIGogPSB1dGlscy50YXVSYW5kSW50KHBvb2xTaXplLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGJyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBpOyBrKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gcmVzdWx0W2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYnJva2VuKVxuICAgICAgICAgICAgICAgIHJlamVjdFNhbXBsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtpXSA9IGo7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnJlamVjdGlvblNhbXBsZSA9IHJlamVjdGlvblNhbXBsZTtcbmZ1bmN0aW9uIGhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHJvdyA9IE1hdGguZmxvb3Iocm93KTtcbiAgICB2YXIgaW5kaWNlcyA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgaXNOZXcgPSBoZWFwWzJdW3Jvd107XG4gICAgaWYgKHdlaWdodCA+PSB3ZWlnaHRzWzBdKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBpbmRpY2VzW2ldKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5jaGVja2VkSGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKTtcbn1cbmV4cG9ydHMuaGVhcFB1c2ggPSBoZWFwUHVzaDtcbmZ1bmN0aW9uIHVuY2hlY2tlZEhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXVtyb3ddO1xuICAgIHZhciB3ZWlnaHRzID0gaGVhcFsxXVtyb3ddO1xuICAgIHZhciBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHdlaWdodHNbMF0gPSB3ZWlnaHQ7XG4gICAgaW5kaWNlc1swXSA9IGluZGV4O1xuICAgIGlzTmV3WzBdID0gZmxhZztcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGlTd2FwID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgaWMxID0gMiAqIGkgKyAxO1xuICAgICAgICB2YXIgaWMyID0gaWMxICsgMTtcbiAgICAgICAgdmFyIGhlYXBTaGFwZTIgPSBoZWFwWzBdWzBdLmxlbmd0aDtcbiAgICAgICAgaWYgKGljMSA+PSBoZWFwU2hhcGUyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpYzIgPj0gaGVhcFNoYXBlMikge1xuICAgICAgICAgICAgaWYgKHdlaWdodHNbaWMxXSA+IHdlaWdodCkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAod2VpZ2h0c1tpYzFdID49IHdlaWdodHNbaWMyXSkge1xuICAgICAgICAgICAgaWYgKHdlaWdodCA8IHdlaWdodHNbaWMxXSkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0IDwgd2VpZ2h0c1tpYzJdKSB7XG4gICAgICAgICAgICAgICAgaVN3YXAgPSBpYzI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3ZWlnaHRzW2ldID0gd2VpZ2h0c1tpU3dhcF07XG4gICAgICAgIGluZGljZXNbaV0gPSBpbmRpY2VzW2lTd2FwXTtcbiAgICAgICAgaXNOZXdbaV0gPSBpc05ld1tpU3dhcF07XG4gICAgICAgIGkgPSBpU3dhcDtcbiAgICB9XG4gICAgd2VpZ2h0c1tpXSA9IHdlaWdodDtcbiAgICBpbmRpY2VzW2ldID0gaW5kZXg7XG4gICAgaXNOZXdbaV0gPSBmbGFnO1xuICAgIHJldHVybiAxO1xufVxuZXhwb3J0cy51bmNoZWNrZWRIZWFwUHVzaCA9IHVuY2hlY2tlZEhlYXBQdXNoO1xuZnVuY3Rpb24gYnVpbGRDYW5kaWRhdGVzKGN1cnJlbnRHcmFwaCwgblZlcnRpY2VzLCBuTmVpZ2hib3JzLCBtYXhDYW5kaWRhdGVzLCByYW5kb20pIHtcbiAgICB2YXIgY2FuZGlkYXRlTmVpZ2hib3JzID0gbWFrZUhlYXAoblZlcnRpY2VzLCBtYXhDYW5kaWRhdGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5WZXJ0aWNlczsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEdyYXBoWzBdW2ldW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGlkeCA9IGN1cnJlbnRHcmFwaFswXVtpXVtqXTtcbiAgICAgICAgICAgIHZhciBpc24gPSBjdXJyZW50R3JhcGhbMl1baV1bal07XG4gICAgICAgICAgICB2YXIgZCA9IHV0aWxzLnRhdVJhbmQocmFuZG9tKTtcbiAgICAgICAgICAgIGhlYXBQdXNoKGNhbmRpZGF0ZU5laWdoYm9ycywgaSwgZCwgaWR4LCBpc24pO1xuICAgICAgICAgICAgaGVhcFB1c2goY2FuZGlkYXRlTmVpZ2hib3JzLCBpZHgsIGQsIGksIGlzbik7XG4gICAgICAgICAgICBjdXJyZW50R3JhcGhbMl1baV1bal0gPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYW5kaWRhdGVOZWlnaGJvcnM7XG59XG5leHBvcnRzLmJ1aWxkQ2FuZGlkYXRlcyA9IGJ1aWxkQ2FuZGlkYXRlcztcbmZ1bmN0aW9uIGRlaGVhcFNvcnQoaGVhcCkge1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpbmRIZWFwID0gaW5kaWNlc1tpXTtcbiAgICAgICAgdmFyIGRpc3RIZWFwID0gd2VpZ2h0c1tpXTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRIZWFwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgdmFyIGluZEhlYXBJbmRleCA9IGluZEhlYXAubGVuZ3RoIC0gaiAtIDE7XG4gICAgICAgICAgICB2YXIgZGlzdEhlYXBJbmRleCA9IGRpc3RIZWFwLmxlbmd0aCAtIGogLSAxO1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gaW5kSGVhcFswXTtcbiAgICAgICAgICAgIGluZEhlYXBbMF0gPSBpbmRIZWFwW2luZEhlYXBJbmRleF07XG4gICAgICAgICAgICBpbmRIZWFwW2luZEhlYXBJbmRleF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIHZhciB0ZW1wMiA9IGRpc3RIZWFwWzBdO1xuICAgICAgICAgICAgZGlzdEhlYXBbMF0gPSBkaXN0SGVhcFtkaXN0SGVhcEluZGV4XTtcbiAgICAgICAgICAgIGRpc3RIZWFwW2Rpc3RIZWFwSW5kZXhdID0gdGVtcDI7XG4gICAgICAgICAgICBzaWZ0RG93bihkaXN0SGVhcCwgaW5kSGVhcCwgZGlzdEhlYXBJbmRleCwgMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kaWNlczogaW5kaWNlcywgd2VpZ2h0czogd2VpZ2h0cyB9O1xufVxuZXhwb3J0cy5kZWhlYXBTb3J0ID0gZGVoZWFwU29ydDtcbmZ1bmN0aW9uIHNpZnREb3duKGhlYXAxLCBoZWFwMiwgY2VpbGluZywgZWx0KSB7XG4gICAgd2hpbGUgKGVsdCAqIDIgKyAxIDwgY2VpbGluZykge1xuICAgICAgICB2YXIgbGVmdENoaWxkID0gZWx0ICogMiArIDE7XG4gICAgICAgIHZhciByaWdodENoaWxkID0gbGVmdENoaWxkICsgMTtcbiAgICAgICAgdmFyIHN3YXAgPSBlbHQ7XG4gICAgICAgIGlmIChoZWFwMVtzd2FwXSA8IGhlYXAxW2xlZnRDaGlsZF0pIHtcbiAgICAgICAgICAgIHN3YXAgPSBsZWZ0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJpZ2h0Q2hpbGQgPCBjZWlsaW5nICYmIGhlYXAxW3N3YXBdIDwgaGVhcDFbcmlnaHRDaGlsZF0pIHtcbiAgICAgICAgICAgIHN3YXAgPSByaWdodENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzd2FwID09PSBlbHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gaGVhcDFbZWx0XTtcbiAgICAgICAgICAgIGhlYXAxW2VsdF0gPSBoZWFwMVtzd2FwXTtcbiAgICAgICAgICAgIGhlYXAxW3N3YXBdID0gdGVtcDE7XG4gICAgICAgICAgICB2YXIgdGVtcDIgPSBoZWFwMltlbHRdO1xuICAgICAgICAgICAgaGVhcDJbZWx0XSA9IGhlYXAyW3N3YXBdO1xuICAgICAgICAgICAgaGVhcDJbc3dhcF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIGVsdCA9IHN3YXA7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBzbWFsbGVzdEZsYWdnZWQoaGVhcCwgcm93KSB7XG4gICAgdmFyIGluZCA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgZGlzdCA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgZmxhZyA9IGhlYXBbMl1bcm93XTtcbiAgICB2YXIgbWluRGlzdCA9IEluZmluaXR5O1xuICAgIHZhciByZXN1bHRJbmRleCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpID4gaW5kLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmbGFnW2ldID09PSAxICYmIGRpc3RbaV0gPCBtaW5EaXN0KSB7XG4gICAgICAgICAgICBtaW5EaXN0ID0gZGlzdFtpXTtcbiAgICAgICAgICAgIHJlc3VsdEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzdWx0SW5kZXggPj0gMCkge1xuICAgICAgICBmbGFnW3Jlc3VsdEluZGV4XSA9IDA7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKGluZFtyZXN1bHRJbmRleF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbmV4cG9ydHMuc21hbGxlc3RGbGFnZ2VkID0gc21hbGxlc3RGbGFnZ2VkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdW1hcF8xID0gcmVxdWlyZShcIi4vdW1hcFwiKTtcbmV4cG9ydHMuVU1BUCA9IHVtYXBfMS5VTUFQO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIF9hO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBTcGFyc2VNYXRyaXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWx1ZXMsIGRpbXMpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5Sb3dzID0gMDtcbiAgICAgICAgdGhpcy5uQ29scyA9IDA7XG4gICAgICAgIGlmIChyb3dzLmxlbmd0aCAhPT0gY29scy5sZW5ndGggfHwgcm93cy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93cywgY29scyBhbmQgdmFsdWVzIGFycmF5cyBtdXN0IGFsbCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMublJvd3MgPSBkaW1zWzBdO1xuICAgICAgICB0aGlzLm5Db2xzID0gZGltc1sxXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciByb3cgPSByb3dzW2ldO1xuICAgICAgICAgICAgdmFyIGNvbCA9IGNvbHNbaV07XG4gICAgICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlOiB2YWx1ZXNbaV0sIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLm1ha2VLZXkgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHJvdyArIFwiOlwiICsgY29sO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5jaGVja0RpbXMgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgdmFyIHdpdGhpbkJvdW5kcyA9IHJvdyA8IHRoaXMublJvd3MgJiYgY29sIDwgdGhpcy5uQ29scztcbiAgICAgICAgaWYgKCF3aXRoaW5Cb3VuZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93IGFuZC9vciBjb2wgc3BlY2lmaWVkIG91dHNpZGUgb2YgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocm93LCBjb2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgeyB2YWx1ZTogdmFsdWUsIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChyb3csIGNvbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCkgeyBkZWZhdWx0VmFsdWUgPSAwOyB9XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KGtleSkudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uIChvcmRlcmVkKSB7XG4gICAgICAgIGlmIChvcmRlcmVkID09PSB2b2lkIDApIHsgb3JkZXJlZCA9IHRydWU7IH1cbiAgICAgICAgdmFyIHJvd0NvbFZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJvd0NvbFZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcmRlcmVkKSB7XG4gICAgICAgICAgICByb3dDb2xWYWx1ZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGlmIChhLnJvdyA9PT0gYi5yb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93Q29sVmFsdWVzO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXREaW1zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMublJvd3MsIHRoaXMubkNvbHNdO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXRSb3dzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUucm93O1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0Q29scyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldFZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGZuKHZhbHVlLnZhbHVlLCB2YWx1ZS5yb3csIHZhbHVlLmNvbCk7IH0pO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgdmFyIHZhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YWxzLnB1c2goZm4odmFsdWUudmFsdWUsIHZhbHVlLnJvdywgdmFsdWUuY29sKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGltcyA9IFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgodGhpcy5nZXRSb3dzKCksIHRoaXMuZ2V0Q29scygpLCB2YWxzLCBkaW1zKTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHJvd3MgPSB1dGlscy5lbXB0eSh0aGlzLm5Sb3dzKTtcbiAgICAgICAgdmFyIG91dHB1dCA9IHJvd3MubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhfdGhpcy5uQ29scyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG91dHB1dFt2YWx1ZS5yb3ddW3ZhbHVlLmNvbF0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfTtcbiAgICByZXR1cm4gU3BhcnNlTWF0cml4O1xufSgpKTtcbmV4cG9ydHMuU3BhcnNlTWF0cml4ID0gU3BhcnNlTWF0cml4O1xuZnVuY3Rpb24gdHJhbnNwb3NlKG1hdHJpeCkge1xuICAgIHZhciBjb2xzID0gW107XG4gICAgdmFyIHJvd3MgPSBbXTtcbiAgICB2YXIgdmFscyA9IFtdO1xuICAgIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgcm93LCBjb2wpIHtcbiAgICAgICAgY29scy5wdXNoKHJvdyk7XG4gICAgICAgIHJvd3MucHVzaChjb2wpO1xuICAgICAgICB2YWxzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHZhciBkaW1zID0gW21hdHJpeC5uQ29scywgbWF0cml4Lm5Sb3dzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbmV4cG9ydHMudHJhbnNwb3NlID0gdHJhbnNwb3NlO1xuZnVuY3Rpb24gaWRlbnRpdHkoc2l6ZSkge1xuICAgIHZhciBfYSA9IF9fcmVhZChzaXplLCAxKSwgcm93cyA9IF9hWzBdO1xuICAgIHZhciBtYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIHNpemUpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaSwgMSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG5leHBvcnRzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG5mdW5jdGlvbiBwYWlyd2lzZU11bHRpcGx5KGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKiB5OyB9KTtcbn1cbmV4cG9ydHMucGFpcndpc2VNdWx0aXBseSA9IHBhaXJ3aXNlTXVsdGlwbHk7XG5mdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCBmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4geCArIHk7IH0pO1xufVxuZXhwb3J0cy5hZGQgPSBhZGQ7XG5mdW5jdGlvbiBzdWJ0cmFjdChhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsIGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4IC0geTsgfSk7XG59XG5leHBvcnRzLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG5mdW5jdGlvbiBtYXhpbXVtKGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuICh4ID4geSA/IHggOiB5KTsgfSk7XG59XG5leHBvcnRzLm1heGltdW0gPSBtYXhpbXVtO1xuZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIoYSwgc2NhbGFyKSB7XG4gICAgcmV0dXJuIGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgKiBzY2FsYXI7XG4gICAgfSk7XG59XG5leHBvcnRzLm11bHRpcGx5U2NhbGFyID0gbXVsdGlwbHlTY2FsYXI7XG5mdW5jdGlvbiBlbGltaW5hdGVaZXJvcyhtKSB7XG4gICAgdmFyIHplcm9JbmRpY2VzID0gbmV3IFNldCgpO1xuICAgIHZhciB2YWx1ZXMgPSBtLmdldFZhbHVlcygpO1xuICAgIHZhciByb3dzID0gbS5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHMgPSBtLmdldENvbHMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodmFsdWVzW2ldID09PSAwKSB7XG4gICAgICAgICAgICB6ZXJvSW5kaWNlcy5hZGQoaSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHJlbW92ZUJ5WmVyb0luZGV4ID0gZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiAhemVyb0luZGljZXMuaGFzKGluZGV4KTsgfTtcbiAgICB2YXIgbmV4dFZhbHVlcyA9IHZhbHVlcy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIHZhciBuZXh0Um93cyA9IHJvd3MuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICB2YXIgbmV4dENvbHMgPSBjb2xzLmZpbHRlcihyZW1vdmVCeVplcm9JbmRleCk7XG4gICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgobmV4dFJvd3MsIG5leHRDb2xzLCBuZXh0VmFsdWVzLCBtLmdldERpbXMoKSk7XG59XG5leHBvcnRzLmVsaW1pbmF0ZVplcm9zID0gZWxpbWluYXRlWmVyb3M7XG5mdW5jdGlvbiBub3JtYWxpemUobSwgbm9ybVR5cGUpIHtcbiAgICBpZiAobm9ybVR5cGUgPT09IHZvaWQgMCkgeyBub3JtVHlwZSA9IFwibDJcIjsgfVxuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBub3JtRm4gPSBub3JtRm5zW25vcm1UeXBlXTtcbiAgICB2YXIgY29sc0J5Um93ID0gbmV3IE1hcCgpO1xuICAgIG0uZm9yRWFjaChmdW5jdGlvbiAoXywgcm93LCBjb2wpIHtcbiAgICAgICAgdmFyIGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykgfHwgW107XG4gICAgICAgIGNvbHMucHVzaChjb2wpO1xuICAgICAgICBjb2xzQnlSb3cuc2V0KHJvdywgY29scyk7XG4gICAgfSk7XG4gICAgdmFyIG5leHRNYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIG0uZ2V0RGltcygpKTtcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgdmFyIGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykuc29ydCgpO1xuICAgICAgICB2YXIgdmFscyA9IGNvbHMubWFwKGZ1bmN0aW9uIChjb2wpIHsgcmV0dXJuIG0uZ2V0KHJvdywgY29sKTsgfSk7XG4gICAgICAgIHZhciBub3JtID0gbm9ybUZuKHZhbHMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vcm0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5leHRNYXRyaXguc2V0KHJvdywgY29sc1tpXSwgbm9ybVtpXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoY29sc0J5Um93LmtleXMoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciByb3cgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgIF9sb29wXzEocm93KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIG5leHRNYXRyaXg7XG59XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbnZhciBub3JtRm5zID0gKF9hID0ge30sXG4gICAgX2FbXCJtYXhcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbWF4ID0geHNbaV0gPiBtYXggPyB4c1tpXSA6IG1heDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IC8gbWF4OyB9KTtcbiAgICB9LFxuICAgIF9hW1wibDFcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSB4c1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IC8gc3VtOyB9KTtcbiAgICB9LFxuICAgIF9hW1wibDJcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSBNYXRoLnBvdyh4c1tpXSwgMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpIC8gc3VtKTsgfSk7XG4gICAgfSxcbiAgICBfYSk7XG5mdW5jdGlvbiBlbGVtZW50V2lzZShhLCBiLCBvcCkge1xuICAgIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIGNvbHMgPSBbXTtcbiAgICB2YXIgdmFscyA9IFtdO1xuICAgIHZhciBvcGVyYXRlID0gZnVuY3Rpb24gKHJvdywgY29sKSB7XG4gICAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcbiAgICAgICAgdmFyIG5leHRWYWx1ZSA9IG9wKGEuZ2V0KHJvdywgY29sKSwgYi5nZXQocm93LCBjb2wpKTtcbiAgICAgICAgdmFscy5wdXNoKG5leHRWYWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgdmFsdWVzQSA9IGEuZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3NBID0gYS5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHNBID0gYS5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzQVtpXTtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNBW2ldO1xuICAgICAgICB2YXIga2V5ID0gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgICAgIHZpc2l0ZWQuYWRkKGtleSk7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICB2YXIgdmFsdWVzQiA9IGIuZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3NCID0gYi5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHNCID0gYi5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXNCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzQltpXTtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNCW2ldO1xuICAgICAgICB2YXIga2V5ID0gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgICAgIGlmICh2aXNpdGVkLmhhcyhrZXkpKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICB2YXIgZGltcyA9IFthLm5Sb3dzLCBhLm5Db2xzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbmZ1bmN0aW9uIGdldENTUih4KSB7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICB4LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCByb3csIGNvbCkge1xuICAgICAgICBlbnRyaWVzLnB1c2goeyB2YWx1ZTogdmFsdWUsIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICB9KTtcbiAgICBlbnRyaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgaWYgKGEucm93ID09PSBiLnJvdykge1xuICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhciBpbmRwdHIgPSBbXTtcbiAgICB2YXIgY3VycmVudFJvdyA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgX2EgPSBlbnRyaWVzW2ldLCByb3cgPSBfYS5yb3csIGNvbCA9IF9hLmNvbCwgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICAgICAgaWYgKHJvdyAhPT0gY3VycmVudFJvdykge1xuICAgICAgICAgICAgY3VycmVudFJvdyA9IHJvdztcbiAgICAgICAgICAgIGluZHB0ci5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICAgIGluZGljZXMucHVzaChjb2wpO1xuICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IGluZGljZXM6IGluZGljZXMsIHZhbHVlczogdmFsdWVzLCBpbmRwdHI6IGluZHB0ciB9O1xufVxuZXhwb3J0cy5nZXRDU1IgPSBnZXRDU1I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaGVhcCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oZWFwXCIpKTtcbnZhciBtYXRyaXggPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWF0cml4XCIpKTtcbnZhciB0cmVlID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3RyZWVcIikpO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbmZ1bmN0aW9uIG1ha2VOTkRlc2NlbnQoZGlzdGFuY2VGbiwgcmFuZG9tKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5ORGVzY2VudChkYXRhLCBsZWFmQXJyYXksIG5OZWlnaGJvcnMsIG5JdGVycywgbWF4Q2FuZGlkYXRlcywgZGVsdGEsIHJobywgcnBUcmVlSW5pdCkge1xuICAgICAgICBpZiAobkl0ZXJzID09PSB2b2lkIDApIHsgbkl0ZXJzID0gMTA7IH1cbiAgICAgICAgaWYgKG1heENhbmRpZGF0ZXMgPT09IHZvaWQgMCkgeyBtYXhDYW5kaWRhdGVzID0gNTA7IH1cbiAgICAgICAgaWYgKGRlbHRhID09PSB2b2lkIDApIHsgZGVsdGEgPSAwLjAwMTsgfVxuICAgICAgICBpZiAocmhvID09PSB2b2lkIDApIHsgcmhvID0gMC41OyB9XG4gICAgICAgIGlmIChycFRyZWVJbml0ID09PSB2b2lkIDApIHsgcnBUcmVlSW5pdCA9IHRydWU7IH1cbiAgICAgICAgdmFyIG5WZXJ0aWNlcyA9IGRhdGEubGVuZ3RoO1xuICAgICAgICB2YXIgY3VycmVudEdyYXBoID0gaGVhcC5tYWtlSGVhcChkYXRhLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGluZGljZXMgPSBoZWFwLnJlamVjdGlvblNhbXBsZShuTmVpZ2hib3JzLCBkYXRhLmxlbmd0aCwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2ldLCBkYXRhW2luZGljZXNbal1dKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGluZGljZXNbal0sIGQsIGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChycFRyZWVJbml0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGxlYWZBcnJheS5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVhZkFycmF5W25dLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1baV0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBsZWFmQXJyYXlbbl0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1bal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtsZWFmQXJyYXlbbl1baV1dLCBkYXRhW2xlYWZBcnJheVtuXVtqXV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGxlYWZBcnJheVtuXVtpXSwgZCwgbGVhZkFycmF5W25dW2pdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBsZWFmQXJyYXlbbl1bal0sIGQsIGxlYWZBcnJheVtuXVtpXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBuSXRlcnM7IG4rKykge1xuICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU5laWdoYm9ycyA9IGhlYXAuYnVpbGRDYW5kaWRhdGVzKGN1cnJlbnRHcmFwaCwgblZlcnRpY2VzLCBuTmVpZ2hib3JzLCBtYXhDYW5kaWRhdGVzLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGMgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuVmVydGljZXM7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWF4Q2FuZGlkYXRlczsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwID0gTWF0aC5mbG9vcihjYW5kaWRhdGVOZWlnaGJvcnNbMF1baV1bal0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocCA8IDAgfHwgdXRpbHMudGF1UmFuZChyYW5kb20pIDwgcmhvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG1heENhbmRpZGF0ZXM7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmZsb29yKGNhbmRpZGF0ZU5laWdoYm9yc1swXVtpXVtrXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2ogPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1bal07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2sgPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1ba107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocSA8IDAgfHwgKCFjaiAmJiAhY2spKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtwXSwgZGF0YVtxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjICs9IGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBwLCBkLCBxLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIHEsIGQsIHAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPD0gZGVsdGEgKiBuTmVpZ2hib3JzICogZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydGVkID0gaGVhcC5kZWhlYXBTb3J0KGN1cnJlbnRHcmFwaCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWQ7XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZU5ORGVzY2VudCA9IG1ha2VOTkRlc2NlbnQ7XG5mdW5jdGlvbiBtYWtlSW5pdGlhbGl6YXRpb25zKGRpc3RhbmNlRm4pIHtcbiAgICBmdW5jdGlvbiBpbml0RnJvbVJhbmRvbShuTmVpZ2hib3JzLCBkYXRhLCBxdWVyeVBvaW50cywgX2hlYXAsIHJhbmRvbSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5kaWNlcyA9IHV0aWxzLnJlamVjdGlvblNhbXBsZShuTmVpZ2hib3JzLCBkYXRhLmxlbmd0aCwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRpY2VzW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0RnJvbVRyZWUoX3RyZWUsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbmRpY2VzID0gdHJlZS5zZWFyY2hGbGF0VHJlZShxdWVyeVBvaW50c1tpXSwgX3RyZWUsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tqXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtpbmRpY2VzW2pdXSwgcXVlcnlQb2ludHNbaV0pO1xuICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goX2hlYXAsIGksIGQsIGluZGljZXNbal0sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5pdEZyb21SYW5kb206IGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWU6IGluaXRGcm9tVHJlZSB9O1xufVxuZXhwb3J0cy5tYWtlSW5pdGlhbGl6YXRpb25zID0gbWFrZUluaXRpYWxpemF0aW9ucztcbmZ1bmN0aW9uIG1ha2VJbml0aWFsaXplZE5OU2VhcmNoKGRpc3RhbmNlRm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbm5TZWFyY2hGbihkYXRhLCBncmFwaCwgaW5pdGlhbGl6YXRpb24sIHF1ZXJ5UG9pbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgX2IgPSBtYXRyaXguZ2V0Q1NSKGdyYXBoKSwgaW5kaWNlcyA9IF9iLmluZGljZXMsIGluZHB0ciA9IF9iLmluZHB0cjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHRyaWVkID0gbmV3IFNldChpbml0aWFsaXphdGlvblswXVtpXSk7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciB2ZXJ0ZXggPSBoZWFwLnNtYWxsZXN0RmxhZ2dlZChpbml0aWFsaXphdGlvbiwgaSk7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjYW5kaWRhdGVzID0gaW5kaWNlcy5zbGljZShpbmRwdHJbdmVydGV4XSwgaW5kcHRyW3ZlcnRleCArIDFdKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjYW5kaWRhdGVzXzEgPSBfX3ZhbHVlcyhjYW5kaWRhdGVzKSwgY2FuZGlkYXRlc18xXzEgPSBjYW5kaWRhdGVzXzEubmV4dCgpOyAhY2FuZGlkYXRlc18xXzEuZG9uZTsgY2FuZGlkYXRlc18xXzEgPSBjYW5kaWRhdGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gY2FuZGlkYXRlc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSB2ZXJ0ZXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZWQuaGFzKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2NhbmRpZGF0ZV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAudW5jaGVja2VkSGVhcFB1c2goaW5pdGlhbGl6YXRpb24sIGksIGQsIGNhbmRpZGF0ZSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmllZC5hZGQoY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNfMV8xICYmICFjYW5kaWRhdGVzXzFfMS5kb25lICYmIChfYSA9IGNhbmRpZGF0ZXNfMS5yZXR1cm4pKSBfYS5jYWxsKGNhbmRpZGF0ZXNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb247XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZUluaXRpYWxpemVkTk5TZWFyY2ggPSBtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaDtcbmZ1bmN0aW9uIGluaXRpYWxpemVTZWFyY2goZm9yZXN0LCBkYXRhLCBxdWVyeVBvaW50cywgbk5laWdoYm9ycywgaW5pdEZyb21SYW5kb20sIGluaXRGcm9tVHJlZSwgcmFuZG9tKSB7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgdmFyIHJlc3VsdHMgPSBoZWFwLm1ha2VIZWFwKHF1ZXJ5UG9pbnRzLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgaW5pdEZyb21SYW5kb20obk5laWdoYm9ycywgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgaWYgKGZvcmVzdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZm9yZXN0XzEgPSBfX3ZhbHVlcyhmb3Jlc3QpLCBmb3Jlc3RfMV8xID0gZm9yZXN0XzEubmV4dCgpOyAhZm9yZXN0XzFfMS5kb25lOyBmb3Jlc3RfMV8xID0gZm9yZXN0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRyZWVfMSA9IGZvcmVzdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgaW5pdEZyb21UcmVlKHRyZWVfMSwgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChmb3Jlc3RfMV8xICYmICFmb3Jlc3RfMV8xLmRvbmUgJiYgKF9hID0gZm9yZXN0XzEucmV0dXJuKSkgX2EuY2FsbChmb3Jlc3RfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5leHBvcnRzLmluaXRpYWxpemVTZWFyY2ggPSBpbml0aWFsaXplU2VhcmNoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWQgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG52YXIgRmxhdFRyZWUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZsYXRUcmVlKGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcykge1xuICAgICAgICB0aGlzLmh5cGVycGxhbmVzID0gaHlwZXJwbGFuZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IG9mZnNldHM7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgdGhpcy5pbmRpY2VzID0gaW5kaWNlcztcbiAgICB9XG4gICAgcmV0dXJuIEZsYXRUcmVlO1xufSgpKTtcbmV4cG9ydHMuRmxhdFRyZWUgPSBGbGF0VHJlZTtcbmZ1bmN0aW9uIG1ha2VGb3Jlc3QoZGF0YSwgbk5laWdoYm9ycywgblRyZWVzLCByYW5kb20pIHtcbiAgICB2YXIgbGVhZlNpemUgPSBNYXRoLm1heCgxMCwgbk5laWdoYm9ycyk7XG4gICAgdmFyIHRyZWVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5UcmVlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gbWFrZVRyZWUoZGF0YSwgbGVhZlNpemUsIGksIHJhbmRvbSk7IH0pO1xuICAgIHZhciBmb3Jlc3QgPSB0cmVlcy5tYXAoZnVuY3Rpb24gKHRyZWUpIHsgcmV0dXJuIGZsYXR0ZW5UcmVlKHRyZWUsIGxlYWZTaXplKTsgfSk7XG4gICAgcmV0dXJuIGZvcmVzdDtcbn1cbmV4cG9ydHMubWFrZUZvcmVzdCA9IG1ha2VGb3Jlc3Q7XG5mdW5jdGlvbiBtYWtlVHJlZShkYXRhLCBsZWFmU2l6ZSwgbiwgcmFuZG9tKSB7XG4gICAgaWYgKGxlYWZTaXplID09PSB2b2lkIDApIHsgbGVhZlNpemUgPSAzMDsgfVxuICAgIHZhciBpbmRpY2VzID0gdXRpbHMucmFuZ2UoZGF0YS5sZW5ndGgpO1xuICAgIHZhciB0cmVlID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlcywgbGVhZlNpemUsIG4sIHJhbmRvbSk7XG4gICAgcmV0dXJuIHRyZWU7XG59XG5mdW5jdGlvbiBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzLCBsZWFmU2l6ZSwgcSwgcmFuZG9tKSB7XG4gICAgaWYgKGxlYWZTaXplID09PSB2b2lkIDApIHsgbGVhZlNpemUgPSAzMDsgfVxuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA+IGxlYWZTaXplKSB7XG4gICAgICAgIHZhciBzcGxpdFJlc3VsdHMgPSBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKTtcbiAgICAgICAgdmFyIGluZGljZXNMZWZ0ID0gc3BsaXRSZXN1bHRzLmluZGljZXNMZWZ0LCBpbmRpY2VzUmlnaHQgPSBzcGxpdFJlc3VsdHMuaW5kaWNlc1JpZ2h0LCBoeXBlcnBsYW5lID0gc3BsaXRSZXN1bHRzLmh5cGVycGxhbmUsIG9mZnNldCA9IHNwbGl0UmVzdWx0cy5vZmZzZXQ7XG4gICAgICAgIHZhciBsZWZ0Q2hpbGQgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzTGVmdCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICB2YXIgcmlnaHRDaGlsZCA9IG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXNSaWdodCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICB2YXIgbm9kZSA9IHsgbGVmdENoaWxkOiBsZWZ0Q2hpbGQsIHJpZ2h0Q2hpbGQ6IHJpZ2h0Q2hpbGQsIGlzTGVhZjogZmFsc2UsIGh5cGVycGxhbmU6IGh5cGVycGxhbmUsIG9mZnNldDogb2Zmc2V0IH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIG5vZGUgPSB7IGluZGljZXM6IGluZGljZXMsIGlzTGVhZjogdHJ1ZSB9O1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59XG5mdW5jdGlvbiBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKSB7XG4gICAgdmFyIGRpbSA9IGRhdGFbMF0ubGVuZ3RoO1xuICAgIHZhciBsZWZ0SW5kZXggPSB1dGlscy50YXVSYW5kSW50KGluZGljZXMubGVuZ3RoLCByYW5kb20pO1xuICAgIHZhciByaWdodEluZGV4ID0gdXRpbHMudGF1UmFuZEludChpbmRpY2VzLmxlbmd0aCwgcmFuZG9tKTtcbiAgICByaWdodEluZGV4ICs9IGxlZnRJbmRleCA9PT0gcmlnaHRJbmRleCA/IDEgOiAwO1xuICAgIHJpZ2h0SW5kZXggPSByaWdodEluZGV4ICUgaW5kaWNlcy5sZW5ndGg7XG4gICAgdmFyIGxlZnQgPSBpbmRpY2VzW2xlZnRJbmRleF07XG4gICAgdmFyIHJpZ2h0ID0gaW5kaWNlc1tyaWdodEluZGV4XTtcbiAgICB2YXIgaHlwZXJwbGFuZU9mZnNldCA9IDA7XG4gICAgdmFyIGh5cGVycGxhbmVWZWN0b3IgPSB1dGlscy56ZXJvcyhkaW0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaHlwZXJwbGFuZVZlY3Rvci5sZW5ndGg7IGkrKykge1xuICAgICAgICBoeXBlcnBsYW5lVmVjdG9yW2ldID0gZGF0YVtsZWZ0XVtpXSAtIGRhdGFbcmlnaHRdW2ldO1xuICAgICAgICBoeXBlcnBsYW5lT2Zmc2V0IC09XG4gICAgICAgICAgICAoaHlwZXJwbGFuZVZlY3RvcltpXSAqIChkYXRhW2xlZnRdW2ldICsgZGF0YVtyaWdodF1baV0pKSAvIDIuMDtcbiAgICB9XG4gICAgdmFyIG5MZWZ0ID0gMDtcbiAgICB2YXIgblJpZ2h0ID0gMDtcbiAgICB2YXIgc2lkZSA9IHV0aWxzLnplcm9zKGluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG1hcmdpbiA9IGh5cGVycGxhbmVPZmZzZXQ7XG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgIG1hcmdpbiArPSBoeXBlcnBsYW5lVmVjdG9yW2RdICogZGF0YVtpbmRpY2VzW2ldXVtkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFyZ2luID09PSAwKSB7XG4gICAgICAgICAgICBzaWRlW2ldID0gdXRpbHMudGF1UmFuZEludCgyLCByYW5kb20pO1xuICAgICAgICAgICAgaWYgKHNpZGVbaV0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFyZ2luID4gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDA7XG4gICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDE7XG4gICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW5kaWNlc0xlZnQgPSB1dGlscy56ZXJvcyhuTGVmdCk7XG4gICAgdmFyIGluZGljZXNSaWdodCA9IHV0aWxzLnplcm9zKG5SaWdodCk7XG4gICAgbkxlZnQgPSAwO1xuICAgIG5SaWdodCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWRlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzaWRlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBpbmRpY2VzTGVmdFtuTGVmdF0gPSBpbmRpY2VzW2ldO1xuICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluZGljZXNSaWdodFtuUmlnaHRdID0gaW5kaWNlc1tpXTtcbiAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGluZGljZXNMZWZ0OiBpbmRpY2VzTGVmdCxcbiAgICAgICAgaW5kaWNlc1JpZ2h0OiBpbmRpY2VzUmlnaHQsXG4gICAgICAgIGh5cGVycGxhbmU6IGh5cGVycGxhbmVWZWN0b3IsXG4gICAgICAgIG9mZnNldDogaHlwZXJwbGFuZU9mZnNldCxcbiAgICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZSwgbGVhZlNpemUpIHtcbiAgICB2YXIgbk5vZGVzID0gbnVtTm9kZXModHJlZSk7XG4gICAgdmFyIG5MZWF2ZXMgPSBudW1MZWF2ZXModHJlZSk7XG4gICAgdmFyIGh5cGVycGxhbmVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5Ob2RlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlscy56ZXJvcyh0cmVlLmh5cGVycGxhbmUgPyB0cmVlLmh5cGVycGxhbmUubGVuZ3RoIDogMCk7IH0pO1xuICAgIHZhciBvZmZzZXRzID0gdXRpbHMuemVyb3Mobk5vZGVzKTtcbiAgICB2YXIgY2hpbGRyZW4gPSB1dGlscy5yYW5nZShuTm9kZXMpLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBbLTEsIC0xXTsgfSk7XG4gICAgdmFyIGluZGljZXMgPSB1dGlsc1xuICAgICAgICAucmFuZ2UobkxlYXZlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlscy5yYW5nZShsZWFmU2l6ZSkubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIC0xOyB9KTsgfSk7XG4gICAgcmVjdXJzaXZlRmxhdHRlbih0cmVlLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIDAsIDApO1xuICAgIHJldHVybiBuZXcgRmxhdFRyZWUoaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzKTtcbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZSwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtLCBsZWFmTnVtKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0cmVlLmlzTGVhZikge1xuICAgICAgICBjaGlsZHJlbltub2RlTnVtXVswXSA9IC1sZWFmTnVtO1xuICAgICAgICAoX2EgPSBpbmRpY2VzW2xlYWZOdW1dKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkKFswLCB0cmVlLmluZGljZXMubGVuZ3RoXSwgdHJlZS5pbmRpY2VzKSk7XG4gICAgICAgIGxlYWZOdW0gKz0gMTtcbiAgICAgICAgcmV0dXJuIHsgbm9kZU51bTogbm9kZU51bSwgbGVhZk51bTogbGVhZk51bSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaHlwZXJwbGFuZXNbbm9kZU51bV0gPSB0cmVlLmh5cGVycGxhbmU7XG4gICAgICAgIG9mZnNldHNbbm9kZU51bV0gPSB0cmVlLm9mZnNldDtcbiAgICAgICAgY2hpbGRyZW5bbm9kZU51bV1bMF0gPSBub2RlTnVtICsgMTtcbiAgICAgICAgdmFyIG9sZE5vZGVOdW0gPSBub2RlTnVtO1xuICAgICAgICB2YXIgcmVzID0gcmVjdXJzaXZlRmxhdHRlbih0cmVlLmxlZnRDaGlsZCwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtICsgMSwgbGVhZk51bSk7XG4gICAgICAgIG5vZGVOdW0gPSByZXMubm9kZU51bTtcbiAgICAgICAgbGVhZk51bSA9IHJlcy5sZWFmTnVtO1xuICAgICAgICBjaGlsZHJlbltvbGROb2RlTnVtXVsxXSA9IG5vZGVOdW0gKyAxO1xuICAgICAgICByZXMgPSByZWN1cnNpdmVGbGF0dGVuKHRyZWUucmlnaHRDaGlsZCwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtICsgMSwgbGVhZk51bSk7XG4gICAgICAgIHJldHVybiB7IG5vZGVOdW06IHJlcy5ub2RlTnVtLCBsZWFmTnVtOiByZXMubGVhZk51bSB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bU5vZGVzKHRyZWUpIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMSArIG51bU5vZGVzKHRyZWUubGVmdENoaWxkKSArIG51bU5vZGVzKHRyZWUucmlnaHRDaGlsZCk7XG4gICAgfVxufVxuZnVuY3Rpb24gbnVtTGVhdmVzKHRyZWUpIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVtTGVhdmVzKHRyZWUubGVmdENoaWxkKSArIG51bUxlYXZlcyh0cmVlLnJpZ2h0Q2hpbGQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VMZWFmQXJyYXkocnBGb3Jlc3QpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICBpZiAocnBGb3Jlc3QubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBycEZvcmVzdF8xID0gX192YWx1ZXMocnBGb3Jlc3QpLCBycEZvcmVzdF8xXzEgPSBycEZvcmVzdF8xLm5leHQoKTsgIXJwRm9yZXN0XzFfMS5kb25lOyBycEZvcmVzdF8xXzEgPSBycEZvcmVzdF8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciB0cmVlID0gcnBGb3Jlc3RfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoLmFwcGx5KG91dHB1dCwgX19zcHJlYWQodHJlZS5pbmRpY2VzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChycEZvcmVzdF8xXzEgJiYgIXJwRm9yZXN0XzFfMS5kb25lICYmIChfYSA9IHJwRm9yZXN0XzEucmV0dXJuKSkgX2EuY2FsbChycEZvcmVzdF8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtbLTFdXTtcbiAgICB9XG59XG5leHBvcnRzLm1ha2VMZWFmQXJyYXkgPSBtYWtlTGVhZkFycmF5O1xuZnVuY3Rpb24gc2VsZWN0U2lkZShoeXBlcnBsYW5lLCBvZmZzZXQsIHBvaW50LCByYW5kb20pIHtcbiAgICB2YXIgbWFyZ2luID0gb2Zmc2V0O1xuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgcG9pbnQubGVuZ3RoOyBkKyspIHtcbiAgICAgICAgbWFyZ2luICs9IGh5cGVycGxhbmVbZF0gKiBwb2ludFtkXTtcbiAgICB9XG4gICAgaWYgKG1hcmdpbiA9PT0gMCkge1xuICAgICAgICB2YXIgc2lkZSA9IHV0aWxzLnRhdVJhbmRJbnQoMiwgcmFuZG9tKTtcbiAgICAgICAgcmV0dXJuIHNpZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1hcmdpbiA+IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZWFyY2hGbGF0VHJlZShwb2ludCwgdHJlZSwgcmFuZG9tKSB7XG4gICAgdmFyIG5vZGUgPSAwO1xuICAgIHdoaWxlICh0cmVlLmNoaWxkcmVuW25vZGVdWzBdID4gMCkge1xuICAgICAgICB2YXIgc2lkZSA9IHNlbGVjdFNpZGUodHJlZS5oeXBlcnBsYW5lc1tub2RlXSwgdHJlZS5vZmZzZXRzW25vZGVdLCBwb2ludCwgcmFuZG9tKTtcbiAgICAgICAgaWYgKHNpZGUgPT09IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IHRyZWUuY2hpbGRyZW5bbm9kZV1bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGluZGV4ID0gLTEgKiB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgIHJldHVybiB0cmVlLmluZGljZXNbaW5kZXhdO1xufVxuZXhwb3J0cy5zZWFyY2hGbGF0VHJlZSA9IHNlYXJjaEZsYXRUcmVlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZCkgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBoZWFwID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hlYXBcIikpO1xudmFyIG1hdHJpeCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9tYXRyaXhcIikpO1xudmFyIG5uRGVzY2VudCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9ubl9kZXNjZW50XCIpKTtcbnZhciB0cmVlID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3RyZWVcIikpO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1sLWxldmVuYmVyZy1tYXJxdWFyZHRcIikpO1xudmFyIFNNT09USF9LX1RPTEVSQU5DRSA9IDFlLTU7XG52YXIgTUlOX0tfRElTVF9TQ0FMRSA9IDFlLTM7XG52YXIgVU1BUCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVU1BUChwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcyA9PT0gdm9pZCAwKSB7IHBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMubGVhcm5pbmdSYXRlID0gMS4wO1xuICAgICAgICB0aGlzLmxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wO1xuICAgICAgICB0aGlzLm1pbkRpc3QgPSAwLjE7XG4gICAgICAgIHRoaXMubkNvbXBvbmVudHMgPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSAwO1xuICAgICAgICB0aGlzLm5OZWlnaGJvcnMgPSAxNTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZVNhbXBsZVJhdGUgPSA1O1xuICAgICAgICB0aGlzLnJhbmRvbSA9IE1hdGgucmFuZG9tO1xuICAgICAgICB0aGlzLnJlcHVsc2lvblN0cmVuZ3RoID0gMS4wO1xuICAgICAgICB0aGlzLnNldE9wTWl4UmF0aW8gPSAxLjA7XG4gICAgICAgIHRoaXMuc3ByZWFkID0gMS4wO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSA9IDQuMDtcbiAgICAgICAgdGhpcy50YXJnZXRNZXRyaWMgPSBcImNhdGVnb3JpY2FsXCI7XG4gICAgICAgIHRoaXMudGFyZ2V0V2VpZ2h0ID0gMC41O1xuICAgICAgICB0aGlzLnRhcmdldE5OZWlnaGJvcnMgPSB0aGlzLm5OZWlnaGJvcnM7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IGV1Y2xpZGVhbjtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucnBGb3Jlc3QgPSBbXTtcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSA9IG5ldyBPcHRpbWl6YXRpb25TdGF0ZSgpO1xuICAgICAgICB2YXIgc2V0UGFyYW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAocGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBfdGhpc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICAgIH07XG4gICAgICAgIHNldFBhcmFtKCdkaXN0YW5jZUZuJyk7XG4gICAgICAgIHNldFBhcmFtKCdsZWFybmluZ1JhdGUnKTtcbiAgICAgICAgc2V0UGFyYW0oJ2xvY2FsQ29ubmVjdGl2aXR5Jyk7XG4gICAgICAgIHNldFBhcmFtKCdtaW5EaXN0Jyk7XG4gICAgICAgIHNldFBhcmFtKCduQ29tcG9uZW50cycpO1xuICAgICAgICBzZXRQYXJhbSgnbkVwb2NocycpO1xuICAgICAgICBzZXRQYXJhbSgnbk5laWdoYm9ycycpO1xuICAgICAgICBzZXRQYXJhbSgnbmVnYXRpdmVTYW1wbGVSYXRlJyk7XG4gICAgICAgIHNldFBhcmFtKCdyYW5kb20nKTtcbiAgICAgICAgc2V0UGFyYW0oJ3JlcHVsc2lvblN0cmVuZ3RoJyk7XG4gICAgICAgIHNldFBhcmFtKCdzZXRPcE1peFJhdGlvJyk7XG4gICAgICAgIHNldFBhcmFtKCdzcHJlYWQnKTtcbiAgICAgICAgc2V0UGFyYW0oJ3RyYW5zZm9ybVF1ZXVlU2l6ZScpO1xuICAgIH1cbiAgICBVTUFQLnByb3RvdHlwZS5maXQgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGaXQoWCk7XG4gICAgICAgIHRoaXMub3B0aW1pemVMYXlvdXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZml0QXN5bmMgPSBmdW5jdGlvbiAoWCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHsgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpdChYKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGNhbGxiYWNrKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgdGhpcy5lbWJlZGRpbmddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNldFN1cGVydmlzZWRQcm9qZWN0aW9uID0gZnVuY3Rpb24gKFksIHBhcmFtcykge1xuICAgICAgICBpZiAocGFyYW1zID09PSB2b2lkIDApIHsgcGFyYW1zID0ge307IH1cbiAgICAgICAgdGhpcy5ZID0gWTtcbiAgICAgICAgdGhpcy50YXJnZXRNZXRyaWMgPSBwYXJhbXMudGFyZ2V0TWV0cmljIHx8IHRoaXMudGFyZ2V0TWV0cmljO1xuICAgICAgICB0aGlzLnRhcmdldFdlaWdodCA9IHBhcmFtcy50YXJnZXRXZWlnaHQgfHwgdGhpcy50YXJnZXRXZWlnaHQ7XG4gICAgICAgIHRoaXMudGFyZ2V0Tk5laWdoYm9ycyA9IHBhcmFtcy50YXJnZXROTmVpZ2hib3JzIHx8IHRoaXMudGFyZ2V0Tk5laWdoYm9ycztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNldFByZWNvbXB1dGVkS05OID0gZnVuY3Rpb24gKGtubkluZGljZXMsIGtubkRpc3RhbmNlcykge1xuICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5JbmRpY2VzO1xuICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtubkRpc3RhbmNlcztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVGaXQgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICBpZiAoWC5sZW5ndGggPD0gdGhpcy5uTmVpZ2hib3JzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgZW5vdWdoIGRhdGEgcG9pbnRzIChcIiArIFgubGVuZ3RoICsgXCIpIHRvIGNyZWF0ZSBuTmVpZ2hib3JzOiBcIiArIHRoaXMubk5laWdoYm9ycyArIFwiLiAgQWRkIG1vcmUgZGF0YSBwb2ludHMgb3IgYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5YID09PSBYICYmIHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuWCA9IFg7XG4gICAgICAgIGlmICghdGhpcy5rbm5JbmRpY2VzICYmICF0aGlzLmtubkRpc3RhbmNlcykge1xuICAgICAgICAgICAgdmFyIGtublJlc3VsdHMgPSB0aGlzLm5lYXJlc3ROZWlnaGJvcnMoWCk7XG4gICAgICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5SZXN1bHRzLmtubkluZGljZXM7XG4gICAgICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtublJlc3VsdHMua25uRGlzdGFuY2VzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGggPSB0aGlzLmZ1enp5U2ltcGxpY2lhbFNldChYLCB0aGlzLm5OZWlnaGJvcnMsIHRoaXMuc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIHRoaXMubWFrZVNlYXJjaEZucygpO1xuICAgICAgICB0aGlzLnNlYXJjaEdyYXBoID0gdGhpcy5tYWtlU2VhcmNoR3JhcGgoWCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24oKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5pbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZygpLCBoZWFkID0gX2EuaGVhZCwgdGFpbCA9IF9hLnRhaWwsIGVwb2Noc1BlclNhbXBsZSA9IF9hLmVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5oZWFkID0gaGVhZDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS50YWlsID0gdGFpbDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJTYW1wbGUgPSBlcG9jaHNQZXJTYW1wbGU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGltaXphdGlvbigpO1xuICAgICAgICB0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCk7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VTZWFyY2hGbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IG5uRGVzY2VudC5tYWtlSW5pdGlhbGl6YXRpb25zKHRoaXMuZGlzdGFuY2VGbiksIGluaXRGcm9tVHJlZSA9IF9hLmluaXRGcm9tVHJlZSwgaW5pdEZyb21SYW5kb20gPSBfYS5pbml0RnJvbVJhbmRvbTtcbiAgICAgICAgdGhpcy5pbml0RnJvbVRyZWUgPSBpbml0RnJvbVRyZWU7XG4gICAgICAgIHRoaXMuaW5pdEZyb21SYW5kb20gPSBpbml0RnJvbVJhbmRvbTtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBubkRlc2NlbnQubWFrZUluaXRpYWxpemVkTk5TZWFyY2godGhpcy5kaXN0YW5jZUZuKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VTZWFyY2hHcmFwaCA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHZhciBrbm5JbmRpY2VzID0gdGhpcy5rbm5JbmRpY2VzO1xuICAgICAgICB2YXIga25uRGlzdGFuY2VzID0gdGhpcy5rbm5EaXN0YW5jZXM7XG4gICAgICAgIHZhciBkaW1zID0gW1gubGVuZ3RoLCBYLmxlbmd0aF07XG4gICAgICAgIHZhciBzZWFyY2hHcmFwaCA9IG5ldyBtYXRyaXguU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIGRpbXMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtubkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBrbm4gPSBrbm5JbmRpY2VzW2ldO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlcyA9IGtubkRpc3RhbmNlc1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga25uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5laWdoYm9yID0ga25uW2pdO1xuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IGRpc3RhbmNlc1tqXTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyYXBoLnNldChpLCBuZWlnaGJvciwgZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzZWFyY2hHcmFwaCk7XG4gICAgICAgIHJldHVybiBtYXRyaXgubWF4aW11bShzZWFyY2hHcmFwaCwgdHJhbnNwb3NlKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0b1RyYW5zZm9ybSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcmF3RGF0YSA9IHRoaXMuWDtcbiAgICAgICAgaWYgKHJhd0RhdGEgPT09IHVuZGVmaW5lZCB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGhhcyBiZWVuIGZpdC4nKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbk5laWdoYm9ycyA9IE1hdGguZmxvb3IodGhpcy5uTmVpZ2hib3JzICogdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUpO1xuICAgICAgICBuTmVpZ2hib3JzID0gTWF0aC5taW4ocmF3RGF0YS5sZW5ndGgsIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgaW5pdCA9IG5uRGVzY2VudC5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3QsIHJhd0RhdGEsIHRvVHJhbnNmb3JtLCBuTmVpZ2hib3JzLCB0aGlzLmluaXRGcm9tUmFuZG9tLCB0aGlzLmluaXRGcm9tVHJlZSwgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zZWFyY2gocmF3RGF0YSwgdGhpcy5zZWFyY2hHcmFwaCwgaW5pdCwgdG9UcmFuc2Zvcm0pO1xuICAgICAgICB2YXIgX2EgPSBoZWFwLmRlaGVhcFNvcnQocmVzdWx0KSwgaW5kaWNlcyA9IF9hLmluZGljZXMsIGRpc3RhbmNlcyA9IF9hLndlaWdodHM7XG4gICAgICAgIGluZGljZXMgPSBpbmRpY2VzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5zbGljZSgwLCBfdGhpcy5uTmVpZ2hib3JzKTsgfSk7XG4gICAgICAgIGRpc3RhbmNlcyA9IGRpc3RhbmNlcy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguc2xpY2UoMCwgX3RoaXMubk5laWdoYm9ycyk7IH0pO1xuICAgICAgICB2YXIgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSA9IE1hdGgubWF4KDAsIHRoaXMubG9jYWxDb25uZWN0aXZpdHkgLSAxKTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5zbW9vdGhLTk5EaXN0YW5jZShkaXN0YW5jZXMsIHRoaXMubk5laWdoYm9ycywgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSksIHNpZ21hcyA9IF9iLnNpZ21hcywgcmhvcyA9IF9iLnJob3M7XG4gICAgICAgIHZhciBfYyA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoaW5kaWNlcywgZGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpLCByb3dzID0gX2Mucm93cywgY29scyA9IF9jLmNvbHMsIHZhbHMgPSBfYy52YWxzO1xuICAgICAgICB2YXIgc2l6ZSA9IFt0b1RyYW5zZm9ybS5sZW5ndGgsIHJhd0RhdGEubGVuZ3RoXTtcbiAgICAgICAgdmFyIGdyYXBoID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIHZhciBub3JtZWQgPSBtYXRyaXgubm9ybWFsaXplKGdyYXBoLCBcImwxXCIpO1xuICAgICAgICB2YXIgY3NyTWF0cml4ID0gbWF0cml4LmdldENTUihub3JtZWQpO1xuICAgICAgICB2YXIgblBvaW50cyA9IHRvVHJhbnNmb3JtLmxlbmd0aDtcbiAgICAgICAgdmFyIGVJbmRpY2VzID0gdXRpbHMucmVzaGFwZTJkKGNzck1hdHJpeC5pbmRpY2VzLCBuUG9pbnRzLCB0aGlzLm5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgZVdlaWdodHMgPSB1dGlscy5yZXNoYXBlMmQoY3NyTWF0cml4LnZhbHVlcywgblBvaW50cywgdGhpcy5uTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIGVtYmVkZGluZyA9IGluaXRUcmFuc2Zvcm0oZUluZGljZXMsIGVXZWlnaHRzLCB0aGlzLmVtYmVkZGluZyk7XG4gICAgICAgIHZhciBuRXBvY2hzID0gdGhpcy5uRXBvY2hzXG4gICAgICAgICAgICA/IHRoaXMubkVwb2NocyAvIDNcbiAgICAgICAgICAgIDogZ3JhcGgublJvd3MgPD0gMTAwMDBcbiAgICAgICAgICAgICAgICA/IDEwMFxuICAgICAgICAgICAgICAgIDogMzA7XG4gICAgICAgIHZhciBncmFwaE1heCA9IGdyYXBoXG4gICAgICAgICAgICAuZ2V0VmFsdWVzKClcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgdmFsKSB7IHJldHVybiAodmFsID4gbWF4ID8gdmFsIDogbWF4KTsgfSwgMCk7XG4gICAgICAgIGdyYXBoID0gZ3JhcGgubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzID8gMCA6IHZhbHVlKTsgfSk7XG4gICAgICAgIGdyYXBoID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGdyYXBoKTtcbiAgICAgICAgdmFyIGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShncmFwaC5nZXRWYWx1ZXMoKSwgbkVwb2Nocyk7XG4gICAgICAgIHZhciBoZWFkID0gZ3JhcGguZ2V0Um93cygpO1xuICAgICAgICB2YXIgdGFpbCA9IGdyYXBoLmdldENvbHMoKTtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgaGVhZEVtYmVkZGluZzogZW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGhpcy5lbWJlZGRpbmcsXG4gICAgICAgICAgICBoZWFkOiBoZWFkLFxuICAgICAgICAgICAgdGFpbDogdGFpbCxcbiAgICAgICAgICAgIGN1cnJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgIG5FcG9jaHM6IG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IGdyYXBoLmdldERpbXMoKVsxXSxcbiAgICAgICAgICAgIGVwb2Noc1BlclNhbXBsZTogZXBvY2hzUGVyU2FtcGxlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpbWl6ZUxheW91dCgpO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIFkgPSBfYS5ZLCBYID0gX2EuWDtcbiAgICAgICAgaWYgKFkpIHtcbiAgICAgICAgICAgIGlmIChZLmxlbmd0aCAhPT0gWC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xlbmd0aCBvZiBYIGFuZCB5IG11c3QgYmUgZXF1YWwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldE1ldHJpYyA9PT0gXCJjYXRlZ29yaWNhbFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIGx0ID0gdGhpcy50YXJnZXRXZWlnaHQgPCAxLjA7XG4gICAgICAgICAgICAgICAgdmFyIGZhckRpc3QgPSBsdCA/IDIuNSAqICgxLjAgLyAoMS4wIC0gdGhpcy50YXJnZXRXZWlnaHQpKSA6IDEuMGUxMjtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoID0gdGhpcy5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24odGhpcy5ncmFwaCwgWSwgZmFyRGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50RXBvY2ggPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgaWYgKGN1cnJlbnRFcG9jaCA8IHRoaXMuZ2V0TkVwb2NocygpKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmdldEVtYmVkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUubmVhcmVzdE5laWdoYm9ycyA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGRpc3RhbmNlRm4gPSBfYS5kaXN0YW5jZUZuLCBuTmVpZ2hib3JzID0gX2Eubk5laWdoYm9ycztcbiAgICAgICAgdmFyIGxvZzIgPSBmdW5jdGlvbiAobikgeyByZXR1cm4gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTsgfTtcbiAgICAgICAgdmFyIG1ldHJpY05ORGVzY2VudCA9IG5uRGVzY2VudC5tYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHRoaXMucmFuZG9tKTtcbiAgICAgICAgdmFyIHJvdW5kID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwLjUgPyAwIDogTWF0aC5yb3VuZChuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG5UcmVlcyA9IDUgKyBNYXRoLmZsb29yKHJvdW5kKE1hdGgucG93KFgubGVuZ3RoLCAwLjUpIC8gMjAuMCkpO1xuICAgICAgICB2YXIgbkl0ZXJzID0gTWF0aC5tYXgoNSwgTWF0aC5mbG9vcihNYXRoLnJvdW5kKGxvZzIoWC5sZW5ndGgpKSkpO1xuICAgICAgICB0aGlzLnJwRm9yZXN0ID0gdHJlZS5tYWtlRm9yZXN0KFgsIG5OZWlnaGJvcnMsIG5UcmVlcywgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgbGVhZkFycmF5ID0gdHJlZS5tYWtlTGVhZkFycmF5KHRoaXMucnBGb3Jlc3QpO1xuICAgICAgICB2YXIgX2IgPSBtZXRyaWNOTkRlc2NlbnQoWCwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMpLCBpbmRpY2VzID0gX2IuaW5kaWNlcywgd2VpZ2h0cyA9IF9iLndlaWdodHM7XG4gICAgICAgIHJldHVybiB7IGtubkluZGljZXM6IGluZGljZXMsIGtubkRpc3RhbmNlczogd2VpZ2h0cyB9O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZnV6enlTaW1wbGljaWFsU2V0ID0gZnVuY3Rpb24gKFgsIG5OZWlnaGJvcnMsIHNldE9wTWl4UmF0aW8pIHtcbiAgICAgICAgaWYgKHNldE9wTWl4UmF0aW8gPT09IHZvaWQgMCkgeyBzZXRPcE1peFJhdGlvID0gMS4wOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIF9iID0gX2Eua25uSW5kaWNlcywga25uSW5kaWNlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBfYyA9IF9hLmtubkRpc3RhbmNlcywga25uRGlzdGFuY2VzID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2MsIGxvY2FsQ29ubmVjdGl2aXR5ID0gX2EubG9jYWxDb25uZWN0aXZpdHk7XG4gICAgICAgIHZhciBfZCA9IHRoaXMuc21vb3RoS05ORGlzdGFuY2Uoa25uRGlzdGFuY2VzLCBuTmVpZ2hib3JzLCBsb2NhbENvbm5lY3Rpdml0eSksIHNpZ21hcyA9IF9kLnNpZ21hcywgcmhvcyA9IF9kLnJob3M7XG4gICAgICAgIHZhciBfZSA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoa25uSW5kaWNlcywga25uRGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpLCByb3dzID0gX2Uucm93cywgY29scyA9IF9lLmNvbHMsIHZhbHMgPSBfZS52YWxzO1xuICAgICAgICB2YXIgc2l6ZSA9IFtYLmxlbmd0aCwgWC5sZW5ndGhdO1xuICAgICAgICB2YXIgc3BhcnNlTWF0cml4ID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIHZhciB0cmFuc3Bvc2UgPSBtYXRyaXgudHJhbnNwb3NlKHNwYXJzZU1hdHJpeCk7XG4gICAgICAgIHZhciBwcm9kTWF0cml4ID0gbWF0cml4LnBhaXJ3aXNlTXVsdGlwbHkoc3BhcnNlTWF0cml4LCB0cmFuc3Bvc2UpO1xuICAgICAgICB2YXIgYSA9IG1hdHJpeC5zdWJ0cmFjdChtYXRyaXguYWRkKHNwYXJzZU1hdHJpeCwgdHJhbnNwb3NlKSwgcHJvZE1hdHJpeCk7XG4gICAgICAgIHZhciBiID0gbWF0cml4Lm11bHRpcGx5U2NhbGFyKGEsIHNldE9wTWl4UmF0aW8pO1xuICAgICAgICB2YXIgYyA9IG1hdHJpeC5tdWx0aXBseVNjYWxhcihwcm9kTWF0cml4LCAxLjAgLSBzZXRPcE1peFJhdGlvKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG1hdHJpeC5hZGQoYiwgYyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAoc2ltcGxpY2lhbFNldCwgdGFyZ2V0LCBmYXJEaXN0LCB1bmtub3duRGlzdCkge1xuICAgICAgICBpZiAodW5rbm93bkRpc3QgPT09IHZvaWQgMCkgeyB1bmtub3duRGlzdCA9IDEuMDsgfVxuICAgICAgICB2YXIgaW50ZXJzZWN0aW9uID0gZmFzdEludGVyc2VjdGlvbihzaW1wbGljaWFsU2V0LCB0YXJnZXQsIHVua25vd25EaXN0LCBmYXJEaXN0KTtcbiAgICAgICAgaW50ZXJzZWN0aW9uID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGludGVyc2VjdGlvbik7XG4gICAgICAgIHJldHVybiByZXNldExvY2FsQ29ubmVjdGl2aXR5KGludGVyc2VjdGlvbik7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5zbW9vdGhLTk5EaXN0YW5jZSA9IGZ1bmN0aW9uIChkaXN0YW5jZXMsIGssIGxvY2FsQ29ubmVjdGl2aXR5LCBuSXRlciwgYmFuZHdpZHRoKSB7XG4gICAgICAgIGlmIChsb2NhbENvbm5lY3Rpdml0eSA9PT0gdm9pZCAwKSB7IGxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wOyB9XG4gICAgICAgIGlmIChuSXRlciA9PT0gdm9pZCAwKSB7IG5JdGVyID0gNjQ7IH1cbiAgICAgICAgaWYgKGJhbmR3aWR0aCA9PT0gdm9pZCAwKSB7IGJhbmR3aWR0aCA9IDEuMDsgfVxuICAgICAgICB2YXIgdGFyZ2V0ID0gKE1hdGgubG9nKGspIC8gTWF0aC5sb2coMikpICogYmFuZHdpZHRoO1xuICAgICAgICB2YXIgcmhvID0gdXRpbHMuemVyb3MoZGlzdGFuY2VzLmxlbmd0aCk7XG4gICAgICAgIHZhciByZXN1bHQgPSB1dGlscy56ZXJvcyhkaXN0YW5jZXMubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBsbyA9IDAuMDtcbiAgICAgICAgICAgIHZhciBoaSA9IEluZmluaXR5O1xuICAgICAgICAgICAgdmFyIG1pZCA9IDEuMDtcbiAgICAgICAgICAgIHZhciBpdGhEaXN0YW5jZXMgPSBkaXN0YW5jZXNbaV07XG4gICAgICAgICAgICB2YXIgbm9uWmVyb0Rpc3RzID0gaXRoRGlzdGFuY2VzLmZpbHRlcihmdW5jdGlvbiAoZCkgeyByZXR1cm4gZCA+IDAuMDsgfSk7XG4gICAgICAgICAgICBpZiAobm9uWmVyb0Rpc3RzLmxlbmd0aCA+PSBsb2NhbENvbm5lY3Rpdml0eSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IE1hdGguZmxvb3IobG9jYWxDb25uZWN0aXZpdHkpO1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnBvbGF0aW9uID0gbG9jYWxDb25uZWN0aXZpdHkgLSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJob1tpXSA9IG5vblplcm9EaXN0c1tpbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbiA+IFNNT09USF9LX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmhvW2ldICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbiAqIChub25aZXJvRGlzdHNbaW5kZXhdIC0gbm9uWmVyb0Rpc3RzW2luZGV4IC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByaG9baV0gPSBpbnRlcnBvbGF0aW9uICogbm9uWmVyb0Rpc3RzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5vblplcm9EaXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmhvW2ldID0gdXRpbHMubWF4KG5vblplcm9EaXN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5JdGVyOyBuKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IGRpc3RhbmNlc1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlc1tpXVtqXSAtIHJob1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc3VtICs9IE1hdGguZXhwKC0oZCAvIG1pZCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHN1bSArPSAxLjA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHBzdW0gLSB0YXJnZXQpIDwgU01PT1RIX0tfVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHN1bSA+IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBoaSA9IG1pZDtcbiAgICAgICAgICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8gMi4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG8gPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoaSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCAqPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8gMi4wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ldID0gbWlkO1xuICAgICAgICAgICAgaWYgKHJob1tpXSA+IDAuMCkge1xuICAgICAgICAgICAgICAgIHZhciBtZWFuSXRoRGlzdGFuY2VzID0gdXRpbHMubWVhbihpdGhEaXN0YW5jZXMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbaV0gPCBNSU5fS19ESVNUX1NDQUxFICogbWVhbkl0aERpc3RhbmNlcykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBNSU5fS19ESVNUX1NDQUxFICogbWVhbkl0aERpc3RhbmNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbWVhbkRpc3RhbmNlcyA9IHV0aWxzLm1lYW4oZGlzdGFuY2VzLm1hcCh1dGlscy5tZWFuKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSA8IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaWdtYXM6IHJlc3VsdCwgcmhvczogcmhvIH07XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyA9IGZ1bmN0aW9uIChrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMsIHNpZ21hcywgcmhvcykge1xuICAgICAgICB2YXIgblNhbXBsZXMgPSBrbm5JbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5OZWlnaGJvcnMgPSBrbm5JbmRpY2VzWzBdLmxlbmd0aDtcbiAgICAgICAgdmFyIHJvd3MgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgY29scyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIHZhciB2YWxzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5OZWlnaGJvcnM7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChrbm5JbmRpY2VzW2ldW2pdID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtubkluZGljZXNbaV1bal0gPT09IGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gMC4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldIDw9IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSAxLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmV4cCgtKChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldKSAvIHNpZ21hc1tpXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb3dzW2kgKiBuTmVpZ2hib3JzICsgal0gPSBpO1xuICAgICAgICAgICAgICAgIGNvbHNbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IGtubkluZGljZXNbaV1bal07XG4gICAgICAgICAgICAgICAgdmFsc1tpICogbk5laWdoYm9ycyArIGpdID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHJvd3M6IHJvd3MsIGNvbHM6IGNvbHMsIHZhbHM6IHZhbHMgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgbkVwb2NocyA9IHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB2YXIgbkNvbXBvbmVudHMgPSB0aGlzLm5Db21wb25lbnRzO1xuICAgICAgICB2YXIgZ3JhcGhWYWx1ZXMgPSB0aGlzLmdyYXBoLmdldFZhbHVlcygpO1xuICAgICAgICB2YXIgZ3JhcGhNYXggPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBncmFwaFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGlmIChncmFwaE1heCA8IGdyYXBoVmFsdWVzW2ldKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhNYXggPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IGdyYXBoTWF4IC8gbkVwb2Nocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB1dGlscy56ZXJvcyhncmFwaC5uUm93cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhuQ29tcG9uZW50cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMudGF1UmFuZChfdGhpcy5yYW5kb20pICogMjAgKyAtMTA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3ZWlnaHRzID0gW107XG4gICAgICAgIHZhciBoZWFkID0gW107XG4gICAgICAgIHZhciB0YWlsID0gW107XG4gICAgICAgIHZhciByb3dDb2xWYWx1ZXMgPSBncmFwaC5nZXRBbGwoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dDb2xWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBlbnRyeSA9IHJvd0NvbFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHdlaWdodHMucHVzaChlbnRyeS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGFpbC5wdXNoKGVudHJ5LnJvdyk7XG4gICAgICAgICAgICAgICAgaGVhZC5wdXNoKGVudHJ5LmNvbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZSh3ZWlnaHRzLCBuRXBvY2hzKTtcbiAgICAgICAgcmV0dXJuIHsgaGVhZDogaGVhZCwgdGFpbDogdGFpbCwgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VFcG9jaHNQZXJTYW1wbGUgPSBmdW5jdGlvbiAod2VpZ2h0cywgbkVwb2Nocykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdXRpbHMuZmlsbGVkKHdlaWdodHMubGVuZ3RoLCAtMS4wKTtcbiAgICAgICAgdmFyIG1heCA9IHV0aWxzLm1heCh3ZWlnaHRzKTtcbiAgICAgICAgdmFyIG5TYW1wbGVzID0gd2VpZ2h0cy5tYXAoZnVuY3Rpb24gKHcpIHsgcmV0dXJuICh3IC8gbWF4KSAqIG5FcG9jaHM7IH0pO1xuICAgICAgICBuU2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uIChuLCBpKSB7XG4gICAgICAgICAgICBpZiAobiA+IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gbkVwb2NocyAvIG5TYW1wbGVzW2ldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIHN0YXRlKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCByZXB1bHNpb25TdHJlbmd0aCA9IF9hLnJlcHVsc2lvblN0cmVuZ3RoLCBsZWFybmluZ1JhdGUgPSBfYS5sZWFybmluZ1JhdGUsIG5lZ2F0aXZlU2FtcGxlUmF0ZSA9IF9hLm5lZ2F0aXZlU2FtcGxlUmF0ZTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgZXBvY2hzUGVyU2FtcGxlID0gX2IuZXBvY2hzUGVyU2FtcGxlLCBoZWFkRW1iZWRkaW5nID0gX2IuaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZyA9IF9iLnRhaWxFbWJlZGRpbmc7XG4gICAgICAgIHZhciBkaW0gPSBoZWFkRW1iZWRkaW5nWzBdLmxlbmd0aDtcbiAgICAgICAgdmFyIG1vdmVPdGhlciA9IGhlYWRFbWJlZGRpbmcubGVuZ3RoID09PSB0YWlsRW1iZWRkaW5nLmxlbmd0aDtcbiAgICAgICAgdmFyIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gZXBvY2hzUGVyU2FtcGxlLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSAvIG5lZ2F0aXZlU2FtcGxlUmF0ZTsgfSk7XG4gICAgICAgIHZhciBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gX19zcHJlYWQoZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUpO1xuICAgICAgICB2YXIgZXBvY2hPZk5leHRTYW1wbGUgPSBfX3NwcmVhZChlcG9jaHNQZXJTYW1wbGUpO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBlcG9jaE9mTmV4dFNhbXBsZTogZXBvY2hPZk5leHRTYW1wbGUsXG4gICAgICAgICAgICBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlOiBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGU6IGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgbW92ZU90aGVyOiBtb3ZlT3RoZXIsXG4gICAgICAgICAgICBpbml0aWFsQWxwaGE6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgIGFscGhhOiBsZWFybmluZ1JhdGUsXG4gICAgICAgICAgICBnYW1tYTogcmVwdWxzaW9uU3RyZW5ndGgsXG4gICAgICAgICAgICBkaW06IGRpbSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5pbml0aWFsaXplT3B0aW1pemF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaGVhZEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICB2YXIgdGFpbEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBoZWFkID0gX2EuaGVhZCwgdGFpbCA9IF9hLnRhaWwsIGVwb2Noc1BlclNhbXBsZSA9IF9hLmVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdmFyIG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgdmFyIG5WZXJ0aWNlcyA9IHRoaXMuZ3JhcGgubkNvbHM7XG4gICAgICAgIHZhciBfYiA9IGZpbmRBQlBhcmFtcyh0aGlzLnNwcmVhZCwgdGhpcy5taW5EaXN0KSwgYSA9IF9iLmEsIGIgPSBfYi5iO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBoZWFkRW1iZWRkaW5nOiBoZWFkRW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGFpbEVtYmVkZGluZyxcbiAgICAgICAgICAgIGhlYWQ6IGhlYWQsXG4gICAgICAgICAgICB0YWlsOiB0YWlsLFxuICAgICAgICAgICAgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgICAgICBhOiBhLFxuICAgICAgICAgICAgYjogYixcbiAgICAgICAgICAgIG5FcG9jaHM6IG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IG5WZXJ0aWNlcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dFN0ZXAgPSBmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgb3B0aW1pemF0aW9uU3RhdGUgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICB2YXIgaGVhZCA9IG9wdGltaXphdGlvblN0YXRlLmhlYWQsIHRhaWwgPSBvcHRpbWl6YXRpb25TdGF0ZS50YWlsLCBoZWFkRW1iZWRkaW5nID0gb3B0aW1pemF0aW9uU3RhdGUuaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZyA9IG9wdGltaXphdGlvblN0YXRlLnRhaWxFbWJlZGRpbmcsIGVwb2Noc1BlclNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZSwgZXBvY2hPZk5leHRTYW1wbGUgPSBvcHRpbWl6YXRpb25TdGF0ZS5lcG9jaE9mTmV4dFNhbXBsZSwgZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUsIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gb3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsIG1vdmVPdGhlciA9IG9wdGltaXphdGlvblN0YXRlLm1vdmVPdGhlciwgaW5pdGlhbEFscGhhID0gb3B0aW1pemF0aW9uU3RhdGUuaW5pdGlhbEFscGhhLCBhbHBoYSA9IG9wdGltaXphdGlvblN0YXRlLmFscGhhLCBnYW1tYSA9IG9wdGltaXphdGlvblN0YXRlLmdhbW1hLCBhID0gb3B0aW1pemF0aW9uU3RhdGUuYSwgYiA9IG9wdGltaXphdGlvblN0YXRlLmIsIGRpbSA9IG9wdGltaXphdGlvblN0YXRlLmRpbSwgbkVwb2NocyA9IG9wdGltaXphdGlvblN0YXRlLm5FcG9jaHMsIG5WZXJ0aWNlcyA9IG9wdGltaXphdGlvblN0YXRlLm5WZXJ0aWNlcztcbiAgICAgICAgdmFyIGNsaXBWYWx1ZSA9IDQuMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcG9jaHNQZXJTYW1wbGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlcG9jaE9mTmV4dFNhbXBsZVtpXSA+IG4pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBqID0gaGVhZFtpXTtcbiAgICAgICAgICAgIHZhciBrID0gdGFpbFtpXTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gaGVhZEVtYmVkZGluZ1tqXTtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IHRhaWxFbWJlZGRpbmdba107XG4gICAgICAgICAgICB2YXIgZGlzdFNxdWFyZWQgPSByRGlzdChjdXJyZW50LCBvdGhlcik7XG4gICAgICAgICAgICB2YXIgZ3JhZENvZWZmID0gMDtcbiAgICAgICAgICAgIGlmIChkaXN0U3F1YXJlZCA+IDApIHtcbiAgICAgICAgICAgICAgICBncmFkQ29lZmYgPSAtMi4wICogYSAqIGIgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYiAtIDEuMCk7XG4gICAgICAgICAgICAgICAgZ3JhZENvZWZmIC89IGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYikgKyAxLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGdyYWREID0gY2xpcChncmFkQ29lZmYgKiAoY3VycmVudFtkXSAtIG90aGVyW2RdKSwgY2xpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50W2RdICs9IGdyYWREICogYWxwaGE7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVPdGhlcikge1xuICAgICAgICAgICAgICAgICAgICBvdGhlcltkXSArPSAtZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcG9jaE9mTmV4dFNhbXBsZVtpXSArPSBlcG9jaHNQZXJTYW1wbGVbaV07XG4gICAgICAgICAgICB2YXIgbk5lZ1NhbXBsZXMgPSBNYXRoLmZsb29yKChuIC0gZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZVtpXSkgLyBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXSk7XG4gICAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IG5OZWdTYW1wbGVzOyBwKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga18xID0gdXRpbHMudGF1UmFuZEludChuVmVydGljZXMsIHRoaXMucmFuZG9tKTtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXJfMSA9IHRhaWxFbWJlZGRpbmdba18xXTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzdFNxdWFyZWRfMSA9IHJEaXN0KGN1cnJlbnQsIG90aGVyXzEpO1xuICAgICAgICAgICAgICAgIHZhciBncmFkQ29lZmZfMSA9IDAuMDtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdFNxdWFyZWRfMSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBncmFkQ29lZmZfMSA9IDIuMCAqIGdhbW1hICogYjtcbiAgICAgICAgICAgICAgICAgICAgZ3JhZENvZWZmXzEgLz1cbiAgICAgICAgICAgICAgICAgICAgICAgICgwLjAwMSArIGRpc3RTcXVhcmVkXzEpICogKGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZF8xLCBiKSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID09PSBrXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyYWREID0gNC4wO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JhZENvZWZmXzEgPiAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYWREID0gY2xpcChncmFkQ29lZmZfMSAqIChjdXJyZW50W2RdIC0gb3RoZXJfMVtkXSksIGNsaXBWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0gKz0gbk5lZ1NhbXBsZXMgKiBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpbWl6YXRpb25TdGF0ZS5hbHBoYSA9IGluaXRpYWxBbHBoYSAqICgxLjAgLSBuIC8gbkVwb2Nocyk7XG4gICAgICAgIG9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCArPSAxO1xuICAgICAgICByZXR1cm4gaGVhZEVtYmVkZGluZztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm9wdGltaXplTGF5b3V0QXN5bmMgPSBmdW5jdGlvbiAoZXBvY2hDYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoZXBvY2hDYWxsYmFjayA9PT0gdm9pZCAwKSB7IGVwb2NoQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3RlcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIG5FcG9jaHMsIGN1cnJlbnRFcG9jaCwgZXBvY2hDb21wbGV0ZWQsIHNob3VsZFN0b3AsIGlzRmluaXNoZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBuRXBvY2hzID0gX2EubkVwb2NocywgY3VycmVudEVwb2NoID0gX2EuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXBvY2hDb21wbGV0ZWQgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFN0b3AgPSBlcG9jaENhbGxiYWNrKGVwb2NoQ29tcGxldGVkKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gZXBvY2hDb21wbGV0ZWQgPT09IG5FcG9jaHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFN0b3AgJiYgIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0ZXAoKTsgfSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHJlc29sdmUoaXNGaW5pc2hlZCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTsgfTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RlcCgpOyB9LCAwKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dCA9IGZ1bmN0aW9uIChlcG9jaENhbGxiYWNrKSB7XG4gICAgICAgIGlmIChlcG9jaENhbGxiYWNrID09PSB2b2lkIDApIHsgZXBvY2hDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07IH1cbiAgICAgICAgdmFyIGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGVtYmVkZGluZyA9IFtdO1xuICAgICAgICB3aGlsZSAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIG5FcG9jaHMgPSBfYS5uRXBvY2hzLCBjdXJyZW50RXBvY2ggPSBfYS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICBlbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgdmFyIGVwb2NoQ29tcGxldGVkID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICB2YXIgc2hvdWxkU3RvcCA9IGVwb2NoQ2FsbGJhY2soZXBvY2hDb21wbGV0ZWQpID09PSBmYWxzZTtcbiAgICAgICAgICAgIGlzRmluaXNoZWQgPSBlcG9jaENvbXBsZXRlZCA9PT0gbkVwb2NocyB8fCBzaG91bGRTdG9wO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbWJlZGRpbmc7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5nZXRORXBvY2hzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgICBpZiAodGhpcy5uRXBvY2hzID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubkVwb2NocztcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gZ3JhcGgublJvd3M7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMjUwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDUwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gNTAwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDQwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gNzUwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDMwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAyMDA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBVTUFQO1xufSgpKTtcbmV4cG9ydHMuVU1BUCA9IFVNQVA7XG5mdW5jdGlvbiBldWNsaWRlYW4oeCwgeSkge1xuICAgIHZhciByZXN1bHQgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coKHhbaV0gLSB5W2ldKSwgMik7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbn1cbmV4cG9ydHMuZXVjbGlkZWFuID0gZXVjbGlkZWFuO1xuZnVuY3Rpb24gY29zaW5lKHgsIHkpIHtcbiAgICB2YXIgcmVzdWx0ID0gMC4wO1xuICAgIHZhciBub3JtWCA9IDAuMDtcbiAgICB2YXIgbm9ybVkgPSAwLjA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSB4W2ldICogeVtpXTtcbiAgICAgICAgbm9ybVggKz0gTWF0aC5wb3coeFtpXSwgMik7XG4gICAgICAgIG5vcm1ZICs9IE1hdGgucG93KHlbaV0sIDIpO1xuICAgIH1cbiAgICBpZiAobm9ybVggPT09IDAgJiYgbm9ybVkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vcm1YID09PSAwIHx8IG5vcm1ZID09PSAwKSB7XG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMS4wIC0gcmVzdWx0IC8gTWF0aC5zcXJ0KG5vcm1YICogbm9ybVkpO1xuICAgIH1cbn1cbmV4cG9ydHMuY29zaW5lID0gY29zaW5lO1xudmFyIE9wdGltaXphdGlvblN0YXRlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPcHRpbWl6YXRpb25TdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RXBvY2ggPSAwO1xuICAgICAgICB0aGlzLmhlYWRFbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy50YWlsRW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMuaGVhZCA9IFtdO1xuICAgICAgICB0aGlzLnRhaWwgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaHNQZXJTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaE9mTmV4dFNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLm1vdmVPdGhlciA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbEFscGhhID0gMS4wO1xuICAgICAgICB0aGlzLmFscGhhID0gMS4wO1xuICAgICAgICB0aGlzLmdhbW1hID0gMS4wO1xuICAgICAgICB0aGlzLmEgPSAxLjU3Njk0MzQ2MDMxMTMwNzc7XG4gICAgICAgIHRoaXMuYiA9IDAuODk1MDYwODc3OTEwOTczMztcbiAgICAgICAgdGhpcy5kaW0gPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSA1MDA7XG4gICAgICAgIHRoaXMublZlcnRpY2VzID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIE9wdGltaXphdGlvblN0YXRlO1xufSgpKTtcbmZ1bmN0aW9uIGNsaXAoeCwgY2xpcFZhbHVlKSB7XG4gICAgaWYgKHggPiBjbGlwVmFsdWUpXG4gICAgICAgIHJldHVybiBjbGlwVmFsdWU7XG4gICAgZWxzZSBpZiAoeCA8IC1jbGlwVmFsdWUpXG4gICAgICAgIHJldHVybiAtY2xpcFZhbHVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHg7XG59XG5mdW5jdGlvbiByRGlzdCh4LCB5KSB7XG4gICAgdmFyIHJlc3VsdCA9IDAuMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KHhbaV0gLSB5W2ldLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGZpbmRBQlBhcmFtcyhzcHJlYWQsIG1pbkRpc3QpIHtcbiAgICB2YXIgY3VydmUgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgYSA9IF9iWzBdLCBiID0gX2JbMV07XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIDEuMCAvICgxLjAgKyBhICogTWF0aC5wb3coeCwgKDIgKiBiKSkpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgdmFyIHh2ID0gdXRpbHNcbiAgICAgICAgLmxpbmVhcigwLCBzcHJlYWQgKiAzLCAzMDApXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gKHZhbCA8IG1pbkRpc3QgPyAxLjAgOiB2YWwpOyB9KTtcbiAgICB2YXIgeXYgPSB1dGlscy56ZXJvcyh4di5sZW5ndGgpLm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICB2YXIgZ3RlID0geHZbaW5kZXhdID49IG1pbkRpc3Q7XG4gICAgICAgIHJldHVybiBndGUgPyBNYXRoLmV4cCgtKHh2W2luZGV4XSAtIG1pbkRpc3QpIC8gc3ByZWFkKSA6IHZhbDtcbiAgICB9KTtcbiAgICB2YXIgaW5pdGlhbFZhbHVlcyA9IFswLjUsIDAuNV07XG4gICAgdmFyIGRhdGEgPSB7IHg6IHh2LCB5OiB5diB9O1xuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBkYW1waW5nOiAxLjUsXG4gICAgICAgIGluaXRpYWxWYWx1ZXM6IGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIGdyYWRpZW50RGlmZmVyZW5jZTogMTBlLTIsXG4gICAgICAgIG1heEl0ZXJhdGlvbnM6IDEwMCxcbiAgICAgICAgZXJyb3JUb2xlcmFuY2U6IDEwZS0zLFxuICAgIH07XG4gICAgdmFyIHBhcmFtZXRlclZhbHVlcyA9IG1sX2xldmVuYmVyZ19tYXJxdWFyZHRfMS5kZWZhdWx0KGRhdGEsIGN1cnZlLCBvcHRpb25zKS5wYXJhbWV0ZXJWYWx1ZXM7XG4gICAgdmFyIF9hID0gX19yZWFkKHBhcmFtZXRlclZhbHVlcywgMiksIGEgPSBfYVswXSwgYiA9IF9hWzFdO1xuICAgIHJldHVybiB7IGE6IGEsIGI6IGIgfTtcbn1cbmV4cG9ydHMuZmluZEFCUGFyYW1zID0gZmluZEFCUGFyYW1zO1xuZnVuY3Rpb24gZmFzdEludGVyc2VjdGlvbihncmFwaCwgdGFyZ2V0LCB1bmtub3duRGlzdCwgZmFyRGlzdCkge1xuICAgIGlmICh1bmtub3duRGlzdCA9PT0gdm9pZCAwKSB7IHVua25vd25EaXN0ID0gMS4wOyB9XG4gICAgaWYgKGZhckRpc3QgPT09IHZvaWQgMCkgeyBmYXJEaXN0ID0gNS4wOyB9XG4gICAgcmV0dXJuIGdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUsIHJvdywgY29sKSB7XG4gICAgICAgIGlmICh0YXJnZXRbcm93XSA9PT0gLTEgfHwgdGFyZ2V0W2NvbF0gPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtdW5rbm93bkRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldFtyb3ddICE9PSB0YXJnZXRbY29sXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogTWF0aC5leHAoLWZhckRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnRzLmZhc3RJbnRlcnNlY3Rpb24gPSBmYXN0SW50ZXJzZWN0aW9uO1xuZnVuY3Rpb24gcmVzZXRMb2NhbENvbm5lY3Rpdml0eShzaW1wbGljaWFsU2V0KSB7XG4gICAgc2ltcGxpY2lhbFNldCA9IG1hdHJpeC5ub3JtYWxpemUoc2ltcGxpY2lhbFNldCwgXCJtYXhcIik7XG4gICAgdmFyIHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc2ltcGxpY2lhbFNldCk7XG4gICAgdmFyIHByb2RNYXRyaXggPSBtYXRyaXgucGFpcndpc2VNdWx0aXBseSh0cmFuc3Bvc2UsIHNpbXBsaWNpYWxTZXQpO1xuICAgIHNpbXBsaWNpYWxTZXQgPSBtYXRyaXguYWRkKHNpbXBsaWNpYWxTZXQsIG1hdHJpeC5zdWJ0cmFjdCh0cmFuc3Bvc2UsIHByb2RNYXRyaXgpKTtcbiAgICByZXR1cm4gbWF0cml4LmVsaW1pbmF0ZVplcm9zKHNpbXBsaWNpYWxTZXQpO1xufVxuZXhwb3J0cy5yZXNldExvY2FsQ29ubmVjdGl2aXR5ID0gcmVzZXRMb2NhbENvbm5lY3Rpdml0eTtcbmZ1bmN0aW9uIGluaXRUcmFuc2Zvcm0oaW5kaWNlcywgd2VpZ2h0cywgZW1iZWRkaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHV0aWxzXG4gICAgICAgIC56ZXJvcyhpbmRpY2VzLmxlbmd0aClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoeikgeyByZXR1cm4gdXRpbHMuemVyb3MoZW1iZWRkaW5nWzBdLmxlbmd0aCk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXNbMF0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZW1iZWRkaW5nWzBdLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBpbmRpY2VzW2ldW2pdO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpXVtkXSArPSB3ZWlnaHRzW2ldW2pdICogZW1iZWRkaW5nW2FdW2RdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmluaXRUcmFuc2Zvcm0gPSBpbml0VHJhbnNmb3JtO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gdGF1UmFuZEludChuLCByYW5kb20pIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb20oKSAqIG4pO1xufVxuZXhwb3J0cy50YXVSYW5kSW50ID0gdGF1UmFuZEludDtcbmZ1bmN0aW9uIHRhdVJhbmQocmFuZG9tKSB7XG4gICAgcmV0dXJuIHJhbmRvbSgpO1xufVxuZXhwb3J0cy50YXVSYW5kID0gdGF1UmFuZDtcbmZ1bmN0aW9uIG5vcm0odmVjKSB7XG4gICAgdmFyIGVfMSwgX2E7XG4gICAgdmFyIHJlc3VsdCA9IDA7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgdmVjXzEgPSBfX3ZhbHVlcyh2ZWMpLCB2ZWNfMV8xID0gdmVjXzEubmV4dCgpOyAhdmVjXzFfMS5kb25lOyB2ZWNfMV8xID0gdmVjXzEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IHZlY18xXzEudmFsdWU7XG4gICAgICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coaXRlbSwgMik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh2ZWNfMV8xICYmICF2ZWNfMV8xLmRvbmUgJiYgKF9hID0gdmVjXzEucmV0dXJuKSkgX2EuY2FsbCh2ZWNfMSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG5leHBvcnRzLm5vcm0gPSBub3JtO1xuZnVuY3Rpb24gZW1wdHkobikge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBvdXRwdXQucHVzaCh1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5lbXB0eSA9IGVtcHR5O1xuZnVuY3Rpb24gcmFuZ2Uobikge1xuICAgIHJldHVybiBlbXB0eShuKS5tYXAoZnVuY3Rpb24gKF8sIGkpIHsgcmV0dXJuIGk7IH0pO1xufVxuZXhwb3J0cy5yYW5nZSA9IHJhbmdlO1xuZnVuY3Rpb24gZmlsbGVkKG4sIHYpIHtcbiAgICByZXR1cm4gZW1wdHkobikubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHY7IH0pO1xufVxuZXhwb3J0cy5maWxsZWQgPSBmaWxsZWQ7XG5mdW5jdGlvbiB6ZXJvcyhuKSB7XG4gICAgcmV0dXJuIGZpbGxlZChuLCAwKTtcbn1cbmV4cG9ydHMuemVyb3MgPSB6ZXJvcztcbmZ1bmN0aW9uIG9uZXMobikge1xuICAgIHJldHVybiBmaWxsZWQobiwgMSk7XG59XG5leHBvcnRzLm9uZXMgPSBvbmVzO1xuZnVuY3Rpb24gbGluZWFyKGEsIGIsIGxlbikge1xuICAgIHJldHVybiBlbXB0eShsZW4pLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gYSArIGkgKiAoKGIgLSBhKSAvIChsZW4gLSAxKSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmxpbmVhciA9IGxpbmVhcjtcbmZ1bmN0aW9uIHN1bShpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dC5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgdmFsKSB7IHJldHVybiBzdW0gKyB2YWw7IH0pO1xufVxuZXhwb3J0cy5zdW0gPSBzdW07XG5mdW5jdGlvbiBtZWFuKGlucHV0KSB7XG4gICAgcmV0dXJuIHN1bShpbnB1dCkgLyBpbnB1dC5sZW5ndGg7XG59XG5leHBvcnRzLm1lYW4gPSBtZWFuO1xuZnVuY3Rpb24gbWF4KGlucHV0KSB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYXggPSBpbnB1dFtpXSA+IG1heCA/IGlucHV0W2ldIDogbWF4O1xuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuZXhwb3J0cy5tYXggPSBtYXg7XG5mdW5jdGlvbiBtYXgyZChpbnB1dCkge1xuICAgIHZhciBtYXggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbnB1dFtpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbWF4ID0gaW5wdXRbaV1bal0gPiBtYXggPyBpbnB1dFtpXVtqXSA6IG1heDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuZXhwb3J0cy5tYXgyZCA9IG1heDJkO1xuZnVuY3Rpb24gcmVqZWN0aW9uU2FtcGxlKG5TYW1wbGVzLCBwb29sU2l6ZSwgcmFuZG9tKSB7XG4gICAgdmFyIHJlc3VsdCA9IHplcm9zKG5TYW1wbGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgdmFyIHJlamVjdFNhbXBsZSA9IHRydWU7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIHZhciBqID0gdGF1UmFuZEludChwb29sU2l6ZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIHZhciBicm9rZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgaysrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IHJlc3VsdFtrXSkge1xuICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWJyb2tlbikge1xuICAgICAgICAgICAgICAgIHJlamVjdFNhbXBsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ldID0gajtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5yZWplY3Rpb25TYW1wbGUgPSByZWplY3Rpb25TYW1wbGU7XG5mdW5jdGlvbiByZXNoYXBlMmQoeCwgYSwgYikge1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGlmICh4Lmxlbmd0aCAhPT0gYSAqIGIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBkaW1lbnNpb25zIG11c3QgbWF0Y2ggaW5wdXQgbGVuZ3RoLicpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGE7IGkrKykge1xuICAgICAgICB2YXIgY29sID0gW107XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYjsgaisrKSB7XG4gICAgICAgICAgICBjb2wucHVzaCh4W2luZGV4XSk7XG4gICAgICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJvd3MucHVzaChjb2wpO1xuICAgICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbn1cbmV4cG9ydHMucmVzaGFwZTJkID0gcmVzaGFwZTJkO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQzNTk6IDAsXG5cdDIyMTogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsImNvbnN0IF9fV0VCUEFDS19OQU1FU1BBQ0VfT0JKRUNUX18gPSBncm9rOyIsImNvbnN0IF9fV0VCUEFDS19OQU1FU1BBQ0VfT0JKRUNUX18gPSB1aTsiLCJjb25zdCBfX1dFQlBBQ0tfTkFNRVNQQUNFX09CSkVDVF9fID0gREc7IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5jb25zdCBTVEFOREFSVF9USU1FT1VUID0gMzAwMDA7XG5jb25zdCBCRU5DSE1BUktfVElNRU9VVCA9IDEwODAwMDAwO1xuZXhwb3J0IGNvbnN0IHRlc3RzID0ge307XG5jb25zdCBhdXRvVGVzdHNDYXROYW1lID0gJ0F1dG8gVGVzdHMnO1xuY29uc3Qgd2FzUmVnaXN0ZXJlZCA9IHt9O1xuZXhwb3J0IGxldCBjdXJyZW50Q2F0ZWdvcnk7XG5leHBvcnQgdmFyIGFzc3VyZTtcbihmdW5jdGlvbiAoYXNzdXJlKSB7XG4gICAgZnVuY3Rpb24gbm90TnVsbCh2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lID09IG51bGwgPyAnVmFsdWUnIDogbmFtZX0gbm90IGRlZmluZWRgKTtcbiAgICB9XG4gICAgYXNzdXJlLm5vdE51bGwgPSBub3ROdWxsO1xufSkoYXNzdXJlIHx8IChhc3N1cmUgPSB7fSkpO1xuZXhwb3J0IGNsYXNzIFRlc3RDb250ZXh0IHtcbiAgICBjb25zdHJ1Y3RvcihjYXRjaFVuaGFuZGxlZCwgcmVwb3J0KSB7XG4gICAgICAgIHRoaXMuY2F0Y2hVbmhhbmRsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlcG9ydCA9IGZhbHNlO1xuICAgICAgICBpZiAoY2F0Y2hVbmhhbmRsZWQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hVbmhhbmRsZWQgPSBjYXRjaFVuaGFuZGxlZDtcbiAgICAgICAgaWYgKHJlcG9ydCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5yZXBvcnQgPSByZXBvcnQ7XG4gICAgfVxuICAgIDtcbn1cbmV4cG9ydCBjbGFzcyBUZXN0IHtcbiAgICBjb25zdHJ1Y3RvcihjYXRlZ29yeSwgbmFtZSwgdGVzdCwgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDogKG9wdGlvbnMgPSB7fSk7XG4gICAgICAgIChfYSA9IG9wdGlvbnMudGltZW91dCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogKG9wdGlvbnMudGltZW91dCA9IFNUQU5EQVJUX1RJTUVPVVQpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLnRlc3QgPSAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB5aWVsZCB0ZXN0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gdGVzdEV2ZW50KGV2ZW50LCBoYW5kbGVyLCB0cmlnZ2VyLCBtcyA9IDApIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgc3ViO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc3ViID0gZXZlbnQuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCdPSycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9yc1xuICAgICAgICAgICAgICAgIHJlamVjdCgndGltZW91dCcpO1xuICAgICAgICAgICAgfSwgbXMpO1xuICAgICAgICAgICAgdHJpZ2dlcigpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KG5hbWUsIHRlc3QsIG9wdGlvbnMpIHtcbiAgICBpZiAodGVzdHNbY3VycmVudENhdGVnb3J5XSA9PSB1bmRlZmluZWQpXG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0gPSB7fTtcbiAgICBpZiAodGVzdHNbY3VycmVudENhdGVnb3J5XS50ZXN0cyA9PSB1bmRlZmluZWQpXG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0udGVzdHMgPSBbXTtcbiAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldLnRlc3RzLnB1c2gobmV3IFRlc3QoY3VycmVudENhdGVnb3J5LCBuYW1lLCB0ZXN0LCBvcHRpb25zKSk7XG59XG4vKiBUZXN0cyB0d28gb2JqZWN0cyBmb3IgZXF1YWxpdHksIHRocm93cyBhbiBleGNlcHRpb24gaWYgdGhleSBhcmUgbm90IGVxdWFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdChhY3R1YWwsIGV4cGVjdGVkID0gdHJ1ZSwgZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IpXG4gICAgICAgIGVycm9yID0gYCR7ZXJyb3J9LCBgO1xuICAgIGVsc2VcbiAgICAgICAgZXJyb3IgPSAnJztcbiAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Vycm9yfUV4cGVjdGVkIFwiJHtleHBlY3RlZH1cIiwgZ290IFwiJHthY3R1YWx9XCJgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RGbG9hdChhY3R1YWwsIGV4cGVjdGVkLCB0b2xlcmFuY2UgPSAwLjAwMSwgZXJyb3IpIHtcbiAgICBpZiAoKGFjdHVhbCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZICYmIGV4cGVjdGVkID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpIHx8XG4gICAgICAgIChhY3R1YWwgPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSB8fFxuICAgICAgICAoYWN0dWFsID09PSBOdW1iZXIuTmFOICYmIGV4cGVjdGVkID09PSBOdW1iZXIuTmFOKSB8fCAoaXNOYU4oYWN0dWFsKSAmJiBpc05hTihleHBlY3RlZCkpKVxuICAgICAgICByZXR1cm47XG4gICAgY29uc3QgYXJlRXF1YWwgPSBNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPCB0b2xlcmFuY2U7XG4gICAgZXhwZWN0KGFyZUVxdWFsLCB0cnVlLCBgJHtlcnJvciAhPT0gbnVsbCAmJiBlcnJvciAhPT0gdm9pZCAwID8gZXJyb3IgOiAnJ30gKHRvbGVyYW5jZSA9ICR7dG9sZXJhbmNlfSlgKTtcbiAgICBpZiAoIWFyZUVxdWFsKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9ICh0b2xlcmFuY2UgPSAke3RvbGVyYW5jZX0pYCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0VGFibGUoYWN0dWFsLCBleHBlY3RlZCwgZXJyb3IpIHtcbiAgICBjb25zdCBleHBlY3RlZFJvd0NvdW50ID0gZXhwZWN0ZWQucm93Q291bnQ7XG4gICAgY29uc3QgYWN0dWFsUm93Q291bnQgPSBhY3R1YWwucm93Q291bnQ7XG4gICAgZXhwZWN0KGFjdHVhbFJvd0NvdW50LCBleHBlY3RlZFJvd0NvdW50LCBgJHtlcnJvciAhPT0gbnVsbCAmJiBlcnJvciAhPT0gdm9pZCAwID8gZXJyb3IgOiAnJ30sIHJvdyBjb3VudGApO1xuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGV4cGVjdGVkLmNvbHVtbnMpIHtcbiAgICAgICAgY29uc3QgYWN0dWFsQ29sdW1uID0gYWN0dWFsLmNvbHVtbnMuYnlOYW1lKGNvbHVtbi5uYW1lKTtcbiAgICAgICAgaWYgKGFjdHVhbENvbHVtbiA9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHtjb2x1bW4ubmFtZX0gbm90IGZvdW5kYCk7XG4gICAgICAgIGlmIChhY3R1YWxDb2x1bW4udHlwZSAhPSBjb2x1bW4udHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29sdW1uICR7Y29sdW1uLm5hbWV9IHR5cGUgZXhwZWN0ZWQgJHtjb2x1bW4udHlwZX0gZ290ICR7YWN0dWFsQ29sdW1uLnR5cGV9YCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwZWN0ZWRSb3dDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbHVtbi5nZXQoaSk7XG4gICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbENvbHVtbi5nZXQoaSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT0gREcuVFlQRS5GTE9BVClcbiAgICAgICAgICAgICAgICBleHBlY3RGbG9hdChhY3R1YWxWYWx1ZSwgdmFsdWUsIDAuMDAwMSwgZXJyb3IpO1xuICAgICAgICAgICAgZWxzZSBpZiAoY29sdW1uLnR5cGUgPT0gREcuVFlQRS5EQVRFX1RJTUUpXG4gICAgICAgICAgICAgICAgZXhwZWN0KGFjdHVhbFZhbHVlLmlzU2FtZSh2YWx1ZSksIHRydWUsIGVycm9yKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBleHBlY3QoYWN0dWFsVmFsdWUsIHZhbHVlLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0T2JqZWN0KGFjdHVhbCwgZXhwZWN0ZWQpIHtcbiAgICBmb3IgKGNvbnN0IFtleHBlY3RlZEtleSwgZXhwZWN0ZWRWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZXhwZWN0ZWQpKSB7XG4gICAgICAgIGlmICghYWN0dWFsLmhhc093blByb3BlcnR5KGV4cGVjdGVkS2V5KSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgcHJvcGVydHkgXCIke2V4cGVjdGVkS2V5fVwiIG5vdCBmb3VuZGApO1xuICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFtleHBlY3RlZEtleV07XG4gICAgICAgIGlmIChhY3R1YWxWYWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIGV4cGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICAgIGV4cGVjdEFycmF5KGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgICAgICAgZWxzZSBpZiAoYWN0dWFsVmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgZXhwZWN0ZWRWYWx1ZSBpbnN0YW5jZW9mIE9iamVjdClcbiAgICAgICAgICAgIGV4cGVjdE9iamVjdChhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGVsc2UgaWYgKE51bWJlci5pc0Zpbml0ZShhY3R1YWxWYWx1ZSkgJiYgTnVtYmVyLmlzRmluaXRlKGV4cGVjdGVkVmFsdWUpKVxuICAgICAgICAgICAgZXhwZWN0RmxvYXQoYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUpO1xuICAgICAgICBlbHNlIGlmIChhY3R1YWxWYWx1ZSAhPSBleHBlY3RlZFZhbHVlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAoJHtleHBlY3RlZFZhbHVlfSkgZm9yIGtleSAnJHtleHBlY3RlZEtleX0nLCBnb3QgKCR7YWN0dWFsVmFsdWV9KWApO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBleHBlY3RBcnJheShhY3R1YWwsIGV4cGVjdGVkKSB7XG4gICAgY29uc3QgYWN0dWFsTGVuZ3RoID0gYWN0dWFsLmxlbmd0aDtcbiAgICBjb25zdCBleHBlY3RlZExlbmd0aCA9IGV4cGVjdGVkLmxlbmd0aDtcbiAgICBpZiAoYWN0dWFsTGVuZ3RoICE9IGV4cGVjdGVkTGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXlzIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3RoOiBhY3R1YWwgYXJyYXkgbGVuZ3RoIGlzICR7YWN0dWFsTGVuZ3RofSBgICtcbiAgICAgICAgICAgIGBhbmQgZXhwZWN0ZWQgYXJyYXkgbGVuZ3RoIGlzICR7ZXhwZWN0ZWRMZW5ndGh9YCk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFjdHVhbFtpXSBpbnN0YW5jZW9mIEFycmF5ICYmIGV4cGVjdGVkW2ldIGluc3RhbmNlb2YgQXJyYXkpXG4gICAgICAgICAgICBleHBlY3RBcnJheShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTtcbiAgICAgICAgZWxzZSBpZiAoYWN0dWFsW2ldIGluc3RhbmNlb2YgT2JqZWN0ICYmIGV4cGVjdGVkW2ldIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgICAgICAgICAgZXhwZWN0T2JqZWN0KGFjdHVhbFtpXSwgZXhwZWN0ZWRbaV0pO1xuICAgICAgICBlbHNlIGlmIChhY3R1YWxbaV0gIT0gZXhwZWN0ZWRbaV0pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXhwZWN0ZWRbaV19IGF0IHBvc2l0aW9uICR7aX0sIGdvdCAke2FjdHVhbFtpXX1gKTtcbiAgICB9XG59XG4vKiBEZWZpbmVzIGEgdGVzdCBzdWl0ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXRlZ29yeShjYXRlZ29yeSwgdGVzdHNfLCBvcHRpb25zKSB7XG4gICAgdmFyIF9hO1xuICAgIGN1cnJlbnRDYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRlc3RzXygpO1xuICAgIGlmICh0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldKSB7XG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0uY2xlYXIgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2xlYXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRydWU7XG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0udGltZW91dCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy50aW1lb3V0O1xuICAgIH1cbn1cbi8qIERlZmluZXMgYSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBiZWZvcmUgdGhlIHRlc3RzIGluIHRoaXMgY2F0ZWdvcnkgYXJlIGV4ZWN1dGVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJlZm9yZShiZWZvcmUpIHtcbiAgICBpZiAodGVzdHNbY3VycmVudENhdGVnb3J5XSA9PSB1bmRlZmluZWQpXG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0gPSB7fTtcbiAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldLmJlZm9yZSA9IGJlZm9yZTtcbn1cbi8qIERlZmluZXMgYSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgdGVzdHMgaW4gdGhpcyBjYXRlZ29yeSBhcmUgZXhlY3V0ZWQuICovXG5leHBvcnQgZnVuY3Rpb24gYWZ0ZXIoYWZ0ZXIpIHtcbiAgICBpZiAodGVzdHNbY3VycmVudENhdGVnb3J5XSA9PSB1bmRlZmluZWQpXG4gICAgICAgIHRlc3RzW2N1cnJlbnRDYXRlZ29yeV0gPSB7fTtcbiAgICB0ZXN0c1tjdXJyZW50Q2F0ZWdvcnldLmFmdGVyID0gYWZ0ZXI7XG59XG5mdW5jdGlvbiBhZGROYW1lc3BhY2UocywgZikge1xuICAgIHJldHVybiBzLnJlcGxhY2UobmV3IFJlZ0V4cChmLm5hbWUsICdnaScpLCBmLm5xTmFtZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW5pdEF1dG9UZXN0cyhwYWNrYWdlSWQsIG1vZHVsZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICh3YXNSZWdpc3RlcmVkW3BhY2thZ2VJZF0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG1vZHVsZVRlc3RzID0gbW9kdWxlID8gbW9kdWxlLnRlc3RzIDogdGVzdHM7XG4gICAgICAgIGlmIChtb2R1bGVUZXN0c1thdXRvVGVzdHNDYXROYW1lXSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhtb2R1bGVUZXN0cykuZmluZCgoYykgPT4gYy5zdGFydHNXaXRoKGF1dG9UZXN0c0NhdE5hbWUpKSkge1xuICAgICAgICAgICAgd2FzUmVnaXN0ZXJlZFtwYWNrYWdlSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2R1bGVBdXRvVGVzdHMgPSBbXTtcbiAgICAgICAgY29uc3QgcGFja0Z1bmN0aW9ucyA9IHlpZWxkIGdyb2suZGFwaS5mdW5jdGlvbnMuZmlsdGVyKGBwYWNrYWdlLmlkID0gXCIke3BhY2thZ2VJZH1cImApLmxpc3QoKTtcbiAgICAgICAgY29uc3QgaW5pdHMgPSBwYWNrRnVuY3Rpb25zLmZpbHRlcigoZikgPT4gZi5oYXNUYWcoJ2luaXRUZXN0cycpKTtcbiAgICAgICAgaWYgKGluaXRzLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmIG9mIGluaXRzKVxuICAgICAgICAgICAgICAgIHlpZWxkIGYuYXBwbHkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKC9za2lwOlxccyooW14sXFxzXSspfHdhaXQ6XFxzKihcXGQrKXxjYXQ6XFxzKihbXixcXHNdKykvZyk7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBwYWNrRnVuY3Rpb25zKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXN0cyA9IGYub3B0aW9uc1sndGVzdCddO1xuICAgICAgICAgICAgaWYgKCEodGVzdHMgJiYgQXJyYXkuaXNBcnJheSh0ZXN0cykgJiYgdGVzdHMubGVuZ3RoKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSB0ZXN0c1tpXS5tYXRjaEFsbChyZWcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcCA9IHt9O1xuICAgICAgICAgICAgICAgIEFycmF5LmZyb20ocmVzKS5mb3JFYWNoKChhcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyclswXS5zdGFydHNXaXRoKCdza2lwJykpXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBbJ3NraXAnXSA9IGFyclsxXTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJyWzBdLnN0YXJ0c1dpdGgoJ3dhaXQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFsnd2FpdCddID0gcGFyc2VJbnQoYXJyWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJyWzBdLnN0YXJ0c1dpdGgoJ2NhdCcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwWydjYXQnXSA9IGFyclszXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0ID0gbmV3IFRlc3QoYXV0b1Rlc3RzQ2F0TmFtZSwgdGVzdHMubGVuZ3RoID09PSAxID8gZi5uYW1lIDogYCR7Zi5uYW1lfSAke2kgKyAxfWAsICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0geWllbGQgZ3Jvay5mdW5jdGlvbnMuZXZhbChhZGROYW1lc3BhY2UodGVzdHNbaV0sIGYpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC53YWl0KVxuICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZGVsYXkobWFwLndhaXQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlcyA9PT0gJ2Jvb2xlYW4nICYmICFyZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBgRmFpbGVkOiAke3Rlc3RzW2ldfSwgZXhwZWN0ZWQgdHJ1ZSwgZ290ICR7cmVzfWA7XG4gICAgICAgICAgICAgICAgfSksIHsgc2tpcFJlYXNvbjogbWFwLnNraXAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG1hcC5jYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2F0ID0gYXV0b1Rlc3RzQ2F0TmFtZSArICc6ICcgKyBtYXAuY2F0O1xuICAgICAgICAgICAgICAgICAgICB0ZXN0LmNhdGVnb3J5ID0gY2F0O1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlVGVzdHNbY2F0XSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlVGVzdHNbY2F0XSA9IHsgdGVzdHM6IFtdLCBjbGVhcjogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVUZXN0c1tjYXRdLnRlc3RzLnB1c2godGVzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVBdXRvVGVzdHMucHVzaCh0ZXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2FzUmVnaXN0ZXJlZFtwYWNrYWdlSWRdID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFtb2R1bGVBdXRvVGVzdHMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBtb2R1bGVUZXN0c1thdXRvVGVzdHNDYXROYW1lXSA9IHsgdGVzdHM6IG1vZHVsZUF1dG9UZXN0cywgY2xlYXI6IHRydWUgfTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydW5UZXN0cyhvcHRpb25zKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIHZhciBfZTtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwYWNrYWdlXyA9IChfYiA9IChfYSA9IGdyb2suZnVuY3Rpb25zLmdldEN1cnJlbnRDYWxsKCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mdW5jKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucGFja2FnZTtcbiAgICAgICAgeWllbGQgaW5pdEF1dG9UZXN0cyhwYWNrYWdlXy5pZCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgY29uc29sZS5sb2coYFJ1bm5pbmcgdGVzdHNgKTtcbiAgICAgICAgb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDogKG9wdGlvbnMgPSB7fSk7XG4gICAgICAgIChfYyA9IChfZSA9IG9wdGlvbnMpLnRlc3RDb250ZXh0KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAoX2UudGVzdENvbnRleHQgPSBuZXcgVGVzdENvbnRleHQoKSk7XG4gICAgICAgIGdyb2suc2hlbGwubGFzdEVycm9yID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRlc3RzKSkge1xuICAgICAgICAgICAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2F0ZWdvcnkpICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICgha2V5LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2F0ZWdvcnkudG9Mb3dlckNhc2UoKSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0ZWQgJHtrZXl9IGNhdGVnb3J5YCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5iZWZvcmUpXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlLmJlZm9yZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5iZWZvcmVTdGF0dXMgPSB4LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ID0gKF9kID0gdmFsdWUudGVzdHMpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgICAgICBpZiAodmFsdWUuY2xlYXIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goeWllbGQgZXhlY1Rlc3QodFtpXSwgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnRlc3QsIHZhbHVlLnRpbWVvdXQsIHBhY2thZ2VfLm5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgZ3Jvay5zaGVsbC5jbG9zZUFsbCgpO1xuICAgICAgICAgICAgICAgICAgICBERy5CYWxsb29uLmNsb3NlQWxsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh5aWVsZCBleGVjVGVzdCh0W2ldLCBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMudGVzdCwgdmFsdWUudGltZW91dCwgcGFja2FnZV8ubmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9ICh5aWVsZCBQcm9taXNlLmFsbChyZXMpKS5maWx0ZXIoKGQpID0+IGQucmVzdWx0ICE9ICdza2lwcGVkJyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hZnRlcilcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgdmFsdWUuYWZ0ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoICh4KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuYWZ0ZXJTdGF0dXMgPSB4LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBDbGVhciBhZnRlciBjYXRlZ29yeVxuICAgICAgICAgICAgLy8gZ3Jvay5zaGVsbC5jbG9zZUFsbCgpO1xuICAgICAgICAgICAgLy8gREcuQmFsbG9vbi5jbG9zZUFsbCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlLmFmdGVyU3RhdHVzKVxuICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7IGNhdGVnb3J5OiBrZXksIG5hbWU6ICdpbml0JywgcmVzdWx0OiB2YWx1ZS5hZnRlclN0YXR1cywgc3VjY2VzczogZmFsc2UsIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5iZWZvcmVTdGF0dXMpXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHsgY2F0ZWdvcnk6IGtleSwgbmFtZTogJ2luaXQnLCByZXN1bHQ6IHZhbHVlLmJlZm9yZVN0YXR1cywgc3VjY2VzczogZmFsc2UsIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaCguLi5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy50ZXN0Q29udGV4dC5jYXRjaFVuaGFuZGxlZCkge1xuICAgICAgICAgICAgeWllbGQgZGVsYXkoMTAwMCk7XG4gICAgICAgICAgICBpZiAoZ3Jvay5zaGVsbC5sYXN0RXJyb3IubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnVW5oYW5kbGVkIGV4Y2VwdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZXhjZXB0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogZ3Jvay5zaGVsbC5sYXN0RXJyb3IsIHN1Y2Nlc3M6IGZhbHNlLCBtczogMCwgc2tpcHBlZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy50ZXN0Q29udGV4dC5yZXBvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBERy5Mb2dnZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSByZXN1bHRzLmZpbHRlcigocikgPT4gci5zdWNjZXNzKS5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBza2lwcGVkID0gcmVzdWx0cy5maWx0ZXIoKHIpID0+IHIuc2tpcHBlZCkubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZmFpbGVkID0gcmVzdWx0cy5maWx0ZXIoKHIpID0+ICFyLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSAnUGFja2FnZSBAcGFja2FnZSB0ZXN0ZWQ6IEBzdWNjZXNzZnVsIHN1Y2Nlc3NmdWwsIEBza2lwcGVkIHNraXBwZWQsIEBmYWlsZWQgZmFpbGVkIHRlc3RzJztcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzZnVsOiBzdWNjZXNzZnVsLFxuICAgICAgICAgICAgICAgIHNraXBwZWQ6IHNraXBwZWQsXG4gICAgICAgICAgICAgICAgZmFpbGVkOiBmYWlsZWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIHBhY2thZ2U6IHBhY2thZ2VfXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCByIG9mIGZhaWxlZClcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgeyBbYCR7ci5jYXRlZ29yeX0gfCAke3IubmFtZX1gXTogci5yZXN1bHQgfSk7XG4gICAgICAgICAgICBsb2dnZXIubG9nKGRlc2NyaXB0aW9uLCBwYXJhbXMsICdwYWNrYWdlLXRlc3RlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZXhlY1Rlc3QodCwgcHJlZGljYXRlLCBjYXRlZ29yeVRpbWVvdXQsIHBhY2thZ2VOYW1lKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcjtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gcHJlZGljYXRlICE9IHVuZGVmaW5lZCAmJiAoIXQubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocHJlZGljYXRlLnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgY29uc3Qgc2tpcCA9ICgoX2EgPSB0Lm9wdGlvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5za2lwUmVhc29uKSB8fCBmaWx0ZXI7XG4gICAgICAgIGNvbnN0IHNraXBSZWFzb24gPSBmaWx0ZXIgPyAnc2tpcHBlZCcgOiAoX2IgPSB0Lm9wdGlvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5za2lwUmVhc29uO1xuICAgICAgICBpZiAoIXNraXApXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRlZCAke3QuY2F0ZWdvcnl9ICR7dC5uYW1lfWApO1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoc2tpcCkge1xuICAgICAgICAgICAgICAgIHIgPSB7IHN1Y2Nlc3M6IHRydWUsIHJlc3VsdDogc2tpcFJlYXNvbiwgbXM6IDAsIHNraXBwZWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCB0aW1lb3V0XyA9ICgoX2MgPSB0Lm9wdGlvbnMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50aW1lb3V0KSA9PT0gU1RBTkRBUlRfVElNRU9VVCAmJlxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeVRpbWVvdXQgPyBjYXRlZ29yeVRpbWVvdXQgOiAoX2QgPSB0Lm9wdGlvbnMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50aW1lb3V0O1xuICAgICAgICAgICAgICAgIHRpbWVvdXRfID0gREcuVGVzdC5pc0luQmVuY2htYXJrICYmIHRpbWVvdXRfID09PSBTVEFOREFSVF9USU1FT1VUID8gQkVOQ0hNQVJLX1RJTUVPVVQgOiB0aW1lb3V0XztcbiAgICAgICAgICAgICAgICByID0geyBzdWNjZXNzOiB0cnVlLCByZXN1bHQ6IChfZSA9IHlpZWxkIHRpbWVvdXQodC50ZXN0LCB0aW1lb3V0XykpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6ICdPSycsIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoICh4KSB7XG4gICAgICAgICAgICByID0geyBzdWNjZXNzOiBmYWxzZSwgcmVzdWx0OiB4LnRvU3RyaW5nKCksIG1zOiAwLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3AgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHIubXMgPSBzdG9wIC0gc3RhcnQ7XG4gICAgICAgIGlmICghc2tpcClcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCAke3QuY2F0ZWdvcnl9ICR7dC5uYW1lfSBmb3IgJHtyLm1zfSBtc2ApO1xuICAgICAgICByLmNhdGVnb3J5ID0gdC5jYXRlZ29yeTtcbiAgICAgICAgci5uYW1lID0gdC5uYW1lO1xuICAgICAgICBpZiAoIWZpbHRlcikge1xuICAgICAgICAgICAgZ3Jvay5sb2cudXNhZ2UoYCR7cGFja2FnZU5hbWV9OiAke3QuY2F0ZWdvcnl9OiAke3QubmFtZX1gLCB7ICdzdWNjZXNzJzogci5zdWNjZXNzLCAncmVzdWx0Jzogci5yZXN1bHQsICdtcyc6IHIubXMsICdza2lwcGVkJzogci5za2lwcGVkLFxuICAgICAgICAgICAgICAgICd0eXBlJzogJ3BhY2thZ2UnLCBwYWNrYWdlTmFtZSwgJ2NhdGVnb3J5JzogdC5jYXRlZ29yeSwgJ3Rlc3QnOiB0Lm5hbWUgfSwgYHRlc3QtcGFja2FnZSAke3BhY2thZ2VOYW1lfTogJHt0LmNhdGVnb3J5fTogJHt0Lm5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfSk7XG59XG4vKiBXYWl0cyBbbXNdIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGF5KG1zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgeWllbGQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgbXMpKTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhd2FpdENoZWNrKGNoZWNrSGFuZGxlciwgZXJyb3IgPSAnVGltZW91dCBleGNlZWRlZCcsIHdhaXQgPSA1MDAsIGludGVydmFsID0gNTApIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGVycm9yKSk7XG4gICAgICAgICAgICB9LCB3YWl0KTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrSGFuZGxlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBpbnRlcnZhbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gdGltZW91dChmdW5jLCB0ZXN0VGltZW91dCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9yc1xuICAgICAgICAgICAgICAgIHJlamVjdCgnRVhFQ1VUSU9OIFRJTUVPVVQnKTtcbiAgICAgICAgICAgIH0sIHRlc3RUaW1lb3V0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4geWllbGQgUHJvbWlzZS5yYWNlKFtmdW5jKCksIHRpbWVvdXRQcm9taXNlXSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAodGltZW91dClcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RpYWxvZ1ByZXNlbnQoZGlhbG9nVGl0bGUpIHtcbiAgICBjb25zdCBkaWFsb2dzID0gREcuRGlhbG9nLmdldE9wZW5EaWFsb2dzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWFsb2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChkaWFsb2dzW2ldLnRpdGxlID09IGRpYWxvZ1RpdGxlKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8qKiBFeHBlY3RzIGFuIGFzeW5jaHJvbm91cyB7QGxpbmsgYWN0aW9ufSB0byB0aHJvdyBhbiBleGNlcHRpb24uIFVzZSB7QGxpbmsgY2hlY2t9IHRvIHBlcmZvcm1cbiAqIGRlZXBlciBpbnNwZWN0aW9uIG9mIHRoZSBleGNlcHRpb24gaWYgbmVjZXNzYXJ5LlxuICogQHBhcmFtICB7ZnVuY3Rpb24oKTogUHJvbWlzZTx2b2lkPn0gYWN0aW9uXG4gKiBAcGFyYW0gIHtmdW5jdGlvbihhbnkpOiBib29sZWFufSBjaGVja1xuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdEV4Y2VwdGlvbkFzeW5jKGFjdGlvbiwgY2hlY2spIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgY2F1Z2h0ID0gZmFsc2U7XG4gICAgICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBhY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNoZWNrZWQgPSAhY2hlY2sgfHwgY2hlY2soZSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIWNhdWdodClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIGV4Y2VwdGlvbiBpcyBleHBlY3RlZCBidXQgbm90IHRocm93bicpO1xuICAgICAgICAgICAgaWYgKCFjaGVja2VkKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQW4gZXhwZWN0ZWQgZXhjZXB0aW9uIGlzIHRocm93biwgYnV0IGl0IGRvZXMgbm90IHNhdGlzZnkgdGhlIGNvbmRpdGlvbicpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIFVuaXZlcnNhbCB0ZXN0IGZvciB2aWV3ZXJzLiBJdCBzZWFyY2ggdmlld2VycyBpbiBET00gYnkgdGFnczogY2FudmFzLCBzdmcsIGltZywgaW5wdXQsIGgxLCBhXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHYgVmlld2VyIG5hbWVcbiAqIEBwYXJhbSAge0RHLkRhdGFGcmFtZX0gZGYgRGF0YWZyYW1lIHRvIHVzZS4gU2hvdWxkIGhhdmUgYXQgbGVhc3QgMyByb3dzXG4gKiBAcGFyYW0gIHtib29sZWFufSBvcHRpb25zLmRldGVjdFNlbWFudGljVHlwZXMgU3BlY2lmeSB3aGV0aGVyIHRvIGRldGVjdCBzZW1hbnRpYyB0eXBlcyBvciBub3RcbiAqIEBwYXJhbSAge2Jvb2xlYW59IG9wdGlvbnMucmVhZE9ubHkgSWYgc2V0IHRvIHRydWUsIHRoZSBkYXRhZnJhbWUgd2lsbCBub3QgYmUgbW9kaWZpZWQgZHVyaW5nIHRoZSB0ZXN0XG4gKiBAcGFyYW0gIHtvYmplY3R9IG9wdGlvbnMgTGlzdCBvZiBvcHRpb25zIChvcHRpb25hbClcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFRoZSB0ZXN0IGlzIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBpZiBpdCBjb21wbGV0ZXMgd2l0aG91dCBlcnJvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3RWaWV3ZXIodiwgZGYsIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5kZXRlY3RTZW1hbnRpY1R5cGVzKVxuICAgICAgICAgICAgeWllbGQgZ3Jvay5kYXRhLmRldGVjdFNlbWFudGljVHlwZXMoZGYpO1xuICAgICAgICBjb25zdCB0diA9IGdyb2suc2hlbGwuYWRkVGFibGVWaWV3KGRmKTtcbiAgICAgICAgY29uc3Qgdmlld2VyTmFtZSA9IGBbbmFtZT12aWV3ZXItJHt2LnJlcGxhY2UoL1xccysvZywgJy0nKX0gaV1gO1xuICAgICAgICBsZXQgc2VsZWN0b3IgPSBgJHt2aWV3ZXJOYW1lfSBjYW52YXMsJHt2aWV3ZXJOYW1lfSBzdmcsJHt2aWV3ZXJOYW1lfSBpbWcsXG4gICAgJHt2aWV3ZXJOYW1lfSBpbnB1dCwke3ZpZXdlck5hbWV9IGgxLCR7dmlld2VyTmFtZX0gYWA7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHZpZXdlciA9IHR2LmFkZFZpZXdlcih2KTtcbiAgICAgICAgICAgIHlpZWxkIGF3YWl0Q2hlY2soKCkgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikgIT09IG51bGwsICdjYW5ub3QgbG9hZCB2aWV3ZXInLCAzMDAwKTtcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IChfYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGFnTmFtZTtcbiAgICAgICAgICAgIHJlcy5wdXNoKEFycmF5LmZyb20odHYudmlld2VycykubGVuZ3RoKTtcbiAgICAgICAgICAgIGlmICghKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yZWFkT25seSkpIHtcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKGRmLnJvdygwKS5jZWxscykuZm9yRWFjaCgoYykgPT4gYy52YWx1ZSA9IG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IGRmLnJvd0NvdW50IDwgMjAgPyBNYXRoLmZsb29yKGRmLnJvd0NvdW50IC8gMikgOiAxMDtcbiAgICAgICAgICAgICAgICBkZi5yb3dzLnNlbGVjdCgocm93KSA9PiByb3cuaWR4ID49IDAgJiYgcm93LmlkeCA8IG51bSk7XG4gICAgICAgICAgICAgICAgeWllbGQgZGVsYXkoNTApO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBudW07IGkgPCBudW0gKiAyOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGRmLmZpbHRlci5zZXQoaSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHlpZWxkIGRlbGF5KDUwKTtcbiAgICAgICAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gMTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZjEgPSBkZi5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIGRmLmNvbHVtbnMubmFtZXMoKS5zbGljZSgwLCBNYXRoLmNlaWwoZGYuY29sdW1ucy5sZW5ndGggLyAyKSkuZm9yRWFjaCgoYykgPT4gZGYuY29sdW1ucy5yZW1vdmUoYykpO1xuICAgICAgICAgICAgICAgIHlpZWxkIGRlbGF5KDEwMCk7XG4gICAgICAgICAgICAgICAgdHYuZGF0YUZyYW1lID0gZGYxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb3B0bnMgPSB2aWV3ZXIuZ2V0T3B0aW9ucyh0cnVlKS5sb29rO1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB2aWV3ZXIuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICAgICAgY29uc3QgbmV3UHJvcHMgPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9wdG5zKS5maWx0ZXIoKGspID0+IHR5cGVvZiBvcHRuc1trXSA9PT0gJ2Jvb2xlYW4nKS5mb3JFYWNoKChrKSA9PiBuZXdQcm9wc1trXSA9ICFvcHRuc1trXSk7XG4gICAgICAgICAgICBwcm9wcy5maWx0ZXIoKHApID0+IHAuY2hvaWNlcyAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgocCkgPT4gbmV3UHJvcHNbcC5uYW1lXSA9IHAuY2hvaWNlcy5maW5kKChjKSA9PiBjICE9PSBvcHRuc1twLm5hbWVdKSk7XG4gICAgICAgICAgICB2aWV3ZXIuc2V0T3B0aW9ucyhuZXdQcm9wcyk7XG4gICAgICAgICAgICB5aWVsZCBkZWxheSgzMDApO1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gdHYuc2F2ZUxheW91dCgpO1xuICAgICAgICAgICAgY29uc3Qgb2xkUHJvcHMgPSB2aWV3ZXIuZ2V0T3B0aW9ucygpLmxvb2s7XG4gICAgICAgICAgICB0di5yZXNldExheW91dCgpO1xuICAgICAgICAgICAgcmVzLnB1c2goQXJyYXkuZnJvbSh0di52aWV3ZXJzKS5sZW5ndGgpO1xuICAgICAgICAgICAgdHYubG9hZExheW91dChsYXlvdXQpO1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBgJHt2aWV3ZXJOYW1lfSAke3RhZ31gO1xuICAgICAgICAgICAgeWllbGQgYXdhaXRDaGVjaygoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSAhPT0gbnVsbCwgJ2Nhbm5vdCBsb2FkIHZpZXdlciBmcm9tIGxheW91dCcsIDMwMDApO1xuICAgICAgICAgICAgcmVzLnB1c2goQXJyYXkuZnJvbSh0di52aWV3ZXJzKS5sZW5ndGgpO1xuICAgICAgICAgICAgdmlld2VyID0gQXJyYXkuZnJvbSh0di52aWV3ZXJzKS5maW5kKCh2KSA9PiB2LnR5cGUgIT09ICdHcmlkJyk7XG4gICAgICAgICAgICBleHBlY3RBcnJheShyZXMsIFsyLCAxLCAyXSk7XG4gICAgICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkodmlld2VyLmdldE9wdGlvbnMoKS5sb29rKSwgSlNPTi5zdHJpbmdpZnkob2xkUHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHR2LmNsb3NlKCk7XG4gICAgICAgICAgICBncm9rLnNoZWxsLmNsb3NlVGFibGUoZGYpO1xuICAgICAgICAgICAgREcuQmFsbG9vbi5jbG9zZUFsbCgpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkR1Z6ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblJsYzNRdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJRVUVzVDBGQlR5eExRVUZMTEVsQlFVa3NUVUZCVFN4dFFrRkJiVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUzNSRExFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1MwRkJTeXhEUVVGRE8wRkJReTlDTEUxQlFVMHNhVUpCUVdsQ0xFZEJRVWNzVVVGQlVTeERRVUZETzBGQlJXNURMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzUjBGTFpDeEZRVUZGTEVOQlFVTTdRVUZGVUN4TlFVRk5MR2RDUVVGblFpeEhRVUZITEZsQlFWa3NRMEZCUXp0QlFVTjBReXhOUVVGTkxHRkJRV0VzUjBGQk5rSXNSVUZCUlN4RFFVRkRPMEZCUTI1RUxFMUJRVTBzUTBGQlF5eEpRVUZKTEdWQlFYVkNMRU5CUVVNN1FVRkZia01zVFVGQlRTeExRVUZYTEUxQlFVMHNRMEZMZEVJN1FVRk1SQ3hYUVVGcFFpeE5RVUZOTzBsQlEzSkNMRk5CUVdkQ0xFOUJRVThzUTBGQlF5eExRVUZWTEVWQlFVVXNTVUZCWVR0UlFVTXZReXhKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTzFsQlEyWXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeGpRVUZqTEVOQlFVTXNRMEZCUXp0SlFVTndSU3hEUVVGRE8wbEJTR1VzWTBGQlR5eFZRVWQwUWl4RFFVRkJPMEZCUTBnc1EwRkJReXhGUVV4blFpeE5RVUZOTEV0QlFVNHNUVUZCVFN4UlFVdDBRanRCUVdGRUxFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlNYUkNMRmxCUVZrc1kwRkJkMElzUlVGQlJTeE5RVUZuUWp0UlFVaDBSQ3h0UWtGQll5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjBRaXhYUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlIySXNTVUZCU1N4alFVRmpMRXRCUVVzc1UwRkJVenRaUVVGRkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NZMEZCWXl4RFFVRkRPMUZCUTNaRkxFbEJRVWtzVFVGQlRTeExRVUZMTEZOQlFWTTdXVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUVVFc1EwRkJRenREUVVOSU8wRkJSVVFzVFVGQlRTeFBRVUZQTEVsQlFVazdTVUZOWml4WlFVRlpMRkZCUVdkQ0xFVkJRVVVzU1VGQldTeEZRVUZGTEVsQlFYZENMRVZCUVVVc1QwRkJjVUk3TzFGQlEzcEdMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVVVGQlVTeERRVUZETzFGQlEzcENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRTlCUVU4c1lVRkJVQ3hQUVVGUExHTkJRVkFzVDBGQlR5eEpRVUZRTEU5QlFVOHNSMEZCU3l4RlFVRkZMRVZCUVVNN1VVRkRaaXhOUVVGQkxFOUJRVThzUTBGQlF5eFBRVUZQTEc5RFFVRm1MRTlCUVU4c1EwRkJReXhQUVVGUExFZEJRVXNzWjBKQlFXZENMRVZCUVVNN1VVRkRja01zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRka0lzU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRjFRaXhGUVVGRk8xbEJRMjVETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJUeXhQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZGTEVWQlFVVTdaMEpCUXpORExFbEJRVWtzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0blFrRkRhRUlzU1VGQlNUdHZRa0ZEUml4TlFVRk5MRWRCUVVjc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dHBRa0ZEZGtJN1owSkJRVU1zVDBGQlR5eERRVUZOTEVWQlFVVTdiMEpCUTJZc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTllPMmRDUVVORUxFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhEUVVGRExFTkJRVUVzUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkJMRU5CUVVNN1NVRkRTaXhEUVVGRE8wTkJRMFk3UVVGRlJDeE5RVUZOTEZWQlFXZENMRk5CUVZNc1EwRkJTU3hMUVVGdlFpeEZRVU55UkN4UFFVRXdRaXhGUVVGRkxFOUJRVzFDTEVWQlFVVXNTMEZCWVN4RFFVRkRPenRSUVVNdlJDeEpRVUZKTEVkQlFXbENMRU5CUVVNN1VVRkRkRUlzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU55UXl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFWTXNSVUZCUlN4RlFVRkZPMmRDUVVOc1F5eEpRVUZKTzI5Q1FVTkdMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZEWmp0blFrRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdHZRa0ZEVml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlExZzdaMEpCUTBRc1IwRkJSeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzJkQ1FVTnNRaXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZEYUVJc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFNDeFZRVUZWTEVOQlFVTXNSMEZCUnl4RlFVRkZPMmRDUVVOa0xFZEJRVWNzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXp0blFrRkRiRUlzZDBSQlFYZEVPMmRDUVVONFJDeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1dVRkRjRUlzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTFBc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRFdpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTk1MRU5CUVVNN1EwRkJRVHRCUVVWRUxFMUJRVTBzVlVGQlZTeEpRVUZKTEVOQlFVTXNTVUZCV1N4RlFVRkZMRWxCUVhkQ0xFVkJRVVVzVDBGQmNVSTdTVUZEYUVZc1NVRkJTU3hMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NVMEZCVXp0UlFVTnlReXhMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUXpsQ0xFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1NVRkJTU3hUUVVGVE8xRkJRek5ETEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEzQkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eExRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNrWXNRMEZCUXp0QlFVVkVMR2RHUVVGblJqdEJRVU5vUml4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExFMUJRVmNzUlVGQlJTeFhRVUZuUWl4SlFVRkpMRVZCUVVVc1MwRkJZenRKUVVOMFJTeEpRVUZKTEV0QlFVczdVVUZEVUN4TFFVRkxMRWRCUVVjc1IwRkJSeXhMUVVGTExFbEJRVWtzUTBGQlF6czdVVUZEYkVJc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5vUWl4SlFVRkpMRTFCUVUwc1MwRkJTeXhSUVVGUk8xRkJRM0pDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExHRkJRV0VzVVVGQlVTeFhRVUZYTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRka1VzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1RVRkJZeXhGUVVGRkxGRkJRV2RDTEVWQlFVVXNVMEZCVXl4SFFVRkhMRXRCUVVzc1JVRkJSU3hMUVVGak8wbEJRemRHTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4SlFVRkpMRkZCUVZFc1MwRkJTeXhOUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1VVRkRPVVVzUTBGQlF5eE5RVUZOTEV0QlFVc3NUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeEpRVUZKTEZGQlFWRXNTMEZCU3l4TlFVRk5MRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdVVUZET1VVc1EwRkJReXhOUVVGTkxFdEJRVXNzVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4UlFVRlJMRXRCUVVzc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTXhSaXhQUVVGUE8wbEJRMVFzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzVVVGQlVTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRPMGxCUTNwRUxFMUJRVTBzUTBGQlF5eFJRVUZSTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1MwRkJTeXhoUVVGTUxFdEJRVXNzWTBGQlRDeExRVUZMTEVkQlFVa3NSVUZCUlN4cFFrRkJhVUlzVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTndSU3hKUVVGSkxFTkJRVU1zVVVGQlVUdFJRVU5ZTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1dVRkJXU3hSUVVGUkxGTkJRVk1zVFVGQlRTeHBRa0ZCYVVJc1UwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU4wUml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGZEJRVmNzUTBGQlF5eE5RVUZwUWl4RlFVRkZMRkZCUVcxQ0xFVkJRVVVzUzBGQll6dEpRVU5vUml4TlFVRk5MR2RDUVVGblFpeEhRVUZITEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNN1NVRkRNME1zVFVGQlRTeGpRVUZqTEVkQlFVY3NUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJRenRKUVVOMlF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEVkQlFVY3NTMEZCU3l4aFFVRk1MRXRCUVVzc1kwRkJUQ3hMUVVGTExFZEJRVWtzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVVjBSU3hMUVVGTExFMUJRVTBzVFVGQlRTeEpRVUZKTEZGQlFWRXNRMEZCUXl4UFFVRlBMRVZCUVVVN1VVRkRja01zVFVGQlRTeFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNoRUxFbEJRVWtzV1VGQldTeEpRVUZKTEVsQlFVazdXVUZEZEVJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEUxQlFVMHNRMEZCUXl4SlFVRkpMRmxCUVZrc1EwRkJReXhEUVVGRE8xRkJRM0pFTEVsQlFVa3NXVUZCV1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hOUVVGTkxFTkJRVU1zU1VGQlNUdFpRVU5zUXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzVFVGQlRTeERRVUZETEVsQlFVa3NhMEpCUVd0Q0xFMUJRVTBzUTBGQlF5eEpRVUZKTEZGQlFWRXNXVUZCV1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGFrY3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzcERMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkROVUlzVFVGQlRTeFhRVUZYTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU40UXl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxPMmRDUVVNNVFpeFhRVUZYTEVOQlFVTXNWMEZCVnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdhVUpCUXpWRExFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk03WjBKQlEzWkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6czdaMEpCUlM5RExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xTkJRM0pETzB0QlEwWTdRVUZEU0N4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eE5RVUU0UWl4RlFVRkZMRkZCUVdkRE8wbEJRek5HTEV0QlFVc3NUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hoUVVGaExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRk8xRkJRMjVGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU55UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExITkNRVUZ6UWl4WFFVRlhMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJSV3hGTEUxQlFVMHNWMEZCVnl4SFFVRkhMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU40UXl4SlFVRkpMRmRCUVZjc1dVRkJXU3hMUVVGTExFbEJRVWtzWVVGQllTeFpRVUZaTEV0QlFVczdXVUZEYUVVc1YwRkJWeXhEUVVGRExGZEJRVmNzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTnlReXhKUVVGSkxGZEJRVmNzV1VGQldTeE5RVUZOTEVsQlFVa3NZVUZCWVN4WlFVRlpMRTFCUVUwN1dVRkRka1VzV1VGQldTeERRVUZETEZkQlFWY3NSVUZCUlN4aFFVRmhMRU5CUVVNc1EwRkJRenRoUVVOMFF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNN1dVRkRja1VzVjBGQlZ5eERRVUZETEZkQlFWY3NSVUZCUlN4aFFVRmhMRU5CUVVNc1EwRkJRenRoUVVOeVF5eEpRVUZKTEZkQlFWY3NTVUZCU1N4aFFVRmhPMWxCUTI1RExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNZVUZCWVN4aFFVRmhMR05CUVdNc1YwRkJWeXhYUVVGWExGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYWtjN1FVRkRTQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEZkQlFWY3NRMEZCUXl4TlFVRnpRaXhGUVVGRkxGRkJRWGRDTzBsQlF6RkZMRTFCUVUwc1dVRkJXU3hIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEYmtNc1RVRkJUU3hqUVVGakxFZEJRVWNzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVVjJReXhKUVVGSkxGbEJRVmtzU1VGQlNTeGpRVUZqTEVWQlFVVTdVVUZEYkVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5d3dSRUZCTUVRc1dVRkJXU3hIUVVGSE8xbEJRM1pHTEdkRFFVRm5ReXhqUVVGakxFVkJRVVVzUTBGQlF5eERRVUZETzB0QlEzSkVPMGxCUlVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFJRVU55UXl4SlFVRkpMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeExRVUZMTEVsQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhaUVVGWkxFdEJRVXM3V1VGRE5VUXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOcVF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hOUVVGTkxFbEJRVWtzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRTFCUVUwN1dVRkRia1VzV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTnNReXhKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJReTlDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1dVRkJXU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExGTkJRVk1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRMUVVOcVJqdEJRVU5JTEVOQlFVTTdRVUZGUkN3eVFrRkJNa0k3UVVGRE0wSXNUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkJReXhSUVVGblFpeEZRVUZGTEUxQlFXdENMRVZCUVVVc1QwRkJlVUk3TzBsQlEzUkdMR1ZCUVdVc1IwRkJSeXhSUVVGUkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4RlFVRkZMRU5CUVVNN1NVRkRWQ3hKUVVGSkxFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNSVUZCUlR0UlFVTXhRaXhMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVVFc1QwRkJUeXhoUVVGUUxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRXRCUVVzc2JVTkJRVWtzU1VGQlNTeERRVUZETzFGQlEzUkVMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEU5QlFVOHNRMEZCUXp0TFFVTnVSRHRCUVVOSUxFTkJRVU03UVVGRlJDeDFSa0ZCZFVZN1FVRkRka1lzVFVGQlRTeFZRVUZWTEUxQlFVMHNRMEZCUXl4TlFVRXlRanRKUVVOb1JDeEpRVUZKTEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hUUVVGVE8xRkJRM0pETEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRE9VSXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEZWtNc1EwRkJRenRCUVVWRUxITkdRVUZ6Ump0QlFVTjBSaXhOUVVGTkxGVkJRVlVzUzBGQlN5eERRVUZETEV0QlFUQkNPMGxCUXpsRExFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRk5CUVZNN1VVRkRja01zUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVNNVFpeExRVUZMTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU4yUXl4RFFVRkRPMEZCUlVRc1UwRkJVeXhaUVVGWkxFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWVTdTVUZEZWtNc1QwRkJUeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRM1pFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVdkQ0xHRkJRV0VzUTBGQlF5eFRRVUZwUWl4RlFVRkZMRTFCUVZrN08xRkJRMnBGTEVsQlFVa3NZVUZCWVN4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVGRkxFOUJRVTg3VVVGRGNrTXNUVUZCVFN4WFFVRlhMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU03VVVGRGJFUXNTVUZCU1N4WFFVRlhMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTMEZCU3l4VFFVRlRPMWxCUXpkRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVOMFJTeGhRVUZoTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMmhETEU5QlFVODdVMEZEVWp0UlFVTkVMRTFCUVUwc1pVRkJaU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU16UWl4TlFVRk5MR0ZCUVdFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dFJRVU0zUml4TlFVRk5MRXRCUVVzc1IwRkJSeXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZPMWxCUTJoQ0xFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NTMEZCU3p0blFrRkRia0lzVFVGQlRTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1UwRkRia0k3VVVGRFJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXh0UkVGQmJVUXNRMEZCUXl4RFFVRkRPMUZCUXpWRkxFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NZVUZCWVN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRGFFTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6dG5Ra0ZCUlN4VFFVRlRPMWxCUXk5RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOeVF5eE5RVUZOTEVkQlFVY3NSMEZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGWkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVNdlF5eE5RVUZOTEVkQlFVY3NSMEZCYVVRc1JVRkJSU3hEUVVGRE8yZENRVU0zUkN4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRk8yOUNRVU01UWl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRPM2RDUVVGRkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03ZVVKQlF5OURMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNN2QwSkJRVVVzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0NVFrRkRPVVFzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF6dDNRa0ZCUlN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVONlJDeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRTQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUlVGQlJTeExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hIUVVGVExFVkJRVVU3YjBKQlEzSkhMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5xUlN4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSk8zZENRVUZGTEUxQlFVMHNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHZRa0ZEY0VNc05FTkJRVFJETzI5Q1FVTTFReXhKUVVGSkxFOUJRVThzUjBGQlJ5eExRVUZMTEZOQlFWTXNTVUZCU1N4RFFVRkRMRWRCUVVjN2QwSkJRVVVzVFVGQlRTeFhRVUZYTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc2QwSkJRWGRDTEVkQlFVY3NSVUZCUlN4RFFVRkRPMmRDUVVNdlJpeERRVUZETEVOQlFVRXNSVUZCUlN4RlFVRkRMRlZCUVZVc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNMElzU1VGQlNTeEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZPMjlDUVVOWUxFMUJRVTBzUjBGQlJ5eEhRVUZYTEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRPMjlDUVVOMFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWRCUVVjc1EwRkJRenR2UWtGRGNFSXNTVUZCU1N4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzVTBGQlV6dDNRa0ZEYUVNc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTTdiMEpCUXpsRExGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTnVRenR4UWtGQlRUdHZRa0ZEVEN4bFFVRmxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTTFRanRoUVVOR08xTkJRMFk3VVVGRFJDeGhRVUZoTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMmhETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1RVRkJUVHRaUVVGRkxFOUJRVTg3VVVGRGNFTXNWMEZCVnl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVkQlFVY3NSVUZCUXl4TFFVRkxMRVZCUVVVc1pVRkJaU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVTXNRMEZCUXp0SlFVTjRSU3hEUVVGRE8wTkJRVUU3UVVGRlJDeE5RVUZOTEZWQlFXZENMRkZCUVZFc1EwRkJReXhQUVVGMVJUczdPenRSUVVOd1J5eE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRkJMRTFCUVVFc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eGpRVUZqTEVWQlFVVXNNRU5CUVVVc1NVRkJTU3d3UTBGQlJTeFBRVUZQTEVOQlFVTTdVVUZEYUVVc1RVRkJUU3hoUVVGaExFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJwRExFMUJRVTBzVDBGQlR5eEhRVU4xUkN4RlFVRkZMRU5CUVVNN1VVRkRka1VzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVNM1FpeFBRVUZQTEdGQlFWQXNUMEZCVHl4alFVRlFMRTlCUVU4c1NVRkJVQ3hQUVVGUExFZEJRVXNzUlVGQlJTeEZRVUZETzFGQlEyWXNXVUZCUVN4UFFVRlJMRVZCUVVNc1YwRkJWeXgxUTBGQldDeFhRVUZYTEVkQlFVc3NTVUZCU1N4WFFVRlhMRVZCUVVVc1JVRkJRenRSUVVNelF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRE1VSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRGFFUXNTVUZCU1N4RFFVRkJMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4UlFVRlJMRXRCUVVrc1UwRkJVeXhGUVVGRk8yZENRVU5zUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNVVUZCVVN4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8yOUNRVU5vUlN4VFFVRlRPMkZCUTFvN1dVRkRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1EwRkJRenRaUVVOMlF5eEpRVUZKTzJkQ1FVTkdMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTA3YjBKQlEyUXNUVUZCVFN4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03WVVGRGVFSTdXVUZCUXl4UFFVRlBMRU5CUVUwc1JVRkJSVHRuUWtGRFppeExRVUZMTEVOQlFVTXNXVUZCV1N4SFFVRkhMRU5CUVVNc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dGhRVU51UXp0WlFVTkVMRTFCUVUwc1EwRkJReXhIUVVGSExFMUJRVUVzUzBGQlN5eERRVUZETEV0QlFVc3NiVU5CUVVrc1JVRkJSU3hEUVVGRE8xbEJRelZDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVObUxFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlR0blFrRkRaaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0dlFrRkRha01zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUeXhGUVVGRkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNMVJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8yOUNRVU4wUWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzJsQ1FVTjJRanRoUVVOR08ybENRVUZOTzJkQ1FVTk1MRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZETDBJc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVDBGQlR5eGhRVUZRTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlF5OUZPMWxCUTBRc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NVMEZCVXl4RFFVRkRMRU5CUVVNN1dVRkRNMFVzU1VGQlNUdG5Ra0ZEUml4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTE8yOUNRVU5pTEUxQlFVMHNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yRkJRM1pDTzFsQlFVTXNUMEZCVHl4RFFVRk5MRVZCUVVVN1owSkJRMllzUzBGQlN5eERRVUZETEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03WVVGRGJFTTdXVUZEUkN4MVFrRkJkVUk3V1VGRGRrSXNlVUpCUVhsQ08xbEJRM3BDTEhsQ1FVRjVRanRaUVVONlFpeEpRVUZKTEV0QlFVc3NRMEZCUXl4WFFVRlhPMmRDUVVOdVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkRMRU5CUVVNc1EwRkJRenRaUVVNM1J5eEpRVUZKTEV0QlFVc3NRMEZCUXl4WlFVRlpPMmRDUVVOd1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFTkJRVU1zV1VGQldTeEZRVUZGTEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkRMRU5CUVVNc1EwRkJRenRaUVVNNVJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRGRrSTdVVUZEUkN4SlFVRkpMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zWTBGQll5eEZRVUZGTzFsQlEzUkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEyeENMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRuUWtGRGJrTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGRFdDeFJRVUZSTEVWQlFVVXNjMEpCUVhOQ08yOUNRVU5vUXl4SlFVRkpMRVZCUVVVc1dVRkJXVHR2UWtGRGJFSXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3p0cFFrRkRjRVVzUTBGQlF5eERRVUZETzJGQlEwbzdVMEZEUmp0UlFVTkVMRWxCUVVrc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVTdXVUZET1VJc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1dVRkRMMElzVFVGQlRTeFZRVUZWTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU16UkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTNoRUxFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRMnBFTEUxQlFVMHNWMEZCVnl4SFFVRkhMSGxHUVVGNVJpeERRVUZETzFsQlF6bEhMRTFCUVUwc1RVRkJUU3hIUVVGSE8yZENRVU5pTEZWQlFWVXNSVUZCUlN4VlFVRlZPMmRDUVVOMFFpeFBRVUZQTEVWQlFVVXNUMEZCVHp0blFrRkRhRUlzVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5PMmRDUVVOeVFpeFBRVUZQTEVWQlFVVXNVVUZCVVR0aFFVTnNRaXhEUVVGRE8xbEJRMFlzUzBGQlN5eE5RVUZOTEVOQlFVTXNTVUZCU1N4TlFVRk5PMmRDUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFJRVUZSTEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUXl4RFFVRkRMRU5CUVVNN1dVRkRla1lzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRkxHZENRVUZuUWl4RFFVRkRMRU5CUVVNN1UwRkRia1E3VVVGRFJDeFBRVUZQTEU5QlFVOHNRMEZCUXpzN1EwRkRhRUk3UVVGRlJDeFRRVUZsTEZGQlFWRXNRMEZCUXl4RFFVRlBMRVZCUVVVc1UwRkJOa0lzUlVGQlJTeGxRVUYzUWl4RlFVRkZMRmRCUVc5Q096czdVVUZETlVjc1NVRkJTU3hEUVVGMVJ5eERRVUZETzFGQlF6VkhMRTFCUVUwc1RVRkJUU3hIUVVGSExGTkJRVk1zU1VGQlNTeFRRVUZUTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRk5CUVZNc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY2tjc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlFTeE5RVUZCTEVOQlFVTXNRMEZCUXl4UFFVRlBMREJEUVVGRkxGVkJRVlVzUzBGQlNTeE5RVUZOTEVOQlFVTTdVVUZETjBNc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVUVzUTBGQlF5eERRVUZETEU5QlFVOHNNRU5CUVVVc1ZVRkJWU3hEUVVGRE8xRkJRemxFTEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTFBc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4UlFVRlJMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEYWtRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0UlFVTjZRaXhKUVVGSk8xbEJRMFlzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1EwRkJReXhIUVVGSExFVkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1ZVRkJWeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMRWxCUVVrc1JVRkJReXhEUVVGRE8yRkJRMmhGTzJsQ1FVRk5PMmRDUVVOTUxFbEJRVWtzVVVGQlVTeEhRVUZITEVOQlFVRXNUVUZCUVN4RFFVRkRMRU5CUVVNc1QwRkJUeXd3UTBGQlJTeFBRVUZQTEUxQlFVc3NaMEpCUVdkQ08yOUNRVU53UkN4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCUVN4RFFVRkRMRU5CUVVNc1QwRkJUeXd3UTBGQlJTeFBRVUZSTEVOQlFVTTdaMEpCUXpGRUxGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1NVRkJTU3hSUVVGUkxFdEJRVXNzWjBKQlFXZENMRU5CUVVNc1EwRkJReXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU03WjBKQlEycEhMRU5CUVVNc1IwRkJSeXhGUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVVFc1RVRkJUU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4UlFVRlJMRU5CUVVNc2JVTkJRVWtzU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUlVGQlF5eERRVUZETzJGQlF6ZEdPMU5CUTBZN1VVRkJReXhQUVVGUExFTkJRVTBzUlVGQlJUdFpRVU5tTEVOQlFVTXNSMEZCUnl4RlFVRkRMRTlCUVU4c1JVRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVNc1EwRkJRenRUUVVOdVJUdFJRVU5FTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRGVFSXNZVUZCWVR0UlFVTmlMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVVndRaXhKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVU5RTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zVVVGQlVTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEYWtVc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTNoQ0xFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMWxCUTFnc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4WFFVRlhMRXRCUVVzc1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUTNaRUxFVkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXl4UFFVRlBPMmRDUVVONlJTeE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRmRCUVZjc1JVRkJSU3hWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlF5eEZRVU42UlN4blFrRkJaMElzVjBGQlZ5eExRVUZMTEVOQlFVTXNRMEZCUXl4UlFVRlJMRXRCUVVzc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdVMEZETlVRN1VVRkRSQ3hQUVVGUExFTkJRVU1zUTBGQlF6czdRMEZEVmp0QlFVVkVMRFpDUVVFMlFqdEJRVU0zUWl4TlFVRk5MRlZCUVdkQ0xFdEJRVXNzUTBGQlF5eEZRVUZWT3p0UlFVTndReXhOUVVGTkxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUTBGQlF6dERRVUZCTzBGQlJVUXNUVUZCVFN4VlFVRm5RaXhWUVVGVkxFTkJRVU1zV1VGQk1rSXNSVUZETVVRc1VVRkJaMElzYTBKQlFXdENMRVZCUVVVc1QwRkJaU3hIUVVGSExFVkJRVVVzVjBGQmJVSXNSVUZCUlRzN1VVRkROMFVzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU55UXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRk8yZENRVU5rTEdGQlFXRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRuUWtGRE1VSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETTBJc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFsQlExUXNZVUZCWVR0WlFVTmlMRTFCUVUwc1ZVRkJWU3hIUVVGWkxGZEJRVmNzUTBGQlF5eEhRVUZITEVWQlFVVTdaMEpCUXpORExFbEJRVWtzV1VGQldTeEZRVUZGTEVWQlFVVTdiMEpCUTJ4Q0xHRkJRV0VzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0dlFrRkRNVUlzVDBGQlR5eEZRVUZGTEVOQlFVTTdhVUpCUTFnN1dVRkRTQ3hEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEWml4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOTUxFTkJRVU03UTBGQlFUdEJRVVZFTEZOQlFXVXNUMEZCVHl4RFFVRkRMRWxCUVhkQ0xFVkJRVVVzVjBGQmJVSTdPMUZCUTJ4RkxFbEJRVWtzVDBGQlR5eEhRVUZ0UWl4SlFVRkpMRU5CUVVNN1VVRkRia01zVFVGQlRTeGpRVUZqTEVkQlFVY3NTVUZCU1N4UFFVRlBMRU5CUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzVFVGQlRTeEZRVUZGTEVWQlFVVTdXVUZEY0VRc1dVRkJXVHRaUVVOYUxFOUJRVThzUjBGQlJ5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RlFVRkZPMmRDUVVONFFpeDNSRUZCZDBRN1owSkJRM2hFTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZETzFsQlF6bENMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU5zUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxFbEJRVWs3V1VGRFJpeFBRVUZQTEUxQlFVMHNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZGTEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRja1E3WjBKQlFWTTdXVUZEVWl4SlFVRkpMRTlCUVU4N1owSkJRMVFzV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMU5CUTNwQ08wbEJRMGdzUTBGQlF6dERRVUZCTzBGQlJVUXNUVUZCVFN4VlFVRlZMR1ZCUVdVc1EwRkJReXhYUVVGdFFqdEpRVU5xUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMGxCUXpORExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTNaRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1NVRkJTU3hYUVVGWE8xbEJRMnBETEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJZN1NVRkRSQ3hQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1ZVRkJaMElzYjBKQlFXOUNMRU5CUVVNc1RVRkJNa0lzUlVGRGNFVXNTMEZCYlVNN08xRkJRMjVETEVsQlFVa3NUVUZCVFN4SFFVRlpMRXRCUVVzc1EwRkJRenRSUVVNMVFpeEpRVUZKTEU5QlFVOHNSMEZCV1N4TFFVRkxMRU5CUVVNN1VVRkROMElzU1VGQlNUdFpRVU5HTEUxQlFVMHNUVUZCVFN4RlFVRkZMRU5CUVVNN1UwRkRhRUk3VVVGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0WlFVTldMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRFpDeFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF6bENPMmRDUVVGVE8xbEJRMUlzU1VGQlNTeERRVUZETEUxQlFVMDdaMEpCUTFRc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDVRMEZCZVVNc1EwRkJReXhEUVVGRE8xbEJRemRFTEVsQlFVa3NRMEZCUXl4UFFVRlBPMmRDUVVOV0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkMFZCUVhkRkxFTkJRVU1zUTBGQlF6dFRRVU0zUmp0SlFVTklMRU5CUVVNN1EwRkJRVHRCUVVWRU96czdPenM3T3p0SFFWRkhPMEZCUTBnc1RVRkJUU3hWUVVGblFpeFZRVUZWTEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVdkQ0xFVkJRekZFTEU5QlFUWkVPenM3VVVGRE4wUXNTVUZCU1N4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNiVUpCUVcxQ08xbEJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUXpGRkxFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzWkRMRTFCUVUwc1ZVRkJWU3hIUVVGSExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUXk5RUxFbEJRVWtzVVVGQlVTeEhRVUZITEVkQlFVY3NWVUZCVlN4WFFVRlhMRlZCUVZVc1VVRkJVU3hWUVVGVk8wMUJReTlFTEZWQlFWVXNWVUZCVlN4VlFVRlZMRTlCUVU4c1ZVRkJWU3hKUVVGSkxFTkJRVU03VVVGRGVFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNUdFpRVU5HTEVsQlFVa3NUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETjBJc1RVRkJUU3hWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlF6bEVMRzlDUVVGdlFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUXpsQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVRXNVVUZCVVN4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zTUVOQlFVVXNUMEZCVHl4RFFVRkRPMWxCUTNSRUxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeERRVUZETEVOQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEZGQlFWRXNRMEZCUVN4RlFVRkZPMmRDUVVOMFFpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTXZSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRMmhGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU12UkN4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYUVJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzI5Q1FVRkZMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRuUWtGRE5VUXNUVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03WjBKQlEyaENMRVZCUVVVc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTnlRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1owSkJRM1pDTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40Unl4TlFVRk5MRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtJc1JVRkJSU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEhRVUZITEVOQlFVTTdZVUZEY0VJN1dVRkRSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dFpRVU16UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdXVUZEY2tNc1RVRkJUU3hSUVVGUkxFZEJRWEZETEVWQlFVVXNRMEZCUXp0WlFVTjBSQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzVTBGQlV5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjRSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCWXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eExRVUZMTEVsQlFVa3NRMEZCUXp0cFFrRkRha1FzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCWXl4RlFVRkZMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJSU3hEUVVGRExFTkJRVU03V1VGRGNFY3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFpRVU0xUWl4TlFVRk5MRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5xUWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdXVUZETDBJc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVNeFF5eEZRVUZGTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1dVRkRha0lzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVONFF5eEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRM1JDTEZGQlFWRXNSMEZCUnl4SFFVRkhMRlZCUVZVc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFpRVU5zUXl4TlFVRk5MRlZCUVZVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNZVUZCWVN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFbEJRVWtzUlVGRE9VUXNaME5CUVdkRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0WlFVTjRReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMHNRMEZCUlN4RFFVRkRPMWxCUTNKRkxGZEJRVmNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETlVJc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0xUlR0blFrRkJVenRaUVVOU0xFVkJRVVVzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0WlFVTllMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpGQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1UwRkRka0k3TzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnZTA5aWMyVnlkbUZpYkdVc0lGTjFZbk5qY21sd2RHbHZibjBnWm5KdmJTQW5jbmhxY3ljN1hHNXBiWEJ2Y25RZ1ZHbHRaVzkxZENBOUlFNXZaR1ZLVXk1VWFXMWxiM1YwTzF4dWFXMXdiM0owSUh0RVlYUmhSbkpoYldWOUlHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtTnZibk4wSUZOVVFVNUVRVkpVWDFSSlRVVlBWVlFnUFNBek1EQXdNRHRjYm1OdmJuTjBJRUpGVGtOSVRVRlNTMTlVU1UxRlQxVlVJRDBnTVRBNE1EQXdNREE3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0IwWlhOMGN6b2dlMXh1SUNCYmEyVjVPaUJ6ZEhKcGJtZGRPaUI3WEc0Z0lDQWdkR1Z6ZEhNL09pQlVaWE4wVzEwc0lHSmxabTl5WlQ4NklDZ3BJRDArSUZCeWIyMXBjMlU4ZG05cFpENHNJR0ZtZEdWeVB6b2dLQ2tnUFQ0Z1VISnZiV2x6WlR4MmIybGtQaXhjYmlBZ0lDQmlaV1p2Y21WVGRHRjBkWE0vT2lCemRISnBibWNzSUdGbWRHVnlVM1JoZEhWelB6b2djM1J5YVc1bkxDQmpiR1ZoY2o4NklHSnZiMnhsWVc0c0lIUnBiV1Z2ZFhRL09pQnVkVzFpWlhKY2JpQWdmVnh1ZlNBOUlIdDlPMXh1WEc1amIyNXpkQ0JoZFhSdlZHVnpkSE5EWVhST1lXMWxJRDBnSjBGMWRHOGdWR1Z6ZEhNbk8xeHVZMjl1YzNRZ2QyRnpVbVZuYVhOMFpYSmxaRG9nZTF0clpYazZJSE4wY21sdVoxMDZJR0p2YjJ4bFlXNTlJRDBnZTMwN1hHNWxlSEJ2Y25RZ2JHVjBJR04xY25KbGJuUkRZWFJsWjI5eWVUb2djM1J5YVc1bk8xeHVYRzVsZUhCdmNuUWdibUZ0WlhOd1lXTmxJR0Z6YzNWeVpTQjdYRzRnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNST2RXeHNLSFpoYkhWbE9pQmhibmtzSUc1aGJXVS9PaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ0pIdHVZVzFsSUQwOUlHNTFiR3dnUHlBblZtRnNkV1VuSURvZ2JtRnRaWDBnYm05MElHUmxabWx1WldSZ0tUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRlJsYzNSUGNIUnBiMjV6SUh0Y2JpQWdkR2x0Wlc5MWREODZJRzUxYldKbGNqdGNiaUFnZFc1b1lXNWtiR1ZrUlhoalpYQjBhVzl1VkdsdFpXOTFkRDg2SUc1MWJXSmxjanRjYmlBZ2MydHBjRkpsWVhOdmJqODZJSE4wY21sdVp6dGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCRFlYUmxaMjl5ZVU5d2RHbHZibk1nZTF4dUlDQmpiR1ZoY2o4NklHSnZiMnhsWVc0N1hHNGdJSFJwYldWdmRYUS9PaUJ1ZFcxaVpYSTdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJVWlhOMFEyOXVkR1Y0ZENCN1hHNGdJR05oZEdOb1ZXNW9ZVzVrYkdWa0lEMGdkSEoxWlR0Y2JpQWdjbVZ3YjNKMElEMGdabUZzYzJVN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb1kyRjBZMmhWYm1oaGJtUnNaV1EvT2lCaWIyOXNaV0Z1TENCeVpYQnZjblEvT2lCaWIyOXNaV0Z1S1NCN1hHNGdJQ0FnYVdZZ0tHTmhkR05vVlc1b1lXNWtiR1ZrSUNFOVBTQjFibVJsWm1sdVpXUXBJSFJvYVhNdVkyRjBZMmhWYm1oaGJtUnNaV1FnUFNCallYUmphRlZ1YUdGdVpHeGxaRHRjYmlBZ0lDQnBaaUFvY21Wd2IzSjBJQ0U5UFNCMWJtUmxabWx1WldRcElIUm9hWE11Y21Wd2IzSjBJRDBnY21Wd2IzSjBPMXh1SUNCOU8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWR1Z6ZENCN1hHNGdJSFJsYzNRNklDZ3BJRDArSUZCeWIyMXBjMlU4WVc1NVBqdGNiaUFnYm1GdFpUb2djM1J5YVc1bk8xeHVJQ0JqWVhSbFoyOXllVG9nYzNSeWFXNW5PMXh1SUNCdmNIUnBiMjV6UHpvZ1ZHVnpkRTl3ZEdsdmJuTTdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9ZMkYwWldkdmNuazZJSE4wY21sdVp5d2dibUZ0WlRvZ2MzUnlhVzVuTENCMFpYTjBPaUFvS1NBOVBpQlFjbTl0YVhObFBHRnVlVDRzSUc5d2RHbHZibk0vT2lCVVpYTjBUM0IwYVc5dWN5a2dlMXh1SUNBZ0lIUm9hWE11WTJGMFpXZHZjbmtnUFNCallYUmxaMjl5ZVR0Y2JpQWdJQ0IwYUdsekxtNWhiV1VnUFNCdVlXMWxPMXh1SUNBZ0lHOXdkR2x2Ym5NZ1B6ODlJSHQ5TzF4dUlDQWdJRzl3ZEdsdmJuTXVkR2x0Wlc5MWRDQS9QejBnVTFSQlRrUkJVbFJmVkVsTlJVOVZWRHRjYmlBZ0lDQjBhR2x6TG05d2RHbHZibk1nUFNCdmNIUnBiMjV6TzF4dUlDQWdJSFJvYVhNdWRHVnpkQ0E5SUdGemVXNWpJQ2dwT2lCUWNtOXRhWE5sUEdGdWVUNGdQVDRnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXRhWE5sS0dGemVXNWpJQ2h5WlhOdmJIWmxMQ0J5WldwbFkzUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJSEpsYzNWc2RDQTlJQ2NuTzF4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGMzVnNkQ0E5SUdGM1lXbDBJSFJsYzNRb0tUdGNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aVG9nWVc1NUtTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WcVpXTjBLR1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxjMjlzZG1Vb2NtVnpkV3gwS1R0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHRnplVzVqSUdaMWJtTjBhVzl1SUhSbGMzUkZkbVZ1ZER4VVBpaGxkbVZ1ZERvZ1QySnpaWEoyWVdKc1pUeFVQaXhjYmlBZ2FHRnVaR3hsY2pvZ0tHRnlaM002SUZRcElEMCtJSFp2YVdRc0lIUnlhV2RuWlhJNklDZ3BJRDArSUhadmFXUXNJRzF6T2lCdWRXMWlaWElnUFNBd0tUb2dVSEp2YldselpUeHpkSEpwYm1jK0lIdGNiaUFnYkdWMElITjFZam9nVTNWaWMyTnlhWEIwYVc5dU8xeHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnUFQ0Z2UxeHVJQ0FnSUhOMVlpQTlJR1YyWlc1MExuTjFZbk5qY21saVpTZ29ZWEpuY3pvZ1lXNTVLU0E5UGlCN1hHNGdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0JvWVc1a2JHVnlLR0Z5WjNNcE8xeHVJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0J5WldwbFkzUW9aU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J6ZFdJdWRXNXpkV0p6WTNKcFltVW9LVHRjYmlBZ0lDQWdJSEpsYzI5c2RtVW9KMDlMSnlrN1hHNGdJQ0FnZlNrN1hHNGdJQ0FnYzJWMFZHbHRaVzkxZENnb0tTQTlQaUI3WEc0Z0lDQWdJQ0J6ZFdJdWRXNXpkV0p6WTNKcFltVW9LVHRjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0J3Y21WbVpYSXRjSEp2YldselpTMXlaV3BsWTNRdFpYSnliM0p6WEc0Z0lDQWdJQ0J5WldwbFkzUW9KM1JwYldWdmRYUW5LVHRjYmlBZ0lDQjlMQ0J0Y3lrN1hHNGdJQ0FnZEhKcFoyZGxjaWdwTzF4dUlDQjlLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUmxjM1FvYm1GdFpUb2djM1J5YVc1bkxDQjBaWE4wT2lBb0tTQTlQaUJRY205dGFYTmxQR0Z1ZVQ0c0lHOXdkR2x2Ym5NL09pQlVaWE4wVDNCMGFXOXVjeWs2SUhadmFXUWdlMXh1SUNCcFppQW9kR1Z6ZEhOYlkzVnljbVZ1ZEVOaGRHVm5iM0o1WFNBOVBTQjFibVJsWm1sdVpXUXBYRzRnSUNBZ2RHVnpkSE5iWTNWeWNtVnVkRU5oZEdWbmIzSjVYU0E5SUh0OU8xeHVJQ0JwWmlBb2RHVnpkSE5iWTNWeWNtVnVkRU5oZEdWbmIzSjVYUzUwWlhOMGN5QTlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdkR1Z6ZEhOYlkzVnljbVZ1ZEVOaGRHVm5iM0o1WFM1MFpYTjBjeUE5SUZ0ZE8xeHVJQ0IwWlhOMGMxdGpkWEp5Wlc1MFEyRjBaV2R2Y25sZExuUmxjM1J6SVM1d2RYTm9LRzVsZHlCVVpYTjBLR04xY25KbGJuUkRZWFJsWjI5eWVTd2dibUZ0WlN3Z2RHVnpkQ3dnYjNCMGFXOXVjeWtwTzF4dWZWeHVYRzR2S2lCVVpYTjBjeUIwZDI4Z2IySnFaV04wY3lCbWIzSWdaWEYxWVd4cGRIa3NJSFJvY205M2N5QmhiaUJsZUdObGNIUnBiMjRnYVdZZ2RHaGxlU0JoY21VZ2JtOTBJR1Z4ZFdGc0xpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1Y0Y0dWamRDaGhZM1IxWVd3NklHRnVlU3dnWlhod1pXTjBaV1E2SUdGdWVTQTlJSFJ5ZFdVc0lHVnljbTl5UHpvZ2MzUnlhVzVuS1RvZ2RtOXBaQ0I3WEc0Z0lHbG1JQ2hsY25KdmNpbGNiaUFnSUNCbGNuSnZjaUE5SUdBa2UyVnljbTl5ZlN3Z1lEdGNiaUFnWld4elpTQmxjbkp2Y2lBOUlDY25PMXh1SUNCcFppQW9ZV04wZFdGc0lDRTlQU0JsZUhCbFkzUmxaQ2xjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lDUjdaWEp5YjNKOVJYaHdaV04wWldRZ1hDSWtlMlY0Y0dWamRHVmtmVndpTENCbmIzUWdYQ0lrZTJGamRIVmhiSDFjSW1BcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhod1pXTjBSbXh2WVhRb1lXTjBkV0ZzT2lCdWRXMWlaWElzSUdWNGNHVmpkR1ZrT2lCdWRXMWlaWElzSUhSdmJHVnlZVzVqWlNBOUlEQXVNREF4TENCbGNuSnZjajg2SUhOMGNtbHVaeWs2SUhadmFXUWdlMXh1SUNCcFppQW9LR0ZqZEhWaGJDQTlQVDBnVG5WdFltVnlMbEJQVTBsVVNWWkZYMGxPUmtsT1NWUlpJQ1ltSUdWNGNHVmpkR1ZrSUQwOVBTQk9kVzFpWlhJdVVFOVRTVlJKVmtWZlNVNUdTVTVKVkZrcElIeDhYRzRnSUNBZ0lDQW9ZV04wZFdGc0lEMDlQU0JPZFcxaVpYSXVUa1ZIUVZSSlZrVmZTVTVHU1U1SlZGa2dKaVlnWlhod1pXTjBaV1FnUFQwOUlFNTFiV0psY2k1T1JVZEJWRWxXUlY5SlRrWkpUa2xVV1NrZ2ZIeGNiaUFnSUNBZ0lDaGhZM1IxWVd3Z1BUMDlJRTUxYldKbGNpNU9ZVTRnSmlZZ1pYaHdaV04wWldRZ1BUMDlJRTUxYldKbGNpNU9ZVTRwSUh4OElDaHBjMDVoVGloaFkzUjFZV3dwSUNZbUlHbHpUbUZPS0dWNGNHVmpkR1ZrS1NrcFhHNGdJQ0FnY21WMGRYSnVPMXh1SUNCamIyNXpkQ0JoY21WRmNYVmhiQ0E5SUUxaGRHZ3VZV0p6S0dGamRIVmhiQ0F0SUdWNGNHVmpkR1ZrS1NBOElIUnZiR1Z5WVc1alpUdGNiaUFnWlhod1pXTjBLR0Z5WlVWeGRXRnNMQ0IwY25WbExDQmdKSHRsY25KdmNpQS9QeUFuSjMwZ0tIUnZiR1Z5WVc1alpTQTlJQ1I3ZEc5c1pYSmhibU5sZlNsZ0tUdGNiaUFnYVdZZ0tDRmhjbVZGY1hWaGJDbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVWNGNHVmpkR1ZrSUNSN1pYaHdaV04wWldSOUxDQm5iM1FnSkh0aFkzUjFZV3g5SUNoMGIyeGxjbUZ1WTJVZ1BTQWtlM1J2YkdWeVlXNWpaWDBwWUNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJsZUhCbFkzUlVZV0pzWlNoaFkzUjFZV3c2SUVSaGRHRkdjbUZ0WlN3Z1pYaHdaV04wWldRNklFUmhkR0ZHY21GdFpTd2daWEp5YjNJL09pQnpkSEpwYm1jcE9pQjJiMmxrSUh0Y2JpQWdZMjl1YzNRZ1pYaHdaV04wWldSU2IzZERiM1Z1ZENBOUlHVjRjR1ZqZEdWa0xuSnZkME52ZFc1ME8xeHVJQ0JqYjI1emRDQmhZM1IxWVd4U2IzZERiM1Z1ZENBOUlHRmpkSFZoYkM1eWIzZERiM1Z1ZER0Y2JpQWdaWGh3WldOMEtHRmpkSFZoYkZKdmQwTnZkVzUwTENCbGVIQmxZM1JsWkZKdmQwTnZkVzUwTENCZ0pIdGxjbkp2Y2lBL1B5QW5KMzBzSUhKdmR5QmpiM1Z1ZEdBcE8xeHVYRzRnSUdadmNpQW9ZMjl1YzNRZ1kyOXNkVzF1SUc5bUlHVjRjR1ZqZEdWa0xtTnZiSFZ0Ym5NcElIdGNiaUFnSUNCamIyNXpkQ0JoWTNSMVlXeERiMngxYlc0Z1BTQmhZM1IxWVd3dVkyOXNkVzF1Y3k1aWVVNWhiV1VvWTI5c2RXMXVMbTVoYldVcE8xeHVJQ0FnSUdsbUlDaGhZM1IxWVd4RGIyeDFiVzRnUFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdRMjlzZFcxdUlDUjdZMjlzZFcxdUxtNWhiV1Y5SUc1dmRDQm1iM1Z1WkdBcE8xeHVJQ0FnSUdsbUlDaGhZM1IxWVd4RGIyeDFiVzR1ZEhsd1pTQWhQU0JqYjJ4MWJXNHVkSGx3WlNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnUTI5c2RXMXVJQ1I3WTI5c2RXMXVMbTVoYldWOUlIUjVjR1VnWlhod1pXTjBaV1FnSkh0amIyeDFiVzR1ZEhsd1pYMGdaMjkwSUNSN1lXTjBkV0ZzUTI5c2RXMXVMblI1Y0dWOVlDazdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmxlSEJsWTNSbFpGSnZkME52ZFc1ME95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSFpoYkhWbElEMGdZMjlzZFcxdUxtZGxkQ2hwS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR0ZqZEhWaGJGWmhiSFZsSUQwZ1lXTjBkV0ZzUTI5c2RXMXVMbWRsZENocEtUdGNiaUFnSUNBZ0lHbG1JQ2hqYjJ4MWJXNHVkSGx3WlNBOVBTQkVSeTVVV1ZCRkxrWk1UMEZVS1Z4dUlDQWdJQ0FnSUNCbGVIQmxZM1JHYkc5aGRDaGhZM1IxWVd4V1lXeDFaU3dnZG1Gc2RXVXNJREF1TURBd01Td2daWEp5YjNJcE8xeHVJQ0FnSUNBZ1pXeHpaU0JwWmlBb1kyOXNkVzF1TG5SNWNHVWdQVDBnUkVjdVZGbFFSUzVFUVZSRlgxUkpUVVVwWEc0Z0lDQWdJQ0FnSUdWNGNHVmpkQ2hoWTNSMVlXeFdZV3gxWlM1cGMxTmhiV1VvZG1Gc2RXVXBMQ0IwY25WbExDQmxjbkp2Y2lrN1hHNGdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJR1Y0Y0dWamRDaGhZM1IxWVd4V1lXeDFaU3dnZG1Gc2RXVXNJR1Z5Y205eUtUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVjRjR1ZqZEU5aWFtVmpkQ2hoWTNSMVlXdzZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2dZVzU1SUgwc0lHVjRjR1ZqZEdWa09pQjdJRnRyWlhrNklITjBjbWx1WjEwNklHRnVlU0I5S1NCN1hHNGdJR1p2Y2lBb1kyOXVjM1FnVzJWNGNHVmpkR1ZrUzJWNUxDQmxlSEJsWTNSbFpGWmhiSFZsWFNCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3lobGVIQmxZM1JsWkNrcElIdGNiaUFnSUNCcFppQW9JV0ZqZEhWaGJDNW9ZWE5QZDI1UWNtOXdaWEowZVNobGVIQmxZM1JsWkV0bGVTa3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFVjRjR1ZqZEdWa0lIQnliM0JsY25SNUlGd2lKSHRsZUhCbFkzUmxaRXRsZVgxY0lpQnViM1FnWm05MWJtUmdLVHRjYmx4dUlDQWdJR052Ym5OMElHRmpkSFZoYkZaaGJIVmxJRDBnWVdOMGRXRnNXMlY0Y0dWamRHVmtTMlY1WFR0Y2JpQWdJQ0JwWmlBb1lXTjBkV0ZzVm1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJCY25KaGVTQW1KaUJsZUhCbFkzUmxaRlpoYkhWbElHbHVjM1JoYm1ObGIyWWdRWEp5WVhrcFhHNGdJQ0FnSUNCbGVIQmxZM1JCY25KaGVTaGhZM1IxWVd4V1lXeDFaU3dnWlhod1pXTjBaV1JXWVd4MVpTazdYRzRnSUNBZ1pXeHpaU0JwWmlBb1lXTjBkV0ZzVm1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJQWW1wbFkzUWdKaVlnWlhod1pXTjBaV1JXWVd4MVpTQnBibk4wWVc1alpXOW1JRTlpYW1WamRDbGNiaUFnSUNBZ0lHVjRjR1ZqZEU5aWFtVmpkQ2hoWTNSMVlXeFdZV3gxWlN3Z1pYaHdaV04wWldSV1lXeDFaU2s3WEc0Z0lDQWdaV3h6WlNCcFppQW9UblZ0WW1WeUxtbHpSbWx1YVhSbEtHRmpkSFZoYkZaaGJIVmxLU0FtSmlCT2RXMWlaWEl1YVhOR2FXNXBkR1VvWlhod1pXTjBaV1JXWVd4MVpTa3BYRzRnSUNBZ0lDQmxlSEJsWTNSR2JHOWhkQ2hoWTNSMVlXeFdZV3gxWlN3Z1pYaHdaV04wWldSV1lXeDFaU2s3WEc0Z0lDQWdaV3h6WlNCcFppQW9ZV04wZFdGc1ZtRnNkV1VnSVQwZ1pYaHdaV04wWldSV1lXeDFaU2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSWGh3WldOMFpXUWdLQ1I3Wlhod1pXTjBaV1JXWVd4MVpYMHBJR1p2Y2lCclpYa2dKeVI3Wlhod1pXTjBaV1JMWlhsOUp5d2daMjkwSUNna2UyRmpkSFZoYkZaaGJIVmxmU2xnS1R0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYaHdaV04wUVhKeVlYa29ZV04wZFdGc09pQkJjbkpoZVV4cGEyVThZVzU1UGl3Z1pYaHdaV04wWldRNklFRnljbUY1VEdsclpUeGhibmsrS1NCN1hHNGdJR052Ym5OMElHRmpkSFZoYkV4bGJtZDBhQ0E5SUdGamRIVmhiQzVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJR1Y0Y0dWamRHVmtUR1Z1WjNSb0lEMGdaWGh3WldOMFpXUXViR1Z1WjNSb08xeHVYRzRnSUdsbUlDaGhZM1IxWVd4TVpXNW5kR2dnSVQwZ1pYaHdaV04wWldSTVpXNW5kR2dwSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRUZ5Y21GNWN5QmhjbVVnYjJZZ1pHbG1abVZ5Wlc1MElHeGxibWQwYURvZ1lXTjBkV0ZzSUdGeWNtRjVJR3hsYm1kMGFDQnBjeUFrZTJGamRIVmhiRXhsYm1kMGFIMGdZQ0FyWEc0Z0lDQWdJQ0JnWVc1a0lHVjRjR1ZqZEdWa0lHRnljbUY1SUd4bGJtZDBhQ0JwY3lBa2UyVjRjR1ZqZEdWa1RHVnVaM1JvZldBcE8xeHVJQ0I5WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JoWTNSMVlXeE1aVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJR2xtSUNoaFkzUjFZV3hiYVYwZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVNBbUppQmxlSEJsWTNSbFpGdHBYU0JwYm5OMFlXNWpaVzltSUVGeWNtRjVLVnh1SUNBZ0lDQWdaWGh3WldOMFFYSnlZWGtvWVdOMGRXRnNXMmxkTENCbGVIQmxZM1JsWkZ0cFhTazdYRzRnSUNBZ1pXeHpaU0JwWmlBb1lXTjBkV0ZzVzJsZElHbHVjM1JoYm1ObGIyWWdUMkpxWldOMElDWW1JR1Y0Y0dWamRHVmtXMmxkSUdsdWMzUmhibU5sYjJZZ1QySnFaV04wS1Z4dUlDQWdJQ0FnWlhod1pXTjBUMkpxWldOMEtHRmpkSFZoYkZ0cFhTd2daWGh3WldOMFpXUmJhVjBwTzF4dUlDQWdJR1ZzYzJVZ2FXWWdLR0ZqZEhWaGJGdHBYU0FoUFNCbGVIQmxZM1JsWkZ0cFhTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1JYaHdaV04wWldRZ0pIdGxlSEJsWTNSbFpGdHBYWDBnWVhRZ2NHOXphWFJwYjI0Z0pIdHBmU3dnWjI5MElDUjdZV04wZFdGc1cybGRmV0FwTzF4dUlDQjlYRzU5WEc1Y2JpOHFJRVJsWm1sdVpYTWdZU0IwWlhOMElITjFhWFJsTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhkR1ZuYjNKNUtHTmhkR1ZuYjNKNU9pQnpkSEpwYm1jc0lIUmxjM1J6WHpvZ0tDa2dQVDRnZG05cFpDd2diM0IwYVc5dWN6ODZJRU5oZEdWbmIzSjVUM0IwYVc5dWN5azZJSFp2YVdRZ2UxeHVJQ0JqZFhKeVpXNTBRMkYwWldkdmNua2dQU0JqWVhSbFoyOXllVHRjYmlBZ2RHVnpkSE5mS0NrN1hHNGdJR2xtSUNoMFpYTjBjMXRqZFhKeVpXNTBRMkYwWldkdmNubGRLU0I3WEc0Z0lDQWdkR1Z6ZEhOYlkzVnljbVZ1ZEVOaGRHVm5iM0o1WFM1amJHVmhjaUE5SUc5d2RHbHZibk0vTG1Oc1pXRnlJRDgvSUhSeWRXVTdYRzRnSUNBZ2RHVnpkSE5iWTNWeWNtVnVkRU5oZEdWbmIzSjVYUzUwYVcxbGIzVjBJRDBnYjNCMGFXOXVjejh1ZEdsdFpXOTFkRHRjYmlBZ2ZWeHVmVnh1WEc0dktpQkVaV1pwYm1WeklHRWdablZ1WTNScGIyNGdkRzhnWW1VZ1pYaGxZM1YwWldRZ1ltVm1iM0psSUhSb1pTQjBaWE4wY3lCcGJpQjBhR2x6SUdOaGRHVm5iM0o1SUdGeVpTQmxlR1ZqZFhSbFpDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpWldadmNtVW9ZbVZtYjNKbE9pQW9LU0E5UGlCUWNtOXRhWE5sUEhadmFXUStLVG9nZG05cFpDQjdYRzRnSUdsbUlDaDBaWE4wYzF0amRYSnlaVzUwUTJGMFpXZHZjbmxkSUQwOUlIVnVaR1ZtYVc1bFpDbGNiaUFnSUNCMFpYTjBjMXRqZFhKeVpXNTBRMkYwWldkdmNubGRJRDBnZTMwN1hHNGdJSFJsYzNSelcyTjFjbkpsYm5SRFlYUmxaMjl5ZVYwdVltVm1iM0psSUQwZ1ltVm1iM0psTzF4dWZWeHVYRzR2S2lCRVpXWnBibVZ6SUdFZ1puVnVZM1JwYjI0Z2RHOGdZbVVnWlhobFkzVjBaV1FnWVdaMFpYSWdkR2hsSUhSbGMzUnpJR2x1SUhSb2FYTWdZMkYwWldkdmNua2dZWEpsSUdWNFpXTjFkR1ZrTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHRm1kR1Z5S0dGbWRHVnlPaUFvS1NBOVBpQlFjbTl0YVhObFBIWnZhV1ErS1RvZ2RtOXBaQ0I3WEc0Z0lHbG1JQ2gwWlhOMGMxdGpkWEp5Wlc1MFEyRjBaV2R2Y25sZElEMDlJSFZ1WkdWbWFXNWxaQ2xjYmlBZ0lDQjBaWE4wYzF0amRYSnlaVzUwUTJGMFpXZHZjbmxkSUQwZ2UzMDdYRzRnSUhSbGMzUnpXMk4xY25KbGJuUkRZWFJsWjI5eWVWMHVZV1owWlhJZ1BTQmhablJsY2p0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWVdSa1RtRnRaWE53WVdObEtITTZJSE4wY21sdVp5d2daam9nUkVjdVJuVnVZeWs2SUhOMGNtbHVaeUI3WEc0Z0lISmxkSFZ5YmlCekxuSmxjR3hoWTJVb2JtVjNJRkpsWjBWNGNDaG1MbTVoYldVc0lDZG5hU2NwTENCbUxtNXhUbUZ0WlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQnBibWwwUVhWMGIxUmxjM1J6S0hCaFkydGhaMlZKWkRvZ2MzUnlhVzVuTENCdGIyUjFiR1UvT2lCaGJua3BJSHRjYmlBZ2FXWWdLSGRoYzFKbFoybHpkR1Z5WldSYmNHRmphMkZuWlVsa1hTa2djbVYwZFhKdU8xeHVJQ0JqYjI1emRDQnRiMlIxYkdWVVpYTjBjeUE5SUcxdlpIVnNaU0EvSUcxdlpIVnNaUzUwWlhOMGN5QTZJSFJsYzNSek8xeHVJQ0JwWmlBb2JXOWtkV3hsVkdWemRITmJZWFYwYjFSbGMzUnpRMkYwVG1GdFpWMGdJVDA5SUhWdVpHVm1hVzVsWkNCOGZGeHVJQ0FnSUU5aWFtVmpkQzVyWlhsektHMXZaSFZzWlZSbGMzUnpLUzVtYVc1a0tDaGpLU0E5UGlCakxuTjBZWEowYzFkcGRHZ29ZWFYwYjFSbGMzUnpRMkYwVG1GdFpTa3BLU0I3WEc0Z0lDQWdkMkZ6VW1WbmFYTjBaWEpsWkZ0d1lXTnJZV2RsU1dSZElEMGdkSEoxWlR0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JpQWdZMjl1YzNRZ2JXOWtkV3hsUVhWMGIxUmxjM1J6SUQwZ1cxMDdYRzRnSUdOdmJuTjBJSEJoWTJ0R2RXNWpkR2x2Ym5NZ1BTQmhkMkZwZENCbmNtOXJMbVJoY0drdVpuVnVZM1JwYjI1ekxtWnBiSFJsY2loZ2NHRmphMkZuWlM1cFpDQTlJRndpSkh0d1lXTnJZV2RsU1dSOVhDSmdLUzVzYVhOMEtDazdYRzRnSUdOdmJuTjBJR2x1YVhSeklEMGdjR0ZqYTBaMWJtTjBhVzl1Y3k1bWFXeDBaWElvS0dZcElEMCtJR1l1YUdGelZHRm5LQ2RwYm1sMFZHVnpkSE1uS1NrN1hHNGdJR2xtSUNocGJtbDBjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR1lnYjJZZ2FXNXBkSE1wWEc0Z0lDQWdJQ0JoZDJGcGRDQm1MbUZ3Y0d4NUtDazdYRzRnSUgxY2JpQWdZMjl1YzNRZ2NtVm5JRDBnYm1WM0lGSmxaMFY0Y0NndmMydHBjRHBjWEhNcUtGdGVMRnhjYzEwcktYeDNZV2wwT2x4Y2N5b29YRnhrS3lsOFkyRjBPbHhjY3lvb1cxNHNYRnh6WFNzcEwyY3BPMXh1SUNCbWIzSWdLR052Ym5OMElHWWdiMllnY0dGamEwWjFibU4wYVc5dWN5a2dlMXh1SUNBZ0lHTnZibk4wSUhSbGMzUnpJRDBnWmk1dmNIUnBiMjV6V3lkMFpYTjBKMTA3WEc0Z0lDQWdhV1lnS0NFb2RHVnpkSE1nSmlZZ1FYSnlZWGt1YVhOQmNuSmhlU2gwWlhOMGN5a2dKaVlnZEdWemRITXViR1Z1WjNSb0tTa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBaWE4wY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2NtVnpJRDBnS0hSbGMzUnpXMmxkSUdGeklITjBjbWx1WnlrdWJXRjBZMmhCYkd3b2NtVm5LVHRjYmlBZ0lDQWdJR052Ym5OMElHMWhjRG9nZTNOcmFYQS9PaUJ6ZEhKcGJtY3NJSGRoYVhRL09pQnVkVzFpWlhJc0lHTmhkRDg2SUhOMGNtbHVaMzBnUFNCN2ZUdGNiaUFnSUNBZ0lFRnljbUY1TG1aeWIyMG9jbVZ6S1M1bWIzSkZZV05vS0NoaGNuSXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0Z5Y2xzd1hTNXpkR0Z5ZEhOWGFYUm9LQ2R6YTJsd0p5a3BJRzFoY0ZzbmMydHBjQ2RkSUQwZ1lYSnlXekZkTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoaGNuSmJNRjB1YzNSaGNuUnpWMmwwYUNnbmQyRnBkQ2NwS1NCdFlYQmJKM2RoYVhRblhTQTlJSEJoY25ObFNXNTBLR0Z5Y2xzeVhTazdYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR0Z5Y2xzd1hTNXpkR0Z5ZEhOWGFYUm9LQ2RqWVhRbktTa2diV0Z3V3lkallYUW5YU0E5SUdGeWNsc3pYVHRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnWTI5dWMzUWdkR1Z6ZENBOUlHNWxkeUJVWlhOMEtHRjFkRzlVWlhOMGMwTmhkRTVoYldVc0lIUmxjM1J6TG14bGJtZDBhQ0E5UFQwZ01TQS9JR1l1Ym1GdFpTQTZJR0FrZTJZdWJtRnRaWDBnSkh0cElDc2dNWDFnTENCaGMzbHVZeUFvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElISmxjeUE5SUdGM1lXbDBJR2R5YjJzdVpuVnVZM1JwYjI1ekxtVjJZV3dvWVdSa1RtRnRaWE53WVdObEtIUmxjM1J6VzJsZExDQm1LU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRZWEF1ZDJGcGRDa2dZWGRoYVhRZ1pHVnNZWGtvYldGd0xuZGhhWFFwTzF4dUlDQWdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2JtOHRkR2h5YjNjdGJHbDBaWEpoYkZ4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlISmxjeUE5UFQwZ0oySnZiMnhsWVc0bklDWW1JQ0Z5WlhNcElIUm9jbTkzSUdCR1lXbHNaV1E2SUNSN2RHVnpkSE5iYVYxOUxDQmxlSEJsWTNSbFpDQjBjblZsTENCbmIzUWdKSHR5WlhOOVlEdGNiaUFnSUNBZ0lIMHNJSHR6YTJsd1VtVmhjMjl1T2lCdFlYQXVjMnRwY0gwcE8xeHVJQ0FnSUNBZ2FXWWdLRzFoY0M1allYUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZMkYwT2lCemRISnBibWNnUFNCaGRYUnZWR1Z6ZEhORFlYUk9ZVzFsSUNzZ0p6b2dKeUFySUcxaGNDNWpZWFE3WEc0Z0lDQWdJQ0FnSUhSbGMzUXVZMkYwWldkdmNua2dQU0JqWVhRN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h0YjJSMWJHVlVaWE4wYzF0allYUmRJRDA5UFNCMWJtUmxabWx1WldRcFhHNGdJQ0FnSUNBZ0lDQWdiVzlrZFd4bFZHVnpkSE5iWTJGMFhTQTlJSHQwWlhOMGN6b2dXMTBzSUdOc1pXRnlPaUIwY25WbGZUdGNiaUFnSUNBZ0lDQWdiVzlrZFd4bFZHVnpkSE5iWTJGMFhTNTBaWE4wY3k1d2RYTm9LSFJsYzNRcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2JXOWtkV3hsUVhWMGIxUmxjM1J6TG5CMWMyZ29kR1Z6ZENrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhkaGMxSmxaMmx6ZEdWeVpXUmJjR0ZqYTJGblpVbGtYU0E5SUhSeWRXVTdYRzRnSUdsbUlDZ2hiVzlrZFd4bFFYVjBiMVJsYzNSekxteGxibWQwYUNrZ2NtVjBkWEp1TzF4dUlDQnRiMlIxYkdWVVpYTjBjMXRoZFhSdlZHVnpkSE5EWVhST1lXMWxYU0E5SUh0MFpYTjBjem9nYlc5a2RXeGxRWFYwYjFSbGMzUnpMQ0JqYkdWaGNqb2dkSEoxWlgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQnlkVzVVWlhOMGN5aHZjSFJwYjI1elB6b2dlMk5oZEdWbmIzSjVQem9nYzNSeWFXNW5MQ0IwWlhOMFB6b2djM1J5YVc1bkxDQjBaWE4wUTI5dWRHVjRkRDg2SUZSbGMzUkRiMjUwWlhoMGZTa2dlMXh1SUNCamIyNXpkQ0J3WVdOcllXZGxYeUE5SUdkeWIyc3VablZ1WTNScGIyNXpMbWRsZEVOMWNuSmxiblJEWVd4c0tDay9MbVoxYm1NL0xuQmhZMnRoWjJVN1hHNGdJR0YzWVdsMElHbHVhWFJCZFhSdlZHVnpkSE1vY0dGamEyRm5aVjh1YVdRcE8xeHVJQ0JqYjI1emRDQnlaWE4xYkhSek9pQjdJR05oZEdWbmIzSjVQem9nYzNSeWFXNW5MQ0J1WVcxbFB6b2djM1J5YVc1bkxDQnpkV05qWlhOek9pQmliMjlzWldGdUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2REb2djM1J5YVc1bkxDQnRjem9nYm5WdFltVnlMQ0J6YTJsd2NHVmtPaUJpYjI5c1pXRnVJSDFiWFNBOUlGdGRPMXh1SUNCamIyNXpiMnhsTG14dlp5aGdVblZ1Ym1sdVp5QjBaWE4wYzJBcE8xeHVJQ0J2Y0hScGIyNXpJRDgvUFNCN2ZUdGNiaUFnYjNCMGFXOXVjeUV1ZEdWemRFTnZiblJsZUhRZ1B6ODlJRzVsZHlCVVpYTjBRMjl1ZEdWNGRDZ3BPMXh1SUNCbmNtOXJMbk5vWld4c0xteGhjM1JGY25KdmNpQTlJQ2NuTzF4dUlDQm1iM0lnS0dOdmJuTjBJRnRyWlhrc0lIWmhiSFZsWFNCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3loMFpYTjBjeWtwSUh0Y2JpQWdJQ0JwWmlBb2IzQjBhVzl1Y3o4dVkyRjBaV2R2Y25rZ0lUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JwWmlBb0lXdGxlUzUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29iM0IwYVc5dWN6OHVZMkYwWldkdmNua3VkRzlNYjNkbGNrTmhjMlVvS1NrcFhHNGdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emIyeGxMbXh2WnloZ1UzUmhjblJsWkNBa2UydGxlWDBnWTJGMFpXZHZjbmxnS1R0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2FXWWdLSFpoYkhWbExtSmxabTl5WlNsY2JpQWdJQ0FnSUNBZ1lYZGhhWFFnZG1Gc2RXVXVZbVZtYjNKbEtDazdYRzRnSUNBZ2ZTQmpZWFJqYUNBb2VEb2dZVzU1S1NCN1hHNGdJQ0FnSUNCMllXeDFaUzVpWldadmNtVlRkR0YwZFhNZ1BTQjRMblJ2VTNSeWFXNW5LQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUhRZ1BTQjJZV3gxWlM1MFpYTjBjeUEvUHlCYlhUdGNiaUFnSUNCamIyNXpkQ0J5WlhNZ1BTQmJYVHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVXVZMnhsWVhJcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkQzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQnlaWE11Y0hWemFDaGhkMkZwZENCbGVHVmpWR1Z6ZENoMFcybGRMQ0J2Y0hScGIyNXpQeTUwWlhOMExDQjJZV3gxWlM1MGFXMWxiM1YwTENCd1lXTnJZV2RsWHk1dVlXMWxLU2s3WEc0Z0lDQWdJQ0FnSUdkeWIyc3VjMmhsYkd3dVkyeHZjMlZCYkd3b0tUdGNiaUFnSUNBZ0lDQWdSRWN1UW1Gc2JHOXZiaTVqYkc5elpVRnNiQ2dwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFF1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNBZ0lISmxjeTV3ZFhOb0tHRjNZV2wwSUdWNFpXTlVaWE4wS0hSYmFWMHNJRzl3ZEdsdmJuTS9MblJsYzNRc0lIWmhiSFZsTG5ScGJXVnZkWFFzSUhCaFkydGhaMlZmTG01aGJXVXBLVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnWkdGMFlTQTlJQ2hoZDJGcGRDQlFjbTl0YVhObExtRnNiQ2h5WlhNcEtTNW1hV3gwWlhJb0tHUXBJRDArSUdRdWNtVnpkV3gwSUNFOUlDZHphMmx3Y0dWa0p5azdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJR2xtSUNoMllXeDFaUzVoWm5SbGNpbGNiaUFnSUNBZ0lDQWdZWGRoYVhRZ2RtRnNkV1V1WVdaMFpYSW9LVHRjYmlBZ0lDQjlJR05oZEdOb0lDaDRPaUJoYm5rcElIdGNiaUFnSUNBZ0lIWmhiSFZsTG1GbWRHVnlVM1JoZEhWeklEMGdlQzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJEYkdWaGNpQmhablJsY2lCallYUmxaMjl5ZVZ4dUlDQWdJQzh2SUdkeWIyc3VjMmhsYkd3dVkyeHZjMlZCYkd3b0tUdGNiaUFnSUNBdkx5QkVSeTVDWVd4c2IyOXVMbU5zYjNObFFXeHNLQ2s3WEc0Z0lDQWdhV1lnS0haaGJIVmxMbUZtZEdWeVUzUmhkSFZ6S1Z4dUlDQWdJQ0FnWkdGMFlTNXdkWE5vS0h0allYUmxaMjl5ZVRvZ2EyVjVMQ0J1WVcxbE9pQW5hVzVwZENjc0lISmxjM1ZzZERvZ2RtRnNkV1V1WVdaMFpYSlRkR0YwZFhNc0lITjFZMk5sYzNNNklHWmhiSE5sTENCdGN6b2dNQ3dnYzJ0cGNIQmxaRG9nWm1Gc2MyVjlLVHRjYmlBZ0lDQnBaaUFvZG1Gc2RXVXVZbVZtYjNKbFUzUmhkSFZ6S1Z4dUlDQWdJQ0FnWkdGMFlTNXdkWE5vS0h0allYUmxaMjl5ZVRvZ2EyVjVMQ0J1WVcxbE9pQW5hVzVwZENjc0lISmxjM1ZzZERvZ2RtRnNkV1V1WW1WbWIzSmxVM1JoZEhWekxDQnpkV05qWlhOek9pQm1ZV3h6WlN3Z2JYTTZJREFzSUhOcmFYQndaV1E2SUdaaGJITmxmU2s3WEc0Z0lDQWdjbVZ6ZFd4MGN5NXdkWE5vS0M0dUxtUmhkR0VwTzF4dUlDQjlYRzRnSUdsbUlDaHZjSFJwYjI1ekxuUmxjM1JEYjI1MFpYaDBMbU5oZEdOb1ZXNW9ZVzVrYkdWa0tTQjdYRzRnSUNBZ1lYZGhhWFFnWkdWc1lYa29NVEF3TUNrN1hHNGdJQ0FnYVdZZ0tHZHliMnN1YzJobGJHd3ViR0Z6ZEVWeWNtOXlMbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0FnSUhKbGMzVnNkSE11Y0hWemFDaDdYRzRnSUNBZ0lDQWdJR05oZEdWbmIzSjVPaUFuVlc1b1lXNWtiR1ZrSUdWNFkyVndkR2x2Ym5NbkxGeHVJQ0FnSUNBZ0lDQnVZVzFsT2lBblpYaGpaWEIwYVc5dWN5Y3NYRzRnSUNBZ0lDQWdJSEpsYzNWc2REb2daM0p2YXk1emFHVnNiQzVzWVhOMFJYSnliM0lzSUhOMVkyTmxjM002SUdaaGJITmxMQ0J0Y3pvZ01Dd2djMnRwY0hCbFpEb2dabUZzYzJWY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCcFppQW9iM0IwYVc5dWN5NTBaWE4wUTI5dWRHVjRkQzV5WlhCdmNuUXBJSHRjYmlBZ0lDQmpiMjV6ZENCc2IyZG5aWElnUFNCdVpYY2dSRWN1VEc5bloyVnlLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2MzVmpZMlZ6YzJaMWJDQTlJSEpsYzNWc2RITXVabWxzZEdWeUtDaHlLU0E5UGlCeUxuTjFZMk5sYzNNcExteGxibWQwYUR0Y2JpQWdJQ0JqYjI1emRDQnphMmx3Y0dWa0lEMGdjbVZ6ZFd4MGN5NW1hV3gwWlhJb0tISXBJRDArSUhJdWMydHBjSEJsWkNrdWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElHWmhhV3hsWkNBOUlISmxjM1ZzZEhNdVptbHNkR1Z5S0NoeUtTQTlQaUFoY2k1emRXTmpaWE56S1R0Y2JpQWdJQ0JqYjI1emRDQmtaWE5qY21sd2RHbHZiaUE5SUNkUVlXTnJZV2RsSUVCd1lXTnJZV2RsSUhSbGMzUmxaRG9nUUhOMVkyTmxjM05tZFd3Z2MzVmpZMlZ6YzJaMWJDd2dRSE5yYVhCd1pXUWdjMnRwY0hCbFpDd2dRR1poYVd4bFpDQm1ZV2xzWldRZ2RHVnpkSE1uTzF4dUlDQWdJR052Ym5OMElIQmhjbUZ0Y3lBOUlIdGNiaUFnSUNBZ0lITjFZMk5sYzNObWRXdzZJSE4xWTJObGMzTm1kV3dzWEc0Z0lDQWdJQ0J6YTJsd2NHVmtPaUJ6YTJsd2NHVmtMRnh1SUNBZ0lDQWdabUZwYkdWa09pQm1ZV2xzWldRdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnY0dGamEyRm5aVG9nY0dGamEyRm5aVjljYmlBZ0lDQjlPMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdjaUJ2WmlCbVlXbHNaV1FwSUU5aWFtVmpkQzVoYzNOcFoyNG9jR0Z5WVcxekxDQjdXMkFrZTNJdVkyRjBaV2R2Y25sOUlId2dKSHR5TG01aGJXVjlZRjA2SUhJdWNtVnpkV3gwZlNrN1hHNGdJQ0FnYkc5bloyVnlMbXh2Wnloa1pYTmpjbWx3ZEdsdmJpd2djR0Z5WVcxekxDQW5jR0ZqYTJGblpTMTBaWE4wWldRbktUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2NtVnpkV3gwY3p0Y2JuMWNibHh1WVhONWJtTWdablZ1WTNScGIyNGdaWGhsWTFSbGMzUW9kRG9nVkdWemRDd2djSEpsWkdsallYUmxPaUJ6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1FzSUdOaGRHVm5iM0o1VkdsdFpXOTFkRDg2SUc1MWJXSmxjaXdnY0dGamEyRm5aVTVoYldVL09pQnpkSEpwYm1jcElIdGNiaUFnYkdWMElISTZJSHNnWTJGMFpXZHZjbmsvT2lCemRISnBibWNzSUc1aGJXVS9PaUJ6ZEhKcGJtY3NJSE4xWTJObGMzTTZJR0p2YjJ4bFlXNHNJSEpsYzNWc2REb2djM1J5YVc1bkxDQnRjem9nYm5WdFltVnlMQ0J6YTJsd2NHVmtPaUJpYjI5c1pXRnVJSDA3WEc0Z0lHTnZibk4wSUdacGJIUmxjaUE5SUhCeVpXUnBZMkYwWlNBaFBTQjFibVJsWm1sdVpXUWdKaVlnS0NGMExtNWhiV1V1ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LSEJ5WldScFkyRjBaUzUwYjB4dmQyVnlRMkZ6WlNncEtTazdYRzRnSUdOdmJuTjBJSE5yYVhBZ1BTQjBMbTl3ZEdsdmJuTS9Mbk5yYVhCU1pXRnpiMjRnZkh3Z1ptbHNkR1Z5TzF4dUlDQmpiMjV6ZENCemEybHdVbVZoYzI5dUlEMGdabWxzZEdWeUlEOGdKM05yYVhCd1pXUW5JRG9nZEM1dmNIUnBiMjV6UHk1emEybHdVbVZoYzI5dU8xeHVJQ0JwWmlBb0lYTnJhWEFwWEc0Z0lDQWdZMjl1YzI5c1pTNXNiMmNvWUZOMFlYSjBaV1FnSkh0MExtTmhkR1ZuYjNKNWZTQWtlM1F1Ym1GdFpYMWdLVHRjYmlBZ1kyOXVjM1FnYzNSaGNuUWdQU0J1WlhjZ1JHRjBaU2dwTzF4dUlDQjBjbmtnZTF4dUlDQWdJR2xtSUNoemEybHdLU0I3WEc0Z0lDQWdJQ0J5SUQwZ2UzTjFZMk5sYzNNNklIUnlkV1VzSUhKbGMzVnNkRG9nYzJ0cGNGSmxZWE52YmlFc0lHMXpPaUF3TENCemEybHdjR1ZrT2lCMGNuVmxmVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2JHVjBJSFJwYldWdmRYUmZJRDBnZEM1dmNIUnBiMjV6UHk1MGFXMWxiM1YwSUQwOVBTQlRWRUZPUkVGU1ZGOVVTVTFGVDFWVUlDWW1YRzRnSUNBZ0lDQWdJR05oZEdWbmIzSjVWR2x0Wlc5MWRDQS9JR05oZEdWbmIzSjVWR2x0Wlc5MWRDQTZJSFF1YjNCMGFXOXVjejh1ZEdsdFpXOTFkQ0U3WEc0Z0lDQWdJQ0IwYVcxbGIzVjBYeUE5SUVSSExsUmxjM1F1YVhOSmJrSmxibU5vYldGeWF5QW1KaUIwYVcxbGIzVjBYeUE5UFQwZ1UxUkJUa1JCVWxSZlZFbE5SVTlWVkNBL0lFSkZUa05JVFVGU1MxOVVTVTFGVDFWVUlEb2dkR2x0Wlc5MWRGODdYRzRnSUNBZ0lDQnlJRDBnZTNOMVkyTmxjM002SUhSeWRXVXNJSEpsYzNWc2REb2dZWGRoYVhRZ2RHbHRaVzkxZENoMExuUmxjM1FzSUhScGJXVnZkWFJmS1NBL1B5QW5UMHNuTENCdGN6b2dNQ3dnYzJ0cGNIQmxaRG9nWm1Gc2MyVjlPMXh1SUNBZ0lIMWNiaUFnZlNCallYUmphQ0FvZURvZ1lXNTVLU0I3WEc0Z0lDQWdjaUE5SUh0emRXTmpaWE56T2lCbVlXeHpaU3dnY21WemRXeDBPaUI0TG5SdlUzUnlhVzVuS0Nrc0lHMXpPaUF3TENCemEybHdjR1ZrT2lCbVlXeHpaWDA3WEc0Z0lIMWNiaUFnWTI5dWMzUWdjM1J2Y0NBOUlHNWxkeUJFWVhSbEtDazdYRzRnSUM4dklFQjBjeTFwWjI1dmNtVmNiaUFnY2k1dGN5QTlJSE4wYjNBZ0xTQnpkR0Z5ZER0Y2JseHVJQ0JwWmlBb0lYTnJhWEFwWEc0Z0lDQWdZMjl1YzI5c1pTNXNiMmNvWUVacGJtbHphR1ZrSUNSN2RDNWpZWFJsWjI5eWVYMGdKSHQwTG01aGJXVjlJR1p2Y2lBa2UzSXViWE45SUcxellDazdYRzRnSUhJdVkyRjBaV2R2Y25rZ1BTQjBMbU5oZEdWbmIzSjVPMXh1SUNCeUxtNWhiV1VnUFNCMExtNWhiV1U3WEc0Z0lHbG1JQ2doWm1sc2RHVnlLU0I3WEc0Z0lDQWdaM0p2YXk1c2IyY3VkWE5oWjJVb1lDUjdjR0ZqYTJGblpVNWhiV1Y5T2lBa2UzUXVZMkYwWldkdmNubDlPaUFrZTNRdWJtRnRaWDFnTEZ4dUlDQWdJQ0FnZXlkemRXTmpaWE56SnpvZ2NpNXpkV05qWlhOekxDQW5jbVZ6ZFd4MEp6b2djaTV5WlhOMWJIUXNJQ2R0Y3ljNklISXViWE1zSUNkemEybHdjR1ZrSnpvZ2NpNXphMmx3Y0dWa0xGeHVJQ0FnSUNBZ0lDQW5kSGx3WlNjNklDZHdZV05yWVdkbEp5d2djR0ZqYTJGblpVNWhiV1VzSUNkallYUmxaMjl5ZVNjNklIUXVZMkYwWldkdmNua3NJQ2QwWlhOMEp6b2dkQzV1WVcxbGZTeGNiaUFnSUNBZ0lHQjBaWE4wTFhCaFkydGhaMlVnSkh0d1lXTnJZV2RsVG1GdFpYMDZJQ1I3ZEM1allYUmxaMjl5ZVgwNklDUjdkQzV1WVcxbGZXQXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnlPMXh1ZlZ4dVhHNHZLaUJYWVdsMGN5QmJiWE5kSUcxcGJHeHBjMlZqYjI1a2N5QXFMMXh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHUmxiR0Y1S0cxek9pQnVkVzFpWlhJcElIdGNiaUFnWVhkaGFYUWdibVYzSUZCeWIyMXBjMlVvS0hJcElEMCtJSE5sZEZScGJXVnZkWFFvY2l3Z2JYTXBLVHRjYm4xY2JseHVaWGh3YjNKMElHRnplVzVqSUdaMWJtTjBhVzl1SUdGM1lXbDBRMmhsWTJzb1kyaGxZMnRJWVc1a2JHVnlPaUFvS1NBOVBpQmliMjlzWldGdUxGeHVJQ0JsY25KdmNqb2djM1J5YVc1bklEMGdKMVJwYldWdmRYUWdaWGhqWldWa1pXUW5MQ0IzWVdsME9pQnVkVzFpWlhJZ1BTQTFNREFzSUdsdWRHVnlkbUZzT2lCdWRXMWlaWElnUFNBMU1DazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnUFQ0Z2UxeHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb0tDa2dQVDRnZTF4dUlDQWdJQ0FnWTJ4bFlYSkpiblJsY25aaGJDaHBiblJsY25aaGJFbGtLVHRjYmlBZ0lDQWdJSEpsYW1WamRDaHVaWGNnUlhKeWIzSW9aWEp5YjNJcEtUdGNiaUFnSUNCOUxDQjNZV2wwS1R0Y2JpQWdJQ0F2THlCQWRITXRhV2R1YjNKbFhHNGdJQ0FnWTI5dWMzUWdhVzUwWlhKMllXeEpaRG9nVkdsdFpXOTFkQ0E5SUhObGRFbHVkR1Z5ZG1Gc0tDZ3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaGphR1ZqYTBoaGJtUnNaWElvS1NrZ2UxeHVJQ0FnSUNBZ0lDQmpiR1ZoY2tsdWRHVnlkbUZzS0dsdWRHVnlkbUZzU1dRcE8xeHVJQ0FnSUNBZ0lDQnlaWE52YkhabEtDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTd2dhVzUwWlhKMllXd3BPMXh1SUNCOUtUdGNibjFjYmx4dVlYTjVibU1nWm5WdVkzUnBiMjRnZEdsdFpXOTFkQ2htZFc1ak9pQW9LU0E5UGlCUWNtOXRhWE5sUEdGdWVUNHNJSFJsYzNSVWFXMWxiM1YwT2lCdWRXMWlaWElwT2lCUWNtOXRhWE5sUEdGdWVUNGdlMXh1SUNCc1pYUWdkR2x0Wlc5MWREb2dWR2x0Wlc5MWRDQjhJRzUxYkd3Z1BTQnVkV3hzTzF4dUlDQmpiMjV6ZENCMGFXMWxiM1YwVUhKdmJXbHpaU0E5SUc1bGR5QlFjbTl0YVhObFBHRnVlVDRvS0Y4c0lISmxhbVZqZENrZ1BUNGdlMXh1SUNBZ0lDOHZRSFJ6TFdsbmJtOXlaVnh1SUNBZ0lIUnBiV1Z2ZFhRZ1BTQnpaWFJVYVcxbGIzVjBLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQndjbVZtWlhJdGNISnZiV2x6WlMxeVpXcGxZM1F0WlhKeWIzSnpYRzRnSUNBZ0lDQnlaV3BsWTNRb0owVllSVU5WVkVsUFRpQlVTVTFGVDFWVUp5azdYRzRnSUNBZ2ZTd2dkR1Z6ZEZScGJXVnZkWFFwTzF4dUlDQjlLVHRjYmlBZ2RISjVJSHRjYmlBZ0lDQnlaWFIxY200Z1lYZGhhWFFnVUhKdmJXbHpaUzV5WVdObEtGdG1kVzVqS0Nrc0lIUnBiV1Z2ZFhSUWNtOXRhWE5sWFNrN1hHNGdJSDBnWm1sdVlXeHNlU0I3WEc0Z0lDQWdhV1lnS0hScGJXVnZkWFFwWEc0Z0lDQWdJQ0JqYkdWaGNsUnBiV1Z2ZFhRb2RHbHRaVzkxZENrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpSR2xoYkc5blVISmxjMlZ1ZENoa2FXRnNiMmRVYVhSc1pUb2djM1J5YVc1bktUb2dZbTl2YkdWaGJpQjdYRzRnSUdOdmJuTjBJR1JwWVd4dlozTWdQU0JFUnk1RWFXRnNiMmN1WjJWMFQzQmxia1JwWVd4dlozTW9LVHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmthV0ZzYjJkekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdhV1lnS0dScFlXeHZaM05iYVYwdWRHbDBiR1VnUFQwZ1pHbGhiRzluVkdsMGJHVXBYRzRnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYmk4cUtpQkZlSEJsWTNSeklHRnVJR0Z6ZVc1amFISnZibTkxY3lCN1FHeHBibXNnWVdOMGFXOXVmU0IwYnlCMGFISnZkeUJoYmlCbGVHTmxjSFJwYjI0dUlGVnpaU0I3UUd4cGJtc2dZMmhsWTJ0OUlIUnZJSEJsY21admNtMWNiaUFxSUdSbFpYQmxjaUJwYm5Od1pXTjBhVzl1SUc5bUlIUm9aU0JsZUdObGNIUnBiMjRnYVdZZ2JtVmpaWE56WVhKNUxseHVJQ29nUUhCaGNtRnRJQ0I3Wm5WdVkzUnBiMjRvS1RvZ1VISnZiV2x6WlR4MmIybGtQbjBnWVdOMGFXOXVYRzRnS2lCQWNHRnlZVzBnSUh0bWRXNWpkR2x2YmloaGJua3BPaUJpYjI5c1pXRnVmU0JqYUdWamExeHVJQ29nUUhKbGRIVnliaUI3VUhKdmJXbHpaVHgyYjJsa1BuMWNiaUFxTDF4dVpYaHdiM0owSUdGemVXNWpJR1oxYm1OMGFXOXVJR1Y0Y0dWamRFVjRZMlZ3ZEdsdmJrRnplVzVqS0dGamRHbHZiam9nS0NrZ1BUNGdVSEp2YldselpUeDJiMmxrUGl4Y2JpQWdZMmhsWTJzL09pQW9aWGhqWlhCMGFXOXVPaUJoYm5rcElEMCtJR0p2YjJ4bFlXNHBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnYkdWMElHTmhkV2RvZERvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTzF4dUlDQnNaWFFnWTJobFkydGxaRG9nWW05dmJHVmhiaUE5SUdaaGJITmxPMXh1SUNCMGNua2dlMXh1SUNBZ0lHRjNZV2wwSUdGamRHbHZiaWdwTzF4dUlDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdZMkYxWjJoMElEMGdkSEoxWlR0Y2JpQWdJQ0JqYUdWamEyVmtJRDBnSVdOb1pXTnJJSHg4SUdOb1pXTnJLR1VwTzF4dUlDQjlJR1pwYm1Gc2JIa2dlMXh1SUNBZ0lHbG1JQ2doWTJGMVoyaDBLVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEJiaUJsZUdObGNIUnBiMjRnYVhNZ1pYaHdaV04wWldRZ1luVjBJRzV2ZENCMGFISnZkMjRuS1R0Y2JpQWdJQ0JwWmlBb0lXTm9aV05yWldRcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBGdUlHVjRjR1ZqZEdWa0lHVjRZMlZ3ZEdsdmJpQnBjeUIwYUhKdmQyNHNJR0oxZENCcGRDQmtiMlZ6SUc1dmRDQnpZWFJwYzJaNUlIUm9aU0JqYjI1a2FYUnBiMjRuS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlGVnVhWFpsY25OaGJDQjBaWE4wSUdadmNpQjJhV1YzWlhKekxpQkpkQ0J6WldGeVkyZ2dkbWxsZDJWeWN5QnBiaUJFVDAwZ1lua2dkR0ZuY3pvZ1kyRnVkbUZ6TENCemRtY3NJR2x0Wnl3Z2FXNXdkWFFzSUdneExDQmhYRzRnS2lCQWNHRnlZVzBnSUh0emRISnBibWQ5SUhZZ1ZtbGxkMlZ5SUc1aGJXVmNiaUFxSUVCd1lYSmhiU0FnZTBSSExrUmhkR0ZHY21GdFpYMGdaR1lnUkdGMFlXWnlZVzFsSUhSdklIVnpaUzRnVTJodmRXeGtJR2hoZG1VZ1lYUWdiR1ZoYzNRZ015QnliM2R6WEc0Z0tpQkFjR0Z5WVcwZ0lIdGliMjlzWldGdWZTQnZjSFJwYjI1ekxtUmxkR1ZqZEZObGJXRnVkR2xqVkhsd1pYTWdVM0JsWTJsbWVTQjNhR1YwYUdWeUlIUnZJR1JsZEdWamRDQnpaVzFoYm5ScFl5QjBlWEJsY3lCdmNpQnViM1JjYmlBcUlFQndZWEpoYlNBZ2UySnZiMnhsWVc1OUlHOXdkR2x2Ym5NdWNtVmhaRTl1YkhrZ1NXWWdjMlYwSUhSdklIUnlkV1VzSUhSb1pTQmtZWFJoWm5KaGJXVWdkMmxzYkNCdWIzUWdZbVVnYlc5a2FXWnBaV1FnWkhWeWFXNW5JSFJvWlNCMFpYTjBYRzRnS2lCQWNHRnlZVzBnSUh0dlltcGxZM1I5SUc5d2RHbHZibk1nVEdsemRDQnZaaUJ2Y0hScGIyNXpJQ2h2Y0hScGIyNWhiQ2xjYmlBcUlFQnlaWFIxY200Z2UxQnliMjFwYzJVOGRtOXBaRDU5SUZSb1pTQjBaWE4wSUdseklHTnZibk5wWkdWeVpXUWdjM1ZqWTJWemMyWjFiQ0JwWmlCcGRDQmpiMjF3YkdWMFpYTWdkMmwwYUc5MWRDQmxjbkp2Y25OY2JpQXFMMXh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlIUmxjM1JXYVdWM1pYSW9kam9nYzNSeWFXNW5MQ0JrWmpvZ1JFY3VSR0YwWVVaeVlXMWxMRnh1SUNCdmNIUnBiMjV6UHpvZ2UyUmxkR1ZqZEZObGJXRnVkR2xqVkhsd1pYTS9PaUJpYjI5c1pXRnVMQ0J5WldGa1QyNXNlVDg2SUdKdmIyeGxZVzU5S1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lHbG1JQ2h2Y0hScGIyNXpQeTVrWlhSbFkzUlRaVzFoYm5ScFkxUjVjR1Z6S1NCaGQyRnBkQ0JuY205ckxtUmhkR0V1WkdWMFpXTjBVMlZ0WVc1MGFXTlVlWEJsY3loa1ppazdYRzRnSUdOdmJuTjBJSFIySUQwZ1ozSnZheTV6YUdWc2JDNWhaR1JVWVdKc1pWWnBaWGNvWkdZcE8xeHVJQ0JqYjI1emRDQjJhV1YzWlhKT1lXMWxJRDBnWUZ0dVlXMWxQWFpwWlhkbGNpMGtlM1l1Y21Wd2JHRmpaU2d2WEZ4ekt5OW5MQ0FuTFNjcGZTQnBYV0E3WEc0Z0lHeGxkQ0J6Wld4bFkzUnZjaUE5SUdBa2UzWnBaWGRsY2s1aGJXVjlJR05oYm5aaGN5d2tlM1pwWlhkbGNrNWhiV1Y5SUhOMlp5d2tlM1pwWlhkbGNrNWhiV1Y5SUdsdFp5eGNiaUFnSUNBa2UzWnBaWGRsY2s1aGJXVjlJR2x1Y0hWMExDUjdkbWxsZDJWeVRtRnRaWDBnYURFc0pIdDJhV1YzWlhKT1lXMWxmU0JoWUR0Y2JpQWdZMjl1YzNRZ2NtVnpJRDBnVzEwN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnYkdWMElIWnBaWGRsY2lBOUlIUjJMbUZrWkZacFpYZGxjaWgyS1R0Y2JpQWdJQ0JoZDJGcGRDQmhkMkZwZEVOb1pXTnJLQ2dwSUQwK0lHUnZZM1Z0Wlc1MExuRjFaWEo1VTJWc1pXTjBiM0lvYzJWc1pXTjBiM0lwSUNFOVBTQnVkV3hzTEZ4dUlDQWdJQ0FnSjJOaGJtNXZkQ0JzYjJGa0lIWnBaWGRsY2ljc0lETXdNREFwTzF4dUlDQWdJR052Ym5OMElIUmhaeUE5SUdSdlkzVnRaVzUwTG5GMVpYSjVVMlZzWldOMGIzSW9jMlZzWldOMGIzSXBQeTUwWVdkT1lXMWxPMXh1SUNBZ0lISmxjeTV3ZFhOb0tFRnljbUY1TG1aeWIyMG9kSFl1ZG1sbGQyVnljeWt1YkdWdVozUm9LVHRjYmlBZ0lDQnBaaUFvSVc5d2RHbHZibk0vTG5KbFlXUlBibXg1S1NCN1hHNGdJQ0FnSUNCQmNuSmhlUzVtY205dEtHUm1Mbkp2ZHlnd0tTNWpaV3hzY3lrdVptOXlSV0ZqYUNnb1l6cGhibmtwSUQwK0lHTXVkbUZzZFdVZ1BTQnVkV3hzS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJRzUxYlNBOUlHUm1Mbkp2ZDBOdmRXNTBJRHdnTWpBZ1B5Qk5ZWFJvTG1ac2IyOXlLR1JtTG5KdmQwTnZkVzUwSUM4Z01pa2dPaUF4TUR0Y2JpQWdJQ0FnSUdSbUxuSnZkM011YzJWc1pXTjBLQ2h5YjNjNklFUkhMbEp2ZHlrZ1BUNGdjbTkzTG1sa2VDQStQU0F3SUNZbUlISnZkeTVwWkhnZ1BDQnVkVzBwTzF4dUlDQWdJQ0FnWVhkaGFYUWdaR1ZzWVhrb05UQXBPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SUc1MWJUc2dhU0E4SUc1MWJTQXFJREk3SUdrckt5a2daR1l1Wm1sc2RHVnlMbk5sZENocExDQm1ZV3h6WlNrN1hHNGdJQ0FnSUNCaGQyRnBkQ0JrWld4aGVTZzFNQ2s3WEc0Z0lDQWdJQ0JrWmk1amRYSnlaVzUwVW05M1NXUjRJRDBnTVR0Y2JpQWdJQ0FnSUdOdmJuTjBJR1JtTVNBOUlHUm1MbU5zYjI1bEtDazdYRzRnSUNBZ0lDQmtaaTVqYjJ4MWJXNXpMbTVoYldWektDa3VjMnhwWTJVb01Dd2dUV0YwYUM1alpXbHNLR1JtTG1OdmJIVnRibk11YkdWdVozUm9JQzhnTWlrcExtWnZja1ZoWTJnb0tHTTZJR0Z1ZVNrZ1BUNGdaR1l1WTI5c2RXMXVjeTV5WlcxdmRtVW9ZeWtwTzF4dUlDQWdJQ0FnWVhkaGFYUWdaR1ZzWVhrb01UQXdLVHRjYmlBZ0lDQWdJSFIyTG1SaGRHRkdjbUZ0WlNBOUlHUm1NVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnYjNCMGJuTWdQU0IyYVdWM1pYSXVaMlYwVDNCMGFXOXVjeWgwY25WbEtTNXNiMjlyTzF4dUlDQWdJR052Ym5OMElIQnliM0J6SUQwZ2RtbGxkMlZ5TG1kbGRGQnliM0JsY25ScFpYTW9LVHRjYmlBZ0lDQmpiMjV6ZENCdVpYZFFjbTl3Y3pvZ1VtVmpiM0prUEhOMGNtbHVaeXdnYzNSeWFXNW5JSHdnWW05dmJHVmhiajRnUFNCN2ZUdGNiaUFnSUNCUFltcGxZM1F1YTJWNWN5aHZjSFJ1Y3lrdVptbHNkR1Z5S0NocktTQTlQaUIwZVhCbGIyWWdiM0IwYm5OYmExMGdQVDA5SUNkaWIyOXNaV0Z1SnlrdVptOXlSV0ZqYUNnb2F5a2dQVDRnYm1WM1VISnZjSE5iYTEwZ1BTQWhiM0IwYm5OYmExMHBPMXh1SUNBZ0lIQnliM0J6TG1acGJIUmxjaWdvY0RvZ1JFY3VVSEp2Y0dWeWRIa3BJRDArSUhBdVkyaHZhV05sY3lBaFBUMGdiblZzYkNsY2JpQWdJQ0FnSUM1bWIzSkZZV05vS0Nod09pQkVSeTVRY205d1pYSjBlU2tnUFQ0Z2JtVjNVSEp2Y0hOYmNDNXVZVzFsWFNBOUlIQXVZMmh2YVdObGN5NW1hVzVrS0Noak9pQmhibmtwSUQwK0lHTWdJVDA5SUc5d2RHNXpXM0F1Ym1GdFpWMHBJU2s3WEc0Z0lDQWdkbWxsZDJWeUxuTmxkRTl3ZEdsdmJuTW9ibVYzVUhKdmNITXBPMXh1SUNBZ0lHRjNZV2wwSUdSbGJHRjVLRE13TUNrN1hHNGdJQ0FnWTI5dWMzUWdiR0Y1YjNWMElEMGdkSFl1YzJGMlpVeGhlVzkxZENncE8xeHVJQ0FnSUdOdmJuTjBJRzlzWkZCeWIzQnpJRDBnZG1sbGQyVnlMbWRsZEU5d2RHbHZibk1vS1M1c2IyOXJPMXh1SUNBZ0lIUjJMbkpsYzJWMFRHRjViM1YwS0NrN1hHNGdJQ0FnY21WekxuQjFjMmdvUVhKeVlYa3Vabkp2YlNoMGRpNTJhV1YzWlhKektTNXNaVzVuZEdncE8xeHVJQ0FnSUhSMkxteHZZV1JNWVhsdmRYUW9iR0Y1YjNWMEtUdGNiaUFnSUNCelpXeGxZM1J2Y2lBOUlHQWtlM1pwWlhkbGNrNWhiV1Y5SUNSN2RHRm5mV0E3WEc0Z0lDQWdZWGRoYVhRZ1lYZGhhWFJEYUdWamF5Z29LU0E5UGlCa2IyTjFiV1Z1ZEM1eGRXVnllVk5sYkdWamRHOXlLSE5sYkdWamRHOXlLU0FoUFQwZ2JuVnNiQ3hjYmlBZ0lDQWdJQ2RqWVc1dWIzUWdiRzloWkNCMmFXVjNaWElnWm5KdmJTQnNZWGx2ZFhRbkxDQXpNREF3S1R0Y2JpQWdJQ0J5WlhNdWNIVnphQ2hCY25KaGVTNW1jbTl0S0hSMkxuWnBaWGRsY25NcExteGxibWQwYUNrN1hHNGdJQ0FnZG1sbGQyVnlJRDBnUVhKeVlYa3Vabkp2YlNoMGRpNTJhV1YzWlhKektTNW1hVzVrS0NoMk9pQmhibmtwSUQwK0lIWXVkSGx3WlNBaFBUMGdKMGR5YVdRbktTRTdYRzRnSUNBZ1pYaHdaV04wUVhKeVlYa29jbVZ6TENCYk1pd2dNU3dnTWwwcE8xeHVJQ0FnSUdWNGNHVmpkQ2hLVTA5T0xuTjBjbWx1WjJsbWVTaDJhV1YzWlhJdVoyVjBUM0IwYVc5dWN5Z3BMbXh2YjJzcExDQktVMDlPTG5OMGNtbHVaMmxtZVNodmJHUlFjbTl3Y3lrcE8xeHVJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJSFIyTG1Oc2IzTmxLQ2s3WEc0Z0lDQWdaM0p2YXk1emFHVnNiQzVqYkc5elpWUmhZbXhsS0dSbUtUdGNiaUFnSUNCRVJ5NUNZV3hzYjI5dUxtTnNiM05sUVd4c0tDazdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdGVzdCc7XG4vKiogRGVtbyBzY3JpcHQgY2xhc3MuIENvdWxkIGJlIHVzZWQgZm9yIGNyZWF0aW5nIGRlbW8gc2NyaXB0cyB0byBzaG93IHRoZSBwbGF0Zm9ybSBjYXBhYmlsaXRpZXMgKi9cbmV4cG9ydCBjbGFzcyBEZW1vU2NyaXB0IHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBkZXNjcmlwdGlvbiwgaXNBdXRvbWF0aWMgPSBmYWxzZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMubmFtZSA9ICcnO1xuICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gJyc7XG4gICAgICAgIHRoaXMuX2lzQXV0b21hdGljID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2F1dG9TdGFydEZpcnN0U3RlcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jdXJyZW50U3RlcCA9IDA7XG4gICAgICAgIHRoaXMuX2lzU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0NhbmNlbGxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc1N0ZXBQcm9jZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm9vdCA9IHVpLmRpdihbXSwgeyBpZDogJ2RlbW8tc2NyaXB0JyxcbiAgICAgICAgICAgIGNsYXNzZXM6ICd0dXRvcmlhbHMtcm9vdCB0dXRvcmlhbHMtdHJhY2sgZGVtby1hcHAtc2NyaXB0JyB9KTtcbiAgICAgICAgdGhpcy5fc3RlcHMgPSBbXTtcbiAgICAgICAgdGhpcy5fbWFpbkhlYWRlciA9IHVpLnBhbmVsKFtdLCAndHV0b3JpYWxzLW1haW4taGVhZGVyJyk7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IHVpLmgyKCcnKTtcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2ID0gdWkuZGl2SChbXSwgJ3R1dG9yaWFscy1yb290LWhlYWRlcicpO1xuICAgICAgICB0aGlzLl9zdG9wU3RhcnRCdG4gPSB1aS5idXR0b24odWkuaWNvbkZBKCdwYXVzZScpLCAoKSA9PiB0aGlzLl9jaGFuZ2VTdG9wU3RhdGUoKSwgJ1BsYXkgLyBwYXVzZScpO1xuICAgICAgICB0aGlzLl9yZXN0YXJ0QnRuID0gdWkuYnV0dG9uKHVpLmljb25GQSgncmVkbycpLCAoKSA9PiB0aGlzLl9yZXN0YXJ0U2NyaXB0KCksICdSZXN0YXJ0Jyk7XG4gICAgICAgIHRoaXMuX25leHRTdGVwQnRuID0gdWkuYnV0dG9uKHVpLmljb25GQSgncGxheScpLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzU3RlcFByb2Nlc3NlZClcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0U3RlcCgpO1xuICAgICAgICB9LCAnTmV4dCBzdGVwJyk7XG4gICAgICAgIHRoaXMuX2FjdGl2aXR5ID0gdWkucGFuZWwoW10sICd0dXRvcmlhbHMtcm9vdC1kZXNjcmlwdGlvbicpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc0RpdiA9IHVpLmRpdlYoW10sICd0dXRvcmlhbHMtcm9vdC1wcm9ncmVzcycpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHVpLmVsZW1lbnQoJ3Byb2dyZXNzJyk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzU3RlcHMgPSB1aS5kaXZUZXh0KCcnKTtcbiAgICAgICAgdGhpcy5fY2xvc2VCdG4gPSB1aS5idXR0b24odWkuaWNvbkZBKCdjaGV2cm9uLWxlZnQnKSwgKCkgPT4gdGhpcy5fY2xvc2VEb2NrKCksICdCYWNrIHRvIGRlbW8nKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLl9pc0F1dG9tYXRpYyA9IGlzQXV0b21hdGljO1xuICAgICAgICB0aGlzLl9hdXRvU3RhcnRGaXJzdFN0ZXAgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXV0b1N0YXJ0Rmlyc3RTdGVwKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubWF4ID0gMDtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MudmFsdWUgPSAxO1xuICAgICAgICBEZW1vU2NyaXB0LmN1cnJlbnRPYmplY3QgPSB0aGlzO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBkZW1vIHNjcmlwdCBzdGVwcyAqL1xuICAgIGdldCBzdGVwcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBzO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgYW1vdW50IG9mIGRlbW8gc2NyaXB0IHN0ZXBzICovXG4gICAgZ2V0IHN0ZXBOdW1iZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwcy5sZW5ndGg7XG4gICAgfVxuICAgIC8qKiBBZGRzIHNjcmlwdCBoZWFkZXIgKi9cbiAgICBfYWRkSGVhZGVyKCkge1xuICAgICAgICB0aGlzLl9jcmVhdGVIZWFkZXJEaXYoKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlUHJvZ3Jlc3NEaXYoKTtcbiAgICAgICAgdGhpcy5fbWFpbkhlYWRlci5hcHBlbmQodGhpcy5faGVhZGVyRGl2LCB0aGlzLl9wcm9ncmVzc0Rpdik7XG4gICAgfVxuICAgIC8qKiBDcmVhdGVzIHNjcmlwdCBoZWFkZXIgZGl2ICovXG4gICAgX2NyZWF0ZUhlYWRlckRpdigpIHtcbiAgICAgICAgdGhpcy5faGVhZGVyLmlubmVyVGV4dCA9IHRoaXMubmFtZTtcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2LmFwcGVuZCh0aGlzLl9jbG9zZUJ0bik7XG4gICAgICAgIHRoaXMuX2hlYWRlckRpdi5hcHBlbmQodGhpcy5faGVhZGVyKTtcbiAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4uZmlyc3RDaGlsZC5jbGFzc05hbWUgPSAnZ3Jvay1pY29uIGZhcyBmYS1wbGF5JztcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2LmFwcGVuZCh0aGlzLl9pc0F1dG9tYXRpYyA/IHRoaXMuX3N0b3BTdGFydEJ0biA6IHRoaXMuX25leHRTdGVwQnRuKTtcbiAgICB9XG4gICAgLyoqIENyZWF0ZXMgc2NyaXB0IHByb2dyZXNzIGRpdiAqL1xuICAgIF9jcmVhdGVQcm9ncmVzc0RpdigpIHtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubWF4ID0gdGhpcy5zdGVwTnVtYmVyO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc0Rpdi5hcHBlbmQodGhpcy5fcHJvZ3Jlc3MpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc1N0ZXBzID0gdWkuZGl2VGV4dChgU3RlcDogJHt0aGlzLl9wcm9ncmVzcy52YWx1ZX0gb2YgJHt0aGlzLnN0ZXBOdW1iZXJ9YCk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzRGl2LmFwcGVuZCh0aGlzLl9wcm9ncmVzc1N0ZXBzKTtcbiAgICB9XG4gICAgLyoqIEFkZHMgZGVzY3JpcHRpb24gb2YgdGhlIHNjcmlwdCAqL1xuICAgIF9hZGREZXNjcmlwdGlvbigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLl9hY3Rpdml0eS5hcHBlbmQodWkuZGl2KHRoaXMuZGVzY3JpcHRpb24sICd0dXRvcmlhbHMtcm9vdC1kZXNjcmlwdGlvbicpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXBOdW1iZXI7IGkrKykge1xuICAgICAgICAgICAgbGV0IGluc3RydWN0aW9uSW5kaWNhdG9yID0gdWkuaWNvbkZBKCdjbG9jaycpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uSW5kaWNhdG9yID0gdWkuaWNvbkZBKCdwbGF5JywgKCkgPT4gdGhpcy5fbmV4dFN0ZXAoKSwgJ05leHQgc3RlcCcpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbkluZGljYXRvci5jbGFzc05hbWUgPSAnZ3Jvay1pY29uIGZhcyBmYS1wbGF5JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbnN0cnVjdGlvbkRpdiA9IHVpLmRpdih0aGlzLl9zdGVwc1tpXS5uYW1lLCAnZ3Jvay10dXRvcmlhbC1lbnRyeS1pbnN0cnVjdGlvbicpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0ZXBEZXNjcmlwdGlvbiA9IHVpLmRpdigoX2EgPSB0aGlzLl9zdGVwc1tpXS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVzY3JpcHRpb24sICdncm9rLXR1dG9yaWFsLXN0ZXAtZGVzY3JpcHRpb24gaGlkZGVuJyk7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHVpLmRpdkgoW1xuICAgICAgICAgICAgICAgIGluc3RydWN0aW9uSW5kaWNhdG9yLFxuICAgICAgICAgICAgICAgIGluc3RydWN0aW9uRGl2LFxuICAgICAgICAgICAgXSwgJ2dyb2stdHV0b3JpYWwtZW50cnknKTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2aXR5LmFwcGVuZChlbnRyeSwgY3VycmVudFN0ZXBEZXNjcmlwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEluaXRpYWxpemVzIHRoZSByb290IG9mIHRoZSBkZW1vIHNjcmlwdCAqL1xuICAgIF9pbml0Um9vdCgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGdyb2suc2hlbGwud2luZG93cy5zaG93Q29udGV4dFBhbmVsID0gdHJ1ZTtcbiAgICAgICAgZ3Jvay5zaGVsbC53aW5kb3dzLnNob3dIZWxwID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNjcmlwdERvY2tOb2RlID0gQXJyYXkuZnJvbShncm9rLnNoZWxsLmRvY2tNYW5hZ2VyLnJvb3ROb2RlLmNoaWxkcmVuKVswXTtcbiAgICAgICAgdGhpcy5fbm9kZSA9IGdyb2suc2hlbGwuZG9ja01hbmFnZXIuZG9jayh0aGlzLl9yb290LCBERy5ET0NLX1RZUEUuRklMTCwgc2NyaXB0RG9ja05vZGUsICcnKTtcbiAgICAgICAgaWYgKChfYiA9IChfYSA9IHNjcmlwdERvY2tOb2RlLnBhcmVudC5jb250YWluZXIuY29udGFpbmVyRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxhc3RFbGVtZW50Q2hpbGQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jbGFzc0xpc3QuY29udGFpbnMoJ3RhYi1oYW5kbGUtbGlzdC1jb250YWluZXInKSlcbiAgICAgICAgICAgIChfYyA9IHNjcmlwdERvY2tOb2RlLnBhcmVudC5jb250YWluZXIuY29udGFpbmVyRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxhc3RFbGVtZW50Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuX25vZGUuY29udGFpbmVyLmNvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHV0b3JpYWxzLWRlbW8tc2NyaXB0LWNvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLl9hZGRIZWFkZXIoKTtcbiAgICAgICAgdGhpcy5fcm9vdC5hcHBlbmQodGhpcy5fbWFpbkhlYWRlcik7XG4gICAgICAgIHRoaXMuX2FkZERlc2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX3Jvb3QuYXBwZW5kKHRoaXMuX2FjdGl2aXR5KTtcbiAgICB9XG4gICAgLyoqIFByb2Nlc3NlcyBuZXh0IHN0ZXAgKi9cbiAgICBfbmV4dFN0ZXAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1N0ZXBQcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRTdGVwQnRuLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4uZmlyc3RDaGlsZC5jbGFzc0xpc3QuYWRkKCdmYS1kaXNhYmxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9hY3Rpdml0eS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdncm9rLXR1dG9yaWFsLWVudHJ5JylbdGhpcy5fY3VycmVudFN0ZXBdO1xuICAgICAgICAgICAgY29uc3QgZW50cnlJbmRpY2F0b3IgPSB0aGlzLl9hY3Rpdml0eS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdncm9rLWljb24nKVt0aGlzLl9jdXJyZW50U3RlcF07XG4gICAgICAgICAgICBjb25zdCBlbnRyeUluc3RydWN0aW9uID0gdGhpcy5fYWN0aXZpdHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3Jvay10dXRvcmlhbC1zdGVwLWRlc2NyaXB0aW9uJylbdGhpcy5fY3VycmVudFN0ZXBdO1xuICAgICAgICAgICAgZW50cnlJbmRpY2F0b3IuY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXIgZmEtc3Bpbm5lci10aGlyZCBmYS1zcGluJztcbiAgICAgICAgICAgIGVudHJ5SW5zdHJ1Y3Rpb24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICBlbnRyeUluc3RydWN0aW9uLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gZW50cnk7XG4gICAgICAgICAgICBjb25zdCBzdGVwRGVsYXkgPSAoKF9hID0gdGhpcy5fc3RlcHNbdGhpcy5fY3VycmVudFN0ZXBdLm9wdGlvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWxheSkgP1xuICAgICAgICAgICAgICAgIChfYiA9IHRoaXMuX3N0ZXBzW3RoaXMuX2N1cnJlbnRTdGVwXS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZGVsYXkgOiAyMDAwO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5fc3RlcHNbdGhpcy5fY3VycmVudFN0ZXBdLmZ1bmMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvKHRoaXMuX3Jvb3QsIGN1cnJlbnRTdGVwLm9mZnNldFRvcCAtIHRoaXMuX21haW5IZWFkZXIub2Zmc2V0SGVpZ2h0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHRoaXMuX2NvdW50ZG93bihlbnRyeSwgZW50cnlJbmRpY2F0b3IsIHN0ZXBEZWxheSk7XG4gICAgICAgICAgICAgICAgeWllbGQgZGVsYXkoc3RlcERlbGF5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld0VudHJ5SW5kaWNhdG9yID0gdWkuaWNvbkZBKCdjaGVjaycpO1xuICAgICAgICAgICAgZW50cnlJbmRpY2F0b3IucmVwbGFjZVdpdGgobmV3RW50cnlJbmRpY2F0b3IpO1xuICAgICAgICAgICAgbmV3RW50cnlJbmRpY2F0b3IuY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXIgZmEtY2hlY2snO1xuICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MudmFsdWUrKztcbiAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzU3RlcHMuaW5uZXJUZXh0ID0gYFN0ZXA6ICR7dGhpcy5fcHJvZ3Jlc3MudmFsdWV9IG9mICR7dGhpcy5zdGVwTnVtYmVyfWA7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RlcCsrO1xuICAgICAgICAgICAgdGhpcy5faXNTdGVwUHJvY2Vzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFN0ZXAgPT09IHRoaXMuc3RlcE51bWJlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQXV0b21hdGljID8gdGhpcy5fc3RvcFN0YXJ0QnRuLnJlcGxhY2VXaXRoKHRoaXMuX3Jlc3RhcnRCdG4pIDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4ucmVwbGFjZVdpdGgodGhpcy5fcmVzdGFydEJ0bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0F1dG9tYXRpYykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGVwRW50cnlJbmRpY2F0b3IgPSB0aGlzLl9hY3Rpdml0eS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdncm9rLWljb24nKVt0aGlzLl9jdXJyZW50U3RlcF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnROZXh0U3RlcEljb24gPSB1aS5pY29uRkEoJ3BsYXknLCAoKSA9PiB0aGlzLl9uZXh0U3RlcCgpLCAnTmV4dCBzdGVwJyk7XG4gICAgICAgICAgICAgICAgc3RhcnROZXh0U3RlcEljb24uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXMgZmEtcGxheSc7XG4gICAgICAgICAgICAgICAgbmV4dFN0ZXBFbnRyeUluZGljYXRvci5yZXBsYWNlV2l0aChzdGFydE5leHRTdGVwSWNvbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBCdG4uY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0U3RlcEJ0bi5maXJzdENoaWxkLmNsYXNzTGlzdC5yZW1vdmUoJ2ZhLWRpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogU3RhcnRzIHRoZSBkZW1vIHNjcmlwdCBhY3Rpb25zICovXG4gICAgX3N0YXJ0U2NyaXB0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuX2N1cnJlbnRTdGVwOyBpIDwgdGhpcy5zdGVwTnVtYmVyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNTdG9wcGVkIHx8IHRoaXMuX2lzQ2FuY2VsbGVkKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB5aWVsZCB0aGlzLl9uZXh0U3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2Nyb2xscyB0byB0aGUgY3VycmVudCBzdGVwXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBDdXJyZW50IHN0ZXAgZWxlbWVudCBpbiByb290XG4gICAgICogQHBhcmFtIHkgLSB5IGNvb3JkaW5hdGUgb2YgdGhlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBfc2Nyb2xsVG8oZWxlbWVudCwgeSkge1xuICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0geTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWRkcyBhbiBpbnRlcmFjdGl2ZSBkZWxheSBpbmRpY2F0b3JcbiAgICAgKiBAcGFyYW0gZWxlbWVudCAtIEN1cnJlbnQgc3RlcCBlbGVtZW50XG4gICAgICogQHBhcmFtIGluZGljYXRvciAtIEN1cnJlbnQgc3RlcCBpbmRpY2F0b3JcbiAgICAgKiBAcGFyYW0gdGltZSAtIEluZGljYXRvciBhbmltYXRpb24gdGltZVxuICAgICAqL1xuICAgIF9jb3VudGRvd24oZWxlbWVudCwgaW5kaWNhdG9yLCB0aW1lKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudGRvd25EaXYgPSB1aS5kaXYoW10sICdkZW1vLXNjcmlwdC1jb3VudGRvd24nKTtcbiAgICAgICAgICAgIGluZGljYXRvci5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIGxldCBjb3VudGRvd24gPSB0aW1lIC8gMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuX2NyZWF0ZVNWR0luZGljYXRvcihjb3VudGRvd24pO1xuICAgICAgICAgICAgY291bnRkb3duRGl2LmFwcGVuZChzdmcpO1xuICAgICAgICAgICAgZWxlbWVudC5wcmVwZW5kKGNvdW50ZG93bkRpdik7XG4gICAgICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb3VudGRvd24tLTtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRkb3duID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICAgICAgICAgICAgICBjb3VudGRvd25EaXYucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRvci5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgU1ZHIHdpdGggY291bnRkb3duIGNpcmNsZVxuICAgICAqIEBwYXJhbSBjb3VudGRvd24gLSBjb3VudGRvd24gdGltZVxuICAgICAqIEByZXR1cm5zIFNWRyBjb3VudGRvd24gaW5kaWNhdG9yXG4gICAgICovXG4gICAgX2NyZWF0ZVNWR0luZGljYXRvcihjb3VudGRvd24pIHtcbiAgICAgICAgY29uc3Qgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnKTtcbiAgICAgICAgY29uc3QgY2lyY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdjaXJjbGUnKTtcbiAgICAgICAgY2lyY2xlLnNldEF0dHJpYnV0ZU5TKG51bGwsICdjeCcsICc3Jyk7XG4gICAgICAgIGNpcmNsZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnY3knLCAnNycpO1xuICAgICAgICBjaXJjbGUuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3InLCAnNicpO1xuICAgICAgICBjaXJjbGUuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3N0eWxlJywgYGFuaW1hdGlvbjogY291bnRkb3duICR7Y291bnRkb3dufXMgbGluZWFyIGluZmluaXRlIGZvcndhcmRzYCk7XG4gICAgICAgIHN2Zy5hcHBlbmQoY2lyY2xlKTtcbiAgICAgICAgcmV0dXJuIHN2ZztcbiAgICB9XG4gICAgLyoqIENoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSBkZW1vIHNjcmlwdCAoc3RvcC9wbGF5KSAqL1xuICAgIF9jaGFuZ2VTdG9wU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9zdG9wU3RhcnRCdG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3Jvay1pY29uJyk7XG4gICAgICAgIGljb25bMF0uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYXMgZmEtcGxheSc7XG4gICAgICAgIHRoaXMuX2lzU3RvcHBlZCA9ICF0aGlzLl9pc1N0b3BwZWQ7XG4gICAgICAgIGlmICghdGhpcy5faXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBpY29uWzBdLmNsYXNzTmFtZSA9ICdncm9rLWljb24gZmFsIGZhLXBhdXNlJztcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNTdGVwUHJvY2Vzc2VkKVxuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0U2NyaXB0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIFJlc3RhcnRzIHRoZSBzY3JpcHQgKi9cbiAgICBfcmVzdGFydFNjcmlwdCgpIHtcbiAgICAgICAgZ3Jvay5zaGVsbC5kb2NrTWFuYWdlci5jbG9zZSh0aGlzLl9ub2RlKTtcbiAgICAgICAgZ3Jvay5zaGVsbC5jbG9zZUFsbCgpO1xuICAgICAgICB0aGlzLl9jbGVhclJvb3QoKTtcbiAgICAgICAgdGhpcy5fc2V0SW5pdFBhcmFtcygpO1xuICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICAgIC8qKiBDbGVhcnMgdGhlIHJvb3QgZWxlbWVudCAqL1xuICAgIF9jbGVhclJvb3QoKSB7XG4gICAgICAgIHRoaXMuX3Jvb3QgPSB1aS5kaXYoW10sIHsgaWQ6ICdkZW1vLXNjcmlwdCcsIGNsYXNzZXM6ICd0dXRvcmlhbHMtcm9vdCB0dXRvcmlhbHMtdHJhY2sgZGVtby1hcHAtc2NyaXB0JyB9KTtcbiAgICAgICAgdGhpcy5fbWFpbkhlYWRlciA9IHVpLnBhbmVsKFtdLCAndHV0b3JpYWxzLW1haW4taGVhZGVyJyk7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IHVpLmgyKCcnKTtcbiAgICAgICAgdGhpcy5faGVhZGVyRGl2ID0gdWkuZGl2SChbXSwgJ3R1dG9yaWFscy1yb290LWhlYWRlcicpO1xuICAgICAgICB0aGlzLl9hY3Rpdml0eSA9IHVpLnBhbmVsKFtdLCAndHV0b3JpYWxzLXJvb3QtZGVzY3JpcHRpb24nKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3NEaXYgPSB1aS5kaXZWKFtdLCAndHV0b3JpYWxzLXJvb3QtcHJvZ3Jlc3MnKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB1aS5lbGVtZW50KCdwcm9ncmVzcycpO1xuICAgICAgICB0aGlzLl9wcm9ncmVzc1N0ZXBzID0gdWkuZGl2VGV4dCgnJyk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLm1heCA9IDA7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLnZhbHVlID0gMTtcbiAgICB9XG4gICAgLyoqIFNldHMgaW5pdGlhbCBwYXJhbWV0ZXJzICovXG4gICAgX3NldEluaXRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTdGVwID0gMDtcbiAgICAgICAgdGhpcy5faXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzQ2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9zdG9wU3RhcnRCdG4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZ3Jvay1pY29uJyk7XG4gICAgICAgIGljb25bMF0uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBmYWwgZmEtcGF1c2UnO1xuICAgICAgICB0aGlzLl9uZXh0U3RlcEJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdkaXNhYmxlZCcpO1xuICAgIH1cbiAgICAvKiogQ2xvc2VzIGRlbW8gc2NyaXB0IGRvY2sgKi9cbiAgICBfY2xvc2VEb2NrKCkge1xuICAgICAgICBncm9rLnNoZWxsLmRvY2tNYW5hZ2VyLmNsb3NlKHRoaXMuX25vZGUpO1xuICAgICAgICB0aGlzLmNhbmNlbFNjcmlwdCgpO1xuICAgIH1cbiAgICAvKiogQ2FuY2VscyB0aGUgc2NyaXB0ICovXG4gICAgY2FuY2VsU2NyaXB0KCkge1xuICAgICAgICB0aGlzLl9pc0NhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIERlbW9TY3JpcHQuY3VycmVudE9iamVjdCA9IG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBuZXcgc3RlcCB0byBzY3JpcHRcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFN0ZXAgbmFtZVxuICAgICAqIEBwYXJhbSBmdW5jIC0gU3RlcCBmdW5jdGlvblxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gU3RlcCBvcHRpb25zIChkZXNjcmlwdGlvbiBhbmQgZGVsYXkgYWZ0ZXIgc3RlcCBlbmRzKVxuICAgICAqIEByZXR1cm5zIFJldHVybnMgdGhlIGN1cnJlbnQgZGVtbyBzY3JpcHQgb2JqZWN0XG4gICAgICovXG4gICAgc3RlcChuYW1lLCBmdW5jLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX3N0ZXBzW3RoaXMuc3RlcHMubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBmdW5jOiBmdW5jLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKiBTdGFydHMgdGhlIGRlbW8gc2NyaXB0ICovXG4gICAgc3RhcnQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0Um9vdCgpO1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5uZXdWaWV3KHRoaXMubmFtZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNBdXRvbWF0aWMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydFNjcmlwdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9hdXRvU3RhcnRGaXJzdFN0ZXApXG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy5fbmV4dFN0ZXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuRGVtb1NjcmlwdC5jdXJyZW50T2JqZWN0ID0gbnVsbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHVnRieTF6WTNKcGNIUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKa1pXMXZMWE5qY21sd2RDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZCUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRGRFTXNUMEZCVHl4TFFVRkxMRWxCUVVrc1RVRkJUU3h0UWtGQmJVSXNRMEZCUXp0QlFVVXhReXhQUVVGUExFVkJRVU1zUzBGQlN5eEZRVUZETEUxQlFVMHNiME5CUVc5RExFTkJRVU03UVVGbGVrUXNiVWRCUVcxSE8wRkJRMjVITEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCZFVOeVFpeFpRVUZaTEVsQlFWa3NSVUZCUlN4WFFVRnRRaXhGUVVGRkxHTkJRWFZDTEV0QlFVc3NSVUZEZWtVc1QwRkJkME03TzFGQmRrTXhReXhUUVVGSkxFZEJRVmNzUlVGQlJTeERRVUZETzFGQlEyeENMR2RDUVVGWExFZEJRVmNzUlVGQlJTeERRVUZETzFGQlNXcENMR2xDUVVGWkxFZEJRVmtzUzBGQlN5eERRVUZETzFGQlF6bENMSGRDUVVGdFFpeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVTnlReXhwUWtGQldTeEhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTjZRaXhsUVVGVkxFZEJRVmtzUzBGQlN5eERRVUZETzFGQlF6VkNMR2xDUVVGWkxFZEJRVmtzUzBGQlN5eERRVUZETzFGQlF6bENMSEZDUVVGblFpeEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVVnNReXhWUVVGTExFZEJRVzFDTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZGTEdGQlFXRTdXVUZETTBRc1QwRkJUeXhGUVVGRkxHZEVRVUZuUkN4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVWMFJDeFhRVUZOTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUlhCQ0xHZENRVUZYTEVkQlFXMUNMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeEZRVUZGTEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNFVXNXVUZCVHl4SFFVRjFRaXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNoRExHVkJRVlVzUjBGQmJVSXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzZFVKQlFYVkNMRU5CUVVNc1EwRkJRenRSUVVOc1JTeHJRa0ZCWVN4SFFVRnpRaXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRM0pGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8xRkJRM3BETEdkQ1FVRlhMRWRCUVhOQ0xFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZEZEVjc2FVSkJRVmtzUjBGQmMwSXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSVHRaUVVNeFJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFqdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzFGQlEzSkNMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVZTTEdOQlFWTXNSMEZCYlVJc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVWQlFVVXNORUpCUVRSQ0xFTkJRVU1zUTBGQlF6dFJRVVYyUlN4cFFrRkJXU3hIUVVGdFFpeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3g1UWtGQmVVSXNRMEZCUXl4RFFVRkRPMUZCUTNSRkxHTkJRVk1zUjBGQmQwSXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU40UkN4dFFrRkJZeXhIUVVGdFFpeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSMmhFTEdOQlFWTXNSMEZCYzBJc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hqUVVGakxFTkJRVU1zUTBGQlF6dFJRVXR1U0N4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExGZEJRVmNzUTBGQlF6dFJRVU12UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExGZEJRVmNzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNhMEpCUVd0Q0xHMURRVUZKTEV0QlFVc3NRMEZCUXp0UlFVVm9SU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRka0lzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSWHBDTEZWQlFWVXNRMEZCUXl4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJRMnhETEVOQlFVTTdTVUZGUkN4blEwRkJaME03U1VGRGFFTXNTVUZCU1N4TFFVRkxPMUZCUTFBc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1NVRkZSQ3c0UTBGQk9FTTdTVUZET1VNc1NVRkJTU3hWUVVGVk8xRkJRMW9zVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNMVFpeERRVUZETzBsQlIwUXNlVUpCUVhsQ08wbEJRMnBDTEZWQlFWVTdVVUZEYUVJc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFTkJRVU03VVVGRE1VSXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03U1VGRE9VUXNRMEZCUXp0SlFVVkVMR2REUVVGblF6dEpRVU40UWl4blFrRkJaMEk3VVVGRGRFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0UlFVTnVReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGRrTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUlhCRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWVUZCTUVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNN1VVRkZiRVlzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMGxCUTNKR0xFTkJRVU03U1VGRlJDeHJRMEZCYTBNN1NVRkRNVUlzYTBKQlFXdENPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRGNrTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4UFFVRlBMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJYaEdMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVOb1JDeERRVUZETzBsQlJVUXNjVU5CUVhGRE8wbEJRemRDTEdWQlFXVTdPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN3MFFrRkJORUlzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGT1VVc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZUVNc1NVRkJTU3h2UWtGQmIwSXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFsQlF6bERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzJkQ1FVTjBRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdiMEpCUTFnc2IwSkJRVzlDTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzI5Q1FVTTVSU3h2UWtGQmIwSXNRMEZCUXl4VFFVRlRMRWRCUVVjc2RVSkJRWFZDTEVOQlFVTTdhVUpCUXpGRU8yRkJRMFk3V1VGRFJDeE5RVUZOTEdOQlFXTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxHbERRVUZwUXl4RFFVRkRMRU5CUVVNN1dVRkRkRVlzVFVGQlRTeHpRa0ZCYzBJc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTERCRFFVRkZMRmRCUVZjc1JVRkRka1VzZFVOQlFYVkRMRU5CUVVNc1EwRkJRenRaUVVNelF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU53UWl4dlFrRkJiMEk3WjBKQlEzQkNMR05CUVdNN1lVRkRaaXhGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1dVRkZNVUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1UwRkRkRVE3U1VGRFNDeERRVUZETzBsQlJVUXNPRU5CUVRoRE8wbEJRM1JETEZOQlFWTTdPMUZCUTJZc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNaMEpCUVdkQ0xFZEJRVWNzU1VGQlNTeERRVUZETzFGQlF6TkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZjRU1zVFVGQlRTeGpRVUZqTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTDBVc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeGpRVUZqTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkZOVVlzU1VGQlNTeE5RVUZCTEUxQlFVRXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc2FVSkJRV2xDTERCRFFVRkZMR2RDUVVGblFpd3dRMEZEZEVZc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5d3lRa0ZCTWtJc1EwRkJRenRaUVVNdlF5eE5RVUZCTEdOQlFXTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMR2xDUVVGcFFpd3dRMEZCUlN4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0UlFVVm9SeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMR2xEUVVGcFF5eERRVUZETEVOQlFVTTdVVUZGZGtZc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlEyeENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVWd1F5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNN1VVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBsQlEzQkRMRU5CUVVNN1NVRkZSQ3d3UWtGQk1FSTdTVUZEV2l4VFFVRlRPenM3V1VGRGNrSXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTTNRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0blFrRkRkRUlzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzJkQ1FVTXpReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZWQlFUQkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTTFSVHRaUVVWRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkRPVVlzVFVGQlRTeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdXVUZETjBZc1RVRkJUU3huUWtGQlowSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMR2REUVVGblF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xbEJSWEJJTEdOQlFXTXNRMEZCUXl4VFFVRlRMRWRCUVVjc2QwTkJRWGRETEVOQlFVTTdXVUZEY0VVc1owSkJRV2RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dFpRVU0xUXl4blFrRkJaMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJSVEZETEUxQlFVMHNWMEZCVnl4SFFVRkhMRXRCUVhWQ0xFTkJRVU03V1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJRU3hOUVVGQkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFOUJRVThzTUVOQlFVVXNTMEZCU3l4RlFVRkRMRU5CUVVNN1owSkJReTlFTEUxQlFVRXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNUMEZCVHl3d1EwRkJSU3hMUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVVjRSQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzFsQlF6VkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4WFFVRlhMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkRiRVlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMmRDUVVOeVFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJiMElzUlVGQlJTeGpRVUUyUWl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8yZENRVU4wUml4TlFVRk5MRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dGhRVU40UWp0WlFVVkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFpRVU0zUXl4alFVRmpMRU5CUVVNc1YwRkJWeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1dVRkRPVU1zYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhIUVVGSExIZENRVUYzUWl4RFFVRkRPMWxCUlhaRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1UwRkJVeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03V1VGRmRFWXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8xbEJRM0JDTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZGT1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1owSkJRM3BETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTndSU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlEyeEVMRTlCUVU4N1lVRkRVanRaUVVWRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMmRDUVVOMFFpeE5RVUZOTEhOQ1FVRnpRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8yZENRVU55Unl4TlFVRk5MR2xDUVVGcFFpeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtZc2FVSkJRV2xDTEVOQlFVTXNVMEZCVXl4SFFVRkhMSFZDUVVGMVFpeERRVUZETzJkQ1FVTjBSQ3h6UWtGQmMwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0blFrRkRkRVFzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzJkQ1FVTTVReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEZWQlFUQkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTXZSVHM3UzBGRFJqdEpRVVZFTEhGRFFVRnhRenRKUVVOMlFpeFpRVUZaT3p0WlFVTjRRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRM2hFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldUdHZRa0ZEZEVNc1RVRkJUVHRuUWtGRlVpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRoUVVONFFqdFJRVU5JTEVOQlFVTTdTMEZCUVR0SlFVVkVPenM3TzA5QlNVYzdTVUZEU3l4VFFVRlRMRU5CUVVNc1QwRkJkVUlzUlVGQlJTeERRVUZUTzFGQlEyeEVMRTlCUVU4c1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFJRVU5vUWl4UFFVRlBMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU40UWl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRWeXhWUVVGVkxFTkJRVU1zVDBGQmIwSXNSVUZCUlN4VFFVRnpRaXhGUVVGRkxFbEJRVms3TzFsQlEycEdMRTFCUVUwc1dVRkJXU3hIUVVGdFFpeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3gxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMWxCUlhwRkxGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xbEJSV3hETEVsQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRE5VSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xbEJSV2hFTEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGVrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVVU1UWl4TlFVRk5MRkZCUVZFc1IwRkJSeXhYUVVGWExFTkJRVU1zUjBGQlJ5eEZRVUZGTzJkQ1FVTm9ReXhUUVVGVExFVkJRVVVzUTBGQlF6dG5Ra0ZEV2l4SlFVRkpMRk5CUVZNc1MwRkJTeXhEUVVGRExFVkJRVVU3YjBKQlEyNUNMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHZRa0ZEZUVJc1dVRkJXU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzI5Q1FVVjBRaXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR2UWtGRGNrTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdhVUpCUTNCRE8xbEJRMGdzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTFnc1EwRkJRenRMUVVGQk8wbEJSVVE3T3pzN1QwRkpSenRKUVVOTExHMUNRVUZ0UWl4RFFVRkRMRk5CUVdsQ08xRkJRek5ETEUxQlFVMHNSMEZCUnl4SFFVRkhMRkZCUVZFc1EwRkJReXhsUVVGbExFTkJRVU1zTkVKQlFUUkNMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE1VVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1VVRkJVU3hEUVVGRExHVkJRV1VzUTBGQlF5dzBRa0ZCTkVJc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVU5vUml4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRka01zVFVGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzWkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVVzZDBKQlFYZENMRk5CUVZNc05FSkJRVFJDTEVOQlFVTXNRMEZCUXp0UlFVTndSeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUlc1Q0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVMSFZFUVVGMVJEdEpRVU12UXl4blFrRkJaMEk3VVVGRGRFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU53UlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRE8xRkJRelZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzFGQlJXNURMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTzFsQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NkMEpCUVhkQ0xFTkJRVU03V1VGRE4wTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSTdaMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0VFFVTjJRanRKUVVOSUxFTkJRVU03U1VGRlJDd3dRa0ZCTUVJN1NVRkRiRUlzWTBGQll6dFJRVU53UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVUwc1EwRkJReXhEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03VVVGRGRFSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJRMnhDTEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOMFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJSVVFzT0VKQlFUaENPMGxCUTNSQ0xGVkJRVlU3VVVGRGFFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJSU3hoUVVGaExFVkJRVVVzVDBGQlR5eEZRVUZGTEdkRVFVRm5SQ3hGUVVGRExFTkJRVU1zUTBGQlF6dFJRVVY0Unl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RlFVRkZMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZEZWtRc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRM3BDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVVYyUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4RlFVRkZMRFJDUVVFMFFpeERRVUZETEVOQlFVTTdVVUZGTlVRc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3g1UWtGQmVVSXNRMEZCUXl4RFFVRkRPMUZCUXpORUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU40UXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkZja01zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM1pDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU16UWl4RFFVRkRPMGxCUlVRc09FSkJRVGhDTzBsQlEzUkNMR05CUVdNN1VVRkRjRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZNVUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOd1JTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExIZENRVUYzUWl4RFFVRkRPMUZCUXpkRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRc09FSkJRVGhDTzBsQlEzUkNMRlZCUVZVN1VVRkRhRUlzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZOTEVOQlFVTXNRMEZCUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdTVUZEZEVJc1EwRkJRenRKUVVWRUxIbENRVUY1UWp0SlFVTjZRaXhaUVVGWk8xRkJRMVlzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRla0lzVlVGQlZTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkRiRU1zUTBGQlF6dEpRVVZFT3pzN096czdUMEZOUnp0SlFVTklMRWxCUVVrc1EwRkJReXhKUVVGWkxFVkJRVVVzU1VGQmVVSXNSVUZCUlN4UFFVRm5SRHRSUVVNMVJpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVYzdXVUZETDBJc1NVRkJTU3hGUVVGRkxFbEJRVWs3V1VGRFZpeEpRVUZKTEVWQlFVVXNTVUZCU1R0WlFVTldMRTlCUVU4c1JVRkJSU3hQUVVGUE8xTkJRMnBDTEVOQlFVTTdVVUZEUml4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDdzJRa0ZCTmtJN1NVRkRka0lzUzBGQlN6czdXVUZEVkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03V1VGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUlRsQ0xFbEJRVWtzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0blFrRkRja0lzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeFBRVUZQTzJGQlExSTdXVUZGUkN4SlFVRkpMRWxCUVVrc1EwRkJReXh0UWtGQmJVSTdaMEpCUXpGQ0xFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFTkJRVU03UzBGQlFUczdRVUYwVmswc2QwSkJRV0VzUjBGQmMwSXNTVUZCU1N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1JFY2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMlJuSnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibHh1YVcxd2IzSjBJSHRrWld4aGVYMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkR1Z6ZENjN1hHNWNibHh1THlvcUlGUjVjR1VnWm05eUlIdEFiR2x1YXlCRVpXMXZVMk55YVhCMGZTQnpkR1Z3SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JUZEdWd0lEMGdlMXh1SUNCdVlXMWxPaUJ6ZEhKcGJtYzdYRzRnSUdaMWJtTTZJQ2dwSUQwK0lGQnliMjFwYzJVOGRtOXBaRDQ3WEc1Y2JpQWdMeW9xSUZOMFpYQWdiM0IwYVc5dWN6b2daR1Z6WTNKcGNIUnBiMjRnWVc1a0lHUmxiR0Y1SUNocGJpQnRjeWtnWVdaMFpYSWdablZ1WTNScGIyNGdaVzVrY3lBcUwxeHVJQ0J2Y0hScGIyNXpQem9nZTF4dUlDQWdJR1JsYzJOeWFYQjBhVzl1UHpvZ2MzUnlhVzVuTzF4dUlDQWdJR1JsYkdGNVB6b2diblZ0WW1WeU8xeHVJQ0I5WEc1OU8xeHVYRzR2S2lvZ1JHVnRieUJ6WTNKcGNIUWdZMnhoYzNNdUlFTnZkV3hrSUdKbElIVnpaV1FnWm05eUlHTnlaV0YwYVc1bklHUmxiVzhnYzJOeWFYQjBjeUIwYnlCemFHOTNJSFJvWlNCd2JHRjBabTl5YlNCallYQmhZbWxzYVhScFpYTWdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QkVaVzF2VTJOeWFYQjBJSHRjYmlBZ2JtRnRaVG9nYzNSeWFXNW5JRDBnSnljN1hHNGdJR1JsYzJOeWFYQjBhVzl1T2lCemRISnBibWNnUFNBbkp6dGNibHh1SUNCemRHRjBhV01nWTNWeWNtVnVkRTlpYW1WamREb2dSR1Z0YjFOamNtbHdkQ0I4SUc1MWJHd2dQU0J1ZFd4c08xeHVYRzRnSUhCeWFYWmhkR1VnWDJselFYVjBiMjFoZEdsak9pQmliMjlzWldGdUlEMGdabUZzYzJVN1hHNGdJSEJ5YVhaaGRHVWdYMkYxZEc5VGRHRnlkRVpwY25OMFUzUmxjRG9nWW05dmJHVmhiaUE5SUdaaGJITmxPMXh1SUNCd2NtbDJZWFJsSUY5amRYSnlaVzUwVTNSbGNEb2diblZ0WW1WeUlEMGdNRHRjYmlBZ2NISnBkbUYwWlNCZmFYTlRkRzl3Y0dWa09pQmliMjlzWldGdUlEMGdabUZzYzJVN1hHNGdJSEJ5YVhaaGRHVWdYMmx6UTJGdVkyVnNiR1ZrT2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlU3WEc0Z0lIQnlhWFpoZEdVZ1gybHpVM1JsY0ZCeWIyTmxjM05sWkRvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTzF4dVhHNGdJSEJ5YVhaaGRHVWdYM0p2YjNRNklFaFVUVXhFYVhaRmJHVnRaVzUwSUQwZ2RXa3VaR2wyS0Z0ZExDQjdhV1E2SUNka1pXMXZMWE5qY21sd2RDY3NYRzRnSUNBZ1kyeGhjM05sY3pvZ0ozUjFkRzl5YVdGc2N5MXliMjkwSUhSMWRHOXlhV0ZzY3kxMGNtRmpheUJrWlcxdkxXRndjQzF6WTNKcGNIUW5mU2s3WEc1Y2JpQWdjSEpwZG1GMFpTQmZjM1JsY0hNNklGTjBaWEJiWFNBOUlGdGRPMXh1WEc0Z0lIQnlhWFpoZEdVZ1gyMWhhVzVJWldGa1pYSTZJRWhVVFV4RWFYWkZiR1Z0Wlc1MElEMGdkV2t1Y0dGdVpXd29XMTBzSUNkMGRYUnZjbWxoYkhNdGJXRnBiaTFvWldGa1pYSW5LVHRjYmlBZ2NISnBkbUYwWlNCZmFHVmhaR1Z5T2lCSVZFMU1TR1ZoWkdsdVowVnNaVzFsYm5RZ1BTQjFhUzVvTWlnbkp5azdYRzRnSUhCeWFYWmhkR1VnWDJobFlXUmxja1JwZGpvZ1NGUk5URVJwZGtWc1pXMWxiblFnUFNCMWFTNWthWFpJS0Z0ZExDQW5kSFYwYjNKcFlXeHpMWEp2YjNRdGFHVmhaR1Z5SnlrN1hHNGdJSEJ5YVhaaGRHVWdYM04wYjNCVGRHRnlkRUowYmpvZ1NGUk5URUoxZEhSdmJrVnNaVzFsYm5RZ1BTQjFhUzVpZFhSMGIyNG9kV2t1YVdOdmJrWkJLQ2R3WVhWelpTY3BMRnh1SUNBZ0lDZ3BJRDArSUhSb2FYTXVYMk5vWVc1blpWTjBiM0JUZEdGMFpTZ3BMQ0FuVUd4aGVTQXZJSEJoZFhObEp5azdYRzRnSUhCeWFYWmhkR1VnWDNKbGMzUmhjblJDZEc0NklFaFVUVXhDZFhSMGIyNUZiR1Z0Wlc1MElEMGdkV2t1WW5WMGRHOXVLSFZwTG1samIyNUdRU2duY21Wa2J5Y3BMQ0FvS1NBOVBpQjBhR2x6TGw5eVpYTjBZWEowVTJOeWFYQjBLQ2tzSUNkU1pYTjBZWEowSnlrN1hHNGdJSEJ5YVhaaGRHVWdYMjVsZUhSVGRHVndRblJ1T2lCSVZFMU1RblYwZEc5dVJXeGxiV1Z1ZENBOUlIVnBMbUoxZEhSdmJpaDFhUzVwWTI5dVJrRW9KM0JzWVhrbktTd2dLQ2tnUFQ0Z2UxeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1ZmFYTlRkR1Z3VUhKdlkyVnpjMlZrS1Z4dUlDQWdJQ0FnZEdocGN5NWZibVY0ZEZOMFpYQW9LVHRjYmlBZ2ZTd2dKMDVsZUhRZ2MzUmxjQ2NwTzF4dVhHNGdJSEJ5YVhaaGRHVWdYMkZqZEdsMmFYUjVPaUJJVkUxTVJHbDJSV3hsYldWdWRDQTlJSFZwTG5CaGJtVnNLRnRkTENBbmRIVjBiM0pwWVd4ekxYSnZiM1F0WkdWelkzSnBjSFJwYjI0bktUdGNibHh1SUNCd2NtbDJZWFJsSUY5d2NtOW5jbVZ6YzBScGRqb2dTRlJOVEVScGRrVnNaVzFsYm5RZ1BTQjFhUzVrYVhaV0tGdGRMQ0FuZEhWMGIzSnBZV3h6TFhKdmIzUXRjSEp2WjNKbGMzTW5LVHRjYmlBZ2NISnBkbUYwWlNCZmNISnZaM0psYzNNNklFaFVUVXhRY205bmNtVnpjMFZzWlcxbGJuUWdQU0IxYVM1bGJHVnRaVzUwS0Nkd2NtOW5jbVZ6Y3ljcE8xeHVJQ0J3Y21sMllYUmxJRjl3Y205bmNtVnpjMU4wWlhCek9pQklWRTFNUkdsMlJXeGxiV1Z1ZENBOUlIVnBMbVJwZGxSbGVIUW9KeWNwTzF4dVhHNGdJSEJ5YVhaaGRHVWdYMjV2WkdVL09pQkVSeTVFYjJOclRtOWtaVHRjYmlBZ2NISnBkbUYwWlNCZlkyeHZjMlZDZEc0NklFaFVUVXhDZFhSMGIyNUZiR1Z0Wlc1MElEMGdkV2t1WW5WMGRHOXVLSFZwTG1samIyNUdRU2duWTJobGRuSnZiaTFzWldaMEp5a3NJQ2dwSUQwK0lIUm9hWE11WDJOc2IzTmxSRzlqYXlncExDQW5RbUZqYXlCMGJ5QmtaVzF2SnlrN1hHNWNibHh1SUNCamIyNXpkSEoxWTNSdmNpaHVZVzFsT2lCemRISnBibWNzSUdSbGMyTnlhWEIwYVc5dU9pQnpkSEpwYm1jc0lHbHpRWFYwYjIxaGRHbGpPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVXNYRzRnSUNBZ2IzQjBhVzl1Y3o4NklIdGhkWFJ2VTNSaGNuUkdhWEp6ZEZOMFpYQS9PaUJpYjI5c1pXRnVmU2tnZTF4dUlDQWdJSFJvYVhNdWJtRnRaU0E5SUc1aGJXVTdYRzRnSUNBZ2RHaHBjeTVrWlhOamNtbHdkR2x2YmlBOUlHUmxjMk55YVhCMGFXOXVPMXh1SUNBZ0lIUm9hWE11WDJselFYVjBiMjFoZEdsaklEMGdhWE5CZFhSdmJXRjBhV003WEc0Z0lDQWdkR2hwY3k1ZllYVjBiMU4wWVhKMFJtbHljM1JUZEdWd0lEMGdiM0IwYVc5dWN6OHVZWFYwYjFOMFlYSjBSbWx5YzNSVGRHVndJRDgvSUdaaGJITmxPMXh1WEc0Z0lDQWdkR2hwY3k1ZmNISnZaM0psYzNNdWJXRjRJRDBnTUR0Y2JpQWdJQ0IwYUdsekxsOXdjbTluY21WemN5NTJZV3gxWlNBOUlERTdYRzVjYmlBZ0lDQkVaVzF2VTJOeWFYQjBMbU4xY25KbGJuUlBZbXBsWTNRZ1BTQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRkpsZEhWeWJuTWdaR1Z0YnlCelkzSnBjSFFnYzNSbGNITWdLaTljYmlBZ1oyVjBJSE4wWlhCektDazZJRk4wWlhCYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM04wWlhCek8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUZKbGRIVnlibk1nZEdobElHRnRiM1Z1ZENCdlppQmtaVzF2SUhOamNtbHdkQ0J6ZEdWd2N5QXFMMXh1SUNCblpYUWdjM1JsY0U1MWJXSmxjaWdwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5emRHVndjeTVzWlc1bmRHZzdYRzRnSUgxY2JseHVYRzRnSUM4cUtpQkJaR1J6SUhOamNtbHdkQ0JvWldGa1pYSWdLaTljYmlBZ2NISnBkbUYwWlNCZllXUmtTR1ZoWkdWeUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMk55WldGMFpVaGxZV1JsY2tScGRpZ3BPMXh1SUNBZ0lIUm9hWE11WDJOeVpXRjBaVkJ5YjJkeVpYTnpSR2wyS0NrN1hHNGdJQ0FnZEdocGN5NWZiV0ZwYmtobFlXUmxjaTVoY0hCbGJtUW9kR2hwY3k1ZmFHVmhaR1Z5UkdsMkxDQjBhR2x6TGw5d2NtOW5jbVZ6YzBScGRpazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1EzSmxZWFJsY3lCelkzSnBjSFFnYUdWaFpHVnlJR1JwZGlBcUwxeHVJQ0J3Y21sMllYUmxJRjlqY21WaGRHVklaV0ZrWlhKRWFYWW9LVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmYUdWaFpHVnlMbWx1Ym1WeVZHVjRkQ0E5SUhSb2FYTXVibUZ0WlR0Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWXVZWEJ3Wlc1a0tIUm9hWE11WDJOc2IzTmxRblJ1S1R0Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWXVZWEJ3Wlc1a0tIUm9hWE11WDJobFlXUmxjaWs3WEc1Y2JpQWdJQ0FvZEdocGN5NWZibVY0ZEZOMFpYQkNkRzR1Wm1seWMzUkRhR2xzWkNCaGN5QklWRTFNUld4bGJXVnVkQ2t1WTJ4aGMzTk9ZVzFsSUQwZ0oyZHliMnN0YVdOdmJpQm1ZWE1nWm1FdGNHeGhlU2M3WEc1Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWXVZWEJ3Wlc1a0tIUm9hWE11WDJselFYVjBiMjFoZEdsaklEOGdkR2hwY3k1ZmMzUnZjRk4wWVhKMFFuUnVJRG9nZEdocGN5NWZibVY0ZEZOMFpYQkNkRzRwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRU55WldGMFpYTWdjMk55YVhCMElIQnliMmR5WlhOeklHUnBkaUFxTDF4dUlDQndjbWwyWVhSbElGOWpjbVZoZEdWUWNtOW5jbVZ6YzBScGRpZ3BPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDl3Y205bmNtVnpjeTV0WVhnZ1BTQjBhR2x6TG5OMFpYQk9kVzFpWlhJN1hHNGdJQ0FnZEdocGN5NWZjSEp2WjNKbGMzTkVhWFl1WVhCd1pXNWtLSFJvYVhNdVgzQnliMmR5WlhOektUdGNiaUFnSUNCMGFHbHpMbDl3Y205bmNtVnpjMU4wWlhCeklEMGdkV2t1WkdsMlZHVjRkQ2hnVTNSbGNEb2dKSHQwYUdsekxsOXdjbTluY21WemN5NTJZV3gxWlgwZ2IyWWdKSHQwYUdsekxuTjBaWEJPZFcxaVpYSjlZQ2s3WEc1Y2JpQWdJQ0IwYUdsekxsOXdjbTluY21WemMwUnBkaTVoY0hCbGJtUW9kR2hwY3k1ZmNISnZaM0psYzNOVGRHVndjeWs3WEc0Z0lIMWNibHh1SUNBdktpb2dRV1JrY3lCa1pYTmpjbWx3ZEdsdmJpQnZaaUIwYUdVZ2MyTnlhWEIwSUNvdlhHNGdJSEJ5YVhaaGRHVWdYMkZrWkVSbGMyTnlhWEIwYVc5dUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVYMkZqZEdsMmFYUjVMbUZ3Y0dWdVpDaDFhUzVrYVhZb2RHaHBjeTVrWlhOamNtbHdkR2x2Yml3Z0ozUjFkRzl5YVdGc2N5MXliMjkwTFdSbGMyTnlhWEIwYVc5dUp5a3BPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwYUdsekxuTjBaWEJPZFcxaVpYSTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJR2x1YzNSeWRXTjBhVzl1U1c1a2FXTmhkRzl5SUQwZ2RXa3VhV052YmtaQktDZGpiRzlqYXljcE8xeHVJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxsOXBjMEYxZEc5dFlYUnBZeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9hU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdWMzUnlkV04wYVc5dVNXNWthV05oZEc5eUlEMGdkV2t1YVdOdmJrWkJLQ2R3YkdGNUp5d2dLQ2tnUFQ0Z2RHaHBjeTVmYm1WNGRGTjBaWEFvS1N3Z0owNWxlSFFnYzNSbGNDY3BPMXh1SUNBZ0lDQWdJQ0FnSUdsdWMzUnlkV04wYVc5dVNXNWthV05oZEc5eUxtTnNZWE56VG1GdFpTQTlJQ2RuY205ckxXbGpiMjRnWm1GeklHWmhMWEJzWVhrbk8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpiMjV6ZENCcGJuTjBjblZqZEdsdmJrUnBkaUE5SUhWcExtUnBkaWgwYUdsekxsOXpkR1Z3YzF0cFhTNXVZVzFsTENBblozSnZheTEwZFhSdmNtbGhiQzFsYm5SeWVTMXBibk4wY25WamRHbHZiaWNwTzF4dUlDQWdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRGTjBaWEJFWlhOamNtbHdkR2x2YmlBOUlIVnBMbVJwZGloMGFHbHpMbDl6ZEdWd2MxdHBYUzV2Y0hScGIyNXpQeTVrWlhOamNtbHdkR2x2Yml4Y2JpQWdJQ0FnSUNBZ0oyZHliMnN0ZEhWMGIzSnBZV3d0YzNSbGNDMWtaWE5qY21sd2RHbHZiaUJvYVdSa1pXNG5LVHRjYmlBZ0lDQWdJR052Ym5OMElHVnVkSEo1SUQwZ2RXa3VaR2wyU0NoYlhHNGdJQ0FnSUNBZ0lHbHVjM1J5ZFdOMGFXOXVTVzVrYVdOaGRHOXlMRnh1SUNBZ0lDQWdJQ0JwYm5OMGNuVmpkR2x2YmtScGRpeGNiaUFnSUNBZ0lGMHNJQ2RuY205ckxYUjFkRzl5YVdGc0xXVnVkSEo1SnlrN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJGamRHbDJhWFI1TG1Gd2NHVnVaQ2hsYm5SeWVTd2dZM1Z5Y21WdWRGTjBaWEJFWlhOamNtbHdkR2x2YmlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FJRWx1YVhScFlXeHBlbVZ6SUhSb1pTQnliMjkwSUc5bUlIUm9aU0JrWlcxdklITmpjbWx3ZENBcUwxeHVJQ0J3Y21sMllYUmxJRjlwYm1sMFVtOXZkQ2dwT2lCMmIybGtJSHRjYmlBZ0lDQm5jbTlyTG5Ob1pXeHNMbmRwYm1SdmQzTXVjMmh2ZDBOdmJuUmxlSFJRWVc1bGJDQTlJSFJ5ZFdVN1hHNGdJQ0FnWjNKdmF5NXphR1ZzYkM1M2FXNWtiM2R6TG5Ob2IzZElaV3h3SUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0JqYjI1emRDQnpZM0pwY0hSRWIyTnJUbTlrWlNBOUlFRnljbUY1TG1aeWIyMG9aM0p2YXk1emFHVnNiQzVrYjJOclRXRnVZV2RsY2k1eWIyOTBUbTlrWlM1amFHbHNaSEpsYmlsYk1GMDdYRzVjYmlBZ0lDQjBhR2x6TGw5dWIyUmxJRDBnWjNKdmF5NXphR1ZzYkM1a2IyTnJUV0Z1WVdkbGNpNWtiMk5yS0hSb2FYTXVYM0p2YjNRc0lFUkhMa1JQUTB0ZlZGbFFSUzVHU1V4TUxDQnpZM0pwY0hSRWIyTnJUbTlrWlN3Z0p5Y3BPMXh1WEc0Z0lDQWdhV1lnS0hOamNtbHdkRVJ2WTJ0T2IyUmxMbkJoY21WdWRDNWpiMjUwWVdsdVpYSXVZMjl1ZEdGcGJtVnlSV3hsYldWdWRDNW1hWEp6ZEVWc1pXMWxiblJEYUdsc1pEOHViR0Z6ZEVWc1pXMWxiblJEYUdsc1pEOHVYRzRnSUNBZ0lDQmpiR0Z6YzB4cGMzUXVZMjl1ZEdGcGJuTW9KM1JoWWkxb1lXNWtiR1V0YkdsemRDMWpiMjUwWVdsdVpYSW5LU2xjYmlBZ0lDQWdJSE5qY21sd2RFUnZZMnRPYjJSbExuQmhjbVZ1ZEM1amIyNTBZV2x1WlhJdVkyOXVkR0ZwYm1WeVJXeGxiV1Z1ZEM1bWFYSnpkRVZzWlcxbGJuUkRhR2xzWkQ4dWJHRnpkRVZzWlcxbGJuUkRhR2xzWkM1eVpXMXZkbVVvS1R0Y2JseHVJQ0FnSUhSb2FYTXVYMjV2WkdVdVkyOXVkR0ZwYm1WeUxtTnZiblJoYVc1bGNrVnNaVzFsYm5RdVkyeGhjM05NYVhOMExtRmtaQ2duZEhWMGIzSnBZV3h6TFdSbGJXOHRjMk55YVhCMExXTnZiblJoYVc1bGNpY3BPMXh1WEc0Z0lDQWdkR2hwY3k1ZllXUmtTR1ZoWkdWeUtDazdYRzRnSUNBZ2RHaHBjeTVmY205dmRDNWhjSEJsYm1Rb2RHaHBjeTVmYldGcGJraGxZV1JsY2lrN1hHNWNiaUFnSUNCMGFHbHpMbDloWkdSRVpYTmpjbWx3ZEdsdmJpZ3BPMXh1SUNBZ0lIUm9hWE11WDNKdmIzUXVZWEJ3Wlc1a0tIUm9hWE11WDJGamRHbDJhWFI1S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJRY205alpYTnpaWE1nYm1WNGRDQnpkR1Z3SUNvdlhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ1gyNWxlSFJUZEdWd0tDazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUhSb2FYTXVYMmx6VTNSbGNGQnliMk5sYzNObFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TGw5cGMwRjFkRzl0WVhScFl5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmJtVjRkRk4wWlhCQ2RHNHVZMnhoYzNOTWFYTjBMbUZrWkNnblpHbHpZV0pzWldRbktUdGNiaUFnSUNBZ0lDaDBhR2x6TGw5dVpYaDBVM1JsY0VKMGJpNW1hWEp6ZEVOb2FXeGtJR0Z6SUVoVVRVeEZiR1Z0Wlc1MEtTNWpiR0Z6YzB4cGMzUXVZV1JrS0NkbVlTMWthWE5oWW14bFpDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdWdWRISjVJRDBnZEdocGN5NWZZV04wYVhacGRIa3VaMlYwUld4bGJXVnVkSE5DZVVOc1lYTnpUbUZ0WlNnblozSnZheTEwZFhSdmNtbGhiQzFsYm5SeWVTY3BXM1JvYVhNdVgyTjFjbkpsYm5SVGRHVndYVHRjYmlBZ0lDQmpiMjV6ZENCbGJuUnllVWx1WkdsallYUnZjaUE5SUhSb2FYTXVYMkZqZEdsMmFYUjVMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVb0oyZHliMnN0YVdOdmJpY3BXM1JvYVhNdVgyTjFjbkpsYm5SVGRHVndYVHRjYmlBZ0lDQmpiMjV6ZENCbGJuUnllVWx1YzNSeWRXTjBhVzl1SUQwZ2RHaHBjeTVmWVdOMGFYWnBkSGt1WjJWMFJXeGxiV1Z1ZEhOQ2VVTnNZWE56VG1GdFpTZ25aM0p2YXkxMGRYUnZjbWxoYkMxemRHVndMV1JsYzJOeWFYQjBhVzl1SnlsYmRHaHBjeTVmWTNWeWNtVnVkRk4wWlhCZE8xeHVYRzRnSUNBZ1pXNTBjbmxKYm1ScFkyRjBiM0l1WTJ4aGMzTk9ZVzFsSUQwZ0oyZHliMnN0YVdOdmJpQm1ZWElnWm1FdGMzQnBibTVsY2kxMGFHbHlaQ0JtWVMxemNHbHVKenRjYmlBZ0lDQmxiblJ5ZVVsdWMzUnlkV04wYVc5dUxtTnNZWE56VEdsemRDNXlaVzF2ZG1Vb0oyaHBaR1JsYmljcE8xeHVJQ0FnSUdWdWRISjVTVzV6ZEhKMVkzUnBiMjR1WTJ4aGMzTk1hWE4wTG1Ga1pDZ25kbWx6YVdKc1pTY3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ1kzVnljbVZ1ZEZOMFpYQWdQU0JsYm5SeWVTQmhjeUJJVkUxTVJHbDJSV3hsYldWdWREdGNiaUFnSUNCamIyNXpkQ0J6ZEdWd1JHVnNZWGtnUFNCMGFHbHpMbDl6ZEdWd2MxdDBhR2x6TGw5amRYSnlaVzUwVTNSbGNGMHViM0IwYVc5dWN6OHVaR1ZzWVhrZ1AxeHVJQ0FnSUNBZ2RHaHBjeTVmYzNSbGNITmJkR2hwY3k1ZlkzVnljbVZ1ZEZOMFpYQmRMbTl3ZEdsdmJuTS9MbVJsYkdGNUlTQTZJREl3TURBN1hHNWNiaUFnSUNCaGQyRnBkQ0IwYUdsekxsOXpkR1Z3YzF0MGFHbHpMbDlqZFhKeVpXNTBVM1JsY0YwdVpuVnVZeWdwTzF4dUlDQWdJSFJvYVhNdVgzTmpjbTlzYkZSdktIUm9hWE11WDNKdmIzUXNJR04xY25KbGJuUlRkR1Z3TG05bVpuTmxkRlJ2Y0NBdElIUm9hWE11WDIxaGFXNUlaV0ZrWlhJdWIyWm1jMlYwU0dWcFoyaDBLVHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZhWE5CZFhSdmJXRjBhV01wSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdVgyTnZkVzUwWkc5M2JpaGxiblJ5ZVNCaGN5QklWRTFNUld4bGJXVnVkQ3dnWlc1MGNubEpibVJwWTJGMGIzSWdZWE1nU0ZSTlRFVnNaVzFsYm5Rc0lITjBaWEJFWld4aGVTazdYRzRnSUNBZ0lDQmhkMkZwZENCa1pXeGhlU2h6ZEdWd1JHVnNZWGtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHNWxkMFZ1ZEhKNVNXNWthV05oZEc5eUlEMGdkV2t1YVdOdmJrWkJLQ2RqYUdWamF5Y3BPMXh1SUNBZ0lHVnVkSEo1U1c1a2FXTmhkRzl5TG5KbGNHeGhZMlZYYVhSb0tHNWxkMFZ1ZEhKNVNXNWthV05oZEc5eUtUdGNiaUFnSUNCdVpYZEZiblJ5ZVVsdVpHbGpZWFJ2Y2k1amJHRnpjMDVoYldVZ1BTQW5aM0p2YXkxcFkyOXVJR1poY2lCbVlTMWphR1ZqYXljN1hHNWNiaUFnSUNCMGFHbHpMbDl3Y205bmNtVnpjeTUyWVd4MVpTc3JPMXh1SUNBZ0lIUm9hWE11WDNCeWIyZHlaWE56VTNSbGNITXVhVzV1WlhKVVpYaDBJRDBnWUZOMFpYQTZJQ1I3ZEdocGN5NWZjSEp2WjNKbGMzTXVkbUZzZFdWOUlHOW1JQ1I3ZEdocGN5NXpkR1Z3VG5WdFltVnlmV0E3WEc1Y2JpQWdJQ0IwYUdsekxsOWpkWEp5Wlc1MFUzUmxjQ3NyTzF4dUlDQWdJSFJvYVhNdVgybHpVM1JsY0ZCeWIyTmxjM05sWkNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WDJOMWNuSmxiblJUZEdWd0lEMDlQU0IwYUdsekxuTjBaWEJPZFcxaVpYSXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgybHpRWFYwYjIxaGRHbGpJRDhnZEdocGN5NWZjM1J2Y0ZOMFlYSjBRblJ1TG5KbGNHeGhZMlZYYVhSb0tIUm9hWE11WDNKbGMzUmhjblJDZEc0cElEcGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmJtVjRkRk4wWlhCQ2RHNHVjbVZ3YkdGalpWZHBkR2dvZEdocGN5NWZjbVZ6ZEdGeWRFSjBiaWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOXBjMEYxZEc5dFlYUnBZeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdibVY0ZEZOMFpYQkZiblJ5ZVVsdVpHbGpZWFJ2Y2lBOUlIUm9hWE11WDJGamRHbDJhWFI1TG1kbGRFVnNaVzFsYm5SelFubERiR0Z6YzA1aGJXVW9KMmR5YjJzdGFXTnZiaWNwVzNSb2FYTXVYMk4xY25KbGJuUlRkR1Z3WFR0Y2JpQWdJQ0FnSUdOdmJuTjBJSE4wWVhKMFRtVjRkRk4wWlhCSlkyOXVJRDBnZFdrdWFXTnZia1pCS0Nkd2JHRjVKeXdnS0NrZ1BUNGdkR2hwY3k1ZmJtVjRkRk4wWlhBb0tTd2dKMDVsZUhRZ2MzUmxjQ2NwTzF4dUlDQWdJQ0FnYzNSaGNuUk9aWGgwVTNSbGNFbGpiMjR1WTJ4aGMzTk9ZVzFsSUQwZ0oyZHliMnN0YVdOdmJpQm1ZWE1nWm1FdGNHeGhlU2M3WEc0Z0lDQWdJQ0J1WlhoMFUzUmxjRVZ1ZEhKNVNXNWthV05oZEc5eUxuSmxjR3hoWTJWWGFYUm9LSE4wWVhKMFRtVjRkRk4wWlhCSlkyOXVLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyNWxlSFJUZEdWd1FuUnVMbU5zWVhOelRHbHpkQzV5WlcxdmRtVW9KMlJwYzJGaWJHVmtKeWs3WEc0Z0lDQWdJQ0FvZEdocGN5NWZibVY0ZEZOMFpYQkNkRzR1Wm1seWMzUkRhR2xzWkNCaGN5QklWRTFNUld4bGJXVnVkQ2t1WTJ4aGMzTk1hWE4wTG5KbGJXOTJaU2duWm1FdFpHbHpZV0pzWldRbktUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaW9nVTNSaGNuUnpJSFJvWlNCa1pXMXZJSE5qY21sd2RDQmhZM1JwYjI1eklDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdYM04wWVhKMFUyTnlhWEIwS0NrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCMGFHbHpMbDlqZFhKeVpXNTBVM1JsY0RzZ2FTQThJSFJvYVhNdWMzUmxjRTUxYldKbGNqc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZmFYTlRkRzl3Y0dWa0lIeDhJSFJvYVhNdVgybHpRMkZ1WTJWc2JHVmtLVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNibHh1SUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVmYm1WNGRGTjBaWEFvS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1UyTnliMnhzY3lCMGJ5QjBhR1VnWTNWeWNtVnVkQ0J6ZEdWd1hHNGdJQ0FxSUVCd1lYSmhiU0JsYkdWdFpXNTBJQzBnUTNWeWNtVnVkQ0J6ZEdWd0lHVnNaVzFsYm5RZ2FXNGdjbTl2ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlU0F0SUhrZ1kyOXZjbVJwYm1GMFpTQnZaaUIwYUdVZ1pXeGxiV1Z1ZEZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCZmMyTnliMnhzVkc4b1pXeGxiV1Z1ZERvZ1NGUk5URVJwZGtWc1pXMWxiblFzSUhrNklHNTFiV0psY2lrNklIWnZhV1FnZTF4dUlDQWdJR1ZzWlcxbGJuUXVabTlqZFhNb0tUdGNiaUFnSUNCbGJHVnRaVzUwTG5OamNtOXNiRlJ2Y0NBOUlIazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUVdSa2N5QmhiaUJwYm5SbGNtRmpkR2wyWlNCa1pXeGhlU0JwYm1ScFkyRjBiM0pjYmlBZ0lDb2dRSEJoY21GdElHVnNaVzFsYm5RZ0xTQkRkWEp5Wlc1MElITjBaWEFnWld4bGJXVnVkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2FXNWthV05oZEc5eUlDMGdRM1Z5Y21WdWRDQnpkR1Z3SUdsdVpHbGpZWFJ2Y2x4dUlDQWdLaUJBY0dGeVlXMGdkR2x0WlNBdElFbHVaR2xqWVhSdmNpQmhibWx0WVhScGIyNGdkR2x0WlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUJmWTI5MWJuUmtiM2R1S0dWc1pXMWxiblE2SUVoVVRVeEZiR1Z0Wlc1MExDQnBibVJwWTJGMGIzSTZJRWhVVFV4RmJHVnRaVzUwTENCMGFXMWxPaUJ1ZFcxaVpYSXBPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCamIyNXpkQ0JqYjNWdWRHUnZkMjVFYVhZNklFaFVUVXhFYVhaRmJHVnRaVzUwSUQwZ2RXa3VaR2wyS0Z0ZExDQW5aR1Z0YnkxelkzSnBjSFF0WTI5MWJuUmtiM2R1SnlrN1hHNWNiaUFnSUNCcGJtUnBZMkYwYjNJdVkyeGhjM05NYVhOMExtRmtaQ2duYUdsa1pHVnVKeWs3WEc1Y2JpQWdJQ0JzWlhRZ1kyOTFiblJrYjNkdUlEMGdkR2x0WlNBdklERXdNREE3WEc0Z0lDQWdZMjl1YzNRZ2MzWm5JRDBnZEdocGN5NWZZM0psWVhSbFUxWkhTVzVrYVdOaGRHOXlLR052ZFc1MFpHOTNiaWs3WEc1Y2JpQWdJQ0JqYjNWdWRHUnZkMjVFYVhZdVlYQndaVzVrS0hOMlp5azdYRzRnSUNBZ1pXeGxiV1Z1ZEM1d2NtVndaVzVrS0dOdmRXNTBaRzkzYmtScGRpazdYRzVjYmlBZ0lDQmpiMjV6ZENCcGJuUmxjblpoYkNBOUlITmxkRWx1ZEdWeWRtRnNLQ2dwSUQwK0lIdGNiaUFnSUNBZ0lHTnZkVzUwWkc5M2JpMHRPMXh1SUNBZ0lDQWdhV1lnS0dOdmRXNTBaRzkzYmlBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCamJHVmhja2x1ZEdWeWRtRnNLR2x1ZEdWeWRtRnNLVHRjYmlBZ0lDQWdJQ0FnWTI5MWJuUmtiM2R1UkdsMkxuSmxiVzkyWlNncE8xeHVYRzRnSUNBZ0lDQWdJR2x1WkdsallYUnZjaTVqYkdGemMweHBjM1F1Y21WdGIzWmxLQ2RvYVdSa1pXNG5LVHRjYmlBZ0lDQWdJQ0FnYVc1a2FXTmhkRzl5TG1Oc1lYTnpUR2x6ZEM1aFpHUW9KM1pwYzJsaWJHVW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0F4TURBd0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJRk5XUnlCM2FYUm9JR052ZFc1MFpHOTNiaUJqYVhKamJHVmNiaUFnSUNvZ1FIQmhjbUZ0SUdOdmRXNTBaRzkzYmlBdElHTnZkVzUwWkc5M2JpQjBhVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNXpJRk5XUnlCamIzVnVkR1J2ZDI0Z2FXNWthV05oZEc5eVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElGOWpjbVZoZEdWVFZrZEpibVJwWTJGMGIzSW9ZMjkxYm5Sa2IzZHVPaUJ1ZFcxaVpYSXBPaUJUVmtkVFZrZEZiR1Z0Wlc1MElIdGNiaUFnSUNCamIyNXpkQ0J6ZG1jZ1BTQmtiMk4xYldWdWRDNWpjbVZoZEdWRmJHVnRaVzUwVGxNb0oyaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabkp5d2dKM04yWnljcE8xeHVJQ0FnSUdOdmJuTjBJR05wY21Oc1pTQTlJR1J2WTNWdFpXNTBMbU55WldGMFpVVnNaVzFsYm5ST1V5Z25hSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY25MQ0FuWTJseVkyeGxKeWs3WEc0Z0lDQWdZMmx5WTJ4bExuTmxkRUYwZEhKcFluVjBaVTVUS0c1MWJHd3NJQ2RqZUNjc0lDYzNKeWs3WEc0Z0lDQWdZMmx5WTJ4bExuTmxkRUYwZEhKcFluVjBaVTVUS0c1MWJHd3NJQ2RqZVNjc0lDYzNKeWs3WEc0Z0lDQWdZMmx5WTJ4bExuTmxkRUYwZEhKcFluVjBaVTVUS0c1MWJHd3NJQ2R5Snl3Z0p6WW5LVHRjYmlBZ0lDQmphWEpqYkdVdWMyVjBRWFIwY21saWRYUmxUbE1vYm5Wc2JDd2dKM04wZVd4bEp5d2dZR0Z1YVcxaGRHbHZiam9nWTI5MWJuUmtiM2R1SUNSN1kyOTFiblJrYjNkdWZYTWdiR2x1WldGeUlHbHVabWx1YVhSbElHWnZjbmRoY21SellDazdYRzRnSUNBZ2MzWm5MbUZ3Y0dWdVpDaGphWEpqYkdVcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhOMlp6dGNiaUFnZlZ4dVhHNGdJQzhxS2lCRGFHRnVaMlZ6SUhSb1pTQnpkR0YwWlNCdlppQjBhR1VnWkdWdGJ5QnpZM0pwY0hRZ0tITjBiM0F2Y0d4aGVTa2dLaTljYmlBZ2NISnBkbUYwWlNCZlkyaGhibWRsVTNSdmNGTjBZWFJsS0NrNklIWnZhV1FnZTF4dUlDQWdJR052Ym5OMElHbGpiMjRnUFNCMGFHbHpMbDl6ZEc5d1UzUmhjblJDZEc0dVoyVjBSV3hsYldWdWRITkNlVU5zWVhOelRtRnRaU2duWjNKdmF5MXBZMjl1SnlrN1hHNGdJQ0FnYVdOdmJsc3dYUzVqYkdGemMwNWhiV1VnUFNBblozSnZheTFwWTI5dUlHWmhjeUJtWVMxd2JHRjVKenRjYmlBZ0lDQjBhR2x6TGw5cGMxTjBiM0J3WldRZ1BTQWhkR2hwY3k1ZmFYTlRkRzl3Y0dWa08xeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxsOXBjMU4wYjNCd1pXUXBJSHRjYmlBZ0lDQWdJR2xqYjI1Yk1GMHVZMnhoYzNOT1lXMWxJRDBnSjJkeWIyc3RhV052YmlCbVlXd2dabUV0Y0dGMWMyVW5PMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbDlwYzFOMFpYQlFjbTlqWlhOelpXUXBYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzTjBZWEowVTJOeWFYQjBLQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcUlGSmxjM1JoY25SeklIUm9aU0J6WTNKcGNIUWdLaTljYmlBZ2NISnBkbUYwWlNCZmNtVnpkR0Z5ZEZOamNtbHdkQ2dwT2lCMmIybGtJSHRjYmlBZ0lDQm5jbTlyTG5Ob1pXeHNMbVJ2WTJ0TllXNWhaMlZ5TG1Oc2IzTmxLSFJvYVhNdVgyNXZaR1VoS1R0Y2JpQWdJQ0JuY205ckxuTm9aV3hzTG1Oc2IzTmxRV3hzS0NrN1hHNGdJQ0FnZEdocGN5NWZZMnhsWVhKU2IyOTBLQ2s3WEc0Z0lDQWdkR2hwY3k1ZmMyVjBTVzVwZEZCaGNtRnRjeWdwTzF4dUlDQWdJSFJvYVhNdWMzUmhjblFvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJEYkdWaGNuTWdkR2hsSUhKdmIzUWdaV3hsYldWdWRDQXFMMXh1SUNCd2NtbDJZWFJsSUY5amJHVmhjbEp2YjNRb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZjbTl2ZENBOUlIVnBMbVJwZGloYlhTd2dlMmxrT2lBblpHVnRieTF6WTNKcGNIUW5MQ0JqYkdGemMyVnpPaUFuZEhWMGIzSnBZV3h6TFhKdmIzUWdkSFYwYjNKcFlXeHpMWFJ5WVdOcklHUmxiVzh0WVhCd0xYTmpjbWx3ZENkOUtUdGNibHh1SUNBZ0lIUm9hWE11WDIxaGFXNUlaV0ZrWlhJZ1BTQjFhUzV3WVc1bGJDaGJYU3dnSjNSMWRHOXlhV0ZzY3kxdFlXbHVMV2hsWVdSbGNpY3BPMXh1SUNBZ0lIUm9hWE11WDJobFlXUmxjaUE5SUhWcExtZ3lLQ2NuS1R0Y2JpQWdJQ0IwYUdsekxsOW9aV0ZrWlhKRWFYWWdQU0IxYVM1a2FYWklLRnRkTENBbmRIVjBiM0pwWVd4ekxYSnZiM1F0YUdWaFpHVnlKeWs3WEc1Y2JpQWdJQ0IwYUdsekxsOWhZM1JwZG1sMGVTQTlJSFZwTG5CaGJtVnNLRnRkTENBbmRIVjBiM0pwWVd4ekxYSnZiM1F0WkdWelkzSnBjSFJwYjI0bktUdGNibHh1SUNBZ0lIUm9hWE11WDNCeWIyZHlaWE56UkdsMklEMGdkV2t1WkdsMlZpaGJYU3dnSjNSMWRHOXlhV0ZzY3kxeWIyOTBMWEJ5YjJkeVpYTnpKeWs3WEc0Z0lDQWdkR2hwY3k1ZmNISnZaM0psYzNNZ1BTQjFhUzVsYkdWdFpXNTBLQ2R3Y205bmNtVnpjeWNwTzF4dUlDQWdJSFJvYVhNdVgzQnliMmR5WlhOelUzUmxjSE1nUFNCMWFTNWthWFpVWlhoMEtDY25LVHRjYmx4dUlDQWdJSFJvYVhNdVgzQnliMmR5WlhOekxtMWhlQ0E5SURBN1hHNGdJQ0FnZEdocGN5NWZjSEp2WjNKbGMzTXVkbUZzZFdVZ1BTQXhPMXh1SUNCOVhHNWNiaUFnTHlvcUlGTmxkSE1nYVc1cGRHbGhiQ0J3WVhKaGJXVjBaWEp6SUNvdlhHNGdJSEJ5YVhaaGRHVWdYM05sZEVsdWFYUlFZWEpoYlhNb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZZM1Z5Y21WdWRGTjBaWEFnUFNBd08xeHVJQ0FnSUhSb2FYTXVYMmx6VTNSdmNIQmxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lIUm9hWE11WDJselEyRnVZMlZzYkdWa0lEMGdabUZzYzJVN1hHNWNiaUFnSUNCamIyNXpkQ0JwWTI5dUlEMGdkR2hwY3k1ZmMzUnZjRk4wWVhKMFFuUnVMbWRsZEVWc1pXMWxiblJ6UW5sRGJHRnpjMDVoYldVb0oyZHliMnN0YVdOdmJpY3BPMXh1SUNBZ0lHbGpiMjViTUYwdVkyeGhjM05PWVcxbElEMGdKMmR5YjJzdGFXTnZiaUJtWVd3Z1ptRXRjR0YxYzJVbk8xeHVJQ0FnSUhSb2FYTXVYMjVsZUhSVGRHVndRblJ1TG1Oc1lYTnpUR2x6ZEM1eVpXMXZkbVVvSjJScGMyRmliR1ZrSnlrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUTJ4dmMyVnpJR1JsYlc4Z2MyTnlhWEIwSUdSdlkyc2dLaTljYmlBZ2NISnBkbUYwWlNCZlkyeHZjMlZFYjJOcktDazZJSFp2YVdRZ2UxeHVJQ0FnSUdkeWIyc3VjMmhsYkd3dVpHOWphMDFoYm1GblpYSXVZMnh2YzJVb2RHaHBjeTVmYm05a1pTRXBPMXh1SUNBZ0lIUm9hWE11WTJGdVkyVnNVMk55YVhCMEtDazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1EyRnVZMlZzY3lCMGFHVWdjMk55YVhCMElDb3ZYRzRnSUdOaGJtTmxiRk5qY21sd2RDZ3BPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDlwYzBOaGJtTmxiR3hsWkNBOUlIUnlkV1U3WEc0Z0lDQWdSR1Z0YjFOamNtbHdkQzVqZFhKeVpXNTBUMkpxWldOMElEMGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkJaR1J6SUdFZ2JtVjNJSE4wWlhBZ2RHOGdjMk55YVhCMFhHNGdJQ0FxSUVCd1lYSmhiU0J1WVcxbElDMGdVM1JsY0NCdVlXMWxYRzRnSUNBcUlFQndZWEpoYlNCbWRXNWpJQzBnVTNSbGNDQm1kVzVqZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnYjNCMGFXOXVjeUF0SUZOMFpYQWdiM0IwYVc5dWN5QW9aR1Z6WTNKcGNIUnBiMjRnWVc1a0lHUmxiR0Y1SUdGbWRHVnlJSE4wWlhBZ1pXNWtjeWxjYmlBZ0lDb2dRSEpsZEhWeWJuTWdVbVYwZFhKdWN5QjBhR1VnWTNWeWNtVnVkQ0JrWlcxdklITmpjbWx3ZENCdlltcGxZM1JjYmlBZ0lDb3ZYRzRnSUhOMFpYQW9ibUZ0WlRvZ2MzUnlhVzVuTENCbWRXNWpPaUFvS1NBOVBpQlFjbTl0YVhObFBIWnZhV1ErTENCdmNIUnBiMjV6UHpvZ2UyUmxjMk55YVhCMGFXOXVQem9nYzNSeWFXNW5MQ0JrWld4aGVUODZJRzUxYldKbGNuMHBPaUIwYUdseklIdGNiaUFnSUNCMGFHbHpMbDl6ZEdWd2MxdDBhR2x6TG5OMFpYQnpMbXhsYm1kMGFGMGdQU0I3WEc0Z0lDQWdJQ0J1WVcxbE9pQnVZVzFsTEZ4dUlDQWdJQ0FnWm5WdVl6b2dablZ1WXl4Y2JpQWdJQ0FnSUc5d2RHbHZibk02SUc5d2RHbHZibk1zWEc0Z0lDQWdmVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlRkR0Z5ZEhNZ2RHaGxJR1JsYlc4Z2MyTnlhWEIwSUNvdlhHNGdJR0Z6ZVc1aklITjBZWEowS0NrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJSFJvYVhNdVgybHVhWFJTYjI5MEtDazdYRzRnSUNBZ1ozSnZheTV6YUdWc2JDNXVaWGRXYVdWM0tIUm9hWE11Ym1GdFpTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWZhWE5CZFhSdmJXRjBhV01wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM04wWVhKMFUyTnlhWEIwS0NrN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMkYxZEc5VGRHRnlkRVpwY25OMFUzUmxjQ2xjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11WDI1bGVIUlRkR1Z3S0NrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiLy8gUnVudGltZSBzeXN0ZW0gZm9yIGV4cG9ydGVkIEMvQysrLWZ1bmN0aW9ucyBjYWxsLlxuLy8gSXQgd2FzIHByZXZpb3VzZWx5IGRldmVsb3BlZCBhbmQgZG9lcyBOT1QgcHJvdmlkZSBjYWxsIHdhc20tZnVuY3Rpb25zIGluIFdlYldvcmtlcnMuXG5cbi8vIHR5cGUtdG8taGVhcCBjb3JyZXNwb25kZW5jZVxuY29uc3QgaGVhcE1hcCA9IHtcImkzMlwiOiBcIkhFQVAzMlwiLCAvLyBJbnQzMkFycmF5XG4gICAgICAgICAgICAgICAgIFwiZjMyXCI6IFwiSEVBUEYzMlwiIC8vIEZsb2F0MzJBcnJheVxuICAgICAgICAgICAgICAgIH07XG5cbi8vIHR5cGUgc2lnbmF0dXJlIHRvIHR5cGVkIGFycmF5ICxhcHBcbmNvbnN0IHR5cGVNYXAgPSB7XCJpMzJcIjogSW50MzJBcnJheSwgLy8gSW50MzJBcnJheVxuICAgICAgICAgICAgICAgICBcImYzMlwiOiBGbG9hdDMyQXJyYXkgLy8gRmxvYXQzMkFycmF5XG4gICAgICAgICAgICAgICAgfTsgXG4gXG4vLyB0eXBlLXRvLXNoaWZ0IG1hcFxuY29uc3Qgc2hpZnRNYXAgPSB7XCJpMzJcIjogMiwgLy8gSW50MzJBcnJheVxuICAgICAgICAgICAgICAgICAgXCJmMzJcIjogMiAvLyBGbG9hdDMyQXJyYXlcbiAgICAgICAgICAgICAgICAgfTtcblxuLy8gdHlwZS10by1jb2x1bW5fY3JlYXRvciBtYXBcbmNvbnN0IHR5cGVUb0NvbHVtbkNyZWF0b3JNYXAgPSB7XCJpMzJcIjogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImYzMlwiOiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheX07XG4gXG5cbi8vIENMQVNTRVMgVEhBVCBBUkUgVVNFRCBCWSBDUFAtV1JBUFBFUlxuXG4vLyBzaW1wbGUgYXJndW1lbnQ6IGEgbnVtYmVyIFxuY2xhc3MgQXJne1xuXG4gICAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhOyAgICAgICAgXG4gICAgfVxuXG4gICAgY29tcGxlbWVudEFyck9mUGFyYW1zKGFyck9mUGFyYW1zKSB7XG4gICAgICAgIGFyck9mUGFyYW1zLnB1c2godGhpcy5kYXRhKTtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZUeXBlcyhhcnJPZlR5cGVzKSB7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7ICAgICAgICBcbiAgICB9XG5cbiAgICBhbGxvY2F0ZU1lbW9yeUZvckJ1ZmZlcihtb2R1bGUpIHt9XG5cbiAgICBpc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpe1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlKSB7fVxuXG4gICAgZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlKSB7fVxuXG4gICAgZnJlZUJ1ZmZlcihtb2R1bGUpIHt9XG59XG5cbi8vIGNvbHVtbiBhcmd1bWVudFxuY2xhc3MgQXJnQ29sdW1uIGV4dGVuZHMgQXJnIHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHRhcmdldFR5cGUsIHRvVXBkYXRlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMudHlwZSA9IHRhcmdldFR5cGU7XG4gICAgICAgIHRoaXMudG9VcGRhdGUgPSB0b1VwZGF0ZTtcbiAgICAgICAgdGhpcy5idWYgPSAwOyAgICBcbiAgICAgICAgdGhpcy5udW1PZlJvd3MgPSBkYXRhLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZQYXJhbXMoYXJyT2ZQYXJhbXMpIHtcbiAgICAgICAgYXJyT2ZQYXJhbXMucHVzaCh0aGlzLmJ1Zik7XG4gICAgICAgIGFyck9mUGFyYW1zLnB1c2godGhpcy5udW1PZlJvd3MpO1xuICAgIH1cblxuICAgIGNvbXBsZW1lbnRBcnJPZlR5cGVzKGFyck9mVHlwZXMpIHtcbiAgICAgICAgYXJyT2ZUeXBlcy5wdXNoKCdudW1iZXInKTtcbiAgICAgICAgYXJyT2ZUeXBlcy5wdXNoKCdudW1iZXInKTsgICAgICAgIFxuICAgIH1cblxuICAgIGFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyKG1vZHVsZSkge1xuICAgICAgICB0aGlzLmJ1ZiA9IG1vZHVsZS5fbWFsbG9jKHRoaXMubnVtT2ZSb3dzICogdHlwZU1hcFt0aGlzLnR5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICB9XG5cbiAgICBpc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpe1xuICAgICAgICByZXR1cm4gKHRoaXMuYnVmICE9IDApO1xuICAgIH1cblxuICAgIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07ICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgYXJyYXkgPSBudWxsO1xuICAgICAgICAgICAgbGV0IGNvbCA9IHRoaXMuZGF0YTtcblxuICAgICAgICAgICAgaWYoKChjb2wudHlwZSA9PSAnaW50JykgJiYgKHR5cGUgPT0gJ2kzMicpKSBcbiAgICAgICAgICAgICAgIHx8ICgoY29sLnR5cGUgPT0gJ2RvdWJsZScpICYmICh0eXBlID09ICdmMzInKSkpXG4gICAgICAgICAgICAgIGFycmF5ID0gY29sLmdldFJhd0RhdGEoKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKTtcblxuICAgICAgICAgICAgaWYoYXJyYXkpIFxuICAgICAgICAgICAgICBoZWFwLnNldChhcnJheSwgdGhpcy5idWYgPj4gc2hpZnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlKSB7XG4gICAgICAgIGlmKHRoaXMudG9VcGRhdGUgJiYgdGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IHRoaXMuYnVmO1xuICAgICAgICAgICAgbGV0IGJ5dGVzID0gdHlwZU1hcFt0eXBlXS5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgICAgIGxldCBhcnJheSA9IHRoaXMuZGF0YS5nZXRSYXdEYXRhKCk7XG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLm51bU9mUm93czsgaSsrKVxuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gaGVhcFtidWZmZXIgLyBieXRlcyArIGldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnJlZUJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgIG1vZHVsZS5fZnJlZSh0aGlzLmJ1Zik7XG4gICAgICAgICAgIHRoaXMuYnVmID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vLyBuZXcgY29sdW1uIGFyZ3VtZW50OiBhIG5ldyBjb2x1bW4gaXMgY3JlYXRlZFxuY2xhc3MgQXJnTmV3Q29sdW1uIGV4dGVuZHMgQXJnQ29sdW1uIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXRUeXBlLCBudW1PZlJvd3MpIHtcbiAgICAgICAgc3VwZXIoW10sIHRhcmdldFR5cGUsIHRydWUpO1xuICAgICAgICB0aGlzLm51bU9mUm93cyA9IG51bU9mUm93cztcbiAgICB9XG5cbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlKSB7fVxuXG4gICAgZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlKSB7XG4gICAgICAgIGlmKHRoaXMudG9VcGRhdGUgJiYgdGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgbGV0IGJ1ZiA9IHRoaXMuYnVmO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgY29sdW1uQ3JlYXRvciA9IHR5cGVUb0NvbHVtbkNyZWF0b3JNYXBbdHlwZV07ICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBhcnIgPSBuZXcgdHlwZU1hcFt0eXBlXSh0aGlzLm51bU9mUm93cyk7ICAgICAgICAgICAgXG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgYXJyW2ldID0gaGVhcFtidWYgLyBhcnIuQllURVNfUEVSX0VMRU1FTlQgKyBpXTtcblxuICAgICAgICAgICAgdGhpcy5kYXRhID0gY29sdW1uQ3JlYXRvcignbmFtZScsIGFycik7XG5cbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coYXJyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBtaXN0YWtlLCB3aGVuIHRoaXMubnVtT2ZSb3dzID0gNSAoVE9ETzogaW52ZXN0aWdhdGUgd2h5KVxuICAgICAgICAgICAgLy90aGlzLmRhdGEgPSBjb2x1bW5DcmVhdG9yKCduYW1lJywgbmV3IHR5cGVNYXBbdHlwZV0oaGVhcC5idWZmZXIsIHRoaXMuYnVmLCB0aGlzLm51bU9mUm93cykpO1xuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMuZGF0YS5nZXRSYXdEYXRhKCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBhbiBhcnJheSBvZiBjb2x1bW5zIGFyZ3VtZW50XG5jbGFzcyBBcmdDb2x1bW5zIGV4dGVuZHMgQXJnIHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHRhcmdldFR5cGUsIHRvVXBkYXRlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMudHlwZSA9IHRhcmdldFR5cGU7XG4gICAgICAgIHRoaXMudG9VcGRhdGUgPSB0b1VwZGF0ZTtcbiAgICAgICAgdGhpcy5idWYgPSAwOyAgICBcbiAgICAgICAgdGhpcy5udW1PZkNvbHVtbnMgPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgdGhpcy5udW1PZlJvd3MgPSBkYXRhWzBdLmxlbmd0aDtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZQYXJhbXMoYXJyT2ZQYXJhbXMpIHtcbiAgICAgICAgYXJyT2ZQYXJhbXMucHVzaCh0aGlzLmJ1Zik7XG4gICAgICAgIGFyck9mUGFyYW1zLnB1c2godGhpcy5udW1PZlJvd3MpO1xuICAgICAgICBhcnJPZlBhcmFtcy5wdXNoKHRoaXMubnVtT2ZDb2x1bW5zKTtcbiAgICB9XG5cbiAgICBjb21wbGVtZW50QXJyT2ZUeXBlcyhhcnJPZlR5cGVzKSB7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7XG4gICAgICAgIGFyck9mVHlwZXMucHVzaCgnbnVtYmVyJyk7ICAgICAgICBcbiAgICB9XG5cbiAgICBhbGxvY2F0ZU1lbW9yeUZvckJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgdGhpcy5idWYgPSBtb2R1bGUuX21hbGxvYyh0aGlzLm51bU9mUm93cyAqIHRoaXMubnVtT2ZDb2x1bW5zIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdHlwZU1hcFt0aGlzLnR5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICB9XG5cbiAgICBpc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpe1xuICAgICAgICByZXR1cm4gKHRoaXMuYnVmICE9IDApO1xuICAgIH1cblxuICAgIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy5pc01lbW9yeUZvckJ1ZmZlckFsbG9jYXRlZCgpKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRoaXMudHlwZTtcbiAgICAgICAgICAgIGxldCBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICBsZXQgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHB1dCBjb2x1bW5zIGRhdGEgdG8gYnVmZmVyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5udW1PZkNvbHVtbnM7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IGNvbCA9IHRoaXMuZGF0YVtpXTtcblxuICAgICAgICAgICAgICAgIGlmKCgoY29sLnR5cGUgPT0gJ2ludCcpICYmICh0eXBlID09ICdpMzInKSkgXG4gICAgICAgICAgICAgICAgICAgfHwgKChjb2wudHlwZSA9PSAnZG91YmxlJykgJiYgKHR5cGUgPT0gJ2YzMicpKSlcbiAgICAgICAgICAgICAgICAgICAgIGFycmF5ID0gY29sLmdldFJhd0RhdGEoKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyB0eXBlTWFwW3R5cGVdKGNvbC5nZXRSYXdEYXRhKCkpO1xuXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgZGF0YSBhcnJheVxuICAgICAgICAgICAgICAgIGlmKGFycmF5ICE9IG51bGwpIFxuICAgICAgICAgICAgICAgICAgICBoZWFwLnNldChhcnJheSwgKHRoaXMuYnVmICsgaSAqIHRoaXMubnVtT2ZSb3dzICogbnVtT2ZCeXRlcykgPj4gc2hpZnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREYXRhRnJvbUJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy50b1VwZGF0ZSAmJiB0aGlzLmlzTWVtb3J5Rm9yQnVmZmVyQWxsb2NhdGVkKCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdGhpcy50eXBlO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gdGhpcy5udW1PZlJvd3M7XG4gICAgICAgICAgICBsZXQgbnVtT2ZDb2xzID0gdGhpcy5udW1PZkNvbHVtbnM7ICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBhcnIgPSBuZXcgdHlwZU1hcFt0eXBlXShoZWFwLmJ1ZmZlciwgdGhpcy5idWYsIG51bU9mUm93cyAqIG51bU9mQ29scyk7XG4gICAgICAgXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY29sRGF0YSA9IHRoaXMuZGF0YVtpXS5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IG51bU9mUm93czsgaisrKVxuICAgICAgICAgICAgICAgICAgY29sRGF0YVtqXSA9IGFycltqICsgaSAqIG51bU9mUm93c107ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZyZWVCdWZmZXIobW9kdWxlKSB7XG4gICAgICAgIGlmKHRoaXMuaXNNZW1vcnlGb3JCdWZmZXJBbGxvY2F0ZWQoKSkge1xuICAgICAgICAgICBtb2R1bGUuX2ZyZWUodGhpcy5idWYpO1xuICAgICAgICAgICB0aGlzLmJ1ZiA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLy8gYW4gYXJyYXkgb2YgbmV3IGNvbHVtbnM6IG5ldyBjb2x1bW5zIGFyZSBjcmVhdGVkXG5jbGFzcyBBcmdOZXdDb2x1bW5zIGV4dGVuZHMgQXJnQ29sdW1ucyB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXRUeXBlLCBudW1PZlJvd3MsIG51bU9mQ29sdW1ucykge1xuICAgICAgICBzdXBlcihbW11dLCB0YXJnZXRUeXBlLCB0cnVlKTsgIFxuICAgICAgICB0aGlzLmRhdGEgPSBbXTsgICAgICAgIFxuICAgICAgICB0aGlzLm51bU9mQ29sdW1ucyA9IG51bU9mQ29sdW1ucztcbiAgICAgICAgdGhpcy5udW1PZlJvd3MgPSBudW1PZlJvd3M7XG4gICAgfVxuXG4gICAgcHV0RGF0YVRvQnVmZmVyKG1vZHVsZSkgeyB9XG5cbiAgICBnZXREYXRhRnJvbUJ1ZmZlcihtb2R1bGUpIHtcbiAgICAgICAgaWYodGhpcy50b1VwZGF0ZSAmJiB0aGlzLmlzTWVtb3J5Rm9yQnVmZmVyQWxsb2NhdGVkKCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlID0gdGhpcy50eXBlO1xuICAgICAgICAgICAgbGV0IGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gdGhpcy5udW1PZlJvd3M7XG4gICAgICAgICAgICBsZXQgbnVtT2ZDb2xzID0gdGhpcy5udW1PZkNvbHVtbnM7XG4gICAgICAgICAgICBsZXQgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7ICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBjb2x1bW5DcmVhdG9yID0gdHlwZVRvQ29sdW1uQ3JlYXRvck1hcFt0eXBlXTtcbiAgICAgICAgICAgIGxldCBidWYgPSB0aGlzLmJ1ZjtcblxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG51bU9mQ29sczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFyciA9IG5ldyB0eXBlTWFwW3R5cGVdKG51bU9mUm93cyk7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgbnVtT2ZSb3dzOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIGFycltqXSA9IGhlYXBbYnVmIC8gbnVtT2ZCeXRlcyArIGogKyBpICogbnVtT2ZSb3dzXTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEucHVzaChjb2x1bW5DcmVhdG9yKChpICsgMSkudG9TdHJpbmcoKSwgYXJyKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNyZWF0ZSBjb2x1bW5zOiBoZXJlLCBtYXkgYmUgYSBwcm9ibGVtIHdoZW4gbnVtT2ZSb3dzID0gNSAgICAgICAgICAgIFxuICAgICAgICAgICAgLypmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLnB1c2goY29sdW1uQ3JlYXRvcigoaSArIDEpLnRvU3RyaW5nKCksIG5ldyB0eXBlTWFwW3R5cGVdKGhlYXAuYnVmZmVyLCBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5idWYgKyBpICogbnVtT2ZSb3dzICogbnVtT2ZCeXRlcywgbnVtT2ZSb3dzKSkpOyovXG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGEgd3JhcHBlciBmb3IgZXhwb3J0ZWQgQy9DKystZnVuY3Rpb24gY2FsbFxuZnVuY3Rpb24gY3BwRnVuY1dyYXBwZXIobW9kdWxlLCBjRnVuY05hbWUsIHJldHVyblR5cGUsIGFyZ3MpXG57XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIC8vIGFsbG9jYXRlIG1lbW9yeSBmb3IgYnVmZmVyc1xuICAgIGZvcihsZXQgYXJnIG9mIGFyZ3MpICAgICAgICAgXG4gICAgICAgIGFyZy5hbGxvY2F0ZU1lbW9yeUZvckJ1ZmZlcihtb2R1bGUpO1xuICAgIFxuICAgIGxldCBpc0Vub3VnaE9mTWVtb3J5QWxsb2NhdGVkID0gdHJ1ZTtcblxuICAgIC8vIGNoZWNrIG1lbW9yeSBhbGxvY2F0aW9uXG4gICAgZm9yKGxldCBhcmcgb2YgYXJncylcbiAgICAgICAgaXNFbm91Z2hPZk1lbW9yeUFsbG9jYXRlZCAmPSBhcmcuaXNNZW1vcnlGb3JCdWZmZXJBbGxvY2F0ZWQoKTsgIFxuICAgIFxuICAgIC8vIHJ1biBleHBvcnRlZCBmdW5jdGlvbiBpZiBlbm91Z2ggb2YgbWVtb3J5IGlzIGFsbG9jYXRlZFxuICAgIGlmKGlzRW5vdWdoT2ZNZW1vcnlBbGxvY2F0ZWQpIHtcblxuICAgICAgICBsZXQgcGFyYW1zID0gW107IC8vIGFyZ3VtZW50cyB0aGF0IGFyZSBwdXQgdG8gdGhlIGV4cG9ydGVkIGZ1bmN0aW9uXG4gICAgICAgIGxldCB0eXBlcyA9IFtdOyAvLyB0aGVpciB0eXBlc1xuXG4gICAgICAgIC8vIHByZXBhcmUgZGF0YSB0aGF0IGlzIHB1dCB0byBleHBvcnRlZCBmdW5jdGlvblxuICAgICAgICBmb3IobGV0IGFyZyBvZiBhcmdzKSB7XG4gICAgICAgICAgICBhcmcuY29tcGxlbWVudEFyck9mUGFyYW1zKHBhcmFtcyk7XG4gICAgICAgICAgICBhcmcuY29tcGxlbWVudEFyck9mVHlwZXModHlwZXMpO1xuICAgICAgICAgICAgYXJnLnB1dERhdGFUb0J1ZmZlcihtb2R1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV4dGVuZGVkVHlwZU9mUmV0dXJuID0gKHJldHVyblR5cGUgPT0gJ251bScpID8gJ251bWJlcicgOiBudWxsOyAgIFxuICAgICAgICBcbiAgICAgICAgLy8gY2FsbCBleHBvcnRlZCBmdW5jdGlvblxuICAgICAgICBpZihleHRlbmRlZFR5cGVPZlJldHVybilcbiAgICAgICAgICAgIHJlc3VsdCA9IG1vZHVsZS5jY2FsbChjRnVuY05hbWUsIGV4dGVuZGVkVHlwZU9mUmV0dXJuLCB0eXBlcywgcGFyYW1zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzdWx0ID0gbW9kdWxlLmNjYWxsKGNGdW5jTmFtZSwgZXh0ZW5kZWRUeXBlT2ZSZXR1cm4sIHR5cGVzLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgLy8gdXBkYXRlIGFuZCBnZXQgZGF0YSBmcm9tIGJ1ZmZlcnMgaWYgcmVxdWlyZWRcbiAgICAgICAgZm9yKGxldCBhcmcgb2YgYXJncylcbiAgICAgICAgICAgIGFyZy5nZXREYXRhRnJvbUJ1ZmZlcihtb2R1bGUpOyAgICAgICBcbiAgICB9XG5cbiAgICAvLyBjbGVhciBidWZmZXJzXG4gICAgZm9yKGxldCBhcmcgb2YgYXJncykgICAgICAgICBcbiAgICAgICAgYXJnLmZyZWVCdWZmZXIobW9kdWxlKTtcblxuICAgIGlmKHJlc3VsdCAhPSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiByZXN1bHQ7ICAgIFxufSAvLyBjcHBGdW5jV3JhcHBlclxuXG5cbi8vIEEgTEFZRVIgQkVUV0VFTiBKUyBBTkQgQ1BQLVdSQVBQRVJcblxuLy8gUGFyYW1ldGVycyBjcmVhdG9yXG5sZXQgUGFyYW0gPSB7XG4gICAgaW50Q29sdW1uIChjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdDb2x1bW4oY29sdW1uLCAnaTMyJyk7XG4gICAgfSxcbiAgICBcbiAgICBuZXdJbnRDb2x1bW4gKG51bU9mUm93cykge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ05ld0NvbHVtbignaTMyJywgbnVtT2ZSb3dzKTtcbiAgICB9LFxuXG4gICAgaW50Q29sdW1ucyhjb2x1bW5zKXtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdDb2x1bW5zKGNvbHVtbnMudG9MaXN0KCksICdpMzInKTtcbiAgICB9LFxuXG4gICAgbmV3SW50Q29sdW1ucyhudW1PZlJvd3MsIG51bU9mQ29sdW1ucykge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ05ld0NvbHVtbnMoJ2kzMicsIG51bU9mUm93cywgbnVtT2ZDb2x1bW5zKTtcbiAgICB9LFxuXG4gICAgZmxvYXRDb2x1bW4gKGNvbHVtbikge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ0NvbHVtbihjb2x1bW4sICdmMzInKTtcbiAgICB9LFxuXG4gICAgbmV3RmxvYXRDb2x1bW4gKG51bU9mUm93cykge1xuICAgICAgICByZXR1cm4gbmV3IEFyZ05ld0NvbHVtbignZjMyJywgbnVtT2ZSb3dzKTtcbiAgICB9LFxuXG4gICAgZmxvYXRDb2x1bW5zKGNvbHVtbnMpe1xuICAgICAgICByZXR1cm4gbmV3IEFyZ0NvbHVtbnMoY29sdW1ucy50b0xpc3QoKSwgJ2YzMicpO1xuICAgIH0sXG5cbiAgICBuZXdGbG9hdENvbHVtbnMobnVtT2ZSb3dzLCBudW1PZkNvbHVtbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmdOZXdDb2x1bW5zKCdmMzInLCBudW1PZlJvd3MsIG51bU9mQ29sdW1ucyk7XG4gICAgfSxcblxuICAgIGludChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcmcobnVtYmVyKTtcbiAgICB9LFxuXG4gICAgbnVtKG51bWJlcikge1xuICAgICAgICByZXR1cm4gbmV3IEFyZyhudW1iZXIpO1xuICAgIH1cbn07XG5cbi8vIFJldHVybiB2YWx1ZSBjcmVhdG9yXG5sZXQgUmV0dXJuID0ge1xuICAgIHRhYmxlRnJvbUNvbHVtbnMoYXJnQ29sdW1ucykge1xuICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGFyZ0NvbHVtbnMuZGF0YSk7XG4gICAgfSxcblxuICAgIG51bShudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9LFxuXG4gICAgaW50KG51bWJlcikge1xuICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH0sXG5cbiAgICBkb3VibGUobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfSxcblxuICAgIGNvbHVtbihhcmdDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGFyZ0NvbHVtbi5kYXRhO1xuICAgIH1cbn07XG5cbi8vIFRoZSBtYWluIHRvb2wgdGhhdCBjb21iaW5lcyBhbGwgdG9nZXRoZXJcbmV4cG9ydCBmdW5jdGlvbiBjYWxsV2FzbShtb2R1bGUsIGZ1bmNOYW1lLCBpbnB1dHMpIHtcbiAgICAvLyBnZXQgc3BlY2lmaWNhdGlvbiBvZiBleHBvcnRlZCBDL0MrKy1mdW5jdGlvblxuICAgIGxldCBmdW5jU3BlY2lmaWNhdGlvbiA9IG1vZHVsZVtmdW5jTmFtZV07XG5cbiAgICAvLyBnZXQgYXJndW1uZXRzXG4gICAgbGV0IGFyZ3MgPSBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHM7IFxuXG4gICAgLy8gYXJyYXkgb2YgYXJndW1lbnRzIHRoYXQgZnVydGhlciBhcmUgdXNlZCBieSBjcHAtd3JhcHBlclxuICAgIGxldCBjcHBGdW5jSW5wdXQgPSBbXTtcblxuICAgIC8vIGNvbXBsZXRlIGFuIGlucHV0IGZvciBjcHBcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yKGxldCBrZXkgaW4gYXJncyl7XG4gICAgICAgIGxldCBhcmcgPSBhcmdzW2tleV07IFxuICAgICAgICBcbiAgICAgICAgLy8gc2tpcCBhdXhpbGlyeSBlbGVtZW50XG4gICAgICAgIGlmKGtleSA9PSAnX2NhbGxSZXN1bHQnKSAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBhbiBhcmd1bWVudFxuICAgICAgICBzd2l0Y2goYXJnLnR5cGUpe1xuICAgICAgICAgICAgY2FzZSAnZmxvYXRDb2x1bW5zJzpcbiAgICAgICAgICAgIGNhc2UgJ2ludCc6XG4gICAgICAgICAgICBjYXNlICdudW0nOlxuICAgICAgICAgICAgY2FzZSAnZmxvYXRDb2x1bW4nOlxuICAgICAgICAgICAgY2FzZSAnaW50Q29sdW1uJzpcbiAgICAgICAgICAgIGNhc2UgJ2ludENvbHVtbnMnOlxuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0gUGFyYW1bYXJnLnR5cGVdKGlucHV0c1tpXSk7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbmV3RmxvYXRDb2x1bW5zJzpcbiAgICAgICAgICAgIGNhc2UgJ25ld0ludENvbHVtbnMnOlxuICAgICAgICAgICAgICAgIGxldCB2YWwxID0gYXJnc1sgYXJnWydudW1PZlJvd3MnXVsncmVmJ10gXS5kYXRhW2FyZ1snbnVtT2ZSb3dzJ11bJ3ZhbHVlJ11dO1xuICAgICAgICAgICAgICAgIGxldCB2YWwyID0gYXJnc1sgYXJnWydudW1PZkNvbHVtbnMnXVsncmVmJ10gXS5kYXRhW2FyZ1snbnVtT2ZDb2x1bW5zJ11bJ3ZhbHVlJ11dO1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0gUGFyYW1bYXJnLnR5cGVdKHZhbDEsIHZhbDIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbmV3RmxvYXRDb2x1bW4nOlxuICAgICAgICAgICAgY2FzZSAnbmV3SW50Q29sdW1uJzpcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gYXJnc1sgYXJnWydudW1PZlJvd3MnXVsncmVmJ10gXS5kYXRhW2FyZ1snbnVtT2ZSb3dzJ11bJ3ZhbHVlJ11dO1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0gUGFyYW1bYXJnLnR5cGVdKHZhbCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IC8vIHN3aXRjaFxuXG4gICAgICAgIGNwcEZ1bmNJbnB1dC5wdXNoKGFyZ3Nba2V5XS5kYXRhKTtcblxuICAgIH0gLy8gZm9yIGtleSAgICBcblxuICAgIC8vIENBTEwgRVhQT1JURUQgQ1BQLUZVTkNUSU9OXG4gICAgbGV0IGNhbGxSZXN1bHQgPSBjcHBGdW5jV3JhcHBlcihtb2R1bGUsIGZ1bmNOYW1lLCAnbnVtJywgY3BwRnVuY0lucHV0KTtcblxuICAgIC8vIHN0b3JlIHJlc3VsdCB0aGF0IGlzIHJldHVybmVkIGJ5IGV4cG9ydGVkIGNwcC1mdW5jdGlvblxuICAgIGFyZ3MuX2NhbGxSZXN1bHQgPSBQYXJhbS5udW0oY2FsbFJlc3VsdCk7XG5cbiAgICAvLyBjcmVhdGUgb3V0cHV0XG4gICAgbGV0IG91dHB1dCA9IGZ1bmNTcGVjaWZpY2F0aW9uLm91dHB1dDtcblxuICAgIC8vIGlmIGEgc2luZ2xlIG9iamVjdCBtdXN0IGJlIHJldHVybmVkXG4gICAgaWYob3V0cHV0Wyd0eXBlJ10gIT0gJ29iamVjdHMnKVxuICAgICAgcmV0dXJuIFJldHVybltvdXRwdXRbJ3R5cGUnXV0oYXJnc1tvdXRwdXRbJ3NvdXJjZSddXS5kYXRhKTtcblxuICAgIGxldCBhcnJheVRvUmV0dXJuID0gW107XG5cbiAgICAvLyBwdXNoIGRhdGEgb2YgdGhlIHJlcXVpcmVkIGFyZ3VtZW50c1xuICAgIGZvcihsZXQgbmFtZSBvZiBvdXRwdXRbJ3NvdXJjZSddKVxuICAgICAgYXJyYXlUb1JldHVybi5wdXNoKGFyZ3NbbmFtZV0uZGF0YS5kYXRhKTtcblxuICAgIHJldHVybiBhcnJheVRvUmV0dXJuO1xuICB9IC8vIGNhbGxXYXNtIiwiLy8gVXRpbGl0aWVzIGZvciBjYWxsaW5nIHdhc20tZnVuY3Rpb25zIHZpYSB3ZWJ3b3JrZXIuXG5cbi8vIFdlIHVzZSBhbiBhcHByb2FjaCB0aGF0IGlzIHdlbGwgZGVzY3JpYmVkIGhlcmU6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG4vLyBJdCBoYXMgYmVlbiBtb2RpZmllZCBmb3IgdXNhZ2UgaW4gREFUQUdST0suXG5cbi8vIENvbnN0YW50cyBmb3Igd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VycyBydW50aW1lIHN5c3RlbVxuY29uc3QgVFlQRSA9ICd0eXBlJztcbmNvbnN0IE5VTV9UWVBFID0gJ251bSc7XG5jb25zdCBGTE9BVF9DT0xVTU5fVFlQRSA9ICdmbG9hdENvbHVtbic7XG5jb25zdCBJTlRfQ09MVU1OX1RZUEUgPSAnaW50Q29sdW1uJztcbmNvbnN0IEZMT0FUX0NPTFVNTlNfVFlQRSA9ICdmbG9hdENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRSA9ICduZXdGbG9hdENvbHVtbnMnO1xuY29uc3QgSU5UX0NPTFVNTlNfVFlQRSA9ICdpbnRDb2x1bW5zJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OU19UWVBFID0gJ25ld0ludENvbHVtbnMnO1xuY29uc3QgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFID0gJ25ld0Zsb2F0Q29sdW1uJztcbmNvbnN0IE5FV19JTlRfQ09MVU1OX1RZUEUgPSAnbmV3SW50Q29sdW1uJztcbmNvbnN0IENPTFVNTiA9ICdjb2x1bW4nO1xuY29uc3QgQ0FMTF9SRVNVTFQgPSAnX2NhbGxSZXN1bHQnO1xuY29uc3QgTlVNX09GX1JPV1MgPSAnbnVtT2ZSb3dzJztcbmNvbnN0IE5VTV9PRl9DT0xVTU5TID0gJ251bU9mQ29sdW1ucyc7XG5jb25zdCBSRUYgPSAncmVmJztcbmNvbnN0IFZBTFVFID0gJ3ZhbHVlJztcbmNvbnN0IFRBQkxFX09GX0NPTFVNTlMgPSAndGFibGVGcm9tQ29sdW1ucyc7XG5jb25zdCBPQkpFQ1RTID0gJ29iamVjdHMnO1xuY29uc3QgSU5UX1RZUEUgPSAnaW50JztcbmNvbnN0IERPVUJMRV9UWVBFID0gJ2RvdWJsZSc7XG5jb25zdCBOVU1CRVIgPSAnbnVtYmVyJztcblxuLy8gVHlwZS10by1oZWFwIGNvcnJlc3BvbmRlbmNlLlxuLy8gSXQgaXMgcmVxdWlyZWQgZm9yIEpTLW1vZHVsZSBnZW5lcmF0ZWQgYnkgRW1zY3JpcHRlbixcbi8vIGFuZCBpdCBpcyB1c2VkLCB3aGVuIHBhc3NpbmcgYXJyYXkgZGF0YSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3XG5jb25zdCBoZWFwTWFwID0ge1xuICAgICAgICAgICAgICAgICAnaW50Q29sdW1uJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbnMnOiBcIkhFQVBGMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IFwiSEVBUEYzMlwiLFxuICAgICAgICAgICAgICAgICAnaW50Q29sdW1ucyc6IFwiSEVBUDMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogXCJIRUFQMzJcIixcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogXCJIRUFQRjMyXCIsXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiBcIkhFQVAzMlwiXG4gICAgICAgICAgICAgICAgfTtcblxuLy8gVHlwZSBzaWduYXR1cmUgdG8gdHlwZWQgYXJyYXkgbWFwLlxuLy8gSXQgaXMgdXNlZCwgd2hlbiBtYW5pcHVsYXRpbmcgY29sdW1uKHMpLlxuY29uc3QgdHlwZU1hcCA9IHtcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbic6IEludDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICdmbG9hdENvbHVtbic6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiBJbnQzMkFycmF5LCAgXG4gICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogSW50MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogRmxvYXQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogSW50MzJBcnJheVxuICAgICAgICAgICAgICAgIH07IFxuXG4vLyBUeXBlLXRvLXNoaWZ0IG1hcC5cbi8vIEl0IGlzIHVzZWQsIHdoZW4gcGFzc2luZyBhcnJheSB0by9mcm9tIHdhc20tZnVuY3Rpb25zLlxuLy8gTW9yZSBpbmZvIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIGxpbms6XG4vLyBodHRwczovL2JlY29taW5naHVtYW4uYWkvcGFzc2luZy1hbmQtcmV0dXJuaW5nLXdlYmFzc2VtYmx5LWFycmF5LXBhcmFtZXRlcnMtYTBmNTcyYzY1ZDk3IFxuY29uc3Qgc2hpZnRNYXAgPSB7J2ludENvbHVtbic6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2Zsb2F0Q29sdW1uJzogMiwgXG4gICAgICAgICAgICAgICAgICAnZmxvYXRDb2x1bW5zJzogMiwgIFxuICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1ucyc6IDIsIFxuICAgICAgICAgICAgICAgICAgJ2ludENvbHVtbnMnOiAyLCAgXG4gICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6IDIsXG4gICAgICAgICAgICAgICAgICAnbmV3RmxvYXRDb2x1bW4nOiAyLFxuICAgICAgICAgICAgICAgICAgJ25ld0ludENvbHVtbic6IDJcbiAgICAgICAgICAgICAgICAgfTsgICAgICAgICBcblxuLy8gR2V0IGlucHV0IGZvciBDKystZnVuY3Rpb24uXG4vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIHNwZWNpZmljYXRpb24gb2YgYXJndW1lbnRzIChhcmdzU3BlY2lmaWNhdGlvbikgJiBpbnB1dCBkYXRhIChpbnB1dFZhbHMpXG4vLyBhbmQgcmV0dXJucyBpbnB1dCB0aGF0IHdpbGwgYmUgZnVydGhlciB1c2VkIGluIGNwcC93YXNtLWZ1bmN0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGdldENwcElucHV0KGFyZ3NTcGVjaWZpY2F0aW9uLCBpbnB1dFZhbHMpIHtcbiAgICBsZXQgY3BwRnVuY0lucHV0ID0gW107XG4gICAgbGV0IHJlZjtcblxuICAgIC8vIGNvbXBsZXRlIGFuIGlucHV0IGZvciBjcHBcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yKGNvbnN0IGtleSBpbiBhcmdzU3BlY2lmaWNhdGlvbikge1xuICAgICAgICBjb25zdCBhcmcgPSBhcmdzU3BlY2lmaWNhdGlvbltrZXldOyBcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuICAgICAgICBcbiAgICAgICAgLy8gc2tpcCBhdXhpbGlyeSBlbGVtZW50XG4gICAgICAgIGlmKGtleSA9PT0gQ0FMTF9SRVNVTFQpICAgICAgICAgICAgIFxuICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgLy8gaGVyZSwgd2UgY29uc2lkZXIgZWFjaCB0eXBlIG9mIGlucHV0XG4gICAgICAgIHN3aXRjaCh0eXBlKSB7ICAgICAgICAgICBcbiBcbiAgICAgICAgICAgIC8vIG51bWJlcnNcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmRhdGEgPSBpbnB1dFZhbHNbaV07XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcblxuICAgICAgICAgICAgICAgIGxldCBhcnJheTtcblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgT0sgaWYgdHlwZSBvZiBjb2x1bW4gYW5kIHRhcmdldCB0eXBlIGNvaW5zaWRlXG4gICAgICAgICAgICAgICAgLy9hcnJheSA9IGlucHV0VmFsc1tpXS5nZXRSYXdEYXRhKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgY29sID0gaW5wdXRWYWxzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gaGVyZSwgd2UgY2hlY2sgdHlwZXMgYW5kIHBlcmZvcm0gYW4gYXBwcm9wcmlhdGUgdHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgaWYoICggKGNvbC50eXBlID09PSBJTlRfVFlQRSkgJiYgKHR5cGUgPT09IElOVF9DT0xVTU5fVFlQRSkgKSBcbiAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgYXJyYXkgPSBuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKTtcblxuICAgICAgICAgICAgICAgIC8qaWYoKChjb2wudHlwZSA9PSAnaW50JykgJiYgKHR5cGUgPT0gSU5UX0NPTFVNTl9UWVBFKSkgXG4gICAgICAgICAgICAgICAgICAgICB8fCAoKGNvbC50eXBlID09ICdkb3VibGUnKSAmJiAodHlwZSA9PSBGTE9BVF9DT0xVTU5fVFlQRSkpKVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IGNvbC5nZXRSYXdEYXRhKCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBhcnJheSA9IG5ldyB0eXBlTWFwW3R5cGVdKGNvbC5nZXRSYXdEYXRhKCkpOyovXG5cbiAgICAgICAgICAgICAgICAvLyBjaGVjayB0eXBlc1xuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXknOiBhcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bU9mUm93cyc6IGFycmF5Lmxlbmd0aH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gbmV3IGNvbHVtbiBcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAwOyAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfUk9XU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIGlmIChhcmdzU3BlY2lmaWNhdGlvbltyZWZdLnR5cGUgPT09IE5VTV9UWVBFKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGFbYXJnW05VTV9PRl9ST1dTXVtWQUxVRV1dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyBvciBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBbXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIE9LIGlmIHR5cGUgb2YgY29sdW1ucyBhbmQgdGFyZ2V0IHR5cGUgY29pbnNpZGVcbiAgICAgICAgICAgICAgICAvL2ZvcihsZXQgY29sIG9mIGlucHV0VmFsc1tpXS50b0xpc3QoKSlcbiAgICAgICAgICAgICAgICAvLyAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBoZXJlLCB3ZSBjaGVjayB0eXBlcyBhbmQgcGVyZm9ybSBhbiBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1cbiAgICAgICAgICAgICAgICBmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICBpZiggKCAoY29sLnR5cGUgPT09IElOVF9UWVBFKSAmJiAodHlwZSA9PT0gSU5UX0NPTFVNTl9UWVBFKSApIFxuICAgICAgICAgICAgICAgICAgICB8fCAoIChjb2wudHlwZSA9PT0gRE9VQkxFX1RZUEUpICYmICh0eXBlID09PSBGTE9BVF9DT0xVTU5fVFlQRSkgKSApXG4gICAgICAgICAgICAgICAgICAgIGFycmF5cy5wdXNoKGNvbC5nZXRSYXdEYXRhKCkpO1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLypmb3IobGV0IGNvbCBvZiBpbnB1dFZhbHNbaV0udG9MaXN0KCkpXG4gICAgICAgICAgICAgICAgICAgIGlmKCgoY29sLnR5cGUgPT0gJ2ludCcpICYmICh0eXBlID09IElOVF9DT0xVTU5fVFlQRSkpIFxuICAgICAgICAgICAgICAgICAgICAgIHx8ICgoY29sLnR5cGUgPT0gJ2RvdWJsZScpICYmICh0eXBlID09IEZMT0FUX0NPTFVNTl9UWVBFKSkpXG4gICAgICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goY29sLmdldFJhd0RhdGEoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBhcnJheXMucHVzaChuZXcgdHlwZU1hcFt0eXBlXShjb2wuZ2V0UmF3RGF0YSgpKSk7Ki9cblxuICAgICAgICAgICAgICAgIGFyZy5kYXRhID0geyAnYXJyYXlzJzogYXJyYXlzLFxuICAgICAgICAgICAgICAgICAgICAnbnVtT2ZSb3dzJzogYXJyYXlzWzBdLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgJ251bU9mQ29sdW1ucyc6IGFycmF5cy5sZW5ndGh9O1xuXG4gICAgICAgICAgICAgICAgaSsrOyAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zIG9yIG5ldyBjb2x1bW5fbGlzdFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgdmFsMSA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHZhbDIgPSAwO1xuXG4gICAgICAgICAgICAgICAgcmVmID0gYXJnW05VTV9PRl9ST1dTXVtSRUZdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDEgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwxID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfUk9XU11bVkFMVUVdXTtcblxuICAgICAgICAgICAgICAgIHJlZiA9IGFyZ1tOVU1fT0ZfQ09MVU1OU11bUkVGXTtcblxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1JlZjonKTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlZik7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3NTcGVjaWZpY2F0aW9uW3JlZl0udHlwZSA9PT0gTlVNX1RZUEUpXG4gICAgICAgICAgICAgICAgICAgIHZhbDIgPSBhcmdzU3BlY2lmaWNhdGlvbltyZWZdLmRhdGE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB2YWwyID0gYXJnc1NwZWNpZmljYXRpb25bcmVmXS5kYXRhW2FyZ1tOVU1fT0ZfQ09MVU1OU11bVkFMVUVdXTsgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBhcmcuZGF0YSA9IHsnbnVtT2ZSb3dzJzogdmFsMSxcbiAgICAgICAgICAgICAgICAgICdudW1PZkNvbHVtbnMnOiB2YWwyfTtcblxuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICBcblxuICAgICAgICAgICAgZGVmYXVsdDogXG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBUT0RPOiBzcGVjaWZ5IGJlaGF2aW91ciAgICAgICAgICAgXG4gICAgICAgICAgICB9IC8vIHN3aXRjaCAgICAgICAgXG5cbiAgICAgICAgY3BwRnVuY0lucHV0LnB1c2goYXJnKTtcbiAgICB9IC8vIGZvciBrZXlcblxuICAgIC8vY29uc29sZS5sb2coJ2NwcEZ1bmNJbnB1dDonKTtcbiAgICAvL2NvbnNvbGUubG9nKGNwcEZ1bmNJbnB1dCk7XG5cbiAgICByZXR1cm4gY3BwRnVuY0lucHV0O1xufSAvLyBnZXRDcHBJbnB1dFxuXG4vLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIGJ1ZmZlcnMgZm9yIGFycmF5IGRhdGFcbmZ1bmN0aW9uIGFsbG9jYXRlTWVtb3J5Rm9yQnVmZmVyKG1vZHVsZSwgaW5wdXRzKSB7XG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHsgXG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2godHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOiBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuZGF0YS5idWYgPSBtb2R1bGUuX21hbGxvYyhhcmcuZGF0YS5udW1PZlJvd3MgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6ICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOiAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTogLy8gYWxsb2NhdGlvbiBtZW1vcnkgZm9yIGNvbHVtbnMgdGhhdCBhcmUgY3JlYXRlZFxuICAgICAgICAgICAgICAgIGFyZy5kYXRhLmJ1ZiA9IG1vZHVsZS5fbWFsbG9jKGFyZy5kYXRhLm51bU9mUm93cyAqIGFyZy5kYXRhLm51bU9mQ29sdW1ucyBcbiAgICAgICAgICAgICAgICAgICAgKiB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gVE9ETzogcHJvY2VzcyBvdGhlciBjYXNlcyBhbmQgbWlzdGFrZXNcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICB9ICBcbiAgICB9XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygnaW5wdXRzIGFmdGVyIG1lbW9yeSBhbGxvY2F0aW9uOicpO1xuICAgIC8vY29uc29sZS5sb2coaW5wdXRzKTtcbn0gLy8gYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXJcblxuLy8gR2V0IGFycmF5IG9mIHZhbHVlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVBhcmFtcyhpbnB1dHMpIHtcbiAgICBsZXQgcGFyYW1zID0gW107XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcblxuICAgICAgICAgICAgLy8gbnVtYmVyc1xuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy8gY29sdW1uICYgbmV3IGNvbHVtblxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEuYnVmKTsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6IFxuICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZy5kYXRhLmJ1Zik7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goYXJnLmRhdGEubnVtT2ZSb3dzKTtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChhcmcuZGF0YS5udW1PZkNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbn0gLy8gZ2V0QXJyT2ZXYXNtUGFyYW1zXG5cbi8vIEdldCBhcnJheSBvZiB0eXBlcyB0aGF0IGFyZSBwdXQgdG8gd2FzbS1mdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEFyck9mV2FzbVR5cGVzKGlucHV0cykge1xuICAgIGxldCB0eXBlcyA9IFtdO1xuXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgc3dpdGNoIChhcmcudHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4gJiBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1ucyAmIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChOVU1CRVIpO1xuICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goTlVNQkVSKTtcbiAgICAgICAgICAgICAgICB0eXBlcy5wdXNoKE5VTUJFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVzO1xufSAvLyBnZXRBcnJPZldhc21UeXBlc1xuXG4vLyBQdXQgYXJyYXkgZGF0YSB0byBidWZmZXJcbmZ1bmN0aW9uIHB1dERhdGFUb0J1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGxldCBzaGlmdDtcbiAgICBsZXQgaGVhcDsgICAgXG4gICAgXG4gICAgZm9yKGNvbnN0IGFyZyBvZiBpbnB1dHMpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGFyZy50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkgeyAvLyBQcm9jZXNzIGVhY2ggdHlwZSBvZiBpbnB1dFxuXG4gICAgICAgICAgICAvLyBudW1iZXJzXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gY29sdW1uXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHNoaWZ0ID0gc2hpZnRNYXBbdHlwZV07XG4gICAgICAgICAgICAgICAgaGVhcCA9IG1vZHVsZVtoZWFwTWFwW3R5cGVdXTsgIFxuICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFyZy5kYXRhLmFycmF5LCBhcmcuZGF0YS5idWYgPj4gc2hpZnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIElOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgICAgICBzaGlmdCA9IHNoaWZ0TWFwW3R5cGVdO1xuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICAgICAgICAgIGxldCBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IG51bU9mQ29sdW1ucyA9IGFyZy5kYXRhLm51bU9mQ29sdW1ucztcbiAgICAgICAgICAgICAgICBsZXQgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIGxldCBhcnJheXMgPSBhcmcuZGF0YS5hcnJheXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2x1bW5zOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGhlYXAuc2V0KGFycmF5c1tpXSwgKGJ1ZiArIGkgKiBudW1PZlJvd3MgKiBudW1PZkJ5dGVzKSA+PiBzaGlmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uKHMpXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn0gLy8gcHV0RGF0YVRvQnVmZmVyXG5cbi8vIEdldCBhcnJheSBkYXRhIGZyb20gYnVmZmVyLlxuZnVuY3Rpb24gZ2V0RGF0YUZyb21CdWZmZXIobW9kdWxlLCBpbnB1dHMpIHtcblxuICAgIGxldCBoZWFwO1xuICAgIGxldCBudW1PZlJvd3M7XG4gICAgbGV0IG51bU9mQ29scztcbiAgICBsZXQgbnVtT2ZCeXRlczsgICAgXG4gICAgbGV0IGJ1ZjtcblxuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHsgLy8gUHJvY2VzcyBlYWNoIHR5cGUgb2YgaW5wdXRcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gbnVtYmVyXG4gICAgICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRE9VQkxFX1RZUEU6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIGNvbHVtbihzKVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5TX1RZUEU6ICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTogICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5cbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIGhlYXAgPSBtb2R1bGVbaGVhcE1hcFt0eXBlXV07XG4gICAgICAgICAgICAgICAgbnVtT2ZSb3dzID0gYXJnLmRhdGEubnVtT2ZSb3dzO1xuICAgICAgICAgICAgICAgIG51bU9mQnl0ZXMgPSB0eXBlTWFwW3R5cGVdLkJZVEVTX1BFUl9FTEVNRU5UOyAgICBcbiAgICAgICAgICAgICAgICBidWYgPSBhcmcuZGF0YS5idWY7XG4gICAgICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqXTtcblxuICAgICAgICAgICAgICAgIGFyZy5hcnJheSA9IGFycmF5O1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOiBcbiAgICAgICAgICAgICAgICBoZWFwID0gbW9kdWxlW2hlYXBNYXBbdHlwZV1dO1xuICAgICAgICAgICAgICAgIG51bU9mUm93cyA9IGFyZy5kYXRhLm51bU9mUm93cztcbiAgICAgICAgICAgICAgICBudW1PZkNvbHMgPSBhcmcuZGF0YS5udW1PZkNvbHVtbnM7XG4gICAgICAgICAgICAgICAgbnVtT2ZCeXRlcyA9IHR5cGVNYXBbdHlwZV0uQllURVNfUEVSX0VMRU1FTlQ7ICAgIFxuICAgICAgICAgICAgICAgIGJ1ZiA9IGFyZy5kYXRhLmJ1ZjtcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXlzID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtT2ZDb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICBsZXQgYXJyID0gbmV3IHR5cGVNYXBbdHlwZV0obnVtT2ZSb3dzKTtcblxuICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBudW1PZlJvd3M7IGorKylcbiAgICAgICAgICAgICAgICAgICAgICBhcnJbal0gPSBoZWFwW2J1ZiAvIG51bU9mQnl0ZXMgKyBqICsgaSAqIG51bU9mUm93c107ICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgYXJyYXlzLnB1c2goYXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhcmcuYXJyYXlzID0gYXJyYXlzO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSAgICAgICAgICAgIFxufSAvLyBnZXREYXRhRnJvbUJ1ZmZlclxuXG4vLyBDbGVhciBtZW1vcnkgYWxsb2NhdGVkIGZvciBhcnJheSBkYXRhXG5mdW5jdGlvbiBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGlucHV0cykge1xuICAgIGZvcihjb25zdCBhcmcgb2YgaW5wdXRzKSBcbiAgICAgICAgc3dpdGNoKGFyZy50eXBlKSB7IC8vIHByb2Nlc3MgZWFjaCB0eXBlIG9mIGlucHV0XG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBlYWNoIG5vbi1udW1iZXIgY2FzZVxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTl9UWVBFOiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIEZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0ZMT0FUX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgICAgIG1vZHVsZS5fZnJlZShhcmcuZGF0YS5idWYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgIH0gICAgXG59IC8vIGNsZWFyTWVtb3J5Rm9yQnVmZmVyXG5cbi8vIEV4dHJhY3QgbmV3bHkgY3JlYXRlZCBkYXRhOiBuZXcgY29sdW1uKHMpIGFyZSBjcmVhdGVkXG5mdW5jdGlvbiBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbkFyZ3MsIGFyZ3NBZnRlcldhc21DYWxsKSB7XG4gICAgLy8gdHlwZS10by1jb2x1bW5fY3JlYXRvciBtYXBcbiAgICBjb25zdCB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwID0geyduZXdGbG9hdENvbHVtbnMnOiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW5zJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1uJzogREcuQ29sdW1uLmZyb21JbnQzMkFycmF5fTtcblxuICAgIGxldCBpID0gMDtcblxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSBcbiAgICB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaChhcmcudHlwZSl7IC8vIFByb2Nlc3MgZWFjaCB0eXBlXG5cbiAgICAgICAgICAgIC8vIG51bWJlclxuICAgICAgICAgICAgY2FzZSBOVU1fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX1RZUEU6XG4gICAgICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBjb2x1bW4ocylcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBJTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBuZXcgY29sdW1uXG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBsZXQgbmFtZTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWUgPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gKDApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBcbiAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBhcmcubmFtZTtcblxuICAgICAgICAgICAgICAgIGFyZy5jb2x1bW4gPSB0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lLFxuICAgICAgICAgICAgICAgICAgICBhcmdzQWZ0ZXJXYXNtQ2FsbFtpXS5hcnJheSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIG5ldyBjb2x1bW5zXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgY2FzZSBORVdfRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gW107XG4gICAgICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgIC8vIHNwZWNpZnkgbmFtZSBmb3IgY29sdW1uXG4gICAgICAgICAgICAgICAgaWYoYXJnLm5hbWVzID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrID0gMTsgayA8PSBsZW5ndGg7IGsrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goKGspLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIGVsc2UgbmFtZXMgPSBhcmcubmFtZXM7XG5cbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0eXBlVG9Db2x1bW5DcmVhdG9yTWFwW2FyZy50eXBlXShuYW1lc1tqXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NBZnRlcldhc21DYWxsW2ldLmFycmF5c1tqXSkpO1xuXG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBjb2x1bW5zO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBwcm9jZXNzIG90aGVyIGNhc2VzIGFuZCBtaXN0YWtlc1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGkrKztcbiAgICB9XG59IC8vIGV4dHJhY3ROZXdseUNyZWF0ZWREYXRhXG5cbi8vIEdldCBvdXRwdXQgZGF0YTogb3ZlcmFsbCBvdXRwdXQgaXMgY3JlYXRlZFxuZnVuY3Rpb24gZ2V0T3V0cHV0KGZ1bmNTcGVjaWZpY2F0aW9uKSB7ICBcbiAgICBsZXQgb3V0cHV0ID0gZnVuY1NwZWNpZmljYXRpb24ub3V0cHV0O1xuICAgIFxuICAgIGNvbnN0IHR5cGVUb0RhdGFGaWVsZE1hcCA9IHsnbmV3RmxvYXRDb2x1bW5zJzogJ2NvbHVtbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV3SW50Q29sdW1ucyc6ICdjb2x1bW5zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ld0Zsb2F0Q29sdW1uJzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXdJbnRDb2x1bW4nOiAnY29sdW1uJ307XG5cbiAgICBzd2l0Y2gob3V0cHV0LnR5cGUpIHtcblxuICAgICAgICBjYXNlIE5VTV9UWVBFOlxuICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICBjYXNlIERPVUJMRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MVU1OOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW47XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFRBQkxFX09GX0NPTFVNTlM6XG4gICAgICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKGZ1bmNTcGVjaWZpY2F0aW9uLmFyZ3VtZW50c1tvdXRwdXQuc291cmNlXS5jb2x1bW5zKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT0JKRUNUUzpcbiAgICAgICAgICAgIGxldCBhcnJheVRvUmV0dXJuID0gW107XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIHB1c2ggZGF0YSBvZiB0aGUgcmVxdWlyZWQgYXJndW1lbnRzXG4gICAgICAgICAgICBmb3IobGV0IG5hbWUgb2Ygb3V0cHV0LnNvdXJjZSkge1xuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHNbbmFtZV07XG4gICAgICAgICAgICAgICAgYXJyYXlUb1JldHVybi5wdXNoKGFyZ1t0eXBlVG9EYXRhRmllbGRNYXBbYXJnLnR5cGVdXSk7XG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICByZXR1cm4gYXJyYXlUb1JldHVybjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG5cbn0gLy8gZ2V0T3V0cHV0XG5cbi8vIENsZWFyIG5ld2x5IGNyZWF0ZWQgZGF0YSBmaWVsZHMgKG5ldyBjb2x1bW4ocykpXG5mdW5jdGlvbiBjbGVhck5ld2x5Q3JlYXRlZERhdGEoZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7IFxuICAgIGZvcihjb25zdCBrZXkgaW4gZnVuY1NwZWNpZmljYXRpb25BcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZyA9IGZ1bmNTcGVjaWZpY2F0aW9uQXJnc1trZXldO1xuXG4gICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTlVNX1RZUEU6XG4gICAgICAgICAgICBjYXNlIElOVF9UWVBFOlxuICAgICAgICAgICAgY2FzZSBET1VCTEVfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBGTE9BVF9DT0xVTU5fVFlQRTogICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgSU5UX0NPTFVNTlNfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgRkxPQVRfQ09MVU1OU19UWVBFOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIE5FV19JTlRfQ09MVU1OX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5fVFlQRTpcbiAgICAgICAgICAgICAgICBhcmcuY29sdW1uID0gbnVsbDsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgTkVXX0lOVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICBjYXNlIE5FV19GTE9BVF9DT0xVTU5TX1RZUEU6XG4gICAgICAgICAgICAgICAgYXJnLmNvbHVtbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIFRPRE86IHByb2Nlc3Mgb3RoZXIgY2FzZXMgYW5kIG1pc3Rha2VzXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufSAvLyBjbGVhck5ld2x5Q3JlYXRlZERhdGFcblxuLy8gVEhFIE1BSU4gRlVOQ1RJT046IGEgd3JhcHBlciBmb3IgQysrLWZ1bmN0aW9uIGNhbGxcbmV4cG9ydCBmdW5jdGlvbiBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgY3BwRnVuY05hbWUsIHJldHVyblR5cGUpIHtcbiAgICAvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIGFycmF5cyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgYWxsb2NhdGVNZW1vcnlGb3JCdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIHB1dCBkYXRhIChqdXN0IGNvbHVtbihzKSkgdG8gYWxsb2NhdGVkIGJ1ZmZlcnNcbiAgICBwdXREYXRhVG9CdWZmZXIobW9kdWxlLCBhcmdzKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBDKystZnVuY3Rpb25cbiAgICBsZXQgcGFyYW1zID0gZ2V0QXJyT2ZXYXNtUGFyYW1zKGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygncGFyYW1zOicpO1xuICAgIC8vY29uc29sZS5sb2cocGFyYW1zKTtcblxuICAgIC8vIGNyZWF0ZSBhcnJheSBvZiBwYXJhbWV0ZXJzJyB0eXBlcyB0aGF0IGFyZSBwYXNzZWQgdG8gQysrLWZ1bmN0aW9uXG4gICAgbGV0IHR5cGVzID0gZ2V0QXJyT2ZXYXNtVHlwZXMoYXJncyk7XG4gICAgXG4gICAgLy9jb25zb2xlLmxvZygndHlwZXM6Jyk7XG4gICAgLy9jb25zb2xlLmxvZyh0eXBlcyk7XG5cbiAgICAvLyBjYWxsIHdhc20tZnVuY3Rpb25cbiAgICBsZXQgcmVzdWx0ID0gbW9kdWxlLmNjYWxsKGNwcEZ1bmNOYW1lLCByZXR1cm5UeXBlLCB0eXBlcywgcGFyYW1zKTtcbiAgICBcbiAgICAvL2NvbnNvbGUubG9nKHJlc3VsdCk7XG5cbiAgICAvLyBnZXQgZGF0YSBmcm9tIGJ1ZmZlcnMgKGp1c3QgY29sdW1uKHMpKVxuICAgIGdldERhdGFGcm9tQnVmZmVyKG1vZHVsZSwgYXJncyk7ICAgICAgICBcblxuICAgIC8vIGNsZWFyIG1lbW9yeSB0aGF0IHdhcyBwcmV2aW91c2VseSBhbGxvY2F0ZWRcbiAgICBjbGVhck1lbW9yeUZvckJ1ZmZlcihtb2R1bGUsIGFyZ3MpO1xuXG4gICAgLy9jb25zb2xlLmxvZygnZG9uZScpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0IHRoZSByZXF1aXJlZCBvdXRwdXQuXG4vLyBJdCB0YWtlcyBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgZGF0YSBjb21wdXRlZFxuLy8gYW5kIGV4dHJhY3RzIHRoZSByZXF1aXJlZCByZXN1bHRzLlxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3VsdChmdW5jU3BlY2lmaWNhdGlvbiwgZGF0YUZyb21XZWJXb3JrZXIpIHtcbiAgICBmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMuX2NhbGxSZXN1bHQgPSBkYXRhRnJvbVdlYldvcmtlci5jYWxsUmVzdWx0OyAgXG5cbiAgICBleHRyYWN0TmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMsIGRhdGFGcm9tV2ViV29ya2VyLmFyZ3MpOyAgICBcblxuICAgIGxldCBvdXRQdXQgPSBnZXRPdXRwdXQoZnVuY1NwZWNpZmljYXRpb24pO1xuXG4gICAgLy8gQmVsb3csIHdlIHJlbW92ZSBuZXdseSBjcmVhdGVkIGNvbHVtbihzKSwgd2hpY2ggYXJlIGNyZWF0ZWQgYXQgdGhlIGV4dHJhY3Rpb24tc3RlcC5cbiAgICAvLyBJdCBpcyBlc3BlY2lhbGx5IHJlcXVpcmVkLCB3aGVuIG11bHRpcGxlIGNhbGwgb2Ygd2FzbS1mdW5jdGlvbnMgaW4gd2Vid29ya2VyLlxuICAgIGNsZWFyTmV3bHlDcmVhdGVkRGF0YShmdW5jU3BlY2lmaWNhdGlvbi5hcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG91dFB1dDtcbn0iLCIvKipcbiAqIERlbm90ZXMgYSB2ZWN0b3Igb2YgZmxvYXRpbmcgcG9pdCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvclxuICogQGV4dGVuZHMge0Zsb2F0MzJBcnJheX1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvciBleHRlbmRzIEZsb2F0MzJBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgYSB0d28tZGltZW5zaW9uYWwgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBNYXRyaXhcbiAqIEBleHRlbmRzIHtBcnJheTxWZWN0b3I+fVxuICovXG5leHBvcnQgY2xhc3MgTWF0cml4IGV4dGVuZHMgQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGNhcnRlc2lhbiBjb29yZGluYXRlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29vcmRpbmF0ZXNcbiAqIEBleHRlbmRzIHtNYXRyaXh9XG4gKi9cbmV4cG9ydCBjbGFzcyBDb29yZGluYXRlcyBleHRlbmRzIE1hdHJpeCB7XG59XG4vKipcbiAqIERlbm90ZXMgYW4gYXJyYXkgb2YgYXJiaXRyYXJ5LXR5cGVkIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvcnNcbiAqIEBleHRlbmRzIHtBcnJheTxhbnk+fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9ycyBleHRlbmRzIEFycmF5IHtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaUzFrWldOc1lYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUowZVhCbExXUmxZMnhoY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGRlFUczdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxGbEJRVms3UTBGQlJ6dEJRVVV6UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEV0QlFXRTdRMEZCUnp0QlFVVTFRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNWMEZCV1N4VFFVRlJMRTFCUVUwN1EwRkJSenRCUVVVeFF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1QwRkJVU3hUUVVGUkxFdEJRVlU3UTBGQlJ5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5QndiMmwwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVm1WamRHOXlYRzRnS2lCQVpYaDBaVzVrY3lCN1JteHZZWFF6TWtGeWNtRjVmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVm1WamRHOXlJR1Y0ZEdWdVpITWdSbXh2WVhRek1rRnljbUY1SUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnRZWFJ5YVhndVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFMWhkSEpwZUZ4dUlDb2dRR1Y0ZEdWdVpITWdlMEZ5Y21GNVBGWmxZM1J2Y2o1OVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5ZWFJ5YVhnZ1pYaDBaVzVrY3lCQmNuSmhlVHhXWldOMGIzSStJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCallYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpYTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRU52YjNKa2FXNWhkR1Z6WEc0Z0tpQkFaWGgwWlc1a2N5QjdUV0YwY21sNGZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdRMjl2Y21ScGJtRjBaWE1nWlhoMFpXNWtjeUJOWVhSeWFYZ2dlMzFjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdGdUlHRnljbUY1SUc5bUlHRnlZbWwwY21GeWVTMTBlWEJsWkNCMlpXTjBiM0p6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQmpiR0Z6Y3lCV1pXTjBiM0p6WEc0Z0tpQkFaWGgwWlc1a2N5QjdRWEp5WVhrOFlXNTVQbjFjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZabFkzUnZjbk1nWlhoMFpXNWtjeUJCY25KaGVUeGhibmsrSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJR1JwWTNScGIyNWhjbmtnWTI5dWRHRnBibWx1WnlCbWRXNWpkR2x2YmlCdmNIUnBiMjV6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQjBlWEJsSUU5d2RHbHZibk5jYmlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVDNCMGFXOXVjeUE5SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nWVc1NWZUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR04xYzNSdmJTQmthWE4wWVc1alpTQnRaWFJ5YVdNZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUdkcGRtVnVJSFpsWTNSdmNuTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhSNWNHVWdSR2x6ZEdGdVkyVk5aWFJ5YVdOY2JpQXFJRUJ3WVhKaGJTQjdZVzU1ZlNCMk1TQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWXlJRlJvWlNCelpXTnZibVFnZG1WamRHOXlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCRWFYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pYTmxJSFIzYnlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdkSGx3WlNCRWFYTjBZVzVqWlUxbGRISnBZeUE5SUNoMk1Ub2dZVzU1TENCMk1qb2dZVzU1S1NBOVBpQW9iblZ0WW1WeUtUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0VnYzJsdGNHeGxJSE4wY21sdVp5QjBieUJ6ZEhKcGJtY2daR2xqZEdsdmJtRnllUzVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWRIbHdaU0JUZEhKcGJtZEVhV04wYVc5dVlYSjVYRzRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3VzJ0bGVUb2djM1J5YVc1blhUb2djM1J5YVc1bmZUdGNibHh1WEc1bGVIQnZjblFnZEhsd1pTQkRiMngxYlc1SmJuQjFkRTl3ZEdsdmJuTWdQU0I3WEc0Z0lDQWdabWxzZEdWeVB6b2dLR052YkRvZ1JFY3VRMjlzZFcxdUtTQTlQaUJpYjI5c1pXRnVJSHdnYm5Wc2JEdGNibjA3WEc0aVhYMD0iLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeChkYXRhLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhuSXRlbXMsIG5JdGVtcywgMCk7XG4gICAgbGV0IG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgbGV0IG1pbiA9IE51bWJlci5NQVhfVkFMVUU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCB8fCBpID09PSBqKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgICAgICBpZiAoZCA+IG1heClcbiAgICAgICAgICAgICAgICBtYXggPSBkO1xuICAgICAgICAgICAgaWYgKGQgPCBtaW4pXG4gICAgICAgICAgICAgICAgbWluID0gZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gKG1hdHJpeFtpXVtqXSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3cwUWtGQk5FSXNRMEZCUXl4SlFVRmhMRVZCUVVVc1VVRkJkMEk3U1VGRGJFWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU16UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOc1JDeEpRVUZKTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRek5DTEVsQlFVa3NSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03U1VGRE0wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXk5Q0xFMUJRVTBzUTBGQlF5eEhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOeVJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5vUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSE8yZENRVUZGTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRja0lzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnp0blFrRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEzUkNPMHRCUTBZN1NVRkRSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlF5OUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU5xUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEzQkZPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVMR3RHUVVGclJqdEJRVU5zUml4TlFVRk5MRlZCUVZVc1VVRkJVU3hEUVVGRExFdEJRV0VzUlVGQlJTeEhRVUZYTEVWQlFVVXNXVUZCV1N4SFFVRkhMRXRCUVVzN1NVRkRka1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRXRCUVVzc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVVjBReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU0zUWl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVjRRaXhQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4UFFVRlBMRU5CUVVNc1RVRkJZU3hGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTzBsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlJ5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zY1VKQlFYRkNPMGxCUTJ4RkxFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4dFFrRkJiVUk3U1VGRGRrUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1EwRkJReXhIUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU14UlN4UFFVRlBMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU14UWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPMGRCUjBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVTBGQlV5eERRVUZETEVsQlFWazdTVUZEY0VNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEySXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSVm9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkZjRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVVUzUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSVzVETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVOc1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8wbEJSVzVETEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJRc1EwRkJRenRCUVVWRU96czdPenRIUVV0SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVVHRKUVVNNVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0pGTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMDFoZEhKcGVDd2dWbVZqZEc5eUxDQkRiMjl5WkdsdVlYUmxjeXdnVm1WamRHOXljeXdnUkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0p5NHZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUdiRzloZEN3Z2NtRnVaRzl0U1c1MGZTQm1jbTl0SUNjdUwzSmhibVJ2YlNjN1hHNWNiaThxS2x4dUlDb2dRWE56WlhKMGN5QmhJR052Ym1ScGRHbHZiaUJpZVNCMGFISnZkMmx1WnlCaGJpQkZjbkp2Y2k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdGpiMjVrYVhScGIyNDlabUZzYzJWZElFTnZibVJwZEdsdmJpQjBieUJoYzNObGNuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzIxbGMzTmhaMlU5SjBGemMyVnlkR2x2YmlCbGNuSnZjaTRuWFNCTlpYTnpZV2RsSUhSdklHOTFkSEIxZEM1Y2JpQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhOelpYSjBLR052Ym1ScGRHbHZiam9nWW05dmJHVmhiaUE5SUdaaGJITmxMQ0J0WlhOellXZGxPaUJ6ZEhKcGJtY2dQU0FuUVhOelpYSjBhVzl1SUdWeWNtOXlMaWNwSUh0Y2JpQWdhV1lnS0NGamIyNWthWFJwYjI0cFhHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRzFsYzNOaFoyVXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ2JtVjNJSFIzYnkxa2FXMWxibk5wYjI1aGJDQmhjbkpoZVNCaGJtUWdabWxzYkhNZ2FYUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiakVnVkdobElHWnBjbk4wSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnWTI5dmNtUnBibUYwWlhNZ0tHNTFiV0psY2lCdlppQnliM2R6S1M1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmthVzFsYm5OcGIyNHlJRlJvWlNCelpXTnZibVFnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0JqYjI5eVpHbHVZWFJsY3lBb2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnRtYVd4c1BUQmRJRUVnZG1Gc2RXVWdkRzhnWm1sc2JDQjBhR1VnWTI5dmNtUnBibUYwWlhNZ2QybDBhQzVjYmlBcUlFQnlaWFIxY200Z2UwTnZiM0prYVc1aGRHVnpmU0JCSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JtYVd4c1pXUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tpQkFkRzlrYnlCTmFXZG9kQ0JpWlNCemJHOTNJSE5wYm1ObElIVnpaV1FnUVhKeVlYa3ViV0Z3TGlCUWNtOWlZV0pzZVNCdVpXVmtjeUJ3WlhKbWIzSnRZVzVqWlNCeVpYWnBjMmx2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1cGRFTnZiM0prYVc1aGRHVnpLR1JwYldWdWMybHZiakU2SUc1MWJXSmxjaXdnWkdsdFpXNXphVzl1TWpvZ2JuVnRZbVZ5TENCbWFXeHNPaUJ1ZFcxaVpYSWdQU0F3S1RvZ1EyOXZjbVJwYm1GMFpYTWdlMXh1SUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0dScGJXVnVjMmx2YmpFcExtWnBiR3dvWm1sc2JDa3ViV0Z3S0NncElEMCtJQ2h1WlhjZ1ZtVmpkRzl5S0dScGJXVnVjMmx2YmpJcExtWnBiR3dvWm1sc2JDa3BLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVjbUZ1YzNCdmMyVWdiV0YwY21sNExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdUV0YwY21sNGZTQnRZWFJ5YVhnZ1ZHaGxJRzFoZEhKcGVDQjBieUJpWlNCMGNtRnVjM0J2YzJWa0xseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JVY21GdWMzQnZjMlZrSUcxaGRISnBlQzVjYmlBcUlFQjBiMlJ2SUUxcFoyaDBJR0psSUhOc2IzY2djMmx1WTJVZ2RYTmxaQ0JCY25KaGVTNXRZWEF1SUZCeWIySmhZbXg1SUc1bFpXUnpJSEJsY21admNtMWhibU5sSUhKbGRtbHphVzl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkSEpoYm5Od2IzTmxUV0YwY21sNEtHMWhkSEpwZURvZ1RXRjBjbWw0S1RvZ1RXRjBjbWw0SUh0Y2JpQWdjbVYwZFhKdUlHNWxkeUJCY25KaGVTaHRZWFJ5YVhoYk1GMHViR1Z1WjNSb0tTNW1hV3hzS0RBcFhHNGdJQ0FnTG0xaGNDZ29YeXdnYVNrZ1BUNGdLRzVsZHlCV1pXTjBiM0lvYldGMGNtbDRMbXhsYm1kMGFDa3VabWxzYkNnd0tTNXRZWEFvS0Y4c0lHb3BJRDArSUNodFlYUnlhWGhiYWwxYmFWMHBLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUZrWkhNZ2RIZHZJSFpsWTNSdmNuTWdkMmwwYUNCMGFHVWdjMlZqYjI1a0lHOXVaU0IwYnlCaVpTQnRkV3gwYVhCc2FXVmtJR0o1SUhSb1pTQm5hWFpsYmlCeVlYUnBieTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCeElGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJiWFZzZEdsd2JHbGxjajB4WFNCQklHMTFiSFJwY0d4cFpYSWdkRzhnWW1VZ2RYTmxaQ0JpWldadmNtVWdkR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdhWE1nWVdSa1pXUXVYRzRnS2lCQWNtVjBkWEp1SUh0V1pXTjBiM0o5SUU1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1Wa0lIUm9aU0J5WlhOMWJIUWdiMllnYjNCbGNtRjBhVzl1SUhBcmJYVnNkR2x3YkdsbGNpcHhMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RtVmpkRzl5UVdSa0tIQTZJRlpsWTNSdmNpd2djVG9nVm1WamRHOXlMQ0J0ZFd4MGFYQnNhV1Z5T2lCdWRXMWlaWElnUFNBeEtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdjQzVzWlc1bmRHZzdYRzVjYmlBZ1lYTnpaWEowS0c1SmRHVnRjeUE5UFNCeExteGxibWQwYUN3Z0oxWmxZM1J2Y2lCc1pXNW5kR2h6SUdSdklHNXZkQ0J0WVhSamFDNG5LVHRjYmx4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhBdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQndXMmxkSUNzZ2JYVnNkR2x3YkdsbGNpQXFJSEZiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWJYTWdkR2hsSUhabFkzUnZjaWR6SUdsMFpXMXpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQjJJRlJvWlNCMlpXTjBiM0lnZEc4Z1ltVWdjM1Z0YldWa0xseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JVYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE1nYzNWdExseHVJQ292WEc1bWRXNWpkR2x2YmlCcGRHVnRjMU4xYlNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2RHOTBZV3dnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkNBclBTQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZFhGaGNtVnpJSFJvWlNCMlpXTjBiM0luY3lCcGRHVnRjeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdkaUJVYUdVZ2RtVmpkRzl5SUhSdklITnhkV0Z5WlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMVpsWTNSdmNuMGdRU0J1WlhjZ2RtVmpkRzl5SUdOdmJuUmhhVzVwYm1jZ2RHaGxJRzl5YVdkcGJtRnNKM01nYVhSbGJYTWdjM0YxWVhKbFpDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RtVmpkRzl5VTNGMVlYSmxLSFk2SUZabFkzUnZjaWs2SUZabFkzUnZjaUI3WEc0Z0lHTnZibk4wSUc1SmRHVnRjeUE5SUhZdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQjJXMmxkSUNvZ2RsdHBYVHRjYmx4dUlDQnlaWFIxY200Z2RHOTBZV3c3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKTVpXNW5kR2dvZGpvZ1ZtVmpkRzl5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdiR1YwSUhOeGNsTjFiVG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdabTl5SUNoc1pYUWdhVG9nYm5WdFltVnlJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnYzNGeVUzVnRJQ3M5SUhaYmFWMGdLaUIyVzJsZE8xeHVJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSE54Y2xOMWJTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pFYjNSUWNtOWtkV04wS0hZeE9pQldaV04wYjNJc0lIWXlPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCcFppQW9kakV1YkdWdVozUm9JQ0U5SUhZeUxteGxibWQwYUNsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVJvWlNCa2FXMWxibk5wYjI1aGJHbDBlU0J2WmlCMGFHVWdkbVZqZEc5eWN5QnRkWE4wSUcxaGRHTm9KeWs3WEc0Z0lHeGxkQ0J3Y205a09pQnVkVzFpWlhJZ1BTQXdPMXh1SUNCbWIzSWdLR3hsZENCcE9pQnVkVzFpWlhJZ1BTQXdPeUJwSUR3Z2RqRXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjSEp2WkNBclBTQjJNVnRwWFNBcUlIWXlXMmxkTzF4dUlDQnlaWFIxY200Z2NISnZaRHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdiV0YwY21sNElHWnBiR3hsWkNCM2FYUm9JSEpoYm1SdmJTQm1iRzloZEdsdVp5QndiMmx1ZENCMllXeDFaWE11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpFZ1ZHaGxJR1pwY25OMElHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ2JXRjBjbWw0TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqSWdWR2hsSUhObFkyOXVaQ0JrYVcxbGJuTnBiMjRnYjJZZ2RHaGxJRzFoZEhKcGVDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYzJOaGJHVTlNUzVkSUUxaGVDQjJZV3gxWlNCbmFYWmxiaUJpZVNCeVlXNWtiMjBnWjJWdVpYSmhkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkJJRzVsZHlCdFlYUnlhWGdnWm1sc2JHVmtJSGRwZEdnZ2NtRnVaRzl0SUdac2IyRjBhVzVuSUhCdmFXNTBJQ0IyWVd4MVpYTXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0dScGJXVnVjMmx2YmpFNklHNTFiV0psY2l3Z1pHbHRaVzV6YVc5dU1qb2diblZ0WW1WeUxDQnpZMkZzWlRvZ2JuVnRZbVZ5SUQwZ01TNHBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J0WVhSeWFYZ2dQU0JwYm1sMFEyOXZjbVJwYm1GMFpYTW9aR2x0Wlc1emFXOXVNU3dnWkdsdFpXNXphVzl1TWlrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa2FXMWxibk5wYjI0eE95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUE4SUdScGJXVnVjMmx2YmpJN0lDc3JhaWxjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlISmhibVJ2YlVac2IyRjBLSE5qWVd4bEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JXRjBjbWw0TzF4dWZWeHVYRzR2S2lwY2JpQXFJRU5oYkdOMWJHRjBaWE1nUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUdKbGRIZGxaVzRnZEhkdklIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIQWdWR2hsSUdacGNuTjBJSFpsWTNSdmNpNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQjBhR1VnWjJsMlpXNGdkbVZqZEc5eWN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdaR2xtWmlBOUlIWmxZM1J2Y2tGa1pDaHdMQ0J4TENBdE1TazdYRzRnSUdOdmJuTjBJSE54WkdsbVppQTlJSFpsWTNSdmNsTnhkV0Z5WlNoa2FXWm1LVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1VM1Z0YlNBOUlHbDBaVzF6VTNWdEtITnhaR2xtWmlrN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5OeGNuUW9jM0ZrYVdabVUzVnRiU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjFjMmx1WnlCaElHTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlHUmhkR0VnU1c1d2RYUWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6TGx4dUlDb2dRSEJoY21GdElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1pHbHpkR0Z1WTJVZ1EzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkRZV3hqZFd4aGRHVmtJR04xYzNSdmJTQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqWVd4alJHbHpkR0Z1WTJWTllYUnlhWGdvWkdGMFlUb2dWbVZqZEc5eWN5d2daR2x6ZEdGdVkyVTZJRVJwYzNSaGJtTmxUV1YwY21saktUb2dUV0YwY21sNElIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdaR0YwWVM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWh1U1hSbGJYTXNJRzVKZEdWdGN5d2dNQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQnBJQ3NnTVRzZ2FpQThJRzVKZEdWdGN6c2dLeXRxS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JrT2lCdWRXMWlaWElnUFNBb1pHRjBZVnRwWFNBOVBTQnVkV3hzS1NCOGZDQW9aR0YwWVZ0cVhTQTlQU0J1ZFd4c0tTQS9JREFnT2lCa2FYTjBZVzVqWlNoa1lYUmhXMmxkTENCa1lYUmhXMnBkS1R0Y2JpQWdJQ0FnSUcxaGRISnBlRnRwWFZ0cVhTQTlJRzFoZEhKcGVGdHFYVnRwWFNBOUlHUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjFjMmx1WnlCaElHTjFjM1J2YlNCa2FYTjBZVzVqWlNCbWRXNWpkR2x2Ymk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlHUmhkR0VnU1c1d2RYUWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6TGx4dUlDb2dRSEJoY21GdElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1pHbHpkR0Z1WTJVZ1EzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQkRZV3hqZFd4aGRHVmtJR04xYzNSdmJTQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqWVd4alRtOXliV0ZzYVhwbFpFUnBjM1JoYm1ObFRXRjBjbWw0S0dSaGRHRTZJRlpsWTNSdmNuTXNJR1JwYzNSaGJtTmxPaUJFYVhOMFlXNWpaVTFsZEhKcFl5azZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJR1JoZEdFdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCdFlYUnlhWGdnUFNCcGJtbDBRMjl2Y21ScGJtRjBaWE1vYmtsMFpXMXpMQ0J1U1hSbGJYTXNJREFwTzF4dUlDQnNaWFFnYldGNElEMGdUblZ0WW1WeUxrMUpUbDlXUVV4VlJUdGNiaUFnYkdWMElHMXBiaUE5SUU1MWJXSmxjaTVOUVZoZlZrRk1WVVU3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FUc2dhaUE4SUc1SmRHVnRjenNnS3l0cUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCa09pQnVkVzFpWlhJZ1BTQW9aR0YwWVZ0cFhTQTlQU0J1ZFd4c0tTQjhmQ0FvWkdGMFlWdHFYU0E5UFNCdWRXeHNJSHg4SUdrZ1BUMDlJR29wSUQ4Z01DQTZJR1JwYzNSaGJtTmxLR1JoZEdGYmFWMHNJR1JoZEdGYmFsMHBPMXh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2JXRjBjbWw0VzJwZFcybGRJRDBnWkR0Y2JpQWdJQ0FnSUdsbUlDaGtJRDRnYldGNEtTQnRZWGdnUFNCa08xeHVJQ0FnSUNBZ2FXWWdLR1FnUENCdGFXNHBJRzFwYmlBOUlHUTdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dia2wwWlcxek95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FTQXJJREU3SUdvZ1BDQnVTWFJsYlhNN0lDc3JhaWxjYmlBZ0lDQWdJRzFoZEhKcGVGdHBYVnRxWFNBOUlHMWhkSEpwZUZ0cVhWdHBYU0E5SUNodFlYUnlhWGhiYVYxYmFsMGdMU0J0YVc0cElDOGdLRzFoZUNBdElHMXBiaWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZEhKcGVEdGNibjFjYmx4dUx5b3FJRWRsYm1WeVlYUmxjeUJoY25KaGVTQm1jbTl0SUdFZ2NtRnVaMlVnVzJKbFoybHVPeUJsYm1SZElHOXlJRnRpWldkcGJqc2daVzVrS1NCcFppQmxibVJGZUdOc2RYTnBkbVV1SUNvcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxibEpoYm1kbEtHSmxaMmx1T2lCdWRXMWlaWElzSUdWdVpEb2diblZ0WW1WeUxDQmxibVJGZUdOc2RYTnBkbVVnUFNCbVlXeHpaU2s2SUVsdWRETXlRWEp5WVhrZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmxibVFnTFNCaVpXZHBiaUFySUNobGJtUkZlR05zZFhOcGRtVWdQeUF3SURvZ01TazdYRzRnSUdOdmJuTjBJSE5sY21sbGN5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHNUpkR1Z0Y3lrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTbGNiaUFnSUNCelpYSnBaWE5iYVYwZ1BTQmlaV2RwYmlBcklHazdYRzVjYmlBZ2NtVjBkWEp1SUhObGNtbGxjenRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHOXlaR1Z5SUc5bUlIWmhiSFZsY3lCaGN5QnBaaUIwYUdWNUlHRnlaU0J6YjNKMFpXUXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdkbUZzZFdWeklFbHVjSFYwSUdGeWNtRjVMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNtVjJaWEp6WlQxbVlXeHpaVjBnVjJobGRHaGxjaUIwYnlCeVpYUjFjbTRnY21WMlpYSnpaV1FnYjNKa1pYSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEpiWFgwZ1ZHaGxJRzl5WkdWeUlHTnZiWEIxZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhKblUyOXlkQ2gyWVd4MVpYTTZJR0Z1ZVZ0ZExDQnlaWFpsY25ObElEMGdabUZzYzJVcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUdOdmJuTjBJSE52Y25SbWJpQTlJSEpsZG1WeWMyVWdQeUFvWVRvZ1lXNTVXMTBzSUdJNklHRnVlVnRkS1NBOVBpQW9ZbHN3WFNBdElHRmJNRjBwSURvZ0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dGYk1GMGdMU0JpV3pCZEtUdGNiaUFnWTI5dWMzUWdaR1ZqYjNJZ1BTQW9kam9nWVc1NUxDQnBPaUJ1ZFcxaVpYSXBJRDArSUZ0MkxDQnBYVHNnTHk4Z2MyVjBJR2x1WkdWNElIUnZJSFpoYkhWbFhHNGdJR052Ym5OMElIVnVaR1ZqYjNJZ1BTQW9ZVG9nWVc1NVcxMHBJRDArSUdGYk1WMDdJQzh2SUd4bFlYWmxJRzl1YkhrZ2FXNWtaWGhjYmlBZ1kyOXVjM1FnWDJGeVozTnZjblFnUFNBb1lYSnlPaUJoYm5sYlhTa2dQVDRnWVhKeUxtMWhjQ2hrWldOdmNpa3VjMjl5ZENoemIzSjBabTRwTG0xaGNDaDFibVJsWTI5eUtUdGNiaUFnY21WMGRYSnVJRjloY21kemIzSjBLSFpoYkhWbGN5azdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQmthWE4wSUdaMWJtTjBhVzl1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2JHVnVaM1JvSUhSdmRHRnNJRzUxYldKbGNpQnZaaUJ2WW1wbFkzUnpYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYmlCdWRXMWlaWElnYjJZZ1pHbDJaWEp6WlNCbGJHVnRaVzUwY3lCMGJ5Qm1hVzVrWEc0Z0tpQkFjR0Z5WVcwZ2V5aHBNVG9nYm5WdFltVnlMQ0JwTWpvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhKOUlHUnBjM1FnWVNCbWRXNWpkR2x2YmlCM2FHbGphQ0JqWVd4amRXeGhkR1Z6SUdScGMzUmhibU5sSUdKbGRIZGxaVzVjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZDI4Z2IySnFaV04wY3lCMWMybHVaeUIwYUdWcGNpQnBibVJsZUdWelhHNGdLaUJBY21WMGRYSnVjeUI3Ym5WdFltVnlXMTE5SUZSb1pTQnBibVJsZUdWeklHOW1JSFJvWlNCdGIzTjBJR1JwZG1WeWMyVWdiMkpxWldOMGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFJHbDJaWEp6WlZOMVluTmxkQ2hzWlc1bmRHZzZJRzUxYldKbGNpd2diam9nYm5WdFltVnlMQ0JrYVhOME9pQW9hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCbWRXNWpkR2x2YmlCdFlYaENlU2gyWVd4MVpYTTZJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpd2diM0prWlhKQ2VUb2dLR2s2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYkdWMElHMWhlRlpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0JzWlhRZ2JXRjRUM0prWlhKQ2VTQTlJRzUxYkd3N1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHVnNaVzFsYm5RZ2IyWWdkbUZzZFdWektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCbGJHVnRaVzUwVDNKa1pYSkNlU0E5SUc5eVpHVnlRbmtvWld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JXRjRUM0prWlhKQ2VTQTlQU0J1ZFd4c0lIeDhJR1ZzWlcxbGJuUlBjbVJsY2tKNUlENGdiV0Y0VDNKa1pYSkNlU2tnZTF4dUlDQWdJQ0FnSUNCdFlYaFdZV3gxWlNBOUlHVnNaVzFsYm5RN1hHNGdJQ0FnSUNBZ0lHMWhlRTl5WkdWeVFua2dQU0JsYkdWdFpXNTBUM0prWlhKQ2VUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFoZUZaaGJIVmxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjM1ZpYzJWMElEMGdXM0poYm1SdmJVbHVkQ2hzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJR052Ym5OMElHTnZiWEJzWlcxbGJuUWdQU0J1WlhjZ1UyVjBLQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1ZpYzJWMExtbHVZMngxWkdWektHa3BLVnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVoWkdRb2FTazdYRzRnSUgxY2JseHVJQ0IzYUdsc1pTQW9jM1ZpYzJWMExteGxibWQwYUNBOElHNHBJSHRjYmlBZ0lDQmpiMjV6ZENCcFpIZ2dQU0J0WVhoQ2VTaGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVkbUZzZFdWektDa2dZWE1nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMRnh1SUNBZ0lDQWdLR2twSUQwK0lFMWhkR2d1YldsdUxtRndjR3g1S0UxaGRHZ3NJSE4xWW5ObGRDNXRZWEFvWm5WdVkzUnBiMjRvZG1Gc0xDQnBibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkQ2hwTENCMllXd3BPMXh1SUNBZ0lDQWdmU2twS1R0Y2JpQWdJQ0JwWmlBb2FXUjRLU0I3WEc0Z0lDQWdJQ0J6ZFdKelpYUXVjSFZ6YUNocFpIZ3BPMXh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVrWld4bGRHVW9hV1I0S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJSE4xWW5ObGREdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc1dmNtMWhiR2w2WldRZ2RtVmpkRzl5WEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ1pHRjBZU0J1ZFcxbGNtbGpZV3dnWVhKeVlYbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUc1dmNtMWhiR2w2WlNoa1lYUmhPaUJXWldOMGIzSXBPaUJXWldOMGIzSWdlMXh1SUNCc1pYUWdiV1ZoYmlBOUlEQTdYRzRnSUd4bGRDQnpkR1FnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZUzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0J0WldGdUlDczlJR1JoZEdGYmFWMDdYRzVjYmlBZ2JXVmhiaUF2UFNCa1lYUmhMbXhsYm1kMGFEdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnYzNSa0lDczlJQ2hrWVhSaFcybGRJQzBnYldWaGJpa2dLaUFvWkdGMFlWdHBYU0F0SUcxbFlXNHBPMXh1WEc0Z0lITjBaQ0E5SUUxaGRHZ3VjM0Z5ZENoemRHUWdMeUJrWVhSaExteGxibWQwYUNrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJR1JoZEdGYmFWMGdQU0FvWkdGMFlWdHBYU0F0SUcxbFlXNHBJQzhnYzNSa08xeHVYRzRnSUhKbGRIVnliaUJrWVhSaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVacGJtUnpJSE5sZENCa2FXWm1aWEpsYm1ObElHSmxkSGRsWlc0Z2RIZHZJR3hwYzNSekxseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZU0JVYUdVZ1ptbHljM1FnYkdsemRDNWNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR0lnVkdobElITmxZMjl1WkNCc2FYTjBMbHh1SUNvZ1FISmxkSFZ5YmlCN1lXNTVXMTE5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJFYVdabVpYSmxibU5sS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrNklHRnVlVnRkSUh0Y2JpQWdZMjl1YzNRZ1lsTmxkQ0E5SUc1bGR5QlRaWFFvWWlrN1hHNGdJSEpsZEhWeWJpQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9ZUzVtYVd4MFpYSW9LSGdwSUQwK0lDRmlVMlYwTG1oaGN5aDRLU2twTG5aaGJIVmxjeWdwS1R0Y2JuMWNiaUpkZlE9PSIsIi8qKiBQcm94eSBmb3IgRGlzdGFuY2VNYXRyaXggY2xhc3MuIEFsbG93cyB0byBpbmRleCBtYXRyaXggYXMgbWF0cml4W2ldW2pdXG4gKiBOb3RlOiBtdWNoIHNsb3dlciB0aGFuIGRpcmVjdCBpbmRleGluZywgYnV0IHN0aWxsIG11Y2ggZmFzdGVyIHRoYW4gcmVjYWxjdWxhdGluZyBkaXN0YW5jZXMuXG4gKiB3aWxsIGJlIHVzZWQgZm9yIFQtU05FIG1haW5seS5cbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fWNvbmRlbnNlZEFycmF5IC0gYXJyYXkgb2YgZGlzdGFuY2VzIGJldHdlZW4gYWxsIHBhaXJzIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfXNpemUgLSBudW1iZXIgb2YgY29tcGFyZWJsZXMgaW4gbWF0cml4XG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IC0gcHJveHkgZm9yIGNvbmRlbnNlZEFycmF5XG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlTWF0cml4UHJveHkoY29uZGVuc2VkQXJyYXksIHNpemUpIHtcbiAgICBjb25zdCBsaW5lYXJGdW5jID0gZG1MaW5lYXJJbmRleChzaXplKTtcbiAgICBmdW5jdGlvbiBsaW5lYXJJbmRleChpLCBqKSB7XG4gICAgICAgIGNvbnN0IGlOdW0gPSBOdW1iZXIoaSk7XG4gICAgICAgIGNvbnN0IGpOdW0gPSBOdW1iZXIoaik7XG4gICAgICAgIHJldHVybiBsaW5lYXJGdW5jKGlOdW0sIGpOdW0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpZHgySGFuZGxlcihpZHgxKSB7XG4gICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgZ2V0KHRhcmdldCwgaWR4MiwgX3JlY2VpdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlkeDEgPT09IGlkeDIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcklkeCA9IE51bWJlcihpZHgxKSA+IE51bWJlcihpZHgyKSA/IGxpbmVhckluZGV4KGlkeDIsIGlkeDEpIDogbGluZWFySW5kZXgoaWR4MSwgaWR4Mik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtsaW5lYXJJZHhdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGlkeDFIYW5kbGVyID0ge1xuICAgICAgICBnZXQodGFyZ2V0LCBpZHgxLCBfcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChpZHgxID09PSAnbGVuZ3RoJylcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCBpZHgySGFuZGxlcihpZHgxKSk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb3h5KGNvbmRlbnNlZEFycmF5LCBpZHgxSGFuZGxlcik7XG59XG5leHBvcnQgZnVuY3Rpb24gZG1MaW5lYXJJbmRleChzaXplKSB7XG4gICAgcmV0dXJuIChpLCBqKSA9PiBzaXplICogaSArIGogLSBNYXRoLmZsb29yKCgoaSArIDIpICogKGkgKyAxKSkgLyAyKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNISnZlSGt1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SndjbTk0ZVM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkZRVHM3T3pzN08wVkJUVVU3UVVGRFJpeE5RVUZOTEZWQlFWVXNiVUpCUVcxQ0xFTkJRVU1zWTBGQk5FSXNSVUZCUlN4SlFVRlpPMGxCUXpWRkxFMUJRVTBzVlVGQlZTeEhRVUZITEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOMlF5eFRRVUZUTEZkQlFWY3NRMEZCUXl4RFFVRnJRaXhGUVVGRkxFTkJRV3RDTzFGQlEzcEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka0lzVDBGQlR5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhKUVVGeFFqdFJRVU40UXl4UFFVRlBMRU5CUTB3N1dVRkRSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRPMmRDUVVONlFpeEpRVUZKTEVsQlFVa3NTMEZCU3l4SlFVRkpPMjlDUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNSeXhQUVVGUExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0WlFVTXpRaXhEUVVGRE8xTkJRMFlzUTBGRFJpeERRVUZETzBsQlEwb3NRMEZCUXp0SlFVTkVMRTFCUVUwc1YwRkJWeXhIUVVFclFqdFJRVU01UXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTzFsQlEzcENMRWxCUVVrc1NVRkJTU3hMUVVGTExGRkJRVkU3WjBKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkRia01zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZET1VNc1EwRkJRenRMUVVOR0xFTkJRVU03U1VGRlJpeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMR05CUVdNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEJRVU5vUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eEpRVUZaTzBsQlEzaERMRTlCUVU4c1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjBSaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lYRzVjYmk4cUtpQlFjbTk0ZVNCbWIzSWdSR2x6ZEdGdVkyVk5ZWFJ5YVhnZ1kyeGhjM011SUVGc2JHOTNjeUIwYnlCcGJtUmxlQ0J0WVhSeWFYZ2dZWE1nYldGMGNtbDRXMmxkVzJwZFhHNGdLaUJPYjNSbE9pQnRkV05vSUhOc2IzZGxjaUIwYUdGdUlHUnBjbVZqZENCcGJtUmxlR2x1Wnl3Z1luVjBJSE4wYVd4c0lHMTFZMmdnWm1GemRHVnlJSFJvWVc0Z2NtVmpZV3hqZFd4aGRHbHVaeUJrYVhOMFlXNWpaWE11WEc0Z0tpQjNhV3hzSUdKbElIVnpaV1FnWm05eUlGUXRVMDVGSUcxaGFXNXNlUzVjYmlBcUlFQndZWEpoYlNCN1JteHZZWFF6TWtGeWNtRjVmV052Ym1SbGJuTmxaRUZ5Y21GNUlDMGdZWEp5WVhrZ2IyWWdaR2x6ZEdGdVkyVnpJR0psZEhkbFpXNGdZV3hzSUhCaGFYSnpJRzltSUc5aWFtVmpkSE5jYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlhOcGVtVWdMU0J1ZFcxaVpYSWdiMllnWTI5dGNHRnlaV0pzWlhNZ2FXNGdiV0YwY21sNFhHNGdLaUJBY21WMGRYSnVJSHRHYkc5aGRETXlRWEp5WVhsOUlDMGdjSEp2ZUhrZ1ptOXlJR052Ym1SbGJuTmxaRUZ5Y21GNVhHNHFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGtvWTI5dVpHVnVjMlZrUVhKeVlYazZJRVpzYjJGME16SkJjbkpoZVN3Z2MybDZaVG9nYm5WdFltVnlLVG9nUm14dllYUXpNa0Z5Y21GNUlIdGNiaUFnWTI5dWMzUWdiR2x1WldGeVJuVnVZeUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29jMmw2WlNrN1hHNGdJR1oxYm1OMGFXOXVJR3hwYm1WaGNrbHVaR1Y0S0drNklITjViV0p2YkNCOElITjBjbWx1Wnl3Z2Fqb2djM2x0WW05c0lId2djM1J5YVc1bktTQjdYRzRnSUNBZ1kyOXVjM1FnYVU1MWJTQTlJRTUxYldKbGNpaHBLVHRjYmlBZ0lDQmpiMjV6ZENCcVRuVnRJRDBnVG5WdFltVnlLR29wTzF4dUlDQWdJSEpsZEhWeWJpQnNhVzVsWVhKR2RXNWpLR2xPZFcwc0lHcE9kVzBwTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z2FXUjRNa2hoYm1Sc1pYSW9hV1I0TVRvZ2MzbHRZbTlzSUh3Z2MzUnlhVzVuS1RwUWNtOTRlVWhoYm1Sc1pYSThSbXh2WVhRek1rRnljbUY1UGlCN1hHNGdJQ0FnY21WMGRYSnVJQ2hjYmlBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnWjJWMEtIUmhjbWRsZEN3Z2FXUjRNaXdnWDNKbFkyVnBkbVZ5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dsa2VERWdQVDA5SUdsa2VESXBJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hwYm1WaGNrbGtlQ0E5SUU1MWJXSmxjaWhwWkhneEtTQStJRTUxYldKbGNpaHBaSGd5S1NBL0lHeHBibVZoY2tsdVpHVjRLR2xrZURJc0lHbGtlREVwSURvZ2JHbHVaV0Z5U1c1a1pYZ29hV1I0TVN3Z2FXUjRNaWs3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaGNtZGxkRnRzYVc1bFlYSkpaSGhkTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNrN1hHNGdJSDFjYmlBZ1kyOXVjM1FnYVdSNE1VaGhibVJzWlhJNklGQnliM2g1U0dGdVpHeGxjanhHYkc5aGRETXlRWEp5WVhrK0lEMGdlMXh1SUNBZ0lHZGxkQ2gwWVhKblpYUXNJR2xrZURFc0lGOXlaV05sYVhabGNpa2dlMXh1SUNBZ0lDQWdhV1lnS0dsa2VERWdQVDA5SUNkc1pXNW5kR2duS1NCeVpYUjFjbTRnYzJsNlpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2ZUhrb2RHRnlaMlYwTENCcFpIZ3lTR0Z1Wkd4bGNpaHBaSGd4S1NrN1hHNGdJQ0FnZlN4Y2JpQWdmVHRjYmx4dUlDQnlaWFIxY200Z2JtVjNJRkJ5YjNoNUtHTnZibVJsYm5ObFpFRnljbUY1TENCcFpIZ3hTR0Z1Wkd4bGNpazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCa2JVeHBibVZoY2tsdVpHVjRLSE5wZW1VNklHNTFiV0psY2lrNklDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnUFQ0Z2MybDZaU0FxSUdrZ0t5QnFJQzBnVFdGMGFDNW1iRzl2Y2lnb0tHa2dLeUF5S1NBcUlDaHBJQ3NnTVNrcElDOGdNaWs3WEc1OVhHNGlYWDA9IiwiZXhwb3J0IGNsYXNzIERpc3RhbmNlTWF0cml4U2VydmljZSB7XG4gICAgY29uc3RydWN0b3IodXNlQ29uY3VycmVudFdvcmtlcnMgPSB0cnVlLCB0ZXJtaW5hdGVPbkNvbXBsZXRlID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCB0aHJlYWRDb3VudCA9IG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5O1xuICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IHVzZUNvbmN1cnJlbnRXb3JrZXJzID8gTWF0aC5tYXgodGhyZWFkQ291bnQgLSAyLCAxKSA6IDE7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMgPSBuZXcgQXJyYXkodGhpcy5fd29ya2VyQ291bnQpLmZpbGwobnVsbClcbiAgICAgICAgICAgIC5tYXAoKCkgPT4gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2Rpc3RhbmNlLW1hdHJpeC13b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKSk7XG4gICAgICAgIHRoaXMuX3Rlcm1pbmF0ZU9uQ29tcGxldGUgPSB0ZXJtaW5hdGVPbkNvbXBsZXRlO1xuICAgIH1cbiAgICA7XG4gICAgYXN5bmMgY2FsYyh2YWx1ZXMsIGZuTmFtZSwgbm9ybWFsaXplID0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZW4gPSB2YWx1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gbmV3IEFycmF5KHRoaXMuX3dvcmtlckNvdW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbExlbmd0aCA9IGxlbiAqIChsZW4gLSAxKSAvIDI7IC8vIHNpemUgb2YgcmVkdWNlZCBkaXN0YW5jZSBtYXRyaXhcbiAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJDb3VudCA9IE1hdGgubWluKHRoaXMuX3dvcmtlckNvdW50LCB0b3RhbExlbmd0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmtTaXplID0gdG90YWxMZW5ndGggLyB0aGlzLl93b3JrZXJDb3VudDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0YW5jZU1hdHJpeCA9IG5ldyBGbG9hdDMyQXJyYXkodG90YWxMZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBlbmRSb3cgPSAwO1xuICAgICAgICAgICAgICAgIGxldCBlbmRDb2wgPSAxO1xuICAgICAgICAgICAgICAgIC8vIG1pbm1heCBmb3Igbm9ybWFsaXphdGlvblxuICAgICAgICAgICAgICAgIGxldCBsbWluID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbG1heCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl93b3JrZXJDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5mbG9vcihpICogY2h1bmtTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gKGkgPT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkgPyB0b3RhbExlbmd0aCA6IE1hdGguZmxvb3IoKGkgKyAxKSAqIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0Um93ID0gZW5kUm93O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydENvbCA9IGVuZENvbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuX3dvcmtlckNvdW50IC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgZm9ybXVsYXMgbWFwIHRoZSBsaW5lYXIgaW5kZXggdG8gdGhlIHVwcGVyIHRyaWFuZ3VsYXIgbWF0cml4IGluZGljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFJvdyA9IGxlbiAtIDIgLSBNYXRoLmZsb29yKE1hdGguc3FydCgtOCAqIGVuZCArIDQgKiBsZW4gKiAobGVuIC0gMSkgLSA3KSAvIDIgLSAwLjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sID0gZW5kIC0gbGVuICogZW5kUm93ICsgTWF0aC5mbG9vcigoZW5kUm93ICsgMSkgKiAoZW5kUm93ICsgMikgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl93b3JrZXJzW2ldLnBvc3RNZXNzYWdlKHsgdmFsdWVzLCBmbk5hbWUsIHN0YXJ0Um93LCBzdGFydENvbCwgY2h1bmNrU2l6ZTogZW5kIC0gc3RhcnQgfSk7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2VzW2ldID0gbmV3IFByb21pc2UoKHJlc29sdmVXb3JrZXIsIHJlamVjdFdvcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fd29ya2Vyc1tpXS5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGVycm9yLCBkaXN0YW5jZU1hdHJpeERhdGEsIG1pbiwgbWF4IH0gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rlcm1pbmF0ZU9uQ29tcGxldGUgJiYgdGhpcy5fd29ya2Vyc1tpXS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0V29ya2VyKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlTWF0cml4LnNldChkaXN0YW5jZU1hdHJpeERhdGEsIHN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8IGxtaW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbWluID0gbWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF4ID4gbG1heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxtYXggPSBtYXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXb3JrZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemUpXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlTWF0cml4LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4geyBkaXN0YW5jZU1hdHJpeFtpbmRleF0gPSAodmFsdWUgLSBsbWluKSAvIChsbWF4IC0gbG1pbik7IH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZGlzdGFuY2VNYXRyaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0ZXJtaW5hdGUoKSB7XG4gICAgICAgIHRoaXMuX3dvcmtlcnMuZm9yRWFjaCgod29ya2VyKSA9PiB3b3JrZXIudGVybWluYXRlKCkpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHpkR0Z1WTJVdGJXRjBjbWw0TFhObGNuWnBZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SmthWE4wWVc1alpTMXRZWFJ5YVhndGMyVnlkbWxqWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkZRU3hOUVVGTkxFOUJRVThzY1VKQlFYRkNPMGxCU1RsQ0xGbEJRVzFDTEc5Q1FVRnZRaXhIUVVGSExFbEJRVWtzUlVGQlJTeHRRa0ZCYlVJc1IwRkJSeXhKUVVGSk8xRkJRM2hGTEUxQlFVMHNWMEZCVnl4SFFVRkhMRk5CUVZNc1EwRkJReXh0UWtGQmJVSXNRMEZCUXp0UlFVTnNSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNMVJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8yRkJRM0JFTEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl3d1FrRkJNRUlzUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UlN4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGJFUXNRMEZCUXp0SlFVRkJMRU5CUVVNN1NVRkZTeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZKTEUxQlFTdENMRVZCUVVVc1RVRkJiMElzUlVGRGVFVXNVMEZCVXl4SFFVRkhMRWxCUVVrN1VVRkRhRUlzVDBGQlR5eEpRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTzFsQlF6TkRMRWxCUVVrN1owSkJRMFlzVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRuUWtGRE1VSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRV2RDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRuUWtGRE4wUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHdERRVUZyUXp0blFrRkRNMFVzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1owSkJRemRFTEUxQlFVMHNVMEZCVXl4SFFVRkhMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETzJkQ1FVTnNSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEpRVUZKTEZsQlFWa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRuUWtGRGNrUXNTVUZCU1N4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8yZENRVU5tTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFppd3lRa0ZCTWtJN1owSkJRek5DTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRFlpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRE8yZENRVU0xUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdHZRa0ZETVVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFTkJRVU03YjBKQlEzaERMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zUTBGQlF6dHZRa0ZETVVZc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETzI5Q1FVTjRRaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTTdiMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhGUVVGRk8zZENRVU12UWl3MlJVRkJOa1U3ZDBKQlF6ZEZMRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN2QwSkJRM1pHTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTXpSVHR2UWtGRFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJTeFZRVUZWTEVWQlFVVXNSMEZCUnl4SFFVRkhMRXRCUVVzc1JVRkJReXhEUVVGRExFTkJRVU03YjBKQlF6VkdMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMR0ZCUVdFc1JVRkJSU3haUVVGWkxFVkJRVVVzUlVGQlJUdDNRa0ZEZUVRc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhGUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZETEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkRMRVZCUVVNc1JVRkJVU3hGUVVGRk96UkNRVU51Uml4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXpzMFFrRkRNVVFzU1VGQlNTeExRVUZMTEVWQlFVVTdaME5CUTFRc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3paQ1FVTnlRanRwUTBGQlRUdG5RMEZEVEN4alFVRmpMRU5CUVVNc1IwRkJSeXhEUVVGRExHdENRVUZyUWl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8yZERRVU01UXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSk8yOURRVU5hTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1owTkJRMklzU1VGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1R0dlEwRkRXaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzJkRFFVTmlMR0ZCUVdFc1JVRkJSU3hEUVVGRE96WkNRVU5xUWp0M1FrRkRTQ3hEUVVGRExFTkJRVU03YjBKQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRMG83WjBKQlEwUXNUVUZCVFN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhKUVVGSkxGTkJRVk03YjBKQlExZ3NZMEZCWXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4SFFVRkhMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40Unl4UFFVRlBMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03WVVGRGVrSTdXVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRuUWtGRFZpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRXRHRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwd3NRMEZCUXp0SlFVVk5MRk5CUVZNN1VVRkRaQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRlRVFzUTBGQlF6dERRVU5LSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0TGJtOTNiazFsZEhKcFkzTjlJR1p5YjIwZ0p5NHVMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHpkR0Z1WTJWTllYUnlhWGhUWlhKMmFXTmxJSHRjYmlBZ0lDQndjbWwyWVhSbElGOTNiM0pyWlhKek9pQlhiM0pyWlhKYlhUdGNiaUFnSUNCd2NtbDJZWFJsSUY5M2IzSnJaWEpEYjNWdWREb2diblZ0WW1WeU8xeHVJQ0FnSUhCeWFYWmhkR1VnWDNSbGNtMXBibUYwWlU5dVEyOXRjR3hsZEdVNklHSnZiMnhsWVc0N1hHNGdJQ0FnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0hWelpVTnZibU4xY25KbGJuUlhiM0pyWlhKeklEMGdkSEoxWlN3Z2RHVnliV2x1WVhSbFQyNURiMjF3YkdWMFpTQTlJSFJ5ZFdVcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhSb2NtVmhaRU52ZFc1MElEMGdibUYyYVdkaGRHOXlMbWhoY21SM1lYSmxRMjl1WTNWeWNtVnVZM2s3WEc0Z0lDQWdJQ0IwYUdsekxsOTNiM0pyWlhKRGIzVnVkQ0E5SUhWelpVTnZibU4xY25KbGJuUlhiM0pyWlhKeklEOGdUV0YwYUM1dFlYZ29kR2h5WldGa1EyOTFiblFnTFNBeUxDQXhLU0E2SURFN1hHNGdJQ0FnSUNCMGFHbHpMbDkzYjNKclpYSnpJRDBnYm1WM0lFRnljbUY1S0hSb2FYTXVYM2R2Y210bGNrTnZkVzUwS1M1bWFXeHNLRzUxYkd3cFhHNGdJQ0FnSUNBZ0lDNXRZWEFvS0NrZ1BUNGdibVYzSUZkdmNtdGxjaWh1WlhjZ1ZWSk1LQ2N1TDJScGMzUmhibU5sTFcxaGRISnBlQzEzYjNKclpYSW5MQ0JwYlhCdmNuUXViV1YwWVM1MWNtd3BLU2s3WEc0Z0lDQWdJQ0IwYUdsekxsOTBaWEp0YVc1aGRHVlBia052YlhCc1pYUmxJRDBnZEdWeWJXbHVZWFJsVDI1RGIyMXdiR1YwWlR0Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnY0hWaWJHbGpJR0Z6ZVc1aklHTmhiR004VkQ0b2RtRnNkV1Z6T2lCQmNuSmhlVHhVUGlCOElFRnljbUY1VEdsclpUeFVQaXdnWm01T1lXMWxPaUJMYm05M2JrMWxkSEpwWTNNc1hHNGdJQ0FnSUNCdWIzSnRZV3hwZW1VZ1BTQjBjblZsS1RvZ1VISnZiV2x6WlR4R2JHOWhkRE15UVhKeVlYaytJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2hoYzNsdVl5QW9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiR1Z1SUQwZ2RtRnNkV1Z6TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J3Y205dGFYTmxjeUE5SUc1bGR5QkJjbkpoZVR4UWNtOXRhWE5sUEhadmFXUStQaWgwYUdsekxsOTNiM0pyWlhKRGIzVnVkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZEc5MFlXeE1aVzVuZEdnZ1BTQnNaVzRnS2lBb2JHVnVJQzBnTVNrZ0x5QXlPeUF2THlCemFYcGxJRzltSUhKbFpIVmpaV1FnWkdsemRHRnVZMlVnYldGMGNtbDRYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkMjl5YTJWeVEyOTFiblFnUFNCTllYUm9MbTFwYmloMGFHbHpMbDkzYjNKclpYSkRiM1Z1ZEN3Z2RHOTBZV3hNWlc1bmRHZ3BPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05vZFc1clUybDZaU0E5SUhSdmRHRnNUR1Z1WjNSb0lDOGdkR2hwY3k1ZmQyOXlhMlZ5UTI5MWJuUTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVk5ZWFJ5YVhnZ1BTQnVaWGNnUm14dllYUXpNa0Z5Y21GNUtIUnZkR0ZzVEdWdVozUm9LVHRjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdaVzVrVW05M0lEMGdNRHRjYmlBZ0lDQWdJQ0FnSUNCc1pYUWdaVzVrUTI5c0lEMGdNVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QnRhVzV0WVhnZ1ptOXlJRzV2Y20xaGJHbDZZWFJwYjI1Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnYkcxcGJpQTlJREE3WEc0Z0lDQWdJQ0FnSUNBZ2JHVjBJR3h0WVhnZ1BTQk9kVzFpWlhJdVRVbE9YMVpCVEZWRk8xeHVJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZkMjl5YTJWeVEyOTFiblE3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0JOWVhSb0xtWnNiMjl5S0drZ0tpQmphSFZ1YTFOcGVtVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWlc1a0lEMGdLR2tnUFQwOUlIUm9hWE11WDNkdmNtdGxja052ZFc1MElDMGdNU2tnUHlCMGIzUmhiRXhsYm1kMGFDQTZJRTFoZEdndVpteHZiM0lvS0drZ0t5QXhLU0FxSUdOb2RXNXJVMmw2WlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnpkR0Z5ZEZKdmR5QTlJR1Z1WkZKdmR6dGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE4wWVhKMFEyOXNJRDBnWlc1a1EyOXNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2tnSVQwOUlIUm9hWE11WDNkdmNtdGxja052ZFc1MElDMGdNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCVWFHVnpaU0JtYjNKdGRXeGhjeUJ0WVhBZ2RHaGxJR3hwYm1WaGNpQnBibVJsZUNCMGJ5QjBhR1VnZFhCd1pYSWdkSEpwWVc1bmRXeGhjaUJ0WVhSeWFYZ2dhVzVrYVdObGMxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJtUlNiM2NnUFNCc1pXNGdMU0F5SUMwZ1RXRjBhQzVtYkc5dmNpaE5ZWFJvTG5OeGNuUW9MVGdnS2lCbGJtUWdLeUEwSUNvZ2JHVnVJQ29nS0d4bGJpQXRJREVwSUMwZ055a2dMeUF5SUMwZ01DNDFLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdaVzVrUTI5c0lEMGdaVzVrSUMwZ2JHVnVJQ29nWlc1a1VtOTNJQ3NnVFdGMGFDNW1iRzl2Y2lnb1pXNWtVbTkzSUNzZ01Ta2dLaUFvWlc1a1VtOTNJQ3NnTWlrZ0x5QXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM2R2Y210bGNuTmJhVjB1Y0c5emRFMWxjM05oWjJVb2UzWmhiSFZsY3l3Z1ptNU9ZVzFsTENCemRHRnlkRkp2ZHl3Z2MzUmhjblJEYjJ3c0lHTm9kVzVqYTFOcGVtVTZJR1Z1WkNBdElITjBZWEowZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205dGFYTmxjMXRwWFNBOUlHNWxkeUJRY205dGFYTmxLQ2h5WlhOdmJIWmxWMjl5YTJWeUxDQnlaV3BsWTNSWGIzSnJaWElwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmZDI5eWEyVnljMXRwWFM1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGxjbkp2Y2l3Z1pHbHpkR0Z1WTJWTllYUnlhWGhFWVhSaExDQnRhVzRzSUcxaGVIMTlLVG9nZG05cFpDQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZkR1Z5YldsdVlYUmxUMjVEYjIxd2JHVjBaU0FtSmlCMGFHbHpMbDkzYjNKclpYSnpXMmxkTG5SbGNtMXBibUYwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WcVpXTjBWMjl5YTJWeUtHVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHbHpkR0Z1WTJWTllYUnlhWGd1YzJWMEtHUnBjM1JoYm1ObFRXRjBjbWw0UkdGMFlTd2djM1JoY25RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxcGJpQThJR3h0YVc0cFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3h0YVc0Z1BTQnRhVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iV0Y0SUQ0Z2JHMWhlQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHMWhlQ0E5SUcxaGVEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzI5c2RtVlhiM0pyWlhJb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b2NISnZiV2x6WlhNcE8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodWIzSnRZV3hwZW1VcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JrYVhOMFlXNWpaVTFoZEhKcGVDNW1iM0pGWVdOb0tDaDJZV3gxWlN3Z2FXNWtaWGdwSUQwK0lIc2daR2x6ZEdGdVkyVk5ZWFJ5YVhoYmFXNWtaWGhkSUQwZ0tIWmhiSFZsSUMwZ2JHMXBiaWtnTHlBb2JHMWhlQ0F0SUd4dGFXNHBPeUI5S1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE52YkhabEtHUnBjM1JoYm1ObFRXRjBjbWw0S1R0Y2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGFtVmpkQ2hsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUhSbGNtMXBibUYwWlNncE9pQjJiMmxrSUh0Y2JpQWdJQ0FnSUhSb2FYTXVYM2R2Y210bGNuTXVabTl5UldGamFDZ29kMjl5YTJWeUtTQTlQaUIzYjNKclpYSXVkR1Z5YldsdVlYUmxLQ2twTzF4dUlDQWdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGZpbGxSYW5kb21NYXRyaXgsIHZlY3RvckFkZCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20nO1xuaW1wb3J0IHsgRGlzdGFuY2VNYXRyaXhTZXJ2aWNlLCBkbUxpbmVhckluZGV4IH0gZnJvbSAnLi9kaXN0YW5jZS1tYXRyaXgnO1xuLyoqXG4gKiBJbXBsZW1lbnRzIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU1BFQmFzZVxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XG4gKi9cbmNsYXNzIFNQRUJhc2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLnN0ZXBzID0gb3B0aW9ucz8uc3RlcHMgPz8gMDtcbiAgICAgICAgdGhpcy5jeWNsZXMgPSBvcHRpb25zPy5jeWNsZXMgPz8gMWU2O1xuICAgICAgICAvLyBTZWxlY3QgYSBjdXRvZmYgZGlzdGFuY2Uge2N1dG9mZn0gYW5kIC4uLlxuICAgICAgICB0aGlzLmN1dG9mZiA9IG9wdGlvbnM/LmN1dG9mZiA/PyAwO1xuICAgICAgICAvLyAuLi4gYW4gaW5pdGlhbCBsZWFybmluZyByYXRlIHtsYW1iZGF9ID4gMFxuICAgICAgICB0aGlzLmxhbWJkYSA9IG9wdGlvbnM/LmxhbWJkYSA/PyAyLjA7XG4gICAgICAgIHRoaXMuZGxhbWJkYSA9IG9wdGlvbnM/LmRsYW1iZGEgPz8gMC4wMTtcbiAgICAgICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEgLyAyLjtcbiAgICAgICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYSAvIDIuO1xuICAgICAgICB0aGlzLmVwc2lsb24gPSBvcHRpb25zPy5lcHNpbG9uID8/IDFlLTEwO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uID0gb3B0aW9ucz8uZGlzdGFuY2UgPz8gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2U7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBuZXcgRmxvYXQzMkFycmF5KCk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGdW5jdGlvbk5hbWUgPSBvcHRpb25zPy5kaXN0YW5jZUZ1bmN0aW9uTmFtZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgZGlzdGFuY2UgbWF0cml4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4uXG4gICAgICogQG1lbWJlcm9mIFNQRUJhc2VcbiAgICAgKi9cbiAgICBhc3luYyBpbml0RGlzdGFuY2UodmVjdG9ycykge1xuICAgICAgICB0aGlzLmRtSW5kZXhGdW5jdCA9IGRtTGluZWFySW5kZXgodmVjdG9ycy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBhd2FpdCBtYXRyaXhTZXJ2aWNlLmNhbGModmVjdG9ycywgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uTmFtZSk7XG4gICAgICAgIG1hdHJpeFNlcnZpY2UudGVybWluYXRlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdHdvIHZlY3RvcnMgZ2l2ZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgU2V0IG9mIHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcyBiZXR3ZWVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDEgSW5kZXggb2YgdGhlIGZpcnN0IHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgyIEluZGV4IG9mIHRoZSBzZWNvbmQgdmVjdG9yIG9mIHRoZSBwYWlyLlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gRGlzdGFuY2UgYmV0d2VlbiB0aGVzZSB0d28gdmVjdG9ycy5cbiAgICAgKi9cbiAgICBjYWxjRGlzdGFuY2UodmVjdG9ycywgaW5kZXgxLCBpbmRleDIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VbdGhpcy5kbUluZGV4RnVuY3QoaW5kZXgxLCBpbmRleDIpXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcy5cbiAgICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXG4gICAgICovXG4gICAgYXN5bmMgZW1iZWQodmVjdG9ycykge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYTIgPSB0aGlzLmxhbWJkYTI7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzID09PSAwKVxuICAgICAgICAgICAgdGhpcy5zdGVwcyA9IHZlY3RvcnMubGVuZ3RoIC0gMTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxuICAgICAgICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xuICAgICAgICAgICAgaWYgKGxhbWJkYTIgPD0gMC4pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cblNQRUJhc2UuZGltZW5zaW9uID0gMjtcbmV4cG9ydCB7IFNQRUJhc2UgfTtcbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFBTUEVCYXNlXG4gKiBAbGluayBkb2k6MTAuMTAxNi9TMTA5My0zMjYzKDAzKTAwMTU1LTRcbiAqL1xuZXhwb3J0IGNsYXNzIFBTUEVCYXNlIGV4dGVuZHMgU1BFQmFzZSB7XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgYSBtb2RpZmllZCB1cGRhdGUgcnVsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxuICAgICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cbiAgICAgKi9cbiAgICBhc3luYyBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBQU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XG4gICAgICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgLy8gU2VsZWN0IGEgcG9pbnQsIGksIGF0IHJhbmRvbSAocGl2b3QpLlxuICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgLy8gRm9yIGV2ZXJ5IHBvaW50IGogIT0gaSAuLi5cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gLi4uIHJldHJpZXZlIChvciBldmFsdWF0ZSkgaXRzIHByb3hpbWl0eSB0byBpIGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gYW5kIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcbiAgICAgICAgICAgICAgICAvLyBJZiByaWogPD0gcmMsIG9yIGlmIHJpaiA+IHJjIGFuZCBkaWogPCByaWogLi4uXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmN1dG9mZiA9PSAwKSB8fCAociA8PSB0aGlzLmN1dG9mZikgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGouXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERlY3JlYXNlIHRoZSBsZWFybmluZyByYXRlIHtsYW1iZGF9IGJ5IGEgcHJlc2NyaWJlZCB7ZGxhbWJkYX0uXG4gICAgICAgICAgICBsYW1iZGEgLT0gdGhpcy5kbGFtYmRhO1xuICAgICAgICAgICAgaWYgKGxhbWJkYSA8PSAwLilcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgT3JpZ2luYWxTUEVcbiAqIEBsaW5rIGRvaToxMC4xMDAyL2pjYy4xMDIzNFxuICovXG5leHBvcnQgY2xhc3MgT3JpZ2luYWxTUEUgZXh0ZW5kcyBTUEVCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmN5Y2xlcyA9IG9wdGlvbnM/LmN5Y2xlcyA/PyAxZTM7XG4gICAgICAgIHRoaXMuc3RlcHMgPSBvcHRpb25zPy5zdGVwcyA/PyAxMDAwMDA7XG4gICAgICAgIHRoaXMucmFkaXVzUGVyY2VudCA9IG9wdGlvbnM/LnJhZGl1c1BlcmNlbnQgPz8gMS4wO1xuICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gb3B0aW9ucz8ubWF4RGlzdGFuY2UgPz8gbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzID0gb3B0aW9ucz8ubWF4RGlzdGFuY2VTdGVwcyA/PyBudWxsO1xuICAgIH1cbiAgICBhc3luYyBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcyBvZiB0aGUgTiBwb2ludHMuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIE9yaWdpbmFsU1BFLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlU3RlcHMgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlU3RlcHMgPSBuSXRlbXMgKiBNYXRoLmZsb29yKChuSXRlbXMgLSAxKSAvIDIpO1xuICAgICAgICBpZiAodGhpcy5tYXhEaXN0YW5jZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IC0xZTM3O1xuICAgICAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCB0aGlzLm1heERpc3RhbmNlU3RlcHM7IG4rKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgICAgICAgICAgaWYgKGQgPiB0aGlzLm1heERpc3RhbmNlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbGFtYmRhID0gdGhpcy5sYW1iZGE7XG4gICAgICAgIGNvbnN0IHJhZGl1cyA9ICh0aGlzLnJhZGl1c1BlcmNlbnQgPT0gMC4wKSA/IHRoaXMubWF4RGlzdGFuY2UgOiB0aGlzLm1heERpc3RhbmNlICogdGhpcy5yYWRpdXNQZXJjZW50O1xuICAgICAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHR3byBwb2ludHMsIGkgYW5kIGosIGF0IHJhbmRvbSwgLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPT0gailcbiAgICAgICAgICAgICAgICAgICAgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2kgPSBjb29yZGluYXRlc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHRoZWlyIEV1Y2xpZGVhbiBkaXN0YW5jZSBvbiB0aGUgRC1kaW1lbnNpb25hbCBtYXAsIGRpai5cbiAgICAgICAgICAgICAgICBjb25zdCBkID0gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2Uocm93aSwgcm93aik7XG4gICAgICAgICAgICAgICAgaWYgKChyIDw9IHJhZGl1cykgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogMC41ICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYW1iZGEgLT0gKCh0aGlzLmxhbWJkYSAtIHRoaXMuZGxhbWJkYSkgLyAodGhpcy5jeWNsZXMgLSAxLjApKTtcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGlmIChsYW1iZGEgPCB0aGlzLmRsYW1iZGEpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGRFRDd3dRa0ZCTUVJc1JVRkRNVUlzWjBKQlFXZENMRVZCUTJoQ0xGTkJRVk1zUjBGRFZpeE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZCUXl4VFFVRlRMRVZCUVVNc1RVRkJUU3h6UTBGQmMwTXNRMEZCUXp0QlFVVXZSQ3hQUVVGUExFVkJRVU1zY1VKQlFYRkNMRVZCUVVVc1lVRkJZU3hGUVVGRExFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkZka1U3T3pzN096dEhRVTFITzBGQlEwZ3NUVUZCWVN4UFFVRlBPMGxCWld4Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2xDTzFGQlF6TkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVDBGQlR5eEZRVUZGTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4UFFVRlBMRVZCUVVVc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVU55UXl3MFEwRkJORU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFVkJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnVReXcwUTBGQk5FTTdVVUZETlVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQTEVWQlFVVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1JVRkJSU3hQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUlVGQlJTeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRPMUZCUTNwRExIVkRRVUYxUXp0UlFVTjJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1QwRkJUeXhGUVVGRkxGRkJRVkVzU1VGQlNTd3dRa0ZCTUVJc1EwRkJRenRSUVVONFJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1dVRkJXU3hGUVVGRkxFTkJRVU03VVVGRGJrTXNTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEU5QlFVOHNSVUZCUlN4dlFrRkJjVUlzUTBGQlF6dEpRVU0zUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRUeXhMUVVGTExFTkJRVU1zV1VGQldTeERRVUZETEU5QlFXZENPMUZCUXpORExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU0zUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFMUJRVTBzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNN1VVRkROMFVzWVVGQllTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWQ0xFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTA4c1dVRkJXU3hEUVVGRExFOUJRV2RDTEVWQlFVVXNUVUZCWXl4RlFVRkZMRTFCUVdNN1VVRkRja1VzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGaExFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNMFFzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGblFqdFJRVU5xUXl4TlFVRk5MRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6bENMRTFCUVUwc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU55UWl3MFJFRkJORVE3VVVGRE5VUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGTTBVc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEV0QlFVc3NRMEZCUXp0WlFVTnNRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSMnhETEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJUdG5Ra0ZETlVNc05rTkJRVFpETzJkQ1FVTTNReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVVnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGTlVJc05rVkJRVFpGTzJkQ1FVTTNSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpORExITkZRVUZ6UlR0blFrRkRkRVVzVFVGQlRTeERRVUZETEVkQlFVY3NNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWcVJDeHBSRUZCYVVRN1owSkJRMnBFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRGRrUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRNVVFzZDBOQlFYZERPMjlDUVVONFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU4yUkR0aFFVTkdPMWxCUTBRc2FVVkJRV2xGTzFsQlEycEZMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFsQlEzcENMRWxCUVVrc1QwRkJUeXhKUVVGSkxFVkJRVVU3WjBKQlEyWXNUVUZCVFR0VFFVTlVPMUZCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03U1VGRGNrSXNRMEZCUXpzN1FVRXZSMmRDTEdsQ1FVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJSSEJDTEU5QlFVODdRVUZ0U0hCQ096czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4UlFVRlRMRk5CUVZFc1QwRkJUenRKUVVOdVF6czdPenM3VDBGTFJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJaMEk3VVVGRGFrTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU01UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGNrSXNOa1JCUVRaRU8xRkJRemRFTEUxQlFVMHNWMEZCVnl4SFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF6VkZMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZGZWtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldwRExFdEJRVXNzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZPMWxCUTJoRUxIZERRVUYzUXp0WlFVTjRReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSVFZDTERaQ1FVRTJRanRaUVVNM1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVNdlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMjlDUVVGRkxGTkJRVk03WjBKQlEzSkNMRTFCUVUwc1NVRkJTU3hIUVVGSExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROVUlzTkVWQlFUUkZPMmRDUVVNMVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRek5ETERCRlFVRXdSVHRuUWtGRE1VVXNUVUZCVFN4RFFVRkRMRWRCUVVjc01FSkJRVEJDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5xUkN4cFJFRkJhVVE3WjBKQlEycEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJUdHZRa0ZEZGtRc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenR2UWtGRGVrUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGVrTXNhVU5CUVdsRE8yOUNRVU5xUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVORUxHbEZRVUZwUlR0WlFVTnFSU3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0WlFVTjJRaXhKUVVGSkxFMUJRVTBzU1VGQlNTeEZRVUZGTzJkQ1FVTmtMRTFCUVUwN1UwRkRWRHRSUVVORUxFOUJRVThzVjBGQlZ5eERRVUZETzBsQlEzSkNMRU5CUVVNN1EwRkRSanRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4WFFVRlpMRk5CUVZFc1QwRkJUenRKUVZkMFF5eFpRVUZaTEU5QlFXbENPMUZCUXpOQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVDBGQlR5eEZRVUZGTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNN1VVRkRja01zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4UFFVRlBMRVZCUVVVc1MwRkJTeXhKUVVGSkxFMUJRVTBzUTBGQlF6dFJRVU4wUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFOUJRVThzUlVGQlJTeGhRVUZoTEVsQlFVa3NSMEZCUnl4RFFVRkRPMUZCUTI1RUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RlFVRkZMRmRCUVZjc1NVRkJTU3hKUVVGSkxFTkJRVU03VVVGRGFFUXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEU5QlFVOHNSVUZCUlN4blFrRkJaMElzU1VGQlNTeEpRVUZKTEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWTkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCWjBJN1VVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNNVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzTkVSQlFUUkVPMUZCUXpWRUxFMUJRVTBzVjBGQlZ5eEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSUzlGTEUxQlFVMHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNTMEZCU3l4SlFVRkpPMWxCUTJoRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVm9SU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUXpkQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZET1VNc1RVRkJUU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRGRrUXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8yZENRVVZ5UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTzI5Q1FVTjBRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTjRRanRUUVVOR08xRkJSVVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVONlFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF6dFJRVVYwUnl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFbEJRVWtzUlVGQlJUdG5Ra0ZETlVNc05rTkJRVFpETzJkQ1FVTTNReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVVnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGTlVJc2VVVkJRWGxGTzJkQ1FVTjZSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpORExHdEZRVUZyUlR0blFrRkRiRVVzVFVGQlRTeERRVUZETEVkQlFVY3NNRUpCUVRCQ0xFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVWcVJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZPMjlDUVVNMVFpeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzZDBOQlFYZERPMjlDUVVONFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8ybENRVU4yUkR0aFFVTkdPMWxCUTBRc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVUZETEVOQlFVTTdXVUZEYWtVc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVODdaMEpCUTNaQ0xFMUJRVTA3VTBGRFZEdFJRVU5FTEU5QlFVOHNWMEZCVnl4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdUM0IwYVc5dWN5d2dRMjl2Y21ScGJtRjBaWE1zSUZabFkzUnZjbk1zSUVScGMzUmhibU5sVFdWMGNtbGpmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTF4dUlDQmpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpTeGNiaUFnWm1sc2JGSmhibVJ2YlUxaGRISnBlQ3hjYmlBZ2RtVmpkRzl5UVdSa0xGeHVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVWx1ZEgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmNtRnVaRzl0Snp0Y2JtbHRjRzl5ZENCN1MyNXZkMjVOWlhSeWFXTnpmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVMWhkSEpwZUZObGNuWnBZMlVzSUdSdFRHbHVaV0Z5U1c1a1pYaDlJR1p5YjIwZ0p5NHZaR2x6ZEdGdVkyVXRiV0YwY21sNEp6dGNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUhOMGIyTm9ZWE4wYVdNZ2NISnZlR2x0YVhSNUlHVnRZbVZrWkdsdVp5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdVMUJGUW1GelpWeHVJQ29nUUd4cGJtc2daRzlwT2pFd0xqRXdNVFl2VXpFd09UTXRNekkyTXlnd015a3dNREUxTlMwMFhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QlRVRVZDWVhObElIdGNiaUFnY0hKdmRHVmpkR1ZrSUhOMFlYUnBZeUJrYVcxbGJuTnBiMjRnUFNBeU8xeHVJQ0J3Y205MFpXTjBaV1FnYzNSbGNITTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUdONVkyeGxjem9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1kzVjBiMlptT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnNZVzFpWkdFNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJR1JzWVcxaVpHRTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUd4aGJXSmtZVEk2SUc1MWJXSmxjanRjYmlBZ2NISnZkR1ZqZEdWa0lHUnNZVzFpWkdFeU9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0JsY0hOcGJHOXVPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCa2FYTjBZVzVqWlVaMWJtTjBhVzl1T2lCRWFYTjBZVzVqWlUxbGRISnBZenRjYmlBZ2NISnZkR1ZqZEdWa0lHUnBjM1JoYm1ObFJuVnVZM1JwYjI1T1lXMWxPaUJMYm05M2JrMWxkSEpwWTNNN1hHNGdJR1JwYzNSaGJtTmxPaUJHYkc5aGRETXlRWEp5WVhrN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYlVsdVpHVjRSblZ1WTNRL09pQW9hVG9nYm5WdFltVnlMQ0JxT2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlRVRVZDWVhObExseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUZ0dmNIUnBiMjV6WFNCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk4wWlhCeklEMGdiM0IwYVc5dWN6OHVjM1JsY0hNZ1B6OGdNRHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUWTdYRzRnSUNBZ0x5OGdVMlZzWldOMElHRWdZM1YwYjJabUlHUnBjM1JoYm1ObElIdGpkWFJ2Wm1aOUlHRnVaQ0F1TGk1Y2JpQWdJQ0IwYUdsekxtTjFkRzltWmlBOUlHOXdkR2x2Ym5NL0xtTjFkRzltWmlBL1B5QXdPMXh1SUNBZ0lDOHZJQzR1TGlCaGJpQnBibWwwYVdGc0lHeGxZWEp1YVc1bklISmhkR1VnZTJ4aGJXSmtZWDBnUGlBd1hHNGdJQ0FnZEdocGN5NXNZVzFpWkdFZ1BTQnZjSFJwYjI1elB5NXNZVzFpWkdFZ1B6OGdNaTR3TzF4dUlDQWdJSFJvYVhNdVpHeGhiV0prWVNBOUlHOXdkR2x2Ym5NL0xtUnNZVzFpWkdFZ1B6OGdNQzR3TVR0Y2JpQWdJQ0IwYUdsekxteGhiV0prWVRJZ1BTQjBhR2x6TG14aGJXSmtZU0F2SURJdU8xeHVJQ0FnSUhSb2FYTXVaR3hoYldKa1lUSWdQU0IwYUdsekxtUnNZVzFpWkdFZ0x5QXlManRjYmlBZ0lDQjBhR2x6TG1Wd2MybHNiMjRnUFNCdmNIUnBiMjV6UHk1bGNITnBiRzl1SUQ4L0lERmxMVEV3TzF4dUlDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0JpY21GalpTMXpkSGxzWlZ4dUlDQWdJSFJvYVhNdVpHbHpkR0Z1WTJWR2RXNWpkR2x2YmlBOUlHOXdkR2x2Ym5NL0xtUnBjM1JoYm1ObElEOC9JR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxPMXh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlVnUFNCdVpYY2dSbXh2WVhRek1rRnljbUY1S0NrN1hHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpVWjFibU4wYVc5dVRtRnRaU0E5SUc5d2RHbHZibk0vTG1ScGMzUmhibU5sUm5WdVkzUnBiMjVPWVcxbElUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJKYm1sMGFXRnNhWHBsY3lCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1ZtVmpkRzl5YzMwZ2RtVmpkRzl5Y3lCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdGemVXNWpJR2x1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6T2lCV1pXTjBiM0p6S1NCN1hHNGdJQ0FnZEdocGN5NWtiVWx1WkdWNFJuVnVZM1FnUFNCa2JVeHBibVZoY2tsdVpHVjRLSFpsWTNSdmNuTXViR1Z1WjNSb0tUdGNiaUFnSUNCamIyNXpkQ0J0WVhSeWFYaFRaWEoyYVdObElEMGdibVYzSUVScGMzUmhibU5sVFdGMGNtbDRVMlZ5ZG1salpTaDBjblZsTENCbVlXeHpaU2s3WEc0Z0lDQWdkR2hwY3k1a2FYTjBZVzVqWlNBOUlHRjNZV2wwSUcxaGRISnBlRk5sY25acFkyVXVZMkZzWXloMlpXTjBiM0p6TENCMGFHbHpMbVJwYzNSaGJtTmxSblZ1WTNScGIyNU9ZVzFsS1R0Y2JpQWdJQ0J0WVhSeWFYaFRaWEoyYVdObExuUmxjbTFwYm1GMFpTZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOaGJHTjFiR0YwWlhNZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUhabFkzUnZjbk1nWjJsMlpXNHVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnZG1WamRHOXljeUJUWlhRZ2IyWWdkbVZqZEc5eWN5QjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlZ6SUdKbGRIZGxaVzR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnBibVJsZURFZ1NXNWtaWGdnYjJZZ2RHaGxJR1pwY25OMElIWmxZM1J2Y2lCdlppQjBhR1VnY0dGcGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRNaUJKYm1SbGVDQnZaaUIwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJ2WmlCMGFHVWdjR0ZwY2k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdOaGJHTkVhWE4wWVc1alpTaDJaV04wYjNKek9pQldaV04wYjNKekxDQnBibVJsZURFNklHNTFiV0psY2l3Z2FXNWtaWGd5T2lCdWRXMWlaWElwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sVzNSb2FYTXVaRzFKYm1SbGVFWjFibU4wSVNocGJtUmxlREVzSUdsdVpHVjRNaWxkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJSFpsWTNSdmNuTWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1EyOXZjbVJwYm1GMFpYTjlJRk5RUlNCamIyOXlaR2x1WVhSbGN5QnBiaUJFSUhOd1lXTmxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklHVnRZbVZrS0habFkzUnZjbk02SUZabFkzUnZjbk1wT2lCUWNtOXRhWE5sUEVOdmIzSmthVzVoZEdWelBpQjdYRzRnSUNBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnZG1WamRHOXljeTVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnWVhKbFlWZHBaSFJvSUQwZ05EQTdYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaU0IwYUdVZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3lCdlppQjBhR1VnVGlCd2IybHVkSE11WEc0Z0lDQWdZMjl1YzNRZ1kyOXZjbVJwYm1GMFpYTWdQU0JtYVd4c1VtRnVaRzl0VFdGMGNtbDRLRzVKZEdWdGN5d2dVMUJGUW1GelpTNWthVzFsYm5OcGIyNHNJR0Z5WldGWGFXUjBhQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2JHRnRZbVJoTWlBOUlIUm9hWE11YkdGdFltUmhNanRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWlhCeklEMDlQU0F3S1Z4dUlDQWdJQ0FnZEdocGN5NXpkR1Z3Y3lBOUlIWmxZM1J2Y25NdWJHVnVaM1JvSUMwZ01UdGNibHh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVwYm1sMFJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3lrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCamVXTnNaU0E5SURBN0lHTjVZMnhsSUR3Z2RHaHBjeTVqZVdOc1pYTTdJQ3NyWTNsamJHVXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJSE4wWlhBZ1BTQXdPeUJ6ZEdWd0lEd2dkR2hwY3k1emRHVndjenNnS3l0emRHVndLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGTmxiR1ZqZENCMGQyOGdjRzlwYm5SekxDQnBJR0Z1WkNCcUxDQmhkQ0J5WVc1a2IyMHNJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JwSUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JxSUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNocElEMDlJR29wSUdvZ1BTQnlZVzVrYjIxSmJuUW9ia2wwWlcxektUdGNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnliM2RwSUQwZ1kyOXZjbVJwYm1GMFpYTmJhVjA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEp2ZDJvZ1BTQmpiMjl5WkdsdVlYUmxjMXRxWFR0Y2JseHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklDNHVMaUJqYjIxd2RYUmxJSFJvWldseUlFVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTQnZiaUIwYUdVZ1JDMWthVzFsYm5OcGIyNWhiQ0J0WVhBc0lHUnBhaTVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sS0hKdmQya3NJSEp2ZDJvcE8xeHVYRzRnSUNBZ0lDQWdJQzh2SUVsbUlISnBhaUE4UFNCeVl5d2diM0lnYVdZZ2NtbHFJRDRnY21NZ1lXNWtJR1JwYWlBOElISnBhaUF1TGk1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2gwYUdsekxtTjFkRzltWmlBOVBTQXdLU0I4ZkNBb2NpQThQU0IwYUdsekxtTjFkRzltWmlrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0V5SUNvZ0tISWdMU0JrS1NBdklDaGtJQ3NnZEdocGN5NWxjSE5wYkc5dUtUdGNiaUFnSUNBZ0lDQWdJQ0F2THlBdUxpNGdkWEJrWVhSbElIUm9aU0JqYjI5eVpHbHVZWFJsY3lCNGFTQmhibVFnZUdvdVhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1pHbG1aa2xLSUQwZ2RtVmpkRzl5UVdSa0tISnZkMmtzSUhKdmQyb3NJQzB4S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjl5WkdsdVlYUmxjMXRwWFNBOUlIWmxZM1J2Y2tGa1pDaHliM2RwTENCa2FXWm1TVW9zSUcxMWJIUnBjR3hwWlhJcE8xeHVJQ0FnSUNBZ0lDQWdJR052YjNKa2FXNWhkR1Z6VzJwZElEMGdkbVZqZEc5eVFXUmtLSEp2ZDJvc0lHUnBabVpKU2l3Z0xXMTFiSFJwY0d4cFpYSXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0F2THlCRVpXTnlaV0Z6WlNCMGFHVWdiR1ZoY201cGJtY2djbUYwWlNCN2JHRnRZbVJoZlNCaWVTQmhJSEJ5WlhOamNtbGlaV1FnZTJSc1lXMWlaR0Y5TGx4dUlDQWdJQ0FnYkdGdFltUmhNaUF0UFNCMGFHbHpMbVJzWVcxaVpHRXlPMXh1SUNBZ0lDQWdhV1lnS0d4aGJXSmtZVElnUEQwZ01DNHBYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl2Y21ScGJtRjBaWE03WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCSmJYQnNaVzFsYm5SeklHMXZaR2xtYVdWa0lITjBiMk5vWVhOMGFXTWdjSEp2ZUdsdGFYUjVJR1Z0WW1Wa1pHbHVaeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVUZOUVJVSmhjMlZjYmlBcUlFQnNhVzVySUdSdmFUb3hNQzR4TURFMkwxTXhNRGt6TFRNeU5qTW9NRE1wTURBeE5UVXRORnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVUZOUVJVSmhjMlVnWlhoMFpXNWtjeUJUVUVWQ1lYTmxJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUdFZ2JXOWthV1pwWldRZ2RYQmtZWFJsSUhKMWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnZG1WamRHOXljeUJFTFdScGJXVnVjMmx2Ym1Gc0lHTnZiM0prYVc1aGRHVnpMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdERiMjl5WkdsdVlYUmxjMzBnVTFCRklHTnZiM0prYVc1aGRHVnpJR2x1SUVRZ2MzQmhZMlV1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWVhONWJtTWdaVzFpWldRb2RtVmpkRzl5Y3pvZ1ZtVmpkRzl5Y3lrNklGQnliMjFwYzJVOFEyOXZjbVJwYm1GMFpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdVNYUmxiWE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCaGNtVmhWMmxrZEdnZ1BTQTBNRHRjYmlBZ0lDQXZMeUFnU1c1cGRHbGhiR2w2WlNCMGFHVWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5QnZaaUIwYUdVZ1RpQndiMmx1ZEhNdVhHNGdJQ0FnWTI5dWMzUWdZMjl2Y21ScGJtRjBaWE1nUFNCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0c1SmRHVnRjeXdnVUZOUVJVSmhjMlV1WkdsdFpXNXphVzl1TENCaGNtVmhWMmxrZEdncE8xeHVJQ0FnSUd4bGRDQnNZVzFpWkdFZ1BTQjBhR2x6TG14aGJXSmtZVHRjYmx4dUlDQWdJR0YzWVdsMElIUm9hWE11YVc1cGRFUnBjM1JoYm1ObEtIWmxZM1J2Y25NcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ1kzbGpiR1VnUFNBd095QmplV05zWlNBOElIUm9hWE11WTNsamJHVnpPeUFySzJONVkyeGxLU0I3WEc0Z0lDQWdJQ0F2THlCVFpXeGxZM1FnWVNCd2IybHVkQ3dnYVN3Z1lYUWdjbUZ1Wkc5dElDaHdhWFp2ZENrdVhHNGdJQ0FnSUNCamIyNXpkQ0JwT2lCdWRXMWlaWElnUFNCeVlXNWtiMjFKYm5Rb2JrbDBaVzF6S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEp2ZDJrZ1BTQmpiMjl5WkdsdVlYUmxjMXRwWFR0Y2JseHVJQ0FnSUNBZ0x5OGdSbTl5SUdWMlpYSjVJSEJ2YVc1MElHb2dJVDBnYVNBdUxpNWNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2dia2wwWlcxek95QXJLMm9wSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2tnUFQwZ2Fpa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJR052Ym5OMElISnZkMm9nUFNCamIyOXlaR2x1WVhSbGMxdHFYVHRjYmlBZ0lDQWdJQ0FnTHk4Z0xpNHVJSEpsZEhKcFpYWmxJQ2h2Y2lCbGRtRnNkV0YwWlNrZ2FYUnpJSEJ5YjNocGJXbDBlU0IwYnlCcElHbHVJSFJvWlNCcGJuQjFkQ0J6Y0dGalpTd2djbWxxSUM0dUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeUlEMGdkR2hwY3k1allXeGpSR2x6ZEdGdVkyVW9kbVZqZEc5eWN5d2dhU3dnYWlrN1hHNGdJQ0FnSUNBZ0lDOHZJQzR1TGlCaGJtUWdZMjl0Y0hWMFpTQjBhR1ZwY2lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ2IyNGdkR2hsSUVRdFpHbHRaVzV6YVc5dVlXd2diV0Z3TENCa2FXb3VYRzRnSUNBZ0lDQWdJR052Ym5OMElHUWdQU0JqWVd4amRXeGhkR1ZGZFdOc2FXUmxZVzVFYVhOMFlXNWpaU2h5YjNkcExDQnliM2RxS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdTV1lnY21scUlEdzlJSEpqTENCdmNpQnBaaUJ5YVdvZ1BpQnlZeUJoYm1RZ1pHbHFJRHdnY21scUlDNHVMbHh1SUNBZ0lDQWdJQ0JwWmlBb0tIUm9hWE11WTNWMGIyWm1JRDA5SURBcElIeDhJQ2h5SUR3OUlIUm9hWE11WTNWMGIyWm1LU0I4ZkNBb1pDQThJSElwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JYVnNkR2x3YkdsbGNpQTlJR3hoYldKa1lTQXFJQ2h5SUMwZ1pDa2dMeUFvWkNBcklIUm9hWE11WlhCemFXeHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsbVprbEtJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJSEp2ZDJvc0lDMHhLVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QXVMaTRnZFhCa1lYUmxJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyOXlaR2x1WVhSbGMxdHFYU0E5SUhabFkzUnZja0ZrWkNoeWIzZHFMQ0JrYVdabVNVb3NJQzF0ZFd4MGFYQnNhV1Z5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdSR1ZqY21WaGMyVWdkR2hsSUd4bFlYSnVhVzVuSUhKaGRHVWdlMnhoYldKa1lYMGdZbmtnWVNCd2NtVnpZM0pwWW1Wa0lIdGtiR0Z0WW1SaGZTNWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQjBhR2x6TG1Sc1lXMWlaR0U3WEc0Z0lDQWdJQ0JwWmlBb2JHRnRZbVJoSUR3OUlEQXVLVnh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR052YjNKa2FXNWhkR1Z6TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUU5eWFXZHBibUZzVTFCRlhHNGdLaUJBYkdsdWF5QmtiMms2TVRBdU1UQXdNaTlxWTJNdU1UQXlNelJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUU5eWFXZHBibUZzVTFCRklHVjRkR1Z1WkhNZ1UxQkZRbUZ6WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUhabFkzUnZjbk1nWjJsMlpXNGdhVzUwYnlCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QmhJRzF2WkdsbWFXVmtJSFZ3WkdGMFpTQnlkV3hsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlIWmxZM1J2Y25NZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlGTlFSU0JqYjI5eVpHbHVZWFJsY3lCcGJpQkVJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJSEpoWkdsMWMxQmxjbU5sYm5RNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJRzFoZUVScGMzUmhibU5sT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnRZWGhFYVhOMFlXNWpaVk4wWlhCek9pQnVkVzFpWlhJN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUTTdYRzRnSUNBZ2RHaHBjeTV6ZEdWd2N5QTlJRzl3ZEdsdmJuTS9Mbk4wWlhCeklEOC9JREV3TURBd01EdGNiaUFnSUNCMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BTQnZjSFJwYjI1elB5NXlZV1JwZFhOUVpYSmpaVzUwSUQ4L0lERXVNRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElEMGdiM0IwYVc5dWN6OHViV0Y0UkdsemRHRnVZMlVnUHo4Z2JuVnNiRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFNCdmNIUnBiMjV6UHk1dFlYaEVhWE4wWVc1alpWTjBaWEJ6SUQ4L0lHNTFiR3c3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWVhONWJtTWdaVzFpWldRb2RtVmpkRzl5Y3pvZ1ZtVmpkRzl5Y3lrNklGQnliMjFwYzJVOFEyOXZjbVJwYm1GMFpYTStJSHRjYmlBZ0lDQmpiMjV6ZENCdVNYUmxiWE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCaGNtVmhWMmxrZEdnZ1BTQTBNRHRjYmlBZ0lDQXZMeUJKYm1sMGFXRnNhWHBsSUhSb1pTQkVMV1JwYldWdWMybHZibUZzSUdOdmIzSmthVzVoZEdWeklHOW1JSFJvWlNCT0lIQnZhVzUwY3k1Y2JpQWdJQ0JqYjI1emRDQmpiMjl5WkdsdVlYUmxjeUE5SUdacGJHeFNZVzVrYjIxTllYUnlhWGdvYmtsMFpXMXpMQ0JQY21sbmFXNWhiRk5RUlM1a2FXMWxibk5wYjI0c0lHRnlaV0ZYYVdSMGFDazdYRzVjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbWx1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6S1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxVM1JsY0hNZ1BTQnVTWFJsYlhNZ0tpQk5ZWFJvTG1ac2IyOXlLQ2h1U1hSbGJYTWdMU0F4S1NBdklESXBPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViV0Y0UkdsemRHRnVZMlVnUFQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViV0Y0UkdsemRHRnVZMlVnUFNBdE1XVXpOenRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJRzRnUFNBd095QnVJRHdnZEdocGN5NXRZWGhFYVhOMFlXNWpaVk4wWlhCek95QnVLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE95QnNaWFFnYWlBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FTQTlQU0JxS1NCcUlEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaQ0E5SUhSb2FYTXVZMkZzWTBScGMzUmhibU5sS0habFkzUnZjbk1zSUdrc0lHb3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pDQStJSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVXBYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NXRZWGhFYVhOMFlXNWpaU0E5SUdRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHeGhiV0prWVNBOUlIUm9hWE11YkdGdFltUmhPMXh1SUNBZ0lHTnZibk4wSUhKaFpHbDFjeUE5SUNoMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BUMGdNQzR3S1NBL0lIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ09pQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElDb2dkR2hwY3k1eVlXUnBkWE5RWlhKalpXNTBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklHTnZiWEIxZEdVZ2RHaGxhWElnUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUc5dUlIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHMWhjQ3dnWkdscUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jbTkzYVN3Z2NtOTNhaWs3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2h5SUR3OUlISmhaR2wxY3lrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0VnS2lBd0xqVWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lDOHZJQzR1TGlCMWNHUmhkR1VnZEdobElHTnZiM0prYVc1aGRHVnpJSGhwSUdGdVpDQjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrYVdabVNVb2dQU0IyWldOMGIzSkJaR1FvY205M2FTd2djbTkzYWl3Z0xURXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmIzSmthVzVoZEdWelcybGRJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJR1JwWm1aSlNpd2diWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQW9LSFJvYVhNdWJHRnRZbVJoSUMwZ2RHaHBjeTVrYkdGdFltUmhLU0F2SUNoMGFHbHpMbU41WTJ4bGN5QXRJREV1TUNrcE95QTdYRzRnSUNBZ0lDQnBaaUFvYkdGdFltUmhJRHdnZEdocGN5NWtiR0Z0WW1SaEtWeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHTnZiM0prYVc1aGRHVnpPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImNvbnN0IHBlcSA9IG5ldyBVaW50MzJBcnJheSgweDEwMDAwKTtcbmNvbnN0IG15ZXJzXzMyID0gKGEsIGIpID0+IHtcbiAgICBjb25zdCBuID0gYS5sZW5ndGg7XG4gICAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICAgIGNvbnN0IGxzdCA9IDEgPDwgKG4gLSAxKTtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBzYyA9IG47XG4gICAgbGV0IGkgPSBuO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgcGVxW2EuY2hhckNvZGVBdChpKV0gfD0gMSA8PCBpO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICAgIGVxIHw9ICgoZXEgJiBwdikgKyBwdikgXiBwdjtcbiAgICAgICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICAgICAgcHYgJj0gZXE7XG4gICAgICAgIGlmIChtdiAmIGxzdCkge1xuICAgICAgICAgICAgc2MrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAocHYgJiBsc3QpIHtcbiAgICAgICAgICAgIHNjLS07XG4gICAgICAgIH1cbiAgICAgICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgICAgICBwdiA9IChwdiA8PCAxKSB8IH4oeHYgfCBtdik7XG4gICAgICAgIG12ICY9IHh2O1xuICAgIH1cbiAgICBpID0gbjtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHNjO1xufTtcbmNvbnN0IG15ZXJzX3ggPSAoYiwgYSkgPT4ge1xuICAgIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgICBjb25zdCBtID0gYi5sZW5ndGg7XG4gICAgY29uc3QgbWhjID0gW107XG4gICAgY29uc3QgcGhjID0gW107XG4gICAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgICBjb25zdCB2c2l6ZSA9IE1hdGguY2VpbChtIC8gMzIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHNpemU7IGkrKykge1xuICAgICAgICBwaGNbaV0gPSAtMTtcbiAgICAgICAgbWhjW2ldID0gMDtcbiAgICB9XG4gICAgbGV0IGogPSAwO1xuICAgIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICAgICAgbGV0IG12ID0gMDtcbiAgICAgICAgbGV0IHB2ID0gLTE7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgICAgICBjb25zdCB2bGVuID0gTWF0aC5taW4oMzIsIG0pICsgc3RhcnQ7XG4gICAgICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IHZsZW47IGsrKykge1xuICAgICAgICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlcSA9IHBlcVthLmNoYXJDb2RlQXQoaSldO1xuICAgICAgICAgICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICAgICAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICAgICAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgICAgICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICAgICAgICBsZXQgbWggPSBwdiAmIHhoO1xuICAgICAgICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgICAgICAgICBwaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICAgICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICAgICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICAgICAgICBtdiA9IHBoICYgeHY7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgdmxlbjsgaysrKSB7XG4gICAgICAgICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IG12ID0gMDtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgICBjb25zdCB2bGVuID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCB2bGVuOyBrKyspIHtcbiAgICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgIH1cbiAgICBsZXQgc2NvcmUgPSBtO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgICAgIHNjb3JlICs9IChwaCA+Pj4gKG0gLSAxKSkgJiAxO1xuICAgICAgICBzY29yZSAtPSAobWggPj4+IChtIC0gMSkpICYgMTtcbiAgICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgICB9XG4gICAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IHZsZW47IGsrKykge1xuICAgICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiBzY29yZTtcbn07XG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gICAgaWYgKGEubGVuZ3RoIDwgYi5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgdG1wID0gYjtcbiAgICAgICAgYiA9IGE7XG4gICAgICAgIGEgPSB0bXA7XG4gICAgfVxuICAgIGlmIChiLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChhLmxlbmd0aCA8PSAzMikge1xuICAgICAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gICAgfVxuICAgIHJldHVybiBteWVyc194KGEsIGIpO1xufTtcbmNvbnN0IGNsb3Nlc3QgPSAoc3RyLCBhcnIpID0+IHtcbiAgICBsZXQgbWluX2Rpc3RhbmNlID0gSW5maW5pdHk7XG4gICAgbGV0IG1pbl9pbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICAgICAgaWYgKGRpc3QgPCBtaW5fZGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3Q7XG4gICAgICAgICAgICBtaW5faW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5leHBvcnQgeyBjbG9zZXN0LCBkaXN0YW5jZSB9O1xuIiwiZXhwb3J0IHZhciBTdHJpbmdNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKFN0cmluZ01ldHJpY3NOYW1lcykge1xuICAgIFN0cmluZ01ldHJpY3NOYW1lc1tcIkxldmVuc2h0ZWluXCJdID0gXCJMZXZlbnNodGVpblwiO1xuICAgIFN0cmluZ01ldHJpY3NOYW1lc1tcIkphcm9XaW5rbGVyXCJdID0gXCJKYXJvLVdpbmtsZXJcIjtcbiAgICBTdHJpbmdNZXRyaWNzTmFtZXNbXCJNYW5oYXR0YW5cIl0gPSBcIk1hbmhhdHRhblwiO1xufSkoU3RyaW5nTWV0cmljc05hbWVzIHx8IChTdHJpbmdNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IHZhciBWZWN0b3JNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKFZlY3Rvck1ldHJpY3NOYW1lcykge1xuICAgIFZlY3Rvck1ldHJpY3NOYW1lc1tcIkV1Y2xpZGVhblwiXSA9IFwiRXVjbGlkZWFuXCI7XG59KShWZWN0b3JNZXRyaWNzTmFtZXMgfHwgKFZlY3Rvck1ldHJpY3NOYW1lcyA9IHt9KSk7XG5leHBvcnQgdmFyIEJpdEFycmF5TWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChCaXRBcnJheU1ldHJpY3NOYW1lcykge1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiVGFuaW1vdG9cIl0gPSBcIlRhbmltb3RvXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJEaWNlXCJdID0gXCJEaWNlXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJBc3ltbWV0cmljXCJdID0gXCJBc3ltbWV0cmljXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJCcmF1bkJsYW5xdWV0XCJdID0gXCJCcmF1bi1CbGFucXVldFwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiQ29zaW5lXCJdID0gXCJDb3NpbmVcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkt1bGN6eW5za2lcIl0gPSBcIkt1bGN6eW5za2lcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIk1jQ29ubmF1Z2hleVwiXSA9IFwiTWMtQ29ubmF1Z2hleVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiUm9nb3RHb2xkYmVyZ1wiXSA9IFwiUm9nb3QtR29sZGJlcmdcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlJ1c3NlbFwiXSA9IFwiUnVzc2VsXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJTb2thbFwiXSA9IFwiU29rYWxcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkhhbW1pbmdcIl0gPSBcIkhhbW1pbmdcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkV1Y2xpZGVhblwiXSA9IFwiRXVjbGlkZWFuXCI7XG59KShCaXRBcnJheU1ldHJpY3NOYW1lcyB8fCAoQml0QXJyYXlNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IHZhciBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cztcbihmdW5jdGlvbiAoRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMpIHtcbiAgICBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0c1tcIlZlY3RvclwiXSA9IFwiVmVjdG9yXCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJTdHJpbmdcIl0gPSBcIlN0cmluZ1wiO1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiQml0QXJyYXlcIl0gPSBcIkJpdEFycmF5XCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJNYWNyb01vbGVjdWxlXCJdID0gXCJNYWNyb01vbGVjdWxlXCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJOdW1iZXJcIl0gPSBcIk51bWJlclwiO1xufSkoRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMgfHwgKERpc3RhbmNlTWV0cmljc1N1YmplY3RzID0ge30pKTtcbmV4cG9ydCB2YXIgTnVtYmVyTWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChOdW1iZXJNZXRyaWNzTmFtZXMpIHtcbiAgICBOdW1iZXJNZXRyaWNzTmFtZXNbXCJOdW1lcmljRGlzdGFuY2VcIl0gPSBcIk51bWVyaWNEaXN0YW5jZVwiO1xufSkoTnVtYmVyTWV0cmljc05hbWVzIHx8IChOdW1iZXJNZXRyaWNzTmFtZXMgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTI5dWMzUnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVkyOXVjM1J6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTFCUVUwc1EwRkJUaXhKUVVGWkxHdENRVWxVTzBGQlNrZ3NWMEZCV1N4clFrRkJhMEk3U1VGRE1VSXNhVVJCUVRKQ0xFTkJRVUU3U1VGRE0wSXNhMFJCUVRSQ0xFTkJRVUU3U1VGRE5VSXNOa05CUVhWQ0xFTkJRVUU3UVVGRGVrSXNRMEZCUXl4RlFVcFRMR3RDUVVGclFpeExRVUZzUWl4clFrRkJhMElzVVVGSk0wSTdRVUZGU0N4TlFVRk5MRU5CUVU0c1NVRkJXU3hyUWtGRlZEdEJRVVpJTEZkQlFWa3NhMEpCUVd0Q08wbEJRekZDTERaRFFVRjFRaXhEUVVGQk8wRkJRM3BDTEVOQlFVTXNSVUZHVXl4clFrRkJhMElzUzBGQmJFSXNhMEpCUVd0Q0xGRkJSVE5DTzBGQlJVZ3NUVUZCVFN4RFFVRk9MRWxCUVZrc2IwSkJZVlE3UVVGaVNDeFhRVUZaTEc5Q1FVRnZRanRKUVVNMVFpdzJRMEZCY1VJc1EwRkJRVHRKUVVOeVFpeHhRMEZCWVN4RFFVRkJPMGxCUTJJc2FVUkJRWGxDTEVOQlFVRTdTVUZEZWtJc2QwUkJRV2RETEVOQlFVRTdTVUZEYUVNc2VVTkJRV2xDTEVOQlFVRTdTVUZEYWtJc2FVUkJRWGxDTEVOQlFVRTdTVUZEZWtJc2MwUkJRVGhDTEVOQlFVRTdTVUZET1VJc2QwUkJRV2RETEVOQlFVRTdTVUZEYUVNc2VVTkJRV2xDTEVOQlFVRTdTVUZEYWtJc2RVTkJRV1VzUTBGQlFUdEpRVU5tTERKRFFVRnRRaXhEUVVGQk8wbEJRMjVDTEN0RFFVRjFRaXhEUVVGQk8wRkJRM3BDTEVOQlFVTXNSVUZpVXl4dlFrRkJiMElzUzBGQmNFSXNiMEpCUVc5Q0xGRkJZVGRDTzBGQlJVZ3NUVUZCVFN4RFFVRk9MRWxCUVZrc2RVSkJUVlE3UVVGT1NDeFhRVUZaTEhWQ1FVRjFRanRKUVVNdlFpdzBRMEZCYVVJc1EwRkJRVHRKUVVOcVFpdzBRMEZCYVVJc1EwRkJRVHRKUVVOcVFpeG5SRUZCY1VJc1EwRkJRVHRKUVVOeVFpd3dSRUZCSzBJc1EwRkJRVHRKUVVNdlFpdzBRMEZCYVVJc1EwRkJRVHRCUVVOdVFpeERRVUZETEVWQlRsTXNkVUpCUVhWQ0xFdEJRWFpDTEhWQ1FVRjFRaXhSUVUxb1F6dEJRVVZJTEUxQlFVMHNRMEZCVGl4SlFVRlpMR3RDUVVWWU8wRkJSa1FzVjBGQldTeHJRa0ZCYTBJN1NVRkROVUlzZVVSQlFXMURMRU5CUVVFN1FVRkRja01zUTBGQlF5eEZRVVpYTEd0Q1FVRnJRaXhMUVVGc1FpeHJRa0ZCYTBJc1VVRkZOMElpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnWlc1MWJTQlRkSEpwYm1kTlpYUnlhV056VG1GdFpYTWdlMXh1SUNBZ0lFeGxkbVZ1YzJoMFpXbHVJRDBnSjB4bGRtVnVjMmgwWldsdUp5eGNiaUFnSUNCS1lYSnZWMmx1YTJ4bGNpQTlJQ2RLWVhKdkxWZHBibXRzWlhJbkxGeHVJQ0FnSUUxaGJtaGhkSFJoYmlBOUlDZE5ZVzVvWVhSMFlXNG5MRnh1SUNCOVhHNWNibVY0Y0c5eWRDQmxiblZ0SUZabFkzUnZjazFsZEhKcFkzTk9ZVzFsY3lCN1hHNGdJQ0FnUlhWamJHbGtaV0Z1SUQwZ0owVjFZMnhwWkdWaGJpY3NYRzRnSUgxY2JseHVaWGh3YjNKMElHVnVkVzBnUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNZ2UxeHVJQ0FnSUZSaGJtbHRiM1J2SUQwZ0oxUmhibWx0YjNSdkp5eGNiaUFnSUNCRWFXTmxJRDBnSjBScFkyVW5MRnh1SUNBZ0lFRnplVzF0WlhSeWFXTWdQU0FuUVhONWJXMWxkSEpwWXljc1hHNGdJQ0FnUW5KaGRXNUNiR0Z1Y1hWbGRDQTlJQ2RDY21GMWJpMUNiR0Z1Y1hWbGRDY3NYRzRnSUNBZ1EyOXphVzVsSUQwZ0owTnZjMmx1WlNjc1hHNGdJQ0FnUzNWc1kzcDVibk5yYVNBOUlDZExkV3hqZW5sdWMydHBKeXhjYmlBZ0lDQk5ZME52Ym01aGRXZG9aWGtnUFNBblRXTXRRMjl1Ym1GMVoyaGxlU2NzWEc0Z0lDQWdVbTluYjNSSGIyeGtZbVZ5WnlBOUlDZFNiMmR2ZEMxSGIyeGtZbVZ5Wnljc1hHNGdJQ0FnVW5WemMyVnNJRDBnSjFKMWMzTmxiQ2NzWEc0Z0lDQWdVMjlyWVd3Z1BTQW5VMjlyWVd3bkxGeHVJQ0FnSUVoaGJXMXBibWNnUFNBblNHRnRiV2x1Wnljc1hHNGdJQ0FnUlhWamJHbGtaV0Z1SUQwZ0owVjFZMnhwWkdWaGJpY3NYRzRnSUgxY2JseHVaWGh3YjNKMElHVnVkVzBnUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITWdlMXh1SUNBZ0lGWmxZM1J2Y2lBOUlDZFdaV04wYjNJbkxGeHVJQ0FnSUZOMGNtbHVaeUE5SUNkVGRISnBibWNuTEZ4dUlDQWdJRUpwZEVGeWNtRjVJRDBnSjBKcGRFRnljbUY1Snl4Y2JpQWdJQ0JOWVdOeWIwMXZiR1ZqZFd4bElEMGdKMDFoWTNKdlRXOXNaV04xYkdVbkxGeHVJQ0FnSUU1MWJXSmxjaUE5SUNkT2RXMWlaWEluTEZ4dUlDQjlYRzVjYm1WNGNHOXlkQ0JsYm5WdElFNTFiV0psY2sxbGRISnBZM05PWVcxbGN5QjdYRzRnSUU1MWJXVnlhV05FYVhOMFlXNWpaU0E5SUNkT2RXMWxjbWxqUkdsemRHRnVZMlVuTEZ4dWZWeHVYRzRpWFgwPSIsImltcG9ydCB7IEJpdEFycmF5TWV0cmljc05hbWVzIH0gZnJvbSAnLi90eXBlZC1tZXRyaWNzL2NvbnN0cyc7XG5leHBvcnQgY29uc3Qgc2ltaWxhcml0eU1ldHJpYyA9IHtcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiB0YW5pbW90b1NpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBkaWNlU2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGFzeW1tZXRyaWNTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYnJhdW5CbGFucXVldFNpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGNvc2luZVNpbWlsYXJpdHksXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBrdWxjenluc2tpU2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogbWNDb25uYXVnaGV5U2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IHJvZ290R29sZGJlcmdTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBydXNzZWxTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IHNva2FsU2ltaWxhcml0eSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuSGFtbWluZ106IGhhbW1pbmdTaW1pbGFyaXR5LFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBldWNsaWRlYW5TaW1pbGFyaXR5LFxufTtcbmV4cG9ydCBjb25zdCBkaXN0YW5jZU1ldHJpY3MgPSB7XG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXTogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV06IGRpY2VEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF06IGJyYXVuQmxhbnF1ZXREaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXTogY29zaW5lRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBrdWxjenluc2tpRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV06IG1jQ29ubmF1Z2hleURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXTogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBydXNzZWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdOiBzb2thbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5IYW1taW5nXTogaGFtbWluZ0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQ0hFTV9TSU1JTEFSSVRZX01FVFJJQ1MgPSBbXG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG8sXG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZSxcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVcbl07XG5leHBvcnQgY29uc3QgU0VRX1NQQUNFX1NJTUlMQVJJVFlfTUVUUklDUyA9IFtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90byxcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljLFxuICAgIEJpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZSxcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbFxuXTtcbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAodG90YWwgLSBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRhbmltb3RvRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHRhbmltb3RvU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAyICogY29tbW9uIC8gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShkaWNlU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWwgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIE1hdGguc3FydCh0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGNvc2luZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV1Y2xpZGVhblNpbWlsYXJpdHkoeCwgeSkge1xuICAgIHJldHVybiBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGV1Y2xpZGVhbkRpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShoYW1taW5nRGlzdGFuY2UoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpIC0gMiAqIHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzb2thbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAoMiAqIHRvdGFsIC0gMyAqIGNvbW1vbik7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc29rYWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBjb25zdCB0b3RhbFByb2QgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWxQcm9kID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAoY29tbW9uICogdG90YWwpIC8gKDIgKiB0b3RhbFByb2QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGt1bGN6eW5za2lEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoa3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsIC0gdG90YWxQcm9kKSAvIHRvdGFsUHJvZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkobWNDb25uYXVnaGV5U2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtaW4gPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1pbjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3ltbWV0cmljRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0U2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoeC50cnVlQ291bnQoKSwgeS50cnVlQ291bnQoKSk7XG4gICAgaWYgKG1heCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gbWF4O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJyYXVuQmxhbnF1ZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGlmICh4Lmxlbmd0aCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8geC5sZW5ndGg7XG59XG5leHBvcnQgZnVuY3Rpb24gcnVzc2VsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgY29uc3QgdG90YWwgPSB4LmNvdW50Qml0cyh0cnVlKSArIHkuY291bnRCaXRzKHRydWUpO1xuICAgIGNvbnN0IGxlbiA9IHgubGVuZ3RoO1xuICAgIGNvbnN0IGRpZmYgPSBsZW4gLSB0b3RhbCArIGNvbW1vbjtcbiAgICBpZiAoKGNvbW1vbiA9PSBsZW4pIHx8IChkaWZmID09IGxlbikpXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gY29tbW9uIC8gdG90YWwgKyBkaWZmIC8gKDIgKiBsZW4gLSB0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShyb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZSkge1xuICAgIHJldHVybiAxIC8gKDEgKyBkaXN0YW5jZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShzaW1pbGFyaXR5KSB7XG4gICAgcmV0dXJuIDEgLyBzaW1pbGFyaXR5IC0gMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1lcmljRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLmFicyh4IC0geSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV1YwY21samN5MXRaWFJvYjJSekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWkdsemRHRnVZMlV0YldWMGNtbGpjeTF0WlhSb2IyUnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQlF5eHZRa0ZCYjBJc1JVRkJReXhOUVVGTkxIZENRVUYzUWl4RFFVRkRPMEZCUlRWRUxFMUJRVTBzUTBGQlF5eE5RVUZOTEdkQ1FVRm5RaXhIUVVFMlJEdEpRVU40Uml4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZMR3RDUVVGclFqdEpRVU51UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMR05CUVdNN1NVRkRNME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeHZRa0ZCYjBJN1NVRkRka1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTeDFRa0ZCZFVJN1NVRkROMFFzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeG5Ra0ZCWjBJN1NVRkRMME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeHZRa0ZCYjBJN1NVRkRka1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTeHpRa0ZCYzBJN1NVRkRNMFFzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTeDFRa0ZCZFVJN1NVRkROMFFzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeG5Ra0ZCWjBJN1NVRkRMME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeGxRVUZsTzBsQlF6ZERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc2FVSkJRV2xDTzBsQlEycEVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTzBOQlEzUkVMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeGxRVUZsTEVkQlFUWkVPMGxCUTNaR0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzWjBKQlFXZENPMGxCUTJwRUxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzV1VGQldUdEpRVU42UXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMR3RDUVVGclFqdEpRVU55UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMSEZDUVVGeFFqdEpRVU16UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMR05CUVdNN1NVRkROME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeHJRa0ZCYTBJN1NVRkRja1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTeHZRa0ZCYjBJN1NVRkRla1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTeHhRa0ZCY1VJN1NVRkRNMFFzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeGpRVUZqTzBsQlF6ZERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1lVRkJZVHRKUVVNelF5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEdWQlFXVTdTVUZETDBNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hwUWtGQmFVSTdRMEZEY0VRc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEhWQ1FVRjFRaXhIUVVGSE8wbEJRM0pETEc5Q1FVRnZRaXhEUVVGRExGRkJRVkU3U1VGRE4wSXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNUdEpRVU42UWl4dlFrRkJiMElzUTBGQlF5eE5RVUZOTzBOQlFVTXNRMEZCUXp0QlFVTXZRaXhOUVVGTkxFTkJRVU1zVFVGQlRTdzBRa0ZCTkVJc1IwRkJSenRKUVVNeFF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUk8wbEJRemRDTEc5Q1FVRnZRaXhEUVVGRExGVkJRVlU3U1VGREwwSXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRUdEpRVU16UWl4dlFrRkJiMElzUTBGQlF5eExRVUZMTzBOQlFVTXNRMEZCUXp0QlFVVTVRaXhOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVNMVF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RFFVRkRPMUZCUVVVc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTnVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkROMFFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4alFVRmpMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGNrUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVNMVF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RFFVRkRPMUZCUVVVc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETzBGQlF6VkNMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzV1VGQldTeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTI1RUxFOUJRVThzZVVKQlFYbENMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNwRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU0xUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJRVVVzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMjVETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzSkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMFFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dFFrRkJiVUlzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXhSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRelZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2FVSkJRV2xDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTndSaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdsQ1FVRnBRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzaEVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWlVGQlpTeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNSRUxFOUJRVThzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVONlJTeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR1ZCUVdVc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU4wUkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU53UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHOUNRVUZ2UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRek5FTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkROVU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTm9SQ3hKUVVGSkxGTkJRVk1zU1VGQlNTeERRVUZETzFGQlFVVXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRMMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSE5DUVVGelFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpkRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRVVVzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZETDBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03UVVGRGJFUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3h2UWtGQmIwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVNelJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEycEZMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYjBKQlFXOUNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE0wUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVUZGTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTNwQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUTNSQ0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSFZDUVVGMVFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpsRUxFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRMjVFTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkJSU3hQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU42UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF6dEJRVU4wUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxIRkNRVUZ4UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRelZFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYkVVc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU4yUkN4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF6dFJRVUZGTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZET3p0UlFVTTFReXhQUVVGUExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6VkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRVVzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGQlF5eFJRVUZuUWp0SlFVTjRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNMVFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZWQlFXdENPMGxCUXpGRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4bFFVRmxMRU5CUVVNc1EwRkJVeXhGUVVGRkxFTkJRVk03U1VGRGJFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZRaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdlMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6ZlNCbWNtOXRJQ2N1TDNSNWNHVmtMVzFsZEhKcFkzTXZZMjl1YzNSekp6dGNibHh1Wlhod2IzSjBJR052Ym5OMElITnBiV2xzWVhKcGRIbE5aWFJ5YVdNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcElEMCtJRzUxYldKbGNpQjlJRDBnZTF4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VkdGdWFXMXZkRzlkT2lCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYVG9nWkdsalpWTnBiV2xzWVhKcGRIa3NYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUJjM2x0YldWMGNtbGpYVG9nWVhONWJXMWxkSEpwWTFOcGJXbHNZWEpwZEhrc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1Q2NtRjFia0pzWVc1eGRXVjBYVG9nWW5KaGRXNUNiR0Z1Y1hWbGRGTnBiV2xzWVhKcGRIa3NYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NURiM05wYm1WZE9pQmpiM05wYm1WVGFXMXBiR0Z5YVhSNUxGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVMzVnNZM3A1Ym5OcmFWMDZJR3QxYkdONmVXNXphMmxUYVcxcGJHRnlhWFI1TEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VFdORGIyNXVZWFZuYUdWNVhUb2diV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKdloyOTBSMjlzWkdKbGNtZGRPaUJ5YjJkdmRFZHZiR1JpWlhKblUybHRhV3hoY21sMGVTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSjFjM05sYkYwNklISjFjM05sYkZOcGJXbHNZWEpwZEhrc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VGIydGhiRjA2SUhOdmEyRnNVMmx0YVd4aGNtbDBlU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa2hoYlcxcGJtZGRPaUJvWVcxdGFXNW5VMmx0YVd4aGNtbDBlU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa1YxWTJ4cFpHVmhibDA2SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdaR2x6ZEdGdVkyVk5aWFJ5YVdOek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtTQTlQaUJ1ZFcxaVpYSWdmU0E5SUh0Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxSaGJtbHRiM1J2WFRvZ2RHRnVhVzF2ZEc5RWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtScFkyVmRPaUJrYVdObFJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhUb2dZWE41YlcxbGRISnBZMFJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRbkpoZFc1Q2JHRnVjWFZsZEYwNklHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMDZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVMzVnNZM3A1Ym5OcmFWMDZJR3QxYkdONmVXNXphMmxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwNklHMWpRMjl1Ym1GMVoyaGxlVVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVbTluYjNSSGIyeGtZbVZ5WjEwNklISnZaMjkwUjI5c1pHSmxjbWRFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMDZJSEoxYzNObGJFUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVUyOXJZV3hkT2lCemIydGhiRVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTR0Z0YldsdVoxMDZJR2hoYlcxcGJtZEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR1YxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUVOSVJVMWZVMGxOU1V4QlVrbFVXVjlOUlZSU1NVTlRJRDBnVzF4dUlDQkNhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVVWVc1cGJXOTBieXhjYmlBZ1FtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVSR2xqWlN4Y2JpQWdRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UTI5emFXNWxYVHRjYm1WNGNHOXlkQ0JqYjI1emRDQlRSVkZmVTFCQlEwVmZVMGxOU1V4QlVrbFVXVjlOUlZSU1NVTlRJRDBnVzF4dUlDQkNhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVVWVc1cGJXOTBieXhjYmlBZ1FtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRWE41YlcxbGRISnBZeXhjYmlBZ1FtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRMjl6YVc1bExGeHVJQ0JDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VGIydGhiRjA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzSUQwOUlEQXBJSEpsZEhWeWJpQXhMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklDaDBiM1JoYkNBdElHTnZiVzF2YmlrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwWVc1cGJXOTBiMFJwYzNSaGJtTmxLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJuWlhSRWFYTjBZVzVqWlVaeWIyMVRhVzFwYkdGeWFYUjVLSFJoYm1sdGIzUnZVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCa2FXTmxVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJSGd1ZEhKMVpVTnZkVzUwS0NrZ0t5QjVMblJ5ZFdWRGIzVnVkQ2dwTzF4dUlDQnBaaUFvZEc5MFlXd2dQVDBnTUNrZ2NtVjBkWEp1SURBdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnTWlBcUlHTnZiVzF2YmlBdklIUnZkR0ZzTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaR2xqWlVScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0dScFkyVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOdmMybHVaVk5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDb2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdhV1lnS0hSdmRHRnNJRDA5SURBcElISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUUxaGRHZ3VjM0Z5ZENoMGIzUmhiQ2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpiM05wYm1WRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVjFZMnhwWkdWaGJsTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEZOcGJXbHNZWEpwZEhsR2NtOXRSR2x6ZEdGdVkyVW9aWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lQ3dnZVNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tTQXRJRElnS2lCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYUdGdGJXbHVaMU5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRGTnBiV2xzWVhKcGRIbEdjbTl0UkdsemRHRnVZMlVvYUdGdGJXbHVaMFJwYzNSaGJtTmxLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdoaGJXMXBibWRFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnZUM1MGNuVmxRMjkxYm5Rb0tTQXJJSGt1ZEhKMVpVTnZkVzUwS0NrZ0xTQXlJQ29nZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMjlyWVd4VGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUNneUlDb2dkRzkwWVd3Z0xTQXpJQ29nWTI5dGJXOXVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlITnZhMkZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvYzI5cllXeFRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUd0MWJHTjZlVzV6YTJsVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdOdmJuTjBJSFJ2ZEdGc1VISnZaQ0E5SUhndWRISjFaVU52ZFc1MEtDa2dLaUI1TG5SeWRXVkRiM1Z1ZENncE8xeHVJQ0JwWmlBb2RHOTBZV3hRY205a0lEMDlJREFwSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJQ2hqYjIxdGIyNGdLaUIwYjNSaGJDa2dMeUFvTWlBcUlIUnZkR0ZzVUhKdlpDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcmRXeGplbmx1YzJ0cFJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa29lQ3dnZVNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BPMXh1SUNCamIyNXpkQ0IwYjNSaGJGQnliMlFnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ29nZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzVUhKdlpDQTlQU0F3S1NCeVpYUjFjbTRnTUM0d08xeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUhKbGRIVnliaUFvWTI5dGJXOXVJQ29nZEc5MFlXd2dMU0IwYjNSaGJGQnliMlFwSUM4Z2RHOTBZV3hRY205a08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldORGIyNXVZWFZuYUdWNVJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2JXTkRiMjV1WVhWbmFHVjVVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRhVzRnUFNCTllYUm9MbTFwYmloNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMXBiaUE5UFNBd0tTQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlCamIyMXRiMjRnTHlCdGFXNDdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb1lYTjViVzFsZEhKcFkxTnBiV2xzWVhKcGRIa29lQ3dnZVNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWW5KaGRXNUNiR0Z1Y1hWbGRGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdiV0Y0SUQwZ1RXRjBhQzV0WVhnb2VDNTBjblZsUTI5MWJuUW9LU3dnZVM1MGNuVmxRMjkxYm5Rb0tTazdYRzRnSUdsbUlDaHRZWGdnUFQwZ01Da2djbVYwZFhKdUlEQXVNRHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z2JXRjRPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1luSmhkVzVDYkdGdWNYVmxkRVJwYzNSaGJtTmxLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJuWlhSRWFYTjBZVzVqWlVaeWIyMVRhVzFwYkdGeWFYUjVLR0p5WVhWdVFteGhibkYxWlhSVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEoxYzNObGJGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnYVdZZ0tIZ3ViR1Z1WjNSb0lEMDlJREFwSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJSGd1YkdWdVozUm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NuVnpjMlZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvY25WemMyVnNVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1amIzVnVkRUpwZEhNb2RISjFaU2tnS3lCNUxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdZMjl1YzNRZ2JHVnVJRDBnZUM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUdScFptWWdQU0JzWlc0Z0xTQjBiM1JoYkNBcklHTnZiVzF2Ymp0Y2JpQWdhV1lnS0NoamIyMXRiMjRnUFQwZ2JHVnVLU0I4ZkNBb1pHbG1aaUE5UFNCc1pXNHBLU0J5WlhSMWNtNGdNUzR3TzF4dUlDQmxiSE5sSUhKbGRIVnliaUJqYjIxdGIyNGdMeUIwYjNSaGJDQXJJR1JwWm1ZZ0x5QW9NaUFxSUd4bGJpQXRJSFJ2ZEdGc0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObE9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJREVnTHlBb01TQXJJR1JwYzNSaGJtTmxLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2MybHRhV3hoY21sMGVUb2diblZ0WW1WeUtTQjdYRzRnSUhKbGRIVnliaUF4SUM4Z2MybHRhV3hoY21sMGVTQXRJREU3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnVkVzFsY21salJHbHpkR0Z1WTJVb2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXBJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VZV0p6S0hnZ0xTQjVLVHRjYm4xY2JpSmRmUT09IiwiLy8gQmxvc3VtIDYyIG1hdHJpeCBmb3IgcHJvdGVpbiBzZXF1ZW5jZXNcbmNvbnN0IEJMT1NVTTYyID0gW1s0LCAtMSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgMCwgLTRdLFxuICAgIFstMSwgNSwgMCwgLTIsIC0zLCAxLCAwLCAtMiwgMCwgLTMsIC0yLCAyLCAtMSwgLTMsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTRdLFxuICAgIFstMiwgMCwgNiwgMSwgLTMsIDAsIDAsIDAsIDEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgMywgMCwgLTEsIC00XSxcbiAgICBbLTIsIC0yLCAxLCA2LCAtMywgMCwgMiwgLTEsIC0xLCAtMywgLTQsIC0xLCAtMywgLTMsIC0xLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICBbMCwgLTMsIC0zLCAtMywgOSwgLTMsIC00LCAtMywgLTMsIC0xLCAtMSwgLTMsIC0xLCAtMiwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTMsIC0zLCAtMiwgLTRdLFxuICAgIFstMSwgMSwgMCwgMCwgLTMsIDUsIDIsIC0yLCAwLCAtMywgLTIsIDEsIDAsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTIsIDAsIDMsIC0xLCAtNF0sXG4gICAgWy0xLCAwLCAwLCAyLCAtNCwgMiwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTIsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNiwgLTIsIC00LCAtNCwgLTIsIC0zLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNF0sXG4gICAgWy0yLCAwLCAxLCAtMSwgLTMsIDAsIDAsIC0yLCA4LCAtMywgLTMsIC0xLCAtMiwgLTEsIC0yLCAtMSwgLTIsIC0yLCAyLCAtMywgMCwgMCwgLTEsIC00XSxcbiAgICBbLTEsIC0zLCAtMywgLTMsIC0xLCAtMywgLTMsIC00LCAtMywgNCwgMiwgLTMsIDEsIDAsIC0zLCAtMiwgLTEsIC0zLCAtMSwgMywgLTMsIC0zLCAtMSwgLTRdLFxuICAgIFstMSwgLTIsIC0zLCAtNCwgLTEsIC0yLCAtMywgLTQsIC0zLCAyLCA0LCAtMiwgMiwgMCwgLTMsIC0yLCAtMSwgLTIsIC0xLCAxLCAtNCwgLTMsIC0xLCAtNF0sXG4gICAgWy0xLCAyLCAwLCAtMSwgLTMsIDEsIDEsIC0yLCAtMSwgLTMsIC0yLCA1LCAtMSwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMCwgMSwgLTEsIC00XSxcbiAgICBbLTEsIC0xLCAtMiwgLTMsIC0xLCAwLCAtMiwgLTMsIC0yLCAxLCAyLCAtMSwgNSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAxLCAtMywgLTEsIC0xLCAtNF0sXG4gICAgWy0yLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0zLCAtMywgLTEsIDAsIDAsIC0zLCAwLCA2LCAtNCwgLTIsIC0yLCAxLCAzLCAtMSwgLTMsIC0zLCAtMSwgLTRdLFxuICAgIFstMSwgLTIsIC0yLCAtMSwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTQsIDcsIC0xLCAtMSwgLTQsIC0zLCAtMiwgLTIsIC0xLCAtMiwgLTRdLFxuICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMiwgLTEsIDQsIDEsIC0zLCAtMiwgLTIsIDAsIDAsIDAsIC00XSxcbiAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDUsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNF0sXG4gICAgWy0zLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTMsIC0yLCAxMSwgMiwgLTMsIC00LCAtMywgLTIsIC00XSxcbiAgICBbLTIsIC0yLCAtMiwgLTMsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAtMSwgMywgLTMsIC0yLCAtMiwgMiwgNywgLTEsIC0zLCAtMiwgLTEsIC00XSxcbiAgICBbMCwgLTMsIC0zLCAtMywgLTEsIC0yLCAtMiwgLTMsIC0zLCAzLCAxLCAtMiwgMSwgLTEsIC0yLCAtMiwgMCwgLTMsIC0xLCA0LCAtMywgLTIsIC0xLCAtNF0sXG4gICAgWy0yLCAtMSwgMywgNCwgLTMsIDAsIDEsIC0xLCAwLCAtMywgLTQsIDAsIC0zLCAtMywgLTIsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgIFstMSwgMCwgMCwgMSwgLTMsIDMsIDQsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC00XSxcbiAgICBbLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAxXV07XG4vLyBQcm90ZWluIGluZGV4ZXMgZm9yIEJMT1NVTSBtYXRyaXhcbmNvbnN0IFByb3RJbmRleGVzID0ge1xuICAgICdBJzogMCwgJ1InOiAxLCAnTic6IDIsICdEJzogMywgJ0MnOiA0LCAnUSc6IDUsICdFJzogNiwgJ0cnOiA3LCAnSCc6IDgsXG4gICAgJ0knOiA5LCAnTCc6IDEwLCAnSyc6IDExLCAnTSc6IDEyLCAnRic6IDEzLCAnUCc6IDE0LCAnUyc6IDE1LCAnVCc6IDE2LFxuICAgICdXJzogMTcsICdZJzogMTgsICdWJzogMTksICdCJzogMjAsICdaJzogMjEsICdYJzogMjIsICcqJzogMjNcbn07XG5jb25zdCBkZWZhdWx0QXJncyA9IHtcbiAgICBnYXBPcGVuOiA4LFxuICAgIGdhcEV4dGVuZDogMixcbiAgICBzY29yaW5nTWF0cml4OiBCTE9TVU02MixcbiAgICBhbHBoYWJldEluZGV4ZXM6IFByb3RJbmRleGVzXG59O1xuLyoqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNlcXVlbmNlcyBiYXNlZCBvbiBnYXAgcGVuYWx0eSBhbmQgbWF0cml4XG4gKiBAcGFyYW0ge1BhcnRpYWw8TmVlZGxlbWFuV3VuY2hBcmdzPn1hcmdzIC0gYXJndW1lbnRzIGZvciBOZWVkbGVtYW4tV3VuY2ggYWxnb3JpdGhtIGxpa2UgZ2FwIHBlbmFsdHksIFNjb3JpbmcgbWF0cml4Li5cbiAqIEByZXR1cm4ge21tRGlzdGFuY2VGdW5jdGlvblR5cGV9IC0gZnVuY3Rpb24gdGhhdCBjYWxjdWxhdGVzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBzZXF1ZW5jZXNcbiovXG5leHBvcnQgZnVuY3Rpb24gbmVlZGxlbWFuV3VuY2goYXJncykge1xuICAgIHJldHVybiAoc2VxMSwgc2VxMikgPT4ge1xuICAgICAgICBjb25zdCB7IGdhcE9wZW4sIGdhcEV4dGVuZCwgc2NvcmluZ01hdHJpeCwgYWxwaGFiZXRJbmRleGVzIH0gPSB7IC4uLmRlZmF1bHRBcmdzLCAuLi5hcmdzIH07XG4gICAgICAgIC8vIEFzIHdlIGRvbid0IG5lZWQgdHJhY2ViYWNrLCBubyBuZWVkIHRvIHN0b3JlIHRoZSB3aG9sZSBtYXRyaXhcbiAgICAgICAgLy8gSW50ZWFkLCB3ZSB3aWxsIHN0b3JlIG9ubHkgdGhlIGxhc3QgdHdvIHJvd3NcbiAgICAgICAgY29uc3QgbWF0cml4ID0gW1xuICAgICAgICAgICAgbmV3IEFycmF5KHNlcTEubGVuZ3RoICsgMSkuZmlsbCgwKSxcbiAgICAgICAgICAgIG5ldyBBcnJheShzZXExLmxlbmd0aCArIDEpLmZpbGwoMClcbiAgICAgICAgXTtcbiAgICAgICAgLy8gc2ltaWxhcmx5LCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCBvcGVyYXRpb24gbGVkIHRvIHRoZSBjdXJyZW50IGNlbGxcbiAgICAgICAgLy8gaS5lLiB3aGV0aGVyIHdlIGNhbWUgZnJvbSB0aGUgbGVmdCwgdG9wIG9yIGRpYWdvbmFsIHRvIGFzc2lnbiBnYXAgb3Blbi9nYXAgZXh0ZW5kIHBlbmFsdHlcbiAgICAgICAgY29uc3QgdmVydGljYWxHYXBzID0gbmV3IEFycmF5KHNlcTEubGVuZ3RoICsgMSkuZmlsbChmYWxzZSk7XG4gICAgICAgIGNvbnN0IGhvcml6b250YWxHYXBzID0gbmV3IEFycmF5KHNlcTEubGVuZ3RoICsgMSkuZmlsbChmYWxzZSk7XG4gICAgICAgIC8vdmFyaWFibGVzIHRvIGtlZXAgdHJhY2sgd2hpY2ggcm93IHdlIGFyZSBpblxuICAgICAgICAvLyB0aGV5IHdpbGwgc3dhcCBwbGFjZXMgb24gZWFjaCBpdGVyYXRpb25cbiAgICAgICAgbGV0IHByZXZSb3cgPSAwO1xuICAgICAgICBsZXQgY3VyclJvdyA9IDE7XG4gICAgICAgIC8vIEluaXRpYWxpemUgZmlyc3Qgcm93XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc2VxMS5sZW5ndGggKyAxOyBpKyspXG4gICAgICAgICAgICBtYXRyaXhbMF1baV0gPSAtZ2FwT3BlbiAtIChpIC0gMSkgKiBnYXBFeHRlbmQ7XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcmVzdCBvZiB0aGUgbWF0cml4XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc2VxMi5sZW5ndGggKyAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hdHJpeFtjdXJyUm93XVswXSA9IC1nYXBPcGVuIC0gKGkgLSAxKSAqIGdhcEV4dGVuZDtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDwgc2VxMS5sZW5ndGggKyAxOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFnb25hbCA9IG1hdHJpeFtwcmV2Um93XVtqIC0gMV0gKyBzY29yaW5nTWF0cml4W2FscGhhYmV0SW5kZXhlc1tzZXExW2ogLSAxXV1dW2FscGhhYmV0SW5kZXhlc1tzZXEyW2kgLSAxXV1dO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IG1hdHJpeFtwcmV2Um93XVtqXSAtICh2ZXJ0aWNhbEdhcHNbal0gPyBnYXBFeHRlbmQgOiBnYXBPcGVuKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gbWF0cml4W2N1cnJSb3ddW2ogLSAxXSAtIChob3Jpem9udGFsR2Fwc1tqIC0gMV0gPyBnYXBFeHRlbmQgOiBnYXBPcGVuKTtcbiAgICAgICAgICAgICAgICBtYXRyaXhbY3VyclJvd11bal0gPSBNYXRoLm1heChkaWFnb25hbCwgbGVmdCwgdG9wKTtcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgZ2FwIGFycmF5c1xuICAgICAgICAgICAgICAgIGlmIChtYXRyaXhbY3VyclJvd11bal0gPT09IGRpYWdvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsR2Fwc1tqXSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsR2Fwc1tqXSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtYXRyaXhbY3VyclJvd11bal0gPT09IGxlZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWxHYXBzW2pdID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxHYXBzW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsR2Fwc1tqXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxHYXBzW2pdID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU3dhcCByb3dzXG4gICAgICAgICAgICBwcmV2Um93ID0gY3VyclJvdztcbiAgICAgICAgICAgIGN1cnJSb3cgPSAoY3VyclJvdyArIDEpICUgMjtcbiAgICAgICAgfVxuICAgICAgICAvLyBhcyB0aGUgbWF0cml4IGlzIHRoZSBzaW1pbGFyaXR5IG1hdHJpeCwgYnV0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGRpc3RhbmNlLFxuICAgICAgICAvLyB3ZSBuZWVkIGNvbXBhcmUgaXQgdG8gcGVyZmVjdCBtYXRjaCBzY29yZSB0byBnZXQgcmVhc29uYWJsZSBkaXN0YW5jZVxuICAgICAgICBjb25zdCBwZXJmZWN0TWF0Y2hTZXExID0gc2VxMS5zcGxpdCgnJykubWFwKChjKSA9PiBzY29yaW5nTWF0cml4W2FscGhhYmV0SW5kZXhlc1tjXV1bYWxwaGFiZXRJbmRleGVzW2NdXSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcbiAgICAgICAgY29uc3QgcGVyZmVjdE1hdGNoU2VxMiA9IHNlcTIuc3BsaXQoJycpLm1hcCgoYykgPT4gc2NvcmluZ01hdHJpeFthbHBoYWJldEluZGV4ZXNbY11dW2FscGhhYmV0SW5kZXhlc1tjXV0pXG4gICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgICAgIGNvbnN0IG1heFNjb3JlID0gTWF0aC5tYXgocGVyZmVjdE1hdGNoU2VxMSwgcGVyZmVjdE1hdGNoU2VxMik7XG4gICAgICAgIHJldHVybiAobWF4U2NvcmUgLSBtYXRyaXhbcHJldlJvd11bc2VxMS5sZW5ndGhdKSAvIG1heFNjb3JlO1xuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2libVZsWkd4bGJXRnVMWGQxYm5OamFDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW01bFpXUnNaVzFoYmkxM2RXNXpZMmd1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlJVRXNlVU5CUVhsRE8wRkJRM3BETEUxQlFVMHNVVUZCVVN4SFFVTmtMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFWXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRla1lzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1JpeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjZSaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRPVVlzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM0pHTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzUkdMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6VkdMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJpeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNMFlzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpOR0xFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40Uml4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZHTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVVlzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGREwwWXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53Uml4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZHTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE9VWXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE5VWXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNeFJpeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzWkdMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNSR0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkROMFlzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJXNUhMRzlEUVVGdlF6dEJRVU53UXl4TlFVRk5MRmRCUVZjc1IwRkJlVUk3U1VGRGVFTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEzUkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVU3U1VGRGNrVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVTdRMEZET1VRc1EwRkJRenRCUVZOR0xFMUJRVTBzVjBGQlZ5eEhRVUYxUWp0SlFVTjBReXhQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU5XTEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUTFvc1lVRkJZU3hGUVVGRkxGRkJRVkU3U1VGRGRrSXNaVUZCWlN4RlFVRkZMRmRCUVZjN1EwRkROMElzUTBGQlF6dEJRVVZHT3pzN1JVRkhSVHRCUVVOR0xFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNTVUZCYVVNN1NVRkRPVVFzVDBGQlR5eERRVUZETEVsQlFWa3NSVUZCUlN4SlFVRlpMRVZCUVZjc1JVRkJSVHRSUVVNM1F5eE5RVUZOTEVWQlFVTXNUMEZCVHl4RlFVRkZMRk5CUVZNc1JVRkJSU3hoUVVGaExFVkJRVVVzWlVGQlpTeEZRVUZETEVkQlFVY3NSVUZCUXl4SFFVRkhMRmRCUVZjc1JVRkJSU3hIUVVGSExFbEJRVWtzUlVGQlF5eERRVUZETzFGQlEzWkdMR2RGUVVGblJUdFJRVU5vUlN3clEwRkJLME03VVVGREwwTXNUVUZCVFN4TlFVRk5MRWRCUVdVN1dVRkRla0lzU1VGQlNTeExRVUZMTEVOQlFWTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpGRExFbEJRVWtzUzBGQlN5eERRVUZUTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTXpReXhEUVVGRE8xRkJRMFlzTmtWQlFUWkZPMUZCUXpkRkxEUkdRVUUwUmp0UlFVTTFSaXhOUVVGTkxGbEJRVmtzUjBGQll5eEpRVUZKTEV0QlFVc3NRMEZCVlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOb1JpeE5RVUZOTEdOQlFXTXNSMEZCWXl4SlFVRkpMRXRCUVVzc1EwRkJWU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVVZzUml3MlEwRkJOa003VVVGRE4wTXNNRU5CUVRCRE8xRkJRekZETEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOb1FpeEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRhRUlzZFVKQlFYVkNPMUZCUTNaQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRkRU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF6dFJRVVZvUkN4dFEwRkJiVU03VVVGRGJrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzaERMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1dVRkRjRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU40UXl4TlFVRk5MRkZCUVZFc1IwRkRXaXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExHRkJRV0VzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOeVJ5eE5RVUZOTEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRkxFTkJRVU03WjBKQlF6RkZMRTFCUVUwc1NVRkJTU3hIUVVGSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yZENRVU53Uml4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkRNMElzVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUTNCQ0xFTkJRVU03WjBKQlEwWXNiMEpCUVc5Q08yZENRVU53UWl4SlFVRkpMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4UlFVRlJMRVZCUVVVN2IwSkJRMjVETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03YjBKQlEzaENMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTTdhVUpCUXpOQ08zRkNRVUZOTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NSVUZCUlR0dlFrRkRkRU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenR2UWtGRGVFSXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dHBRa0ZETVVJN2NVSkJRVTA3YjBKQlEwd3NXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dHZRa0ZEZGtJc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0cFFrRkRNMEk3WVVGRFJqdFpRVU5FTEZsQlFWazdXVUZEV2l4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8xbEJRMnhDTEU5QlFVOHNSMEZCUnl4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZETjBJN1VVRkRSQ3cyUlVGQk5rVTdVVUZETjBVc2RVVkJRWFZGTzFGQlEzWkZMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTjBSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEdGQlFXRXNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOMFJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRemxDTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0UlFVTTVSQ3hQUVVGUExFTkJRVU1zVVVGQlVTeEhRVUZITEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNN1NVRkRPVVFzUTBGQlF5eERRVUZETzBGQlEwb3NRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN2JXMUVhWE4wWVc1alpVWjFibU4wYVc5dVZIbHdaWDBnWm5KdmJTQW5MaTkwZVhCbGN5YzdYRzVjYmk4dklFSnNiM04xYlNBMk1pQnRZWFJ5YVhnZ1ptOXlJSEJ5YjNSbGFXNGdjMlZ4ZFdWdVkyVnpYRzVqYjI1emRDQkNURTlUVlUwMk1qcEJjbkpoZVR4QmNuSmhlVHh1ZFcxaVpYSStQaUE5WEc1Yld6UXNJQzB4TENBdE1pd2dMVElzSURBc0lDMHhMQ0F0TVN3Z01Dd2dMVElzSUMweExDQXRNU3dnTFRFc0lDMHhMQ0F0TWl3Z0xURXNJREVzSURBc0lDMHpMQ0F0TWl3Z01Dd2dMVElzSUMweExDQXdMQ0F0TkYwc1hHNGdJRnN0TVN3Z05Td2dNQ3dnTFRJc0lDMHpMQ0F4TENBd0xDQXRNaXdnTUN3Z0xUTXNJQzB5TENBeUxDQXRNU3dnTFRNc0lDMHlMQ0F0TVN3Z0xURXNJQzB6TENBdE1pd2dMVE1zSUMweExDQXdMQ0F0TVN3Z0xUUmRMRnh1SUNCYkxUSXNJREFzSURZc0lERXNJQzB6TENBd0xDQXdMQ0F3TENBeExDQXRNeXdnTFRNc0lEQXNJQzB5TENBdE15d2dMVElzSURFc0lEQXNJQzAwTENBdE1pd2dMVE1zSURNc0lEQXNJQzB4TENBdE5GMHNYRzRnSUZzdE1pd2dMVElzSURFc0lEWXNJQzB6TENBd0xDQXlMQ0F0TVN3Z0xURXNJQzB6TENBdE5Dd2dMVEVzSUMwekxDQXRNeXdnTFRFc0lEQXNJQzB4TENBdE5Dd2dMVE1zSUMwekxDQTBMQ0F4TENBdE1Td2dMVFJkTEZ4dUlDQmJNQ3dnTFRNc0lDMHpMQ0F0TXl3Z09Td2dMVE1zSUMwMExDQXRNeXdnTFRNc0lDMHhMQ0F0TVN3Z0xUTXNJQzB4TENBdE1pd2dMVE1zSUMweExDQXRNU3dnTFRJc0lDMHlMQ0F0TVN3Z0xUTXNJQzB6TENBdE1pd2dMVFJkTEZ4dUlDQmJMVEVzSURFc0lEQXNJREFzSUMwekxDQTFMQ0F5TENBdE1pd2dNQ3dnTFRNc0lDMHlMQ0F4TENBd0xDQXRNeXdnTFRFc0lEQXNJQzB4TENBdE1pd2dMVEVzSUMweUxDQXdMQ0F6TENBdE1Td2dMVFJkTEZ4dUlDQmJMVEVzSURBc0lEQXNJRElzSUMwMExDQXlMQ0ExTENBdE1pd2dNQ3dnTFRNc0lDMHpMQ0F4TENBdE1pd2dMVE1zSUMweExDQXdMQ0F0TVN3Z0xUTXNJQzB5TENBdE1pd2dNU3dnTkN3Z0xURXNJQzAwWFN4Y2JpQWdXekFzSUMweUxDQXdMQ0F0TVN3Z0xUTXNJQzB5TENBdE1pd2dOaXdnTFRJc0lDMDBMQ0F0TkN3Z0xUSXNJQzB6TENBdE15d2dMVElzSURBc0lDMHlMQ0F0TWl3Z0xUTXNJQzB6TENBdE1Td2dMVElzSUMweExDQXRORjBzWEc0Z0lGc3RNaXdnTUN3Z01Td2dMVEVzSUMwekxDQXdMQ0F3TENBdE1pd2dPQ3dnTFRNc0lDMHpMQ0F0TVN3Z0xUSXNJQzB4TENBdE1pd2dMVEVzSUMweUxDQXRNaXdnTWl3Z0xUTXNJREFzSURBc0lDMHhMQ0F0TkYwc1hHNGdJRnN0TVN3Z0xUTXNJQzB6TENBdE15d2dMVEVzSUMwekxDQXRNeXdnTFRRc0lDMHpMQ0EwTENBeUxDQXRNeXdnTVN3Z01Dd2dMVE1zSUMweUxDQXRNU3dnTFRNc0lDMHhMQ0F6TENBdE15d2dMVE1zSUMweExDQXRORjBzWEc0Z0lGc3RNU3dnTFRJc0lDMHpMQ0F0TkN3Z0xURXNJQzB5TENBdE15d2dMVFFzSUMwekxDQXlMQ0EwTENBdE1pd2dNaXdnTUN3Z0xUTXNJQzB5TENBdE1Td2dMVElzSUMweExDQXhMQ0F0TkN3Z0xUTXNJQzB4TENBdE5GMHNYRzRnSUZzdE1Td2dNaXdnTUN3Z0xURXNJQzB6TENBeExDQXhMQ0F0TWl3Z0xURXNJQzB6TENBdE1pd2dOU3dnTFRFc0lDMHpMQ0F0TVN3Z01Dd2dMVEVzSUMwekxDQXRNaXdnTFRJc0lEQXNJREVzSUMweExDQXRORjBzWEc0Z0lGc3RNU3dnTFRFc0lDMHlMQ0F0TXl3Z0xURXNJREFzSUMweUxDQXRNeXdnTFRJc0lERXNJRElzSUMweExDQTFMQ0F3TENBdE1pd2dMVEVzSUMweExDQXRNU3dnTFRFc0lERXNJQzB6TENBdE1Td2dMVEVzSUMwMFhTeGNiaUFnV3kweUxDQXRNeXdnTFRNc0lDMHpMQ0F0TWl3Z0xUTXNJQzB6TENBdE15d2dMVEVzSURBc0lEQXNJQzB6TENBd0xDQTJMQ0F0TkN3Z0xUSXNJQzB5TENBeExDQXpMQ0F0TVN3Z0xUTXNJQzB6TENBdE1Td2dMVFJkTEZ4dUlDQmJMVEVzSUMweUxDQXRNaXdnTFRFc0lDMHpMQ0F0TVN3Z0xURXNJQzB5TENBdE1pd2dMVE1zSUMwekxDQXRNU3dnTFRJc0lDMDBMQ0EzTENBdE1Td2dMVEVzSUMwMExDQXRNeXdnTFRJc0lDMHlMQ0F0TVN3Z0xUSXNJQzAwWFN4Y2JpQWdXekVzSUMweExDQXhMQ0F3TENBdE1Td2dNQ3dnTUN3Z01Dd2dMVEVzSUMweUxDQXRNaXdnTUN3Z0xURXNJQzB5TENBdE1Td2dOQ3dnTVN3Z0xUTXNJQzB5TENBdE1pd2dNQ3dnTUN3Z01Dd2dMVFJkTEZ4dUlDQmJNQ3dnTFRFc0lEQXNJQzB4TENBdE1Td2dMVEVzSUMweExDQXRNaXdnTFRJc0lDMHhMQ0F0TVN3Z0xURXNJQzB4TENBdE1pd2dMVEVzSURFc0lEVXNJQzB5TENBdE1pd2dNQ3dnTFRFc0lDMHhMQ0F3TENBdE5GMHNYRzRnSUZzdE15d2dMVE1zSUMwMExDQXROQ3dnTFRJc0lDMHlMQ0F0TXl3Z0xUSXNJQzB5TENBdE15d2dMVElzSUMwekxDQXRNU3dnTVN3Z0xUUXNJQzB6TENBdE1pd2dNVEVzSURJc0lDMHpMQ0F0TkN3Z0xUTXNJQzB5TENBdE5GMHNYRzRnSUZzdE1pd2dMVElzSUMweUxDQXRNeXdnTFRJc0lDMHhMQ0F0TWl3Z0xUTXNJRElzSUMweExDQXRNU3dnTFRJc0lDMHhMQ0F6TENBdE15d2dMVElzSUMweUxDQXlMQ0EzTENBdE1Td2dMVE1zSUMweUxDQXRNU3dnTFRSZExGeHVJQ0JiTUN3Z0xUTXNJQzB6TENBdE15d2dMVEVzSUMweUxDQXRNaXdnTFRNc0lDMHpMQ0F6TENBeExDQXRNaXdnTVN3Z0xURXNJQzB5TENBdE1pd2dNQ3dnTFRNc0lDMHhMQ0EwTENBdE15d2dMVElzSUMweExDQXRORjBzWEc0Z0lGc3RNaXdnTFRFc0lETXNJRFFzSUMwekxDQXdMQ0F4TENBdE1Td2dNQ3dnTFRNc0lDMDBMQ0F3TENBdE15d2dMVE1zSUMweUxDQXdMQ0F0TVN3Z0xUUXNJQzB6TENBdE15d2dOQ3dnTVN3Z0xURXNJQzAwWFN4Y2JpQWdXeTB4TENBd0xDQXdMQ0F4TENBdE15d2dNeXdnTkN3Z0xUSXNJREFzSUMwekxDQXRNeXdnTVN3Z0xURXNJQzB6TENBdE1Td2dNQ3dnTFRFc0lDMHpMQ0F0TWl3Z0xUSXNJREVzSURRc0lDMHhMQ0F0TkYwc1hHNGdJRnN3TENBdE1Td2dMVEVzSUMweExDQXRNaXdnTFRFc0lDMHhMQ0F0TVN3Z0xURXNJQzB4TENBdE1Td2dMVEVzSUMweExDQXRNU3dnTFRJc0lEQXNJREFzSUMweUxDQXRNU3dnTFRFc0lDMHhMQ0F0TVN3Z0xURXNJQzAwWFN4Y2JpQWdXeTAwTENBdE5Dd2dMVFFzSUMwMExDQXROQ3dnTFRRc0lDMDBMQ0F0TkN3Z0xUUXNJQzAwTENBdE5Dd2dMVFFzSUMwMExDQXROQ3dnTFRRc0lDMDBMQ0F0TkN3Z0xUUXNJQzAwTENBdE5Dd2dMVFFzSUMwMExDQXROQ3dnTVYxZE8xeHVYRzR2THlCUWNtOTBaV2x1SUdsdVpHVjRaWE1nWm05eUlFSk1UMU5WVFNCdFlYUnlhWGhjYm1OdmJuTjBJRkJ5YjNSSmJtUmxlR1Z6T2lCN1cybGtPbk4wY21sdVoxMDZiblZ0WW1WeWZTQTlJSHRjYmlBZ0owRW5PaUF3TENBblVpYzZJREVzSUNkT0p6b2dNaXdnSjBRbk9pQXpMQ0FuUXljNklEUXNJQ2RSSnpvZ05Td2dKMFVuT2lBMkxDQW5SeWM2SURjc0lDZElKem9nT0N4Y2JpQWdKMGtuT2lBNUxDQW5UQ2M2SURFd0xDQW5TeWM2SURFeExDQW5UU2M2SURFeUxDQW5SaWM2SURFekxDQW5VQ2M2SURFMExDQW5VeWM2SURFMUxDQW5WQ2M2SURFMkxGeHVJQ0FuVnljNklERTNMQ0FuV1NjNklERTRMQ0FuVmljNklERTVMQ0FuUWljNklESXdMQ0FuV2ljNklESXhMQ0FuV0NjNklESXlMQ0FuS2ljNklESXpYRzU5TzF4dVhHNXBiblJsY21aaFkyVWdUbVZsWkd4bGJXRnVWM1Z1WTJoQmNtZHpJSHRjYmlBZ1oyRndUM0JsYmpvZ2JuVnRZbVZ5TzF4dUlDQm5ZWEJGZUhSbGJtUTZJRzUxYldKbGNqdGNiaUFnYzJOdmNtbHVaMDFoZEhKcGVEb2diblZ0WW1WeVcxMWJYVHRjYmlBZ1lXeHdhR0ZpWlhSSmJtUmxlR1Z6T2lCN1cybGtPbk4wY21sdVoxMDZiblZ0WW1WeWZUdGNibjFjYmx4dVkyOXVjM1FnWkdWbVlYVnNkRUZ5WjNNNklFNWxaV1JzWlcxaGJsZDFibU5vUVhKbmN5QTlJSHRjYmlBZ1oyRndUM0JsYmpvZ09DeGNiaUFnWjJGd1JYaDBaVzVrT2lBeUxGeHVJQ0J6WTI5eWFXNW5UV0YwY21sNE9pQkNURTlUVlUwMk1peGNiaUFnWVd4d2FHRmlaWFJKYm1SbGVHVnpPaUJRY205MFNXNWtaWGhsYzF4dWZUdGNibHh1THlvcUlGSmxkSFZ5Ym5NZ1lTQm1kVzVqZEdsdmJpQjBhR0YwSUdOaGJHTjFiR0YwWlhNZ2RHaGxJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdkSGR2SUhObGNYVmxibU5sY3lCaVlYTmxaQ0J2YmlCbllYQWdjR1Z1WVd4MGVTQmhibVFnYldGMGNtbDRYRzRnS2lCQWNHRnlZVzBnZTFCaGNuUnBZV3c4VG1WbFpHeGxiV0Z1VjNWdVkyaEJjbWR6UG4xaGNtZHpJQzBnWVhKbmRXMWxiblJ6SUdadmNpQk9aV1ZrYkdWdFlXNHRWM1Z1WTJnZ1lXeG5iM0pwZEdodElHeHBhMlVnWjJGd0lIQmxibUZzZEhrc0lGTmpiM0pwYm1jZ2JXRjBjbWw0TGk1Y2JpQXFJRUJ5WlhSMWNtNGdlMjF0UkdsemRHRnVZMlZHZFc1amRHbHZibFI1Y0dWOUlDMGdablZ1WTNScGIyNGdkR2hoZENCallXeGpkV3hoZEdWeklIUm9aU0JrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFIzYnlCelpYRjFaVzVqWlhOY2Jpb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdibVZsWkd4bGJXRnVWM1Z1WTJnb1lYSm5jem9nVUdGeWRHbGhiRHhPWldWa2JHVnRZVzVYZFc1amFFRnlaM00rS1RvZ2JXMUVhWE4wWVc1alpVWjFibU4wYVc5dVZIbHdaU0I3WEc0Z0lISmxkSFZ5YmlBb2MyVnhNVG9nYzNSeWFXNW5MQ0J6WlhFeU9pQnpkSEpwYm1jcElEb2diblZ0WW1WeUlEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCN1oyRndUM0JsYml3Z1oyRndSWGgwWlc1a0xDQnpZMjl5YVc1blRXRjBjbWw0TENCaGJIQm9ZV0psZEVsdVpHVjRaWE45SUQwZ2V5NHVMbVJsWm1GMWJIUkJjbWR6TENBdUxpNWhjbWR6ZlR0Y2JpQWdJQ0F2THlCQmN5QjNaU0JrYjI0bmRDQnVaV1ZrSUhSeVlXTmxZbUZqYXl3Z2JtOGdibVZsWkNCMGJ5QnpkRzl5WlNCMGFHVWdkMmh2YkdVZ2JXRjBjbWw0WEc0Z0lDQWdMeThnU1c1MFpXRmtMQ0IzWlNCM2FXeHNJSE4wYjNKbElHOXViSGtnZEdobElHeGhjM1FnZEhkdklISnZkM05jYmlBZ0lDQmpiMjV6ZENCdFlYUnlhWGc2SUc1MWJXSmxjbHRkVzEwZ1BTQmJYRzRnSUNBZ0lDQnVaWGNnUVhKeVlYazhiblZ0WW1WeVBpaHpaWEV4TG14bGJtZDBhQ0FySURFcExtWnBiR3dvTUNrc1hHNGdJQ0FnSUNCdVpYY2dRWEp5WVhrOGJuVnRZbVZ5UGloelpYRXhMbXhsYm1kMGFDQXJJREVwTG1acGJHd29NQ2xjYmlBZ0lDQmRPMXh1SUNBZ0lDOHZJSE5wYldsc1lYSnNlU3dnZDJVZ2JtVmxaQ0IwYnlCclpXVndJSFJ5WVdOcklHOW1JSGRvWVhRZ2IzQmxjbUYwYVc5dUlHeGxaQ0IwYnlCMGFHVWdZM1Z5Y21WdWRDQmpaV3hzWEc0Z0lDQWdMeThnYVM1bExpQjNhR1YwYUdWeUlIZGxJR05oYldVZ1puSnZiU0IwYUdVZ2JHVm1kQ3dnZEc5d0lHOXlJR1JwWVdkdmJtRnNJSFJ2SUdGemMybG5iaUJuWVhBZ2IzQmxiaTluWVhBZ1pYaDBaVzVrSUhCbGJtRnNkSGxjYmlBZ0lDQmpiMjV6ZENCMlpYSjBhV05oYkVkaGNITTZJR0p2YjJ4bFlXNWJYU0E5SUc1bGR5QkJjbkpoZVR4aWIyOXNaV0Z1UGloelpYRXhMbXhsYm1kMGFDQXJJREVwTG1acGJHd29abUZzYzJVcE8xeHVJQ0FnSUdOdmJuTjBJR2h2Y21sNmIyNTBZV3hIWVhCek9pQmliMjlzWldGdVcxMGdQU0J1WlhjZ1FYSnlZWGs4WW05dmJHVmhiajRvYzJWeE1TNXNaVzVuZEdnZ0t5QXhLUzVtYVd4c0tHWmhiSE5sS1R0Y2JseHVJQ0FnSUM4dmRtRnlhV0ZpYkdWeklIUnZJR3RsWlhBZ2RISmhZMnNnZDJocFkyZ2djbTkzSUhkbElHRnlaU0JwYmx4dUlDQWdJQzh2SUhSb1pYa2dkMmxzYkNCemQyRndJSEJzWVdObGN5QnZiaUJsWVdOb0lHbDBaWEpoZEdsdmJseHVJQ0FnSUd4bGRDQndjbVYyVW05M0lEMGdNRHRjYmlBZ0lDQnNaWFFnWTNWeWNsSnZkeUE5SURFN1hHNGdJQ0FnTHk4Z1NXNXBkR2xoYkdsNlpTQm1hWEp6ZENCeWIzZGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNVHNnYVNBOElITmxjVEV1YkdWdVozUm9JQ3NnTVRzZ2FTc3JLVnh1SUNBZ0lDQWdiV0YwY21sNFd6QmRXMmxkSUQwZ0xXZGhjRTl3Wlc0Z0xTQW9hU0F0SURFcElDb2daMkZ3UlhoMFpXNWtPMXh1WEc0Z0lDQWdMeThnUTJGc1kzVnNZWFJsSUhSb1pTQnlaWE4wSUc5bUlIUm9aU0J0WVhSeWFYaGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNVHNnYVNBOElITmxjVEl1YkdWdVozUm9JQ3NnTVRzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0J0WVhSeWFYaGJZM1Z5Y2xKdmQxMWJNRjBnUFNBdFoyRndUM0JsYmlBdElDaHBJQzBnTVNrZ0tpQm5ZWEJGZUhSbGJtUTdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnTVRzZ2FpQThJSE5sY1RFdWJHVnVaM1JvSUNzZ01Uc2dhaXNyS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdScFlXZHZibUZzSUQxY2JpQWdJQ0FnSUNBZ0lDQnRZWFJ5YVhoYmNISmxkbEp2ZDExYmFpQXRJREZkSUNzZ2MyTnZjbWx1WjAxaGRISnBlRnRoYkhCb1lXSmxkRWx1WkdWNFpYTmJjMlZ4TVZ0cUlDMGdNVjFkWFZ0aGJIQm9ZV0psZEVsdVpHVjRaWE5iYzJWeE1sdHBJQzBnTVYxZFhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RHOXdJRDBnYldGMGNtbDRXM0J5WlhaU2IzZGRXMnBkSUMwZ0tIWmxjblJwWTJGc1IyRndjMXRxWFNBL0lHZGhjRVY0ZEdWdVpDQTZJR2RoY0U5d1pXNGdLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiR1ZtZENBOUlHMWhkSEpwZUZ0amRYSnlVbTkzWFZ0cUlDMGdNVjBnTFNBb2FHOXlhWHB2Ym5SaGJFZGhjSE5iYWlBdElERmRJRDhnWjJGd1JYaDBaVzVrSURvZ1oyRndUM0JsYmlrN1hHNGdJQ0FnSUNBZ0lHMWhkSEpwZUZ0amRYSnlVbTkzWFZ0cVhTQTlJRTFoZEdndWJXRjRLRnh1SUNBZ0lDQWdJQ0FnSUdScFlXZHZibUZzTENCc1pXWjBMQ0IwYjNCY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdMeThnZFhCa1lYUmxJR2RoY0NCaGNuSmhlWE5jYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhkSEpwZUZ0amRYSnlVbTkzWFZ0cVhTQTlQVDBnWkdsaFoyOXVZV3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJaWEowYVdOaGJFZGhjSE5iYWwwZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQm9iM0pwZW05dWRHRnNSMkZ3YzF0cVhTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzFoZEhKcGVGdGpkWEp5VW05M1hWdHFYU0E5UFQwZ2JHVm1kQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIWmxjblJwWTJGc1IyRndjMXRxWFNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lHaHZjbWw2YjI1MFlXeEhZWEJ6VzJwZElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJaWEowYVdOaGJFZGhjSE5iYWwwZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lHaHZjbWw2YjI1MFlXeEhZWEJ6VzJwZElEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDOHZJRk4zWVhBZ2NtOTNjMXh1SUNBZ0lDQWdjSEpsZGxKdmR5QTlJR04xY25KU2IzYzdYRzRnSUNBZ0lDQmpkWEp5VW05M0lEMGdLR04xY25KU2IzY2dLeUF4S1NBbElESTdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dklHRnpJSFJvWlNCdFlYUnlhWGdnYVhNZ2RHaGxJSE5wYldsc1lYSnBkSGtnYldGMGNtbDRMQ0JpZFhRZ2QyVWdZWEpsSUdsdWRHVnlaWE4wWldRZ2FXNGdaR2x6ZEdGdVkyVXNYRzRnSUNBZ0x5OGdkMlVnYm1WbFpDQmpiMjF3WVhKbElHbDBJSFJ2SUhCbGNtWmxZM1FnYldGMFkyZ2djMk52Y21VZ2RHOGdaMlYwSUhKbFlYTnZibUZpYkdVZ1pHbHpkR0Z1WTJWY2JpQWdJQ0JqYjI1emRDQndaWEptWldOMFRXRjBZMmhUWlhFeElEMGdjMlZ4TVM1emNHeHBkQ2duSnlrdWJXRndLQ2hqS1NBOVBpQnpZMjl5YVc1blRXRjBjbWw0VzJGc2NHaGhZbVYwU1c1a1pYaGxjMXRqWFYxYllXeHdhR0ZpWlhSSmJtUmxlR1Z6VzJOZFhTbGNiaUFnSUNBZ0lDNXlaV1IxWTJVb0tHRXNJR0lwSUQwK0lHRWdLeUJpTENBd0tUdGNiaUFnSUNCamIyNXpkQ0J3WlhKbVpXTjBUV0YwWTJoVFpYRXlJRDBnYzJWeE1pNXpjR3hwZENnbkp5a3ViV0Z3S0NoaktTQTlQaUJ6WTI5eWFXNW5UV0YwY21sNFcyRnNjR2hoWW1WMFNXNWtaWGhsYzF0alhWMWJZV3h3YUdGaVpYUkpibVJsZUdWelcyTmRYU2xjYmlBZ0lDQWdJQzV5WldSMVkyVW9LR0VzSUdJcElEMCtJR0VnS3lCaUxDQXdLVHRjYmlBZ0lDQmpiMjV6ZENCdFlYaFRZMjl5WlNBOUlFMWhkR2d1YldGNEtIQmxjbVpsWTNSTllYUmphRk5sY1RFc0lIQmxjbVpsWTNSTllYUmphRk5sY1RJcE8xeHVJQ0FnSUhKbGRIVnliaUFvYldGNFUyTnZjbVVnTFNCdFlYUnlhWGhiY0hKbGRsSnZkMTFiYzJWeE1TNXNaVzVuZEdoZEtTQXZJRzFoZUZOamIzSmxPMXh1SUNCOU8xeHVmVnh1SWwxOSIsImltcG9ydCB7IGhhbW1pbmcgfSBmcm9tICcuL2hhbW1pbmcnO1xuaW1wb3J0IHsgbGV2ZW5zdGVpbiB9IGZyb20gJy4vbGV2ZW5zdGVpbic7XG5pbXBvcnQgeyBuZWVkbGVtYW5XdW5jaCB9IGZyb20gJy4vbmVlZGxlbWFuLXd1bnNjaCc7XG4vKiogRW51bSBjb250YWluaW5nIGN1cnJlbnRseSBzdXBwb3J0ZWQgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZSBmdW5jdGlvbnNcbiAqIEhhbW1pbmcgZGlzdGFuY2Ugd2lsbCBiZSB1c2VkIGlmIHRoZSBzZXF1ZW5jZXMgYXJlIGFscmVhZHkgYWxpZ25lZFxuICogTmVlZGxlbWFuIGRpc3RhbmNlIHdpbGwgYmUgdXNlZCBmb3IgcHJvdGVpbiBzZXF1ZW5jZXMgd2l0aCBrbm93biBCTE9TVU02MiBtYXRyaXhcbiAqIExldmVuc2h0ZWluIGRpc3RhbmNlIHdpbGwgYmUgdXNlZCBmb3IgbnVjbGVvdGlkZSBzZXF1ZW5jZXMgYXMgZm9yIHRoZW0gc3Vic3RpdHV0aW9uIG1hdHJpeCBpcyBzYW1lIGFzIGlkZW50aXR5IG1hdHJpeFxuICovXG5leHBvcnQgdmFyIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcztcbihmdW5jdGlvbiAoTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzKSB7XG4gICAgTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzW1wiSEFNTUlOR1wiXSA9IFwiSGFtbWluZ1wiO1xuICAgIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lc1tcIkxFVkVOU0hURUlOXCJdID0gXCJMZXZlbnNodGVpblwiO1xuICAgIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lc1tcIk5FRURMRU1BTk5fV1VOU0NIXCJdID0gXCJOZWVkbGVtYW5uLVd1bnNjaFwiO1xufSkoTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzIHx8IChNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMgPSB7fSkpO1xuO1xuZXhwb3J0IGNvbnN0IG1tRGlzdGFuY2VGdW5jdGlvbnMgPSB7XG4gICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXTogaGFtbWluZyxcbiAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXTogbGV2ZW5zdGVpbixcbiAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXTogbmVlZGxlbWFuV3VuY2hcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liV0ZqY205dGIyeGxZM1ZzWlMxa2FYTjBZVzVqWlMxbWRXNWpkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp0WVdOeWIyMXZiR1ZqZFd4bExXUnBjM1JoYm1ObExXWjFibU4wYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVVNc1QwRkJUeXhGUVVGRExFMUJRVTBzVjBGQlZ5eERRVUZETzBGQlEyeERMRTlCUVU4c1JVRkJReXhWUVVGVkxFVkJRVU1zVFVGQlRTeGpRVUZqTEVOQlFVTTdRVUZEZUVNc1QwRkJUeXhGUVVGRExHTkJRV01zUlVGQlF5eE5RVUZOTEc5Q1FVRnZRaXhEUVVGRE8wRkJSMnhFT3pzN08wZEJTVWM3UVVGRFNDeE5RVUZOTEVOQlFVNHNTVUZCV1N4M1FrRkpXRHRCUVVwRUxGZEJRVmtzZDBKQlFYZENPMGxCUTJoRExDdERRVUZ0UWl4RFFVRkJPMGxCUTI1Q0xIVkVRVUV5UWl4RFFVRkJPMGxCUXpOQ0xHMUZRVUYxUXl4RFFVRkJPMEZCUXpORExFTkJRVU1zUlVGS1Z5eDNRa0ZCZDBJc1MwRkJlRUlzZDBKQlFYZENMRkZCU1c1RE8wRkJRVUVzUTBGQlF6dEJRVVZHTEUxQlFVMHNRMEZCUXl4TlFVRk5MRzFDUVVGdFFpeEhRVUU0UlR0SlFVTTFSeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRkxFOUJRVTg3U1VGRE0wTXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlN4VlFVRlZPMGxCUTJ4RUxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNSVUZCUlN4alFVRmpPME5CUXpkRUxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJoaGJXMXBibWQ5SUdaeWIyMGdKeTR2YUdGdGJXbHVaeWM3WEc1cGJYQnZjblFnZTJ4bGRtVnVjM1JsYVc1OUlHWnliMjBnSnk0dmJHVjJaVzV6ZEdWcGJpYzdYRzVwYlhCdmNuUWdlMjVsWldSc1pXMWhibGQxYm1Ob2ZTQm1jbTl0SUNjdUwyNWxaV1JzWlcxaGJpMTNkVzV6WTJnbk8xeHVhVzF3YjNKMElIdHRiVVJwYzNSaGJtTmxSblZ1WTNScGIyNVVlWEJsZlNCbWNtOXRJQ2N1TDNSNWNHVnpKenRjYmx4dUx5b3FJRVZ1ZFcwZ1kyOXVkR0ZwYm1sdVp5QmpkWEp5Wlc1MGJIa2djM1Z3Y0c5eWRHVmtJRzFoWTNKdmJXOXNaV04xYkdVZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI1elhHNGdLaUJJWVcxdGFXNW5JR1JwYzNSaGJtTmxJSGRwYkd3Z1ltVWdkWE5sWkNCcFppQjBhR1VnYzJWeGRXVnVZMlZ6SUdGeVpTQmhiSEpsWVdSNUlHRnNhV2R1WldSY2JpQXFJRTVsWldSc1pXMWhiaUJrYVhOMFlXNWpaU0IzYVd4c0lHSmxJSFZ6WldRZ1ptOXlJSEJ5YjNSbGFXNGdjMlZ4ZFdWdVkyVnpJSGRwZEdnZ2EyNXZkMjRnUWt4UFUxVk5OaklnYldGMGNtbDRYRzRnS2lCTVpYWmxibk5vZEdWcGJpQmthWE4wWVc1alpTQjNhV3hzSUdKbElIVnpaV1FnWm05eUlHNTFZMnhsYjNScFpHVWdjMlZ4ZFdWdVkyVnpJR0Z6SUdadmNpQjBhR1Z0SUhOMVluTjBhWFIxZEdsdmJpQnRZWFJ5YVhnZ2FYTWdjMkZ0WlNCaGN5QnBaR1Z1ZEdsMGVTQnRZWFJ5YVhoY2JpQXFMMXh1Wlhod2IzSjBJR1Z1ZFcwZ1RXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6SUh0Y2JpQWdJQ0JJUVUxTlNVNUhJRDBnSjBoaGJXMXBibWNuTEZ4dUlDQWdJRXhGVmtWT1UwaFVSVWxPSUQwZ0oweGxkbVZ1YzJoMFpXbHVKeXhjYmlBZ0lDQk9SVVZFVEVWTlFVNU9YMWRWVGxORFNDQTlJQ2RPWldWa2JHVnRZVzV1TFZkMWJuTmphQ2RjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCdGJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1ek9pQlNaV052Y21ROFRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TENBb2RtRnNkV1UvT2lCaGJua3BJRDArSUcxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2YmxSNWNHVStJRDBnZTF4dUlDQmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxraEJUVTFKVGtkZE9pQm9ZVzF0YVc1bkxGeHVJQ0JiVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMa3hGVmtWT1UwaFVSVWxPWFRvZ2JHVjJaVzV6ZEdWcGJpeGNiaUFnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVPUlVWRVRFVk5RVTVPWDFkVlRsTkRTRjA2SUc1bFpXUnNaVzFoYmxkMWJtTm9YRzU5TzF4dUlsMTkiLCJleHBvcnQgZnVuY3Rpb24gaGFtbWluZygpIHtcbiAgICByZXR1cm4gKHNlcTEsIHNlcTIpID0+IHtcbiAgICAgICAgLy8gaGFtbWluZyBkaXN0YW5jZSBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggc2FtZSBzaXplIHN0cmluZ3MsXG4gICAgICAgIC8vIGJ1dCBzdGlsbCwgbGV0cyBhZGQgYSBjaGVjayBhbmQgaWYgdGhleSBhcmUgbm90IHNhbWUgbGVuZ3RoIGFkZCB0aGUgZGlmZmVyZW5jZSB0byB0aGUgcmVzdWx0XG4gICAgICAgIGxldCBkaWZmID0gMDtcbiAgICAgICAgaWYgKHNlcTEubGVuZ3RoICE9PSBzZXEyLmxlbmd0aClcbiAgICAgICAgICAgIGRpZmYgPSBNYXRoLmFicyhzZXExLmxlbmd0aCAtIHNlcTIubGVuZ3RoKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4oc2VxMS5sZW5ndGgsIHNlcTIubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc2VxMVtpXSAhPT0gc2VxMltpXSlcbiAgICAgICAgICAgICAgICByZXN1bHQrKztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gZGlmZjtcbiAgICAgICAgcmVzdWx0IC89IE1hdGgubWF4KHNlcTEubGVuZ3RoLCBzZXEyLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFHRnRiV2x1Wnk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbWhoYlcxcGJtY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUlVFc1RVRkJUU3hWUVVGVkxFOUJRVTg3U1VGRGNrSXNUMEZCVHl4RFFVRkRMRWxCUVZrc1JVRkJSU3hKUVVGWkxFVkJRVVVzUlVGQlJUdFJRVU53UXl3clJFRkJLMFE3VVVGREwwUXNLMFpCUVN0R08xRkJReTlHTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4SlFVRkpMRU5CUVVNc1RVRkJUVHRaUVVNM1FpeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVM1F5eEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRaaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXpSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU55UWl4TlFVRk5MRVZCUVVVc1EwRkJRenRUUVVOYU8xRkJRMFFzVFVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXp0UlFVTm1MRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6ZERMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMmhDTEVOQlFVTXNRMEZCUXp0QlFVTktMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UyMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJsUjVjR1Y5SUdaeWIyMGdKeTR2ZEhsd1pYTW5PMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYUdGdGJXbHVaeWdwT2lCdGJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1VWVYQmxJSHRjYmlBZ2NtVjBkWEp1SUNoelpYRXhPaUJ6ZEhKcGJtY3NJSE5sY1RJNklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lDOHZJR2hoYlcxcGJtY2daR2x6ZEdGdVkyVWdjMmh2ZFd4a0lHOXViSGtnWW1VZ2RYTmxaQ0IzYVhSb0lITmhiV1VnYzJsNlpTQnpkSEpwYm1kekxGeHVJQ0FnSUM4dklHSjFkQ0J6ZEdsc2JDd2diR1YwY3lCaFpHUWdZU0JqYUdWamF5QmhibVFnYVdZZ2RHaGxlU0JoY21VZ2JtOTBJSE5oYldVZ2JHVnVaM1JvSUdGa1pDQjBhR1VnWkdsbVptVnlaVzVqWlNCMGJ5QjBhR1VnY21WemRXeDBYRzRnSUNBZ2JHVjBJR1JwWm1ZZ1BTQXdPMXh1SUNBZ0lHbG1JQ2h6WlhFeExteGxibWQwYUNBaFBUMGdjMlZ4TWk1c1pXNW5kR2dwWEc0Z0lDQWdJQ0JrYVdabUlEMGdUV0YwYUM1aFluTW9jMlZ4TVM1c1pXNW5kR2dnTFNCelpYRXlMbXhsYm1kMGFDazdYRzVjYmlBZ0lDQnNaWFFnY21WemRXeDBJRDBnTUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUUxaGRHZ3ViV2x1S0hObGNURXViR1Z1WjNSb0xDQnpaWEV5TG14bGJtZDBhQ2s3SUdrckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0hObGNURmJhVjBnSVQwOUlITmxjVEpiYVYwcFhHNGdJQ0FnSUNBZ0lISmxjM1ZzZENzck8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhOMWJIUWdLejBnWkdsbVpqdGNiaUFnSUNCeVpYTjFiSFFnTHowZ1RXRjBhQzV0WVhnb2MyVnhNUzVzWlc1bmRHZ3NJSE5sY1RJdWJHVnVaM1JvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0I5TzF4dWZWeHVJbDE5IiwiaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmV4cG9ydCBmdW5jdGlvbiBsZXZlbnN0ZWluKCkge1xuICAgIHJldHVybiAoc2VxMSwgc2VxMikgPT4ge1xuICAgICAgICByZXR1cm4gZGlzdGFuY2Uoc2VxMSwgc2VxMikgLyBNYXRoLm1heChzZXExLmxlbmd0aCwgc2VxMi5sZW5ndGgpO1xuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liR1YyWlc1emRHVnBiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklteGxkbVZ1YzNSbGFXNHVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExGRkJRVkVzUlVGQlF5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJSemRETEUxQlFVMHNWVUZCVlN4VlFVRlZPMGxCUTNoQ0xFOUJRVThzUTBGQlF5eEpRVUZaTEVWQlFVVXNTVUZCV1N4RlFVRkZMRVZCUVVVN1VVRkRjRU1zVDBGQlR5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYmtVc1EwRkJReXhEUVVGRE8wRkJRMG9zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdaR2x6ZEdGdVkyVjlJR1p5YjIwZ0oyWmhjM1JsYzNRdGJHVjJaVzV6YUhSbGFXNG5PMXh1YVcxd2IzSjBJSHR0YlVScGMzUmhibU5sUm5WdVkzUnBiMjVVZVhCbGZTQm1jbTl0SUNjdUwzUjVjR1Z6Snp0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHeGxkbVZ1YzNSbGFXNG9LVG9nYlcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1Vkhsd1pTQjdYRzRnSUhKbGRIVnliaUFvYzJWeE1Ub2djM1J5YVc1bkxDQnpaWEV5T2lCemRISnBibWNwSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnWkdsemRHRnVZMlVvYzJWeE1Td2djMlZ4TWlrZ0x5Qk5ZWFJvTG0xaGVDaHpaWEV4TG14bGJtZDBhQ3dnYzJWeE1pNXNaVzVuZEdncE8xeHVJQ0I5TzF4dWZWeHVJbDE5IiwiaW1wb3J0ICogYXMgZmwgZnJvbSAnZmFzdGVzdC1sZXZlbnNodGVpbic7XG5pbXBvcnQgeyBqYXJvV2lua2xlciB9IGZyb20gJ2phcm8td2lua2xlci10eXBlc2NyaXB0JztcbmltcG9ydCB7IGFzeW1tZXRyaWNEaXN0YW5jZSwgYnJhdW5CbGFucXVldERpc3RhbmNlLCBjb3NpbmVEaXN0YW5jZSwgZGljZURpc3RhbmNlLCBldWNsaWRlYW5EaXN0YW5jZSwgaGFtbWluZ0Rpc3RhbmNlLCBrdWxjenluc2tpRGlzdGFuY2UsIG1jQ29ubmF1Z2hleURpc3RhbmNlLCByb2dvdEdvbGRiZXJnRGlzdGFuY2UsIHJ1c3NlbERpc3RhbmNlLCBzb2thbERpc3RhbmNlLCB0YW5pbW90b0Rpc3RhbmNlLCBudW1lcmljRGlzdGFuY2UsIH0gZnJvbSAnLi4vZGlzdGFuY2UtbWV0cmljcy1tZXRob2RzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgbW1EaXN0YW5jZUZ1bmN0aW9ucywgTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzIH0gZnJvbSAnLi4vbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMsIEJpdEFycmF5TWV0cmljc05hbWVzLCBTdHJpbmdNZXRyaWNzTmFtZXMsIFZlY3Rvck1ldHJpY3NOYW1lcywgTnVtYmVyTWV0cmljc05hbWVzIH0gZnJvbSAnLi9jb25zdHMnO1xuZXhwb3J0IGNvbnN0IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW1ZlY3Rvck1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3Qgc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogZmwuZGlzdGFuY2UsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl06IGphcm9XaW5rbGVyLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXTogbWFuaGF0dGFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiB0YW5pbW90b0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogZGljZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYXN5bW1ldHJpY0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYnJhdW5CbGFucXVldERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBjb3NpbmVEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGt1bGN6eW5za2lEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiByb2dvdEdvbGRiZXJnRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IHJ1c3NlbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IHNva2FsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkhhbW1pbmddOiBoYW1taW5nRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBudW1iZXJEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtOdW1iZXJNZXRyaWNzTmFtZXMuTnVtZXJpY0Rpc3RhbmNlXTogbnVtZXJpY0Rpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBBdmFpbGFibGVNZXRyaWNzID0ge1xuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5WZWN0b3JdOiB7XG4gICAgICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5TdHJpbmddOiB7XG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl0sXG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl0sXG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5CaXRBcnJheV06IHtcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGVdOiB7XG4gICAgICAgIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuSEFNTUlOR106IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddLFxuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTEVWRU5TSFRFSU5dLFxuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTkVFRExFTUFOTl9XVU5TQ0hdLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLk51bWJlcl06IHtcbiAgICAgICAgW051bWJlck1ldHJpY3NOYW1lcy5OdW1lcmljRGlzdGFuY2VdOiBudW1iZXJEaXN0YW5jZU1ldHJpY3NNZXRob2RzW051bWJlck1ldHJpY3NOYW1lcy5OdW1lcmljRGlzdGFuY2VdLFxuICAgIH1cbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKVxuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGUudG9TdHJpbmcoKTtcbn1cbi8qKiBNYW5oYXR0YW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gc2VxdWVuY2VzIChtYXRjaCAtIDAsIG1pc21hdGNoIC0gMSkgbm9ybWFsaXplZCBmb3IgbGVuZ3RoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3RhbmNlKHMxLCBzMikge1xuICAgIGlmIChzMS5sZW5ndGggIT09IHMyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkaXN0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzMS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGRpc3QgKz0gczFbaV0gPT0gczJbaV0gPyAwIDogMTtcbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFVkJRMmhDTEdWQlFXVXNSMEZEYUVJc1RVRkJUU3cyUWtGQk5rSXNRMEZCUXp0QlFVVnlReXhQUVVGUExFVkJRVU1zTUVKQlFUQkNMRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVY3pSaXhQUVVGUExFVkJRVU1zYlVKQlFXMUNMRVZCUVVVc2QwSkJRWGRDTEVWQlFVTXNUVUZCVFN4eFEwRkJjVU1zUTBGQlF6dEJRVU5zUnl4UFFVRlBMRVZCUVVNc2RVSkJRWFZDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRMjVFTEd0Q1FVRnJRaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUnpsRkxFMUJRVTBzUTBGQlF5eE5RVUZOTERSQ1FVRTBRaXhIUVVGNVJEdEpRVU5vUnl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMREJDUVVFd1FqdERRVU16UkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzTkVKQlFUUkNMRWRCUVhsRU8wbEJRMmhITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRkZCUVZFN1NVRkROME1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTeFhRVUZYTzBsQlF6ZERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc2FVSkJRV2xDTzBOQlEyeEVMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTdzRRa0ZCT0VJc1IwRkJOa1E3U1VGRGRFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4blFrRkJaMEk3U1VGRGFrUXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4WlFVRlpPMGxCUTNwRExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzYTBKQlFXdENPMGxCUTNKRUxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVGRExFVkJRVVVzY1VKQlFYRkNPMGxCUXpORUxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzWTBGQll6dEpRVU0zUXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMR3RDUVVGclFqdEpRVU55UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRzlDUVVGdlFqdEpRVU42UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMSEZDUVVGeFFqdEpRVU16UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMR05CUVdNN1NVRkROME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeGhRVUZoTzBsQlF6TkRMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1pVRkJaVHRKUVVNdlF5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEdsQ1FVRnBRanREUVVOd1JDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc05FSkJRVFJDTEVkQlFYbEVPMGxCUTJoSExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hEUVVGRExFVkJRVVVzWlVGQlpUdERRVU4wUkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzWjBKQlFXZENMRWRCUVVjN1NVRkRPVUlzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFJRVU5vUXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRFJDUVVFMFFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF6dExRVU16Ump0SlFVTkVMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNN1VVRkRPVVlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNN1VVRkRPVVlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRNMFk3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTzFGQlEyeERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVVVGQlVTeERRVUZETzFGQlF6bEdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFGQlEzUkdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEyeEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETzFGQlEzaEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6RkdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEyeEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zV1VGQldTeERRVUZETzFGQlEzUkhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETzFGQlEzaEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6RkdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEzcEdPMGxCUTBRc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1JVRkJSVHRSUVVOMlF5eERRVUZETEhkQ1FVRjNRaXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVONlJpeERRVUZETEhkQ1FVRjNRaXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVOcVJ5eERRVUZETEhkQ1FVRjNRaXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1MwRkRPVWM3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlEyaERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeERRVUZETzB0QlEzWkhPME5CUTBZc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEdkQ1FVRm5RaXhIUVVGeFFpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzB0QlF6VkZMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRWEZDTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1NVRkRja01zUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUTBGQlF6dFJRVU40UlN4SFFVRkhMRU5CUVVNc1IwRkJlVUlzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0SlFVVjJReXhQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5pTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVdWVUxFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNTVUZCYTBJN1NVRkRMME1zVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGclFqdEpRVU5xUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenRCUVVNNVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhKUVVGclFqdEpRVU12UXl4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJRenRCUVVNMVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSEZDUVVGeFFpeERRVUZETEVsQlFXdENPMGxCUTNSRUxFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzZFVKQlFYVkNMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEzQkdMRU5CUVVNN1FVRkZSQ3huUjBGQlowYzdRVUZEYUVjc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM1JFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1MwRkJTeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTzFGQlF6TkNMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRMVk3VTBGQlRUdFJRVU5NTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRhRU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEycERMRTlCUVU4c1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdTMEZEZWtJN1FVRkRTQ3hEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRlZCUVZVc1EwRkJReXhKUVVGVk8xRkJRekZDTEUxQlFVMHNTVUZCU1N4SFFVVk9MR2RDUVVGblFpeERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZEZWtZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHRRa0ZCYlVJc1NVRkJTU3hEUVVGRExFMUJRVTBzYTBKQlFXdENMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEyNUdMRTlCUVU4c2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRnhReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETjBVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGdFFpeERRVUZETzBsQlEzWkVMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhSUVVFMFFqdFJRVU0xUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN08wOUJSVWM3U1VGRFNDeE5RVUZOTEV0QlFVc3NhVUpCUVdsQ08xRkJRekZDTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMGxCUTNaRExFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdac0lHWnliMjBnSjJaaGMzUmxjM1F0YkdWMlpXNXphSFJsYVc0bk8xeHVhVzF3YjNKMElIdHFZWEp2VjJsdWEyeGxjbjBnWm5KdmJTQW5hbUZ5YnkxM2FXNXJiR1Z5TFhSNWNHVnpZM0pwY0hRbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdGNiaUFnWVhONWJXMWxkSEpwWTBScGMzUmhibU5sTEZ4dUlDQmljbUYxYmtKc1lXNXhkV1YwUkdsemRHRnVZMlVzWEc0Z0lHTnZjMmx1WlVScGMzUmhibU5sTEZ4dUlDQmthV05sUkdsemRHRnVZMlVzWEc0Z0lHVjFZMnhwWkdWaGJrUnBjM1JoYm1ObExGeHVJQ0JvWVcxdGFXNW5SR2x6ZEdGdVkyVXNYRzRnSUd0MWJHTjZlVzV6YTJsRWFYTjBZVzVqWlN4Y2JpQWdiV05EYjI1dVlYVm5hR1Y1UkdsemRHRnVZMlVzWEc0Z0lISnZaMjkwUjI5c1pHSmxjbWRFYVhOMFlXNWpaU3hjYmlBZ2NuVnpjMlZzUkdsemRHRnVZMlVzWEc0Z0lITnZhMkZzUkdsemRHRnVZMlVzWEc0Z0lIUmhibWx0YjNSdlJHbHpkR0Z1WTJVc1hHNGdJRzUxYldWeWFXTkVhWE4wWVc1alpTeGNibjBnWm5KdmJTQW5MaTR2WkdsemRHRnVZMlV0YldWMGNtbGpjeTF0WlhSb2IyUnpKenRjYmx4dWFXMXdiM0owSUh0allXeGpkV3hoZEdWRmRXTnNhV1JsWVc1RWFYTjBZVzVqWlgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdlMVpsWTNSdmNpd2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVYMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6TENCTmJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1elRtRnRaWE45SUdaeWIyMGdKeTR1TDIxaFkzSnZiVzlzWldOMWJHVXRaR2x6ZEdGdVkyVXRablZ1WTNScGIyNXpKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXNJRUpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TEZ4dUlDQlRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXNJRlpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeXdnVG5WdFltVnlUV1YwY21samMwNWhiV1Z6ZlNCbWNtOXRJQ2N1TDJOdmJuTjBjeWM3WEc1Y2JseHVaWGh3YjNKMElHTnZibk4wSUhabFkzUnZja1JwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJXWldOMGIzSXNJSGs2SUZabFkzUnZjaWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0V1pXTjBiM0pOWlhSeWFXTnpUbUZ0WlhNdVJYVmpiR2xrWldGdVhUb2dZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnYzNSeWFXNW5SR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrY3pvZ2V5QmJibUZ0WlRvZ2MzUnlhVzVuWFRvZ0tIZzZJSE4wY21sdVp5d2dlVG9nYzNSeWFXNW5LU0E5UGlCdWRXMWlaWElnZlNBOUlIdGNiaUFnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1TVpYWmxibk5vZEdWcGJsMDZJR1pzTG1ScGMzUmhibU5sTEZ4dUlDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3BoY205WGFXNXJiR1Z5WFRvZ2FtRnliMWRwYm10c1pYSXNYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRXRnVhR0YwZEdGdVhUb2diV0Z1YUdGMGRHRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtTQTlQaUJ1ZFcxaVpYSWdmU0E5SUh0Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxSaGJtbHRiM1J2WFRvZ2RHRnVhVzF2ZEc5RWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtScFkyVmRPaUJrYVdObFJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhUb2dZWE41YlcxbGRISnBZMFJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRbkpoZFc1Q2JHRnVjWFZsZEYwNklHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMDZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVMzVnNZM3A1Ym5OcmFWMDZJR3QxYkdONmVXNXphMmxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwNklHMWpRMjl1Ym1GMVoyaGxlVVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVbTluYjNSSGIyeGtZbVZ5WjEwNklISnZaMjkwUjI5c1pHSmxjbWRFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMDZJSEoxYzNObGJFUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVUyOXJZV3hkT2lCemIydGhiRVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTR0Z0YldsdVoxMDZJR2hoYlcxcGJtZEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR1YxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUc1MWJXSmxja1JwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVRuVnRaWEpwWTBScGMzUmhibU5sWFRvZ2JuVnRaWEpwWTBScGMzUmhibU5sTEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFRjJZV2xzWVdKc1pVMWxkSEpwWTNNZ1BTQjdYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVXWldOMGIzSmRPaUI3WEc0Z0lDQWdXMVpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeTVGZFdOc2FXUmxZVzVkT2lCMlpXTjBiM0pFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcxWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5NUZkV05zYVdSbFlXNWRMRnh1SUNCOUxGeHVJQ0JiUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVVM1J5YVc1blhUb2dlMXh1SUNBZ0lGdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUR1YyWlc1emFIUmxhVzVkT2lCemRISnBibWRFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcxTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5NU1aWFpsYm5Ob2RHVnBibDBzWEc0Z0lDQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwNklITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3BoY205WGFXNXJiR1Z5WFN4Y2JpQWdJQ0JiVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGsxaGJtaGhkSFJoYmwwNklITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMazFoYm1oaGRIUmhibDBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVDYVhSQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5ZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5ZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUVhV05sWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtScFkyVmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVCYzNsdGJXVjBjbWxqWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtGemVXMXRaWFJ5YVdOZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUNjbUYxYmtKc1lXNXhkV1YwWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtKeVlYVnVRbXhoYm5GMVpYUmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRMjl6YVc1bFhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTM1ZzWTNwNWJuTnJhVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFN4Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVRXTkRiMjV1WVhWbmFHVjVYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSnZaMjkwUjI5c1pHSmxjbWRkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW05bmIzUkhiMnhrWW1WeVoxMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVNkWE56Wld4ZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVRiMnRoYkYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VGIydGhiRjBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVOWVdOeWIwMXZiR1ZqZFd4bFhUb2dleUF2THlCdmNIUnBiMjVoYkNCaGNtZHpJRzVsWldSbFpDQm1iM0lnYldGamNtOXRiMnhsWTNWc1pTQm1kVzVqZEdsdmJuTWdkMmhwWTJnZ2FXNXBkR2xoYkdsNlpTQjBhR1Z0WEc0Z0lDQWdXMDF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5NUlRVTFOU1U1SFhUb2diVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMXROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVTRUZOVFVsT1IxMHNYRzRnSUNBZ1cwMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3k1TVJWWkZUbE5JVkVWSlRsMDZJRzF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5iVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMa3hGVmtWT1UwaFVSVWxPWFN4Y2JpQWdJQ0JiVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMazVGUlVSTVJVMUJUazVmVjFWT1UwTklYVG9nYlcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzF0TmJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1elRtRnRaWE11VGtWRlJFeEZUVUZPVGw5WFZVNVRRMGhkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VG5WdFltVnlYVG9nZTF4dUlDQWdJRnRPZFcxaVpYSk5aWFJ5YVdOelRtRnRaWE11VG5WdFpYSnBZMFJwYzNSaGJtTmxYVG9nYm5WdFltVnlSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVRuVnRaWEpwWTBScGMzUmhibU5sWFN4Y2JpQWdmVnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtWeHVJQ0FnSUNBZ2NtVjBXM1poYkNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTmRJRDBnYTJWNU8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN3Z2UzMHBPMXh1WEc1bGVIQnZjblFnZEhsd1pTQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqY3p0Y2JtVjRjRzl5ZENCMGVYQmxJRlpsWTNSdmNrMWxkSEpwWTNNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjMXRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NVdaV04wYjNKZE8xeHVaWGh3YjNKMElIUjVjR1VnVTNSeWFXNW5UV1YwY21samN5QTlJR3RsZVc5bUlIUjVjR1Z2WmlCQmRtRnBiR0ZpYkdWTlpYUnlhV056VzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCQ2FYUkJjbkpoZVUxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1Q2FYUkJjbkpoZVYwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkSEpwWTNNZ1BTQlRkSEpwYm1kTlpYUnlhV056SUh3Z1FtbDBRWEp5WVhsTlpYUnlhV056SUh3Z1ZtVmpkRzl5VFdWMGNtbGpjeUI4WEc0Z0lFMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3lCOElFNTFiV0psY2sxbGRISnBZM05PWVcxbGN6dGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1ZtRnNhV1JVZVhCbGN5QTlYRzRnSUhzZ1pHRjBZVG9nYzNSeWFXNW5XMTBzSUcxbGRISnBZem9nVTNSeWFXNW5UV1YwY21samN5QjhJRTF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5QjlJSHhjYmlBZ2V5QmtZWFJoT2lCV1pXTjBiM0piWFN3Z2JXVjBjbWxqT2lCV1pXTjBiM0pOWlhSeWFXTnpJSDBnZkZ4dUlDQjdJR1JoZEdFNklFSnBkRUZ5Y21GNVcxMHNJRzFsZEhKcFl6b2dRbWwwUVhKeVlYbE5aWFJ5YVdOeklIMGdmRnh1SUNCN0lHUmhkR0U2SUc1MWJXSmxjbHRkTENCdFpYUnlhV002SUU1MWJXSmxjazFsZEhKcFkzTk9ZVzFsY3lCOU8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5UZEhKcGJtZE5aWFJ5YVdNb2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUhKbGRIVnliaUJOWlhSeWFXTlViMFJoZEdGVWVYQmxXMjVoYldWZElEMDlJQ2RUZEhKcGJtY25PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTkNhWFJCY25KaGVVMWxkSEpwWXlodVlXMWxPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnY21WMGRYSnVJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJibUZ0WlYwZ1BUMGdKMEpwZEVGeWNtRjVKenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpWbVZqZEc5eVRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQW5WbVZqZEc5eUp6dGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdselRXRmpjbTlOYjJ4bFkzVnNaVTFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVUV0ZqY205TmIyeGxZM1ZzWlM1MGIxTjBjbWx1WnlncE8xeHVmVnh1WEc0dktpb2dUV0Z1YUdGMGRHRnVJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdkSGR2SUhObGNYVmxibU5sY3lBb2JXRjBZMmdnTFNBd0xDQnRhWE50WVhSamFDQXRJREVwSUc1dmNtMWhiR2w2WldRZ1ptOXlJR3hsYm1kMGFDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVc1b1lYUjBZVzVFYVhOMFlXNWpaU2h6TVRvZ2MzUnlhVzVuTENCek1qb2djM1J5YVc1bktUb2diblZ0WW1WeUlIdGNiaUFnYVdZZ0tITXhMbXhsYm1kMGFDQWhQVDBnY3pJdWJHVnVaM1JvS1NCN1hHNGdJQ0FnY21WMGRYSnVJREU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnYkdWMElHUnBjM1E2SUc1MWJXSmxjaUE5SURBN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlERTdJR2tnUENCek1TNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQWdJR1JwYzNRZ0t6MGdjekZiYVYwZ1BUMGdjekpiYVYwZ1B5QXdJRG9nTVR0Y2JpQWdJQ0J5WlhSMWNtNGdaR2x6ZENBdklITXhMbXhsYm1kMGFEdGNiaUFnZlZ4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dmNIUnpmU0J2Y0hSeklFOXdkR2x2Ym5NZ1ptOXlJSFJvWlNCdFpXRnpkWEpsTGlCMWMyVmtJR1p2Y2lCdFlXTnliMjF2YkdWamRXeGxJR1JwYzNSaGJtTmxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1EyRnNiR0poWTJzZ2IyWWdkR2hsSUcxbFlYTjFjbVVnWTJodmMyVnVMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJOWldGemRYSmxLRzl3ZEhNL09pQmhibmtwT2lCRWFYTjBZVzVqWlUxbGRISnBZeUI3WEc0Z0lDQWdZMjl1YzNRZ1pHbGpkRG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPbHh1SUNBZ0lDQWdlMXRyWlhreU9pQnpkSEpwYm1kZE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCOElDZ29iM0IwY3pvZ1lXNTVLU0E5UGlCRWFYTjBZVzVqWlUxbGRISnBZeWw5WEc0Z0lDQWdmU0E5SUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc0Z0lDQWdhV1lnS0NGa2FXTjBMbWhoYzA5M2JsQnliM0JsY25SNUtIUm9hWE11WkdGMFlWUjVjR1VwSUh4OElDRmthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRMbWhoYzA5M2JsQnliM0JsY25SNUtIUm9hWE11YldWMGFHOWtLU2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzVyYm05M2JpQnRaV0Z6ZFhKbElDUjdkR2hwY3k1dFpYUm9iMlI5SUdadmNpQmtZWFJoSUhSNWNHVWdKSHQwYUdsekxtUmhkR0ZVZVhCbGZXQXBPMXh1SUNBZ0lISmxkSFZ5YmlCcGMwMWhZM0p2VFc5c1pXTjFiR1ZOWlhSeWFXTW9kR2hwY3k1dFpYUm9iMlFwSUQ5Y2JpQWdJQ0FnSUNoa2FXTjBXM1JvYVhNdVpHRjBZVlI1Y0dWZFczUm9hWE11YldWMGFHOWtYU0JoY3lBb0tHOXdkSE02SUdGdWVTa2dQVDRnUkdsemRHRnVZMlZOWlhSeWFXTXBLU2h2Y0hSektTQTZYRzRnSUNBZ0lDQmthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRXM1JvYVhNdWJXVjBhRzlrWFNCaGN5QkVhWE4wWVc1alpVMWxkSEpwWXp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHTjFjM1J2YlNCemRISnBibWNnWkdsemRHRnVZMlVnWW5rZ2RHaGxJR2RwZG1WdUlHUmhkR0VnZEhsd1pTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0QmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhOOUlHUmhkR0ZVZVhCbElFMWxkSEpwWXlkeklHUmhkR0VnZEhsd1pWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWRiWFgwZ1RXVjBjbWxqSUc1aGJXVnpJSGRvYVdOb0lHVjRjR1ZqZEhNZ2RHaGxJR2RwZG1WdUlHUmhkR0VnZEhsd1pWeHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1RXVmhjM1Z5WlhKY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFRXVjBjbWxqUW5sRVlYUmhWSGx3WlNoa1lYUmhWSGx3WlRvZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWektUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOelcyUmhkR0ZVZVhCbFhTazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCdFpYUnlhV01nYm1GdFpYTWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnWVhaaGFXeGhZbXhsVFdWaGMzVnlaWE1vS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056S1R0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRBcnJheSB7XG4gICAgY29uc3RydWN0b3IoYXJnLCBkZWZhdWx0VmFsdWUgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLl92ZXJzaW9uID0gMDtcbiAgICAgICAgdGhpcy5fdXBkYXRlTGV2ZWwgPSAwO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudFZlcnNpb24gPSAtMTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzVmVyc2lvbiA9IC0xO1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lID0gJyc7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25lZE5hbWVWZXJzaW9uID0gLTE7XG4gICAgICAgIHRoaXMuU0hSSU5LX1RIUkVTSE9MRCA9IDB4MTAwO1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGFyZztcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBCaXRBcnJheS5fY3JlYXRlQnVmZmVyKGxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICBidWZmW2ldID0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gYnVmZjtcbiAgICAgICAgICAgIHRoaXMuX2xlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGFyZztcbiAgICAgICAgICAgIHRoaXMuX2xlbmd0aCA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25zdHJ1Y3RvcicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFJhd0RhdGEoKSB7IHJldHVybiB0aGlzLl9kYXRhOyB9XG4gICAgYXNzdXJlR29leihudW0sIGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKG51bSA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXJnTmFtZX0gc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvYCk7XG4gICAgfVxuICAgIGFzc3VyZUluUmFuZ2UodmFsdWUsIG1pbiwgbWF4LCBhcmdOYW1lKSB7XG4gICAgICAgIGlmICgodmFsdWUgPCBtaW4pIHx8ICh2YWx1ZSA+IG1heCkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFyZ3VtZW50ICR7YXJnTmFtZX0gKCR7dmFsdWV9KSBvdXQgb2YgcmFuZ2UgKCR7bWlufSwgJHttYXh9KWApO1xuICAgIH1cbiAgICBjb3B5KHNyYywgZHN0LCBjb3VudCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspXG4gICAgICAgICAgICBkc3RbaV0gPSBzcmNbaV07XG4gICAgfVxuICAgIGNvcHlGcm9tKG90aGVyKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gb3RoZXIuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTGVuZ3RocyBkaWZmZXIgKCR7dGhpcy5fbGVuZ3RofSAhPSAke290aGVyLl9sZW5ndGh9KWApO1xuICAgICAgICB0aGlzLmNvcHkob3RoZXIuX2RhdGEsIHRoaXMuX2RhdGEsIHRoaXMubGVuZ3RoSW5JbnRzKTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGVuZ3RoO1xuICAgIH1cbiAgICBnZXQgYnVmZmVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG4gICAgc2V0IGJ1ZmZlcihkYXRhKSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjtcbiAgICB9XG4gICAgc2V0IHZlcnNpb24odmFsdWUpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IHZhbHVlO1xuICAgIH1cbiAgICBpbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoSW5JbnRzKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodGhpcy5fbGVuZ3RoICsgMHgxZikgLyAweDIwKTtcbiAgICB9XG4gICAgZ2V0IHZlcnNpb25lZE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uID09IHRoaXMuX3ZlcnNpb25lZE5hbWVWZXJzaW9uID8gdGhpcy5fdmVyc2lvbmVkTmFtZSA6ICcnO1xuICAgIH1cbiAgICBzZXQgdmVyc2lvbmVkTmFtZShuYW1lKSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25lZE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lVmVyc2lvbiA9IHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIGdldCBzZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0TGVuZ3RoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBiZSA+PSAwJyk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSB0aGlzLl9sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5JbnRzTmVlZGVkID0gTWF0aC5mbG9vcigodmFsdWUgKyAweDFmKSAvIDB4MjApO1xuICAgICAgICBpZiAoKG5JbnRzTmVlZGVkID4gdGhpcy5fZGF0YS5sZW5ndGgpIHx8ICgobkludHNOZWVkZWQgKyB0aGlzLlNIUklOS19USFJFU0hPTEQpIDwgdGhpcy5fZGF0YS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IFVpbnQzMkFycmF5KG5JbnRzTmVlZGVkKTtcbiAgICAgICAgICAgIHRoaXMuY29weSh0aGlzLl9kYXRhLCBuZXdEYXRhLCAobkludHNOZWVkZWQgPiB0aGlzLl9kYXRhLmxlbmd0aCkgPyB0aGlzLl9kYXRhLmxlbmd0aCA6IG5JbnRzTmVlZGVkKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBuZXdEYXRhO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA+IHRoaXMuX2xlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAlIDB4MjAgPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFbdGhpcy5sZW5ndGhJbkludHMgLSAxXSAmPSAoMSA8PCAoKHRoaXMuX2xlbmd0aCAlIDB4MjApICYgMHgxZikpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEuZmlsbCgwLCB0aGlzLmxlbmd0aEluSW50cywgbkludHNOZWVkZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xlbmd0aCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tQW5kKHNldDEsIHNldDIpIHtcbiAgICAgICAgaWYgKHNldDEuX2xlbmd0aCAhPSBzZXQyLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExlbmd0aHMgZGlmZmVyICgke3NldDEuX2xlbmd0aH0gIT0gJHtzZXQyLl9sZW5ndGh9KWApO1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KHNldDEuX2xlbmd0aCk7XG4gICAgICAgIHRlbXAuX2xlbmd0aCA9IHNldDEuX2xlbmd0aDtcbiAgICAgICAgdGVtcC5fZGF0YSA9IEJpdEFycmF5Ll9jcmVhdGVCdWZmZXIodGVtcC5fbGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIGNvbnN0IGxlbiA9IHNldDEubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGVtcC5fZGF0YVtpXSA9IHNldDEuX2RhdGFbaV0gJiBzZXQyLl9kYXRhW2ldO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgc3RhdGljIF9jcmVhdGVCdWZmZXIobGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVWludDMyQXJyYXkoTWF0aC5mbG9vcigobGVuZ3RoICsgMHgxZikgLyAweDIwKSk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tVmFsdWVzKHZhbHVlcykge1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KHZhbHVlcy5sZW5ndGgpO1xuICAgICAgICB0ZW1wLl92ZXJzaW9uID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZW1wLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1tpXSlcbiAgICAgICAgICAgICAgICB0ZW1wLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSB8PSAxIDw8ICgoaSAlIDB4MjApICYgMHgxZik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIC8vLyBDb25zdHJ1Y3RzIGEgW0JpdFNldF0gb2YgbGVuZ3RoIFtjb3VudF0sIHdoZXJlIGlkeC10aCBiaXQgaXMgZGV0ZXJtaW5lZCBieSBhIGNhbGwgdG8gW2ZsYWddIChpZHgpLlxuICAgIHN0YXRpYyBmcm9tU2VxKGNvdW50LCBmbGFnKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkoY291bnQpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpXG4gICAgICAgICAgICB0ZW1wLnNldEJpdChpLCBmbGFnKGkpKTtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICAvLy8gQ29uc3RydWN0cyBhIFtCaXRTZXRdIGZyb20gYSBzdHJpbmcgW3NdIGNvbnRhaW5pbmcgJzAnIG9yICcxJy5cbiAgICBzdGF0aWMgZnJvbVN0cmluZyhzKSB7XG4gICAgICAgIHJldHVybiBCaXRBcnJheS5mcm9tU2VxKHMubGVuZ3RoLCAoaSkgPT4gcy5jaGFyQXQoaSkgPT0gJzEnKTtcbiAgICB9XG4gICAgLy8vIENvbnN0cnVjdHMgYSBbQml0U2V0XSwgYmFzZWQgb24gbGVuZ3RoIFtfbGVuZ3RoXSBhbmQgYnl0ZSBhcnJheSBbX2RhdGFdLlxuICAgIHN0YXRpYyBmcm9tVWludDMyQXJyYXkoX2xlbmd0aCwgX2RhdGEpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShfbGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fZGF0YSA9IF9kYXRhO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgLy8vIERlc2VyaWFsaXplcyBhIFtCaXRTZXRdIGZyb20gW2J5dGVzXS5cbiAgICBzdGF0aWMgZnJvbUJ5dGVzKGJ5dGVzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShsZW4gKiA4KTtcbiAgICAgICAgdGVtcC5fZGF0YSA9IG5ldyBVaW50MzJBcnJheShNYXRoLmZsb29yKChsZW4gKyAzKSAvIDQpKTtcbiAgICAgICAgdGVtcC5fbGVuZ3RoID0gbGVuICogODtcbiAgICAgICAgbGV0IG51bTEgPSAwO1xuICAgICAgICBsZXQgbnVtMiA9IDA7XG4gICAgICAgIHdoaWxlICgobGVuIC0gbnVtMikgPj0gNCkge1xuICAgICAgICAgICAgdGVtcC5fZGF0YVtudW0xKytdID0gKCgoYnl0ZXNbbnVtMl0gJiAweGZmKSB8ICgoYnl0ZXNbbnVtMiArIDFdICYgMHhmZikgPDwgOCkpIHxcbiAgICAgICAgICAgICAgICAoKGJ5dGVzW251bTIgKyAyXSAmIDB4ZmYpIDw8IDB4MTApKSB8ICgoYnl0ZXNbbnVtMiArIDNdICYgMHhmZikgPDwgMHgxOCk7XG4gICAgICAgICAgICBudW0yICs9IDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbiAtIG51bTIgPT0gMylcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMV0gPSAoYnl0ZXNbbnVtMiArIDJdICYgMHhmZikgPDwgMHgxMDtcbiAgICAgICAgaWYgKGxlbiAtIG51bTIgPT0gMilcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMV0gfD0gKGJ5dGVzW251bTIgKyAxXSAmIDB4ZmYpIDw8IDg7XG4gICAgICAgIGlmIChsZW4gLSBudW0yID09IDEpXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTFdIHw9IGJ5dGVzW251bTJdICYgMHhmZjtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuX2xlbmd0aH0gYml0cywgJHt0aGlzLmNvdW50Qml0cyh0cnVlKX0gc2V0YDtcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIGRlZXAgY29tcGFyaXNvbiBvZiB0d28gYml0c2V0cy5cbiAgICBlcXVhbHMob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMgPT0gb3RoZXIpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG90aGVyID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gb3RoZXIuX2xlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGggLSAxOyBpKyspXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVtpXSAhPSBvdGhlci5fZGF0YVtpXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAodGhpcy5fZGF0YS5sZW5ndGggLSAxKSAqIDg7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Qml0KGkpICE9IG90aGVyLmdldEJpdChpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKiBDbG9uZXMgYSBiaXRzZXQuICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGJpdEFycmF5ID0gbmV3IEJpdEFycmF5KDAsIGZhbHNlKTtcbiAgICAgICAgYml0QXJyYXkuX2RhdGEgPSBVaW50MzJBcnJheS5mcm9tKHRoaXMuX2RhdGEpOyAvLyBlZmZlY3RpdmUgbGVuZ3RoOiAobGVuZ3RoSW5JbnRzKVxuICAgICAgICBiaXRBcnJheS5fbGVuZ3RoID0gdGhpcy5fbGVuZ3RoO1xuICAgICAgICBiaXRBcnJheS5fdmVyc2lvbiA9IHRoaXMuX3ZlcnNpb247XG4gICAgICAgIHJldHVybiBiaXRBcnJheTtcbiAgICB9XG4gICAgLyoqIEluaXRpYWxpemVzIGEgYml0c2V0LiAqL1xuICAgIGluaXQoZmxhZywgbm90aWZ5KSB7XG4gICAgICAgIHRoaXMuc2V0QWxsKGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmbGFnKGkpKVxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldIHw9IDEgPDwgKChpICUgMHgyMCkgJiAweDFmKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBJbnZlcnRzIGEgYml0c2V0LlxuICAgIGludmVydChub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gXj0gLTE7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICAvLy8gU2V0cyBhbGwgYml0cyB0byBbdmFsdWVdLCBvcHRpb25hbGx5IHN1cHByZXNzaW5nIG5vdGlmaWNhdGlvbnMuXG4gICAgc2V0QWxsKHZhbHVlLCBub3RpZnkgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBmbGFncyA9IHZhbHVlID8gLTEgOiAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykgLy90b2RvOiBvcHRpbWl6ZVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IGZsYWdzO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgLy8vIFNldHMgYml0cyBhdCBbaW5kZXhlc10gcG9zaXRpb24gdG8gW3ZhbHVlXS5cbiAgICAvLy8gQ2xlYXJzIHRoZSBiaXRzZXQgaWYgW2NsZWFyXSBmbGFnIGlzIHRydWUuXG4gICAgLy8vIENoYW5nZSBub3RpZmljYXRpb24gaXMgcmFpc2VkIHdoZW4gW25vdGlmeV0gaXMgdHJ1ZS5cbiAgICBzZXRJbmRleGVzKGluZGV4ZXMsIHZhbHVlID0gdHJ1ZSwgY2xlYXIgPSB0cnVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmIChjbGVhcilcbiAgICAgICAgICAgIHRoaXMuc2V0QWxsKCF2YWx1ZSwgZmFsc2UpO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5kZXhlcylcbiAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICBldmVyeUluZGV4KGluZGV4ZXMsIHZhbHVlID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGluZGV4ZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpbmRleCkgIT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhbnlJbmRleChpbmRleGVzLCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBvZiBpbmRleGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaW5kZXgpID09IHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2V0V2hlcmUoY2hlY2ssIHZhbHVlID0gdHJ1ZSwgY2xlYXIgPSB0cnVlLCBub3RpZnkgPSB0cnVlLCBhbGxvd0NsZWFyID0gdHJ1ZSkge1xuICAgICAgICBpZiAoY2xlYXIgJiYgYWxsb3dDbGVhcilcbiAgICAgICAgICAgIHRoaXMuc2V0QWxsKCF2YWx1ZSwgZmFsc2UpO1xuICAgICAgICBpZiAoYWxsb3dDbGVhcikge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChjaGVjayhpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGksIGNoZWNrKGkpID8gdmFsdWUgOiAhdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICBnZXRSYW5nZShmcm9tLCB0bykge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoZnJvbSwgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ2Zyb20nKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHRvLCAwLCB0aGlzLl9sZW5ndGgsICd0bycpO1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGZyb207IGkgPCB0bzsgKytpKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5nZXRCaXQoaSkpO1xuICAgICAgICByZXR1cm4gQml0QXJyYXkuZnJvbVZhbHVlcyhhcnIpO1xuICAgIH1cbiAgICBnZXRSYW5nZUFzTGlzdChmcm9tLCB0bykge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoZnJvbSwgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ2Zyb20nKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHRvLCAwLCB0aGlzLl9sZW5ndGgsICd0bycpO1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGZyb207IGkgPCB0bzsgKytpKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5nZXRCaXQoaSkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICBzZXRSYW5nZShmcm9tLCB0bywgdmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGZyb20sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICdmcm9tJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZSh0bywgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ3RvJyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4oZnJvbSwgdG8pO1xuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1heChmcm9tLCB0byk7XG4gICAgICAgIC8vdG9kbzogb3B0aW1pemVcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUcnVlKGkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFsc2UoaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gU2V0cyBuIHJhbmRvbWx5IGNob3NlbiBiaXRzIHRvIHZhbHVlLCByZW1haW5pbmcgYml0cyB0byAhdmFsdWUuXG4gICAgc2V0UmFuZG9tKG4sIHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmIChuIDwgMCB8fCBuID4gdGhpcy5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduIG11c3QgYmUgPj0gMCAmJiA8PSBDb3VudCcpO1xuICAgICAgICBpZiAobiA+IHRoaXMuX2xlbmd0aCAvIDIpXG4gICAgICAgICAgICB0aGlzLnNldFJhbmRvbSh0aGlzLl9sZW5ndGggLSBuLCAhdmFsdWUpO1xuICAgICAgICB0aGlzLnNldEFsbCghdmFsdWUpO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47KSB7XG4gICAgICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5fbGVuZ3RoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpKSA9PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCB2YWx1ZSk7XG4gICAgICAgICAgICBrKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIC8vLyBNb2RpZmllcyBjdXJyZW50IGJpdHNldCBieSBwZXJmb3JtaW5nIHRoZSBiaXR3aXNlIEFORCBvcGVyYXRpb24gYWdhaW5zdCB0aGVcbiAgICAvLy8gY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBhbmQodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldICY9IHZhbHVlLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBBTkQgTk9UIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgYW5kTm90KHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBudW0yID0gMDsgbnVtMiA8IGxlbjsgbnVtMisrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtudW0yXSAmPSB+dmFsdWUuX2RhdGFbbnVtMl07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIHRoZSBiaXR3aXNlIE5PVCBBTkQgb3BlcmF0aW9uIG9uIHRoZSBlbGVtZW50cyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICAvLy8gYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBub3RBbmQodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gKH50aGlzLl9kYXRhW2ldKSAmIHZhbHVlLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBJbnZlcnRzIGFsbCBiaXQgdmFsdWVzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIG5vdChub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IH50aGlzLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBPUiBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIG9yKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSB8PSB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgeG9yKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSBePSB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gSW5zZXJ0cyBuIDAtYml0cyBhdCBwb3NpdGlvbiBwb3MsIHJlc2l6aW5nIHNlbGYgYW5kIHNoaWZ0aW5nIGJpdHMgYXBwcm9wcmlhdGVseS5cbiAgICBpbnNlcnRBdChwb3MsIG4sIGZsYWcgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UocG9zLCAwLCB0aGlzLl9sZW5ndGgsICdwb3MnKTtcbiAgICAgICAgaWYgKG4gPT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy9UT0RPOiBvcHRpbWl6ZVxuICAgICAgICAvL3RoZSBtb3N0IHByaW1pdGl2ZSBpbXBsZW1lbnRhdGlvbiwgb3B0aW1pemUgaXQgbGF0ZXIhXG4gICAgICAgIC8vIGJlZ2luVXBkYXRlKCk7XG4gICAgICAgIGNvbnN0IG9sZGxlbmd0aCA9IHRoaXMuX2xlbmd0aDtcbiAgICAgICAgdGhpcy5zZXRMZW5ndGgodGhpcy5fbGVuZ3RoICsgbik7XG4gICAgICAgIC8vaWYgKCFjb250YWlucyghZmxhZykpIHJldHVybjsgLy8gbm90aGluZyB0byBkb1xuICAgICAgICBmb3IgKGxldCBpID0gb2xkbGVuZ3RoIC0gMTsgaSA+PSBwb3M7IGktLSlcbiAgICAgICAgICAgIHRoaXMuc2V0Qml0KGkgKyBuLCB0aGlzLmdldEJpdChpKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSBwb3M7IGkgPCBwb3MgKyBuOyBpKyspXG4gICAgICAgICAgICB0aGlzLnNldEJpdChpLCBmbGFnKTtcbiAgICAgICAgLy8gZW5kVXBkYXRlKCk7XG4gICAgfVxuICAgIC8vLyBEZWxldGVzIG4gYml0cyBiZWdpbm5pbmcgYXQgcG9zaXRpb24gcG9zLCByZXNpemluZyBzZWxmIGFuZCBzaGlmdGluZyByZW1haW5pbmdcbiAgICAvLy8gYml0cyBhcHByb3ByaWF0ZWx5LlxuICAgIHJlbW92ZUF0KHBvcywgbiA9IDEpIHtcbiAgICAgICAgLy8gdGhlIG1vc3QgcHJpbWl0aXZlIGltcGxlbWVudGF0aW9uLCBvcHRpbWl6ZSBpdCBsYXRlciFcbiAgICAgICAgaWYgKG4gPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduIGNhbm5vdCBiZSBuZWdhdGl2ZScpO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UocG9zLCAwLCB0aGlzLl9sZW5ndGggLSBuLCAncG9zJyk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5zKHRydWUpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcG9zOyBpIDwgdGhpcy5fbGVuZ3RoIC0gbjsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Qml0KGksIHRoaXMuZ2V0Qml0KGkgKyBuKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMZW5ndGgodGhpcy5fbGVuZ3RoIC0gbik7XG4gICAgfVxuICAgIHJlbW92ZUJ5TWFzayhtYXNrLCBmbGFnID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IG1hc2subGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdsZW5ndGggIT0gbWFzay5sZW5ndGgnKTtcbiAgICAgICAgaWYgKG1hc2sgPT0gdGhpcykgeyAvLyBubyBuZWVkIHRvIGl0ZXJhdGVcbiAgICAgICAgICAgIHRoaXMuc2V0TGVuZ3RoKG1hc2suY291bnRCaXRzKCFmbGFnKSk7XG4gICAgICAgICAgICB0aGlzLnNldEFsbCghZmxhZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgZHN0SWR4ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IHNyY0lkeCA9IC0xOyAoc3JjSWR4ID0gbWFzay5maW5kTmV4dChzcmNJZHgsICFmbGFnKSkgIT0gLTE7KVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFzdChkc3RJZHgrKywgdGhpcy5nZXRCaXQoc3JjSWR4KSk7XG4gICAgICAgICAgICB0aGlzLl9sZW5ndGggPSBkc3RJZHg7XG4gICAgICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBTaW1pbGFyIHRvIHRoZSBbXSBvcGVyYXRvci5cbiAgICBnZXRCaXQocG9zKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5fZGF0YVtNYXRoLmZsb29yKHBvcyAvIDB4MjApXSAmICgxIDw8IChwb3MgJiAweDFmKSkpICE9IDA7XG4gICAgfVxuICAgIC8vLyBTaW1pbGFyIHRvIHRoZSBbXSBvcGVyYXRvci5cbiAgICBzZXRCaXQocG9zLCBiaXQsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5zZXRGYXN0KHBvcywgYml0KTtcbiAgICAgICAgaWYgKG5vdGlmeSlcbiAgICAgICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICAvLy8gU2V0cyBbaV0tdGggYml0IHRvIFt2YWx1ZV0sIGRvZXMgbm90IGNoZWNrIGJvdW5kcywgZG9lcyBub3QgaW5jcmVtZW50IHZlcnNpb25cbiAgICBzZXRGYXN0KGksIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldIHw9IDEgPDwgKGkgJiAweDFmKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKGkgLyAweDIwKV0gJj0gfigxIDw8IChpICYgMHgxZikpO1xuICAgIH1cbiAgICBzZXRUcnVlKHBvcykge1xuICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IocG9zIC8gMHgyMCldIHw9IDEgPDwgKHBvcyAmIDB4MWYpO1xuICAgIH1cbiAgICBzZXRGYWxzZShwb3MpIHtcbiAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKHBvcyAvIDB4MjApXSAmPSB+KDEgPDwgKHBvcyAmIDB4MWYpKTtcbiAgICB9XG4gICAgdHJ1ZUNvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHModHJ1ZSk7XG4gICAgfVxuICAgIGZhbHNlQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyhmYWxzZSk7XG4gICAgfVxuICAgIC8vLyBDb3VudHMgYml0cyBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgIGNvdW50Qml0cyh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoID09IDApXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQ291bnRWZXJzaW9uICE9IHRoaXMuX3ZlcnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICBmb3IgKDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSB0aGlzLl9kYXRhW2ldOyBrICE9IDA7IGsgPj4+PSA4KSB7IC8vdG9kbzogY2FzdCBkYXRhW2ldIHRvIHVpbnRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCArPSBCaXRBcnJheS5fb25CaXRDb3VudFtrICYgMHhmZl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIGxhc3QgaW50LlxuICAgICAgICAgICAgbGV0IGsgPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nQml0cyA9IHRoaXMuX2xlbmd0aCAmIDB4MWY7XG4gICAgICAgICAgICBpZiAocmVtYWluaW5nQml0cyAhPSAwKSAvKiBpZiByZW1haW5pbmdCaXRzID09IDAsIHRoZSBsYXN0IGludCBpcyBmdWxseSB1c2VkIGFuZCBBTEwgYml0cyBzaG91bGQgYmUgbGVmdCBhcyBpcyAqL1xuICAgICAgICAgICAgICAgIGsgJj0gfigoNDI5NDk2NzI5NSkgPDwgcmVtYWluaW5nQml0cyk7XG4gICAgICAgICAgICBmb3IgKDsgayAhPSAwOyBrID4+Pj0gOClcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnRWZXJzaW9uID0gdGhpcy5fdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHZhbHVlID8gdGhpcy5fc2VsZWN0ZWRDb3VudCA6IHRoaXMuX2xlbmd0aCAtIHRoaXMuX3NlbGVjdGVkQ291bnQpO1xuICAgIH1cbiAgICAvLy8gUmV0dXJucyBhIG51bWJlciBvZiBzZXQgYml0cyB3aGVyZSBhbHNvIFtjaGVja10gaXMgdHJ1ZVxuICAgIGNvdW50V2hlcmUoY2hlY2spIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgIGlmICh0aGlzLnRydWVDb3VudCgpID09IHRoaXMuX2xlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gY2hlY2soaSkgPyAxIDogMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAtMTsgKGkgPSB0aGlzLmZpbmROZXh0KGksIHRydWUpKSAhPSAtMTspXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNoZWNrKGkpID8gMSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIGJpdCBcImFuZFwiIGFuZCBjb3VudHMgYml0cyBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlLCB3aXRob3V0IGJpdHNldCBtb2RpZmljYXRpb24uXG4gICAgYW5kV2l0aENvdW50Qml0cyhzZWNvbmQsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IHRoaXMuX2RhdGFbaV0gJiBzZWNvbmQuX2RhdGFbaV07IGsgIT0gMDsgayA+Pj49IDgpXG4gICAgICAgICAgICAgICAgY291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBsYXN0IGludC5cbiAgICAgICAgbGV0IGsgPSB0aGlzLl9kYXRhW2ldICYgc2Vjb25kLl9kYXRhW2ldO1xuICAgICAgICBjb25zdCByZW1haW5pbmdCaXRzID0gdGhpcy5fbGVuZ3RoICYgMHgxZjtcbiAgICAgICAgaWYgKHJlbWFpbmluZ0JpdHMgIT0gMClcbiAgICAgICAgICAgIGsgJj0gfigoNDI5NDk2NzI5NSkgPDwgcmVtYWluaW5nQml0cyk7XG4gICAgICAgIGZvciAoOyBrICE9IDA7IGsgPj4+PSA4KVxuICAgICAgICAgICAgY291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICByZXR1cm4gKHZhbHVlID8gY291bnQgOiB0aGlzLl9sZW5ndGggLSBjb3VudCk7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnNldExlbmd0aCgwKTtcbiAgICB9XG4gICAgY29udGFpbnModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE5leHQoLTEsIHZhbHVlKSA+PSAwO1xuICAgIH1cbiAgICBnZXQgYWxsVHJ1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKHRydWUpID09IHRoaXMuX2xlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGFsbEZhbHNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHMoZmFsc2UpID09IHRoaXMuX2xlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGFueVRydWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyh0cnVlKSA+IDA7XG4gICAgfVxuICAgIGdldCBhbnlGYWxzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKGZhbHNlKSA+IDA7XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbmV4dCBiaXQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSwgc3RhcnRpbmcgZnJvbSB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLlxuICAgIC8vLyBSZXR1cm5zIC0xLCBpZiB0aGVyZSBhcmUgbm8gc3VjaCBiaXRzLlxuICAgIGZpbmROZXh0KGluZGV4LCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGluZGV4LCAtMSwgdGhpcy5fbGVuZ3RoLCAnaW5kZXgnKTtcbiAgICAgICAgaWYgKGluZGV4ID49IHRoaXMuX2xlbmd0aCAtIDEpXG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gMCA6IGluZGV4ICsgMTsgLy8gc2tpcCBzdGFydFxuICAgICAgICBsZXQgdW51c2VkQml0cyA9IGluZGV4ICYgMHgxZjtcbiAgICAgICAgY29uc3QgbnVtSW50cyA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBpID0gTWF0aC5mbG9vcihpbmRleCAvIDMyKTsgaSA8IG51bUludHM7IGkrKykge1xuICAgICAgICAgICAgbGV0IGsgPSAodmFsdWUgPyB0aGlzLl9kYXRhW2ldIDogfnRoaXMuX2RhdGFbaV0pOyAvLyB1aW50IGNhc3RcbiAgICAgICAgICAgIGlmICh1bnVzZWRCaXRzICE9IDApIHtcbiAgICAgICAgICAgICAgICBrICY9ICgoMHhmZmZmZmZmZiA8PCB1bnVzZWRCaXRzKSAmIDB4ZmZmZmZmZmYpO1xuICAgICAgICAgICAgICAgIHVudXNlZEJpdHMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXZhbHVlICYmIGsgPT0gLTQyOTQ5NjcyOTYpIC8qIGxvb2tpbmcgZm9yIGZhbHNlLCBhbGwgYml0cyBhcmUgc2V0ICovIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBrICE9IDA7IGogKz0gOCwgayA+Pj49IDgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gQml0QXJyYXkuX2ZpcnN0T25CaXRbayAmIDB4ZmZdO1xuICAgICAgICAgICAgICAgIGlmIChwID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwICsgKGkgKiAzMikgKyBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fbGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgLy8vIEZpbmRzIHByZXZpb3VzIGJpdCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBiaXRzZXQuXG4gICAgZmluZFByZXYoaW5kZXgsIHZhbHVlID0gdHJ1ZSkge1xuICAgICAgICBpZiAoaW5kZXggPT0gMClcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGluZGV4LCAtMSwgdGhpcy5fbGVuZ3RoLCAnaW5kZXgnKTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyB0aGlzLl9sZW5ndGggLSAxIDogaW5kZXggLSAxOyAvLyBza2lwIHN0YXJ0XG4gICAgICAgIGNvbnN0IGxhc3RJbnRJZHggPSBNYXRoLmZsb29yKGluZGV4IC8gMHgyMCk7XG4gICAgICAgIGxldCByZW1haW5pbmdCaXRzID0gKGluZGV4ICsgMSkgJiAweDFmO1xuICAgICAgICBmb3IgKGxldCBpID0gbGFzdEludElkeDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBrID0gKHZhbHVlID8gdGhpcy5fZGF0YVtpXSA6IH50aGlzLl9kYXRhW2ldKTsgLy8gY2FzdFxuICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0JpdHMgIT0gMCkge1xuICAgICAgICAgICAgICAgIGsgJj0gfigoNDI5NDk2NzI5NSkgPDwgcmVtYWluaW5nQml0cyk7XG4gICAgICAgICAgICAgICAgcmVtYWluaW5nQml0cyA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMjQ7IGsgIT0gMDsgaiAtPSA4LCBrIDw8PSA4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IEJpdEFycmF5Ll9sYXN0T25CaXRbayA+Pj4gMHgxOF07XG4gICAgICAgICAgICAgICAgaWYgKHAgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAgKyAoaSAqIDMyKSArIGo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbkJpdEFycmF5Ll9vbkJpdENvdW50ID0gSW50OEFycmF5LmZyb20oW1xuICAgIDAsIDEsIDEsIDIsIDEsIDIsIDIsIDMsIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LFxuICAgIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsIDUsIDYsIDYsIDcsIDYsIDcsIDcsIDhcbl0pO1xuQml0QXJyYXkuX2ZpcnN0T25CaXQgPSBJbnQ4QXJyYXkuZnJvbShbXG4gICAgLTEsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNiwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA3LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDYsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDBcbl0pO1xuQml0QXJyYXkuX2xhc3RPbkJpdCA9IEludDhBcnJheS5mcm9tKFtcbiAgICAtMSwgMCwgMSwgMSwgMiwgMiwgMiwgMiwgMywgMywgMywgMywgMywgMywgMywgMyxcbiAgICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgN1xuXSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZbWwwTFdGeWNtRjVMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVltbDBMV0Z5Y21GNUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEUxQlFVMHNRMEZCUXl4UFFVRlBMRTlCUVU4c1VVRkJVVHRKUVc5Rk0wSXNXVUZCV1N4SFFVRjVRaXhGUVVGRkxHVkJRV2xETEV0QlFVczdVVUZhY2tVc1dVRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5hTEdGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRZaXhwUWtGQldTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFRaXh0UWtGQll5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnVRaXd3UWtGQmNVSXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNelFpdzBRa0ZCZFVJc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4dFFrRkJZeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU53UWl3d1FrRkJjVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnVReXh4UWtGQlowSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkxka0lzU1VGQlNTeFBRVUZQTEVkQlFVY3NTMEZCU3l4UlFVRlJMRVZCUVVVN1dVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUTI1Q0xFMUJRVTBzU1VGQlNTeEhRVUZITEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRE5VTXNTVUZCU1N4WlFVRlpMRVZCUVVVN1owSkJRMmhDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSVHR2UWtGRGJFTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEyaENPMWxCUTBRc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdXVUZEYkVJc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTTdVMEZEZGtJN1lVRkJUU3hKUVVGSkxFZEJRVWNzV1VGQldTeFhRVUZYTEVWQlFVVTdXVUZEY2tNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZyUWl4RFFVRkRPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NXVUZCYzBJc1EwRkJRenRUUVVOMlF6dGhRVUZOTzFsQlEwd3NUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMU5CUTNoRE8wbEJRMGdzUTBGQlF6dEpRVWRFTEZWQlFWVXNTMEZCU3l4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJXNURMRlZCUVZVc1EwRkJReXhIUVVGWExFVkJRVVVzVDBGQlpUdFJRVU55UXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8xbEJRVVVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRTlCUVU4c09FSkJRVGhDTEVOQlFVTXNRMEZCUXp0SlFVTjZSU3hEUVVGRE8wbEJSVVFzWVVGQllTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1IwRkJWeXhGUVVGRkxFOUJRV1U3VVVGRGNFVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRhRU1zVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4WlFVRlpMRTlCUVU4c1MwRkJTeXhMUVVGTExHMUNRVUZ0UWl4SFFVRkhMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU53Uml4RFFVRkRPMGxCUlVRc1NVRkJTU3hEUVVGRExFZEJRV2RDTEVWQlFVVXNSMEZCWjBJc1JVRkJSU3hMUVVGaE8xRkJRM0JFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXpWQ0xFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGNFSXNRMEZCUXp0SlFVVkVMRkZCUVZFc1EwRkJReXhMUVVGbE8xRkJRM1JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR6dFpRVU12UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhQUVVGUExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOMFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEVsQlFVa3NUVUZCVFR0UlFVTlNMRTlCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dEpRVU4wUWl4RFFVRkRPMGxCUlVRc1NVRkJTU3hOUVVGTk8xRkJRMUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGRlJDeEpRVUZKTEUxQlFVMHNRMEZCUXl4SlFVRnBRanRSUVVNeFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEVsQlFVa3NUMEZCVHp0UlFVTlVMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF6dEpRVU4yUWl4RFFVRkRPMGxCUlVRc1NVRkJTU3hQUVVGUExFTkJRVU1zUzBGQllUdFJRVU4yUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFdEJRVXNzUTBGQlF6dEpRVU40UWl4RFFVRkRPMGxCUlVRc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrN1VVRkROVUlzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeEpRVUZKTEZsQlFWazdVVUZEWkN4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEyeEVMRU5CUVVNN1NVRkZSQ3hKUVVGSkxHRkJRV0U3VVVGRFppeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRhRVlzUTBGQlF6dEpRVVZFTEVsQlFVa3NZVUZCWVN4RFFVRkRMRWxCUVZrN1VVRkROVUlzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRNMElzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRUxFbEJRVWtzU1VGQlNUdFJRVU5PTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxGTkJRVk1zUTBGQlF5eExRVUZoTzFGQlEzSkNMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU03V1VGRFdDeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZGY0VNc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVODdXVUZCUlN4UFFVRlBPMUZCUTJ4RExFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlR0WlFVTndSeXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRaUVVNM1F5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRaUVVOd1J5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTlCUVU4c1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRGVFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETzJkQ1FVTjZRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRmFrWXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03VTBGRGNFUTdVVUZEUkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQll5eEZRVUZGTEVsQlFXTTdVVUZETTBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBPMWxCUXpsQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFbEJRVWtzUTBGQlF5eFBRVUZQTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRmVrVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVNMVFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUld4Q0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRPVUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmFFUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVThzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRmpPMUZCUTNwRExFOUJRVThzU1VGQlNTeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemRFTEVOQlFVTTdTVUZGUkN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRWE5DTzFGQlEzUkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVONlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOeVF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMWdzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRMmhGTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzYzBkQlFYTkhPMGxCUTNSSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCWVN4RlFVRkZMRWxCUVdNN1VVRkRNVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkROVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTVVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYkVJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNhMFZCUVd0Rk8wbEJRMnhGTEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJVenRSUVVONlFpeFBRVUZQTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOMlJTeERRVUZETzBsQlJVUXNORVZCUVRSRk8wbEJRelZGTEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1QwRkJaU3hGUVVGRkxFdEJRV3RDTzFGQlEzaEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTI1RExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMSGxEUVVGNVF6dEpRVU42UXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRV2xDTzFGQlEyaERMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEZWtJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMjVETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNoRUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRZaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGWWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkRia0lzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVFUXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRMjVETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRmRrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVOWU8xRkJSVVFzU1VGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNN1dVRkRha0lzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETzFGQlJYUkVMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETzFsQlEycENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVWd1JDeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJRenRaUVVOcVFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkZla01zU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc1VVRkJVVHRSUVVOT0xFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4VlFVRlZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTTNSQ3hEUVVGRE8wbEJSVVFzTkVOQlFUUkRPMGxCUXpWRExFMUJRVTBzUTBGQlF5eExRVUZsTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hKUVVGSkxFdEJRVXM3V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVTXZRaXhKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTzFsQlFVVXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUE8xbEJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZEYUVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVWdVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU0xUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlFVVXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkZjRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNdlJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMjVETEU5QlFVOHNTMEZCU3l4RFFVRkRPMU5CUTJoQ08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2RVSkJRWFZDTzBsQlEzWkNMRXRCUVVzN1VVRkRTQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGVFTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1IwRkJSeXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExHMURRVUZ0UXp0UlFVTnNSaXhSUVVGUkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkRhRU1zVVVGQlVTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRMnhETEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDdzBRa0ZCTkVJN1NVRkROVUlzU1VGQlNTeERRVUZETEVsQlFXTXNSVUZCUlN4TlFVRmxPMUZCUTJ4RExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSVEZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0pETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRFZDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRGFFVTdVVUZGUkN4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRPVUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2NVSkJRWEZDTzBsQlEzSkNMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU5zUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZkRUlzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaERMRU5CUVVNN1NVRkZSQ3h0UlVGQmJVVTdTVUZEYmtVc1RVRkJUU3hEUVVGRExFdEJRV01zUlVGQlJTeE5RVUZOTEVkQlFVY3NTMEZCU3p0UlFVTnVReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETjBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVVTVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEdkQ1FVRm5RanRaUVVNMVF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVVY0UWl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZFTEN0RFFVRXJRenRKUVVNdlF5dzRRMEZCT0VNN1NVRkRPVU1zZDBSQlFYZEVPMGxCUTNoRUxGVkJRVlVzUTBGQlF5eFBRVUZ6UWl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFVkJRVVVzUzBGQlN5eEhRVUZITEVsQlFVa3NSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVNeFJTeEpRVUZKTEV0QlFVczdXVUZEVUN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkQ0xFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NUMEZCVHp0WlFVTnlRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWNlFpeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYUVNc1EwRkJRenRKUVVWRUxGVkJRVlVzUTBGQlF5eFBRVUZ6UWl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSk8xRkJRemRETEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1QwRkJUeXhGUVVGRk8xbEJRek5DTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTzJkQ1FVTTNRaXhQUVVGUExFdEJRVXNzUTBGQlF6dFRRVU5vUWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEZGQlFWRXNRMEZCUXl4UFFVRnpRaXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTzFGQlF6TkRMRXRCUVVzc1RVRkJUU3hMUVVGTExFbEJRVWtzVDBGQlR5eEZRVUZGTzFsQlF6TkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxPMmRDUVVNM1FpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMUZCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRFppeERRVUZETzBsQlJVUXNVVUZCVVN4RFFVRkRMRXRCUVdVc1JVRkJSU3hMUVVGTExFZEJRVWNzU1VGQlNTeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpMRVZCUVVVc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeFZRVUZWTEVkQlFVY3NTVUZCU1R0UlFVTndSaXhKUVVGSkxFdEJRVXNzU1VGQlNTeFZRVUZWTzFsQlEzSkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZOMElzU1VGQlNTeFZRVUZWTEVWQlFVVTdXVUZEWkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEY2tNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTldMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMkZCUXpGQ08xTkJRMFk3WVVGQlRUdFpRVU5NTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGJrTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1UwRkRPVU03VVVGRlJDeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYUVNc1EwRkJRenRKUVVWRUxGRkJRVkVzUTBGQlF5eEpRVUZaTEVWQlFVVXNSVUZCVlR0UlFVTXZRaXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRPVU1zVFVGQlRTeEhRVUZITEVkQlFXMUNMRVZCUVVVc1EwRkJRenRSUVVNdlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTTFRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UWl4UFFVRlBMRkZCUVZFc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYkVNc1EwRkJRenRKUVVWRUxHTkJRV01zUTBGQlF5eEpRVUZaTEVWQlFVVXNSVUZCVlR0UlFVTnlReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRPVU1zVFVGQlRTeEhRVUZITEVkQlFXTXNSVUZCUlN4RFFVRkRPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETzFsQlF6VkNMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5DTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVkRUxGRkJRVkVzUTBGQlF5eEpRVUZaTEVWQlFVVXNSVUZCVlN4RlFVRkZMRXRCUVdNc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU01UkN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUld4RUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEycERMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSUzlDTEdkQ1FVRm5RanRSUVVOb1FpeEpRVUZKTEV0QlFVc3NSVUZCUlR0WlFVTlVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU12UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEyNUNPMkZCUVUwN1dVRkRUQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZETDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTndRanRSUVVWRUxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU01UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDeHRSVUZCYlVVN1NVRkRia1VzVTBGQlV5eERRVUZETEVOQlFWTXNSVUZCUlN4TFFVRmpMRVZCUVVVc1RVRkJUU3hIUVVGSExFbEJRVWs3VVVGRGFFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHp0WlFVTXpRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERSQ1FVRTBRaXhEUVVGRExFTkJRVU03VVVGRmFFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVVV6UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSenRaUVVOMFFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGJrUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVczdaMEpCUVVVc1UwRkJVenRaUVVOMFF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOTU8xRkJSVVFzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaERMRU5CUVVNN1NVRkZSQ3dyUlVGQkswVTdTVUZETDBVc2JVUkJRVzFFTzBsQlEyNUVMRWRCUVVjc1EwRkJReXhMUVVGbExFVkJRVVVzVFVGQlRTeEhRVUZITEVsQlFVazdVVUZEYUVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBPMWxCUXk5Q0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVVV6UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYkVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRemxDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxHZEdRVUZuUmp0SlFVTm9SaXdyUkVGQkswUTdTVUZETDBRc1RVRkJUU3hEUVVGRExFdEJRV1VzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4N1dVRkRMMElzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzFGQlJUTkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVU3V1VGRGJrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRmVrTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMR2RHUVVGblJqdEpRVU5vUml3clJFRkJLMFE3U1VGREwwUXNUVUZCVFN4RFFVRkRMRXRCUVdVc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU51UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdXVUZETDBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8xRkJSVE5ETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNUVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3huUkVGQlowUTdTVUZEYUVRc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTzFGQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYWtNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRemxDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxESkZRVUV5UlR0SlFVTXpSU3dyUkVGQkswUTdTVUZETDBRc1JVRkJSU3hEUVVGRExFdEJRV1VzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTXZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4N1dVRkRMMElzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzFGQlJUTkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVnNReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRE9VSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzY1VaQlFYRkdPMGxCUTNKR0xDdEVRVUVyUkR0SlFVTXZSQ3hIUVVGSExFTkJRVU1zUzBGQlpTeEZRVUZGTEUxQlFVMHNSMEZCUnl4SlFVRkpPMUZCUTJoRExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUenRaUVVNdlFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZGTTBNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRia1FzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUld4RExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU01UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDeHZSa0ZCYjBZN1NVRkRjRVlzVVVGQlVTeERRVUZETEVkQlFWY3NSVUZCUlN4RFFVRlRMRVZCUVVVc1NVRkJTU3hIUVVGSExFdEJRVXM3VVVGRE0wTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRmFFUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVGRkxFOUJRVTg3VVVGRmJrSXNaMEpCUVdkQ08xRkJRMmhDTEhWRVFVRjFSRHRSUVVWMlJDeHBRa0ZCYVVJN1VVRkRha0lzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVNdlFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYWtNc1owUkJRV2RFTzFGQlJXaEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU4yUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYSkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5vUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVjJRaXhsUVVGbE8wbEJRMnBDTEVOQlFVTTdTVUZGUkN4clJrRkJhMFk3U1VGRGJFWXNkVUpCUVhWQ08wbEJRM1pDTEZGQlFWRXNRMEZCUXl4SFFVRlhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRGVrSXNkMFJCUVhkRU8xRkJRM2hFTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNN1dVRkRVQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhOQ1FVRnpRaXhEUVVGRExFTkJRVU03VVVGRk1VTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjJRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1JETzFGQlJVUXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTI1RExFTkJRVU03U1VGRlJDeFpRVUZaTEVOQlFVTXNTVUZCWXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSk8xRkJRM1JETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRUdFpRVU0zUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkZNME1zU1VGQlNTeEpRVUZKTEVsQlFVa3NTVUZCU1N4RlFVRkZMRVZCUVVVc2NVSkJRWEZDTzFsQlEzWkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRFTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEzQkNPMkZCUVUwN1dVRkRUQ3hKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZGWml4TFFVRkxMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlEycEZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUbERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFRRVU5xUWp0UlFVVkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEN0Q1FVRXJRanRKUVVNdlFpeE5RVUZOTEVOQlFVTXNSMEZCVnp0UlFVTm9RaXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGVrVXNRMEZCUXp0SlFVVkVMQ3RDUVVFclFqdEpRVU12UWl4TlFVRk5MRU5CUVVNc1IwRkJWeXhGUVVGRkxFZEJRVmtzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTTNReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeEpRVUZKTEUxQlFVMDdXVUZEVWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03TzFsQlJXaENMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEpRVU53UWl4RFFVRkRPMGxCUlVRc2FVWkJRV2xHTzBsQlEycEdMRTlCUVU4c1EwRkJReXhEUVVGVExFVkJRVVVzUzBGQll6dFJRVU12UWl4SlFVRkpMRXRCUVVzN1dVRkRVQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZET3p0WlFVVndSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORUxFTkJRVU03U1VGRlJDeFBRVUZQTEVOQlFVTXNSMEZCVnp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6RkVMRU5CUVVNN1NVRkZSQ3hSUVVGUkxFTkJRVU1zUjBGQlZ6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6ZEVMRU5CUVVNN1NVRkZSQ3hUUVVGVE8xRkJRMUFzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemxDTEVOQlFVTTdTVUZGUkN4VlFVRlZPMUZCUTFJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUXk5Q0xFTkJRVU03U1VGRlJDeDFRMEZCZFVNN1NVRkRka01zVTBGQlV5eERRVUZETEV0QlFXTTdVVUZEZEVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWb1F5eEpRVUZKTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMWxCUXk5RExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1dVRkRPVUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTFZc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGRrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRFJDUVVFMFFqdHZRa0ZETVVVc1NVRkJTU3hEUVVGRExHTkJRV01zU1VGQlNTeFJRVUZSTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVWRUxHZENRVUZuUWp0WlFVTm9RaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM1JDTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFsQlF6RkRMRWxCUVVrc1lVRkJZU3hKUVVGSkxFTkJRVU1zUlVGQlJTeDVSa0ZCZVVZN1owSkJReTlITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeGhRVUZoTEVOQlFVTXNRMEZCUXp0WlFVVjRReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1owSkJRM0pDTEVsQlFVa3NRMEZCUXl4alFVRmpMRWxCUVVrc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkZlRVFzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdVMEZETlVNN1VVRkZSQ3hQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dEpRVU0xUlN4RFFVRkRPMGxCUlVRc01rUkJRVEpFTzBsQlF6TkVMRlZCUVZVc1EwRkJReXhMUVVGbE8xRkJRM2hDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVObUxFbEJRVWtzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRGNFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU51UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU01UWp0aFFVRk5PMWxCUTB3c1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtRc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZET1VJN1VVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUlVRc01rWkJRVEpHTzBsQlF6TkdMR2RDUVVGblFpeERRVUZETEUxQlFXZENMRVZCUVVVc1MwRkJZenRSUVVNdlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1EwRkJRenRaUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlJXaERMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5rTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMVlzVDBGQlR5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTTFSQ3hMUVVGTExFbEJRVWtzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRE0wTTdVVUZGUkN4blFrRkJaMEk3VVVGRGFFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaERMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUXpGRExFbEJRVWtzWVVGQllTeEpRVUZKTEVOQlFVTTdXVUZEY0VJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRM2hETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU55UWl4TFFVRkxMRWxCUVVrc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZNVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZGUkN4TFFVRkxPMUZCUTBnc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJSVVFzVVVGQlVTeERRVUZETEV0QlFXTTdVVUZEY2tJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU4yUXl4RFFVRkRPMGxCUlVRc1NVRkJTU3hQUVVGUE8xRkJRMVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdTVUZET1VNc1EwRkJRenRKUVVWRUxFbEJRVWtzVVVGQlVUdFJRVU5XTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMGxCUXk5RExFTkJRVU03U1VGRlJDeEpRVUZKTEU5QlFVODdVVUZEVkN4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGRlJDeEpRVUZKTEZGQlFWRTdVVUZEVml4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTI1RExFTkJRVU03U1VGRlJDeHpSMEZCYzBjN1NVRkRkRWNzTUVOQlFUQkRPMGxCUXpGRExGRkJRVkVzUTBGQlF5eExRVUZoTEVWQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrN1VVRkRiRU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWeVJDeEpRVUZKTEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU03V1VGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhoUVVGaE8xRkJRMmhFTEVsQlFVa3NWVUZCVlN4SFFVRkhMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRE9VSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dFJRVVZzUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRja1FzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldUdFpRVU01UkN4SlFVRkpMRlZCUVZVc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEyNUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVlVGQlZTeEpRVUZKTEZWQlFWVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRE8yZENRVU12UXl4VlFVRlZMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMmhDTzJsQ1FVRk5MRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMSGxEUVVGNVF5eERRVUZCTzJkQ1FVTTVSU3hUUVVGVE8yRkJRMVk3V1VGRlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdG5Ra0ZEZUVNc1RVRkJUU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlEzcERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdHZRa0ZEVml4TFFVRkxMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVTg3ZDBKQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGNrTXNUMEZCVHl4TFFVRkxMRU5CUVVNN2FVSkJRMlE3WVVGRFJqdFRRVU5HTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlJDdzBSRUZCTkVRN1NVRkROVVFzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4TFFVRkxMRWRCUVVjc1NVRkJTVHRSUVVOc1F5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RFFVRkRPMWxCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlJYSkVMRXRCUVVzc1IwRkJSeXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHRkJRV0U3VVVGRkwwUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkROVU1zU1VGQlNTeGhRVUZoTEVkQlFVY3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlJYWkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGNFTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHp0WlFVTjZSQ3hKUVVGSkxHRkJRV0VzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTNSQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hoUVVGaExFTkJRVU1zUTBGQlF6dG5Ra0ZEZEVNc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU51UWp0WlFVTkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMmRDUVVONFF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRNVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0dlFrRkRVaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRE0wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFdpeERRVUZET3p0QlFYSjFRazBzYjBKQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMnhETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZOVU1zYjBKQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMnhETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNdlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVVMVF5eHRRa0ZCVlN4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGFrTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJReTlETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPME5CUVVNc1EwRkJReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2laWGh3YjNKMElHUmxabUYxYkhRZ1kyeGhjM01nUW1sMFFYSnlZWGtnZTF4dUlDQnpkR0YwYVdNZ1gyOXVRbWwwUTI5MWJuUWdQU0JKYm5RNFFYSnlZWGt1Wm5KdmJTaGJYRzRnSUNBZ01Dd2dNU3dnTVN3Z01pd2dNU3dnTWl3Z01pd2dNeXdnTVN3Z01pd2dNaXdnTXl3Z01pd2dNeXdnTXl3Z05DeGNiaUFnSUNBeExDQXlMQ0F5TENBekxDQXlMQ0F6TENBekxDQTBMQ0F5TENBekxDQXpMQ0EwTENBekxDQTBMQ0EwTENBMUxGeHVJQ0FnSURFc0lESXNJRElzSURNc0lESXNJRE1zSURNc0lEUXNJRElzSURNc0lETXNJRFFzSURNc0lEUXNJRFFzSURVc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F4TENBeUxDQXlMQ0F6TENBeUxDQXpMQ0F6TENBMExDQXlMQ0F6TENBekxDQTBMQ0F6TENBMExDQTBMQ0ExTEZ4dUlDQWdJRElzSURNc0lETXNJRFFzSURNc0lEUXNJRFFzSURVc0lETXNJRFFzSURRc0lEVXNJRFFzSURVc0lEVXNJRFlzWEc0Z0lDQWdNaXdnTXl3Z015d2dOQ3dnTXl3Z05Dd2dOQ3dnTlN3Z015d2dOQ3dnTkN3Z05Td2dOQ3dnTlN3Z05Td2dOaXhjYmlBZ0lDQXpMQ0EwTENBMExDQTFMQ0EwTENBMUxDQTFMQ0EyTENBMExDQTFMQ0ExTENBMkxDQTFMQ0EyTENBMkxDQTNMRnh1SUNBZ0lERXNJRElzSURJc0lETXNJRElzSURNc0lETXNJRFFzSURJc0lETXNJRE1zSURRc0lETXNJRFFzSURRc0lEVXNYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBeUxDQXpMQ0F6TENBMExDQXpMQ0EwTENBMExDQTFMQ0F6TENBMExDQTBMQ0ExTENBMExDQTFMQ0ExTENBMkxGeHVJQ0FnSURNc0lEUXNJRFFzSURVc0lEUXNJRFVzSURVc0lEWXNJRFFzSURVc0lEVXNJRFlzSURVc0lEWXNJRFlzSURjc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F6TENBMExDQTBMQ0ExTENBMExDQTFMQ0ExTENBMkxDQTBMQ0ExTENBMUxDQTJMQ0ExTENBMkxDQTJMQ0EzTEZ4dUlDQWdJRE1zSURRc0lEUXNJRFVzSURRc0lEVXNJRFVzSURZc0lEUXNJRFVzSURVc0lEWXNJRFVzSURZc0lEWXNJRGNzWEc0Z0lDQWdOQ3dnTlN3Z05Td2dOaXdnTlN3Z05pd2dOaXdnTnl3Z05Td2dOaXdnTml3Z055d2dOaXdnTnl3Z055d2dPRjBwTzF4dVhHNGdJSE4wWVhScFl5QmZabWx5YzNSUGJrSnBkQ0E5SUVsdWREaEJjbkpoZVM1bWNtOXRLRnRjYmlBZ0lDQXRNU3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTBMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEVXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Dd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMkxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURRc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTlN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0EwTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRGNzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOQ3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTFMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEUXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05pd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMExDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURVc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTkN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUYwcE8xeHVYRzRnSUhOMFlYUnBZeUJmYkdGemRFOXVRbWwwSUQwZ1NXNTBPRUZ5Y21GNUxtWnliMjBvVzF4dUlDQWdJQzB4TENBd0xDQXhMQ0F4TENBeUxDQXlMQ0F5TENBeUxDQXpMQ0F6TENBekxDQXpMQ0F6TENBekxDQXpMQ0F6TEZ4dUlDQWdJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzWEc0Z0lDQWdOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3hjYmlBZ0lDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMRnh1SUNBZ0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNYRzRnSUNBZ05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05peGNiaUFnSUNBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxGeHVJQ0FnSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc1hHNGdJQ0FnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl4Y2JpQWdJQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTEZ4dUlDQWdJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzWEc0Z0lDQWdOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXhjYmlBZ0lDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMRnh1SUNBZ0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NYRzRnSUNBZ055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055eGNiaUFnSUNBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM1hTazdYRzVjYmlBZ2NISnBkbUYwWlNCZlpHRjBZVG9nVldsdWRETXlRWEp5WVhrN1hHNGdJSEJ5YVhaaGRHVWdYMnhsYm1kMGFDQTlJREE3WEc0Z0lIQnlhWFpoZEdVZ1gzWmxjbk5wYjI0Z1BTQXdPMXh1SUNCd2NtbDJZWFJsSUY5MWNHUmhkR1ZNWlhabGJDQTlJREE3WEc0Z0lIQnlhWFpoZEdVZ1gzTmxiR1ZqZEdWa1EyOTFiblFnUFNBd08xeHVJQ0J3Y21sMllYUmxJRjl6Wld4bFkzUmxaRU52ZFc1MFZtVnljMmx2YmlBOUlDMHhPMXh1SUNCd2NtbDJZWFJsSUY5elpXeGxZM1JsWkVsdVpHVjRaWE5XWlhKemFXOXVJRDBnTFRFN1hHNGdJSEJ5YVhaaGRHVWdYM1psY25OcGIyNWxaRTVoYldVZ1BTQW5KenRjYmlBZ2NISnBkbUYwWlNCZmRtVnljMmx2Ym1Wa1RtRnRaVlpsY25OcGIyNGdQU0F0TVR0Y2JpQWdVMGhTU1U1TFgxUklVa1ZUU0U5TVJDQTlJREI0TVRBd08xeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtHUmhkR0U2SUZWcGJuUXpNa0Z5Y21GNUxDQnNaVzVuZEdnNklHNTFiV0psY2lsY2JpQWdZMjl1YzNSeWRXTjBiM0lvYkdWdVozUm9PaUJ1ZFcxaVpYSXNJR1JsWm1GMWJIUldZV3gxWlQ4NklHSnZiMnhsWVc0cFhHNGdJR052Ym5OMGNuVmpkRzl5S0dGeVp6b2diblZ0WW1WeUlId2dWV2x1ZERNeVFYSnlZWGtzSUdSbFptRjFiSFJXWVd4MVpUb2dZbTl2YkdWaGJpQjhJRzUxYldKbGNpQTlJR1poYkhObEtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmhjbWNnUFQwOUlDZHVkVzFpWlhJbktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCc1pXNW5kR2dnUFNCaGNtYzdYRzRnSUNBZ0lDQmpiMjV6ZENCaWRXWm1JRDBnUW1sMFFYSnlZWGt1WDJOeVpXRjBaVUoxWm1abGNpaHNaVzVuZEdncE8xeHVJQ0FnSUNBZ2FXWWdLR1JsWm1GMWJIUldZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR0oxWm1ZdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQWdJQ0FnWW5WbVpsdHBYU0E5SUMweE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlTQTlJR0oxWm1ZN1hHNGdJQ0FnSUNCMGFHbHpMbDlzWlc1bmRHZ2dQU0JzWlc1bmRHZzdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGhjbWNnYVc1emRHRnVZMlZ2WmlCVmFXNTBNekpCY25KaGVTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZU0E5SUdGeVp5QmhjeUJWYVc1ME16SkJjbkpoZVR0Y2JpQWdJQ0FnSUhSb2FYTXVYMnhsYm1kMGFDQTlJR1JsWm1GMWJIUldZV3gxWlNCaGN5QnVkVzFpWlhJN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25TVzUyWVd4cFpDQmpiMjV6ZEhKMVkzUnZjaWNwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzVjYmlBZ1oyVjBVbUYzUkdGMFlTZ3BJSHNnY21WMGRYSnVJSFJvYVhNdVgyUmhkR0U3SUgxY2JseHVJQ0JoYzNOMWNtVkhiMlY2S0c1MWJUb2diblZ0WW1WeUxDQmhjbWRPWVcxbE9pQlRkSEpwYm1jcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb2JuVnRJRHdnTUNrZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dBa2UyRnlaMDVoYldWOUlITm9iM1ZzWkNCaVpTQm5jbVZoZEdWeUlIUm9ZVzRnZW1WeWIyQXBPMXh1SUNCOVhHNWNiaUFnWVhOemRYSmxTVzVTWVc1blpTaDJZV3gxWlRvZ2JuVnRZbVZ5TENCdGFXNDZJRzUxYldKbGNpd2diV0Y0T2lCdWRXMWlaWElzSUdGeVowNWhiV1U2SUZOMGNtbHVaeWs2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2dvZG1Gc2RXVWdQQ0J0YVc0cElIeDhJQ2gyWVd4MVpTQStJRzFoZUNrcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVGeVozVnRaVzUwSUNSN1lYSm5UbUZ0WlgwZ0tDUjdkbUZzZFdWOUtTQnZkWFFnYjJZZ2NtRnVaMlVnS0NSN2JXbHVmU3dnSkh0dFlYaDlLV0FwTzF4dUlDQjlYRzVjYmlBZ1kyOXdlU2h6Y21NNklGVnBiblF6TWtGeWNtRjVMQ0JrYzNRNklGVnBiblF6TWtGeWNtRjVMQ0JqYjNWdWREb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCamIzVnVkRHNnYVNzcktWeHVJQ0FnSUNBZ1pITjBXMmxkSUQwZ2MzSmpXMmxkTzF4dUlDQjlYRzVjYmlBZ1kyOXdlVVp5YjIwb2IzUm9aWEk2SUVKcGRFRnljbUY1S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0J2ZEdobGNpNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCTVpXNW5kR2h6SUdScFptWmxjaUFvSkh0MGFHbHpMbDlzWlc1bmRHaDlJQ0U5SUNSN2IzUm9aWEl1WDJ4bGJtZDBhSDBwWUNrN1hHNGdJQ0FnZEdocGN5NWpiM0I1S0c5MGFHVnlMbDlrWVhSaExDQjBhR2x6TGw5a1lYUmhMQ0IwYUdsekxteGxibWQwYUVsdVNXNTBjeWs3WEc0Z0lDQWdkR2hwY3k1ZmRtVnljMmx2Ymlzck8xeHVJQ0I5WEc1Y2JpQWdaMlYwSUd4bGJtZDBhQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmJHVnVaM1JvTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR0oxWm1abGNpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWkdGMFlUdGNiaUFnZlZ4dVhHNGdJSE5sZENCaWRXWm1aWElvWkdGMFlUb2dWV2x1ZERNeVFYSnlZWGtwSUh0Y2JpQWdJQ0IwYUdsekxsOWtZWFJoSUQwZ1pHRjBZVHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1S3lzN1hHNGdJSDFjYmx4dUlDQm5aWFFnZG1WeWMybHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmRtVnljMmx2Ymp0Y2JpQWdmVnh1WEc0Z0lITmxkQ0IyWlhKemFXOXVLSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0JwYm1OeVpXMWxiblJXWlhKemFXOXVLRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUgxY2JseHVJQ0JuWlhRZ2JHVnVaM1JvU1c1SmJuUnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQk5ZWFJvTG1ac2IyOXlLQ2gwYUdsekxsOXNaVzVuZEdnZ0t5QXdlREZtS1NBdklEQjRNakFwTzF4dUlDQjlYRzVjYmlBZ1oyVjBJSFpsY25OcGIyNWxaRTVoYldVb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM1psY25OcGIyNGdQVDBnZEdocGN5NWZkbVZ5YzJsdmJtVmtUbUZ0WlZabGNuTnBiMjRnUHlCMGFHbHpMbDkyWlhKemFXOXVaV1JPWVcxbElEb2dKeWM3WEc0Z0lIMWNibHh1SUNCelpYUWdkbVZ5YzJsdmJtVmtUbUZ0WlNodVlXMWxPaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1WldST1lXMWxJRDBnYm1GdFpUdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVaV1JPWVcxbFZtVnljMmx2YmlBOUlIUm9hWE11WDNabGNuTnBiMjQ3WEc0Z0lIMWNibHh1SUNCblpYUWdjMlZzWmlncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJSE5sZEV4bGJtZDBhQ2gyWVd4MVpUb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUR3Z01DbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmMyaHZkV3hrSUdKbElENDlJREFuS1R0Y2JseHVJQ0FnSUdsbUlDaDJZV3gxWlNBOVBTQjBhR2x6TGw5c1pXNW5kR2dwSUhKbGRIVnlianRjYmlBZ0lDQmpiMjV6ZENCdVNXNTBjMDVsWldSbFpDQTlJRTFoZEdndVpteHZiM0lvS0haaGJIVmxJQ3NnTUhneFppa2dMeUF3ZURJd0tUdGNiaUFnSUNCcFppQW9LRzVKYm5SelRtVmxaR1ZrSUQ0Z2RHaHBjeTVmWkdGMFlTNXNaVzVuZEdncElIeDhJQ2dvYmtsdWRITk9aV1ZrWldRZ0t5QjBhR2x6TGxOSVVrbE9TMTlVU0ZKRlUwaFBURVFwSUR3Z2RHaHBjeTVmWkdGMFlTNXNaVzVuZEdncEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdVpYZEVZWFJoSUQwZ2JtVjNJRlZwYm5Rek1rRnljbUY1S0c1SmJuUnpUbVZsWkdWa0tUdGNiaUFnSUNBZ0lIUm9hWE11WTI5d2VTaDBhR2x6TGw5a1lYUmhMQ0J1WlhkRVlYUmhMQ0FvYmtsdWRITk9aV1ZrWldRZ1BpQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFDa2dQeUIwYUdsekxsOWtZWFJoTG14bGJtZDBhQ0E2SUc1SmJuUnpUbVZsWkdWa0tUdGNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRWdQU0J1WlhkRVlYUmhPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gyWVd4MVpTQStJSFJvYVhNdVgyeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBbElEQjRNakFnUGlBd0tWeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXM1JvYVhNdWJHVnVaM1JvU1c1SmJuUnpJQzBnTVYwZ0pqMGdLREVnUER3Z0tDaDBhR2x6TGw5c1pXNW5kR2dnSlNBd2VESXdLU0FtSURCNE1XWXBLU0F0SURFN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRXVabWxzYkNnd0xDQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN5d2dia2x1ZEhOT1pXVmtaV1FwTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TGw5c1pXNW5kR2dnUFNCMllXeDFaVHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1S3lzN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1puSnZiVUZ1WkNoelpYUXhPaUJDYVhSQmNuSmhlU3dnYzJWME1qb2dRbWwwUVhKeVlYa3BPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hObGRERXVYMnhsYm1kMGFDQWhQU0J6WlhReUxsOXNaVzVuZEdncFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUV4bGJtZDBhSE1nWkdsbVptVnlJQ2drZTNObGRERXVYMnhsYm1kMGFIMGdJVDBnSkh0elpYUXlMbDlzWlc1bmRHaDlLV0FwTzF4dVhHNGdJQ0FnWTI5dWMzUWdkR1Z0Y0NBOUlHNWxkeUJDYVhSQmNuSmhlU2h6WlhReExsOXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYMnhsYm1kMGFDQTlJSE5sZERFdVgyeGxibWQwYUR0Y2JpQWdJQ0IwWlcxd0xsOWtZWFJoSUQwZ1FtbDBRWEp5WVhrdVgyTnlaV0YwWlVKMVptWmxjaWgwWlcxd0xsOXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYM1psY25OcGIyNGdQU0F3TzF4dVhHNGdJQ0FnWTI5dWMzUWdiR1Z1SUQwZ2MyVjBNUzVzWlc1bmRHaEpia2x1ZEhNN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc1pXNDdJR2tyS3lsY2JpQWdJQ0FnSUhSbGJYQXVYMlJoZEdGYmFWMGdQU0J6WlhReExsOWtZWFJoVzJsZElDWWdjMlYwTWk1ZlpHRjBZVnRwWFR0Y2JseHVJQ0FnSUhKbGRIVnliaUIwWlcxd08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1gyTnlaV0YwWlVKMVptWmxjaWhzWlc1bmRHZzZJRzUxYldKbGNpazZJRlZwYm5Rek1rRnljbUY1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZWcGJuUXpNa0Z5Y21GNUtFMWhkR2d1Wm14dmIzSW9LR3hsYm1kMGFDQXJJREI0TVdZcElDOGdNSGd5TUNrcE8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHWnliMjFXWVd4MVpYTW9kbUZzZFdWek9pQkJjbkpoZVR4aWIyOXNaV0Z1UGlrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCamIyNXpkQ0IwWlcxd0lEMGdibVYzSUVKcGRFRnljbUY1S0haaGJIVmxjeTVzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBaVzF3TGw5c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0haaGJIVmxjMXRwWFNsY2JpQWdJQ0FnSUNBZ2RHVnRjQzVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLR2tnTHlBd2VESXdLVjBnZkQwZ01TQThQQ0FvS0drZ0pTQXdlREl3S1NBbUlEQjRNV1lwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHVnRjRHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkRiMjV6ZEhKMVkzUnpJR0VnVzBKcGRGTmxkRjBnYjJZZ2JHVnVaM1JvSUZ0amIzVnVkRjBzSUhkb1pYSmxJR2xrZUMxMGFDQmlhWFFnYVhNZ1pHVjBaWEp0YVc1bFpDQmllU0JoSUdOaGJHd2dkRzhnVzJac1lXZGRJQ2hwWkhncExseHVJQ0J6ZEdGMGFXTWdabkp2YlZObGNTaGpiM1Z1ZERvZ2JuVnRZbVZ5TENCbWJHRm5PaUJHZFc1amRHbHZiaWs2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQjBaVzF3SUQwZ2JtVjNJRUpwZEVGeWNtRjVLR052ZFc1MEtUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHTnZkVzUwT3lBcksya3BYRzRnSUNBZ0lDQjBaVzF3TG5ObGRFSnBkQ2hwTENCbWJHRm5LR2twS1R0Y2JseHVJQ0FnSUhSbGJYQXVYM1psY25OcGIyNGdQU0F3TzF4dUlDQWdJSEpsZEhWeWJpQjBaVzF3TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRU52Ym5OMGNuVmpkSE1nWVNCYlFtbDBVMlYwWFNCbWNtOXRJR0VnYzNSeWFXNW5JRnR6WFNCamIyNTBZV2x1YVc1bklDY3dKeUJ2Y2lBbk1TY3VYRzRnSUhOMFlYUnBZeUJtY205dFUzUnlhVzVuS0hNNklITjBjbWx1WnlrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCeVpYUjFjbTRnUW1sMFFYSnlZWGt1Wm5KdmJWTmxjU2h6TG14bGJtZDBhQ3dnS0drNklHNTFiV0psY2lrZ1BUNGdjeTVqYUdGeVFYUW9hU2tnUFQwZ0p6RW5LVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkRiMjV6ZEhKMVkzUnpJR0VnVzBKcGRGTmxkRjBzSUdKaGMyVmtJRzl1SUd4bGJtZDBhQ0JiWDJ4bGJtZDBhRjBnWVc1a0lHSjVkR1VnWVhKeVlYa2dXMTlrWVhSaFhTNWNiaUFnYzNSaGRHbGpJR1p5YjIxVmFXNTBNekpCY25KaGVTaGZiR1Z1WjNSb09pQnVkVzFpWlhJc0lGOWtZWFJoT2lCVmFXNTBNekpCY25KaGVTazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCMFpXMXdJRDBnYm1WM0lFSnBkRUZ5Y21GNUtGOXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYMlJoZEdFZ1BTQmZaR0YwWVR0Y2JpQWdJQ0J5WlhSMWNtNGdkR1Z0Y0R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJFWlhObGNtbGhiR2w2WlhNZ1lTQmJRbWwwVTJWMFhTQm1jbTl0SUZ0aWVYUmxjMTB1WEc0Z0lITjBZWFJwWXlCbWNtOXRRbmwwWlhNb1lubDBaWE02SUZWcGJuUTRRWEp5WVhrcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ1kyOXVjM1FnYkdWdUlEMGdZbmwwWlhNdWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElIUmxiWEFnUFNCdVpYY2dRbWwwUVhKeVlYa29iR1Z1SUNvZ09DazdYRzRnSUNBZ2RHVnRjQzVmWkdGMFlTQTlJRzVsZHlCVmFXNTBNekpCY25KaGVTaE5ZWFJvTG1ac2IyOXlLQ2hzWlc0Z0t5QXpLU0F2SURRcEtUdGNiaUFnSUNCMFpXMXdMbDlzWlc1bmRHZ2dQU0JzWlc0Z0tpQTRPMXh1SUNBZ0lHeGxkQ0J1ZFcweElEMGdNRHRjYmlBZ0lDQnNaWFFnYm5WdE1pQTlJREE3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9LR3hsYmlBdElHNTFiVElwSUQ0OUlEUXBJSHRjYmlBZ0lDQWdJSFJsYlhBdVgyUmhkR0ZiYm5WdE1Tc3JYU0E5SUNoY2JpQWdJQ0FnSUNBZ0tDaGllWFJsYzF0dWRXMHlYU0FtSURCNFptWXBJSHdnS0NoaWVYUmxjMXR1ZFcweUlDc2dNVjBnSmlBd2VHWm1LU0E4UENBNEtTa2dmRnh1SUNBZ0lDQWdJQ0FvS0dKNWRHVnpXMjUxYlRJZ0t5QXlYU0FtSURCNFptWXBJRHc4SURCNE1UQXBYRzRnSUNBZ0lDQXBJSHdnS0NoaWVYUmxjMXR1ZFcweUlDc2dNMTBnSmlBd2VHWm1LU0E4UENBd2VERTRLVHRjYmx4dUlDQWdJQ0FnYm5WdE1pQXJQU0EwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoc1pXNGdMU0J1ZFcweUlEMDlJRE1wWEc0Z0lDQWdJQ0IwWlcxd0xsOWtZWFJoVzI1MWJURmRJRDBnS0dKNWRHVnpXMjUxYlRJZ0t5QXlYU0FtSURCNFptWXBJRHc4SURCNE1UQTdYRzVjYmlBZ0lDQnBaaUFvYkdWdUlDMGdiblZ0TWlBOVBTQXlLVnh1SUNBZ0lDQWdkR1Z0Y0M1ZlpHRjBZVnR1ZFcweFhTQjhQU0FvWW5sMFpYTmJiblZ0TWlBcklERmRJQ1lnTUhobVppa2dQRHdnT0R0Y2JseHVJQ0FnSUdsbUlDaHNaVzRnTFNCdWRXMHlJRDA5SURFcFhHNGdJQ0FnSUNCMFpXMXdMbDlrWVhSaFcyNTFiVEZkSUh3OUlHSjVkR1Z6VzI1MWJUSmRJQ1lnTUhobVpqdGNibHh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVJQ0FnSUhKbGRIVnliaUIwWlcxd08xeHVJQ0I5WEc1Y2JpQWdkRzlUZEhKcGJtY29LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z1lDUjdkR2hwY3k1ZmJHVnVaM1JvZlNCaWFYUnpMQ0FrZTNSb2FYTXVZMjkxYm5SQ2FYUnpLSFJ5ZFdVcGZTQnpaWFJnTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRkJsY21admNtMXpJR1JsWlhBZ1kyOXRjR0Z5YVhOdmJpQnZaaUIwZDI4Z1ltbDBjMlYwY3k1Y2JpQWdaWEYxWVd4ektHOTBhR1Z5T2lCQ2FYUkJjbkpoZVNrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUdsbUlDaDBhR2x6SUQwOUlHOTBhR1Z5S1NCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCcFppQW9iM1JvWlhJZ1BUMGdiblZzYkNrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXNaVzVuZEdnZ0lUMGdiM1JvWlhJdVgyeGxibWQwYUNrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXNaVzVuZEdnZ1BUMGdNQ2tnY21WMGRYSnVJSFJ5ZFdVN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11WDJSaGRHRXViR1Z1WjNSb0lDMGdNVHNnYVNzcktWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyUmhkR0ZiYVYwZ0lUMGdiM1JvWlhJdVgyUmhkR0ZiYVYwcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBb2RHaHBjeTVmWkdGMFlTNXNaVzVuZEdnZ0xTQXhLU0FxSURnN0lHa2dQQ0IwYUdsekxsOXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WjJWMFFtbDBLR2twSUNFOUlHOTBhR1Z5TG1kbGRFSnBkQ2hwS1NsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCRGJHOXVaWE1nWVNCaWFYUnpaWFF1SUNvdlhHNGdJR05zYjI1bEtDazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCaWFYUkJjbkpoZVNBOUlHNWxkeUJDYVhSQmNuSmhlU2d3TENCbVlXeHpaU2s3WEc0Z0lDQWdZbWwwUVhKeVlYa3VYMlJoZEdFZ1BTQlZhVzUwTXpKQmNuSmhlUzVtY205dEtIUm9hWE11WDJSaGRHRXBPeUF2THlCbFptWmxZM1JwZG1VZ2JHVnVaM1JvT2lBb2JHVnVaM1JvU1c1SmJuUnpLVnh1SUNBZ0lHSnBkRUZ5Y21GNUxsOXNaVzVuZEdnZ1BTQjBhR2x6TGw5c1pXNW5kR2c3WEc0Z0lDQWdZbWwwUVhKeVlYa3VYM1psY25OcGIyNGdQU0IwYUdsekxsOTJaWEp6YVc5dU8xeHVJQ0FnSUhKbGRIVnliaUJpYVhSQmNuSmhlVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkpibWwwYVdGc2FYcGxjeUJoSUdKcGRITmxkQzRnS2k5Y2JpQWdhVzVwZENobWJHRm5PaUJHZFc1amRHbHZiaXdnYm05MGFXWjVPaUJpYjI5c1pXRnVLVG9nUW1sMFFYSnlZWGtnZTF4dUlDQWdJSFJvYVhNdWMyVjBRV3hzS0daaGJITmxMQ0JtWVd4elpTazdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pteGhaeWhwS1NsY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLR2tnTHlBd2VESXdLVjBnZkQwZ01TQThQQ0FvS0drZ0pTQXdlREl3S1NBbUlEQjRNV1lwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRWx1ZG1WeWRITWdZU0JpYVhSelpYUXVYRzRnSUdsdWRtVnlkQ2h1YjNScFpua2dQU0IwY25WbEtUb2dkbTlwWkNCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNCZVBTQXRNVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRk5sZEhNZ1lXeHNJR0pwZEhNZ2RHOGdXM1poYkhWbFhTd2diM0IwYVc5dVlXeHNlU0J6ZFhCd2NtVnpjMmx1WnlCdWIzUnBabWxqWVhScGIyNXpMbHh1SUNCelpYUkJiR3dvZG1Gc2RXVTZJR0p2YjJ4bFlXNHNJRzV2ZEdsbWVTQTlJR1poYkhObEtUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMzUWdabXhoWjNNZ1BTQjJZV3gxWlNBL0lDMHhJRG9nTUR0Y2JpQWdJQ0JqYjI1emRDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3p0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVPeUJwS3lzcElDOHZkRzlrYnpvZ2IzQjBhVzFwZW1WY2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdGYmFWMGdQU0JtYkdGbmN6dGNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNCOVhHNWNiaUFnTHk4dklGTmxkSE1nWW1sMGN5QmhkQ0JiYVc1a1pYaGxjMTBnY0c5emFYUnBiMjRnZEc4Z1czWmhiSFZsWFM1Y2JpQWdMeTh2SUVOc1pXRnljeUIwYUdVZ1ltbDBjMlYwSUdsbUlGdGpiR1ZoY2wwZ1pteGhaeUJwY3lCMGNuVmxMbHh1SUNBdkx5OGdRMmhoYm1kbElHNXZkR2xtYVdOaGRHbHZiaUJwY3lCeVlXbHpaV1FnZDJobGJpQmJibTkwYVdaNVhTQnBjeUIwY25WbExseHVJQ0J6WlhSSmJtUmxlR1Z6S0dsdVpHVjRaWE02SUVGeWNtRjVQRzUxYldKbGNqNHNJSFpoYkhWbElEMGdkSEoxWlN3Z1kyeGxZWElnUFNCMGNuVmxMQ0J1YjNScFpua2dQU0IwY25WbEtUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tHTnNaV0Z5S1Z4dUlDQWdJQ0FnZEdocGN5NXpaWFJCYkd3b0lYWmhiSFZsTENCbVlXeHpaU2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdrZ2IyWWdhVzVrWlhobGN5bGNiaUFnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hwTENCMllXeDFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdmVnh1WEc0Z0lHVjJaWEo1U1c1a1pYZ29hVzVrWlhobGN6b2dRWEp5WVhrOGJuVnRZbVZ5UGl3Z2RtRnNkV1VnUFNCMGNuVmxLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JwYm1SbGVDQnZaaUJwYm1SbGVHVnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVuWlhSQ2FYUW9hVzVrWlhncElDRTlJSFpoYkhWbEtWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNWNiaUFnWVc1NVNXNWtaWGdvYVc1a1pYaGxjem9nUVhKeVlYazhiblZ0WW1WeVBpd2dkbUZzZFdVZ1BTQjBjblZsS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCcGJtUmxlQ0J2WmlCcGJtUmxlR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUkNhWFFvYVc1a1pYZ3BJRDA5SUhaaGJIVmxLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2MyVjBWMmhsY21Vb1kyaGxZMnM2SUVaMWJtTjBhVzl1TENCMllXeDFaU0E5SUhSeWRXVXNJR05zWldGeUlEMGdkSEoxWlN3Z2JtOTBhV1o1SUQwZ2RISjFaU3dnWVd4c2IzZERiR1ZoY2lBOUlIUnlkV1VwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvWTJ4bFlYSWdKaVlnWVd4c2IzZERiR1ZoY2lsY2JpQWdJQ0FnSUhSb2FYTXVjMlYwUVd4c0tDRjJZV3gxWlN3Z1ptRnNjMlVwTzF4dVhHNGdJQ0FnYVdZZ0tHRnNiRzkzUTJ4bFlYSXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZiR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR05vWldOcktHa3BLVnh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVjMlYwUm1GemRDaHBMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hwTENCamFHVmpheWhwS1NBL0lIWmhiSFZsSURvZ0lYWmhiSFZsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdmVnh1WEc0Z0lHZGxkRkpoYm1kbEtHWnliMjA2SUc1MWJXSmxjaXdnZEc4NklHNTFiV0psY2lrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb1puSnZiU3dnTUN3Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVN3Z0oyWnliMjBuS1R0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvZEc4c0lEQXNJSFJvYVhNdVgyeGxibWQwYUN3Z0ozUnZKeWs3WEc0Z0lDQWdZMjl1YzNRZ1lYSnlPaUJCY25KaGVUeGliMjlzWldGdVBpQTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCbWNtOXRPeUJwSUR3Z2RHODdJQ3NyYVNsY2JpQWdJQ0FnSUdGeWNpNXdkWE5vS0hSb2FYTXVaMlYwUW1sMEtHa3BLVHRjYmlBZ0lDQnlaWFIxY200Z1FtbDBRWEp5WVhrdVpuSnZiVlpoYkhWbGN5aGhjbklwTzF4dUlDQjlYRzVjYmlBZ1oyVjBVbUZ1WjJWQmMweHBjM1FvWm5KdmJUb2diblZ0WW1WeUxDQjBiem9nYm5WdFltVnlLVG9nWW05dmJHVmhibHRkSUh0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvWm5KdmJTd2dNQ3dnZEdocGN5NWZiR1Z1WjNSb0lDMGdNU3dnSjJaeWIyMG5LVHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9kRzhzSURBc0lIUm9hWE11WDJ4bGJtZDBhQ3dnSjNSdkp5azdYRzRnSUNBZ1kyOXVjM1FnWVhKeU9pQmliMjlzWldGdVcxMGdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ1puSnZiVHNnYVNBOElIUnZPeUFySzJrcFhHNGdJQ0FnSUNCaGNuSXVjSFZ6YUNoMGFHbHpMbWRsZEVKcGRDaHBLU2s3WEc0Z0lDQWdjbVYwZFhKdUlHRnljanRjYmlBZ2ZWeHVYRzVjYmlBZ2MyVjBVbUZ1WjJVb1puSnZiVG9nYm5WdFltVnlMQ0IwYnpvZ2JuVnRZbVZ5TENCMllXeDFaVG9nWW05dmJHVmhiaXdnYm05MGFXWjVJRDBnZEhKMVpTazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9abkp2YlN3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvSUMwZ01Td2dKMlp5YjIwbktUdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2RHOHNJREFzSUhSb2FYTXVYMnhsYm1kMGFDQXRJREVzSUNkMGJ5Y3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ2MzUmhjblFnUFNCTllYUm9MbTFwYmlobWNtOXRMQ0IwYnlrN1hHNGdJQ0FnWTI5dWMzUWdaVzVrSUQwZ1RXRjBhQzV0WVhnb1puSnZiU3dnZEc4cE8xeHVYRzRnSUNBZ0x5OTBiMlJ2T2lCdmNIUnBiV2w2WlZ4dUlDQWdJR2xtSUNoMllXeDFaU2tnZTF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlITjBZWEowT3lCcElEdzlJR1Z1WkRzZ2FTc3JLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRlJ5ZFdVb2FTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQnpkR0Z5ZERzZ2FTQThQU0JsYm1RN0lHa3JLeWxjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFJHWVd4elpTaHBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlRaWFJ6SUc0Z2NtRnVaRzl0YkhrZ1kyaHZjMlZ1SUdKcGRITWdkRzhnZG1Gc2RXVXNJSEpsYldGcGJtbHVaeUJpYVhSeklIUnZJQ0YyWVd4MVpTNWNiaUFnYzJWMFVtRnVaRzl0S0c0NklHNTFiV0psY2l3Z2RtRnNkV1U2SUdKdmIyeGxZVzRzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9iaUE4SURBZ2ZId2diaUErSUhSb2FYTXVYMnhsYm1kMGFDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmJpQnRkWE4wSUdKbElENDlJREFnSmlZZ1BEMGdRMjkxYm5RbktUdGNibHh1SUNBZ0lHbG1JQ2h1SUQ0Z2RHaHBjeTVmYkdWdVozUm9JQzhnTWlsY2JpQWdJQ0FnSUhSb2FYTXVjMlYwVW1GdVpHOXRLSFJvYVhNdVgyeGxibWQwYUNBdElHNHNJQ0YyWVd4MVpTazdYRzVjYmlBZ0lDQjBhR2x6TG5ObGRFRnNiQ2doZG1Gc2RXVXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdheUE5SURBN0lHc2dQQ0J1T3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlFMWhkR2d1Wm14dmIzSW9UV0YwYUM1eVlXNWtiMjBvS1NBcUlIUm9hWE11WDJ4bGJtZDBhQ2s3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVuWlhSQ2FYUW9hU2tnUFQwZ2RtRnNkV1VwSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZEdocGN5NXpaWFJHWVhOMEtHa3NJSFpoYkhWbEtUdGNiaUFnSUNBZ0lHc3JLenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5Qk5iMlJwWm1sbGN5QmpkWEp5Wlc1MElHSnBkSE5sZENCaWVTQndaWEptYjNKdGFXNW5JSFJvWlNCaWFYUjNhWE5sSUVGT1JDQnZjR1Z5WVhScGIyNGdZV2RoYVc1emRDQjBhR1ZjYmlBZ0x5OHZJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHRnVaQ2gyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQjJZV3gxWlM1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RCY25KaGVTQnNaVzVuZEdoeklHUnBabVpsY2k0bktUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenNnYVNBOElHeGxianNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0FtUFNCMllXeDFaUzVmWkdGMFlWdHBYVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRkJsY21admNtMXpJSFJvWlNCaWFYUjNhWE5sSUVGT1JDQk9UMVFnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUdGdVpFNXZkQ2gyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQjJZV3gxWlM1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RCY25KaGVTQnNaVzVuZEdoeklHUnBabVpsY2k0bktUdGNibHh1SUNBZ0lHTnZibk4wSUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvU1c1SmJuUnpPMXh1SUNBZ0lHWnZjaUFvYkdWMElHNTFiVElnUFNBd095QnVkVzB5SUR3Z2JHVnVPeUJ1ZFcweUt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMjUxYlRKZElDWTlJSDUyWVd4MVpTNWZaR0YwWVZ0dWRXMHlYVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRkJsY21admNtMXpJSFJvWlNCaWFYUjNhWE5sSUU1UFZDQkJUa1FnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUc1dmRFRnVaQ2gyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQjJZV3gxWlM1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RCY25KaGVTQnNaVzVuZEdoeklHUnBabVpsY2k0bktUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenNnYVNBOElHeGxianNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0E5SUNoK2RHaHBjeTVmWkdGMFlWdHBYU2tnSmlCMllXeDFaUzVmWkdGMFlWdHBYVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRWx1ZG1WeWRITWdZV3hzSUdKcGRDQjJZV3gxWlhNZ2FXNGdkR2hsSUdOMWNuSmxiblFnWW1sMGMyVjBYRzRnSUc1dmRDaHViM1JwWm5rZ1BTQjBjblZsS1RvZ1FtbDBRWEp5WVhrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6c2dhU0E4SUd4bGJqc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQTlJSDUwYUdsekxsOWtZWFJoVzJsZE8xeHVYRzRnSUNBZ2RHaHBjeTVwYm1OeVpXMWxiblJXWlhKemFXOXVLRzV2ZEdsbWVTazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2THk4Z1VHVnlabTl5YlhNZ2RHaGxJR0pwZEhkcGMyVWdUMUlnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUc5eUtIWmhiSFZsT2lCQ2FYUkJjbkpoZVN3Z2JtOTBhV1o1SUQwZ2RISjFaU2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbDlzWlc1bmRHZ2dJVDBnZG1Gc2RXVXVYMnhsYm1kMGFDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblFYSnlZWGtnYkdWdVozUm9jeUJrYVdabVpYSXVKeWs3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTVzWlc1bmRHaEpia2x1ZEhNN0lHa2dQQ0JzWlc0N0lHa3JLeWxjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0ZiYVYwZ2ZEMGdkbUZzZFdVdVgyUmhkR0ZiYVYwN1hHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzh2THlCUVpYSm1iM0p0Y3lCMGFHVWdZbWwwZDJselpTQmxlR05zZFhOcGRtVWdUMUlnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUhodmNpaDJZV3gxWlRvZ1FtbDBRWEp5WVhrc0lHNXZkR2xtZVNBOUlIUnlkV1VwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYkdWdVozUm9JQ0U5SUhaaGJIVmxMbDlzWlc1bmRHZ3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owRnljbUY1SUd4bGJtZDBhSE1nWkdsbVptVnlMaWNwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3hsYmlBOUlIUm9hWE11YkdWdVozUm9TVzVKYm5Sek95QnBJRHdnYkdWdU95QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzJsZElGNDlJSFpoYkhWbExsOWtZWFJoVzJsZE8xeHVYRzRnSUNBZ2RHaHBjeTVwYm1OeVpXMWxiblJXWlhKemFXOXVLRzV2ZEdsbWVTazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2THk4Z1NXNXpaWEowY3lCdUlEQXRZbWwwY3lCaGRDQndiM05wZEdsdmJpQndiM01zSUhKbGMybDZhVzVuSUhObGJHWWdZVzVrSUhOb2FXWjBhVzVuSUdKcGRITWdZWEJ3Y205d2NtbGhkR1ZzZVM1Y2JpQWdhVzV6WlhKMFFYUW9jRzl6T2lCdWRXMWlaWElzSUc0NklHNTFiV0psY2l3Z1pteGhaeUE5SUdaaGJITmxLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVoYzNOMWNtVkpibEpoYm1kbEtIQnZjeXdnTUN3Z2RHaHBjeTVmYkdWdVozUm9MQ0FuY0c5ekp5azdYRzVjYmlBZ0lDQnBaaUFvYmlBOVBTQXdLU0J5WlhSMWNtNDdYRzVjYmlBZ0lDQXZMMVJQUkU4NklHOXdkR2x0YVhwbFhHNGdJQ0FnTHk5MGFHVWdiVzl6ZENCd2NtbHRhWFJwZG1VZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRzSUc5d2RHbHRhWHBsSUdsMElHeGhkR1Z5SVZ4dVhHNGdJQ0FnTHk4Z1ltVm5hVzVWY0dSaGRHVW9LVHRjYmlBZ0lDQmpiMjV6ZENCdmJHUnNaVzVuZEdnZ1BTQjBhR2x6TGw5c1pXNW5kR2c3WEc0Z0lDQWdkR2hwY3k1elpYUk1aVzVuZEdnb2RHaHBjeTVmYkdWdVozUm9JQ3NnYmlrN1hHNWNiaUFnSUNBdkwybG1JQ2doWTI5dWRHRnBibk1vSVdac1lXY3BLU0J5WlhSMWNtNDdJQzh2SUc1dmRHaHBibWNnZEc4Z1pHOWNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0J2YkdSc1pXNW5kR2dnTFNBeE95QnBJRDQ5SUhCdmN6c2dhUzB0S1Z4dUlDQWdJQ0FnZEdocGN5NXpaWFJDYVhRb2FTQXJJRzRzSUhSb2FYTXVaMlYwUW1sMEtHa3BLVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCd2IzTTdJR2tnUENCd2IzTWdLeUJ1T3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TG5ObGRFSnBkQ2hwTENCbWJHRm5LVHRjYmx4dUlDQWdJQzh2SUdWdVpGVndaR0YwWlNncE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVSbGJHVjBaWE1nYmlCaWFYUnpJR0psWjJsdWJtbHVaeUJoZENCd2IzTnBkR2x2YmlCd2IzTXNJSEpsYzJsNmFXNW5JSE5sYkdZZ1lXNWtJSE5vYVdaMGFXNW5JSEpsYldGcGJtbHVaMXh1SUNBdkx5OGdZbWwwY3lCaGNIQnliM0J5YVdGMFpXeDVMbHh1SUNCeVpXMXZkbVZCZENod2IzTTZJRzUxYldKbGNpd2diaUE5SURFcE9pQjJiMmxrSUh0Y2JpQWdJQ0F2THlCMGFHVWdiVzl6ZENCd2NtbHRhWFJwZG1VZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRzSUc5d2RHbHRhWHBsSUdsMElHeGhkR1Z5SVZ4dUlDQWdJR2xtSUNodUlEd2dNQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25iaUJqWVc1dWIzUWdZbVVnYm1WbllYUnBkbVVuS1R0Y2JseHVJQ0FnSUhSb2FYTXVZWE56ZFhKbFNXNVNZVzVuWlNod2IzTXNJREFzSUhSb2FYTXVYMnhsYm1kMGFDQXRJRzRzSUNkd2IzTW5LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ym5SaGFXNXpLSFJ5ZFdVcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnY0c5ek95QnBJRHdnZEdocGN5NWZiR1Z1WjNSb0lDMGdianNnYVNzcktWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRFSnBkQ2hwTENCMGFHbHpMbWRsZEVKcGRDaHBJQ3NnYmlrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjMlYwVEdWdVozUm9LSFJvYVhNdVgyeGxibWQwYUNBdElHNHBPMXh1SUNCOVhHNWNiaUFnY21WdGIzWmxRbmxOWVhOcktHMWhjMnM2SUVKcGRFRnljbUY1TENCbWJHRm5JRDBnZEhKMVpTazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZiR1Z1WjNSb0lDRTlJRzFoYzJzdWJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RzWlc1bmRHZ2dJVDBnYldGemF5NXNaVzVuZEdnbktUdGNibHh1SUNBZ0lHbG1JQ2h0WVhOcklEMDlJSFJvYVhNcElIc2dMeThnYm04Z2JtVmxaQ0IwYnlCcGRHVnlZWFJsWEc0Z0lDQWdJQ0IwYUdsekxuTmxkRXhsYm1kMGFDaHRZWE5yTG1OdmRXNTBRbWwwY3lnaFpteGhaeWtwTzF4dUlDQWdJQ0FnZEdocGN5NXpaWFJCYkd3b0lXWnNZV2NwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnNaWFFnWkhOMFNXUjRJRDBnTUR0Y2JseHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2MzSmpTV1I0SUQwZ0xURTdJQ2h6Y21OSlpIZ2dQU0J0WVhOckxtWnBibVJPWlhoMEtITnlZMGxrZUN3Z0lXWnNZV2NwS1NBaFBTQXRNVHNwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwUm1GemRDaGtjM1JKWkhnckt5d2dkR2hwY3k1blpYUkNhWFFvYzNKalNXUjRLU2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMnhsYm1kMGFDQTlJR1J6ZEVsa2VEdGNiaUFnSUNBZ0lIUm9hWE11WDNabGNuTnBiMjRyS3p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJUYVcxcGJHRnlJSFJ2SUhSb1pTQmJYU0J2Y0dWeVlYUnZjaTVjYmlBZ1oyVjBRbWwwS0hCdmN6b2diblZ0WW1WeUtUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoMGFHbHpMbDlrWVhSaFcwMWhkR2d1Wm14dmIzSW9jRzl6SUM4Z01IZ3lNQ2xkSUNZZ0tERWdQRHdnS0hCdmN5QW1JREI0TVdZcEtTa2dJVDBnTUR0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJUYVcxcGJHRnlJSFJ2SUhSb1pTQmJYU0J2Y0dWeVlYUnZjaTVjYmlBZ2MyVjBRbWwwS0hCdmN6b2diblZ0WW1WeUxDQmlhWFE2SUdKdmIyeGxZVzRzSUc1dmRHbG1lU0E5SUhSeWRXVXBJSHRjYmlBZ0lDQjBhR2x6TG5ObGRFWmhjM1FvY0c5ekxDQmlhWFFwTzF4dUlDQWdJR2xtSUNodWIzUnBabmtwWEc0Z0lDQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdkR2hwY3k1ZmRtVnljMmx2Ymlzck8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZObGRITWdXMmxkTFhSb0lHSnBkQ0IwYnlCYmRtRnNkV1ZkTENCa2IyVnpJRzV2ZENCamFHVmpheUJpYjNWdVpITXNJR1J2WlhNZ2JtOTBJR2x1WTNKbGJXVnVkQ0IyWlhKemFXOXVYRzRnSUhObGRFWmhjM1FvYVRvZ2JuVnRZbVZ5TENCMllXeDFaVG9nWW05dmJHVmhiaWs2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gyWVd4MVpTbGNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRmJUV0YwYUM1bWJHOXZjaWhwSUM4Z01IZ3lNQ2xkSUh3OUlERWdQRHdnS0drZ0ppQXdlREZtS1R0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcwMWhkR2d1Wm14dmIzSW9hU0F2SURCNE1qQXBYU0FtUFNCK0tERWdQRHdnS0drZ0ppQXdlREZtS1NrN1hHNGdJSDFjYmx4dUlDQnpaWFJVY25WbEtIQnZjem9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLSEJ2Y3lBdklEQjRNakFwWFNCOFBTQXhJRHc4SUNod2IzTWdKaUF3ZURGbUtUdGNiaUFnZlZ4dVhHNGdJSE5sZEVaaGJITmxLSEJ2Y3pvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnZEdocGN5NWZaR0YwWVZ0TllYUm9MbVpzYjI5eUtIQnZjeUF2SURCNE1qQXBYU0FtUFNCK0tERWdQRHdnS0hCdmN5QW1JREI0TVdZcEtUdGNiaUFnZlZ4dVhHNGdJSFJ5ZFdWRGIzVnVkQ2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmRXNTBRbWwwY3loMGNuVmxLVHRjYmlBZ2ZWeHVYRzRnSUdaaGJITmxRMjkxYm5Rb0tUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiM1Z1ZEVKcGRITW9abUZzYzJVcE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVOdmRXNTBjeUJpYVhSeklHOW1JSFJvWlNCemNHVmphV1pwWldRZ2RtRnNkV1V1WEc0Z0lHTnZkVzUwUW1sMGN5aDJZV3gxWlRvZ1ltOXZiR1ZoYmlrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0E5UFNBd0tTQnlaWFIxY200Z01EdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwVm1WeWMybHZiaUFoUFNCMGFHbHpMbDkyWlhKemFXOXVLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwSUQwZ01EdGNiaUFnSUNBZ0lHTnZibk4wSUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvU1c1SmJuUnpPMXh1SUNBZ0lDQWdiR1YwSUdrZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNnN0lHa2dQQ0JzWlc0Z0xTQXhPeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdabTl5SUNoc1pYUWdheUE5SUhSb2FYTXVYMlJoZEdGYmFWMDdJR3NnSVQwZ01Ec2dheUErUGo0OUlEZ3BJSHNnTHk5MGIyUnZPaUJqWVhOMElHUmhkR0ZiYVYwZ2RHOGdkV2x1ZEZ4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WDNObGJHVmpkR1ZrUTI5MWJuUWdLejBnUW1sMFFYSnlZWGt1WDI5dVFtbDBRMjkxYm5SYmF5QW1JREI0Wm1aZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUZSb1pTQnNZWE4wSUdsdWRDNWNiaUFnSUNBZ0lHeGxkQ0JySUQwZ2RHaHBjeTVmWkdGMFlWdHBYVHRjYmlBZ0lDQWdJR052Ym5OMElISmxiV0ZwYm1sdVowSnBkSE1nUFNCMGFHbHpMbDlzWlc1bmRHZ2dKaUF3ZURGbU8xeHVJQ0FnSUNBZ2FXWWdLSEpsYldGcGJtbHVaMEpwZEhNZ0lUMGdNQ2tnTHlvZ2FXWWdjbVZ0WVdsdWFXNW5RbWwwY3lBOVBTQXdMQ0IwYUdVZ2JHRnpkQ0JwYm5RZ2FYTWdablZzYkhrZ2RYTmxaQ0JoYm1RZ1FVeE1JR0pwZEhNZ2MyaHZkV3hrSUdKbElHeGxablFnWVhNZ2FYTWdLaTljYmlBZ0lDQWdJQ0FnYXlBbVBTQitLQ2cwTWprME9UWTNNamsxS1NBOFBDQnlaVzFoYVc1cGJtZENhWFJ6S1R0Y2JseHVJQ0FnSUNBZ1ptOXlJQ2c3SUdzZ0lUMGdNRHNnYXlBK1BqNDlJRGdwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM05sYkdWamRHVmtRMjkxYm5RZ0t6MGdRbWwwUVhKeVlYa3VYMjl1UW1sMFEyOTFiblJiYXlBbUlEQjRabVpkTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MFZtVnljMmx2YmlBOUlIUm9hWE11WDNabGNuTnBiMjQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlDaDJZV3gxWlNBL0lIUm9hWE11WDNObGJHVmpkR1ZrUTI5MWJuUWdPaUIwYUdsekxsOXNaVzVuZEdnZ0xTQjBhR2x6TGw5elpXeGxZM1JsWkVOdmRXNTBLVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlNaWFIxY201eklHRWdiblZ0WW1WeUlHOW1JSE5sZENCaWFYUnpJSGRvWlhKbElHRnNjMjhnVzJOb1pXTnJYU0JwY3lCMGNuVmxYRzRnSUdOdmRXNTBWMmhsY21Vb1kyaGxZMnM2SUVaMWJtTjBhVzl1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2NtVnpkV3gwSUQwZ01EdGNiaUFnSUNCcFppQW9kR2hwY3k1MGNuVmxRMjkxYm5Rb0tTQTlQU0IwYUdsekxsOXNaVzVuZEdncElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkR2hwY3k1ZmJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQWdJSEpsYzNWc2RDQXJQU0JqYUdWamF5aHBLU0EvSURFZ09pQXdPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdMVEU3SUNocElEMGdkR2hwY3k1bWFXNWtUbVY0ZENocExDQjBjblZsS1NrZ0lUMGdMVEU3S1Z4dUlDQWdJQ0FnSUNCeVpYTjFiSFFnS3owZ1kyaGxZMnNvYVNrZ1B5QXhJRG9nTUR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJRWlhKbWIzSnRjeUJpYVhRZ1hDSmhibVJjSWlCaGJtUWdZMjkxYm5SeklHSnBkSE1nYjJZZ2RHaGxJSE53WldOcFptbGxaQ0IyWVd4MVpTd2dkMmwwYUc5MWRDQmlhWFJ6WlhRZ2JXOWthV1pwWTJGMGFXOXVMbHh1SUNCaGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hObFkyOXVaRG9nUW1sMFFYSnlZWGtzSUhaaGJIVmxPaUJpYjI5c1pXRnVLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZiR1Z1WjNSb0lEMDlJREFwSUhKbGRIVnliaUF3TzF4dVhHNGdJQ0FnYkdWMElHTnZkVzUwSUQwZ01EdGNiaUFnSUNCamIyNXpkQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6dGNiaUFnSUNCc1pYUWdhU0E5SURBN1hHNGdJQ0FnWm05eUlDZzdJR2tnUENCc1pXNGdMU0F4T3lCcEt5c3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR3NnUFNCMGFHbHpMbDlrWVhSaFcybGRJQ1lnYzJWamIyNWtMbDlrWVhSaFcybGRPeUJySUNFOUlEQTdJR3NnUGo0K1BTQTRLVnh1SUNBZ0lDQWdJQ0JqYjNWdWRDQXJQU0JDYVhSQmNuSmhlUzVmYjI1Q2FYUkRiM1Z1ZEZ0cklDWWdNSGhtWmwwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1ZHaGxJR3hoYzNRZ2FXNTBMbHh1SUNBZ0lHeGxkQ0JySUQwZ2RHaHBjeTVmWkdGMFlWdHBYU0FtSUhObFkyOXVaQzVmWkdGMFlWdHBYVHRjYmlBZ0lDQmpiMjV6ZENCeVpXMWhhVzVwYm1kQ2FYUnpJRDBnZEdocGN5NWZiR1Z1WjNSb0lDWWdNSGd4Wmp0Y2JpQWdJQ0JwWmlBb2NtVnRZV2x1YVc1blFtbDBjeUFoUFNBd0tWeHVJQ0FnSUNBZ2F5QW1QU0IrS0NnME1qazBPVFkzTWprMUtTQThQQ0J5WlcxaGFXNXBibWRDYVhSektUdGNiaUFnSUNCbWIzSWdLRHNnYXlBaFBTQXdPeUJySUQ0K1BqMGdPQ2xjYmlBZ0lDQWdJR052ZFc1MElDczlJRUpwZEVGeWNtRjVMbDl2YmtKcGRFTnZkVzUwVzJzZ0ppQXdlR1ptWFR0Y2JseHVJQ0FnSUhKbGRIVnliaUFvZG1Gc2RXVWdQeUJqYjNWdWRDQTZJSFJvYVhNdVgyeGxibWQwYUNBdElHTnZkVzUwS1R0Y2JpQWdmVnh1WEc0Z0lHTnNaV0Z5S0NrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdWMyVjBUR1Z1WjNSb0tEQXBPMXh1SUNCOVhHNWNiaUFnWTI5dWRHRnBibk1vZG1Gc2RXVTZJR0p2YjJ4bFlXNHBPaUJpYjI5c1pXRnVJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVtYVc1a1RtVjRkQ2d0TVN3Z2RtRnNkV1VwSUQ0OUlEQTdYRzRnSUgxY2JseHVJQ0JuWlhRZ1lXeHNWSEoxWlNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiM1Z1ZEVKcGRITW9kSEoxWlNrZ1BUMGdkR2hwY3k1ZmJHVnVaM1JvTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR0ZzYkVaaGJITmxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmRXNTBRbWwwY3lobVlXeHpaU2tnUFQwZ2RHaHBjeTVmYkdWdVozUm9PMXh1SUNCOVhHNWNiaUFnWjJWMElHRnVlVlJ5ZFdVb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjkxYm5SQ2FYUnpLSFJ5ZFdVcElENGdNRHRjYmlBZ2ZWeHVYRzRnSUdkbGRDQmhibmxHWVd4elpTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjNWdWRFSnBkSE1vWm1Gc2MyVXBJRDRnTUR0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJTWlhSMWNtNXpJSFJvWlNCd2IzTnBkR2x2YmlCdlppQjBhR1VnYm1WNGRDQmlhWFFnYjJZZ2RHaGxJSE53WldOcFptbGxaQ0IyWVd4MVpTd2djM1JoY25ScGJtY2dabkp2YlNCMGFHVWdjM0JsWTJsbWFXVmtJSEJ2YzJsMGFXOXVMbHh1SUNBdkx5OGdVbVYwZFhKdWN5QXRNU3dnYVdZZ2RHaGxjbVVnWVhKbElHNXZJSE4xWTJnZ1ltbDBjeTVjYmlBZ1ptbHVaRTVsZUhRb2FXNWtaWGc2SUc1MWJXSmxjaXdnZG1Gc2RXVWdQU0IwY25WbEtUb2diblZ0WW1WeUlIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2FXNWtaWGdzSUMweExDQjBhR2x6TGw5c1pXNW5kR2dzSUNkcGJtUmxlQ2NwTzF4dVhHNGdJQ0FnYVdZZ0tHbHVaR1Y0SUQ0OUlIUm9hWE11WDJ4bGJtZDBhQ0F0SURFcElISmxkSFZ5YmlBdE1UdGNiaUFnSUNCcGJtUmxlQ0E5SUdsdVpHVjRJRHdnTUNBL0lEQWdPaUJwYm1SbGVDQXJJREU3SUM4dklITnJhWEFnYzNSaGNuUmNiaUFnSUNCc1pYUWdkVzUxYzJWa1FtbDBjeUE5SUdsdVpHVjRJQ1lnTUhneFpqdGNiaUFnSUNCamIyNXpkQ0J1ZFcxSmJuUnpJRDBnZEdocGN5NXNaVzVuZEdoSmJrbHVkSE03WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ1RXRjBhQzVtYkc5dmNpaHBibVJsZUNBdklETXlLVHNnYVNBOElHNTFiVWx1ZEhNN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYkdWMElHc2dQU0FvZG1Gc2RXVWdQeUIwYUdsekxsOWtZWFJoVzJsZElEb2dmblJvYVhNdVgyUmhkR0ZiYVYwcE95QXZMeUIxYVc1MElHTmhjM1JjYmlBZ0lDQWdJR2xtSUNoMWJuVnpaV1JDYVhSeklDRTlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2F5QW1QU0FvS0RCNFptWm1abVptWm1ZZ1BEd2dkVzUxYzJWa1FtbDBjeWtnSmlBd2VHWm1abVptWm1abUtUdGNiaUFnSUNBZ0lDQWdkVzUxYzJWa1FtbDBjeUE5SURBN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDRjJZV3gxWlNBbUppQnJJRDA5SUMwME1qazBPVFkzTWprMktTQXZLaUJzYjI5cmFXNW5JR1p2Y2lCbVlXeHpaU3dnWVd4c0lHSnBkSE1nWVhKbElITmxkQ0FxTDN0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcklDRTlJREE3SUdvZ0t6MGdPQ3dnYXlBK1BqNDlJRGdwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY0NBOUlFSnBkRUZ5Y21GNUxsOW1hWEp6ZEU5dVFtbDBXMnNnSmlBd2VHWm1YVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQWdQajBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2x1WkdWNElEMGdjQ0FySUNocElDb2dNeklwSUNzZ2FqdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FXNWtaWGdnUGowZ2RHaHBjeTVmYkdWdVozUm9LU0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsdVpHVjRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlBdE1UdGNiaUFnZlZ4dVhHNGdJQzh2THlCR2FXNWtjeUJ3Y21WMmFXOTFjeUJpYVhRZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaU0JwYmlCMGFHVWdZbWwwYzJWMExseHVJQ0JtYVc1a1VISmxkaWhwYm1SbGVEb2diblZ0WW1WeUxDQjJZV3gxWlNBOUlIUnlkV1VwT2lCdWRXMWlaWElnZTF4dUlDQWdJR2xtSUNocGJtUmxlQ0E5UFNBd0tTQnlaWFIxY200Z0xURTdYRzRnSUNBZ2RHaHBjeTVoYzNOMWNtVkpibEpoYm1kbEtHbHVaR1Y0TENBdE1Td2dkR2hwY3k1ZmJHVnVaM1JvTENBbmFXNWtaWGduS1R0Y2JseHVJQ0FnSUdsdVpHVjRJRDBnYVc1a1pYZ2dQQ0F3SUQ4Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVNBNklHbHVaR1Y0SUMwZ01Uc2dMeThnYzJ0cGNDQnpkR0Z5ZEZ4dVhHNGdJQ0FnWTI5dWMzUWdiR0Z6ZEVsdWRFbGtlQ0E5SUUxaGRHZ3VabXh2YjNJb2FXNWtaWGdnTHlBd2VESXdLVHRjYmlBZ0lDQnNaWFFnY21WdFlXbHVhVzVuUW1sMGN5QTlJQ2hwYm1SbGVDQXJJREVwSUNZZ01IZ3haanRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCc1lYTjBTVzUwU1dSNE95QnBJRDQ5SURBN0lHa3RMU2tnZTF4dUlDQWdJQ0FnYkdWMElHc2dQU0FvZG1Gc2RXVWdQeUIwYUdsekxsOWtZWFJoVzJsZElEb2dmblJvYVhNdVgyUmhkR0ZiYVYwcE95QXZMeUJqWVhOMFhHNGdJQ0FnSUNCcFppQW9jbVZ0WVdsdWFXNW5RbWwwY3lBaFBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUdzZ0pqMGdmaWdvTkRJNU5EazJOekk1TlNrZ1BEd2djbVZ0WVdsdWFXNW5RbWwwY3lrN1hHNGdJQ0FnSUNBZ0lISmxiV0ZwYm1sdVowSnBkSE1nUFNBd08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJREkwT3lCcklDRTlJREE3SUdvZ0xUMGdPQ3dnYXlBOFBEMGdPQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3SUQwZ1FtbDBRWEp5WVhrdVgyeGhjM1JQYmtKcGRGdHJJRDQrUGlBd2VERTRYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQWdQajBnTUNsY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NDQXJJQ2hwSUNvZ016SXBJQ3NnYWp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlDMHhPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImV4cG9ydCBjb25zdCBpc05pbCA9ICh4KSA9PiB4ID09PSBudWxsIHx8IHggPT09IHVuZGVmaW5lZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYUnBiSE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjFkR2xzY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hOUVVGTkxFTkJRVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRk5CUVZNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1WNGNHOXlkQ0JqYjI1emRDQnBjMDVwYkNBOUlDaDRPaUJoYm5rcElEMCtJSGdnUFQwOUlHNTFiR3dnZkh3Z2VDQTlQVDBnZFc1a1pXWnBibVZrTzF4dUlsMTkiLCJpbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuLyoqIERpc3RhbmNlIG1hdHJpeCBjbGFzcyBjb21wYXRpYmxlIHdpdGggZGF0YSBzdHJ1Y3R1cmUgb2Ygc2NpcHkuc3BhdGlhbC5kaXN0YW5jZS5wZGlzdCAqL1xuZXhwb3J0IGNsYXNzIERpc3RhbmNlTWF0cml4IHtcbiAgICBnZXQgZGF0YSgpIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cbiAgICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMuX3NpemU7IH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gZGF0YSBEaXN0YW5jZSBkYXRhXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUgTnVtYmVyIG9mIG9yaWdpbmFsIG9ic2VydmF0aW9uc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHNpemUpIHtcbiAgICAgICAgaWYgKHNpemUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudHMgZXJyb3I6IGRhdGEgb3Igc2l6ZSBpcyByZXF1aXJlZC4nKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgdGhpcy5fc2l6ZSA9ICgxICsgTWF0aC5zcXJ0KDEgKyA0ICogMiAqIHRoaXMuX2RhdGEubGVuZ3RoKSkgLyAyO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NpemUgIT0gTWF0aC5mbG9vcih0aGlzLl9zaXplKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBsZW5ndGggJHt0aGlzLl9kYXRhLmxlbmd0aH0gbGVhZHMgdG8gbm9uIGludGVnZXIgc2l6ZSAke3RoaXMuX3NpemV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSBzaXplICogKHNpemUgLSAxKSAvIDI7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPSBkYXRhTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBsZW5ndGguIE9ic2VydmF0aW9ucyBzaXplICR7c2l6ZX0gcmVxdWlyZXMgZGF0YSBsZW5ndGggJHtkYXRhTGVuZ3RofS5gKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGFMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9saW5lYXJpemVJSihpLCBqKSB7XG4gICAgICAgIGlmICghKGkgPCBqKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaSBtdXN0IGJlIGxlc3MgdGhhbiBqJyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplICogaSArIGogLSBNYXRoLmZsb29yKCgoaSArIDIpICogKGkgKyAxKSkgLyAyKTtcbiAgICB9XG4gICAgZ2V0KGksIGopIHtcbiAgICAgICAgaWYgKGkgPT0gailcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmIChpIDwgailcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhW3RoaXMuX2xpbmVhcml6ZUlKKGksIGopXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaiwgaSldO1xuICAgIH1cbiAgICBzZXQoaSwgaiwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGF0YVt0aGlzLl9saW5lYXJpemVJSihpLCBqKV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGNhbGMobGlzdCwgbWV0aG9kKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IERpc3RhbmNlTWF0cml4KHVuZGVmaW5lZCwgc2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBzaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBhbnkgb2YgdGhlIHZhbHVlcyBpcyBudWxsLCBzZXQgZGlzdGFuY2UgdG8gMVxuICAgICAgICAgICAgICAgIHJlcy5zZXQoaSwgaiwgIWlzTmlsKGxpc3RbaV0pICYmICFpc05pbChsaXN0W2pdKSA/IG1ldGhvZChsaXN0W2ldLCBsaXN0W2pdKSA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIC8vIHNxdWFyZXMgZWFjaCB2YWx1ZSBpbiBtYXRyaXggaW4gcGxhY2VcbiAgICBzcXVhcmUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSB0aGlzLl9kYXRhW2ldICoqIDI7XG4gICAgfVxuICAgIC8vIGFkZHMgYW5vdGhlciBtYXRyaXggdG8gdGhpcyBvbmUgaW4gcGxhY2VcbiAgICBhZGQob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NpemUgIT09IG90aGVyLl9zaXplKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRyaWNlcyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZS4gVGhpcyBzaXplOiAke3RoaXMuX3NpemV9LCBvdGhlciBzaXplOiAke290aGVyLl9zaXplfWApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldICs9IG90aGVyLl9kYXRhW2ldO1xuICAgIH1cbiAgICAvLyBzcXVhcmUgcm9vdCBlYWNoIHZhbHVlIGluIG1hdHJpeCBpbiBwbGFjZVxuICAgIHNxcnQoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSBNYXRoLnNxcnQodGhpcy5fZGF0YVtpXSk7XG4gICAgfVxuICAgIC8vbm9ybWlsemUgZGlzdGFuY2UgbWF0cml4IGluIHBsYWNlXG4gICAgbm9ybWFsaXplKCkge1xuICAgICAgICBsZXQgbWluID0gMDtcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuX2RhdGFbMF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFbaV0gPCBtaW4pXG4gICAgICAgICAgICAgICAgbWluID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhW2ldID4gbWF4KVxuICAgICAgICAgICAgICAgIG1heCA9IHRoaXMuX2RhdGFbaV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSByYW5nZSA9PT0gMCA/IHRoaXMuX2RhdGFbaV0gLSBtaW4gOiAodGhpcy5fZGF0YVtpXSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV0YwY21sNExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWkdsemRHRnVZMlV0YldGMGNtbDRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVkQkxFOUJRVThzUlVGQlF5eExRVUZMTEVWQlFVTXNUVUZCVFN4VFFVRlRMRU5CUVVNN1FVRkZPVUlzTWtaQlFUSkdPMEZCUXpOR0xFMUJRVTBzVDBGQlR5eGpRVUZqTzBsQlNYcENMRWxCUVVrc1NVRkJTU3hMUVVGdFFpeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSUzlETEVsQlFVa3NTVUZCU1N4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGZWtNN096dFBRVWRITzBsQlEwZ3NXVUZCV1N4SlFVRnRRaXhGUVVGRkxFbEJRV0U3VVVGRE5VTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1UwRkJVeXhGUVVGRk8xbEJRM0pDTEVsQlFVa3NTVUZCU1N4SlFVRkpMRk5CUVZNN1owSkJRVVVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl3MFEwRkJORU1zUTBGQlF5eERRVUZETzFsQlJYSkdMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlN5eERRVUZETzFsQlEyNUNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJoRkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdaMEpCUTNSRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNN1UwRkRka2M3WVVGQlRUdFpRVU5NTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMnhDTEUxQlFVMHNWVUZCVlN4SFFVRlhMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha1FzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEZWQlFWVTdiMEpCUXpOQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNNRU5CUVRCRExFbEJRVWtzZVVKQlFYbENMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzaEhMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzJGQlEyNUNPMmxDUVVGTk8yZENRVU5NTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3haUVVGWkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdZVUZETTBNN1UwRkRSanRKUVVOSUxFTkJRVU03U1VGRlR5eFpRVUZaTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNN1VVRkRka01zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVGRkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVU4yUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOc1JTeERRVUZETzBsQlJVUXNSMEZCUnl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8xRkJRM1JDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRVaXhQUVVGUExFTkJRVU1zUTBGQlF6dGhRVU5PTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNN1dVRkRXaXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXpzN1dVRkZNME1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRMME1zUTBGQlF6dEpRVVZFTEVkQlFVY3NRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFdEJRV0U3VVVGRGNrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dEpRVU01UXl4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlR5eEpRVUZ4UWl4RlFVRkZMRTFCUVc5RE8xRkJRek5GTEUxQlFVMHNTVUZCU1N4SFFVRlhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGFrTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTJwRExHdEVRVUZyUkR0blFrRkRiRVFzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU5zUmp0VFFVTkdPMUZCUTBRc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVUXNkME5CUVhkRE8wbEJRMnBETEUxQlFVMDdVVUZEV0N4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTndReXhIUVVGSExFTkJRVU1zUzBGQmNVSTdVVUZET1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eExRVUZMTEV0QlFVc3NRMEZCUXl4TFFVRkxPMWxCUXpWQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaMFJCUVdkRUxFbEJRVWtzUTBGQlF5eExRVUZMTEdsQ1FVRnBRaXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTFSeXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndReXhEUVVGRE8wbEJSVVFzTkVOQlFUUkRPMGxCUTNKRExFbEJRVWs3VVVGRFZDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRUxHMURRVUZ0UXp0SlFVTTFRaXhUUVVGVE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFvc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVYzdaMEpCUTNKQ0xFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITzJkQ1FVTnlRaXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOMlFqdFJRVU5FTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRGVFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU40UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE5VWXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibWx0Y0c5eWRDQjdhWE5PYVd4OUlHWnliMjBnSnk0dmRYUnBiSE1uTzF4dVhHNHZLaW9nUkdsemRHRnVZMlVnYldGMGNtbDRJR05zWVhOeklHTnZiWEJoZEdsaWJHVWdkMmwwYUNCa1lYUmhJSE4wY25WamRIVnlaU0J2WmlCelkybHdlUzV6Y0dGMGFXRnNMbVJwYzNSaGJtTmxMbkJrYVhOMElDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHpkR0Z1WTJWTllYUnlhWGdnZTF4dUlDQmZaR0YwWVRvZ1JteHZZWFF6TWtGeWNtRjVPMXh1SUNCZmMybDZaVG9nYm5WdFltVnlPMXh1WEc0Z0lHZGxkQ0JrWVhSaEtDazZJRVpzYjJGME16SkJjbkpoZVNCN0lISmxkSFZ5YmlCMGFHbHpMbDlrWVhSaE95QjlYRzVjYmlBZ1oyVjBJSE5wZW1Vb0tUb2diblZ0WW1WeUlIc2djbVYwZFhKdUlIUm9hWE11WDNOcGVtVTdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdEdiRzloZERNeVFYSnlZWGw5SUdSaGRHRWdSR2x6ZEdGdVkyVWdaR0YwWVZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdjMmw2WlNCT2RXMWlaWElnYjJZZ2IzSnBaMmx1WVd3Z2IySnpaWEoyWVhScGIyNXpYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loa1lYUmhQem9nUm14dllYUXpNa0Z5Y21GNUxDQnphWHBsUHpvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYVdZZ0tITnBlbVVnUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQnBaaUFvWkdGMFlTQTlQU0IxYm1SbFptbHVaV1FwSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduUVhKbmRXMWxiblJ6SUdWeWNtOXlPaUJrWVhSaElHOXlJSE5wZW1VZ2FYTWdjbVZ4ZFdseVpXUXVKeWs3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdFZ1BTQmtZWFJoSVR0Y2JpQWdJQ0FnSUhSb2FYTXVYM05wZW1VZ1BTQW9NU0FySUUxaGRHZ3VjM0Z5ZENneElDc2dOQ0FxSURJZ0tpQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFDa3BJQzhnTWp0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TGw5emFYcGxJQ0U5SUUxaGRHZ3VabXh2YjNJb2RHaHBjeTVmYzJsNlpTa3BYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdTVzUyWVd4cFpDQmtZWFJoSUd4bGJtZDBhQ0FrZTNSb2FYTXVYMlJoZEdFdWJHVnVaM1JvZlNCc1pXRmtjeUIwYnlCdWIyNGdhVzUwWldkbGNpQnphWHBsSUNSN2RHaHBjeTVmYzJsNlpYMWdLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYzJsNlpTQTlJSE5wZW1VN1hHNGdJQ0FnSUNCamIyNXpkQ0JrWVhSaFRHVnVaM1JvT2lCdWRXMWlaWElnUFNCemFYcGxJQ29nS0hOcGVtVWdMU0F4S1NBdklESTdYRzRnSUNBZ0lDQnBaaUFvWkdGMFlTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHRjBZUzVzWlc1bmRHZ2dJVDBnWkdGMFlVeGxibWQwYUNsY2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFbHVkbUZzYVdRZ1pHRjBZU0JzWlc1bmRHZ3VJRTlpYzJWeWRtRjBhVzl1Y3lCemFYcGxJQ1I3YzJsNlpYMGdjbVZ4ZFdseVpYTWdaR0YwWVNCc1pXNW5kR2dnSkh0a1lYUmhUR1Z1WjNSb2ZTNWdLVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlHUmhkR0U3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWtZWFJoSUQwZ2JtVjNJRVpzYjJGME16SkJjbkpoZVNoa1lYUmhUR1Z1WjNSb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOXNhVzVsWVhKcGVtVkpTaWhwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tDRW9hU0E4SUdvcEtTQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oya2diWFZ6ZENCaVpTQnNaWE56SUhSb1lXNGdhaWNwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5emFYcGxJQ29nYVNBcklHb2dMU0JOWVhSb0xtWnNiMjl5S0Nnb2FTQXJJRElwSUNvZ0tHa2dLeUF4S1NrZ0x5QXlLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnZTF4dUlDQWdJR2xtSUNocElEMDlJR29wWEc0Z0lDQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ0lDQmxiSE5sSUdsbUlDaHBJRHdnYWlsY2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtZWFJoVzNSb2FYTXVYMnhwYm1WaGNtbDZaVWxLS0drc0lHb3BYVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHRjBZVnQwYUdsekxsOXNhVzVsWVhKcGVtVkpTaWhxTENCcEtWMDdYRzRnSUgxY2JseHVJQ0J6WlhRb2FUb2diblZ0WW1WeUxDQnFPaUJ1ZFcxaVpYSXNJSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbDlrWVhSaFczUm9hWE11WDJ4cGJtVmhjbWw2WlVsS0tHa3NJR29wWFNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOaGJHTThWRTlpYWo0b2JHbHpkRG9nU1c1a1pYaGhZbXhsUEZSUFltbytMQ0J0WlhSb2IyUTZJQ2hoT2lCVVQySnFMQ0JpT2lCVVQySnFLU0E5UGlCdWRXMWlaWElwT2lCRWFYTjBZVzVqWlUxaGRISnBlQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MybDZaVG9nYm5WdFltVnlJRDBnYkdsemRDNXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ2JtVjNJRVJwYzNSaGJtTmxUV0YwY21sNEtIVnVaR1ZtYVc1bFpDd2djMmw2WlNrN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCemFYcGxPeUJwS3lzcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUhOcGVtVTdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJwWmlCaGJua2diMllnZEdobElIWmhiSFZsY3lCcGN5QnVkV3hzTENCelpYUWdaR2x6ZEdGdVkyVWdkRzhnTVZ4dUlDQWdJQ0FnSUNCeVpYTXVjMlYwS0drc0lHb3NJQ0ZwYzA1cGJDaHNhWE4wVzJsZEtTQW1KaUFoYVhOT2FXd29iR2x6ZEZ0cVhTa2dQeUJ0WlhSb2IyUW9iR2x6ZEZ0cFhTd2diR2x6ZEZ0cVhTa2dPaUF4S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlISmxjenRjYmlBZ2ZWeHVYRzRnSUM4dklITnhkV0Z5WlhNZ1pXRmphQ0IyWVd4MVpTQnBiaUJ0WVhSeWFYZ2dhVzRnY0d4aFkyVmNiaUFnY0hWaWJHbGpJSE54ZFdGeVpTZ3BJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRDBnZEdocGN5NWZaR0YwWVZ0cFhTQXFLaUF5TzF4dUlDQjlYRzVjYmlBZ0x5OGdZV1JrY3lCaGJtOTBhR1Z5SUcxaGRISnBlQ0IwYnlCMGFHbHpJRzl1WlNCcGJpQndiR0ZqWlZ4dUlDQndkV0pzYVdNZ1lXUmtLRzkwYUdWeU9pQkVhWE4wWVc1alpVMWhkSEpwZUNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5emFYcGxJQ0U5UFNCdmRHaGxjaTVmYzJsNlpTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1RXRjBjbWxqWlhNZ2JYVnpkQ0JvWVhabElIUm9aU0J6WVcxbElITnBlbVV1SUZSb2FYTWdjMmw2WlRvZ0pIdDBhR2x6TGw5emFYcGxmU3dnYjNSb1pYSWdjMmw2WlRvZ0pIdHZkR2hsY2k1ZmMybDZaWDFnS1R0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMlJoZEdFdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMmxkSUNzOUlHOTBhR1Z5TGw5a1lYUmhXMmxkTzF4dUlDQjlYRzVjYmlBZ0x5OGdjM0YxWVhKbElISnZiM1FnWldGamFDQjJZV3gxWlNCcGJpQnRZWFJ5YVhnZ2FXNGdjR3hoWTJWY2JpQWdjSFZpYkdsaklITnhjblFvS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBOUlFMWhkR2d1YzNGeWRDaDBhR2x6TGw5a1lYUmhXMmxkS1R0Y2JpQWdmVnh1WEc0Z0lDOHZibTl5Yldsc2VtVWdaR2x6ZEdGdVkyVWdiV0YwY21sNElHbHVJSEJzWVdObFhHNGdJSEIxWW14cFl5QnViM0p0WVd4cGVtVW9LU0I3WEc0Z0lDQWdiR1YwSUcxcGJpQTlJREE3WEc0Z0lDQWdiR1YwSUcxaGVDQTlJSFJvYVhNdVgyUmhkR0ZiTUYwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVmWkdGMFlWdHBYU0E4SUcxcGJpbGNiaUFnSUNBZ0lDQWdiV2x1SUQwZ2RHaHBjeTVmWkdGMFlWdHBYVHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbDlrWVhSaFcybGRJRDRnYldGNEtWeHVJQ0FnSUNBZ0lDQnRZWGdnUFNCMGFHbHpMbDlrWVhSaFcybGRPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0J5WVc1blpTQTlJRzFoZUNBdElHMXBianRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRDBnY21GdVoyVWdQVDA5SURBZ1B5QjBhR2x6TGw5a1lYUmhXMmxkSUMwZ2JXbHVJRG9nS0hSb2FYTXVYMlJoZEdGYmFWMGdMU0J0YVc0cElDOGdLRzFoZUNBdElHMXBiaWs3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSmJtUmxlR0ZpYkdVOFZFOWlhajRnZTF4dUlDQmJhVzVrWlhnNklHNTFiV0psY2wwNklGUlBZbW83WEc0Z0lHZGxkQ0JzWlc1bmRHZ29LVG9nYm5WdFltVnlPMXh1ZlZ4dUlsMTkiLCIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyB1bWogZnJvbSAndW1hcC1qcyc7XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5pbXBvcnQgeyBWZWN0b3IsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgdHJhbnNwb3NlTWF0cml4LCBhc3NlcnQsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgU1BFQmFzZSwgUFNQRUJhc2UsIE9yaWdpbmFsU1BFIH0gZnJvbSAnLi9zcGUnO1xuaW1wb3J0IHsgTWVhc3VyZSwgQXZhaWxhYmxlTWV0cmljcywgaXNCaXRBcnJheU1ldHJpYyB9IGZyb20gJy4vdHlwZWQtbWV0cmljcy90eXBlZC1tZXRyaWNzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xuaW1wb3J0IHsgRGlzdGFuY2VNYXRyaXgsIERpc3RhbmNlTWF0cml4U2VydmljZSwgZGlzdGFuY2VNYXRyaXhQcm94eSwgZG1MaW5lYXJJbmRleCB9IGZyb20gJy4vZGlzdGFuY2UtbWF0cml4JztcbmV4cG9ydCB2YXIgRGltUmVkdWN0aW9uTWV0aG9kcztcbihmdW5jdGlvbiAoRGltUmVkdWN0aW9uTWV0aG9kcykge1xuICAgIERpbVJlZHVjdGlvbk1ldGhvZHNbXCJVTUFQXCJdID0gXCJVTUFQXCI7XG4gICAgRGltUmVkdWN0aW9uTWV0aG9kc1tcIlRfU05FXCJdID0gXCJ0LVNORVwiO1xufSkoRGltUmVkdWN0aW9uTWV0aG9kcyB8fCAoRGltUmVkdWN0aW9uTWV0aG9kcyA9IHt9KSk7XG4vKiogVW1hcCB1c2VzIHByZWNhbGN1bGF0ZWQgZGlzdGFuY2UgbWF0cml4IHRvIHNhdmUgdGltZS4gdGhvdWdoIGZvciB0b28gbXVjaCBkYXRhLCBtZW1vcnkgYmVjb21lcyBjb25zdHJhaW50LlxuICogaWYgd2UgaGF2ZSAxMDAgMDAwIHJvd3MsIGRpc3RhbmNlIG1hdHJpeCB3aWxsIHRha2UgfjEwZ2Igb2YgbWVtb3J5IGFuZCBwcm9iYWJseSBvdmVyZmxvdy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9ESVNUQU5DRV9NQVRSSVhfUk9XUyA9IDIwMDAwO1xuZXhwb3J0IGNsYXNzIFVNQVBPcHRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZWFybmluZ1JhdGUgPSB7IHVpTmFtZTogJ0xlYXJpbmlnIHJhdGUnLCB2YWx1ZTogMSwgdG9vbHRpcDogJ1RoZSBpbml0aWFsIGxlYXJuaW5nIHJhdGUgZm9yIHRoZSBlbWJlZGRpbmcgb3B0aW1pemF0aW9uJyB9O1xuICAgICAgICB0aGlzLm5Db21wb25lbnRzID0geyB1aU5hbWU6ICdDb21wb25lbnRzJywgdmFsdWU6IDIsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGRpbWVuc2lvbnMpIHRvIHByb2plY3QgdGhlIGRhdGEgdG8nIH07XG4gICAgICAgIHRoaXMubkVwb2NocyA9IHsgdWlOYW1lOiAnRXBvY2hzJywgdmFsdWU6IDAsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGVwb2NocyB0byBvcHRpbWl6ZSBlbWJlZGRpbmdzIHZpYSBTR0QuIENvbXB1dGVkIGF1dG9tYXRpY2FsbHkgaWYgc2V0IHRvIDAnIH07XG4gICAgICAgIHRoaXMubk5laWdoYm9ycyA9IHsgdWlOYW1lOiAnTmVpZ2hib3JzJywgdmFsdWU6IDE1LCB0b29sdGlwOiAnVGhlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9ycyB0byBjb25zdHJ1Y3QgdGhlIGZ1enp5IG1hbmlmb2xkJyB9O1xuICAgICAgICB0aGlzLnNwcmVhZCA9IHsgdWlOYW1lOiAnU3ByZWFkJywgdmFsdWU6IDEsIHRvb2x0aXA6ICdUaGUgZWZmZWN0aXZlIHNjYWxlIG9mIGVtYmVkZGVkIHBvaW50cywgdXNlZCB3aXRoIG1pbiBkaXN0YW5jZSB0byBjb250cm9sIHRoZSBjbHVtcGVkL2Rpc3BlcnNlZCBuYXR1cmUgb2YgdGhlIGVtYmVkZGluZycgfTtcbiAgICAgICAgdGhpcy5taW5EaXN0ID0geyB1aU5hbWU6ICdNaW4gZGlzdGFuY2UnLCB2YWx1ZTogMC4xLCB0b29sdGlwOiAnVGhlIGVmZmVjdGl2ZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gZW1iZWRkZWQgcG9pbnRzLCB1c2VkIHdpdGggc3ByZWFkIHRvIGNvbnRyb2wgdGhlIGNsdW1wZWQvZGlzcGVyc2VkIG5hdHVyZSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG5leHBvcnQgY2xhc3MgVFNORU9wdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmVwc2lsb24gPSB7IHVpTmFtZTogJ0Vwc2lsb24nLCB2YWx1ZTogMTAsIHRvb2x0aXA6ICdFcHNpbG9uIGlzIGxlYXJuaW5nIHJhdGUnIH07XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHsgdWlOYW1lOiAnUGVycGxleGl0eScsIHZhbHVlOiAzMCwgdG9vbHRpcDogJ1JvdWdobHkgaG93IG1hbnkgbmVpZ2hib3JzIGVhY2ggcG9pbnQgaW5mbHVlbmNlcycgfTtcbiAgICAgICAgdGhpcy5kaW0gPSB7IHVpTmFtZTogJ0RpbWVuc2lvbmFsaXR5JywgdmFsdWU6IDIsIHRvb2x0aXA6ICdEaW1lbnNpb25hbGl0eSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG4vKiogQWJzdHJhY3QgZGltZW5zaW9uYWxpdHkgcmVkdWNlciAqL1xuY2xhc3MgUmVkdWNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgfVxufVxuLyoqIHQtU05FIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4gKi9cbmNsYXNzIFRTTkVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUU05FUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVFNORVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5pdGVyYXRpb25zID0gb3B0aW9ucz8uaXRlcmF0aW9ucyA/PyAxMDA7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbmFtZSA9IG9wdGlvbnMuZGlzdGFuY2VGbmFtZTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHQtU05FIG1ldGhvZC5cXFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3BhcmFsbGVsRGlzdGFuY2VXb3JrZXJzXSBXaGV0aGVyIHRvIHVzZSBwYXJhbGxlbCBkaXN0YW5jZSB3b3JrZXJzLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybShwYXJhbGxlbERpc3RhbmNlV29ya2Vycykge1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzID8gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeFNlcnZpY2UgPSBuZXcgRGlzdGFuY2VNYXRyaXhTZXJ2aWNlKHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGF3YWl0IG1hdHJpeFNlcnZpY2UuY2FsYyh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZSk7XG4gICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4U2VydmljZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpIDpcbiAgICAgICAgICAgICgoKSA9PiB7IGNvbnN0IHJldCA9IERpc3RhbmNlTWF0cml4LmNhbGModGhpcy5kYXRhLCAoYSwgYikgPT4gdGhpcy5kaXN0YW5jZUZuKGEsIGIpKTsgcmV0Lm5vcm1hbGl6ZSgpOyByZXR1cm4gcmV0LmRhdGE7IH0pKCk7XG4gICAgICAgIGNvbnN0IG1hdHJpeFByb3h5ID0gZGlzdGFuY2VNYXRyaXhQcm94eShkaXN0YW5jZSwgdGhpcy5kYXRhLmxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVkdWNlci5pbml0RGF0YURpc3QobWF0cml4UHJveHkpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9uczsgKytpKVxuICAgICAgICAgICAgdGhpcy5yZWR1Y2VyLnN0ZXAoKTsgLy8gZXZlcnkgdGltZSB5b3UgY2FsbCB0aGlzLCBzb2x1dGlvbiBnZXRzIGJldHRlclxuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogdGhpcy5yZWR1Y2VyLmdldFNvbHV0aW9uKCkgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgVU1BUCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFVNQVBSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgVU1BUFJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFVNQVBSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbmFtZScgaW4gb3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbicgaW4gb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IG9wdGlvbnMuZGlzdGFuY2VGbjtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuYW1lID0gb3B0aW9ucy5kaXN0YW5jZUZuYW1lO1xuICAgICAgICB0aGlzLmRtSW5kZXhGdW5jID0gZG1MaW5lYXJJbmRleCh0aGlzLmRhdGEubGVuZ3RoKTtcbiAgICAgICAgLy9VbWFwIHVzZXMgdmVjdG9yIGluZGV4aW5nLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiBhcnJheSBvZiB2ZWN0b3JzIGFzIGluZGVjZXMuXG4gICAgICAgIHRoaXMudmVjdG9ycyA9IG5ldyBBcnJheSh0aGlzLmRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gW2ldKTtcbiAgICAgICAgdGhpcy51c2luZ0Rpc3RhbmNlTWF0cml4ID0gISghb3B0aW9ucy5wcmVDYWxjdWxhdGVEaXN0YW5jZU1hdHJpeCAmJiB0aGlzLmRhdGEubGVuZ3RoID4gTUFYX0RJU1RBTkNFX01BVFJJWF9ST1dTKTtcbiAgICAgICAgaWYgKCF0aGlzLnVzaW5nRGlzdGFuY2VNYXRyaXgpXG4gICAgICAgICAgICBvcHRpb25zLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgb3B0aW9ucy5kaXN0YW5jZUZuID0gdGhpcy5fZW5jb2RlZERpc3RhbmNlTWF0cml4LmJpbmQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoIDwgMTUpXG4gICAgICAgICAgICBvcHRpb25zLm5OZWlnaGJvcnMgPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IHVtai5VTUFQKG9wdGlvbnMpO1xuICAgICAgICAvLyB0aGlzLnJlZHVjZXIuZGlzdGFuY2VGbiA9IHRoaXMuX2VuY29kZWREaXN0YW5jZS5iaW5kKHRoaXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZGlzdGFuY2Ugd3JhcHBlciB0byBoYXZlIG51bWVyaWMgaW5wdXRzIGluc3RlYWQgb2Ygc3RyaW5nIG9uZXMuXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gYSBUaGUgZmlyc3QgaXRlbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBiIFRoZSBmaXJzdCBpdGVtLlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gRGlzdGFuY2UgbWV0cmljLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIF9lbmNvZGVkRGlzdGFuY2VNYXRyaXgoYSwgYikge1xuICAgICAgICBpZiAoYVswXSA9PT0gYlswXSlcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBpZiAoYVswXSA+IGJbMF0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZU1hdHJpeFt0aGlzLmRtSW5kZXhGdW5jKGJbMF0sIGFbMF0pXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VNYXRyaXhbdGhpcy5kbUluZGV4RnVuYyhhWzBdLCBiWzBdKV07XG4gICAgfVxuICAgIF9lbmNvZGVkRGlzdGFuY2UoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZUZuKHRoaXMuZGF0YVthWzBdXSwgdGhpcy5kYXRhW2JbMF1dKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyBVTUFQIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwYXJhbGxlbERpc3RhbmNlV29ya2Vyc10gV2hldGhlciB0byB1c2UgcGFyYWxsZWwgZGlzdGFuY2UgbWF0cml4IHdvcmtlcnMuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0ocGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpIHtcbiAgICAgICAgaWYgKHRoaXMudXNpbmdEaXN0YW5jZU1hdHJpeCkge1xuICAgICAgICAgICAgdGhpcy5kaXN0YW5jZU1hdHJpeCA9IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzID8gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRyaXhTZXJ2aWNlID0gbmV3IERpc3RhbmNlTWF0cml4U2VydmljZSh0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzdCA9IGF3YWl0IG1hdHJpeFNlcnZpY2UuY2FsYyh0aGlzLmRhdGEsIHRoaXMuZGlzdGFuY2VGbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIG1hdHJpeFNlcnZpY2UudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhTZXJ2aWNlLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCkgOlxuICAgICAgICAgICAgICAgICgoKSA9PiB7IGNvbnN0IHJldCA9IERpc3RhbmNlTWF0cml4LmNhbGModGhpcy5kYXRhLCAoYSwgYikgPT4gdGhpcy5kaXN0YW5jZUZuKGEsIGIpKTsgcmV0dXJuIHJldC5kYXRhOyB9KSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZyA9IHRoaXMucmVkdWNlci5maXQodGhpcy52ZWN0b3JzKTtcbiAgICAgICAgZnVuY3Rpb24gYXJyYXlDYXN0MkNvb3JkaW5hdGVzKGRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXkoZGF0YS5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBpKSA9PiAoVmVjdG9yLmZyb20oZGF0YVtpXSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlbWJlZGRpbmc6IGFycmF5Q2FzdDJDb29yZGluYXRlcyhlbWJlZGRpbmcpLCAuLi4odGhpcy5kaXN0YW5jZU1hdHJpeCA/IHsgZGlzdGFuY2U6IHRoaXMuZGlzdGFuY2VNYXRyaXggfSA6IHt9KSB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBvcmlnaW5hbCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgU1BFUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBTUEVCYXNlKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZW1iID0gYXdhaXQgdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiB0aGlzLnJlZHVjZXIuZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iIH07XG4gICAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIFNQRSBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFBTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgUFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFBTUEVSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBQU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBQU1BFQmFzZShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgbW9kaWZpZWQgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IGF3YWl0IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBvcmlnaW5hbCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBPcmlnaW5hbFNQRVJlZHVjZXJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxuICovXG5jbGFzcyBPcmlnaW5hbFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE9yaWdpbmFsU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgT3JpZ2luYWxTUEVSZWR1Y2VyXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IE9yaWdpbmFsU1BFKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZW1iID0gYXdhaXQgdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiB0aGlzLnJlZHVjZXIuZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iIH07XG4gICAgfVxufVxuY29uc3QgQXZhaWxhYmxlUmVkdWNlcnMgPSB7XG4gICAgJ1VNQVAnOiBVTUFQUmVkdWNlcixcbiAgICAndC1TTkUnOiBUU05FUmVkdWNlcixcbiAgICAnU1BFJzogU1BFUmVkdWNlcixcbiAgICAncFNQRSc6IFBTUEVSZWR1Y2VyLFxuICAgICdPcmlnaW5hbFNQRSc6IE9yaWdpbmFsU1BFUmVkdWNlcixcbn07XG4vKipcbiAqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gbWV0aG9kcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7YW55W119IGRhdGEgVmVjdG9ycyB0byBlbWJlZC5cbiAgICAgKiBAcGFyYW0ge0tub3duTWV0aG9kc30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSB7S25vd25NZXRyaWNzfSBtZXRyaWMgRGlzdGFuY2UgbWV0cmljIHRvIGJlIGNvbXB1dGVkIGJldHdlZW4gZWFjaCBvZiB0aGUgdmVjdG9ycy5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGltcGxlbWVudGluZyBlbWJlZGRlcnMuXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIG1ldGhvZCwgbWV0cmljLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG1lYXN1cmUgPSBuZXcgTWVhc3VyZShtZXRyaWMpLmdldE1lYXN1cmUoKTtcbiAgICAgICAgbGV0IHNwZWNPcHRpb25zID0ge307XG4gICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKG1ldHJpYykpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICBkYXRhW2ldID0gbmV3IEJpdEFycmF5KGRhdGFbaV0uX2RhdGEsIGRhdGFbaV0uX2xlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZCA9PSAnVU1BUCcpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnsgZGF0YTogZGF0YSB9LFxuICAgICAgICAgICAgICAgIC4uLnsgZGlzdGFuY2VGbjogbWVhc3VyZSB9LFxuICAgICAgICAgICAgICAgIC4uLnsgZGlzdGFuY2VGbmFtZTogbWV0cmljIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBuRXBvY2hzOiBvcHRpb25zPy5jeWNsZXMgfSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ3QtU05FJykge1xuICAgICAgICAgICAgc3BlY09wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgLi4ueyBkYXRhOiBkYXRhIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBkaXN0YW5jZUZuOiBtZWFzdXJlIH0sXG4gICAgICAgICAgICAgICAgLi4ueyBkaXN0YW5jZUZuYW1lOiBtZXRyaWMgfSxcbiAgICAgICAgICAgICAgICAuLi57IGl0ZXJhdGlvbnM6IG9wdGlvbnM/LmN5Y2xlcyA/PyB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ1NQRScpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0geyAuLi57IGRhdGE6IGRhdGEgfSwgLi4ueyBkaXN0YW5jZTogbWVhc3VyZSB9LCBkaXN0YW5jZUZ1bmN0aW9uTmFtZTogbWV0cmljLCAuLi5vcHRpb25zIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IHsgLi4ueyBkYXRhOiBkYXRhIH0sIC4uLnsgZGlzdGFuY2U6IG1lYXN1cmUgfSwgZGlzdGFuY2VGdW5jdGlvbk5hbWU6IG1ldHJpYywgLi4ub3B0aW9ucyB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBBdmFpbGFibGVSZWR1Y2Vyc1ttZXRob2RdKHNwZWNPcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgY2hvc2VuIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdHJhbnNwb3NlIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGNvb3JkaW5hdGVzIHRvIGhhdmUgY29sdW1ucy1maXJzdCBvcmllbnRhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzIFdoZXRoZXIgdG8gdXNlIHBhcmFsbGVsIGRpc3RhbmNlIGNvbXB1dGF0aW9uLlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW1iZWRkaW5nIG1ldGhvZCB3YXMgbm90IGZvdW5kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2Zvcm0odHJhbnNwb3NlID0gZmFsc2UsIHBhcmFsbGVsRGlzdGFuY2VXb3JrZXJzKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZHVjZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XG4gICAgICAgIGxldCB7IGVtYmVkZGluZywgZGlzdGFuY2UgfSA9IGF3YWl0IHRoaXMucmVkdWNlci50cmFuc2Zvcm0ocGFyYWxsZWxEaXN0YW5jZVdvcmtlcnMpO1xuICAgICAgICBpZiAodHJhbnNwb3NlKVxuICAgICAgICAgICAgZW1iZWRkaW5nID0gdHJhbnNwb3NlTWF0cml4KGVtYmVkZGluZyk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWJlZGRpbmcgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZSBieSB0eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IHR5cGVOYW1lIHR5cGUgbmFtZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBhdmFpbGFibGVNZXRyaWNzQnlUeXBlKHR5cGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW3R5cGVOYW1lXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMgYXZhaWxhYmxlLlxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWV0aG9kcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZVJlZHVjZXJzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldHJpY3MoKSB7XG4gICAgICAgIGxldCBhbnMgPSBbXTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhBdmFpbGFibGVNZXRyaWNzKS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gT2JqZWN0LnZhbHVlcyhvYmopO1xuICAgICAgICAgICAgYW5zID0gWy4uLmFucywgLi4uYXJyYXldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFucztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRFJDUVVFMFFqdEJRVU0xUWl4UFFVRlBMRXRCUVVzc1IwRkJSeXhOUVVGTkxGTkJRVk1zUTBGQlF6dEJRVU12UWl4UFFVRlBMRVZCUVVNc1NVRkJTU3hGUVVGRExFMUJRVTBzWlVGQlpTeERRVUZETzBGQlEyNURMRTlCUVU4c1JVRkhUQ3hOUVVGTkxFZEJSMUFzVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVONlJDeFBRVUZQTEVWQlEwd3NaVUZCWlN4RlFVTm1MRTFCUVUwc1IwRkRVQ3hOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlF5eFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhOUVVGTkxFOUJRVThzUTBGQlF6dEJRVU55UkN4UFFVRlBMRVZCUVVNc1QwRkJUeXhGUVVGblFpeG5Ra0ZCWjBJc1JVRkROME1zWjBKQlFXZENMRVZCUVhGQ0xFMUJRVTBzSzBKQlFTdENMRU5CUVVNN1FVRkROMFVzVDBGQlR5eFJRVUZSTEUxQlFVMHNlVU5CUVhsRExFTkJRVU03UVVGRkwwUXNUMEZCVHl4RlFVRkRMR05CUVdNc1JVRkJSU3h4UWtGQmNVSXNSVUZCUlN4dFFrRkJiVUlzUlVGQlJTeGhRVUZoTEVWQlFVTXNUVUZCVFN4dFFrRkJiVUlzUTBGQlF6dEJRVTgxUnl4TlFVRk5MRU5CUVU0c1NVRkJXU3h0UWtGSFdEdEJRVWhFTEZkQlFWa3NiVUpCUVcxQ08wbEJRemRDTEc5RFFVRmhMRU5CUVVFN1NVRkRZaXh6UTBGQlpTeERRVUZCTzBGQlEycENMRU5CUVVNc1JVRklWeXh0UWtGQmJVSXNTMEZCYmtJc2JVSkJRVzFDTEZGQlJ6bENPMEZCZDBKRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4RFFVRkRMRTFCUVUwc2QwSkJRWGRDTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUlRsRExFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlVYUkNPMUZCVUVFc2FVSkJRVmtzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1pVRkJaU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMREJFUVVFd1JDeEZRVUZETEVOQlFVTTdVVUZETlVrc1owSkJRVmNzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMRGhFUVVFNFJDeEZRVUZETEVOQlFVTTdVVUZETlVrc1dVRkJUeXhIUVVGMVFpeEZRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNlVVpCUVhsR0xFVkJRVU1zUTBGQlF6dFJRVU12U2l4bFFVRlZMRWRCUVhWQ0xFVkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeHBSVUZCYVVVc1JVRkJReXhEUVVGRE8xRkJRemxKTEZkQlFVMHNSMEZCZFVJc1JVRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxIbElRVUY1U0N4RlFVRkRMRU5CUVVNN1VVRkRPVXdzV1VGQlR5eEhRVUYxUWl4RlFVRkRMRTFCUVUwc1JVRkJSU3hqUVVGakxFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc2JVbEJRVzFKTEVWQlFVTXNRMEZCUXp0SlFVVnNUU3hEUVVGRE8wbEJRVUVzUTBGQlF6dERRVU5zUWp0QlFVVkVMRTFCUVUwc1QwRkJUeXhYUVVGWE8wbEJTM1JDTzFGQlNrRXNXVUZCVHl4SFFVRjFRaXhGUVVGRExFMUJRVTBzUlVGQlJTeFRRVUZUTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hQUVVGUExFVkJRVVVzTUVKQlFUQkNMRVZCUVVNc1EwRkJRenRSUVVOc1J5eGxRVUZWTEVkQlFYVkNMRVZCUVVNc1RVRkJUU3hGUVVGRkxGbEJRVmtzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZMRTlCUVU4c1JVRkJSU3hyUkVGQmEwUXNSVUZCUXl4RFFVRkRPMUZCUTJoSkxGRkJRVWNzUjBGQmRVSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSU3hQUVVGUExFVkJRVVVzYVVOQlFXbERMRVZCUVVNc1EwRkJRenRKUVVVMVJpeERRVUZETzBsQlFVRXNRMEZCUXp0RFFVTnNRanRCUVVWRUxITkRRVUZ6UXp0QlFVTjBReXhOUVVGbExFOUJRVTg3U1VGSGNFSXNXVUZCV1N4UFFVRm5RanRSUVVNeFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVdEdPMEZCUlVRc2MwTkJRWE5ETzBGQlEzUkRMRTFCUVUwc1YwRkJXU3hUUVVGUkxFOUJRVTg3U1VGTkwwSTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCWjBJN1VVRkRNVUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOcVF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1JVRkJSU3hWUVVGVkxFbEJRVWtzUjBGQlJ5eERRVUZETzFGQlF6ZERMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNN1NVRkRka01zUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFNTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMSFZDUVVGcFF6dFJRVU4wUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTzFsQlF6TkVMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6ZEVMRWxCUVVrN1owSkJRMFlzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8yZENRVU55UlN4aFFVRmhMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03WjBKQlF6RkNMRTlCUVU4c1NVRkJTU3hEUVVGRE8yRkJRMkk3V1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0blFrRkRWaXhoUVVGaExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdaMEpCUXpGQ0xFMUJRVTBzUTBGQlF5eERRVUZETzJGQlExUTdVVUZEU0N4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03V1VGRFNpeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRTFCUVUwc1IwRkJSeXhIUVVGSExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMUZCUlM5SUxFMUJRVTBzVjBGQlZ5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRM0JGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlJYWkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU4wUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNhVVJCUVdsRU8xRkJSWGhGTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1JVRkJSU3hGUVVGRExFTkJRVU03U1VGRGNrVXNRMEZCUXp0RFFVTkdPMEZCU1VRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGZEJRVmtzVTBGQlVTeFBRVUZQTzBsQlVTOUNPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVc5Q08xRkJRemxDTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVObUxFMUJRVTBzUTBGQlF5eGxRVUZsTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRia01zVFVGQlRTeERRVUZETEZsQlFWa3NTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOb1F5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhWUVVGWExFTkJRVU03VVVGRmRFTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQll5eERRVUZETzFGQlF6VkRMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGJrUXNhVVpCUVdsR08xRkJRMnBHTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JGTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc01FSkJRVEJDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJRenRSUVVOcVNDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFqdFpRVU16UWl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPMWxCUlhSRUxFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVVNVJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFVkJRVVU3V1VGRGRrSXNUMEZCVHl4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkROVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEY2tNc09FUkJRVGhFTzBsQlEyaEZMRU5CUVVNN1NVRkZSRHM3T3pzN096czdUMEZSUnp0SlFVTlBMSE5DUVVGelFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMUZCUTNaRUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFppeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVTllMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRZaXhQUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0xUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhqUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNMVJDeERRVUZETzBsQlJWTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORUxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGtzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4MVFrRkJhVU03VVVGRGRFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMmRDUVVOb1JTeE5RVUZOTEdGQlFXRXNSMEZCUnl4SlFVRkpMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRuUWtGRE4wUXNTVUZCU1R0dlFrRkRSaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN2IwSkJRM0pGTEdGQlFXRXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenR2UWtGRE1VSXNUMEZCVHl4SlFVRkpMRU5CUVVNN2FVSkJRMkk3WjBKQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN2IwSkJRMVlzWVVGQllTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMjlDUVVNeFFpeE5RVUZOTEVOQlFVTXNRMEZCUXp0cFFrRkRWRHRaUVVOSUxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRTaXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEUxQlFVMHNSMEZCUnl4SFFVRkhMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMU5CUXk5SE8xRkJRMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldwRUxGTkJRVk1zY1VKQlFYRkNMRU5CUVVNc1NVRkJaMEk3V1VGRE4wTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZET1VVc1EwRkJRenRSUVVWRUxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1EwRkJRenRKUVVONFNDeERRVUZETzBOQlEwWTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1ZVRkJWeXhUUVVGUkxFOUJRVTg3U1VGSE9VSTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCWjBJN1VVRkRNVUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJZc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOMFF5eERRVUZETzBsQlJVUTdPenRQUVVkSE8wbEJRMGtzUzBGQlN5eERRVUZETEZOQlFWTTdVVUZEY0VJc1RVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEYUVRc1QwRkJUeXhGUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZETEVOQlFVTTdTVUZETTBRc1EwRkJRenREUVVOR08wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEZkQlFWa3NVMEZCVVN4UFFVRlBPMGxCUnk5Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDTzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRXRCUVVzc1EwRkJReXhUUVVGVE8xRkJRM0JDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMmhFTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hyUWtGQmJVSXNVMEZCVVN4UFFVRlBPMGxCUjNSRE96czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDTzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRXRCUVVzc1EwRkJReXhUUVVGVE8xRkJRM0JDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRMmhFTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVYzdTVUZEZUVJc1RVRkJUU3hGUVVGRkxGZEJRVmM3U1VGRGJrSXNUMEZCVHl4RlFVRkZMRmRCUVZjN1NVRkRjRUlzUzBGQlN5eEZRVUZGTEZWQlFWVTdTVUZEYWtJc1RVRkJUU3hGUVVGRkxGZEJRVmM3U1VGRGJrSXNZVUZCWVN4RlFVRkZMR3RDUVVGclFqdERRVU5zUXl4RFFVRkRPMEZCU1VZN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzY1VKQlFYRkNPMGxCUjJoRE96czdPenM3TzA5QlQwYzdTVUZEU0N4WlFVRlpMRWxCUVZjc1JVRkJSU3hOUVVGdlFpeEZRVUZGTEUxQlFXOUNMRVZCUVVVc1QwRkJhVUk3VVVGRGNFWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1VVRkRha1FzU1VGQlNTeFhRVUZYTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUlhKQ0xFbEJRVWtzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3V1VGRE5VSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8yZENRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRE1VUTdVVUZGUkN4SlFVRkpMRTFCUVUwc1NVRkJTU3hOUVVGTkxFVkJRVVU3V1VGRGNFSXNWMEZCVnl4SFFVRkhPMmRDUVVOYUxFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRPMmRDUVVObUxFZEJRVWNzUlVGQlF5eFZRVUZWTEVWQlFVVXNUMEZCVHl4RlFVRkRPMmRDUVVONFFpeEhRVUZITEVWQlFVTXNZVUZCWVN4RlFVRkZMRTFCUVUwc1JVRkJRenRuUWtGRE1VSXNSMEZCUnl4RlFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZETzJkQ1FVTTNRaXhIUVVGSExFOUJRVTg3WVVGRFdDeERRVUZETzFOQlEwZzdZVUZCVFN4SlFVRkpMRTFCUVUwc1NVRkJTU3hQUVVGUExFVkJRVVU3V1VGRE5VSXNWMEZCVnl4SFFVRkhPMmRDUVVOYUxFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRPMmRDUVVObUxFZEJRVWNzUlVGQlF5eFZRVUZWTEVWQlFVVXNUMEZCVHl4RlFVRkRPMmRDUVVONFFpeEhRVUZITEVWQlFVTXNZVUZCWVN4RlFVRkZMRTFCUVUwc1JVRkJRenRuUWtGRE1VSXNSMEZCUnl4RlFVRkRMRlZCUVZVc1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEpRVUZKTEZOQlFWTXNSVUZCUXp0blFrRkROME1zUjBGQlJ5eFBRVUZQTzJGQlExZ3NRMEZCUXp0VFFVTklPMkZCUVUwc1NVRkJTU3hOUVVGTkxFbEJRVWtzUzBGQlN5eEZRVUZGTzFsQlF6RkNMRmRCUVZjc1IwRkJSeXhGUVVGRExFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRExGRkJRVkVzUlVGQlJTeFBRVUZQTEVWQlFVTXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeE5RVUZOTEVWQlFVVXNSMEZCUnl4UFFVRlBMRVZCUVVNc1EwRkJRenRUUVVOdVJ6dGhRVUZOTzFsQlEwd3NWMEZCVnl4SFFVRkhMRVZCUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlF5eEZRVUZGTEc5Q1FVRnZRaXhGUVVGRkxFMUJRVTBzUlVGQlJTeEhRVUZITEU5QlFVOHNSVUZCUXl4RFFVRkRPMU5CUTI1SE8xRkJRMFFzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMR2xDUVVGcFFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wbEJRelZFTEVOQlFVTTdTVUZGUkRzN096czdPenM3VDBGUlJ6dEpRVU5KTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1dVRkJjVUlzUzBGQlN5eEZRVUZGTEhWQ1FVRnBRenRSUVVOc1JpeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRXRCUVVzc1UwRkJVenRaUVVNMVFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMREJDUVVFd1FpeERRVUZETEVOQlFVTTdVVUZGT1VNc1NVRkJTU3hGUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVWQlFVTXNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRmJFWXNTVUZCU1N4VFFVRlRPMWxCUTFnc1UwRkJVeXhIUVVGSExHVkJRV1VzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVVjZReXhQUVVGUExFVkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRExFTkJRVU03U1VGRGNFUXNRMEZCUXp0SlFVVkVPenM3T3pzN1QwRk5SenRKUVVOSUxFMUJRVTBzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhSUVVFMFFqdFJRVU40UkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hOUVVGTkxFdEJRVXNzWjBKQlFXZENPMUZCUTNwQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSUxFMUJRVTBzUzBGQlN5eG5Ra0ZCWjBJN1VVRkRla0lzU1VGQlNTeEhRVUZITEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSVHRaUVVNNVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycERMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxSUdWemJHbHVkQzFrYVhOaFlteGxJRzFoZUMxc1pXNGdLaTljYm1sdGNHOXlkQ0FxSUdGeklIVnRhaUJtY205dElDZDFiV0Z3TFdwekp6dGNibWx0Y0c5eWRDQjdWRk5PUlgwZ1puSnZiU0FuUUd0bFkydGxiSFF2ZEhOdVpTYzdYRzVwYlhCdmNuUWdlMXh1SUNCUGNIUnBiMjV6TEZ4dUlDQkRiMjl5WkdsdVlYUmxjeXhjYmlBZ1ZtVmpkRzl5TEZ4dUlDQldaV04wYjNKekxGeHVJQ0JOWVhSeWFYZ3NYRzU5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1hHNGdJSFJ5WVc1emNHOXpaVTFoZEhKcGVDeGNiaUFnWVhOelpYSjBMRnh1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UxTlFSVUpoYzJVc0lGQlRVRVZDWVhObExDQlBjbWxuYVc1aGJGTlFSWDBnWm5KdmJTQW5MaTl6Y0dVbk8xeHVhVzF3YjNKMElIdE5aV0Z6ZFhKbExDQkxibTkzYmsxbGRISnBZM01zSUVGMllXbHNZV0pzWlUxbGRISnBZM01zWEc0Z0lHbHpRbWwwUVhKeVlYbE5aWFJ5YVdNc0lFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdabkp2YlNBbkxpOTBlWEJsWkMxdFpYUnlhV056TDNSNWNHVmtMVzFsZEhKcFkzTW5PMXh1YVcxd2IzSjBJRUpwZEVGeWNtRjVJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMMkpwZEMxaGNuSmhlU2M3WEc1cGJYQnZjblFnZTFWTlFWQlFZWEpoYldWMFpYSnpmU0JtY205dElDZDFiV0Z3TFdwekp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5ZWFJ5YVhnc0lFUnBjM1JoYm1ObFRXRjBjbWw0VTJWeWRtbGpaU3dnWkdsemRHRnVZMlZOWVhSeWFYaFFjbTk0ZVN3Z1pHMU1hVzVsWVhKSmJtUmxlSDBnWm5KdmJTQW5MaTlrYVhOMFlXNWpaUzF0WVhSeWFYZ25PMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZENCN1hHNGdJR1JwYzNSaGJtTmxQem9nUm14dllYUXpNa0Z5Y21GNU8xeHVJQ0JsYldKbFpHUnBibWM2SUUxaGRISnBlRHRjYm4xY2JseHVaWGh3YjNKMElHVnVkVzBnUkdsdFVtVmtkV04wYVc5dVRXVjBhRzlrYzN0Y2JpQWdWVTFCVUNBOUlDZFZUVUZRSnl4Y2JpQWdWRjlUVGtVZ1BTQW5kQzFUVGtVblhHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZWTlFWQlBjSFJwYjI1eklIdGNiaUFnYkdWaGNtNXBibWRTWVhSbFB6b2diblZ0WW1WeU8xeHVJQ0J1UTI5dGNHOXVaVzUwY3o4NklHNTFiV0psY2p0Y2JpQWdia1Z3YjJOb2N6ODZJRzUxYldKbGNqdGNiaUFnYms1bGFXZG9ZbTl5Y3o4NklHNTFiV0psY2p0Y2JpQWdjM0J5WldGa1B6b2diblZ0WW1WeU8xeHVJQ0J0YVc1RWFYTjBQem9nYm5WdFltVnlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFVVMDVGVDNCMGFXOXVjeUI3WEc0Z0lHVndjMmxzYjI0L09pQnVkVzFpWlhJN1hHNGdJSEJsY25Cc1pYaHBkSGsvT2lCdWRXMWlaWEk3WEc0Z0lHUnBiVDg2SUc1MWJXSmxjanRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpSR2x0VW1Wa2RXTjBhVzl1VUdGeVlXMGdlMXh1SUNCMWFVNWhiV1U2SUhOMGNtbHVaenRjYmlBZ2RtRnNkV1U2SUc1MWJXSmxjaUI4SUc1MWJHdzdYRzRnSUhSdmIyeDBhWEE2SUhOMGNtbHVaenRjYmlBZ2NHeGhZMlZvYjJ4a1pYSS9PaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JpOHFLaUJWYldGd0lIVnpaWE1nY0hKbFkyRnNZM1ZzWVhSbFpDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2RHOGdjMkYyWlNCMGFXMWxMaUIwYUc5MVoyZ2dabTl5SUhSdmJ5QnRkV05vSUdSaGRHRXNJRzFsYlc5eWVTQmlaV052YldWeklHTnZibk4wY21GcGJuUXVYRzRnS2lCcFppQjNaU0JvWVhabElERXdNQ0F3TURBZ2NtOTNjeXdnWkdsemRHRnVZMlVnYldGMGNtbDRJSGRwYkd3Z2RHRnJaU0IrTVRCbllpQnZaaUJ0WlcxdmNua2dZVzVrSUhCeWIySmhZbXg1SUc5MlpYSm1iRzkzTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ1RVRllYMFJKVTFSQlRrTkZYMDFCVkZKSldGOVNUMWRUSUQwZ01qQXdNREE3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJWVFVGUVQzQjBhVzl1Y3lCN1hHNGdJR3hsWVhKdWFXNW5VbUYwWlRvZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElEMGdlM1ZwVG1GdFpUb2dKMHhsWVhKcGJtbG5JSEpoZEdVbkxDQjJZV3gxWlRvZ01Td2dkRzl2YkhScGNEb2dKMVJvWlNCcGJtbDBhV0ZzSUd4bFlYSnVhVzVuSUhKaGRHVWdabTl5SUhSb1pTQmxiV0psWkdScGJtY2diM0IwYVcxcGVtRjBhVzl1SjMwN1hHNGdJRzVEYjIxd2IyNWxiblJ6T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5RMjl0Y0c5dVpXNTBjeWNzSUhaaGJIVmxPaUF5TENCMGIyOXNkR2x3T2lBblZHaGxJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNoa2FXMWxibk5wYjI1ektTQjBieUJ3Y205cVpXTjBJSFJvWlNCa1lYUmhJSFJ2SjMwN1hHNGdJRzVGY0c5amFITTZJRWxFYVcxU1pXUjFZM1JwYjI1UVlYSmhiU0E5SUh0MWFVNWhiV1U2SUNkRmNHOWphSE1uTENCMllXeDFaVG9nTUN3Z2RHOXZiSFJwY0RvZ0oxUm9aU0J1ZFcxaVpYSWdiMllnWlhCdlkyaHpJSFJ2SUc5d2RHbHRhWHBsSUdWdFltVmtaR2x1WjNNZ2RtbGhJRk5IUkM0Z1EyOXRjSFYwWldRZ1lYVjBiMjFoZEdsallXeHNlU0JwWmlCelpYUWdkRzhnTUNkOU8xeHVJQ0J1VG1WcFoyaGliM0p6T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5UbVZwWjJoaWIzSnpKeXdnZG1Gc2RXVTZJREUxTENCMGIyOXNkR2x3T2lBblZHaGxJRzUxYldKbGNpQnZaaUJ1WldGeVpYTjBJRzVsYVdkb1ltOXljeUIwYnlCamIyNXpkSEoxWTNRZ2RHaGxJR1oxZW5wNUlHMWhibWxtYjJ4a0ozMDdYRzRnSUhOd2NtVmhaRG9nU1VScGJWSmxaSFZqZEdsdmJsQmhjbUZ0SUQwZ2UzVnBUbUZ0WlRvZ0oxTndjbVZoWkNjc0lIWmhiSFZsT2lBeExDQjBiMjlzZEdsd09pQW5WR2hsSUdWbVptVmpkR2wyWlNCelkyRnNaU0J2WmlCbGJXSmxaR1JsWkNCd2IybHVkSE1zSUhWelpXUWdkMmwwYUNCdGFXNGdaR2x6ZEdGdVkyVWdkRzhnWTI5dWRISnZiQ0IwYUdVZ1kyeDFiWEJsWkM5a2FYTndaWEp6WldRZ2JtRjBkWEpsSUc5bUlIUm9aU0JsYldKbFpHUnBibWNuZlR0Y2JpQWdiV2x1UkdsemREb2dTVVJwYlZKbFpIVmpkR2x2YmxCaGNtRnRJRDBnZTNWcFRtRnRaVG9nSjAxcGJpQmthWE4wWVc1alpTY3NJSFpoYkhWbE9pQXdMakVzSUhSdmIyeDBhWEE2SUNkVWFHVWdaV1ptWldOMGFYWmxJRzFwYm1sdGRXMGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQmxiV0psWkdSbFpDQndiMmx1ZEhNc0lIVnpaV1FnZDJsMGFDQnpjSEpsWVdRZ2RHOGdZMjl1ZEhKdmJDQjBhR1VnWTJ4MWJYQmxaQzlrYVhOd1pYSnpaV1FnYm1GMGRYSmxJRzltSUhSb1pTQmxiV0psWkdScGJtY25mVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWdwSUh0OU8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWRk5PUlU5d2RHbHZibk1nZTF4dUlDQmxjSE5wYkc5dU9pQkpSR2x0VW1Wa2RXTjBhVzl1VUdGeVlXMGdQU0I3ZFdsT1lXMWxPaUFuUlhCemFXeHZiaWNzSUhaaGJIVmxPaUF4TUN3Z2RHOXZiSFJwY0RvZ0owVndjMmxzYjI0Z2FYTWdiR1ZoY201cGJtY2djbUYwWlNkOU8xeHVJQ0J3WlhKd2JHVjRhWFI1T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5VR1Z5Y0d4bGVHbDBlU2NzSUhaaGJIVmxPaUF6TUN3Z2RHOXZiSFJwY0RvZ0oxSnZkV2RvYkhrZ2FHOTNJRzFoYm5rZ2JtVnBaMmhpYjNKeklHVmhZMmdnY0c5cGJuUWdhVzVtYkhWbGJtTmxjeWQ5TzF4dUlDQmthVzA2SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlIdDFhVTVoYldVNklDZEVhVzFsYm5OcGIyNWhiR2wwZVNjc0lIWmhiSFZsT2lBeUxDQjBiMjlzZEdsd09pQW5SR2x0Wlc1emFXOXVZV3hwZEhrZ2IyWWdkR2hsSUdWdFltVmtaR2x1WnlkOU8xeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtDa2dlMzA3WEc1OVhHNWNiaThxS2lCQlluTjBjbUZqZENCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkyVnlJQ292WEc1aFluTjBjbUZqZENCamJHRnpjeUJTWldSMVkyVnlJSHRjYmlBZ2NISnZkR1ZqZEdWa0lHUmhkR0U2SUZabFkzUnZjbk03WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJSFJvYVhNdVpHRjBZU0E5SUc5d2RHbHZibk11WkdGMFlUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoYm5sOUlFTmhjblJsYzJsaGJpQmpiMjl5WkdsdVlYUmxJRzltSUhSb2FYTWdaVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaUzRnS2k5Y2JpQWdZV0p6ZEhKaFkzUWdkSEpoYm5ObWIzSnRLSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKelB6b2dZbTl2YkdWaGJpazZJRkJ5YjIxcGMyVThTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBQanRjYm4xY2JseHVMeW9xSUhRdFUwNUZJR1JwYldWdWMybHZibUZzYVhSNUlISmxaSFZqZEdsdmJpNGdLaTljYm1Oc1lYTnpJRlJUVGtWU1pXUjFZMlZ5SUdWNGRHVnVaSE1nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV1IxWTJWeU9pQlVVMDVGTzF4dUlDQndjbTkwWldOMFpXUWdhWFJsY21GMGFXOXVjem9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOek8xeHVJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZHYmpvZ0tHRTZJR0Z1ZVN3Z1lqb2dZVzU1S1NBOVBpQnVkVzFpWlhJN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nWVc0Z2FXNXpkR0Z1WTJVZ2IyWWdWRk5PUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1ZGTk9SVkpsWkhWalpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0c5d2RHbHZibk02SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0J6ZFhCbGNpaHZjSFJwYjI1ektUdGNiaUFnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1ZGTk9SU2h2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1sMFpYSmhkR2x2Ym5NZ1BTQnZjSFJwYjI1elB5NXBkR1Z5WVhScGIyNXpJRDgvSURFd01EdGNiaUFnSUNCMGFHbHpMbVJwYzNSaGJtTmxSbTVoYldVZ1BTQnZjSFJwYjI1ekxtUnBjM1JoYm1ObFJtNWhiV1U3WEc0Z0lDQWdkR2hwY3k1a2FYTjBZVzVqWlVadUlEMGdiM0IwYVc5dWN5NWthWE4wWVc1alpVWnVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVWdFltVmtjeUIwYUdVZ1pHRjBZU0JuYVhabGJpQnBiblJ2SUhSb1pTQjBkMjh0WkdsdFpXNXphVzl1WVd3Z2MzQmhZMlVnZFhOcGJtY2dkQzFUVGtVZ2JXVjBhRzlrTGx4Y1hHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpYU0JYYUdWMGFHVnlJSFJ2SUhWelpTQndZWEpoYkd4bGJDQmthWE4wWVc1alpTQjNiM0pyWlhKekxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aGJubDlJRU5oY25SbGMybGhiaUJqYjI5eVpHbHVZWFJsSUc5bUlIUm9hWE1nWlcxaVpXUmthVzVuSUdGdVpDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QyaGxjbVVnWVhCd2JHbGpZV0pzWlM1Y2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCaGMzbHVZeUIwY21GdWMyWnZjbTBvY0dGeVlXeHNaV3hFYVhOMFlXNWpaVmR2Y210bGNuTS9PaUJpYjI5c1pXRnVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JpQWdJQ0JqYjI1emRDQmthWE4wWVc1alpTQTlJSEJoY21Gc2JHVnNSR2x6ZEdGdVkyVlhiM0pyWlhKeklEOGdZWGRoYVhRZ0tHRnplVzVqSUNncElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHMWhkSEpwZUZObGNuWnBZMlVnUFNCdVpYY2dSR2x6ZEdGdVkyVk5ZWFJ5YVhoVFpYSjJhV05sS0hSeWRXVXNJR1poYkhObEtUdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JwYzNRZ1BTQmhkMkZwZENCdFlYUnlhWGhUWlhKMmFXTmxMbU5oYkdNb2RHaHBjeTVrWVhSaExDQjBhR2x6TG1ScGMzUmhibU5sUm01aGJXVXBPMXh1SUNBZ0lDQWdJQ0J0WVhSeWFYaFRaWEoyYVdObExuUmxjbTFwYm1GMFpTZ3BPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR2x6ZER0Y2JpQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdiV0YwY21sNFUyVnlkbWxqWlM1MFpYSnRhVzVoZEdVb0tUdGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ1pUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtTZ3BJRHBjYmlBZ0lDQWdJQ2dvS1NBOVBpQjdJR052Ym5OMElISmxkQ0E5SUVScGMzUmhibU5sVFdGMGNtbDRMbU5oYkdNb2RHaHBjeTVrWVhSaExDQW9ZU3dnWWlrZ1BUNGdkR2hwY3k1a2FYTjBZVzVqWlVadUtHRXNJR0lwS1RzZ2NtVjBMbTV2Y20xaGJHbDZaU2dwT3lCeVpYUjFjbTRnY21WMExtUmhkR0U3SUgwcEtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCdFlYUnlhWGhRY205NGVTQTlJR1JwYzNSaGJtTmxUV0YwY21sNFVISnZlSGtvWkdsemRHRnVZMlVzSUhSb2FYTXVaR0YwWVM1c1pXNW5kR2dwTzF4dUlDQWdJSFJvYVhNdWNtVmtkV05sY2k1cGJtbDBSR0YwWVVScGMzUW9iV0YwY21sNFVISnZlSGtwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbWwwWlhKaGRHbHZibk03SUNzcmFTbGNiaUFnSUNBZ0lIUm9hWE11Y21Wa2RXTmxjaTV6ZEdWd0tDazdJQzh2SUdWMlpYSjVJSFJwYldVZ2VXOTFJR05oYkd3Z2RHaHBjeXdnYzI5c2RYUnBiMjRnWjJWMGN5QmlaWFIwWlhKY2JseHVJQ0FnSUhKbGRIVnliaUI3WkdsemRHRnVZMlU2SUdScGMzUmhibU5sTENCbGJXSmxaR1JwYm1jNklIUm9hWE11Y21Wa2RXTmxjaTVuWlhSVGIyeDFkR2x2YmlncGZUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdkSGx3WlNCVmJXRndUM0IwYVc5dWN5QTlJRTl3ZEdsdmJuTWdKaUJWVFVGUVVHRnlZVzFsZEdWeWN5QW1JSHR3Y21WRFlXeGpkV3hoZEdWRWFYTjBZVzVqWlUxaGRISnBlRDg2SUdKdmIyeGxZVzU5TzF4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdWVTFCVUNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRlZOUVZCU1pXUjFZMlZ5WEc0Z0tpQkFaWGgwWlc1a2N5QjdVbVZrZFdObGNuMWNiaUFxTDF4dVkyeGhjM01nVlUxQlVGSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJSFZ0YWk1VlRVRlFPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOek8xeHVJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZHYmpvZ1JuVnVZM1JwYjI0N1hHNGdJSEJ5YjNSbFkzUmxaQ0IyWldOMGIzSnpPaUJ1ZFcxaVpYSmJYVnRkTzF4dUlDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVk5ZWFJ5YVhnL09pQkdiRzloZERNeVFYSnlZWGs3WEc0Z0lIQnliM1JsWTNSbFpDQjFjMmx1WjBScGMzUmhibU5sVFdGMGNtbDRPaUJpYjI5c1pXRnVPMXh1SUNCd2NtOTBaV04wWldRZ1pHMUpibVJsZUVaMWJtTTZJQ2hwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeU8xeHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlZUVUZRVW1Wa2RXTmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdFBjSFJwYjI1emZTQnZjSFJwYjI1eklFOXdkR2x2Ym5NZ2RHOGdjR0Z6Y3lCMGJ5QjBhR1VnWTI5dWMzUnlkV04wYjNJdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCVlRVRlFVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVlcxaGNFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQmhjM05sY25Rb0oyUnBjM1JoYm1ObFJtNWhiV1VuSUdsdUlHOXdkR2x2Ym5NcE8xeHVJQ0FnSUdGemMyVnlkQ2duWkdsemRHRnVZMlZHYmljZ2FXNGdiM0IwYVc5dWN5azdYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1SUQwZ2IzQjBhVzl1Y3k1a2FYTjBZVzVqWlVadUlUdGNibHh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlZHYm1GdFpTQTlJRzl3ZEdsdmJuTXVaR2x6ZEdGdVkyVkdibUZ0WlNFN1hHNGdJQ0FnZEdocGN5NWtiVWx1WkdWNFJuVnVZeUE5SUdSdFRHbHVaV0Z5U1c1a1pYZ29kR2hwY3k1a1lYUmhMbXhsYm1kMGFDazdYRzRnSUNBZ0x5OVZiV0Z3SUhWelpYTWdkbVZqZEc5eUlHbHVaR1Y0YVc1bkxDQnpieUIzWlNCdVpXVmtJSFJ2SUdOeVpXRjBaU0JoYmlCaGNuSmhlU0J2WmlCMlpXTjBiM0p6SUdGeklHbHVaR1ZqWlhNdVhHNGdJQ0FnZEdocGN5NTJaV04wYjNKeklEMGdibVYzSUVGeWNtRjVLSFJvYVhNdVpHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NoZkxDQnBLU0E5UGlCYmFWMHBPMXh1SUNBZ0lIUm9hWE11ZFhOcGJtZEVhWE4wWVc1alpVMWhkSEpwZUNBOUlDRW9JVzl3ZEdsdmJuTXVjSEpsUTJGc1kzVnNZWFJsUkdsemRHRnVZMlZOWVhSeWFYZ2dKaVlnZEdocGN5NWtZWFJoTG14bGJtZDBhQ0ErSUUxQldGOUVTVk5VUVU1RFJWOU5RVlJTU1ZoZlVrOVhVeWs3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMblZ6YVc1blJHbHpkR0Z1WTJWTllYUnlhWGdwWEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJwYzNSaGJtTmxSbTRnUFNCMGFHbHpMbDlsYm1OdlpHVmtSR2x6ZEdGdVkyVXVZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJwYzNSaGJtTmxSbTRnUFNCMGFHbHpMbDlsYm1OdlpHVmtSR2x6ZEdGdVkyVk5ZWFJ5YVhndVltbHVaQ2gwYUdsektUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0V1YkdWdVozUm9JRHdnTVRVcFhHNGdJQ0FnSUNCdmNIUnBiMjV6TG01T1pXbG5hR0p2Y25NZ1BTQjBhR2x6TG1SaGRHRXViR1Z1WjNSb0lDMGdNVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dkVzFxTGxWTlFWQW9iM0IwYVc5dWN5azdYRzRnSUNBZ0x5OGdkR2hwY3k1eVpXUjFZMlZ5TG1ScGMzUmhibU5sUm00Z1BTQjBhR2x6TGw5bGJtTnZaR1ZrUkdsemRHRnVZMlV1WW1sdVpDaDBhR2x6S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ2QzSmhjSEJsY2lCMGJ5Qm9ZWFpsSUc1MWJXVnlhV01nYVc1d2RYUnpJR2x1YzNSbFlXUWdiMllnYzNSeWFXNW5JRzl1WlhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3Y205MFpXTjBaV1JjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKYlhYMGdZU0JVYUdVZ1ptbHljM1FnYVhSbGJTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEpiWFgwZ1lpQlVhR1VnWm1seWMzUWdhWFJsYlM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0J0WlhSeWFXTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQlZUVUZRVW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUY5bGJtTnZaR1ZrUkdsemRHRnVZMlZOWVhSeWFYZ29ZVG9nYm5WdFltVnlXMTBzSUdJNklHNTFiV0psY2x0ZEtUb2diblZ0WW1WeUlIdGNiaUFnSUNCcFppQW9ZVnN3WFNBOVBUMGdZbHN3WFNsY2JpQWdJQ0FnSUhKbGRIVnliaUF3TzF4dUlDQWdJR2xtSUNoaFd6QmRJRDRnWWxzd1hTbGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVJwYzNSaGJtTmxUV0YwY21sNElWdDBhR2x6TG1SdFNXNWtaWGhHZFc1aktHSmJNRjBzSUdGYk1GMHBYVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVrYVhOMFlXNWpaVTFoZEhKcGVDRmJkR2hwY3k1a2JVbHVaR1Y0Um5WdVl5aGhXekJkTENCaVd6QmRLVjA3WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1gyVnVZMjlrWldSRWFYTjBZVzVqWlNoaE9pQnVkVzFpWlhKYlhTd2dZam9nYm5WdFltVnlXMTBwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sUm00b2RHaHBjeTVrWVhSaFcyRmJNRjFkTENCMGFHbHpMbVJoZEdGYllsc3dYVjBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnVlUxQlVDQnRaWFJvYjJRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNCaGNtRnNiR1ZzUkdsemRHRnVZMlZYYjNKclpYSnpYU0JYYUdWMGFHVnlJSFJ2SUhWelpTQndZWEpoYkd4bGJDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QyOXlhMlZ5Y3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJoYzNsdVl5QjBjbUZ1YzJadmNtMG9jR0Z5WVd4c1pXeEVhWE4wWVc1alpWZHZjbXRsY25NL09pQmliMjlzWldGdUtUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NTFjMmx1WjBScGMzUmhibU5sVFdGMGNtbDRLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtUnBjM1JoYm1ObFRXRjBjbWw0SUQwZ2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk1nUHlCaGQyRnBkQ0FvWVhONWJtTWdLQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUnlhWGhUWlhKMmFXTmxJRDBnYm1WM0lFUnBjM1JoYm1ObFRXRjBjbWw0VTJWeWRtbGpaU2gwY25WbExDQm1ZV3h6WlNrN1hHNGdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsemRDQTlJR0YzWVdsMElHMWhkSEpwZUZObGNuWnBZMlV1WTJGc1l5aDBhR2x6TG1SaGRHRXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2JtRnRaU2s3WEc0Z0lDQWdJQ0FnSUNBZ2JXRjBjbWw0VTJWeWRtbGpaUzUwWlhKdGFXNWhkR1VvS1R0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkRHRjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzFoZEhKcGVGTmxjblpwWTJVdWRHVnliV2x1WVhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2daVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrb0tTQTZYRzRnSUNBZ0lDQWdJQ2dvS1NBOVBpQjdJR052Ym5OMElISmxkQ0E5SUVScGMzUmhibU5sVFdGMGNtbDRMbU5oYkdNb2RHaHBjeTVrWVhSaExDQW9ZU3dnWWlrZ1BUNGdkR2hwY3k1a2FYTjBZVzVqWlVadUtHRXNJR0lwS1RzZ2NtVjBkWEp1SUhKbGRDNWtZWFJoT3lCOUtTZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0JsYldKbFpHUnBibWNnUFNCMGFHbHpMbkpsWkhWalpYSXVabWwwS0hSb2FYTXVkbVZqZEc5eWN5azdYRzVjYmlBZ0lDQm1kVzVqZEdsdmJpQmhjbkpoZVVOaGMzUXlRMjl2Y21ScGJtRjBaWE1vWkdGMFlUb2diblZ0WW1WeVcxMWJYU2s2SUVOdmIzSmthVzVoZEdWeklIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NoZkxDQnBLU0E5UGlBb1ZtVmpkRzl5TG1aeWIyMG9aR0YwWVZ0cFhTa3BLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2UyVnRZbVZrWkdsdVp6b2dZWEp5WVhsRFlYTjBNa052YjNKa2FXNWhkR1Z6S0dWdFltVmtaR2x1Wnlrc0lDNHVMaWgwYUdsekxtUnBjM1JoYm1ObFRXRjBjbWw0SUQ4Z2UyUnBjM1JoYm1ObE9pQjBhR2x6TG1ScGMzUmhibU5sVFdGMGNtbDRmU0E2SUh0OUtYMDdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUc5eWFXZHBibUZzSUZOUVJTQmthVzFsYm5OcGIyNWhiR2wwZVNCeVpXUjFZM1JwYjI0dVhHNGdLbHh1SUNvZ1FHTnNZWE56SUZOUVJWSmxaSFZqWlhKY2JpQXFJRUJsZUhSbGJtUnpJSHRTWldSMVkyVnlmVnh1SUNvdlhHNWpiR0Z6Y3lCVFVFVlNaV1IxWTJWeUlHVjRkR1Z1WkhNZ1VtVmtkV05sY2lCN1hHNGdJSEJ5YjNSbFkzUmxaQ0J5WldSMVkyVnlPaUJUVUVWQ1lYTmxPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdWeklHRnVJR2x1YzNSaGJtTmxJRzltSUZOUVJWSmxaSFZqWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDNCMGFXOXVjMzBnYjNCMGFXOXVjeUJQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnZEdobElHTnZibk4wY25WamRHOXlMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdVMUJGVW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3pvZ1QzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUhOMWNHVnlLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lIUm9hWE11Y21Wa2RXTmxjaUE5SUc1bGR5QlRVRVZDWVhObEtHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ2RHaGxJRzl5YVdkcGJtRnNJRk5RUlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkZ1ZVgwZ1EyRnlkR1Z6YVdGdUlHTnZiM0prYVc1aGRHVWdiMllnZEdocGN5QmxiV0psWkdScGJtY2dZVzVrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYUdWeVpTQmhjSEJzYVdOaFlteGxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklIUnlZVzV6Wm05eWJTZ3BPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDRnZTF4dUlDQWdJR052Ym5OMElHVnRZaUE5SUdGM1lXbDBJSFJvYVhNdWNtVmtkV05sY2k1bGJXSmxaQ2gwYUdsekxtUmhkR0VwTzF4dUlDQWdJSEpsZEhWeWJpQjdaR2x6ZEdGdVkyVTZJSFJvYVhNdWNtVmtkV05sY2k1a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQmxiV0o5TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQlRVRVVnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVMbHh1SUNwY2JpQXFJRUJqYkdGemN5QlFVMUJGVW1Wa2RXTmxjbHh1SUNvZ1FHVjRkR1Z1WkhNZ2UxSmxaSFZqWlhKOVhHNGdLaTljYm1Oc1lYTnpJRkJUVUVWU1pXUjFZMlZ5SUdWNGRHVnVaSE1nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV1IxWTJWeU9pQlFVMUJGUW1GelpUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJRVTFCRlVtVmtkV05sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQY0hScGIyNXpmU0J2Y0hScGIyNXpJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQlFVMUJGVW1Wa2RXTmxjbHh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3pvZ1QzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUhOMWNHVnlLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lIUm9hWE11Y21Wa2RXTmxjaUE5SUc1bGR5QlFVMUJGUW1GelpTaHZjSFJwYjI1ektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklIUm9aU0J0YjJScFptbGxaQ0JUVUVVZ2JXVjBhRzlrTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoYm5sOUlFTmhjblJsYzJsaGJpQmpiMjl5WkdsdVlYUmxJRzltSUhSb2FYTWdaVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJoYzNsdVl5QjBjbUZ1YzJadmNtMG9LVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JpQWdJQ0JqYjI1emRDQmxiV0lnUFNCaGQyRnBkQ0IwYUdsekxuSmxaSFZqWlhJdVpXMWlaV1FvZEdocGN5NWtZWFJoS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlMlJwYzNSaGJtTmxPaUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJVc0lHVnRZbVZrWkdsdVp6b2daVzFpZlR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdiM0pwWjJsdVlXd2dVMUJGSUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlYRzRnS2lCQVpYaDBaVzVrY3lCN1VtVmtkV05sY24xY2JpQXFMMXh1WTJ4aGMzTWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlJR1Y0ZEdWdVpITWdVbVZrZFdObGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCeVpXUjFZMlZ5T2lCUGNtbG5hVzVoYkZOUVJUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJQY21sbmFXNWhiRk5RUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1QzSnBaMmx1WVd4VFVFVlNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh2Y0hScGIyNXpPaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdjM1Z3WlhJb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUU5eWFXZHBibUZzVTFCRktHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ2RHaGxJRzl5YVdkcGJtRnNJRk5RUlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkZ1ZVgwZ1EyRnlkR1Z6YVdGdUlHTnZiM0prYVc1aGRHVWdiMllnZEdocGN5QmxiV0psWkdScGJtY2dZVzVrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYUdWeVpTQmhjSEJzYVdOaFlteGxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0Z6ZVc1aklIUnlZVzV6Wm05eWJTZ3BPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDRnZTF4dUlDQWdJR052Ym5OMElHVnRZaUE5SUdGM1lXbDBJSFJvYVhNdWNtVmtkV05sY2k1bGJXSmxaQ2gwYUdsekxtUmhkR0VwTzF4dUlDQWdJSEpsZEhWeWJpQjdaR2x6ZEdGdVkyVTZJSFJvYVhNdWNtVmtkV05sY2k1a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQmxiV0o5TzF4dUlDQjlYRzU5WEc1Y2JtTnZibk4wSUVGMllXbHNZV0pzWlZKbFpIVmpaWEp6SUQwZ2UxeHVJQ0FuVlUxQlVDYzZJRlZOUVZCU1pXUjFZMlZ5TEZ4dUlDQW5kQzFUVGtVbk9pQlVVMDVGVW1Wa2RXTmxjaXhjYmlBZ0oxTlFSU2M2SUZOUVJWSmxaSFZqWlhJc1hHNGdJQ2R3VTFCRkp6b2dVRk5RUlZKbFpIVmpaWElzWEc0Z0lDZFBjbWxuYVc1aGJGTlFSU2M2SUU5eWFXZHBibUZzVTFCRlVtVmtkV05sY2l4Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFdHViM2R1VFdWMGFHOWtjeUE5SUd0bGVXOW1JSFI1Y0dWdlppQkJkbUZwYkdGaWJHVlNaV1IxWTJWeWN6dGNibHh1THlvcVhHNGdLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVJRzFsZEdodlpITXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlJSHRjYmlBZ2NISnBkbUYwWlNCeVpXUjFZMlZ5T2lCU1pXUjFZMlZ5SUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdaR0YwWVNCV1pXTjBiM0p6SUhSdklHVnRZbVZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBhRzlrYzMwZ2JXVjBhRzlrSUVWdFltVmtaR2x1WnlCdFpYUm9iMlFnZEc4Z1ltVWdZWEJ3YkdsbFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwY21samMzMGdiV1YwY21saklFUnBjM1JoYm1ObElHMWxkSEpwWXlCMGJ5QmlaU0JqYjIxd2RYUmxaQ0JpWlhSM1pXVnVJR1ZoWTJnZ2IyWWdkR2hsSUhabFkzUnZjbk11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdXMjl3ZEdsdmJuTmRJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ2FXMXdiR1Z0Wlc1MGFXNW5JR1Z0WW1Wa1pHVnljeTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9aR0YwWVRvZ1lXNTVXMTBzSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJvYjJSekxDQnRaWFJ5YVdNNklFdHViM2R1VFdWMGNtbGpjeXdnYjNCMGFXOXVjejg2SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0JqYjI1emRDQnRaV0Z6ZFhKbElEMGdibVYzSUUxbFlYTjFjbVVvYldWMGNtbGpLUzVuWlhSTlpXRnpkWEpsS0NrN1hHNGdJQ0FnYkdWMElITndaV05QY0hScGIyNXpJRDBnZTMwN1hHNWNiaUFnSUNCcFppQW9hWE5DYVhSQmNuSmhlVTFsZEhKcFl5aHRaWFJ5YVdNcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ0lDQWdJR1JoZEdGYmFWMGdQU0J1WlhjZ1FtbDBRWEp5WVhrb1pHRjBZVnRwWFM1ZlpHRjBZU3dnWkdGMFlWdHBYUzVmYkdWdVozUm9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYldWMGFHOWtJRDA5SUNkVlRVRlFKeWtnZTF4dUlDQWdJQ0FnYzNCbFkwOXdkR2x2Ym5NZ1BTQjdYRzRnSUNBZ0lDQWdJQzR1TG50a1lYUmhPaUJrWVhSaGZTeGNiaUFnSUNBZ0lDQWdMaTR1ZTJScGMzUmhibU5sUm00NklHMWxZWE4xY21WOUxGeHVJQ0FnSUNBZ0lDQXVMaTU3WkdsemRHRnVZMlZHYm1GdFpUb2diV1YwY21samZTeGNiaUFnSUNBZ0lDQWdMaTR1ZTI1RmNHOWphSE02SUc5d2RHbHZibk0vTG1ONVkyeGxjMzBzWEc0Z0lDQWdJQ0FnSUM0dUxtOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JXVjBhRzlrSUQwOUlDZDBMVk5PUlNjcElIdGNiaUFnSUNBZ0lITndaV05QY0hScGIyNXpJRDBnZTF4dUlDQWdJQ0FnSUNBdUxpNTdaR0YwWVRvZ1pHRjBZWDBzWEc0Z0lDQWdJQ0FnSUM0dUxudGthWE4wWVc1alpVWnVPaUJ0WldGemRYSmxmU3hjYmlBZ0lDQWdJQ0FnTGk0dWUyUnBjM1JoYm1ObFJtNWhiV1U2SUcxbGRISnBZMzBzWEc0Z0lDQWdJQ0FnSUM0dUxudHBkR1Z5WVhScGIyNXpPaUJ2Y0hScGIyNXpQeTVqZVdOc1pYTWdQejhnZFc1a1pXWnBibVZrZlN4Y2JpQWdJQ0FnSUNBZ0xpNHViM0IwYVc5dWN5eGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHRaWFJvYjJRZ1BUMGdKMU5RUlNjcElIdGNiaUFnSUNBZ0lITndaV05QY0hScGIyNXpJRDBnZXk0dUxudGtZWFJoT2lCa1lYUmhmU3dnTGk0dWUyUnBjM1JoYm1ObE9pQnRaV0Z6ZFhKbGZTd2daR2x6ZEdGdVkyVkdkVzVqZEdsdmJrNWhiV1U2SUcxbGRISnBZeXdnTGk0dWIzQjBhVzl1YzMwN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSE53WldOUGNIUnBiMjV6SUQwZ2V5NHVMbnRrWVhSaE9pQmtZWFJoZlN3Z0xpNHVlMlJwYzNSaGJtTmxPaUJ0WldGemRYSmxmU3dnWkdsemRHRnVZMlZHZFc1amRHbHZiazVoYldVNklHMWxkSEpwWXl3Z0xpNHViM0IwYVc5dWMzMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhSb2FYTXVjbVZrZFdObGNpQTlJRzVsZHlCQmRtRnBiR0ZpYkdWU1pXUjFZMlZ5YzF0dFpYUm9iMlJkS0hOd1pXTlBjSFJwYjI1ektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklIUm9aU0JqYUc5elpXNGdiV1YwYUc5a0xseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJSFJ5WVc1emNHOXpaU0JYYUdWMGFHVnlJSFJ2SUhSeVlXNXpabTl5YlNCamIyOXlaR2x1WVhSbGN5QjBieUJvWVhabElHTnZiSFZ0Ym5NdFptbHljM1FnYjNKcFpXNTBZWFJwYjI0dVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnY0dGeVlXeHNaV3hFYVhOMFlXNWpaVmR2Y210bGNuTWdWMmhsZEdobGNpQjBieUIxYzJVZ2NHRnlZV3hzWld3Z1pHbHpkR0Z1WTJVZ1kyOXRjSFYwWVhScGIyNHVYRzRnSUNBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlNCSlppQjBhR1VnWlcxaVpXUmthVzVuSUcxbGRHaHZaQ0IzWVhNZ2JtOTBJR1p2ZFc1a0xseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aGJubDlJRU5oY25SbGMybGhiaUJqYjI5eVpHbHVZWFJsSUc5bUlIUm9hWE1nWlcxaVpXUmthVzVuSUdGdVpDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QyaGxjbVVnWVhCd2JHbGpZV0pzWlM1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHRnplVzVqSUhSeVlXNXpabTl5YlNoMGNtRnVjM0J2YzJVNklHSnZiMnhsWVc0Z1BTQm1ZV3h6WlN3Z2NHRnlZV3hzWld4RWFYTjBZVzVqWlZkdmNtdGxjbk0vT2lCaWIyOXNaV0Z1S1RvZ1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK0lIdGNiaUFnSUNCcFppQW9kR2hwY3k1eVpXUjFZMlZ5SUQwOVBTQjFibVJsWm1sdVpXUXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxSmxaSFZqWlhJZ2QyRnpJRzV2ZENCa1pXWnBibVZrTGljcE8xeHVYRzRnSUNBZ2JHVjBJSHRsYldKbFpHUnBibWNzSUdScGMzUmhibU5sZlNBOUlHRjNZV2wwSUhSb2FYTXVjbVZrZFdObGNpNTBjbUZ1YzJadmNtMG9jR0Z5WVd4c1pXeEVhWE4wWVc1alpWZHZjbXRsY25NcE8xeHVYRzRnSUNBZ2FXWWdLSFJ5WVc1emNHOXpaU2xjYmlBZ0lDQWdJR1Z0WW1Wa1pHbHVaeUE5SUhSeVlXNXpjRzl6WlUxaGRISnBlQ2hsYldKbFpHUnBibWNwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSHRrYVhOMFlXNWpaVG9nWkdsemRHRnVZMlVzSUdWdFltVmtaR2x1WnpvZ1pXMWlaV1JrYVc1bmZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJRzFsZEhKcFkzTWdZWFpoYVd4aFlteGxJR0o1SUhSNWNHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6ZlNCMGVYQmxUbUZ0WlNCMGVYQmxJRzVoYldWY2JpQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5XMTE5SUUxbGRISnBZeUJ1WVcxbGN5QjNhR2xqYUNCbGVIQmxZM1J6SUhSb1pTQm5hWFpsYmlCa1lYUmhJSFI1Y0dWY2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHRjJZV2xzWVdKc1pVMWxkSEpwWTNOQ2VWUjVjR1VvZEhsd1pVNWhiV1U2SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056VzNSNWNHVk9ZVzFsWFNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmthVzFsYm5OcGIyNWhiR2wwZVNCeVpXUjFZM1JwYjI0Z2JXVjBhRzlrY3lCaGRtRnBiR0ZpYkdVdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ5WldGa2IyNXNlVnh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdSR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZ5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElHRjJZV2xzWVdKc1pVMWxkR2h2WkhNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pWSmxaSFZqWlhKektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJRzFsZEhKcFkzTWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVmhaRzl1YkhsY2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JoZG1GcGJHRmliR1ZOWlhSeWFXTnpLQ2tnZTF4dUlDQWdJR3hsZENCaGJuTTZJSE4wY21sdVoxdGRJRDBnVzEwN1hHNGdJQ0FnVDJKcVpXTjBMblpoYkhWbGN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektTNW1iM0pGWVdOb0tDaHZZbW9wSUQwK0lIdGNiaUFnSUNBZ0lHTnZibk4wSUdGeWNtRjVJRDBnVDJKcVpXTjBMblpoYkhWbGN5aHZZbW9wTzF4dUlDQWdJQ0FnWVc1eklEMGdXeTR1TG1GdWN5d2dMaTR1WVhKeVlYbGRPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCaGJuTTdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vLyBJbnB1dHMgY29ycmVjdG5lc3MgY2hlY2sgdG9vbHNcbi8vTGltaXRhdGlvbiBjb25zdGFudHNcbmNvbnN0IENPTVBfTUlOID0gMTtcbmNvbnN0IFNBTVBMRVNfQ09VTlRfTUlOID0gMTtcbmNvbnN0IEZFQVRVUkVTX0NPVU5UX01JTiA9IDE7XG5jb25zdCBQRVJDRU5UQUdFX01JTiA9IDA7XG5jb25zdCBQRVJDRU5UQUdFX01BWCA9IDEwMDtcbmNvbnN0IE1BWF9FTEVNRU5UU19DT1VOVCA9IDEwMDAwMDAwMDtcbi8vIEVycm9yIG1lc3NhZ2VzXG5jb25zdCBDT01QX1BPU0lUVkVfTUVTID0gJ2NvbXBvbmVudHMgbXVzdCBiZSBwb3NpdGl2ZS4nO1xuY29uc3QgQ09NUF9FWENFU1MgPSAnY29tcG9uZW50cyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gZmVhdXR1cmVzIGNvdW50Lic7XG5jb25zdCBJTkNPUkVSUkVDVF9NSU5fTUFYX01FUyA9ICdtaW4gbXVzdCBiZSBsZXNzIHRoYW4gbWF4Lic7XG5jb25zdCBJTkNPUkVSUkVDVF9GRUFUVVJFU19NRVMgPSAnZmVhdHVyZXMgbXVzdCBiZSBwb3NpdGl2ZS4nO1xuY29uc3QgSU5DT1JFUlJFQ1RfU0FNUExFU19NRVMgPSAnc2FtcGxlcyBtdXN0IGJlIHBvc2l0aXZlLic7XG5jb25zdCBJTkNPUkVSUkVDVF9QRVJDRU5UQUdFX01FUyA9ICd2aW9sYXRvcnMgcGVyY2VudGFnZSBtdXN0IGJlIGZyb20gdGhlIHJhbmdlIGZyb20gMCB0byAxMDAuJztcbmNvbnN0IERBVEFGUkFNRV9JU19UT09fQklHX01FUyA9ICdkYXRhZnJhbWUgaXMgdG9vIGJpZy4nO1xuY29uc3QgVU5TVVBQT1JURURfQ09MVU1OX1RZUEVfTUVTID0gJ3Vuc3VwcG9ydGVkIGNvbHVtbiB0eXBlOiAnO1xuY29uc3QgSU5DT1JSRUNUX01JTl9ESVNUX01FUyA9ICdtaW4gZGlzdGFuY2UgbXVzdCBiZSBwb3NpdGl2ZS4nO1xuY29uc3QgSU5DT1JSRUNUX1NQUkVBRF9NRVMgPSAnc3ByZWFkIG11c3QgYmUgcG9zaXRpdmUuJztcbmNvbnN0IElOQ09SUkVDVF9FUE9DSF9NRVMgPSAnbnVtYmVyIG9mIGVwb2NoIG11c3QgYmUgYXQgbGVhc3QgMS4nO1xuY29uc3QgSU5DT1JSRUNUX05FSUJPUlNfTUVTID0gJ251bWJlciBvZiBuZWlib3JzIG11c3QgYmUgYXQgbGVhc3QgMiBhbmQgbm90IGdyZWF0ZXIgdGhhbiBzYW1wbGVzIGNvdW50Lic7XG5jb25zdCBJTkNPUlJFQ1RfSVRFUkFUSU9OU19NRVMgPSAnbnVtYmVyIG9mIGl0ZXJhdGlvbnMgbXVzdCBiZSBhdCBsZWFzdCAxLic7XG5jb25zdCBJTkNPUlJFQ1RfTEVBUk5JTkdfUkFURV9NRVMgPSAnbGVhcm5pbmcgcmF0ZSBtdXN0IGJlIHBvc2l0aXZlLic7XG5jb25zdCBJTkNPUlJFQ1RfUEVSUExFWElUWV9NRVMgPSAncGVycGxleGl0eSBtdXN0IGJlIGF0IGxlYXN0IDIgYW5kIG5vdCBncmVhdGVyIHRoYW4gc2FtcGxlcyBjb3VudC4nO1xuY29uc3QgSU5DT1JSRUNUX1NURVBTX01FUyA9ICdzdGVwcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4nO1xuY29uc3QgSU5DT1JSRUNUX0NZQ0xFU19NRVMgPSAnY3ljbGVzIG11c3QgYmUgcG9zaXRpdmUuJztcbmNvbnN0IElOQ09SUkVDVF9DVVRPRkZfTUVTID0gJ2N1dG9mZiBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4nO1xuLy8gQ2hlY2sgY29sdW1uIHR5cGVcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbHVtblR5cGUoY29sKSB7XG4gICAgaWYgKChjb2wudHlwZSAhPSBERy5DT0xVTU5fVFlQRS5GTE9BVCkgJiYgKGNvbC50eXBlICE9IERHLkNPTFVNTl9UWVBFLklOVCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihVTlNVUFBPUlRFRF9DT0xVTU5fVFlQRV9NRVMgKyBjb2wudHlwZSk7XG59XG4vLyBDaGVjayBkaW1lbnNpb24gcmVkdWNlciBpbnB1dHNcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0RpbWVuc2lvblJlZHVjZXJJbnB1dHMoZmVhdHVyZXMsIGNvbXBvbmVudHMpIHtcbiAgICBpZiAoY29tcG9uZW50cyA8IENPTVBfTUlOKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoQ09NUF9QT1NJVFZFX01FUyk7XG4gICAgaWYgKGNvbXBvbmVudHMgPiBmZWF0dXJlcy5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT01QX0VYQ0VTUyk7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgZmVhdHVyZXMpXG4gICAgICAgIGNoZWNrQ29sdW1uVHlwZShjb2wpO1xufVxuLy8gQ2hlY2sgVU1BUCBpbnB1dHNcbmV4cG9ydCBmdW5jdGlvbiBjaGVja1VNQVBpbnB1dHMoZmVhdHVyZXMsIGNvbXBvbmVudHMsIGVwb2NocywgbmVpZ2hib3JzLCBtaW5EaXN0LCBzcHJlYWQpIHtcbiAgICAvLyBHZW5lcmFsIGRpbSByZWR1Y2VyIGNoZWNrc1xuICAgIGNoZWNrRGltZW5zaW9uUmVkdWNlcklucHV0cyhmZWF0dXJlcywgY29tcG9uZW50cyk7XG4gICAgLy8gQ2hlY2sgZGF0YSB0b3RhbCBzaXplXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCAqIGZlYXR1cmVzLmJ5SW5kZXgoMCkubGVuZ3RoID4gTUFYX0VMRU1FTlRTX0NPVU5UKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoREFUQUZSQU1FX0lTX1RPT19CSUdfTUVTKTtcbiAgICAvLyBVTUFQIHNwZWNpZmljIGNoZWNrc1xuICAgIGlmIChtaW5EaXN0IDw9IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUlJFQ1RfTUlOX0RJU1RfTUVTKTtcbiAgICBpZiAoc3ByZWFkIDw9IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUlJFQ1RfU1BSRUFEX01FUyk7XG4gICAgaWYgKGVwb2NocyA8IDEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUlJFQ1RfRVBPQ0hfTUVTKTtcbiAgICBpZiAoKG5laWdoYm9ycyA8IDIpIHx8IChuZWlnaGJvcnMgPiBmZWF0dXJlcy5ieUluZGV4KDApLmxlbmd0aCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUlJFQ1RfTkVJQk9SU19NRVMpO1xufVxuLy8gQ2hlY2sgdC1TTkUgaW5wdXRzXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tUU05FaW5wdXRzKGZlYXR1cmVzLCBjb21wb25lbnRzLCBsZWFybmluZ1JhdGUsIHBlcnBsZXhpdHksIGl0ZXJhdGlvbnMpIHtcbiAgICAvLyBHZW5lcmFsIGRpbSByZWR1Y2VyIGNoZWNrc1xuICAgIGNoZWNrRGltZW5zaW9uUmVkdWNlcklucHV0cyhmZWF0dXJlcywgY29tcG9uZW50cyk7XG4gICAgLy8gQ2hlY2sgZGF0YSB0b3RhbCBzaXplXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCAqIGZlYXR1cmVzLmJ5SW5kZXgoMCkubGVuZ3RoID4gTUFYX0VMRU1FTlRTX0NPVU5UKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoREFUQUZSQU1FX0lTX1RPT19CSUdfTUVTKTtcbiAgICAvLyB0LVNORSBzcGVjaWZpYyBjaGVja3NcbiAgICBpZiAobGVhcm5pbmdSYXRlIDwgMClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SUkVDVF9MRUFSTklOR19SQVRFX01FUyk7XG4gICAgaWYgKGl0ZXJhdGlvbnMgPCAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5DT1JSRUNUX0lURVJBVElPTlNfTUVTKTtcbiAgICBpZiAoKHBlcnBsZXhpdHkgPCAyKSB8fCAocGVycGxleGl0eSA+IGZlYXR1cmVzLmJ5SW5kZXgoMCkubGVuZ3RoKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SUkVDVF9QRVJQTEVYSVRZX01FUyk7XG59XG4vLyBDaGVjayBTUEUgaW5wdXRzXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tTUEVpbnB1dHMoZmVhdHVyZXMsIGRpbWVuc2lvbiwgc3RlcHMsIGN5Y2xlcywgY3V0b2ZmLCBsYW1iZGEpIHtcbiAgICAvLyBHZW5lcmFsIGRpbSByZWR1Y2VyIGNoZWNrc1xuICAgIGNoZWNrRGltZW5zaW9uUmVkdWNlcklucHV0cyhmZWF0dXJlcywgZGltZW5zaW9uKTtcbiAgICAvLyBDaGVjayBkYXRhIHRvdGFsIHNpemVcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoICogZmVhdHVyZXMuYnlJbmRleCgwKS5sZW5ndGggPiBNQVhfRUxFTUVOVFNfQ09VTlQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihEQVRBRlJBTUVfSVNfVE9PX0JJR19NRVMpO1xuICAgIC8vIFNQRSBzcGVjaWZpYyBjaGVja3NcbiAgICBpZiAoc3RlcHMgPCAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5DT1JSRUNUX1NURVBTX01FUyk7XG4gICAgaWYgKGN5Y2xlcyA8PSAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5DT1JSRUNUX0NZQ0xFU19NRVMpO1xuICAgIGlmIChjdXRvZmYgPCAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5DT1JSRUNUX0NVVE9GRl9NRVMpO1xuICAgIGlmIChsYW1iZGEgPD0gMClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SUkVDVF9MRUFSTklOR19SQVRFX01FUyk7XG59XG4vLyBDaGVjayB3YXNtIGRpbWVuc2lvbiByZWR1Y2VyIGlucHV0c1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrV2FzbURpbWVuc2lvblJlZHVjZXJJbnB1dHMoZmVhdHVyZXMsIGNvbXBvbmVudHMpIHtcbiAgICAvLyBHZW5lcmFsIGRpbSByZWR1Y2VyIGNoZWNrc1xuICAgIGNoZWNrRGltZW5zaW9uUmVkdWNlcklucHV0cyhmZWF0dXJlcywgY29tcG9uZW50cyk7XG4gICAgLy8gQ2hlY2sgZGF0YSB0b3RhbCBzaXplXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCAqIGZlYXR1cmVzLmJ5SW5kZXgoMCkubGVuZ3RoID4gTUFYX0VMRU1FTlRTX0NPVU5UKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoREFUQUZSQU1FX0lTX1RPT19CSUdfTUVTKTtcbn1cbi8vIENoZWNrIGlucHV0cyBvZiBkYXRhIGZvciBTVk0gdGVzdGluZyBnZW5lcmF0b3JcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0dlbmVyYXRvclNWTWlucHV0cyhzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKSB7XG4gICAgaWYgKG1pbiA+PSBtYXgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUkVSUkVDVF9NSU5fTUFYX01FUyk7XG4gICAgaWYgKGZlYXR1cmVzQ291bnQgPCBGRUFUVVJFU19DT1VOVF9NSU4pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUkVSUkVDVF9GRUFUVVJFU19NRVMpO1xuICAgIGlmIChzYW1wbGVzQ291bnQgPCBTQU1QTEVTX0NPVU5UX01JTilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOQ09SRVJSRUNUX1NBTVBMRVNfTUVTKTtcbiAgICBpZiAoKHZpb2xhdG9yc1BlcmNlbnRhZ2UgPCBQRVJDRU5UQUdFX01JTikgfHwgKHZpb2xhdG9yc1BlcmNlbnRhZ2UgPiBQRVJDRU5UQUdFX01BWCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTkNPUkVSUkVDVF9QRVJDRU5UQUdFX01FUyk7XG59XG4vLyBSZXR1cm5zIHJvd3Mgb2YgY29sdW1uIGRhdGFcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dzT2ZOdW1lcmljYWxDb2x1bW5ucyhjb2x1bW5MaXN0KSB7XG4gICAgY29uc3QgY29sdW1ucyA9IGNvbHVtbkxpc3QudG9MaXN0KCk7XG4gICAgY29uc3Qgcm93Q291bnQgPSBjb2x1bW5zWzBdLmxlbmd0aDtcbiAgICBjb25zdCBjb2xDb3VudCA9IGNvbHVtbnMubGVuZ3RoO1xuICAgIGNvbnN0IG91dHB1dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSlcbiAgICAgICAgb3V0cHV0LnB1c2goQXJyYXkoY29sQ291bnQpKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbENvdW50OyArK2opIHtcbiAgICAgICAgY29uc3QgY29sID0gY29sdW1uc1tqXTtcbiAgICAgICAgY2hlY2tDb2x1bW5UeXBlKGNvbCk7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gY29sLmdldFJhd0RhdGEoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgKytpKVxuICAgICAgICAgICAgb3V0cHV0W2ldW2pdID0gYXJyYXlbaV07XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59XG4iLCIvLyBFeHBsb3JhdG9yeSBkYXRhIGFuYWx5c2lzIChFREEpIHRvb2xzXG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBEaW1lbnNpb25hbGl0eVJlZHVjZXIgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9yZWR1Y2UtZGltZW5zaW9uYWxpdHknO1xuaW1wb3J0IHsgVmVjdG9yTWV0cmljc05hbWVzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgeyBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNJbldlYldvcmtlciwgX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25JbldlYldvcmtlciB9IGZyb20gJy4uL3dhc20vRURBQVBJJztcbmltcG9ydCB7IGNoZWNrV2FzbURpbWVuc2lvblJlZHVjZXJJbnB1dHMsIGNoZWNrVU1BUGlucHV0cywgY2hlY2tUU05FaW5wdXRzLCBjaGVja1NQRWlucHV0cywgZ2V0Um93c09mTnVtZXJpY2FsQ29sdW1ubnMgfSBmcm9tICcuL3V0aWxzJztcbi8vIFByaW5jaXBhbCBjb21wb25lbnRzIGFuYWx5c2lzIChQQ0EpXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVBDQSh0YWJsZSwgZmVhdHVyZXMsIGNvbXBvbmVudHMsIGNlbnRlciwgc2NhbGUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjaGVja1dhc21EaW1lbnNpb25SZWR1Y2VySW5wdXRzKGZlYXR1cmVzLCBjb21wb25lbnRzKTtcbiAgICAgICAgY29uc3QgY2VudGVyTnVtID0gY2VudGVyID8gMSA6IDA7XG4gICAgICAgIGNvbnN0IHNjYWxlTnVtID0gc2NhbGUgPyAxIDogMDtcbiAgICAgICAgcmV0dXJuIHlpZWxkIF9wcmluY2lwYWxDb21wb25lbnRBbmFseXNpc0luV2ViV29ya2VyKHRhYmxlLCBmZWF0dXJlcywgY29tcG9uZW50cywgY2VudGVyTnVtLCBzY2FsZU51bSk7XG4gICAgfSk7XG59XG4vLyBQYXJ0aWFsIGxlYXN0IHNxdWFyZSByZWdyZXNzaW9uIChQTFMpXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVBMUyh0YWJsZSwgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBJbnB1dHMgYXJlIGNoZWNrZWQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGluIFBDQSwgc2luY2UgdGhlIHNhbWUgY29tcHV0YXRpb25zIGFyZSBhcHBsaWVkLlxuICAgICAgICBjaGVja1dhc21EaW1lbnNpb25SZWR1Y2VySW5wdXRzKGZlYXR1cmVzLCBjb21wb25lbnRzKTtcbiAgICAgICAgcmV0dXJuIHlpZWxkIF9wYXJ0aWFsTGVhc3RTcXVhcmVSZWdyZXNzaW9uSW5XZWJXb3JrZXIodGFibGUsIGZlYXR1cmVzLCBwcmVkaWN0LCBjb21wb25lbnRzKTtcbiAgICB9KTtcbn1cbi8vIFVuaWZvcm0gTWFuaWZvbGQgQXBwcm94aW1hdGlvbiBhbmQgUHJvamVjdGlvbiAoVU1BUClcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlVU1BUChmZWF0dXJlcywgY29tcG9uZW50cywgZXBvY2hzLCBuZWlnaGJvcnMsIG1pbkRpc3QsIHNwcmVhZCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGNoZWNrIGlucHV0c1xuICAgICAgICBjaGVja1VNQVBpbnB1dHMoZmVhdHVyZXMsIGNvbXBvbmVudHMsIGVwb2NocywgbmVpZ2hib3JzLCBtaW5EaXN0LCBzcHJlYWQpO1xuICAgICAgICAvLyBnZXQgcm93LWJ5LXJvdyBkYXRhXG4gICAgICAgIGNvbnN0IGRhdGEgPSBnZXRSb3dzT2ZOdW1lcmljYWxDb2x1bW5ucyhmZWF0dXJlcyk7XG4gICAgICAgIGxldCB3b3JrZXJPdXRwdXQ7XG4gICAgICAgIC8vIFVNQVAgaW4gd2Vid29ya2VyXG4gICAgICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCd3b3JrZXJzL3VtYXAtd29ya2VyLnRzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBuQ29tcG9uZW50czogY29tcG9uZW50cyxcbiAgICAgICAgICAgICAgICAgICAgbkVwb2NoczogZXBvY2hzLFxuICAgICAgICAgICAgICAgICAgICBuTmVpZ2hib3JzOiBuZWlnaGJvcnMsXG4gICAgICAgICAgICAgICAgICAgIG1pbkRpc3Q6IG1pbkRpc3QsXG4gICAgICAgICAgICAgICAgICAgIHNwcmVhZDogc3ByZWFkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShlLmRhdGEuZW1iZWRkaW5ncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgeWllbGQgcHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7IHdvcmtlck91dHB1dCA9IHJlc3VsdDsgfSwgZXJyb3IgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5aW5nIFVNQVAgZmFpbHMuJyk7IH0pO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmdzID0gd29ya2VyT3V0cHV0O1xuICAgICAgICBjb25zdCByb3dDb3VudCA9IGVtYmVkZGluZ3MubGVuZ3RoO1xuICAgICAgICBjb25zdCByYW5nZSA9IFsuLi5BcnJheShjb21wb25lbnRzKS5rZXlzKCldO1xuICAgICAgICAvLyBDcmVhdGUgb3V0cHV0XG4gICAgICAgIC8vIGNvbHVtbnMgZGF0YVxuICAgICAgICBjb25zdCB1bWFwQ29sdW1uc0RhdGEgPSByYW5nZS5tYXAoXyA9PiBuZXcgRmxvYXQzMkFycmF5KHJvd0NvdW50KSk7XG4gICAgICAgIC8vIHBlcmZvcm0gdHJhbnNwb25hdGlvblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0NvdW50OyArK2kpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbXBvbmVudHM7ICsrailcbiAgICAgICAgICAgICAgICB1bWFwQ29sdW1uc0RhdGFbal1baV0gPSBlbWJlZGRpbmdzW2ldW2pdO1xuICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKHJhbmdlLm1hcChpID0+IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdVTUFQJyArIGkudG9TdHJpbmcoKSwgdW1hcENvbHVtbnNEYXRhW2ldKSkpO1xuICAgIH0pO1xufSAvLyBjb21wdXRlVU1BUFxuLy8gdC1kaXN0cmlidXRlZCBzdG9jaGFzdGljIG5laWdoYm9yIGVtYmVkZGluZyAodC1TTkUpXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVRTTkUoZmVhdHVyZXMsIGNvbXBvbmVudHMsIGxlYXJuaW5nUmF0ZSwgcGVycGxleGl0eSwgaXRlcmF0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGNoZWNrIGlucHV0c1xuICAgICAgICBjaGVja1RTTkVpbnB1dHMoZmVhdHVyZXMsIGNvbXBvbmVudHMsIGxlYXJuaW5nUmF0ZSwgcGVycGxleGl0eSwgaXRlcmF0aW9ucyk7XG4gICAgICAgIC8vIGdldCByb3ctYnktcm93IGRhdGFcbiAgICAgICAgY29uc3QgZGF0YSA9IGdldFJvd3NPZk51bWVyaWNhbENvbHVtbm5zKGZlYXR1cmVzKTtcbiAgICAgICAgbGV0IHdvcmtlck91dHB1dDtcbiAgICAgICAgLy8gdC1TTkUgaW4gd2Vid29ya2VyXG4gICAgICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCd3b3JrZXJzL3RzbmUtd29ya2VyLnRzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBsZWFybmluZ1JhdGU6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgcGVycGxleGl0eTogcGVycGxleGl0eSxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50czogY29tcG9uZW50cyxcbiAgICAgICAgICAgICAgICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9uc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZS5kYXRhLmVtYmVkZGluZ3MpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHlpZWxkIHByb21pc2UudGhlbihyZXN1bHQgPT4geyB3b3JrZXJPdXRwdXQgPSByZXN1bHQ7IH0sIGVycm9yID0+IHsgdGhyb3cgbmV3IEVycm9yKCdhcHBseWluZyB0LVNORSBmYWlscy4nKTsgfSk7XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZ3MgPSB3b3JrZXJPdXRwdXQ7XG4gICAgICAgIGNvbnN0IHJvd0NvdW50ID0gZW1iZWRkaW5ncy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gWy4uLkFycmF5KGNvbXBvbmVudHMpLmtleXMoKV07XG4gICAgICAgIC8vIENyZWF0ZSBvdXRwdXRcbiAgICAgICAgLy8gY29sdW1ucyBkYXRhXG4gICAgICAgIGNvbnN0IHVtYXBDb2x1bW5zRGF0YSA9IHJhbmdlLm1hcChfID0+IG5ldyBGbG9hdDMyQXJyYXkocm93Q291bnQpKTtcbiAgICAgICAgLy8gcGVyZm9ybSB0cmFuc3BvbmF0aW9uXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93Q291bnQ7ICsraSlcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29tcG9uZW50czsgKytqKVxuICAgICAgICAgICAgICAgIHVtYXBDb2x1bW5zRGF0YVtqXVtpXSA9IGVtYmVkZGluZ3NbaV1bal07XG4gICAgICAgIHJldHVybiBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMocmFuZ2UubWFwKGkgPT4gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3RTTkUnICsgaS50b1N0cmluZygpLCB1bWFwQ29sdW1uc0RhdGFbaV0pKSk7XG4gICAgfSk7XG59IC8vIGNvbXB1dGVUU05FXG4vLyBTdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcgKFNQRSlcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU1BFKGZlYXR1cmVzLCBkaW1lbnNpb24sIHN0ZXBzLCBjeWNsZXMsIGN1dG9mZiwgbGFtYmRhKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gY2hlY2sgaW5wdXRzXG4gICAgICAgIGNoZWNrU1BFaW5wdXRzKGZlYXR1cmVzLCBkaW1lbnNpb24sIHN0ZXBzLCBjeWNsZXMsIGN1dG9mZiwgbGFtYmRhKTtcbiAgICAgICAgLy8gZ2V0IHJvdy1ieS1yb3cgZGF0YVxuICAgICAgICBjb25zdCBkYXRhID0gZ2V0Um93c09mTnVtZXJpY2FsQ29sdW1ubnMoZmVhdHVyZXMpO1xuICAgICAgICAvLyBTUEUgcmVkdWNlclxuICAgICAgICBjb25zdCBzcGUgPSBuZXcgRGltZW5zaW9uYWxpdHlSZWR1Y2VyKGRhdGEsICdTUEUnLCBWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuLCB7XG4gICAgICAgICAgICBkaW1lbnNpb246IGRpbWVuc2lvbixcbiAgICAgICAgICAgIHN0ZXBzOiBzdGVwcyxcbiAgICAgICAgICAgIGN5Y2xlczogY3ljbGVzLFxuICAgICAgICAgICAgY3V0b2ZmOiBjdXRvZmYsXG4gICAgICAgICAgICBsYW1iZGE6IGxhbWJkYVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gY29tcHV0ZSBlbWJlZGRpbmdzXG4gICAgICAgIGNvbnN0IGVtYmVkZGluZ3MgPSAoeWllbGQgc3BlLnRyYW5zZm9ybShmYWxzZSwgZmFsc2UpKS5lbWJlZGRpbmc7XG4gICAgICAgIGNvbnN0IHJvd0NvdW50ID0gZW1iZWRkaW5ncy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gWy4uLkFycmF5KGRpbWVuc2lvbikua2V5cygpXTtcbiAgICAgICAgLy8gQ3JlYXRlIG91dHB1dFxuICAgICAgICAvLyBjb2x1bW5zIGRhdGFcbiAgICAgICAgY29uc3QgdW1hcENvbHVtbnNEYXRhID0gcmFuZ2UubWFwKF8gPT4gbmV3IEZsb2F0MzJBcnJheShyb3dDb3VudCkpO1xuICAgICAgICAvLyBwZXJmb3JtIHRyYW5zcG9uYXRpb25cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgKytpKVxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb247ICsrailcbiAgICAgICAgICAgICAgICB1bWFwQ29sdW1uc0RhdGFbal1baV0gPSBlbWJlZGRpbmdzW2ldW2pdO1xuICAgICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKHJhbmdlLm1hcChpID0+IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdTUEUnICsgaS50b1N0cmluZygpLCB1bWFwQ29sdW1uc0RhdGFbaV0pKSk7XG4gICAgfSk7XG59IC8vIGNvbXB1dGVTUEVcbiIsIi8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbi8vIEphdmFTY3JpcHQgQVBJIGZvciBjYWxsIHdhc20tZnVuY3Rpb25zIGZyb20gdGhlIG1vZHVsZSBFREFcblxuLy8gSW1wb3J0cyBmb3IgY2FsbCB3YXNtIHJ1bnRpbWUtc3lzdGVtOiBpbiB0aGUgbWFpbiBzdHJlYW0gYW5kIGluIHdlYndvcmtlcnNcbmltcG9ydCB7Y2FsbFdhc219IGZyb20gJy4uL3dhc20vY2FsbFdhc20nO1xuaW1wb3J0IHtnZXRDcHBJbnB1dCwgZ2V0UmVzdWx0fSBmcm9tICcuLi93YXNtL2NhbGxXYXNtRm9yV2ViV29ya2VyJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9pbml0RURBQVBJKCkge1xuICBhd2FpdCBpbml0RURBKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXModGFibGUsIGNvbHVtbnMsIGNvbXBvbmVudHNDb3VudCwgY2VudGVyTnVtLCBzY2FsZU51bSkge1xuICByZXR1cm4gY2FsbFdhc20oRURBLCAncHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXMnLCBbY29sdW1ucywgY29tcG9uZW50c0NvdW50LCBjZW50ZXJOdW0sIHNjYWxlTnVtXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBfcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNJbldlYldvcmtlcih0YWJsZSwgY29sdW1ucywgY29tcG9uZW50c0NvdW50LCBjZW50ZXJOdW0sIHNjYWxlTnVtKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvcHJpbmNpcGFsQ29tcG9uZW50QW5hbHlzaXNXb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydwcmluY2lwYWxDb21wb25lbnRBbmFseXNpcyddLmFyZ3VtZW50cyxbY29sdW1ucywgY29tcG9uZW50c0NvdW50LCBjZW50ZXJOdW0sIHNjYWxlTnVtXSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3ByaW5jaXBhbENvbXBvbmVudEFuYWx5c2lzJ10sIGUuZGF0YSkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZXJyb3IoZGYsIGNvbDEsIGNvbDIpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ2Vycm9yJywgW2NvbDEsIGNvbDJdKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9lcnJvckluV2ViV29ya2VyKGRmLCBjb2wxLCBjb2wyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvZXJyb3JXb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydlcnJvciddLmFyZ3VtZW50cyxbY29sMSwgY29sMl0pKTtcbiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgcmVzb2x2ZShnZXRSZXN1bHQoRURBWydlcnJvciddLCBlLmRhdGEpKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb24odGFibGUsIGZlYXR1cmVzLCBwcmVkaWN0LCBjb21wb25lbnRzQ291bnQpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb24nLCBbZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHNDb3VudF0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25JbldlYldvcmtlcih0YWJsZSwgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHNDb3VudCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi4vd2FzbS93b3JrZXJzL3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb25Xb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydwYXJ0aWFsTGVhc3RTcXVhcmVSZWdyZXNzaW9uJ10uYXJndW1lbnRzLFtmZWF0dXJlcywgcHJlZGljdCwgY29tcG9uZW50c0NvdW50XSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3BhcnRpYWxMZWFzdFNxdWFyZVJlZ3Jlc3Npb24nXSwgZS5kYXRhKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9nZW5lcmF0ZURhdGFzZXQoa2VybmVsLCBrZXJuZWxQYXJhbXMsIHNhbXBsZXNDb3VudCwgZmVhdHVyZXNDb3VudCwgbWluLCBtYXgsIHZpb2xhdG9yc1BlcmNlbnRhZ2UpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ2dlbmVyYXRlRGF0YXNldCcsIFtrZXJuZWwsIGtlcm5lbFBhcmFtcywgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZV0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX2dlbmVyYXRlRGF0YXNldEluV2ViV29ya2VyKGtlcm5lbCwga2VybmVsUGFyYW1zLCBzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvZ2VuZXJhdGVEYXRhc2V0V29ya2VyLmpzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKGdldENwcElucHV0KEVEQVsnZ2VuZXJhdGVEYXRhc2V0J10uYXJndW1lbnRzLFtrZXJuZWwsIGtlcm5lbFBhcmFtcywgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZV0pKTtcbiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgcmVzb2x2ZShnZXRSZXN1bHQoRURBWydnZW5lcmF0ZURhdGFzZXQnXSwgZS5kYXRhKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9ub3JtYWxpemVEYXRhc2V0KGRhdGEpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ25vcm1hbGl6ZURhdGFzZXQnLCBbZGF0YV0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX25vcm1hbGl6ZURhdGFzZXRJbldlYldvcmtlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvbm9ybWFsaXplRGF0YXNldFdvcmtlci5qcycsIGltcG9ydC5tZXRhLnVybCkpO1xuICAgIHdvcmtlci5wb3N0TWVzc2FnZShnZXRDcHBJbnB1dChFREFbJ25vcm1hbGl6ZURhdGFzZXQnXS5hcmd1bWVudHMsW2RhdGFdKSk7XG4gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgIHJlc29sdmUoZ2V0UmVzdWx0KEVEQVsnbm9ybWFsaXplRGF0YXNldCddLCBlLmRhdGEpKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX3RyYWluTFNTVk0oZ2FtbWEsIGtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgZGF0YXNldCwgbGFiZWxzKSB7XG4gIHJldHVybiBjYWxsV2FzbShFREEsICd0cmFpbkxTU1ZNJywgW2dhbW1hLCBrZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGRhdGFzZXQsIGxhYmVsc10pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX3RyYWluTFNTVk1JbldlYldvcmtlcihnYW1tYSwga2VybmVsLCBrZXJuZWxQYXJhbXMsIG1vZGVsUGFyYW1zQ291bnQsIHByZWNvbXB1dGVkV2VpZ2h0c0NvdW50LCBkYXRhc2V0LCBsYWJlbHMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4uL3dhc20vd29ya2Vycy90cmFpbkxTU1ZNV29ya2VyLmpzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKGdldENwcElucHV0KEVEQVsndHJhaW5MU1NWTSddLmFyZ3VtZW50cyxbZ2FtbWEsIGtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgZGF0YXNldCwgbGFiZWxzXSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3RyYWluTFNTVk0nXSwgZS5kYXRhKSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9wcmVkaWN0QnlMU1NWTShrZXJuZWwsIGtlcm5lbFBhcmFtcywgbm9ybWFsaXplZERhdGEsIGxhYmVscywgbWVhbnMsIHN0ZERldnMsIG1vZGVsUGFyYW1zLCBwcmVjb21wdXRlZFdlaWdodHMsIHRhcmdldERhdGEpIHtcbiAgcmV0dXJuIGNhbGxXYXNtKEVEQSwgJ3ByZWRpY3RCeUxTU1ZNJywgW2tlcm5lbCwga2VybmVsUGFyYW1zLCBub3JtYWxpemVkRGF0YSwgbGFiZWxzLCBtZWFucywgc3RkRGV2cywgbW9kZWxQYXJhbXMsIHByZWNvbXB1dGVkV2VpZ2h0cywgdGFyZ2V0RGF0YV0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX3ByZWRpY3RCeUxTU1ZNSW5XZWJXb3JrZXIoa2VybmVsLCBrZXJuZWxQYXJhbXMsIG5vcm1hbGl6ZWREYXRhLCBsYWJlbHMsIG1lYW5zLCBzdGREZXZzLCBtb2RlbFBhcmFtcywgcHJlY29tcHV0ZWRXZWlnaHRzLCB0YXJnZXREYXRhKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuLi93YXNtL3dvcmtlcnMvcHJlZGljdEJ5TFNTVk1Xb3JrZXIuanMnLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoZ2V0Q3BwSW5wdXQoRURBWydwcmVkaWN0QnlMU1NWTSddLmFyZ3VtZW50cyxba2VybmVsLCBrZXJuZWxQYXJhbXMsIG5vcm1hbGl6ZWREYXRhLCBsYWJlbHMsIG1lYW5zLCBzdGREZXZzLCBtb2RlbFBhcmFtcywgcHJlY29tcHV0ZWRXZWlnaHRzLCB0YXJnZXREYXRhXSkpO1xuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICByZXNvbHZlKGdldFJlc3VsdChFREFbJ3ByZWRpY3RCeUxTU1ZNJ10sIGUuZGF0YSkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfdHJhaW5BbmRBbmFseXplTFNTVk0oZ2FtbWEsIGtlcm5lbCwga2VybmVsUGFyYW1zLCBtb2RlbFBhcmFtc0NvdW50LCBwcmVjb21wdXRlZFdlaWdodHNDb3VudCwgY29uZnVzaW9uTWF0cml4RWxlbWVudHNDb3VudCwgZGF0YXNldCwgbGFiZWxzKSB7XG4gIHJldHVybiBjYWxsV2FzbShFREEsICd0cmFpbkFuZEFuYWx5emVMU1NWTScsIFtnYW1tYSwga2VybmVsLCBrZXJuZWxQYXJhbXMsIG1vZGVsUGFyYW1zQ291bnQsIHByZWNvbXB1dGVkV2VpZ2h0c0NvdW50LCBjb25mdXNpb25NYXRyaXhFbGVtZW50c0NvdW50LCBkYXRhc2V0LCBsYWJlbHNdKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF90cmFpbkFuZEFuYWx5emVMU1NWTUluV2ViV29ya2VyKGdhbW1hLCBrZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGNvbmZ1c2lvbk1hdHJpeEVsZW1lbnRzQ291bnQsIGRhdGFzZXQsIGxhYmVscykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi4vd2FzbS93b3JrZXJzL3RyYWluQW5kQW5hbHl6ZUxTU1ZNV29ya2VyLmpzJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKGdldENwcElucHV0KEVEQVsndHJhaW5BbmRBbmFseXplTFNTVk0nXS5hcmd1bWVudHMsW2dhbW1hLCBrZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGNvbmZ1c2lvbk1hdHJpeEVsZW1lbnRzQ291bnQsIGRhdGFzZXQsIGxhYmVsc10pKTtcbiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgcmVzb2x2ZShnZXRSZXN1bHQoRURBWyd0cmFpbkFuZEFuYWx5emVMU1NWTSddLCBlLmRhdGEpKTtcbiAgICB9XG4gIH0pO1xufVxuXG4iLCIvLyBDdXN0b20gVUkgZm9yIEV4cGxvcmF0b3J5IGRhdGEgYW5hbHlzaXMgKEVEQSkgdG9vbHNcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vIFJlbmFtZSBQQ0EgY29sdW1uc1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZVBDQWNvbHVtbnMocGNhVGFibGUpIHtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBwY2FUYWJsZS5jb2x1bW5zLnRvTGlzdCgpKVxuICAgICAgICBjb2wubmFtZSA9ICdQQ0EnICsgY29sLm5hbWU7XG4gICAgcmV0dXJuIHBjYVRhYmxlO1xufVxuLy8gQWRkcyBwcmVmaXggdG8gZWFjaCBjb2x1bW4gbmFtZVxuZXhwb3J0IGZ1bmN0aW9uIGFkZFByZWZpeFRvRWFjaENvbHVtbk5hbWUocHJlZml4LCBjb2x1bW5zKSB7XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucy50b0xpc3QoKSlcbiAgICAgICAgY29sLm5hbWUgPSBwcmVmaXggKyBjb2wubmFtZTtcbn1cbi8vIFByZWRpY3RlZCB2cyBSZWZlcmVuY2Ugc2NhdHRlciBwbG90XG5leHBvcnQgZnVuY3Rpb24gcHJlZGljdGVkVmVyc3VzUmVmZXJlbmNlU2NhdHRlclBsb3Qoc2FtcGxlc05hbWVzLCByZWZlcmVuY2UsIHByZWRpY3Rpb24pIHtcbiAgICBwcmVkaWN0aW9uLm5hbWUgPSByZWZlcmVuY2UubmFtZSArICcocHJlZGljdGVkKSc7XG4gICAgbGV0IGRmUmVmZXJlbmNlUHJlZGljdGlvbiA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbc2FtcGxlc05hbWVzLCByZWZlcmVuY2UsIHByZWRpY3Rpb25dKTtcbiAgICBkZlJlZmVyZW5jZVByZWRpY3Rpb24ubmFtZSA9ICdSZWZlcmVuY2UgdnMuIFByZWRpY3RlZCc7XG4gICAgcmV0dXJuIERHLlZpZXdlci5zY2F0dGVyUGxvdChkZlJlZmVyZW5jZVByZWRpY3Rpb24sIHsgdGl0bGU6IGRmUmVmZXJlbmNlUHJlZGljdGlvbi5uYW1lLFxuICAgICAgICB4OiByZWZlcmVuY2UubmFtZSxcbiAgICAgICAgeTogcHJlZGljdGlvbi5uYW1lLFxuICAgICAgICBzaG93UmVncmVzc2lvbkxpbmU6IHRydWUsXG4gICAgICAgIG1hcmtlclR5cGU6ICdjaXJjbGUnLFxuICAgICAgICBsYWJlbHM6IHNhbXBsZXNOYW1lcy5uYW1lXG4gICAgfSk7XG59XG4vLyBSZWdyZXNzaW9uIENvZWZmaWNpZW50cyBCYXIgQ2hhcnRcbmV4cG9ydCBmdW5jdGlvbiByZWdyZXNzaW9uQ29lZmZpY2llbnRzQmFyQ2hhcnQoZmVhdHVyZXMsIHJlZ3Jlc3Npb25Db2VmZnMpIHtcbiAgICByZWdyZXNzaW9uQ29lZmZzLm5hbWUgPSAncmVncmVzc2lvbiBjb2VmZmljaWVudCc7XG4gICAgbGV0IG5hbWVzT2ZQcmVkaWN0b3JzID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgZmVhdHVyZXMpXG4gICAgICAgIG5hbWVzT2ZQcmVkaWN0b3JzLnB1c2goY29sLm5hbWUpO1xuICAgIGxldCBwcmVkaWN0b3JOYW1lc0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygnZmVhdHVyZScsIG5hbWVzT2ZQcmVkaWN0b3JzKTtcbiAgICBsZXQgZGZSZWdyQ29lZnMgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW3ByZWRpY3Rvck5hbWVzQ29sdW1uLCByZWdyZXNzaW9uQ29lZmZzXSk7XG4gICAgZGZSZWdyQ29lZnMubmFtZSA9ICdSZWdyZXNzaW9uIENvZWZmaWNpZW50cyc7XG4gICAgcmV0dXJuIERHLlZpZXdlci5iYXJDaGFydChkZlJlZ3JDb2VmcywgeyB0aXRsZTogZGZSZWdyQ29lZnMubmFtZSwgc3BsaXQ6ICdmZWF0dXJlJyxcbiAgICAgICAgdmFsdWU6ICdyZWdyZXNzaW9uIGNvZWZmaWNpZW50JywgdmFsdWVBZ2dyVHlwZTogJ2F2ZycgfSk7XG59XG4vLyBTY29yZXMgU2NhdHRlciBQbG90XG5leHBvcnQgZnVuY3Rpb24gc2NvcmVzU2NhdHRlclBsb3Qoc2FtcGxlc05hbWVzLCB4U2NvcmVzLCB5U2NvcmVzKSB7XG4gICAgbGV0IHNjb3Jlc0NvbHVtbnMgPSBbc2FtcGxlc05hbWVzXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhTY29yZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgeFNjb3Jlc1tpXS5uYW1lID0gYHguc2NvcmUudCR7aSArIDF9YDtcbiAgICAgICAgc2NvcmVzQ29sdW1ucy5wdXNoKHhTY29yZXNbaV0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHlTY29yZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgeVNjb3Jlc1tpXS5uYW1lID0gYHkuc2NvcmUudSR7aSArIDF9YDtcbiAgICAgICAgc2NvcmVzQ29sdW1ucy5wdXNoKHlTY29yZXNbaV0pO1xuICAgIH1cbiAgICBsZXQgc2NvcmVzID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKHNjb3Jlc0NvbHVtbnMpO1xuICAgIHNjb3Jlcy5uYW1lID0gJ1Njb3Jlcyc7XG4gICAgLy9ncm9rLnNoZWxsLmFkZFRhYmxlVmlldyhzY29yZXMpO1xuICAgIGNvbnN0IGluZGV4ID0geFNjb3Jlcy5sZW5ndGggPiAxID8gMSA6IDA7XG4gICAgcmV0dXJuIERHLlZpZXdlci5zY2F0dGVyUGxvdChzY29yZXMsIHsgdGl0bGU6IHNjb3Jlcy5uYW1lLFxuICAgICAgICB4OiB4U2NvcmVzWzBdLm5hbWUsXG4gICAgICAgIHk6IHhTY29yZXNbaW5kZXhdLm5hbWUsXG4gICAgICAgIG1hcmtlclR5cGU6ICdjaXJjbGUnLFxuICAgICAgICBsYWJlbHM6IHNhbXBsZXNOYW1lcy5uYW1lXG4gICAgfSk7XG59XG4vLyBMb2FkaW5nIFNjYXR0ZXIgUGxvdFxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRpbmdTY2F0dGVyUGxvdChmZWF0dXJlcywgeExvYWRpbmdzKSB7XG4gICAgbGV0IGxvYWRpbmdDb2xzID0gW107XG4gICAgbGV0IGxvYWRpbmdMYWJlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBjb2wgb2YgZmVhdHVyZXMpXG4gICAgICAgIGxvYWRpbmdMYWJlbHMucHVzaChjb2wubmFtZSk7XG4gICAgbG9hZGluZ0NvbHMucHVzaChERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ2xhYmVscycsIGxvYWRpbmdMYWJlbHMpKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhMb2FkaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICB4TG9hZGluZ3NbaV0ubmFtZSA9IGB4LmxvYWRpbmcucCR7aSArIDF9YDtcbiAgICAgICAgbG9hZGluZ0NvbHMucHVzaCh4TG9hZGluZ3NbaV0pO1xuICAgIH1cbiAgICBsZXQgZGZMb2FkaW5ncyA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhsb2FkaW5nQ29scyk7XG4gICAgZGZMb2FkaW5ncy5uYW1lID0gJ0xvYWRpbmdzJztcbiAgICByZXR1cm4gREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmTG9hZGluZ3MsIHsgdGl0bGU6IGRmTG9hZGluZ3MubmFtZSxcbiAgICAgICAgeDogeExvYWRpbmdzWzBdLm5hbWUsXG4gICAgICAgIHk6IHhMb2FkaW5nc1t4TG9hZGluZ3MubGVuZ3RoIC0gMV0ubmFtZSxcbiAgICAgICAgbWFya2VyVHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGxhYmVsczogJ2xhYmVscydcbiAgICB9KTtcbn1cbi8vIEFkZCBQTFMgdmlzdWFsaXphdGlvblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFBMU3Zpc3VhbGl6YXRpb24odGFibGUsIHNhbXBsZXNOYW1lcywgZmVhdHVyZXMsIHByZWRpY3QsIHBsc091dHB1dCkge1xuICAgIGxldCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcodGFibGUubmFtZSk7XG4gICAgLy8gMS4gUHJlZGljdGVkIHZzIFJlZmVyZW5jZSBzY2F0dGVyIHBsb3RcbiAgICB2aWV3LmFkZFZpZXdlcihwcmVkaWN0ZWRWZXJzdXNSZWZlcmVuY2VTY2F0dGVyUGxvdChzYW1wbGVzTmFtZXMsIHByZWRpY3QsIHBsc091dHB1dFswXSkpO1xuICAgIC8vIDIuIFJlZ3Jlc3Npb24gQ29lZmZpY2llbnRzIEJhciBDaGFydFxuICAgIHZpZXcuYWRkVmlld2VyKHJlZ3Jlc3Npb25Db2VmZmljaWVudHNCYXJDaGFydChmZWF0dXJlcywgcGxzT3V0cHV0WzFdKSk7XG4gICAgLy8gMy4gTG9hZGluZyBTY2F0dGVyIFBsb3RcbiAgICB2aWV3LmFkZFZpZXdlcihsb2FkaW5nU2NhdHRlclBsb3QoZmVhdHVyZXMsIHBsc091dHB1dFs0XSkpO1xuICAgIC8vIDQuIFNjb3JlcyBTY2F0dGVyIFBsb3RcbiAgICB2aWV3LmFkZFZpZXdlcihzY29yZXNTY2F0dGVyUGxvdChzYW1wbGVzTmFtZXMsIHBsc091dHB1dFsyXSwgcGxzT3V0cHV0WzNdKSk7XG59XG4iLCIvLyBUZXN0IGRhdGEgZ2VuZXJhdGlvbiB0b29sc1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgY2hlY2tHZW5lcmF0b3JTVk1pbnB1dHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IF9nZW5lcmF0ZURhdGFzZXRJbldlYldvcmtlciB9IGZyb20gJy4uL3dhc20vRURBQVBJJztcbmNvbnN0IFNWTV9HRU5fRkVBVFVSRVNfSU5ERVggPSAwO1xuY29uc3QgU1ZNX0dFTl9MQUJFTFNfSU5ERVggPSAxO1xuY29uc3QgU1ZNX0ZFQVRVUkVfTkFNRSA9ICdGZWF0dXJlICMnO1xuY29uc3QgU1ZNX0xBQkVMX05BTUUgPSAnTGFiZWwnO1xuLy8gUmV0dXJucyB0aGUgZGF0YWZyYW1lIFwiY2Fyc1wiXG5leHBvcnQgZnVuY3Rpb24gY2Fyc0RhdGFmcmFtZSgpIHtcbiAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtcbiAgICAgICAgREcuQ29sdW1uLmZyb21TdHJpbmdzKCdtb2RlbCcsIFsnYWxmYXJvbWVvJywgJ2F1ZGknLCAnYm13JywgJ2NoZXZyb2xldCcsICdkb2RnZTEnLCAnZG9kZ2UyJywgJ2hvbmRhMScsICdob25kYTInLCAnaXN1enUnLCAnamFndWFyJywgJ21hemRhJywgJ21lcmNlZGVzJywgJ21lcmN1cnknLCAnbWl0c3ViaXNoaScsICduaXNzYW4xJywgJ25pc3NhbjInLCAncGV1Z290JywgJ3BseW1vdXRoJywgJ3BvcnNjaGUnLCAnc2FhYicsICdzdWJhcnUnLCAndG95b3RhMScsICd0b3lvdGEyJywgJ3RveW90YTMnLCAndG95b3RhNCcsICd2b2xrc3dhZ2VuMScsICd2b2xrc3dhZ2VuMicsICd2b2x2bzEnLCAndm9sdm8yJywgJ3ZvbHZvMyddKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdkaWVzZWwnLCBuZXcgSW50MzJBcnJheShbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMCwgMCwgMV0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCd0dXJibycsIG5ldyBJbnQzMkFycmF5KFswLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAxXSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ3R3by5kb29ycycsIG5ldyBJbnQzMkFycmF5KFsxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAwLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAwLCAwLCAwXSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ2hhdGNoYmFjaycsIG5ldyBJbnQzMkFycmF5KFsxLCAwLCAwLCAwLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwXSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSgnd2hlZWwuYmFzZScsIG5ldyBGbG9hdDMyQXJyYXkoWzk0LjUsIDEwNS44MDAwMDMwNTE3NTc4MSwgMTAxLjE5OTk5Njk0ODI0MjE5LCA5NC41LCA5My42OTk5OTY5NDgyNDIxOSwgOTMuNjk5OTk2OTQ4MjQyMTksIDkzLjY5OTk5Njk0ODI0MjE5LCA5Ni41LCA5NC4zMDAwMDMwNTE3NTc4MSwgMTEzLCA5My4wOTk5OTg0NzQxMjExLCAxMTUuNTk5OTk4NDc0MTIxMSwgMTAyLjY5OTk5Njk0ODI0MjE5LCA5My42OTk5OTY5NDgyNDIxOSwgOTQuNSwgOTQuNSwgOTMuNjk5OTk2OTQ4MjQyMTksIDExNC4xOTk5OTY5NDgyNDIxOSwgODkuNSwgOTkuMDk5OTk4NDc0MTIxMSwgOTcuMTk5OTk2OTQ4MjQyMTksIDk1LjY5OTk5Njk0ODI0MjE5LCA5NS42OTk5OTY5NDgyNDIxOSwgOTguNDAwMDAxNTI1ODc4OSwgMTAyLjQwMDAwMTUyNTg3ODksIDk3LjMwMDAwMzA1MTc1NzgxLCAxMDAuNDAwMDAxNTI1ODc4OSwgMTA0LjMwMDAwMzA1MTc1NzgxLCAxMDkuMDk5OTk4NDc0MTIxMSwgMTA5LjA5OTk5ODQ3NDEyMTFdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdsZW5ndGgnLCBuZXcgRmxvYXQzMkFycmF5KFsxNzEuMTk5OTk2OTQ4MjQyMiwgMTkyLjY5OTk5Njk0ODI0MjIsIDE3Ni44MDAwMDMwNTE3NTc4LCAxNTguODAwMDAzMDUxNzU3OCwgMTU3LjMwMDAwMzA1MTc1NzgsIDE1Ny4zMDAwMDMwNTE3NTc4LCAxNTAsIDE3NS4zOTk5OTM4OTY0ODQzOCwgMTcwLjY5OTk5Njk0ODI0MjIsIDE5OS42MDAwMDYxMDM1MTU2MiwgMTY2LjgwMDAwMzA1MTc1NzgsIDIwMi42MDAwMDYxMDM1MTU2MiwgMTc4LjM5OTk5Mzg5NjQ4NDM4LCAxNTcuMzAwMDAzMDUxNzU3OCwgMTcwLjE5OTk5Njk0ODI0MjIsIDE2NS4zMDAwMDMwNTE3NTc4LCAxNTcuMzAwMDAzMDUxNzU3OCwgMTk4Ljg5OTk5Mzg5NjQ4NDM4LCAxNjguODk5OTkzODk2NDg0MzgsIDE4Ni42MDAwMDYxMDM1MTU2MiwgMTcyLCAxNTguNjk5OTk2OTQ4MjQyMiwgMTY2LjMwMDAwMzA1MTc1NzgsIDE3Ni4xOTk5OTY5NDgyNDIyLCAxNzUuNjAwMDA2MTAzNTE1NjIsIDE3MS42OTk5OTY5NDgyNDIyLCAxODAuMTk5OTk2OTQ4MjQyMiwgMTg4LjgwMDAwMzA1MTc1NzgsIDE4OC44MDAwMDMwNTE3NTc4LCAxODguODAwMDAzMDUxNzU3OF0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3dpZHRoJywgbmV3IEZsb2F0MzJBcnJheShbNjUuNSwgNzEuNDAwMDAxNTI1ODc4OSwgNjQuODAwMDAzMDUxNzU3ODEsIDYzLjU5OTk5ODQ3NDEyMTA5NCwgNjMuNzk5OTk5MjM3MDYwNTUsIDYzLjc5OTk5OTIzNzA2MDU1LCA2NCwgNjUuMTk5OTk2OTQ4MjQyMTksIDYxLjc5OTk5OTIzNzA2MDU1LCA2OS41OTk5OTg0NzQxMjExLCA2NC4xOTk5OTY5NDgyNDIxOSwgNzEuNjk5OTk2OTQ4MjQyMTksIDY4LCA2NC40MDAwMDE1MjU4Nzg5LCA2My43OTk5OTkyMzcwNjA1NSwgNjMuNzk5OTk5MjM3MDYwNTUsIDYzLjc5OTk5OTIzNzA2MDU1LCA2OC40MDAwMDE1MjU4Nzg5LCA2NSwgNjYuNSwgNjUuNDAwMDAxNTI1ODc4OSwgNjMuNTk5OTk4NDc0MTIxMDk0LCA2NC40MDAwMDE1MjU4Nzg5LCA2NS41OTk5OTg0NzQxMjExLCA2Ni41LCA2NS41LCA2Ni45MDAwMDE1MjU4Nzg5LCA2Ny4xOTk5OTY5NDgyNDIxOSwgNjguODAwMDAzMDUxNzU3ODEsIDY4LjkwMDAwMTUyNTg3ODldKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdoZWlnaHQnLCBuZXcgRmxvYXQzMkFycmF5KFs1Mi40MDAwMDE1MjU4Nzg5MDYsIDU1LjcwMDAwMDc2MjkzOTQ1LCA1NC4yOTk5OTkyMzcwNjA1NSwgNTIsIDUwLjc5OTk5OTIzNzA2MDU1LCA1MC41OTk5OTg0NzQxMjEwOTQsIDUyLjU5OTk5ODQ3NDEyMTA5NCwgNTQuMDk5OTk4NDc0MTIxMDk0LCA1My41LCA1Mi43OTk5OTkyMzcwNjA1NSwgNTQuMDk5OTk4NDc0MTIxMDk0LCA1Ni4yOTk5OTkyMzcwNjA1NSwgNTQuNzk5OTk5MjM3MDYwNTUsIDUwLjc5OTk5OTIzNzA2MDU1LCA1My41LCA1NC41LCA1MC41OTk5OTg0NzQxMjEwOTQsIDU4LjcwMDAwMDc2MjkzOTQ1LCA1MS41OTk5OTg0NzQxMjEwOTQsIDU2LjA5OTk5ODQ3NDEyMTA5NCwgNTIuNSwgNTQuNSwgNTMsIDUyLCA1NC45MDAwMDE1MjU4Nzg5MDYsIDU1LjcwMDAwMDc2MjkzOTQ1LCA1NS4wOTk5OTg0NzQxMjEwOTQsIDU2LjIwMDAwMDc2MjkzOTQ1LCA1NS41LCA1NS41XSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ2N1cmIud2VpZ2h0JywgbmV3IEludDMyQXJyYXkoWzI4MjMsIDI4NDQsIDIzOTUsIDE5MDksIDIxMjgsIDE5NjcsIDE5NTYsIDIzMDQsIDIzMzcsIDQwNjYsIDE5NTAsIDM3NzAsIDI5MTAsIDE5MTgsIDIwMjQsIDE5NTEsIDE5NjcsIDM0MzAsIDI4MDAsIDI2OTUsIDIxOTAsIDE5ODUsIDIyNzUsIDI1NTEsIDI0ODAsIDIyNjEsIDI2NjEsIDI5MTIsIDMwNDksIDMyMTddKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgnZW5nLnNpemUnLCBuZXcgSW50MzJBcnJheShbMTUyLCAxMzYsIDEwOCwgOTAsIDk4LCA5MCwgOTIsIDExMCwgMTExLCAyNTgsIDkxLCAxODMsIDE0MCwgOTIsIDk3LCA5NywgOTAsIDE1MiwgMTk0LCAxMjEsIDEwOCwgOTIsIDExMCwgMTQ2LCAxMTAsIDk3LCAxMzYsIDE0MSwgMTQxLCAxNDVdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgnaG9yc2Vwb3dlcicsIG5ldyBJbnQzMkFycmF5KFsxNTQsIDExMCwgMTAxLCA3MCwgMTAyLCA2OCwgNzYsIDg2LCA3OCwgMTc2LCA2OCwgMTIzLCAxNzUsIDY4LCA2OSwgNjksIDY4LCA5NSwgMjA3LCAxMTAsIDgyLCA2MiwgNTYsIDExNiwgNzMsIDUyLCAxMTAsIDExNCwgMTYwLCAxMDZdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgncGVhay5ycG0nLCBuZXcgSW50MzJBcnJheShbNTAwMCwgNTUwMCwgNTgwMCwgNTQwMCwgNTUwMCwgNTUwMCwgNjAwMCwgNTgwMCwgNDgwMCwgNDc1MCwgNTAwMCwgNDM1MCwgNTAwMCwgNTUwMCwgNTIwMCwgNTIwMCwgNTUwMCwgNDE1MCwgNTkwMCwgNTI1MCwgNDQwMCwgNDgwMCwgNDUwMCwgNDgwMCwgNDUwMCwgNDgwMCwgNTUwMCwgNTQwMCwgNTMwMCwgNDgwMF0pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdzeW1ib2wnLCBuZXcgSW50MzJBcnJheShbMSwgMSwgMiwgMCwgMSwgMSwgMSwgMCwgMCwgMCwgMSwgLTEsIDEsIDIsIDEsIDEsIDEsIDAsIDMsIDIsIDAsIDEsIDAsIDIsIC0xLCAyLCAwLCAtMiwgLTEsIC0xXSkpLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUludDMyQXJyYXkoJ2NpdHkubXBnJywgbmV3IEludDMyQXJyYXkoWzE5LCAxOSwgMjMsIDM4LCAyNCwgMzEsIDMwLCAyNywgMjQsIDE1LCAzMSwgMjIsIDE5LCAzNywgMzEsIDMxLCAzMSwgMjUsIDE3LCAyMSwgMjgsIDM1LCAzNCwgMjQsIDMwLCAzNywgMTksIDIzLCAxOSwgMjZdKSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tSW50MzJBcnJheSgnaGlnaHdheS5tcGcnLCBuZXcgSW50MzJBcnJheShbMjYsIDI1LCAyOSwgNDMsIDMwLCAzOCwgMzQsIDMzLCAyOSwgMTksIDM4LCAyNSwgMjQsIDQxLCAzNywgMzcsIDM4LCAyNSwgMjUsIDI4LCAzMywgMzksIDM2LCAzMCwgMzMsIDQ2LCAyNCwgMjgsIDI1LCAyN10pKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21JbnQzMkFycmF5KCdwcmljZScsIG5ldyBJbnQzMkFycmF5KFsxNjUwMCwgMTc3MTAsIDE2NDMwLCA2NTc1LCA3OTU3LCA2MjI5LCA3MTI5LCA4ODQ1LCA2Nzg1LCAzNTU1MCwgNzM5NSwgMzE2MDAsIDE2NTAzLCA1Mzg5LCA3MzQ5LCA3Mjk5LCA2MjI5LCAxMzg2MCwgMzcwMjgsIDEyMTcwLCA3Nzc1LCA1MzQ4LCA3ODk4LCA5OTg5LCAxMDY5OCwgNzc3NSwgMTMyOTUsIDEyOTQwLCAxOTA0NSwgMjI0NzBdKSksXG4gICAgXSk7XG59IC8vIGNhcnNEYXRhZnJhbWVcbi8vIEdlbmVyYXRlIGRhdGFzZXQgZm9yIHRlc3RpbmcgYmluYXJ5IGNsYXNzaWZpZXJzXG5leHBvcnQgZnVuY3Rpb24gdGVzdERhdGFGb3JCaW5hcnlDbGFzc2lmaWNhdGlvbihrZXJuZWwsIGtlcm5lbFBhcmFtcywgbmFtZSwgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGNoZWNrIGlucHV0c1xuICAgICAgICBjaGVja0dlbmVyYXRvclNWTWlucHV0cyhzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKTtcbiAgICAgICAgLy8ga2VybmVsIHBhcmFtcyBjb2x1bW5cbiAgICAgICAgY29uc3Qga2VybmVsUGFyYW1zQ29sID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCAna2VybmVsUGFyYW1zJywga2VybmVsUGFyYW1zKTtcbiAgICAgICAgLy8gQ0FMTCBXQVNNLUNPTVBVVEFUSU9OUyAgXG4gICAgICAgIGxldCBfb3V0cHV0O1xuICAgICAgICBsZXQgX3Byb21pc2UgPSBfZ2VuZXJhdGVEYXRhc2V0SW5XZWJXb3JrZXIoa2VybmVsLCBrZXJuZWxQYXJhbXNDb2wsIHNhbXBsZXNDb3VudCwgZmVhdHVyZXNDb3VudCwgbWluLCBtYXgsIHZpb2xhdG9yc1BlcmNlbnRhZ2UpO1xuICAgICAgICB5aWVsZCBfcHJvbWlzZS50aGVuKF9yZXN1bHQgPT4geyBfb3V0cHV0ID0gX3Jlc3VsdDsgfSwgX2Vycm9yID0+IHsgdGhyb3cgbmV3IEVycm9yKGBFcnJvcjogJHtfZXJyb3J9YCk7IH0pO1xuICAgICAgICAvLyBSZW5hbWUgbGFiZWxzIGNvbHVtblxuICAgICAgICBfb3V0cHV0W1NWTV9HRU5fTEFCRUxTX0lOREVYXS5uYW1lID0gU1ZNX0xBQkVMX05BTUU7XG4gICAgICAgIC8vIFJlbmFtZSBmZWF0dXJlIGNvbHVtbnNcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgX291dHB1dFtTVk1fR0VOX0ZFQVRVUkVTX0lOREVYXSlcbiAgICAgICAgICAgIGNvbC5uYW1lID0gU1ZNX0ZFQVRVUkVfTkFNRSArIGNvbC5uYW1lO1xuICAgICAgICAvLyBDcmVhdGUgZGF0YWZyYW1lXG4gICAgICAgIGNvbnN0IGRmID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKF9vdXRwdXRbU1ZNX0dFTl9GRUFUVVJFU19JTkRFWF0pO1xuICAgICAgICBkZi5uYW1lID0gbmFtZTtcbiAgICAgICAgZGYuY29sdW1ucy5hZGQoX291dHB1dFtTVk1fR0VOX0xBQkVMU19JTkRFWF0pO1xuICAgICAgICByZXR1cm4gZGY7XG4gICAgfSk7XG59IC8vIHRlc3REYXRhRm9yTWFjaGluZUxlYXJuaW5nXG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbi8qIFN1cHBvcnQgdmVjdG9yIG1hY2hpbmUgKFNWTSkgdG9vbHMuXG4gICBJdCdzIGRldmVsb3BlZCBmb3IgYXBwbHlpbmcgaW4gY29tYmluYXRpb24gd2l0aCBEQVRBR1JPSyBwcmVkaWN0aXZlIHRvb2xzLlxuXG4gICBUcmFpbmluZyAmIHByZWRpY3RpbmcgYXJlIHByb3ZpZGVkIGJ5IHdhc20tY29tcHV0YXRpb25zLlxuXG4gICBMZWFzdCBzcXVhcmUgc3VwcG9ydCB2ZWN0b3IgbWFjaGluZSAoTFMtU1ZNKSBpcyBpbXBsZW1lbnRlZDpcbiAgICAgWzFdIFN1eWtlbnMsIEouLCBWYW5kZXdhbGxlLCBKLiBcIkxlYXN0IFNxdWFyZXMgU3VwcG9ydCBWZWN0b3IgTWFjaGluZSBDbGFzc2lmaWVyc1wiLFxuICAgICAgICAgICBOZXVyYWwgUHJvY2Vzc2luZyBMZXR0ZXJzIDksIDI5My0zMDAgKDE5OTkpLiBodHRwczovL2RvaS5vcmcvMTAuMTAyMy9BOjEwMTg2Mjg2MDk3NDJcbiovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBfdHJhaW5BbmRBbmFseXplTFNTVk1JbldlYldvcmtlciwgX3ByZWRpY3RCeUxTU1ZNSW5XZWJXb3JrZXIgfSBmcm9tICcuLi93YXNtL0VEQUFQSSc7XG4vLyAxLiBDT05TVEFOVFNcbi8vIGtlcm5lbCB0eXBlc1xuZXhwb3J0IGNvbnN0IExJTkVBUiA9IDA7XG5leHBvcnQgY29uc3QgUE9MWU5PTUlBTCA9IDE7XG5leHBvcnQgY29uc3QgUkJGID0gMjtcbmV4cG9ydCBjb25zdCBTSUdNT0lEID0gMztcbi8vIG91dHB1dC1yZWxhdGVkXG5jb25zdCBDT05GVVNJT05fTUFUUl9TSVpFID0gNDtcbmNvbnN0IE5PUk1BTElaRURfREFUQV9JTkRFWCA9IDA7XG5jb25zdCBNRUFOU19JTkRFWCA9IDE7XG5jb25zdCBTVERfREVWU19JTkRFWCA9IDI7XG5jb25zdCBNT0RFTF9QQVJBTVNfSU5ERVggPSAzO1xuY29uc3QgTU9ERUxfV0VJR0hUU19JTkRFWCA9IDQ7XG5jb25zdCBQUkVESUNURURfTEFCRUxTX0lOREVYID0gNTtcbmNvbnN0IENPUlJFQ1RORVNTX0lOREVYID0gNjtcbmNvbnN0IENPTkZVU0lPTl9NQVRSSVhfSU5ERVggPSA3O1xuY29uc3QgVFJVRV9QT1NJVElWRV9JTkRFWCA9IDA7XG5jb25zdCBGQUxTRV9ORUdBVElWRV9JTkRFWCA9IDE7XG5jb25zdCBGQUxTRV9QT1NJVElWRV9JTkRFWCA9IDI7XG5jb25zdCBUUlVFX05FR0FUSVZFX0lOREVYID0gMztcbi8vIGtlcm5lbCBwYXJhbWV0ZXJzIGluZGVjZXNcbmNvbnN0IFJCRl9TSUdNQV9JTkRFWCA9IDA7XG5jb25zdCBQT0xZTk9NSUFMX0NfSU5ERVggPSAwO1xuY29uc3QgUE9MWU5PTUlBTF9EX0lOREVYID0gMTtcbmNvbnN0IFNJR01PSURfS0FQUEFfSU5ERVggPSAwO1xuY29uc3QgU0lHTU9JRF9USEVUQV9JTkRFWCA9IDE7XG4vLyBoeXBlcnBhcmFtZXRlcnMgbGltaXRzXG5jb25zdCBHQU1NQV9JTkZJTVVNX0xJTUlUID0gMDtcbmNvbnN0IFJCRl9TSUdNQV9JTkZJTVVNX0xJTUlUID0gMDtcbmNvbnN0IFBPTFlOT01JQUxfQ19JTkZJTVVNX0xJTUlUID0gMDtcbmNvbnN0IFBPTFlOT01JQUxfRF9JTkZJTVVNX0xJTUlUID0gMDtcbi8vIGVycm9yIG1lc3NhZ2VzXG5jb25zdCBXUk9OR19HQU1NQV9NRVNTQUdFID0gJ2dhbW1hIG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUuJztcbmNvbnN0IFdST05HX1JCRl9TSUdNQV9NRVNTQUdFID0gJ3NpZ21hIG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUuJztcbmNvbnN0IFdST05HX1BPTFlOT01JQUxfQ19NRVNTQUdFID0gJ2MgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZS4nO1xuY29uc3QgV1JPTkdfUE9MWU5PTUlBTF9EX01FU1NBR0UgPSAnZCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlLic7XG5jb25zdCBXUk9OR19LRVJORUxfTUVTU0FHRSA9ICdpbmNvcnJlY3Qga2VybmVsLic7XG4vLyBuYW1lc1xuY29uc3QgTEFCRUxTID0gJ0xhYmVscyc7XG5jb25zdCBQUkVESUNURUQgPSAncHJlZGljdGVkJztcbmNvbnN0IENPUlJFQ1RORVNTID0gJ2NvcnJlY3RuZXNzJztcbmNvbnN0IENPTkZVU0lPTl9NQVRSSVhfTkFNRSA9ICdDb25mdXNpb24gbWF0cml4JztcbmNvbnN0IE1FQU4gPSAnbWVhbic7XG5jb25zdCBTVERfREVWID0gJ3N0ZCBkZXYnO1xuY29uc3QgTU9ERUxfUEFSQU1TX05BTUUgPSAnYWxwaGEnO1xuY29uc3QgTU9ERUxfV0VJR0hUU19OQU1FID0gJ3dlaWdodCc7XG5jb25zdCBHQU1NQSA9ICdnYW1tYSc7XG5jb25zdCBLRVJORUwgPSAna2VybmVsJztcbmNvbnN0IEtFUk5FTF9QQVJBTVMgPSAna2VybmVsIHBhcmFtcyc7XG5jb25zdCBLRVJORUxfUEFSQU1fMSA9ICdrZXJuZWwgcGFyYW0gMSc7XG5jb25zdCBLRVJORUxfUEFSQU1fMiA9ICdrZXJuZWwgcGFyYW0gMic7XG5jb25zdCBGRUFUVVJFU19DT1VOVF9OQU1FID0gJ2ZlYXR1cmVzIGNvdW50JztcbmNvbnN0IFRSQUlOX1NBTVBMRVNfQ09VTlRfTkFNRSA9ICd0cmFpbiBzYW1wbGVzIGNvdW50JztcbmNvbnN0IFRSQUlOX0VSUk9SID0gJ1RyYWluIGVycm9yLCUnO1xuY29uc3QgS0VSTkVMX1RZUEVfVE9fTkFNRV9NQVAgPSBbJ2xpbmVhcicsICdwb2x5bm9taWFsJywgJ1JCRicsICdzaWdtb2lkJ107XG5jb25zdCBQT1NJVElWRV9OQU1FID0gJ3Bvc2l0aXZlIChQKSc7XG5jb25zdCBORUdBVElWRV9OQU1FID0gJ25lZ2F0aXZlIChOKSc7XG5jb25zdCBQUkVESUNURURfUE9TSVRJVkVfTkFNRSA9ICdwcmVkaWN0ZWQgcG9zaXRpdmUgKFBQKSc7XG5jb25zdCBQUkVESUNURURfTkVHQVRJVkVfTkFNRSA9ICdwcmVkaWN0ZWQgbmVnYXRpdmUgKFBOKSc7XG5jb25zdCBTRU5TSVRJVklUWSA9ICdTZW5zaXRpdml0eSc7XG5jb25zdCBTUEVDSUZJQ0lUWSA9ICdTcGVjaWZpY2l0eSc7XG5jb25zdCBCQUxBTkNFRF9BQ0NVUkFDWSA9ICdCYWxhbmNlZCBhY2N1cmFjeSc7XG5jb25zdCBQT1NJVElWRV9QUkVESUNUSVZFX1ZBTFVFID0gJ1Bvc2l0aXZlIHByZWRpY2l0dmUgdmFsdWUnO1xuY29uc3QgTkVHQVRJVkVfUFJFRElDVElWRV9WQUxVRSA9ICdOZWdhdGl2ZSBwcmVkaWNpdHZlIHZhbHVlJztcbmNvbnN0IE1MX1JFUE9SVCA9ICdNb2RlbCByZXBvcnQnO1xuY29uc3QgTUxfUkVQT1JUX1BSRURJQ1RFRF9MQUJFTFMgPSAnUHJlZGljdGVkIGxhYmVscyc7XG5jb25zdCBNTF9SRVBPUlRfVFJBSU5fTEFCRUxTID0gJ1RyYWluIGxhYmVscyc7XG5jb25zdCBNTF9SRVBPUlRfQ09SUkVDVE5FU1MgPSAnUHJlZGljdGlvbiBjb3JyZWN0bmVzcyc7XG5jb25zdCBQUkVESUNUSU9OID0gJ3ByZWRpY3Rpb24nO1xuLy8gUGFjay91bnBhY2sgY29uc3RhbnRzXG5jb25zdCBCWVRFUyA9IDQ7XG5jb25zdCBJTlRTX0NPVU5UID0gMztcbmNvbnN0IEtFUl9QQVJBTVNfQ09VTlQgPSAyO1xuY29uc3QgTU9ERUxfS0VSTkVMX0lOREVYID0gMDtcbmNvbnN0IFNBTVBMRVNfQ09VTlRfSU5ERVggPSAxO1xuY29uc3QgRkVBVFVSRVNfQ09VTlRfSU5ERVggPSAyO1xuLy8gbWlzY1xuY29uc3QgSU5JVF9WQUxVRSA9IDA7IC8vIGFueSBudW1iZXIgY2FuIGJlIHVzZWRcbmNvbnN0IExTX1NWTV9BRERfQ09OU1QgPSAxOyAvLyBzZWUgWzFdIGZvciBtb3JlIGRldGFpbHNcbi8vIDIuIFRPT0xTXG4vLyBDaGVjayBMUy1TVk0gbGVhcm5pbmcgaHlwZXJwYXJhbWV0ZXJzXG5mdW5jdGlvbiBjaGVja0h5cGVycGFyYW1ldGVycyhoeXBlcnBhcmFtZXRlcnMpIHtcbiAgICAvLyBjaGVjayBnYW1tYVxuICAgIGlmIChoeXBlcnBhcmFtZXRlcnMuZ2FtbWEgPD0gR0FNTUFfSU5GSU1VTV9MSU1JVClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFdST05HX0dBTU1BX01FU1NBR0UpO1xuICAgIC8vIGNoZWNrIGtlcm5lbCAmIGl0cyBwYXJhbWV0ZXJzXG4gICAgc3dpdGNoIChoeXBlcnBhcmFtZXRlcnMua2VybmVsKSB7XG4gICAgICAgIGNhc2UgTElORUFSOiAvLyB0aGUgY2FzZSBvZiBsaW5lYXIga2VybmVsXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgUkJGOiAvLyB0aGUgY2FzZSBvZiBSQkYga2VybmVsXG4gICAgICAgICAgICBpZiAoaHlwZXJwYXJhbWV0ZXJzLnNpZ21hIDw9IFJCRl9TSUdNQV9JTkZJTVVNX0xJTUlUKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihXUk9OR19SQkZfU0lHTUFfTUVTU0FHRSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgUE9MWU5PTUlBTDogLy8gdGhlIGNhc2Ugb2YgcG9seW5vbWlhbCBrZXJuZWxcbiAgICAgICAgICAgIC8vIGNoZWNrIGNcbiAgICAgICAgICAgIGlmIChoeXBlcnBhcmFtZXRlcnMuY1BhcmFtIDw9IFBPTFlOT01JQUxfQ19JTkZJTVVNX0xJTUlUKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihXUk9OR19QT0xZTk9NSUFMX0NfTUVTU0FHRSk7XG4gICAgICAgICAgICAvLyBjaGVjayBkXG4gICAgICAgICAgICBpZiAoaHlwZXJwYXJhbWV0ZXJzLmRQYXJhbSA8PSBQT0xZTk9NSUFMX0RfSU5GSU1VTV9MSU1JVClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoV1JPTkdfUE9MWU5PTUlBTF9EX01FU1NBR0UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIFNJR01PSUQ6IC8vIHRoZSBjYXNlIG9mIHBvbHlub21pYWwga2VybmVsXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGRlZmF1bHQ6IC8vIGluY29ycmVjdCBrZXJuZWxcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihXUk9OR19LRVJORUxfTUVTU0FHRSk7XG4gICAgfSAvLyBzd2l0Y2ggICAgXG59IC8vIGNoZWNrSHlwZXJwYXJhbWV0ZXJzXG4vLyBSZXR1cm5lcyBsYWJlbHMgcHJlZGljdGVkIGJ5IHRoZSBtb2RlbCBzcGVjaWZpZWRcbmZ1bmN0aW9uIHByZWRpY3QobW9kZWwsIGRhdGFzZXQpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgX291dHB1dDtcbiAgICAgICAgbGV0IF9wcm9taXNlID0gX3ByZWRpY3RCeUxTU1ZNSW5XZWJXb3JrZXIobW9kZWwua2VybmVsVHlwZSwgbW9kZWwua2VybmVsUGFyYW1zLCBtb2RlbC5ub3JtYWxpemVkVHJhaW5EYXRhLmNvbHVtbnMsIG1vZGVsLnRyYWluTGFiZWxzLCBtb2RlbC5tZWFucywgbW9kZWwuc3RkRGV2cywgbW9kZWwubW9kZWxQYXJhbXMsIG1vZGVsLm1vZGVsV2VpZ2h0cywgZGF0YXNldCk7XG4gICAgICAgIHlpZWxkIF9wcm9taXNlLnRoZW4oX3Jlc3VsdCA9PiB7IF9vdXRwdXQgPSBfcmVzdWx0OyB9LCBfZXJyb3IgPT4geyB0aHJvdyBuZXcgRXJyb3IoYEVycm9yOiAke19lcnJvcn1gKTsgfSk7XG4gICAgICAgIHJldHVybiBfb3V0cHV0O1xuICAgIH0pO1xufSAvLyBwcmVkaWN0XG4vLyBFdmFsdWF0ZSBhY2N1cmFjeSBvZiB0aGUgbW9kZWxcbmZ1bmN0aW9uIGV2YWx1YXRlQWNjdXJhY3kobW9kZWwpIHtcbiAgICBsZXQgZGF0YSA9IG1vZGVsLmNvbmZ1c2lvbk1hdHJpeC5nZXRSYXdEYXRhKCk7XG4gICAgLy8gaGVyZSwgdGhlIGNsYXNzaWMgbm90YXRpb24gaXMgdXNlZCAoc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NlbnNpdGl2aXR5X2FuZF9zcGVjaWZpY2l0eSlcbiAgICBsZXQgVFAgPSBkYXRhW1RSVUVfUE9TSVRJVkVfSU5ERVhdOyAvLyB0cnVlIHBvc2l0aXZlXG4gICAgbGV0IFROID0gZGF0YVtUUlVFX05FR0FUSVZFX0lOREVYXTsgLy8gdHJ1ZSBuZWdhdGl2ZVxuICAgIGxldCBGUCA9IGRhdGFbRkFMU0VfUE9TSVRJVkVfSU5ERVhdOyAvLyBmYWxzZSBwb3NpdGl2ZVxuICAgIGxldCBGTiA9IGRhdGFbRkFMU0VfTkVHQVRJVkVfSU5ERVhdOyAvLyBmYWxzZSBuZWdhdGl2ZVxuICAgIGxldCBQID0gVFAgKyBGTjsgLy8gcG9zaXRpdmVcbiAgICBsZXQgTiA9IEZQICsgVE47IC8vIG5lZ2F0aXZlXG4gICAgbGV0IFRQUiA9IFRQIC8gUDsgLy8gdHJ1ZSBwb3NpdGl2ZSByYXRlXG4gICAgbGV0IFROUiA9IFROIC8gTjsgLy8gdHJ1ZSBuZWdhdGl2ZSByYXRlXG4gICAgbGV0IFBQViA9IFRQIC8gKFRQICsgRlApOyAvLyBwb3NpdGl2ZSBwcmVkaWNpdHZlIHZhbHVlXG4gICAgbGV0IE5QViA9IFROIC8gKFROICsgRk4pOyAvLyBuZWdhdGl2ZSBwcmVkaWNpdHZlIHZhbHVlXG4gICAgbGV0IEFDQyA9IChUUCArIFROKSAvIChQICsgTik7IC8vIGFjY3VyYWN5XG4gICAgbGV0IEJBID0gKFRQUiArIFROUikgLyAyOyAvLyBiYWxhbmNlZCBhY2N1cmFjeVxuICAgIG1vZGVsLnNlbnNpdGl2aXR5ID0gVFBSO1xuICAgIG1vZGVsLnNwZWNpZmljaXR5ID0gVE5SO1xuICAgIG1vZGVsLmJhbGFuY2VkQWNjdXJhY3kgPSBCQTtcbiAgICBtb2RlbC5wb3NpdGl2ZVByZWRpY2l0dmVWYWx1ZSA9IFBQVjtcbiAgICBtb2RlbC5uZWdhdGl2ZVByZWRpY2l0dmVWYWx1ZSA9IE5QVjtcbiAgICBtb2RlbC50cmFpbkVycm9yID0gKDEgLSBBQ0MpICogMTAwOyAvLyB0cmFpbiBlcnJvciwgJVxufSAvLyBldmFsdWF0ZUFjY3VyYWN5XG4vLyBSZXR1cm5zIHRyYWluZWQgTFMtU1ZNIG1vZGVsLlxuZnVuY3Rpb24gdHJhaW5BbmRBbmFseXplTW9kZWwoaHlwZXJwYXJhbWV0ZXJzLCBkYXRhc2V0LCBsYWJlbHMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBjaGVjayBjb3JyZWN0bmVzcyBvZiBoeXBlcnBhcmFtZXRlciBnYW1tYVxuICAgICAgICBjaGVja0h5cGVycGFyYW1ldGVycyhoeXBlcnBhcmFtZXRlcnMpO1xuICAgICAgICAvLyBjcmVhdGUgZGVmYXVsdCBrZXJuZWwgcGFyYW1zIGFycmF5XG4gICAgICAgIGNvbnN0IGtlcm5lbFBhcmFtc0FycmF5ID0gW0lOSVRfVkFMVUUsIElOSVRfVkFMVUVdO1xuICAgICAgICAvLyBmaWxsIGtlcm5lbFBhcmFtc1xuICAgICAgICBzd2l0Y2ggKGh5cGVycGFyYW1ldGVycy5rZXJuZWwpIHtcbiAgICAgICAgICAgIGNhc2UgTElORUFSOiAvLyBubyBrZXJuZWwgcGFyYW1ldGVycyBpbiB0aGUgY2FzZSBvZiBsaW5lYXIga2VybmVsXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJCRjogLy8gc2lnbWEgcGFyYW1ldGVyIGluIHRoZSBjYXNlIG9mIFJCRi1rZXJuZWxcbiAgICAgICAgICAgICAgICBrZXJuZWxQYXJhbXNBcnJheVtSQkZfU0lHTUFfSU5ERVhdID0gaHlwZXJwYXJhbWV0ZXJzLnNpZ21hO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQT0xZTk9NSUFMOiAvLyBzaWdtYSBwYXJhbWV0ZXIgaW4gdGhlIGNhc2Ugb2YgcG9seW5vbWlhbCBrZXJuZWxcbiAgICAgICAgICAgICAgICBrZXJuZWxQYXJhbXNBcnJheVtQT0xZTk9NSUFMX0NfSU5ERVhdID0gaHlwZXJwYXJhbWV0ZXJzLmNQYXJhbTtcbiAgICAgICAgICAgICAgICBrZXJuZWxQYXJhbXNBcnJheVtQT0xZTk9NSUFMX0RfSU5ERVhdID0gaHlwZXJwYXJhbWV0ZXJzLmRQYXJhbTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU0lHTU9JRDogLy8gc2lnbWEgcGFyYW1ldGVyIGluIHRoZSBjYXNlIG9mIHNpZ21vaWQga2VybmVsXG4gICAgICAgICAgICAgICAga2VybmVsUGFyYW1zQXJyYXlbU0lHTU9JRF9LQVBQQV9JTkRFWF0gPSBoeXBlcnBhcmFtZXRlcnMua2FwcGE7XG4gICAgICAgICAgICAgICAga2VybmVsUGFyYW1zQXJyYXlbU0lHTU9JRF9USEVUQV9JTkRFWF0gPSBoeXBlcnBhcmFtZXRlcnMudGhldGE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiAvLyBpbmNvcnJlY3Qga2VybmVsIFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihXUk9OR19LRVJORUxfTUVTU0FHRSk7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgICAgICAvLyBjcmVhdGUga2VybmVsIHBhcmFtcyBjb2x1bW5cbiAgICAgICAgbGV0IGtlcm5lbFBhcmFtcyA9IERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgS0VSTkVMX1BBUkFNUywga2VybmVsUGFyYW1zQXJyYXkpO1xuICAgICAgICAvLyBjb21wdXRlIHNpemUgb2YgbW9kZWwgcGFyYW1zICYgcHJlY29tcHV0ZWQgd2VpZ3Roc1xuICAgICAgICBsZXQgdHJhaW5Db2xzID0gZGF0YXNldC50b0xpc3QoKTtcbiAgICAgICAgbGV0IG1vZGVsUGFyYW1zQ291bnQgPSB0cmFpbkNvbHNbMF0ubGVuZ3RoICsgTFNfU1ZNX0FERF9DT05TVDtcbiAgICAgICAgbGV0IHByZWNvbXB1dGVkV2VpZ2h0c0NvdW50ID0gdHJhaW5Db2xzLmxlbmd0aCArIExTX1NWTV9BRERfQ09OU1Q7XG4gICAgICAgIGxldCBjb25mdXNpb25NYXRyaXhFbGVtZW50c0NvdW50ID0gQ09ORlVTSU9OX01BVFJfU0laRTtcbiAgICAgICAgLy8gY2FsbCB3ZWJhc3NlbWJseSB0cmFpbmluZyBmdW5jdGlvblxuICAgICAgICBsZXQgb3V0cHV0O1xuICAgICAgICBsZXQgX3Byb21pc2UgPSBfdHJhaW5BbmRBbmFseXplTFNTVk1JbldlYldvcmtlcihoeXBlcnBhcmFtZXRlcnMuZ2FtbWEsIGh5cGVycGFyYW1ldGVycy5rZXJuZWwsIGtlcm5lbFBhcmFtcywgbW9kZWxQYXJhbXNDb3VudCwgcHJlY29tcHV0ZWRXZWlnaHRzQ291bnQsIGNvbmZ1c2lvbk1hdHJpeEVsZW1lbnRzQ291bnQsIGRhdGFzZXQsIGxhYmVscyk7XG4gICAgICAgIHlpZWxkIF9wcm9taXNlLnRoZW4oX3Jlc3VsdCA9PiB7IG91dHB1dCA9IF9yZXN1bHQ7IH0sIF9lcnJvciA9PiB7IHRocm93IG5ldyBFcnJvcihgRXJyb3I6ICR7X2Vycm9yfWApOyB9KTtcbiAgICAgICAgLy8gcmVuYW1lIG91dHB1dCBjb2x1bW5zXG4gICAgICAgIG91dHB1dFtNRUFOU19JTkRFWF0ubmFtZSA9IE1FQU47XG4gICAgICAgIG91dHB1dFtTVERfREVWU19JTkRFWF0ubmFtZSA9IFNURF9ERVY7XG4gICAgICAgIG91dHB1dFtNT0RFTF9QQVJBTVNfSU5ERVhdLm5hbWUgPSBNT0RFTF9QQVJBTVNfTkFNRTtcbiAgICAgICAgb3V0cHV0W01PREVMX1dFSUdIVFNfSU5ERVhdLm5hbWUgPSBNT0RFTF9XRUlHSFRTX05BTUU7XG4gICAgICAgIG91dHB1dFtQUkVESUNURURfTEFCRUxTX0lOREVYXS5uYW1lID0gUFJFRElDVEVEO1xuICAgICAgICBvdXRwdXRbQ09SUkVDVE5FU1NfSU5ERVhdLm5hbWUgPSBDT1JSRUNUTkVTUztcbiAgICAgICAgb3V0cHV0W0NPTkZVU0lPTl9NQVRSSVhfSU5ERVhdLm5hbWUgPSBDT05GVVNJT05fTUFUUklYX05BTUU7XG4gICAgICAgIC8vIGNvbXBsZXRlIG1vZGVsXG4gICAgICAgIGxldCBtb2RlbCA9IHtcbiAgICAgICAgICAgIHRyYWluR2FtbWE6IGh5cGVycGFyYW1ldGVycy5nYW1tYSxcbiAgICAgICAgICAgIGtlcm5lbFR5cGU6IGh5cGVycGFyYW1ldGVycy5rZXJuZWwsXG4gICAgICAgICAgICBrZXJuZWxQYXJhbXM6IGtlcm5lbFBhcmFtcyxcbiAgICAgICAgICAgIHRyYWluTGFiZWxzOiBsYWJlbHMsXG4gICAgICAgICAgICBub3JtYWxpemVkVHJhaW5EYXRhOiBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMob3V0cHV0W05PUk1BTElaRURfREFUQV9JTkRFWF0pLFxuICAgICAgICAgICAgbWVhbnM6IG91dHB1dFtNRUFOU19JTkRFWF0sXG4gICAgICAgICAgICBzdGREZXZzOiBvdXRwdXRbU1REX0RFVlNfSU5ERVhdLFxuICAgICAgICAgICAgbW9kZWxQYXJhbXM6IG91dHB1dFtNT0RFTF9QQVJBTVNfSU5ERVhdLFxuICAgICAgICAgICAgbW9kZWxXZWlnaHRzOiBvdXRwdXRbTU9ERUxfV0VJR0hUU19JTkRFWF0sXG4gICAgICAgICAgICBwcmVkaWN0ZWRMYWJlbHM6IG91dHB1dFtQUkVESUNURURfTEFCRUxTX0lOREVYXSxcbiAgICAgICAgICAgIGNvcnJlY3RuZXNzOiBvdXRwdXRbQ09SUkVDVE5FU1NfSU5ERVhdLFxuICAgICAgICAgICAgY29uZnVzaW9uTWF0cml4OiBvdXRwdXRbQ09ORlVTSU9OX01BVFJJWF9JTkRFWF0sXG4gICAgICAgICAgICB0cmFpbkVycm9yOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBmZWF0dXJlc0NvdW50OiB0cmFpbkNvbHMubGVuZ3RoLFxuICAgICAgICAgICAgdHJhaW5TYW1wbGVzQ291bnQ6IHRyYWluQ29sc1swXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgZXZhbHVhdGVBY2N1cmFjeShtb2RlbCk7XG4gICAgICAgIHJldHVybiBtb2RlbDtcbiAgICB9KTtcbn0gLy8gdHJhaW5BbmRBbmFseXplTW9kZWxcbi8vIFdyYXBwZXIgZm9yIGNvbWJpbmluZyB0aGUgZnVuY3Rpb24gXCJ0cmFpbkFuZEFuYWx5emVNb2RlbFwiIHdpdGggRGF0YWdyb2sgcHJlZGljaXR2ZSB0b29sc1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYWluZWRNb2RlbChoeXBlcnBhcmFtZXRlcnMsIGRmLCBwcmVkaWN0X2NvbHVtbikge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBjb2x1bW5zID0gZGYuY29sdW1ucztcbiAgICAgICAgbGV0IGxhYmVscyA9IGNvbHVtbnMuYnlOYW1lKHByZWRpY3RfY29sdW1uKTtcbiAgICAgICAgY29sdW1ucy5yZW1vdmUocHJlZGljdF9jb2x1bW4pO1xuICAgICAgICByZXR1cm4geWllbGQgdHJhaW5BbmRBbmFseXplTW9kZWwoaHlwZXJwYXJhbWV0ZXJzLCBjb2x1bW5zLCBsYWJlbHMpO1xuICAgIH0pO1xufVxuLy8gUmV0dXJucyBkYXRhZnJhbWUgd2l0aCBzaG9ydCBpbmZvIGFib3V0IG1vZGVsXG5mdW5jdGlvbiBnZXRNb2RlbEluZm8obW9kZWwpIHtcbiAgICBsZXQga2VybmVsUGFyYW1zID0gbW9kZWwua2VybmVsUGFyYW1zLmdldFJhd0RhdGEoKTtcbiAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBHQU1NQSwgW21vZGVsLnRyYWluR2FtbWFdKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21TdHJpbmdzKEtFUk5FTCwgW0tFUk5FTF9UWVBFX1RPX05BTUVfTUFQW21vZGVsLmtlcm5lbFR5cGVdXSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgS0VSTkVMX1BBUkFNXzEsIFtrZXJuZWxQYXJhbXNbMF1dKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBLRVJORUxfUEFSQU1fMiwgW2tlcm5lbFBhcmFtc1sxXV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIEZFQVRVUkVTX0NPVU5UX05BTUUsIFttb2RlbC5mZWF0dXJlc0NvdW50XSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgVFJBSU5fU0FNUExFU19DT1VOVF9OQU1FLCBbbW9kZWwudHJhaW5TYW1wbGVzQ291bnRdKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBUUkFJTl9FUlJPUiwgW21vZGVsLnRyYWluRXJyb3JdKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBCQUxBTkNFRF9BQ0NVUkFDWSwgW21vZGVsLmJhbGFuY2VkQWNjdXJhY3ldKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBTRU5TSVRJVklUWSwgW21vZGVsLnNlbnNpdGl2aXR5XSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgU1BFQ0lGSUNJVFksIFttb2RlbC5zcGVjaWZpY2l0eV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIFBPU0lUSVZFX1BSRURJQ1RJVkVfVkFMVUUsIFttb2RlbC5wb3NpdGl2ZVByZWRpY2l0dmVWYWx1ZV0pLFxuICAgICAgICBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIE5FR0FUSVZFX1BSRURJQ1RJVkVfVkFMVUUsIFttb2RlbC5uZWdhdGl2ZVByZWRpY2l0dmVWYWx1ZV0pXG4gICAgXSk7XG59XG4vLyBHZXQgZGF0YWZyYW1lIHdpdGggY29uZnVzaW9uIG1hdHJpeFxuZnVuY3Rpb24gZ2V0Q29uZnVzaW9uTWF0cml4REYobW9kZWwpIHtcbiAgICBsZXQgZGF0YSA9IG1vZGVsLmNvbmZ1c2lvbk1hdHJpeC5nZXRSYXdEYXRhKCk7XG4gICAgcmV0dXJuIERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbXG4gICAgICAgIERHLkNvbHVtbi5mcm9tU3RyaW5ncygnJywgW1BPU0lUSVZFX05BTUUsIE5FR0FUSVZFX05BTUVdKSxcbiAgICAgICAgREcuQ29sdW1uLmZyb21MaXN0KCdpbnQnLCBQUkVESUNURURfUE9TSVRJVkVfTkFNRSwgW2RhdGFbVFJVRV9QT1NJVElWRV9JTkRFWF0sIGRhdGFbRkFMU0VfUE9TSVRJVkVfSU5ERVhdXSksXG4gICAgICAgIERHLkNvbHVtbi5mcm9tTGlzdCgnaW50JywgUFJFRElDVEVEX05FR0FUSVZFX05BTUUsIFtkYXRhW0ZBTFNFX05FR0FUSVZFX0lOREVYXSwgZGF0YVtUUlVFX05FR0FUSVZFX0lOREVYXV0pXG4gICAgXSk7XG59XG4vLyBTaG93IHRyYWluaW5nIHJlcG9ydFxuZXhwb3J0IGZ1bmN0aW9uIHNob3dUcmFpblJlcG9ydChkZiwgbW9kZWwpIHtcbiAgICBkZi5uYW1lID0gTUxfUkVQT1JUO1xuICAgIGRmLmNvbHVtbnMuYWRkKG1vZGVsLnRyYWluTGFiZWxzKTtcbiAgICBkZi5jb2x1bW5zLmFkZChtb2RlbC5wcmVkaWN0ZWRMYWJlbHMpO1xuICAgIGRmLmNvbHVtbnMuYWRkKG1vZGVsLmNvcnJlY3RuZXNzKTtcbiAgICBsZXQgZGZWaWV3ID0gZ3Jvay5zaGVsbC5hZGRUYWJsZVZpZXcoZGYpO1xuICAgIGRmVmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLmZvcm0oZ2V0TW9kZWxJbmZvKG1vZGVsKSkpO1xuICAgIGRmVmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7IHRpdGxlOiBNTF9SRVBPUlRfUFJFRElDVEVEX0xBQkVMUyxcbiAgICAgICAgY29sb3I6IG1vZGVsLnByZWRpY3RlZExhYmVscy5uYW1lXG4gICAgfSkpO1xuICAgIGRmVmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7IHRpdGxlOiBNTF9SRVBPUlRfVFJBSU5fTEFCRUxTLFxuICAgICAgICBjb2xvcjogbW9kZWwudHJhaW5MYWJlbHMubmFtZVxuICAgIH0pKTtcbiAgICBkZlZpZXcuYWRkVmlld2VyKERHLlZpZXdlci5ncmlkKGdldENvbmZ1c2lvbk1hdHJpeERGKG1vZGVsKSkpO1xuICAgIGRmVmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7IHRpdGxlOiBNTF9SRVBPUlRfQ09SUkVDVE5FU1MsXG4gICAgICAgIGNvbG9yOiBtb2RlbC5jb3JyZWN0bmVzcy5uYW1lXG4gICAgfSkpO1xufSAvLyBzaG93VHJhaW5SZXBvcnRcbi8vIFJldHVybnMgdHJhaW5lZCBtb2RlbCBwYWNrZWQgaW50byBVSW50OEFycmF5XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFja2VkTW9kZWwobW9kZWwpIHtcbiAgICAvLyBnZXQgcHJpbmNpcGFsIGRhdGFcbiAgICBsZXQgZGF0YUNvbHMgPSBtb2RlbC5ub3JtYWxpemVkVHJhaW5EYXRhLmNvbHVtbnM7XG4gICAgbGV0IHNhbXBsZXNDb3VudCA9IG1vZGVsLnRyYWluU2FtcGxlc0NvdW50O1xuICAgIGxldCBmZWF0dXJlc0NvdW50ID0gbW9kZWwuZmVhdHVyZXNDb3VudDtcbiAgICAvKmxldCBidWZmZXJTaXplID0gQllURVMgKiAoNyArIGZlYXR1cmVzQ291bnQgKiBzYW1wbGVzQ291bnRcbiAgICAgICsgMyAqIGZlYXR1cmVzQ291bnQgKyAyICogc2FtcGxlc0NvdW50KTsqL1xuICAgIC8vIGNvbXB1dGUgc2l6ZSBvZiBwYWNrZWQgbW9kZWxcbiAgICBsZXQgYnVmZmVyU2l6ZSA9IEJZVEVTICogKElOVFNfQ09VTlQgKyBLRVJfUEFSQU1TX0NPVU5UICtcbiAgICAgICAgc2FtcGxlc0NvdW50ICsgZmVhdHVyZXNDb3VudCArIGZlYXR1cmVzQ291bnQgKyBzYW1wbGVzQ291bnQgKyBMU19TVk1fQUREX0NPTlNUXG4gICAgICAgICsgZmVhdHVyZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QgKyBmZWF0dXJlc0NvdW50ICogc2FtcGxlc0NvdW50KTtcbiAgICAvLyBwYWNrZWQgbW9kZWxcbiAgICBsZXQgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyU2l6ZSk7XG4gICAgbGV0IGJ1ZmZlciA9IHJlc3VsdC5idWZmZXI7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgLy8gcGFjayBrZXJuZWwgdHlwZSBhbmQgc2l6ZXNcbiAgICBsZXQgaW50cyA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCBJTlRTX0NPVU5UKTtcbiAgICBpbnRzW01PREVMX0tFUk5FTF9JTkRFWF0gPSBtb2RlbC5rZXJuZWxUeXBlO1xuICAgIGludHNbU0FNUExFU19DT1VOVF9JTkRFWF0gPSBzYW1wbGVzQ291bnQ7XG4gICAgaW50c1tGRUFUVVJFU19DT1VOVF9JTkRFWF0gPSBmZWF0dXJlc0NvdW50O1xuICAgIG9mZnNldCArPSBJTlRTX0NPVU5UICogQllURVM7XG4gICAgLy8gcGFjayBrZXJuZWwgcGFyYW1ldGVyc1xuICAgIGxldCBmbG9hdHMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCBLRVJfUEFSQU1TX0NPVU5UKTtcbiAgICBmbG9hdHMuc2V0KG1vZGVsLmtlcm5lbFBhcmFtcy5nZXRSYXdEYXRhKCkpO1xuICAgIG9mZnNldCArPSBLRVJfUEFSQU1TX0NPVU5UICogQllURVM7XG4gICAgLy8gcGFjayBwYWNrIGxhYmVscyBvZiB0cmFpbmluZyBkYXRhXG4gICAgZmxvYXRzID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXIsIG9mZnNldCwgc2FtcGxlc0NvdW50KTtcbiAgICBmbG9hdHMuc2V0KG1vZGVsLnRyYWluTGFiZWxzLmdldFJhd0RhdGEoKSk7XG4gICAgb2Zmc2V0ICs9IHNhbXBsZXNDb3VudCAqIEJZVEVTO1xuICAgIC8vIHBhY2sgbWVhbiB2YWx1ZXMgb2YgdHJhaW5pbmcgZGF0YVxuICAgIGZsb2F0cyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyLCBvZmZzZXQsIGZlYXR1cmVzQ291bnQpO1xuICAgIGZsb2F0cy5zZXQobW9kZWwubWVhbnMuZ2V0UmF3RGF0YSgpKTtcbiAgICBvZmZzZXQgKz0gZmVhdHVyZXNDb3VudCAqIEJZVEVTO1xuICAgIC8vIHBhY2sgc3RhbmRhcmQgZGV2aWF0aW9ucyBvZiB0cmFpbmluZyBkYXRhXG4gICAgZmxvYXRzID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXIsIG9mZnNldCwgZmVhdHVyZXNDb3VudCk7XG4gICAgZmxvYXRzLnNldChtb2RlbC5zdGREZXZzLmdldFJhd0RhdGEoKSk7XG4gICAgb2Zmc2V0ICs9IGZlYXR1cmVzQ291bnQgKiBCWVRFUztcbiAgICAvLyBwYWNrIG1vZGVsIHBhcmFtdGVyc1xuICAgIGZsb2F0cyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyLCBvZmZzZXQsIHNhbXBsZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpO1xuICAgIGZsb2F0cy5zZXQobW9kZWwubW9kZWxQYXJhbXMuZ2V0UmF3RGF0YSgpKTtcbiAgICBvZmZzZXQgKz0gKHNhbXBsZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpICogQllURVM7XG4gICAgLy8gcGFjayBtb2RlbCdzIHByZWNvbXB1dGVkIHdlaWdodHNcbiAgICBmbG9hdHMgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlciwgb2Zmc2V0LCBmZWF0dXJlc0NvdW50ICsgTFNfU1ZNX0FERF9DT05TVCk7XG4gICAgZmxvYXRzLnNldChtb2RlbC5tb2RlbFdlaWdodHMuZ2V0UmF3RGF0YSgpKTtcbiAgICBvZmZzZXQgKz0gKGZlYXR1cmVzQ291bnQgKyBMU19TVk1fQUREX0NPTlNUKSAqIEJZVEVTO1xuICAgIC8vIHBhY2sgdHJhaW5pbmcgZGF0YXNldFxuICAgIGZvciAoY29uc3QgY29sIG9mIGRhdGFDb2xzKSB7XG4gICAgICAgIGZsb2F0cyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyLCBvZmZzZXQsIGZlYXR1cmVzQ291bnQpO1xuICAgICAgICBmbG9hdHMuc2V0KGNvbC5nZXRSYXdEYXRhKCkpO1xuICAgICAgICBvZmZzZXQgKz0gZmVhdHVyZXNDb3VudCAqIEJZVEVTO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufSAvLyBnZXRQYWNrZWRNb2RlbFxuLy8gUmV0dXJucyB1bnBhY2tlZCBtb2RlbFxuZnVuY3Rpb24gZ2V0VW5wYWNrZWRNb2RlbChwYWNrZWRNb2RlbCkge1xuICAgIGxldCBtb2RlbEJ5dGVzID0gcGFja2VkTW9kZWwuYnVmZmVyO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIC8vIGV4dHJhY3Qga2VybmVsIHR5cGUgYW5kIHNpemVzXG4gICAgbGV0IGhlYWRlciA9IG5ldyBJbnQzMkFycmF5KG1vZGVsQnl0ZXMsIG9mZnNldCwgSU5UU19DT1VOVCk7XG4gICAgb2Zmc2V0ICs9IElOVFNfQ09VTlQgKiBCWVRFUztcbiAgICBsZXQgc2FtcGxlc0NvdW50ID0gaGVhZGVyW1NBTVBMRVNfQ09VTlRfSU5ERVhdO1xuICAgIGxldCBmZWF0dXJlc0NvdW50ID0gaGVhZGVyW0ZFQVRVUkVTX0NPVU5UX0lOREVYXTtcbiAgICAvLyBleHRyYWN0IHBhcmFtZXRlcnMgb2Yga2VybmVsXG4gICAgY29uc3Qga2VybmVsUGFyYW1zID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoS0VSTkVMX1BBUkFNUywgbmV3IEZsb2F0MzJBcnJheShtb2RlbEJ5dGVzLCBvZmZzZXQsIEtFUl9QQVJBTVNfQ09VTlQpKTtcbiAgICBvZmZzZXQgKz0gS0VSX1BBUkFNU19DT1VOVCAqIEJZVEVTO1xuICAgIC8vIGV4dHJhY3QgdHJhaW5pbmcgbGFiZWxzXG4gICAgY29uc3QgdHJhaW5MYWJlbHMgPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShMQUJFTFMsIG5ldyBGbG9hdDMyQXJyYXkobW9kZWxCeXRlcywgb2Zmc2V0LCBzYW1wbGVzQ291bnQpKTtcbiAgICBvZmZzZXQgKz0gc2FtcGxlc0NvdW50ICogQllURVM7XG4gICAgLy8gZXh0cmFjdCBtZWFuIHZhbHVlcyBvZiB0cmFpbmluZyBkYXRhXG4gICAgY29uc3QgbWVhbnMgPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShNRUFOLCBuZXcgRmxvYXQzMkFycmF5KG1vZGVsQnl0ZXMsIG9mZnNldCwgZmVhdHVyZXNDb3VudCkpO1xuICAgIG9mZnNldCArPSBmZWF0dXJlc0NvdW50ICogQllURVM7XG4gICAgLy8gZXh0cmFjdCBzdGFuZGFyZCBkZXZpYXRpb25zIG9mIHRyYWluaW5nIGRhdGFcbiAgICBjb25zdCBzdGREZXZzID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoU1REX0RFViwgbmV3IEZsb2F0MzJBcnJheShtb2RlbEJ5dGVzLCBvZmZzZXQsIGZlYXR1cmVzQ291bnQpKTtcbiAgICBvZmZzZXQgKz0gZmVhdHVyZXNDb3VudCAqIEJZVEVTO1xuICAgIC8vIGV4dHJhY3QgcGFyYW1ldGVycyBvZiBtb2RlbFxuICAgIGNvbnN0IG1vZGVsUGFyYW1zID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoTU9ERUxfUEFSQU1TX05BTUUsIG5ldyBGbG9hdDMyQXJyYXkobW9kZWxCeXRlcywgb2Zmc2V0LCBzYW1wbGVzQ291bnQgKyBMU19TVk1fQUREX0NPTlNUKSk7XG4gICAgb2Zmc2V0ICs9IChzYW1wbGVzQ291bnQgKyBMU19TVk1fQUREX0NPTlNUKSAqIEJZVEVTO1xuICAgIC8vIGV4dHJhY3QgbW9kZWwncyBwcmVjb21wdXRlZCB3ZWlnaHRzXG4gICAgY29uc3QgbW9kZWxXZWlnaHRzID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoTU9ERUxfV0VJR0hUU19OQU1FLCBuZXcgRmxvYXQzMkFycmF5KG1vZGVsQnl0ZXMsIG9mZnNldCwgZmVhdHVyZXNDb3VudCArIExTX1NWTV9BRERfQ09OU1QpKTtcbiAgICBvZmZzZXQgKz0gKGZlYXR1cmVzQ291bnQgKyBMU19TVk1fQUREX0NPTlNUKSAqIEJZVEVTO1xuICAgIC8vIGV4dHJhY3QgdHJhaW5pbmcgZGF0YSBjb2x1bW5zXG4gICAgbGV0IGRhdGFDb2xzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzYW1wbGVzQ291bnQ7IGkrKykge1xuICAgICAgICBkYXRhQ29scy5wdXNoKERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KGkudG9TdHJpbmcoKSwgbmV3IEZsb2F0MzJBcnJheShtb2RlbEJ5dGVzLCBvZmZzZXQsIGZlYXR1cmVzQ291bnQpKSk7XG4gICAgICAgIG9mZnNldCArPSBmZWF0dXJlc0NvdW50ICogQllURVM7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRUcmFpbkRhdGEgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoZGF0YUNvbHMpO1xuICAgIGxldCBtb2RlbCA9IHsga2VybmVsVHlwZTogaGVhZGVyW01PREVMX0tFUk5FTF9JTkRFWF0sXG4gICAgICAgIGtlcm5lbFBhcmFtczoga2VybmVsUGFyYW1zLFxuICAgICAgICB0cmFpbkxhYmVsczogdHJhaW5MYWJlbHMsXG4gICAgICAgIG1lYW5zOiBtZWFucyxcbiAgICAgICAgc3RkRGV2czogc3RkRGV2cyxcbiAgICAgICAgbW9kZWxQYXJhbXM6IG1vZGVsUGFyYW1zLFxuICAgICAgICBtb2RlbFdlaWdodHM6IG1vZGVsV2VpZ2h0cyxcbiAgICAgICAgbm9ybWFsaXplZFRyYWluRGF0YTogbm9ybWFsaXplZFRyYWluRGF0YVxuICAgIH07XG4gICAgcmV0dXJuIG1vZGVsO1xufSAvLyBnZXRVbnBhY2tlZE1vZGVsXG4vLyBXcmFwcGVyIGZvciBjb21iaW5pbmcgdGhlIGZ1bmN0aW9uIFwicHJlZGljdFwiIHdpdGggRGF0YWdyb2sgcHJlZGljaXR2ZSB0b29sc1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByZWRpY3Rpb24oZGYsIHBhY2tlZE1vZGVsKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IG1vZGVsID0gZ2V0VW5wYWNrZWRNb2RlbChuZXcgVWludDhBcnJheShwYWNrZWRNb2RlbCkpO1xuICAgICAgICBsZXQgcmVzID0geWllbGQgcHJlZGljdChtb2RlbCwgZGYuY29sdW1ucyk7XG4gICAgICAgIHJlcy5uYW1lID0gUFJFRElDVElPTjtcbiAgICAgICAgcmV0dXJuIERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbcmVzXSk7XG4gICAgfSk7XG59IC8vIGdldFByZWRpY3Rpb25cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBEZW1vU2NyaXB0IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy90dXRvcmlhbHMvc3JjL2RlbW8tc2NyaXB0JztcbmltcG9ydCB7IF9pbml0RURBQVBJIH0gZnJvbSAnLi4vd2FzbS9FREFBUEknO1xuaW1wb3J0IHsgY29tcHV0ZVBDQSwgY29tcHV0ZVBMUywgY29tcHV0ZVVNQVAsIGNvbXB1dGVUU05FLCBjb21wdXRlU1BFIH0gZnJvbSAnLi9lZGEtdG9vbHMnO1xuaW1wb3J0IHsgYWRkUHJlZml4VG9FYWNoQ29sdW1uTmFtZSwgYWRkUExTdmlzdWFsaXphdGlvbiwgcmVncmVzc2lvbkNvZWZmaWNpZW50c0JhckNoYXJ0LCBzY29yZXNTY2F0dGVyUGxvdCwgcHJlZGljdGVkVmVyc3VzUmVmZXJlbmNlU2NhdHRlclBsb3QgfSBmcm9tICcuL2VkYS11aSc7XG5pbXBvcnQgeyBjYXJzRGF0YWZyYW1lLCB0ZXN0RGF0YUZvckJpbmFyeUNsYXNzaWZpY2F0aW9uIH0gZnJvbSAnLi9kYXRhLWdlbmVyYXRvcnMnO1xuaW1wb3J0IHsgTElORUFSLCBSQkYsIFBPTFlOT01JQUwsIFNJR01PSUQsIGdldFRyYWluZWRNb2RlbCwgZ2V0UHJlZGljdGlvbiwgc2hvd1RyYWluUmVwb3J0LCBnZXRQYWNrZWRNb2RlbCB9IGZyb20gJy4vc3ZtJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG4vL25hbWU6IGluZm9cbmV4cG9ydCBmdW5jdGlvbiBpbmZvKCkge1xuICAgIGdyb2suc2hlbGwuaW5mbyhfcGFja2FnZS53ZWJSb290KTtcbn1cbi8vdGFnczogaW5pdFxuZXhwb3J0IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgeWllbGQgX2luaXRFREFBUEkoKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IE1MIHwgRGltZW5zaW9uIFJlZHVjdGlvbiB8IFBDQS4uLlxuLy9uYW1lOiBQQ0Fcbi8vZGVzY3JpcHRpb246IFByaW5jaXBhbCBjb21wb25lbnQgYW5hbHlzaXMgKFBDQSkuXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGUge2NhdGVnb3J5OiBEYXRhfVxuLy9pbnB1dDogY29sdW1uX2xpc3QgZmVhdHVyZXMge3R5cGU6IG51bWVyaWNhbDsgY2F0ZWdvcnk6IERhdGF9XG4vL2lucHV0OiBpbnQgY29tcG9uZW50cyA9IDIge2NhcHRpb246IENvbXBvbmVudHM7IGNhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9IFtOdW1iZXIgb2YgY29tcG9uZW50cy5dXG4vL2lucHV0OiBib29sIGNlbnRlciA9IGZhbHNlIHtjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfSBbSW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YXJpYWJsZXMgc2hvdWxkIGJlIHNoaWZ0ZWQgdG8gYmUgemVybyBjZW50ZXJlZC5dXG4vL2lucHV0OiBib29sIHNjYWxlID0gZmFsc2Uge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9IFtJbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhcmlhYmxlcyBzaG91bGQgYmUgc2NhbGVkIHRvIGhhdmUgdW5pdCB2YXJpYW5jZS5dXG4vL291dHB1dDogZGF0YWZyYW1lIHJlc3VsdCB7YWN0aW9uOmpvaW4odGFibGUpfVxuZXhwb3J0IGZ1bmN0aW9uIFBDQSh0YWJsZSwgZmVhdHVyZXMsIGNvbXBvbmVudHMsIGNlbnRlciwgc2NhbGUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwY2FUYWJsZSA9IHlpZWxkIGNvbXB1dGVQQ0EodGFibGUsIGZlYXR1cmVzLCBjb21wb25lbnRzLCBjZW50ZXIsIHNjYWxlKTtcbiAgICAgICAgYWRkUHJlZml4VG9FYWNoQ29sdW1uTmFtZSgnUENBJywgcGNhVGFibGUuY29sdW1ucyk7XG4gICAgICAgIHJldHVybiBwY2FUYWJsZTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IE1MIHwgRGltZW5zaW9uIFJlZHVjdGlvbiB8IFVNQVAuLi5cbi8vbmFtZTogVU1BUFxuLy9kZXNjcmlwdGlvbjogVW5pZm9ybSBNYW5pZm9sZCBBcHByb3hpbWF0aW9uIGFuZCBQcm9qZWN0aW9uIChVTUFQKS5cbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZSB7Y2F0ZWdvcnk6IERhdGF9XG4vL2lucHV0OiBjb2x1bW5fbGlzdCBmZWF0dXJlcyB7dHlwZTogbnVtZXJpY2FsOyBjYXRlZ29yeTogRGF0YX1cbi8vaW5wdXQ6IGludCBjb21wb25lbnRzID0gMiB7Y2FwdGlvbjogQ29tcG9uZW50czsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW1RoZSBudW1iZXIgb2YgY29tcG9uZW50cyAoZGltZW5zaW9ucykgdG8gcHJvamVjdCB0aGUgZGF0YSB0by5dXG4vL2lucHV0OiBpbnQgZXBvY2hzID0gMTAwIHtjYXB0aW9uOiBFcG9jaHM7IGNhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9IFtUaGUgbnVtYmVyIG9mIGVwb2NocyB0byBvcHRpbWl6ZSBlbWJlZGRpbmdzLl1cbi8vaW5wdXQ6IGludCBuZWlnaGJvcnMgPSAxNSB7Y2FwdGlvbjogTmVpZ2hib3JzOyBjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfSBbVGhlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9ycyB0byBjb25zdHJ1Y3QgdGhlIGZ1enp5IG1hbmlmb2xkLl1cbi8vaW5wdXQ6IGRvdWJsZSBtaW5EaXN0ID0gMC4xIHtjYXB0aW9uOiBNaW5pbXVtIGRpc3RhbmNlOyBjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfSBbVGhlIGVmZmVjdGl2ZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gZW1iZWRkZWQgcG9pbnRzLl1cbi8vaW5wdXQ6IGRvdWJsZSBzcHJlYWQgPSAxLjAge2NhcHRpb246IFNwcmVhZDsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW1RoZSBlZmZlY3RpdmUgc2NhbGUgb2YgZW1iZWRkZWQgcG9pbnRzLl1cbi8vb3V0cHV0OiBkYXRhZnJhbWUgcmVzdWx0IHthY3Rpb246am9pbih0YWJsZSl9XG5leHBvcnQgZnVuY3Rpb24gVU1BUCh0YWJsZSwgZmVhdHVyZXMsIGNvbXBvbmVudHMsIGVwb2NocywgbmVpZ2hib3JzLCBtaW5EaXN0LCBzcHJlYWQpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICByZXR1cm4geWllbGQgY29tcHV0ZVVNQVAoZmVhdHVyZXMsIGNvbXBvbmVudHMsIGVwb2NocywgbmVpZ2hib3JzLCBtaW5EaXN0LCBzcHJlYWQpO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogTUwgfCBEaW1lbnNpb24gUmVkdWN0aW9uIHwgdC1TTkUuLi5cbi8vbmFtZTogdC1TTkVcbi8vZGVzY3JpcHRpb246IHQtZGlzdHJpYnV0ZWQgc3RvY2hhc3RpYyBuZWlnaGJvciBlbWJlZGRpbmcgKHQtU05FKS5cbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZSB7Y2F0ZWdvcnk6IERhdGF9XG4vL2lucHV0OiBjb2x1bW5fbGlzdCBmZWF0dXJlcyB7dHlwZTogbnVtZXJpY2FsOyBjYXRlZ29yeTogRGF0YX1cbi8vaW5wdXQ6IGludCBjb21wb25lbnRzID0gMiB7Y2FwdGlvbjogQ29tcG9uZW50czsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW0RpbWVuc2lvbiBvZiB0aGUgZW1iZWRkZWQgc3BhY2UuXVxuLy9pbnB1dDogZG91YmxlIGxlYXJuaW5nUmF0ZSA9IDEwIHtjYXB0aW9uOiBMZWFybmluZyByYXRlOyBjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfSBbT3B0aW1pemF0aW9uIHR1bmluZyBwYXJhbWV0ZXIuIFNob3VsZCBiZSBpbiB0aGUgcmFuZ2UgMTAuLi4xMDAwLl1cbi8vaW5wdXQ6IGludCBwZXJwbGV4aXR5ID0gMzAge2NhcHRpb246IFBlcnBsZXhpdHk7IGNhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9IFtUaGUgbnVtYmVyIG9mIG5lYXJlc3QgbmVpZ2hib3JzLiBTaG91bGQgYmUgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2Ygc2FtcGxlcy5dXG4vL2lucHV0OiBpbnQgaXRlcmF0aW9ucyA9IDUwMCB7Y2FwdGlvbjogSXRlcmF0aW9uczsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW01heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBvcHRpbWl6YXRpb24uIFNob3VsZCBiZSBhdCBsZWFzdCAyNTAuXVxuLy9vdXRwdXQ6IGRhdGFmcmFtZSByZXN1bHQge2FjdGlvbjpqb2luKHRhYmxlKX1cbmV4cG9ydCBmdW5jdGlvbiB0U05FKHRhYmxlLCBmZWF0dXJlcywgY29tcG9uZW50cywgbGVhcm5pbmdSYXRlLCBwZXJwbGV4aXR5LCBpdGVyYXRpb25zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgcmV0dXJuIHlpZWxkIGNvbXB1dGVUU05FKGZlYXR1cmVzLCBjb21wb25lbnRzLCBsZWFybmluZ1JhdGUsIHBlcnBsZXhpdHksIGl0ZXJhdGlvbnMpO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogTUwgfCBEaW1lbnNpb24gUmVkdWN0aW9uIHwgU1BFLi4uXG4vL25hbWU6IFNQRVxuLy9kZXNjcmlwdGlvbjogU3RvY2hhc3RpYyBwcm94aW1pdHkgZW1iZWRkaW5nIChTUEUpLlxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlIHtjYXRlZ29yeTogRGF0YX1cbi8vaW5wdXQ6IGNvbHVtbl9saXN0IGZlYXR1cmVzIHt0eXBlOiBudW1lcmljYWw7IGNhdGVnb3J5OiBEYXRhfVxuLy9pbnB1dDogaW50IGRpbWVuc2lvbiA9IDIge2NhcHRpb246IERpbWVuc2lvbjsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW0RpbWVuc2lvbiBvZiB0aGUgZW1iZWRkZWQgc3BhY2UuXVxuLy9pbnB1dDogaW50IHN0ZXBzID0gMCB7Y2FwdGlvbjogU3RlcHM7IGNhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9IFtOdW1iZXIgb2YgcmFuZG9tIHNlbGVjdGlvbnMgb2YgcG9pbnQgcGFpcnMgYW5kIGRpc3RhbmNlIGNvbXB1dGF0aW9ucyBiZXR3ZWVuIHRoZW0uXVxuLy9pbnB1dDogaW50IGN5Y2xlcyA9IDEwMDAwMDAge2NhcHRpb246IEN5Y2xlczsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW051bWJlciBvZiB0aGUgbWV0aG9kIGN5Y2xlcy5dXG4vL2lucHV0OiBkb3VibGUgY3V0b2ZmID0gMC4wIHtjYXB0aW9uOiBDdXRvZmY7IGNhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9IFtDdXRvZmYgZGlzdGFuY2UgYmV0d2VlbiBwb2ludHMuXVxuLy9pbnB1dDogZG91YmxlIGxhbWJkYSA9IDIuMCB7Y2FwdGlvbjogTGVhcm5pbmcgcmF0ZTsgY2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc30gW09wdGltaXphdGlvbiB0dW5pbmcgcGFyYW1ldGVyLl1cbi8vb3V0cHV0OiBkYXRhZnJhbWUgcmVzdWx0IHthY3Rpb246am9pbih0YWJsZSl9XG5leHBvcnQgZnVuY3Rpb24gU1BFKHRhYmxlLCBmZWF0dXJlcywgZGltZW5zaW9uLCBzdGVwcywgY3ljbGVzLCBjdXRvZmYsIGxhbWJkYSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCBjb21wdXRlU1BFKGZlYXR1cmVzLCBkaW1lbnNpb24sIHN0ZXBzLCBjeWNsZXMsIGN1dG9mZiwgbGFtYmRhKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IE1MIHwgTXVsdGl2YXJpYXRlIEFuYWx5c2lzIChQTFMpLi4uXG4vL25hbWU6IE11bHRpdmFyaWF0ZSBBbmFseXNpcyAoUExTKVxuLy9kZXNjcmlwdGlvbjogTXVsdGlkaW1lbnNpb25hbCBkYXRhIGFuYWx5c2lzIHVzaW5nIHBhcnRpYWwgbGVhc3Qgc3F1YXJlcyAoUExTKSByZWdyZXNzaW9uLiBJdCByZWR1Y2VzIHRoZSBwcmVkaWN0b3JzIHRvIGEgc21hbGxlciBzZXQgb2YgdW5jb3JyZWxhdGVkIGNvbXBvbmVudHMgYW5kIHBlcmZvcm1zIGxlYXN0IHNxdWFyZXMgcmVncmVzc2lvbiBvbiB0aGVtLlxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gbmFtZXNcbi8vaW5wdXQ6IGNvbHVtbl9saXN0IGZlYXR1cmVzIHt0eXBlOiBudW1lcmljYWx9XG4vL2lucHV0OiBjb2x1bW4gcHJlZGljdCB7dHlwZTogbnVtZXJpY2FsfVxuLy9pbnB1dDogaW50IGNvbXBvbmVudHMgPSAzXG5leHBvcnQgZnVuY3Rpb24gUExTKHRhYmxlLCBuYW1lcywgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwbHNSZXN1bHRzID0geWllbGQgY29tcHV0ZVBMUyh0YWJsZSwgZmVhdHVyZXMsIHByZWRpY3QsIGNvbXBvbmVudHMpO1xuICAgICAgICBhZGRQTFN2aXN1YWxpemF0aW9uKHRhYmxlLCBuYW1lcywgZmVhdHVyZXMsIHByZWRpY3QsIHBsc1Jlc3VsdHMpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBNVkEgZGVtb1xuLy9kZXNjcmlwdGlvbjogTXVsdGlkaW1lbnNpb25hbCBkYXRhIGFuYWx5c2lzIHVzaW5nIHBhcnRpYWwgbGVhc3Qgc3F1YXJlcyAoUExTKSByZWdyZXNzaW9uLiBJdCByZWR1Y2VzIHRoZSBwcmVkaWN0b3JzIHRvIGEgc21hbGxlciBzZXQgb2YgdW5jb3JyZWxhdGVkIGNvbXBvbmVudHMgYW5kIHBlcmZvcm1zIGxlYXN0IHNxdWFyZXMgcmVncmVzc2lvbiBvbiB0aGVtLlxuLy9tZXRhLmRlbW9QYXRoOiBDb21wdXRlIHwgTXVsdGl2YXJpYXRlIGFuYWx5c2lzXG4vL21ldGEuaXNEZW1vU2NyaXB0OiBUcnVlXG5leHBvcnQgZnVuY3Rpb24gZGVtb011bHRpdmFyaWF0ZUFuYWx5c2lzKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGRlbW9TY3JpcHQgPSBuZXcgRGVtb1NjcmlwdCgnUGFydGlhbCBsZWFzdCBzcXVhcmVzIHJlZ3Jlc3Npb24nLCAnQW5hbHlzaXMgb2YgbXVsdGlkaW1lbnNpb25hbCBkYXRhLicpO1xuICAgICAgICBjb25zdCBjYXJzID0gY2Fyc0RhdGFmcmFtZSgpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gMztcbiAgICAgICAgY29uc3QgbmFtZXMgPSBjYXJzLmNvbHVtbnMuYnlOYW1lKCdtb2RlbCcpO1xuICAgICAgICBjb25zdCBwcmVkaWN0ID0gY2Fycy5jb2x1bW5zLmJ5TmFtZSgncHJpY2UnKTtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBjYXJzLmNvbHVtbnMucmVtb3ZlKCdwcmljZScpLnJlbW92ZSgnbW9kZWwnKTtcbiAgICAgICAgY29uc3QgcGxzT3V0cHV0ID0geWllbGQgY29tcHV0ZVBMUyhjYXJzLCBmZWF0dXJlcywgcHJlZGljdCwgY29tcG9uZW50cyk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNhcnMgPSBjYXJzRGF0YWZyYW1lKCk7XG4gICAgICAgIHNvdXJjZUNhcnMubmFtZSA9ICdDYXJzJztcbiAgICAgICAgbGV0IHZpZXc7XG4gICAgICAgIGxldCBkaWFsb2c7XG4gICAgICAgIHlpZWxkIGRlbW9TY3JpcHRcbiAgICAgICAgICAgIC5zdGVwKCdEYXRhJywgKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5hZGRUYWJsZVZpZXcoc291cmNlQ2Fycyk7XG4gICAgICAgICAgICB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoc291cmNlQ2Fycy5uYW1lKTtcbiAgICAgICAgfSksIHsgZGVzY3JpcHRpb246ICdFYWNoIGNhciBoYXMgbWFueSBmZWF0dXJlcyAtIHBhdHRlcm5zIGV4dHJhY3Rpb24gaXMgY29tcGxpY2F0ZWQuJywgZGVsYXk6IDAgfSlcbiAgICAgICAgICAgIC5zdGVwKCdNb2RlbCcsICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGRpYWxvZyA9IHVpLmRpYWxvZyh7IHRpdGxlOiAnTXVsdGl2YXJpYXRlIEFuYWx5c2lzIChQTFMpJyB9KVxuICAgICAgICAgICAgICAgIC5hZGQodWkudGFibGVJbnB1dCgnVGFibGUnLCBzb3VyY2VDYXJzKSlcbiAgICAgICAgICAgICAgICAuYWRkKHVpLmNvbHVtbnNJbnB1dCgnRmVhdHVyZXMnLCBjYXJzLCBmZWF0dXJlcy50b0xpc3QsIHsgYXZhaWxhYmxlOiB1bmRlZmluZWQsIGNoZWNrZWQ6IGZlYXR1cmVzLm5hbWVzKCkgfSkpXG4gICAgICAgICAgICAgICAgLmFkZCh1aS5jb2x1bW5JbnB1dCgnTmFtZXMnLCBjYXJzLCBuYW1lcywgdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAuYWRkKHVpLmNvbHVtbklucHV0KCdQcmVkaWN0JywgY2FycywgcHJlZGljdCwgdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAuYWRkKHVpLmludElucHV0KCdDb21wb25lbnRzJywgY29tcG9uZW50cywgdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgICAub25PSygoKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3Jvay5zaGVsbC5pbmZvKCdNdWx0aXZhcmlhdGUgYW5hbHlzaXMgaGFzIGJlZW4gYWxyZWFkeSBwZXJmb3JtZWQuJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zaG93KHsgeDogNDAwLCB5OiAxNDAgfSk7XG4gICAgICAgIH0pLCB7IGRlc2NyaXB0aW9uOiAnUHJlZGljdCBjYXIgcHJpY2UgYnkgaXRzIG90aGVyIGZlYXR1cmVzLicsIGRlbGF5OiAwIH0pXG4gICAgICAgICAgICAuc3RlcCgnUmVncmVzc2lvbiBjb2VmZmNpY2llbnRzJywgKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICB2aWV3LmFkZFZpZXdlcihyZWdyZXNzaW9uQ29lZmZpY2llbnRzQmFyQ2hhcnQoZmVhdHVyZXMsIHBsc091dHB1dFsxXSkpO1xuICAgICAgICB9KSwgeyBkZXNjcmlwdGlvbjogJ1RoZSBmZWF0dXJlIFwiZGllc2VsXCIgYWZmZWN0cyB0aGUgcHJpY2UgdGhlIG1vc3QuJywgZGVsYXk6IDAgfSlcbiAgICAgICAgICAgIC5zdGVwKCdTY29yZXMnLCAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHZpZXcuYWRkVmlld2VyKHNjb3Jlc1NjYXR0ZXJQbG90KG5hbWVzLCBwbHNPdXRwdXRbMl0sIHBsc091dHB1dFszXSkpOyB9KSwgeyBkZXNjcmlwdGlvbjogJ1NpbWlsYXJpdGllcyAmIGRpc3NpbWlsYXJpdGllczogYWxmYXJvbWVvIGFuZCBtZXJjZWRlcyBhcmUgZGlmZmVyZW50LicsIGRlbGF5OiAwIH0pXG4gICAgICAgICAgICAuc3RlcCgnUHJlZGljdGlvbicsICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgdmlldy5hZGRWaWV3ZXIocHJlZGljdGVkVmVyc3VzUmVmZXJlbmNlU2NhdHRlclBsb3QobmFtZXMsIHByZWRpY3QsIHBsc091dHB1dFswXSkpOyB9KSwgeyBkZXNjcmlwdGlvbjogJ0Nsb3NlciB0byB0aGUgbGluZSBtZWFucyBiZXR0ZXIgcHJpY2UgcHJlZGljdGlvbi4nLCBkZWxheTogMCB9KVxuICAgICAgICAgICAgLnN0YXJ0KCk7XG4gICAgfSk7XG59XG4vL25hbWU6IEdlbmVyYXRlIGxpbmVhciBzZXBhcmFibGUgZGF0YXNldFxuLy9kZXNjcmlwdGlvbjogR2VuZXJhdGVzIGxpbmVhciBzZXBhcmJsZSBkYXRhc2V0IGZvciB0ZXN0aW5nIGJpbmFyeSBjbGFzc2lmaWNhdG9ycy5cbi8vaW5wdXQ6IHN0cmluZyBuYW1lID0gJ0RhdGEnIHtjYXB0aW9uOiBuYW1lOyBjYXRlZ29yeTogRGF0YXNldH1cbi8vaW5wdXQ6IGludCBzYW1wbGVzQ291bnQgPSAxMDAwIHtjYXB0aW9uOiBzYW1wbGVzOyBjYXRlZ29yeTogU2l6ZX1cbi8vaW5wdXQ6IGludCBmZWF0dXJlc0NvdW50ID0gMiB7Y2FwdGlvbjogZmVhdHVyZXM7IGNhdGVnb3J5OiBTaXplfVxuLy9pbnB1dDogZG91YmxlIG1pbiA9IC0zOSB7Y2FwdGlvbjogbWluOyBjYXRlZ29yeTogUmFuZ2V9XG4vL2lucHV0OiBkb3VibGUgbWF4ID0gMTczIHtjYXB0aW9uOiBtYXg7IGNhdGVnb3J5OiBSYW5nZX1cbi8vaW5wdXQ6IGRvdWJsZSB2aW9sYXRvcnNQZXJjZW50YWdlID0gNSB7Y2FwdGlvbjogdmlvbGF0b3JzOyB1bml0czogJTsgY2F0ZWdvcnk6IERhdGFzZXR9XG4vL291dHB1dDogZGF0YWZyYW1lIGRmXG5leHBvcnQgZnVuY3Rpb24gdGVzdERhdGFMaW5lYXJTZXBhcmFibGUobmFtZSwgc2FtcGxlc0NvdW50LCBmZWF0dXJlc0NvdW50LCBtaW4sIG1heCwgdmlvbGF0b3JzUGVyY2VudGFnZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCB0ZXN0RGF0YUZvckJpbmFyeUNsYXNzaWZpY2F0aW9uKExJTkVBUiwgWzAsIDBdLCBuYW1lLCBzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogR2VuZXJhdGUgbGluZWFyIG5vbi1zZXBhcmFibGUgZGF0YXNldFxuLy9kZXNjcmlwdGlvbjogR2VuZXJhdGVzIGxpbmVhciBub24tc2VwYXJibGUgZGF0YXNldCBmb3IgdGVzdGluZyBiaW5hcnkgY2xhc3NpZmljYXRvcnMuXG4vL2lucHV0OiBzdHJpbmcgbmFtZSA9ICdEYXRhJyB7Y2FwdGlvbjogbmFtZTsgY2F0ZWdvcnk6IERhdGFzZXR9XG4vL2lucHV0OiBkb3VibGUgc2lnbWEgPSA5MCAge2NhcHRpb246IHNpZ21hOyBjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfSBbUkJGLWtlcm5lbCBwYXJhbWF0ZXJdXG4vL2lucHV0OiBpbnQgc2FtcGxlc0NvdW50ID0gMTAwMCB7Y2FwdGlvbjogc2FtcGxlczsgY2F0ZWdvcnk6IFNpemV9XG4vL2lucHV0OiBpbnQgZmVhdHVyZXNDb3VudCA9IDIge2NhcHRpb246IGZlYXR1cmVzOyBjYXRlZ29yeTogU2l6ZX1cbi8vaW5wdXQ6IGRvdWJsZSBtaW4gPSAtMzkge2NhcHRpb246IG1pbjsgY2F0ZWdvcnk6IFJhbmdlfVxuLy9pbnB1dDogZG91YmxlIG1heCA9IDE3MyB7Y2FwdGlvbjogbWF4OyBjYXRlZ29yeTogUmFuZ2V9XG4vL2lucHV0OiBkb3VibGUgdmlvbGF0b3JzUGVyY2VudGFnZSA9IDUge2NhcHRpb246IHZpb2xhdG9yczsgdW5pdHM6ICU7IGNhdGVnb3J5OiBEYXRhc2V0fVxuLy9vdXRwdXQ6IGRhdGFmcmFtZSBkZlxuZXhwb3J0IGZ1bmN0aW9uIHRlc3REYXRhTGluZWFyTm9uU2VwYXJhYmxlKG5hbWUsIHNpZ21hLCBzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgcmV0dXJuIHlpZWxkIHRlc3REYXRhRm9yQmluYXJ5Q2xhc3NpZmljYXRpb24oUkJGLCBbc2lnbWEsIDBdLCBuYW1lLCBzYW1wbGVzQ291bnQsIGZlYXR1cmVzQ291bnQsIG1pbiwgbWF4LCB2aW9sYXRvcnNQZXJjZW50YWdlKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogdHJhaW5MaW5lYXJLZXJuZWxTVk1cbi8vbWV0YS5tbG5hbWU6IGxpbmVhciBrZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiB0cmFpblxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBzdHJpbmcgcHJlZGljdF9jb2x1bW5cbi8vaW5wdXQ6IGRvdWJsZSBnYW1tYSA9IDEuMCB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGJvb2wgdG9TaG93UmVwb3J0ID0gZmFsc2Uge2NhcHRpb246IHRvIHNob3cgcmVwb3J0OyBjYXRlZ29yeTogUmVwb3J0fVxuLy9vdXRwdXQ6IGR5bmFtaWMgbW9kZWxcbmV4cG9ydCBmdW5jdGlvbiB0cmFpbkxpbmVhcktlcm5lbFNWTShkZiwgcHJlZGljdF9jb2x1bW4sIGdhbW1hLCB0b1Nob3dSZXBvcnQpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB0cmFpbmVkTW9kZWwgPSB5aWVsZCBnZXRUcmFpbmVkTW9kZWwoeyBnYW1tYTogZ2FtbWEsIGtlcm5lbDogTElORUFSIH0sIGRmLCBwcmVkaWN0X2NvbHVtbik7XG4gICAgICAgIGlmICh0b1Nob3dSZXBvcnQpXG4gICAgICAgICAgICBzaG93VHJhaW5SZXBvcnQoZGYsIHRyYWluZWRNb2RlbCk7XG4gICAgICAgIHJldHVybiBnZXRQYWNrZWRNb2RlbCh0cmFpbmVkTW9kZWwpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBhcHBseUxpbmVhcktlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogbGluZWFyIGtlcm5lbCBMUy1TVk1cbi8vbWV0YS5tbHJvbGU6IGFwcGx5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGZcbi8vaW5wdXQ6IGR5bmFtaWMgbW9kZWxcbi8vb3V0cHV0OiBkYXRhZnJhbWUgdGFibGVcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUxpbmVhcktlcm5lbFNWTShkZiwgbW9kZWwpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICByZXR1cm4geWllbGQgZ2V0UHJlZGljdGlvbihkZiwgbW9kZWwpO1xuICAgIH0pO1xufVxuLy9uYW1lOiB0cmFpblJCRmtlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogUkJGLWtlcm5lbCBMUy1TVk1cbi8vbWV0YS5tbHJvbGU6IHRyYWluXG4vL2lucHV0OiBkYXRhZnJhbWUgZGZcbi8vaW5wdXQ6IHN0cmluZyBwcmVkaWN0X2NvbHVtblxuLy9pbnB1dDogZG91YmxlIGdhbW1hID0gMS4wIHtjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfVxuLy9pbnB1dDogZG91YmxlIHNpZ21hID0gMS41IHtjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfVxuLy9pbnB1dDogYm9vbCB0b1Nob3dSZXBvcnQgPSBmYWxzZSB7Y2FwdGlvbjogdG8gc2hvdyByZXBvcnQ7IGNhdGVnb3J5OiBSZXBvcnR9XG4vL291dHB1dDogZHluYW1pYyBtb2RlbFxuZXhwb3J0IGZ1bmN0aW9uIHRyYWluUkJGa2VybmVsU1ZNKGRmLCBwcmVkaWN0X2NvbHVtbiwgZ2FtbWEsIHNpZ21hLCB0b1Nob3dSZXBvcnQpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB0cmFpbmVkTW9kZWwgPSB5aWVsZCBnZXRUcmFpbmVkTW9kZWwoeyBnYW1tYTogZ2FtbWEsIGtlcm5lbDogUkJGLCBzaWdtYTogc2lnbWEgfSwgZGYsIHByZWRpY3RfY29sdW1uKTtcbiAgICAgICAgaWYgKHRvU2hvd1JlcG9ydClcbiAgICAgICAgICAgIHNob3dUcmFpblJlcG9ydChkZiwgdHJhaW5lZE1vZGVsKTtcbiAgICAgICAgcmV0dXJuIGdldFBhY2tlZE1vZGVsKHRyYWluZWRNb2RlbCk7XG4gICAgfSk7XG59XG4vL25hbWU6IGFwcGx5UkJGa2VybmVsU1ZNXG4vL21ldGEubWxuYW1lOiBSQkYta2VybmVsIExTLVNWTVxuLy9tZXRhLm1scm9sZTogYXBwbHlcbi8vaW5wdXQ6IGRhdGFmcmFtZSBkZlxuLy9pbnB1dDogZHluYW1pYyBtb2RlbFxuLy9vdXRwdXQ6IGRhdGFmcmFtZSB0YWJsZVxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UkJGa2VybmVsU1ZNKGRmLCBtb2RlbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCBnZXRQcmVkaWN0aW9uKGRmLCBtb2RlbCk7XG4gICAgfSk7XG59XG4vL25hbWU6IHRyYWluUG9seW5vbWlhbEtlcm5lbFNWTVxuLy9tZXRhLm1sbmFtZTogcG9seW5vbWlhbCBrZXJuZWwgTFMtU1ZNXG4vL21ldGEubWxyb2xlOiB0cmFpblxuLy9pbnB1dDogZGF0YWZyYW1lIGRmXG4vL2lucHV0OiBzdHJpbmcgcHJlZGljdF9jb2x1bW5cbi8vaW5wdXQ6IGRvdWJsZSBnYW1tYSA9IDEuMCB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGRvdWJsZSBjID0gMSB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGRvdWJsZSBkID0gMiB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGJvb2wgdG9TaG93UmVwb3J0ID0gZmFsc2Uge2NhcHRpb246IHRvIHNob3cgcmVwb3J0OyBjYXRlZ29yeTogUmVwb3J0fVxuLy9vdXRwdXQ6IGR5bmFtaWMgbW9kZWxcbmV4cG9ydCBmdW5jdGlvbiB0cmFpblBvbHlub21pYWxLZXJuZWxTVk0oZGYsIHByZWRpY3RfY29sdW1uLCBnYW1tYSwgYywgZCwgdG9TaG93UmVwb3J0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHJhaW5lZE1vZGVsID0geWllbGQgZ2V0VHJhaW5lZE1vZGVsKHsgZ2FtbWE6IGdhbW1hLCBrZXJuZWw6IFBPTFlOT01JQUwsIGNQYXJhbTogYywgZFBhcmFtOiBkIH0sIGRmLCBwcmVkaWN0X2NvbHVtbik7XG4gICAgICAgIGlmICh0b1Nob3dSZXBvcnQpXG4gICAgICAgICAgICBzaG93VHJhaW5SZXBvcnQoZGYsIHRyYWluZWRNb2RlbCk7XG4gICAgICAgIHJldHVybiBnZXRQYWNrZWRNb2RlbCh0cmFpbmVkTW9kZWwpO1xuICAgIH0pO1xufSAvLyB0cmFpblBvbHlub21pYWxLZXJuZWxTVk1cbi8vbmFtZTogYXBwbHlQb2x5bm9taWFsS2VybmVsU1ZNXG4vL21ldGEubWxuYW1lOiBwb2x5bm9taWFsIGtlcm5lbCBMUy1TVk1cbi8vbWV0YS5tbHJvbGU6IGFwcGx5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGZcbi8vaW5wdXQ6IGR5bmFtaWMgbW9kZWxcbi8vb3V0cHV0OiBkYXRhZnJhbWUgdGFibGVcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBvbHlub21pYWxLZXJuZWxTVk0oZGYsIG1vZGVsKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgcmV0dXJuIHlpZWxkIGdldFByZWRpY3Rpb24oZGYsIG1vZGVsKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogdHJhaW5TaWdtb2lkS2VybmVsU1ZNXG4vL21ldGEubWxuYW1lOiBzaWdtb2lkIGtlcm5lbCBMUy1TVk1cbi8vbWV0YS5tbHJvbGU6IHRyYWluXG4vL2lucHV0OiBkYXRhZnJhbWUgZGZcbi8vaW5wdXQ6IHN0cmluZyBwcmVkaWN0X2NvbHVtblxuLy9pbnB1dDogZG91YmxlIGdhbW1hID0gMS4wIHtjYXRlZ29yeTogSHlwZXJwYXJhbWV0ZXJzfVxuLy9pbnB1dDogZG91YmxlIGthcHBhID0gMSB7Y2F0ZWdvcnk6IEh5cGVycGFyYW1ldGVyc31cbi8vaW5wdXQ6IGRvdWJsZSB0aGV0YSA9IDEge2NhdGVnb3J5OiBIeXBlcnBhcmFtZXRlcnN9XG4vL2lucHV0OiBib29sIHRvU2hvd1JlcG9ydCA9IGZhbHNlIHtjYXB0aW9uOiB0byBzaG93IHJlcG9ydDsgY2F0ZWdvcnk6IFJlcG9ydH1cbi8vb3V0cHV0OiBkeW5hbWljIG1vZGVsXG5leHBvcnQgZnVuY3Rpb24gdHJhaW5TaWdtb2lkS2VybmVsU1ZNKGRmLCBwcmVkaWN0X2NvbHVtbiwgZ2FtbWEsIGthcHBhLCB0aGV0YSwgdG9TaG93UmVwb3J0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHJhaW5lZE1vZGVsID0geWllbGQgZ2V0VHJhaW5lZE1vZGVsKHsgZ2FtbWE6IGdhbW1hLCBrZXJuZWw6IFNJR01PSUQsIGthcHBhOiBrYXBwYSwgdGhldGE6IHRoZXRhIH0sIGRmLCBwcmVkaWN0X2NvbHVtbik7XG4gICAgICAgIGlmICh0b1Nob3dSZXBvcnQpXG4gICAgICAgICAgICBzaG93VHJhaW5SZXBvcnQoZGYsIHRyYWluZWRNb2RlbCk7XG4gICAgICAgIHJldHVybiBnZXRQYWNrZWRNb2RlbCh0cmFpbmVkTW9kZWwpO1xuICAgIH0pO1xufSAvLyB0cmFpblNpZ21vaWRLZXJuZWxTVk1cbi8vbmFtZTogYXBwbHlTaWdtb2lkS2VybmVsU1ZNXG4vL21ldGEubWxuYW1lOiBzaWdtb2lkIGtlcm5lbCBMUy1TVk1cbi8vbWV0YS5tbHJvbGU6IGFwcGx5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGZcbi8vaW5wdXQ6IGR5bmFtaWMgbW9kZWxcbi8vb3V0cHV0OiBkYXRhZnJhbWUgdGFibGVcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVNpZ21vaWRLZXJuZWxTVk0oZGYsIG1vZGVsKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgcmV0dXJuIHlpZWxkIGdldFByZWRpY3Rpb24oZGYsIG1vZGVsKTtcbiAgICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJleHBvcnRzIiwidHNuZV8xIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiVFNORSIsInZhbHVlIiwiY29uc3RydWN0b3IiLCJvcHQiLCJ0aGlzIiwicmV0dXJuViIsInZWYWx1ZSIsIml0ZXIiLCJwZXJwbGV4aXR5IiwiZ2V0b3B0IiwiZGltIiwiZXBzaWxvbiIsImFzc2VydCIsImNvbmRpdGlvbiIsIm1lc3NhZ2UiLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJoYXNPd25Qcm9wZXJ0eSIsImdhdXNzUmFuZG9tIiwidSIsIk1hdGgiLCJyYW5kb20iLCJ2IiwiciIsImMiLCJzcXJ0IiwibG9nIiwicmFuZG4iLCJtdSIsInN0ZCIsInplcm9zIiwibiIsImlzTmFOIiwiQXJyYXlCdWZmZXIiLCJhcnIiLCJBcnJheSIsImkiLCJGbG9hdDY0QXJyYXkiLCJyYW5kbjJkIiwiZCIsInMiLCJ1c2VzIiwieCIsInhoZXJlIiwiaiIsInB1c2giLCJMMiIsIngxIiwieDIiLCJEIiwibGVuZ3RoIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZGlzdCIsImQycCIsInRvbCIsIm5mIiwiZmxvb3IiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsIm51bSIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwibWF4Iiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJpbml0RGF0YURpc3QiLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImdldFNvbHV0aW9uIiwic3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsImUiLCJ5b2xkIiwiY2cwIiwiY2cxIiwiYW5hbHl0aWMiLCJudW1lcmljYWwiLCJjb25zb2xlIiwicG11bCIsInF1QXJyIiwicXN1bSIsImRzdW0iLCJkaGVyZSIsInF1IiwiTk4iLCJRIiwicSIsImdzdW0iLCJwcmVtdWx0Iiwic3RyMSIsInN0cjIiLCJvcHRpb25zIiwiamFyb0Rpc3QiLCJjYXNlU2Vuc2l0aXZlIiwidG9VcHBlckNhc2UiLCJtIiwibGVuMSIsImxlbjIiLCJ3aW5kb3ciLCJzdHIxSGFzaCIsInN0cjJIYXNoIiwibWluIiwidCIsInBvaW50IiwiY2hhckF0IiwiamFybyIsInByZWZpeCIsIm1pbkluZGV4IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJpc0FueUFycmF5Iiwib2JqZWN0IiwiY2FsbCIsImVuZHNXaXRoIiwiZXJyb3JDYWxjdWxhdGlvbiIsImRhdGEiLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyaXplZEZ1bmN0aW9uIiwiZXJyb3IiLCJmdW5jIiwieSIsInRhZyIsImluY2x1ZGVzIiwicmVzY2FsZSIsImlucHV0Iiwib3V0cHV0IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiY3VycmVudE1pbiIsIl9vcHRpb25zJGZyb21JbmRleCIsImZyb21JbmRleCIsIl9vcHRpb25zJHRvSW5kZXgiLCJ0b0luZGV4IiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiRXJyb3IiLCJtaW5WYWx1ZSIsImN1cnJlbnRNYXgiLCJtYXhWYWx1ZSIsIlJhbmdlRXJyb3IiLCJfb3B0aW9ucyRtaW4iLCJhdXRvTWluTWF4IiwiX29wdGlvbnMkbWF4IiwiZmFjdG9yIiwiaW5kZW50IiwicmVwZWF0IiwiaW5kZW50RGF0YSIsImluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyIsIm1hdHJpeCIsIm1heFJvd3MiLCJtYXhDb2x1bW5zIiwibWF4TnVtU2l6ZSIsInBhZE1pbnVzIiwibmFtZSIsInJvd3MiLCJjb2x1bW5zIiwibWF4SSIsIm1heEoiLCJyZXN1bHQiLCJsb29wIiwibGluZSIsImZvcm1hdE51bWJlciIsImpvaW4iLCJpbnNwZWN0RGF0YSIsImZvcm1hdE51bWJlcjIiLCJwYWRFbmQiLCJsZW4iLCJzdHIiLCJmaXgiLCJ0b0ZpeGVkIiwic3RhcnRzV2l0aCIsInRvRXhwb25lbnRpYWwiLCJzbGljZSIsImNoZWNrUm93SW5kZXgiLCJpbmRleCIsIm91dGVyIiwiY2hlY2tDb2x1bW5JbmRleCIsImNoZWNrUm93VmVjdG9yIiwidmVjdG9yIiwidG8xREFycmF5IiwiY2hlY2tDb2x1bW5WZWN0b3IiLCJjaGVja1JhbmdlIiwic3RhcnRSb3ciLCJlbmRSb3ciLCJzdGFydENvbHVtbiIsImVuZENvbHVtbiIsImNoZWNrTnVtYmVyIiwibmV3QXJyYXkiLCJhcnJheSIsImNoZWNrTm9uRW1wdHkiLCJpc0VtcHR5IiwiQWJzdHJhY3RNYXRyaXgiLCJzdGF0aWMiLCJuZXdSb3dzIiwibmV3Q29sdW1ucyIsIm5ld0RhdGEiLCJuZXdNYXRyaXgiLCJNYXRyaXgiLCJyb3ciLCJjb2x1bW4iLCJzZXQiLCJmaWxsIiwiaW50ZXJ2YWwiLCJyb3VuZCIsImwiLCJtYXRyaXgxIiwibWF0cml4MiIsImNoZWNrTWF0cml4IiwiaXNNYXRyaXgiLCJrbGFzcyIsInNpemUiLCJhcHBseSIsImNhbGxiYWNrIiwidG8yREFycmF5IiwiY29weSIsInRvSlNPTiIsImlzUm93VmVjdG9yIiwiaXNDb2x1bW5WZWN0b3IiLCJpc1ZlY3RvciIsImlzU3F1YXJlIiwiaXNTeW1tZXRyaWMiLCJpc0VjaGVsb25Gb3JtIiwicHJldmlvdXNDb2x1bW4iLCJjaGVja2VkIiwiaXNSZWR1Y2VkRWNoZWxvbkZvcm0iLCJrIiwiZWNoZWxvbkZvcm0iLCJjbG9uZSIsImgiLCJpTWF4Iiwic3dhcFJvd3MiLCJ0bXAiLCJyZWR1Y2VkRWNoZWxvbkZvcm0iLCJtYXhSb3ciLCJwIiwicGl2b3QiLCJzZXRTdWJNYXRyaXgiLCJuZWciLCJtdWxTIiwiZ2V0Um93IiwiZ2V0Um93VmVjdG9yIiwicm93VmVjdG9yIiwic2V0Um93Iiwicm93MSIsInJvdzIiLCJ0ZW1wIiwiZ2V0Q29sdW1uIiwiZ2V0Q29sdW1uVmVjdG9yIiwiY29sdW1uVmVjdG9yIiwic2V0Q29sdW1uIiwic3dhcENvbHVtbnMiLCJjb2x1bW4xIiwiY29sdW1uMiIsImFkZFJvd1ZlY3RvciIsInN1YlJvd1ZlY3RvciIsIm11bFJvd1ZlY3RvciIsImRpdlJvd1ZlY3RvciIsImFkZENvbHVtblZlY3RvciIsInN1YkNvbHVtblZlY3RvciIsIm11bENvbHVtblZlY3RvciIsImRpdkNvbHVtblZlY3RvciIsIm11bFJvdyIsIm11bENvbHVtbiIsImJ5IiwiTmFOIiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJtYXhJbmRleCIsImlkeCIsIlBPU0lUSVZFX0lORklOSVRZIiwibWF4Um93SW5kZXgiLCJtaW5Sb3ciLCJtaW5Sb3dJbmRleCIsIm1heENvbHVtbiIsIm1heENvbHVtbkluZGV4IiwibWluQ29sdW1uIiwibWluQ29sdW1uSW5kZXgiLCJkaWFnIiwibm9ybSIsInR5cGUiLCJjdW11bGF0aXZlU3VtIiwic3VtIiwiZG90IiwidmVjdG9yMiIsInZlY3RvcjEiLCJtbXVsIiwib3RoZXIiLCJCY29saiIsInN0cmFzc2VuMngyIiwiYTExIiwiYjExIiwiYTEyIiwiYjEyIiwiYTIxIiwiYjIxIiwiYTIyIiwiYjIyIiwibTEiLCJtMiIsIm0zIiwibTQiLCJtNSIsImMwMCIsImMwMSIsImMxMCIsImMxMSIsInN0cmFzc2VuM3gzIiwiYTAwIiwiYTAxIiwiYTAyIiwiYTEwIiwiYTIwIiwiYjAwIiwiYjAxIiwiYjAyIiwiYjEwIiwiYjIwIiwibTYiLCJtNyIsIm04IiwibTkiLCJtMTIiLCJtMTMiLCJtMTQiLCJtMTUiLCJtMTYiLCJtMTciLCJtMTgiLCJjMDIiLCJjMTIiLCJjMjAiLCJjMjEiLCJjMjIiLCJtbXVsU3RyYXNzZW4iLCJyMSIsImMxIiwicjIiLCJjMiIsImVtYmVkIiwibWF0IiwiY29scyIsInJlc3VsdGF0Iiwid2FybiIsImJsb2NrTXVsdCIsImEiLCJiIiwiaGFsZlJvd3MiLCJwYXJzZUludCIsImhhbGZDb2xzIiwic3ViTWF0cml4IiwiYWRkIiwic3ViIiwic2NhbGVSb3dzIiwiaXNGaW5pdGUiLCJzY2FsZUNvbHVtbnMiLCJmbGlwUm93cyIsIm1pZGRsZSIsImNlaWwiLCJmaXJzdCIsImxhc3QiLCJmbGlwQ29sdW1ucyIsImtyb25lY2tlclByb2R1Y3QiLCJrcm9uZWNrZXJTdW0iLCJBeEkiLCJleWUiLCJJeEIiLCJ0cmFuc3Bvc2UiLCJzb3J0Um93cyIsImNvbXBhcmVGdW5jdGlvbiIsImNvbXBhcmVOdW1iZXJzIiwic29ydCIsInNvcnRDb2x1bW5zIiwic3ViTWF0cml4Um93IiwiaW5kaWNlcyIsInN1Yk1hdHJpeENvbHVtbiIsInNlbGVjdGlvbiIsInJvd0luZGljZXMiLCJjb2x1bW5JbmRpY2VzIiwiY2hlY2tSb3dJbmRpY2VzIiwiY2hlY2tDb2x1bW5JbmRpY2VzIiwicm93SW5kZXgiLCJjb2x1bW5JbmRleCIsInRyYWNlIiwic3VtQnlSb3ciLCJzdW1CeUNvbHVtbiIsInN1bUFsbCIsInByb2R1Y3QiLCJwcm9kdWN0QnlSb3ciLCJwcm9kdWN0QnlDb2x1bW4iLCJwcm9kdWN0QWxsIiwibWVhbiIsInZhcmlhbmNlIiwidW5iaWFzZWQiLCJzdW0xIiwic3VtMiIsInZhcmlhbmNlQnlSb3ciLCJ2YXJpYW5jZUJ5Q29sdW1uIiwidmFyaWFuY2VBbGwiLCJzdGFuZGFyZERldmlhdGlvbiIsImNlbnRlciIsImNlbnRlckJ5Um93IiwiY2VudGVyQnlDb2x1bW4iLCJjZW50ZXJBbGwiLCJzY2FsZSIsInBvdyIsImdldFNjYWxlQnlSb3ciLCJzY2FsZUJ5Um93IiwiZ2V0U2NhbGVCeUNvbHVtbiIsInNjYWxlQnlDb2x1bW4iLCJkaXZpZGVyIiwiZ2V0U2NhbGVBbGwiLCJzY2FsZUFsbCIsIlN5bWJvbCIsImZvciIsInJhbmQiLCJyYW5kb21JbnQiLCJyYW5kSW50IiwiZGlhZ29uYWwiLCJpZGVudGl0eSIsIm5lZ2F0ZSIsInRlbnNvclByb2R1Y3QiLCJuUm93cyIsIm5Db2x1bW5zIiwic3VwZXIiLCJhcnJheURhdGEiLCJldmVyeSIsImVsZW1lbnQiLCJmcm9tIiwicmVtb3ZlUm93Iiwic3BsaWNlIiwiYWRkUm93IiwicmVtb3ZlQ29sdW1uIiwibmV3Um93IiwiYWRkQ29sdW1uIiwiYWRkUyIsImFkZE0iLCJzdWJTIiwic3ViTSIsInN1YnRyYWN0Iiwic3VidHJhY3RTIiwic3VidHJhY3RNIiwibXVsIiwibXVsTSIsIm11bHRpcGx5IiwibXVsdGlwbHlTIiwibXVsdGlwbHlNIiwiZGl2IiwiZGl2UyIsImRpdk0iLCJkaXZpZGUiLCJkaXZpZGVTIiwiZGl2aWRlTSIsIm1vZCIsIm1vZFMiLCJtb2RNIiwibW9kdWx1cyIsIm1vZHVsdXNTIiwibW9kdWx1c00iLCJhbmQiLCJhbmRTIiwiYW5kTSIsIm9yIiwib3JTIiwib3JNIiwieG9yIiwieG9yUyIsInhvck0iLCJsZWZ0U2hpZnQiLCJsZWZ0U2hpZnRTIiwibGVmdFNoaWZ0TSIsInNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQiLCJzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0UyIsInNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNIiwicmlnaHRTaGlmdCIsInJpZ2h0U2hpZnRTIiwicmlnaHRTaGlmdE0iLCJ6ZXJvRmlsbFJpZ2h0U2hpZnQiLCJ6ZXJvRmlsbFJpZ2h0U2hpZnRTIiwiemVyb0ZpbGxSaWdodFNoaWZ0TSIsIm5vdCIsImFjb3MiLCJhY29zaCIsImFzaW4iLCJhc2luaCIsImF0YW4iLCJhdGFuaCIsImNicnQiLCJjbHozMiIsImNvcyIsImNvc2giLCJleHBtMSIsImZyb3VuZCIsImxvZzFwIiwibG9nMTAiLCJsb2cyIiwic2luIiwic2luaCIsInRhbiIsInRhbmgiLCJ0cnVuYyIsImFyZzAiLCJwb3dTIiwicG93TSIsImluc3RhbGxNYXRoT3BlcmF0aW9ucyIsIldyYXBwZXJNYXRyaXgyRCIsIkx1RGVjb21wb3NpdGlvbiIsIkxVY29saiIsImttYXgiLCJsdSIsInBpdm90VmVjdG9yIiwicGl2b3RTaWduIiwiTFUiLCJpc1Npbmd1bGFyIiwiY29sIiwic29sdmUiLCJjb3VudCIsImRldGVybWluYW50IiwibG93ZXJUcmlhbmd1bGFyTWF0cml4IiwidXBwZXJUcmlhbmd1bGFyTWF0cml4IiwicGl2b3RQZXJtdXRhdGlvblZlY3RvciIsImh5cG90ZW51c2UiLCJRckRlY29tcG9zaXRpb24iLCJxciIsInJkaWFnIiwibnJtIiwiUVIiLCJSZGlhZyIsImlzRnVsbFJhbmsiLCJvcnRob2dvbmFsTWF0cml4IiwiU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24iLCJjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyIsImNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyIsImF1dG9UcmFuc3Bvc2UiLCJ3YW50dSIsIkJvb2xlYW4iLCJ3YW50diIsInN3YXBwZWQiLCJhdXgiLCJudSIsIm5pIiwiVSIsIlYiLCJ3b3JrIiwic2kiLCJuY3QiLCJucnQiLCJtcmMiLCJwcCIsImVwcyIsIkVQU0lMT04iLCJrYXNlIiwiYWxwaGEiLCJNSU5fVkFMVUUiLCJrcyIsImYiLCJjcyIsInNuIiwic3AiLCJzcG0xIiwiZXBtMSIsInNrIiwiZWsiLCJzaGlmdCIsImciLCJ0aHJlc2hvbGQiLCJzY29scyIsIkxzIiwicmlnaHRTaW5ndWxhclZlY3RvcnMiLCJWTCIsInZyb3dzIiwidXJvd3MiLCJWTFUiLCJzb2x2ZUZvckRpYWdvbmFsIiwiaW52ZXJzZSIsInZjb2xzIiwidWNvbHMiLCJub3JtMiIsInJhbmsiLCJpaSIsImxlZnRTaW5ndWxhclZlY3RvcnMiLCJkaWFnb25hbE1hdHJpeCIsInBhcmFtcyIsImRhbXBpbmciLCJncmFkaWVudERpZmZlcmVuY2UiLCJldmFsdWF0ZWREYXRhIiwiZ3JhZGllbnRGdW5jIiwicGFyYW1GdW5jdGlvbiIsImFucyIsInBhcmFtIiwiYXV4UGFyYW1zIiwiZnVuY1BhcmFtIiwiZ3JhZGllbnRGdW5jdGlvbiIsIm1hdHJpeEZ1bmMiLCJtYXRyaXhGdW5jdGlvbiIsImludmVyc2VNYXRyaXgiLCJ1c2VTVkQiLCJsZWZ0SGFuZFNpZGUiLCJyaWdodEhhbmRTaWRlIiwibGV2ZW5iZXJnTWFycXVhcmR0IiwibWF4SXRlcmF0aW9ucyIsImVycm9yVG9sZXJhbmNlIiwibWluVmFsdWVzIiwibWF4VmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsInBhckxlbiIsIk1BWF9TQUZFX0lOVEVHRVIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiaXRlcmF0aW9uIiwiY29udmVyZ2VkIiwicGFyYW1ldGVyVmFsdWVzIiwicGFyYW1ldGVyRXJyb3IiLCJpdGVyYXRpb25zIiwiX19pbXBvcnRTdGFyIiwiX19lc01vZHVsZSIsInV0aWxzIiwibWFrZUhlYXAiLCJuUG9pbnRzIiwibWFrZUFycmF5cyIsImZpbGxWYWx1ZSIsImVtcHR5IiwibWFwIiwiZmlsbGVkIiwiaGVhcCIsImhlYXBQdXNoIiwid2VpZ2h0IiwiZmxhZyIsIndlaWdodHMiLCJ1bmNoZWNrZWRIZWFwUHVzaCIsImlzTmV3IiwiaVN3YXAiLCJpYzEiLCJpYzIiLCJoZWFwU2hhcGUyIiwic2lmdERvd24iLCJoZWFwMSIsImhlYXAyIiwiY2VpbGluZyIsImVsdCIsImxlZnRDaGlsZCIsInJpZ2h0Q2hpbGQiLCJzd2FwIiwidGVtcDEiLCJ0ZW1wMiIsInJlamVjdGlvblNhbXBsZSIsIm5TYW1wbGVzIiwicG9vbFNpemUiLCJyZWplY3RTYW1wbGUiLCJ0YXVSYW5kSW50IiwiYnJva2VuIiwiYnVpbGRDYW5kaWRhdGVzIiwiY3VycmVudEdyYXBoIiwiblZlcnRpY2VzIiwibk5laWdoYm9ycyIsIm1heENhbmRpZGF0ZXMiLCJjYW5kaWRhdGVOZWlnaGJvcnMiLCJpc24iLCJ0YXVSYW5kIiwiZGVoZWFwU29ydCIsImluZEhlYXAiLCJkaXN0SGVhcCIsImluZEhlYXBJbmRleCIsImRpc3RIZWFwSW5kZXgiLCJzbWFsbGVzdEZsYWdnZWQiLCJpbmQiLCJtaW5EaXN0IiwicmVzdWx0SW5kZXgiLCJ1bWFwXzEiLCJVTUFQIiwiX2EiLCJfX3JlYWQiLCJvIiwiaXRlcmF0b3IiLCJhciIsIm5leHQiLCJfX3ZhbHVlcyIsIlNwYXJzZU1hdHJpeCIsInZhbHVlcyIsImRpbXMiLCJlbnRyaWVzIiwiTWFwIiwibkNvbHMiLCJjaGVja0RpbXMiLCJrZXkiLCJtYWtlS2V5IiwiaGFzIiwiZGVmYXVsdFZhbHVlIiwiZ2V0QWxsIiwib3JkZXJlZCIsInJvd0NvbFZhbHVlcyIsImZvckVhY2giLCJnZXREaW1zIiwiZ2V0Um93cyIsIl9iIiwiZ2V0Q29scyIsImdldFZhbHVlcyIsImZuIiwidmFscyIsInRvQXJyYXkiLCJfdGhpcyIsInBhaXJ3aXNlTXVsdGlwbHkiLCJlbGVtZW50V2lzZSIsIm1heGltdW0iLCJtdWx0aXBseVNjYWxhciIsInNjYWxhciIsImVsaW1pbmF0ZVplcm9zIiwiemVyb0luZGljZXMiLCJTZXQiLCJyZW1vdmVCeVplcm9JbmRleCIsIl8iLCJuZXh0VmFsdWVzIiwiZmlsdGVyIiwibmV4dFJvd3MiLCJuZXh0Q29scyIsIm5vcm1hbGl6ZSIsIm5vcm1UeXBlIiwiZV8xIiwibm9ybUZuIiwibm9ybUZucyIsImNvbHNCeVJvdyIsIm5leHRNYXRyaXgiLCJfbG9vcF8xIiwia2V5cyIsIl9jIiwiZV8xXzEiLCJyZXR1cm4iLCJ4cyIsIm9wIiwidmlzaXRlZCIsIm9wZXJhdGUiLCJuZXh0VmFsdWUiLCJ2YWx1ZXNBIiwicm93c0EiLCJjb2xzQSIsInZhbHVlc0IiLCJyb3dzQiIsImNvbHNCIiwiZ2V0Q1NSIiwiaW5kcHRyIiwiY3VycmVudFJvdyIsInRyZWUiLCJtYWtlTk5EZXNjZW50IiwiZGlzdGFuY2VGbiIsImxlYWZBcnJheSIsIm5JdGVycyIsImRlbHRhIiwicmhvIiwicnBUcmVlSW5pdCIsImNqIiwiY2siLCJtYWtlSW5pdGlhbGl6YXRpb25zIiwiaW5pdEZyb21SYW5kb20iLCJxdWVyeVBvaW50cyIsIl9oZWFwIiwiaW5pdEZyb21UcmVlIiwiX3RyZWUiLCJzZWFyY2hGbGF0VHJlZSIsIm1ha2VJbml0aWFsaXplZE5OU2VhcmNoIiwiZ3JhcGgiLCJpbml0aWFsaXphdGlvbiIsInRyaWVkIiwidmVydGV4IiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZXNfMSIsImNhbmRpZGF0ZXNfMV8xIiwiY2FuZGlkYXRlIiwiaW5pdGlhbGl6ZVNlYXJjaCIsImZvcmVzdCIsImVfMiIsInJlc3VsdHMiLCJmb3Jlc3RfMSIsImZvcmVzdF8xXzEiLCJlXzJfMSIsIl9fc3ByZWFkIiwiY29uY2F0IiwiRmxhdFRyZWUiLCJoeXBlcnBsYW5lcyIsIm9mZnNldHMiLCJjaGlsZHJlbiIsIm1ha2VFdWNsaWRlYW5UcmVlIiwibGVhZlNpemUiLCJzcGxpdFJlc3VsdHMiLCJsZWZ0SW5kZXgiLCJyaWdodEluZGV4IiwibGVmdCIsInJpZ2h0IiwiaHlwZXJwbGFuZU9mZnNldCIsImh5cGVycGxhbmVWZWN0b3IiLCJuTGVmdCIsIm5SaWdodCIsInNpZGUiLCJtYXJnaW4iLCJpbmRpY2VzTGVmdCIsImluZGljZXNSaWdodCIsImh5cGVycGxhbmUiLCJvZmZzZXQiLCJldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQiLCJpc0xlYWYiLCJyZWN1cnNpdmVGbGF0dGVuIiwibm9kZU51bSIsImxlYWZOdW0iLCJvbGROb2RlTnVtIiwicmVzIiwibnVtTm9kZXMiLCJudW1MZWF2ZXMiLCJzZWxlY3RTaWRlIiwibWFrZUZvcmVzdCIsIm5UcmVlcyIsInJhbmdlIiwibWFrZVRyZWUiLCJuTm9kZXMiLCJuTGVhdmVzIiwiZmxhdHRlblRyZWUiLCJtYWtlTGVhZkFycmF5IiwicnBGb3Jlc3QiLCJycEZvcmVzdF8xIiwicnBGb3Jlc3RfMV8xIiwibm9kZSIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsInRoZW4iLCJfX2dlbmVyYXRvciIsImJvZHkiLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwidmVyYiIsInBvcCIsIl9faW1wb3J0RGVmYXVsdCIsIm5uRGVzY2VudCIsIm1sX2xldmVuYmVyZ19tYXJxdWFyZHRfMSIsIlNNT09USF9LX1RPTEVSQU5DRSIsIk1JTl9LX0RJU1RfU0NBTEUiLCJsZWFybmluZ1JhdGUiLCJsb2NhbENvbm5lY3Rpdml0eSIsIm5Db21wb25lbnRzIiwibkVwb2NocyIsIm5lZ2F0aXZlU2FtcGxlUmF0ZSIsInJlcHVsc2lvblN0cmVuZ3RoIiwic2V0T3BNaXhSYXRpbyIsInNwcmVhZCIsInRyYW5zZm9ybVF1ZXVlU2l6ZSIsInRhcmdldE1ldHJpYyIsInRhcmdldFdlaWdodCIsInRhcmdldE5OZWlnaGJvcnMiLCJldWNsaWRlYW4iLCJpc0luaXRpYWxpemVkIiwiZW1iZWRkaW5nIiwib3B0aW1pemF0aW9uU3RhdGUiLCJPcHRpbWl6YXRpb25TdGF0ZSIsInNldFBhcmFtIiwiZml0IiwiaW5pdGlhbGl6ZUZpdCIsIm9wdGltaXplTGF5b3V0IiwiZml0QXN5bmMiLCJvcHRpbWl6ZUxheW91dEFzeW5jIiwic2V0U3VwZXJ2aXNlZFByb2plY3Rpb24iLCJzZXRQcmVjb21wdXRlZEtOTiIsImtubkluZGljZXMiLCJrbm5EaXN0YW5jZXMiLCJnZXRORXBvY2hzIiwia25uUmVzdWx0cyIsIm5lYXJlc3ROZWlnaGJvcnMiLCJmdXp6eVNpbXBsaWNpYWxTZXQiLCJtYWtlU2VhcmNoRm5zIiwic2VhcmNoR3JhcGgiLCJtYWtlU2VhcmNoR3JhcGgiLCJwcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbiIsImluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nIiwiaGVhZCIsInRhaWwiLCJlcG9jaHNQZXJTYW1wbGUiLCJpbml0aWFsaXplT3B0aW1pemF0aW9uIiwicHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AiLCJzZWFyY2giLCJrbm4iLCJkaXN0YW5jZXMiLCJuZWlnaGJvciIsImRpc3RhbmNlIiwidHJhbnNmb3JtIiwidG9UcmFuc2Zvcm0iLCJyYXdEYXRhIiwiaW5pdCIsImFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkiLCJzbW9vdGhLTk5EaXN0YW5jZSIsInNpZ21hcyIsInJob3MiLCJjb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyIsIm5vcm1lZCIsImNzck1hdHJpeCIsImluaXRUcmFuc2Zvcm0iLCJyZXNoYXBlMmQiLCJncmFwaE1heCIsInJlZHVjZSIsInZhbCIsIm1ha2VFcG9jaHNQZXJTYW1wbGUiLCJhc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMiLCJoZWFkRW1iZWRkaW5nIiwidGFpbEVtYmVkZGluZyIsImN1cnJlbnRFcG9jaCIsImZhckRpc3QiLCJjYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24iLCJvcHRpbWl6ZUxheW91dFN0ZXAiLCJnZXRFbWJlZGRpbmciLCJtZXRyaWNOTkRlc2NlbnQiLCJfZCIsIl9lIiwic3BhcnNlTWF0cml4IiwicHJvZE1hdHJpeCIsInNpbXBsaWNpYWxTZXQiLCJ0YXJnZXQiLCJ1bmtub3duRGlzdCIsImludGVyc2VjdGlvbiIsImZhc3RJbnRlcnNlY3Rpb24iLCJyZXNldExvY2FsQ29ubmVjdGl2aXR5Iiwibkl0ZXIiLCJiYW5kd2lkdGgiLCJsbyIsImhpIiwibWlkIiwiaXRoRGlzdGFuY2VzIiwibm9uWmVyb0Rpc3RzIiwiaW50ZXJwb2xhdGlvbiIsIm1lYW5JdGhEaXN0YW5jZXMiLCJtZWFuRGlzdGFuY2VzIiwiZ3JhcGhWYWx1ZXMiLCJlbnRyeSIsInciLCJzdGF0ZSIsImFzc2lnbiIsIm1vdmVPdGhlciIsImVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlIiwiZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSIsImVwb2NoT2ZOZXh0U2FtcGxlIiwiaW5pdGlhbEFscGhhIiwiZ2FtbWEiLCJmaW5kQUJQYXJhbXMiLCJjdXJyZW50IiwiZGlzdFNxdWFyZWQiLCJyRGlzdCIsImdyYWRDb2VmZiIsImdyYWREIiwiY2xpcCIsIm5OZWdTYW1wbGVzIiwia18xIiwib3RoZXJfMSIsImRpc3RTcXVhcmVkXzEiLCJncmFkQ29lZmZfMSIsImVwb2NoQ2FsbGJhY2siLCJlcG9jaENvbXBsZXRlZCIsInNob3VsZFN0b3AiLCJpc0ZpbmlzaGVkIiwic2V0VGltZW91dCIsImVyciIsImNvc2luZSIsIm5vcm1YIiwibm9ybVkiLCJjbGlwVmFsdWUiLCJ4diIsImxpbmVhciIsInl2IiwiZGVmYXVsdCIsInoiLCJ2ZWMiLCJ2ZWNfMSIsInZlY18xXzEiLCJpdGVtIiwib25lcyIsIm1heDJkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImRlZmluaXRpb24iLCJjaHVua0lkIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwib2JqIiwicHJvcCIsInRvU3RyaW5nVGFnIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVwbGFjZSIsImJhc2VVUkkiLCJzZWxmIiwiaHJlZiIsImdyb2siLCJ1aSIsIkRHIiwiYXNzdXJlIiwiZGVsYXkiLCJtcyIsIm5vdE51bGwiLCJEZW1vU2NyaXB0IiwiZGVzY3JpcHRpb24iLCJpc0F1dG9tYXRpYyIsIl9pc0F1dG9tYXRpYyIsIl9hdXRvU3RhcnRGaXJzdFN0ZXAiLCJfY3VycmVudFN0ZXAiLCJfaXNTdG9wcGVkIiwiX2lzQ2FuY2VsbGVkIiwiX2lzU3RlcFByb2Nlc3NlZCIsIl9yb290IiwiaWQiLCJjbGFzc2VzIiwiX3N0ZXBzIiwiX21haW5IZWFkZXIiLCJfaGVhZGVyIiwiX2hlYWRlckRpdiIsIl9zdG9wU3RhcnRCdG4iLCJfY2hhbmdlU3RvcFN0YXRlIiwiX3Jlc3RhcnRCdG4iLCJfcmVzdGFydFNjcmlwdCIsIl9uZXh0U3RlcEJ0biIsIl9uZXh0U3RlcCIsIl9hY3Rpdml0eSIsIl9wcm9ncmVzc0RpdiIsIl9wcm9ncmVzcyIsIl9wcm9ncmVzc1N0ZXBzIiwiX2Nsb3NlQnRuIiwiX2Nsb3NlRG9jayIsImF1dG9TdGFydEZpcnN0U3RlcCIsImN1cnJlbnRPYmplY3QiLCJzdGVwcyIsInN0ZXBOdW1iZXIiLCJfYWRkSGVhZGVyIiwiX2NyZWF0ZUhlYWRlckRpdiIsIl9jcmVhdGVQcm9ncmVzc0RpdiIsImFwcGVuZCIsImlubmVyVGV4dCIsImZpcnN0Q2hpbGQiLCJjbGFzc05hbWUiLCJfYWRkRGVzY3JpcHRpb24iLCJpbnN0cnVjdGlvbkluZGljYXRvciIsImluc3RydWN0aW9uRGl2IiwiY3VycmVudFN0ZXBEZXNjcmlwdGlvbiIsIl9pbml0Um9vdCIsInNjcmlwdERvY2tOb2RlIiwiX25vZGUiLCJwYXJlbnQiLCJjb250YWluZXIiLCJjb250YWluZXJFbGVtZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJsYXN0RWxlbWVudENoaWxkIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJyZW1vdmUiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiZW50cnlJbmRpY2F0b3IiLCJlbnRyeUluc3RydWN0aW9uIiwiY3VycmVudFN0ZXAiLCJzdGVwRGVsYXkiLCJfc2Nyb2xsVG8iLCJvZmZzZXRUb3AiLCJvZmZzZXRIZWlnaHQiLCJfY291bnRkb3duIiwibmV3RW50cnlJbmRpY2F0b3IiLCJyZXBsYWNlV2l0aCIsIm5leHRTdGVwRW50cnlJbmRpY2F0b3IiLCJzdGFydE5leHRTdGVwSWNvbiIsIl9zdGFydFNjcmlwdCIsImZvY3VzIiwic2Nyb2xsVG9wIiwiaW5kaWNhdG9yIiwidGltZSIsImNvdW50ZG93bkRpdiIsImNvdW50ZG93biIsInN2ZyIsIl9jcmVhdGVTVkdJbmRpY2F0b3IiLCJwcmVwZW5kIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiY3JlYXRlRWxlbWVudE5TIiwiY2lyY2xlIiwic2V0QXR0cmlidXRlTlMiLCJpY29uIiwiX2NsZWFyUm9vdCIsIl9zZXRJbml0UGFyYW1zIiwic3RhcnQiLCJjYW5jZWxTY3JpcHQiLCJJbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiQ29sdW1uIiwiZnJvbUludDMyQXJyYXkiLCJmcm9tRmxvYXQzMkFycmF5IiwiTlVNX1RZUEUiLCJGTE9BVF9DT0xVTU5fVFlQRSIsIklOVF9DT0xVTU5fVFlQRSIsIkZMT0FUX0NPTFVNTlNfVFlQRSIsIk5FV19GTE9BVF9DT0xVTU5TX1RZUEUiLCJJTlRfQ09MVU1OU19UWVBFIiwiTkVXX0lOVF9DT0xVTU5TX1RZUEUiLCJORVdfRkxPQVRfQ09MVU1OX1RZUEUiLCJORVdfSU5UX0NPTFVNTl9UWVBFIiwiQ09MVU1OIiwiQ0FMTF9SRVNVTFQiLCJOVU1fT0ZfUk9XUyIsIk5VTV9PRl9DT0xVTU5TIiwiUkVGIiwiVkFMVUUiLCJUQUJMRV9PRl9DT0xVTU5TIiwiT0JKRUNUUyIsIklOVF9UWVBFIiwiRE9VQkxFX1RZUEUiLCJhcmdzU3BlY2lmaWNhdGlvbiIsImlucHV0VmFscyIsInJlZiIsImNwcEZ1bmNJbnB1dCIsImFyZyIsImdldFJhd0RhdGEiLCJhcnJheXMiLCJ0b0xpc3QiLCJ2YWwxIiwidmFsMiIsImZ1bmNTcGVjaWZpY2F0aW9uIiwiZGF0YUZyb21XZWJXb3JrZXIiLCJfY2FsbFJlc3VsdCIsImNhbGxSZXN1bHQiLCJmdW5jU3BlY2lmaWNhdGlvbkFyZ3MiLCJhcmdzQWZ0ZXJXYXNtQ2FsbCIsInR5cGVUb0NvbHVtbkNyZWF0b3JNYXAiLCJuYW1lcyIsImV4dHJhY3ROZXdseUNyZWF0ZWREYXRhIiwiYXJncyIsIm91dFB1dCIsInR5cGVUb0RhdGFGaWVsZE1hcCIsInNvdXJjZSIsIkRhdGFGcmFtZSIsImZyb21Db2x1bW5zIiwiYXJyYXlUb1JldHVybiIsImdldE91dHB1dCIsImNsZWFyTmV3bHlDcmVhdGVkRGF0YSIsIlZlY3RvciIsInJhbmRvbUZsb2F0IiwidmVjdG9yQWRkIiwibXVsdGlwbGllciIsIm5JdGVtcyIsInRvdGFsIiwiZmlsbFJhbmRvbU1hdHJpeCIsImRpbWVuc2lvbjEiLCJkaW1lbnNpb24yIiwiaW5pdENvb3JkaW5hdGVzIiwiY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UiLCJzcWRpZmZTdW1tIiwiaXRlbXNTdW0iLCJ2ZWN0b3JTcXVhcmUiLCJkbUxpbmVhckluZGV4IiwiRGlzdGFuY2VNYXRyaXhTZXJ2aWNlIiwidXNlQ29uY3VycmVudFdvcmtlcnMiLCJ0ZXJtaW5hdGVPbkNvbXBsZXRlIiwidGhyZWFkQ291bnQiLCJuYXZpZ2F0b3IiLCJoYXJkd2FyZUNvbmN1cnJlbmN5IiwiX3dvcmtlckNvdW50IiwiX3dvcmtlcnMiLCJXb3JrZXIiLCJVUkwiLCJfdGVybWluYXRlT25Db21wbGV0ZSIsImFzeW5jIiwiZm5OYW1lIiwicHJvbWlzZXMiLCJ0b3RhbExlbmd0aCIsImNodW5rU2l6ZSIsImRpc3RhbmNlTWF0cml4IiwiZW5kQ29sIiwibG1pbiIsImxtYXgiLCJlbmQiLCJzdGFydENvbCIsInBvc3RNZXNzYWdlIiwiY2h1bmNrU2l6ZSIsInJlc29sdmVXb3JrZXIiLCJyZWplY3RXb3JrZXIiLCJvbm1lc3NhZ2UiLCJkaXN0YW5jZU1hdHJpeERhdGEiLCJ0ZXJtaW5hdGUiLCJhbGwiLCJ3b3JrZXIiLCJTUEVCYXNlIiwiY3ljbGVzIiwiY3V0b2ZmIiwibGFtYmRhIiwiZGxhbWJkYSIsImxhbWJkYTIiLCJkbGFtYmRhMiIsImRpc3RhbmNlRnVuY3Rpb24iLCJkaXN0YW5jZUZ1bmN0aW9uTmFtZSIsInZlY3RvcnMiLCJkbUluZGV4RnVuY3QiLCJtYXRyaXhTZXJ2aWNlIiwiY2FsYyIsImNhbGNEaXN0YW5jZSIsImluZGV4MSIsImluZGV4MiIsImNvb3JkaW5hdGVzIiwiZGltZW5zaW9uIiwiaW5pdERpc3RhbmNlIiwiY3ljbGUiLCJyb3dpIiwicm93aiIsImRpZmZJSiIsIlBTUEVCYXNlIiwiT3JpZ2luYWxTUEUiLCJyYWRpdXNQZXJjZW50IiwibWF4RGlzdGFuY2UiLCJtYXhEaXN0YW5jZVN0ZXBzIiwicmFkaXVzIiwicGVxIiwiVWludDMyQXJyYXkiLCJsc3QiLCJwdiIsIm12Iiwic2MiLCJjaGFyQ29kZUF0IiwiZXEiLCJteWVyc18zMiIsIm1oYyIsInBoYyIsImhzaXplIiwidnNpemUiLCJ2bGVuIiwicGIiLCJtYiIsInhoIiwicGgiLCJtaCIsInNjb3JlIiwibXllcnNfeCIsIlN0cmluZ01ldHJpY3NOYW1lcyIsIlZlY3Rvck1ldHJpY3NOYW1lcyIsIkJpdEFycmF5TWV0cmljc05hbWVzIiwiRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMiLCJOdW1iZXJNZXRyaWNzTmFtZXMiLCJnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5Iiwic2ltaWxhcml0eSIsIlRhbmltb3RvIiwiRGljZSIsIkFzeW1tZXRyaWMiLCJCcmF1bkJsYW5xdWV0IiwiQ29zaW5lIiwiS3VsY3p5bnNraSIsIk1jQ29ubmF1Z2hleSIsIlJvZ290R29sZGJlcmciLCJSdXNzZWwiLCJTb2thbCIsIkhhbW1pbmciLCJFdWNsaWRlYW4iLCJkZWZhdWx0QXJncyIsImdhcE9wZW4iLCJnYXBFeHRlbmQiLCJzY29yaW5nTWF0cml4IiwiYWxwaGFiZXRJbmRleGVzIiwiTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzIiwibW1EaXN0YW5jZUZ1bmN0aW9ucyIsIkhBTU1JTkciLCJzZXExIiwic2VxMiIsImRpZmYiLCJMRVZFTlNIVEVJTiIsIk5FRURMRU1BTk5fV1VOU0NIIiwidmVydGljYWxHYXBzIiwiaG9yaXpvbnRhbEdhcHMiLCJwcmV2Um93IiwiY3VyclJvdyIsInRvcCIsInBlcmZlY3RNYXRjaFNlcTEiLCJzcGxpdCIsInBlcmZlY3RNYXRjaFNlcTIiLCJtYXhTY29yZSIsInZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiTGV2ZW5zaHRlaW4iLCJKYXJvV2lua2xlciIsIk1hbmhhdHRhbiIsInMxIiwiczIiLCJiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJ0cnVlQ291bnQiLCJjb21tb24iLCJhbmRXaXRoQ291bnRCaXRzIiwidGFuaW1vdG9TaW1pbGFyaXR5IiwiZGljZVNpbWlsYXJpdHkiLCJhc3ltbWV0cmljU2ltaWxhcml0eSIsImJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5IiwiY29zaW5lU2ltaWxhcml0eSIsInRvdGFsUHJvZCIsImt1bGN6eW5za2lTaW1pbGFyaXR5IiwibWNDb25uYXVnaGV5U2ltaWxhcml0eSIsImNvdW50Qml0cyIsInJvZ290R29sZGJlcmdTaW1pbGFyaXR5IiwicnVzc2VsU2ltaWxhcml0eSIsInNva2FsU2ltaWxhcml0eSIsIm51bWJlckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJOdW1lcmljRGlzdGFuY2UiLCJBdmFpbGFibGVNZXRyaWNzIiwiU3RyaW5nIiwiQml0QXJyYXkiLCJNYWNyb01vbGVjdWxlIiwiTWV0cmljVG9EYXRhVHlwZSIsInJldCIsIk1lYXN1cmUiLCJtZXRob2QiLCJkYXRhVHlwZSIsImdldE1lYXN1cmUiLCJvcHRzIiwiZGljdCIsImF2YWlsYWJsZU1lYXN1cmVzIiwiX2xlbmd0aCIsIl92ZXJzaW9uIiwiX3VwZGF0ZUxldmVsIiwiX3NlbGVjdGVkQ291bnQiLCJfc2VsZWN0ZWRDb3VudFZlcnNpb24iLCJfc2VsZWN0ZWRJbmRleGVzVmVyc2lvbiIsIl92ZXJzaW9uZWROYW1lIiwiX3ZlcnNpb25lZE5hbWVWZXJzaW9uIiwiU0hSSU5LX1RIUkVTSE9MRCIsImJ1ZmYiLCJfY3JlYXRlQnVmZmVyIiwiX2RhdGEiLCJhc3N1cmVHb2V6IiwiYXJnTmFtZSIsImFzc3VyZUluUmFuZ2UiLCJkc3QiLCJjb3B5RnJvbSIsImxlbmd0aEluSW50cyIsImJ1ZmZlciIsInZlcnNpb24iLCJpbmNyZW1lbnRWZXJzaW9uIiwibm90aWZ5IiwidmVyc2lvbmVkTmFtZSIsInNldExlbmd0aCIsIm5JbnRzTmVlZGVkIiwic2V0MSIsInNldDIiLCJzZXRCaXQiLCJmcm9tU2VxIiwiYnl0ZXMiLCJudW0xIiwibnVtMiIsImVxdWFscyIsImdldEJpdCIsImJpdEFycmF5Iiwic2V0QWxsIiwiaW52ZXJ0IiwiZmxhZ3MiLCJzZXRJbmRleGVzIiwiaW5kZXhlcyIsImNsZWFyIiwic2V0RmFzdCIsImV2ZXJ5SW5kZXgiLCJhbnlJbmRleCIsInNldFdoZXJlIiwiY2hlY2siLCJhbGxvd0NsZWFyIiwiZ2V0UmFuZ2UiLCJ0byIsImZyb21WYWx1ZXMiLCJnZXRSYW5nZUFzTGlzdCIsInNldFJhbmdlIiwic2V0VHJ1ZSIsInNldEZhbHNlIiwic2V0UmFuZG9tIiwiYW5kTm90Iiwibm90QW5kIiwiaW5zZXJ0QXQiLCJwb3MiLCJvbGRsZW5ndGgiLCJyZW1vdmVBdCIsInJlbW92ZUJ5TWFzayIsIm1hc2siLCJkc3RJZHgiLCJzcmNJZHgiLCJmaW5kTmV4dCIsImJpdCIsImZhbHNlQ291bnQiLCJfb25CaXRDb3VudCIsInJlbWFpbmluZ0JpdHMiLCJjb3VudFdoZXJlIiwic2Vjb25kIiwiYWxsVHJ1ZSIsImFsbEZhbHNlIiwiYW55VHJ1ZSIsImFueUZhbHNlIiwidW51c2VkQml0cyIsIm51bUludHMiLCJfZmlyc3RPbkJpdCIsImZpbmRQcmV2IiwiX2xhc3RPbkJpdCIsIkludDhBcnJheSIsImlzTmlsIiwiRGlzdGFuY2VNYXRyaXgiLCJfc2l6ZSIsImRhdGFMZW5ndGgiLCJfbGluZWFyaXplSUoiLCJsaXN0Iiwic3F1YXJlIiwiRGltUmVkdWN0aW9uTWV0aG9kcyIsIlJlZHVjZXIiLCJBdmFpbGFibGVSZWR1Y2VycyIsImRpc3RhbmNlRm5hbWUiLCJkbUluZGV4RnVuYyIsInVzaW5nRGlzdGFuY2VNYXRyaXgiLCJwcmVDYWxjdWxhdGVEaXN0YW5jZU1hdHJpeCIsIl9lbmNvZGVkRGlzdGFuY2VNYXRyaXgiLCJiaW5kIiwiX2VuY29kZWREaXN0YW5jZSIsInJlZHVjZXIiLCJwYXJhbGxlbERpc3RhbmNlV29ya2VycyIsIm1hdHJpeFByb3h5IiwiY29uZGVuc2VkQXJyYXkiLCJsaW5lYXJGdW5jIiwibGluZWFySW5kZXgiLCJpTnVtIiwiak51bSIsImlkeDFIYW5kbGVyIiwiaWR4MSIsIl9yZWNlaXZlciIsIlByb3h5IiwiaWR4MiIsImlkeDJIYW5kbGVyIiwiZGlzdGFuY2VNYXRyaXhQcm94eSIsImVtYiIsIkRpbWVuc2lvbmFsaXR5UmVkdWNlciIsIm1ldHJpYyIsIm1lYXN1cmUiLCJzcGVjT3B0aW9ucyIsInR5cGVOYW1lIiwiYXZhaWxhYmxlTWV0aG9kcyIsImF2YWlsYWJsZU1ldHJpY3MiLCJDT01QX01JTiIsIlNBTVBMRVNfQ09VTlRfTUlOIiwiRkVBVFVSRVNfQ09VTlRfTUlOIiwiUEVSQ0VOVEFHRV9NSU4iLCJQRVJDRU5UQUdFX01BWCIsIk1BWF9FTEVNRU5UU19DT1VOVCIsIkNPTVBfUE9TSVRWRV9NRVMiLCJDT01QX0VYQ0VTUyIsIklOQ09SRVJSRUNUX01JTl9NQVhfTUVTIiwiSU5DT1JFUlJFQ1RfRkVBVFVSRVNfTUVTIiwiSU5DT1JFUlJFQ1RfU0FNUExFU19NRVMiLCJJTkNPUkVSUkVDVF9QRVJDRU5UQUdFX01FUyIsIkRBVEFGUkFNRV9JU19UT09fQklHX01FUyIsIlVOU1VQUE9SVEVEX0NPTFVNTl9UWVBFX01FUyIsIklOQ09SUkVDVF9NSU5fRElTVF9NRVMiLCJJTkNPUlJFQ1RfU1BSRUFEX01FUyIsIklOQ09SUkVDVF9FUE9DSF9NRVMiLCJJTkNPUlJFQ1RfTkVJQk9SU19NRVMiLCJJTkNPUlJFQ1RfSVRFUkFUSU9OU19NRVMiLCJJTkNPUlJFQ1RfTEVBUk5JTkdfUkFURV9NRVMiLCJJTkNPUlJFQ1RfUEVSUExFWElUWV9NRVMiLCJJTkNPUlJFQ1RfU1RFUFNfTUVTIiwiSU5DT1JSRUNUX0NZQ0xFU19NRVMiLCJJTkNPUlJFQ1RfQ1VUT0ZGX01FUyIsImNoZWNrQ29sdW1uVHlwZSIsImNoZWNrRGltZW5zaW9uUmVkdWNlcklucHV0cyIsImZlYXR1cmVzIiwiY29tcG9uZW50cyIsImNoZWNrV2FzbURpbWVuc2lvblJlZHVjZXJJbnB1dHMiLCJieUluZGV4IiwiZ2V0Um93c09mTnVtZXJpY2FsQ29sdW1ubnMiLCJjb2x1bW5MaXN0Iiwicm93Q291bnQiLCJjb2xDb3VudCIsImNvbXB1dGVQTFMiLCJ0YWJsZSIsInByZWRpY3QiLCJjb21wb25lbnRzQ291bnQiLCJFREEiLCJfcGFydGlhbExlYXN0U3F1YXJlUmVncmVzc2lvbkluV2ViV29ya2VyIiwicHJlZGljdGVkVmVyc3VzUmVmZXJlbmNlU2NhdHRlclBsb3QiLCJzYW1wbGVzTmFtZXMiLCJyZWZlcmVuY2UiLCJwcmVkaWN0aW9uIiwiZGZSZWZlcmVuY2VQcmVkaWN0aW9uIiwidGl0bGUiLCJzaG93UmVncmVzc2lvbkxpbmUiLCJtYXJrZXJUeXBlIiwibGFiZWxzIiwicmVncmVzc2lvbkNvZWZmaWNpZW50c0JhckNoYXJ0IiwicmVncmVzc2lvbkNvZWZmcyIsIm5hbWVzT2ZQcmVkaWN0b3JzIiwicHJlZGljdG9yTmFtZXNDb2x1bW4iLCJkZlJlZ3JDb2VmcyIsInZhbHVlQWdnclR5cGUiLCJzY29yZXNTY2F0dGVyUGxvdCIsInhTY29yZXMiLCJ5U2NvcmVzIiwic2NvcmVzQ29sdW1ucyIsInNjb3JlcyIsIlNWTV9HRU5fRkVBVFVSRVNfSU5ERVgiLCJTVk1fR0VOX0xBQkVMU19JTkRFWCIsIlNWTV9GRUFUVVJFX05BTUUiLCJTVk1fTEFCRUxfTkFNRSIsImNhcnNEYXRhZnJhbWUiLCJ0ZXN0RGF0YUZvckJpbmFyeUNsYXNzaWZpY2F0aW9uIiwia2VybmVsIiwia2VybmVsUGFyYW1zIiwic2FtcGxlc0NvdW50IiwiZmVhdHVyZXNDb3VudCIsInZpb2xhdG9yc1BlcmNlbnRhZ2UiLCJjaGVja0dlbmVyYXRvclNWTWlucHV0cyIsImtlcm5lbFBhcmFtc0NvbCIsIl9vdXRwdXQiLCJfcHJvbWlzZSIsIl9nZW5lcmF0ZURhdGFzZXRJbldlYldvcmtlciIsIl9yZXN1bHQiLCJfZXJyb3IiLCJkZiIsIkxJTkVBUiIsIlBPTFlOT01JQUwiLCJSQkYiLCJTSUdNT0lEIiwiQ09ORlVTSU9OX01BVFJfU0laRSIsIk5PUk1BTElaRURfREFUQV9JTkRFWCIsIk1FQU5TX0lOREVYIiwiU1REX0RFVlNfSU5ERVgiLCJNT0RFTF9QQVJBTVNfSU5ERVgiLCJNT0RFTF9XRUlHSFRTX0lOREVYIiwiUFJFRElDVEVEX0xBQkVMU19JTkRFWCIsIkNPUlJFQ1RORVNTX0lOREVYIiwiQ09ORlVTSU9OX01BVFJJWF9JTkRFWCIsIlRSVUVfUE9TSVRJVkVfSU5ERVgiLCJGQUxTRV9ORUdBVElWRV9JTkRFWCIsIkZBTFNFX1BPU0lUSVZFX0lOREVYIiwiVFJVRV9ORUdBVElWRV9JTkRFWCIsIlJCRl9TSUdNQV9JTkRFWCIsIlBPTFlOT01JQUxfQ19JTkRFWCIsIlBPTFlOT01JQUxfRF9JTkRFWCIsIlNJR01PSURfS0FQUEFfSU5ERVgiLCJTSUdNT0lEX1RIRVRBX0lOREVYIiwiR0FNTUFfSU5GSU1VTV9MSU1JVCIsIlJCRl9TSUdNQV9JTkZJTVVNX0xJTUlUIiwiUE9MWU5PTUlBTF9DX0lORklNVU1fTElNSVQiLCJQT0xZTk9NSUFMX0RfSU5GSU1VTV9MSU1JVCIsIldST05HX0dBTU1BX01FU1NBR0UiLCJXUk9OR19SQkZfU0lHTUFfTUVTU0FHRSIsIldST05HX1BPTFlOT01JQUxfQ19NRVNTQUdFIiwiV1JPTkdfUE9MWU5PTUlBTF9EX01FU1NBR0UiLCJXUk9OR19LRVJORUxfTUVTU0FHRSIsIkxBQkVMUyIsIlBSRURJQ1RFRCIsIkNPUlJFQ1RORVNTIiwiQ09ORlVTSU9OX01BVFJJWF9OQU1FIiwiTUVBTiIsIlNURF9ERVYiLCJNT0RFTF9QQVJBTVNfTkFNRSIsIk1PREVMX1dFSUdIVFNfTkFNRSIsIkdBTU1BIiwiS0VSTkVMIiwiS0VSTkVMX1BBUkFNUyIsIktFUk5FTF9QQVJBTV8xIiwiS0VSTkVMX1BBUkFNXzIiLCJGRUFUVVJFU19DT1VOVF9OQU1FIiwiVFJBSU5fU0FNUExFU19DT1VOVF9OQU1FIiwiVFJBSU5fRVJST1IiLCJLRVJORUxfVFlQRV9UT19OQU1FX01BUCIsIlBPU0lUSVZFX05BTUUiLCJORUdBVElWRV9OQU1FIiwiUFJFRElDVEVEX1BPU0lUSVZFX05BTUUiLCJQUkVESUNURURfTkVHQVRJVkVfTkFNRSIsIlNFTlNJVElWSVRZIiwiU1BFQ0lGSUNJVFkiLCJCQUxBTkNFRF9BQ0NVUkFDWSIsIlBPU0lUSVZFX1BSRURJQ1RJVkVfVkFMVUUiLCJORUdBVElWRV9QUkVESUNUSVZFX1ZBTFVFIiwiTUxfUkVQT1JUIiwiTUxfUkVQT1JUX1BSRURJQ1RFRF9MQUJFTFMiLCJNTF9SRVBPUlRfVFJBSU5fTEFCRUxTIiwiTUxfUkVQT1JUX0NPUlJFQ1RORVNTIiwiUFJFRElDVElPTiIsIkJZVEVTIiwiSU5UU19DT1VOVCIsIktFUl9QQVJBTVNfQ09VTlQiLCJNT0RFTF9LRVJORUxfSU5ERVgiLCJTQU1QTEVTX0NPVU5UX0lOREVYIiwiRkVBVFVSRVNfQ09VTlRfSU5ERVgiLCJJTklUX1ZBTFVFIiwiTFNfU1ZNX0FERF9DT05TVCIsImdldFRyYWluZWRNb2RlbCIsImh5cGVycGFyYW1ldGVycyIsInByZWRpY3RfY29sdW1uIiwiYnlOYW1lIiwiZGF0YXNldCIsInNpZ21hIiwiY1BhcmFtIiwiZFBhcmFtIiwiY2hlY2tIeXBlcnBhcmFtZXRlcnMiLCJrZXJuZWxQYXJhbXNBcnJheSIsImthcHBhIiwidGhldGEiLCJ0cmFpbkNvbHMiLCJtb2RlbFBhcmFtc0NvdW50IiwicHJlY29tcHV0ZWRXZWlnaHRzQ291bnQiLCJjb25mdXNpb25NYXRyaXhFbGVtZW50c0NvdW50IiwiX3RyYWluQW5kQW5hbHl6ZUxTU1ZNSW5XZWJXb3JrZXIiLCJtb2RlbCIsInRyYWluR2FtbWEiLCJrZXJuZWxUeXBlIiwidHJhaW5MYWJlbHMiLCJub3JtYWxpemVkVHJhaW5EYXRhIiwibWVhbnMiLCJzdGREZXZzIiwibW9kZWxQYXJhbXMiLCJtb2RlbFdlaWdodHMiLCJwcmVkaWN0ZWRMYWJlbHMiLCJjb3JyZWN0bmVzcyIsImNvbmZ1c2lvbk1hdHJpeCIsInRyYWluRXJyb3IiLCJ0cmFpblNhbXBsZXNDb3VudCIsIlRQIiwiVE4iLCJGUCIsIkZOIiwiVFBSIiwiVE5SIiwiUFBWIiwiTlBWIiwiQUNDIiwiQkEiLCJzZW5zaXRpdml0eSIsInNwZWNpZmljaXR5IiwiYmFsYW5jZWRBY2N1cmFjeSIsInBvc2l0aXZlUHJlZGljaXR2ZVZhbHVlIiwibmVnYXRpdmVQcmVkaWNpdHZlVmFsdWUiLCJldmFsdWF0ZUFjY3VyYWN5IiwidHJhaW5BbmRBbmFseXplTW9kZWwiLCJzaG93VHJhaW5SZXBvcnQiLCJkZlZpZXciLCJhZGRWaWV3ZXIiLCJnZXRNb2RlbEluZm8iLCJjb2xvciIsImdldENvbmZ1c2lvbk1hdHJpeERGIiwiZ2V0UGFja2VkTW9kZWwiLCJkYXRhQ29scyIsIlVpbnQ4QXJyYXkiLCJpbnRzIiwiZmxvYXRzIiwiZ2V0UHJlZGljdGlvbiIsInBhY2tlZE1vZGVsIiwibW9kZWxCeXRlcyIsImhlYWRlciIsImdldFVucGFja2VkTW9kZWwiLCJub3JtYWxpemVkRGF0YSIsInByZWNvbXB1dGVkV2VpZ2h0cyIsInRhcmdldERhdGEiLCJfcHJlZGljdEJ5TFNTVk1JbldlYldvcmtlciIsIl9wYWNrYWdlIiwiaW5mbyIsIndlYlJvb3QiLCJpbml0RURBIiwiX2luaXRFREFBUEkiLCJQQ0EiLCJwY2FUYWJsZSIsImNlbnRlck51bSIsInNjYWxlTnVtIiwiX3ByaW5jaXBhbENvbXBvbmVudEFuYWx5c2lzSW5XZWJXb3JrZXIiLCJjb21wdXRlUENBIiwiYWRkUHJlZml4VG9FYWNoQ29sdW1uTmFtZSIsImVwb2NocyIsIm5laWdoYm9ycyIsImNoZWNrVU1BUGlucHV0cyIsIndvcmtlck91dHB1dCIsInByb21pc2UiLCJlbWJlZGRpbmdzIiwidW1hcENvbHVtbnNEYXRhIiwiY29tcHV0ZVVNQVAiLCJ0U05FIiwiY2hlY2tUU05FaW5wdXRzIiwiY29tcHV0ZVRTTkUiLCJTUEUiLCJjaGVja1NQRWlucHV0cyIsInNwZSIsImNvbXB1dGVTUEUiLCJQTFMiLCJwbHNSZXN1bHRzIiwicGxzT3V0cHV0IiwidmlldyIsInhMb2FkaW5ncyIsImxvYWRpbmdDb2xzIiwibG9hZGluZ0xhYmVscyIsImRmTG9hZGluZ3MiLCJsb2FkaW5nU2NhdHRlclBsb3QiLCJhZGRQTFN2aXN1YWxpemF0aW9uIiwiZGVtb011bHRpdmFyaWF0ZUFuYWx5c2lzIiwiZGVtb1NjcmlwdCIsImNhcnMiLCJzb3VyY2VDYXJzIiwiZGlhbG9nIiwiYXZhaWxhYmxlIiwib25PSyIsInNob3ciLCJjbG9zZSIsInRlc3REYXRhTGluZWFyU2VwYXJhYmxlIiwidGVzdERhdGFMaW5lYXJOb25TZXBhcmFibGUiLCJ0cmFpbkxpbmVhcktlcm5lbFNWTSIsInRvU2hvd1JlcG9ydCIsInRyYWluZWRNb2RlbCIsImFwcGx5TGluZWFyS2VybmVsU1ZNIiwidHJhaW5SQkZrZXJuZWxTVk0iLCJhcHBseVJCRmtlcm5lbFNWTSIsInRyYWluUG9seW5vbWlhbEtlcm5lbFNWTSIsImFwcGx5UG9seW5vbWlhbEtlcm5lbFNWTSIsInRyYWluU2lnbW9pZEtlcm5lbFNWTSIsImFwcGx5U2lnbW9pZEtlcm5lbFNWTSJdLCJzb3VyY2VSb290IjoiIn0=