@flyfish-group/file-viewer 1.0.24 → 2.0.0
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/README.en.md +20 -0
- package/README.md +6 -337
- package/dist/index.d.ts +2 -369
- package/dist/index.js +2 -0
- package/package.json +32 -105
- package/dist/components/3MFLoader.js +0 -1
- package/dist/components/AMFLoader.js +0 -1
- package/dist/components/ArchiveViewer.js +0 -202
- package/dist/components/AudioViewer.js +0 -1
- package/dist/components/CadViewer.js +0 -1
- package/dist/components/CodeViewer.js +0 -1
- package/dist/components/ColladaLoader.js +0 -1
- package/dist/components/DrawingViewer.js +0 -1
- package/dist/components/EdaViewer.js +0 -1
- package/dist/components/EmailViewer.js +0 -1
- package/dist/components/EpubViewer.js +0 -1
- package/dist/components/FBXLoader.js +0 -1
- package/dist/components/GLTFLoader.js +0 -1
- package/dist/components/ImageViewer.js +0 -1
- package/dist/components/KMZLoader.js +0 -1
- package/dist/components/MarkdownViewer.js +0 -1
- package/dist/components/ModelViewer.js +0 -26885
- package/dist/components/OBJLoader.js +0 -1
- package/dist/components/OfdViewer.js +0 -1
- package/dist/components/PCDLoader.js +0 -1
- package/dist/components/PLYLoader.js +0 -1
- package/dist/components/PdfView.js +0 -30842
- package/dist/components/PptxRender.js +0 -19323
- package/dist/components/STLLoader.js +0 -1
- package/dist/components/TDSLoader.js +0 -1
- package/dist/components/TypstViewer.js +0 -2009
- package/dist/components/USDLoader.js +0 -1
- package/dist/components/UmdViewer.js +0 -2
- package/dist/components/VRMLLoader.js +0 -1
- package/dist/components/VTKLoader.js +0 -1
- package/dist/components/XYZLoader.js +0 -1
- package/dist/components/XlsxTable.js +0 -1
- package/dist/components/___vite-browser-external_commonjs-proxy.js +0 -1
- package/dist/components/_commonjs-dynamic-modules.js +0 -1
- package/dist/components/_commonjsHelpers.js +0 -1
- package/dist/components/ar-SA-G6X2FPQ2.js +0 -1
- package/dist/components/arc.js +0 -1
- package/dist/components/architecture-7EHR7CIX.js +0 -1
- package/dist/components/architectureDiagram-3BPJPVTR.js +0 -1
- package/dist/components/az-AZ-76LH7QW2.js +0 -1
- package/dist/components/bg-BG-XCXSNQG7.js +0 -1
- package/dist/components/blockDiagram-GPEHLZMM.js +0 -1
- package/dist/components/bn-BD-2XOGV67Q.js +0 -1
- package/dist/components/c4Diagram-AAUBKEIU.js +0 -1
- package/dist/components/ca-ES-6MX7JW3Y.js +0 -1
- package/dist/components/cfb.js +0 -1
- package/dist/components/channel.js +0 -1
- package/dist/components/chunk-2J33WTMH.js +0 -1
- package/dist/components/chunk-4BX2VUAB.js +0 -1
- package/dist/components/chunk-55IACEB6.js +0 -1
- package/dist/components/chunk-727SXJPM.js +0 -1
- package/dist/components/chunk-AQP2D5EJ.js +0 -1
- package/dist/components/chunk-EIO257PC.js +0 -1722
- package/dist/components/chunk-FMBD7UC4.js +0 -1
- package/dist/components/chunk-ND2GUHAM.js +0 -1
- package/dist/components/chunk-QZHKN3VN.js +0 -1
- package/dist/components/classDiagram-4FO5ZUOK.js +0 -1
- package/dist/components/classDiagram-v2-Q7XG4LA2.js +0 -1
- package/dist/components/cose-bilkent-S5V4N54A.js +0 -1
- package/dist/components/cs-CZ-2BRQDIVT.js +0 -1
- package/dist/components/cytoscape.esm.js +0 -1
- package/dist/components/da-DK-5WZEPLOC.js +0 -1
- package/dist/components/dagre-BM42HDAG.js +0 -1
- package/dist/components/de-DE-XR44H4JA.js +0 -1
- package/dist/components/defaultLocale.js +0 -1
- package/dist/components/diagram-2AECGRRQ.js +0 -1
- package/dist/components/diagram-5GNKFQAL.js +0 -1
- package/dist/components/diagram-KO2AKTUF.js +0 -1
- package/dist/components/diagram-LMA3HP47.js +0 -1
- package/dist/components/diagram-OG6HWLK6.js +0 -1
- package/dist/components/directory-open-01563666.js +0 -1
- package/dist/components/directory-open-4ed118d0.js +0 -1
- package/dist/components/docx-preview.js +0 -7
- package/dist/components/el-GR-BZB4AONW.js +0 -1
- package/dist/components/en-B4ZKOASM.js +0 -1
- package/dist/components/erDiagram-TEJ5UH35.js +0 -1
- package/dist/components/es-ES-U4NZUMDT.js +0 -1
- package/dist/components/eu-ES-A7QVB2H4.js +0 -1
- package/dist/components/eventmodeling-FCH6USID.js +0 -1
- package/dist/components/fa-IR-HGAKTJCU.js +0 -1
- package/dist/components/fflate.module.js +0 -1
- package/dist/components/fi-FI-Z5N7JZ37.js +0 -1
- package/dist/components/file-open-002ab408.js +0 -1
- package/dist/components/file-open-7c801643.js +0 -1
- package/dist/components/file-save-3189631c.js +0 -1
- package/dist/components/file-save-745eba88.js +0 -1
- package/dist/components/flowDiagram-I6XJVG4X.js +0 -1
- package/dist/components/fr-FR-RHASNOE6.js +0 -1
- package/dist/components/ganttDiagram-6RSMTGT7.js +0 -1
- package/dist/components/gitGraph-WXDBUCRP.js +0 -1
- package/dist/components/gitGraphDiagram-PVQCEYII.js +0 -1
- package/dist/components/gl-ES-HMX3MZ6V.js +0 -1
- package/dist/components/global-compiler.js +0 -1
- package/dist/components/global-renderer.js +0 -1
- package/dist/components/graph.js +0 -1
- package/dist/components/he-IL-6SHJWFNN.js +0 -1
- package/dist/components/hi-IN-IWLTKZ5I.js +0 -1
- package/dist/components/hu-HU-A5ZG7DT2.js +0 -1
- package/dist/components/id-ID-SAP4L64H.js +0 -1
- package/dist/components/image-GAAHSSAO.js +0 -1
- package/dist/components/image-blob-reduce.esm.js +0 -2
- package/dist/components/index.js +0 -23989
- package/dist/components/index10.js +0 -1
- package/dist/components/index11.js +0 -1
- package/dist/components/index12.js +0 -1
- package/dist/components/index13.js +0 -1
- package/dist/components/index14.js +0 -1
- package/dist/components/index15.js +0 -1
- package/dist/components/index16.js +0 -1
- package/dist/components/index17.js +0 -1
- package/dist/components/index18.js +0 -1
- package/dist/components/index19.js +0 -1
- package/dist/components/index2.js +0 -1
- package/dist/components/index20.js +0 -1
- package/dist/components/index21.js +0 -1
- package/dist/components/index22.js +0 -2
- package/dist/components/index23.js +0 -1
- package/dist/components/index24.js +0 -1
- package/dist/components/index3.js +0 -1
- package/dist/components/index4.js +0 -1
- package/dist/components/index5.js +0 -1
- package/dist/components/index6.js +0 -1
- package/dist/components/index7.js +0 -1
- package/dist/components/index8.js +0 -1
- package/dist/components/index9.js +0 -1
- package/dist/components/info-J43DQDTF.js +0 -1
- package/dist/components/infoDiagram-5YYISTIA.js +0 -1
- package/dist/components/init.js +0 -1
- package/dist/components/ishikawaDiagram-YF4QCWOH.js +0 -1
- package/dist/components/it-IT-JPQ66NNP.js +0 -1
- package/dist/components/ja-JP-DBVTYXUO.js +0 -1
- package/dist/components/journeyDiagram-JHISSGLW.js +0 -1
- package/dist/components/jszip.min.js +0 -1
- package/dist/components/kaa-6HZHGXH3.js +0 -1
- package/dist/components/kab-KAB-ZGHBKWFO.js +0 -1
- package/dist/components/kanban-definition-UN3LZRKU.js +0 -1
- package/dist/components/katex.js +0 -1
- package/dist/components/kk-KZ-P5N5QNE5.js +0 -1
- package/dist/components/km-KH-HSX4SM5Z.js +0 -1
- package/dist/components/ko-KR-MTYHY66A.js +0 -1
- package/dist/components/ku-TR-6OUDTVRD.js +0 -1
- package/dist/components/layout.js +0 -1
- package/dist/components/libarchive.js +0 -6
- package/dist/components/linear.js +0 -1
- package/dist/components/lt-LT-XHIRWOB4.js +0 -1
- package/dist/components/lv-LV-5QDEKY6T.js +0 -1
- package/dist/components/mermaid-parser.core.js +0 -14
- package/dist/components/mindmap-definition-RKZ34NQL.js +0 -1
- package/dist/components/mr-IN-CRQNXWMA.js +0 -1
- package/dist/components/my-MM-5M5IBNSE.js +0 -1
- package/dist/components/nb-NO-T6EIAALU.js +0 -1
- package/dist/components/nestedRender.js +0 -1
- package/dist/components/nl-NL-IS3SIHDZ.js +0 -1
- package/dist/components/nn-NO-6E72VCQL.js +0 -1
- package/dist/components/oc-FR-POXYY2M6.js +0 -1
- package/dist/components/ofd.js +0 -1
- package/dist/components/ordinal.js +0 -1
- package/dist/components/pa-IN-N4M65BXN.js +0 -1
- package/dist/components/packet-YPE3B663.js +0 -1
- package/dist/components/percentages-BXMCSKIN.js +0 -1
- package/dist/components/pica.js +0 -1
- package/dist/components/pie-LRSECV5Y.js +0 -1
- package/dist/components/pie.js +0 -1
- package/dist/components/pieDiagram-4H26LBE5.js +0 -1
- package/dist/components/pl-PL-T2D74RX3.js +0 -1
- package/dist/components/postal-mime.js +0 -1
- package/dist/components/printLayout.js +0 -1
- package/dist/components/pt-BR-5N22H2LF.js +0 -1
- package/dist/components/pt-PT-UZXXM6DQ.js +0 -1
- package/dist/components/quadrantDiagram-W4KKPZXB.js +0 -1
- package/dist/components/radar-GUYGQ44K.js +0 -1
- package/dist/components/requirementDiagram-4Y6WPE33.js +0 -1
- package/dist/components/ro-RO-JPDTUUEW.js +0 -1
- package/dist/components/rough.esm.js +0 -1
- package/dist/components/roundRect.js +0 -1
- package/dist/components/ru-RU-B4JR7IUQ.js +0 -1
- package/dist/components/sankeyDiagram-5OEKKPKP.js +0 -1
- package/dist/components/sequenceDiagram-3UESZ5HK.js +0 -1
- package/dist/components/si-LK-N5RQ5JYF.js +0 -1
- package/dist/components/sk-SK-C5VTKIMK.js +0 -1
- package/dist/components/sl-SI-NN7IZMDC.js +0 -1
- package/dist/components/stateDiagram-AJRCARHV.js +0 -1
- package/dist/components/stateDiagram-v2-BHNVJYJU.js +0 -1
- package/dist/components/subset-shared.chunk.js +0 -1
- package/dist/components/subset-worker.chunk.js +0 -1
- package/dist/components/sv-SE-XGPEYMSR.js +0 -1
- package/dist/components/ta-IN-2NMHFXQM.js +0 -1
- package/dist/components/th-TH-HPSO5L25.js +0 -1
- package/dist/components/time.js +0 -1
- package/dist/components/timeline-definition-PNZ67QCA.js +0 -1
- package/dist/components/tr-TR-DEFEU3FU.js +0 -1
- package/dist/components/transform.js +0 -1
- package/dist/components/treeView-BLDUP644.js +0 -1
- package/dist/components/treemap-LRROVOQU.js +0 -1
- package/dist/components/uk-UA-QMV73CPH.js +0 -1
- package/dist/components/vennDiagram-CIIHVFJN.js +0 -1
- package/dist/components/vi-VN-M7AON7JQ.js +0 -1
- package/dist/components/wardley-L42UT6IY.js +0 -1
- package/dist/components/wardleyDiagram-YWT4CUSO.js +0 -1
- package/dist/components/wasm-pack-shim.js +0 -1
- package/dist/components/wasm-pack-shim2.js +0 -1
- package/dist/components/worker-ref.js +0 -1
- package/dist/components/xychartDiagram-2RQKCTM6.js +0 -1
- package/dist/components/zh-CN-LNUGB5OW.js +0 -1
- package/dist/components/zh-HK-E62DVLB3.js +0 -1
- package/dist/components/zh-TW-RAJ6MFWO.js +0 -1
- package/dist/index.mjs +0 -1
- package/dist/package/index.d.ts +0 -36
- package/dist/style.css +0 -26
- package/dist/wasm/cad/DwgWorker-CuZJ5EUe.js +0 -349
- package/dist/wasm/cad/dwfv-render.wasm +0 -0
- package/dist/wasm/cad/dwg-worker.js +0 -349
- package/dist/wasm/cad/index-C365l3i9.js +0 -4161
- package/dist/wasm/cad/libredwg-web.js +0 -15
- package/dist/wasm/cad/libredwg-web.wasm +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const bn=b;(function(p,r){const bi=b,s=p();while(!![]){try{const t=-parseInt(bi(0x217))/0x1+-parseInt(bi(0x386))/0x2+-parseInt(bi(0x3e3))/0x3*(parseInt(bi(0x1b4))/0x4)+-parseInt(bi(0x2ea))/0x5*(parseInt(bi(0x13e))/0x6)+parseInt(bi(0x20d))/0x7*(parseInt(bi(0x12b))/0x8)+parseInt(bi(0x38e))/0x9*(parseInt(bi(0x318))/0xa)+parseInt(bi(0x1d2))/0xb;if(t===r)break;else s['push'](s['shift']());}catch(u){s['push'](s['shift']());}}}(a,0x1bd0a));import{ref as c,onUnmounted as d,defineComponent as e,computed as g,watch as h,onMounted as i,onBeforeUnmount as k,nextTick as l}from'vue';import{r as n}from'./worker-ref.js';import{n as o}from'./index7.js';const Js=p=>{const bk=b,r=c(!0x0),u=p(),w={'emit':(C,D)=>{r['value']=!0x0,u?.['postMessage']({'type':C,'payload':D});}},x={},y=[],z=[];return u?.['addEventListener']('message',C=>{const {type:D,payload:E}=C['data'],F=x[D];F?.['length']&&F['forEach'](G=>G(E)),y['forEach'](G=>G(C));}),u?.['addEventListener']('error',C=>{const bj=b;console[bj(0x2ef)](C),z['forEach'](D=>D(C));}),d(()=>{u?.['terminate']();}),{'loading':r,'worker':w,'onWorkerMessage':C=>y['push'](C),'onWorkerError':C=>z['push'](C),'onWorkerEvent':(C,D)=>{let E=x[C];E||(E=x[C]=[]),E['push'](D);},'mapEvents':C=>Array['isArray'](C)?C[bk(0x34d)]((D,E)=>(D[E]=F=>w[bk(0x186)](E,F),D),{}):Object['keys'](C)['reduce']((D,E)=>{const F=C[E];return D[F]=G=>w['emit'](E,G),D;},{})};};(function(){const bm=b;try{if(typeof document<'u'){var p=document[bm(0x3cc)]('style');p['appendChild'](document['createTextNode'](bm(0x206))),document['head']['appendChild'](p);}}catch(r){console['error']('vite-plugin-css-injected-by-js',r);}}());var Ms=Object[bn(0x96)],Ns=(p,r,s)=>r in p?Ms(p,r,{'enumerable':!0x0,'configurable':!0x0,'writable':!0x0,'value':s}):p[r]=s,m=(p,r,s)=>Ns(p,typeof r!='symbol'?r+'':r,s);class Fs{constructor(p){m(this,'rules'),this['rules']=p;}['validate'](p){const bo=bn,r=[],{column:u,row:w,key:x,rowKey:y,colIndex:z,rowIndex:C,value:D,field:E,fieldValue:F}=p;Array['isArray'](this['rules'])||(this['rules']=[this['rules']]);for(const G of this['rules']){if(G[bo(0xaa)]){const K={'field':E,'fieldValue':F,'value':D,'column':u,'colIndex':z,'rowIndex':C,'row':w,'key':x,'rowKey':y,...G};G['validator'](K,D,L=>{L&&r['push']({...K,'message':L});});}if(!G[bo(0x33a)]&&(D==null||D===''))return r;G[bo(0x2f4)]&&!G['pattern']['test'](D)&&r['push']({'value':D,'column':u,'row':w,'key':x,'rowKey':y,'colIndex':z,'rowIndex':C,'field':E,'fieldValue':F,'message':G['message']||x+'\x20is\x20pattern\x20validation\x20error'}),G['required']&&(D==null||D==='')&&r['push']({'value':D,'column':u,'row':w,'key':x,'rowKey':y,'colIndex':z,'rowIndex':C,'field':E,'fieldValue':F,'message':G['message']||x+'\x20is\x20required'});}return r;}}function Ol(){return'xxxxxxxxxxxxxxxxxx'['replace'](/[x]/g,function(p){const r=Math['random']()*0x10|0x0;return(p==='x'?r:r&0x3|0x8)['toString'](0x10);});}function Ft(p,r){let s=0x0,u;return function(...w){const x=new Date()['getTime'](),y=x-s,z=typeof r=='function'?r():r;!s||y>=z?(p['apply'](this,w),s=x):u||(u=setTimeout(()=>{const bp=b;p[bp(0x11d)](this,w),s=new Date()['getTime'](),u=void 0x0;},z-y));};}function Di(p=[]){const bq=bn;return p[bq(0x3d0)]?p['map'](r=>Di(r['children'])+0x1)['sort']((r,s)=>s-r)[0x0]:0x0;}function ws(p=[]){const bt=bn;let r=[],s=[],u=[];return p['forEach'](w=>{const br=b;w[br(0x228)]==='left'?r['push'](w):w['fixed']==='right'?u[br(0x18f)](w):s['push'](w);}),[...r['sort']((w,x)=>(w[bt(0x1a1)]??0x0)-(x['sort']??0x0)),...s[bt(0x1a1)]((w,x)=>(w['sort']??0x0)-(x['sort']??0x0)),...u[bt(0x1a1)]((w,x)=>(w['sort']??0x0)-(x['sort']??0x0))];}function Pi(p=[],r=0x1,s=0x0,u=''){const bu=bn;return p['sort']((w,x)=>(w['sort']??0x0)-(x['sort']??0x0))[bu(0x260)](w=>{const bv=bu;if(w['children']){let x=0x0,y=w[bv(0x228)];w['children']['forEach'](C=>{C['fixed']=y;});const z=Pi(w['children'],r-0x1,s+0x1,w[bv(0x31c)]);return z&&z[bv(0x288)](C=>{x+=C['colspan']??0x0;}),{...w,'width':w['width'],'level':s,'rowspan':0x1,'colspan':x,'parentKey':u,'children':z['sort']((C,D)=>(C[bv(0x1a1)]??0x0)-(D['sort']??0x0))};}return{...w,'level':s,'rowspan':r,'colspan':0x1,'parentKey':u};});}function Ki(p=[]){let r=[];return p['forEach'](s=>{s['children']?r=r['concat'](Ki(s['children'])):r['push'](s);}),r;}function Dl(p){const bw=bn;return p[bw(0x31f)](r=>!r['hide'])['map'](r=>Array['isArray'](r['children'])&&r[bw(0x1c6)]['length']>0x0?{...r,'children':Dl(r[bw(0x1c6)])}:{...r});}const el=/^(\r\n|\n\r|\r|\n)/,Rs=/^[^\t\r\n]+/,dl=/^\t/;function zs(p){const bx=bn;let r=[['']];if(p['length']===0x0)return r;let u=0x0,w=0x0,x;for(;p['length']>0x0&&x!==p['length'];)if(x=p['length'],p['match'](dl))p=p['replace'](dl,''),u+=0x1,r[w][u]='';else{if(p['match'](el))p=p['replace'](el,''),u=0x0,w+=0x1,r[w]=[''];else{let y='';if(p['startsWith']('\x22')){let z=0x0,C=!0x0;for(;C;){const D=p['slice'](0x0,0x1);D==='\x22'&&(z+=0x1),y+=D,p=p['slice'](0x1),(p['length']===0x0||p[bx(0x29c)](/^[\t\r\n]/)&&z%0x2===0x0)&&(C=!0x1);}y=y['replace'](/^"/,'')['replace'](/"$/,'')['replace'](/["]*/g,E=>new Array(Math[bx(0x1b8)](E['length']/0x2))['fill']('\x22')[bx(0x92)](''));}else{const E=p['match'](Rs);y=E?E[0x0]:'',p=p[bx(0x3e2)](y[bx(0x3d0)]);}r[w][u]=y;}}return Array[bx(0x10e)](r)&&r[bx(0x3d0)]>0x1&&r[r['length']-0x1][bx(0x3d0)]===0x1&&r[r['length']-0x1][0x0]===''&&(r=r['slice'](0x0,r['length']-0x1)),r;}function Cs(p){const by=bn;let r,u,w,x,y='',z;for(r=0x0,u=p[by(0x3d0)];r<u;r+=0x1){for(x=p[r][by(0x3d0)],w=0x0;w<x;w+=0x1)w>0x0&&(y+='\x09'),z=p[r][w],typeof z=='string'?z['indexOf']('\x0a')>-0x1?y+='\x22'+z['replace'](/"/g,'\x22\x22')+'\x22':y+=z:z==null?y+='':y+=z;r!==u-0x1&&(y+='\x0a');}return y;}function a(){const mE=['defaultView','FOOTER_BG_COLOR','hsv(','handleHeaderEvent','parentNode','set','selectionMap','update','fffacd','gradientType','ffd700','setRowSelection','CHECKBOX_CHECK_SVG','substring','READONLY_TEXT_COLOR','lineTo','getRowSelectable','_applyModification','destroy','calc(100%\x20+\x20','_height','CHECKBOX_DISABLED_SVG','e-virt-table-finder-bar-nav-btn\x20prev-btn','ENABLE_AUTOFILL','TREE_CHILDREN_KEY','sumHeight','setSortState','ctx','searchData','drawHoverImageX','check','calculatedHeight','data','ENABLE_DRAG_COLUMN','false','scrollLeft','beginPath','position','hideDisabled','_cleanup','TREE_LINE','%,\x20','#DDE0EA','tree-selection','documentElement','calculatedHeightCells','10px','179186Rmgufx','rowKey','isVerticalVisible','clearSelector','handleContextMenu','clientHeight','getScale','totalCols','2048427FnRhKg','drawTextHeight','inherit','clearValidationError','getValue','fa8072','emptyChange','splitPoints','FOOTER_FIXED','adff2f','d3d3d3','fixedData','solid','isFocus','parent','clickCell','getRowKeyByItem','dragingCell','has','metaKey','drawSelectionImageY','click','canvasElement','current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API','editorType','clearSelectedData','BORDER','contextMenuCut','cellCache','selectorArrStr','paste','fill','timerY','endsWith','hasValidationError','setAutofill','isResizing','htShrink','getDragCellHeader','contextMenuEl','operation','boundMouseLeaveHandler','fixedCells','drawTextY','isCustom','ffefd5','stageWidth','resizableData','onScroll','getLuminance','contextMenu','handleDblclick','ArrowDown','borderRight','setScroll','e-virt-table-finder-bar-nav-btn\x20next-btn','arerMapsEqual','isElement','clientLeft','contextMenuElement','TREE_SELECT_MODE','startColorstr=','createElement','setSelectorCell','color','appendChild','length','transparent','setFooterData','fffafa','initial','removeSubMenuItem','dcdcdc','innerText','barY','resetEditorStyle','lineDashOffset','hide','#9aa0a6','getOffsetParent','ff8c00','clearTextCache','changedDataMap','event','slice','3swZRDD','_format','customHeader','assign','cellHeaderHoverChange','toLocaleLowerCase','2f4f4f','html','currentCell','block','draw','finderBar','width','devicePixelRatio','htTop','calculateTextHeight','hideData','CHECKBOX_CHECK_DISABLED_COLOR','relationRowKeys','selectorMove','loading-spinner','now','visibleDistance','toggleAllSelection','clientX','drawTipLine','getExpandRowKeys','expandMap','008b8b','.e-virt-table-submenu','fixedRightCellHeaders','sortChange','function','已缓存\x20','CHECKBOX_COLOR','getContainer','hideHeaderSelection','shrink','setRowHeight','setSelector','drawTreeImageHeight','touchstart','horizontalAlign','cellFocusChange','type','Excel\x20解析失败','validate','HEADER_BG_COLOR','join','border-box','Enter','shrinkToFit','defineProperty','filterColumns','getDrawX','_gradientType','e-virt-table-submenu','contentEl','renderRows','xArr','getTreeSelectionState','sort-default','observer','00ced1','tailIndex','getItemValue','container','selectorCellValueType','showSubmenu','fixedLeftCellHeaders','updateSelection','dragHeaderIng','validator','options','arrow','resize','div','addColorStop','clearSort','removeEventListener','Copy\x20Failure:','stageHeight','errorMessage','EDIT_BG_COLOR','bdb76b','findMenuItem','rowspan','clientWidth','minX','title','hsv','size','message','drawErrorTip','sheet-loading-summary','toRgb','e-virt-table-loading-spinner','getOverlayerAutoHeightMap','hoverRow','setMousedown','events','drawHoverImageWidth','serializeToString','px;width:','history','offsetLeft','center','icons','split','childrenKey','Loaded','getDrawY','resetHeader','findNodeWithParent','includes','random','rgb(82,146,247)','getPrototypeOf','RESIZE_COLUMN_MIN_WIDTH','iterator','PLACEHOLDER_COLOR','maxRowIndex','backgroundColor','isMouseDown','isInsideElement','index','rgba(','header','allCellHeaders','remove','performSearch','setScrollY','getRowKeyForRowIndex','updateType','setExpandChildren','configColorName','cancel','handleMouseout','iterationChange','maxLineClampHeader','static','distance','drawRect','selector','getPositionForRowIndex','style','hideLoading','table-target','initData','renderHeader','trackY','currentRowChange','focusCell','height','handleTouchstart','overlayerChange','loadingElement','getCustomHeader','stageElement','flip','test','483d8b','drawText','OFFSET_HEIGHT','contextmenu','updateCalculatedHeight','drawCenter','startEdit','selectRowsIng','desaturate','min','getColumns','isArray','offsetY','getBoundingClientRect','positionMenu','expandChange','getSelectionRows','initSearchData','large','TOOLTIP_BG_COLOR','getVirtualBodyCell','scrollX','getSvg','setBatchCalculatedRowHeight','SHRINK_ICON_COLOR','autoSize','apply','toHsl','b0e0e6','toLowerCase','batchSetItemValueByEditor','cellMouseleave','handleMouseover','ArrowUp','isDark','data-submenu','selectionClick','round','viewport','maxColRowCell','3424IdEYhq','active','setAttribute','drawAutofillPiont','setScrollX','mouseout','selectionchange','containerElement','setItemValue','name','hsl','clickCellHeader','rowKeyMap','parseFromString','[-\x5c+]?\x5cd*\x5c.\x5cd+%?','getReadonly','row-resize','some','mouseover','42CZhjwE','drawSelectionImageX','800080','#8a94a3','onMouseMove','focus','replace','stroke','onMouseUp','clearChangeData','fixedRightWidth','isHasChanged','Failed\x20to\x20get\x20the\x20clipboard\x20content:','drawY','rowHeightCache','handleMouseUp','b8860b','minWidth','hoverCell','rowIndex','drawTextFont','fontSize','scrollToColkey','selection','body','startAdjustPosition','marginRight','crossAxis','object','fill=\x22currentColor\x22\x20p-id=\x222015\x22','mouseY','adjustPositionY','editorProps','ffffe0','708090','updateEditor','initTextEditor','#4E5969','expandLoading','colIndex','setRowSelectionByParent','timerX','maxWidth','getSelectedData','fontWeight','originalDataMap','drawBg','show','getDocumentElement','defaults','drawSortImageHeight','batchSetItemValue','isRTL','domDataset','cellTarget','getChangedData','code','BODY_BG_COLOR','updateStyle','isInsideBody','default','sortDescIconName','DISABLED','cellMousedown','render','get','bindEvents','merge','onClick','setData','_submenu','drawTreeImageWidth','emit','views','no-results','vertical','canvas','cursor','doneEdit','autoRowHeight','selectAll','push','rowCount','barWidth','e-virt-table-loading-text','colspan','activeElement','shiftKey','fixedNone','disabled','offsetWidth','border','Placeholder','sort-asc','editorEl','visibleImages','row','align','getOverlayerViewsStyle','sort','col-resize','drawSortImageSource','mergeCoveredMap','handleSheet','rtl','off','navigatePrevious','svg','touchmove','selectable','Insert','rgb','middle','fontStyle','adjustPositionX','totalRows','arrowEl','after','665284mbDsba','absolute','break-all','f0f','floor','imageEnterAndLeave','index-selection','fixedLeftWidth','prototype','handleFooterEvent','querySelector','measureText','headIndex','drawFixedShadow','offset','0px','onTouchstart','Style','children','yArrCopy','Color','hasMergeCell','fixedRight','Loading','hoverCellHeader','configName','icon','pointer','ShadowRoot','paint','4333362latVxB','adjustMergeCells','trackHeight','handleResize','sheet-loading-dot','18px\x20Arial','updateContainer','checked','scrollTop','Merged\x20cells\x20cannot\x20span\x20paste\x20data','handleBodyEvent','clipboard','SORTABLE_ICON_SVG','number','colWidths','fillStyle','加载中...','isTarget','onlyMergeCell','right-end','checkboxKeyMap','change','hoverIconName','ENABLE_AUTO_THEME','008080','placement','observe','source','table-host','dragTarget','visibleColumns','headerMap','trackX','visibleHeight','display','getOffset','resizeColumnChange','ICON_SELECT_SVG','px,\x20','mousedown','cellHideTooltip','mousedownHeader','call','verticalScrollbar','init','getValidator','nextBtn','ArrowRight','inputEl','backState','ENABLE_FINDER','cut',':root{--evt-header-font:\x2012px\x20normal\x20Arial;--evt-body-font:\x2012px\x20normal\x20Arial;--evt-color-white:\x20#fff;--evt-color-black:\x20#000000;--evt-color-primary:\x20rgb(82,\x20146,\x20247);--evt-text-color-primary:\x20#333;--evt-text-color-regular:\x20#666;--evt-text-color-secondary:\x20#999;--evt-box-shadow:\x200\x202px\x2012px\x200\x20#0000001a;--evt-editor-bg-color:\x20#fff;--evt-editor-text-color:\x20#333;--evt-border-color:\x20#e1e6eb;--evt-body-bg-color:\x20#fff;--evt-stripe-color:\x20#fafafa;--evt-placeholder-color:\x20#cdd0dc;--evt-header-bg-color:\x20#f8faff;--evt-header-text-color:\x20#1d2129;--evt-body-text-color:\x20#4e5969;--evt-footer-text-color:\x20#4e5969;--evt-loading-icon-color:\x20#4e5969;--evt-expand-icon-color:\x20#4e5969;--evt-shrink-icon-color:\x20#4e5969;--evt-error-tip-icon-color:\x20red;--evt-required-color:\x20#f56c6c;--evt-cell-hover-icon-bg-color:\x20#fff;--evt-cell-hover-icon-border-color:\x20#dde0ea;--evt-scroller-color:\x20#dee0e3;--evt-scroller-track-color:\x20#fff;--evt-scroller-focus-color:\x20#bbbec4;--evt-select-border-color:\x20var(--evt-color-primary);--evt-select-area-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-select-row-col-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-autofill-point-border-color:\x20#fff;--evt-edit-bg-color:\x20#fcf6ed;--evt-checkbox-color:\x20var(--evt-color-primary);--evt-checkbox-uncheck-color:\x20#dde0ea;--evt-checkbox-disabled-color:\x20#f1f2f4;--evt-checkbox-check-disabled-color:\x20#dde0ea;--evt-icon-edit-color:\x20#4e5969;--evt-icon-select-color:\x20#4e5969;--evt-readonly-color:\x20#fff;--evt-readonly-text-color:\x20var(--evt-body-text-color);--evt-error-tip-color:\x20#ed3f14;--evt-footer-bg-color:\x20#fafafa;--evt-highlight-hover-row-color:\x20rgba(186,\x20203,\x20231,\x20.1);--evt-highlight-selected-row-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-tooltip-bg-color:\x20#303133;--evt-tooltip-text-color:\x20#fff;--evt-resize-row-line-color:\x20#e1e6eb;--evt-resize-column-text-color:\x20#fff;--evt-resize-column-text-bg-color:\x20var(--evt-color-primary);--evt-resize-column-line-color:\x20#e1e6eb;--evt-tree-line-color:\x20#e1e6eb;--evt-sort-icon-color:\x20var(--evt-color-primary);--evt-drag-tip-bg-color:\x20rgba(82,\x20146,\x20247,\x20.1);--evt-drag-tip-line-color:\x20var(--evt-color-primary);--evt-context-menu-min-width:\x20150px;--evt-context-menu-max-width:\x20220px;--evt-context-menu-item-padding:\x208px\x2012px;--evt-context-menu-bg-color:\x20#fff;--evt-context-menu-text-color:\x20#333;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#f5f5f5;--evt-context-menu-text-size:\x2013px}.dark{--evt-border-color:\x20#363637;--evt-header-bg-color:\x20#141414;--evt-body-bg-color:\x20#141414;--evt-header-text-color:\x20#a3a6ad;--evt-body-text-color:\x20#cfd3dc;--evt-readonly-text-color:\x20#cfd3dc;--evt-footer-text-color:\x20#cfd3dc;--evt-scroller-color:\x20#414243;--evt-scroller-track-color:\x20#141414;--evt-scroller-focus-color:\x20#a3a6ad;--evt-edit-bg-color:\x20#141414;--evt-footer-bg-color:\x20#262727;--evt-autofill-point-border-color:\x20#fff;--evt-editor-bg-color:\x20#434343;--evt-editor-text-color:\x20#cfd3dc;--evt-context-menu-bg-color:\x20#141414;--evt-context-menu-text-color:\x20#cfd3dc;--evt-context-menu-item-hover-text-color:\x20var(--evt-color-primary);--evt-context-menu-item-hover-bg-color:\x20#414243}.e-virt-table-container{position:relative;outline:none}.e-virt-table-stage{position:relative;overflow:hidden;outline:none;box-sizing:border-box;z-index:10;border-radius:8px;border:1px\x20solid\x20var(--evt-border-color)}.e-virt-table-canvas{position:absolute;left:0;top:0;box-sizing:border-box;background-color:var(--evt-body-bg-color);border:none;outline:none;z-index:10}.e-virt-table-editor{position:absolute;top:-10000px;left:-10000px;text-align:left;height:auto;line-height:0;z-index:100;overflow:hidden;background-color:var(--evt-editor-bg-color);border:2px\x20solid\x20var(--evt-color-primary);box-sizing:border-box;box-shadow:var(--evt-box-shadow);display:flex;align-items:center}.e-virt-table-overlayer{position:absolute;left:0;top:0;overflow:hidden;z-index:100;pointer-events:none}.e-virt-table-editor-textarea{width:100%;box-sizing:border-box;outline:none;font-weight:400;padding:8px;font-size:12px;color:inherit;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;line-height:1.5;margin:0;border:none;vertical-align:middle;background:var(--evt-editor-bg-color);color:var(--evt-editor-text-color);overflow-y:auto;resize:none}.e-virt-table-context-menu{position:absolute;font-size:14px;color:var(--evt-text-color-regular);background-color:var(--evt-color-white);border-radius:4px;border:1px\x20solid\x20#e4e7ed;box-shadow:var(--evt-box-shadow);width:fit-content;padding:6px\x200;z-index:9999;left:-99999px;top:-99999px}.e-virt-table-context-menu-item{cursor:pointer;padding:6px\x2024px;color:var(--evt-text-color-regular)}.e-virt-table-context-menu-item:hover{color:var(--evt-color-primary);background-color:#f5f7fa}.e-virt-table-loading{display:none;position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;z-index:2000;background-color:#fff6;display:flex;align-items:center;justify-content:center}.e-virt-table-loading-spinner{opacity:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.e-virt-table-loading-spinner\x20svg{color:var(--evt-text-color-regular);animation:rotate\x201s\x20linear\x20infinite}@keyframes\x20rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.e-virt-table-loading-text{margin:0;font-size:12px;color:var(--evt-text-color-regular)}.e-virt-table-main-menu,.e-virt-table-submenu{position:absolute;background:var(--evt-context-menu-bg-color);border-radius:4px;box-shadow:0\x202px\x208px\x20#0000001a;min-width:var(--evt-context-menu-min-width);max-width:var(--evt-context-menu-max-width);color:var(--evt-text-color-primary)}.e-virt-table-main-menu{border:1px\x20solid\x20var(--evt-border-color);z-index:3000;left:-99999px;top:-99999px;display:none;position:fixed;background-color:var(--evt-body-bg-color)}.e-virt-table-submenu{border:1px\x20solid\x20var(--evt-border-color);z-index:1000;max-height:350px;overflow-y:auto;opacity:0;visibility:hidden;transform:translate(-10px);transition:opacity\x20.2s,visibility\x20.2s,transform\x20.2s;-ms-overflow-style:none;scrollbar-width:none}.e-virt-table-submenu::-webkit-scrollbar{display:none}.e-virt-table-submenu.show{opacity:1;visibility:visible;transform:translate(0)}.e-virt-table-submenu:not(.show){transition:none}.e-virt-table-menu-item,.e-virt-table-submenu-item{position:relative;-webkit-user-select:none;user-select:none;padding:var(--evt-context-menu-item-padding);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background\x20.2s,color\x20.2s;color:var(--evt-context-menu-text-color);font-size:var(--evt-context-menu-text-size)}.e-virt-table-menu-item:last-child,.e-virt-table-submenu-item:last-child{border-bottom:none}.e-virt-table-menu-item:has(.e-virt-table-menu-item-icon){padding-left:8px}.e-virt-table-menu-item-content{display:flex;align-items:center;flex:1;min-width:0}.e-virt-table-menu-item-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;flex-shrink:0}.e-virt-table-menu-item-icon\x20svg{width:100%;height:100%;fill:currentColor}.e-virt-table-menu-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.e-virt-table-menu-arrow{display:inline-flex;align-items:center;justify-content:center;color:var(--evt-text-color-regular);transition:color\x20.2s}.e-virt-table-menu-arrow\x20svg{width:20px;height:20px;fill:currentColor}.e-virt-table-submenu-item:hover,.e-virt-table-menu-item:hover,.e-virt-table-menu-item.active{background:var(--evt-context-menu-item-hover-bg-color);color:var(--evt-context-menu-item-hover-text-color)}.e-virt-table-menu-item.disabled,.e-virt-table-submenu-item.disabled{cursor:not-allowed}.e-virt-table-finder-bar{position:absolute;top:8px;right:16px;display:none;z-index:10000;background:#fff;border:1px\x20solid\x20#dadce0;border-radius:12px;box-shadow:0\x202px\x206px\x20#0003;padding:0\x208px;height:48px;min-width:250px;align-items:center;font-size:12px}.e-virt-table-finder-bar.show{display:flex}.e-virt-table-finder-bar-input-wrapper{display:flex;align-items:center;flex:1;padding:0\x208px;position:relative}.e-virt-table-finder-bar-input{border:none;outline:none;flex:1;font-size:12px;background:transparent;color:#333;min-width:150px;padding-left:0;position:relative}.e-virt-table-finder-bar-nav{display:flex;flex-direction:row;gap:8px;margin:0\x208px;align-items:center}.e-virt-table-finder-bar-nav-btn{border:none;background:transparent;cursor:pointer;padding:0;color:#666;border-radius:50%;display:flex;align-items:center;justify-content:center}.e-virt-table-finder-bar-nav-btn\x20svg{width:24px;height:24px}.e-virt-table-finder-bar-nav-btn.prev-btn{transform:rotate(-90deg)}.e-virt-table-finder-bar-nav-btn.next-btn{transform:rotate(90deg)}.e-virt-table-finder-bar-nav-btn.close-btn{font-size:24px;color:#666;line-height:1;width:24px;height:24px}.e-virt-table-finder-bar-nav-btn:hover{color:#666;background-color:#f0f0f0}.e-virt-table-finder-bar-count{color:#666;font-size:12px;margin:0\x208px;white-space:nowrap;flex-shrink:0}.e-virt-table-finder-bar-count.no-results{color:#999}.e-virt-table-finder-bar-loading{display:none;position:absolute;left:8px;top:0;width:16px;height:16px;flex-shrink:0;pointer-events:none;z-index:0}.e-virt-table-finder-bar-loading.show{display:block}.e-virt-table-finder-bar-loading\x20svg{width:100%;height:100%;color:#666;animation:rotate\x201s\x20linear\x20infinite}.e-virt-table-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:14px;color:#666;z-index:15}','clearSelection','barHeight','drawSortImageY','fontFamily','yArr','scroll','581cWMJzS','selectCols','expand','resizeAllColumn','getValidations','BOTTOM','fff0f5','crosshair','column','-5px','77736ITHeZR','#e1e6eb','px)','isPointer','drawContainer','clearBufferData','hex3','updateCssVar','rgba(0,0,0,0)','SELECTOR_AREA_MIN_Y','drawLine','cellMouseup','setFilterMethod','columns','Assignment\x20failed,\x20not\x20a\x20numeric\x20type','black','progid:DXImageTransform.Microsoft.gradient(','fixed','hidden','ctrlKey','charAt','checkbox-check-disabled','value','selectionChange','正在准备「','renderLeafCellHeaders','createImageFromSVG','excel-wrapper','resizeDiff','clear','input','host','12px\x20Arial','right','loading','updateParentTreeSelection','getAttribute','ENABLE_COPY','setRowSelectionByCheckboxKey','none','pre-wrap','textBaseline','overflowTooltipShow','drawSelectionImageSource','mouseenter','footerData','100%','ENABLE_EDIT_CLICK_SELECTOR','789','fff5ee','808080','Source\x20node\x20not\x20found','hex6','toRgbString','parentKey','drawHoverImageName','drawSelectionImageName','emptyElement','createSubmenu','drawTreeImageSource','data-row-index','hex','RESIZE_COLUMN_LINE_COLOR','hasEvent','visibleCellMouseleave','level','rgba(0,0,0,0.1)','list','fff','663399','getText','sheetTabs','0/0','map','ENABLE_SELECTOR_SINGLE','auto','handleTouchend','visibleLeafColumns','classList','span','visibleWidth','ICON_SELECT_COLOR','prevBtn','drawTreeLine','strategy','createDocumentFragment','trim','cleanupSubmenuRecursively','getRowDataItemForRowKey','drawTextWidth','ICON_EDIT_COLOR','sort-desc','clientY','date','getCell','e-virt-table-editor-textarea','left','ENABLE_MERGE_CELL_LINK','isMouseoverTargetContainer','rowResizing','data-menu','stringify','ENABLE_HISTORY','restore','textCacheMap','currentDOMTreeMenu','mostReadable','boundMouseEnterHandler','intersectionRatio','preventDefault','string','text','button','forEach','formatter','validationErrorMap','getElementRects','dragStart','finding','resizeTarget','from','toString','editing','leafCellHeaders','toggleTreeSelection',')[,|\x5cs]+(','top','focusCellHeader','startEditByInput','footer','getData','mousemove','save','match','drawX','config','scrollToRowkey','maxColIndex','handleTouchmove','once','createObjectURL','convertOffsetParentRelativeRectToViewportRelativeRect','editor','borderBottom','rects','positions','SELECTOR_AREA_MAX_X_OFFSET','drawSelectionImageWidth','mouseup','searchResults','cd5c5c','visibleCellHoverChange','enable','BODY_FONT','ownerDocument','ENABLE_VALIDATOR_IMMEDIATE','<svg\x20t=\x221722595946663\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224865\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x22\x20p-id=\x224866\x22></path><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20fill=\x22#DDE0EA\x22\x20p-id=\x224867\x22></path></svg>','item','isComposing','italic\x20','scale','startRow','selectionEnd','toHex8String','getCheckedState','keydown','showLoading','eventBus','borderLeft','rows','#303133','mouseX','mergeStartMap','barX','bottom','database','onTouchmove','checkbox-uncheck','querySelectorAll','Backspace','drawTextColor','visualViewport','getTime','emptyEl','overflows','cellType','SHRINK_ICON_SVG','updateHoverIcon','handleEllipsis','horizontalScrollbar','offsetTop','HIGHLIGHT_SELECTED_ROW_COLOR','innerHTML','CHECKBOX_SIZE','ff1493','drawSortIcon','setValue','_applyCombination','detectOverflow','ff6347','empty','selectOnlyOne','adjustBoundaryPosition','isOnScrollbar','ENABLE_EDIT_SINGLE_CLICK','scrollY','noFixedCells','1px','calculateMaxTreeDepth','rowHeight','moveTo','149635gwmGTv','sortBy','cellHeaderMouseleave','image/svg+xml','e-virt-table-menu-item','error','concat','12px\x20normal\x20Arial','rgba(82,146,247,0.1)','stopAdjustPosition','pattern','getTreeChildren','addEventListener','normal','setMoveFocus','closest','rowHeights','floatingEl','selection-tree','currentIndex','copy','getColumnByKey','eventTable','buffer','a0522d','drawSortImageWidth','resizeNum','rowType','fdf5e6','drawBorder','clearSelected','ffe4e1','getRowForRowKey','then','bind','COLUMNS_VERTICAL_ALIGN','cacheTextKey','getUtils','add','CHECKBOX_UNCHECK_SVG','RIGHT','contains','updateCount','getContext','checkbox-check','start','10woZLVK','[data-menu]','containerRect','maxY','key','#495060','#bbbec4','filter','overflowTooltipHeaderShow','visible','font','setFocusCell','getAllRowsData','rowHoverChange','ENABLE_AUTOFILL_SPAN_COL','exec','scale(0.92)','drawTextX','isHasChangedData','centerCellHeaders','hasChildren','#fff','getSelection','domSelectionStr','renderFooter','ffe4b5','createLinearGradient','getDimensions','SELECT_AREA_COLOR','isBusy','verticalAlign','ff69b4','end','setValidationErrorByRowKey','required','getColumnByColIndex','right-start','ellipsis','contextMenuHide','dblclick','max','renderFooterType','selectRows','cells','displayText','keys','SELECT_BORDER_COLOR','offsetHeight','autofill','xArrCopy','loadingEl','floating','countEl','reduce','setItemValueByEditor','checkbox-disabled','handleMouseEvent','activeSubmenus','className','drawTreeImageY','sortState','setValidationError','rowFocusChange'];a=function(){return mE;};return a();}function Pl(p,r,u=[]){let w=0x0;const x=[];return p['forEach']((y,z)=>{const bz=b;if(z===0x0)x['push'](0x1);else{const C=u[bz(0x34d)]((E,F)=>''+E+(y[F]??''),'')||y[r],D=u['reduce']((E,F)=>''+E+(p[z-0x1][F]??''),'')||p[z-0x1][r];C===D?(x[w]+=0x1,x['push'](0x0)):(x['push'](0x1),w=z);}}),x;}function Hl(p,r){const bA=bn;let u='',w='';const x={};return r[bA(0x288)]((y,z)=>{const bB=bA;z===0x0?(u=y[bB(0x31c)],w=y['key'],x[y['key']]=0x1):p[y['key']]===p[u]?(x[y['key']]=0x0,x[w]+=0x1):(x[y['key']]=0x1,u=y['key'],w=y['key']);}),x;}function gs(p,r,u=[]){const {visibleRows:w,rowIndex:x,headIndex:y}=p,z=Pl(w,r,u);return z[x-y]===0x0?{'rowspan':0x0,'colspan':0x0,'relationRowKeys':u,'mergeRow':!0x0}:{'rowspan':z[x-y],'colspan':0x1,'relationRowKeys':u,'mergeRow':!0x0};}function Us(p,r=[]){const bC=bn,{column:u,row:w,visibleLeafColumns:x}=p,y=x['filter'](z=>r['includes'](z['key']));if(r['includes'](u['key'])){const z=Hl(w,y);return z[u[bC(0x31c)]]===0x0?{'rowspan':0x0,'colspan':0x0,'relationColKeys':r,'mergeCol':!0x0}:{'rowspan':0x1,'colspan':z[u['key']],'relationColKeys':r,'mergeCol':!0x0};}}function js(p,r=document[bn(0x383)]){const s=p['startsWith']('--')?p:'--'+p;return getComputedStyle(r)['getPropertyValue'](s)['trim']();}function ml(p){const bD=bn;if(!p)return new Date(0x0);if(typeof p=='number')return new Date(p);const r=String(p)['trim'](),u=new Date(r);if(!isNaN(u['getTime']()))return u;const w=[/^(\d{4})-(\d{1,2})-(\d{1,2})$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{4})(\d{2})(\d{2})$/,/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/];for(const x of w){const y=r['match'](x);if(y){const z=y['slice'](0x1)['map'](Number);if(x[bD(0x1ed)]['includes']('YYYY-MM-DD')||x['source']['includes']('YYYY/MM/DD')||x[bD(0x1ed)][bD(0xd4)]('YYYY.MM.DD')){const [C,D,E,F=0x0,G=0x0,K=0x0]=z;return new Date(C,D-0x1,E,F,G,K);}else{if(x['source']['includes']('DD-MM-YYYY')||x['source']['includes']('DD/MM/YYYY')||x['source']['includes']('DD.MM.YYYY')){const [L,M,N,O=0x0,Q=0x0,R=0x0]=z;return new Date(N,M-0x1,L,O,Q,R);}else{if(x['source']['includes']('MM-DD-YYYY')||x['source']['includes']('MM/DD/YYYY')||x['source'][bD(0xd4)]('MM.DD.YYYY')){const [S,T,U,V=0x0,W=0x0,X=0x0]=z;return new Date(U,S-0x1,T,V,W,X);}else{if(x['source']['includes']('YYYYMMDD')){const [Y,a0,a1]=z;return new Date(Y,a0-0x1,a1);}}}}}}return new Date(NaN);}function Es(p,r){const bE=bn,s=ml(p),u=ml(r);return isNaN(s[bE(0x2cd)]())&&isNaN(u['getTime']())?0x0:isNaN(s['getTime']())?-0x1:isNaN(u[bE(0x2cd)]())?0x1:s[bE(0x2cd)]()-u['getTime']();}class fl{constructor(p,r,u,w,x,y,z){const bF=bn;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,'fixed'),m(this,'cellType'),this['ctx']=p,this['x']=r,this['y']=u,this['width']=w,this['height']=x,this[bF(0x228)]=z,this['cellType']=y;}['isHorizontalVisible'](){if(this['fixed'])return!0x0;const {stageWidth:p,fixedLeftWidth:r,scrollX:u,fixedRightWidth:w}=this['ctx'],x=p;return!(this['x']+this['width']-r-u<=0x0||this['x']-u>=x-w);}['isVerticalVisible'](){const {stageHeight:p,scrollY:r}=this['ctx'],s=p;return!(this['y']+this['height']-r<=0x0||this['y']-r>=s);}['getDrawX'](){const bG=bn;if(this[bG(0x228)]===bG(0x277))return this['x'];if(this['fixed']==='right'){const {stageWidth:p,config:{SCROLLER_TRACK_SIZE:r}}=this['ctx'];return p-(this['ctx']['header']['width']-this['x'])-r;}return this['x']-this['ctx']['scrollX'];}['getDrawY'](){return this['cellType']==='header'?this['y']:this['cellType']==='footer'&&this['ctx']['config']['FOOTER_FIXED']?this['y']:this['y']-this['ctx']['scrollY'];}['getLeftFixedX'](){return this['x']-this['ctx']['scrollX'];}['getRightFixedX'](){}}class wt extends fl{constructor(p,r,u,w,x,y,z,C,D,E='body',F=!0x0){const bH=bn;super(p,w,x,y,z,E,C['fixed']),m(this,'formatter'),m(this,'formatterFooter'),m(this,bH(0x1e8),''),m(this,'operation',!0x1),m(this,'align'),m(this,'verticalAlign'),m(this,'fixed'),m(this,'type'),m(this,'editorType'),m(this,'editorProps'),m(this,'cellType'),m(this,bH(0x258)),m(this,'colspan',0x1),m(this,'rowspan',0x1),m(this,'mergeRow',!0x1),m(this,'mergeCol',!0x1),m(this,'relationRowKeys',[]),m(this,'relationColKeys',[]),m(this,'key'),m(this,'column'),m(this,bH(0x151)),m(this,bH(0x165)),m(this,'rowKey'),m(this,'row'),m(this,'value'),m(this,'render'),m(this,'renderFooter'),m(this,'style',{}),m(this,'domDataset',{}),m(this,'rules',[]),m(this,'message',''),m(this,bH(0x286),''),m(this,bH(0x344),''),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),m(this,'isHasChanged',!0x1),m(this,'drawX',0x0),m(this,'drawY',0x0),m(this,'drawCellBgColor',''),m(this,'drawCellSkyBgColor',''),m(this,'drawTextColor',''),m(this,'drawTextFont',''),m(this,bH(0x329),0x0),m(this,'drawTextY',0x0),m(this,bH(0x270),0x0),m(this,bH(0x38f),0x0),m(this,'drawTreeImageX',0x0),m(this,'drawTreeImageY',0x0),m(this,'drawTreeImageWidth',0x0),m(this,'drawTreeImageHeight',0x0),m(this,'drawTreeImageName',''),m(this,'drawTreeImageSource'),m(this,'drawSelectionImageX',0x0),m(this,'drawSelectionImageY',0x0),m(this,'drawSelectionImageWidth',0x0),m(this,'drawSelectionImageHeight',0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,'drawHoverImageX',0x0),m(this,'drawHoverImageY',0x0),m(this,'drawHoverImageWidth',0x0),m(this,'drawHoverImageHeight',0x0),m(this,'drawHoverImageName',''),m(this,'drawHoverImageSource'),m(this,bH(0x18d),!0x1),m(this,'calculatedHeight',0x0),m(this,'ellipsis',!0x1),m(this,'rowExpand',!0x1),m(this,'rowHasChildren',!0x1),m(this,'overflowTooltipShow',!0x0),m(this,'selectorCellValueType','value'),m(this,'overflowTooltipMaxWidth',0x1f4),m(this,'overflowTooltipPlacement','top'),m(this,'maxLineClamp','auto'),m(this,'renderType','default'),m(this,bH(0x341),'default'),this[bH(0x267)]=this[bH(0x3ef)],this['visibleHeight']=this['height'],this[bH(0x165)]=u,this[bH(0x151)]=r,this['key']=C['key'],this[bH(0x8e)]=C['type']||'',this['editorType']=C['editorType']||'text',this['selectorCellValueType']=C[bH(0xa5)]||this['ctx']['config']['SELECTOR_CELL_VALUE_TYPE']||'value',this['editorProps']=C['editorProps']||{},this['cellType']=E,this[bH(0x19f)]=C['align']||this[bH(0x372)]['config']['COLUMNS_ALIGN'],this['verticalAlign']=C['verticalAlign']||this['ctx']['config'][bH(0x30d)],this['fixed']=C['fixed']||'',this['level']=C['level']||0x0,this[bH(0x3b6)]=C['operation']||!0x1,this['column']=C,this['rules']=C['rules']||[],this['row']=D,this[bH(0x387)]=this['cellType']==='body'?this['ctx'][bH(0x2c6)]['getRowKeyForRowIndex'](r):this['cellType']+'_'+this[bH(0x151)],this[bH(0x22d)]=this['getValue'](),this['render']=C['render'],this['overflowTooltipShow']=C[bH(0x241)]!==!0x1,this['autoRowHeight']=C['autoRowHeight']!==void 0x0?C['autoRowHeight']:this['ctx']['config']['AUTO_ROW_HEIGHT'],this['overflowTooltipMaxWidth']=C['overflowTooltipMaxWidth']||0x1f4,this['overflowTooltipPlacement']=C['overflowTooltipPlacement']||bH(0x295),this['renderFooter']=C['renderFooter'],this['hoverIconName']=C['hoverIconName'],this[bH(0x289)]=C['formatter'],this['formatterFooter']=C['formatterFooter'],this['maxLineClamp']=C['maxLineClamp']||'auto',this['renderType']=C['renderType']||'default',this['renderFooterType']=C['renderFooterType']||'default',F&&this['update']();}['setWidthHeight'](p,r){this['width']=p,this['height']=r;}['getValidationMessage'](){const bI=bn,p=this['ctx']['database']['getValidationError'](this['rowKey'],this['key']);if(Array['isArray'](p)&&p[bI(0x3d0)]){const [r]=p;this['message']=r[bI(0xbe)]||'';}return this['message'];}['update'](){const bJ=bn;this['drawX']=this[bJ(0x98)](),this['drawY']=this['getDrawY'](),this['drawTextX']=this['drawX'],this['drawTextY']=this[bJ(0x14b)],this[bJ(0x149)]=this['ctx'][bJ(0x2c6)][bJ(0x32a)](this['rowKey'],this['key']),this['updateSpan'](),this['drawTextWidth']=this['visibleWidth'],this['drawTextHeight']=this['visibleHeight'],this['updateStyle'](),this[bJ(0xe7)](),this[bJ(0x2d2)](),this[bJ(0xa8)](),this['updateTree'](),this[bJ(0x161)](),this['updateRender'](),this['getValidationMessage'](),this['updateContainer'](),this[bJ(0x286)]=this['getText'](),this['displayText']=this['getDisplayText']();}['updateSpan'](){const bK=bn;if(this['cellType']==='footer')return;const {SPAN_METHOD:p}=this['ctx']['config'];if(typeof p==bK(0x403)){const r=p,{colspan:u=0x1,rowspan:w=0x1,relationRowKeys:x,relationColKeys:y,mergeRow:z=!0x1,mergeCol:C=!0x1}=r({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue'](),'headIndex':this['ctx']['body']['headIndex'],'headPosition':this['ctx']['database']['getPositionForRowIndex'](this['ctx']['body']['headIndex']),'visibleRows':this['ctx']['body']['visibleRows'],'visibleLeafColumns':this[bK(0x372)]['header']['visibleLeafColumns'],'rows':this[bK(0x372)]['body']['data']})||{};Array['isArray'](x)&&x['length']>0x0?this[bK(0x3f5)]=x:this['relationRowKeys']=[this['key']],Array['isArray'](y)&&y[bK(0x3d0)]>0x0?this['relationColKeys']=y:this['relationColKeys']=[this['key']],this['mergeCol']=C,this['mergeRow']=z,this['colspan']=u,this['rowspan']=w,this['visibleWidth']=this['getWidthByColIndexColSpan'](this['colIndex'],this['colspan']),this['visibleHeight']=this['ctx']['database']['getHeightByRowIndexRowSpan'](this['rowIndex'],this['rowspan']);}}['updateSpanInfo'](){const bL=bn;if(this['mergeRow']||this['mergeCol']){const p=this['getSpanInfo']();this[bL(0xfb)]=p['height'],this[bL(0x3ef)]=p['width'],this['drawX']=this['getDrawX'](),this['drawY']=this['getDrawY'](),this['drawY']-=p[bL(0x2d5)],this['drawX']-=p[bL(0xcb)];}}[bn(0xe7)](){const bM=bn,{BODY_CELL_TYPE_METHOD:p}=this['ctx']['config'];if(typeof p=='function'){const r=p({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this[bM(0x165)],'column':this['column'],'value':this['getValue']()});r!==void 0x0&&(this['type']=r);}}['updateEditor'](){const bN=bn,{BODY_CELL_EDITOR_METHOD:p}=this['ctx']['config'];if(typeof p=='function'){const r=p({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});if(r!==void 0x0){const {type:u,props:w={}}=r;this['editorType']=u,this[bN(0x15e)]=w;}}}['updateRender'](){const {BODY_CELL_RENDER_METHOD:p}=this['ctx']['config'];if(typeof p=='function'){const r=p({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});r!==void 0x0&&(this['render']=r);}}['validate'](){const bO=bn;this['ctx']['database'][bO(0x1ff)](this['rowKey'],this['key'])['then'](()=>{const bP=bO;this['ctx']['database']['setValidationError'](this['rowKey'],this[bP(0x31c)],[]),this['message']='';})['catch'](p=>{const bQ=bO;if(Array['isArray'](p)&&p[bQ(0x3d0)]){const [r]=p;this['message']=r['message'],this['ctx']['database'][bQ(0x355)](this[bQ(0x387)],this['key'],p);}})['finally'](()=>{this['ctx']['emit']('draw');});}[bn(0x178)](){const bR=bn;this['autoRowHeight']&&(this['domDataset']={'data-auto-height':!0x0,'data-row-index':this['rowIndex'],'data-col-index':this['colIndex']}),this[bR(0xf3)]=this[bR(0x1a0)]();}['updateTree'](){const bS=bn,{CELL_PADDING:r=0x0}=this['ctx']['config'],{rowKey:w,cellType:x}=this;let z,C=0x0,D='';if(!(['tree','selection-tree','tree-selection']['includes'](this['type'])&&x===bS(0x156)))return;const E=this['ctx']['database'][bS(0x30a)](w),{expand:F=!0x1,hasChildren:G=!0x1,expandLoading:K=!0x1,level:M=0x0}=E||{};this['rowExpand']=F,this['rowHasChildren']=G;const {TREE_INDENT:N=0x10,CHECKBOX_SIZE:O,TREE_ICON_SIZE:Q}=this[bS(0x372)]['config'];if(C=M*N,K){const a3=this['ctx']['icons']['get']('loading');D='loading',z=a3;}else{if(G){const a4=this['ctx']['icons']['get']('expand'),a5=this['ctx']['icons']['get'](bS(0x408));z=F?a5:a4,D=F?'shrink':bS(0x20f);}}let R=Q,U=Q,V=this['drawX'];(this[bS(0x19f)]==='center'||this['align']==='right')&&(V=this['drawX']+(this['visibleWidth']-R-0x2*r)/0x2,this[bS(0x19f)]='left');let a0=V+C+r,a1=this['drawY']+(this['visibleHeight']-U)/0x2,a2=C+this['drawX']+R-0.5;this['type']==='selection-tree'?(a0=C+this['drawSelectionImageX']+this['drawSelectionImageWidth'],a2=a0+R-r/0x2):this['type']==='tree-selection'?a2=a0+O+R-r/0x2:a2=a0+R-r/0x2,this['drawTextX']=a2,this[bS(0x270)]=this['drawX']+this['visibleWidth']-a2,!(a0+R+r>this['drawX']+this['visibleWidth'])&&(a1+U+r>this['drawY']+this['visibleHeight']||(this['drawTreeImageX']=a0,this['drawTreeImageY']=a1,this['drawTreeImageWidth']=R,this['drawTreeImageHeight']=U,z?(this['drawTreeImageName']=D,this[bS(0x252)]=z):(this['drawTreeImageName']='',this['drawTreeImageSource']=void 0x0)));}[bn(0x26a)](){const bT=bn,{TREE_LINE:p,TREE_INDENT:r=0x10,TREE_ICON_SIZE:u=0x10,TREE_LINE_COLOR:w=bT(0x218)}=this['ctx']['config'];if(!p||this['cellType']!=='body'||!['tree',bT(0x2fc),'tree-selection'][bT(0xd4)](this['type'])||this[bT(0xb8)]===0x0||this[bT(0x193)]===0x0)return;const x=this['ctx']['database'][bT(0x30a)](this['rowKey'])||{},z=x['level']??0x0,C=this['drawTreeImageX']+this['drawTreeImageWidth']/0x2,D=this['drawTreeImageY']+this['drawTreeImageHeight']/0x2;let E=this['drawTreeImageX']-z*r;const F=Array['isArray'](x['parentRowKeys'])?x['parentRowKeys']:[];if(z>0x0){for(let M=0x0;M<z-0x1;M+=0x1){const N=F[M+0x1];if((N?this['ctx']['database']['getRowForRowKey'](N)||{}:{})['isLastChild'])continue;const O=Math['round'](this['drawTreeImageX']-(z-M)*r+u/0x2);this['ctx']['paint']['drawLine']([O,this['drawY'],O,this['drawY']+this['visibleHeight']],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}const G=Math['round'](this['drawTreeImageX']-r+u/0x2),K=x['isLastChild']?D:this['drawY']+this['visibleHeight'];this['ctx'][bT(0x1d1)]['drawLine']([G,this['drawY'],G,K],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});const L=Math['round'](E+(z-0x1)*r+u/0x2);this[bT(0x372)]['paint']['drawLine']([L,D,C,D],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}if(x['hasChildren']&&x['expand']){const Q=this['drawTreeImageY']+this['drawTreeImageHeight'],R=this['drawY']+this['visibleHeight'];this['ctx']['paint']['drawLine']([C,Q,C,R],{'borderColor':w,'borderWidth':0x1,'lineDash':[0x4,0x4],'lineDashOffset':0x0});}}[bn(0x1d8)](){const bU=bn,{BODY_BG_COLOR:w,EDIT_BG_COLOR:x,BODY_CELL_STYLE_METHOD:D,FOOTER_CELL_STYLE_METHOD:G,READONLY_TEXT_COLOR:N,BODY_TEXT_COLOR:O,FOOTER_TEXT_COLOR:Q,FOOTER_BG_COLOR:U,HIGHLIGHT_SELECTED_ROW:a0,HIGHLIGHT_SELECTED_ROW_COLOR:a1,HIGHLIGHT_HOVER_ROW:a2,HIGHLIGHT_HOVER_ROW_COLOR:a3,STRIPE:a4,STRIPE_COLOR:a5,FINDER_CELL_BG_COLOR:a6}=this[bU(0x372)]['config'];if(this[bU(0x2d0)]===bU(0x298)){let aj=U,ak=Q;if(typeof G=='function'){const am=G,{backgroundColor:an,color:ao,font:ap}=am({'row':this[bU(0x19e)],'rowIndex':this['rowIndex'],'colIndex':this[bU(0x165)],'column':this['column'],'value':this[bU(0x392)]()})||{};an&&(aj=an),ao&&(ak=ao),ap&&(this['drawTextFont']=ap);}this['drawCellSkyBgColor']='transparent',this['drawCellBgColor']=aj,this['drawTextColor']=ak;return;}let a7='transparent';const a8=this['ctx']['hoverCell'],a9=this['ctx']['currentCell'];let aa=this['rowIndex'],ab=this[bU(0x151)];if(this['rowspan']!==0x1&&(a2||a0)){const aq=this['getSpanInfo'](),{yArr:ar}=aq;aa=ar[0x0],ab=ar[0x1];}a2&&a8&&(a8['rowKey']===this['rowKey']&&(a7=a3),a8['rowIndex']>=aa&&a8['rowIndex']<=ab&&(a7=a3)),a0&&a9&&(a9['rowKey']===this['rowKey']&&(a7=a1),a9['rowIndex']>=aa&&a9['rowIndex']<=ab&&(a7=a1)),this['drawCellSkyBgColor']=a7;let ad=w,ae=O;if(this[bU(0x372)]['database'][bU(0x13a)](this['rowKey'],this['key'])||(ad=x,ae=N),a4&&(this['rowIndex']%0x2?ad=a5:ad=w),typeof D==bU(0x403)){const au=D,{backgroundColor:av,color:aw,font:ax}=au({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'isHasChanged':this['isHasChanged'],'value':this['getValue']()})||{};av&&(ad=av),aw&&(ae=aw),ax&&(this['drawTextFont']=ax);}const {rowIndex:af,colIndex:ag,type:ai}=this['ctx']['finderBar'];af===this['rowIndex']&&ag===this[bU(0x165)]&&ai==='body'&&(ad=a6),this['drawCellBgColor']=ad,this[bU(0x2cb)]=ae;}['updateSelection'](){const bV=bn,{visibleWidth:r,visibleHeight:w,rowspan:x,colspan:z,cellType:C,type:D,rowIndex:E,rowKey:F}=this;if(x===0x0||z===0x0||C===bV(0x298)||![bV(0x1ba),bV(0x155),'selection-tree','tree-selection'][bV(0xd4)](D))return;const G=this['ctx'][bV(0x2c6)]['getRowSelectable'](F),{CHECKBOX_SIZE:K=0x0,CELL_PADDING:M}=this['ctx']['config'];let N=this['drawX']+M;(this[bV(0x19f)]==='center'||this['align']==='right')&&(N=this['drawX']+(r-K)/0x2);let O=N,Q=this[bV(0x14b)]+(w-K)/0x2;if(D!=='selection-tree'&&D==='tree-selection'){const {TREE_INDENT:U=0x10,TREE_ICON_SIZE:V}=this['ctx']['config'],a0=this['ctx']['database']['getRowForRowKey'](F),{level:a1=0x0}=a0||{},a2=a1*U;O=N+V+a2;}let R=this['ctx']['icons']['get']('checkbox-uncheck'),T='checkbox-uncheck';if(D==='selection-tree'||D==='tree-selection'){const a3=this['ctx'][bV(0x2c6)]['getTreeSelectionState'](F);a3['indeterminate']&&G?(R=this['ctx']['icons']['get']('checkbox-indeterminate'),T='checkbox-indeterminate'):a3['checked']&&G?(R=this[bV(0x372)]['icons']['get']('checkbox-check'),T='checkbox-check'):!a3['checked']&&G?(R=this['ctx'][bV(0xcd)]['get']('checkbox-uncheck'),T='checkbox-uncheck'):(R=this['ctx']['icons']['get']('checkbox-disabled'),T=bV(0x34f));}else{const a4=this['ctx']['database']['getRowSelection'](F);a4&&G?(R=this['ctx']['icons']['get']('checkbox-check'),T='checkbox-check'):a4&&!G?(R=this['ctx']['icons']['get']('checkbox-check-disabled'),T='checkbox-check-disabled'):!a4&&G?(R=this['ctx']['icons']['get']('checkbox-uncheck'),T='checkbox-uncheck'):(R=this['ctx']['icons'][bV(0x17f)]('checkbox-disabled'),T='checkbox-disabled');}O+K+M>this['drawX']+this['visibleWidth']||Q+K+M>this['drawY']+this['visibleHeight']||(D==='index-selection'?(this[bV(0x372)]['hoverCell']&&this['ctx']['hoverCell']['rowIndex']===E||['checkbox-disabled','checkbox-check']['includes'](T))&&(this['drawSelectionImageX']=O,this[bV(0x3a2)]=Q,this['drawSelectionImageWidth']=K,this['drawSelectionImageHeight']=K,this['drawSelectionImageName']=T,this[bV(0x242)]=R):(this[bV(0x13f)]=O,this['drawSelectionImageY']=Q,this[bV(0x2aa)]=K,this['drawSelectionImageHeight']=K,this['drawSelectionImageName']=T,this['drawSelectionImageSource']=R));}['updateHoverIcon'](){const bW=bn;if(this['ctx']['database']['getReadonly'](this['rowKey'],this['key']))return;const {BODY_CELL_HOVER_ICON_METHOD:p,CELL_HOVER_ICON_SIZE:r,CELL_PADDING:u,ENABLE_MERGE_CELL_LINK:w}=this[bW(0x372)]['config'];if(typeof p==bW(0x403)){const z=p({'row':this[bW(0x19e)],'rowIndex':this['rowIndex'],'colIndex':this['colIndex'],'column':this['column'],'value':this['getValue']()});z!==void 0x0&&(this['hoverIconName']=z);}const {hoverCell:x}=this[bW(0x372)];if(this['hoverIconName']&&!this['ctx']['editing']&&x){let C=0x0,D=0x0;if(x['rowKey']===this['rowKey']&&(C=this['drawX']+this['width']-r-u,D=this['drawY']+(this[bW(0xfb)]-r)/0x2),this['rowspan']!==0x1&&w){const F=this['getSpanInfo'](),{yArr:G}=F,K=G[0x0],L=G[0x1];if(x['rowIndex']>=K&&x[bW(0x151)]<=L){const {width:M,height:N,offsetTop:O,offsetLeft:Q}=F;C=this['drawX']-Q+M-r-u,D=this['drawY']-O+(N-r)/0x2;}}const E=this['ctx']['icons']['get'](this['hoverIconName']);this['drawHoverImageX']=C,this['drawHoverImageY']=D,this['drawHoverImageWidth']=r,this['drawHoverImageHeight']=r,this[bW(0x24e)]=this['hoverIconName'],this['drawHoverImageSource']=E;}}['getAutoHeight'](){const bX=bn;if(this['cellType']!==bX(0x156)||!this['autoRowHeight']||this['rowspan']===0x0)return 0x0;if(this['render']){const y=this[bX(0x372)]['database']['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);return this['rowspan']>0x1?y<this[bX(0x1f3)]?0x0:Math[bX(0x128)](y-(this['visibleHeight']-this[bX(0xfb)])):Math['round'](y);}if(!(this['displayText']&&typeof this['displayText']=='string'))return 0x0;const {BODY_FONT:p,CELL_PADDING:r,CELL_LINE_HEIGHT:u}=this['ctx']['config'],w=this['displayText']+'_'+this['drawTextWidth']+'_'+this[bX(0x152)],x=this[bX(0x372)][bX(0x1d1)]['calculateTextHeight'](this['displayText'],this['drawTextWidth'],{'font':this['drawTextFont']||p,'padding':r,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':this['drawTextColor'],'autoRowHeight':this['autoRowHeight'],'lineHeight':u,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':w});return this[bX(0xb8)]>0x1?x<this['visibleHeight']?0x0:Math['round'](x-(this[bX(0x1f3)]-this[bX(0xfb)])):Math[bX(0x128)](x);}['getSpanInfo'](){const bY=bn;return this[bY(0x372)]['database']['getSpanInfo'](this);}['getDisplayText'](){const bZ=bn;return this['cellType']==='footer'?this[bZ(0x330)]&&this['renderFooterType']==='default'||this['text']===null||this['text']===void 0x0?'':this['text']:this['rowspan']===0x0||this['colspan']===0x0||this['render']&&this['renderType']==='default'||this['type']===bZ(0x1ba)&&(this['ctx']['hoverCell']&&this['ctx']['hoverCell']['rowIndex']===this['rowIndex']||['checkbox-disabled',bZ(0x316)]['includes'](this['drawSelectionImageName']))||this['text']===null||this['text']===void 0x0?'':''+this[bZ(0x286)];}['getText'](){const c0=bn;if(this['cellType']===c0(0x298))return typeof this['formatterFooter']=='function'?this['formatterFooter']({'row':this[c0(0x19e)],'rowIndex':this[c0(0x151)],'colIndex':this['colIndex'],'column':this['column'],'value':this['row'][this[c0(0x31c)]]}):this['row'][this[c0(0x31c)]];if(typeof this['formatter']=='function')return this['formatter']({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this[c0(0x165)],'column':this['column'],'value':this['getValue']()});const {BODY_CELL_FORMATTER_METHOD:p}=this[c0(0x372)]['config'];return typeof p==c0(0x403)?p({'row':this['row'],'rowIndex':this['rowIndex'],'colIndex':this[c0(0x165)],'column':this['column'],'value':this[c0(0x392)]()}):['index-selection','index']['includes'](this[c0(0x8e)])?''+(this[c0(0x151)]+0x1):(this[c0(0x22d)]=this['ctx']['database']['getItemValue'](this['rowKey'],this[c0(0x31c)]),this['value']);}['getValue'](){const c1=bn;return this['ctx'][c1(0x2c6)][c1(0xa3)](this['rowKey'],this[c1(0x31c)]);}[bn(0x2db)](p){const c2=bn;this['ctx']['setItemValueByEditor'](this['rowKey'],this[c2(0x31c)],p);}['getOverlayerViewsStyle'](){const c3=bn;let p=this['drawX']-this['ctx']['fixedLeftWidth'],r=this['drawY']-this['ctx']['body']['y'];if(this[c3(0x228)]==='left'?p=this['drawX']:this['fixed']==='right'&&(p=this[c3(0x29d)]-(this['ctx']['stageWidth']-this['ctx']['fixedRightWidth'])),this['cellType']===c3(0x298)&&this['ctx']['config']['FOOTER_FIXED']&&(r=this['drawY']-this['ctx']['footer']['y']),this[c3(0x18d)]&&this['render']&&this['verticalAlign']==='middle'){const w=this['ctx']['database']['getOverlayerAutoHeight'](this['rowIndex'],this['colIndex']);if(w<this['visibleHeight']&&w>0x0){const x=(this['visibleHeight']-w)/0x2;r=r+x;}}this[c3(0x18d)]&&this['ctx'][c3(0x2c6)]['getOverlayerAutoHeight'](this['rowIndex'],this[c3(0x165)])===0x0&&(p=-0x1869f,r=-0x1869f);let u={};return this['rowspan']===0x0&&(u={'display':'none'}),{'position':'absolute','overflow':'hidden','left':Math['round'](p-0x1)+'px','top':Math['round'](r-0x1)+'px','width':this['visibleWidth']+'px','height':this['autoRowHeight']&&this['renderType']==='default'?'auto':this['visibleHeight']+'px','pointerEvents':'initial','userSelect':c3(0x23e),...u};}[bn(0x21b)](){const c4=bn,{paint:p,config:{BORDER_COLOR:r,BORDER:u}}=this['ctx'],{drawX:w,drawY:x}=this;p['drawRect'](w,x,this[c4(0x267)],this['visibleHeight'],{'borderColor':u?r:'transparent','fillColor':this['drawCellBgColor']}),p['drawRect'](w,x,this['width'],this[c4(0xfb)],{'borderColor':'transparent','fillColor':this['drawCellSkyBgColor']}),u||this['ctx'][c4(0x1d1)]['drawLine']([w,x+this['visibleHeight'],w+this['visibleWidth'],x+this['visibleHeight']],{'borderColor':r,'fillColor':r,'borderWidth':0x1,'lineCap':c4(0x128),'lineJoin':'round'});}[bn(0x12e)](){const c5=bn;if(this['cellType']==='footer')return;const {SELECT_BORDER_COLOR:p,ENABLE_AUTOFILL:r,ENABLE_SELECTOR:u,AUTOFILL_POINT_BORDER_COLOR:w}=this['ctx']['config'];if(!u||!r||this['ctx']['editing'])return;const {xArr:x,yArr:y}=this['ctx'][c5(0xf1)],z=x[0x1],C=y[0x1],{colIndex:D,rowIndex:E,drawX:F,drawY:G}=this;if(D===z&&E===C){const K=D===this['ctx'][c5(0x2a0)]||E===this['ctx']['maxRowIndex']||D===this['ctx']['lastCenterColIndex']?0x6:0x4;this['ctx']['paint']['drawRect'](F+this[c5(0x3ef)]-K,G+this['height']-K,0x6,0x6,{'borderColor':w,'fillColor':p});}}['draw'](){const c6=bn;this['drawTreeLine'](),this[c6(0x104)](),this['drawImage'](),this['drawSelector'](),this[c6(0x12e)](),this['drawErrorTip']();}['getWidthByColIndexColSpan'](p,r){if(r===0x0)return 0x0;let u=0x0;for(let w=p;w<p+r;w++){const x=this['ctx']['header']['leafCellHeaders'][w];u+=x['width'];}return u;}[bn(0x104)](){const c7=bn,{CELL_PADDING:p,BODY_FONT:r,PLACEHOLDER_COLOR:u,CELL_LINE_HEIGHT:w}=this['ctx']['config'],{placeholder:x}=this['column'];let y=this[c7(0x344)],z=this['drawTextColor'];if(!this['ctx'][c7(0x2c6)][c7(0x13a)](this['rowKey'],this['key'])&&x&&['',null,void 0x0]['includes'](this['text'])&&this['cellType']==='body'&&!(this['rowspan']===0x0||this['colspan']===0x0)&&(y=x,z=u),['',null,void 0x0]['includes'](y))return!0x1;typeof y!=c7(0x285)&&(y=''+y);const C=y+'_'+this['drawTextWidth']+'_'+this[c7(0x152)];return this['ellipsis']=this['ctx']['paint']['drawText'](y,this['drawTextX'],this['drawTextY'],this[c7(0x270)],this['drawTextHeight'],{'font':this['drawTextFont']||r,'padding':p,'align':this['align'],'verticalAlign':this['verticalAlign'],'color':z,'autoRowHeight':this['autoRowHeight'],'lineHeight':w,'maxLineClamp':this['maxLineClamp'],'cacheTextKey':C}),this['ellipsis'];}['drawImage'](){const c8=bn;if(this[c8(0x242)]&&this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this['drawSelectionImageY'],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']),this['drawTreeImageSource']&&this['ctx']['paint']['drawImage'](this['drawTreeImageSource'],this['drawTreeImageX'],this['drawTreeImageY'],this[c8(0x185)],this[c8(0x40b)]),this['drawHoverImageSource']){const {CELL_HOVER_ICON_BG_COLOR:p,CELL_HOVER_ICON_BORDER_COLOR:r}=this['ctx']['config'];this['ctx'][c8(0x1d1)]['drawRect'](this['drawHoverImageX']-0x2,this['drawHoverImageY']-0x2,this[c8(0xc7)]+0x4,this['drawHoverImageHeight']+0x4,{'borderColor':r,'radius':0x4,'borderWidth':0x1,'fillColor':p}),this['ctx']['paint']['drawImage'](this['drawHoverImageSource'],this[c8(0x374)],this['drawHoverImageY'],this['drawHoverImageWidth'],this['drawHoverImageHeight']);}}['drawSelector'](){const c9=bn;if(this['cellType']==='footer')return;const {ENABLE_SELECTOR:p}=this[c9(0x372)]['config'];if(!p)return;const {xArr:r,yArr:u,xArrCopy:w,yArrCopy:x}=this['ctx']['selector'];this[c9(0x307)]({'xArr':w,'yArr':x,'borderColor':this[c9(0x372)]['config']['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this[c9(0x307)]({'xArr':this['ctx'][c9(0x348)][c9(0x9d)],'yArr':this['ctx']['autofill'][c9(0x20b)],'borderColor':this['ctx'][c9(0x29e)]['SELECT_BORDER_COLOR']||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1,'lineDash':[0x4,0x4]}),this['drawBorder']({'xArr':r,'yArr':u,'borderColor':this['ctx']['config'][c9(0x346)]||'rgb(82,146,247)','fillColor':'transparent','borderWidth':0x1});const [y,z]=r,[C,D]=u;!(y===z&&C===D)&&this['colIndex']>=y&&this['colIndex']<=z&&this['rowIndex']>=C&&this['rowIndex']<=D&&this['ctx']['paint']['drawRect'](this['drawX'],this['drawY'],this[c9(0x3ef)],this['height'],{'borderColor':c9(0x3d1),'fillColor':this['ctx']['config'][c9(0x334)]||'rgba(82,146,247,0.1)'}),this[c9(0x3b6)]&&this['rowIndex']>=C&&this[c9(0x151)]<=D&&this['ctx']['paint']['drawRect'](this['drawX'],this[c9(0x14b)],this['visibleWidth'],this['visibleHeight'],{'borderColor':'transparent','fillColor':this['ctx']['config']['SELECT_ROW_COL_BG_COLOR']||'transparent'});}[bn(0xbf)](){const ca=bn;if(this['cellType']==='footer'||!this['message']||this['rowspan']===0x0||this['colspan']===0x0)return;const {ERROR_TIP_ICON_SIZE:p,ERROR_TIP_COLOR:r}=this['ctx']['config'],{width:u}=this,w=this[ca(0x29d)],x=this['drawY'],y=[w+u-p-0.5,x,w+u-0.5,x,w+u-0.5,x+p];this[ca(0x372)]['paint']['drawLine'](y,{'borderColor':r,'fillColor':r,'borderWidth':0x1,'lineCap':'round','lineJoin':'round'});}[bn(0x307)](r){const cb=bn,{drawX:w,drawY:x,rowIndex:z,colIndex:C,height:D,width:E}=this;let F=w,G=x;const {xArr:K,yArr:M,lineDash:N=[],borderWidth:O=0x1,borderColor:Q,fillColor:R}=r,T=K[0x0],U=K[0x1],V=M[0x0],a0=M[0x1];if(C>=T&&C<=U&&z===V){const a1=C===U?0x1:0x0,a2=C===T?0x1:0x0;this['ctx']['paint']['drawLine']([F+a2,G+0x1,F+E-a1,G+0x1],{'borderColor':Q,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(C===U&&z>=V&&z<=a0){const a3=z===V?0x1:0x0,a4=z===a0?0x1:0x0;this['ctx']['paint']['drawLine']([F+E-0x1,G+a3,F+E-0x1,G+D-a4],{'borderColor':Q,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}if(C>=T&&C<=U&&z===a0){const a5=C===U?0x1:0x0,a6=C===T?0x1:0x0;this['ctx'][cb(0x1d1)]['drawLine']([F+a6,G+D-0x1,F+E-a5,G+D-0x1],{'borderColor':Q,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':cb(0x128),'lineDash':N});}if(C===T&&z>=V&&z<=a0){const a7=z===a0?0x1:0x0,a8=z===V?0x1:0x0;this['ctx']['paint'][cb(0x221)]([F+0x1,G+a8,F+0x1,G+D-a7],{'borderColor':Q,'fillColor':R,'borderWidth':O,'lineCap':'round','lineJoin':'round','lineDash':N});}}}class ks{constructor(p,r){const cd=bn;m(this,cd(0x372)),m(this,'data'),m(this,'columns'),m(this,'footerData',[]),m(this,'rowKeyMap',new Map()),m(this,'colIndexKeyMap',new Map()),m(this,cd(0x1f1),new Map()),m(this,'rowIndexRowKeyMap',new Map()),m(this,'rowKeyRowIndexMap',new Map()),m(this,'checkboxKeyMap',new Map()),m(this,'selectionMap',new Map()),m(this,'expandMap',new Map()),m(this,'originalDataMap',new Map()),m(this,'changedDataMap',new Map()),m(this,'validationErrorMap',new Map()),m(this,'itemRowKeyMap',new WeakMap()),m(this,'bufferData',[]),m(this,'customHeader',{'fixedData':{},'sortData':{},'hideData':{},'resizableData':{}}),m(this,'overlayerAutoHeightMap',new Map()),m(this,'maxRowHeightCellMap',new Map()),m(this,'bufferCheckState',{'buffer':!0x1,'check':!0x1,'indeterminate':!0x1,'selectable':!0x0}),m(this,cd(0x370),0x0),m(this,'filterMethod'),m(this,'positions',[]),m(this,cd(0x354),new Map()),this['ctx']=p;const {data:u=[],columns:w=[],footerData:x=[]}=r;this['data']=u,this['footerData']=x,this['columns']=w,this['init']();}['init'](p=!0x0){const cf=bn;this['ctx']['paint'][cf(0x3df)](),this['clearBufferData'](),this['rowKeyMap']['clear'](),this['checkboxKeyMap']['clear'](),this['colIndexKeyMap'][cf(0x234)](),this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear'](),this['maxRowHeightCellMap'][cf(0x234)]();const r=this['getColumns'](),u=Ki(r);if(this['ctx']['hasSelection']=u[cf(0x13c)](w=>w['type']==='selection'),this['ctx']['hasTree']=u['some'](w=>w['type']==='tree'),p){this['originalDataMap']['clear'](),this['changedDataMap']['clear'](),this['validationErrorMap']['clear']();const {ROW_KEY:w}=this['ctx'][cf(0x29e)];w?(this['ctx']['hasSelection']||this['selectionMap']['clear'](),this['ctx']['hasTree']||this['expandMap']['clear']()):(this['selectionMap']['clear'](),this['expandMap'][cf(0x234)]());}this['itemRowKeyMap']=new WeakMap(),this['initData'](this['data']),this['getData'](),this['bufferCheckState']['buffer']=!0x1;}[bn(0x21c)](){this['bufferData']=[];}['initData'](p,r=0x0,u=[]){const w=p['length'],{ROW_KEY:x='',DEFAULT_EXPAND_ALL:y,CELL_HEIGHT:z,SELECTABLE_METHOD:C,CHECKBOX_KEY:D,TREE_CHILDREN_KEY:E}=this['ctx']['config'];p['forEach']((F,G)=>{const cg=b;var K;E!=='children'&&(F['children']=F[E]);const M=F[x],N=M!=null?''+M:Ol();this['itemRowKeyMap']['set'](F,N);const O=F[cg(0x36b)]||z,Q=F['_readonly'];let R=!0x0;if(typeof C==cg(0x403)&&(R=C),D){const U=F[D];if(this['checkboxKeyMap']['has'](U)){const V=this['checkboxKeyMap']['get'](U)||[];V[cg(0x18f)](N),this['checkboxKeyMap']['set'](U,V);}else this[cg(0x1e6)]['set'](U,[N]);}this[cg(0x35d)]['set'](N,{'key':D?F[D]:N,'row':F,'check':((K=this['selectionMap'][cg(0x17f)](N))==null?void 0x0:K[cg(0x375)])||!0x1});const T=y||this['expandMap']['get'](N)||F['_expand']||!0x1;this['expandMap']['set'](N,T),this['rowKeyMap']['set'](N,{'readonly':Q,'index':G,'rowIndex':G,'level':r,'height':O,'calculatedHeight':-0x1,'check':!0x1,'selectable':R,'expand':T,'expandLazy':!0x1,'hasChildren':F['_hasChildren']||(Array['isArray'](F['children'])?F['children']['length']>0x0:!0x1),'expandLoading':!0x1,'item':F,'parentRowKeys':u,'parentRowKey':u[u[cg(0x3d0)]-0x1]||'','isLastChild':G===w-0x1}),Array[cg(0x10e)](F['children'])&&F['children']['length']&&this[cg(0xf6)](F['children'],r+0x1,[...u,N]);});}['setRowHeight'](p,r){const cj=bn,u=this['rowIndexRowKeyMap'][cj(0x17f)](p);if(u===void 0x0)return;const w=this['rowKeyMap']['get'](u);w['height']=r,w['item']['_height']=r,this['clearBufferData']();}['setBatchRowHeight'](p){p['forEach'](({rowIndex:r,height:u})=>{const ck=b,w=this['rowIndexRowKeyMap']['get'](r);if(w){const x=this[ck(0x137)]['get'](w);x['height']=u,x['item']['_height']=u;}}),this['clearBufferData']();}[bn(0x11a)](p){const cl=bn;return p['every'](({height:r,rowIndex:s})=>this['getPositionForRowIndex'](s)[cl(0x376)]===r)?!0x1:(p['forEach'](({rowIndex:r,height:u})=>{const w=this['rowIndexRowKeyMap']['get'](r);if(w){const x=this['rowKeyMap']['get'](w),{height:y=-0x1}=this['getMaxRowHeightItem'](w)||{};x['calculatedHeight']=Math['max'](u,y);}}),this['clearBufferData'](),this[cl(0x299)](),!0x0);}[bn(0x324)](){let p=[];const r=s=>{s['forEach'](u=>{const cm=b;p['push'](u),Array[cm(0x10e)](u['children'])&&r(u['children']);});};return r(this['data']),p;}['generateColumns'](p){const r=s=>s['map'](u=>{const cn=b;var w,x,z,C,D,E,F,G;const K=u['children']&&Array['isArray'](u['children'])?r(u[cn(0x1c6)]):void 0x0,L={'hide':(x=(w=this['customHeader'])==null?void 0x0:w['hideData'])==null?void 0x0:x[u[cn(0x31c)]],'fixed':(C=(z=this[cn(0x3e5)])==null?void 0x0:z['fixedData'])==null?void 0x0:C[u['key']],'sort':(E=(D=this['customHeader'])==null?void 0x0:D['sortData'])==null?void 0x0:E[u['key']],'width':(G=(F=this['customHeader'])==null?void 0x0:F['resizableData'])==null?void 0x0:G[u[cn(0x31c)]]},M={};for(const [O,Q]of Object['entries'](L))Q!==void 0x0&&(M[O]=Q);const N=K&&K['every'](R=>R['hide']);return{...u,'children':K,'hide':N||(typeof u['hide']=='function'?u['hide'](u):u['hide']),...M};});return r(p);}['getColumns'](){return this['generateColumns'](this['columns']);}['setColumns'](p){const co=bn;this['columns']=p,this[co(0x21c)]();}['setData'](p){const cp=bn;this['data']=p,this[cp(0x1fe)]();}['getData'](){const cq=bn;if(this['bufferData']['length']>0x0)return{'data':this['bufferData'],'sumHeight':this['sumHeight'],'positions':this['positions']};let p=[],r=0x0;this[cq(0x370)]=0x0,this['positions']=[];const u=x=>{x['forEach'](y=>{const cr=b;p[cr(0x18f)](y);const z=this['itemRowKeyMap']['get'](y),{expand:C,hasChildren:D,height:E,calculatedHeight:F}=this['rowKeyMap'][cr(0x17f)](z),G=this['sumHeight'],K=Math[cr(0x340)](F,E);this[cr(0x370)]+=K,this['rowIndexRowKeyMap']['set'](r,z),this['rowKeyRowIndexMap'][cr(0x35c)](z,r),this[cr(0x2a8)]['push']({'top':G,'height':K,'bottom':this['sumHeight'],'calculatedHeight':F}),r+=0x1,C&&D&&u(y['children']);});};this['rowIndexRowKeyMap']['clear'](),this['rowKeyRowIndexMap']['clear']();let w=this['data'];if(typeof this['filterMethod']=='function'&&(w=this['filterMethod'](w)),this[cq(0x354)][cq(0xbd)]){const x=Array['from'](this['sortState']['entries']())['sort']((y,z)=>y[0x1]['timestamp']-z[0x1]['timestamp']);w=this['sortDataRecursive'](w,x);}return u(w),this['bufferData']=p,{'data':p,'sumHeight':this['sumHeight'],'positions':this['positions']};}[bn(0x3d2)](p){const cu=bn;this[cu(0x244)]=p;}['getFooterData'](){return this['footerData'];}['setFilterMethod'](p){this['filterMethod']=p;}['clearFilterMethod'](){this['filterMethod']=void 0x0;}['getSortState'](p){const cv=bn;return this[cv(0x354)]['get'](p)||{'direction':'none','timestamp':0x0};}['setSortState'](p,r){const cw=bn,s=Date[cw(0x3f8)]();this['ctx'][cw(0x29e)]['SORT_STRICTLY']&&this[cw(0x354)]['clear'](),r==='none'?this['sortState']['delete'](p):this['sortState']['set'](p,{'direction':r,'timestamp':s}),this['ctx']['emit'](cw(0x402),this[cw(0x354)]),this['clearBufferData'](),this['ctx']['emit']('draw');}['clearSort'](){const cx=bn;this['sortState']['clear'](),this['ctx']['emit']('sortChange',this['sortState']),this['clearBufferData'](),this['ctx']['emit'](cx(0x3ed));}['sortDataRecursive'](p,r){const cy=bn;let u=[...p];for(const [w,{direction:x}]of r){if(x==='none')continue;const y=this[cy(0x2ff)](w);!y||!y[cy(0x215)]['sortBy']||(u=this['applySingleColumnSort'](u,w,x,y['column']['sortBy']));}return u[cy(0x260)](z=>(z[cy(0x1c6)]&&Array['isArray'](z['children'])&&(z[cy(0x1c6)]=this['sortDataRecursive'](z['children'],r)),z));}['applySingleColumnSort'](p,r,u,w){return p['sort']((x,y)=>{const cz=b,z=x[r],C=y[r];let D=0x0;if(typeof w=='function')D=w(x,y);else{if(w==='number'){const E=Number(z)||0x0,F=Number(C)||0x0;D=E-F;}else{if(w===cz(0x285)){const G=String(z||''),K=String(C||'');D=G['localeCompare'](K);}else w===cz(0x274)&&(D=Es(z,C));}}return u==='asc'?D:-D;});}['expandItem'](p,r=!0x1){const cA=bn,s=this[cA(0x137)]['get'](p);s[cA(0x20f)]=r,this['expandMap']['set'](p,r),this['clearBufferData'](),this['ctx']['emit']('draw');}['setExpandRowKeys'](p,r=!0x0){this['expandMap']['clear'](),p['forEach'](u=>{const cB=b,w=this['rowKeyMap']['get'](u);this['expandMap']['set'](u,r),w[cB(0x20f)]=r;}),this['clearBufferData'](),this['ctx']['emit']('draw');}[bn(0x3fd)](){let p=[];return this['rowKeyMap']['forEach']((r,s)=>{r['expand']&&p['push'](s);}),p;}['expandAll'](p){const cD=bn;this['expandMap']['clear'](),this['rowKeyMap']['forEach'](r=>{const cC=b;r['expand']=p,this[cC(0x3fe)][cC(0x35c)](r[cC(0x31c)],p);}),this['clearBufferData'](),this['ctx']['emit'](cD(0x3ed));}['expandLoading'](p,r=!0x1){const cE=bn,s=this['rowKeyMap']['get'](p);s['expandLoading']=r,this[cE(0x21c)](),this['ctx']['emit']('draw');}['setExpandChildren'](p,r){const cF=bn,s=this['rowKeyMap']['get'](p);s['expand']=!0x0,this['expandMap']['set'](p,!0x0),s['expandLazy']=!0x0,s[cF(0x2b4)][cF(0x1c6)]=r,this['initData'](s['item'][cF(0x1c6)],s['level']+0x1),this['clearBufferData']();}['getIsExpandLoading'](p){return this['rowKeyMap']['get'](p)['expandLoading'];}['getIsExpandLazy'](p){return this['rowKeyMap']['get'](p)['expandLazy'];}['getIsExpand'](p){return this['rowKeyMap']['get'](p)['expand'];}['getRowForRowKey'](p){return this['rowKeyMap']['get'](p);}['getRowForRowIndex'](p){const cG=bn,r=this[cG(0xe6)](p);return this['rowKeyMap']['get'](r);}[bn(0xe6)](p){return this['rowIndexRowKeyMap']['get'](p)||'';}[bn(0x39e)](p){return this['itemRowKeyMap']['get'](p);}['getRowIndexForRowKey'](p){return this['rowKeyRowIndexMap']['get'](p);}['getItemValueForRowIndexAndColIndex'](p,r){const cH=bn;if(!(this['rowIndexRowKeyMap']['has'](p)&&this['colIndexKeyMap']['get'](r)))return null;const u=this['rowIndexRowKeyMap'][cH(0x17f)](p),w=this['colIndexKeyMap'][cH(0x17f)](r);return u===void 0x0||w===void 0x0?null:{'rowKey':u,'key':w,'value':this['getItemValue'](u,w)};}['getItemValue'](p,r){const cI=bn,s=this['rowKeyMap']['get'](p);return s&&s[cI(0x2b4)]?s['item'][r]===void 0x0?null:s['item'][r]:null;}async['batchSetItemValue'](p,r=!0x1,u=!0x0,w='none'){const cJ=bn;let x=[],y=u;const z=new Set();let C=[],D=p[cJ(0x260)](M=>{const cK=cJ,{rowKey:N,key:O}=M;let Q=M[cK(0x22d)],R=Q;const T=this['getRowDataItemForRowKey'](N),U=this['getItemValue'](N,O),V=this['getVirtualBodyCellByKey'](N,O);return V?.['type']===cK(0x1df)&&(['',void 0x0,null]['includes'](Q)?R=null:/^-?\d+(\.\d+)?$/['test'](''+Q)?R=Number(Q):(R=U,C[cK(0x18f)]({...M,'value':R,'oldValue':U,'row':T}))),{...M,'value':R,'oldValue':U,'row':T};});if(D=D['filter'](L=>!C['some'](M=>L[cJ(0x387)]===M['rowKey']&&L['key']===M[cJ(0x31c)])),C[cJ(0x3d0)]){const L={'code':'ERR_BATCH_SET_NUMBER_VALUE','message':'Assignment\x20failed,\x20not\x20a\x20numeric\x20type','data':C};this['ctx'][cJ(0x186)]('error',L);}if(D=D['filter'](M=>M['oldValue']!==M['value']),!D['length'])return;const {BEFORE_VALUE_CHANGE_METHOD:E}=this['ctx'][cJ(0x29e)];w==='none'&&typeof E==cJ(0x403)&&(D=await E(D),y=!0x1),D['forEach'](M=>{const cL=cJ,{value:N,rowKey:O,key:Q}=M,R=this['getItemValue'](O,Q);z['add'](O),this['setItemValue'](O,Q,N,!0x1,!0x1,!0x1,y),x[cL(0x18f)]({'rowKey':O,'key':Q,'oldValue':R,'newValue':N});});let F=[];z[cJ(0x288)](M=>{const cM=cJ;F['push'](this['ctx']['database'][cM(0x26f)](M));});const G=D['map'](({rowKey:M,key:N})=>this['getValidator'](M,N));Promise['all'](G)['then'](()=>{const cN=cJ;this['validationErrorMap'][cN(0xbd)]===0x0&&this['changedDataMap']['size']>0x0&&this['ctx']['emit']('validateChangedData',this['getChangedData']());});const K=D['map'](M=>{const cO=cJ,N=!!this['getValidationError'](M[cO(0x387)],M['key'])['length'];return{...M,'errorTip':N};});this['ctx']['emit'](cJ(0x1e7),K,F),r&&this['ctx']['history']['pushState']({'changeList':x,'scrollX':this['ctx']['scrollX'],'scrollY':this['ctx']['scrollY'],'type':'multiple'}),this[cJ(0x372)]['emit']('draw');}async['setItemValue'](p,r,u,w=!0x1,x=!0x1,z=!0x1,C=!0x0){const cP=bn;if(!this['rowKeyMap']['has'](p))return{};const {item:D}=this['rowKeyMap']['get'](p);let E=D[r],F=u;if(C&&this['ctx'][cP(0x2c6)]['getReadonly'](p,r))return{'oldValue':E,'newValue':E};D[r]!==null&&typeof D[r]=='object'&&(E=JSON['parse'](JSON['stringify'](D[r])));const G=p+'_'+r;this[cP(0x16b)][cP(0x3a0)](G)||this['originalDataMap'][cP(0x35c)](G,E);const K=this['originalDataMap'][cP(0x17f)](G),L=this[cP(0x26f)](p);if(z){const M=this['getVirtualBodyCellByKey'](p,r);if(M?.[cP(0x8e)]==='number'){if(['',void 0x0,null]['includes'](u))F=null;else{if(/^-?\d+(\.\d+)?$/['test'](''+u))F=Number(u);else{F=E;const O={'code':'ERR_SET_NUMBER_VALUE','message':cP(0x225),'data':[{'rowKey':p,'key':r,'value':F,'oldValue':E,'row':L}]};this['ctx']['emit'](cP(0x2ef),O);}}}if(F===E)return{'oldValue':E,'newValue':E};let N=[{'rowKey':p,'key':r,'value':F,'oldValue':E,'row':L}];this[cP(0x171)](N,w,!0x1),this[cP(0x372)]['emit']('editChange',{'rowKey':p,'key':r,'oldValue':E,'value':F,'originalValue':K,'row':L});}else this['changedDataMap']['set'](G,F),D[r]=F;return this['ctx']['hasEvent'](cP(0xec))&&this['ctx']['emit']('iterationChange',{'rowKey':p,'key':r,'oldValue':E,'value':F,'originalValue':this['originalDataMap']['get'](G),'row':L}),x&&this[cP(0x372)]['emit']('draw'),{'oldValue':E,'newValue':F};}['getRowDataItemForRowKey'](p){if(!this['rowKeyMap']['has'](p))return{};const {item:r}=this['rowKeyMap']['get'](p);return r;}['setRowSelectionByCheckboxKey'](p,r){const cQ=bn,{CHECKBOX_KEY:u}=this['ctx']['config'];if(u){if(!this['rowKeyMap']['has'](p))return!0x1;const {item:w}=this[cQ(0x137)]['get'](p),x=w[u];this['checkboxKeyMap']['has'](x)&&(this['checkboxKeyMap']['get'](x)||[])[cQ(0x288)](y=>{const z=this['selectionMap']['get'](y);z&&(z['check']=r);});}}['toggleRowSelection'](p,r){const cR=bn,u=this[cR(0x137)]['get'](p),w=this['selectionMap']['get'](p);if(!w)return;r===cR(0x2fc)||r==='tree-selection'?this[cR(0x293)](p):(w[cR(0x375)]=!w['check'],this['setRowSelectionByCheckboxKey'](p,w['check'])),this['ctx']['emit']('toggleRowSelection',u);const x=this['getSelectionRows']();this['ctx']['emit']('selectionChange',x),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['toggleTreeSelection'](p){const cS=bn,r=this[cS(0x9e)](p),u=this[cS(0x372)]['config'][cS(0x3ca)];if(u==='auto')r[cS(0x1d9)]&&!r['indeterminate']?(this['clearTreeSelectionRecursive'](p),this[cS(0x362)](p,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](p),this['setRowSelection'](p,!0x0,!0x1));else{if(u==='cautious')r['checked']&&!r['indeterminate']?(this['clearTreeSelectionRecursive'](p),this[cS(0x362)](p,!0x1,!0x1)):(this['selectTreeSelectionRecursive'](p),this['setRowSelection'](p,!0x0,!0x1));else{if(u==='strictly'){const w=this['selectionMap']['get'](p);w&&(w['check']=!w['check'],this['setRowSelectionByCheckboxKey'](p,w['check']));}}}this[cS(0x372)][cS(0x186)](cS(0x22e),this[cS(0x113)]()),this['ctx']['emit']('draw');}['selectTreeSelectionRecursive'](p){const cT=bn;this[cT(0x2f5)](p)['forEach'](r=>{this['setRowSelectionByParent'](r,!0x0),this['selectTreeSelectionRecursive'](r);});}['clearTreeSelectionRecursive'](p){const cU=bn;this['getTreeChildren'](p)[cU(0x288)](r=>{const cV=cU;this[cV(0x166)](r,!0x1),this['clearTreeSelectionRecursive'](r);});}['updateParentTreeSelection'](p){const cW=bn,r=this['getTreeParent'](p);if(!r)return;const u=this['getTreeChildren'](r)[cW(0x260)](C=>this['selectionMap'][cW(0x17f)](C)),w=u['filter'](C=>C?.['check'])['length'],x=u['length'];let y=!0x1;x>0x0&&(w===0x0?y=!0x1:w===x||this[cW(0x372)]['config']['TREE_SELECT_MODE']==='auto'?y=!0x0:this['ctx']['config']['TREE_SELECT_MODE']==='cautious'&&(y=!0x1));const z=this['selectionMap'][cW(0x17f)](r);z&&z[cW(0x375)]!==y&&(z['check']=y,this[cW(0x23d)](r,y),this[cW(0x23a)](r));}['setRowSelection'](p,r,u=!0x0){const cX=bn,w=this['selectionMap']['get'](p);w&&(w['check']=r,this['setRowSelectionByCheckboxKey'](p,w[cX(0x375)]),this[cX(0x372)]['emit']('setRowSelection',r,w['row']),(this['ctx']['config']['TREE_SELECT_MODE']==='auto'||this[cX(0x372)]['config'][cX(0x3ca)]==='cautious')&&this['updateParentTreeSelection'](p),u&&(this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw')));}[bn(0x166)](p,r){const cY=bn,s=this[cY(0x35d)]['get'](p);s&&(s['check']=r,this['setRowSelectionByCheckboxKey'](p,s['check']));}['getSelectionRows'](){let p=[];return this['selectionMap']['forEach'](r=>{r['check']&&p['push'](r['row']);}),p;}['getRowSelection'](p){const r=this['selectionMap']['get'](p);return r?r['check']:!0x1;}['getTreeSelectionState'](p){const cZ=bn;if(!this['getRowForRowKey'](p))return{'checked':!0x1,'indeterminate':!0x1};const r=this['selectionMap']['get'](p),u=r?.['check']||!0x1;if(this['getTreeChildren'](p)['length']===0x0)return{'checked':u,'indeterminate':!0x1};let w=!0x1,x=u;if(this['ctx']['config'][cZ(0x3ca)]==='auto'){const y=F=>{const G=this['getTreeChildren'](F);let K=[];for(const L of G)K['push'](L),K['push'](...y(L));return K;},z=y(p)['map'](F=>this[cZ(0x35d)]['get'](F)),C=z['filter'](F=>F?.['check'])['length'],D=z['length'],E=C>0x0;w=E&&C!==D,x=u||E,u&&D>0x0&&C===0x0&&(x=!0x1,w=!0x1);}else{if(this['ctx']['config']['TREE_SELECT_MODE']==='cautious'){const F=O=>{const Q=this['getTreeChildren'](O);let R=[];for(const S of Q)R['push'](S),R['push'](...F(S));return R;},G=F(p)[cZ(0x260)](O=>this['selectionMap']['get'](O)),K=G[cZ(0x31f)](O=>O?.['check'])['length'],L=G['length'],M=K>0x0,N=K===L;w=M&&!N,x=u||N,u&&L>0x0&&K===0x0&&(x=!0x1,w=!0x1);}else this['ctx']['config'][cZ(0x3ca)]==='strictly'&&(w=!0x1,x=u);}return{'checked':x,'indeterminate':w};}['getTreeChildren'](p){const d0=bn,r=this['getRowForRowKey'](p);if(!r||!r[d0(0x2b4)]||!r['item'][d0(0x1c6)])return[];const u=[],w=x=>{const d1=d0;for(const y of x){const z=this[d1(0x39e)](y);z&&u['push'](z),y['children']&&y['children'][d1(0x3d0)]>0x0&&w(y[d1(0x1c6)]);}};return w(r['item']['children']),u;}['getTreeParent'](p){const r=(u,w)=>{const d2=b;for(const x of u){const y=this['getRowKeyByItem'](x);if(x['children'])for(const z of x[d2(0x1c6)]){if(this[d2(0x39e)](z)===w)return y;const C=r(x['children'],w);if(C)return C;}}return null;};return r(this['data'],p);}[bn(0x367)](p){const {selectable:r,item:u,rowIndex:w}=this['rowKeyMap']['get'](p);return typeof r=='function'?r({'row':u,'rowIndex':w}):r;}['toggleAllSelection'](){const d3=bn;this[d3(0x372)]['config']['TREE_SELECT_MODE']==='auto'||this['ctx'][d3(0x29e)]['TREE_SELECT_MODE']==='cautious'?this[d3(0x137)]['forEach']((r,u)=>{const d4=d3;let w=r[d4(0x1ab)];if(typeof w=='function'&&(w=w({'row':r['item'],'rowIndex':r['rowIndex']})),w){const x=this['selectionMap'][d4(0x17f)](u);x&&(x['check']=!0x0,this[d4(0x23d)](u,!0x0));}}):this['rowKeyMap']['forEach']((r,u)=>{const d5=d3;let w=r['selectable'];typeof w==d5(0x403)&&(w=w({'row':r['item'],'rowIndex':r['rowIndex']})),w&&this['setRowSelection'](u,!0x0,!0x1);});const p=this['getSelectionRows']();this['ctx']['emit']('toggleAllSelection',p),this['ctx']['emit']('selectionChange',p),this['bufferCheckState']['buffer']=!0x1,this['ctx']['emit']('draw');}['clearSelection'](p=!0x1){const d6=bn,r=this[d6(0x372)][d6(0x29e)]['TREE_SELECT_MODE']==='auto'||this['ctx']['config']['TREE_SELECT_MODE']==='cautious';p?r?this['rowKeyMap']['forEach']((u,w)=>{const x=this['selectionMap']['get'](w);x&&(x['check']=!0x1,this['setRowSelectionByCheckboxKey'](w,!0x1));}):this['rowKeyMap']['forEach']((u,w)=>{const d7=d6;this[d7(0x362)](w,!0x1,!0x1);}):(this['selectionMap']['clear'](),this['rowKeyMap']['forEach']((u,w)=>{this['selectionMap']['set'](w,{'check':!0x1,'row':u['item'],'key':w});}));const s=this['getSelectionRows']();this[d6(0x372)]['emit'](d6(0x207)),this['ctx']['emit']('selectionChange',s),this['bufferCheckState'][d6(0x301)]=!0x1,this['ctx'][d6(0x186)]('draw');}['getCheckedState'](){const d8=bn,{buffer:p,...r}=this['bufferCheckState'];if(p)return r;const u=this['rowKeyMap']['size'];let w=0x0,x=0x0;const y=this[d8(0x35d)]['size'],z=Array[d8(0x28f)](this['selectionMap']['values']())['some'](G=>G['check']);this['rowKeyMap']['forEach']((G,K)=>{const d9=d8;var L;(L=this[d9(0x35d)]['get'](K))!=null&&L[d9(0x375)]&&(w+=0x1);let M=G[d9(0x1ab)];typeof M=='function'&&(M=M({'row':G['item'],'rowIndex':G[d9(0x151)]})),M&&(x+=0x1);});const C=y>u&&w===0x0&&z,D=x&&x>w&&w>0x0||C,E=x!==0x0,F=!!x&&x===w;return this['bufferCheckState']={'buffer':!0x0,'check':F,'indeterminate':D,'selectable':E},{'check':F,'indeterminate':D,'selectable':E};}['updateColIndexKeyMap'](p=[]){this['colIndexKeyMap']['clear'](),p['forEach'](r=>{this['colIndexKeyMap']['set'](r['colIndex'],r['key']);});}[bn(0x33b)](p){var r;const s=this['colIndexKeyMap']['get'](p);if(s&&this['headerMap']['has'](s))return(r=this['headerMap']['get'](s))==null?void 0x0:r['column'];}['getColumnByKey'](p){const r=this['headerMap']['get'](p);if(r)return r;}['getColIndexForKey'](p){const da=bn;var r;if(p&&this[da(0x1f1)]['has'](p))return(r=this['headerMap']['get'](p))==null?void 0x0:r['colIndex'];}['getColHeaderByIndex'](p){const db=bn,r=this['colIndexKeyMap']['get'](p);if(r&&this['headerMap']['has'](r))return this['headerMap'][db(0x17f)](r);}[bn(0x175)](){let p=[];return this['changedDataMap']['forEach']((r,u)=>{const dd=b,w=this['originalDataMap']['get'](u),x=u['split']('_')[0x0],y=u[dd(0xce)]('_')[0x1];w!==r&&p['push']({'rowKey':x,'colKey':y,'originalValue':w,'row':this['ctx']['database']['getRowDataItemForRowKey'](x),'value':r});}),p;}['getChangedRows'](){const p=new Set();this['changedDataMap']['forEach']((u,w)=>{const x=this['originalDataMap']['get'](w),y=w['split']('_')[0x0];x!==u&&p['add'](y);});let r=[];return p['forEach'](s=>{const de=b;r[de(0x18f)](this[de(0x372)]['database']['getRowDataItemForRowKey'](s));}),r;}['isHasChangedData'](p,r){const df=bn,u=p+'_'+r;if(!this['changedDataMap']['has'](u))return!0x1;const w=this['originalDataMap']['get'](u),x=this[df(0x3e0)]['get'](u);return w!==x;}['getPositionForRowIndex'](p){const dg=bn;return p<this[dg(0x2a8)]['length']?this['positions'][p]:{'height':0x0,'top':0x0,'bottom':0x0,'calculatedHeight':0x0};}['setHeader'](p,r){const dj=bn;return p?(this['headerMap'][dj(0x35c)](p,r),!0x0):!0x1;}['getReadonly'](p,r){const dk=bn,{DISABLED:u}=this['ctx']['config'];if(u)return!0x0;const w=this['rowKeyMap']['get'](p),x=this['headerMap']['get'](r);if(!w||!x)return!0x0;const y=w['readonly'],z=x['readonly'],{BODY_CELL_READONLY_METHOD:C}=this['ctx']['config'];if(typeof C==dk(0x403)&&x){const D=C({'row':w['item'],'rowIndex':w['rowIndex'],'colIndex':x['colIndex'],'column':x['column'],'value':this['getItemValue'](p,r)});if(D!==void 0x0)return D;}return z||y;}['clearValidate'](){const dm=bn;this['validationErrorMap'][dm(0x234)]();}[bn(0x3b0)](){return this['validationErrorMap']['size']!==0x0;}[bn(0x1ff)](p,r){return this['ctx']['database']['getReadonly'](p,r)?new Promise(s=>{s([]);}):new Promise(u=>{const dn=b,w=this['rowKeyMap']['get'](p),x=this['headerMap']['get'](r),{BODY_CELL_RULES_METHOD:y}=this['ctx']['config'];if(w===void 0x0||x===void 0x0)return u([]);const z=x['column'];let C=z['rules'];if(typeof y==dn(0x403)){const D=y({'row':w['item'],'rowIndex':w['rowIndex'],'colIndex':x['colIndex'],'column':z,'value':this['getItemValue'](p,r)});D&&(C=D);}if(C){const E={'row':w['item'],'rowIndex':w['rowIndex'],'colIndex':x['colIndex'],'column':z,'key':r,'rowKey':p,'value':this['getItemValue'](p,r),'field':r,'fieldValue':this[dn(0xa3)](p,r)},F=new Fs(C)['validate'](E);this['setValidationError'](p,r,F),u(F);}else this['clearValidationError'](p,r),u([]);});}['getHeightByRowIndexRowSpan'](p,r){let u=0x0;for(let w=0x0;w<r;w++){const x=this['positions'][p+w];x&&(u+=x['height']);}return u;}['getSpanInfo'](w){const dp=bn,{rowIndex:x,key:D,rowKey:E,row:G,value:N,colIndex:O,relationRowKeys:Q,relationColKeys:U,rowspan:a0,height:a1,width:a2,colspan:a3,mergeRow:a4,mergeCol:a5}=w;if(a0===0x1&&a3===0x1)return{'xArr':[O,O],'yArr':[x,x],'rowspan':a0,'colspan':a3,'height':a1,'width':a2,'offsetTop':0x0,'offsetLeft':0x0,'dataList':[{'rowKey':E,'key':D,'row':G,'value':N}]};let a6=x,a7=x,a8=O,a9=O,aa=[],ab=0x0,ad=0x0,ae=0x0,af=0x0;if(a0!==0x1&&a4){af=a2;const ag=Q[dp(0x34d)]((ai,aj)=>{const ak=this['getItemValue'](E,aj)??'';return''+ai+ak;},'');for(let ai=x-0x1;ai>=0x0;ai--){const aj=this['rowIndexRowKeyMap']['get'](ai)||'',ak=Q['reduce']((am,an)=>{const ao=this['getItemValue'](aj,an)??'';return''+am+ao;},'');if(ag===ak)a6=ai;else break;}for(let am=x;am<=this['ctx']['maxRowIndex'];am++){const an=this['rowIndexRowKeyMap']['get'](am)||'',ao=Q['reduce']((ap,aq)=>{const ar=this['getItemValue'](an,aq)??'';return''+ap+ar;},'');if(ag===ao)a7=am;else break;}for(let ap=a6;ap<x;ap++){const {height:aq}=this['positions'][ap];ab+=aq;}for(let ar=a6;ar<=a7;ar++){const {height:au}=this['positions'][ar];ae+=au;const av=this['rowIndexRowKeyMap']['get'](ar)||'',{item:aw}=this['rowKeyMap']['get'](av),ax=this['getItemValue'](av,D);aa['push']({'rowKey':av,'key':D,'value':ax,'row':aw});}}if(a3!==0x1&&a5){ae=a1;for(let ay=O-0x1;ay>=0x0;ay--){const az=this[dp(0x33b)](ay);if(!az)break;const aA=this[dp(0xa3)](E,D),aB=this['getItemValue'](E,az['key']);if(aA===aB&&U['includes'](az[dp(0x31c)]))a8=ay;else break;}for(let aC=O;aC<=this['ctx']['maxColIndex'];aC++){const aD=this['getColumnByColIndex'](aC);if(!aD)break;const aE=this['getItemValue'](E,D),aF=this['getItemValue'](E,aD['key']);if(aE===aF&&U['includes'](aD['key']))a9=aC;else break;}for(let aG=a8;aG<O;aG++){const aH=this['getColumnByColIndex'](aG);if(!aH)break;ad+=aH[dp(0x3ef)]||0x64;}for(let aI=a8;aI<=a9;aI++){const aJ=this['getColumnByColIndex'](aI);if(!aJ)break;af+=aJ['width']||0x64,aa['push']({'rowKey':E,'key':aJ['key'],'value':this['getItemValue'](E,aJ['key']),'row':G});}}return{'xArr':[a8,a9],'yArr':[a6,a7],'rowspan':a0,'colspan':a3,'height':ae,'width':af,'offsetTop':ab,'offsetLeft':ad,'dataList':aa};}[bn(0x339)](p,r,u){const w=p+'_'+r,x=this['getRowForRowKey'](p),y=x?.['rowIndex'],z=this['getColumnByKey'](r);if(!p||!z||!x)return;const C=this['getItemValue'](p,r),D=[{'key':r,'rowKey':p,'rowIndex':y,'colIndex':z['colIndex'],'column':z['column'],'row':x,'value':C,'message':u,'field':r,'fieldValue':C}];this['validationErrorMap']['set'](w,D);}['setValidationError'](p,r,u){const w=p+'_'+r;this['validationErrorMap']['set'](w,u);}[bn(0x391)](p,r){const dq=bn,s=p+'_'+r;this['validationErrorMap']['has'](s)&&this[dq(0x28a)]['delete'](s);}['getValidationError'](p,r){const dr=bn,s=p+'_'+r;return this['validationErrorMap'][dr(0x17f)](s)||[];}['getVirtualBodyCell'](p,r,u=!0x0){const dt=bn,w=this['getColumnByColIndex'](r),x=this['getRowForRowIndex'](p);return!w||!x?void 0x0:new wt(this[dt(0x372)],p,r,0x0,0x0,0x0,0x0,w,x[dt(0x2b4)],dt(0x156),u);}['getVirtualBodyCellByKey'](p,r){const u=this['getRowIndexForRowKey'](p),w=this['getColIndexForKey'](r);if(!(u===void 0x0||w===void 0x0))return this['getVirtualBodyCell'](u,w);}['hasMergeCell'](p,r){const du=bn;let u=!0x1;for(let w=r[0x0];w<=r[0x1];w++)for(let x=p[0x0];x<=p[0x1];x++){const y=this['getVirtualBodyCell'](w,x);if(y&&(y[du(0xb8)]!==0x1||y[du(0x193)]!==0x1)){u=!0x0;break;}}return u;}['calculateMaxTreeDepth'](p,r=0x0){let s=r;return p['forEach'](u=>{const dv=b;if(Array[dv(0x10e)](u['children'])&&u['children']['length']>0x0){const w=this[dv(0x2e7)](u[dv(0x1c6)],r+0x1);s=Math[dv(0x340)](s,w);}}),s;}['setOverlayerAutoHeightMap'](p){this['overlayerAutoHeightMap']=p;}[bn(0xc3)](){return this['overlayerAutoHeightMap'];}['getOverlayerAutoHeight'](p,r){const s=p+'_'+r;return this['overlayerAutoHeightMap']['get'](s)||0x0;}['setCustomHeader'](p,r=!0x1){const dw=bn;if([dw(0x399),'sortData','hideData',dw(0x3bd)]['forEach'](u=>{const w=p[u];w!==void 0x0&&(this['customHeader'][u]=w);}),!r){const s=this['clearCustomHeaderInvalidValues'](this[dw(0x224)]);this[dw(0x372)]['emit']('customHeaderChange',s);}}['resetCustomHeader'](){const dx=bn;this['customHeader']={},this['ctx'][dx(0x186)]('resetHeader'),this['ctx']['emit']('customHeaderChange',this['customHeader']);}[bn(0xff)](){const dy=bn;return this[dy(0x3e5)];}['setCustomHeaderResizableData'](p,r){let {resizableData:s={}}=this['customHeader'];s[p]=r,this['setCustomHeader']({'resizableData':s});}['setCustomHeaderHideData'](p,r){const dz=bn;let {hideData:s={}}=this[dz(0x3e5)];p['forEach'](u=>{s[u]=r;}),this['setCustomHeader']({'hideData':s}),this['ctx']['emit']('resetHeader');}['setCustomHeaderFixedData'](p,r){const dA=bn;let {fixedData:s={}}=this[dA(0x3e5)];p['forEach'](u=>{s[u]=r;}),this['setCustomHeader']({'fixedData':s}),this['ctx']['emit']('resetHeader');}['clearCustomHeaderInvalidValues'](p){const r=(u,w={})=>{const dB=b;u[dB(0x288)](x=>{const dD=dB;x['children']&&x['children']['length']>0x0&&r(x['children'],w);const y=(z,C)=>{const dC=b;var D,E;const F=(D=this[dC(0x3e5)][z])==null?void 0x0:D[x['key']];F!==void 0x0&&F!==C&&(w[z]||(w[z]={}),w[z][x['key']]=F,z==='fixedData'&&!F&&!C&&((E=w[z])==null||delete E[x['key']]));};y('fixedData',x['fixed']),y('sortData',x['sort']),y(dD(0x3f3),x['hide']),y('resizableData',x['width']);});};let s={};return r(p,s),s;}['setMaxRowHeightItem'](p,r,s){this['maxRowHeightCellMap']['set'](p,{'key':r,'height':s});}['getMaxRowHeightItem'](p){return this['maxRowHeightCellMap']['get'](p);}['clearChangeData'](){this['changedDataMap']['clear']();}}class Os{constructor(p){const dE=bn;m(this,'ctx'),m(this,dE(0xca),[]),m(this,'historyIndex',-0x1),this['ctx']=p,this['init']();}['init'](){const dF=bn;this[dF(0x372)]['on']('keydown',p=>{const dG=dF;if(!this[dG(0x372)][dG(0x291)]){if(p[dG(0x22a)]&&!p['shiftKey']&&p['code']==='KeyZ'||p['metaKey']&&!p['shiftKey']&&p['code']==='KeyZ'){p['preventDefault'](),this['ctx']['clearSelector'](),this['ctx']['clearAutofill'](),this[dG(0x203)]();return;}if(p[dG(0x22a)]&&p[dG(0x176)]==='KeyY'||p['ctrlKey']&&p['shiftKey']&&p[dG(0x176)]==='KeyZ'||p[dG(0x3a1)]&&p['shiftKey']&&p['code']==='KeyZ'){p['preventDefault'](),this['ctx']['clearSelector'](),this[dG(0x372)]['clearAutofill'](),this['forwardState']();return;}}});}['pushState'](p){const dH=bn,{HISTORY_NUM:r=0x0,ENABLE_HISTORY:s}=this['ctx'][dH(0x29e)];s&&(this['history'][dH(0x18f)](p),this['history']['length']>r&&this['history']['splice'](0x0,0x1),this['historyIndex']=this[dH(0xca)]['length']-0x1);}['backState'](){if(this['historyIndex']>=0x0){const {changeList:p,scrollX:r,scrollY:u}=this['history'][this['historyIndex']],w=p['map'](x=>({'rowKey':x['rowKey'],'key':x['key'],'value':x['oldValue'],'row':{}}));this['ctx']['setScroll'](r,u),this['ctx']['database']['batchSetItemValue'](w,!0x1,!0x1,'back'),this['historyIndex']-=0x1;}}['forwardState'](){const dI=bn;if(this['historyIndex']<this['history']['length']-0x1){this['historyIndex']+=0x1;const {changeList:p}=this['history'][this['historyIndex']],r=p[dI(0x260)](s=>({'rowKey':s['rowKey'],'key':s['key'],'value':s['newValue'],'row':{}}));this['ctx']['database']['batchSetItemValue'](r,!0x1,!0x1,'forward');}}['clear'](){this['history']=[],this['historyIndex']=-0x1;}}class Ds{constructor(p){m(this,'eventTasks',new Set()),m(this,'ctx'),this['ctx']=p,this['init']();}['init'](){const dJ=bn;this['bind'](window,dJ(0xad),this['handleResize']['bind'](this)),this['bind'](window,'mouseup',this['handleMouseUp']['bind'](this)),this['bind'](window,'mousemove',this['handleMousemove']['bind'](this)),this[dJ(0x30c)](window,'blur',this['handleOutsideMousedown']['bind'](this)),this['bind'](window,'mousedown',this['handleOutsideMousedown']['bind'](this)),this['bind'](this[dJ(0x372)]['stageElement'],'click',this['handleClick']['bind'](this)),this[dJ(0x30c)](window,'keydown',this['handleKeydown']['bind'](this)),this['bind'](this['ctx']['stageElement'],'wheel',this['handleWheel'][dJ(0x30c)](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],'touchstart',this[dJ(0xfc)]['bind'](this),{'passive':!0x1}),this['bind'](this[dJ(0x372)][dJ(0x100)],'touchend',this[dJ(0x263)]['bind'](this)),this['bind'](this['ctx'][dJ(0x100)],'touchmove',this[dJ(0x2a1)]['bind'](this),{'passive':!0x1}),this['bind'](this['ctx']['stageElement'],dJ(0x106),this['handleContextMenu']['bind'](this)),this['bind'](this['ctx'][dJ(0x100)],'mousedown',this['handleMouseDown']['bind'](this)),this['bind'](this['ctx']['stageElement'],dJ(0x33f),this[dJ(0x3c1)]['bind'](this)),this['bind'](this['ctx']['stageElement'],'mouseover',this[dJ(0x123)]['bind'](this)),this['bind'](this['ctx']['stageElement'],'mouseout',this['handleMouseout']['bind'](this)),this['bind'](document,dJ(0x131),this[dJ(0x131)]['bind'](this));}['selectionchange'](){const dK=bn;this['ctx']['domSelectionStr']='';const p=window['getSelection']();p&&p[dK(0x290)]()&&(this['ctx'][dK(0x32f)]=p['toString']());}['clearDomSelection'](){const dL=bn,p=window[dL(0x32e)]();p&&!p['isCollapsed']&&p['removeAllRanges']();}['destroy'](){Array['from'](this['eventTasks'])['forEach'](({target:p,name:r,fn:u,options:w})=>{this['unbind'](p,r,u,w);}),this['eventTasks']['clear']();}[bn(0x1d5)](p){const dM=bn;this['ctx'][dM(0x186)]('resetHeader',p),this['ctx']['emit']('resize',p);}['handleMouseDown'](p){this['clearDomSelection'](),p['button']===0x0&&(this['ctx']['mousedown']=!0x0),this['ctx']['emit']('mousedown',p);}['handleMousemove'](p){const dN=bn,r=p,u=this['ctx']['containerElement']['getBoundingClientRect'](),w=r['clientX']-u[dN(0x277)],x=r[dN(0x273)]-u[dN(0x295)];this[dN(0x372)]['mouseX']=w,this['ctx']['mouseY']=x,this['ctx']['emit']('mousemove',p);}[bn(0x14d)](p){const dO=bn;p['button']===0x0&&(this['ctx'][dO(0x1f9)]=!0x1),this[dO(0x372)]['emit']('mouseup',p);}['handleClick'](p){this['ctx']['emit']('click',p);}['handleKeydown'](p){const dP=bn,{ENABLE_KEYBOARD:r}=this['ctx']['config'];r&&this[dP(0x372)][dP(0x1e3)](p)&&(this['ctx']['dragHeaderIng']||this['ctx']['emit'](dP(0x2bc),p));}['handleWheel'](p){this['ctx']['emit']('wheel',p);}['handleTouchstart'](p){const dQ=bn;this[dQ(0x372)]['emit'](dQ(0x40c),p);}['handleTouchend'](p){const dR=bn;this['ctx'][dR(0x186)]('touchend',p);}['handleTouchmove'](p){const dS=bn;this['ctx']['emit'](dS(0x1aa),p);}[bn(0x38a)](p){const dT=bn;p[dT(0x284)](),this['ctx']['emit'](dT(0x3c0),p);}[bn(0x123)](p){const dU=bn;this['ctx'][dU(0x279)]=!0x0,this['ctx']['emit'](dU(0x13d),p);}[bn(0xeb)](p){const dV=bn;this['ctx']['isMouseoverTargetContainer']=!0x1,this['ctx']['emit'](dV(0x130),p);}['handleDblclick'](p){const dW=bn;this['ctx'][dW(0x186)]('dblclick',p);}['handleOutsideMousedown'](p){const dX=bn;this['ctx']['selector']['enable']&&(p['target']instanceof Window||p['target']instanceof Node&&!this['ctx']['containerElement'][dX(0x313)](p['target']))&&this['ctx']['emit']('outsideMousedown',p);}['bind'](p,r,u,w){p['addEventListener'](r,u,w),this['eventTasks']['add']({'target':p,'name':r,'fn':u,'options':w});}['unbind'](p,r,u,w){p['removeEventListener'](r,u,w);for(const x of this['eventTasks'])if(x['target']===p&&x['name']===r&&x['fn']===u){this['eventTasks']['delete'](x);break;}}}class Ps{constructor(){m(this,'events',new Map());}['has'](p){const dY=bn;return this['events'][dY(0x3a0)](p);}['on'](p,r){const dZ=bn,s=this['events'][dZ(0x17f)](p)||[];s[dZ(0x18f)](r),this[dZ(0xc6)]['set'](p,s);}['once'](p,r){const s=(...u)=>{r(...u),this['off'](p,s);};return this['on'](p,s),this;}['off'](p,r){const e0=bn,u=this['events']['get'](p);if(u){const w=u['indexOf'](r);w>=0x0&&(u['splice'](w,0x1),u['length']===0x0?this[e0(0xc6)]['delete'](p):this['events']['set'](p,u));}}['emit'](p,...r){const e1=bn,s=this[e1(0xc6)]['get'](p);s&&s[e1(0x288)](u=>{u(...r);});}[bn(0x369)](){this['events']['clear']();}}class Hs{constructor(p){const e2=bn;m(this,'ctx'),m(this,e2(0x27f),new Map());const r=p['getContext']('2d');if(!r)throw new Error('canvas\x20context\x20not\x20found');this['ctx']=r;}['clearTextCache'](){const e3=bn;this['textCacheMap'][e3(0x234)]();}[bn(0x2b7)](p){const e4=bn;this[e4(0x372)]['setTransform'](0x1,0x0,0x0,0x1,0x0,0x0),this['ctx']['scale'](p,p);}['save'](){this['ctx']['save']();}['restore'](){const e5=bn;this['ctx'][e5(0x27e)]();}['translate'](p,r){this['ctx']['translate'](p,r);}['setCursor'](p='default'){this['ctx']['canvas']['style']['cursor']=p;}[bn(0x234)](p=0x0,r=0x0,u,w){const e6=bn;this['ctx']['clearRect'](p,r,u||this['ctx']['canvas']['width'],w||this['ctx'][e6(0x18a)]['height']);}['drawShadow'](p,r,u,w,x){const e7=bn,{fillColor:y,side:z,shadowWidth:C,colorStart:D,colorEnd:E}=x;this[e7(0x372)]['save'](),y&&(this[e7(0x372)]['fillStyle']=y,this['ctx']['fillRect'](p,r,u,w));let F;switch(z){case'left':F=this['ctx'][e7(0x332)](p-C,r,p,r),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx']['fillRect'](p-C,r,C,w);break;case'right':F=this[e7(0x372)]['createLinearGradient'](p+u,r,p+u+C,r),F[e7(0xaf)](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx']['fillRect'](p+u,r,C,w);break;case'top':F=this['ctx'][e7(0x332)](p,r-C,p,r),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this[e7(0x372)]['fillRect'](p,r-C,u,C);break;case'bottom':F=this['ctx']['createLinearGradient'](p,r+w,p,r+w+C),F['addColorStop'](0x0,D),F['addColorStop'](0x1,E),this['ctx']['fillStyle']=F,this['ctx']['fillRect'](p,r+w,u,C);break;default:console['error']('Invalid\x20side\x20specified\x20for\x20shadow');break;}this['ctx']['restore']();}['drawLine'](p,r){const e8=bn;if(p['length']<0x4||p['length']%0x2!==0x0)throw new Error('A\x20valid\x20array\x20of\x20points\x20is\x20required\x20to\x20draw\x20a\x20line');this['ctx']['save']();const {borderColor:u=e8(0x226),borderWidth:w=0x1}=r;this['ctx']['beginPath'](),this['ctx']['moveTo'](p[0x0]-0.5,p[0x1]-0.5);for(let x=0x2;x<p['length'];x+=0x2)this['ctx'][e8(0x366)](p[x]-0.5,p[x+0x1]-0.5);this['ctx']['strokeStyle']=u,this['ctx']['lineWidth']=w,r['lineDash']&&(this['ctx']['lineDashOffset']=r[e8(0x3da)]??0x0,this['ctx']['setLineDash'](r['lineDash'])),r['fillColor']&&(this['ctx']['fillStyle']=r['fillColor'],this['ctx']['fill']()),r['borderColor']&&(this[e8(0x372)]['strokeStyle']=r['borderColor']),this['ctx'][e8(0x145)](),this['ctx']['closePath'](),this['ctx']['restore']();}['drawImage'](p,r,u,w,x){const e9=bn;this['ctx'][e9(0x29b)](),this['ctx']['drawImage'](p,r,u,w,x),this['ctx'][e9(0x27e)]();}['drawRect'](p,r,u,w,{borderWidth:x=0x1,borderColor:y,fillColor:z,radius:C=0x0}={}){const ea=bn;if(this['ctx']['save'](),this[ea(0x372)][ea(0x37b)](),z!==void 0x0&&(this['ctx'][ea(0x1e1)]=z),y!==void 0x0&&(this['ctx']['lineWidth']=x,this['ctx']['strokeStyle']=y),C===0x0)this[ea(0x372)]['rect'](p-0.5,r-0.5,u,w);else{const [D,E,F,G]=typeof C=='number'?[C,C,C,C]:C;this['ctx'][ea(0x2e9)](p+D,r),this['ctx']['arcTo'](p+u,r,p+u,r+E,E),this[ea(0x372)]['arcTo'](p+u,r+w,p+u-F,r+w,F),this['ctx']['arcTo'](p,r+w,p,r+w-G,G),this['ctx']['arcTo'](p,r,p+D,r,D);}z!==void 0x0&&this['ctx']['fill'](),y!==void 0x0&&this[ea(0x372)]['stroke'](),this['ctx']['restore']();}['drawText'](w='',x,D,G,N,O={}){const eb=bn;var Q;this['ctx']['save']();const {font:U='12px\x20Arial',align:a0='center',color:a1='#495060',padding:a2=0x0,verticalAlign:a3='middle',maxLineClamp:a4=0x1,autoRowHeight:a5=!0x1,offsetLeft:a6=0x0,offsetRight:a7=0x0}=O;if(this['ctx'][eb(0x322)]=U,this[eb(0x372)]['fillStyle']=a1,this['ctx']['textAlign']=a0,['',null,void 0x0][eb(0xd4)](w))return this[eb(0x372)]['restore'](),!0x1;const a8=parseInt(((Q=U['match'](/\d+/))==null?void 0x0:Q[0x0])||'12')*(O['lineHeight']||1.2),a9=G-a2*0x2-a6-a7;let aa=!0x1;const ab=Math['round']((N-0x2*a2)/a8);let ad=this['wrapText'](w,a9,O[eb(0x30e)]),ae=Math[eb(0x10c)](ad['length'],Math['max'](ab,0x1));a4===eb(0x262)&&a5?ae=ad[eb(0x3d0)]:typeof a4==eb(0x1df)&&a4<ae&&a4!==0x1?ae=a4:(a4===0x1&&(ad=[w],ae=0x1),a4==='auto'&&ab===0x1&&(ad=[w],ae=0x1));let af=D+a2;const ag=Math['round'](ae*a8);a3==='middle'?af=D+(N-ag)/0x2:a3==='bottom'&&(af=D+N-ag-a2);let ai=x+a2+a6;a0==='center'?ai=x+G/0x2:a0==='right'&&(ai=x+G-a2-a7);for(let aj=0x0;aj<ad['length'];aj++){const ak=ad[aj],am=af+aj*a8;if(this['ctx'][eb(0x240)]='top',aj===ae-0x1){const an=ad['slice'](aj)['join'](''),{_text:ao,ellipsis:ap}=this[eb(0x2d3)](an,G,a2,U);this['ctx']['fillText'](ao,ai,am),aa=ap;break;}this['ctx']['fillText'](ak,ai,am);}if(O['textCallback']&&ad['length']){const aq=ad['reduce']((ax,ay)=>Math[eb(0x340)](ax,this['ctx'][eb(0x1bf)](ay)['width']),0x0),ar=Math[eb(0x128)](aq);let au=ai,av=ai+ar;a0==='center'?(au=ai-ar/0x2,av=ai+ar/0x2):a0==='right'&&(au=ai-ar,av=ai);const aw={'x':ai,'y':af,'width':ar,'height':ag,'left':au,'right':av,'top':af,'bottom':af+ag};O['textCallback'](aw);}return this['ctx']['restore'](),aa;}['wrapText'](p,r,u=''){const ed=bn;if(!p)return[''];if(u&&this['textCacheMap'][ed(0x3a0)](u))return this['textCacheMap']['get'](u)||[''];const w=[],x=p['split']('\x0a');for(const z of x){if(z===''){w['push']('');continue;}const C=z['split']('');let D='';for(const E of C){const F=D+E;this['ctx']['measureText'](F)['width']<=r?D=F:D?(w['push'](D),D=E):(w['push'](E),D='');}D&&w['push'](D);}const y=w['length']>0x0?w:[''];return u&&this['textCacheMap']['set'](u,y),y;}[bn(0x3f2)](p='',r,u={}){const ee=bn;var w;const {font:x='12px\x20Arial',padding:y=0x0,align:z='center',color:C=ee(0x31d),maxLineClamp:D=0x1,cacheTextKey:E=''}=u;this['ctx']['save'](),this['ctx']['font']=x,this['ctx']['fillStyle']=C,this['ctx']['textAlign']=z;const F=parseInt(((w=x['match'](/\d+/))==null?void 0x0:w[0x0])||'12'),G=F*(u['lineHeight']||1.2),K=r-y*0x2,L=this['wrapText'](p,K,E);let M=0x1;return D==='auto'?M=L[ee(0x3d0)]:L['length']>D?M=D:M=L['length'],this['ctx']['restore'](),Math['max'](Math['floor'](M*G+y*0x2),Math['floor'](F+y*0x2));}['handleEllipsis'](p,r,u=0x0,w=bn(0x237)){const ef=bn;this['ctx']['save']();let x=!0x1,y=p;if(this['ctx']['font']=w,p==null||p==='')return this['ctx']['restore'](),{'_text':'','ellipsis':x};const z=this['ctx']['measureText']('...')['width'];if(r<=z+u*0x2)return this['ctx']['restore'](),{'_text':'','ellipsis':!0x0};const C=this['ctx']['measureText'](p)[ef(0x3ef)],D=r-u*0x2;if(C&&C>=D){x=!0x0;let E=0x0;for(let F=0x0;F<p['length'];F++)if(E+=this[ef(0x372)]['measureText'](p[F])['width'],E>=D-z){y=p['slice'](0x0,F)+'...',x=!0x0;break;}}return this['ctx']['restore'](),{'_text':y,'ellipsis':x};}}class Zl{constructor(p){const eg=bn;m(this,'_config',{}),m(this,'CSS_PREFIX','e-virt-table'),m(this,'ICONS',[]),m(this,'ROW_KEY',''),m(this,eg(0x17c),!0x1),m(this,'HEADER_FONT',eg(0x2f1)),m(this,eg(0x2b0),'12px\x20normal\x20Arial'),m(this,eg(0x3a8),!0x0),m(this,'STRIPE',!0x1),m(this,'STRIPE_COLOR','#fafafa'),m(this,'BORDER_COLOR','#e1e6eb'),m(this,'HEIGHT',0x0),m(this,eg(0xda),'#CDD0DC'),m(this,'EMPTY_BODY_HEIGHT',0x78),m(this,'EMPTY_CUSTOM_STYLE',{}),m(this,'NUMBER_ERROR_TIP','只允许输入数字'),m(this,'EMPTY_TEXT','暂无数据'),m(this,'LOADING_TEXT',eg(0x1e2)),m(this,'MAX_HEIGHT',0x3e8),m(this,'BORDER_RADIUS',0x8),m(this,'ENABLE_OFFSET_HEIGHT',!0x1),m(this,eg(0x105),0x0),m(this,'HEADER_HEIGHT',0x24),m(this,'ENABLE_HEADER_STICKY',!0x1),m(this,eg(0x91),'#F8FAFF'),m(this,eg(0x177),'#FFF'),m(this,'HEADER_TEXT_COLOR','#1D2129'),m(this,'REQUIRED_COLOR','#F56C6C'),m(this,'BODY_TEXT_COLOR',eg(0x163)),m(this,'FOOTER_TEXT_COLOR','#4E5969'),m(this,'LOADING_ICON_SVG',''),m(this,'LOADING_ICON_COLOR','#4E5969'),m(this,'EXPAND_ICON_SVG',''),m(this,eg(0x2d1),''),m(this,'EXPAND_ICON_COLOR','#4E5969'),m(this,eg(0x11b),eg(0x163)),m(this,'ERROR_TIP_ICON_COLOR','red'),m(this,'ERROR_TIP_ICON_SIZE',0x6),m(this,'COLUMNS_ALIGN',eg(0x277)),m(this,eg(0x30d),'middle'),m(this,'EXPAND_LAZY',!0x0),m(this,'DEFAULT_EXPAND_ALL',!0x1),m(this,'CELL_WIDTH',0x64),m(this,'CELL_HEIGHT',0x24),m(this,'CELL_PADDING',0x8),m(this,'CELL_HOVER_ICON_SIZE',0xe),m(this,'CELL_HOVER_ICON_BG_COLOR','#fff'),m(this,'CELL_HOVER_ICON_BORDER_COLOR','#DDE0EA'),m(this,'SCROLLER_TRACK_SIZE',0xe),m(this,'SCROLLER_SIZE',0x8),m(this,'SCROLLER_COLOR','#dee0e3'),m(this,'SCROLLER_TRACK_COLOR','#fff'),m(this,'SCROLLER_FOCUS_COLOR',eg(0x31e)),m(this,'SELECT_BORDER_COLOR','rgb(82,146,247)'),m(this,'SELECT_AREA_COLOR','rgba(82,146,247,0.1)'),m(this,'SELECT_ROW_COL_BG_COLOR','transparent'),m(this,'AUTOFILL_POINT_BORDER_COLOR','#fff'),m(this,eg(0xb5),'#fcf6ed'),m(this,'CHECKBOX_KEY',''),m(this,'CHECKBOX_COLOR',eg(0xd6)),m(this,'FINDER_CELL_BG_COLOR','rgb(255,229,144)'),m(this,'ENABLE_FINDER',!0x0),m(this,eg(0x2d8),0x14),m(this,'CHECKBOX_DISABLED_SVG',''),m(this,'CHECKBOX_DISABLED_COLOR','#F1F2F4'),m(this,eg(0x363),''),m(this,'CHECKBOX_UNCHECK_SVG',''),m(this,'CHECKBOX_UNCHECK_COLOR',eg(0x381)),m(this,'CHECKBOX_INDETERMINATE_SVG',''),m(this,'CHECKBOX_CHECK_DISABLED_SVG',''),m(this,eg(0x3f4),eg(0x381)),m(this,'ICON_EDIT_SVG',''),m(this,'ICON_EDIT_COLOR','#4E5969'),m(this,'ICON_SELECT_SVG',''),m(this,eg(0x268),'#4E5969'),m(this,'SORT_STRICTLY',!0x0),m(this,'SORT_ASC_ICON_SVG',''),m(this,'SORT_DESC_ICON_SVG',''),m(this,eg(0x1de),''),m(this,'SORT_ICON_COLOR',eg(0xd6)),m(this,'READONLY_COLOR','#fff'),m(this,eg(0x365),'#4E5969'),m(this,'ERROR_TIP_COLOR','#ED3F14'),m(this,eg(0x358),'#fafafa'),m(this,eg(0x396),!0x0),m(this,'FOOTER_POSITION','bottom'),m(this,'CELL_FOOTER_HEIGHT',0x24),m(this,'ENABLE_SELECTOR',!0x0),m(this,'TREE_SELECT_MODE','auto'),m(this,eg(0x36f),'children'),m(this,'TREE_INDENT',0x14),m(this,'TREE_ICON_SIZE',0x14),m(this,eg(0x37f),!0x1),m(this,'TREE_LINE_COLOR','#e1e6eb'),m(this,'ENABLE_EDIT_SINGLE_CLICK',!0x1),m(this,eg(0x246),!0x0),m(this,'SELECTOR_AREA_MIN_X',0x0),m(this,eg(0x2a9),0x0),m(this,'SELECTOR_AREA_MAX_X',0x0),m(this,eg(0x220),0x0),m(this,'SELECTOR_AREA_MAX_Y',0x0),m(this,'SELECTOR_AREA_MAX_Y_OFFSET',0x0),m(this,'SELECTOR_CELL_VALUE_TYPE',eg(0x22d)),m(this,eg(0x1e9),!0x0),m(this,eg(0x261),!0x1),m(this,'ENABLE_SELECTOR_SPAN_COL',!0x0),m(this,'ENABLE_SELECTOR_SPAN_ROW',!0x0),m(this,'ENABLE_SELECTOR_ALL_ROWS',!0x0),m(this,'ENABLE_SELECTOR_ALL_COLS',!0x0),m(this,'ENABLE_MERGE_CELL_LINK',!0x1),m(this,'ENABLE_AUTOFILL',!0x1),m(this,eg(0x326),!0x0),m(this,'ENABLE_AUTOFILL_SPAN_ROW',!0x0),m(this,'ENABLE_CONTEXT_MENU',!0x1),m(this,'ENABLE_HEADER_CONTEXT_MENU',!0x1),m(this,'ENABLE_COPY',!0x0),m(this,'ENABLE_PASTER',!0x0),m(this,'ENABLE_RESIZE_ROW',!0x0),m(this,'ENABLE_RESIZE_COLUMN',!0x0),m(this,'RESIZE_ROW_LINE_COLOR','#e1e6eb'),m(this,eg(0x255),'#e1e6eb'),m(this,'ENABLE_RESIZE_COLUMN_TEXT',!0x0),m(this,'RESIZE_COLUMN_TEXT_COLOR','#fff'),m(this,'RESIZE_COLUMN_TEXT_BG_COLOR','rgb(82,146,247)'),m(this,'RESIZE_ROW_MIN_HEIGHT',0x24),m(this,'RESIZE_COLUMN_MIN_WIDTH',0x28),m(this,'DRAG_TIP_BG_COLOR',eg(0x2f2)),m(this,'DRAG_TIP_LINE_COLOR','rgb(82,146,247)'),m(this,'ENABLE_KEYBOARD',!0x0),m(this,eg(0x27d),!0x1),m(this,eg(0x2b2),!0x0),m(this,'HISTORY_NUM',0x32),m(this,'HIGHLIGHT_HOVER_ROW',!0x1),m(this,'HIGHLIGHT_HOVER_ROW_COLOR','rgba(186,203,231,0.1)'),m(this,'HIGHLIGHT_SELECTED_ROW',!0x1),m(this,eg(0x2d6),'rgba(82,146,247,0.1)'),m(this,eg(0x116),eg(0x2c1)),m(this,'TOOLTIP_TEXT_COLOR',eg(0x32d)),m(this,'TOOLTIP_ZINDEX',0xbb8),m(this,'TOOLTIP_CUSTOM_STYLE',{}),m(this,'CONTEXT_MENU',[{'label':'复制','value':eg(0x2fe)},{'label':'剪切','value':eg(0x205)},{'label':'粘贴','value':'paste'},{'label':'清空选中内容','value':'clearSelected'}]),m(this,'CUSTOM_BODY_CONTEXT_MENU',[]),m(this,'HEADER_CONTEXT_MENU',[{'label':'左固定','value':'fixedLeft'},{'label':'右固定','value':eg(0x1ca)},{'label':'取消固定','value':eg(0x196)},{'label':'隐藏','value':'hide'},{'label':'显示','value':'visible'},{'label':'恢复默认','value':'resetHeader'}]),m(this,'CUSTOM_HEADER_CONTEXT_MENU',[]),m(this,'CELL_LINE_HEIGHT',1.3),m(this,'AUTO_ROW_HEIGHT',!0x1),m(this,'ENABLE_DRAG_COLUMN',!0x1),m(this,'HEADER_CELL_STYLE_METHOD'),m(this,'BODY_CELL_STYLE_METHOD'),m(this,'FOOTER_CELL_STYLE_METHOD'),m(this,'BODY_CELL_READONLY_METHOD'),m(this,'BODY_CELL_FORMATTER_METHOD'),m(this,'BODY_CELL_RULES_METHOD'),m(this,'BODY_CELL_TYPE_METHOD'),m(this,'BODY_CELL_EDITOR_METHOD'),m(this,'BODY_CELL_RENDER_METHOD'),m(this,'BODY_CELL_HOVER_ICON_METHOD'),m(this,'SPAN_METHOD'),m(this,'SELECTABLE_METHOD'),m(this,'EXPAND_LAZY_METHOD'),m(this,'BEFORE_VALUE_CHANGE_METHOD'),m(this,'BEFORE_PASTE_DATA_METHOD'),m(this,'BEFORE_AUTOFILL_DATA_METHOD'),m(this,'BEFORE_SET_SELECTOR_METHOD'),m(this,'BEFORE_SET_AUTOFILL_METHOD'),m(this,'BEFORE_HEADER_CONTEXT_MENU_METHOD'),m(this,'BEFORE_BODY_CONTEXT_MENU_METHOD'),m(this,'BEFORE_COPY_METHOD'),this['_config']=p,this['updateCssVar']();}['init'](p){this['_config']=p,this['updateCssVar']();}['updateCssVar'](){let p={};Object['keys'](this)['forEach'](r=>{const ej=b;if(r[ej(0x3af)]('_COLOR')||r['endsWith']('_FONT')){const u='--evt-'+r[ej(0x3e8)]()['replace'](/_/g,'-'),w=js(u);w&&(p[r]=w);}}),Object['assign'](this,p,this['_config']);}}const Hi='<svg\x20t=\x221724122015492\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224237\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M401.472\x20316.992l159.04\x20217.664L591.488\x20512l-30.976-22.656-159.04\x20217.728q-2.24\x203.008-3.84\x206.464-1.6\x203.456-2.496\x207.104-0.896\x203.648-1.024\x207.424-0.192\x203.84\x200.384\x207.552\x200.64\x203.712\x201.92\x207.296\x201.28\x203.52\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992\x203.072\x202.24\x206.464\x203.84\x203.456\x201.6\x207.168\x202.496\x203.648\x200.896\x207.424\x201.024\x203.776\x200.192\x207.488-0.448\x203.776-0.576\x207.296-1.856\x203.584-1.28\x206.784-3.264\x203.2-1.92\x206.016-4.48\x202.816-2.56\x205.056-5.632l159.04-217.728q3.584-4.928\x205.504-10.752\x201.92-5.76\x201.92-11.904\x200-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488\x20271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84\x200.192-7.424\x201.088-3.712\x200.896-7.168\x202.496-3.392\x201.6-6.4\x203.84-3.136\x202.176-5.696\x204.992-2.56\x202.752-4.48\x206.016-1.984\x203.2-3.264\x206.784-1.28\x203.52-1.92\x207.296-0.576\x203.712-0.384\x207.488\x200.128\x203.84\x201.024\x207.488\x200.896\x203.648\x202.496\x207.04\x201.6\x203.456\x203.84\x206.528z\x20m30.976-61.056q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.24-3.52\x201.408-6.656\x203.52-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.232\x201.408\x203.456\x203.52\x206.592\x202.112\x203.2\x204.8\x205.824\x202.688\x202.688\x205.76\x204.8\x203.2\x202.112\x206.72\x203.52\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.656\x201.472-3.52\x202.24-7.232\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224\x20256\x20432.448\x20256z\x20m0\x20435.392q-3.776\x200-7.488\x200.704-3.712\x200.768-7.168\x202.176-3.52\x201.472-6.656\x203.584-3.2\x202.112-5.824\x204.736-2.688\x202.688-4.8\x205.824-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.176\x207.232-0.768\x203.712-0.768\x207.488\x200\x203.776\x200.768\x207.488\x200.704\x203.712\x202.176\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.76\x202.688\x202.752\x205.76\x204.8\x203.2\x202.112\x206.72\x203.584\x203.456\x201.472\x207.168\x202.176\x203.712\x200.768\x207.488\x200.768\x203.84\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.472\x206.592-3.584\x203.2-2.048\x205.824-4.736\x202.688-2.688\x204.8-5.824\x202.112-3.2\x203.52-6.656\x201.472-3.456\x202.24-7.168\x200.704-3.712\x200.704-7.488\x200-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z\x22\x20p-id=\x224238\x22></path></svg>',Il='<svg\x20t=\x221722595535853\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M640\x20128H384c-170.496\x200-256\x2085.504-256\x20256v256c0\x20170.496\x2085.504\x20256\x20256\x20256h256c170.496\x200\x20256-85.504\x20256-256V384c0-170.496-85.504-256-256-256z\x20m67.584\x20302.592c-2.048\x204.608-4.608\x208.704-8.192\x2012.288L506.88\x20634.88c-3.584\x203.584-7.68\x206.144-12.288\x208.192-4.608\x202.048-9.728\x203.072-14.848\x203.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848\x200-2.56\x200-5.12\x201.024-7.68\x200.512-2.56\x201.024-5.12\x202.048-7.168\x201.024-2.56\x202.048-4.608\x203.584-6.656\x201.536-2.048\x203.072-4.096\x204.608-5.632\x201.536-2.048\x203.584-3.584\x205.632-4.608\x202.048-1.536\x204.096-2.56\x206.656-3.584\x202.56-1.024\x204.608-1.536\x207.168-2.048\x202.56-0.512\x205.12-0.512\x207.68-0.512\x205.12\x200\x2010.24\x201.024\x2014.848\x203.072\x204.608\x202.048\x208.704\x204.608\x2012.288\x208.192l69.12\x2068.608L645.12\x20389.12c3.584-3.584\x207.68-6.144\x2012.288-8.192\x204.608-2.048\x209.728-3.072\x2014.848-3.072\x202.56\x200\x205.12\x200\x207.68\x200.512s5.12\x201.024\x207.168\x202.048c2.56\x201.024\x204.608\x202.048\x206.656\x203.584\x202.048\x201.536\x204.096\x203.072\x205.632\x204.608\x201.536\x201.536\x203.584\x203.584\x204.608\x205.632\x201.536\x202.048\x202.56\x204.096\x203.584\x206.656\x201.024\x202.56\x201.536\x204.608\x202.048\x207.168\x200.512\x202.56\x201.024\x205.12\x201.024\x207.68\x200\x205.12-1.024\x2010.24-3.072\x2014.848z\x22\x20p-id=\x224552\x22></path></svg>',ol='<svg\x20t=\x221724122044148\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224551\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M707.648\x20401.28L489.28\x20560.704l22.656\x2030.976\x2022.656-30.976L316.16\x20401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488\x200.448-3.776\x200.64-7.296\x201.92-3.584\x201.28-6.784\x203.2-3.2\x201.984-6.016\x204.544-2.816\x202.56-5.056\x205.632-2.176\x203.072-3.84\x206.464-1.536\x203.456-2.432\x207.104-0.896\x203.712-1.088\x207.488-0.128\x203.776\x200.448\x207.488\x200.64\x203.776\x201.92\x207.296\x201.28\x203.584\x203.2\x206.784\x201.984\x203.2\x204.544\x206.016\x202.56\x202.752\x205.632\x204.992l218.368\x20159.552q4.928\x203.584\x2010.752\x205.504\x205.76\x201.92\x2011.904\x201.92\x206.08\x200\x2011.904-1.92\x205.76-1.92\x2010.752-5.504l218.368-159.552q3.008-2.24\x205.568-4.992\x202.56-2.816\x204.544-6.016\x201.92-3.2\x203.264-6.784\x201.28-3.52\x201.92-7.296\x200.576-3.712\x200.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84\x200.192-7.488\x201.088-3.648\x200.896-7.04\x202.496-3.456\x201.536-6.528\x203.84z\x20m61.056\x2030.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.656\x203.584-3.136\x202.112-5.76\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.584\x206.656-1.408\x203.52-2.176\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.176\x207.168\x201.472\x203.52\x203.584\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.168-2.176\x203.52-1.408\x206.656-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.048-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x20m-436.736\x200q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84\x200-7.488\x200.704-3.712\x200.768-7.232\x202.176-3.456\x201.472-6.592\x203.584-3.2\x202.112-5.824\x204.8-2.688\x202.624-4.8\x205.76-2.112\x203.2-3.52\x206.656-1.472\x203.52-2.24\x207.232-0.704\x203.712-0.704\x207.488\x200\x203.776\x200.704\x207.488\x200.768\x203.712\x202.24\x207.168\x201.408\x203.52\x203.52\x206.656\x202.112\x203.2\x204.8\x205.824\x202.624\x202.688\x205.76\x204.8\x203.2\x202.112\x206.656\x203.52\x203.52\x201.472\x207.232\x202.176\x203.712\x200.768\x207.488\x200.768\x203.776\x200\x207.488-0.768\x203.712-0.704\x207.232-2.176\x203.456-1.408\x206.592-3.52\x203.2-2.112\x205.824-4.8\x202.688-2.688\x204.8-5.76\x202.112-3.2\x203.52-6.72\x201.472-3.456\x202.176-7.168\x200.768-3.712\x200.768-7.488z\x22\x20p-id=\x224552\x22></path></svg>',Rt='<svg\x20t=\x221755138507987\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x225079\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M512\x20938.688a42.688\x2042.688\x200\x200\x201-35.072-18.432l-192-277.312A42.56\x2042.56\x200\x200\x201\x20320\x20576h384a42.752\x2042.752\x200\x200\x201\x2035.072\x2066.944l-192\x20277.312a42.688\x2042.688\x200\x200\x201-35.072\x2018.432\x22\x20fill=\x22currentColor\x22\x20p-id=\x222016\x22></path><path\x20d=\x22M704\x20448H320a42.752\x2042.752\x200\x200\x201-35.072-66.944l192-277.312c16-23.04\x2054.208-23.04\x2070.144\x200l192\x20277.312A42.56\x2042.56\x200\x200\x201\x20704\x20448\x22\x20fill=\x22currentColor\x22\x20p-id=\x222015\x22></path></svg>',fs=Rt['replace']('fill=\x22currentColor\x22\x20p-id=\x222016\x22','fill=\x22#bec4c7\x22\x20p-id=\x222016\x22'),Qs=Rt['replace'](bn(0x15b),'fill=\x22#bec4c7\x22\x20p-id=\x222015\x22'),Ql='<svg\x20t=\x221724133395728\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x222893\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M512\x20226.8476541a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304692c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497779v122.20814825a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304691\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778v-122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497779\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304692z\x20m0\x20407.36049415a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304691c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304693\x2014.66497778v122.20814827a19.82487759\x2019.82487759\x200\x200\x201-5.70304693\x2014.66497776\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497776v-122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304691zM797.1523459\x20512a19.82487759\x2019.82487759\x200\x200\x201-5.70304692\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497779\x205.70304693h-122.20814825a19.82487759\x2019.82487759\x200\x200\x201-14.66497778-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304691-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497778-5.70304693h122.20814825a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497779\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304692\x2014.66497778z\x20m-407.36049415\x200a19.82487759\x2019.82487759\x200\x200\x201-5.70304691\x2014.66497778\x2019.82487759\x2019.82487759\x200\x200\x201-14.66497778\x205.70304693h-122.20814827a19.82487759\x2019.82487759\x200\x200\x201-14.66497776-5.70304693\x2019.82487759\x2019.82487759\x200\x200\x201-5.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x205.70304693-14.66497778\x2019.82487759\x2019.82487759\x200\x200\x201\x2014.66497776-5.70304693h122.20814827a19.82487759\x2019.82487759\x200\x200\x201\x2014.66497778\x205.70304693c3.80203107\x203.82918865\x205.70304692\x208.71751457\x205.70304691\x2014.66497778zM310.22076878\x20310.22076878a21.29137537\x2021.29137537\x200\x200\x201\x2014.66497779-5.70304693c5.51294514\x200\x2010.18401235\x201.90101585\x2014.01320099\x205.70304693l86.55052591\x2086.57768347a20.91117183\x2020.91117183\x200\x200\x201\x205.73020449\x2014.31193182\x2019.28172983\x2019.28172983\x200\x200\x201-6.05609289\x2014.013201\x2019.11878565\x2019.11878565\x200\x200\x201-14.013201\x206.05609289\x2020.96548698\x2020.96548698\x200\x200\x201-14.31193182-5.70304692L310.22076878\x20338.87178998a19.06447114\x2019.06447114\x200\x200\x201-5.70304693-14.01320099c0-5.54010272\x201.90101585-10.42842865\x205.70304693-14.66497778z\x20m288.32975775\x20288.32975775a19.79772001\x2019.79772001\x200\x200\x201\x2014.3390894-6.35482371c5.29568642\x200\x2010.04822572\x202.11827457\x2014.31193182\x206.38198066l86.57768347\x2086.55052651c3.80203107\x203.80203107\x205.70304692\x208.47309828\x205.70304691\x2014.01320102a19.55330372\x2019.55330372\x200\x200\x201-6.05609225\x2014.31193182\x2019.66193339\x2019.66193339\x200\x200\x201-14.31193245\x206.05609288\x2019.01015661\x2019.01015661\x200\x200\x201-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001\x2019.79772001\x200\x200\x201-6.38198129-14.31193245c0-5.29568642\x202.11827457-10.07538268\x206.38198129-14.33908939zM713.77923122\x20310.22076878c3.80203107\x204.26370672\x205.70304692\x209.15203265\x205.70304693\x2014.66497779s-1.90101585\x2010.18401235-5.70304693\x2014.01320099l-86.57768347\x2086.55052591a20.91117183\x2020.91117183\x200\x200\x201-14.31193182\x205.73020449\x2019.28172983\x2019.28172983\x200\x200\x201-14.013201-6.05609289\x2019.11878565\x2019.11878565\x200\x200\x201-6.05609289-14.013201c0-5.29568642\x201.90101585-10.07538268\x205.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107\x208.50025585-5.70304692\x2014.01320099-5.70304693\x205.54010272\x200\x2010.40127108\x201.90101585\x2014.66497779\x205.70304693zM425.44947347\x20598.57768347a19.79772001\x2019.79772001\x200\x200\x201\x206.35482371\x2014.33908939c0\x205.29568642-2.11827457\x2010.04822572-6.38198066\x2014.31193245L338.89894756\x20713.77923122a19.06447114\x2019.06447114\x200\x200\x201-14.01320099\x205.70304693\x2019.55330372\x2019.55330372\x200\x200\x201-14.31193245-6.05609227\x2019.68909035\x2019.68909035\x200\x200\x201-6.05609227-14.31193245\x2019.01015661\x2019.01015661\x200\x200\x201\x205.70304693-14.01320099l86.57768347-86.55052591a19.79772001\x2019.79772001\x200\x200\x201\x2014.31193182-6.38198129c5.29568642\x200\x2010.07538268\x202.11827457\x2014.3390894\x206.38198129z\x22\x20fill=\x22#000000\x22\x20fill-opacity=\x22.65\x22\x20p-id=\x222894\x22></path></svg>';class vs{constructor(p){const ek=bn;m(this,'ctx'),m(this,'list',[{'name':'loading','configName':'LOADING_ICON_SVG','configColorName':'LOADING_ICON_COLOR','svg':Ql,'color':'#4E5969'},{'name':'expand','configName':'EXPAND_ICON_SVG','configColorName':'EXPAND_ICON_COLOR','svg':Hi,'color':'#4E5969'},{'name':'shrink','configName':'SHRINK_ICON_SVG','configColorName':'SHRINK_ICON_COLOR','svg':ol,'color':'#4E5969'},{'name':ek(0x2c8),'configName':ek(0x311),'configColorName':'CHECKBOX_UNCHECK_COLOR','svg':'<svg\x20t=\x221722595639920\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224708\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20640V384a256\x20256\x200\x200\x201\x20256-256h256a256\x20256\x200\x200\x201\x20256\x20256v256a256\x20256\x200\x200\x201-256\x20256H384a256\x20256\x200\x200\x201-256-256z\x20m64\x200q0\x2079.552\x2056.256\x20135.744Q304.448\x20832\x20384\x20832h256q79.552\x200\x20135.744-56.256Q832\x20719.552\x20832\x20640V384q0-79.552-56.256-135.744Q719.552\x20192\x20640\x20192H384q-79.552\x200-135.744\x2056.256Q192\x20304.448\x20192\x20384v256z\x22\x20p-id=\x224709\x22></path></svg>','color':''},{'name':'checkbox-check','configName':'CHECKBOX_CHECK_SVG','configColorName':'CHECKBOX_COLOR','svg':Il,'color':ek(0xd6)},{'name':'checkbox-indeterminate','configName':'CHECKBOX_INDETERMINATE_SVG','configColorName':ek(0x405),'svg':'<svg\x20t=\x221722595280953\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x224394\x22\x20width=\x2232\x22\x20height=\x2232\x22><path\x20d=\x22M128\x20384v256q0\x2012.608\x201.28\x2025.088\x201.216\x2012.544\x203.648\x2024.832\x202.432\x2012.352\x206.08\x2024.384t8.448\x2023.68q4.864\x2011.584\x2010.752\x2022.72\x205.952\x2011.072\x2012.928\x2021.504\x207.04\x2010.496\x2014.976\x2020.224\x208\x209.728\x2016.896\x2018.56\x208.896\x208.96\x2018.56\x2016.896\x209.728\x208\x2020.224\x2014.976\x2010.432\x207.04\x2021.504\x2012.928\x2011.136\x205.888\x2022.72\x2010.688\x2011.648\x204.864\x2023.68\x208.512\x2012.032\x203.648\x2024.32\x206.08\x2012.352\x202.432\x2024.896\x203.712Q371.392\x20896\x20384\x20896h256q12.608\x200\x2025.088-1.28\x2012.544-1.216\x2024.832-3.648\x2012.352-2.432\x2024.384-6.08t23.68-8.512q11.584-4.8\x2022.72-10.688\x2011.072-5.952\x2021.504-12.928\x2010.496-7.04\x2020.224-14.976\x209.728-8\x2018.56-16.896\x208.96-8.832\x2016.896-18.56\x208-9.728\x2014.976-20.224\x207.04-10.432\x2012.928-21.504\x205.888-11.136\x2010.688-22.72\x204.864-11.648\x208.512-23.68\x203.648-12.032\x206.08-24.32\x202.432-12.352\x203.712-24.896Q896\x20652.608\x20896\x20640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608\x20128\x20640\x20128H384q-12.608\x200-25.088\x201.28-12.544\x201.216-24.832\x203.648-12.352\x202.432-24.384\x206.08t-23.68\x208.448q-11.584\x204.864-22.72\x2010.752-11.072\x205.952-21.504\x2012.928-10.496\x207.04-20.224\x2014.976-9.664\x208-18.56\x2016.896-8.96\x208.896-16.896\x2018.56-8\x209.728-14.976\x2020.224-7.04\x2010.432-12.928\x2021.504-5.888\x2011.136-10.752\x2022.72-4.8\x2011.648-8.448\x2023.68-3.648\x2012.032-6.08\x2024.32-2.432\x2012.352-3.712\x2024.896Q128\x20371.392\x20128\x20384z\x20m566.016\x20166.336H330.112a38.4\x2038.4\x200\x200\x201\x200-76.8h363.904a38.4\x2038.4\x200\x200\x201\x200\x2076.8z\x22\x20p-id=\x224395\x22></path></svg>','color':'rgb(82,146,247)'},{'name':ek(0x22c),'configName':'CHECKBOX_CHECK_DISABLED_SVG','svg':Il,'color':'#DDE0EA'},{'name':ek(0x34f),'configName':ek(0x36c),'configColorName':'CHECKBOX_DISABLED_COLOR','svg':ek(0x2b3),'color':'#F1F2F4'},{'name':'icon-edit','configName':'ICON_EDIT_SVG','configColorName':ek(0x271),'svg':'<svg\x20t=\x221744798692576\x22\x20class=\x22icon\x22\x20viewBox=\x220\x200\x201024\x201024\x22\x20version=\x221.1\x22\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20p-id=\x226606\x22\x20width=\x22200\x22\x20height=\x22200\x22><path\x20d=\x22M855.296\x20894.528H168.768v-76.8h686.528v76.8z\x20m38.4-38.4q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.824\x204.8-3.2\x202.112-6.656\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.76\x204.736\x202.752\x202.688\x204.864\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488z\x20m-686.528\x200q0\x203.84-0.768\x207.488-0.704\x203.712-2.176\x207.232-1.472\x203.52-3.52\x206.656-2.112\x203.136-4.8\x205.76-2.688\x202.688-5.76\x204.8-3.2\x202.112-6.72\x203.584-3.456\x201.408-7.168\x202.176-3.712\x200.704-7.488\x200.704-3.84\x200-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488\x200-3.776\x200.704-7.488\x200.768-3.712\x202.176-7.168\x201.472-3.52\x203.584-6.656\x202.112-3.136\x204.736-5.76\x202.688-2.752\x205.824-4.8\x203.2-2.112\x206.656-3.584\x203.52-1.472\x207.232-2.176\x203.712-0.768\x207.488-0.768\x203.776\x200\x207.488\x200.768\x203.712\x200.704\x207.168\x202.176\x203.52\x201.472\x206.656\x203.584\x203.2\x202.048\x205.824\x204.736\x202.688\x202.688\x204.8\x205.824\x202.048\x203.2\x203.52\x206.656\x201.472\x203.456\x202.176\x207.168\x200.768\x203.712\x200.768\x207.488zM652.032\x20211.2l-369.92\x20370.368v89.344h90.048l369.664-369.856L652.032\x20211.2z\x20m-54.4-54.272q22.528-22.528\x2054.4-22.528\x2031.808\x200\x2054.336\x2022.528l89.792\x2089.856q22.464\x2022.464\x2022.464\x2054.272t-22.464\x2054.272l-369.664\x20369.856q-22.464\x2022.528-54.336\x2022.528H282.24q-31.808\x200-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808\x2022.4-54.272l369.92-370.368z\x22\x20p-id=\x226607\x22></path></svg>','color':'#4E5969'},{'name':'icon-select','configName':ek(0x1f7),'configColorName':'ICON_SELECT_COLOR','svg':ol,'color':ek(0x163)},{'name':'sort-asc','configName':'SORT_ASC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':fs,'color':'rgb(82,146,247)'},{'name':ek(0x272),'configName':'SORT_DESC_ICON_SVG','configColorName':'SORT_ICON_COLOR','svg':Qs,'color':'rgb(82,146,247)'},{'name':ek(0x9f),'configName':'SORTABLE_ICON_SVG','svg':Rt,'color':'#bec4c7'}]),m(this,'icons',new Map()),this['ctx']=p,this['init']();}async['init'](){const em=bn,p=[];for(let r=0x0;r<this[em(0x25a)]['length'];r++){const u=this[em(0x25a)][r];let w=u['color'],x=u['svg'];if(u[em(0xe9)]){const z=this['ctx']['config'][u[em(0xe9)]];z&&(w=z);}if(u['configName']){const C=this['ctx']['config'][u[em(0x1cd)]];C&&(x=C);}const y=this[em(0x231)](x,w)['then'](D=>{const en=em;this['icons']['set'](u[en(0x134)],D);});p['push'](y);}for(let D=0x0;D<this['ctx']['config']['ICONS'][em(0x3d0)];D++){const E=this['ctx']['config']['ICONS'][D];let F=E['color'];const G=this['createImageFromSVG'](E['svg'],F,E['isBlob'])[em(0x30b)](I=>{this['icons']['set'](E['name'],I);});p['push'](G);}await Promise['all'](p),this['ctx']['emit']('draw');}async['createImageFromSVG'](p,r,u=!0x1){const eo=bn,w=new DOMParser()[eo(0x138)](p,'image/svg+xml')['documentElement'];r&&w['querySelectorAll']('*')['forEach'](z=>{const ep=eo,C=z[ep(0x23b)](ep(0x3ad));(C==='currentColor'||C===null)&&z['setAttribute'](ep(0x3ad),r);});const x=new Image();let y='';if(u){const z=new Blob([new XMLSerializer()[eo(0xc8)](w)],{'type':'image/svg+xml'});y=URL[eo(0x2a3)](z);}else y='data:image/svg+xml;charset=utf-8,'+encodeURIComponent(new XMLSerializer()['serializeToString'](w));return x['src']=y,new Promise((C,D)=>{x['onerror']=()=>D(new Error('Failed\x20to\x20load\x20image:'+p)),x['onload']=()=>{C(x);};});}['get'](p){const eq=bn;return this[eq(0xcd)]['get'](p);}[bn(0x119)](p){return this['list']['find'](r=>r['name']===p);}}class ut extends fl{constructor(p,r,u,w,x,y,z){const er=bn;super(p,u,w,x,y,'header',z['fixed']),m(this,'align'),m(this,'hideHeaderSelection',!0x1),m(this,er(0x336),'middle'),m(this,'fixed'),m(this,'minWidth'),m(this,er(0x168)),m(this,'widthFillDisable'),m(this,'type'),m(this,'operation',!0x1),m(this,er(0x3a6)),m(this,'level'),m(this,'text'),m(this,'hide',!0x1),m(this,'displayText',''),m(this,er(0x193)),m(this,'rowspan'),m(this,'row'),m(this,er(0x31c)),m(this,'required',!0x1),m(this,'readonly',!0x1),m(this,'ellipsis',!0x1),m(this,'overflowTooltipShow',!0x0),m(this,er(0x1c6),[]),m(this,'column'),m(this,'colIndex'),m(this,'rowKey'),m(this,'rules'),m(this,'hasChildren'),m(this,'render'),m(this,'style',{}),m(this,'drawX',0x0),m(this,'drawY',0x0),m(this,'sortIconName','sort-default'),m(this,'sortAscIconName','sort-asc'),m(this,er(0x17b),'sort-desc'),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),m(this,'maxLineClampHeader','auto'),m(this,'domDataset',{}),m(this,'drawTextX',0x0),m(this,'drawTextY',0x0),m(this,'drawTextWidth',0x0),m(this,'drawTextHeight',0x0),m(this,'drawCellBgColor',''),m(this,'drawTextColor',''),m(this,er(0x152),''),m(this,'drawSelectionImageX',0x0),m(this,er(0x3a2),0x0),m(this,'drawSelectionImageWidth',0x0),m(this,'drawSelectionImageHeight',0x0),m(this,'drawSelectionImageName',''),m(this,'drawSelectionImageSource'),m(this,'drawSortImageX',0x0),m(this,'drawSortImageY',0x0),m(this,'drawSortImageWidth',0x0),m(this,'drawSortImageHeight',0x0),m(this,'drawSortImageName',''),m(this,'drawSortImageSource'),m(this,'renderHeaderType','default'),this['ctx']=p,this['x']=u,this['y']=w,this['width']=x,this['height']=y,this[er(0x267)]=x,this['visibleHeight']=y,this['colIndex']=r,this[er(0x31c)]=z[er(0x31c)],this[er(0x14f)]=z['minWidth'],this[er(0x168)]=z['maxWidth'],this['hide']=(typeof z[er(0x3db)]=='function'?z['hide'](z):z['hide'])||!0x1,this['type']=z['type']||'',this['editorType']=z['editorType']||er(0x286),this[er(0x407)]=z['hideHeaderSelection']||!0x1,this['align']=z['headerAlign']||z['align']||this[er(0x372)][er(0x29e)]['COLUMNS_ALIGN'],this['verticalAlign']=z['headerVerticalAlign']||z['verticalAlign']||this[er(0x372)]['config']['COLUMNS_VERTICAL_ALIGN'],this['fixed']=z[er(0x228)]||'',this['level']=z[er(0x258)]||0x0,this['operation']=z['operation']||!0x1,this['text']=z['title'],this['column']=z,this['colspan']=z['colspan']||0x1,this['widthFillDisable']=z['widthFillDisable']||!0x1,this['rowspan']=z['rowspan']||0x1,this['rules']=z['rules'],this['readonly']=z['readonly']||!0x1,this[er(0x33a)]=z['required']||!0x1,this['sortIconName']=z['sortIconName']||er(0x9f),this['sortAscIconName']=z['sortAscIconName']||er(0x19b),this['sortDescIconName']=z[er(0x17b)]||'sort-desc',this['rowKey']=Ol(),this['overflowTooltipShow']=z[er(0x320)]!==!0x1,this[er(0x32c)]=z['children']&&z['children']['length']>0x0||!0x1,this[er(0x17e)]=z[er(0xf7)],this['maxLineClampHeader']=z['maxLineClampHeader']||er(0x262),this['renderHeaderType']=z['renderHeaderType']||'default';}['isVerticalVisible'](){const {stageHeight:p}=this['ctx'],r=p;return!(this['y']+this['height']<=0x0||this['y']>=r);}['updateStyle'](){this['style']=this['getOverlayerViewsStyle']();}['updateContainer'](){const et=bn,{HEADER_CELL_STYLE_METHOD:p,HEADER_BG_COLOR:r,HEADER_TEXT_COLOR:u}=this['ctx'][et(0x29e)];let w=r,x=u;if(typeof p=='function'){const C=p,{backgroundColor:D,color:E,font:F}=C({'colIndex':this[et(0x165)],'column':this['column']})||{};D&&(w=D),E&&(x=E),F&&(this['drawTextFont']=F);}const {colKey:y,type:z}=this['ctx']['finderBar'];z===et(0xe1)&&y===this[et(0x31c)]&&(w=this['ctx']['config']['FINDER_CELL_BG_COLOR']),this['drawCellBgColor']=w,this['drawTextColor']=x;}['update'](){const eu=bn;this[eu(0x1d8)](),this['displayText']=this[eu(0x25d)](),this['drawX']=this['getDrawX'](),this[eu(0x14b)]=this[eu(0xd1)](),this['drawTextX']=this['drawX'],this[eu(0x3b9)]=this['drawY'],this['drawTextWidth']=this['width'],this['drawTextHeight']=this['height'],this[eu(0x178)]();}['draw'](){const ev=bn;this['drawEdge'](),this['drawSelection'](),this['drawText'](),this[ev(0x16c)](),this[ev(0x2da)]();}['drawEdge'](){const ew=bn,{paint:p,config:{BORDER_COLOR:r,BORDER:s}}=this['ctx'];p['drawRect'](this['drawX'],this['drawY'],this[ew(0x3ef)],this['height'],{'borderColor':s?r:ew(0x3d1),'fillColor':this['drawCellBgColor']});}['drawText'](){const ex=bn,{paint:p,config:{HEADER_FONT:r,CELL_PADDING:u,REQUIRED_COLOR:w}}=this['ctx'],x=this['displayText']+'_'+this[ex(0x270)]+'_'+this['drawTextFont'];this['ellipsis']=p['drawText'](this['displayText'],this['drawTextX'],this['drawTextY'],this['drawTextWidth'],this['drawTextHeight'],{'font':this['drawTextFont']||r,'padding':u,'color':this['drawTextColor'],'align':this['align'],'verticalAlign':this[ex(0x336)],'maxLineClamp':this[ex(0xed)],'offsetRight':this[ex(0x215)][ex(0x2eb)]?0x10:0x0,'offsetLeft':this['required']?0xc:0x0,'cacheTextKey':x,'textCallback':y=>{const ey=ex;this['column']['sortBy']&&(this['drawSortImageX']=y['right']+0x4,this[ey(0x209)]=y['top']+(y['height']-0x10)/0x2),this[ey(0x33a)]&&p['drawText']('*',y['left']-0x12,y['top']+(y['height']-0xc)/0x2,0x18,0x18,{'color':w,'font':ey(0x1d7),'align':ey(0xcc),'verticalAlign':'middle','padding':0x0});}});}['drawBg'](){const ez=bn;if(this['ctx']['dragHeaderIng'])return;const {ENABLE_SELECTOR:p,ENABLE_SELECTOR_SINGLE:r}=this['ctx'][ez(0x29e)];let u=-0x1,w=-0x1;if(this['ctx']['focusCellHeader']&&(u=this['ctx'][ez(0x296)]['colIndex'],w=this['ctx']['focusCellHeader']['colIndex']+this['ctx']['focusCellHeader']['colspan']-0x1),p&&!r){const {xArr:y}=this['ctx']['selector'];u=y[0x0],w=y[0x1];}const x=this[ez(0x193)]+this['colIndex']-0x1;this[ez(0x165)]>=u&&this[ez(0x165)]<=w&&x<=w&&this[ez(0x372)][ez(0x1d1)]['drawRect'](this['drawX'],this['drawY'],this['width'],this['height'],{'borderColor':'transparent','fillColor':this['ctx']['config']['SELECT_ROW_COL_BG_COLOR']||'transparent'});}['drawSelection'](){const eA=bn;if(!this['hideHeaderSelection']&&['index-selection','selection','selection-tree',eA(0x382)]['includes'](this[eA(0x8e)])){const {indeterminate:p,check:r,selectable:u}=this[eA(0x372)]['database'][eA(0x2bb)](),{CHECKBOX_SIZE:w=0x0,CELL_PADDING:x}=this['ctx'][eA(0x29e)];let y=this['drawX']+(this['width']-w)/0x2,z=this[eA(0x14b)]+(this[eA(0xfb)]-w)/0x2;this['drawTextX']=y+w-x/0x2,this['drawTextWidth']=this['drawX']+this['visibleWidth']-this['drawTextX'],(this['align']==='left'||this['align']==='right')&&(y=this[eA(0x29d)]+x,this['drawTextX']=y+w-x/0x2,this[eA(0x270)]=this['drawX']+this['visibleWidth']-this['drawTextX']),this['verticalAlign']==='top'?z=this['drawY']+x/0x2:this['verticalAlign']==='bottom'&&(z=this['drawY']+this['height']-w-x/0x2);let C=this[eA(0x372)]['icons']['get']('checkbox-uncheck'),D='checkbox-uncheck';p?(C=this[eA(0x372)]['icons']['get']('checkbox-indeterminate'),D='checkbox-indeterminate'):r&&u?(C=this[eA(0x372)]['icons']['get']('checkbox-check'),D='checkbox-check'):r&&!u?(C=this['ctx']['icons']['get']('checkbox-check-disabled'),D='checkbox-check-disabled'):!r&&u?(C=this[eA(0x372)][eA(0xcd)]['get']('checkbox-uncheck'),D='checkbox-uncheck'):(C=this['ctx']['icons']['get']('checkbox-disabled'),D='checkbox-disabled'),C&&(this['drawSelectionImageX']=y,this['drawSelectionImageY']=z,this['drawSelectionImageWidth']=w,this['drawSelectionImageHeight']=w,this['drawSelectionImageName']=D,this['drawSelectionImageSource']=C,this['ctx']['paint']['drawImage'](this['drawSelectionImageSource'],this['drawSelectionImageX'],this['drawSelectionImageY'],this['drawSelectionImageWidth'],this['drawSelectionImageHeight']));}}['drawSortIcon'](){const eB=bn;if(!this['column']['sortBy'])return;const p=0x10;let r=this['sortIconName'];const u=this['ctx']['database']['getSortState'](this[eB(0x31c)]);u['direction']==='asc'?r=this['sortAscIconName']:u['direction']==='desc'&&(r=this['sortDescIconName']);const w=this['ctx']['icons']['get'](r);w&&(this['drawSortImageWidth']=p,this['drawSortImageHeight']=p,this['drawSortImageName']=r,this['drawSortImageSource']=w,this['ctx']['paint']['drawImage'](this[eB(0x1a3)],this['drawSortImageX'],this[eB(0x209)],this[eB(0x303)],this['drawSortImageHeight']));}[bn(0x25d)](){const eC=bn;return this['render']&&this['renderHeaderType']===eC(0x17a)||['',null,void 0x0]['includes'](this['text'])?'':''+this['text'];}['getOverlayerViewsStyle'](){const eD=bn;let p='';return this['fixed']==='left'?p=this[eD(0x29d)]+'px':this['fixed']==='right'?p=this[eD(0x29d)]-(this['ctx']['stageWidth']-this['ctx']['fixedRightWidth'])+'px':p=this['drawX']-this['ctx']['fixedLeftWidth']+'px',{'position':'absolute','overflow':'hidden','left':p,'top':this['drawY']+0x1+'px','width':this['width']+'px','height':this['height']-0x2+'px','pointerEvents':eD(0x3d4),'userSelect':'none'};}}class Bs{constructor(p){m(this,'ctx'),m(this,'visibleHoverCell'),m(this,'resizeObserver'),m(this,'mutationObserver'),this['ctx']=p,this['init']();}['init'](){const eG=bn;this['resizeObserver']=new ResizeObserver(p=>{const eE=b;this[eE(0x372)][eE(0x186)](eE(0xd2)),this['ctx']['emit']('resizeObserver',p),this['ctx']['emit']('containerResize',this['ctx']['containerElement']);}),this['resizeObserver']['observe'](this['ctx']['containerElement']),this['mutationObserver']=new MutationObserver(p=>{const eF=b;for(const r of p)r['type']==='attributes'&&r['attributeName']==='class'&&(this['ctx']['config'][eF(0x21e)](),this['ctx'][eF(0x186)]('draw'));}),this[eG(0x372)]['config']['ENABLE_AUTO_THEME']&&this['mutationObserver'][eG(0x1ec)](document['documentElement'],{'attributes':!0x0,'attributeFilter':['class']}),this['ctx']['on']('mousedown',p=>{const eH=eG;if(this['isBusy'](p))return;const {offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u,{body:{height:y,visibleHeight:z,visibleWidth:C,y:D}}=this['ctx'],E=Math['min'](y,z);x>0x0&&x<C&&w>D&&w<D+E||this['ctx']['emit']('mousedownBodyOutside',p),p['button']===0x0&&(this[eH(0x35a)](x,w,this['ctx']['header']['renderCellHeaders'],F=>{const eI=eH;this['ctx']['focusCellHeader']=F,this['ctx']['focusCell']=void 0x0,this['ctx'][eI(0x186)]('cellHeaderMousedown',F,p);}),this['handleBodyEvent'](x,w,this['ctx'][eH(0x156)][eH(0x9c)],F=>{const eJ=eH;this['ctx'][eJ(0x323)](F),this['ctx']['focusCellHeader']=void 0x0,this[eJ(0x372)]['emit'](eJ(0x17d),F,p);}));}),this['ctx']['on']('mouseup',p=>{const eK=eG;if(p[eK(0x287)]!==0x0||this['isBusy'](p))return;const {offsetY:r,offsetX:u}=this['ctx'][eK(0x1f5)](p),w=r,x=u;this['handleHeaderEvent'](x,w,this['ctx']['header']['renderCellHeaders'],y=>{const eL=eK;this['ctx']['focusCellHeader']=y,this[eL(0x372)]['emit']('cellHeaderMouseup',y,p);}),this['handleBodyEvent'](x,w,this['ctx']['body']['renderRows'],y=>{const eM=eK;this['ctx']['setFocusCell'](y),this['ctx']['emit'](eM(0x222),y,p);});}),this['ctx']['on'](eG(0x3a3),p=>{const eN=eG;if(p['button']!==0x0||this['isBusy'](p))return;const r=this['ctx']['getOffset'](p)[eN(0x10f)],s=this['ctx']['getOffset'](p)['offsetX'];this['handleHeaderEvent'](s,r,this['ctx']['header']['renderCellHeaders'],u=>{this['ctx']['clickCellHeader']=u,this['ctx']['emit']('cellHeaderClick',u,p),this['selectionClick'](u,p),this['sortClick'](u,p);}),this['handleBodyEvent'](s,r,this['ctx'][eN(0x156)]['renderRows'],u=>{const eO=eN;this['ctx'][eO(0x39d)]=u,this['ctx'][eO(0x186)]('cellClick',u,p),this['selectionClick'](u,p),this['treeClick'](u,p);},!0x0),this[eN(0x1dc)](s,r,this['ctx'][eN(0x156)]['renderRows'],u=>{this['hoverIconClick'](u);},!0x1);}),this['ctx']['on'](eG(0x33f),p=>{const eP=eG;if(p['button']!==0x0||this[eP(0x335)](p))return;const r=this['ctx']['getOffset'](p)['offsetY'],s=this['ctx'][eP(0x1f5)](p)['offsetX'];this['handleHeaderEvent'](s,r,this['ctx'][eP(0xe1)]['renderCellHeaders'],u=>{const eQ=eP;this[eQ(0x372)]['emit']('cellHeaderDblclick',u,p);}),this[eP(0x1dc)](s,r,this['ctx'][eP(0x156)]['renderRows'],u=>{this['ctx']['clickCell']=u,this['ctx']['emit']('cellDblclick',u,p);});}),this['ctx']['on']('contextMenu',p=>{const eR=eG;if(this['isBusy'](p))return;const {offsetY:r,offsetX:u}=this[eR(0x372)]['getOffset'](p),w=r,x=u;this['handleHeaderEvent'](x,w,this['ctx']['header']['renderCellHeaders'],y=>{const eS=eR;this['ctx'][eS(0x186)]('cellHeaderContextMenuClick',y,p);}),this['handleBodyEvent'](x,w,this['ctx']['body']['renderRows'],y=>{this['ctx']['emit']('cellContextMenuClick',y,p);});}),this[eG(0x372)]['on'](eG(0x130),p=>{const eT=eG;!this[eT(0x372)]['containerElement']['contains'](p['relatedTarget'])&&this['ctx']['hoverCell']!==void 0x0&&(this['ctx']['hoverRow']=void 0x0,this['ctx']['hoverCell']=void 0x0,this['ctx']['emit']('draw'));}),this['ctx']['on']('mousemove',p=>{const eU=eG;if(this['isBusy'](p))return;this[eU(0x372)][eU(0x21a)]=!0x1,this['ctx']['stageElement']['style']['cursor']===eU(0x1cf)&&(this['ctx']['stageElement']['style'][eU(0x18b)]='default');const r=this['ctx'][eU(0x1f5)](p)[eU(0x10f)],s=this['ctx']['getOffset'](p)['offsetX'];this['handleHeaderEvent'](s,r,this['ctx']['header']['renderCellHeaders'],u=>{const eV=eU;this['ctx']['emit']('cellHeaderMouseenter',u,p),this['ctx']['hoverCellHeader']&&this['ctx'][eV(0x1cc)]!==u&&this['ctx']['emit'](eV(0x2ec),this['ctx']['hoverCellHeader'],p),this['imageEnterAndLeave'](u,p),this['ctx']['hoverCellHeader']!==u&&(this['ctx']['hoverCellHeader']=u,this['visibleHoverCell']=void 0x0,this['ctx']['emit']('cellHeaderHoverChange',u,p));}),this['handleBodyEvent'](s,r,this['ctx']['body']['renderRows'],u=>{const eW=eU;this['imageEnterAndLeave'](u,p),this['visibleHoverCell']!==u&&(this[eW(0x372)]['emit']('visibleCellMouseleave',u,p),this['visibleHoverCell']=u,this['ctx']['hoverCellHeader']=void 0x0,this['ctx']['emit']('visibleCellHoverChange',u,p));},!0x0),this['handleBodyEvent'](s,r,this[eU(0x372)]['body'][eU(0x9c)],u=>{const eX=eU;var w;this[eX(0x1b9)](u,p),this['ctx'][eX(0x186)]('cellMouseenter',u,p),this['ctx']['hoverCell']&&this['ctx']['hoverCell']!==u&&this['ctx'][eX(0x186)](eX(0x122),u,p),this['ctx']['hoverCell']!==u&&(((w=this['ctx']['hoverCell'])==null?void 0x0:w['rowKey'])!==u['rowKey']&&(this['ctx'][eX(0x150)]=u,this['ctx']['hoverRow']=this['ctx']['body']['renderRows']['find'](x=>x['rowKey']===u['rowKey']),this['ctx']['emit'](eX(0x325),this['ctx']['hoverRow'],u,p),this['ctx']['emit']('draw')),this['ctx']['hoverCell']=u,this['ctx']['emit']('cellHoverChange',u,p));}),this['handleFooterEvent'](s,r,this['ctx'][eU(0x298)]['renderRows'],u=>{const eY=eU;this[eY(0x372)]['emit']('cellFooterMouseenter',u,p),this['ctx']['hoverCell']&&this[eY(0x372)]['hoverCell']!==u&&this['ctx']['emit']('cellFooterMouseleave',u,p),this['ctx']['emit']('cellFooterHoverChange',u,p);});});}['hoverIconClick'](p){const eZ=bn;p['hoverIconName']&&this[eZ(0x372)]['isPointer']&&!this['ctx']['disableHoverIconClick']&&this['ctx']['emit']('hoverIconClick',p);}[bn(0x127)](p,r){const f0=bn;if(!(['selection','index-selection','selection-tree','tree-selection']['includes'](p['type'])&&this['ctx']['isPointer']))return;const {offsetY:u,offsetX:w}=this[f0(0x372)]['getOffset'](r),x=u,y=w;if(this['isInsideElement'](y,x,p['drawSelectionImageX'],p['drawSelectionImageY'],p[f0(0x2aa)],p['drawSelectionImageHeight'])){if(p instanceof ut)p['drawSelectionImageName']===f0(0x2c8)||p['drawSelectionImageName']==='checkbox-indeterminate'?this['ctx']['database']['toggleAllSelection']():p[f0(0x24f)]==='checkbox-check'&&this['ctx']['database']['clearSelection'](!0x0);else{if(!this['ctx']['database']['getRowSelectable'](p['rowKey']))return;this['ctx']['database']['toggleRowSelection'](p['rowKey'],p[f0(0x8e)]);}}}['treeClick'](p,r){const f1=bn;if(!(['tree','selection-tree','tree-selection']['includes'](p['type'])&&this['ctx']['isPointer']))return;const {offsetY:u,offsetX:w}=this[f1(0x372)]['getOffset'](r),x=u,y=w;if(!this['isInsideElement'](y,x,p['drawTreeImageX'],p['drawTreeImageY'],p['drawTreeImageWidth'],p['drawTreeImageHeight']))return;const z=this[f1(0x372)]['database'][f1(0x30a)](p['rowKey']),{expand:C=!0x1,expandLazy:D=!0x1}=z||{},{EXPAND_LAZY:E,EXPAND_LAZY_METHOD:F}=this['ctx'][f1(0x29e)];if(E&&F&&!C&&!D)typeof F=='function'&&(this['ctx']['database'][f1(0x164)](p[f1(0x387)],!0x0),F({'row':p['row'],'rowIndex':p['rowIndex'],'colIndex':p[f1(0x165)],'column':p[f1(0x215)],'value':p['getValue']()})['then'](G=>{const f2=f1;this['ctx']['database'][f2(0xe8)](p[f2(0x387)],G),this[f2(0x372)]['database']['expandLoading'](p['rowKey'],!0x1),this[f2(0x372)]['emit']('expandChange',this['ctx']['database']['getExpandRowKeys']());})['catch'](G=>{this['ctx']['database']['expandLoading'](p['rowKey'],!0x1),console['error'](G);}));else{const G=this[f1(0x372)]['database']['getIsExpand'](p['rowKey']);this['ctx']['database']['expandItem'](p['rowKey'],!G),this[f1(0x372)]['emit'](f1(0x112),this['ctx']['database']['getExpandRowKeys']());}}['sortClick'](p,r){const f3=bn,{offsetY:u,offsetX:w}=this['ctx']['getOffset'](r),x=u,y=w;if(!this['isInsideElement'](y,x,p['drawSortImageX'],p['drawSortImageY'],p['drawSortImageWidth'],p['drawSortImageHeight']))return;const z=this['ctx']['database']['getSortState'](p[f3(0x31c)]);let C;z['direction']==='none'?C='asc':z['direction']==='asc'?C='desc':C=f3(0x23e),this['ctx']['database'][f3(0x371)](p['key'],C);}['imageEnterAndLeave'](p,r){const f4=bn,{offsetY:u,offsetX:w}=this['ctx']['getOffset'](r),x=u,y=w;if(p instanceof ut){if(p['drawSelectionImageSource']&&this['isInsideElement'](y,x,p['drawSelectionImageX'],p['drawSelectionImageY'],p['drawSelectionImageWidth'],p['drawSelectionImageHeight'])){this['ctx'][f4(0x100)]['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}if(p[f4(0x1a3)]&&this['isInsideElement'](y,x,p['drawSortImageX'],p[f4(0x209)],p['drawSortImageWidth'],p[f4(0x170)])){this['ctx']['stageElement']['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}}if(p instanceof wt){if(p['drawSelectionImageSource']&&this['isInsideElement'](y,x,p['drawSelectionImageX'],p['drawSelectionImageY'],p['drawSelectionImageWidth'],p['drawSelectionImageHeight'])){this['ctx'][f4(0x100)]['style'][f4(0x18b)]='pointer',this[f4(0x372)]['isPointer']=!0x0,this['ctx']['database'][f4(0x367)](p['rowKey'])||(this['ctx']['stageElement']['style']['cursor']='not-allowed');return;}if(p['drawHoverImageSource']&&this['isInsideElement'](y,x,p['drawHoverImageX'],p['drawHoverImageY'],p['drawHoverImageWidth'],p['drawHoverImageHeight'])){this[f4(0x372)][f4(0x100)]['style']['cursor']='pointer',this['ctx']['isPointer']=!0x0;return;}if(p[f4(0x252)]&&this[f4(0xde)](y,x,p['drawTreeImageX'],p[f4(0x353)],p['drawTreeImageWidth'],p['drawTreeImageHeight'])){this['ctx']['stageElement']['style']['cursor']='pointer',this[f4(0x372)]['isPointer']=!0x0;return;}}}['isInsideElement'](p,r,u,w,x,y){return p>u&&p<u+x&&r>w&&r<w+y;}['isBusy'](p){const f5=bn,{offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u;if(this[f5(0x372)][f5(0x239)]||!this['ctx']['isTarget'](p)||this[f5(0x372)]['stageElement']['style']['cursor']===f5(0x13b)||this['ctx'][f5(0x100)]['style']['cursor']===f5(0x1a2)||this['ctx']['columnResizing']||this['ctx']['rowResizing'])return!0x0;const {SCROLLER_TRACK_SIZE:y}=this[f5(0x372)]['config'];return!!(this['ctx']['scrollerMove']||this['ctx']['scrollerFocus']||w>this['ctx']['stageHeight']-y||x>this['ctx']['stageWidth']-y);}['handleBodyEvent'](p,r,u,w,x=!0x1){if(this['isInsideBody'](r))for(const y of u){const z=y['fixedCells']['concat'](y['noFixedCells']);for(const C of z){const D=C['getDrawX'](),E=C['getDrawY']();if(x){if(p>D&&p<D+C['visibleWidth']&&r>E&&r<E+C['visibleHeight']){w(C);return;}}else{if(p>D&&p<D+C['width']&&r>E&&r<E+C['height']){w(C);return;}}}}}['handleHeaderEvent'](p,r,u,w){const f6=bn;for(const x of u){const y=x['getDrawX'](),z=x['getDrawY']();if(p>y&&p<y+x[f6(0x3ef)]&&r>z&&r<z+x['height']){w(x);return;}}}[bn(0x1bd)](p,r,u,w,x=!0x1){const f7=bn;for(const y of u){const z=y['fixedCells']['concat'](y['noFixedCells']);for(const C of z){const D=C['getDrawX'](),E=C['getDrawY']();if(x){if(p>D&&p<D+C['visibleWidth']&&r>E&&r<E+C['visibleHeight']){w(C);return;}}else{if(p>D&&p<D+C[f7(0x3ef)]&&r>E&&r<E+C['height']){w(C);return;}}}}}[bn(0x179)](p){return p>this['ctx']['body']['y']&&p<this['ctx']['body']['y']+this['ctx']['body']['visibleHeight'];}['destroy'](){const f8=bn;this['resizeObserver']['unobserve'](this['ctx'][f8(0x100)]),this['mutationObserver']['disconnect']();}}class As{constructor(p,r){const f9=bn;m(this,'eventBus'),m(this,'eventBrowser'),m(this,'eventTable'),m(this,'containerElement'),m(this,'stageElement'),m(this,f9(0x3a4)),m(this,'overlayerElement'),m(this,'editorElement'),m(this,f9(0x250)),m(this,'contextMenuElement'),m(this,'loadingElement'),m(this,f9(0x3bc),0x0),m(this,'stageHeight',0x0),m(this,'paint'),m(this,'icons'),m(this,'domSelectionStr',''),m(this,'isMouseoverTargetContainer',!0x1),m(this,'mousedown',!0x1),m(this,'isPointer',!0x1),m(this,'isEmpty',!0x1),m(this,'rowResizing',!0x1),m(this,'columnResizing',!0x1),m(this,'scrollerMove',!0x1),m(this,'scrollerFocus',!0x1),m(this,'autofillMove',!0x1),m(this,f9(0x3f6),!0x1),m(this,'disableHoverIconClick',!0x1),m(this,'selectColsIng',!0x1),m(this,'selectRowsIng',!0x1),m(this,'dragHeaderIng',!0x1),m(this,'finding',!0x1),m(this,'contextMenuIng',!0x1),m(this,f9(0x291),!0x1),m(this,'loading',!0x1),m(this,f9(0x1e4),!0x1),m(this,f9(0x2e0),!0x1),m(this,'hasSelection',!0x1),m(this,'hasTree',!0x1),m(this,'scrollY',0x0),m(this,f9(0x118),0x0),m(this,f9(0x1bb),0x0),m(this,f9(0x148),0x0),m(this,'lastCenterColIndex',0x0),m(this,'maxColIndex',0x0),m(this,'maxRowIndex',0x0),m(this,f9(0xc4)),m(this,'clickCell'),m(this,'focusCell'),m(this,'currentCell'),m(this,'hoverCell'),m(this,f9(0x136)),m(this,f9(0x296)),m(this,'hoverCellHeader'),m(this,'mouseX',0x0),m(this,'mouseY',0x0),m(this,f9(0x156),{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'headIndex':0x0,'tailIndex':0x0,'visibleRows':[],'renderRows':[],'data':[]}),m(this,'footer',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'renderRows':[]}),m(this,'header',{'x':0x0,'y':0x0,'width':0x0,'height':0x0,'visibleHeight':0x0,'visibleWidth':0x0,'visibleLeafColumns':[],'leafCellHeaders':[],'allCellHeaders':[],'renderLeafCellHeaders':[],'renderCellHeaders':[],'fixedLeftCellHeaders':[],'fixedRightCellHeaders':[],'renderCenterCellHeaders':[]}),m(this,'selector',{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1],'xArrCopy':[-0x1,-0x1],'yArrCopy':[-0x1,-0x1]}),m(this,'autofill',{'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]}),m(this,f9(0x3ee),{'text':'','rowIndex':-0x1,'colIndex':-0x1,'type':'body'}),m(this,f9(0x2c6)),m(this,'history'),m(this,'config');const {containerElement:u,stageElement:w,canvasElement:x,overlayerElement:y,editorElement:z,emptyElement:C,loadingElement:D,contextMenuElement:E}=p;this['containerElement']=u,w['tabIndex']=0x0,this['stageElement']=w,this['canvasElement']=x,this['overlayerElement']=y,this['editorElement']=z,this['emptyElement']=C,this[f9(0xfe)]=D,this['contextMenuElement']=E,this['config']=new Zl(r['config']||{}),this['eventBus']=new Ps(),this['eventBrowser']=new Ds(this),this[f9(0x300)]=new Bs(this),this['paint']=new Hs(this['canvasElement']),this[f9(0x2c6)]=new ks(this,r),this[f9(0xca)]=new Os(this),this[f9(0xcd)]=new vs(this);}['setConfig'](p){const fa=bn;this[fa(0x29e)]=new Zl(p);}['setItemValueByEditor'](p,r,u,w=!0x0,x=!0x0,y=!0x0){const fb=bn;if(this[fb(0x29e)][fb(0x278)]){const z=this['database']['getVirtualBodyCellByKey'](p,r);if(z&&(z['mergeRow']||z['mergeCol'])){const {dataList:C}=z['getSpanInfo'](),D=C['map'](E=>({...E,'value':u}));this['database'][fb(0x171)](D,w,y);return;}}this['database']['setItemValue'](p,r,u,w,x,!0x0,y);}[bn(0x121)](p,r=!0x0,u=!0x0){const fe=bn;if(this['config']['ENABLE_MERGE_CELL_LINK']){const w=[];p['forEach'](x=>{const fd=b,y=this['database']['getRowIndexForRowKey'](x['rowKey']),z=this['database']['getColIndexForKey'](x['key']);if(y===void 0x0||z===void 0x0)return;const C=this[fd(0x2c6)]['getVirtualBodyCell'](y,z);if(C){const {dataList:D}=C['getSpanInfo'](),E=D[fd(0x260)](F=>({...F,'value':x['value']}));w['push'](...E);}}),this[fe(0x2c6)][fe(0x171)](w,r,u);}else this['database']['batchSetItemValue'](p,r,u);}['setFocusCell'](p){const ff=bn;var r;if(this[ff(0xfa)]!==p){if(((r=this[ff(0xfa)])==null?void 0x0:r[ff(0x387)])!==p['rowKey']){this['currentCell']=p,this['emit'](ff(0x356),p);const s={'rowIndex':p['rowIndex'],'rowKey':p['rowKey'],'row':p['row']};this[ff(0x186)](ff(0xf9),s);}this[ff(0xfa)]=p,this[ff(0x186)](ff(0x8d),p);}}['clearSelector'](){const fg=bn;this['selector']['enable']=!0x1,this['selector']['xArr']=[-0x1,-0x1],this['selector']['yArr']=[-0x1,-0x1],this['emit'](fg(0x389));}['clearSelectorCopy'](){this['selector']['xArrCopy']=[-0x1,-0x1],this['selector']['yArrCopy']=[-0x1,-0x1];}['clearAutofill'](){this['autofill']={'enable':!0x1,'xArr':[-0x1,-0x1],'yArr':[-0x1,-0x1]};}[bn(0x169)](){const fj=bn,p=[],r=this[fj(0xf1)]['yArr'],u=this['selector'][fj(0x9d)];let w='';for(let x=0x0;x<=r[0x1]-r[0x0];x++){const y=[];for(let z=0x0;z<=u[0x1]-u[0x0];z++){const C=x+r[0x0],D=z+u[0x0],E=this['database'][fj(0x117)](C,D);E&&(E[fj(0xa5)]==='displayText'?y['push'](E['displayText']):y['push'](E['getValue']()));}w+=y['join']('\x09')+'\x0d',p['push'](y);}return w=w?w[fj(0x144)](/\r$/,''):'\x20',{'xArr':u,'yArr':r,'text':w,'value':p};}['setScroll'](p,r){const fk=bn;let u=Math['floor'](p);const w=this['body']['width']-this['body']['visibleWidth'];u<0x0?u=0x0:u>w&&(u=w);let x=Math['floor'](r),y=this['body']['height']-this['body']['visibleHeight'];this['config'][fk(0x396)]||(y=this['body']['height']+this['footer']['height']-this['body']['visibleHeight']),x<0x0?x=0x0:x>y&&(x=y),this['emit']('setScroll',u,x);}[bn(0x12f)](p){const fm=bn;let r=Math['floor'](p);const s=this['body']['width']-this[fm(0x156)]['visibleWidth'];r<0x0?r=0x0:r>s&&(r=s),this[fm(0x186)]('setScrollX',r);}['setScrollY'](p){const fn=bn;let r=Math['floor'](p),u=0x0;this['config'][fn(0x396)]||(u=this[fn(0x298)]['height']);const w=this['body']['height']-this['body']['visibleHeight']+u;r<0x0?r=0x0:r>w&&(r=w),this['emit']('setScrollY',r);}[bn(0x157)](p){const fo=bn;this[fo(0x186)]('startAdjustPosition',p);}['stopAdjustPosition'](){this['emit']('stopAdjustPosition');}['isTarget'](p){return!!this['containerElement']['contains'](p['target']);}['getOffset'](p){const {left:r,top:s}=this['containerElement']['getBoundingClientRect']();return{'offsetX':p['clientX']-r,'offsetY':p['clientY']-s};}['hasEvent'](p){const fp=bn;return this[fp(0x2be)]['has'](p);}['on'](p,r){this['eventBus']['on'](p,r);}[bn(0x2a2)](p,r){this['eventBus']['once'](p,r);}[bn(0x1a7)](p,r){this['eventBus']['off'](p,r);}['emit'](p,...r){this['eventBus']['emit'](p,...r);}['destroy'](){const fq=bn;this['eventTable']['destroy'](),this['eventBrowser']['destroy'](),this[fq(0x2be)]['destroy']();}}class nl{constructor(p,r){const fr=bn;m(this,'ctx'),m(this,'type'),m(this,fr(0x39b),!0x1),m(this,'trackX',0x0),m(this,'trackY',0x0),m(this,'trackWidth',0x0),m(this,fr(0x1d4),0x0),m(this,'splitPoints',[]),m(this,'barX',0x0),m(this,'barY',0x0),m(this,'barWidth',0x0),m(this,'barHeight',0x0),m(this,'distance',0x0),m(this,fr(0x3f9),0x0),m(this,'clientX',0x0),m(this,'clientY',0x0),m(this,fr(0x28c),0x0),m(this,'isDragging',!0x1),m(this,fr(0x20c),0x0),this[fr(0x372)]=p,this['type']=r,this['type']==='vertical'?this['scroll']=this['ctx']['scrollY']:this['scroll']=this[fr(0x372)]['scrollX'];}['onWheel'](p){this['updateScroll'](p);}[bn(0x2c7)](p){const ft=bn,{clientY:r,clientX:u}=p['touches'][0x0],w=r-this[ft(0x273)],x=u-this[ft(0x3fb)];let y=0x0;this['type']==='vertical'?(y=Math[ft(0x340)](0x0,Math['min'](this[ft(0x28c)]-w,this['distance'])),this['hasScrollbar']()&&!(y===0x0&&w>0x0||y===this[ft(0xef)]&&w<0x0)&&p[ft(0x284)]()):this['type']==='horizontal'&&(y=Math['max'](0x0,Math['min'](this['dragStart']-x,this['distance']))),this['scroll']=y;}[bn(0x1c4)](p){const {clientY:r,clientX:s}=p['touches'][0x0];this['clientX']=s,this['clientY']=r,this['dragStart']=this['scroll'];}['onMouseDown'](p){const fu=bn;if(!(p['target']instanceof Element)||!this['ctx'][fu(0x1e3)](p))return;if(this['ctx']['stageElement']['style']['cursor']==='row-resize'||this['ctx']['stageElement'][fu(0xf3)]['cursor']==='col-resize')return!0x0;const {offsetX:r,offsetY:u,clientX:w,clientY:x}=p;if(!(w==this['clientX']&&x==this['clientY'])){if(this[fu(0x2e2)](r,u))this['clientX']=w,this['clientY']=x,this['isDragging']=!0x0,this['ctx']['scrollerMove']=!0x0,this['isFocus']=!0x0,this['dragStart']=this['scroll'],p['preventDefault']();else{if(this['isOnTrack'](r,u)){let y=0x0;this['type']==='vertical'?y=(u-this['ctx']['header']['height']-this[fu(0x208)]/0x2)/(this['visibleDistance']-this[fu(0x208)])*this[fu(0xef)]:y=(r-this[fu(0x191)]/0x2)/(this[fu(0x3f9)]-this[fu(0x191)])*this[fu(0xef)],this['scroll']=Math['max'](0x0,Math['min'](y,this[fu(0xef)]));}}}}['onMouseUp'](){this['isDragging']=!0x1,this['isFocus']=!0x1,this['clientX']=0x0,this['clientY']=0x0;}['onMouseMove'](p){const fv=bn,{offsetX:r,offsetY:u,clientX:w,clientY:x,buttons:y}=p;if(this['isOnScrollbar'](r,u)&&p['target']===this['ctx']['canvasElement']?this['isFocus']=!0x0:this['isFocus']=!0x1,y===0x0||w==this['clientX']&&x==this[fv(0x273)])return;let z=0x0;if(this['type']==='horizontal'?z=w-this['clientX']:z=x-this['clientY'],this['isDragging']&&z!==0x0){let C=0x0;this['type']==='vertical'?C=this['dragStart']+z/(this['visibleDistance']-this['barHeight'])*this['distance']:C=this['dragStart']+z/(this['visibleDistance']-this['barWidth'])*this[fv(0xef)],this['scroll']=Math['max'](0x0,Math['min'](C,this[fv(0xef)]));}}['isPointInElement'](p,r,u,w,x,y){return p>=u&&p<=u+x&&r>=w&&r<=w+y;}['hasScrollbar'](){return this['type']==='vertical'?this['barHeight']>0x0:this['type']==='horizontal'?this['barWidth']>0x0:!0x1;}[bn(0x2e2)](p,r){const fw=bn;return this['isPointInElement'](p,r,this[fw(0x2c4)],this[fw(0x3d8)],this['barWidth'],this['barHeight']);}['isOnTrack'](p,r){const fx=bn;return this['isPointInElement'](p,r,this['trackX'],this['trackY'],this['trackWidth'],this[fx(0x1d4)]);}['updateScroll'](p){const fy=bn,r=p['deltaX'],s=p['deltaY'];this['type']==='vertical'&&p['shiftKey']===!0x1?(this['hasScrollbar']()&&!(this['scroll']===0x0&&s<0x0||this['scroll']===this['distance']&&s>0x0)&&p[fy(0x284)](),this['scroll']=Math['max'](0x0,Math[fy(0x10c)](this['scroll']+s,this['distance']))):this['type']==='horizontal'&&(p['shiftKey']?this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+s,this['distance'])):this['scroll']=Math['max'](0x0,Math['min'](this['scroll']+r,this[fy(0xef)])));}['updatedSize'](){const fz=bn,{body:p,header:r,stageHeight:u,stageWidth:w,config:{SCROLLER_TRACK_SIZE:x=0x0,SCROLLER_SIZE:z=0x0,BORDER:C}}=this[fz(0x372)],D=w,E=u,F=r['height'],G=r['width'],K=p[fz(0xfb)],L=this['ctx'][fz(0x298)]['height'];if(this['type']==='vertical'){this['visibleDistance']=E-x-F,this['distance']=K-this['visibleDistance']+L,this['trackX']=D-x,this['trackY']=0x0,this['splitPoints']=[this['trackX'],F,this[fz(0x1f2)]+x,F],this['trackWidth']=x,this['trackHeight']=E,this['barX']=this['trackX']-0x1+(x-z)/0x2,this['barWidth']=z;const M=this['distance']?this['visibleDistance']/(K+L):0x0;let N=Math['floor'](M*this['visibleDistance']);N<0x1e?N=0x1e:N>this['visibleDistance']&&(N=0x0),this['barHeight']=N,this['barY']=F+this['scroll']/this['distance']*(this['visibleDistance']-this[fz(0x208)]),this['scroll']=Math['max'](0x0,Math[fz(0x10c)](this['scroll'],this['distance']));}else{this['visibleDistance']=D-x,this['distance']=G-this['visibleDistance'],this['splitPoints']=[D-x,E-x,D-x,E];const O=C?0x0:0.5;this['trackX']=0x0,this['trackY']=E-x+O,this['trackWidth']=D,this['trackHeight']=x;const Q=this[fz(0xef)]?this['visibleDistance']/G:0x0;let R=Math['floor'](Q*this['visibleDistance']);this['barY']=this[fz(0xf8)]-0x1+(x-z)/0x2,R<0x1e?R=0x1e:R>=this['visibleDistance']&&(R=0x0),this[fz(0x191)]=R,this['barHeight']=z,this['barX']=this['scroll']/this['distance']*(this['visibleDistance']-this['barWidth']),this[fz(0x20c)]=Math['max'](0x0,Math['min'](this['scroll'],this[fz(0xef)]));}}['draw'](){const fA=bn,{config:{SCROLLER_FOCUS_COLOR:p,SCROLLER_COLOR:r,BORDER_COLOR:u,BORDER:w,SCROLLER_TRACK_COLOR:x}}=this['ctx'];this['updatedSize']();let y=u;w||(y='transparent'),this['ctx']['paint'][fA(0xf0)](this[fA(0x1f2)],this['trackY'],this['trackWidth'],this[fA(0x1d4)],{'borderColor':y,'fillColor':x}),this[fA(0x372)]['paint']['drawRect'](this['barX'],this['barY'],this['barWidth'],this['barHeight'],{'fillColor':this['isFocus']||this['isDragging']?p:r,'radius':0x4}),this['splitPoints']['length']>0x0&&this[fA(0x372)]['paint']['drawLine'](this[fA(0x395)],{'borderColor':y,'borderWidth':0x1}),this['ctx']['scrollerFocus']=this['isFocus'];}}class _s{constructor(p){const fB=bn;m(this,'ctx'),m(this,fB(0x1fd)),m(this,'horizontalScrollbar'),m(this,'mousedownHeader',!0x1),m(this,fB(0x1b0),''),m(this,'adjustPositionY',''),m(this,'timerX',0x0),m(this,'timerY',0x0),this['ctx']=p,this['verticalScrollbar']=new nl(p,fB(0x189)),this[fB(0x2d4)]=new nl(p,'horizontal'),this['ctx']['on']('wheel',r=>this['onWheel'](r)),this[fB(0x372)]['on']('mousedown',r=>this['onMouseDown'](r)),this['ctx']['on']('mousemove',r=>this['onMouseMove'](r)),this['ctx']['on']('mouseup',()=>this[fB(0x146)]()),this['ctx']['on']('touchmove',r=>this['onTouchmove'](r)),this[fB(0x372)]['on']('touchstart',r=>{this['onTouchstart'](r);}),this['ctx']['on'](fB(0x3c4),(r,s)=>{this['setScroll'](r,s);}),this['ctx']['on']('setScrollX',r=>{this['setScrollX'](r);}),this['ctx']['on']('setScrollY',r=>{this['setScrollY'](r);}),this[fB(0x372)]['on']('scrollToIndex',(r,s)=>{this['scrollToIndex'](r,s);}),this['ctx']['on']('cellHeaderMousedown',()=>{this['mousedownHeader']=!0x0;}),this['ctx']['on']('startAdjustPosition',r=>{this['startAdjustPosition'](r);}),this[fB(0x372)]['on']('stopAdjustPosition',()=>{this['stopAdjustPosition']();});}['onWheel'](p){this['verticalScrollbar']['onWheel'](p),this['horizontalScrollbar']['onWheel'](p),this['draw']();}['onTouchmove'](p){const fC=bn;this['verticalScrollbar']['onTouchmove'](p),this['horizontalScrollbar'][fC(0x2c7)](p),this['draw']();}['onTouchstart'](p){const fD=bn;this['verticalScrollbar']['onTouchstart'](p),this[fD(0x2d4)][fD(0x1c4)](p),this['draw']();}['onMouseDown'](p){this['verticalScrollbar']['onMouseDown'](p),this['horizontalScrollbar']['onMouseDown'](p),this['draw']();}[bn(0x142)](p){const fE=bn;this['verticalScrollbar'][fE(0x142)](p),this['horizontalScrollbar']['onMouseMove'](p),this['draw']();}['onMouseUp'](){const fF=bn;this[fF(0x1fb)]=!0x1,this[fF(0x1fd)]['onMouseUp'](),this['horizontalScrollbar']['onMouseUp'](),this['ctx']['scrollerMove']=!0x1;}['draw'](){const fG=bn;this['verticalScrollbar'][fG(0x3ed)](),this['horizontalScrollbar']['draw']();const p=Math['floor'](this['horizontalScrollbar']['scroll']),r=Math['floor'](this['verticalScrollbar']['scroll']);(p!==this['ctx']['scrollX']||r!==this['ctx'][fG(0x2e4)])&&(this['ctx'][fG(0x186)]('onScroll',p,r),p!==this[fG(0x372)]['scrollX']&&this[fG(0x372)]['emit']('onScrollX',p),r!==this[fG(0x372)]['scrollY']&&this['ctx'][fG(0x186)]('onScrollY',r),this['ctx']['scrollX']=p,this['ctx']['scrollY']=r,this['ctx']['emit']('draw'));}['setScroll'](p,r){this['horizontalScrollbar']['scroll']=p,this['verticalScrollbar']['scroll']=r,this['ctx']['emit']('draw'),this['ctx']['emit']('onScroll',p,r);}['setScrollX'](p){const fH=bn;this['horizontalScrollbar']['scroll']=p,this['ctx'][fH(0x186)]('draw');}[bn(0xe5)](p){const fI=bn;this['verticalScrollbar'][fI(0x20c)]=p,this['ctx']['emit']('draw');}['scrollToColkey'](p){const {header:r}=this['ctx'],s=r['leafCellHeaders']['find'](u=>u['key']===p);s&&this['setScrollX'](s['x']-r['visibleWidth']/0x2);}['scrollToColIndex'](p){const fJ=bn,{header:r}=this[fJ(0x372)],s=r['leafCellHeaders']['find'](u=>u['colIndex']===p);s&&this['setScrollX'](s['x']-r['visibleWidth']/0x2);}['scrollToRowIndex'](p){const {body:r,database:u}=this['ctx'],{top:w}=u['getPositionForRowIndex'](p);this['setScrollY'](w-r['visibleHeight']/0x2);}['scrollToIndex'](p,r){this['scrollToRowIndex'](p),this['scrollToColIndex'](r);}['scrollToRowKey'](p){const fK=bn,{body:r,database:u}=this['ctx'],w=u['getRowIndexForRowKey'](p);if(w===void 0x0)return;const {top:x}=u[fK(0xf2)](w);this['setScrollY'](x-r['visibleHeight']/0x2);}['startAdjustPosition'](p){const fL=bn;var r,u;const {offsetX:w,offsetY:x}=this['ctx']['getOffset'](p);let y='',z='';if(((r=this[fL(0x372)]['focusCell'])==null?void 0x0:r[fL(0x228)])!==fL(0x277)&&w<this['ctx']['fixedLeftWidth']?y='left':((u=this[fL(0x372)][fL(0xfa)])==null?void 0x0:u['fixed'])!=='right'&&w>this['ctx']['body']['visibleWidth']-this[fL(0x372)]['fixedRightWidth']?y='right':(y='',this['stopAdjustPosition'](!0x0,!0x1)),!this['mousedownHeader']&&x<this['ctx']['header']['visibleHeight']?z='top':x>this['ctx']['header']['visibleHeight']+this[fL(0x372)]['body'][fL(0x1f3)]?z=fL(0x2c5):(z='',this[fL(0x2f3)](!0x1,!0x0)),y&&this['adjustPositionX']!==y){this[fL(0x1b0)]=y;let C=0xa*(y===fL(0x277)?-0x1:0x1);this['timerX']&&(clearInterval(this['timerX']),this['timerX']=0x0),this['timerX']=setInterval(()=>{C*=1.5;const {scrollX:D}=this['ctx'],E=D+C;(E<0x0||E>this['ctx']['body']['width'])&&(clearInterval(this['timerX']),this['timerX']=0x0),this['ctx']['setScrollX'](E);},0x64);}if(z&&this[fL(0x15d)]!==z){this['adjustPositionY']=z;let D=0xa*(z===fL(0x295)?-0x1:0x1);this[fL(0x3ae)]&&(clearInterval(this['timerY']),this['timerY']=0x0),this[fL(0x3ae)]=setInterval(()=>{const fM=fL;D*=1.5;const {scrollY:E}=this['ctx'],F=E+D;(F<0x0||F>this[fM(0x372)]['body']['height'])&&(clearInterval(this['timerY']),this['timerY']=0x0),this['ctx']['setScrollY'](F);},0x64);}}[bn(0x2f3)](p=!0x0,r=!0x0){const fN=bn;p&&(this[fN(0x1b0)]='',this['timerX']&&(clearInterval(this['timerX']),this[fN(0x167)]=0x0)),r&&(this['adjustPositionY']='',this['timerY']&&(clearInterval(this['timerY']),this['timerY']=0x0));}}class qs{constructor(p,r){m(this,'root'),m(this,'key'),m(this,'childrenKey'),this['root']=p,this['key']=r?.['key']||'key',this['childrenKey']=r?.['childrenKey']||'children';}['getTree'](){return this['root'];}['treeMove'](p,r,u){const fO=bn,w=this['findNodeWithParent'](this['root'],p[this[fO(0x31c)]]);if(!w)throw new Error(fO(0x24a));const {parent:x,index:y,node:z}=w;if(x){const F=x[this['childrenKey']];F['splice'](y,0x1),F['length']===0x0&&delete x[this['childrenKey']];}else this['root']['splice'](y,0x1);const C=this[fO(0xd3)](this['root'],r[this[fO(0x31c)]]);if(!C)throw new Error('Target\x20node\x20not\x20found');const {parent:D,index:E}=C;u==='before'?D?D[this['childrenKey']]['splice'](E,0x0,z):this['root']['splice'](E,0x0,z):u==='after'&&(D?D[this['childrenKey']]['splice'](E+0x1,0x0,z):this['root']['splice'](E+0x1,0x0,z));}['findNodeWithParent'](p,r,u=null){const fP=bn;for(let w=0x0;w<p[fP(0x3d0)];w++){const x=p[w];if(x[this[fP(0x31c)]]===r)return{'parent':u,'index':w,'node':x};if(x[this[fP(0xcf)]]){const y=this['findNodeWithParent'](x[this['childrenKey']],r,x);if(y)return y;}}return null;}}class $s{constructor(p){const fQ=bn;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,fQ(0x28e),null),m(this,'dragTarget',null),m(this,'dragingCell'),m(this,'dragCellDiff',0x0),m(this,'resizeNum',0x0),m(this,'isResizing',!0x1),m(this,'clientX',0x0),m(this,fQ(0x233),0x0),m(this,'columnIndex',0x0),m(this,'isMouseDown',!0x1),m(this,'columns'),m(this,fQ(0x1f0)),m(this,fQ(0x264),[]),m(this,'visibleHeight',0x0),m(this,'visibleWidth',0x0),m(this,'allCellHeaders',[]),m(this,'leafCellHeaders',[]),m(this,'renderLeafCellHeaders',[]),m(this,'fixedLeftCellHeaders',[]),m(this,'centerCellHeaders',[]),m(this,'fixedRightCellHeaders',[]),m(this,'renderCenterCellHeaders',[]),m(this,'renderFixedCellHeaders',[]),this[fQ(0x372)]=p,this['ctx']['on']('resetHeader',Ft(()=>{this['init'](),this['ctx']['clearSelector'](),this['ctx']['emit']('draw');},0x64)),this['init'](),this['initResizeColumn'](),this['initDragColumn']();}['init'](p=!0x1){const fR=bn,{config:{HEADER_HEIGHT:r,SCROLLER_TRACK_SIZE:u}}=this[fR(0x372)];if(!p){const F=this['ctx'][fR(0x2c6)]['getColumns']();this['columns']=F;}this['allCellHeaders']=[],this['leafCellHeaders']=[],this[fR(0xa7)]=[],this['fixedRightCellHeaders']=[],this['centerCellHeaders']=[],this['visibleColumns']=Dl(this['columns']);const w=Di(this[fR(0x1f0)]),x=Ki(this['visibleColumns']);this['height']=r*w,this[fR(0x1f3)]=this['height'],this['width']=x['reduce']((G,K)=>{const L=K['width']||0x64,{maxWidth:M,minWidth:N}=K;return M&&L>M?G+M:N&&L<N?G+N:G+L;},0x0),this['columnIndex']=0x0,this['resizeNum']=0x0;const y=ws(Pi(this['visibleColumns'],w));this['render'](y,0x0),this['ctx']['database']['updateColIndexKeyMap'](this['leafCellHeaders']);const z=this[fR(0x372)][fR(0x132)]['getBoundingClientRect']();this['resizeNum']>0x0?this['ctx']['stageWidth']=Math['floor'](z[fR(0x3ef)]):this['ctx']['stageWidth']=Math['min'](Math[fR(0x1b8)](this[fR(0x3ef)]+u),Math['floor'](z['width'])),this['ctx']['stageElement'][fR(0xf3)]['width']=this['ctx'][fR(0x3bc)]+'px',this['visibleWidth']=this['ctx']['stageWidth']-u;const C=this['visibleWidth']-this['width'];if(this['resizeNum']&&C>0x0){const G=Math['floor'](C/this[fR(0x304)]*0x64)/0x64;this[fR(0x210)](G);}const D=this['fixedLeftCellHeaders'][fR(0x31f)](K=>!K['hasChildren']);this['ctx']['fixedLeftWidth']=D['reduce']((K,L)=>K+L['width'],0x0);const E=this['fixedRightCellHeaders']['filter'](K=>!K['hasChildren']);this['ctx']['fixedRightWidth']=E['reduce']((K,L)=>K+L[fR(0x3ef)],u),this['ctx']['maxColIndex']=this['leafCellHeaders']['length']-0x1,this['ctx'][fR(0xe1)]['x']=this['x'],this['ctx']['header']['y']=this['y'],this[fR(0x372)][fR(0xe1)]['width']=this['width'],this[fR(0x372)]['header'][fR(0xfb)]=this['height'],this['ctx']['header']['allCellHeaders']=this['allCellHeaders'],this[fR(0x372)][fR(0xe1)][fR(0x267)]=this['visibleWidth'],this['ctx']['header']['visibleHeight']=this['visibleHeight'];}['initResizeColumn'](){const fS=bn;this[fS(0x372)]['on']('mousedown',p=>{this['ctx']['config']['ENABLE_RESIZE_COLUMN']&&this['ctx']['isTarget'](p)&&(this['clientX']=p['clientX'],this['resizeTarget']?(this['isResizing']=!0x0,this['ctx']['columnResizing']=!0x0):this['isResizing']=!0x1,this['isMouseDown']=!0x0);}),this['ctx']['on']('mouseup',()=>{const fT=fS;this['ctx']['config']['ENABLE_RESIZE_COLUMN']&&(this['isMouseDown']=!0x1,this[fT(0x233)]!==0x0&&this['resizeTarget']&&this['resizeColumn'](this['resizeTarget'],this[fT(0x233)]),this['resizeTarget']=null,this['isResizing']=!0x1,this['isMouseDown']=!0x1,this['ctx']['columnResizing']=!0x1,this[fT(0x3fb)]=0x0,this['resizeDiff']=0x0);}),this[fS(0x372)]['on']('mousemove',p=>{const fU=fS;if(!this['ctx']['config']['ENABLE_RESIZE_COLUMN']||this['ctx'][fU(0x291)])return;const {stageWidth:r,config:{RESIZE_COLUMN_MIN_WIDTH:u}}=this['ctx'];if(this[fU(0x3b2)]&&this['resizeTarget']){const w=this[fU(0x28e)]['width'],x=this['resizeTarget']['minWidth'],y=this['resizeTarget'][fU(0x168)];let z=p['clientX']-this['clientX'];z+w<u&&(z=-(w-u)),x&&z+w<x&&(z=-(w-x)),y&&z+w>y&&(z=y-w),this[fU(0x233)]=z,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(p['offsetX']<0x0||p['offsetX']>this['visibleWidth']){this['ctx'][fU(0x100)][fU(0xf3)]['cursor']===fU(0x1a2)&&(this['ctx']['stageElement']['style']['cursor']='default');return;}this['ctx']['stageElement']['style']['cursor']===fU(0x1a2)&&(this[fU(0x372)]['stageElement'][fU(0xf3)]['cursor']='default');const C=[...this['renderFixedCellHeaders'],...this['renderCenterCellHeaders']];for(const D of C){const {offsetX:E,offsetY:F}=this['ctx']['getOffset'](p),G=E,K=F,L=D['getDrawX'](),M=D['getDrawY']();if(G>L+D['width']-0x5&&G<L+D['width']+0x4&&G<r-0x4&&K>M){const N=D[fU(0x165)]+D[fU(0x193)]-0x1,O=this['leafCellHeaders']['find'](Q=>Q['colIndex']===N);if(!O||!O['fixed']&&this['ctx']['stageWidth']-this['ctx']['fixedRightWidth']<L+D[fU(0x3ef)])return;this['ctx']['isTarget'](p)&&F<=this[fU(0xfb)]&&(this['ctx']['stageElement']['style']['cursor']='col-resize',this['resizeTarget']=O);}}}});}['initDragColumn'](){const fV=bn;this[fV(0x372)]['on']('cellHeaderMousedown',p=>{const fW=fV;this[fW(0x372)]['config']['ENABLE_DRAG_COLUMN']&&(p['column']['dragDisabled']||(this['dragTarget']===p?(this[fW(0x372)][fW(0xa9)]=!0x0,this['dragCellDiff']=this['ctx'][fW(0x2c2)]-p['drawX'],this['ctx']['stageElement'][fW(0xf3)]['cursor']='grabbing'):(this['dragTarget']=p,this['ctx']['dragHeaderIng']=!0x1)));}),this['ctx']['on']('cellMousedown',()=>{this['ctx']['config']['ENABLE_DRAG_COLUMN']&&(this['dragTarget']=null,this['ctx']['dragHeaderIng']=!0x1);}),this['ctx']['on']('mouseup',()=>{const fX=fV;if(this['ctx']['config']['ENABLE_DRAG_COLUMN']){if(this['dragingCell']&&this[fX(0x1ef)]){const p=(D,E={})=>(D['forEach']((F,G)=>{const fY=fX;F['children']&&p(F['children'],E),E[F[fY(0x31c)]]=G;}),E),r=this['ctx']['database']['getColumns'](),u=Pi(r,Di(r)),w=new qs(u,{'key':'key','childrenKey':'children'}),x=this['dragTarget']['colIndex']>this[fX(0x39f)]['colIndex']?'before':fX(0x1b3);w['treeMove'](this['dragTarget']['column'],this['dragingCell']['column'],x);const y=w['getTree'](),z=p(y);this['ctx'][fX(0x2c6)]['setCustomHeader']({'sortData':z}),this[fX(0x1fe)]();const C={'source':this['dragTarget'],'target':this['dragingCell'],'columns':u};this['ctx'][fX(0x186)]('columnDragChange',C);}this['ctx']['dragHeaderIng']&&this['dragTarget']&&(this['ctx']['dragHeaderIng']=!0x1,this['dragTarget']=null,this[fX(0x39f)]=void 0x0,this['dragCellDiff']=0x0,this['ctx'][fX(0x389)](),this['ctx'][fX(0x296)]=void 0x0,this['ctx']['stageElement']['style']['cursor']='default',this['ctx'][fX(0x186)]('draw'));}}),this['ctx']['on']('mousemove',p=>{const fZ=fV;this['ctx']['config'][fZ(0x378)]&&(!this['ctx']['dragHeaderIng']||!this['dragTarget']||(this['dragTarget'][fZ(0x228)]||this['ctx']['startAdjustPosition'](p),this['ctx']['emit']('draw')));}),this['ctx']['on']('cellHoverChange',p=>{const g0=fV;this['ctx']['config'][g0(0x378)]&&(p['column']['dragDisabled']||(this['dragingCell']=this[g0(0x3b4)](p['colIndex'])));}),this['ctx']['on']('cellHeaderHoverChange',p=>{const g1=fV;this['ctx']['config'][g1(0x378)]&&(p['column']['dragDisabled']||(this[g1(0x39f)]=this['getDragCellHeader'](p['colIndex'])));});}['getDragCellHeader'](p){const g2=bn;if(!this['dragTarget']||!this['ctx']['dragHeaderIng'])return;const {column:{parentKey:r},key:u,level:w,fixed:x}=this[g2(0x1ef)],y=this[g2(0xe2)]['find'](z=>z['key']!==u&&z['fixed']===x&&z['column'][g2(0x258)]===w&&z['column'][g2(0x24d)]===r&&z['colIndex']<=p&&z['colIndex']+z['colspan']-0x1>=p);if(this['ctx'][g2(0xa9)]){const z=y?'grabbing':'not-allowed';this['ctx']['stageElement']['style']['cursor']=z;}return y;}['resizeColumn'](p,r){const g5=bn,u=y=>{const g3=b;y[g3(0x288)](z=>{const g4=g3;if(z['children']&&z[g4(0x1c6)]['length']>0x0&&u(z[g4(0x1c6)]),z['key']===p['key']){const C=z['width']||0x64;z[g4(0x3ef)]=C+r;}});};u(this['columns']);let w=0x0;if(this['width']<this['visibleWidth']){const y=this['visibleWidth']-this[g5(0x3ef)];w=Math['floor'](y/this['resizeNum']*0x64)/0x64,this['resizeAllColumn'](w);}const x=p['width']+r+w;this[g5(0x372)]['emit'](g5(0x1f6),{'colIndex':p['colIndex'],'key':p[g5(0x31c)],'oldWidth':p['width'],'width':x,'column':p['column'],'columns':this['columns']}),this['ctx']['database']['setCustomHeaderResizableData'](p['key'],x),this[g5(0x1fe)](!0x0),this['ctx']['emit']('draw');}['resizeAllColumn'](p){const g6=bn;if(p===0x0)return;const r=new Map();let u=!0x0;for(const x of this['allCellHeaders'])if(x['widthFillDisable'])r[g6(0x35c)](x['key'],x['width']);else{const y=x['width']+p*x[g6(0x193)];r['set'](x['key'],y),y<this['ctx']['config'][g6(0xd8)]&&(u=!0x1);}if(!u)return;const w=z=>{z['forEach'](C=>{const g7=b;r['has'](C['key'])&&(C['width']=r['get'](C['key'])),C['children']&&C[g7(0x1c6)]['length']>0x0&&w(C['children']);});};w(this[g6(0x224)]),this['init'](!0x0),this['ctx']['emit']('draw');}['getCustomHeader'](){const g8=bn,p=this[g8(0x372)][g8(0x2c6)][g8(0x10d)](),r=this['ctx']['database']['getCustomHeader'](),{sortData:s={}}=r;return Object[g8(0x345)](s)['length']===0x0?{'columns':p,'customHeader':r}:{'columns':Pi(p,Di(p)),'customHeader':r};}['render'](p,r){const g9=bn,u=p['length'];let w=r;const {HEADER_HEIGHT:x=0x0}=this['ctx'][g9(0x29e)];for(let y=0x0;y<u;y++){const z=p[y],C=x*(z['rowspan']||0x0),D=x*(z['level']||0x0);let {minWidth:E,maxWidth:F}=z,G=z['width']||0x64;E&&G<E&&(G=E),F&&G>F&&(G=F),z['children']&&(G=Ki(z['children'])['reduce']((L,M)=>L+(M?.['width']||0x64),0x0));const K=new ut(this['ctx'],this['columnIndex'],w,D,G,C,z);this['ctx']['database']['setHeader'](z['key'],K),this['allCellHeaders']['push'](K),z[g9(0x1c6)]||(this['leafCellHeaders']['push'](K),K['column']['widthFillDisable']||this[g9(0x304)]++),z[g9(0x228)]==='left'?this['fixedLeftCellHeaders']['push'](K):z['fixed']===g9(0x238)?this[g9(0x401)]['push'](K):this['centerCellHeaders']['push'](K),!z['children']&&this['columnIndex']++,z['children']&&this['render'](z[g9(0x1c6)],w),w+=G;}}['drawTipLine'](){const ga=bn;if(this['isResizing']&&this['resizeTarget']){const {stageHeight:p,config:{RESIZE_COLUMN_LINE_COLOR:r,RESIZE_COLUMN_TEXT_COLOR:u,RESIZE_COLUMN_TEXT_BG_COLOR:w,ENABLE_RESIZE_COLUMN_TEXT:x}}=this['ctx'],y=this['resizeTarget']['getDrawX'](),z=this['resizeTarget']['width'],C=y+z+this['resizeDiff']-0.5,D=[C-0.5,0x0,C-0.5,p];if(this['ctx']['paint']['drawLine'](D,{'borderColor':r}),x){const E=Math['floor'](z+this['resizeDiff'])+'px',F=0x2d,G=0x18;this['ctx'][ga(0x1d1)]['drawRect'](C+F/0x2,this['ctx'][ga(0x15c)]-G/0x2,F,G,{'fillColor':w,'borderWidth':0x0,'borderColor':'transparent'}),this[ga(0x372)]['paint']['drawText'](E,C+F/0x2,this['ctx']['mouseY']-G/0x2,F,G+0x2,{'padding':0x0,'color':u,'align':'center','verticalAlign':'middle'});}}}['drawDragTip'](){const gb=bn;if(this['dragTarget']&&this['ctx']['dragHeaderIng']){const {DRAG_TIP_BG_COLOR:p,DRAG_TIP_LINE_COLOR:r}=this['ctx']['config'],u=this['dragTarget']['width'];if(this['ctx']['paint']['drawRect'](this['ctx']['mouseX']-this['dragCellDiff'],this['visibleHeight'],u,this['ctx'][gb(0x156)]['visibleHeight'],{'fillColor':p,'borderWidth':0x0,'borderColor':'transparent'}),this['dragingCell']){const {drawX:w,drawY:x,visibleWidth:y,colIndex:z}=this['dragingCell'];let C=w,D=x;z>this['dragTarget'][gb(0x165)]&&(C=w+y),z===0x0&&(C=C+0x1),z===this['ctx'][gb(0x2a0)]&&(C=C-0x1);const E=[C,D,C,this[gb(0x372)]['stageHeight']],F=[C-0x4,D,C+0x4,D,C,D+0x6,C-0x4,D];this['ctx']['paint']['drawLine'](F,{'borderColor':r,'borderWidth':1.2,'fillColor':r}),this['ctx']['paint'][gb(0x221)](E,{'borderColor':r,'borderWidth':1.2});}}}['drawFixedShadow'](){const gd=bn,{fixedLeftWidth:p,fixedRightWidth:r,scrollX:u,header:w,stageWidth:x,config:{HEADER_BG_COLOR:y,SCROLLER_TRACK_SIZE:z}}=this['ctx'];if(u>0x0&&p!==0x0&&this['ctx']['paint']['drawShadow'](this['x'],this['y'],p,this['height'],{'fillColor':y,'side':'right','shadowWidth':0x4,'colorStart':gd(0x259),'colorEnd':'rgba(0,0,0,0)'}),u<Math['floor'](w['width']-x-0x1)&&r!==z){const C=w['width']-(this['x']+this['width'])+x-r;this['ctx']['paint']['drawShadow'](C,this['y'],r,this['height'],{'fillColor':y,'side':gd(0x277),'shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':gd(0x259)});}}['update'](){const ge=bn,p=[],r=[],u=[];if(this[ge(0x32b)]['length']){const w=this['centerCellHeaders'][this['centerCellHeaders']['length']-0x1];this['ctx']['lastCenterColIndex']=w['colIndex'];}this['centerCellHeaders']['forEach'](x=>{const gf=ge;x['isHorizontalVisible']()&&x[gf(0x388)]()&&(r[gf(0x18f)](x),x[gf(0x32c)]||p[gf(0x18f)](x));}),this['fixedLeftCellHeaders']['forEach'](x=>{u['push'](x),x['hasChildren']||p['push'](x);}),this['fixedRightCellHeaders']['forEach'](x=>{const gg=ge;u['push'](x),x['hasChildren']||p[gg(0x18f)](x);}),this['renderCenterCellHeaders']=r,this['renderFixedCellHeaders']=u,this[ge(0x230)]=p['sort']((x,y)=>x['x']-y['x']),this['visibleLeafColumns']=this['renderLeafCellHeaders']['map'](x=>x['column']),this['ctx']['header']['visibleLeafColumns']=this['visibleLeafColumns'],this['ctx']['header'][ge(0x292)]=this['leafCellHeaders'],this['ctx']['header']['renderLeafCellHeaders']=this['renderLeafCellHeaders'],this['ctx']['header']['renderCellHeaders']=this['renderFixedCellHeaders']['concat'](this['renderCenterCellHeaders']);}['drawBottomLine'](){const {stageWidth:p,config:{BORDER_COLOR:r}}=this['ctx'],s=[0x0,this['height'],p,this['height']];this['ctx']['paint']['drawLine'](s,{'borderColor':r,'borderWidth':0x1});}['draw'](){const gi=bn;this['renderCenterCellHeaders'][gi(0x288)](p=>{p['update'](),p['draw']();}),this['drawFixedShadow'](),this['renderFixedCellHeaders']['forEach'](p=>{p['update'](),p['draw']();}),this['drawBottomLine'](),this[gi(0x3fc)](),this['drawDragTip']();}}class vl{constructor(p,r,u=0x0,w=0x0,x=0x0,y=0x0,z,C='body'){const gj=bn;m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,gj(0xfb)),m(this,'cells',[]),m(this,gj(0x3b8),[]),m(this,gj(0x2e5),[]),m(this,gj(0x384),[]),m(this,'rowIndex',0x0),m(this,'rowKey',''),m(this,'rowType','body'),m(this,'data'),m(this,gj(0x376),-0x1),this['ctx']=p,this['x']=u,this['y']=w,this[gj(0x3ef)]=x,this['height']=y,this['rowIndex']=r,this['rowKey']=p['database']['getRowKeyForRowIndex'](r)||'',this['rowType']=C,this['data']=z,this[gj(0x35e)]();}['update'](){const {header:p}=this['ctx'],r=[],u=[],w=[],x=[];p['renderLeafCellHeaders']['forEach'](y=>{const gk=b,z=new wt(this['ctx'],this['rowIndex'],y['colIndex'],y['x'],this['y'],y[gk(0x3ef)],this['height'],y['column'],this[gk(0x377)],this[gk(0x305)]);z['fixed']?u[gk(0x18f)](z):w['push'](z),r['push'](z),z['autoRowHeight']&&x[gk(0x18f)](z);}),this['cells']=r,this['calculatedHeightCells']=x,this['fixedCells']=u,this['noFixedCells']=w;}['updateCalculatedHeight'](){const gn=bn,p=this['calculatedHeightCells']['map'](r=>{const gm=b,u=r['getAutoHeight'](),{key:w,height:x=-0x1}=this[gm(0x372)]['database']['getMaxRowHeightItem'](this['rowKey'])||{};return u>x?this['ctx']['database']['setMaxRowHeightItem'](this['rowKey'],r['key'],u):r[gm(0x31c)]===w&&u<x&&this[gm(0x372)]['database']['setMaxRowHeightItem'](this['rowKey'],r[gm(0x31c)],u),u;});return this['calculatedHeight']=p['length']?Math[gn(0x340)](...p):-0x1,this['calculatedHeight'];}['drawCenter'](){const go=bn;this['noFixedCells'][go(0x288)](p=>{p['draw']();});}['drawFixed'](){const gp=bn;this[gp(0x3b8)]['forEach'](p=>{p['draw']();});}[bn(0x21b)](){const gq=bn;this['noFixedCells'][gq(0x288)](p=>{p['drawContainer']();});}['drawFixedContainer'](){const gr=bn;this['fixedCells'][gr(0x288)](p=>{const gu=gr;p[gu(0x21b)]();});}}class ic{constructor(p){const gv=bn;m(this,'resizeTarget',null),m(this,gv(0xdd),!0x1),m(this,'resizeDiff',0x0),m(this,'clientY',0x0),m(this,'ctx'),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,'headIndex',0x0),m(this,gv(0xa2),0x0),m(this,'isResizing',!0x1),m(this,'renderRows',[]),m(this,'visibleRows',[]),m(this,'visibleHeight',0x0),m(this,'visibleWidth',0x0),m(this,gv(0x31a)),m(this,'data',[]),this[gv(0x372)]=p,this[gv(0x1fe)](),this['initResizeRow']();}[bn(0x1fe)](){const gw=bn,{canvasElement:w,header:x,footer:C,database:D,config:{FOOTER_FIXED:E,SCROLLER_TRACK_SIZE:F=0x0,HEIGHT:G,EMPTY_BODY_HEIGHT:K=0x0,MAX_HEIGHT:N=0x0,ENABLE_OFFSET_HEIGHT:O=0x0,OFFSET_HEIGHT:Q=0x0,FOOTER_POSITION:U}}=this['ctx'];if(!x['width'])return;this['x']=0x0,U==='top'&&E?this['y']=x['height']+C['height']:this['y']=x['height'];const {data:a0,sumHeight:a1}=D['getData']();this['height']=a1,this['data']=a0,this['width']=x['width'],this['visibleWidth']=this['ctx']['stageWidth']-F;const a2=this['ctx']['footer']['height'];this['ctx']['isEmpty']=!this[gw(0x377)]['length'],!this['data'][gw(0x3d0)]&&!G?this['height']=K:!this[gw(0x377)]['length']&&G&&(this['height']=G-x['height']-a2-F);let a3=this['height']+x['height']+F;a3+=a2;let a4=a3;const a5=window['innerHeight'],{top:a6}=this['containerRect']||this['ctx']['containerElement'][gw(0x110)]();if(a5>a6&&O&&!G){const af=a5-a6-Q;af>x['height']+F?a4=af:a3>N&&(a4=N);}else this[gw(0x377)][gw(0x3d0)]&&G?a4=G:this['data']['length']&&N&&a3>N&&(a4=N);a4>0x0&&(this['ctx']['stageHeight']=Math['floor'](a4),this['ctx'][gw(0x100)]['style']['height']=this[gw(0x372)]['stageHeight']+'px');let a7=this['ctx'][gw(0xb3)]-x['height']-F;E?this['visibleHeight']=a7-a2:this['visibleHeight']=a7,this['data']['length']||(this['height']=this['visibleHeight']),this[gw(0x372)]['body']['x']=this['x'],this['ctx']['body']['y']=this['y'],this['ctx']['body']['width']=this['width'],this['ctx']['body']['height']=this['height'],this['ctx']['body']['visibleWidth']=this[gw(0x267)],this['ctx']['body']['visibleHeight']=this['visibleHeight'],this['ctx']['body']['data']=a0;const a8=window[gw(0x3f0)]||0x1,a9=this[gw(0x372)]['stageWidth']*a8,aa=this['ctx']['stageHeight']*a8;w[gw(0x3ef)]=Math[gw(0x128)](a9),w['height']=Math['round'](aa);const ab=this['data'][gw(0x3d0)]?'not-empty':gw(0x2df);this['ctx']['emit']('emptyChange',{'isEmpty':ab,'type':ab,'headerHeight':x['height'],'bodyHeight':this['height'],'footerHeight':a2,'width':this['width'],'height':this['data']['length']?0x0:K+a2});const ad=Math['round'](w['width']/a8*0x2710)/0x2710,ae=Math['round'](w['height']/a8*0x2710)/0x2710;this['ctx']['canvasElement']['setAttribute']('style','height:'+ae+gw(0xc9)+ad+'px;'),this['ctx']['paint']['scale'](a8);}['initResizeRow'](){const gx=bn;this['ctx']['on'](gx(0xad),()=>{const gy=gx;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this['containerRect']=this[gy(0x372)]['containerElement'][gy(0x110)]());}),this['ctx']['on']('resizeObserver',()=>{const gz=gx;this['ctx']['config']['ENABLE_RESIZE_ROW']&&(this['containerRect']=this[gz(0x372)]['containerElement']['getBoundingClientRect']());}),this['ctx']['on']('mouseup',()=>{const gA=gx;this[gA(0x372)][gA(0x29e)]['ENABLE_RESIZE_ROW']&&(this[gA(0xdd)]=!0x1,this['resizeDiff']!==0x0&&this['resizeTarget']&&this['resizeRow'](this['resizeTarget'],this['resizeDiff']),this['resizeTarget']=null,this['resizeDiff']=0x0,this[gA(0x3b2)]=!0x1,setTimeout(()=>{const gB=gA;this['ctx'][gB(0x27a)]=!0x1;},0x0),this['clientY']=0x0);}),this['ctx']['on']('mousedown',p=>{const gC=gx;this['ctx']['config']['ENABLE_RESIZE_ROW']&&this['ctx']['isTarget'](p)&&(this['clientY']=p['clientY'],this['resizeTarget']?(this['isResizing']=!0x0,this[gC(0x372)]['rowResizing']=!0x0):(this[gC(0x3b2)]=!0x1,this['ctx']['rowResizing']=!0x1),this['isMouseDown']=!0x0);}),this['ctx']['on']('mousemove',p=>{const gD=gx;if(!this['ctx']['config']['ENABLE_RESIZE_ROW']||this['ctx'][gD(0x291)])return;const {offsetY:r,offsetX:u}=this['ctx']['getOffset'](p),w=r,x=u,y=p['clientY'],{stageHeight:z,scrollY:C,config:{RESIZE_ROW_MIN_HEIGHT:D=0x0}}=this['ctx'];if(this['isResizing']&&this['resizeTarget']){const E=this['resizeTarget']['height'];let F=y-this[gD(0x273)];const {calculatedHeight:G}=this[gD(0x28e)],K=G===-0x1?D:G;F+E<K&&(F=-(E-K)),this['resizeDiff']=F,this['ctx']['emit']('draw');}else{if(this['resizeTarget']=null,this['isMouseDown'])return;if(x<0x0||x>this['ctx']['body']['visibleWidth']||w<0x0||w>this['ctx']['header']['visibleHeight']+this['ctx']['body'][gD(0x1f3)]){this[gD(0x372)]['stageElement'][gD(0xf3)]['cursor']==='row-resize'&&(this[gD(0x372)][gD(0x100)]['style']['cursor']='default');return;}if(this[gD(0x372)]['stageElement']['style']['cursor']===gD(0x214))return;this['ctx'][gD(0x100)][gD(0xf3)]['cursor']==='row-resize'&&(this['ctx']['stageElement']['style']['cursor']=gD(0x17a));for(let L=0x0;L<this[gD(0x9c)]['length'];L++){const M=this['renderRows'][L];if(w>M['y']-C+M['height']-1.5&&w<M['y']-C+M['height']+1.5&&w<z-0x4)for(let N=0x0;N<M[gD(0x343)]['length'];N++){const O=M['cells'][N];x>O['drawX']+0xa&&x<O['drawX']+O[gD(0x3ef)]-0xa&&O['rowspan']===0x1&&(this['ctx']['stageElement']['style']['cursor']=gD(0x13b),this[gD(0x28e)]=M);}}}});}['resizeRow'](p,r){const gE=bn,{rowIndex:u,height:w,rowKey:x,data:y}=p;this['ctx']['database'][gE(0x409)](u,w+r),this['init'](),this[gE(0x372)]['emit']('draw'),this['ctx'][gE(0x186)]('resizeRowChange',{'rowIndex':u,'oldHeight':w,'height':w+r,'rowKey':x,'row':y,'data':this[gE(0x377)]});}['drawTipLine'](){const gF=bn;if(this[gF(0x3b2)]&&this['resizeTarget']){const {stageWidth:p,scrollY:r,config:{RESIZE_ROW_LINE_COLOR:u}}=this['ctx'],w=this['resizeTarget']['y']-r,x=this['resizeTarget']['height'],y=w+x+this['resizeDiff']-0.5,z=[0x0,y-0.5,p,y-0.5];this['ctx'][gF(0x1d1)][gF(0x221)](z,{'borderColor':u,'borderWidth':0x1});}}[bn(0x1c1)](){const gG=bn,{fixedLeftWidth:p,fixedRightWidth:r,scrollX:u,header:w,stageWidth:x,config:{HEADER_BG_COLOR:y,SCROLLER_TRACK_SIZE:z}}=this['ctx'];if(u>0x0&&p!==0x0&&!this['ctx']['isEmpty']&&this['ctx'][gG(0x1d1)]['drawShadow'](this['x'],this['y'],p,this['height'],{'fillColor':y,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':gG(0x21f)}),u<Math['floor'](w['width']-x-0x1)&&r!==z&&!this['ctx']['isEmpty']){const C=w['width']-(this['x']+this['width'])+x-r;this['ctx']['paint']['drawShadow'](C,this['y'],r,this['height'],{'fillColor':y,'side':'left','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0)','colorEnd':'rgba(0,0,0,0.1)'});}}['binarySearch'](p,r){const gH=bn;let u=0x0,w=p[gH(0x3d0)]-0x1,x=-0x1;for(;u<=w;){let y=Math[gH(0x1b8)]((u+w)/0x2),z=p[y]['bottom'];if(z===r)return y;z<r?u=y+0x1:(x=y,w=y-0x1);}return x;}[bn(0x35e)](){const gI=bn;this['init']();const {header:p,database:r,scrollY:u,config:{CELL_HEIGHT:w}}=this['ctx'],x=u,{data:z,positions:C}=r['getData']();this['ctx']['maxRowIndex']=z[gI(0x3d0)]-0x1;let D=this['binarySearch'](C,x),E=this['binarySearch'](C,x+this['visibleHeight']);if(E===-0x1&&(E=this[gI(0x372)]['maxRowIndex']),D===-0x1&&E===this['ctx']['maxRowIndex']){const G=Math['floor'](this[gI(0x1f3)]/w);D=this['ctx'][gI(0xdb)]-G;}this['headIndex']=Math[gI(0x340)](0x0,D),this['tailIndex']=Math[gI(0x10c)](this['ctx']['maxRowIndex'],E+0x1),this['visibleRows']=z['slice'](this[gI(0x1c0)],this['tailIndex']+0x1),this['ctx']['body'][gI(0x1c0)]=this[gI(0x1c0)],this[gI(0x372)]['body']['tailIndex']=this[gI(0xa2)],this['ctx']['body']['visibleRows']=this['visibleRows'];const F=[];for(let K=0x0;K<this['visibleRows']['length'];K++){const L=this[gI(0x1c0)]+K,M=this['visibleRows'][K],{height:N,top:O}=this['ctx']['database']['getPositionForRowIndex'](L),Q=new vl(this['ctx'],L,0x0,O+this['y'],p['width'],N,M);F['push'](Q);}this['renderRows']=F,this['ctx']['body']['renderRows']=F;}['updateAutoHeight'](){const gK=bn,p=this['ctx']['body']['renderRows'];if(!p['some'](s=>s['calculatedHeightCells']['length']>0x0))return!0x1;p['forEach'](s=>{const gJ=b;s[gJ(0x107)]();});const r=p['map'](s=>({'height':s[gK(0x376)],'rowIndex':s[gK(0x151)]}));return this['ctx']['database']['setBatchCalculatedRowHeight'](r);}['draw'](){const gL=bn;this['renderRows']['forEach'](p=>{p['drawContainer']();}),this['renderRows']['forEach'](p=>{p['drawCenter']();}),this['drawFixedShadow'](),this['renderRows']['forEach'](p=>{p['drawFixedContainer']();}),this['renderRows']['forEach'](p=>{p['drawFixed']();}),this[gL(0x3fc)]();}}class tc{constructor(p){const gM=bn;m(this,'ctx'),m(this,'renderRows',[]),m(this,'data',[]),m(this,'x',0x0),m(this,'y',0x0),m(this,'width',0x0),m(this,'height',0x0),m(this,'visibleWidth',0x0),m(this,'visibleHeight',0x0),this['ctx']=p,this[gM(0x1fe)]();}['init'](){const gN=bn;this['data']=this['ctx'][gN(0x2c6)]['getFooterData']();const {header:p,body:r,config:{CELL_FOOTER_HEIGHT:u,FOOTER_FIXED:w,SCROLLER_TRACK_SIZE:x,FOOTER_POSITION:y}}=this['ctx'];this[gN(0x3ef)]=p['width'],this[gN(0x267)]=p['visibleWidth'],this['height']=this['data']['reduce'](z=>z+u,0x0),this['visibleHeight']=this[gN(0xfb)],w?y==='top'?this['y']=this['ctx']['header'][gN(0xfb)]:this['y']=this['ctx']['stageHeight']-this['height']-x:this['y']=r['y']+r['height'],this['ctx']['footer']['x']=this['x'],this[gN(0x372)]['footer']['y']=this['y'],this['ctx']['footer']['height']=this['height'],this['ctx']['footer'][gN(0x3ef)]=this['width'],this['ctx']['footer']['visibleWidth']=this['visibleWidth'],this[gN(0x372)][gN(0x298)]['visibleHeight']=this['visibleHeight'];}['drawFixedShadow'](){const gO=bn,{fixedLeftWidth:p,fixedRightWidth:r,scrollX:u,header:w,stageWidth:x,config:{HEADER_BG_COLOR:y,SCROLLER_TRACK_SIZE:z}}=this['ctx'];let C=this['y'];if(this['ctx']['config']['FOOTER_FIXED']||(C=this['y']-this['ctx'][gO(0x2e4)]),u>0x0&&p!==0x0&&this['ctx'][gO(0x1d1)]['drawShadow'](this['x'],C,p,this['height'],{'fillColor':y,'side':'right','shadowWidth':0x4,'colorStart':'rgba(0,0,0,0.1)','colorEnd':gO(0x21f)}),u<Math['floor'](w['width']-x-0x1)&&r!==z){const D=w['width']-(this['x']+this['width'])+x-r;this['ctx'][gO(0x1d1)]['drawShadow'](D,C,r,this['height'],{'fillColor':y,'side':'left','shadowWidth':0x4,'colorStart':gO(0x21f),'colorEnd':'rgba(0,0,0,0.1)'});}}[bn(0x35e)](){const gP=bn;this[gP(0x1fe)]();const {CELL_FOOTER_HEIGHT:p}=this['ctx']['config'];let r=this['y'];const s=[];this['data']['forEach']((u,w)=>{const gQ=gP,x=new vl(this[gQ(0x372)],w,0x0,r,this['width'],p,u,'footer');r+=p,s['push'](x);}),this['renderRows']=s,this[gP(0x372)][gP(0x298)]['renderRows']=this['renderRows'];}['drawTopLine'](){const gR=bn,{stageWidth:p,config:{BORDER_COLOR:r}}=this['ctx'],s=[0x0,this['y'],p,this['y']];this[gR(0x372)]['paint']['drawLine'](s,{'borderColor':r,'borderWidth':0x1});}['draw'](){const gS=bn;this[gS(0x9c)]['forEach'](p=>{p['drawContainer']();}),this['renderRows']['forEach'](p=>{const gT=gS;p[gT(0x108)]();}),this[gS(0x1c1)](),this['renderRows'][gS(0x288)](p=>{p['drawFixedContainer']();}),this['renderRows']['forEach'](p=>{p['drawFixed']();}),this['drawTopLine']();}}class lc{constructor(p){const gU=bn;m(this,'isCut',!0x1),m(this,'isMultipleRow',!0x1),m(this,gU(0x372)),this['ctx']=p,this['init']();}['init'](){const gV=bn;this['ctx']['on'](gV(0x2f8),p=>{this['moveFocus'](p);}),this[gV(0x372)]['on']('mousemove',Ft(p=>{const gW=gV;var r;(r=this['ctx']['focusCellHeader'])!=null&&r[gW(0x228)]||!this['ctx']['dragHeaderIng']&&this[gW(0x372)]['selectorMove']&&this['ctx']['startAdjustPosition'](p);},0x64)),this['ctx']['on']('cellHoverChange',p=>{const gX=gV;if(!this['ctx']['autofillMove']){if(p['operation']){this[gX(0x342)](p,!0x1);return;}this['isMultipleRow']||this[gX(0x243)]();}}),this['ctx']['on']('cellClick',()=>{this['adjustBoundaryPosition']();}),this[gV(0x372)]['on']('cellMousedown',(p,r)=>{const gY=gV;if(!(!this['ctx']['isTarget'](r)||this[gY(0x372)][gY(0x100)]['style'][gY(0x18b)]==='pointer'||this[gY(0x372)]['isPointer']||this['ctx'][gY(0x100)]['style']['cursor']==='crosshair')){if(p['operation']){this['isMultipleRow']=!0x0,this[gY(0x342)](p);return;}window['getComputedStyle'](r['target'])['userSelect']!=='text'&&r[gY(0x284)](),this['isMultipleRow']=!0x1,this['click'](r['shiftKey']),this['ctx']['emit']('selectorClick',p);}}),this['ctx']['on']('mouseup',()=>{const gZ=gV;this[gZ(0x372)]['selectorMove']=!0x1,this['ctx']['stopAdjustPosition'](),setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0);}),this['ctx']['on']('cellHeaderHoverChange',p=>{this['ctx']['mousedown']&&this['selectCols'](p);}),this[gV(0x372)]['on']('cellHoverChange',p=>{const h0=gV;this[h0(0x372)]['mousedown']&&this[h0(0x20e)](p);}),this['ctx']['on']('cellHeaderMousedown',(p,r)=>{const h1=gV;this[h1(0x372)]['stageElement']['style']['cursor']==='pointer'||this['ctx']['isPointer']||(window['getComputedStyle'](r['target'])['userSelect']!=='text'&&r['preventDefault'](),this['ctx']['clearSelector'](),p[h1(0x3b6)]?this[h1(0x18e)]():this['selectCols'](p));}),this['ctx']['on']('keydown',p=>{const h2=gV;if(!this['ctx'][h2(0x291)]&&!this['ctx'][h2(0x28d)]){if(p['ctrlKey']&&p['code']==='KeyV'||p['metaKey']&&p['code']==='KeyV'){this['paste']();return;}if(p['ctrlKey']&&p['code']==='KeyC'||p['metaKey']&&p['code']==='KeyC'){this[h2(0x2fe)](),this['isCut']=!0x1;return;}if(p['ctrlKey']&&p['code']==='KeyX'||p['metaKey']&&p['code']==='KeyX'){this['isCut']=!0x0,this['copy']();return;}if((p[h2(0x22a)]&&p[h2(0x176)]==='KeyA'||p['metaKey']&&p['code']==='KeyA')&&(p['preventDefault'](),this[h2(0x18e)]()),p['code']==='ArrowLeft'||p['shiftKey']&&p['code']==='Tab'){p['preventDefault'](),this['moveFocus']('LEFT');return;}if(p[h2(0x176)]===h2(0x124)){p[h2(0x284)](),this['moveFocus']('TOP');return;}if(p[h2(0x176)]===h2(0x201)||p['code']==='Tab'){p['preventDefault'](),this['moveFocus']('RIGHT');return;}if(p['code']==='ArrowDown'){p['preventDefault'](),this['moveFocus'](h2(0x212));return;}if(p['code']==='Delete'||p['code']===h2(0x2ca)){p['preventDefault']();const {xArr:r,yArr:s}=this['ctx']['selector'];this[h2(0x3a7)](r,s);return;}}}),this['ctx']['on']('contextMenuClearSelected',()=>{const {xArr:p,yArr:r}=this['ctx']['selector'];this['clearSelectedData'](p,r);}),this['ctx']['on']('contextMenuCopy',()=>{const h3=gV;this[h3(0x2fe)]();}),this['ctx']['on']('contextMenuPaste',()=>{const h4=gV;this[h4(0x3ac)]();}),this['ctx']['on'](gV(0x3a9),()=>{const h5=gV;this['isCut']=!0x0,this[h5(0x2fe)]();}),this['ctx']['on'](gV(0x3cd),p=>{const h6=gV;this[h6(0x372)]['setFocusCell'](p),this['click'](),this['adjustBoundaryPosition']();}),this['ctx']['on']('selectCols',p=>{this['selectCols'](p);});}['setSelector'](r,w){const h7=bn;if(this[h7(0x372)]['dragHeaderIng'])return;const {ENABLE_SELECTOR_SPAN_COL:x,ENABLE_SELECTOR_SPAN_ROW:z}=this[h7(0x372)]['config'];let C=r,D=w;if(!z){const [E]=D;D=[E,E];}if(!x){const [F]=C;C=[F,F];}if(JSON[h7(0x27c)](this['ctx']['selector']['xArr'])!==JSON['stringify'](C)||JSON[h7(0x27c)](this['ctx']['selector']['yArr'])!==JSON[h7(0x27c)](D)){this['ctx']['mousedown']&&(this['ctx']['selectorMove']=!0x0,this[h7(0x372)]['disableHoverIconClick']=!0x0),this['ctx']['selector']['enable']=!0x0;const {SELECTOR_AREA_MIN_X:G,SELECTOR_AREA_MAX_X:K,SELECTOR_AREA_MIN_Y:M,SELECTOR_AREA_MAX_Y:N,SELECTOR_AREA_MAX_X_OFFSET:O,SELECTOR_AREA_MAX_Y_OFFSET:Q}=this['ctx']['config'],R=G,U=K||this['ctx']['maxColIndex']-O,V=M,a0=N||this['ctx']['maxRowIndex']-Q;let [a1,a2]=C,[a3,a4]=D;if(a1<R||a2>U||a3<V||a4>a0)return;if(this['ctx'][h7(0x29e)][h7(0x278)]){const a6=this['adjustMergeCells'](C,D);a3=a6['yArr'][0x0],a4=a6['yArr'][0x1],a1=a6['xArr'][0x0],a2=a6['xArr'][0x1],this['ctx']['onlyMergeCell']=a6['onlyMergeCell'];}a1===a2&&a3===a4?this[h7(0x372)]['selectOnlyOne']=!0x0:this['ctx']['selectOnlyOne']=!0x1,C=[Math['max'](R,a1),Math['min'](U,a2)],D=[Math['max'](V,a3),Math['min'](a0,a4)];const {BEFORE_SET_SELECTOR_METHOD:a5}=this['ctx']['config'];if(typeof a5=='function'){const a7=a5({'focusCell':this['ctx']['focusCell'],'xArr':C,'yArr':D});if(!a7)return;C=a7['xArr'],D=a7['yArr'];}this['ctx']['selector'][h7(0x9d)]=C,this['ctx']['selector']['yArr']=D,a4===this['ctx']['maxRowIndex']&&a3===0x0?this['ctx']['selectColsIng']=!0x0:this[h7(0x372)]['selectColsIng']=!0x1,a2===this['ctx']['maxColIndex']&&a1===0x0?this['ctx'][h7(0x10a)]=!0x0:this['ctx'][h7(0x10a)]=!0x1,this['ctx']['emit']('setSelector',this['ctx']['selector']),this['ctx']['emit']('drawView');}}[bn(0x1d3)](r,u){const h8=bn;var w;const [x,z]=u,[C,D]=r;if(z===this['ctx']['maxRowIndex']&&x===0x0||D===this['ctx'][h8(0x2a0)]&&C===0x0)return{'xArr':r,'yArr':u,'onlyMergeCell':!0x1};let E=[],F=[];for(let O=0x0;O<=u[0x1]-u[0x0];O++)for(let Q=0x0;Q<=r[0x1]-r[0x0];Q++){const R=O+u[0x0],T=Q+r[0x0],U=this['ctx']['database'][h8(0x117)](R,T);U&&((R===x||R===z)&&E['push'](U),(T===C||T===D)&&F['push'](U));}const G=E['reduce']((V,a0)=>{const h9=h8,{yArr:a1}=a0['getSpanInfo'](),[a2,a3]=a1;return V['minY']=Math['min'](V['minY'],a2),V[h9(0x31b)]=Math['max'](V[h9(0x31b)],a3),V;},{'minY':x,'maxY':z}),K=F['reduce']((V,a0)=>{const ha=h8,{xArr:a1}=a0['getSpanInfo'](),[a2,a3]=a1;return V[ha(0xba)]=Math['min'](V['minX'],a2),V['maxX']=Math['max'](V['maxX'],a3),V;},{'minX':C,'maxX':D}),L=[K['minX'],K['maxX']],M=[G['minY'],G['maxY']];let N=!0x1;if(K['minX']!==K['maxX']||G['minY']!==G['maxY']){const V=JSON[h8(0x27c)](L)+JSON['stringify'](M),a0=(w=this['ctx']['focusCell'])==null?void 0x0:w['getSpanInfo']();N=(a0&&JSON['stringify'](a0['xArr'])+JSON[h8(0x27c)](a0['yArr']))===V;}return{'xArr':L,'yArr':M,'onlyMergeCell':N};}['selectCols'](p){const hb=bn;if(this[hb(0x372)]['config']['ENABLE_SELECTOR_SINGLE']||!this['ctx']['config']['ENABLE_SELECTOR_ALL_ROWS']||this['ctx']['autofillMove']||this['ctx']['columnResizing']||this['ctx']['editing'])return;const {SELECTOR_AREA_MIN_Y:r,SELECTOR_AREA_MAX_Y:u,SELECTOR_AREA_MAX_Y_OFFSET:w}=this['ctx']['config'],x=r,y=u||this['ctx']['maxRowIndex']-w;if(this['ctx']['focusCellHeader']){const {colIndex:z}=this[hb(0x372)]['focusCellHeader'];if(this['ctx']['clearSelector'](),this['ctx']['mousedown']&&p['colIndex']>=z){const C=[z,p['colIndex']+p[hb(0x193)]-0x1],D=[x,y];this['setSelector'](C,D);}else{const E=[p[hb(0x165)],z+p[hb(0x193)]-0x1],F=[x,y];this['setSelector'](E,F);}}}['selectAll'](){const hd=bn;if(this[hd(0x372)]['autofillMove']||this['ctx']['editing'])return;const {ENABLE_SELECTOR_ALL_ROWS:p,ENABLE_SELECTOR_ALL_COLS:r}=this[hd(0x372)]['config'];if(p&&r){const {SELECTOR_AREA_MIN_X:u,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MIN_Y:x,SELECTOR_AREA_MAX_Y:y,SELECTOR_AREA_MAX_X_OFFSET:z,SELECTOR_AREA_MAX_Y_OFFSET:C}=this['ctx'][hd(0x29e)],D=u,E=w||this['ctx']['maxColIndex']-z,F=x,G=y||this['ctx']['maxRowIndex']-C,K=[D,E],L=[F,G];this['setSelector'](K,L);}}['selectRows'](p,r=!0x0){const he=bn;if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE']||!this[he(0x372)]['config']['ENABLE_SELECTOR_ALL_COLS']||this['ctx']['autofillMove']||this['ctx'][he(0x291)])return;const {SELECTOR_AREA_MIN_X:u,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MAX_X_OFFSET:x}=this['ctx'][he(0x29e)],y=w||this['ctx']['maxColIndex']-x,z=u;if(r){this['ctx'][he(0x323)](p);const C=[z,y],D=[p['rowIndex'],p['rowIndex']];this[he(0x40a)](C,D);}if(this[he(0x372)]['focusCell']&&this['ctx'][he(0x1f9)]){const {rowIndex:E}=this['ctx'][he(0xfa)];if(p['rowIndex']>=E){const F=[z,y],G=[E,p['rowIndex']];this['setSelector'](F,G);}else{const K=[z,y],L=[p[he(0x151)],E];this['setSelector'](K,L);}}}[bn(0x243)](){const hf=bn;if(this[hf(0x372)]['config'][hf(0x261)]||this['ctx']['editing'])return;const {mousedown:p,focusCell:r,hoverCell:u}=this['ctx'];if(p&&r&&u){const {rowIndex:w,colIndex:x}=r,y=Math['min'](u['colIndex'],x),z=Math['max'](u['colIndex'],x),C=Math['min'](u['rowIndex'],w),D=Math['max'](u['rowIndex'],w),E=[y,z],F=[C,D];this['setSelector'](E,F);}}['click'](p=!0x1){const hg=bn,{focusCell:r,clickCell:u}=this[hg(0x372)];if(r&&this['isInSettingRange'](r[hg(0x151)],r['colIndex'])){if(this['ctx']['selector']['enable']=!0x0,u&&p){if(this['ctx']['config']['ENABLE_SELECTOR_SINGLE'])return;const {colIndex:w,rowIndex:x}=u,{colIndex:y,rowIndex:z}=r,C=Math['min'](y,w),D=Math['max'](y,w),E=Math['min'](z,x),F=Math['max'](z,x),G=[C,D],K=[E,F];this['setSelector'](G,K);}else{this['ctx']['emit']('cellSelectedClick',r);const L=[r['colIndex'],r['colIndex']],M=[r['rowIndex'],r['rowIndex']];this['setSelector'](L,M);}}}['clearCopyLine'](){this['ctx']['selector']['xArrCopy']=[-0x1,-0x1],this['ctx']['selector']['yArrCopy']=[-0x1,-0x1];}[bn(0x275)](p,r){const hi=bn,s=this['ctx'][hi(0x156)]['renderRows']['find'](u=>u['rowIndex']===p);return s?.['cells']['find'](u=>u['colIndex']===r);}['copy'](){const hj=bn;if(!this['ctx'][hj(0x29e)][hj(0x23c)]||this['ctx']['domSelectionStr'])return;let {value:p,xArr:r,yArr:u}=this['ctx']['getSelectedData']();if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx'][hj(0x2c6)][hj(0x1c9)](r,u)){if(this[hj(0x372)]['onlyMergeCell']&&this['ctx']['focusCell']){const y=this['ctx']['focusCell'];p=[[y[hj(0x392)]()]],r=[y['colIndex'],y['colIndex']],u=[y[hj(0x151)],y['rowIndex']];}else{const z={'code':'ERR_MERGED_CELLS_COPY','message':'Merged\x20cells\x20cannot\x20span\x20copy\x20data'};this['ctx']['hasEvent']('error')?this[hj(0x372)][hj(0x186)]('error',z):alert(z['message']);return;}}const {BEFORE_COPY_METHOD:w}=this[hj(0x372)]['config'];if(typeof w=='function'){const C=w({'focusCell':this['ctx']['focusCell'],'data':p,'xArr':r,'yArr':u});if(!C)return;p=C['data'];}const x=Cs(p);navigator['clipboard']?navigator['clipboard']['writeText'](x)['then'](()=>{const hk=hj;this['ctx']['selector'][hk(0x349)]=this['ctx']['selector']['xArr']['slice'](),this['ctx']['selector']['yArrCopy']=this['ctx'][hk(0xf1)]['yArr']['slice'](),this[hk(0x372)]['emit']('copyChange',{'xArr':this['ctx']['selector'][hk(0x349)],'yArr':this['ctx']['selector'][hk(0x1c7)],'data':p}),this['ctx']['emit'](hk(0x3ed));})['catch'](D=>console['error'](hj(0xb2),D)):console[hj(0x2ef)]('current\x20browser\x20does\x20not\x20support\x20the\x20Clipboard\x20API');}['clearSelectedData'](p,r,u=!0x1,w=null){const hm=bn;let x=[];const y=new Set();for(let C=0x0;C<=r[0x1]-r[0x0];C++)for(let D=0x0;D<=p[0x1]-p[0x0];D++){const E=C+r[0x0],F=D+p[0x0],G=this['ctx']['database']['getItemValueForRowIndexAndColIndex'](E,F);if(G){const {rowKey:K,key:L}=G;this[hm(0x372)]['database']['getReadonly'](K,L)||(y['add'](K),x['push']({'rowKey':K,'key':L,'value':w,'row':{}}));}}if(!x['length'])return[];if(u)return x;this['ctx']['database'][hm(0x171)](x,!0x0);let z=[];return y['forEach'](M=>{const hn=hm;z['push'](this['ctx']['database'][hn(0x26f)](M));}),this[hm(0x372)]['emit']('clearSelectedDataChange',x,z),x;}['paste'](){const ho=bn;if(!navigator[ho(0x1dd)]){console['error'](ho(0x3a5));return;}const {ENABLE_PASTER:p}=this['ctx']['config'];if(this['ctx'][ho(0xf1)]['enable']&&p){const r=this['ctx'][ho(0xf1)][ho(0x20b)][0x0],u=this['ctx']['selector']['xArr'][0x0],w=new Set();navigator['clipboard']['readText']()[ho(0x30b)](async x=>{const hp=ho;let C=zs(x);const D=[u,u+C[0x0][hp(0x3d0)]-0x1],E=[r,r+C['length']-0x1],[F,G]=E,[K,N]=D,O=G-this['ctx']['maxRowIndex'],Q=N-this['ctx']['maxColIndex'];(O>0x0||Q>0x0)&&this['ctx']['emit']('onPastedDataOverflow',{'maxY':G,'maxX':N,'minY':F,'minX':K,'overflowRowCount':O,'overflowColCount':Q,'textArr':C});const U=C[hp(0x3d0)]===0x1&&C[0x0]['length']===0x1;if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx'][hp(0x2c6)]['hasMergeCell'](D,E)&&!U){const a3={'code':'ERR_MERGED_CELLS_PASTE','message':hp(0x1db)};this['ctx'][hp(0x256)]('error')?this['ctx']['emit'](hp(0x2ef),a3):alert(a3['message']);return;}let a0=[];for(let a4=0x0;a4<=C['length']-0x1;a4++){const a5=C[a4][hp(0x3d0)];for(let a6=0x0;a6<=a5-0x1;a6++){const a7=a4+r,a8=a6+u,a9=C[a4][a6],aa=this['ctx']['database']['getItemValueForRowIndexAndColIndex'](a7,a8);if(aa){const {rowKey:ab,key:ad}=aa;this['ctx']['database']['getReadonly'](ab,ad)||(w[hp(0x310)](ab),a0['push']({'rowKey':ab,'key':ad,'value':a9,'row':{}}));}}}if(this['isCut']){const ae=this[hp(0x3a7)](this[hp(0x372)][hp(0xf1)][hp(0x349)],this['ctx'][hp(0xf1)]['yArrCopy'],!0x0),af=a0['map'](ag=>ag['rowKey']+'-'+ag['key']);ae['forEach'](ag=>{const hq=hp;af[hq(0xd4)](ag['rowKey']+'-'+ag['key'])||a0['unshift'](ag);}),this['isCut']=!0x1;}if(!a0['length'])return;const {BEFORE_PASTE_DATA_METHOD:a1}=this['ctx']['config'];if(typeof a1=='function'){const ag=a1,ai=a0['map'](aj=>({'rowKey':aj['rowKey'],'key':aj['key'],'value':aj[hp(0x22d)],'oldValue':this['ctx'][hp(0x2c6)]['getItemValue'](aj['rowKey'],aj['key']),'row':this['ctx']['database'][hp(0x26f)](aj['rowKey'])}));if(a0=await ag(ai,D,E,C),a0&&!a0['length'])return;}this['clearCopyLine'](),this['ctx']['batchSetItemValueByEditor'](a0,!0x0);let a2=[];w['forEach'](aj=>{a2['push'](this['ctx']['database']['getRowDataItemForRowKey'](aj));}),this[hp(0x372)]['emit']('pasteChange',a0,a2),this['ctx'][hp(0x186)]('draw');})['catch'](x=>{const hr=ho;console['error'](hr(0x14a),x);});}}['moveFocus'](p){const hu=bn;if(this[hu(0x372)]['editing'])return;const {focusCell:r}=this['ctx'];if(!r)return;let {colIndex:u=0x0,rowIndex:w=0x0}=r;const x=0x0,y=0x0,z=this['ctx']['maxColIndex'],C=this['ctx']['maxRowIndex'];switch(p){case'LEFT':u>x&&u--;break;case'TOP':w>y&&w--;break;case'RIGHT':u<z&&u++;break;case'BOTTOM':w<C&&w++;break;}const D=[u,u],E=[w,w],F=this['getCell'](w,u);F&&(F[hu(0x3b6)]||this['isInSettingRange'](F['rowIndex'],F['colIndex'])&&(this['ctx']['setFocusCell'](F),this['setSelector'](D,E),this[hu(0x2e1)](),this[hu(0x372)][hu(0x186)]('moveFocus',F),this['ctx']['emit']('draw')));}['isInSettingRange'](p,r){const hv=bn,{SELECTOR_AREA_MIN_X:u,SELECTOR_AREA_MAX_X:w,SELECTOR_AREA_MIN_Y:x,SELECTOR_AREA_MAX_Y:y,SELECTOR_AREA_MAX_X_OFFSET:z,SELECTOR_AREA_MAX_Y_OFFSET:C}=this['ctx']['config'],D=u,E=w||this['ctx']['maxColIndex']-z,F=x,G=y||this[hv(0x372)]['maxRowIndex']-C;return!(r<D||r>E||p<F||p>G);}['adjustBoundaryPosition'](){const hw=bn,{stageHeight:w,stageWidth:x,focusCell:C,fixedRightWidth:D,fixedLeftWidth:E,header:F,footer:G,body:K,scrollX:N,scrollY:O,config:{SCROLLER_TRACK_SIZE:Q,FOOTER_FIXED:U,FOOTER_POSITION:a0,ENABLE_MERGE_CELL_LINK:a1}}=this['ctx'];if(!C)return;a1&&this['ctx']['onlyMergeCell']&&C['updateSpanInfo']();const {drawX:a2,drawY:a3,width:a4,height:a5,fixed:a6}=C,a7=E-a2+0x1,a8=C['drawX']+a4-(x-D)+0x1;let a9=F['height']-a3,aa=a5;aa>K[hw(0x1f3)]&&(aa=K[hw(0x1f3)]);let ab=0x0;U&&(a0==='top'?a9=F['height']+G['height']-a3:ab=G['visibleHeight']);const ad=a3+aa-(w-ab-Q);let ae=N,af=O;a8>0x0&&!a6?ae=Math['floor'](N+a8):a7>0x0&&!a6&&(ae=Math['floor'](N-a7)),a9>0x0?af=Math['floor'](O-a9):ad>0x0&&(af=Math[hw(0x1b8)](O+ad)),(Math['abs'](N-ae)>2.5||Math['abs'](O-af)>2.5)&&this['ctx'][hw(0x3c4)](ae,af);}['destroy'](){}}class sc{constructor(p){const hx=bn;m(this,hx(0x372)),m(this,'maxColRowCell'),this['ctx']=p,this['init']();}[bn(0x1fe)](){const hy=bn;this['ctx']['on'](hy(0x29a),p=>{const hz=hy;if(this[hz(0x372)]['stageElement'][hz(0xf3)]['cursor']==='crosshair'&&(this['ctx']['stageElement']['style'][hz(0x18b)]='default'),this['ctx']['editing']||!this['ctx'][hz(0xfa)]||!this[hz(0x12a)])return;const {offsetX:r,offsetY:u}=this['ctx']['getOffset'](p),{colIndex:w,rowIndex:x,drawX:y,drawY:z,width:C,height:D}=this['maxColRowCell'],E=0x6,F=w===this['ctx']['maxColIndex']||x===this['ctx']['maxRowIndex']?0x0:0x2,G=y+C-E+F,K=z+D-E+F;r>G&&u>K&&r<G+E&&u<K+E&&(this['ctx']['stageElement']['style']['cursor']='crosshair'),this['ctx']['autofillMove']&&this['ctx']['startAdjustPosition'](p);}),this['ctx']['on']('cellMouseenter',p=>{const hA=hy,{xArr:r,yArr:u}=this['ctx']['selector'],w=r[0x1],x=u[0x1],{colIndex:y,rowIndex:z}=p;this['ctx']['config'][hA(0x36e)]&&y===w&&z===x&&(this[hA(0x12a)]=p),this['mouseenter'](p);}),this['ctx']['on']('mousedown',()=>{this['ctx']['stageElement']['style']['cursor']==='crosshair'&&this['setMousedown']();}),this['ctx']['on'](hy(0x2ab),()=>{const hB=hy;this['setMouseUp'](),this['ctx'][hB(0x2f3)]();});}['isAutofillIng'](){const {xArr:p,yArr:r}=this['ctx']['selector'];return!(JSON['stringify'](this['ctx']['autofill']['xArr'])===JSON['stringify'](p)&&JSON['stringify'](this['ctx']['autofill']['yArr'])===JSON['stringify'](r));}[bn(0xc5)](){const hC=bn;this['ctx']['autofill'][hC(0x2af)]=!0x0,this[hC(0x372)]['autofillMove']=!0x0,this['ctx']['disableHoverIconClick']=!0x0;}['setMouseUp'](){const hD=bn;this['ctx']['autofill'][hD(0x2af)]&&(this['isAutofillIng']()&&this['autofillData'](),this['ctx']['autofill']['enable']=!0x1,this['ctx']['autofillMove']=!0x1,this['ctx']['autofill']['xArr']=[-0x1,-0x1],this['ctx']['autofill']['yArr']=[-0x1,-0x1],setTimeout(()=>{this['ctx']['disableHoverIconClick']=!0x1;},0x0));}['setAutofill'](w,x){const hE=bn,{ENABLE_AUTOFILL:C,ENABLE_AUTOFILL_SPAN_COL:D,ENABLE_AUTOFILL_SPAN_ROW:E}=this['ctx']['config'];if(!C)return;let F=w,G=x;const K=this['ctx'][hE(0xf1)]['xArr'],M=this[hE(0x372)]['selector']['yArr'];if(!(!E&&JSON['stringify'](M)!==JSON[hE(0x27c)](G))&&!(!D&&JSON['stringify'](K)!==JSON[hE(0x27c)](F))&&(JSON[hE(0x27c)](this['ctx']['autofill']['xArr'])!==JSON[hE(0x27c)](F)||JSON[hE(0x27c)](this['ctx']['autofill'][hE(0x20b)])!==JSON[hE(0x27c)](G))){const {SELECTOR_AREA_MIN_X:N,SELECTOR_AREA_MAX_X:O,SELECTOR_AREA_MIN_Y:Q,SELECTOR_AREA_MAX_Y:U,SELECTOR_AREA_MAX_X_OFFSET:V,SELECTOR_AREA_MAX_Y_OFFSET:a0}=this[hE(0x372)]['config'],a1=N,a2=O||this[hE(0x372)]['maxColIndex']-V,a3=Q,a4=U||this['ctx'][hE(0xdb)]-a0;let [a5,a6]=F,[a7,a8]=G;if(a5<a1||a7<a3)return;F=[Math['max'](a1,a5),Math['min'](a2,a6)],G=[Math['max'](a3,a7),Math['min'](a4,a8)];const {BEFORE_SET_AUTOFILL_METHOD:a9}=this['ctx']['config'];if(typeof a9==hE(0x403)){const aa=a9({'focusCell':this['ctx']['focusCell'],'xArr':F,'yArr':G});if(!aa)return;F=aa['xArr'],G=aa['yArr'];}this['ctx']['autofill']['xArr']=F,this['ctx']['autofill']['yArr']=G,this['ctx']['emit'](hE(0x3b1),this['ctx'][hE(0x348)]),this[hE(0x372)][hE(0x186)]('draw');}}async['autofillData'](){const hF=bn,r=new Set(),w=this[hF(0x372)]['getSelectedData'](),x=new Map();for(let O=0x0;O<=w['yArr'][0x1]-w[hF(0x20b)][0x0];O++)for(let Q=0x0;Q<=w['xArr'][0x1]-w['xArr'][0x0];Q++){const R=O+w['yArr'][0x0],T=Q+w['xArr'][0x0];x['set'](R+'-'+T,!0x0);}const {value:z}=w,C=z[0x0]['length'],D=z['length'],E=this['ctx']['autofill']['xArr'],F=this['ctx']['autofill']['yArr'],G=C===0x1&&D===0x1;if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this[hF(0x372)]['database'][hF(0x1c9)](E,F)&&!G){const U={'code':'ERR_MERGED_CELLS_AUTOFILL','message':'Merged\x20cells\x20cannot\x20span\x20autofill\x20data'};this['ctx']['hasEvent']('error')?this[hF(0x372)][hF(0x186)]('error',U):alert(U['message']);return;}let K=[];for(let V=0x0;V<=F[0x1]-F[0x0];V++)for(let a0=0x0;a0<=E[0x1]-E[0x0];a0++){const a1=a0+E[0x0],a2=V+F[0x0],a3=z[V%D][a0%C],a4=this['ctx']['database']['getItemValueForRowIndexAndColIndex'](a2,a1),a5=a2+'-'+a1;if(a4&&!x['has'](a5)){const {rowKey:a6,key:a7}=a4;this['ctx']['database']['getReadonly'](a6,a7)||(r['add'](a6),K['push']({'rowKey':a6,'key':a7,'value':a3,'row':{}}));}}if(!K['length'])return;this['ctx'][hF(0xf1)][hF(0x9d)]=this['ctx']['autofill'][hF(0x9d)],this['ctx']['selector']['yArr']=this['ctx']['autofill'][hF(0x20b)];const {BEFORE_AUTOFILL_DATA_METHOD:M}=this['ctx']['config'];if(typeof M=='function'){const a8=M,a9=K['map'](aa=>({'rowKey':aa['rowKey'],'key':aa['key'],'value':aa['value'],'oldValue':this['ctx']['database'][hF(0xa3)](aa['rowKey'],aa['key']),'row':this['ctx']['database']['getRowDataItemForRowKey'](aa['rowKey'])}));if(K=await a8(a9,E,F),K&&!K['length'])return;}this['ctx']['batchSetItemValueByEditor'](K,!0x0);let N=[];r['forEach'](aa=>{const hG=hF;N['push'](this[hG(0x372)]['database']['getRowDataItemForRowKey'](aa));}),this['ctx']['emit']('autofillChange',K,N),this['ctx']['emit']('draw');}['mouseenter'](p){const hH=bn;if(['index',hH(0x155),'index-selection']['includes'](p['type']))return;const {selector:r,autofill:u}=this[hH(0x372)];if(this['ctx']['mousedown']&&r['enable']&&u['enable']){const {rowIndex:w,colIndex:x}=p,y=r['xArr']['slice'](),z=r['yArr']['slice']();w>=r['yArr'][0x0]&&w<=r['yArr'][0x1]?x>r['xArr'][0x1]?y['splice'](0x1,0x1,x):x<r['xArr'][0x0]&&y['splice'](0x0,0x1,x):w>r[hH(0x20b)][0x1]?z['splice'](0x1,0x1,w):w<r['yArr'][0x0]&&z['splice'](0x0,0x1,w),this['setAutofill'](y,z);}}[bn(0x369)](){}}const ui=Math['min'],Wi=Math['max'],fi=Math['round'],ji=Math['floor'],q=p=>({'x':p,'y':p}),cc={'left':'right','right':'left','bottom':'top','top':'bottom'};function Gt(p,r,s){return Wi(p,ui(r,s));}function Ji(p,r){return typeof p=='function'?p(r):p;}function yi(p){const hI=bn;return p[hI(0xce)]('-')[0x0];}function Mi(p){return p['split']('-')[0x1];}function Bl(p){return p==='x'?'y':'x';}function zt(p){return p==='y'?'height':'width';}function di(p){const r=p[0x0];return r==='t'||r==='b'?'y':'x';}function Ct(p){return Bl(di(p));}function hc(p,r,u){const hJ=bn;u===void 0x0&&(u=!0x1);const w=Mi(p),x=Ct(p),y=zt(x);let z=x==='x'?w===(u?hJ(0x338):hJ(0x317))?'right':'left':w==='start'?'bottom':'top';return r['reference'][y]>r['floating'][y]&&(z=Qi(z)),[z,Qi(z)];}function ec(p){const r=Qi(p);return[Lt(p),r,Lt(r)];}function Lt(p){const hK=bn;return p['includes']('start')?p['replace']('start',hK(0x338)):p['replace']('end','start');}const bl=['left',bn(0x238)],al=[bn(0x238),'left'],dc=['top','bottom'],mc=['bottom','top'];function Zc(p,r,s){const hL=bn;switch(p){case'top':case'bottom':return s?r?al:bl:r?bl:al;case'left':case hL(0x238):return r?dc:mc;default:return[];}}function Ic(p,r,u,w){const hM=bn,x=Mi(p);let y=Zc(yi(p),u==='start',w);return x&&(y=y['map'](z=>z+'-'+x),r&&(y=y[hM(0x2f0)](y['map'](Lt)))),y;}function Qi(p){const hN=bn,r=yi(p);return cc[r]+p['slice'](r[hN(0x3d0)]);}function oc(p){return{'top':0x0,'right':0x0,'bottom':0x0,'left':0x0,...p};}function Al(p){return typeof p!='number'?oc(p):{'top':p,'right':p,'bottom':p,'left':p};}function vi(p){const {x:r,y:u,width:w,height:x}=p;return{'width':w,'height':x,'top':u,'left':r,'right':r+w,'bottom':u+x,'x':r,'y':u};}function Yl(p,r,u){const hO=bn;let {reference:w,floating:x}=p;const y=di(r),z=Ct(r),C=zt(z),D=yi(r),E=y==='y',F=w['x']+w['width']/0x2-x[hO(0x3ef)]/0x2,G=w['y']+w['height']/0x2-x['height']/0x2,K=w[C]/0x2-x[C]/0x2;let L;switch(D){case'top':L={'x':F,'y':w['y']-x['height']};break;case'bottom':L={'x':F,'y':w['y']+w[hO(0xfb)]};break;case'right':L={'x':w['x']+w['width'],'y':G};break;case hO(0x277):L={'x':w['x']-x['width'],'y':G};break;default:L={'x':w['x'],'y':w['y']};}switch(Mi(r)){case'start':L[z]-=K*(u&&E?-0x1:0x1);break;case'end':L[z]+=K*(u&&E?-0x1:0x1);break;}return L;}async function nc(r,w){const hP=bn;var x;w===void 0x0&&(w={});const {x:z,y:C,platform:D,rects:E,elements:F,strategy:G}=r,{boundary:K='clippingAncestors',rootBoundary:L='viewport',elementContext:M='floating',altBoundary:N=!0x1,padding:O=0x0}=Ji(w,r),Q=Al(O),R=F[N?M==='floating'?'reference':'floating':M],T=vi(await D['getClippingRect']({'element':(x=await(D['isElement']==null?void 0x0:D['isElement'](R)))==null||x?R:R['contextElement']||await(D[hP(0x16e)]==null?void 0x0:D['getDocumentElement'](F[hP(0x34b)])),'boundary':K,'rootBoundary':L,'strategy':G})),U=M===hP(0x34b)?{'x':z,'y':C,'width':E['floating']['width'],'height':E['floating'][hP(0xfb)]}:E['reference'],V=await(D[hP(0x3dd)]==null?void 0x0:D['getOffsetParent'](F['floating'])),a0=await(D['isElement']==null?void 0x0:D['isElement'](V))?await(D[hP(0x38c)]==null?void 0x0:D[hP(0x38c)](V))||{'x':0x1,'y':0x1}:{'x':0x1,'y':0x1},a1=vi(D[hP(0x2a4)]?await D['convertOffsetParentRelativeRectToViewportRelativeRect']({'elements':F,'rect':U,'offsetParent':V,'strategy':G}):U);return{'top':(T[hP(0x295)]-a1[hP(0x295)]+Q[hP(0x295)])/a0['y'],'bottom':(a1['bottom']-T[hP(0x2c5)]+Q[hP(0x2c5)])/a0['y'],'left':(T['left']-a1['left']+Q['left'])/a0['x'],'right':(a1['right']-T['right']+Q['right'])/a0['x']};}const bc=0x32,ac=async(r,w,x)=>{const hQ=bn,{placement:z='bottom',strategy:C='absolute',middleware:D=[],platform:E}=x,F=E['detectOverflow']?E:{...E,'detectOverflow':nc},G=await(E['isRTL']==null?void 0x0:E['isRTL'](w));let K=await E['getElementRects']({'reference':r,'floating':w,'strategy':C}),{x:M,y:N}=Yl(K,z,G),O=z,Q=0x0;const R={};for(let U=0x0;U<D[hQ(0x3d0)];U++){const V=D[U];if(!V)continue;const {name:a0,fn:a1}=V,{x:a2,y:a3,data:a4,reset:a5}=await a1({'x':M,'y':N,'initialPlacement':z,'placement':O,'strategy':C,'middlewareData':R,'rects':K,'platform':F,'elements':{'reference':r,'floating':w}});M=a2??M,N=a3??N,R[a0]={...R[a0],...a4},a5&&Q<bc&&(Q++,typeof a5==hQ(0x15a)&&(a5['placement']&&(O=a5['placement']),a5[hQ(0x2a7)]&&(K=a5['rects']===!0x0?await E[hQ(0x28b)]({'reference':r,'floating':w,'strategy':C}):a5['rects']),{x:M,y:N}=Yl(K,O,G)),U=-0x1);}return{'x':M,'y':N,'placement':O,'strategy':C,'middlewareData':R};},Yc=p=>({'name':'arrow','options':p,async 'fn'(x){const hR=bn,{x:D,y:G,placement:N,rects:O,platform:Q,elements:U,middlewareData:a0}=x,{element:a1,padding:a2=0x0}=Ji(p,x)||{};if(a1==null)return{};const a3=Al(a2),a4={'x':D,'y':G},a5=Ct(N),a6=zt(a5),a7=await Q[hR(0x333)](a1),a8=a5==='y',a9=a8?hR(0x295):'left',aa=a8?'bottom':'right',ab=a8?'clientHeight':'clientWidth',ad=O['reference'][a6]+O['reference'][a5]-a4[a5]-O['floating'][a6],ae=a4[a5]-O['reference'][a5],af=await(Q[hR(0x3dd)]==null?void 0x0:Q['getOffsetParent'](a1));let ag=af?af[ab]:0x0;(!ag||!await(Q['isElement']==null?void 0x0:Q[hR(0x3c7)](af)))&&(ag=U['floating'][ab]||O['floating'][a6]);const ai=ad/0x2-ae/0x2,aj=ag/0x2-a7[a6]/0x2-0x1,ak=ui(a3[a9],aj),am=ui(a3[aa],aj),an=ak,ao=ag-a7[a6]-am,ap=ag/0x2-a7[a6]/0x2+ai,aq=Gt(an,ap,ao),ar=!a0['arrow']&&Mi(N)!=null&&ap!==aq&&O['reference'][a6]/0x2-(ap<an?ak:am)-a7[a6]/0x2<0x0,au=ar?ap<an?ap-an:ap-ao:0x0;return{[a5]:a4[a5]+au,'data':{[a5]:aq,'centerOffset':ap-aq-au,...ar&&{'alignmentOffset':au}},'reset':ar};}}),Wc=function(p){const hS=bn;return p===void 0x0&&(p={}),{'name':hS(0x101),'options':p,async 'fn'(x){const hT=hS;var D,G;const {placement:N,middlewareData:O,rects:Q,initialPlacement:U,platform:a0,elements:a1}=x,{mainAxis:a2=!0x0,crossAxis:a3=!0x0,fallbackPlacements:a4,fallbackStrategy:a5='bestFit',fallbackAxisSideDirection:a6='none',flipAlignment:a7=!0x0,...a8}=Ji(p,x);if((D=O[hT(0xac)])!=null&&D['alignmentOffset'])return{};const a9=yi(N),aa=di(U),ab=yi(U)===U,ad=await(a0[hT(0x172)]==null?void 0x0:a0[hT(0x172)](a1['floating'])),ae=a4||(ab||!a7?[Qi(U)]:ec(U)),af=a6!=='none';!a4&&af&&ae['push'](...Ic(U,a7,a6,ad));const ag=[U,...ae],ai=await a0['detectOverflow'](x,a8),aj=[];let ak=((G=O['flip'])==null?void 0x0:G[hT(0x2cf)])||[];if(a2&&aj['push'](ai[a9]),a3){const ap=hc(N,Q,ad);aj['push'](ai[ap[0x0]],ai[ap[0x1]]);}if(ak=[...ak,{'placement':N,'overflows':aj}],!aj['every'](aq=>aq<=0x0)){var am,an;const aq=(((am=O['flip'])==null?void 0x0:am['index'])||0x0)+0x1,ar=ag[aq];if(ar&&(!(a3==='alignment'&&aa!==di(ar))||ak['every'](av=>di(av['placement'])===aa?av[hT(0x2cf)][0x0]>0x0:!0x0)))return{'data':{'index':aq,'overflows':ak},'reset':{'placement':ar}};let au=(an=ak['filter'](av=>av['overflows'][0x0]<=0x0)['sort']((av,aw)=>av['overflows'][0x1]-aw['overflows'][0x1])[0x0])==null?void 0x0:an['placement'];if(!au)switch(a5){case'bestFit':{var ao;const av=(ao=ak['filter'](aw=>{if(af){const ax=di(aw['placement']);return ax===aa||ax==='y';}return!0x0;})['map'](aw=>[aw[hT(0x1eb)],aw['overflows']['filter'](ax=>ax>0x0)[hT(0x34d)]((ax,ay)=>ax+ay,0x0)])[hT(0x1a1)]((aw,ax)=>aw[0x1]-ax[0x1])[0x0])==null?void 0x0:ao[0x0];av&&(au=av);break;}case'initialPlacement':au=U;break;}if(N!==au)return{'reset':{'placement':au}};}return{};}};},yc=new Set([bn(0x277),'top']);async function Sc(p,r){const hU=bn,{placement:u,platform:w,elements:x}=p,y=await(w['isRTL']==null?void 0x0:w['isRTL'](x[hU(0x34b)])),z=yi(u),C=Mi(u),D=di(u)==='y',E=yc[hU(0x3a0)](z)?-0x1:0x1,F=y&&D?-0x1:0x1,G=Ji(r,p);let {mainAxis:K,crossAxis:L,alignmentAxis:M}=typeof G==hU(0x1df)?{'mainAxis':G,'crossAxis':0x0,'alignmentAxis':null}:{'mainAxis':G['mainAxis']||0x0,'crossAxis':G[hU(0x159)]||0x0,'alignmentAxis':G['alignmentAxis']};return C&&typeof M=='number'&&(L=C==='end'?M*-0x1:M),D?{'x':L*F,'y':K*E}:{'x':K*E,'y':L*F};}const Xc=function(p){return p===void 0x0&&(p=0x0),{'name':'offset','options':p,async 'fn'(r){const hV=b;var u,w;const {x:x,y:y,placement:z,middlewareData:C}=r,D=await Sc(r,p);return z===((u=C[hV(0x1c2)])==null?void 0x0:u[hV(0x1eb)])&&(w=C[hV(0xac)])!=null&&w['alignmentOffset']?{}:{'x':x+D['x'],'y':y+D['y'],'data':{...D,'placement':z}};}};},pc=function(p){return p===void 0x0&&(p={}),{'name':'shift','options':p,async 'fn'(r){const hW=b,{x:w,y:x,placement:z,platform:C}=r,{mainAxis:D=!0x0,crossAxis:E=!0x1,limiter:F={'fn':T=>{let {x:U,y:V}=T;return{'x':U,'y':V};}},...G}=Ji(p,r),K={'x':w,'y':x},L=await C[hW(0x2dd)](r,G),M=di(yi(z)),N=Bl(M);let O=K[N],Q=K[M];if(D){const T=N==='y'?hW(0x295):hW(0x277),U=N==='y'?'bottom':'right',V=O+L[T],a0=O-L[U];O=Gt(V,O,a0);}if(E){const a1=M==='y'?'top':'left',a2=M==='y'?hW(0x2c5):'right',a3=Q+L[a1],a4=Q-L[a2];Q=Gt(a3,Q,a4);}const R=F['fn']({...r,[N]:O,[M]:Q});return{...R,'data':{'x':R['x']-w,'y':R['y']-x,'enabled':{[N]:D,[M]:E}}};}};};function it(){return typeof window<'u';}function Li(p){return _l(p)?(p['nodeName']||'')['toLowerCase']():'#document';}function f(p){const hX=bn;var r;return(p==null||(r=p['ownerDocument'])==null?void 0x0:r[hX(0x357)])||window;}function ii(p){const hY=bn;var r;return(r=(_l(p)?p[hY(0x2b1)]:p['document'])||window['document'])==null?void 0x0:r['documentElement'];}function _l(p){return it()?p instanceof Node||p instanceof f(p)['Node']:!0x1;}function A(p){return it()?p instanceof Element||p instanceof f(p)['Element']:!0x1;}function ci(p){return it()?p instanceof HTMLElement||p instanceof f(p)['HTMLElement']:!0x1;}function Wl(p){const hZ=bn;return!it()||typeof ShadowRoot>'u'?!0x1:p instanceof ShadowRoot||p instanceof f(p)[hZ(0x1d0)];}function Ni(p){const i0=bn,{overflow:r,overflowX:u,overflowY:w,display:x}=_(p);return/auto|scroll|overlay|hidden|clip/[i0(0x102)](r+w+u)&&x!=='inline'&&x!=='contents';}function uc(p){return/^(table|td|th)$/['test'](Li(p));}function tt(p){try{if(p['matches'](':popover-open'))return!0x0;}catch{}try{return p['matches'](':modal');}catch{return!0x1;}}const Gc=/transform|translate|scale|rotate|perspective|filter/,Lc=/paint|layout|strict|content/,Yi=p=>!!p&&p!=='none';let at;function gt(p){const i1=bn,r=A(p)?_(p):p;return Yi(r['transform'])||Yi(r['translate'])||Yi(r['scale'])||Yi(r['rotate'])||Yi(r['perspective'])||!Ut()&&(Yi(r['backdropFilter'])||Yi(r[i1(0x31f)]))||Gc['test'](r['willChange']||'')||Lc['test'](r['contain']||'');}function xc(p){let r=Zi(p);for(;ci(r)&&!Gi(r);){if(gt(r))return r;if(tt(r))return null;r=Zi(r);}return null;}function Ut(){return at==null&&(at=typeof CSS<'u'&&CSS['supports']&&CSS['supports']('-webkit-backdrop-filter','none')),at;}function Gi(p){return/^(html|body|#document)$/['test'](Li(p));}function _(p){return f(p)['getComputedStyle'](p);}function lt(p){const i2=bn;return A(p)?{'scrollLeft':p[i2(0x37a)],'scrollTop':p['scrollTop']}:{'scrollLeft':p['scrollX'],'scrollTop':p['scrollY']};}function Zi(p){const i3=bn;if(Li(p)===i3(0x3ea))return p;const r=p['assignedSlot']||p[i3(0x35b)]||Wl(p)&&p['host']||ii(p);return Wl(r)?r[i3(0x236)]:r;}function ql(p){const r=Zi(p);return Gi(r)?p['ownerDocument']?p['ownerDocument']['body']:p['body']:ci(r)&&Ni(r)?r:ql(r);}function Ti(p,r,u){const i4=bn;var w;r===void 0x0&&(r=[]),u===void 0x0&&(u=!0x0);const x=ql(p),y=x===((w=p[i4(0x2b1)])==null?void 0x0:w[i4(0x156)]),z=f(x);if(y){const C=xt(z);return r['concat'](z,z['visualViewport']||[],Ni(x)?x:[],C&&u?Ti(C):[]);}else return r[i4(0x2f0)](x,Ti(x,[],u));}function xt(p){const i5=bn;return p['parent']&&Object[i5(0xd7)](p[i5(0x39c)])?p['frameElement']:null;}function $l(p){const i6=bn,r=_(p);let u=parseFloat(r['width'])||0x0,w=parseFloat(r['height'])||0x0;const x=ci(p),y=x?p[i6(0x198)]:u,z=x?p[i6(0x347)]:w,C=fi(u)!==y||fi(w)!==z;return C&&(u=y,w=z),{'width':u,'height':w,'$':C};}function jt(p){return A(p)?p:p['contextElement'];}function pi(p){const i7=bn,r=jt(p);if(!ci(r))return q(0x1);const u=r['getBoundingClientRect'](),{width:w,height:x,$:y}=$l(r);let z=(y?fi(u['width']):u['width'])/w,C=(y?fi(u[i7(0xfb)]):u['height'])/x;return(!z||!Number['isFinite'](z))&&(z=0x1),(!C||!Number['isFinite'](C))&&(C=0x1),{'x':z,'y':C};}const Vc=q(0x0);function is(p){const i8=bn,r=f(p);return!Ut()||!r['visualViewport']?Vc:{'x':r[i8(0x2cc)]['offsetLeft'],'y':r['visualViewport']['offsetTop']};}function rc(p,r,s){return r===void 0x0&&(r=!0x1),!s||r&&s!==f(p)?!0x1:r;}function Si(r,w,x,z){const i9=bn;w===void 0x0&&(w=!0x1),x===void 0x0&&(x=!0x1);const C=r['getBoundingClientRect'](),D=jt(r);let E=q(0x1);w&&(z?A(z)&&(E=pi(z)):E=pi(r));const F=rc(D,x,z)?is(D):q(0x0);let G=(C['left']+F['x'])/E['x'],K=(C['top']+F['y'])/E['y'],L=C['width']/E['x'],M=C['height']/E['y'];if(D){const N=f(D),O=z&&A(z)?f(z):z;let Q=N,R=xt(Q);for(;R&&z&&O!==Q;){const T=pi(R),U=R[i9(0x110)](),V=_(R),a0=U[i9(0x277)]+(R['clientLeft']+parseFloat(V['paddingLeft']))*T['x'],a1=U['top']+(R['clientTop']+parseFloat(V['paddingTop']))*T['y'];G*=T['x'],K*=T['y'],L*=T['x'],M*=T['y'],G+=a0,K+=a1,Q=f(R),R=xt(Q);}}return vi({'width':L,'height':M,'x':G,'y':K});}function st(p,r){const s=lt(p)['scrollLeft'];return r?r['left']+s:Si(ii(p))['left']+s;}function ts(p,r){const ia=bn,u=p[ia(0x110)](),w=u['left']+r['scrollLeft']-st(p,u),x=u['top']+r['scrollTop'];return{'x':w,'y':x};}function Kc(p){const ib=bn;let {elements:r,rect:u,offsetParent:w,strategy:x}=p;const y=x==='fixed',z=ii(w),C=r?tt(r['floating']):!0x1;if(w===z||C&&y)return u;let D={'scrollLeft':0x0,'scrollTop':0x0},E=q(0x1);const F=q(0x0),G=ci(w);if((G||!G&&!y)&&((Li(w)!=='body'||Ni(z))&&(D=lt(w)),G)){const L=Si(w);E=pi(w),F['x']=L['x']+w['clientLeft'],F['y']=L['y']+w['clientTop'];}const K=z&&!G&&!y?ts(z,D):q(0x0);return{'width':u['width']*E['x'],'height':u['height']*E['y'],'x':u['x']*E['x']-D[ib(0x37a)]*E['x']+F['x']+K['x'],'y':u['y']*E['y']-D['scrollTop']*E['y']+F['y']+K['y']};}function Tc(p){return Array['from'](p['getClientRects']());}function Jc(p){const id=bn,r=ii(p),u=lt(p),w=p['ownerDocument'][id(0x156)],x=Wi(r['scrollWidth'],r[id(0xb9)],w['scrollWidth'],w['clientWidth']),y=Wi(r['scrollHeight'],r['clientHeight'],w['scrollHeight'],w[id(0x38b)]);let z=-u['scrollLeft']+st(p);const C=-u[id(0x1da)];return _(w)['direction']===id(0x1a6)&&(z+=Wi(r[id(0xb9)],w['clientWidth'])-x),{'width':x,'height':y,'x':z,'y':C};}const yl=0x19;function Mc(p,r){const ig=bn,u=f(p),w=ii(p),x=u['visualViewport'];let y=w['clientWidth'],z=w['clientHeight'],C=0x0,D=0x0;if(x){y=x['width'],z=x[ig(0xfb)];const F=Ut();(!F||F&&r==='fixed')&&(C=x['offsetLeft'],D=x['offsetTop']);}const E=st(w);if(E<=0x0){const G=w[ig(0x2b1)],K=G['body'],L=getComputedStyle(K),M=G['compatMode']==='CSS1Compat'&&parseFloat(L['marginLeft'])+parseFloat(L[ig(0x158)])||0x0,N=Math['abs'](w['clientWidth']-K['clientWidth']-M);N<=yl&&(y-=N);}else E<=yl&&(y+=E);return{'width':y,'height':z,'x':C,'y':D};}function Nc(p,r){const ij=bn,u=Si(p,!0x0,r==='fixed'),w=u[ij(0x295)]+p['clientTop'],x=u[ij(0x277)]+p['clientLeft'],y=ci(p)?pi(p):q(0x1),z=p['clientWidth']*y['x'],C=p['clientHeight']*y['y'],D=x*y['x'],E=w*y['y'];return{'width':z,'height':C,'x':D,'y':E};}function Sl(p,r,u){const ik=bn;let w;if(r===ik(0x129))w=Mc(p,u);else{if(r==='document')w=Jc(ii(p));else{if(A(r))w=Nc(r,u);else{const x=is(p);w={'x':r['x']-x['x'],'y':r['y']-x['y'],'width':r['width'],'height':r['height']};}}}return vi(w);}function ls(p,r){const s=Zi(p);return s===r||!A(s)||Gi(s)?!0x1:_(s)['position']==='fixed'||ls(s,r);}function Fc(p,r){const il=bn,u=r['get'](p);if(u)return u;let w=Ti(p,[],!0x1)['filter'](C=>A(C)&&Li(C)!=='body'),x=null;const y=_(p)[il(0x37c)]==='fixed';let z=y?Zi(p):p;for(;A(z)&&!Gi(z);){const C=_(z),D=gt(z);!D&&C['position']==='fixed'&&(x=null),(y?!D&&!x:!D&&C['position']===il(0xee)&&x&&(x['position']==='absolute'||x['position']==='fixed')||Ni(z)&&!D&&ls(p,z))?w=w[il(0x31f)](E=>E!==z):x=C,z=Zi(z);}return r['set'](p,w),w;}function wc(p){let {element:r,boundary:u,rootBoundary:w,strategy:x}=p;const y=[...u==='clippingAncestors'?tt(r)?[]:Fc(r,this['_c']):[]['concat'](u),w],z=Sl(r,y[0x0],x);let C=z['top'],D=z['right'],E=z['bottom'],F=z['left'];for(let G=0x1;G<y['length'];G++){const K=Sl(r,y[G],x);C=Wi(K['top'],C),D=ui(K['right'],D),E=ui(K['bottom'],E),F=Wi(K['left'],F);}return{'width':D-F,'height':E-C,'x':F,'y':C};}function Rc(p){const {width:r,height:s}=$l(p);return{'width':r,'height':s};}function zc(p,r,u){const im=bn,w=ci(r),x=ii(r),y=u==='fixed',z=Si(p,!0x0,y,r);let C={'scrollLeft':0x0,'scrollTop':0x0};const D=q(0x0);function E(){D['x']=st(x);}if(w||!w&&!y){if((Li(r)!=='body'||Ni(x))&&(C=lt(r)),w){const L=Si(r,!0x0,y,r);D['x']=L['x']+r[im(0x3c8)],D['y']=L['y']+r['clientTop'];}else x&&E();}y&&!w&&x&&E();const F=x&&!w&&!y?ts(x,C):q(0x0),G=z['left']+C['scrollLeft']-D['x']-F['x'],K=z['top']+C['scrollTop']-D['y']-F['y'];return{'x':G,'y':K,'width':z['width'],'height':z['height']};}function Yt(p){return _(p)['position']==='static';}function Xl(p,r){if(!ci(p)||_(p)['position']==='fixed')return null;if(r)return r(p);let s=p['offsetParent'];return ii(p)===s&&(s=s['ownerDocument']['body']),s;}function ss(p,r){const u=f(p);if(tt(p))return u;if(!ci(p)){let x=Zi(p);for(;x&&!Gi(x);){if(A(x)&&!Yt(x))return x;x=Zi(x);}return u;}let w=Xl(p,r);for(;w&&uc(w)&&Yt(w);)w=Xl(w,r);return w&&Gi(w)&&Yt(w)&&!gt(w)?u:w||xc(p)||u;}const Cc=async function(p){const io=bn,r=this['getOffsetParent']||ss,s=this[io(0x333)],u=await s(p['floating']);return{'reference':zc(p['reference'],await r(p['floating']),p[io(0x26b)]),'floating':{'x':0x0,'y':0x0,'width':u['width'],'height':u['height']}};};function gc(p){const ip=bn;return _(p)['direction']===ip(0x1a6);}const Uc={'convertOffsetParentRelativeRectToViewportRelativeRect':Kc,'getDocumentElement':ii,'getClippingRect':wc,'getOffsetParent':ss,'getElementRects':Cc,'getClientRects':Tc,'getDimensions':Rc,'getScale':pi,'isElement':A,'isRTL':gc};function cs(p,r){const iq=bn;return p['x']===r['x']&&p['y']===r['y']&&p['width']===r[iq(0x3ef)]&&p[iq(0xfb)]===r['height'];}function jc(p,r){let u=null,w;const x=ii(p);function y(){var C;clearTimeout(w),(C=u)==null||C['disconnect'](),u=null;}function z(C,D){const ir=b;C===void 0x0&&(C=!0x1),D===void 0x0&&(D=0x1),y();const E=p[ir(0x110)](),{left:F,top:G,width:K,height:L}=E;if(C||r(),!K||!L)return;const M=ji(G),N=ji(x['clientWidth']-(F+K)),O=ji(x[ir(0x38b)]-(G+L)),Q=ji(F),R={'rootMargin':-M+'px\x20'+-N+'px\x20'+-O+'px\x20'+-Q+'px','threshold':Wi(0x0,ui(0x1,D))||0x1};let T=!0x0;function U(V){const iu=ir,a0=V[0x0][iu(0x283)];if(a0!==D){if(!T)return z();a0?z(!0x1,a0):w=setTimeout(()=>{z(!0x1,1e-7);},0x3e8);}a0===0x1&&!cs(E,p['getBoundingClientRect']())&&z(),T=!0x1;}try{u=new IntersectionObserver(U,{...R,'root':x['ownerDocument']});}catch{u=new IntersectionObserver(U,R);}u['observe'](p);}return z(!0x0),y;}function Vt(p,r,u,w){const iw=bn;w===void 0x0&&(w={});const {ancestorScroll:x=!0x0,ancestorResize:z=!0x0,elementResize:C=typeof ResizeObserver=='function',layoutShift:D=typeof IntersectionObserver=='function',animationFrame:E=!0x1}=w,F=jt(p),G=x||z?[...F?Ti(F):[],...r?Ti(r):[]]:[];G['forEach'](R=>{const iv=b;x&&R[iv(0x2f6)]('scroll',u,{'passive':!0x0}),z&&R[iv(0x2f6)]('resize',u);});const K=F&&D?jc(F,u):null;let L=-0x1,M=null;C&&(M=new ResizeObserver(R=>{let [T]=R;T&&T['target']===F&&M&&r&&(M['unobserve'](r),cancelAnimationFrame(L),L=requestAnimationFrame(()=>{var U;(U=M)==null||U['observe'](r);})),u();}),F&&!E&&M[iw(0x1ec)](F),r&&M[iw(0x1ec)](r));let N,O=E?Si(p):null;E&&Q();function Q(){const R=Si(p);O&&!cs(O,R)&&u(),O=R,N=requestAnimationFrame(Q);}return u(),()=>{var R;G['forEach'](T=>{const ix=b;x&&T[ix(0xb1)]('scroll',u),z&&T['removeEventListener']('resize',u);}),K?.(),(R=M)==null||R['disconnect'](),M=null,E&&cancelAnimationFrame(N);};}const Bi=Xc,Ai=pc,Et=Wc,Ec=Yc,_i=(p,r,u)=>{const w=new Map(),x={'platform':Uc,...u},y={...x['platform'],'_c':w};return ac(p,r,{...x,'platform':y});};let kc=class{constructor(p){const iy=bn;m(this,'ctx'),m(this,'enable',!0x1),m(this,'contentEl'),m(this,iy(0x2fb)),m(this,iy(0x1b2)),this['ctx']=p;const {TOOLTIP_BG_COLOR:r,TOOLTIP_TEXT_COLOR:u,TOOLTIP_ZINDEX:w,TOOLTIP_CUSTOM_STYLE:x,CSS_PREFIX:y}=this['ctx']['config'];this['contentEl']=document[iy(0x3cc)]('div'),this['arrowEl']=document[iy(0x3cc)](iy(0xae)),this['floatingEl']=document['createElement']('div'),this['floatingEl']['className']=y+'-tooltip',this[iy(0x9b)]['className']=y+'-tooltip-content',this['arrowEl']['className']=y+'-tooltip-arrow';const z={'display':'none','position':'absolute','background':r,'color':u,'boxSizing':iy(0x93),'zIndex':w,'padding':'8px','borderRadius':'4px','fontSize':'12px',...x},C={'position':'absolute','width':iy(0x385),'height':'10px','background':z['background'],'backgroundColor':z['backgroundColor'],'transform':'rotate(45deg)','zIndex':z['zIndex']};Object['assign'](this['arrowEl']['style'],C),Object['assign'](this['floatingEl']['style'],z),this[iy(0x2fb)][iy(0x3cf)](this['contentEl']),this['floatingEl'][iy(0x3cf)](this['arrowEl']),this['ctx'][iy(0x132)]['appendChild'](this['floatingEl']),this['init']();}[bn(0x1fe)](){const iz=bn;this['floatingEl'][iz(0x2f6)]('mouseleave',()=>{this['hide']();}),this['ctx']['on']('mouseout',p=>{this['floatingEl']['contains'](p['relatedTarget'])||this['hide']();}),this['ctx']['on'](iz(0x3be),()=>{this['hide']();}),this[iz(0x372)]['on'](iz(0x109),()=>{this['hide']();}),this[iz(0x372)]['on'](iz(0x2ae),(p,r)=>{const iA=iz;this['floatingEl']['contains'](r['target'])||(p['ellipsis']||p[iA(0xbe)])&&this[iA(0x16d)](p);}),this['ctx']['on'](iz(0x257),(p,r)=>{const iB=iz;this[iB(0x2fb)]['contains'](r['target'])||this['hide']();}),this['ctx']['on']('cellHeaderMouseleave',(p,r)=>{const iC=iz;this['floatingEl'][iC(0x313)](r['target'])||this['hide']();}),this['ctx']['on'](iz(0x3e7),(p,r)=>{this['floatingEl']['contains'](r['target'])||p['ellipsis']&&this['show'](p);}),this['ctx']['on']('cellFooterMouseleave',(p,r)=>{const iD=iz;this['floatingEl']['contains'](r['target'])||this[iD(0x3db)]();}),this['ctx']['on']('cellFooterHoverChange',(p,r)=>{this['floatingEl']['contains'](r['target'])||p['ellipsis']&&this['show'](p);}),this['ctx']['on']('cellShowTooltip',(p,r)=>{this['show'](p,r);}),this['ctx']['on'](iz(0x1fa),()=>{this['hide']();});}['show'](p,r){const iE=bn;if(this[iE(0x372)]['contextMenuIng']||!p['overflowTooltipShow']||this['ctx']['mousedown'])return;this[iE(0x2fb)]['style']['display']='block';let u=p['getText']();p['message']&&(u=p['message']),r&&(u=r);const w=this['ctx'][iE(0x132)]['getBoundingClientRect']();if(!w)return;this['enable']=!0x0,this['contentEl'][iE(0xf3)]['maxWidth']=(p['overflowTooltipMaxWidth']||0x1f4)+'px',this[iE(0x9b)][iE(0xf3)]['minWidth']='100px',this['contentEl']['style'][iE(0x3ef)]='100%',this['contentEl']['style']['display']='inline-block',this['contentEl']['style']['wordBreak']=iE(0x1b6),this['contentEl']['style']['lineHeight']='1.5',this['contentEl']['innerText']=u;const x=p[iE(0x29d)]+w['x'],y=p['drawY']+w['y'];_i({'getBoundingClientRect'(){return{'width':p['visibleWidth'],'height':p['visibleHeight'],'x':x,'y':y,'left':x,'right':x+p['visibleWidth'],'top':y,'bottom':y+p['visibleHeight']};}},this['floatingEl'],{'placement':p['overflowTooltipPlacement'],'middleware':[Ai(),Et(),Bi(0x6),Ec({'element':this['arrowEl']})]})['then'](z=>{const iF=iE,{x:C,y:D,placement:E,middlewareData:F}=z;if(Object['assign'](this[iF(0x2fb)]['style'],{'top':D+'px','left':C+'px'}),F['arrow']){const G=F['arrow'];['left','left-start','left-end']['includes'](E)?Object['assign'](this['arrowEl']['style'],{'top':G['y']+'px','bottom':'','left':'','right':iF(0x216)}):['right','right-start',iF(0x1e5)]['includes'](E)?Object['assign'](this[iF(0x1b2)]['style'],{'top':G['y']+'px','bottom':'','left':'-5px','right':''}):['bottom','bottom-start','bottom-end'][iF(0xd4)](E)?Object['assign'](this['arrowEl']['style'],{'top':'-5px','bottom':'','left':G['x']+'px','right':''}):['top','top-start','top-end']['includes'](E)&&Object[iF(0x3e6)](this['arrowEl']['style'],{'top':'','bottom':iF(0x216),'left':G['x']+'px','right':''});}});}['hide'](){const iG=bn;this['enable']&&(this[iG(0x2af)]=!0x1,this['floatingEl']['style']['display']='none');}[bn(0x369)](){const iH=bn;this[iH(0x9b)]['remove'](),this['arrowEl']['remove'](),this['floatingEl']['remove']();}};class Oc{constructor(p){const iI=bn;m(this,iI(0x19c)),m(this,'inputEl'),m(this,iI(0x2af),!0x1),m(this,iI(0x174),null),m(this,'selectorArrStr',''),m(this,'ctx'),m(this,'drawY',0x0),m(this,'drawX',0x0),m(this,iI(0xea),!0x1),this['ctx']=p,this[iI(0x162)](),this['init']();}['init'](){const iK=bn;this['ctx']['on']('outsideMousedown',()=>{this['cellTarget']&&this['cellTarget']['editorType']==='text'&&this['clearEditor']();}),this['ctx']['on']('moveFocus',p=>{const iJ=b;this['cellTarget']=p,this['resetEditorStyle']();const {xArr:r,yArr:s}=this['ctx']['selector'];this[iJ(0x3ab)]=JSON['stringify'](r)+JSON['stringify'](s),this['focusInput']();}),this['ctx']['on']('onScroll',()=>{this['enable']&&this['doneEdit']();}),this['ctx']['on']('hoverIconClick',p=>{this['editCell'](p['rowIndex'],p['colIndex']);}),this[iK(0x372)]['on']('keydown',p=>{const iL=iK;if(!this['ctx']['isTarget'](p)||!this['ctx']['focusCell']||this[iL(0x372)]['finding'])return;const {focusCell:r}=this['ctx'];if(p['code']==='Escape'&&this['ctx']['editing']){this['cancel']=!0x0;const {focusCell:C}=this['ctx'];C&&(this['ctx']['emit']('setSelectorCell',C),this['cellTarget']=C),this[iL(0x18c)]();return;}if((p['altKey']||p[iL(0x3a1)])&&p['key']==='Enter'&&this['ctx']['editing']&&this['inputEl']){p['preventDefault']();const D=this['inputEl']['selectionStart'],E=this['inputEl']['value'][iL(0x364)](0x0,D),F=this['inputEl']['value']['substring'](D);this['inputEl']['value']=E+'\x0a'+F,this[iL(0x202)]['selectionStart']=this['inputEl'][iL(0x2b9)]=D+0x1,this['autoSize']();return;}if(p[iL(0x176)]==='Tab'&&this['ctx']['editing']){if(p[iL(0x284)](),this['doneEdit'](),p['shiftKey']){this['ctx']['emit']('setMoveFocus','LEFT');return;}this['ctx']['emit']('setMoveFocus',iL(0x312));return;}if(p['key']==='Enter'&&this['ctx']['editing']){if(p['preventDefault'](),this['doneEdit'](),p[iL(0x195)]){this['ctx']['emit']('setMoveFocus','TOP');return;}this['ctx'][iL(0x186)]('setMoveFocus','BOTTOM');return;}if(p[iL(0x31c)]===iL(0x94)&&!this['ctx']['editing']){p['preventDefault'](),this[iL(0x109)]();return;}const u=p['key'],w=p[iL(0x22a)],x=p['altKey'],y=p[iL(0x195)],z=p['metaKey'];if(!(w||x||y||z||['Enter','CapsLock','Escape','Tab','Backspace','Delete','ArrowUp','ArrowDown','ArrowLeft','ArrowRight','Home','End','PageUp','PageDown',iL(0x1ac),'F1','F2','F3','F4','F5','F6','F7','F8','F9','F10','F11','F12']['includes'](u))){if(document['activeElement']!==this['inputEl']&&r['editorType']==='text'){p['preventDefault']();return;}this['startEdit'](!0x0);}}),this['ctx']['on']('cellClick',p=>{const iM=iK;if(this['ctx']['isPointer']||!this['isInSelectorRange'](p[iM(0x151)],p['colIndex']))return;const {xArr:r,yArr:u}=this['ctx']['selector'],w=JSON[iM(0x27c)](r)+JSON[iM(0x27c)](u);if(this['focusInput'](),this['selectorArrStr']===w&&this['cellTarget']){if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx']['onlyMergeCell']){this['startEdit']();return;}if(this['ctx']['selectOnlyOne']&&p['rowKey']===this['cellTarget']['rowKey']&&p['key']===this['cellTarget']['key']){this['startEdit']();return;}}if(this['selectorArrStr']=w,this[iM(0x18c)](),this['cellTarget']=p,this['resetEditorStyle'](),this[iM(0x372)]['config'][iM(0x2e3)]){if(this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&this['ctx'][iM(0x1e4)]){this['startEdit']();return;}this['ctx']['selectOnlyOne']&&this['startEdit']();}});}['isInSelectorRange'](p,r){const {xArr:u,yArr:w}=this['ctx']['selector'],[x,y]=u,[z,C]=w;return!(r<x||r>y||p<z||p>C);}['initTextEditor'](){const iN=bn;this['inputEl']=document['createElement']('textarea'),this['inputEl']['id']=iN(0x276),this[iN(0x202)]['setAttribute']('rows','1'),this['inputEl']['setAttribute']('tabindex','-1'),this['inputEl']['addEventListener']('input',this['autoSize']['bind'](this)),this['editorEl']=this['ctx']['editorElement'],this['inputEl'][iN(0x352)]='e-virt-table-editor-textarea',this['editorEl']['appendChild'](this['inputEl']),this['ctx']['containerElement']['appendChild'](this['editorEl']);}['autoSize'](){const iO=bn;if(!this['ctx']['editing'])return;const p=this['inputEl']['value'];this['cellTarget']&&this['cellTarget']['type']==='number'&&p!==''&&(this['ctx']['emit']('cellHideTooltip'),/^-?\d+(\.\d+)?$/['test'](p)||this['ctx']['emit']('cellShowTooltip',this['cellTarget'],this['ctx'][iO(0x29e)]['NUMBER_ERROR_TIP'])),this['inputEl']['style']['height']='auto';let r=this['inputEl']['scrollHeight'],u=this['ctx']['body']['visibleHeight'];r>u&&(r=u);const {stageHeight:w,footer:x,header:y,config:{SCROLLER_TRACK_SIZE:z}}=this[iO(0x372)],C=w-x['height']-z;this[iO(0x19c)]['style']['bottom']='auto',this['drawY']<y['height']&&(this['editorEl']['style']['top']=y['height']-0x1+'px'),this[iO(0x14b)]+r>C&&(this['editorEl']['style']['left']=this['drawX']-0x1+'px',this['editorEl']['style']['top']='auto',this['editorEl']['style']['bottom']=w-C+'px'),this['inputEl']['style']['height']=r+'px';}[bn(0x297)](p,r=!0x1){const iP=bn,u=r?null:p['getValue'](),{editorType:w}=p;if(w==='none')return;p['update'](),this['ctx']['config']['ENABLE_MERGE_CELL_LINK']&&p['updateSpanInfo']();let {height:x,width:y,drawY:z,drawX:C}=p;this['drawX']=C,this['drawY']=z;const {config:{CELL_PADDING:D},header:E}=this[iP(0x372)];let F=this[iP(0x372)]['body'][iP(0x1f3)];x>F&&(x=F),this[iP(0x19c)]['style']['zIndex']='100',this['editorEl']['style']['left']=this[iP(0x29d)]-0x1+'px',this['editorEl']['style']['top']=this['drawY']+'px',this['editorEl'][iP(0xf3)]['bottom']=iP(0x262),this['editorEl']['style']['maxWidth']='none',this['editorEl']['style']['maxHeight']=F+'px',['text']['includes'](w)?(this['inputEl']['style']['opacity']='1',this['inputEl']['style']['position']='relative',this['inputEl']['style']['minWidth']=y-0x1+'px',this[iP(0x202)]['style']['minHeight']=x-0x1+'px',this['inputEl'][iP(0xf3)]['maxHeight']=F+'px',this['inputEl']['style']['width']=y+'px',this['inputEl']['style']['height']='auto',this['inputEl']['style']['padding']=D+'px',this[iP(0x202)]['value']='',u!==null&&(this[iP(0x202)]['value']=u),(this['inputEl']['scrollHeight']>x||this['drawY']<E['height'])&&this[iP(0x11c)]()):(this[iP(0x202)]['style']['opacity']='0',this['inputEl']['style']['width']=iP(0x2e6),this['inputEl']['style']['height']='1px',this['inputEl']['style']['position']=iP(0x1b5),this['inputEl']['style'][iP(0x277)]='0px',this[iP(0x202)]['style']['top']='0px');}['doneEditByInput'](){const iQ=bn;if(this[iQ(0x174)]&&this['cellTarget']['editorType']==='text'){const {rowKey:p,key:r}=this[iQ(0x174)],u=this[iQ(0x174)]['getValue'](),w=this['inputEl']['value'];w!==u&&!(w===''&&u===null)&&!this['cancel']&&this['ctx'][iQ(0x34e)](p,r,w,!0x0);}}['focusInput'](){const iR=bn;document[iR(0x194)]!==this[iR(0x202)]&&this['inputEl'][iR(0x143)]({'preventScroll':!0x0});}['startEdit'](p=!0x1){const iS=bn;this[iS(0xea)]=!0x1;const {ENABLE_EDIT_CLICK_SELECTOR:r}=this[iS(0x372)]['config'];if(!r)return;const s=this['ctx']['focusCell'];s&&(s['isVerticalVisible']()&&s['isHorizontalVisible']()||this['ctx']['emit']('scrollToIndex',s['rowIndex'],s['colIndex']),this['editCell'](s['rowIndex'],s['colIndex'],p));}['editCell'](p,r,u=!0x1){const iT=bn,w=this[iT(0x372)][iT(0x156)]['renderRows']['find'](E=>E['rowIndex']===p);if(!w)return;const x=w['cells']['find'](E=>E[iT(0x165)]===r);if(!x||!(x['isVerticalVisible']()&&x['isHorizontalVisible']()))return;this[iT(0x372)]['emit'](iT(0x3cd),x);const y=this[iT(0x372)]['focusCell'];if(!y||[iT(0xdf),'index-selection',iT(0x155)]['includes'](y['type'])||this['enable'])return;const {rowKey:z,key:C}=y,D=this[iT(0x372)]['database']['getReadonly'](z,C);y&&!D&&(this[iT(0x2af)]=!0x0,this['ctx'][iT(0x291)]=!0x0,this['cellTarget']=y,this['startEditByInput'](this['cellTarget'],u),this['ctx'][iT(0x186)]('startEdit',this['cellTarget']),this['ctx'][iT(0x186)]('draw'));}['doneEdit'](){const iU=bn;this['enable']&&(this['doneEditByInput'](),this['ctx']['emit']('cellHideTooltip'),this['ctx']['emit']('doneEdit',this['cellTarget']),this[iU(0x2af)]=!0x1,this['ctx']['editing']=!0x1,this[iU(0x3d9)](),setTimeout(()=>{this['focusInput']();},0x0),this['ctx']['emit']('draw'));}['resetEditorStyle'](){const iV=bn,p=this['cellTarget'];p&&(this['editorEl']['style']['left']=p['drawX']+'px',this['editorEl']['style']['top']=p[iV(0x14b)]+'px',this['editorEl']['style']['maxWidth']='1px',this[iV(0x19c)][iV(0xf3)]['maxHeight']=iV(0x2e6),this['editorEl']['style']['zIndex']='-1');}['clearEditor'](){const iW=bn;this['doneEdit'](),this['cellTarget']=null,this['selectorArrStr']='',this['ctx']['clearSelector'](),this['ctx'][iW(0xfa)]=void 0x0,this['inputEl']['blur'](),this['ctx'][iW(0x186)](iW(0x3ed));}['destroy'](){const iX=bn;var p;(p=this['editorEl'])==null||p[iX(0xe3)]();}}let Dc=class{constructor(p){const iY=bn;m(this,'ctx'),m(this,'emptyEl'),this['ctx']=p;const {EMPTY_TEXT:r,EMPTY_CUSTOM_STYLE:s}=this[iY(0x372)]['config'];this['ctx'][iY(0x250)]?this['emptyEl']=this['ctx']['emptyElement']:(this['emptyEl']=document['createElement']('div'),this[iY(0x2ce)]['innerText']=r),this['emptyEl']['className']='e-virt-table-empty',this['emptyEl']['style']['display']='none',this['ctx']['containerElement']['appendChild'](this['emptyEl']),this['ctx']['on'](iY(0x394),({type:u,headerHeight:w,bodyHeight:x,footerHeight:y})=>{const z=w+(x+y)/0x2,C={'display':u==='empty'?'block':'none','top':z+'px',...s};Object['assign'](this['emptyEl']['style'],C);});}[bn(0x369)](){const iZ=bn;this[iZ(0x2ce)]['remove']();}};class Pc{constructor(p){const j0=bn;m(this,'ctx'),m(this,j0(0xa0)),this['ctx']=p,this['init']();}['arerMapsEqual'](p,r){const j1=bn;if(p[j1(0xbd)]!==r['size'])return!0x1;for(let [u,w]of p)if(!r['has'](u)||r['get'](u)!==w)return!0x1;return!0x0;}['init'](){const j4=bn;this['observer']=new MutationObserver(Ft(()=>{const j2=b,p=this[j2(0x372)]['overlayerElement']['querySelectorAll']('[data-auto-height=\x22true\x22]'),r=new Map();p['forEach'](u=>{const j3=j2,w=Number(u['getAttribute'](j3(0x253))),x=Number(u['getAttribute']('data-col-index'));if(isNaN(w)||isNaN(x))return;const y=u['getBoundingClientRect'](),z=w+'_'+x;r['set'](z,Math['round'](y[j3(0xfb)]));});const s=this[j2(0x372)]['database'][j2(0xc3)]();if(!this[j2(0x3c6)](s,r)){if(this[j2(0x372)][j2(0x2c6)]['setOverlayerAutoHeightMap'](r),s['size']===0x0&&r['size']===0x0)return;this['ctx']['emit']('draw');}},16.67)),this['observer']['observe'](this['ctx']['overlayerElement'],{'childList':!0x0,'subtree':!0x0,'attributes':!0x0,'characterData':!0x0}),this[j4(0x372)]['overlayerElement']['getAttribute']('data-overlayer')===j4(0x17a)&&this['ctx']['on'](j4(0xfd),p=>{const j5=j4,r=this['ctx']['overlayerElement'];r['replaceChildren'](),Object['assign'](r['style'],p[j5(0xf3)]),p['views']['forEach'](u=>{const j6=j5,w=document[j6(0x3cc)]('div');w[j6(0x352)]=u['class'],Object['assign'](w['style'],u['style']),u[j6(0x187)]['forEach'](x=>{const j9=j6,y=document['createElement']('div');Object['assign'](y['style'],x['style']),x['cells']['forEach'](z=>{const j8=b,C=document['createElement']('div');Object['assign'](C['style'],z['style']),Object['keys'](z['domDataset'])['forEach'](D=>{const j7=b;C[j7(0x12d)](D,z[j7(0x173)][D]);}),typeof z['render']=='function'&&z[j8(0x17e)](C,z),y['appendChild'](C);}),w[j9(0x3cf)](y);}),r['appendChild'](w);});});}[bn(0x3ed)](){const p=this['getContainer']();this['ctx']['emit']('overlayerChange',p);}['destroy'](){const ja=bn;this['observer']&&this['observer']['disconnect'](),this['ctx'][ja(0x186)]('overlayerChange',{'style':{},'views':[]});}[bn(0x406)](){const p=this['getHeader'](),r=this['getBody'](),u=this['getFooter']();let w=[];const {FOOTER_FIXED:x,FOOTER_POSITION:y}=this['ctx']['config'];return x?y==='top'?w=[p,u,r]:w=[p,r,u]:w=[p,r],{'views':w};}['getHeader'](){const jb=bn,{fixedLeftWidth:p,fixedRightWidth:r,config:{SCROLLER_TRACK_SIZE:u,CSS_PREFIX:w}}=this['ctx'],{visibleWidth:x,visibleHeight:y,renderCellHeaders:z}=this['ctx'][jb(0xe1)];let C=[],D=[],E=[];z['forEach'](M=>{const jd=jb;M['render']&&(M['fixed']==='left'?D['push'](M):M['fixed']==='right'?E[jd(0x18f)](M):C['push'](M));});const F=r-u,G={'key':jb(0x277),'style':{'position':'absolute','top':'0px','left':'0px','overflow':'hidden','width':p+'px','height':y+'px'},'cells':D},K={'key':'center','style':{'position':jb(0x1b5),'top':'0px','left':p+'px','overflow':'hidden','width':x-p-F+0x1+'px','height':y+'px'},'cells':C},L={'key':'right','style':{'position':'absolute','top':'0px','right':jb(0x1c3),'overflow':'hidden','width':F+0x1+'px','height':y+'px'},'cells':E};return{'type':jb(0xe1),'class':w+'-overlayer-header','style':{'position':'relative','overflow':'hidden','width':x+'px','height':y+'px'},'views':[G,K,L]};}['getBody'](){const je=bn,p=[],r=[],u=[];let w=this['ctx']['body']['renderRows'];this['ctx']['config']['FOOTER_FIXED']||(w=w['concat'](this['ctx']['footer'][je(0x9c)])),w[je(0x288)](M=>{M['cells']['forEach'](N=>{const jf=b;N['cellType']===jf(0x298)&&(N['render']=N['renderFooter']),N['render']&&(N['fixed']==='left'?r['push'](N):N[jf(0x228)]==='right'?u['push'](N):p['push'](N));});});const {fixedLeftWidth:x,fixedRightWidth:y,config:{SCROLLER_TRACK_SIZE:z,CSS_PREFIX:C}}=this['ctx'],{visibleWidth:D,visibleHeight:E}=this[je(0x372)][je(0x156)],F=y-z,G={'key':'left','style':{'position':je(0x1b5),'top':0.5+'px','left':0.5+'px','overflow':'hidden','width':x+'px','height':E+'px'},'cells':r},K={'key':je(0xcc),'style':{'position':'absolute','top':0.5+'px','left':x-0.5+'px','overflow':je(0x229),'width':D-x-F+'px','height':E+'px'},'cells':p},L={'key':je(0x238),'style':{'position':'absolute','top':'0px','right':'0px','overflow':'hidden','width':F+'px','height':E+'px'},'cells':u};return{'type':'body','class':C+'-overlayer-body','style':{'position':'relative','overflow':'hidden','width':D+'px','height':E+'px'},'views':[G,K,L]};}['getFooter'](){const jk=bn,p=[],r=[],u=[];this['ctx']['footer']['renderRows']['forEach'](L=>{const jg=b;L['cells'][jg(0x288)](M=>{const jj=jg;M[jj(0x2d0)]==='footer'&&M[jj(0x330)]&&(M['render']=M['renderFooter'],M[jj(0x228)]==='left'?r[jj(0x18f)](M):M['fixed']==='right'?u['push'](M):p['push'](M));});});const {fixedLeftWidth:w,fixedRightWidth:x,config:{SCROLLER_TRACK_SIZE:y,CSS_PREFIX:z}}=this['ctx'],{visibleWidth:C,visibleHeight:D}=this['ctx']['footer'],E=x-y,F={'key':'left','style':{'position':'absolute','top':0.5+'px','left':0.5+'px','overflow':'hidden','width':w+'px','height':D+'px'},'cells':r},G={'key':'center','style':{'position':jk(0x1b5),'top':0.5+'px','left':w-0.5+'px','overflow':'hidden','width':C-w-E+'px','height':D+'px'},'cells':p},K={'key':'right','style':{'position':'absolute','top':0.5+'px','right':0.5+'px','overflow':'hidden','width':E+'px','height':D+'px'},'cells':u};return{'type':'footer','class':z+'-overlayer-footer','style':{'position':'relative','overflow':'hidden','width':C+'px','height':D+'px'},'views':[F,G,K]};}}class pl{constructor(p,r=[],s={}){const jm=bn;m(this,'container'),m(this,'menuData'),m(this,'onClick'),m(this,'activeSubmenus',new Set()),m(this,'boundMouseEnterHandler'),m(this,'boundMouseLeaveHandler'),m(this,'boundClickHandler'),this['container']=p,this['menuData']=r,this[jm(0x182)]=s[jm(0x182)],this[jm(0x282)]=u=>this[jm(0x350)](u,'enter'),this['boundMouseLeaveHandler']=u=>this['handleMouseEvent'](u,'leave'),this['boundClickHandler']=u=>this['handleClick'](u),this['createMenu'](),this['bindEvents']();}['createMenu'](){const jn=bn;this['container']['className']='e-virt-table-main-menu',this['container']['style']['display']=jn(0x3ec);const p=document[jn(0x26c)]();this['menuData']['forEach'](r=>{p['appendChild'](this['createMenuItem'](r));}),this['container']['appendChild'](p);}['createMenuItem'](p,r=!0x1){const jo=bn;var u;const w=this[jo(0x3cc)]('div',r?'e-virt-table-submenu-item':'e-virt-table-menu-item');w['setAttribute'](r?'data-submenu':'data-menu',p[jo(0x22d)]),p['disabled']&&w[jo(0x265)]['add']('disabled');const x=this['createElement']('div','e-virt-table-menu-item-content');if(p['icon']){const z=this['createElement'](jo(0x266),'e-virt-table-menu-item-icon');z['innerHTML']=p[jo(0x1ce)],x['appendChild'](z);}else x['classList']['add']('menu-item-no-icon');const y=this[jo(0x3cc)]('span','e-virt-table-menu-item-text');if(y['textContent']=p['label'],x['appendChild'](y),w['appendChild'](x),(u=p['children'])!=null&&u['length']){const C=this['createElement']('span','e-virt-table-menu-arrow');C['innerHTML']=Hi,w[jo(0x3cf)](C);const D=this[jo(0x251)](p['children']);w['_submenu']=D,this['container']['appendChild'](D);}return w;}['createSubmenu'](p){const jp=bn,r=this[jp(0x3cc)]('div',jp(0x9a));return p['forEach'](s=>{const jq=jp;r[jq(0x3cf)](this['createMenuItem'](s,!0x0));}),r;}['createElement'](p,r=''){const s=document['createElement'](p);return r&&(s['className']=r),s;}[bn(0x180)](){this['container']['addEventListener']('mouseenter',this['boundMouseEnterHandler'],!0x0),this['container']['addEventListener']('mouseleave',this['boundMouseLeaveHandler'],!0x0),this['container']['addEventListener']('click',this['boundClickHandler']);}[bn(0x350)](p,r){const jr=bn;p['stopPropagation']();const s=p['target']['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');s&&(this['container']['contains'](s)||s['classList'][jr(0x313)]('e-virt-table-submenu-item'))&&(r==='enter'?this['handleHover'](s):this['handleLeave'](s));}['handleHover'](p){const ju=bn;p['classList']['contains'](ju(0x2ee))&&(this['container']['querySelectorAll']('.e-virt-table-menu-item')['forEach'](s=>s[ju(0x265)]['remove']('active')),p['classList']['contains']('disabled')||p['classList']['add']('active'));const r=p[ju(0x184)]||p[ju(0x1be)]('.e-virt-table-submenu');r&&(this['hideSiblingSubmenus'](p),this['showSubmenu'](p,r));}['handleLeave'](p){const jv=bn,r=p['_submenu']||p['querySelector'](jv(0x400));setTimeout(()=>{const jw=jv,s=r;s&&!s['matches'](':hover')&&!p['matches'](':hover')&&(this['hideSubmenu'](s),p['classList'][jw(0x313)]('e-virt-table-menu-item')&&p['classList']['remove']('active'));},0x96);}['hideSiblingSubmenus'](p){const jx=bn;let r;if(p[jx(0x265)][jx(0x313)](jx(0x2ee)))r=this[jx(0xa4)][jx(0x2c9)]('.e-virt-table-menu-item');else{const s=p['closest']('.e-virt-table-submenu');if(s)r=s[jx(0x2c9)]('.e-virt-table-submenu-item');else return;}r[jx(0x288)](u=>{const jy=jx;u!==p&&u[jy(0x184)]&&this['hideSubmenu'](u['_submenu']);});}async[bn(0xa6)](p,r){const jz=bn;if(this['activeSubmenus']['has'](r))return;this['activeSubmenus']['add'](r),r['classList'][jz(0x310)]('show');const s=Vt(p,r,async()=>{const jA=jz,u=this['container']['getBoundingClientRect'](),w=window['innerWidth'],x=r['offsetWidth']||0xc8,y=w-u[jA(0x238)],z=u['left'],C=y>=x||y>=z?'right-start':'left-start',{x:D,y:E}=await _i(p,r,{'placement':C,'middleware':[Bi(0x8),Ai({'padding':0x8})]});Object['assign'](r[jA(0xf3)],{'left':D+'px','top':E+'px'});});r['_cleanup']=s;}['hideSubmenu'](p){const jB=bn;if(!this[jB(0x351)]['has'](p))return;this['activeSubmenus']['delete'](p),p['classList']['remove']('show'),this['hideAllChildSubmenus'](p);const r=p;r['_cleanup']&&(r[jB(0x37e)](),delete r[jB(0x37e)]);}['hideAllChildSubmenus'](p){p['querySelectorAll']('.e-virt-table-submenu-item')['forEach'](r=>{const jC=b;if(r['_submenu']){const u=r['_submenu'];if(this['activeSubmenus']['has'](u)){this['activeSubmenus']['delete'](u),u[jC(0x265)]['remove']('show');const w=u;w['_cleanup']&&(w['_cleanup'](),delete w['_cleanup']),this['hideAllChildSubmenus'](u);}}});}['handleClick'](p){const jD=bn;p['stopPropagation']();const r=p['target']['closest']('.e-virt-table-menu-item,\x20.e-virt-table-submenu-item');if(!r||r[jD(0x265)][jD(0x313)](jD(0x197)))return;if(r[jD(0x265)]['contains'](jD(0x2ee))){const x=r['_submenu']||r['querySelector']('.e-virt-table-submenu');if(x){this['showSubmenu'](r,x);return;}}const u=r['getAttribute']('data-menu')||r?.['getAttribute']('data-submenu'),w=this[jD(0xb7)](u||'');w&&this['onClick']&&this['onClick'](w,u||'');}['findMenuItem'](p,r=this['menuData']){for(const u of r){if(u['value']===p)return u;if(u['children']){const w=this['findMenuItem'](p,u['children']);if(w)return w;}}return null;}['positionMenu'](p){const jE=bn,r={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':p['clientY'],'left':p['clientX'],'right':p['clientX'],'bottom':p[jE(0x273)],'x':p['clientX'],'y':p['clientY']}),'contextElement':document['body']};Vt(r,this['container'],()=>{const jF=jE;_i(r,this['container'],{'placement':jF(0x33c),'middleware':[Bi(),Ai(),Et()]})['then'](({x:u,y:w})=>{this['container']&&Object['assign'](this['container']['style'],{'left':u+'px','top':w+'px'});});});}['destroy'](){const jG=bn;this['container']['removeEventListener'](jG(0x243),this['boundMouseEnterHandler'],!0x0),this['container']['removeEventListener']('mouseleave',this[jG(0x3b7)],!0x0),this[jG(0xa4)]['removeEventListener']('click',this['boundClickHandler']),this['cleanupAllSubmenus'](this['container']),this['container']['style']['display']='none',this['container']['replaceChildren']();}['removeMenuItem'](p){const jH=bn,r=this['container']['querySelector']('[data-menu=\x22'+p+'\x22]');if(!r)return!0x1;const s=r['querySelector'](jH(0x400));return s&&this['cleanupSubmenuRecursively'](s),r['remove'](),!0x0;}['removeSubMenuItem'](p){const jI=bn,r=this[jI(0xa4)]['querySelector']('[data-submenu=\x22'+p+'\x22]');if(!r)return!0x1;const u=r[jI(0x2f9)](jI(0x400)),w=r[jI(0x184)];if(w&&this[jI(0x26e)](w),r['remove'](),u&&u['querySelectorAll']('.e-virt-table-submenu-item')['length']===0x0){const x=this['container']['querySelector'](jI(0x319));if(x&&x[jI(0x184)]===u)this['removeMenuItem'](x[jI(0x23b)]('data-menu')||'');else{const y=this['container']['querySelectorAll']('[data-menu],\x20[data-submenu]');for(const z of y)if(z['_submenu']===u){const C=z['getAttribute'](jI(0x27b))||z['getAttribute'](jI(0x126));C&&(z['hasAttribute']('data-menu')?this['removeMenuItem'](C):this['removeSubMenuItem'](C));break;}}}return!0x0;}['cleanupAllSubmenus'](p){p['querySelectorAll']('.e-virt-table-menu-item')['forEach'](r=>{const jJ=b;r['_submenu']&&(this[jJ(0x26e)](r['_submenu']),r['_submenu']=void 0x0);});}['cleanupSubmenuRecursively'](p){const jK=bn,r=p;r[jK(0x37e)]&&(r['_cleanup'](),delete r['_cleanup']),p['querySelectorAll']('.e-virt-table-submenu-item')['forEach'](s=>{s['_submenu']&&this['cleanupSubmenuRecursively'](s['_submenu']);}),p['remove']();}}class Hc{constructor(p){const jL=bn;m(this,'ctx'),m(this,'contextMenuEl'),m(this,'currentDOMTreeMenu'),m(this,'isCustom',!0x1),this['ctx']=p,this['ctx']['contextMenuElement']?(this['contextMenuEl']=this['ctx'][jL(0x3c9)],this['contextMenuEl']['className']='e-virt-table-main-menu',this['isCustom']=!0x0):(this['contextMenuEl']=document[jL(0x3cc)]('div'),this[jL(0x3ba)]=!0x1),this[jL(0x372)]['containerElement']['appendChild'](this['contextMenuEl']),this['init']();}['init'](){const jO=bn;this['ctx']['on']('outsideMousedown',()=>{this['hide']();}),this['ctx']['on']('cellContextMenuClick',async(p,r)=>{const jM=b;if(this['isCustom']){this[jM(0x3b5)]['style']['display']=jM(0x3ec),this['positionMenu'](r);return;}const {ENABLE_CONTEXT_MENU:u,CUSTOM_BODY_CONTEXT_MENU:w,CONTEXT_MENU:x,BEFORE_BODY_CONTEXT_MENU_METHOD:y}=this['ctx']['config'];let z=[...x,...w];if(y&&(z=await y({'list':z,'cell':p,'hide':this['hide']['bind'](this)})),!u||z['length']===0x0)return;r['preventDefault']();const {xArr:C,yArr:D}=this['ctx']['selector'],[E,F]=C,[G,K]=D,{rowIndex:L,colIndex:M}=p;L>=G&&L<=K&&M>=E&&M<=F||this['ctx']['emit']('setSelectorCell',p,r),this['currentDOMTreeMenu']&&this['currentDOMTreeMenu']['destroy'](),this['ctx']['contextMenuIng']=!0x0,this[jM(0x280)]=new pl(this['contextMenuEl'],z,{'onClick':(N,O)=>{const jN=jM;O===jN(0x2fe)?(this[jN(0x372)]['emit']('contextMenuCopy'),this[jN(0x3db)]()):O==='paste'?(this['ctx']['emit']('contextMenuPaste'),this[jN(0x3db)]()):O===jN(0x205)?(this['ctx']['emit']('contextMenuCut'),this['hide']()):O===jN(0x308)?(this[jN(0x372)]['emit']('contextMenuClearSelected'),this[jN(0x3db)]()):N[jN(0x3e1)]&&N['event'](r,{'hide':this['hide']['bind'](this),'cell':p});}}),this['currentDOMTreeMenu']['positionMenu'](r);}),this[jO(0x372)]['on']('cellHeaderContextMenuClick',async(r,u)=>{const jP=jO;if(this[jP(0x3ba)]){this['contextMenuEl']['style'][jP(0x1f4)]='block',this[jP(0x111)](u);return;}const {SELECTOR_AREA_MIN_X:w,SELECTOR_AREA_MAX_X:x,SELECTOR_AREA_MAX_X_OFFSET:z,BEFORE_HEADER_CONTEXT_MENU_METHOD:C}=this[jP(0x372)]['config'],D=w,E=x||this['ctx']['maxColIndex']-z;if(r['colIndex']<D||r['colIndex']>E)return;const {HEADER_CONTEXT_MENU:F,CUSTOM_HEADER_CONTEXT_MENU:G,ENABLE_HEADER_CONTEXT_MENU:K}=this['ctx']['config'];let L=[...F,...G];if(C&&(L=await C({'list':L,'cell':r,'hide':this[jP(0x3db)]['bind'](this)})),!K||L[jP(0x3d0)]===0x0)return;u['preventDefault']();const {xArr:M}=this['ctx']['selector'],[N,O]=M,{colIndex:Q}=r;Q>=N&&Q<=O||(this['ctx'][jP(0x296)]=r,this['ctx']['emit']('selectCols',r)),this[jP(0x280)]&&this['currentDOMTreeMenu'][jP(0x369)]();const R=this['ctx']['database']['getColumns'](),T=L['map'](U=>U['value']==='visible'?{...U,'children':this['filterColumns'](R)}:U);this[jP(0x372)]['contextMenuIng']=!0x0,this['currentDOMTreeMenu']=new pl(this['contextMenuEl'],T,{'onClick':(U,V)=>{const jQ=jP,{xArr:a0}=this[jQ(0x372)]['selector'],[a1,a2]=a0;if(V==='fixedLeft'||V==='fixedRight'||V==='fixedNone'){const a3=this[jQ(0x372)]['header']['allCellHeaders']['filter'](a4=>a4['colIndex']>=a1&&a4['colIndex']<=a2)['filter'](a4=>a4['level']===0x0)['filter'](a4=>!a4['column']['fixedDisabled'])['map'](a4=>a4[jQ(0x31c)]);this['ctx']['database']['setCustomHeaderFixedData'](a3,V==='fixedLeft'?'left':V==='fixedRight'?'right':''),this['hide']();}else{if(V==='hide'){const a4=this['ctx']['header']['leafCellHeaders']['filter'](a5=>a5['colIndex']>=a1&&a5['colIndex']<=a2)['filter'](a5=>!a5['children']['length'])['filter'](a5=>!a5['column'][jQ(0x37d)])['map'](a5=>a5['key']);a4['length']>0x0&&this['ctx']['database']['setCustomHeaderHideData'](a4,!0x0),this['hide']();}else{if(V!=='visible'){if(V['startsWith']('visible_')){if(!U['key'])return;if(U[jQ(0x1c6)]){const a6=this['getLeafKeys'](U['children']);this[jQ(0x372)][jQ(0x2c6)]['setCustomHeaderHideData'](a6,!0x1);}else this[jQ(0x372)]['database']['setCustomHeaderHideData']([U['key']],!0x1);this[jQ(0x280)]&&this['currentDOMTreeMenu'][jQ(0x3d5)](V);const a5=this['ctx']['database']['getColumns']();Ki(a5)[jQ(0x31f)](a7=>a7['hide'])['length']===0x0&&this['hide']();}else V===jQ(0xd2)?(this['ctx'][jQ(0x2c6)]['resetCustomHeader'](),this[jQ(0x3db)]()):U['event']&&U['event'](u,{'hide':this['hide']['bind'](this),'cell':r});}}}}}),this['positionMenu'](u);}),this[jO(0x372)]['on']('click',()=>{this['hide']();}),this['ctx']['on']('onScroll',this[jO(0x3db)]['bind'](this)),this['ctx']['on'](jO(0xad),this['hide'][jO(0x30c)](this));}['positionMenu'](p){const jR=bn,r={'getBoundingClientRect':()=>({'width':0x0,'height':0x0,'top':p[jR(0x273)],'left':p['clientX'],'right':p['clientX'],'bottom':p['clientY'],'x':p['clientX'],'y':p['clientY']}),'contextElement':document['body']};Vt(r,this['contextMenuEl'],()=>{_i(r,this['contextMenuEl'],{'placement':'right-start','middleware':[Bi(),Ai(),Et()]})['then'](({x:u,y:w})=>{const jS=b;this['contextMenuEl']&&Object['assign'](this[jS(0x3b5)]['style'],{'left':u+'px','top':w+'px'});});});}[bn(0x97)](p){const jT=bn,r=[];for(const u of p)if(u['children']&&u['children']['length']>0x0){const w=this['filterColumns'](u['children']);w['length']>0x0&&r['push']({'label':u['title'],'key':u[jT(0x31c)],'value':'visible_'+u['key'],'children':w});}else u[jT(0x3db)]&&r['push']({'label':u[jT(0xbb)],'value':'visible_'+u['key'],'key':u['key']});return r;}['getLeafKeys'](p){const jU=bn;return p['reduce']((r,s)=>(!s['children']||s['children'][jU(0x3d0)]===0x0?r['push'](String(s['key'])):r[jU(0x18f)](...this['getLeafKeys'](s['children'])),r),[]);}['hide'](){const jV=bn;this[jV(0x280)]&&(this['currentDOMTreeMenu']['destroy'](),this[jV(0x280)]=void 0x0),this['contextMenuEl']['style']['display']='none',this[jV(0x372)]['contextMenuIng']=!0x1;}['destroy'](){const jW=bn;var p;this['hide'](),(p=this['contextMenuEl'])==null||p[jW(0xe3)]();}}class fc{constructor(p){const jX=bn;if(m(this,jX(0x372)),m(this,jX(0x34a)),this['ctx']=p,this['ctx'][jX(0xfe)])this[jX(0x34a)]=this['ctx']['loadingElement'];else{this['loadingEl']=document['createElement']('div');const r=document['createElement']('div');r['className']=jX(0xc2);const u=this['ctx']['icons']['getSvg'](jX(0x239));if(u){const x=new DOMParser()['parseFromString'](u[jX(0x1a9)],jX(0x2ed))['documentElement'];r[jX(0x3cf)](x);}const w=document[jX(0x3cc)]('p');w['className']=jX(0x192),w[jX(0x3d7)]=this['ctx']['config']['LOADING_TEXT'],r['appendChild'](w),this['loadingEl']['appendChild'](r);}this['loadingEl']['className']='e-virt-table-loading',this['loadingEl'][jX(0xf3)]['display']='none',this[jX(0x372)]['containerElement']['appendChild'](this['loadingEl']);}['show'](){this['loadingEl']['style']['display']='flex';}['hide'](){const jY=bn;this[jY(0x34a)][jY(0xf3)][jY(0x1f4)]='none';}['destroy'](){this['loadingEl']['remove']();}}class Qc{constructor(p){const jZ=bn;m(this,'ctx'),m(this,'container'),m(this,'input'),m(this,jZ(0x269)),m(this,'nextBtn'),m(this,'closeBtn'),m(this,'countEl'),m(this,jZ(0x34a)),m(this,'isVisible',!0x1),m(this,'searchResults',[]),m(this,jZ(0x2fd),-0x1),m(this,'searchData',[]),m(this,'isComposing',!0x1),this['ctx']=p,this['container']=this['createContainer'](),this[jZ(0x372)]['containerElement']['appendChild'](this['container']),this['bindEvents'](),this['ctx']['on']('keydown',r=>{const k0=jZ;if(this['ctx']['config'][k0(0x204)]&&!this['ctx']['editing']){if((r[k0(0x22a)]||r[k0(0x3a1)])&&r['code']==='KeyF'){r['preventDefault'](),this[k0(0x16d)]();return;}if(this['ctx']['finding']){if(r[k0(0x176)]==='Escape'){r[k0(0x284)](),this['hide']();return;}if(r[k0(0x176)]==='ArrowUp'||r['shiftKey']&&r[k0(0x31c)]==='Enter'){r['preventDefault'](),this[k0(0x1a8)]();return;}if(r['code']===k0(0x3c2)||r[k0(0x31c)]==='Enter'){r['preventDefault'](),this['navigateNext']();return;}}}}),this['ctx']['on']('setSelector',()=>{this['hide']();}),this[jZ(0x372)]['on']('outsideMousedown',()=>{this['hide']();});}async[bn(0x114)](){const k1=bn;this[k1(0x2bd)](),this['searchData']=[],setTimeout(()=>{const k2=k1,{allCellHeaders:p}=this['ctx']['header'];for(let w=0x0;w<p['length'];w++){const x=p[w];x&&['string','number'][k2(0xd4)](typeof x['text'])&&this[k2(0x373)]['push']({'rowIndex':0x0,'colIndex':x[k2(0x165)],'text':''+x['text'],'type':'header','colKey':x['key']});}const {maxColIndex:r,maxRowIndex:u}=this['ctx'];for(let y=0x0;y<=u;y++)for(let z=0x0;z<=r;z++){const C=this['ctx']['database']['getVirtualBodyCell'](y,z,!0x1),D=C?.['getText']();['string','number']['includes'](typeof D)&&this['searchData']['push']({'rowIndex':y,'colIndex':z,'text':''+D,'type':k2(0x156)});}this[k2(0xf4)]();},0x0);}['createContainer'](){const k3=bn,p=document['createElement']('div');p['className']='e-virt-table-finder-bar';const r=document['createElement']('div');r['className']='e-virt-table-finder-bar-input-wrapper',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='e-virt-table-finder-bar-input',this['input']['placeholder']='',r[k3(0x3cf)](this[k3(0x235)]),this['loadingEl']=document['createElement']('div'),this['loadingEl']['className']='e-virt-table-finder-bar-loading';const u=Ql;this['loadingEl']['innerHTML']=u,r['appendChild'](this['loadingEl']),this['countEl']=document['createElement']('span'),this['countEl']['className']='e-virt-table-finder-bar-count';const w=document['createElement']('div');return w['className']='e-virt-table-finder-bar-nav',this['prevBtn']=document['createElement']('button'),this['prevBtn']['className']=k3(0x36d),this['prevBtn'][k3(0x2d7)]=Hi,this['nextBtn']=document['createElement']('button'),this['nextBtn']['className']=k3(0x3c5),this['nextBtn']['innerHTML']=Hi,w[k3(0x3cf)](this[k3(0x269)]),w['appendChild'](this[k3(0x200)]),this['closeBtn']=document['createElement']('button'),this['closeBtn']['className']='e-virt-table-finder-bar-nav-btn\x20close-btn',this['closeBtn']['innerHTML']='×',p['appendChild'](r),p[k3(0x3cf)](this['countEl']),p['appendChild'](w),p['appendChild'](this['closeBtn']),p;}[bn(0x180)](){const k4=bn;this['input']['addEventListener'](k4(0x235),()=>{this['isComposing']||this['performSearch']();}),this[k4(0x235)]['addEventListener']('compositionstart',()=>{this['isComposing']=!0x0;}),this['input'][k4(0x2f6)]('compositionend',()=>{const k5=k4;this[k5(0x2b5)]=!0x1,this['performSearch']();}),this['prevBtn'][k4(0x2f6)](k4(0x3a3),()=>{this['navigatePrevious']();}),this['nextBtn'][k4(0x2f6)]('click',()=>{this['navigateNext']();}),this['closeBtn'][k4(0x2f6)]('click',()=>{this['hide']();});}[bn(0xe4)](){const k6=bn,p=this['input']['value'][k6(0x26d)]();if(this['searchResults']=[],this['currentIndex']=-0x1,!p){this['cearFinderBar'](),this[k6(0x314)]();return;}this['showLoading'](),setTimeout(()=>{const k7=k6;this['searchResults']=this['searchData']['filter'](r=>r[k7(0x286)]['toLowerCase']()['includes'](p['toLowerCase']())),this['searchResults']['length']>0x0?(this[k7(0x2fd)]=0x0,this['scrollToCurrentResult']()):this['cearFinderBar'](),this['updateCount'](),this['hideLoading']();},0x0);}['scrollToCurrentResult'](){const k8=bn;if(this['currentIndex']<0x0||this['currentIndex']>=this['searchResults']['length'])return;const p=this[k8(0x2ac)][this[k8(0x2fd)]];this['ctx']['finderBar']=p;const {rowIndex:r,colIndex:s}=p;this['ctx']['emit']('scrollToIndex',r,s);}['navigateNext'](){const k9=bn;this['searchResults']['length']!==0x0&&(this['currentIndex']=(this[k9(0x2fd)]+0x1)%this['searchResults']['length'],this['scrollToCurrentResult'](),this[k9(0x314)]());}['navigatePrevious'](){const ka=bn;this['searchResults']['length']!==0x0&&(this['currentIndex']=this['currentIndex']<=0x0?this['searchResults'][ka(0x3d0)]-0x1:this['currentIndex']-0x1,this['scrollToCurrentResult'](),this[ka(0x314)]());}['updateCount'](){const kb=bn;if(this['searchResults'][kb(0x3d0)]===0x0)this['input']['value']['trim']()?(this[kb(0x34c)]['textContent']=kb(0x25f),this['countEl']['classList']['add'](kb(0x188))):(this['countEl']['textContent']='',this['countEl']['classList'][kb(0xe3)](kb(0x188)));else{const p=this['currentIndex']+0x1,r=this['searchResults']['length'];this[kb(0x34c)]['textContent']=p+'/'+r,this['countEl']['classList']['remove']('no-results');}}['show'](){const kd=bn;this['isVisible']||(this['isVisible']=!0x0,this[kd(0x372)][kd(0x28d)]=!0x0,this[kd(0xa4)]['classList'][kd(0x310)]('show'),this['input']['focus'](),this['initSearchData']());}[bn(0x2bd)](){var p;this['loadingEl']['classList']['add']('show'),(p=this['loadingEl']['parentElement'])==null||p['classList']['add']('loading'),this['input']['readOnly']=!0x0;}[bn(0xf4)](){const ke=bn;var p;this['loadingEl']['classList']['remove']('show'),(p=this[ke(0x34a)]['parentElement'])==null||p['classList']['remove']('loading'),this['input']['readOnly']=!0x1;}['cearFinderBar'](){const kf=bn;this['ctx']['finderBar']={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this[kf(0x372)]['emit']('draw');}['hide'](){const kg=bn;this['isVisible']&&(this['isVisible']=!0x1,this['container']['classList'][kg(0xe3)]('show'),this['ctx'][kg(0x28d)]=!0x1,this['input'][kg(0x22d)]='',this[kg(0x2ac)]=[],this[kg(0x373)]=[],this['currentIndex']=-0x1,this['hideLoading'](),this['ctx']['finderBar']={'rowIndex':-0x1,'colIndex':-0x1,'text':'','type':'header'},this['updateCount'](),this['ctx']['emit']('draw'));}['destroy'](){const kj=bn;this['hide'](),this[kj(0xa4)]['remove']();}}class vc{constructor(p,r){const kk=bn;m(this,'options'),m(this,'scroller'),m(this,'header'),m(this,kk(0x156)),m(this,kk(0x298)),m(this,'selector'),m(this,'autofill'),m(this,'tooltip'),m(this,'editor'),m(this,kk(0x2df)),m(this,'overlayer'),m(this,'contextMenu'),m(this,'loading'),m(this,'finderBar'),m(this,'animationFrameId'),m(this,'ctx'),this['options']=r;const {overlayerElement:u,editorElement:w,emptyElement:x,contextMenuElement:y}=this[kk(0xab)],z=this['createContainer'](p,u,w,x,y);this['ctx']=new As(z,this['options']),this['header']=new $s(this['ctx']),this[kk(0x298)]=new tc(this['ctx']),this['body']=new ic(this[kk(0x372)]),this['scroller']=new _s(this[kk(0x372)]),this['selector']=new lc(this[kk(0x372)]),this['autofill']=new sc(this['ctx']),this['tooltip']=new kc(this['ctx']),this[kk(0x2df)]=new Dc(this['ctx']),this['editor']=new Oc(this['ctx']),this['overlayer']=new Pc(this[kk(0x372)]),this['contextMenu']=new Hc(this['ctx']),this['loading']=new fc(this['ctx']),this[kk(0x3ee)]=new Qc(this['ctx']),this['ctx']['on']('draw',()=>{this['draw']();}),this[kk(0x372)]['on']('drawView',()=>{this['draw'](!0x0);}),this['draw']();}['createContainer'](p,r,u,w,x){const km=bn;p[km(0x352)]='e-virt-table-container';const y=document['createElement'](km(0xae)),z=document['createElement']('canvas'),C=r||document[km(0x3cc)]('div');y['className']='e-virt-table-stage',p['tabIndex']=0x0,z['className']='e-virt-table-canvas',C['className']='e-virt-table-overlayer',C[km(0x12d)]('data-overlayer',r?'custom':'default');const D=u||document[km(0x3cc)]('div');D['className']='e-virt-table-editor';const E=w,F=x;return y['appendChild'](z),y[km(0x3cf)](C),p['appendChild'](y),{'containerElement':p,'stageElement':y,'canvasElement':z,'overlayerElement':C,'editorElement':D,'emptyElement':E,'contextMenuElement':F};}['doDraw'](p=!0x1){const kn=bn;this['header']['update'](),this['footer'][kn(0x35e)](),this['body'][kn(0x35e)](),this['ctx']['paint']['clear'](),this['body']['draw'](),this['footer']['draw'](),this['header']['draw'](),this['scroller']['draw'](),p||this['overlayer']['draw']();}['draw'](p=!0x1){this['animationFrameId']&&cancelAnimationFrame(this['animationFrameId']),this['animationFrameId']=requestAnimationFrame(()=>{this['doDraw'](p),this['body']['updateAutoHeight']()&&this['doDraw'](p);});}['loadConfig'](p){const ko=bn;this['ctx']['config']['init'](p),this['ctx']['database'][ko(0x1fe)](!0x1),this[ko(0xe1)]['init'](),this[ko(0x372)]['emit'](ko(0x3ed));}['loadColumns'](p){const kp=bn;this[kp(0x2a5)]['doneEdit'](),this['ctx']['database']['setColumns'](p),this['header']['init'](),this['ctx']['emit']('draw');}['loadData'](p){const kq=bn;this['editor']['doneEdit'](),this['ctx'][kq(0x2c6)][kq(0x183)](p),this[kq(0xe1)]['init'](),this['tooltip']['hide'](),this['ctx']['emit']('draw');}['loadFooterData'](p){const kr=bn;this['ctx']['database']['setFooterData'](p),this[kr(0x372)][kr(0x186)](kr(0x3ed));}['setCustomHeader'](p,r=!0x0){const ku=bn;this['ctx']['database']['setCustomHeader'](p,r),this[ku(0xe1)]['init'](),this['ctx'][ku(0x186)]('draw');}[bn(0xff)](){const kv=bn;return this[kv(0xe1)]['getCustomHeader']();}['showColumns'](p,r=!0x0){this['ctx']['database']['setCustomHeaderHideData'](p,!r),this['header']['init'](),this['ctx']['emit']('draw');}['fixedColumns'](p,r){const kw=bn;this['ctx'][kw(0x2c6)]['setCustomHeaderFixedData'](p,r),this['header']['init'](),this['ctx']['emit'](kw(0x3ed));}['setLoading'](p){const kx=bn;this['ctx'][kx(0x239)]=p,p?this['loading']['show']():this[kx(0x239)]['hide']();}['on'](p,r){this['ctx']['on'](p,r);}['emit'](p,...r){this['ctx']['emit'](p,...r);}['off'](p,r){const ky=bn;this['ctx'][ky(0x1a7)](p,r);}['filterMethod'](p){const kz=bn;this['ctx'][kz(0x2c6)][kz(0x223)](p),this[kz(0x372)]['database']['init'](!0x1),this['header'][kz(0x1fe)](),this['ctx']['emit']('draw');}['editCell'](p,r){const kA=bn;this[kA(0x2a5)]['editCell'](p,r);}['setItemValue'](p,r,u,w=!0x0,x=!0x0,y=!0x1){const kB=bn;this['ctx']['database'][kB(0x133)](p,r,u,w,x,y);}['batchSetItemValue'](p,r=!0x0){const kC=bn;this[kC(0x372)]['database']['batchSetItemValue'](p,r);}['setItemValueByEditor'](p,r,u,w=!0x0,x=!0x0){const kD=bn;this['ctx'][kD(0x34e)](p,r,u,w,x),this['editor']['doneEdit']();}['clearEditableData'](p=null){const kE=bn,r=[0x0,this[kE(0x372)]['maxColIndex']],s=[0x0,this['ctx']['maxRowIndex']];return this['selector'][kE(0x3a7)](r,s,!0x1,p);}['clearEditor'](){this['editor']['clearEditor']();}['doLayout'](){this['ctx']['emit']('draw');}['getChangedData'](){const kF=bn;return this['ctx']['database'][kF(0x175)]();}['getChangedRows'](){const kG=bn;return this['ctx'][kG(0x2c6)]['getChangedRows']();}['setCurrentRowByRowIndex'](p){const kH=bn;this['ctx'][kH(0x3eb)]=this['ctx']['database']['getVirtualBodyCell'](p,0x0),this['ctx']['emit'](kH(0x3ed));}['setCurrentRow'](p){const kI=bn,r=this['ctx']['database'][kI(0x33b)](0x0);r&&(this['ctx']['currentCell']=this['ctx'][kI(0x2c6)]['getVirtualBodyCellByKey'](p,r['key']),this['ctx']['emit'](kI(0x3ed)));}['getCurrentRow'](){const p=this['ctx']['currentCell'];return p?{'row':p['row'],'rowIndex':p['rowIndex'],'rowKey':p['rowKey']}:void 0x0;}['clearValidate'](){const kJ=bn;this[kJ(0x372)][kJ(0x2c6)]['clearValidate'](),this['ctx']['emit']('draw');}['validateFields'](p,r=!0x0){return new Promise(async(u,w)=>{const kK=b;let x=[];for(let y=0x0;y<p['length'];y++){const {rowKey:z,key:C}=p[y],D=await this['ctx']['database']['getValidator'](z,C);Array['isArray'](D)&&D['length']&&x['push'](D);}if(x['length']){if(w(x),r){const [E]=x;if(Array['isArray'](E)&&E['length']){const [F]=E,{rowKey:G,key:K}=F;this['scrollToRowkey'](G),this['scrollToColkey'](K);}}this['ctx']['emit']('draw');}else u([]),this['ctx'][kK(0x186)]('draw');});}async[bn(0x90)](p=!0x0){return new Promise(async(r,u)=>{const kL=b;try{const w=await this[kL(0x211)]();r(w);}catch(x){if(p&&Array['isArray'](x)&&x['length']){const [y]=x;if(Array['isArray'](y)&&y['length']){const [z]=y,{rowKey:C,key:D}=z,E=this['ctx']['database']['getRowForRowKey'](C);if(E){const {parentRowKeys:F=[]}=E;F&&F['length']&&this['setExpandRowKeys'](F,!0x0);}this['scrollToRowkey'](C),this['scrollToColkey'](D);}}u(x);}});}['setValidations'](p){const kN=bn;if(p['forEach'](r=>{const kM=b,{rowIndex:u,key:w,message:x,rowKey:y}=r;if(u!==void 0x0&&y===void 0x0){const z=this['ctx']['database']['getRowKeyForRowIndex'](u);this[kM(0x372)][kM(0x2c6)]['setValidationErrorByRowKey'](z,w,x);}y&&this['ctx']['database']['setValidationErrorByRowKey'](y,w,x);}),p&&Array['isArray'](p)&&p['length']){const [r]=p;if(r&&r[kN(0x387)])this[kN(0x29f)](r['rowKey']),this['scrollToColkey'](r['key']);else{if(r&&r[kN(0x151)]!==void 0x0&&r['rowIndex']>=0x0&&r['key']){const {rowIndex:u,key:w}=r;this['scrollToRowIndex'](u),this['scrollToColkey'](w);}}}}[bn(0x211)](){return this['ctx']['config']['DISABLED']?new Promise(p=>{p([]);}):new Promise(async(p,r)=>{const kO=b,u=this['ctx']['database'][kO(0x324)](),w=this['ctx']['header']['leafCellHeaders'];let x=[];for(let y=0x0;y<u['length'];y++)for(let z=0x0;z<w['length'];z++){const C=this['ctx']['database']['getRowKeyByItem'](u[y]),D=w[z]['key'],E=await this['ctx']['database'][kO(0x1ff)](C,D);Array['isArray'](E)&&E['length']&&x['push'](E);}x['length']?(r(x),this['ctx']['emit']('draw')):(p([]),this['ctx']['emit']('draw'));});}['hasValidationError'](){const kP=bn;return this['ctx'][kP(0x2c6)]['hasValidationError']();}['scrollTo'](p,r){this['scroller']['setScroll'](p,r);}['scrollXTo'](p){this['scroller']['setScrollX'](p);}[bn(0x154)](p){this['scroller']['scrollToColkey'](p);}[bn(0x29f)](p){this['scroller']['scrollToRowKey'](p);}['scrollToColIndex'](p){this['scroller']['scrollToColIndex'](p);}['scrollToRowIndex'](p){this['scroller']['scrollToRowIndex'](p);}['scrollYTo'](p){const kQ=bn;this['scroller'][kQ(0xe5)](p);}['setExpandRowKeys'](p,r=!0x0){this['ctx']['database']['setExpandRowKeys'](p,r);}['getExpandRowKeys'](){return this['ctx']['database']['getExpandRowKeys']();}['clearSelection'](){const kR=bn;this['ctx']['database']['clearSelection'](),this['ctx']['emit'](kR(0x3ed));}['toggleRowSelection'](p){const kS=bn,r=this['ctx']['database']['getRowKeyByItem'](p);this['ctx'][kS(0x2c6)]['toggleRowSelection'](r),this[kS(0x372)]['emit'](kS(0x3ed));}['setSelectionByRows'](p,r=!0x0){p['forEach'](u=>{const w=this['ctx']['database']['getRowKeyByItem'](u);this['ctx']['database']['setRowSelection'](w,r,!0x1);}),this['ctx']['emit']('selectionChange',this['getSelectionRows']()),this['ctx']['emit']('draw');}['setSelectionByRowKeys'](p,r=!0x0){const kT=bn;p[kT(0x288)](s=>{this['ctx']['database']['setRowSelection'](s,r,!0x1);}),this['ctx']['emit']('selectionChange',this['getSelectionRows']()),this['ctx']['emit']('draw');}[bn(0x3fa)](){const kU=bn;this['ctx']['database']['toggleAllSelection'](),this[kU(0x372)][kU(0x186)]('draw');}['toggleRowExpand'](p,r){this['ctx']['database']['expandItem'](p,r),this['ctx']['emit']('draw');}['toggleExpandAll'](p){const kV=bn;this['ctx'][kV(0x2c6)]['expandAll'](p),this['ctx']['emit']('draw');}['getSelectionRows'](){const kW=bn;return this['ctx'][kW(0x2c6)]['getSelectionRows']();}['getPositionForRowIndex'](p){return this['ctx']['database']['getPositionForRowIndex'](p);}['getCellValue'](p,r){return this['ctx']['database']['getItemValue'](p,r);}['getCellValueByIndex'](p,r){return this['ctx']['database']['getItemValueForRowIndexAndColIndex'](p,r);}['clearSort'](){const kX=bn;this['ctx']['database'][kX(0xb0)]();}[bn(0x33e)](){this['contextMenu']['hide']();}[bn(0x30f)](){return{'mergeColCell':Us,'mergeRowCell':gs,'getSpanArrByRow':Pl,'getSpanObjByColumn':Hl};}['getColumnByKey'](p){var r;return(r=this['ctx']['database']['getColumnByKey'](p))==null?void 0x0:r['column'];}[bn(0x147)](){this['ctx']['database']['clearChangeData'](),this['ctx']['emit']('draw');}[bn(0x13a)](p,r){return this['ctx']['database']['getReadonly'](p,r);}[bn(0x369)](){const kY=bn;this['overlayer'][kY(0x369)](),this[kY(0x2df)]['destroy'](),this[kY(0x2a5)]['destroy'](),this['tooltip']['destroy'](),this['selector']['destroy'](),this['autofill']['destroy'](),this['contextMenu']['destroy'](),this['loading']['destroy'](),this['finderBar']['destroy'](),this['ctx']['destroy'](),this['ctx']['containerElement']['remove']();}}const hs='KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOy8qISB4bHN4LmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi92YXIgSHI9MTIwMCxudCxlYz1bODc0LDkzMiw5MzYsOTQ5LDk1MCwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQsMTI1NSwxMjU2LDEyNTcsMTI1OCwxZTRdLEcwPXswOjEyNTIsMTo2NTAwMSwyOjY1MDAxLDc3OjFlNCwxMjg6OTMyLDEyOTo5NDksMTMwOjEzNjEsMTM0OjkzNiwxMzY6OTUwLDE2MToxMjUzLDE2MjoxMjU0LDE2MzoxMjU4LDE3NzoxMjU1LDE3ODoxMjU2LDE4NjoxMjU3LDIwNDoxMjUxLDIyMjo4NzQsMjM4OjEyNTAsMjU1OjEyNTIsNjk6Njk2OX0sWDA9ZnVuY3Rpb24oZSl7ZWMuaW5kZXhPZihlKSE9LTEmJihHMFswXT1lKX07ZnVuY3Rpb24gcmMoKXtYMCgxMjUyKX12YXIgWXI9ZnVuY3Rpb24oZSl7SHI9ZSxYMChlKX07ZnVuY3Rpb24gVm4oKXtZcigxMjAwKSxyYygpfWZ1bmN0aW9uIEduKGUpe2Zvcih2YXIgYT1bXSxyPTAsdD1lLmxlbmd0aDtyPHQ7KytyKWFbcl09ZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIFhuKGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpYVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIpKyhlLmNoYXJDb2RlQXQoMipyKzEpPDw4KSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gYWMoZSl7Zm9yKHZhciBhPVtdLHI9MDtyPGUubGVuZ3RoPj4xOysrcilhW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVsyKnJdKyhlWzIqcisxXTw8OCkpO3JldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHpuKGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aD4+MTsrK3IpYVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGVBdCgyKnIrMSkrKGUuY2hhckNvZGVBdCgyKnIpPDw4KSk7cmV0dXJuIGEuam9pbigiIil9dmFyIFR0PWZ1bmN0aW9uKGUpe3ZhciBhPWUuY2hhckNvZGVBdCgwKSxyPWUuY2hhckNvZGVBdCgxKTtyZXR1cm4gYT09MjU1JiZyPT0yNTQ/WG4oZS5zbGljZSgyKSk6YT09MjU0JiZyPT0yNTU/em4oZS5zbGljZSgyKSk6YT09NjUyNzk/ZS5zbGljZSgxKTplfSxuMD1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShhKX0sJG49ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYSl9LHRjPW51bGwsV3I9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IjtmdW5jdGlvbiBLbihlKXtmb3IodmFyIGE9IiIscj0wLHQ9MCxuPTAsaT0wLGY9MCxzPTAsYz0wLG89MDtvPGUubGVuZ3RoOylyPWUuY2hhckNvZGVBdChvKyspLGk9cj4+Mix0PWUuY2hhckNvZGVBdChvKyspLGY9KHImMyk8PDR8dD4+NCxuPWUuY2hhckNvZGVBdChvKyspLHM9KHQmMTUpPDwyfG4+PjYsYz1uJjYzLGlzTmFOKHQpP3M9Yz02NDppc05hTihuKSYmKGM9NjQpLGErPVdyLmNoYXJBdChpKStXci5jaGFyQXQoZikrV3IuY2hhckF0KHMpK1dyLmNoYXJBdChjKTtyZXR1cm4gYX1mdW5jdGlvbiB6MChlKXtmb3IodmFyIGE9IiIscj0wLHQ9MCxuPTAsaT0wLGY9MCxzPTAsYz0wLG89MDtvPGUubGVuZ3RoOylyPWVbbysrXSxpPXI+PjIsdD1lW28rK10sZj0ociYzKTw8NHx0Pj40LG49ZVtvKytdLHM9KHQmMTUpPDwyfG4+PjYsYz1uJjYzLGlzTmFOKHQpP3M9Yz02NDppc05hTihuKSYmKGM9NjQpLGErPVdyLmNoYXJBdChpKStXci5jaGFyQXQoZikrV3IuY2hhckF0KHMpK1dyLmNoYXJBdChjKTtyZXR1cm4gYX1mdW5jdGlvbiBJcihlKXt2YXIgYT0iIixyPTAsdD0wLG49MCxpPTAsZj0wLHM9MCxjPTA7aWYoZS5zbGljZSgwLDUpPT0iZGF0YToiKXt2YXIgbz1lLnNsaWNlKDAsMTAyNCkuaW5kZXhPZigiO2Jhc2U2NCwiKTtvPi0xJiYoZT1lLnNsaWNlKG8rOCkpfWU9ZS5yZXBsYWNlKC9bXlx3XCtcL1w9XS9nLCIiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOylpPVdyLmluZGV4T2YoZS5jaGFyQXQobysrKSksZj1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLHI9aTw8MnxmPj40LGErPVN0cmluZy5mcm9tQ2hhckNvZGUocikscz1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLHQ9KGYmMTUpPDw0fHM+PjIscyE9PTY0JiYoYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSksYz1Xci5pbmRleE9mKGUuY2hhckF0KG8rKykpLG49KHMmMyk8PDZ8YyxjIT09NjQmJihhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pKTtyZXR1cm4gYX12YXIgTmU9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJ1ZmZlcjwidSImJnR5cGVvZiBwcm9jZXNzPCJ1IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM8InUiJiYhIXByb2Nlc3MudmVyc2lvbnMubm9kZX0oKSxFYT1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI8InUiKXt2YXIgZT0hQnVmZmVyLmZyb207aWYoIWUpdHJ5e0J1ZmZlci5mcm9tKCJmb28iLCJ1dGY4Iil9Y2F0Y2h7ZT0hMH1yZXR1cm4gZT9mdW5jdGlvbihhLHIpe3JldHVybiByP25ldyBCdWZmZXIoYSxyKTpuZXcgQnVmZmVyKGEpfTpCdWZmZXIuZnJvbS5iaW5kKEJ1ZmZlcil9cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxFdD1mdW5jdGlvbigpe2lmKHR5cGVvZiBCdWZmZXI+InUiKXJldHVybiExO3ZhciBlPUVhKFs2NSwwXSk7aWYoIWUpcmV0dXJuITE7dmFyIGE9ZS50b1N0cmluZygidXRmMTZsZSIpO3JldHVybiBhLmxlbmd0aD09MX0oKTtmdW5jdGlvbiBBYShlKXtyZXR1cm4gTmU/QnVmZmVyLmFsbG9jP0J1ZmZlci5hbGxvYyhlKTpuZXcgQnVmZmVyKGUpOnR5cGVvZiBVaW50OEFycmF5PCJ1Ij9uZXcgVWludDhBcnJheShlKTpuZXcgQXJyYXkoZSl9ZnVuY3Rpb24gam4oZSl7cmV0dXJuIE5lP0J1ZmZlci5hbGxvY1Vuc2FmZT9CdWZmZXIuYWxsb2NVbnNhZmUoZSk6bmV3IEJ1ZmZlcihlKTp0eXBlb2YgVWludDhBcnJheTwidSI/bmV3IFVpbnQ4QXJyYXkoZSk6bmV3IEFycmF5KGUpfXZhciBEcj1mdW5jdGlvbihhKXtyZXR1cm4gTmU/RWEoYSwiYmluYXJ5Iik6YS5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLmNoYXJDb2RlQXQoMCkmMjU1fSl9O2Z1bmN0aW9uIGZhKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfSkuam9pbigiIik7Zm9yKHZhciBhPVtdLHI9MDtyPGUubGVuZ3RoOysrcilhW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtyXSk7cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gJDAoZSl7aWYodHlwZW9mIEFycmF5QnVmZmVyPiJ1Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIik7aWYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiAkMChuZXcgVWludDhBcnJheShlKSk7Zm9yKHZhciBhPW5ldyBBcnJheShlLmxlbmd0aCkscj0wO3I8ZS5sZW5ndGg7KytyKWFbcl09ZVtyXTtyZXR1cm4gYX12YXIgeWE9TmU/ZnVuY3Rpb24oZSl7cmV0dXJuIEJ1ZmZlci5jb25jYXQoZS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hOkVhKGEpfSkpfTpmdW5jdGlvbihlKXtpZih0eXBlb2YgVWludDhBcnJheTwidSIpe3ZhciBhPTAscj0wO2ZvcihhPTA7YTxlLmxlbmd0aDsrK2Epcis9ZVthXS5sZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkociksbj0wO2ZvcihhPTAscj0wO2E8ZS5sZW5ndGg7cis9biwrK2Epbj1lW2FdLmxlbmd0aCxlW2FdaW5zdGFuY2VvZiBVaW50OEFycmF5P3Quc2V0KGVbYV0scik6dHlwZW9mIGVbYV09PSJzdHJpbmciP3Quc2V0KG5ldyBVaW50OEFycmF5KERyKGVbYV0pKSxyKTp0LnNldChuZXcgVWludDhBcnJheShlW2FdKSxyKTtyZXR1cm4gdH1yZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sZS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaSk/aTpbXS5zbGljZS5jYWxsKGkpfSkpfTtmdW5jdGlvbiBuYyhlKXtmb3IodmFyIGE9W10scj0wLHQ9ZS5sZW5ndGgrMjUwLG49QWEoZS5sZW5ndGgrMjU1KSxpPTA7aTxlLmxlbmd0aDsrK2kpe3ZhciBmPWUuY2hhckNvZGVBdChpKTtpZihmPDEyOCluW3IrK109ZjtlbHNlIGlmKGY8MjA0OCluW3IrK109MTkyfGY+PjYmMzEsbltyKytdPTEyOHxmJjYzO2Vsc2UgaWYoZj49NTUyOTYmJmY8NTczNDQpe2Y9KGYmMTAyMykrNjQ7dmFyIHM9ZS5jaGFyQ29kZUF0KCsraSkmMTAyMztuW3IrK109MjQwfGY+PjgmNyxuW3IrK109MTI4fGY+PjImNjMsbltyKytdPTEyOHxzPj42JjE1fChmJjMpPDw0LG5bcisrXT0xMjh8cyY2M31lbHNlIG5bcisrXT0yMjR8Zj4+MTImMTUsbltyKytdPTEyOHxmPj42JjYzLG5bcisrXT0xMjh8ZiY2MztyPnQmJihhLnB1c2gobi5zbGljZSgwLHIpKSxyPTAsbj1BYSg2NTUzNSksdD02NTUzMCl9cmV0dXJuIGEucHVzaChuLnNsaWNlKDAscikpLHlhKGEpfXZhciBTcj0vXHUwMDAwL2csQXQ9L1tcdTAwMDEtXHUwMDA2XS9nO2Z1bmN0aW9uIGl0KGUpe2Zvcih2YXIgYT0iIixyPWUubGVuZ3RoLTE7cj49MDspYSs9ZS5jaGFyQXQoci0tKTtyZXR1cm4gYX1mdW5jdGlvbiBKcihlLGEpe3ZhciByPSIiK2U7cmV0dXJuIHIubGVuZ3RoPj1hP3I6UGUoIjAiLGEtci5sZW5ndGgpK3J9ZnVuY3Rpb24gSzAoZSxhKXt2YXIgcj0iIitlO3JldHVybiByLmxlbmd0aD49YT9yOlBlKCIgIixhLXIubGVuZ3RoKStyfWZ1bmN0aW9uIGkwKGUsYSl7dmFyIHI9IiIrZTtyZXR1cm4gci5sZW5ndGg+PWE/cjpyK1BlKCIgIixhLXIubGVuZ3RoKX1mdW5jdGlvbiBpYyhlLGEpe3ZhciByPSIiK01hdGgucm91bmQoZSk7cmV0dXJuIHIubGVuZ3RoPj1hP3I6UGUoIjAiLGEtci5sZW5ndGgpK3J9ZnVuY3Rpb24gc2MoZSxhKXt2YXIgcj0iIitlO3JldHVybiByLmxlbmd0aD49YT9yOlBlKCIwIixhLXIubGVuZ3RoKStyfXZhciBZbj1NYXRoLnBvdygyLDMyKTtmdW5jdGlvbiBzdChlLGEpe2lmKGU+WW58fGU8LVluKXJldHVybiBpYyhlLGEpO3ZhciByPU1hdGgucm91bmQoZSk7cmV0dXJuIHNjKHIsYSl9ZnVuY3Rpb24gczAoZSxhKXtyZXR1cm4gYT1hfHwwLGUubGVuZ3RoPj03K2EmJihlLmNoYXJDb2RlQXQoYSl8MzIpPT09MTAzJiYoZS5jaGFyQ29kZUF0KGErMSl8MzIpPT09MTAxJiYoZS5jaGFyQ29kZUF0KGErMil8MzIpPT09MTEwJiYoZS5jaGFyQ29kZUF0KGErMyl8MzIpPT09MTAxJiYoZS5jaGFyQ29kZUF0KGErNCl8MzIpPT09MTE0JiYoZS5jaGFyQ29kZUF0KGErNSl8MzIpPT09OTcmJihlLmNoYXJDb2RlQXQoYSs2KXwzMik9PT0xMDh9dmFyIEpuPVtbIlN1biIsIlN1bmRheSJdLFsiTW9uIiwiTW9uZGF5Il0sWyJUdWUiLCJUdWVzZGF5Il0sWyJXZWQiLCJXZWRuZXNkYXkiXSxbIlRodSIsIlRodXJzZGF5Il0sWyJGcmkiLCJGcmlkYXkiXSxbIlNhdCIsIlNhdHVyZGF5Il1dLGowPVtbIkoiLCJKYW4iLCJKYW51YXJ5Il0sWyJGIiwiRmViIiwiRmVicnVhcnkiXSxbIk0iLCJNYXIiLCJNYXJjaCJdLFsiQSIsIkFwciIsIkFwcmlsIl0sWyJNIiwiTWF5IiwiTWF5Il0sWyJKIiwiSnVuIiwiSnVuZSJdLFsiSiIsIkp1bCIsIkp1bHkiXSxbIkEiLCJBdWciLCJBdWd1c3QiXSxbIlMiLCJTZXAiLCJTZXB0ZW1iZXIiXSxbIk8iLCJPY3QiLCJPY3RvYmVyIl0sWyJOIiwiTm92IiwiTm92ZW1iZXIiXSxbIkQiLCJEZWMiLCJEZWNlbWJlciJdXTtmdW5jdGlvbiBmYyhlKXtyZXR1cm4gZXx8KGU9e30pLGVbMF09IkdlbmVyYWwiLGVbMV09IjAiLGVbMl09IjAuMDAiLGVbM109IiMsIyMwIixlWzRdPSIjLCMjMC4wMCIsZVs5XT0iMCUiLGVbMTBdPSIwLjAwJSIsZVsxMV09IjAuMDBFKzAwIixlWzEyXT0iIyA/Lz8iLGVbMTNdPSIjID8/Lz8/IixlWzE0XT0ibS9kL3l5IixlWzE1XT0iZC1tbW0teXkiLGVbMTZdPSJkLW1tbSIsZVsxN109Im1tbS15eSIsZVsxOF09Img6bW0gQU0vUE0iLGVbMTldPSJoOm1tOnNzIEFNL1BNIixlWzIwXT0iaDptbSIsZVsyMV09Img6bW06c3MiLGVbMjJdPSJtL2QveXkgaDptbSIsZVszN109IiMsIyMwIDsoIywjIzApIixlWzM4XT0iIywjIzAgO1tSZWRdKCMsIyMwKSIsZVszOV09IiMsIyMwLjAwOygjLCMjMC4wMCkiLGVbNDBdPSIjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCkiLGVbNDVdPSJtbTpzcyIsZVs0Nl09IltoXTptbTpzcyIsZVs0N109Im1tc3MuMCIsZVs0OF09IiMjMC4wRSswIixlWzQ5XT0iQCIsZVs1Nl09JyLkuIrljYgv5LiL5Y2IICJoaCLmmYIibW0i5YiGInNzIuenkiAiJyxlfXZhciBUZT17MDoiR2VuZXJhbCIsMToiMCIsMjoiMC4wMCIsMzoiIywjIzAiLDQ6IiMsIyMwLjAwIiw5OiIwJSIsMTA6IjAuMDAlIiwxMToiMC4wMEUrMDAiLDEyOiIjID8vPyIsMTM6IiMgPz8vPz8iLDE0OiJtL2QveXkiLDE1OiJkLW1tbS15eSIsMTY6ImQtbW1tIiwxNzoibW1tLXl5IiwxODoiaDptbSBBTS9QTSIsMTk6Img6bW06c3MgQU0vUE0iLDIwOiJoOm1tIiwyMToiaDptbTpzcyIsMjI6Im0vZC95eSBoOm1tIiwzNzoiIywjIzAgOygjLCMjMCkiLDM4OiIjLCMjMCA7W1JlZF0oIywjIzApIiwzOToiIywjIzAuMDA7KCMsIyMwLjAwKSIsNDA6IiMsIyMwLjAwO1tSZWRdKCMsIyMwLjAwKSIsNDU6Im1tOnNzIiw0NjoiW2hdOm1tOnNzIiw0NzoibW1zcy4wIiw0ODoiIyMwLjBFKzAiLDQ5OiJAIiw1NjonIuS4iuWNiC/kuIvljYggImhoIuaZgiJtbSLliIYic3Mi56eSICInfSxabj17NTozNyw2OjM4LDc6MzksODo0MCwyMzowLDI0OjAsMjU6MCwyNjowLDI3OjE0LDI4OjE0LDI5OjE0LDMwOjE0LDMxOjE0LDUwOjE0LDUxOjE0LDUyOjE0LDUzOjE0LDU0OjE0LDU1OjE0LDU2OjE0LDU3OjE0LDU4OjE0LDU5OjEsNjA6Miw2MTozLDYyOjQsNjc6OSw2ODoxMCw2OToxMiw3MDoxMyw3MToxNCw3MjoxNCw3MzoxNSw3NDoxNiw3NToxNyw3NjoyMCw3NzoyMSw3ODoyMiw3OTo0NSw4MDo0Niw4MTo0Nyw4MjowfSxjYz17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjM6JyIkIiMsIyMwXyk7XFwoIiQiIywjIzBcXCknLDY6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNjQ6JyIkIiMsIyMwXyk7W1JlZF1cXCgiJCIjLCMjMFxcKScsNzonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjU6JyIkIiMsIyMwLjAwXyk7XFwoIiQiIywjIzAuMDBcXCknLDg6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNDE6J18oKiAjLCMjMF8pO18oKiBcXCgjLCMjMFxcKTtfKCogIi0iXyk7XyhAXyknLDQyOidfKCIkIiogIywjIzBfKTtfKCIkIiogXFwoIywjIzBcXCk7XygiJCIqICItIl8pO18oQF8pJyw0MzonXygqICMsIyMwLjAwXyk7XygqIFxcKCMsIyMwLjAwXFwpO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMwLjAwXyk7XygiJCIqIFxcKCMsIyMwLjAwXFwpO18oIiQiKiAiLSI/P18pO18oQF8pJ307ZnVuY3Rpb24gZjAoZSxhLHIpe2Zvcih2YXIgdD1lPDA/LTE6MSxuPWUqdCxpPTAsZj0xLHM9MCxjPTEsbz0wLGw9MCx1PU1hdGguZmxvb3Iobik7bzxhJiYodT1NYXRoLmZsb29yKG4pLHM9dSpmK2ksbD11Km8rYywhKG4tdTw1ZS04KSk7KW49MS8obi11KSxpPWYsZj1zLGM9byxvPWw7aWYobD5hJiYobz5hPyhsPWMscz1pKToobD1vLHM9ZikpLCFyKXJldHVyblswLHQqcyxsXTt2YXIgeD1NYXRoLmZsb29yKHQqcy9sKTtyZXR1cm5beCx0KnMteCpsLGxdfWZ1bmN0aW9uIG9jKGUpe3ZhciBhPWUudG9QcmVjaXNpb24oMTYpO2lmKGEuaW5kZXhPZigiZSIpPi0xKXt2YXIgcj1hLnNsaWNlKDAsYS5pbmRleE9mKCJlIikpO3JldHVybiByPXIuaW5kZXhPZigiLiIpPi0xP3Iuc2xpY2UoMCxyLnNsaWNlKDAsMik9PSIwLiI/MTc6MTYpOnIuc2xpY2UoMCwxNSkrUGUoIjAiLHIubGVuZ3RoLTE1KSxyK2Euc2xpY2UoYS5pbmRleE9mKCJlIikpfXZhciB0PWEuaW5kZXhPZigiLiIpPi0xP2Euc2xpY2UoMCxhLnNsaWNlKDAsMik9PSIwLiI/MTc6MTYpOmEuc2xpY2UoMCwxNSkrUGUoIjAiLGEubGVuZ3RoLTE1KTtyZXR1cm4gTnVtYmVyKHQpfWZ1bmN0aW9uIGNhKGUsYSxyKXtpZihlPjI5NTg0NjV8fGU8MClyZXR1cm4gbnVsbDtlPW9jKGUpO3ZhciB0PWV8MCxuPU1hdGguZmxvb3IoODY0MDAqKGUtdCkpLGk9MCxmPVtdLHM9e0Q6dCxUOm4sdTo4NjQwMCooZS10KS1uLHk6MCxtOjAsZDowLEg6MCxNOjAsUzowLHE6MH07aWYoTWF0aC5hYnMocy51KTwxZS02JiYocy51PTApLGEmJmEuZGF0ZTE5MDQmJih0Kz0xNDYyKSxzLnU+Ljk5OTkmJihzLnU9MCwrK249PTg2NDAwJiYocy5UPW49MCwrK3QsKytzLkQpKSx0PT09NjApZj1yP1sxMzE3LDEwLDI5XTpbMTkwMCwyLDI5XSxpPTM7ZWxzZSBpZih0PT09MClmPXI/WzEzMTcsOCwyOV06WzE5MDAsMSwwXSxpPTY7ZWxzZXt0PjYwJiYtLXQ7dmFyIGM9bmV3IERhdGUoMTkwMCwwLDEpO2Muc2V0RGF0ZShjLmdldERhdGUoKSt0LTEpLGY9W2MuZ2V0RnVsbFllYXIoKSxjLmdldE1vbnRoKCkrMSxjLmdldERhdGUoKV0saT1jLmdldERheSgpLHQ8NjAmJihpPShpKzYpJTcpLHImJihpPXhjKGMsZikpfXJldHVybiBzLnk9ZlswXSxzLm09ZlsxXSxzLmQ9ZlsyXSxzLlM9biU2MCxuPU1hdGguZmxvb3Iobi82MCkscy5NPW4lNjAsbj1NYXRoLmZsb29yKG4vNjApLHMuSD1uLHMucT1pLHN9ZnVuY3Rpb24gWTAoZSl7cmV0dXJuIGUuaW5kZXhPZigiLiIpPT0tMT9lOmUucmVwbGFjZSgvKD86XC4wKnwoXC5cZCpbMS05XSkwKykkLywiJDEiKX1mdW5jdGlvbiBsYyhlKXtyZXR1cm4gZS5pbmRleE9mKCJFIik9PS0xP2U6ZS5yZXBsYWNlKC8oPzpcLjAqfChcLlxkKlsxLTldKTArKVtFZV0vLCIkMUUiKS5yZXBsYWNlKC8oRVsrLV0pKFxkKSQvLCIkMTAkMiIpfWZ1bmN0aW9uIHVjKGUpe3ZhciBhPWU8MD8xMjoxMSxyPVkwKGUudG9GaXhlZCgxMikpO3JldHVybiByLmxlbmd0aDw9YXx8KHI9ZS50b1ByZWNpc2lvbigxMCksci5sZW5ndGg8PWEpP3I6ZS50b0V4cG9uZW50aWFsKDUpfWZ1bmN0aW9uIGhjKGUpe3ZhciBhPVkwKGUudG9GaXhlZCgxMSkpO3JldHVybiBhLmxlbmd0aD4oZTwwPzEyOjExKXx8YT09PSIwInx8YT09PSItMCI/ZS50b1ByZWNpc2lvbig2KTphfWZ1bmN0aW9uIHl0KGUpe2lmKCFpc0Zpbml0ZShlKSlyZXR1cm4gaXNOYU4oZSk/IiNOVU0hIjoiI0RJVi8wISI7dmFyIGE9TWF0aC5mbG9vcihNYXRoLmxvZyhNYXRoLmFicyhlKSkqTWF0aC5MT0cxMEUpLHI7cmV0dXJuIGE+PS00JiZhPD0tMT9yPWUudG9QcmVjaXNpb24oMTArYSk6TWF0aC5hYnMoYSk8PTk/cj11YyhlKTphPT09MTA/cj1lLnRvRml4ZWQoMTApLnN1YnN0cigwLDEyKTpyPWhjKGUpLFkwKGxjKHIudG9VcHBlckNhc2UoKSkpfWZ1bmN0aW9uIFBhKGUsYSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6cmV0dXJuIGU7Y2FzZSJib29sZWFuIjpyZXR1cm4gZT8iVFJVRSI6IkZBTFNFIjtjYXNlIm51bWJlciI6cmV0dXJuKGV8MCk9PT1lP2UudG9TdHJpbmcoMTApOnl0KGUpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4iIjtjYXNlIm9iamVjdCI6aWYoZT09bnVsbClyZXR1cm4iIjtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gUnIoMTQsb3IoZSxhJiZhLmRhdGUxOTA0KSxhKX10aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVyYWwgZm9ybWF0OiAiK2UpfWZ1bmN0aW9uIHhjKGUsYSl7YVswXS09NTgxO3ZhciByPWUuZ2V0RGF5KCk7cmV0dXJuIGU8NjAmJihyPShyKzYpJTcpLHJ9ZnVuY3Rpb24gZGMoZSxhLHIsdCl7dmFyIG49IiIsaT0wLGY9MCxzPXIueSxjLG89MDtzd2l0Y2goZSl7Y2FzZSA5ODpzPXIueSs1NDM7Y2FzZSAxMjE6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9cyUxMDAsbz0yO2JyZWFrO2RlZmF1bHQ6Yz1zJTFlNCxvPTQ7YnJlYWt9YnJlYWs7Y2FzZSAxMDk6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5tLG89YS5sZW5ndGg7YnJlYWs7Y2FzZSAzOnJldHVybiBqMFtyLm0tMV1bMV07Y2FzZSA1OnJldHVybiBqMFtyLm0tMV1bMF07ZGVmYXVsdDpyZXR1cm4gajBbci5tLTFdWzJdfWJyZWFrO2Nhc2UgMTAwOnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuZCxvPWEubGVuZ3RoO2JyZWFrO2Nhc2UgMzpyZXR1cm4gSm5bci5xXVswXTtkZWZhdWx0OnJldHVybiBKbltyLnFdWzFdfWJyZWFrO2Nhc2UgMTA0OnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPTErKHIuSCsxMSklMTIsbz1hLmxlbmd0aDticmVhaztkZWZhdWx0OnRocm93ImJhZCBob3VyIGZvcm1hdDogIithfWJyZWFrO2Nhc2UgNzI6c3dpdGNoKGEubGVuZ3RoKXtjYXNlIDE6Y2FzZSAyOmM9ci5ILG89YS5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgaG91ciBmb3JtYXQ6ICIrYX1icmVhaztjYXNlIDc3OnN3aXRjaChhLmxlbmd0aCl7Y2FzZSAxOmNhc2UgMjpjPXIuTSxvPWEubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3ciYmFkIG1pbnV0ZSBmb3JtYXQ6ICIrYX1icmVhaztjYXNlIDExNTppZihhIT0icyImJmEhPSJzcyImJmEhPSIuMCImJmEhPSIuMDAiJiZhIT0iLjAwMCIpdGhyb3ciYmFkIHNlY29uZCBmb3JtYXQ6ICIrYTtyZXR1cm4gci51PT09MCYmKGE9PSJzInx8YT09InNzIik/SnIoci5TLGEubGVuZ3RoKToodD49Mj9mPXQ9PT0zPzFlMzoxMDA6Zj10PT09MT8xMDoxLGk9TWF0aC5yb3VuZChmKihyLlMrci51KSksaT49NjAqZiYmKGk9MCksYT09PSJzIj9pPT09MD8iMCI6IiIraS9mOihuPUpyKGksMit0KSxhPT09InNzIj9uLnN1YnN0cigwLDIpOiIuIituLnN1YnN0cigyLGEubGVuZ3RoLTEpKSk7Y2FzZSA5MDpzd2l0Y2goYSl7Y2FzZSJbaF0iOmNhc2UiW2hoXSI6Yz1yLkQqMjQrci5IO2JyZWFrO2Nhc2UiW21dIjpjYXNlIlttbV0iOmM9KHIuRCoyNCtyLkgpKjYwK3IuTTticmVhaztjYXNlIltzXSI6Y2FzZSJbc3NdIjpjPSgoci5EKjI0K3IuSCkqNjArci5NKSo2MCsodD09MD9NYXRoLnJvdW5kKHIuUytyLnUpOnIuUyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJiYWQgYWJzdGltZSBmb3JtYXQ6ICIrYX1vPWEubGVuZ3RoPT09Mz8xOjI7YnJlYWs7Y2FzZSAxMDE6Yz1zLG89MTticmVha312YXIgbD1vPjA/SnIoYyxvKToiIjtyZXR1cm4gbH1mdW5jdGlvbiBvYShlKXt2YXIgYT0zO2lmKGUubGVuZ3RoPD1hKXJldHVybiBlO2Zvcih2YXIgcj1lLmxlbmd0aCVhLHQ9ZS5zdWJzdHIoMCxyKTtyIT1lLmxlbmd0aDtyKz1hKXQrPSh0Lmxlbmd0aD4wPyIsIjoiIikrZS5zdWJzdHIocixhKTtyZXR1cm4gdH12YXIgcW49LyUvZztmdW5jdGlvbiB2YyhlLGEscil7dmFyIHQ9YS5yZXBsYWNlKHFuLCIiKSxuPWEubGVuZ3RoLXQubGVuZ3RoO3JldHVybiBsYShlLHQscipNYXRoLnBvdygxMCwyKm4pKStQZSgiJSIsbil9ZnVuY3Rpb24gcGMoZSxhLHIpe2Zvcih2YXIgdD1hLmxlbmd0aC0xO2EuY2hhckNvZGVBdCh0LTEpPT09NDQ7KS0tdDtyZXR1cm4gbGEoZSxhLnN1YnN0cigwLHQpLHIvTWF0aC5wb3coMTAsMyooYS5sZW5ndGgtdCkpKX1mdW5jdGlvbiBRbihlLGEpe3ZhciByLHQ9ZS5pbmRleE9mKCJFIiktZS5pbmRleE9mKCIuIiktMTtpZihlLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZihhPT0wKXJldHVybiIwLjBFKzAiO2lmKGE8MClyZXR1cm4iLSIrUW4oZSwtYSk7dmFyIG49ZS5pbmRleE9mKCIuIik7bj09PS0xJiYobj1lLmluZGV4T2YoIkUiKSk7dmFyIGk9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSklbjtpZihpPDAmJihpKz1uKSxyPShhL01hdGgucG93KDEwLGkpKS50b1ByZWNpc2lvbih0KzErKG4raSklbiksci5pbmRleE9mKCJlIik9PT0tMSl7dmFyIGY9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSk7Zm9yKHIuaW5kZXhPZigiLiIpPT09LTE/cj1yLmNoYXJBdCgwKSsiLiIrci5zdWJzdHIoMSkrIkUrIisoZi1yLmxlbmd0aCtpKTpyKz0iRSsiKyhmLWkpO3Iuc3Vic3RyKDAsMik9PT0iMC4iOylyPXIuY2hhckF0KDApK3Iuc3Vic3RyKDIsbikrIi4iK3Iuc3Vic3RyKDIrbikscj1yLnJlcGxhY2UoL14wKyhbMS05XSkvLCIkMSIpLnJlcGxhY2UoL14wK1wuLywiMC4iKTtyPXIucmVwbGFjZSgvXCstLywiLSIpfXI9ci5yZXBsYWNlKC9eKFsrLV0/KShcZCopXC4oXGQqKVtFZV0vLGZ1bmN0aW9uKHMsYyxvLGwpe3JldHVybiBjK28rbC5zdWJzdHIoMCwobitpKSVuKSsiLiIrbC5zdWJzdHIoaSkrIkUifSl9ZWxzZSByPWEudG9FeHBvbmVudGlhbCh0KTtyZXR1cm4gZS5tYXRjaCgvRVwrMDAkLykmJnIubWF0Y2goL2VbKy1dXGQkLykmJihyPXIuc3Vic3RyKDAsci5sZW5ndGgtMSkrIjAiK3IuY2hhckF0KHIubGVuZ3RoLTEpKSxlLm1hdGNoKC9FXC0vKSYmci5tYXRjaCgvZVwrLykmJihyPXIucmVwbGFjZSgvZVwrLywiZSIpKSxyLnJlcGxhY2UoImUiLCJFIil9dmFyIGVpPS8jIChcPyspKCA/KVwvKCA/KShcZCspLztmdW5jdGlvbiBnYyhlLGEscil7dmFyIHQ9cGFyc2VJbnQoZVs0XSwxMCksbj1NYXRoLnJvdW5kKGEqdCksaT1NYXRoLmZsb29yKG4vdCksZj1uLWkqdCxzPXQ7cmV0dXJuIHIrKGk9PT0wPyIiOiIiK2kpKyIgIisoZj09PTA/UGUoIiAiLGVbMV0ubGVuZ3RoKzErZVs0XS5sZW5ndGgpOkswKGYsZVsxXS5sZW5ndGgpK2VbMl0rIi8iK2VbM10rSnIocyxlWzRdLmxlbmd0aCkpfWZ1bmN0aW9uIG1jKGUsYSxyKXtyZXR1cm4gcisoYT09PTA/IiI6IiIrYSkrUGUoIiAiLGVbMV0ubGVuZ3RoKzIrZVs0XS5sZW5ndGgpfXZhciByaT0vXiMqMCpcLihbMCNdKykvLGFpPS9cKVteKV0qWzAjXS8sdGk9L1woIyMjXCkgIyMjXFw/LSMjIyMvO2Z1bmN0aW9uIEVyKGUpe2Zvcih2YXIgYT0iIixyLHQ9MDt0IT1lLmxlbmd0aDsrK3Qpc3dpdGNoKHI9ZS5jaGFyQ29kZUF0KHQpKXtjYXNlIDM1OmJyZWFrO2Nhc2UgNjM6YSs9IiAiO2JyZWFrO2Nhc2UgNDg6YSs9IjAiO2JyZWFrO2RlZmF1bHQ6YSs9U3RyaW5nLmZyb21DaGFyQ29kZShyKX1yZXR1cm4gYX1mdW5jdGlvbiBuaShlLGEpe3ZhciByPWU8MD8tMToxLHQ9TWF0aC5wb3coMTAsYSk7cmV0dXJuIiIrciooTWF0aC5yb3VuZChyKmUqdCkvdCl9ZnVuY3Rpb24gaWkoZSxhKXt2YXIgcj1lLU1hdGguZmxvb3IoZSksdD1NYXRoLnBvdygxMCxhKTtyZXR1cm4gYTwoIiIrTWF0aC5yb3VuZChyKnQpKS5sZW5ndGg/MDpNYXRoLnJvdW5kKHIqdCl9ZnVuY3Rpb24gX2MoZSxhKXtyZXR1cm4gYTwoIiIrTWF0aC5yb3VuZCgoZS1NYXRoLmZsb29yKGUpKSpNYXRoLnBvdygxMCxhKSkpLmxlbmd0aD8xOjB9ZnVuY3Rpb24ga2MoZSl7cmV0dXJuIGU8MjE0NzQ4MzY0NyYmZT4tMjE0NzQ4MzY0OD8iIisoZT49MD9lfDA6ZS0xfDApOiIiK01hdGguZmxvb3IoZSl9ZnVuY3Rpb24gVnIoZSxhLHIpe2lmKGUuY2hhckNvZGVBdCgwKT09PTQwJiYhYS5tYXRjaChhaSkpe3ZhciB0PWEucmVwbGFjZSgvXCggKi8sIiIpLnJlcGxhY2UoLyBcKS8sIiIpLnJlcGxhY2UoL1wpLywiIik7cmV0dXJuIHI+PTA/VnIoIm4iLHQscik6IigiK1ZyKCJuIix0LC1yKSsiKSJ9aWYoYS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpPT09NDQpcmV0dXJuIHBjKGUsYSxyKTtpZihhLmluZGV4T2YoIiUiKSE9PS0xKXJldHVybiB2YyhlLGEscik7aWYoYS5pbmRleE9mKCJFIikhPT0tMSlyZXR1cm4gUW4oYSxyKTtpZihhLmNoYXJDb2RlQXQoMCk9PT0zNilyZXR1cm4iJCIrVnIoZSxhLnN1YnN0cihhLmNoYXJBdCgxKT09IiAiPzI6MSkscik7dmFyIG4saSxmLHMsYz1NYXRoLmFicyhyKSxvPXI8MD8iLSI6IiI7aWYoYS5tYXRjaCgvXjAwKyQvKSlyZXR1cm4gbytzdChjLGEubGVuZ3RoKTtpZihhLm1hdGNoKC9eWyM/XSskLykpcmV0dXJuIG49c3QociwwKSxuPT09IjAiJiYobj0iIiksbi5sZW5ndGg+YS5sZW5ndGg/bjpFcihhLnN1YnN0cigwLGEubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPWEubWF0Y2goZWkpKXJldHVybiBnYyhpLGMsbyk7aWYoYS5tYXRjaCgvXiMrMCskLykpcmV0dXJuIG8rc3QoYyxhLmxlbmd0aC1hLmluZGV4T2YoIjAiKSk7aWYoaT1hLm1hdGNoKHJpKSlyZXR1cm4gbj1uaShyLGlbMV0ubGVuZ3RoKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitFcihpWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrRXIoaVsxXSkpLnJlcGxhY2UoL1wuKFxkKikkLyxmdW5jdGlvbihnLG0pe3JldHVybiIuIittK1BlKCIwIixFcihpWzFdKS5sZW5ndGgtbS5sZW5ndGgpfSksYS5pbmRleE9mKCIwLiIpIT09LTE/bjpuLnJlcGxhY2UoL14wXC4vLCIuIik7aWYoYT1hLnJlcGxhY2UoL14jKyhbMC5dKS8sIiQxIiksaT1hLm1hdGNoKC9eKDAqKVwuKCMqKSQvKSlyZXR1cm4gbytuaShjLGlbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cLihcZCpbMS05XSkwKiQvLCIuJDEiKS5yZXBsYWNlKC9eKC0/XGQqKSQvLCIkMS4iKS5yZXBsYWNlKC9eMFwuLyxpWzFdLmxlbmd0aD8iMC4iOiIuIik7aWYoaT1hLm1hdGNoKC9eI3sxLDN9LCMjMChcLj8pJC8pKXJldHVybiBvK29hKHN0KGMsMCkpO2lmKGk9YS5tYXRjaCgvXiMsIyMwXC4oWyMwXSowKSQvKSlyZXR1cm4gcjwwPyItIitWcihlLGEsLXIpOm9hKCIiKyhNYXRoLmZsb29yKHIpK19jKHIsaVsxXS5sZW5ndGgpKSkrIi4iK0pyKGlpKHIsaVsxXS5sZW5ndGgpLGlbMV0ubGVuZ3RoKTtpZihpPWEubWF0Y2goL14jLCMqLCMwLykpcmV0dXJuIFZyKGUsYS5yZXBsYWNlKC9eIywjKiwvLCIiKSxyKTtpZihpPWEubWF0Y2goL14oWzAjXSspKFxcPy0oWzAjXSspKSskLykpcmV0dXJuIG49aXQoVnIoZSxhLnJlcGxhY2UoL1tcXC1dL2csIiIpLHIpKSxmPTAsaXQoaXQoYS5yZXBsYWNlKC9cXC9nLCIiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKGcpe3JldHVybiBmPG4ubGVuZ3RoP24uY2hhckF0KGYrKyk6Zz09PSIwIj8iMCI6IiJ9KSk7aWYoYS5tYXRjaCh0aSkpcmV0dXJuIG49VnIoZSwiIyMjIyMjIyMjIyIsciksIigiK24uc3Vic3RyKDAsMykrIikgIituLnN1YnN0cigzLDMpKyItIituLnN1YnN0cig2KTt2YXIgbD0iIjtpZihpPWEubWF0Y2goL14oWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBmPU1hdGgubWluKGlbNF0ubGVuZ3RoLDcpLHM9ZjAoYyxNYXRoLnBvdygxMCxmKS0xLCExKSxuPSIiK28sbD1sYSgibiIsaVsxXSxzWzFdKSxsLmNoYXJBdChsLmxlbmd0aC0xKT09IiAiJiYobD1sLnN1YnN0cigwLGwubGVuZ3RoLTEpKyIwIiksbis9bCtpWzJdKyIvIitpWzNdLGw9aTAoc1syXSxmKSxsLmxlbmd0aDxpWzRdLmxlbmd0aCYmKGw9RXIoaVs0XS5zdWJzdHIoaVs0XS5sZW5ndGgtbC5sZW5ndGgpKStsKSxuKz1sLG47aWYoaT1hLm1hdGNoKC9eIyAoWyMwP10rKSggPylcLyggPykoWyMwP10rKS8pKXJldHVybiBmPU1hdGgubWluKE1hdGgubWF4KGlbMV0ubGVuZ3RoLGlbNF0ubGVuZ3RoKSw3KSxzPWYwKGMsTWF0aC5wb3coMTAsZiktMSwhMCksbysoc1swXXx8KHNbMV0/IiI6IjAiKSkrIiAiKyhzWzFdP0swKHNbMV0sZikraVsyXSsiLyIraVszXStpMChzWzJdLGYpOlBlKCIgIiwyKmYrMStpWzJdLmxlbmd0aCtpWzNdLmxlbmd0aCkpO2lmKGk9YS5tYXRjaCgvXlsjMD9dKyQvKSlyZXR1cm4gbj1zdChyLDApLGEubGVuZ3RoPD1uLmxlbmd0aD9uOkVyKGEuc3Vic3RyKDAsYS5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9YS5tYXRjaCgvXihbIzA/XSspXC4oWyMwXSspJC8pKXtuPSIiK3IudG9GaXhlZChNYXRoLm1pbihpWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksZj1uLmluZGV4T2YoIi4iKTt2YXIgdT1hLmluZGV4T2YoIi4iKS1mLHg9YS5sZW5ndGgtbi5sZW5ndGgtdTtyZXR1cm4gRXIoYS5zdWJzdHIoMCx1KStuK2Euc3Vic3RyKGEubGVuZ3RoLXgpKX1pZihpPWEubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiBmPWlpKHIsaVsxXS5sZW5ndGgpLHI8MD8iLSIrVnIoZSxhLC1yKTpvYShrYyhyKSkucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbihnKXtyZXR1cm4iMDAsIisoZy5sZW5ndGg8Mz9KcigwLDMtZy5sZW5ndGgpOiIiKStnfSkrIi4iK0pyKGYsaVsxXS5sZW5ndGgpO3N3aXRjaChhKXtjYXNlIiMjIywjIzAuMDAiOnJldHVybiBWcihlLCIjLCMjMC4wMCIscik7Y2FzZSIjIyMsIyMjIjpjYXNlIiMjLCMjIyI6Y2FzZSIjLCMjIyI6dmFyIGg9b2Eoc3QoYywwKSk7cmV0dXJuIGghPT0iMCI/bytoOiIiO2Nhc2UiIyMjLCMjIy4wMCI6cmV0dXJuIFZyKGUsIiMjIywjIzAuMDAiLHIpLnJlcGxhY2UoL14wXC4vLCIuIik7Y2FzZSIjLCMjIy4wMCI6cmV0dXJuIFZyKGUsIiMsIyMwLjAwIixyKS5yZXBsYWNlKC9eMFwuLywiLiIpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK2ErInwiKX1mdW5jdGlvbiB3YyhlLGEscil7Zm9yKHZhciB0PWEubGVuZ3RoLTE7YS5jaGFyQ29kZUF0KHQtMSk9PT00NDspLS10O3JldHVybiBsYShlLGEuc3Vic3RyKDAsdCksci9NYXRoLnBvdygxMCwzKihhLmxlbmd0aC10KSkpfWZ1bmN0aW9uIEZjKGUsYSxyKXt2YXIgdD1hLnJlcGxhY2UocW4sIiIpLG49YS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIGxhKGUsdCxyKk1hdGgucG93KDEwLDIqbikpK1BlKCIlIixuKX1mdW5jdGlvbiBzaShlLGEpe3ZhciByLHQ9ZS5pbmRleE9mKCJFIiktZS5pbmRleE9mKCIuIiktMTtpZihlLm1hdGNoKC9eIyswLjBFXCswJC8pKXtpZihhPT0wKXJldHVybiIwLjBFKzAiO2lmKGE8MClyZXR1cm4iLSIrc2koZSwtYSk7dmFyIG49ZS5pbmRleE9mKCIuIik7bj09PS0xJiYobj1lLmluZGV4T2YoIkUiKSk7dmFyIGk9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSklbjtpZihpPDAmJihpKz1uKSxyPShhL01hdGgucG93KDEwLGkpKS50b1ByZWNpc2lvbih0KzErKG4raSklbiksIXIubWF0Y2goL1tFZV0vKSl7dmFyIGY9TWF0aC5mbG9vcihNYXRoLmxvZyhhKSpNYXRoLkxPRzEwRSk7ci5pbmRleE9mKCIuIik9PT0tMT9yPXIuY2hhckF0KDApKyIuIityLnN1YnN0cigxKSsiRSsiKyhmLXIubGVuZ3RoK2kpOnIrPSJFKyIrKGYtaSkscj1yLnJlcGxhY2UoL1wrLS8sIi0iKX1yPXIucmVwbGFjZSgvXihbKy1dPykoXGQqKVwuKFxkKilbRWVdLyxmdW5jdGlvbihzLGMsbyxsKXtyZXR1cm4gYytvK2wuc3Vic3RyKDAsKG4raSklbikrIi4iK2wuc3Vic3RyKGkpKyJFIn0pfWVsc2Ugcj1hLnRvRXhwb25lbnRpYWwodCk7cmV0dXJuIGUubWF0Y2goL0VcKzAwJC8pJiZyLm1hdGNoKC9lWystXVxkJC8pJiYocj1yLnN1YnN0cigwLHIubGVuZ3RoLTEpKyIwIityLmNoYXJBdChyLmxlbmd0aC0xKSksZS5tYXRjaCgvRVwtLykmJnIubWF0Y2goL2VcKy8pJiYocj1yLnJlcGxhY2UoL2VcKy8sImUiKSksci5yZXBsYWNlKCJlIiwiRSIpfWZ1bmN0aW9uIGFhKGUsYSxyKXtpZihlLmNoYXJDb2RlQXQoMCk9PT00MCYmIWEubWF0Y2goYWkpKXt2YXIgdD1hLnJlcGxhY2UoL1woICovLCIiKS5yZXBsYWNlKC8gXCkvLCIiKS5yZXBsYWNlKC9cKS8sIiIpO3JldHVybiByPj0wP2FhKCJuIix0LHIpOiIoIithYSgibiIsdCwtcikrIikifWlmKGEuY2hhckNvZGVBdChhLmxlbmd0aC0xKT09PTQ0KXJldHVybiB3YyhlLGEscik7aWYoYS5pbmRleE9mKCIlIikhPT0tMSlyZXR1cm4gRmMoZSxhLHIpO2lmKGEuaW5kZXhPZigiRSIpIT09LTEpcmV0dXJuIHNpKGEscik7aWYoYS5jaGFyQ29kZUF0KDApPT09MzYpcmV0dXJuIiQiK2FhKGUsYS5zdWJzdHIoYS5jaGFyQXQoMSk9PSIgIj8yOjEpLHIpO3ZhciBuLGksZixzLGM9TWF0aC5hYnMociksbz1yPDA/Ii0iOiIiO2lmKGEubWF0Y2goL14wMCskLykpcmV0dXJuIG8rSnIoYyxhLmxlbmd0aCk7aWYoYS5tYXRjaCgvXlsjP10rJC8pKXJldHVybiBuPSIiK3Iscj09PTAmJihuPSIiKSxuLmxlbmd0aD5hLmxlbmd0aD9uOkVyKGEuc3Vic3RyKDAsYS5sZW5ndGgtbi5sZW5ndGgpKStuO2lmKGk9YS5tYXRjaChlaSkpcmV0dXJuIG1jKGksYyxvKTtpZihhLm1hdGNoKC9eIyswKyQvKSlyZXR1cm4gbytKcihjLGEubGVuZ3RoLWEuaW5kZXhPZigiMCIpKTtpZihpPWEubWF0Y2gocmkpKXJldHVybiBuPSgiIityKS5yZXBsYWNlKC9eKFteXC5dKykkLywiJDEuIitFcihpWzFdKSkucmVwbGFjZSgvXC4kLywiLiIrRXIoaVsxXSkpLG49bi5yZXBsYWNlKC9cLihcZCopJC8sZnVuY3Rpb24oZyxtKXtyZXR1cm4iLiIrbStQZSgiMCIsRXIoaVsxXSkubGVuZ3RoLW0ubGVuZ3RoKX0pLGEuaW5kZXhPZigiMC4iKSE9PS0xP246bi5yZXBsYWNlKC9eMFwuLywiLiIpO2lmKGE9YS5yZXBsYWNlKC9eIysoWzAuXSkvLCIkMSIpLGk9YS5tYXRjaCgvXigwKilcLigjKikkLykpcmV0dXJuIG8rKCIiK2MpLnJlcGxhY2UoL1wuKFxkKlsxLTldKTAqJC8sIi4kMSIpLnJlcGxhY2UoL14oLT9cZCopJC8sIiQxLiIpLnJlcGxhY2UoL14wXC4vLGlbMV0ubGVuZ3RoPyIwLiI6Ii4iKTtpZihpPWEubWF0Y2goL14jezEsM30sIyMwKFwuPykkLykpcmV0dXJuIG8rb2EoIiIrYyk7aWYoaT1hLm1hdGNoKC9eIywjIzBcLihbIzBdKjApJC8pKXJldHVybiByPDA/Ii0iK2FhKGUsYSwtcik6b2EoIiIrcikrIi4iK1BlKCIwIixpWzFdLmxlbmd0aCk7aWYoaT1hLm1hdGNoKC9eIywjKiwjMC8pKXJldHVybiBhYShlLGEucmVwbGFjZSgvXiMsIyosLywiIikscik7aWYoaT1hLm1hdGNoKC9eKFswI10rKShcXD8tKFswI10rKSkrJC8pKXJldHVybiBuPWl0KGFhKGUsYS5yZXBsYWNlKC9bXFwtXS9nLCIiKSxyKSksZj0wLGl0KGl0KGEucmVwbGFjZSgvXFwvZywiIikpLnJlcGxhY2UoL1swI10vZyxmdW5jdGlvbihnKXtyZXR1cm4gZjxuLmxlbmd0aD9uLmNoYXJBdChmKyspOmc9PT0iMCI/IjAiOiIifSkpO2lmKGEubWF0Y2godGkpKXJldHVybiBuPWFhKGUsIiMjIyMjIyMjIyMiLHIpLCIoIituLnN1YnN0cigwLDMpKyIpICIrbi5zdWJzdHIoMywzKSsiLSIrbi5zdWJzdHIoNik7dmFyIGw9IiI7aWYoaT1hLm1hdGNoKC9eKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gZj1NYXRoLm1pbihpWzRdLmxlbmd0aCw3KSxzPWYwKGMsTWF0aC5wb3coMTAsZiktMSwhMSksbj0iIitvLGw9bGEoIm4iLGlbMV0sc1sxXSksbC5jaGFyQXQobC5sZW5ndGgtMSk9PSIgIiYmKGw9bC5zdWJzdHIoMCxsLmxlbmd0aC0xKSsiMCIpLG4rPWwraVsyXSsiLyIraVszXSxsPWkwKHNbMl0sZiksbC5sZW5ndGg8aVs0XS5sZW5ndGgmJihsPUVyKGlbNF0uc3Vic3RyKGlbNF0ubGVuZ3RoLWwubGVuZ3RoKSkrbCksbis9bCxuO2lmKGk9YS5tYXRjaCgvXiMgKFsjMD9dKykoID8pXC8oID8pKFsjMD9dKykvKSlyZXR1cm4gZj1NYXRoLm1pbihNYXRoLm1heChpWzFdLmxlbmd0aCxpWzRdLmxlbmd0aCksNykscz1mMChjLE1hdGgucG93KDEwLGYpLTEsITApLG8rKHNbMF18fChzWzFdPyIiOiIwIikpKyIgIisoc1sxXT9LMChzWzFdLGYpK2lbMl0rIi8iK2lbM10raTAoc1syXSxmKTpQZSgiICIsMipmKzEraVsyXS5sZW5ndGgraVszXS5sZW5ndGgpKTtpZihpPWEubWF0Y2goL15bIzA/XSskLykpcmV0dXJuIG49IiIrcixhLmxlbmd0aDw9bi5sZW5ndGg/bjpFcihhLnN1YnN0cigwLGEubGVuZ3RoLW4ubGVuZ3RoKSkrbjtpZihpPWEubWF0Y2goL14oWyMwXSspXC4oWyMwXSspJC8pKXtuPSIiK3IudG9GaXhlZChNYXRoLm1pbihpWzJdLmxlbmd0aCwxMCkpLnJlcGxhY2UoLyhbXjBdKTArJC8sIiQxIiksZj1uLmluZGV4T2YoIi4iKTt2YXIgdT1hLmluZGV4T2YoIi4iKS1mLHg9YS5sZW5ndGgtbi5sZW5ndGgtdTtyZXR1cm4gRXIoYS5zdWJzdHIoMCx1KStuK2Euc3Vic3RyKGEubGVuZ3RoLXgpKX1pZihpPWEubWF0Y2goL14wMCwwMDBcLihbIzBdKjApJC8pKXJldHVybiByPDA/Ii0iK2FhKGUsYSwtcik6b2EoIiIrcikucmVwbGFjZSgvXlxkLFxkezN9JC8sIjAkJiIpLnJlcGxhY2UoL15cZCokLyxmdW5jdGlvbihnKXtyZXR1cm4iMDAsIisoZy5sZW5ndGg8Mz9KcigwLDMtZy5sZW5ndGgpOiIiKStnfSkrIi4iK0pyKDAsaVsxXS5sZW5ndGgpO3N3aXRjaChhKXtjYXNlIiMjIywjIyMiOmNhc2UiIyMsIyMjIjpjYXNlIiMsIyMjIjp2YXIgaD1vYSgiIitjKTtyZXR1cm4gaCE9PSIwIj9vK2g6IiI7ZGVmYXVsdDppZihhLm1hdGNoKC9cLlswIz9dKiQvKSlyZXR1cm4gYWEoZSxhLnNsaWNlKDAsYS5sYXN0SW5kZXhPZigiLiIpKSxyKStFcihhLnNsaWNlKGEubGFzdEluZGV4T2YoIi4iKSkpfXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgZm9ybWF0IHwiK2ErInwiKX1mdW5jdGlvbiBsYShlLGEscil7cmV0dXJuKHJ8MCk9PT1yP2FhKGUsYSxyKTpWcihlLGEscil9ZnVuY3Rpb24gVGMoZSl7Zm9yKHZhciBhPVtdLHI9ITEsdD0wLG49MDt0PGUubGVuZ3RoOysrdClzd2l0Y2goZS5jaGFyQ29kZUF0KHQpKXtjYXNlIDM0OnI9IXI7YnJlYWs7Y2FzZSA5NTpjYXNlIDQyOmNhc2UgOTI6Kyt0O2JyZWFrO2Nhc2UgNTk6YVthLmxlbmd0aF09ZS5zdWJzdHIobix0LW4pLG49dCsxfWlmKGFbYS5sZW5ndGhdPWUuc3Vic3RyKG4pLHI9PT0hMCl0aHJvdyBuZXcgRXJyb3IoIkZvcm1hdCB8IitlKyJ8IHVudGVybWluYXRlZCBzdHJpbmcgIik7cmV0dXJuIGF9dmFyIGZpPS9cW1tIaE1tU3NcdTBFMEFcdTBFMTlcdTBFMTddKlxdLztmdW5jdGlvbiBacihlKXtmb3IodmFyIGE9MCxyPSIiLHQ9IiI7YTxlLmxlbmd0aDspc3dpdGNoKHI9ZS5jaGFyQXQoYSkpe2Nhc2UiRyI6czAoZSxhKSYmKGErPTYpLGErKzticmVhaztjYXNlJyInOmZvcig7ZS5jaGFyQ29kZUF0KCsrYSkhPT0zNCYmYTxlLmxlbmd0aDspOysrYTticmVhaztjYXNlIlxcIjphKz0yO2JyZWFrO2Nhc2UiXyI6YSs9MjticmVhaztjYXNlIkAiOisrYTticmVhaztjYXNlIkIiOmNhc2UiYiI6aWYoZS5jaGFyQXQoYSsxKT09PSIxInx8ZS5jaGFyQXQoYSsxKT09PSIyIilyZXR1cm4hMDtjYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOnJldHVybiEwO2Nhc2UiQSI6Y2FzZSJhIjpjYXNlIuS4iiI6aWYoZS5zdWJzdHIoYSwzKS50b1VwcGVyQ2FzZSgpPT09IkEvUCJ8fGUuc3Vic3RyKGEsNSkudG9VcHBlckNhc2UoKT09PSJBTS9QTSJ8fGUuc3Vic3RyKGEsNSkudG9VcHBlckNhc2UoKT09PSLkuIrljYgv5LiL5Y2IIilyZXR1cm4hMDsrK2E7YnJlYWs7Y2FzZSJbIjpmb3IodD1yO2UuY2hhckF0KGErKykhPT0iXSImJmE8ZS5sZW5ndGg7KXQrPWUuY2hhckF0KGEpO2lmKHQubWF0Y2goZmkpKXJldHVybiEwO2JyZWFrO2Nhc2UiLiI6Y2FzZSIwIjpjYXNlIiMiOmZvcig7YTxlLmxlbmd0aCYmKCIwIz8uLEUrLSUiLmluZGV4T2Yocj1lLmNoYXJBdCgrK2EpKT4tMXx8cj09IlxcIiYmZS5jaGFyQXQoYSsxKT09Ii0iJiYiMCMiLmluZGV4T2YoZS5jaGFyQXQoYSsyKSk+LTEpOyk7YnJlYWs7Y2FzZSI/Ijpmb3IoO2UuY2hhckF0KCsrYSk9PT1yOyk7YnJlYWs7Y2FzZSIqIjorK2EsKGUuY2hhckF0KGEpPT0iICJ8fGUuY2hhckF0KGEpPT0iKiIpJiYrK2E7YnJlYWs7Y2FzZSIoIjpjYXNlIikiOisrYTticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoO2E8ZS5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKGUuY2hhckF0KCsrYSkpPi0xOyk7YnJlYWs7Y2FzZSIgIjorK2E7YnJlYWs7ZGVmYXVsdDorK2E7YnJlYWt9cmV0dXJuITF9ZnVuY3Rpb24gRWMoZSxhLHIsdCl7Zm9yKHZhciBuPVtdLGk9IiIsZj0wLHM9IiIsYz0idCIsbyxsLHUseD0iSCI7ZjxlLmxlbmd0aDspc3dpdGNoKHM9ZS5jaGFyQXQoZikpe2Nhc2UiRyI6aWYoIXMwKGUsZikpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyICIrcysiIGluICIrZSk7bltuLmxlbmd0aF09e3Q6IkciLHY6IkdlbmVyYWwifSxmKz03O2JyZWFrO2Nhc2UnIic6Zm9yKGk9IiI7KHU9ZS5jaGFyQ29kZUF0KCsrZikpIT09MzQmJmY8ZS5sZW5ndGg7KWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodSk7bltuLmxlbmd0aF09e3Q6InQiLHY6aX0sKytmO2JyZWFrO2Nhc2UiXFwiOnZhciBoPWUuY2hhckF0KCsrZiksZz1oPT09IigifHxoPT09IikiP2g6InQiO25bbi5sZW5ndGhdPXt0OmcsdjpofSwrK2Y7YnJlYWs7Y2FzZSJfIjpuW24ubGVuZ3RoXT17dDoidCIsdjoiICJ9LGYrPTI7YnJlYWs7Y2FzZSJAIjpuW24ubGVuZ3RoXT17dDoiVCIsdjphfSwrK2Y7YnJlYWs7Y2FzZSJCIjpjYXNlImIiOmlmKGUuY2hhckF0KGYrMSk9PT0iMSJ8fGUuY2hhckF0KGYrMSk9PT0iMiIpe2lmKG89PW51bGwmJihvPWNhKGEscixlLmNoYXJBdChmKzEpPT09IjIiKSxvPT1udWxsKSlyZXR1cm4iIjtuW24ubGVuZ3RoXT17dDoiWCIsdjplLnN1YnN0cihmLDIpfSxjPXMsZis9MjticmVha31jYXNlIk0iOmNhc2UiRCI6Y2FzZSJZIjpjYXNlIkgiOmNhc2UiUyI6Y2FzZSJFIjpzPXMudG9Mb3dlckNhc2UoKTtjYXNlIm0iOmNhc2UiZCI6Y2FzZSJ5IjpjYXNlImgiOmNhc2UicyI6Y2FzZSJlIjpjYXNlImciOmlmKGE8MHx8bz09bnVsbCYmKG89Y2EoYSxyKSxvPT1udWxsKSlyZXR1cm4iIjtmb3IoaT1zOysrZjxlLmxlbmd0aCYmZS5jaGFyQXQoZikudG9Mb3dlckNhc2UoKT09PXM7KWkrPXM7cz09PSJtIiYmYy50b0xvd2VyQ2FzZSgpPT09ImgiJiYocz0iTSIpLHM9PT0iaCImJihzPXgpLG5bbi5sZW5ndGhdPXt0OnMsdjppfSxjPXM7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNhc2Ui5LiKIjp2YXIgbT17dDpzLHY6c307aWYobz09bnVsbCYmKG89Y2EoYSxyKSksZS5zdWJzdHIoZiwzKS50b1VwcGVyQ2FzZSgpPT09IkEvUCI/KG8hPW51bGwmJihtLnY9by5IPj0xMj9lLmNoYXJBdChmKzIpOnMpLG0udD0iVCIseD0iaCIsZis9Myk6ZS5zdWJzdHIoZiw1KS50b1VwcGVyQ2FzZSgpPT09IkFNL1BNIj8obyE9bnVsbCYmKG0udj1vLkg+PTEyPyJQTSI6IkFNIiksbS50PSJUIixmKz01LHg9ImgiKTplLnN1YnN0cihmLDUpLnRvVXBwZXJDYXNlKCk9PT0i5LiK5Y2IL+S4i+WNiCI/KG8hPW51bGwmJihtLnY9by5IPj0xMj8i5LiL5Y2IIjoi5LiK5Y2IIiksbS50PSJUIixmKz01LHg9ImgiKToobS50PSJ0IiwrK2YpLG89PW51bGwmJm0udD09PSJUIilyZXR1cm4iIjtuW24ubGVuZ3RoXT1tLGM9czticmVhaztjYXNlIlsiOmZvcihpPXM7ZS5jaGFyQXQoZisrKSE9PSJdIiYmZjxlLmxlbmd0aDspaSs9ZS5jaGFyQXQoZik7aWYoaS5zbGljZSgtMSkhPT0iXSIpdGhyb3cndW50ZXJtaW5hdGVkICJbIiBibG9jazogfCcraSsifCI7aWYoaS5tYXRjaChmaSkpe2lmKG89PW51bGwmJihvPWNhKGEsciksbz09bnVsbCkpcmV0dXJuIiI7bltuLmxlbmd0aF09e3Q6IloiLHY6aS50b0xvd2VyQ2FzZSgpfSxjPWkuY2hhckF0KDEpfWVsc2UgaS5pbmRleE9mKCIkIik+LTEmJihpPShpLm1hdGNoKC9cJChbXi1cW1xdXSopLyl8fFtdKVsxXXx8IiQiLFpyKGUpfHwobltuLmxlbmd0aF09e3Q6InQiLHY6aX0pKTticmVhaztjYXNlIi4iOmlmKG8hPW51bGwpe2ZvcihpPXM7KytmPGUubGVuZ3RoJiYocz1lLmNoYXJBdChmKSk9PT0iMCI7KWkrPXM7bltuLmxlbmd0aF09e3Q6InMiLHY6aX07YnJlYWt9Y2FzZSIwIjpjYXNlIiMiOmZvcihpPXM7KytmPGUubGVuZ3RoJiYiMCM/LixFKy0lIi5pbmRleE9mKHM9ZS5jaGFyQXQoZikpPi0xOylpKz1zO25bbi5sZW5ndGhdPXt0OiJuIix2Oml9O2JyZWFrO2Nhc2UiPyI6Zm9yKGk9cztlLmNoYXJBdCgrK2YpPT09czspaSs9cztuW24ubGVuZ3RoXT17dDpzLHY6aX0sYz1zO2JyZWFrO2Nhc2UiKiI6KytmLChlLmNoYXJBdChmKT09IiAifHxlLmNoYXJBdChmKT09IioiKSYmKytmO2JyZWFrO2Nhc2UiKCI6Y2FzZSIpIjpuW24ubGVuZ3RoXT17dDp0PT09MT8idCI6cyx2OnN9LCsrZjticmVhaztjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5Ijpmb3IoaT1zO2Y8ZS5sZW5ndGgmJiIwMTIzNDU2Nzg5Ii5pbmRleE9mKGUuY2hhckF0KCsrZikpPi0xOylpKz1lLmNoYXJBdChmKTtuW24ubGVuZ3RoXT17dDoiRCIsdjppfTticmVhaztjYXNlIiAiOm5bbi5sZW5ndGhdPXt0OnMsdjpzfSwrK2Y7YnJlYWs7Y2FzZSIkIjpuW24ubGVuZ3RoXT17dDoidCIsdjoiJCJ9LCsrZjticmVhaztkZWZhdWx0OmlmKCIsJC0rLygpOiFeJid+e308Pj3igqxhY2Zpamtsb3BxcnR1dnd4elAiLmluZGV4T2Yocyk9PT0tMSl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBjaGFyYWN0ZXIgIitzKyIgaW4gIitlKTtuW24ubGVuZ3RoXT17dDoidCIsdjpzfSwrK2Y7YnJlYWt9dmFyIGQ9MCxwPTAsdztmb3IoZj1uLmxlbmd0aC0xLGM9InQiO2Y+PTA7LS1mKXN3aXRjaChuW2ZdLnQpe2Nhc2UiaCI6Y2FzZSJIIjpuW2ZdLnQ9eCxjPSJoIixkPDEmJihkPTEpO2JyZWFrO2Nhc2UicyI6KHc9bltmXS52Lm1hdGNoKC9cLjArJC8pKSYmKHA9TWF0aC5tYXgocCx3WzBdLmxlbmd0aC0xKSxkPTQpLGQ8MyYmKGQ9Myk7Y2FzZSJkIjpjYXNlInkiOmNhc2UiZSI6Yz1uW2ZdLnQ7YnJlYWs7Y2FzZSJNIjpjPW5bZl0udCxkPDImJihkPTIpO2JyZWFrO2Nhc2UibSI6Yz09PSJzIiYmKG5bZl0udD0iTSIsZDwyJiYoZD0yKSk7YnJlYWs7Y2FzZSJYIjpicmVhaztjYXNlIloiOmQ8MSYmbltmXS52Lm1hdGNoKC9bSGhdLykmJihkPTEpLGQ8MiYmbltmXS52Lm1hdGNoKC9bTW1dLykmJihkPTIpLGQ8MyYmbltmXS52Lm1hdGNoKC9bU3NdLykmJihkPTMpfXZhciBfO3N3aXRjaChkKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6by51Pj0uNSYmKG8udT0wLCsrby5TKSxvLlM+PTYwJiYoby5TPTAsKytvLk0pLG8uTT49NjAmJihvLk09MCwrK28uSCksby5IPj0yNCYmKG8uSD0wLCsrby5ELF89Y2Eoby5EKSxfLnU9by51LF8uUz1vLlMsXy5NPW8uTSxfLkg9by5ILG89Xyk7YnJlYWs7Y2FzZSA0OnN3aXRjaChwKXtjYXNlIDE6by51PU1hdGgucm91bmQoby51KjEwKS8xMDticmVhaztjYXNlIDI6by51PU1hdGgucm91bmQoby51KjEwMCkvMTAwO2JyZWFrO2Nhc2UgMzpvLnU9TWF0aC5yb3VuZChvLnUqMWUzKS8xZTM7YnJlYWt9by51Pj0xJiYoby51PTAsKytvLlMpLG8uUz49NjAmJihvLlM9MCwrK28uTSksby5NPj02MCYmKG8uTT0wLCsrby5IKSxvLkg+PTI0JiYoby5IPTAsKytvLkQsXz1jYShvLkQpLF8udT1vLnUsXy5TPW8uUyxfLk09by5NLF8uSD1vLkgsbz1fKTticmVha312YXIgeT0iIixSO2ZvcihmPTA7ZjxuLmxlbmd0aDsrK2Ypc3dpdGNoKG5bZl0udCl7Y2FzZSJ0IjpjYXNlIlQiOmNhc2UiICI6Y2FzZSJEIjpicmVhaztjYXNlIlgiOm5bZl0udj0iIixuW2ZdLnQ9IjsiO2JyZWFrO2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiaCI6Y2FzZSJIIjpjYXNlIk0iOmNhc2UicyI6Y2FzZSJlIjpjYXNlImIiOmNhc2UiWiI6bltmXS52PWRjKG5bZl0udC5jaGFyQ29kZUF0KDApLG5bZl0udixvLHApLG5bZl0udD0idCI7YnJlYWs7Y2FzZSJuIjpjYXNlIj8iOmZvcihSPWYrMTtuW1JdIT1udWxsJiYoKHM9bltSXS50KT09PSI/Inx8cz09PSJEInx8KHM9PT0iICJ8fHM9PT0idCIpJiZuW1IrMV0hPW51bGwmJihuW1IrMV0udD09PSI/Inx8bltSKzFdLnQ9PT0idCImJm5bUisxXS52PT09Ii8iKXx8bltmXS50PT09IigiJiYocz09PSIgInx8cz09PSJuInx8cz09PSIpIil8fHM9PT0idCImJihuW1JdLnY9PT0iLyJ8fG5bUl0udj09PSIgIiYmbltSKzFdIT1udWxsJiZuW1IrMV0udD09Ij8iKSk7KW5bZl0udis9bltSXS52LG5bUl09e3Y6IiIsdDoiOyJ9LCsrUjt5Kz1uW2ZdLnYsZj1SLTE7YnJlYWs7Y2FzZSJHIjpuW2ZdLnQ9InQiLG5bZl0udj1QYShhLHIpO2JyZWFrfXZhciBQPSIiLGIsTjtpZih5Lmxlbmd0aD4wKXt5LmNoYXJDb2RlQXQoMCk9PTQwPyhiPWE8MCYmeS5jaGFyQ29kZUF0KDApPT09NDU/LWE6YSxOPWxhKCJuIix5LGIpKTooYj1hPDAmJnQ+MT8tYTphLE49bGEoIm4iLHksYiksYjwwJiZuWzBdJiZuWzBdLnQ9PSJ0IiYmKE49Ti5zdWJzdHIoMSksblswXS52PSItIituWzBdLnYpKSxSPU4ubGVuZ3RoLTE7dmFyIEk9bi5sZW5ndGg7Zm9yKGY9MDtmPG4ubGVuZ3RoOysrZilpZihuW2ZdIT1udWxsJiZuW2ZdLnQhPSJ0IiYmbltmXS52LmluZGV4T2YoIi4iKT4tMSl7ST1mO2JyZWFrfXZhciBCPW4ubGVuZ3RoO2lmKEk9PT1uLmxlbmd0aCYmTi5pbmRleE9mKCJFIik9PT0tMSl7Zm9yKGY9bi5sZW5ndGgtMTtmPj0wOy0tZiluW2ZdPT1udWxsfHwibj8iLmluZGV4T2YobltmXS50KT09PS0xfHwoUj49bltmXS52Lmxlbmd0aC0xPyhSLT1uW2ZdLnYubGVuZ3RoLG5bZl0udj1OLnN1YnN0cihSKzEsbltmXS52Lmxlbmd0aCkpOlI8MD9uW2ZdLnY9IiI6KG5bZl0udj1OLnN1YnN0cigwLFIrMSksUj0tMSksbltmXS50PSJ0IixCPWYpO1I+PTAmJkI8bi5sZW5ndGgmJihuW0JdLnY9Ti5zdWJzdHIoMCxSKzEpK25bQl0udil9ZWxzZSBpZihJIT09bi5sZW5ndGgmJk4uaW5kZXhPZigiRSIpPT09LTEpe2ZvcihSPU4uaW5kZXhPZigiLiIpLTEsZj1JO2Y+PTA7LS1mKWlmKCEobltmXT09bnVsbHx8Im4/Ii5pbmRleE9mKG5bZl0udCk9PT0tMSkpe2ZvcihsPW5bZl0udi5pbmRleE9mKCIuIik+LTEmJmY9PT1JP25bZl0udi5pbmRleE9mKCIuIiktMTpuW2ZdLnYubGVuZ3RoLTEsUD1uW2ZdLnYuc3Vic3RyKGwrMSk7bD49MDstLWwpUj49MCYmKG5bZl0udi5jaGFyQXQobCk9PT0iMCJ8fG5bZl0udi5jaGFyQXQobCk9PT0iIyIpJiYoUD1OLmNoYXJBdChSLS0pK1ApO25bZl0udj1QLG5bZl0udD0idCIsQj1mfWZvcihSPj0wJiZCPG4ubGVuZ3RoJiYobltCXS52PU4uc3Vic3RyKDAsUisxKStuW0JdLnYpLFI9Ti5pbmRleE9mKCIuIikrMSxmPUk7ZjxuLmxlbmd0aDsrK2YpaWYoIShuW2ZdPT1udWxsfHwibj8oIi5pbmRleE9mKG5bZl0udCk9PT0tMSYmZiE9PUkpKXtmb3IobD1uW2ZdLnYuaW5kZXhPZigiLiIpPi0xJiZmPT09ST9uW2ZdLnYuaW5kZXhPZigiLiIpKzE6MCxQPW5bZl0udi5zdWJzdHIoMCxsKTtsPG5bZl0udi5sZW5ndGg7KytsKVI8Ti5sZW5ndGgmJihQKz1OLmNoYXJBdChSKyspKTtuW2ZdLnY9UCxuW2ZdLnQ9InQiLEI9Zn19fWZvcihmPTA7ZjxuLmxlbmd0aDsrK2YpbltmXSE9bnVsbCYmIm4/Ii5pbmRleE9mKG5bZl0udCk+LTEmJihiPXQ+MSYmYTwwJiZmPjAmJm5bZi0xXS52PT09Ii0iPy1hOmEsbltmXS52PWxhKG5bZl0udCxuW2ZdLnYsYiksbltmXS50PSJ0Iik7dmFyIEw9IiI7Zm9yKGY9MDtmIT09bi5sZW5ndGg7KytmKW5bZl0hPW51bGwmJihMKz1uW2ZdLnYpO3JldHVybiBMfXZhciBjaT0vXFsoPXw+Wz1dP3w8Wz49XT8pKC0/XGQrKD86XC5cZCopPylcXS87ZnVuY3Rpb24gb2koZSxhKXtpZihhPT1udWxsKXJldHVybiExO3ZhciByPXBhcnNlRmxvYXQoYVsyXSk7c3dpdGNoKGFbMV0pe2Nhc2UiPSI6aWYoZT09cilyZXR1cm4hMDticmVhaztjYXNlIj4iOmlmKGU+cilyZXR1cm4hMDticmVhaztjYXNlIjwiOmlmKGU8cilyZXR1cm4hMDticmVhaztjYXNlIjw+IjppZihlIT1yKXJldHVybiEwO2JyZWFrO2Nhc2UiPj0iOmlmKGU+PXIpcmV0dXJuITA7YnJlYWs7Y2FzZSI8PSI6aWYoZTw9cilyZXR1cm4hMDticmVha31yZXR1cm4hMX1mdW5jdGlvbiBBYyhlLGEpe3ZhciByPVRjKGUpLHQ9ci5sZW5ndGgsbj1yW3QtMV0uaW5kZXhPZigiQCIpO2lmKHQ8NCYmbj4tMSYmLS10LHIubGVuZ3RoPjQpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCByaWdodCBmb3JtYXQgZm9yIHwiK3Iuam9pbigifCIpKyJ8Iik7aWYodHlwZW9mIGEhPSJudW1iZXIiKXJldHVybls0LHIubGVuZ3RoPT09NHx8bj4tMT9yW3IubGVuZ3RoLTFdOiJAIl07c3dpdGNoKHR5cGVvZiBhPT0ibnVtYmVyIiYmIWlzRmluaXRlKGEpJiYoYT0wKSxyLmxlbmd0aCl7Y2FzZSAxOnI9bj4tMT9bIkdlbmVyYWwiLCJHZW5lcmFsIiwiR2VuZXJhbCIsclswXV06W3JbMF0sclswXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAyOnI9bj4tMT9bclswXSxyWzBdLHJbMF0sclsxXV06W3JbMF0sclsxXSxyWzBdLCJAIl07YnJlYWs7Y2FzZSAzOnI9bj4tMT9bclswXSxyWzFdLHJbMF0sclsyXV06W3JbMF0sclsxXSxyWzJdLCJAIl07YnJlYWt9dmFyIGk9YT4wP3JbMF06YTwwP3JbMV06clsyXTtpZihyWzBdLmluZGV4T2YoIlsiKT09PS0xJiZyWzFdLmluZGV4T2YoIlsiKT09PS0xKXJldHVyblt0LGldO2lmKHJbMF0ubWF0Y2goL1xbWz08Pl0vKSE9bnVsbHx8clsxXS5tYXRjaCgvXFtbPTw+XS8pIT1udWxsKXt2YXIgZj1yWzBdLm1hdGNoKGNpKSxzPXJbMV0ubWF0Y2goY2kpO3JldHVybiBvaShhLGYpP1t0LHJbMF1dOm9pKGEscyk/W3QsclsxXV06W3QscltmIT1udWxsJiZzIT1udWxsPzI6MV1dfXJldHVyblt0LGldfWZ1bmN0aW9uIFJyKGUsYSxyKXtyPT1udWxsJiYocj17fSk7dmFyIHQ9IiI7c3dpdGNoKHR5cGVvZiBlKXtjYXNlInN0cmluZyI6ZT09Im0vZC95eSImJnIuZGF0ZU5GP3Q9ci5kYXRlTkY6dD1lO2JyZWFrO2Nhc2UibnVtYmVyIjplPT0xNCYmci5kYXRlTkY/dD1yLmRhdGVORjp0PShyLnRhYmxlIT1udWxsP3IudGFibGU6VGUpW2VdLHQ9PW51bGwmJih0PXIudGFibGUmJnIudGFibGVbWm5bZV1dfHxUZVtabltlXV0pLHQ9PW51bGwmJih0PWNjW2VdfHwiR2VuZXJhbCIpO2JyZWFrfWlmKHMwKHQsMCkpcmV0dXJuIFBhKGEscik7YSBpbnN0YW5jZW9mIERhdGUmJihhPW9yKGEsci5kYXRlMTkwNCkpO3ZhciBuPUFjKHQsYSk7aWYoczAoblsxXSkpcmV0dXJuIFBhKGEscik7aWYoYT09PSEwKWE9IlRSVUUiO2Vsc2UgaWYoYT09PSExKWE9IkZBTFNFIjtlbHNle2lmKGE9PT0iInx8YT09bnVsbClyZXR1cm4iIjtpZihpc05hTihhKSYmblsxXS5pbmRleE9mKCIwIik+LTEpcmV0dXJuIiNOVU0hIjtpZighaXNGaW5pdGUoYSkmJm5bMV0uaW5kZXhPZigiMCIpPi0xKXJldHVybiIjRElWLzAhIn1yZXR1cm4gRWMoblsxXSxhLHIsblswXSl9ZnVuY3Rpb24geWMoZSxhKXtpZih0eXBlb2YgYSE9Im51bWJlciIpe2E9K2F8fC0xO2Zvcih2YXIgcj0wO3I8MzkyOysrcil7aWYoVGVbcl09PW51bGwpe2E8MCYmKGE9cik7Y29udGludWV9aWYoVGVbcl09PWUpe2E9cjticmVha319YTwwJiYoYT0zOTEpfXJldHVybiBUZVthXT1lLGF9ZnVuY3Rpb24gbGkoKXtUZT1mYygpfXZhciBTYz17NTonIiQiIywjIzBfKTtcXCgiJCIjLCMjMFxcKScsNjonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw3OiciJCIjLCMjMC4wMF8pO1xcKCIkIiMsIyMwLjAwXFwpJyw4OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLDIzOiJHZW5lcmFsIiwyNDoiR2VuZXJhbCIsMjU6IkdlbmVyYWwiLDI2OiJHZW5lcmFsIiwyNzoibS9kL3l5IiwyODoibS9kL3l5IiwyOToibS9kL3l5IiwzMDoibS9kL3l5IiwzMToibS9kL3l5IiwzMjoiaDptbTpzcyIsMzM6Img6bW06c3MiLDM0OiJoOm1tOnNzIiwzNToiaDptbTpzcyIsMzY6Im0vZC95eSIsNDE6J18oKiAjLCMjMF8pO18oKiAoIywjIzApO18oKiAiLSJfKTtfKEBfKScsNDI6J18oIiQiKiAjLCMjMF8pO18oIiQiKiAoIywjIzApO18oIiQiKiAiLSJfKTtfKEBfKScsNDM6J18oKiAjLCMjMC4wMF8pO18oKiAoIywjIzAuMDApO18oKiAiLSI/P18pO18oQF8pJyw0NDonXygiJCIqICMsIyMwLjAwXyk7XygiJCIqICgjLCMjMC4wMCk7XygiJCIqICItIj8/Xyk7XyhAXyknLDUwOiJtL2QveXkiLDUxOiJtL2QveXkiLDUyOiJtL2QveXkiLDUzOiJtL2QveXkiLDU0OiJtL2QveXkiLDU1OiJtL2QveXkiLDU2OiJtL2QveXkiLDU3OiJtL2QveXkiLDU4OiJtL2QveXkiLDU5OiIwIiw2MDoiMC4wMCIsNjE6IiMsIyMwIiw2MjoiIywjIzAuMDAiLDYzOiciJCIjLCMjMF8pO1xcKCIkIiMsIyMwXFwpJyw2NDonIiQiIywjIzBfKTtbUmVkXVxcKCIkIiMsIyMwXFwpJyw2NTonIiQiIywjIzAuMDBfKTtcXCgiJCIjLCMjMC4wMFxcKScsNjY6JyIkIiMsIyMwLjAwXyk7W1JlZF1cXCgiJCIjLCMjMC4wMFxcKScsNjc6IjAlIiw2ODoiMC4wMCUiLDY5OiIjID8vPyIsNzA6IiMgPz8vPz8iLDcxOiJtL2QveXkiLDcyOiJtL2QveXkiLDczOiJkLW1tbS15eSIsNzQ6ImQtbW1tIiw3NToibW1tLXl5Iiw3NjoiaDptbSIsNzc6Img6bW06c3MiLDc4OiJtL2QveXkgaDptbSIsNzk6Im1tOnNzIiw4MDoiW2hdOm1tOnNzIiw4MToibW1zcy4wIn0sYzA9L1tkRF0rfFttTV0rfFt5WWVFXSt8W0hoXSt8W1NzXSsvZztmdW5jdGlvbiBDYyhlKXt2YXIgYT10eXBlb2YgZT09Im51bWJlciI/VGVbZV06ZTtyZXR1cm4gYT1hLnJlcGxhY2UoYzAsIihcXGQrKSIpLGMwLmxhc3RJbmRleD0wLG5ldyBSZWdFeHAoIl4iK2ErIiQiKX1mdW5jdGlvbiBiYyhlLGEscil7dmFyIHQ9LTEsbj0tMSxpPS0xLGY9LTEscz0tMSxjPS0xOyhhLm1hdGNoKGMwKXx8W10pLmZvckVhY2goZnVuY3Rpb24odSx4KXt2YXIgaD1wYXJzZUludChyW3grMV0sMTApO3N3aXRjaCh1LnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKXtjYXNlInkiOnQ9aDticmVhaztjYXNlImQiOmk9aDticmVhaztjYXNlImgiOmY9aDticmVhaztjYXNlInMiOmM9aDticmVhaztjYXNlIm0iOmY+PTA/cz1oOm49aDticmVha319KSxjMC5sYXN0SW5kZXg9MCxjPj0wJiZzPT0tMSYmbj49MCYmKHM9bixuPS0xKTt2YXIgbz0oIiIrKHQ+PTA/dDpuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpKS5zbGljZSgtNCkrIi0iKygiMDAiKyhuPj0xP246MSkpLnNsaWNlKC0yKSsiLSIrKCIwMCIrKGk+PTE/aToxKSkuc2xpY2UoLTIpO28ubGVuZ3RoPT03JiYobz0iMCIrbyksby5sZW5ndGg9PTgmJihvPSIyMCIrbyk7dmFyIGw9KCIwMCIrKGY+PTA/ZjowKSkuc2xpY2UoLTIpKyI6IisoIjAwIisocz49MD9zOjApKS5zbGljZSgtMikrIjoiKygiMDAiKyhjPj0wP2M6MCkpLnNsaWNlKC0yKTtyZXR1cm4gZj09LTEmJnM9PS0xJiZjPT0tMT9vOnQ9PS0xJiZuPT0tMSYmaT09LTE/bDpvKyJUIitsfXZhciBJYz17ImQubSI6ImRcXC5tIn07ZnVuY3Rpb24gTGEoZSxhKXtyZXR1cm4geWMoSWNbZV18fGUsYSl9dmFyIHVpPWZ1bmN0aW9uKCl7dmFyIGU9e307ZS52ZXJzaW9uPSIxLjIuMCI7ZnVuY3Rpb24gYSgpe2Zvcih2YXIgYj0wLE49bmV3IEFycmF5KDI1NiksST0wO0khPTI1NjsrK0kpYj1JLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxiPWImMT8tMzA2Njc0OTEyXmI+Pj4xOmI+Pj4xLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxiPWImMT8tMzA2Njc0OTEyXmI+Pj4xOmI+Pj4xLGI9YiYxPy0zMDY2NzQ5MTJeYj4+PjE6Yj4+PjEsYj1iJjE/LTMwNjY3NDkxMl5iPj4+MTpiPj4+MSxOW0ldPWI7cmV0dXJuIHR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheShOKTpOfXZhciByPWEoKTtmdW5jdGlvbiB0KGIpe3ZhciBOPTAsST0wLEI9MCxMPXR5cGVvZiBJbnQzMkFycmF5PCJ1Ij9uZXcgSW50MzJBcnJheSg0MDk2KTpuZXcgQXJyYXkoNDA5Nik7Zm9yKEI9MDtCIT0yNTY7KytCKUxbQl09YltCXTtmb3IoQj0wO0IhPTI1NjsrK0IpZm9yKEk9YltCXSxOPTI1NitCO048NDA5NjtOKz0yNTYpST1MW05dPUk+Pj44XmJbSSYyNTVdO3ZhciBHPVtdO2ZvcihCPTE7QiE9MTY7KytCKUdbQi0xXT10eXBlb2YgSW50MzJBcnJheTwidSImJnR5cGVvZiBMLnN1YmFycmF5PT0iZnVuY3Rpb24iP0wuc3ViYXJyYXkoQioyNTYsQioyNTYrMjU2KTpMLnNsaWNlKEIqMjU2LEIqMjU2KzI1Nik7cmV0dXJuIEd9dmFyIG49dChyKSxpPW5bMF0sZj1uWzFdLHM9blsyXSxjPW5bM10sbz1uWzRdLGw9bls1XSx1PW5bNl0seD1uWzddLGg9bls4XSxnPW5bOV0sbT1uWzEwXSxkPW5bMTFdLHA9blsxMl0sdz1uWzEzXSxfPW5bMTRdO2Z1bmN0aW9uIHkoYixOKXtmb3IodmFyIEk9Tl4tMSxCPTAsTD1iLmxlbmd0aDtCPEw7KUk9ST4+PjheclsoSV5iLmNoYXJDb2RlQXQoQisrKSkmMjU1XTtyZXR1cm5+SX1mdW5jdGlvbiBSKGIsTil7Zm9yKHZhciBJPU5eLTEsQj1iLmxlbmd0aC0xNSxMPTA7TDxCOylJPV9bYltMKytdXkkmMjU1XV53W2JbTCsrXV5JPj44JjI1NV1ecFtiW0wrK11eST4+MTYmMjU1XV5kW2JbTCsrXV5JPj4+MjRdXm1bYltMKytdXV5nW2JbTCsrXV1eaFtiW0wrK11dXnhbYltMKytdXV51W2JbTCsrXV1ebFtiW0wrK11dXm9bYltMKytdXV5jW2JbTCsrXV1ec1tiW0wrK11dXmZbYltMKytdXV5pW2JbTCsrXV1ecltiW0wrK11dO2ZvcihCKz0xNTtMPEI7KUk9ST4+PjheclsoSV5iW0wrK10pJjI1NV07cmV0dXJufkl9ZnVuY3Rpb24gUChiLE4pe2Zvcih2YXIgST1OXi0xLEI9MCxMPWIubGVuZ3RoLEc9MCxpZT0wO0I8TDspRz1iLmNoYXJDb2RlQXQoQisrKSxHPDEyOD9JPUk+Pj44XnJbKEleRykmMjU1XTpHPDIwNDg/KEk9ST4+PjheclsoSV4oMTkyfEc+PjYmMzEpKSYyNTVdLEk9ST4+PjheclsoSV4oMTI4fEcmNjMpKSYyNTVdKTpHPj01NTI5NiYmRzw1NzM0ND8oRz0oRyYxMDIzKSs2NCxpZT1iLmNoYXJDb2RlQXQoQisrKSYxMDIzLEk9ST4+PjheclsoSV4oMjQwfEc+PjgmNykpJjI1NV0sST1JPj4+OF5yWyhJXigxMjh8Rz4+MiY2MykpJjI1NV0sST1JPj4+OF5yWyhJXigxMjh8aWU+PjYmMTV8KEcmMyk8PDQpKSYyNTVdLEk9ST4+PjheclsoSV4oMTI4fGllJjYzKSkmMjU1XSk6KEk9ST4+PjheclsoSV4oMjI0fEc+PjEyJjE1KSkmMjU1XSxJPUk+Pj44XnJbKEleKDEyOHxHPj42JjYzKSkmMjU1XSxJPUk+Pj44XnJbKEleKDEyOHxHJjYzKSkmMjU1XSk7cmV0dXJufkl9cmV0dXJuIGUudGFibGU9cixlLmJzdHI9eSxlLmJ1Zj1SLGUuc3RyPVAsZX0oKSxNZT1mdW5jdGlvbigpe3ZhciBhPXt9O2EudmVyc2lvbj0iMS4yLjIiO2Z1bmN0aW9uIHIodixUKXtmb3IodmFyIGs9di5zcGxpdCgiLyIpLEY9VC5zcGxpdCgiLyIpLEU9MCxTPTAsVz1NYXRoLm1pbihrLmxlbmd0aCxGLmxlbmd0aCk7RTxXOysrRSl7aWYoUz1rW0VdLmxlbmd0aC1GW0VdLmxlbmd0aClyZXR1cm4gUztpZihrW0VdIT1GW0VdKXJldHVybiBrW0VdPEZbRV0/LTE6MX1yZXR1cm4gay5sZW5ndGgtRi5sZW5ndGh9ZnVuY3Rpb24gdCh2KXtpZih2LmNoYXJBdCh2Lmxlbmd0aC0xKT09Ii8iKXJldHVybiB2LnNsaWNlKDAsLTEpLmluZGV4T2YoIi8iKT09PS0xP3Y6dCh2LnNsaWNlKDAsLTEpKTt2YXIgVD12Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFQ9PT0tMT92OnYuc2xpY2UoMCxUKzEpfWZ1bmN0aW9uIG4odil7aWYodi5jaGFyQXQodi5sZW5ndGgtMSk9PSIvIilyZXR1cm4gbih2LnNsaWNlKDAsLTEpKTt2YXIgVD12Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFQ9PT0tMT92OnYuc2xpY2UoVCsxKX1mdW5jdGlvbiBpKHYsVCl7dHlwZW9mIFQ9PSJzdHJpbmciJiYoVD1uZXcgRGF0ZShUKSk7dmFyIGs9VC5nZXRIb3VycygpO2s9azw8NnxULmdldE1pbnV0ZXMoKSxrPWs8PDV8VC5nZXRTZWNvbmRzKCk+Pj4xLHYud3JpdGVfc2hpZnQoMixrKTt2YXIgRj1ULmdldEZ1bGxZZWFyKCktMTk4MDtGPUY8PDR8VC5nZXRNb250aCgpKzEsRj1GPDw1fFQuZ2V0RGF0ZSgpLHYud3JpdGVfc2hpZnQoMixGKX1mdW5jdGlvbiBmKHYpe3ZhciBUPXYucmVhZF9zaGlmdCgyKSY2NTUzNSxrPXYucmVhZF9zaGlmdCgyKSY2NTUzNSxGPW5ldyBEYXRlLEU9ayYzMTtrPj4+PTU7dmFyIFM9ayYxNTtrPj4+PTQsRi5zZXRNaWxsaXNlY29uZHMoMCksRi5zZXRGdWxsWWVhcihrKzE5ODApLEYuc2V0TW9udGgoUy0xKSxGLnNldERhdGUoRSk7dmFyIFc9VCYzMTtUPj4+PTU7dmFyIEs9VCY2MztyZXR1cm4gVD4+Pj02LEYuc2V0SG91cnMoVCksRi5zZXRNaW51dGVzKEspLEYuc2V0U2Vjb25kcyhXPDwxKSxGfWZ1bmN0aW9uIHModil7c3IodiwwKTtmb3IodmFyIFQ9e30saz0wO3YubDw9di5sZW5ndGgtNDspe3ZhciBGPXYucmVhZF9zaGlmdCgyKSxFPXYucmVhZF9zaGlmdCgyKSxTPXYubCtFLFc9e307c3dpdGNoKEYpe2Nhc2UgMjE1ODk6az12LnJlYWRfc2hpZnQoMSksayYxJiYoVy5tdGltZT12LnJlYWRfc2hpZnQoNCkpLEU+NSYmKGsmMiYmKFcuYXRpbWU9di5yZWFkX3NoaWZ0KDQpKSxrJjQmJihXLmN0aW1lPXYucmVhZF9zaGlmdCg0KSkpLFcubXRpbWUmJihXLm10PW5ldyBEYXRlKFcubXRpbWUqMWUzKSk7YnJlYWs7Y2FzZSAxOnt2YXIgSz12LnJlYWRfc2hpZnQoNCksSD12LnJlYWRfc2hpZnQoNCk7Vy51c3o9SCpNYXRoLnBvdygyLDMyKStLLEs9di5yZWFkX3NoaWZ0KDQpLEg9di5yZWFkX3NoaWZ0KDQpLFcuY3N6PUgqTWF0aC5wb3coMiwzMikrS31icmVha312Lmw9UyxUW0ZdPVd9cmV0dXJuIFR9dmFyIGM7ZnVuY3Rpb24gbygpe3JldHVybiBjfHwoYz1EYyl9ZnVuY3Rpb24gbCh2LFQpe2lmKHZbMF09PTgwJiZ2WzFdPT03NSlyZXR1cm4gZTAodixUKTtpZigodlswXXwzMik9PTEwOSYmKHZbMV18MzIpPT0xMDUpcmV0dXJuIEZ0KHYsVCk7aWYodi5sZW5ndGg8NTEyKXRocm93IG5ldyBFcnJvcigiQ0ZCIGZpbGUgc2l6ZSAiK3YubGVuZ3RoKyIgPCA1MTIiKTt2YXIgaz0zLEY9NTEyLEU9MCxTPTAsVz0wLEs9MCxIPTAsVj1bXSxYPXYuc2xpY2UoMCw1MTIpO3NyKFgsMCk7dmFyIGFlPXUoWCk7c3dpdGNoKGs9YWVbMF0sayl7Y2FzZSAzOkY9NTEyO2JyZWFrO2Nhc2UgNDpGPTQwOTY7YnJlYWs7Y2FzZSAwOmlmKGFlWzFdPT0wKXJldHVybiBlMCh2LFQpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJNYWpvciBWZXJzaW9uOiBFeHBlY3RlZCAzIG9yIDQgc2F3ICIrayl9RiE9PTUxMiYmKFg9di5zbGljZSgwLEYpLHNyKFgsMjgpKTt2YXIgc2U9di5zbGljZSgwLEYpO3goWCxrKTt2YXIgdmU9WC5yZWFkX3NoaWZ0KDQsImkiKTtpZihrPT09MyYmdmUhPT0wKXRocm93IG5ldyBFcnJvcigiIyBEaXJlY3RvcnkgU2VjdG9yczogRXhwZWN0ZWQgMCBzYXcgIit2ZSk7WC5sKz00LFc9WC5yZWFkX3NoaWZ0KDQsImkiKSxYLmwrPTQsWC5jaGsoIjAwMTAwMDAwIiwiTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICIpLEs9WC5yZWFkX3NoaWZ0KDQsImkiKSxFPVgucmVhZF9zaGlmdCg0LCJpIiksSD1YLnJlYWRfc2hpZnQoNCwiaSIpLFM9WC5yZWFkX3NoaWZ0KDQsImkiKTtmb3IodmFyIHRlPS0xLGNlPTA7Y2U8MTA5JiYodGU9WC5yZWFkX3NoaWZ0KDQsImkiKSwhKHRlPDApKTsrK2NlKVZbY2VdPXRlO3ZhciBTZT1oKHYsRik7ZChILFMsU2UsRixWKTt2YXIgSmU9dyhTZSxXLFYsRik7VzxKZS5sZW5ndGgmJihKZVtXXS5uYW1lPSIhRGlyZWN0b3J5IiksRT4wJiZLIT09aWUmJihKZVtLXS5uYW1lPSIhTWluaUZBVCIpLEplW1ZbMF1dLm5hbWU9IiFGQVQiLEplLmZhdF9hZGRycz1WLEplLnNzej1GO3ZhciBRZT17fSxUcj1bXSxyMD1bXSxhMD1bXTtfKFcsSmUsU2UsVHIsRSxRZSxyMCxLKSxnKHIwLGEwLFRyKSxUci5zaGlmdCgpO3ZhciB0MD17RmlsZUluZGV4OnIwLEZ1bGxQYXRoczphMH07cmV0dXJuIFQmJlQucmF3JiYodDAucmF3PXtoZWFkZXI6c2Usc2VjdG9yczpTZX0pLHQwfWZ1bmN0aW9uIHUodil7aWYodlt2LmxdPT04MCYmdlt2LmwrMV09PTc1KXJldHVyblswLDBdO3YuY2hrKG5lLCJIZWFkZXIgU2lnbmF0dXJlOiAiKSx2LmwrPTE2O3ZhciBUPXYucmVhZF9zaGlmdCgyLCJ1Iik7cmV0dXJuW3YucmVhZF9zaGlmdCgyLCJ1IiksVF19ZnVuY3Rpb24geCh2LFQpe3ZhciBrPTk7c3dpdGNoKHYubCs9MixrPXYucmVhZF9zaGlmdCgyKSl7Y2FzZSA5OmlmKFQhPTMpdGhyb3cgbmV3IEVycm9yKCJTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgc2F3ICIrayk7YnJlYWs7Y2FzZSAxMjppZihUIT00KXRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCAxMiBzYXcgIitrKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IG9yIDEyIHNhdyAiK2spfXYuY2hrKCIwNjAwIiwiTWluaSBTZWN0b3IgU2hpZnQ6ICIpLHYuY2hrKCIwMDAwMDAwMDAwMDAiLCJSZXNlcnZlZDogIil9ZnVuY3Rpb24gaCh2LFQpe2Zvcih2YXIgaz1NYXRoLmNlaWwodi5sZW5ndGgvVCktMSxGPVtdLEU9MTtFPGs7KytFKUZbRS0xXT12LnNsaWNlKEUqVCwoRSsxKSpUKTtyZXR1cm4gRltrLTFdPXYuc2xpY2UoaypUKSxGfWZ1bmN0aW9uIGcodixULGspe2Zvcih2YXIgRj0wLEU9MCxTPTAsVz0wLEs9MCxIPWsubGVuZ3RoLFY9W10sWD1bXTtGPEg7KytGKVZbRl09WFtGXT1GLFRbRl09a1tGXTtmb3IoO0s8WC5sZW5ndGg7KytLKUY9WFtLXSxFPXZbRl0uTCxTPXZbRl0uUixXPXZbRl0uQyxWW0ZdPT09RiYmKEUhPT0tMSYmVltFXSE9PUUmJihWW0ZdPVZbRV0pLFMhPT0tMSYmVltTXSE9PVMmJihWW0ZdPVZbU10pKSxXIT09LTEmJihWW1ddPUYpLEUhPT0tMSYmRiE9VltGXSYmKFZbRV09VltGXSxYLmxhc3RJbmRleE9mKEUpPEsmJlgucHVzaChFKSksUyE9PS0xJiZGIT1WW0ZdJiYoVltTXT1WW0ZdLFgubGFzdEluZGV4T2YoUyk8SyYmWC5wdXNoKFMpKTtmb3IoRj0xO0Y8SDsrK0YpVltGXT09PUYmJihTIT09LTEmJlZbU10hPT1TP1ZbRl09VltTXTpFIT09LTEmJlZbRV0hPT1FJiYoVltGXT1WW0VdKSk7Zm9yKEY9MTtGPEg7KytGKWlmKHZbRl0udHlwZSE9PTApe2lmKEs9RixLIT1WW0tdKWRvIEs9VltLXSxUW0ZdPVRbS10rIi8iK1RbRl07d2hpbGUoSyE9PTAmJlZbS10hPT0tMSYmSyE9VltLXSk7VltGXT0tMX1mb3IoVFswXSs9Ii8iLEY9MTtGPEg7KytGKXZbRl0udHlwZSE9PTImJihUW0ZdKz0iLyIpfWZ1bmN0aW9uIG0odixULGspe2Zvcih2YXIgRj12LnN0YXJ0LEU9di5zaXplLFM9W10sVz1GO2smJkU+MCYmVz49MDspUy5wdXNoKFQuc2xpY2UoVypHLFcqRytHKSksRS09RyxXPVdhKGssVyo0KTtyZXR1cm4gUy5sZW5ndGg9PT0wP2ZyKDApOnlhKFMpLnNsaWNlKDAsdi5zaXplKX1mdW5jdGlvbiBkKHYsVCxrLEYsRSl7dmFyIFM9aWU7aWYodj09PWllKXtpZihUIT09MCl0aHJvdyBuZXcgRXJyb3IoIkRJRkFUIGNoYWluIHNob3J0ZXIgdGhhbiBleHBlY3RlZCIpfWVsc2UgaWYodiE9PS0xKXt2YXIgVz1rW3ZdLEs9KEY+Pj4yKS0xO2lmKCFXKXJldHVybjtmb3IodmFyIEg9MDtIPEsmJihTPVdhKFcsSCo0KSkhPT1pZTsrK0gpRS5wdXNoKFMpO1Q+PTEmJmQoV2EoVyxGLTQpLFQtMSxrLEYsRSl9fWZ1bmN0aW9uIHAodixULGssRixFKXt2YXIgUz1bXSxXPVtdO0V8fChFPVtdKTt2YXIgSz1GLTEsSD0wLFY9MDtmb3IoSD1UO0g+PTA7KXtFW0hdPSEwLFNbUy5sZW5ndGhdPUgsVy5wdXNoKHZbSF0pO3ZhciBYPWtbTWF0aC5mbG9vcihIKjQvRildO2lmKFY9SCo0JkssRjw0K1YpdGhyb3cgbmV3IEVycm9yKCJGQVQgYm91bmRhcnkgY3Jvc3NlZDogIitIKyIgNCAiK0YpO2lmKCF2W1hdKWJyZWFrO0g9V2EodltYXSxWKX1yZXR1cm57bm9kZXM6UyxkYXRhOkRpKFtXXSl9fWZ1bmN0aW9uIHcodixULGssRil7dmFyIEU9di5sZW5ndGgsUz1bXSxXPVtdLEs9W10sSD1bXSxWPUYtMSxYPTAsYWU9MCxzZT0wLHZlPTA7Zm9yKFg9MDtYPEU7KytYKWlmKEs9W10sc2U9WCtULHNlPj1FJiYoc2UtPUUpLCFXW3NlXSl7SD1bXTt2YXIgdGU9W107Zm9yKGFlPXNlO2FlPj0wOyl7dGVbYWVdPSEwLFdbYWVdPSEwLEtbSy5sZW5ndGhdPWFlLEgucHVzaCh2W2FlXSk7dmFyIGNlPWtbTWF0aC5mbG9vcihhZSo0L0YpXTtpZih2ZT1hZSo0JlYsRjw0K3ZlKXRocm93IG5ldyBFcnJvcigiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6ICIrYWUrIiA0ICIrRik7aWYoIXZbY2VdfHwoYWU9V2EodltjZV0sdmUpLHRlW2FlXSkpYnJlYWt9U1tzZV09e25vZGVzOkssZGF0YTpEaShbSF0pfX1yZXR1cm4gU31mdW5jdGlvbiBfKHYsVCxrLEYsRSxTLFcsSyl7Zm9yKHZhciBIPTAsVj1GLmxlbmd0aD8yOjAsWD1UW3ZdLmRhdGEsYWU9MCxzZT0wLHZlO2FlPFgubGVuZ3RoO2FlKz0xMjgpe3ZhciB0ZT1YLnNsaWNlKGFlLGFlKzEyOCk7c3IodGUsNjQpLHNlPXRlLnJlYWRfc2hpZnQoMiksdmU9cm4odGUsMCxzZS1WKSxGLnB1c2godmUpO3ZhciBjZT17bmFtZTp2ZSx0eXBlOnRlLnJlYWRfc2hpZnQoMSksY29sb3I6dGUucmVhZF9zaGlmdCgxKSxMOnRlLnJlYWRfc2hpZnQoNCwiaSIpLFI6dGUucmVhZF9zaGlmdCg0LCJpIiksQzp0ZS5yZWFkX3NoaWZ0KDQsImkiKSxjbHNpZDp0ZS5yZWFkX3NoaWZ0KDE2KSxzdGF0ZTp0ZS5yZWFkX3NoaWZ0KDQsImkiKSxzdGFydDowLHNpemU6MH0sU2U9dGUucmVhZF9zaGlmdCgyKSt0ZS5yZWFkX3NoaWZ0KDIpK3RlLnJlYWRfc2hpZnQoMikrdGUucmVhZF9zaGlmdCgyKTtTZSE9PTAmJihjZS5jdD15KHRlLHRlLmwtOCkpO3ZhciBKZT10ZS5yZWFkX3NoaWZ0KDIpK3RlLnJlYWRfc2hpZnQoMikrdGUucmVhZF9zaGlmdCgyKSt0ZS5yZWFkX3NoaWZ0KDIpO0plIT09MCYmKGNlLm10PXkodGUsdGUubC04KSksY2Uuc3RhcnQ9dGUucmVhZF9zaGlmdCg0LCJpIiksY2Uuc2l6ZT10ZS5yZWFkX3NoaWZ0KDQsImkiKSxjZS5zaXplPDAmJmNlLnN0YXJ0PDAmJihjZS5zaXplPWNlLnR5cGU9MCxjZS5zdGFydD1pZSxjZS5uYW1lPSIiKSxjZS50eXBlPT09NT8oSD1jZS5zdGFydCxFPjAmJkghPT1pZSYmKFRbSF0ubmFtZT0iIVN0cmVhbURhdGEiKSk6Y2Uuc2l6ZT49NDA5Nj8oY2Uuc3RvcmFnZT0iZmF0IixUW2NlLnN0YXJ0XT09PXZvaWQgMCYmKFRbY2Uuc3RhcnRdPXAoayxjZS5zdGFydCxULmZhdF9hZGRycyxULnNzeikpLFRbY2Uuc3RhcnRdLm5hbWU9Y2UubmFtZSxjZS5jb250ZW50PVRbY2Uuc3RhcnRdLmRhdGEuc2xpY2UoMCxjZS5zaXplKSk6KGNlLnN0b3JhZ2U9Im1pbmlmYXQiLGNlLnNpemU8MD9jZS5zaXplPTA6SCE9PWllJiZjZS5zdGFydCE9PWllJiZUW0hdJiYoY2UuY29udGVudD1tKGNlLFRbSF0uZGF0YSwoVFtLXXx8e30pLmRhdGEpKSksY2UuY29udGVudCYmc3IoY2UuY29udGVudCwwKSxTW3ZlXT1jZSxXLnB1c2goY2UpfX1mdW5jdGlvbiB5KHYsVCl7cmV0dXJuIG5ldyBEYXRlKChOcih2LFQrNCkvMWU3Kk1hdGgucG93KDIsMzIpK05yKHYsVCkvMWU3LTExNjQ0NDczNjAwKSoxZTMpfWZ1bmN0aW9uIFIodixUKXtyZXR1cm4gbygpLGwoYy5yZWFkRmlsZVN5bmModiksVCl9ZnVuY3Rpb24gUCh2LFQpe3ZhciBrPVQmJlQudHlwZTtzd2l0Y2goa3x8TmUmJkJ1ZmZlci5pc0J1ZmZlcih2KSYmKGs9ImJ1ZmZlciIpLGt8fCJiYXNlNjQiKXtjYXNlImZpbGUiOnJldHVybiBSKHYsVCk7Y2FzZSJiYXNlNjQiOnJldHVybiBsKERyKElyKHYpKSxUKTtjYXNlImJpbmFyeSI6cmV0dXJuIGwoRHIodiksVCl9cmV0dXJuIGwodixUKX1mdW5jdGlvbiBiKHYsVCl7dmFyIGs9VHx8e30sRj1rLnJvb3R8fCJSb290IEVudHJ5IjtpZih2LkZ1bGxQYXRoc3x8KHYuRnVsbFBhdGhzPVtdKSx2LkZpbGVJbmRleHx8KHYuRmlsZUluZGV4PVtdKSx2LkZ1bGxQYXRocy5sZW5ndGghPT12LkZpbGVJbmRleC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJpbmNvbnNpc3RlbnQgQ0ZCIHN0cnVjdHVyZSIpO3YuRnVsbFBhdGhzLmxlbmd0aD09PTAmJih2LkZ1bGxQYXRoc1swXT1GKyIvIix2LkZpbGVJbmRleFswXT17bmFtZTpGLHR5cGU6NX0pLGsuQ0xTSUQmJih2LkZpbGVJbmRleFswXS5jbHNpZD1rLkNMU0lEKSxOKHYpfWZ1bmN0aW9uIE4odil7dmFyIFQ9IgFTaDMzdEo1IjtpZighTWUuZmluZCh2LCIvIitUKSl7dmFyIGs9ZnIoNCk7a1swXT01NSxrWzFdPWtbM109NTAsa1syXT01NCx2LkZpbGVJbmRleC5wdXNoKHtuYW1lOlQsdHlwZToyLGNvbnRlbnQ6ayxzaXplOjQsTDo2OSxSOjY5LEM6Njl9KSx2LkZ1bGxQYXRocy5wdXNoKHYuRnVsbFBhdGhzWzBdK1QpLEkodil9fWZ1bmN0aW9uIEkodixUKXtiKHYpO2Zvcih2YXIgaz0hMSxGPSExLEU9di5GdWxsUGF0aHMubGVuZ3RoLTE7RT49MDstLUUpe3ZhciBTPXYuRmlsZUluZGV4W0VdO3N3aXRjaChTLnR5cGUpe2Nhc2UgMDpGP2s9ITA6KHYuRmlsZUluZGV4LnBvcCgpLHYuRnVsbFBhdGhzLnBvcCgpKTticmVhaztjYXNlIDE6Y2FzZSAyOmNhc2UgNTpGPSEwLGlzTmFOKFMuUipTLkwqUy5DKSYmKGs9ITApLFMuUj4tMSYmUy5MPi0xJiZTLlI9PVMuTCYmKGs9ITApO2JyZWFrO2RlZmF1bHQ6az0hMDticmVha319aWYoISghayYmIVQpKXt2YXIgVz1uZXcgRGF0ZSgxOTg3LDEsMTkpLEs9MCxIPU9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZShudWxsKTp7fSxWPVtdO2ZvcihFPTA7RTx2LkZ1bGxQYXRocy5sZW5ndGg7KytFKUhbdi5GdWxsUGF0aHNbRV1dPSEwLHYuRmlsZUluZGV4W0VdLnR5cGUhPT0wJiZWLnB1c2goW3YuRnVsbFBhdGhzW0VdLHYuRmlsZUluZGV4W0VdXSk7Zm9yKEU9MDtFPFYubGVuZ3RoOysrRSl7dmFyIFg9dChWW0VdWzBdKTtmb3IoRj1IW1hdOyFGOyl7Zm9yKDt0KFgpJiYhSFt0KFgpXTspWD10KFgpO1YucHVzaChbWCx7bmFtZTpuKFgpLnJlcGxhY2UoIi8iLCIiKSx0eXBlOjEsY2xzaWQ6bGUsY3Q6VyxtdDpXLGNvbnRlbnQ6bnVsbH1dKSxIW1hdPSEwLFg9dChWW0VdWzBdKSxGPUhbWF19fWZvcihWLnNvcnQoZnVuY3Rpb24odmUsdGUpe3JldHVybiByKHZlWzBdLHRlWzBdKX0pLHYuRnVsbFBhdGhzPVtdLHYuRmlsZUluZGV4PVtdLEU9MDtFPFYubGVuZ3RoOysrRSl2LkZ1bGxQYXRoc1tFXT1WW0VdWzBdLHYuRmlsZUluZGV4W0VdPVZbRV1bMV07Zm9yKEU9MDtFPFYubGVuZ3RoOysrRSl7dmFyIGFlPXYuRmlsZUluZGV4W0VdLHNlPXYuRnVsbFBhdGhzW0VdO2lmKGFlLm5hbWU9bihzZSkucmVwbGFjZSgiLyIsIiIpLGFlLkw9YWUuUj1hZS5DPS0oYWUuY29sb3I9MSksYWUuc2l6ZT1hZS5jb250ZW50P2FlLmNvbnRlbnQubGVuZ3RoOjAsYWUuc3RhcnQ9MCxhZS5jbHNpZD1hZS5jbHNpZHx8bGUsRT09PTApYWUuQz1WLmxlbmd0aD4xPzE6LTEsYWUuc2l6ZT0wLGFlLnR5cGU9NTtlbHNlIGlmKHNlLnNsaWNlKC0xKT09Ii8iKXtmb3IoSz1FKzE7SzxWLmxlbmd0aCYmdCh2LkZ1bGxQYXRoc1tLXSkhPXNlOysrSyk7Zm9yKGFlLkM9Sz49Vi5sZW5ndGg/LTE6SyxLPUUrMTtLPFYubGVuZ3RoJiZ0KHYuRnVsbFBhdGhzW0tdKSE9dChzZSk7KytLKTthZS5SPUs+PVYubGVuZ3RoPy0xOkssYWUudHlwZT0xfWVsc2UgdCh2LkZ1bGxQYXRoc1tFKzFdfHwiIik9PXQoc2UpJiYoYWUuUj1FKzEpLGFlLnR5cGU9Mn19fWZ1bmN0aW9uIEIodixUKXt2YXIgaz1UfHx7fTtpZihrLmZpbGVUeXBlPT0ibWFkIilyZXR1cm4gVW4odixrKTtzd2l0Y2goSSh2KSxrLmZpbGVUeXBlKXtjYXNlInppcCI6cmV0dXJuIFUwKHYsayl9dmFyIEY9ZnVuY3Rpb24odmUpe2Zvcih2YXIgdGU9MCxjZT0wLFNlPTA7U2U8dmUuRmlsZUluZGV4Lmxlbmd0aDsrK1NlKXt2YXIgSmU9dmUuRmlsZUluZGV4W1NlXTtpZihKZS5jb250ZW50KXt2YXIgUWU9SmUuY29udGVudC5sZW5ndGg7UWU+MCYmKFFlPDQwOTY/dGUrPVFlKzYzPj42OmNlKz1RZSs1MTE+PjkpfX1mb3IodmFyIFRyPXZlLkZ1bGxQYXRocy5sZW5ndGgrMz4+MixyMD10ZSs3Pj4zLGEwPXRlKzEyNz4+Nyx0MD1yMCtjZStUcithMCx0dD10MCsxMjc+PjcsV249dHQ8PTEwOT8wOk1hdGguY2VpbCgodHQtMTA5KS8xMjcpO3QwK3R0K1duKzEyNz4+Nz50dDspV249Kyt0dDw9MTA5PzA6TWF0aC5jZWlsKCh0dC0xMDkpLzEyNyk7dmFyIFRhPVsxLFduLHR0LGEwLFRyLGNlLHRlLDBdO3JldHVybiB2ZS5GaWxlSW5kZXhbMF0uc2l6ZT10ZTw8NixUYVs3XT0odmUuRmlsZUluZGV4WzBdLnN0YXJ0PVRhWzBdK1RhWzFdK1RhWzJdK1RhWzNdK1RhWzRdK1RhWzVdKSsoVGFbNl0rNz4+MyksVGF9KHYpLEU9ZnIoRls3XTw8OSksUz0wLFc9MDt7Zm9yKFM9MDtTPDg7KytTKUUud3JpdGVfc2hpZnQoMSxxW1NdKTtmb3IoUz0wO1M8ODsrK1MpRS53cml0ZV9zaGlmdCgyLDApO2ZvcihFLndyaXRlX3NoaWZ0KDIsNjIpLEUud3JpdGVfc2hpZnQoMiwzKSxFLndyaXRlX3NoaWZ0KDIsNjU1MzQpLEUud3JpdGVfc2hpZnQoMiw5KSxFLndyaXRlX3NoaWZ0KDIsNiksUz0wO1M8MzsrK1MpRS53cml0ZV9zaGlmdCgyLDApO2ZvcihFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LEZbMl0pLEUud3JpdGVfc2hpZnQoNCxGWzBdK0ZbMV0rRlsyXStGWzNdLTEpLEUud3JpdGVfc2hpZnQoNCwwKSxFLndyaXRlX3NoaWZ0KDQsNDA5NiksRS53cml0ZV9zaGlmdCg0LEZbM10/RlswXStGWzFdK0ZbMl0tMTppZSksRS53cml0ZV9zaGlmdCg0LEZbM10pLEUud3JpdGVfc2hpZnQoLTQsRlsxXT9GWzBdLTE6aWUpLEUud3JpdGVfc2hpZnQoNCxGWzFdKSxTPTA7UzwxMDk7KytTKUUud3JpdGVfc2hpZnQoLTQsUzxGWzJdP0ZbMV0rUzotMSl9aWYoRlsxXSlmb3IoVz0wO1c8RlsxXTsrK1cpe2Zvcig7UzwyMzYrVyoxMjc7KytTKUUud3JpdGVfc2hpZnQoLTQsUzxGWzJdP0ZbMV0rUzotMSk7RS53cml0ZV9zaGlmdCgtNCxXPT09RlsxXS0xP2llOlcrMSl9dmFyIEs9ZnVuY3Rpb24odmUpe2ZvcihXKz12ZTtTPFctMTsrK1MpRS53cml0ZV9zaGlmdCgtNCxTKzEpO3ZlJiYoKytTLEUud3JpdGVfc2hpZnQoLTQsaWUpKX07Zm9yKFc9Uz0wLFcrPUZbMV07UzxXOysrUylFLndyaXRlX3NoaWZ0KC00LFEuRElGU0VDVCk7Zm9yKFcrPUZbMl07UzxXOysrUylFLndyaXRlX3NoaWZ0KC00LFEuRkFUU0VDVCk7SyhGWzNdKSxLKEZbNF0pO2Zvcih2YXIgSD0wLFY9MCxYPXYuRmlsZUluZGV4WzBdO0g8di5GaWxlSW5kZXgubGVuZ3RoOysrSClYPXYuRmlsZUluZGV4W0hdLFguY29udGVudCYmKFY9WC5jb250ZW50Lmxlbmd0aCwhKFY8NDA5NikmJihYLnN0YXJ0PVcsSyhWKzUxMT4+OSkpKTtmb3IoSyhGWzZdKzc+PjMpO0UubCY1MTE7KUUud3JpdGVfc2hpZnQoLTQsUS5FTkRPRkNIQUlOKTtmb3IoVz1TPTAsSD0wO0g8di5GaWxlSW5kZXgubGVuZ3RoOysrSClYPXYuRmlsZUluZGV4W0hdLFguY29udGVudCYmKFY9WC5jb250ZW50Lmxlbmd0aCwhKCFWfHxWPj00MDk2KSYmKFguc3RhcnQ9VyxLKFYrNjM+PjYpKSk7Zm9yKDtFLmwmNTExOylFLndyaXRlX3NoaWZ0KC00LFEuRU5ET0ZDSEFJTik7Zm9yKFM9MDtTPEZbNF08PDI7KytTKXt2YXIgYWU9di5GdWxsUGF0aHNbU107aWYoIWFlfHxhZS5sZW5ndGg9PT0wKXtmb3IoSD0wO0g8MTc7KytIKUUud3JpdGVfc2hpZnQoNCwwKTtmb3IoSD0wO0g8MzsrK0gpRS53cml0ZV9zaGlmdCg0LC0xKTtmb3IoSD0wO0g8MTI7KytIKUUud3JpdGVfc2hpZnQoNCwwKTtjb250aW51ZX1YPXYuRmlsZUluZGV4W1NdLFM9PT0wJiYoWC5zdGFydD1YLnNpemU/WC5zdGFydC0xOmllKTt2YXIgc2U9Uz09PTAmJmsucm9vdHx8WC5uYW1lO2lmKHNlLmxlbmd0aD4zMSYmKGNvbnNvbGUuZXJyb3IoIk5hbWUgIitzZSsiIHdpbGwgYmUgdHJ1bmNhdGVkIHRvICIrc2Uuc2xpY2UoMCwzMSkpLHNlPXNlLnNsaWNlKDAsMzEpKSxWPTIqKHNlLmxlbmd0aCsxKSxFLndyaXRlX3NoaWZ0KDY0LHNlLCJ1dGYxNmxlIiksRS53cml0ZV9zaGlmdCgyLFYpLEUud3JpdGVfc2hpZnQoMSxYLnR5cGUpLEUud3JpdGVfc2hpZnQoMSxYLmNvbG9yKSxFLndyaXRlX3NoaWZ0KC00LFguTCksRS53cml0ZV9zaGlmdCgtNCxYLlIpLEUud3JpdGVfc2hpZnQoLTQsWC5DKSxYLmNsc2lkKUUud3JpdGVfc2hpZnQoMTYsWC5jbHNpZCwiaGV4Iik7ZWxzZSBmb3IoSD0wO0g8NDsrK0gpRS53cml0ZV9zaGlmdCg0LDApO0Uud3JpdGVfc2hpZnQoNCxYLnN0YXRlfHwwKSxFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LDApLEUud3JpdGVfc2hpZnQoNCwwKSxFLndyaXRlX3NoaWZ0KDQsMCksRS53cml0ZV9zaGlmdCg0LFguc3RhcnQpLEUud3JpdGVfc2hpZnQoNCxYLnNpemUpLEUud3JpdGVfc2hpZnQoNCwwKX1mb3IoUz0xO1M8di5GaWxlSW5kZXgubGVuZ3RoOysrUylpZihYPXYuRmlsZUluZGV4W1NdLFguc2l6ZT49NDA5NilpZihFLmw9WC5zdGFydCsxPDw5LE5lJiZCdWZmZXIuaXNCdWZmZXIoWC5jb250ZW50KSlYLmNvbnRlbnQuY29weShFLEUubCwwLFguc2l6ZSksRS5sKz1YLnNpemUrNTExJi01MTI7ZWxzZXtmb3IoSD0wO0g8WC5zaXplOysrSClFLndyaXRlX3NoaWZ0KDEsWC5jb250ZW50W0hdKTtmb3IoO0gmNTExOysrSClFLndyaXRlX3NoaWZ0KDEsMCl9Zm9yKFM9MTtTPHYuRmlsZUluZGV4Lmxlbmd0aDsrK1MpaWYoWD12LkZpbGVJbmRleFtTXSxYLnNpemU+MCYmWC5zaXplPDQwOTYpaWYoTmUmJkJ1ZmZlci5pc0J1ZmZlcihYLmNvbnRlbnQpKVguY29udGVudC5jb3B5KEUsRS5sLDAsWC5zaXplKSxFLmwrPVguc2l6ZSs2MyYtNjQ7ZWxzZXtmb3IoSD0wO0g8WC5zaXplOysrSClFLndyaXRlX3NoaWZ0KDEsWC5jb250ZW50W0hdKTtmb3IoO0gmNjM7KytIKUUud3JpdGVfc2hpZnQoMSwwKX1pZihOZSlFLmw9RS5sZW5ndGg7ZWxzZSBmb3IoO0UubDxFLmxlbmd0aDspRS53cml0ZV9zaGlmdCgxLDApO3JldHVybiBFfWZ1bmN0aW9uIEwodixUKXt2YXIgaz12LkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oSCl7cmV0dXJuIEgudG9VcHBlckNhc2UoKX0pLEY9ay5tYXAoZnVuY3Rpb24oSCl7dmFyIFY9SC5zcGxpdCgiLyIpO3JldHVybiBWW1YubGVuZ3RoLShILnNsaWNlKC0xKT09Ii8iPzI6MSldfSksRT0hMTtULmNoYXJDb2RlQXQoMCk9PT00Nz8oRT0hMCxUPWtbMF0uc2xpY2UoMCwtMSkrVCk6RT1ULmluZGV4T2YoIi8iKSE9PS0xO3ZhciBTPVQudG9VcHBlckNhc2UoKSxXPUU9PT0hMD9rLmluZGV4T2YoUyk6Ri5pbmRleE9mKFMpO2lmKFchPT0tMSlyZXR1cm4gdi5GaWxlSW5kZXhbV107dmFyIEs9IVMubWF0Y2goQXQpO2ZvcihTPVMucmVwbGFjZShTciwiIiksSyYmKFM9Uy5yZXBsYWNlKEF0LCIhIikpLFc9MDtXPGsubGVuZ3RoOysrVylpZigoSz9rW1ddLnJlcGxhY2UoQXQsIiEiKTprW1ddKS5yZXBsYWNlKFNyLCIiKT09U3x8KEs/RltXXS5yZXBsYWNlKEF0LCIhIik6RltXXSkucmVwbGFjZShTciwiIik9PVMpcmV0dXJuIHYuRmlsZUluZGV4W1ddO3JldHVybiBudWxsfXZhciBHPTY0LGllPS0yLG5lPSJkMGNmMTFlMGExYjExYWUxIixxPVsyMDgsMjA3LDE3LDIyNCwxNjEsMTc3LDI2LDIyNV0sbGU9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIixRPXtNQVhSRUdTRUNUOi02LERJRlNFQ1Q6LTQsRkFUU0VDVDotMyxFTkRPRkNIQUlOOmllLEZSRUVTRUNUOi0xLEhFQURFUl9TSUdOQVRVUkU6bmUsSEVBREVSX01JTk9SX1ZFUlNJT046IjNlMDAiLE1BWFJFR1NJRDotNixOT1NUUkVBTTotMSxIRUFERVJfQ0xTSUQ6bGUsRW50cnlUeXBlczpbInVua25vd24iLCJzdG9yYWdlIiwic3RyZWFtIiwibG9ja2J5dGVzIiwicHJvcGVydHkiLCJyb290Il19O2Z1bmN0aW9uIGdlKHYsVCxrKXtvKCk7dmFyIEY9Qih2LGspO2Mud3JpdGVGaWxlU3luYyhULEYpfWZ1bmN0aW9uIHVlKHYpe2Zvcih2YXIgVD1uZXcgQXJyYXkodi5sZW5ndGgpLGs9MDtrPHYubGVuZ3RoOysraylUW2tdPVN0cmluZy5mcm9tQ2hhckNvZGUodltrXSk7cmV0dXJuIFQuam9pbigiIil9ZnVuY3Rpb24gaih2LFQpe3ZhciBrPUIodixUKTtzd2l0Y2goVCYmVC50eXBlfHwiYnVmZmVyIil7Y2FzZSJmaWxlIjpyZXR1cm4gbygpLGMud3JpdGVGaWxlU3luYyhULmZpbGVuYW1lLGspLGs7Y2FzZSJiaW5hcnkiOnJldHVybiB0eXBlb2Ygaz09InN0cmluZyI/azp1ZShrKTtjYXNlImJhc2U2NCI6cmV0dXJuIEtuKHR5cGVvZiBrPT0ic3RyaW5nIj9rOnVlKGspKTtjYXNlImJ1ZmZlciI6aWYoTmUpcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihrKT9rOkVhKGspO2Nhc2UiYXJyYXkiOnJldHVybiB0eXBlb2Ygaz09InN0cmluZyI/RHIoayk6a31yZXR1cm4ga312YXIgeWU7ZnVuY3Rpb24gYmUodil7dHJ5e3ZhciBUPXYuSW5mbGF0ZVJhdyxrPW5ldyBUO2lmKGsuX3Byb2Nlc3NDaHVuayhuZXcgVWludDhBcnJheShbMywwXSksay5fZmluaXNoRmx1c2hGbGFnKSxrLmJ5dGVzUmVhZCl5ZT12O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJ6bGliIGRvZXMgbm90IGV4cG9zZSBieXRlc1JlYWQiKX1jYXRjaChGKXtjb25zb2xlLmVycm9yKCJjYW5ub3QgdXNlIG5hdGl2ZSB6bGliOiAiKyhGLm1lc3NhZ2V8fEYpKX19ZnVuY3Rpb24gbWUodixUKXtpZigheWUpcmV0dXJuIFF0KHYsVCk7dmFyIGs9eWUuSW5mbGF0ZVJhdyxGPW5ldyBrLEU9Ri5fcHJvY2Vzc0NodW5rKHYuc2xpY2Uodi5sKSxGLl9maW5pc2hGbHVzaEZsYWcpO3JldHVybiB2LmwrPUYuYnl0ZXNSZWFkLEV9ZnVuY3Rpb24gWih2KXtyZXR1cm4geWU/eWUuZGVmbGF0ZVJhd1N5bmModik6T2Eodil9dmFyIE9lPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSx3ZT1bMyw0LDUsNiw3LDgsOSwxMCwxMSwxMywxNSwxNywxOSwyMywyNywzMSwzNSw0Myw1MSw1OSw2Nyw4Myw5OSwxMTUsMTMxLDE2MywxOTUsMjI3LDI1OF0sQWU9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3N107ZnVuY3Rpb24gQSh2KXt2YXIgVD0odjw8MXx2PDwxMSkmMTM5NTM2fCh2PDw1fHY8PDE1KSY1NTgxNDQ7cmV0dXJuKFQ+PjE2fFQ+Pjh8VCkmMjU1fWZvcih2YXIgVT10eXBlb2YgVWludDhBcnJheTwidSIsTz1VP25ldyBVaW50OEFycmF5KDI1Nik6W10sRD0wO0Q8MjU2OysrRClPW0RdPUEoRCk7ZnVuY3Rpb24geih2LFQpe3ZhciBrPU9bdiYyNTVdO3JldHVybiBUPD04P2s+Pj44LVQ6KGs9azw8OHxPW3Y+PjgmMjU1XSxUPD0xNj9rPj4+MTYtVDooaz1rPDw4fE9bdj4+MTYmMjU1XSxrPj4+MjQtVCkpfWZ1bmN0aW9uIHBlKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTY/MDp2W0YrMV08PDgpKT4+PmsmM31mdW5jdGlvbiBKKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTU/MDp2W0YrMV08PDgpKT4+PmsmN31mdW5jdGlvbiByZSh2LFQpe3ZhciBrPVQmNyxGPVQ+Pj4zO3JldHVybih2W0ZdfChrPD00PzA6dltGKzFdPDw4KSk+Pj5rJjE1fWZ1bmN0aW9uIGVlKHYsVCl7dmFyIGs9VCY3LEY9VD4+PjM7cmV0dXJuKHZbRl18KGs8PTM/MDp2W0YrMV08PDgpKT4+PmsmMzF9ZnVuY3Rpb24ga2UodixUKXt2YXIgaz1UJjcsRj1UPj4+MztyZXR1cm4odltGXXwoazw9MT8wOnZbRisxXTw8OCkpPj4+ayYxMjd9ZnVuY3Rpb24gaGUodixULGspe3ZhciBGPVQmNyxFPVQ+Pj4zLFM9KDE8PGspLTEsVz12W0VdPj4+RjtyZXR1cm4gazw4LUZ8fChXfD12W0UrMV08PDgtRixrPDE2LUYpfHwoV3w9dltFKzJdPDwxNi1GLGs8MjQtRil8fChXfD12W0UrM108PDI0LUYpLFcmU31mdW5jdGlvbiB4ZSh2LFQsayl7dmFyIEY9VCY3LEU9VD4+PjM7cmV0dXJuIEY8PTU/dltFXXw9KGsmNyk8PEY6KHZbRV18PWs8PEYmMjU1LHZbRSsxXT0oayY3KT4+OC1GKSxUKzN9ZnVuY3Rpb24gWGUodixULGspe3ZhciBGPVQmNyxFPVQ+Pj4zO3JldHVybiBrPShrJjEpPDxGLHZbRV18PWssVCsxfWZ1bmN0aW9uIHplKHYsVCxrKXt2YXIgRj1UJjcsRT1UPj4+MztyZXR1cm4gazw8PUYsdltFXXw9ayYyNTUsaz4+Pj04LHZbRSsxXT1rLFQrOH1mdW5jdGlvbiBqZSh2LFQsayl7dmFyIEY9VCY3LEU9VD4+PjM7cmV0dXJuIGs8PD1GLHZbRV18PWsmMjU1LGs+Pj49OCx2W0UrMV09ayYyNTUsdltFKzJdPWs+Pj44LFQrMTZ9ZnVuY3Rpb24gZGUodixUKXt2YXIgaz12Lmxlbmd0aCxGPTIqaz5UPzIqazpUKzUsRT0wO2lmKGs+PVQpcmV0dXJuIHY7aWYoTmUpe3ZhciBTPWpuKEYpO2lmKHYuY29weSl2LmNvcHkoUyk7ZWxzZSBmb3IoO0U8di5sZW5ndGg7KytFKVNbRV09dltFXTtyZXR1cm4gU31lbHNlIGlmKFUpe3ZhciBXPW5ldyBVaW50OEFycmF5KEYpO2lmKFcuc2V0KVcuc2V0KHYpO2Vsc2UgZm9yKDtFPGs7KytFKVdbRV09dltFXTtyZXR1cm4gV31yZXR1cm4gdi5sZW5ndGg9Rix2fWZ1bmN0aW9uIFdlKHYpe2Zvcih2YXIgVD1uZXcgQXJyYXkodiksaz0wO2s8djsrK2spVFtrXT0wO3JldHVybiBUfWZ1bmN0aW9uIGZlKHYsVCxrKXt2YXIgRj0xLEU9MCxTPTAsVz0wLEs9MCxIPXYubGVuZ3RoLFY9VT9uZXcgVWludDE2QXJyYXkoMzIpOldlKDMyKTtmb3IoUz0wO1M8MzI7KytTKVZbU109MDtmb3IoUz1IO1M8azsrK1MpdltTXT0wO0g9di5sZW5ndGg7dmFyIFg9VT9uZXcgVWludDE2QXJyYXkoSCk6V2UoSCk7Zm9yKFM9MDtTPEg7KytTKVZbRT12W1NdXSsrLEY8RSYmKEY9RSksWFtTXT0wO2ZvcihWWzBdPTAsUz0xO1M8PUY7KytTKVZbUysxNl09Sz1LK1ZbUy0xXTw8MTtmb3IoUz0wO1M8SDsrK1MpSz12W1NdLEshPTAmJihYW1NdPVZbSysxNl0rKyk7dmFyIGFlPTA7Zm9yKFM9MDtTPEg7KytTKWlmKGFlPXZbU10sYWUhPTApZm9yKEs9eihYW1NdLEYpPj5GLWFlLFc9KDE8PEYrNC1hZSktMTtXPj0wOy0tVylUW0t8Vzw8YWVdPWFlJjE1fFM8PDQ7cmV0dXJuIEZ9dmFyIHNhPVU/bmV3IFVpbnQxNkFycmF5KDUxMik6V2UoNTEyKSxqcj1VP25ldyBVaW50MTZBcnJheSgzMik6V2UoMzIpO2lmKCFVKXtmb3IodmFyIFllPTA7WWU8NTEyOysrWWUpc2FbWWVdPTA7Zm9yKFllPTA7WWU8MzI7KytZZSlqcltZZV09MH0oZnVuY3Rpb24oKXtmb3IodmFyIHY9W10sVD0wO1Q8MzI7VCsrKXYucHVzaCg1KTtmZSh2LGpyLDMyKTt2YXIgaz1bXTtmb3IoVD0wO1Q8PTE0MztUKyspay5wdXNoKDgpO2Zvcig7VDw9MjU1O1QrKylrLnB1c2goOSk7Zm9yKDtUPD0yNzk7VCsrKWsucHVzaCg3KTtmb3IoO1Q8PTI4NztUKyspay5wdXNoKDgpO2ZlKGssc2EsMjg4KX0pKCk7dmFyIFJhPWZ1bmN0aW9uKCl7Zm9yKHZhciBUPVU/bmV3IFVpbnQ4QXJyYXkoMzI3NjgpOltdLGs9MCxGPTA7azxBZS5sZW5ndGgtMTsrK2spZm9yKDtGPEFlW2srMV07KytGKVRbRl09aztmb3IoO0Y8MzI3Njg7KytGKVRbRl09Mjk7dmFyIEU9VT9uZXcgVWludDhBcnJheSgyNTkpOltdO2ZvcihrPTAsRj0wO2s8d2UubGVuZ3RoLTE7KytrKWZvcig7Rjx3ZVtrKzFdOysrRilFW0ZdPWs7ZnVuY3Rpb24gUyhLLEgpe2Zvcih2YXIgVj0wO1Y8Sy5sZW5ndGg7KXt2YXIgWD1NYXRoLm1pbig2NTUzNSxLLmxlbmd0aC1WKSxhZT1WK1g9PUsubGVuZ3RoO2ZvcihILndyaXRlX3NoaWZ0KDEsK2FlKSxILndyaXRlX3NoaWZ0KDIsWCksSC53cml0ZV9zaGlmdCgyLH5YJjY1NTM1KTtYLS0gPjA7KUhbSC5sKytdPUtbVisrXX1yZXR1cm4gSC5sfWZ1bmN0aW9uIFcoSyxIKXtmb3IodmFyIFY9MCxYPTAsYWU9VT9uZXcgVWludDE2QXJyYXkoMzI3NjgpOltdO1g8Sy5sZW5ndGg7KXt2YXIgc2U9TWF0aC5taW4oNjU1MzUsSy5sZW5ndGgtWCk7aWYoc2U8MTApe2ZvcihWPXhlKEgsViwrKFgrc2U9PUsubGVuZ3RoKSksViY3JiYoVis9OC0oViY3KSksSC5sPVYvOHwwLEgud3JpdGVfc2hpZnQoMixzZSksSC53cml0ZV9zaGlmdCgyLH5zZSY2NTUzNSk7c2UtLSA+MDspSFtILmwrK109S1tYKytdO1Y9SC5sKjg7Y29udGludWV9Vj14ZShILFYsKyhYK3NlPT1LLmxlbmd0aCkrMik7Zm9yKHZhciB2ZT0wO3NlLS0gPjA7KXt2YXIgdGU9S1tYXTt2ZT0odmU8PDVedGUpJjMyNzY3O3ZhciBjZT0tMSxTZT0wO2lmKChjZT1hZVt2ZV0pJiYoY2V8PVgmLTMyNzY4LGNlPlgmJihjZS09MzI3NjgpLGNlPFgpKWZvcig7S1tjZStTZV09PUtbWCtTZV0mJlNlPDI1MDspKytTZTtpZihTZT4yKXt0ZT1FW1NlXSx0ZTw9MjI/Vj16ZShILFYsT1t0ZSsxXT4+MSktMTooemUoSCxWLDMpLFYrPTUsemUoSCxWLE9bdGUtMjNdPj41KSxWKz0zKTt2YXIgSmU9dGU8OD8wOnRlLTQ+PjI7SmU+MCYmKGplKEgsVixTZS13ZVt0ZV0pLFYrPUplKSx0ZT1UW1gtY2VdLFY9emUoSCxWLE9bdGVdPj4zKSxWLT0zO3ZhciBRZT10ZTw0PzA6dGUtMj4+MTtRZT4wJiYoamUoSCxWLFgtY2UtQWVbdGVdKSxWKz1RZSk7Zm9yKHZhciBUcj0wO1RyPFNlOysrVHIpYWVbdmVdPVgmMzI3NjcsdmU9KHZlPDw1XktbWF0pJjMyNzY3LCsrWDtzZS09U2UtMX1lbHNlIHRlPD0xNDM/dGU9dGUrNDg6Vj1YZShILFYsMSksVj16ZShILFYsT1t0ZV0pLGFlW3ZlXT1YJjMyNzY3LCsrWH1WPXplKEgsViwwKS0xfXJldHVybiBILmw9KFYrNykvOHwwLEgubH1yZXR1cm4gZnVuY3Rpb24oSCxWKXtyZXR1cm4gSC5sZW5ndGg8OD9TKEgsVik6VyhILFYpfX0oKTtmdW5jdGlvbiBPYSh2KXt2YXIgVD1mcig1MCtNYXRoLmZsb29yKHYubGVuZ3RoKjEuMSkpLGs9UmEodixUKTtyZXR1cm4gVC5zbGljZSgwLGspfXZhciBFZT1VP25ldyBVaW50MTZBcnJheSgzMjc2OCk6V2UoMzI3NjgpLHJyPVU/bmV3IFVpbnQxNkFycmF5KDMyNzY4KTpXZSgzMjc2OCksRnI9VT9uZXcgVWludDE2QXJyYXkoMTI4KTpXZSgxMjgpLEZhPTEsQz0xO2Z1bmN0aW9uIEJyKHYsVCl7dmFyIGs9ZWUodixUKSsyNTc7VCs9NTt2YXIgRj1lZSh2LFQpKzE7VCs9NTt2YXIgRT1yZSh2LFQpKzQ7VCs9NDtmb3IodmFyIFM9MCxXPVU/bmV3IFVpbnQ4QXJyYXkoMTkpOldlKDE5KSxLPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSxIPTEsVj1VP25ldyBVaW50OEFycmF5KDgpOldlKDgpLFg9VT9uZXcgVWludDhBcnJheSg4KTpXZSg4KSxhZT1XLmxlbmd0aCxzZT0wO3NlPEU7KytzZSlXW09lW3NlXV09Uz1KKHYsVCksSDxTJiYoSD1TKSxWW1NdKyssVCs9Mzt2YXIgdmU9MDtmb3IoVlswXT0wLHNlPTE7c2U8PUg7KytzZSlYW3NlXT12ZT12ZStWW3NlLTFdPDwxO2ZvcihzZT0wO3NlPGFlOysrc2UpKHZlPVdbc2VdKSE9MCYmKEtbc2VdPVhbdmVdKyspO3ZhciB0ZT0wO2ZvcihzZT0wO3NlPGFlOysrc2UpaWYodGU9V1tzZV0sdGUhPTApe3ZlPU9bS1tzZV1dPj44LXRlO2Zvcih2YXIgY2U9KDE8PDctdGUpLTE7Y2U+PTA7LS1jZSlGclt2ZXxjZTw8dGVdPXRlJjd8c2U8PDN9dmFyIFNlPVtdO2ZvcihIPTE7U2UubGVuZ3RoPGsrRjspc3dpdGNoKHZlPUZyW2tlKHYsVCldLFQrPXZlJjcsdmU+Pj49Myl7Y2FzZSAxNjpmb3IoUz0zK3BlKHYsVCksVCs9Mix2ZT1TZVtTZS5sZW5ndGgtMV07Uy0tID4wOylTZS5wdXNoKHZlKTticmVhaztjYXNlIDE3OmZvcihTPTMrSih2LFQpLFQrPTM7Uy0tID4wOylTZS5wdXNoKDApO2JyZWFrO2Nhc2UgMTg6Zm9yKFM9MTEra2UodixUKSxUKz03O1MtLSA+MDspU2UucHVzaCgwKTticmVhaztkZWZhdWx0OlNlLnB1c2godmUpLEg8dmUmJihIPXZlKTticmVha312YXIgSmU9U2Uuc2xpY2UoMCxrKSxRZT1TZS5zbGljZShrKTtmb3Ioc2U9aztzZTwyODY7KytzZSlKZVtzZV09MDtmb3Ioc2U9RjtzZTwzMDsrK3NlKVFlW3NlXT0wO3JldHVybiBGYT1mZShKZSxFZSwyODYpLEM9ZmUoUWUscnIsMzApLFR9ZnVuY3Rpb24gX3QodixUKXtpZih2WzBdPT0zJiYhKHZbMV0mMykpcmV0dXJuW0FhKFQpLDJdO2Zvcih2YXIgaz0wLEY9MCxFPWpuKFR8fDE8PDE4KSxTPTAsVz1FLmxlbmd0aD4+PjAsSz0wLEg9MDshKEYmMSk7KXtpZihGPUoodixrKSxrKz0zLEY+Pj4xKUY+PjE9PTE/KEs9OSxIPTUpOihrPUJyKHYsayksSz1GYSxIPUMpO2Vsc2V7ayY3JiYoays9OC0oayY3KSk7dmFyIFY9dltrPj4+M118dlsoaz4+PjMpKzFdPDw4O2lmKGsrPTMyLFY+MClmb3IoIVQmJlc8UytWJiYoRT1kZShFLFMrViksVz1FLmxlbmd0aCk7Vi0tID4wOylFW1MrK109dltrPj4+M10says9ODtjb250aW51ZX1mb3IoOzspeyFUJiZXPFMrMzI3NjcmJihFPWRlKEUsUyszMjc2NyksVz1FLmxlbmd0aCk7dmFyIFg9aGUodixrLEspLGFlPUY+Pj4xPT0xP3NhW1hdOkVlW1hdO2lmKGsrPWFlJjE1LGFlPj4+PTQsIShhZT4+PjgmMjU1KSlFW1MrK109YWU7ZWxzZXtpZihhZT09MjU2KWJyZWFrO2FlLT0yNTc7dmFyIHNlPWFlPDg/MDphZS00Pj4yO3NlPjUmJihzZT0wKTt2YXIgdmU9Uyt3ZVthZV07c2U+MCYmKHZlKz1oZSh2LGssc2UpLGsrPXNlKSxYPWhlKHYsayxIKSxhZT1GPj4+MT09MT9qcltYXTpycltYXSxrKz1hZSYxNSxhZT4+Pj00O3ZhciB0ZT1hZTw0PzA6YWUtMj4+MSxjZT1BZVthZV07Zm9yKHRlPjAmJihjZSs9aGUodixrLHRlKSxrKz10ZSksIVQmJlc8dmUmJihFPWRlKEUsdmUrMTAwKSxXPUUubGVuZ3RoKTtTPHZlOylFW1NdPUVbUy1jZV0sKytTfX19cmV0dXJuIFQ/W0Usays3Pj4+M106W0Uuc2xpY2UoMCxTKSxrKzc+Pj4zXX1mdW5jdGlvbiBRdCh2LFQpe3ZhciBrPXYuc2xpY2Uodi5sfHwwKSxGPV90KGssVCk7cmV0dXJuIHYubCs9RlsxXSxGWzBdfWZ1bmN0aW9uIE5hKHYsVCl7aWYodil0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUuZXJyb3IoVCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoVCl9ZnVuY3Rpb24gZTAodixUKXt2YXIgaz12O3NyKGssMCk7dmFyIEY9W10sRT1bXSxTPXtGaWxlSW5kZXg6RixGdWxsUGF0aHM6RX07YihTLHtyb290OlQucm9vdH0pO2Zvcih2YXIgVz1rLmxlbmd0aC00OyhrW1ddIT04MHx8a1tXKzFdIT03NXx8a1tXKzJdIT01fHxrW1crM10hPTYpJiZXPj0wOyktLVc7ay5sPVcrNCxrLmwrPTQ7dmFyIEs9ay5yZWFkX3NoaWZ0KDIpO2subCs9Njt2YXIgSD1rLnJlYWRfc2hpZnQoNCk7Zm9yKGsubD1ILFc9MDtXPEs7KytXKXtrLmwrPTIwO3ZhciBWPWsucmVhZF9zaGlmdCg0KSxYPWsucmVhZF9zaGlmdCg0KSxhZT1rLnJlYWRfc2hpZnQoMiksc2U9ay5yZWFkX3NoaWZ0KDIpLHZlPWsucmVhZF9zaGlmdCgyKTtrLmwrPTg7dmFyIHRlPWsucmVhZF9zaGlmdCg0KSxjZT1zKGsuc2xpY2Uoay5sK2FlLGsubCthZStzZSkpO2subCs9YWUrc2UrdmU7dmFyIFNlPWsubDtrLmw9dGUrNCxjZSYmY2VbMV0mJigoY2VbMV18fHt9KS51c3omJihYPWNlWzFdLnVzeiksKGNlWzFdfHx7fSkuY3N6JiYoVj1jZVsxXS5jc3opKSxNYShrLFYsWCxTLGNlKSxrLmw9U2V9cmV0dXJuIFN9ZnVuY3Rpb24gTWEodixULGssRixFKXt2LmwrPTI7dmFyIFM9di5yZWFkX3NoaWZ0KDIpLFc9di5yZWFkX3NoaWZ0KDIpLEs9Zih2KTtpZihTJjgyNTcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBaSVAgZW5jcnlwdGlvbiIpO2Zvcih2YXIgSD12LnJlYWRfc2hpZnQoNCksVj12LnJlYWRfc2hpZnQoNCksWD12LnJlYWRfc2hpZnQoNCksYWU9di5yZWFkX3NoaWZ0KDIpLHNlPXYucmVhZF9zaGlmdCgyKSx2ZT0iIix0ZT0wO3RlPGFlOysrdGUpdmUrPVN0cmluZy5mcm9tQ2hhckNvZGUodlt2LmwrK10pO2lmKHNlKXt2YXIgY2U9cyh2LnNsaWNlKHYubCx2Lmwrc2UpKTsoY2VbMjE1ODldfHx7fSkubXQmJihLPWNlWzIxNTg5XS5tdCksKGNlWzFdfHx7fSkudXN6JiYoWD1jZVsxXS51c3opLChjZVsxXXx8e30pLmNzeiYmKFY9Y2VbMV0uY3N6KSxFJiYoKEVbMjE1ODldfHx7fSkubXQmJihLPUVbMjE1ODldLm10KSwoRVsxXXx8e30pLnVzeiYmKFg9RVsxXS51c3opLChFWzFdfHx7fSkuY3N6JiYoVj1FWzFdLmNzeikpfXYubCs9c2U7dmFyIFNlPXYuc2xpY2Uodi5sLHYubCtWKTtzd2l0Y2goVyl7Y2FzZSA4OlNlPW1lKHYsWCk7YnJlYWs7Y2FzZSAwOnYubCs9VjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgWklQIENvbXByZXNzaW9uIG1ldGhvZCAiK1cpfXZhciBKZT0hMTtTJjgmJihIPXYucmVhZF9zaGlmdCg0KSxIPT0xMzQ2OTU3NjAmJihIPXYucmVhZF9zaGlmdCg0KSxKZT0hMCksVj12LnJlYWRfc2hpZnQoNCksWD12LnJlYWRfc2hpZnQoNCkpLFYhPVQmJk5hKEplLCJCYWQgY29tcHJlc3NlZCBzaXplOiAiK1QrIiAhPSAiK1YpLFghPWsmJk5hKEplLCJCYWQgdW5jb21wcmVzc2VkIHNpemU6ICIraysiICE9ICIrWCksVXIoRix2ZSxTZSx7dW5zYWZlOiEwLG10Okt9KX1mdW5jdGlvbiBVMCh2LFQpe3ZhciBrPVR8fHt9LEY9W10sRT1bXSxTPWZyKDEpLFc9ay5jb21wcmVzc2lvbj84OjAsSz0wLEg9MCxWPTAsWD0wLGFlPTAsc2U9di5GdWxsUGF0aHNbMF0sdmU9c2UsdGU9di5GaWxlSW5kZXhbMF0sY2U9W10sU2U9MDtmb3IoSD0xO0g8di5GdWxsUGF0aHMubGVuZ3RoOysrSClpZih2ZT12LkZ1bGxQYXRoc1tIXS5zbGljZShzZS5sZW5ndGgpLHRlPXYuRmlsZUluZGV4W0hdLCEoIXRlLnNpemV8fCF0ZS5jb250ZW50fHxBcnJheS5pc0FycmF5KHRlLmNvbnRlbnQpJiZ0ZS5jb250ZW50Lmxlbmd0aD09MHx8dmU9PSIBU2gzM3RKNSIpKXt2YXIgSmU9WCxRZT1mcih2ZS5sZW5ndGgpO2ZvcihWPTA7Vjx2ZS5sZW5ndGg7KytWKVFlLndyaXRlX3NoaWZ0KDEsdmUuY2hhckNvZGVBdChWKSYxMjcpO1FlPVFlLnNsaWNlKDAsUWUubCksY2VbYWVdPXR5cGVvZiB0ZS5jb250ZW50PT0ic3RyaW5nIj91aS5ic3RyKHRlLmNvbnRlbnQsMCk6dWkuYnVmKHRlLmNvbnRlbnQsMCk7dmFyIFRyPXR5cGVvZiB0ZS5jb250ZW50PT0ic3RyaW5nIj9Ecih0ZS5jb250ZW50KTp0ZS5jb250ZW50O1c9PTgmJihUcj1aKFRyKSksUz1mcigzMCksUy53cml0ZV9zaGlmdCg0LDY3MzI0NzUyKSxTLndyaXRlX3NoaWZ0KDIsMjApLFMud3JpdGVfc2hpZnQoMixLKSxTLndyaXRlX3NoaWZ0KDIsVyksdGUubXQ/aShTLHRlLm10KTpTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCgtNCxjZVthZV0pLFMud3JpdGVfc2hpZnQoNCxUci5sZW5ndGgpLFMud3JpdGVfc2hpZnQoNCx0ZS5jb250ZW50Lmxlbmd0aCksUy53cml0ZV9zaGlmdCgyLFFlLmxlbmd0aCksUy53cml0ZV9zaGlmdCgyLDApLFgrPVMubGVuZ3RoLEYucHVzaChTKSxYKz1RZS5sZW5ndGgsRi5wdXNoKFFlKSxYKz1Uci5sZW5ndGgsRi5wdXNoKFRyKSxTPWZyKDQ2KSxTLndyaXRlX3NoaWZ0KDQsMzM2MzkyNDgpLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsMjApLFMud3JpdGVfc2hpZnQoMixLKSxTLndyaXRlX3NoaWZ0KDIsVyksUy53cml0ZV9zaGlmdCg0LDApLFMud3JpdGVfc2hpZnQoLTQsY2VbYWVdKSxTLndyaXRlX3NoaWZ0KDQsVHIubGVuZ3RoKSxTLndyaXRlX3NoaWZ0KDQsdGUuY29udGVudC5sZW5ndGgpLFMud3JpdGVfc2hpZnQoMixRZS5sZW5ndGgpLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsMCksUy53cml0ZV9zaGlmdCgyLDApLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDQsMCksUy53cml0ZV9zaGlmdCg0LEplKSxTZSs9Uy5sLEUucHVzaChTKSxTZSs9UWUubGVuZ3RoLEUucHVzaChRZSksKythZX1yZXR1cm4gUz1mcigyMiksUy53cml0ZV9zaGlmdCg0LDEwMTAxMDI1NiksUy53cml0ZV9zaGlmdCgyLDApLFMud3JpdGVfc2hpZnQoMiwwKSxTLndyaXRlX3NoaWZ0KDIsYWUpLFMud3JpdGVfc2hpZnQoMixhZSksUy53cml0ZV9zaGlmdCg0LFNlKSxTLndyaXRlX3NoaWZ0KDQsWCksUy53cml0ZV9zaGlmdCgyLDApLHlhKFt5YShGKSx5YShFKSxTXSl9dmFyIGF0PXtodG06InRleHQvaHRtbCIseG1sOiJ0ZXh0L3htbCIsZ2lmOiJpbWFnZS9naWYiLGpwZzoiaW1hZ2UvanBlZyIscG5nOiJpbWFnZS9wbmciLG1zbzoiYXBwbGljYXRpb24veC1tc28iLHRobXg6ImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZSIsc2gzM3RqNToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07ZnVuY3Rpb24gSDAodixUKXtpZih2LmN0eXBlKXJldHVybiB2LmN0eXBlO3ZhciBrPXYubmFtZXx8IiIsRj1rLm1hdGNoKC9cLihbXlwuXSspJC8pO3JldHVybiBGJiZhdFtGWzFdXXx8VCYmKEY9KGs9VCkubWF0Y2goL1tcLlxcXShbXlwuXFxdKSskLyksRiYmYXRbRlsxXV0pP2F0W0ZbMV1dOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifWZ1bmN0aW9uIFcwKHYpe2Zvcih2YXIgVD1Lbih2KSxrPVtdLEY9MDtGPFQubGVuZ3RoO0YrPTc2KWsucHVzaChULnNsaWNlKEYsRis3NikpO3JldHVybiBrLmpvaW4oYFxyCmApK2BccgpgfWZ1bmN0aW9uIGt0KHYpe3ZhciBUPXYucmVwbGFjZSgvW1x4MDAtXHgwOFx4MEJceDBDXHgwRS1ceDFGXHg3RS1ceEZGPV0vZyxmdW5jdGlvbihWKXt2YXIgWD1WLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIj0iKyhYLmxlbmd0aD09MT8iMCIrWDpYKX0pO1Q9VC5yZXBsYWNlKC8gJC9tZywiPTIwIikucmVwbGFjZSgvXHQkL21nLCI9MDkiKSxULmNoYXJBdCgwKT09YApgJiYoVD0iPTBEIitULnNsaWNlKDEpKSxUPVQucmVwbGFjZSgvXHIoPyFcbikvbWcsIj0wRCIpLnJlcGxhY2UoL1xuXG4vbWcsYAo9MEFgKS5yZXBsYWNlKC8oW15cclxuXSlcbi9tZywiJDE9MEEiKTtmb3IodmFyIGs9W10sRj1ULnNwbGl0KGBccgpgKSxFPTA7RTxGLmxlbmd0aDsrK0Upe3ZhciBTPUZbRV07aWYoUy5sZW5ndGg9PTApe2sucHVzaCgiIik7Y29udGludWV9Zm9yKHZhciBXPTA7VzxTLmxlbmd0aDspe3ZhciBLPTc2LEg9Uy5zbGljZShXLFcrSyk7SC5jaGFyQXQoSy0xKT09Ij0iP0stLTpILmNoYXJBdChLLTIpPT0iPSI/Sy09MjpILmNoYXJBdChLLTMpPT0iPSImJihLLT0zKSxIPVMuc2xpY2UoVyxXK0spLFcrPUssVzxTLmxlbmd0aCYmKEgrPSI9Iiksay5wdXNoKEgpfX1yZXR1cm4gay5qb2luKGBccgpgKX1mdW5jdGlvbiBWMCh2KXtmb3IodmFyIFQ9W10saz0wO2s8di5sZW5ndGg7KytrKXtmb3IodmFyIEY9dltrXTtrPD12Lmxlbmd0aCYmRi5jaGFyQXQoRi5sZW5ndGgtMSk9PSI9IjspRj1GLnNsaWNlKDAsRi5sZW5ndGgtMSkrdlsrK2tdO1QucHVzaChGKX1mb3IodmFyIEU9MDtFPFQubGVuZ3RoOysrRSlUW0VdPVRbRV0ucmVwbGFjZSgvWz1dWzAtOUEtRmEtZl17Mn0vZyxmdW5jdGlvbihTKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChTLnNsaWNlKDEpLDE2KSl9KTtyZXR1cm4gRHIoVC5qb2luKGBccgpgKSl9ZnVuY3Rpb24gd3QodixULGspe2Zvcih2YXIgRj0iIixFPSIiLFM9IiIsVyxLPTA7SzwxMDsrK0spe3ZhciBIPVRbS107aWYoIUh8fEgubWF0Y2goL15ccyokLykpYnJlYWs7dmFyIFY9SC5tYXRjaCgvXihbXjpdKj8pOlxzKihbXlxzXS4qKSQvKTtpZihWKXN3aXRjaChWWzFdLnRvTG93ZXJDYXNlKCkpe2Nhc2UiY29udGVudC1sb2NhdGlvbiI6Rj1WWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHlwZSI6Uz1WWzJdLnRyaW0oKTticmVhaztjYXNlImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciOkU9VlsyXS50cmltKCk7YnJlYWt9fXN3aXRjaCgrK0ssRS50b0xvd2VyQ2FzZSgpKXtjYXNlImJhc2U2NCI6Vz1EcihJcihULnNsaWNlKEspLmpvaW4oIiIpKSk7YnJlYWs7Y2FzZSJxdW90ZWQtcHJpbnRhYmxlIjpXPVYwKFQuc2xpY2UoSykpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nICIrRSl9dmFyIFg9VXIodixGLnNsaWNlKGsubGVuZ3RoKSxXLHt1bnNhZmU6ITB9KTtTJiYoWC5jdHlwZT1TKX1mdW5jdGlvbiBGdCh2LFQpe2lmKHVlKHYuc2xpY2UoMCwxMykpLnRvTG93ZXJDYXNlKCkhPSJtaW1lLXZlcnNpb246Iil0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE1BRCBoZWFkZXIiKTt2YXIgaz1UJiZULnJvb3R8fCIiLEY9KE5lJiZCdWZmZXIuaXNCdWZmZXIodik/di50b1N0cmluZygiYmluYXJ5Iik6dWUodikpLnNwbGl0KGBccgpgKSxFPTAsUz0iIjtmb3IoRT0wO0U8Ri5sZW5ndGg7KytFKWlmKFM9RltFXSwhIS9eQ29udGVudC1Mb2NhdGlvbjovaS50ZXN0KFMpJiYoUz1TLnNsaWNlKFMuaW5kZXhPZigiZmlsZSIpKSxrfHwoaz1TLnNsaWNlKDAsUy5sYXN0SW5kZXhPZigiLyIpKzEpKSxTLnNsaWNlKDAsay5sZW5ndGgpIT1rKSlmb3IoO2subGVuZ3RoPjAmJihrPWsuc2xpY2UoMCxrLmxlbmd0aC0xKSxrPWsuc2xpY2UoMCxrLmxhc3RJbmRleE9mKCIvIikrMSksUy5zbGljZSgwLGsubGVuZ3RoKSE9ayk7KTt2YXIgVz0oRlsxXXx8IiIpLm1hdGNoKC9ib3VuZGFyeT0iKC4qPykiLyk7aWYoIVcpdGhyb3cgbmV3IEVycm9yKCJNQUQgY2Fubm90IGZpbmQgYm91bmRhcnkiKTt2YXIgSz0iLS0iKyhXWzFdfHwiIiksSD1bXSxWPVtdLFg9e0ZpbGVJbmRleDpILEZ1bGxQYXRoczpWfTtiKFgpO3ZhciBhZSxzZT0wO2ZvcihFPTA7RTxGLmxlbmd0aDsrK0Upe3ZhciB2ZT1GW0VdO3ZlIT09SyYmdmUhPT1LKyItLSJ8fChzZSsrJiZ3dChYLEYuc2xpY2UoYWUsRSksayksYWU9RSl9cmV0dXJuIFh9ZnVuY3Rpb24gVW4odixUKXt2YXIgaz1UfHx7fSxGPWsuYm91bmRhcnl8fCJTaGVldEpTIjtGPSItLS0tLS09IitGO2Zvcih2YXIgRT1bIk1JTUUtVmVyc2lvbjogMS4wIiwnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9IicrRi5zbGljZSgyKSsnIicsIiIsIiIsIiJdLFM9di5GdWxsUGF0aHNbMF0sVz1TLEs9di5GaWxlSW5kZXhbMF0sSD0xO0g8di5GdWxsUGF0aHMubGVuZ3RoOysrSClpZihXPXYuRnVsbFBhdGhzW0hdLnNsaWNlKFMubGVuZ3RoKSxLPXYuRmlsZUluZGV4W0hdLCEoIUsuc2l6ZXx8IUsuY29udGVudHx8Vz09IgFTaDMzdEo1Iikpe1c9Vy5yZXBsYWNlKC9bXHgwMC1ceDA4XHgwQlx4MENceDBFLVx4MUZceDdFLVx4RkZdL2csZnVuY3Rpb24oU2Upe3JldHVybiJfeCIrU2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrIl8ifSkucmVwbGFjZSgvW1x1MDA4MC1cdUZGRkZdL2csZnVuY3Rpb24oU2Upe3JldHVybiJfdSIrU2UuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikrIl8ifSk7Zm9yKHZhciBWPUsuY29udGVudCxYPU5lJiZCdWZmZXIuaXNCdWZmZXIoVik/Vi50b1N0cmluZygiYmluYXJ5Iik6dWUoViksYWU9MCxzZT1NYXRoLm1pbigxMDI0LFgubGVuZ3RoKSx2ZT0wLHRlPTA7dGU8PXNlOysrdGUpKHZlPVguY2hhckNvZGVBdCh0ZSkpPj0zMiYmdmU8MTI4JiYrK2FlO3ZhciBjZT1hZT49c2UqNC81O0UucHVzaChGKSxFLnB1c2goIkNvbnRlbnQtTG9jYXRpb246ICIrKGsucm9vdHx8ImZpbGU6Ly8vQzovU2hlZXRKUy8iKStXKSxFLnB1c2goIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIrKGNlPyJxdW90ZWQtcHJpbnRhYmxlIjoiYmFzZTY0IikpLEUucHVzaCgiQ29udGVudC1UeXBlOiAiK0gwKEssVykpLEUucHVzaCgiIiksRS5wdXNoKGNlP2t0KFgpOlcwKFgpKX1yZXR1cm4gRS5wdXNoKEYrYC0tXHIKYCksRS5qb2luKGBccgpgKX1mdW5jdGlvbiBIbih2KXt2YXIgVD17fTtyZXR1cm4gYihULHYpLFR9ZnVuY3Rpb24gVXIodixULGssRil7dmFyIEU9RiYmRi51bnNhZmU7RXx8Yih2KTt2YXIgUz0hRSYmTWUuZmluZCh2LFQpO2lmKCFTKXt2YXIgVz12LkZ1bGxQYXRoc1swXTtULnNsaWNlKDAsVy5sZW5ndGgpPT1XP1c9VDooVy5zbGljZSgtMSkhPSIvIiYmKFcrPSIvIiksVz0oVytUKS5yZXBsYWNlKCIvLyIsIi8iKSksUz17bmFtZTpuKFQpLHR5cGU6Mn0sdi5GaWxlSW5kZXgucHVzaChTKSx2LkZ1bGxQYXRocy5wdXNoKFcpLEV8fE1lLnV0aWxzLmNmYl9nYyh2KX1yZXR1cm4gUy5jb250ZW50PWssUy5zaXplPWs/ay5sZW5ndGg6MCxGJiYoRi5DTFNJRCYmKFMuY2xzaWQ9Ri5DTFNJRCksRi5tdCYmKFMubXQ9Ri5tdCksRi5jdCYmKFMuY3Q9Ri5jdCkpLFN9ZnVuY3Rpb24gJGUodixUKXtiKHYpO3ZhciBrPU1lLmZpbmQodixUKTtpZihrKXtmb3IodmFyIEY9MDtGPHYuRmlsZUluZGV4Lmxlbmd0aDsrK0YpaWYodi5GaWxlSW5kZXhbRl09PWspcmV0dXJuIHYuRmlsZUluZGV4LnNwbGljZShGLDEpLHYuRnVsbFBhdGhzLnNwbGljZShGLDEpLCEwfXJldHVybiExfWZ1bmN0aW9uIE0odixULGspe2Iodik7dmFyIEY9TWUuZmluZCh2LFQpO2lmKEYpe2Zvcih2YXIgRT0wO0U8di5GaWxlSW5kZXgubGVuZ3RoOysrRSlpZih2LkZpbGVJbmRleFtFXT09RilyZXR1cm4gdi5GaWxlSW5kZXhbRV0ubmFtZT1uKGspLHYuRnVsbFBhdGhzW0VdPWssITB9cmV0dXJuITF9ZnVuY3Rpb24gWSh2KXtJKHYsITApfXJldHVybiBhLmZpbmQ9TCxhLnJlYWQ9UCxhLnBhcnNlPWwsYS53cml0ZT1qLGEud3JpdGVGaWxlPWdlLGEudXRpbHM9e2NmYl9uZXc6SG4sY2ZiX2FkZDpVcixjZmJfZGVsOiRlLGNmYl9tb3Y6TSxjZmJfZ2M6WSxSZWFkU2hpZnQ6RHQsQ2hlY2tGaWVsZDpqaSxwcmVwX2Jsb2I6c3IsYmNvbmNhdDp5YSx1c2VfemxpYjpiZSxfZGVmbGF0ZVJhdzpPYSxfaW5mbGF0ZVJhdzpRdCxjb25zdHM6UX0sYX0oKSxEYztmdW5jdGlvbiBSYyhlKXtpZih0eXBlb2YgRGVubzwidSIpcmV0dXJuIERlbm8ucmVhZEZpbGVTeW5jKGUpO2lmKHR5cGVvZiAkPCJ1IiYmdHlwZW9mIEZpbGU8InUiJiZ0eXBlb2YgRm9sZGVyPCJ1Iil0cnl7dmFyIGE9RmlsZShlKTthLm9wZW4oInIiKSxhLmVuY29kaW5nPSJiaW5hcnkiO3ZhciByPWEucmVhZCgpO3JldHVybiBhLmNsb3NlKCkscn1jYXRjaCh0KXtpZighdC5tZXNzYWdlfHx0Lm1lc3NhZ2UuaW5kZXhPZigib25zdHJ1Y3QiKT09LTEpdGhyb3cgdH10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhY2Nlc3MgZmlsZSAiK2UpfWZ1bmN0aW9uIHByKGUpe2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxyPVtdLHQ9MDt0PGEubGVuZ3RoOysrdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxhW3RdKSYmci5wdXNoKGFbdF0pO3JldHVybiByfWZ1bmN0aW9uIEowKGUpe2Zvcih2YXIgYT1bXSxyPXByKGUpLHQ9MDt0IT09ci5sZW5ndGg7Kyt0KWFbZVtyW3RdXV09clt0XTtyZXR1cm4gYX12YXIgaGk9RGF0ZS5VVEMoMTg5OSwxMSwzMCwwLDAsMCksT2M9RGF0ZS5VVEMoMTg5OSwxMSwzMSwwLDAsMCksTmM9RGF0ZS5VVEMoMTkwNCwwLDEsMCwwLDApO2Z1bmN0aW9uIG9yKGUsYSl7dmFyIHI9ZS5nZXRUaW1lKCksdD0oci1oaSkvKDI0KjYwKjYwKjFlMyk7cmV0dXJuIGE/KHQtPTE0NjIsdDwtMTQwMj90LTE6dCk6dDw2MD90LTE6dH1mdW5jdGlvbiBTYShlKXtpZihlPj02MCYmZTw2MSlyZXR1cm4gZTt2YXIgYT1uZXcgRGF0ZTtyZXR1cm4gYS5zZXRUaW1lKChlPjYwP2U6ZSsxKSoyNCo2MCo2MCoxZTMraGkpLGF9ZnVuY3Rpb24gTWMoZSl7dmFyIGE9MCxyPTAsdD0hMSxuPWUubWF0Y2goL1AoWzAtOVwuXStZKT8oWzAtOVwuXStNKT8oWzAtOVwuXStEKT9UKFswLTlcLl0rSCk/KFswLTlcLl0rTSk/KFswLTlcLl0rUyk/Lyk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJ8IitlKyJ8IGlzIG5vdCBhbiBJU084NjAxIER1cmF0aW9uIik7Zm9yKHZhciBpPTE7aSE9bi5sZW5ndGg7KytpKWlmKG5baV0pe3N3aXRjaChyPTEsaT4zJiYodD0hMCksbltpXS5zbGljZShuW2ldLmxlbmd0aC0xKSl7Y2FzZSJZIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIElTTyBEdXJhdGlvbiBGaWVsZDogIituW2ldLnNsaWNlKG5baV0ubGVuZ3RoLTEpKTtjYXNlIkQiOnIqPTI0O2Nhc2UiSCI6cio9NjA7Y2FzZSJNIjppZih0KXIqPTYwO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBJU08gRHVyYXRpb24gRmllbGQ6IE0iKX1hKz1yKnBhcnNlSW50KG5baV0sMTApfXJldHVybiBhfXZhciBQYz0vXihcZCspOihcZCspKDpcZCspPyhcLlxkKyk/JC8sTGM9L14oXGQrKS0oXGQrKS0oXGQrKSQvLHhpPS9eKFxkKyktKFxkKyktKFxkKylbVCBdKFxkKyk6KFxkKykoOlxkKyk/KFwuXGQrKT8kLztmdW5jdGlvbiB4cihlLGEpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlO3ZhciByPWUubWF0Y2goUGMpO2lmKHIpcmV0dXJuIG5ldyBEYXRlKChhP05jOk9jKSsoKHBhcnNlSW50KHJbMV0sMTApKjYwK3BhcnNlSW50KHJbMl0sMTApKSo2MCsoclszXT9wYXJzZUludChyWzNdLnNsaWNlKDEpLDEwKTowKSkqMWUzKyhyWzRdP3BhcnNlSW50KChyWzRdKyIwMDAiKS5zbGljZSgxLDQpLDEwKTowKSk7aWYocj1lLm1hdGNoKExjKSxyKXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrclsxXSwrclsyXS0xLCtyWzNdLDAsMCwwLDApKTtpZihyPWUubWF0Y2goeGkpLHIpcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCtyWzFdLCtyWzJdLTEsK3JbM10sK3JbNF0sK3JbNV0scls2XSYmcGFyc2VJbnQocls2XS5zbGljZSgxKSwxMCl8fDAscls3XSYmcGFyc2VJbnQoKHJbN10rIjAwMDAiKS5zbGljZSgxLDQpLDEwKXx8MCkpO3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiB0fWZ1bmN0aW9uIEJhKGUsYSl7aWYoTmUmJkJ1ZmZlci5pc0J1ZmZlcihlKSl7aWYoYSYmRXQpe2lmKGVbMF09PTI1NSYmZVsxXT09MjU0KXJldHVybiBidChlLnNsaWNlKDIpLnRvU3RyaW5nKCJ1dGYxNmxlIikpO2lmKGVbMV09PTI1NCYmZVsyXT09MjU1KXJldHVybiBidCh6bihlLnNsaWNlKDIpLnRvU3RyaW5nKCJiaW5hcnkiKSkpfXJldHVybiBlLnRvU3RyaW5nKCJiaW5hcnkiKX1pZih0eXBlb2YgVGV4dERlY29kZXI8InUiKXRyeXtpZihhKXtpZihlWzBdPT0yNTUmJmVbMV09PTI1NClyZXR1cm4gYnQobmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpLmRlY29kZShlLnNsaWNlKDIpKSk7aWYoZVswXT09MjU0JiZlWzFdPT0yNTUpcmV0dXJuIGJ0KG5ldyBUZXh0RGVjb2RlcigidXRmLTE2YmUiKS5kZWNvZGUoZS5zbGljZSgyKSkpfXZhciByPXsi4oKsIjoiwoAiLCLigJoiOiLCgiIsxpI6IsKDIiwi4oCeIjoiwoQiLCLigKYiOiLChSIsIuKAoCI6IsKGIiwi4oChIjoiwociLCLLhiI6IsKIIiwi4oCwIjoiwokiLMWgOiLCiiIsIuKAuSI6IsKLIizFkjoiwowiLMW9OiLCjiIsIuKAmCI6IsKRIiwi4oCZIjoiwpIiLCLigJwiOiLCkyIsIuKAnSI6IsKUIiwi4oCiIjoiwpUiLCLigJMiOiLCliIsIuKAlCI6IsKXIiwiy5wiOiLCmCIsIuKEoiI6IsKZIizFoToiwpoiLCLigLoiOiLCmyIsxZM6IsKcIizFvjoiwp4iLMW4OiLCnyJ9O3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYoZT1uZXcgVWludDhBcnJheShlKSksbmV3IFRleHREZWNvZGVyKCJsYXRpbjEiKS5kZWNvZGUoZSkucmVwbGFjZSgvW+KCrOKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSxb3igJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPFvsW4XS9nLGZ1bmN0aW9uKGkpe3JldHVybiByW2ldfHxpfSl9Y2F0Y2h7fXZhciB0PVtdLG49MDt0cnl7Zm9yKG49MDtuPGUubGVuZ3RoLTY1NTM2O24rPTY1NTM2KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsZS5zbGljZShuLG4rNjU1MzYpKSk7dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCxlLnNsaWNlKG4pKSl9Y2F0Y2h7dHJ5e2Zvcig7bjxlLmxlbmd0aC0xNjM4NDtuKz0xNjM4NCl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLGUuc2xpY2UobixuKzE2Mzg0KSkpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsZS5zbGljZShuKSkpfWNhdGNoe2Zvcig7biE9ZS5sZW5ndGg7KytuKXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGVbbl0pKX19cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gVWUoZSl7aWYodHlwZW9mIEpTT048InUiJiYhQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSk7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT1udWxsKXJldHVybiBlO2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShlLmdldFRpbWUoKSk7dmFyIGE9e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihhW3JdPVVlKGVbcl0pKTtyZXR1cm4gYX1mdW5jdGlvbiBQZShlLGEpe2Zvcih2YXIgcj0iIjtyLmxlbmd0aDxhOylyKz1lO3JldHVybiByfWZ1bmN0aW9uIE9yKGUpe3ZhciBhPU51bWJlcihlKTtpZighaXNOYU4oYSkpcmV0dXJuIGlzRmluaXRlKGEpP2E6TmFOO2lmKCEvXGQvLnRlc3QoZSkpcmV0dXJuIGE7dmFyIHI9MSx0PWUucmVwbGFjZSgvKFtcZF0pLChbXGRdKS9nLCIkMSQyIikucmVwbGFjZSgvWyRdL2csIiIpLnJlcGxhY2UoL1slXS9nLGZ1bmN0aW9uKCl7cmV0dXJuIHIqPTEwMCwiIn0pO3JldHVybiFpc05hTihhPU51bWJlcih0KSl8fCh0PXQucmVwbGFjZSgvWyhdKFteKCldKilbKV0vLGZ1bmN0aW9uKG4saSl7cmV0dXJuIHI9LXIsaX0pLCFpc05hTihhPU51bWJlcih0KSkpP2EvcjphfXZhciBCYz0vXigwP1xkfDFbMC0yXSkoPzp8OihbMC01XT9cZCkoPzp8KFwuXGQrKSg/Onw6KFswLTVdP1xkKSl8OihbMC01XT9cZCkofFwuXGQrKSkpXHMrKFthcF0pbT8kLyxVYz0vXihbMDFdP1xkfDJbMC0zXSkoPzp8OihbMC01XT9cZCkoPzp8KFwuXGQrKSg/Onw6KFswLTVdP1xkKSl8OihbMC01XT9cZCkofFwuXGQrKSkpJC8sSGM9L14oXGQrKS0oXGQrKS0oXGQrKVtUIF0oXGQrKTooXGQrKSg6XGQrKShcLlxkKyk/W1pdPyQvLFdjPW5ldyBEYXRlKCI2LzkvNjkgMDA6MDAgVVRDIikudmFsdWVPZigpPT0tMTc3OTg0ZTU7ZnVuY3Rpb24gVmMoZSl7cmV0dXJuIGVbMl0/ZVszXT9lWzRdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0lMTIrKGVbN109PSJwIj8xMjowKSwrZVsyXSwrZVs0XSxwYXJzZUZsb2F0KGVbM10pKjFlMykpOm5ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsZVs3XT09InAiPzEyOjAsK2VbMV0sK2VbMl0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTplWzVdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0lMTIrKGVbN109PSJwIj8xMjowKSwrZVsyXSwrZVs1XSxlWzZdP3BhcnNlRmxvYXQoZVs2XSkqMWUzOjApKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLCtlWzFdJTEyKyhlWzddPT0icCI/MTI6MCksK2VbMl0sMCwwKSk6bmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMSwrZVsxXSUxMisoZVs3XT09InAiPzEyOjApLDAsMCwwKSl9ZnVuY3Rpb24gR2MoZSl7cmV0dXJuIGVbMl0/ZVszXT9lWzRdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0sK2VbMl0sK2VbNF0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLDAsK2VbMV0sK2VbMl0scGFyc2VGbG9hdChlWzNdKSoxZTMpKTplWzVdP25ldyBEYXRlKERhdGUuVVRDKDE4OTksMTEsMzEsK2VbMV0sK2VbMl0sK2VbNV0sZVs2XT9wYXJzZUZsb2F0KGVbNl0pKjFlMzowKSk6bmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwxMSwzMSwrZVsxXSwrZVsyXSwwLDApKTpuZXcgRGF0ZShEYXRlLlVUQygxODk5LDExLDMxLCtlWzFdLDAsMCwwKSl9dmFyIFhjPVsiamFudWFyeSIsImZlYnJ1YXJ5IiwibWFyY2giLCJhcHJpbCIsIm1heSIsImp1bmUiLCJqdWx5IiwiYXVndXN0Iiwic2VwdGVtYmVyIiwib2N0b2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXTtmdW5jdGlvbiBTdChlKXtpZihIYy50ZXN0KGUpKXJldHVybiBlLmluZGV4T2YoIloiKT09LTE/bzAobmV3IERhdGUoZSkpOm5ldyBEYXRlKGUpO3ZhciBhPWUudG9Mb3dlckNhc2UoKSxyPWEucmVwbGFjZSgvXHMrL2csIiAiKS50cmltKCksdD1yLm1hdGNoKEJjKTtpZih0KXJldHVybiBWYyh0KTtpZih0PXIubWF0Y2goVWMpLHQpcmV0dXJuIEdjKHQpO2lmKHQ9ci5tYXRjaCh4aSksdClyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK3RbMV0sK3RbMl0tMSwrdFszXSwrdFs0XSwrdFs1XSx0WzZdJiZwYXJzZUludCh0WzZdLnNsaWNlKDEpLDEwKXx8MCx0WzddJiZwYXJzZUludCgodFs3XSsiMDAwMCIpLnNsaWNlKDEsNCksMTApfHwwKSk7dmFyIG49bmV3IERhdGUoV2MmJmUuaW5kZXhPZigiVVRDIik9PS0xP2UrIiBVVEMiOmUpLGk9bmV3IERhdGUoTmFOKSxmPW4uZ2V0WWVhcigpO24uZ2V0TW9udGgoKTt2YXIgcz1uLmdldERhdGUoKTtpZihpc05hTihzKSlyZXR1cm4gaTtpZihhLm1hdGNoKC9qYW58ZmVifG1hcnxhcHJ8bWF5fGp1bnxqdWx8YXVnfHNlcHxvY3R8bm92fGRlYy8pKXtpZihhPWEucmVwbGFjZSgvW15hLXpdL2csIiIpLnJlcGxhY2UoLyhbXmEtel18XilbYXBdbT8oW15hLXpdfCQpLywiIiksYS5sZW5ndGg+MyYmWGMuaW5kZXhPZihhKT09LTEpcmV0dXJuIGl9ZWxzZSBpZihhLnJlcGxhY2UoL1thcF1tPy8sIiIpLm1hdGNoKC9bYS16XS8pKXJldHVybiBpO3JldHVybiBmPDB8fGY+ODA5OXx8ZS5tYXRjaCgvW14tMC05OixcL1xcXCBdLyk/aTpufXZhciB6Yz1mdW5jdGlvbigpe3ZhciBlPSJhYmFjYWJhIi5zcGxpdCgvKDo/YikvaSkubGVuZ3RoPT01O3JldHVybiBmdW5jdGlvbihyLHQsbil7aWYoZXx8dHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiByLnNwbGl0KHQpO2Zvcih2YXIgaT1yLnNwbGl0KHQpLGY9W2lbMF1dLHM9MTtzPGkubGVuZ3RoOysrcylmLnB1c2gobiksZi5wdXNoKGlbc10pO3JldHVybiBmfX0oKTtmdW5jdGlvbiBVYShlKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRVVENGdWxsWWVhcigpLGUuZ2V0VVRDTW9udGgoKSxlLmdldFVUQ0RhdGUoKSxlLmdldFVUQ0hvdXJzKCksZS5nZXRVVENNaW51dGVzKCksZS5nZXRVVENTZWNvbmRzKCksZS5nZXRVVENNaWxsaXNlY29uZHMoKSl9ZnVuY3Rpb24gbzAoZSl7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCksZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpLGUuZ2V0TWlsbGlzZWNvbmRzKCkpKX1mdW5jdGlvbiBaMChlKXt2YXIgYT1lLnNsaWNlKDAsMTAyNCkscj1hLmluZGV4T2YoIjwhRE9DVFlQRSIpO2lmKHI9PS0xKXJldHVybiBlO3ZhciB0PWUubWF0Y2goLzxbXHddLyk7cmV0dXJuIHQ/ZS5zbGljZSgwLHIpK2Uuc2xpY2UodC5pbmRleCk6ZX1mdW5jdGlvbiB1YShlLGEscil7Zm9yKHZhciB0PVtdLG49ZS5pbmRleE9mKGEpO24+LTE7KXt2YXIgaT1lLmluZGV4T2YocixuK2EubGVuZ3RoKTtpZihpPT0tMSlicmVhazt0LnB1c2goZS5zbGljZShuLGkrci5sZW5ndGgpKSxuPWUuaW5kZXhPZihhLGkrci5sZW5ndGgpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1mdW5jdGlvbiBDdChlLGEscil7dmFyIHQ9W10sbj0wLGk9ZS5pbmRleE9mKGEpO2lmKGk9PS0xKXJldHVybiBlO2Zvcig7aT4tMTspe3QucHVzaChlLnNsaWNlKG4saSkpO3ZhciBmPWUuaW5kZXhPZihyLGkrYS5sZW5ndGgpO2lmKGY9PS0xKWJyZWFrOyhpPWUuaW5kZXhPZihhLG49ZityLmxlbmd0aCkpPT0tMSYmdC5wdXNoKGUuc2xpY2UobikpfXJldHVybiB0LmpvaW4oIiIpfXZhciAkYz17IiAiOjEsIgkiOjEsIlxyIjoxLCJcbiI6MSwiPiI6MX07ZnVuY3Rpb24gSGEoZSxhKXtmb3IodmFyIHI9ZS5pbmRleE9mKCI8IithKSx0PWEubGVuZ3RoKzEsbj1lLmxlbmd0aDtyPj0wJiZyPD1uLXQmJiEkY1tlLmNoYXJBdChyK3QpXTspcj1lLmluZGV4T2YoIjwiK2EscisxKTtpZihyPT09LTEpcmV0dXJuIG51bGw7dmFyIGk9ZS5pbmRleE9mKCI+IixyK2EubGVuZ3RoKTtpZihpPT09LTEpcmV0dXJuIG51bGw7dmFyIGY9IjwvIithKyI+IixzPWUuaW5kZXhPZihmLGkpO3JldHVybiBzPT0tMT9udWxsOltlLnNsaWNlKHIscytmLmxlbmd0aCksZS5zbGljZShpKzEscyldfXZhciBMZT1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPWVbdF07bnx8KGVbdF09bj1bbmV3IFJlZ0V4cCgiPCg/Olxcdys6KT8iK3QrIlxcYltePD5dKj4iLCJnIiksbmV3IFJlZ0V4cCgiPC8oPzpcXHcrOik/Iit0KyI+IiwiZyIpXSksblswXS5sYXN0SW5kZXg9blsxXS5sYXN0SW5kZXg9MDt2YXIgaT1uWzBdLmV4ZWMocik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIGY9aS5pbmRleCxzPW5bMF0ubGFzdEluZGV4O2lmKG5bMV0ubGFzdEluZGV4PW5bMF0ubGFzdEluZGV4LGk9blsxXS5leGVjKHIpLCFpKXJldHVybiBudWxsO3ZhciBjPWkuaW5kZXgsbz1uWzFdLmxhc3RJbmRleDtyZXR1cm5bci5zbGljZShmLG8pLHIuc2xpY2UocyxjKV19fSgpLGRpPWZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGZ1bmN0aW9uKHIsdCl7dmFyIG49W10saT1lW3RdO2l8fChlW3RdPWk9W25ldyBSZWdFeHAoIjwoPzpcXHcrOik/Iit0KyJcXGJbXjw+XSo+IiwiZyIpLG5ldyBSZWdFeHAoIjwvKD86XFx3KzopPyIrdCsiPiIsImciKV0pLGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4PTA7Zm9yKHZhciBmO2Y9aVswXS5leGVjKHIpOyl7dmFyIHM9Zi5pbmRleDtpZihpWzFdLmxhc3RJbmRleD1pWzBdLmxhc3RJbmRleCxmPWlbMV0uZXhlYyhyKSwhZilyZXR1cm4gbnVsbDt2YXIgYz1pWzFdLmxhc3RJbmRleDtuLnB1c2goci5zbGljZShzLGMpKSxpWzBdLmxhc3RJbmRleD1pWzFdLmxhc3RJbmRleH1yZXR1cm4gbi5sZW5ndGg9PTA/bnVsbDpufX0oKSxLYz1mdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPVtdLGk9ZVt0XTtpfHwoZVt0XT1pPVtuZXcgUmVnRXhwKCI8KD86XFx3KzopPyIrdCsiXFxiW148Pl0qPiIsImciKSxuZXcgUmVnRXhwKCI8Lyg/Olxcdys6KT8iK3QrIj4iLCJnIildKSxpWzBdLmxhc3RJbmRleD1pWzFdLmxhc3RJbmRleD0wO2Zvcih2YXIgZixzPTAsYz0wO2Y9aVswXS5leGVjKHIpOyl7aWYocz1mLmluZGV4LG4ucHVzaChyLnNsaWNlKGMscykpLGM9cyxpWzFdLmxhc3RJbmRleD1pWzBdLmxhc3RJbmRleCxmPWlbMV0uZXhlYyhyKSwhZilyZXR1cm4gbnVsbDtjPWlbMV0ubGFzdEluZGV4LGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4fXJldHVybiBuLnB1c2goci5zbGljZShjKSksbi5sZW5ndGg9PTA/IiI6bi5qb2luKCIiKX19KCksamM9ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24ocix0KXt2YXIgbj1bXSxpPWVbdF07aXx8KGVbdF09aT1bbmV3IFJlZ0V4cCgiPCIrdCsiXFxiW148Pl0qPiIsImlnIiksbmV3IFJlZ0V4cCgiPC8iK3QrIj4iLCJpZyIpXSksaVswXS5sYXN0SW5kZXg9aVsxXS5sYXN0SW5kZXg9MDtmb3IodmFyIGY7Zj1pWzBdLmV4ZWMocik7KXt2YXIgcz1mLmluZGV4O2lmKGlbMV0ubGFzdEluZGV4PWlbMF0ubGFzdEluZGV4LGY9aVsxXS5leGVjKHIpLCFmKXJldHVybiBudWxsO3ZhciBjPWlbMV0ubGFzdEluZGV4O24ucHVzaChyLnNsaWNlKHMsYykpLGlbMF0ubGFzdEluZGV4PWlbMV0ubGFzdEluZGV4fXJldHVybiBuLmxlbmd0aD09MD9udWxsOm59fSgpO2Z1bmN0aW9uIHZpKGUpe3JldHVybiBlP2UuY29udGVudCYmZS50eXBlP0JhKGUuY29udGVudCwhMCk6ZS5kYXRhP1R0KGUuZGF0YSk6ZS5hc05vZGVCdWZmZXImJk5lP1R0KGUuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoImJpbmFyeSIpKTplLmFzQmluYXJ5P1R0KGUuYXNCaW5hcnkoKSk6ZS5fZGF0YSYmZS5fZGF0YS5nZXRDb250ZW50P1R0KEJhKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuX2RhdGEuZ2V0Q29udGVudCgpLDApKSk6bnVsbDpudWxsfWZ1bmN0aW9uIHBpKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUuZGF0YSlyZXR1cm4gR24oZS5kYXRhKTtpZihlLmFzTm9kZUJ1ZmZlciYmTmUpcmV0dXJuIGUuYXNOb2RlQnVmZmVyKCk7aWYoZS5fZGF0YSYmZS5fZGF0YS5nZXRDb250ZW50KXt2YXIgYT1lLl9kYXRhLmdldENvbnRlbnQoKTtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciP0duKGEpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpfXJldHVybiBlLmNvbnRlbnQmJmUudHlwZT9lLmNvbnRlbnQ6bnVsbH1mdW5jdGlvbiBZYyhlKXtyZXR1cm4gZSYmZS5uYW1lLnNsaWNlKC00KT09PSIuYmluIj9waShlKTp2aShlKX1mdW5jdGlvbiBHcihlLGEpe2Zvcih2YXIgcj1lLkZ1bGxQYXRoc3x8cHIoZS5maWxlcyksdD1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW1wvXS9nLCJcXCIpLG49dC5yZXBsYWNlKC9cXC9nLCIvIiksaT0wO2k8ci5sZW5ndGg7KytpKXt2YXIgZj1yW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpLnRvTG93ZXJDYXNlKCk7aWYodD09Znx8bj09ZilyZXR1cm4gZS5maWxlcz9lLmZpbGVzW3JbaV1dOmUuRmlsZUluZGV4W2ldfXJldHVybiBudWxsfWZ1bmN0aW9uIHEwKGUsYSl7dmFyIHI9R3IoZSxhKTtpZihyPT1udWxsKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgZmlsZSAiK2ErIiBpbiB6aXAiKTtyZXR1cm4gcn1mdW5jdGlvbiB0cihlLGEscil7aWYoIXIpcmV0dXJuIFljKHEwKGUsYSkpO2lmKCFhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gdHIoZSxhKX1jYXRjaHtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbHIoZSxhLHIpe2lmKCFyKXJldHVybiB2aShxMChlLGEpKTtpZighYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGxyKGUsYSl9Y2F0Y2h7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFEwKGUsYSxyKXtpZighcilyZXR1cm4gcGkocTAoZSxhKSk7aWYoIWEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBRMChlLGEpfWNhdGNoe3JldHVybiBudWxsfX1mdW5jdGlvbiBnaShlKXtmb3IodmFyIGE9ZS5GdWxsUGF0aHN8fHByKGUuZmlsZXMpLHI9W10sdD0wO3Q8YS5sZW5ndGg7Kyt0KWFbdF0uc2xpY2UoLTEpIT0iLyImJnIucHVzaChhW3RdLnJlcGxhY2UoL15Sb290IEVudHJ5W1wvXS8sIiIpKTtyZXR1cm4gci5zb3J0KCl9ZnVuY3Rpb24gSmMoZSxhLHIpe2lmKGUuRnVsbFBhdGhzKXtpZihBcnJheS5pc0FycmF5KHIpJiZ0eXBlb2YgclswXT09InN0cmluZyImJihyPXIuam9pbigiIikpLHR5cGVvZiByPT0ic3RyaW5nIil7dmFyIHQ7cmV0dXJuIE5lP3Q9RWEocik6dD1uYyhyKSxNZS51dGlscy5jZmJfYWRkKGUsYSx0KX1NZS51dGlscy5jZmJfYWRkKGUsYSxyKX1lbHNlIGUuZmlsZShhLHIpfWZ1bmN0aW9uIG1pKGUsYSl7c3dpdGNoKGEudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBNZS5yZWFkKGUse3R5cGU6ImJhc2U2NCJ9KTtjYXNlImJpbmFyeSI6cmV0dXJuIE1lLnJlYWQoZSx7dHlwZToiYmluYXJ5In0pO2Nhc2UiYnVmZmVyIjpjYXNlImFycmF5IjpyZXR1cm4gTWUucmVhZChlLHt0eXBlOiJidWZmZXIifSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9ZnVuY3Rpb24gaGEoZSxhKXtpZihlLmNoYXJBdCgwKT09Ii8iKXJldHVybiBlLnNsaWNlKDEpO3ZhciByPWEuc3BsaXQoIi8iKTthLnNsaWNlKC0xKSE9Ii8iJiZyLnBvcCgpO2Zvcih2YXIgdD1lLnNwbGl0KCIvIik7dC5sZW5ndGghPT0wOyl7dmFyIG49dC5zaGlmdCgpO249PT0iLi4iP3IucG9wKCk6biE9PSIuIiYmci5wdXNoKG4pfXJldHVybiByLmpvaW4oIi8iKX12YXIgX2k9YDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz5ccgpgLGtpPS9ccyhbXiJccz8+XC9dKylccyo9XHMqKCg/OiIpKFteIl0qKSg/OiIpfCg/OicpKFteJ10qKSg/OicpfChbXiciPlxzXSspKS9nLHdpPS88W1wvXD9dP1thLXpBLVowLTk6Xy1dKyg/OlxzK1teIlxzPzw+XC9dK1xzKj1ccyooPzoiW14iXSoifCdbXiddKid8W14nIjw+XHM9XSspKSpccypbXC9cP10/Pi9tZyxaYz0vPFtePD5dKj4vZyxucj1faS5tYXRjaCh3aSk/d2k6WmMscWM9Lzxcdyo6LyxRYz0vPChcLz8pXHcrOi87ZnVuY3Rpb24gb2UoZSxhLHIpe2Zvcih2YXIgdD17fSxuPTAsaT0wO24hPT1lLmxlbmd0aCYmISgoaT1lLmNoYXJDb2RlQXQobikpPT09MzJ8fGk9PT0xMHx8aT09PTEzKTsrK24pO2lmKGF8fCh0WzBdPWUuc2xpY2UoMCxuKSksbj09PWUubGVuZ3RoKXJldHVybiB0O3ZhciBmPWUubWF0Y2goa2kpLHM9MCxjPSIiLG89MCxsPSIiLHU9IiIseD0xO2lmKGYpZm9yKG89MDtvIT1mLmxlbmd0aDsrK28pe2Zvcih1PWZbb10uc2xpY2UoMSksaT0wO2khPXUubGVuZ3RoJiZ1LmNoYXJDb2RlQXQoaSkhPT02MTsrK2kpO2ZvcihsPXUuc2xpY2UoMCxpKS50cmltKCk7dS5jaGFyQ29kZUF0KGkrMSk9PTMyOykrK2k7Zm9yKHg9KG49dS5jaGFyQ29kZUF0KGkrMSkpPT0zNHx8bj09Mzk/MTowLGM9dS5zbGljZShpKzEreCx1Lmxlbmd0aC14KSxzPTA7cyE9bC5sZW5ndGgmJmwuY2hhckNvZGVBdChzKSE9PTU4Oysrcyk7aWYocz09PWwubGVuZ3RoKWwuaW5kZXhPZigiXyIpPjAmJihsPWwuc2xpY2UoMCxsLmluZGV4T2YoIl8iKSkpLHRbbF09YyxyfHwodFtsLnRvTG93ZXJDYXNlKCldPWMpO2Vsc2V7dmFyIGg9KHM9PT01JiZsLnNsaWNlKDAsNSk9PT0ieG1sbnMiPyJ4bWxucyI6IiIpK2wuc2xpY2UocysxKTtpZih0W2hdJiZsLnNsaWNlKHMtMyxzKT09ImV4dCIpY29udGludWU7dFtoXT1jLHJ8fCh0W2gudG9Mb3dlckNhc2UoKV09Yyl9fXJldHVybiB0fWZ1bmN0aW9uIGVvKGUsYSxyKXtmb3IodmFyIHQ9e30sbj0wLGk9MDtuIT09ZS5sZW5ndGgmJiEoKGk9ZS5jaGFyQ29kZUF0KG4pKT09PTMyfHxpPT09MTB8fGk9PT0xMyk7KytuKTtpZihhfHwodFswXT1lLnNsaWNlKDAsbikpLG49PT1lLmxlbmd0aClyZXR1cm4gdDt2YXIgZj1lLm1hdGNoKGtpKSxzPSIiLGM9MCxvPSIiLGw9IiIsdT0xO2lmKGYpZm9yKGM9MDtjIT1mLmxlbmd0aDsrK2Mpe2ZvcihsPWZbY10uc2xpY2UoMSksaT0wO2khPWwubGVuZ3RoJiZsLmNoYXJDb2RlQXQoaSkhPT02MTsrK2kpO2ZvcihvPWwuc2xpY2UoMCxpKS50cmltKCk7bC5jaGFyQ29kZUF0KGkrMSk9PTMyOykrK2k7dT0obj1sLmNoYXJDb2RlQXQoaSsxKSk9PTM0fHxuPT0zOT8xOjAscz1sLnNsaWNlKGkrMSt1LGwubGVuZ3RoLXUpLG8uaW5kZXhPZigiXyIpPjAmJihvPW8uc2xpY2UoMCxvLmluZGV4T2YoIl8iKSkpLHRbb109cyxyfHwodFtvLnRvTG93ZXJDYXNlKCldPXMpfXJldHVybiB0fWZ1bmN0aW9uIEFyKGUpe3JldHVybiBlLnJlcGxhY2UoUWMsIjwkMSIpfXZhciBGaT17IiZxdW90OyI6JyInLCImYXBvczsiOiInIiwiJmd0OyI6Ij4iLCImbHQ7IjoiPCIsIiZhbXA7IjoiJiJ9LFRpPUowKEZpKSxDZT1mdW5jdGlvbigpe3ZhciBlPS8mKD86cXVvdHxhcG9zfGd0fGx0fGFtcHwjeD8oW1xkYS1mQS1GXSspKTsvaWcsYT0vX3goW1xkYS1mQS1GXXs0fSlfL2c7ZnVuY3Rpb24gcih0KXt2YXIgbj10KyIiLGk9bi5pbmRleE9mKCI8IVtDREFUQVsiKTtpZihpPT0tMSlyZXR1cm4gbi5yZXBsYWNlKGUsZnVuY3Rpb24ocyxjKXtyZXR1cm4gRmlbc118fFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYyxzLmluZGV4T2YoIngiKT4tMT8xNjoxMCkpfHxzfSkucmVwbGFjZShhLGZ1bmN0aW9uKHMsYyl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYywxNikpfSk7dmFyIGY9bi5pbmRleE9mKCJdXT4iKTtyZXR1cm4gcihuLnNsaWNlKDAsaSkpK24uc2xpY2UoaSs5LGYpK3Iobi5zbGljZShmKzMpKX1yZXR1cm4gZnVuY3Rpb24obixpKXt2YXIgZj1yKG4pO3JldHVybiBpP2YucmVwbGFjZSgvXHJcbi9nLGAKYCk6Zn19KCksRWk9L1smPD4nIl0vZyxybz0vW1x1MDAwMC1cdTAwMDhcdTAwMGItXHUwMDFmXHVGRkZFLVx1RkZGRl0vZztmdW5jdGlvbiBhbyhlKXt2YXIgYT1lKyIiO3JldHVybiBhLnJlcGxhY2UoRWksZnVuY3Rpb24ocil7cmV0dXJuIFRpW3JdfSkucmVwbGFjZShybyxmdW5jdGlvbihyKXtyZXR1cm4iX3giKygiMDAwIityLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIl8ifSl9dmFyIHRvPS9bXHUwMDAwLVx1MDAxZl0vZztmdW5jdGlvbiB4YShlKXt2YXIgYT1lKyIiO3JldHVybiBhLnJlcGxhY2UoRWksZnVuY3Rpb24ocil7cmV0dXJuIFRpW3JdfSkucmVwbGFjZSgvXG4vZywiPGJyLz4iKS5yZXBsYWNlKHRvLGZ1bmN0aW9uKHIpe3JldHVybiImI3giKygiMDAwIityLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCkrIjsifSl9dmFyIEFpPWZ1bmN0aW9uKCl7dmFyIGU9LyYjKFxkKyk7L2c7ZnVuY3Rpb24gYShyLHQpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KHQsMTApKX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZShlLGEpfX0oKTtmdW5jdGlvbiBGZShlKXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UhMDpjYXNlIjEiOmNhc2UidHJ1ZSI6cmV0dXJuITA7Y2FzZSAwOmNhc2UhMTpjYXNlIjAiOmNhc2UiZmFsc2UiOnJldHVybiExfXJldHVybiExfWZ1bmN0aW9uIGVuKGUpe2Zvcih2YXIgYT0iIixyPTAsdD0wLG49MCxpPTAsZj0wLHM9MDtyPGUubGVuZ3RoOyl7aWYodD1lLmNoYXJDb2RlQXQocisrKSx0PDEyOCl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtjb250aW51ZX1pZihuPWUuY2hhckNvZGVBdChyKyspLHQ+MTkxJiZ0PDIyNCl7Zj0odCYzMSk8PDYsZnw9biY2MyxhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGYpO2NvbnRpbnVlfWlmKGk9ZS5jaGFyQ29kZUF0KHIrKyksdDwyNDApe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoKHQmMTUpPDwxMnwobiY2Myk8PDZ8aSY2Myk7Y29udGludWV9Zj1lLmNoYXJDb2RlQXQocisrKSxzPSgodCY3KTw8MTh8KG4mNjMpPDwxMnwoaSY2Myk8PDZ8ZiY2MyktNjU1MzYsYSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5Nisocz4+PjEwJjEwMjMpKSxhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU2MzIwKyhzJjEwMjMpKX1yZXR1cm4gYX1mdW5jdGlvbiB5aShlKXt2YXIgYT1BYSgyKmUubGVuZ3RoKSxyLHQsbj0xLGk9MCxmPTAscztmb3IodD0wO3Q8ZS5sZW5ndGg7dCs9biluPTEsKHM9ZS5jaGFyQ29kZUF0KHQpKTwxMjg/cj1zOnM8MjI0PyhyPShzJjMxKSo2NCsoZS5jaGFyQ29kZUF0KHQrMSkmNjMpLG49Mik6czwyNDA/KHI9KHMmMTUpKjQwOTYrKGUuY2hhckNvZGVBdCh0KzEpJjYzKSo2NCsoZS5jaGFyQ29kZUF0KHQrMikmNjMpLG49Myk6KG49NCxyPShzJjcpKjI2MjE0NCsoZS5jaGFyQ29kZUF0KHQrMSkmNjMpKjQwOTYrKGUuY2hhckNvZGVBdCh0KzIpJjYzKSo2NCsoZS5jaGFyQ29kZUF0KHQrMykmNjMpLHItPTY1NTM2LGY9NTUyOTYrKHI+Pj4xMCYxMDIzKSxyPTU2MzIwKyhyJjEwMjMpKSxmIT09MCYmKGFbaSsrXT1mJjI1NSxhW2krK109Zj4+PjgsZj0wKSxhW2krK109ciUyNTYsYVtpKytdPXI+Pj44O3JldHVybiBhLnNsaWNlKDAsaSkudG9TdHJpbmcoInVjczIiKX1mdW5jdGlvbiBTaShlKXtyZXR1cm4gRWEoZSwiYmluYXJ5IikudG9TdHJpbmcoInV0ZjgiKX12YXIgbDA9ImZvbyBiYXIgYmF6w6LCmMKDw7DCn8KNwqMiLFZlPWZ1bmN0aW9uKCl7aWYoTmUpe2lmKFNpKGwwKT09ZW4obDApKXJldHVybiBTaTtpZih5aShsMCk9PWVuKGwwKSlyZXR1cm4geWl9cmV0dXJuIGVufSgpLGJ0PU5lP2Z1bmN0aW9uKGUpe3JldHVybiBFYShlLCJ1dGY4IikudG9TdHJpbmcoImJpbmFyeSIpfTpmdW5jdGlvbihlKXtmb3IodmFyIGE9W10scj0wLHQ9MCxuPTA7cjxlLmxlbmd0aDspc3dpdGNoKHQ9ZS5jaGFyQ29kZUF0KHIrKyksITApe2Nhc2UgdDwxMjg6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2JyZWFrO2Nhc2UgdDwyMDQ4OmEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDE5MisodD4+NikpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKHQmNjMpKSk7YnJlYWs7Y2FzZSh0Pj01NTI5NiYmdDw1NzM0NCk6dC09NTUyOTYsbj1lLmNoYXJDb2RlQXQocisrKS01NjMyMCsodDw8MTApLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCsobj4+MTgmNykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxNDQrKG4+PjEyJjYzKSkpLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsobj4+NiY2MykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKG4mNjMpKSk7YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQrKHQ+PjEyKSkpLGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCsodD4+NiY2MykpKSxhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgrKHQmNjMpKSl9cmV0dXJuIGEuam9pbigiIil9LENpPWZ1bmN0aW9uKCl7dmFyIGU9W1sibmJzcCIsIiAiXSxbIm1pZGRvdCIsIsK3Il0sWyJxdW90IiwnIiddLFsiYXBvcyIsIiciXSxbImd0IiwiPiJdLFsibHQiLCI8Il0sWyJhbXAiLCImIl1dLm1hcChmdW5jdGlvbihhKXtyZXR1cm5bbmV3IFJlZ0V4cCgiJiIrYVswXSsiOyIsImlnIiksYVsxXV19KTtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciB0PXIucmVwbGFjZSgvXltcdFxuXHIgXSsvLCIiKS5yZXBsYWNlKC8oXnxbXlx0XG5cciBdKVtcdFxuXHIgXSskLywiJDEiKS5yZXBsYWNlKC8+XHMrL2csIj4iKS5yZXBsYWNlKC9cYlxzKzwvZywiPCIpLnJlcGxhY2UoL1tcdFxuXHIgXSsvZywiICIpLnJlcGxhY2UoLzxccypbYkJdW3JSXVxzKlwvPz4vZyxgCmApLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpLG49MDtuPGUubGVuZ3RoOysrbil0PXQucmVwbGFjZShlW25dWzBdLGVbbl1bMV0pO3JldHVybiB0fX0oKSxubz0vPFwvPyg/OnZ0Oik/dmFyaWFudD4vZyxpbz0vPCg/OnZ0OikoW148Iic+XSopPihbXHNcU10qKTwvO2Z1bmN0aW9uIGJpKGUsYSl7dmFyIHI9b2UoZSksdD1kaShlLHIuYmFzZVR5cGUpfHxbXSxuPVtdO2lmKHQubGVuZ3RoIT1yLnNpemUpe2lmKGEuV1RGKXRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCB2ZWN0b3IgbGVuZ3RoICIrdC5sZW5ndGgrIiAhPSAiK3Iuc2l6ZSk7cmV0dXJuIG59cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgZj1pLnJlcGxhY2Uobm8sIiIpLm1hdGNoKGlvKTtmJiZuLnB1c2goe3Y6VmUoZlsyXSksdDpmWzFdfSl9KSxufXZhciBzbz0vKF5cc3xccyR8XG4pLztmdW5jdGlvbiBmbyhlKXtyZXR1cm4gcHIoZSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiIgIithKyc9IicrZVthXSsnIid9KS5qb2luKCIiKX1mdW5jdGlvbiB1MChlLGEscil7cmV0dXJuIjwiK2UrKHIhPW51bGw/Zm8ocik6IiIpKyhhIT1udWxsPyhhLm1hdGNoKHNvKT8nIHhtbDpzcGFjZT0icHJlc2VydmUiJzoiIikrIj4iK2ErIjwvIitlOiIvIikrIj4ifWZ1bmN0aW9uIGgwKGUpe2lmKE5lJiZCdWZmZXIuaXNCdWZmZXIoZSkpcmV0dXJuIGUudG9TdHJpbmcoInV0ZjgiKTtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gVmUoZmEoJDAoZSkpKTt0aHJvdyBuZXcgRXJyb3IoIkJhZCBpbnB1dCBmb3JtYXQ6IGV4cGVjdGVkIEJ1ZmZlciBvciBzdHJpbmciKX12YXIgaXI9LzwoW1wvXT8pKFteXHM/PjwhXC86Il0qOnwpKFteXHM/PD46XC8iXSspKD86XHMrW148Pj0/Iidcc10rPSJbXiJdKj8iKSpccypbXC9dPz4vbWcsY289e0NPUkVfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixDVVNUX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9jdXN0b20tcHJvcGVydGllcyIsRVhUX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9leHRlbmRlZC1wcm9wZXJ0aWVzIixDVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIixSRUxTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiLFRDTU5UOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTgvdGhyZWFkZWRjb21tZW50cyIsZGM6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIixkY3Rlcm1zOiJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIixkY21pdHlwZToiaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlLyIsbXg6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL21hYy9leGNlbC8yMDA4L21haW4iLHI6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiLHNqczoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9zaGVldGpzL2NvcmUtcHJvcGVydGllcyIsdnQ6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzIix4c2k6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIix4c2Q6Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIn0sb289WyJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9zcHJlYWRzaGVldG1sL21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2L21haW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzIiXTtmdW5jdGlvbiBsbyhlLGEpe2Zvcih2YXIgcj0xLTIqKGVbYSs3XT4+PjcpLHQ9KChlW2ErN10mMTI3KTw8NCkrKGVbYSs2XT4+PjQmMTUpLG49ZVthKzZdJjE1LGk9NTtpPj0wOy0taSluPW4qMjU2K2VbYStpXTtyZXR1cm4gdD09MjA0Nz9uPT0wP3IqKDEvMCk6TmFOOih0PT0wP3Q9LTEwMjI6KHQtPTEwMjMsbis9TWF0aC5wb3coMiw1MikpLHIqTWF0aC5wb3coMix0LTUyKSpuKX1mdW5jdGlvbiB1byhlLGEscil7dmFyIHQ9KGE8MHx8MS9hPT0tMS8wPzE6MCk8PDcsbj0wLGk9MCxmPXQ/LWE6YTtpc0Zpbml0ZShmKT9mPT0wP249aT0wOihuPU1hdGguZmxvb3IoTWF0aC5sb2coZikvTWF0aC5MTjIpLGk9ZipNYXRoLnBvdygyLDUyLW4pLG48PS0xMDIzJiYoIWlzRmluaXRlKGkpfHxpPE1hdGgucG93KDIsNTIpKT9uPS0xMDIyOihpLT1NYXRoLnBvdygyLDUyKSxuKz0xMDIzKSk6KG49MjA0NyxpPWlzTmFOKGEpPzI2OTg1OjApO2Zvcih2YXIgcz0wO3M8PTU7KytzLGkvPTI1NillW3Irc109aSYyNTU7ZVtyKzZdPShuJjE1KTw8NHxpJjE1LGVbcis3XT1uPj40fHR9dmFyIElpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgYT1bXSxyPTEwMjQwLHQ9MDt0PGVbMF0ubGVuZ3RoOysrdClpZihlWzBdW3RdKWZvcih2YXIgbj0wLGk9ZVswXVt0XS5sZW5ndGg7bjxpO24rPXIpYS5wdXNoLmFwcGx5KGEsZVswXVt0XS5zbGljZShuLG4rcikpO3JldHVybiBhfSxEaT1OZT9mdW5jdGlvbihlKXtyZXR1cm4gZVswXS5sZW5ndGg+MCYmQnVmZmVyLmlzQnVmZmVyKGVbMF1bMF0pP0J1ZmZlci5jb25jYXQoZVswXS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hOkVhKGEpfSkpOklpKGUpfTpJaSxSaT1mdW5jdGlvbihlLGEscil7Zm9yKHZhciB0PVtdLG49YTtuPHI7bis9Mil0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShkYShlLG4pKSk7cmV0dXJuIHQuam9pbigiIikucmVwbGFjZShTciwiIil9LHJuPU5lP2Z1bmN0aW9uKGUsYSxyKXtyZXR1cm4hQnVmZmVyLmlzQnVmZmVyKGUpfHwhRXQ/UmkoZSxhLHIpOmUudG9TdHJpbmcoInV0ZjE2bGUiLGEscikucmVwbGFjZShTciwiIil9OlJpLE9pPWZ1bmN0aW9uKGUsYSxyKXtmb3IodmFyIHQ9W10sbj1hO248YStyOysrbil0LnB1c2goKCIwIitlW25dLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKTtyZXR1cm4gdC5qb2luKCIiKX0sTmk9TmU/ZnVuY3Rpb24oZSxhLHIpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoZSk/ZS50b1N0cmluZygiaGV4IixhLGErcik6T2koZSxhLHIpfTpPaSxNaT1mdW5jdGlvbihlLGEscil7Zm9yKHZhciB0PVtdLG49YTtuPHI7bisrKXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGZ0KGUsbikpKTtyZXR1cm4gdC5qb2luKCIiKX0sSXQ9TmU/ZnVuY3Rpb24oYSxyLHQpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoYSk/YS50b1N0cmluZygidXRmOCIscix0KTpNaShhLHIsdCl9Ok1pLFBpPWZ1bmN0aW9uKGUsYSl7dmFyIHI9TnIoZSxhKTtyZXR1cm4gcj4wP0l0KGUsYSs0LGErNCtyLTEpOiIifSxMaT1QaSxCaT1mdW5jdGlvbihlLGEpe3ZhciByPU5yKGUsYSk7cmV0dXJuIHI+MD9JdChlLGErNCxhKzQrci0xKToiIn0sVWk9QmksSGk9ZnVuY3Rpb24oZSxhKXt2YXIgcj0yKk5yKGUsYSk7cmV0dXJuIHI+MD9JdChlLGErNCxhKzQrci0xKToiIn0sV2k9SGksVmk9ZnVuY3Rpb24oYSxyKXt2YXIgdD1OcihhLHIpO3JldHVybiB0PjA/cm4oYSxyKzQscis0K3QpOiIifSxHaT1WaSxYaT1mdW5jdGlvbihlLGEpe3ZhciByPU5yKGUsYSk7cmV0dXJuIHI+MD9JdChlLGErNCxhKzQrcik6IiJ9LHppPVhpLCRpPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGxvKGUsYSl9LHgwPSRpLEtpPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpfHx0eXBlb2YgVWludDhBcnJheTwidSImJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fTtOZSYmKExpPWZ1bmN0aW9uKGEscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihhKSlyZXR1cm4gUGkoYSxyKTt2YXIgdD1hLnJlYWRVSW50MzJMRShyKTtyZXR1cm4gdD4wP2EudG9TdHJpbmcoInV0ZjgiLHIrNCxyKzQrdC0xKToiIn0sVWk9ZnVuY3Rpb24oYSxyKXtpZighQnVmZmVyLmlzQnVmZmVyKGEpKXJldHVybiBCaShhLHIpO3ZhciB0PWEucmVhZFVJbnQzMkxFKHIpO3JldHVybiB0PjA/YS50b1N0cmluZygidXRmOCIscis0LHIrNCt0LTEpOiIifSxXaT1mdW5jdGlvbihhLHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIoYSl8fCFFdClyZXR1cm4gSGkoYSxyKTt2YXIgdD0yKmEucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhLnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K3QtMSl9LEdpPWZ1bmN0aW9uKGEscil7aWYoIUJ1ZmZlci5pc0J1ZmZlcihhKXx8IUV0KXJldHVybiBWaShhLHIpO3ZhciB0PWEucmVhZFVJbnQzMkxFKHIpO3JldHVybiBhLnRvU3RyaW5nKCJ1dGYxNmxlIixyKzQscis0K3QpfSx6aT1mdW5jdGlvbihhLHIpe2lmKCFCdWZmZXIuaXNCdWZmZXIoYSkpcmV0dXJuIFhpKGEscik7dmFyIHQ9YS5yZWFkVUludDMyTEUocik7cmV0dXJuIGEudG9TdHJpbmcoInV0ZjgiLHIrNCxyKzQrdCl9LHgwPWZ1bmN0aW9uKGEscil7cmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihhKT9hLnJlYWREb3VibGVMRShyKTokaShhLHIpfSxLaT1mdW5jdGlvbihhKXtyZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGEpfHxBcnJheS5pc0FycmF5KGEpfHx0eXBlb2YgVWludDhBcnJheTwidSImJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5fSk7dmFyIGZ0PWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYV19LGRhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYSsxXSoyNTYrZVthXX0saG89ZnVuY3Rpb24oZSxhKXt2YXIgcj1lW2ErMV0qMjU2K2VbYV07cmV0dXJuIHI8MzI3Njg/cjooNjU1MzUtcisxKSotMX0sTnI9ZnVuY3Rpb24oZSxhKXtyZXR1cm4gZVthKzNdKigxPDwyNCkrKGVbYSsyXTw8MTYpKyhlW2ErMV08PDgpK2VbYV19LFdhPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIGVbYSszXTw8MjR8ZVthKzJdPDwxNnxlW2ErMV08PDh8ZVthXX0seG89ZnVuY3Rpb24oZSxhKXtyZXR1cm4gZVthXTw8MjR8ZVthKzFdPDwxNnxlW2ErMl08PDh8ZVthKzNdfTtmdW5jdGlvbiBEdChlLGEpe3ZhciByPSIiLHQsbixpPVtdLGYscyxjLG87c3dpdGNoKGEpe2Nhc2UiZGJjcyI6aWYobz10aGlzLmwsTmUmJkJ1ZmZlci5pc0J1ZmZlcih0aGlzKSYmRXQpcj10aGlzLnNsaWNlKHRoaXMubCx0aGlzLmwrMiplKS50b1N0cmluZygidXRmMTZsZSIpO2Vsc2UgZm9yKGM9MDtjPGU7KytjKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZGEodGhpcyxvKSksbys9MjtlKj0yO2JyZWFrO2Nhc2UidXRmOCI6cj1JdCh0aGlzLHRoaXMubCx0aGlzLmwrZSk7YnJlYWs7Y2FzZSJ1dGYxNmxlIjplKj0yLHI9cm4odGhpcyx0aGlzLmwsdGhpcy5sK2UpO2JyZWFrO2Nhc2Uid3N0ciI6cmV0dXJuIER0LmNhbGwodGhpcyxlLCJkYmNzIik7Y2FzZSJscHN0ci1hbnNpIjpyPUxpKHRoaXMsdGhpcy5sKSxlPTQrTnIodGhpcyx0aGlzLmwpO2JyZWFrO2Nhc2UibHBzdHItY3AiOnI9VWkodGhpcyx0aGlzLmwpLGU9NCtOcih0aGlzLHRoaXMubCk7YnJlYWs7Y2FzZSJscHdzdHIiOnI9V2kodGhpcyx0aGlzLmwpLGU9NCsyKk5yKHRoaXMsdGhpcy5sKTticmVhaztjYXNlImxwcDQiOmU9NCtOcih0aGlzLHRoaXMubCkscj1HaSh0aGlzLHRoaXMubCksZSYyJiYoZSs9Mik7YnJlYWs7Y2FzZSI4bHBwNCI6ZT00K05yKHRoaXMsdGhpcy5sKSxyPXppKHRoaXMsdGhpcy5sKSxlJjMmJihlKz00LShlJjMpKTticmVhaztjYXNlImNzdHIiOmZvcihlPTAscj0iIjsoZj1mdCh0aGlzLHRoaXMubCtlKyspKSE9PTA7KWkucHVzaChuMChmKSk7cj1pLmpvaW4oIiIpO2JyZWFrO2Nhc2UiX3dzdHIiOmZvcihlPTAscj0iIjsoZj1kYSh0aGlzLHRoaXMubCtlKSkhPT0wOylpLnB1c2gobjAoZikpLGUrPTI7ZSs9MixyPWkuam9pbigiIik7YnJlYWs7Y2FzZSJkYmNzLWNvbnQiOmZvcihyPSIiLG89dGhpcy5sLGM9MDtjPGU7KytjKXtpZih0aGlzLmxlbnMmJnRoaXMubGVucy5pbmRleE9mKG8pIT09LTEpcmV0dXJuIGY9ZnQodGhpcyxvKSx0aGlzLmw9bysxLHM9RHQuY2FsbCh0aGlzLGUtYyxmPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiKSxpLmpvaW4oIiIpK3M7aS5wdXNoKG4wKGRhKHRoaXMsbykpKSxvKz0yfXI9aS5qb2luKCIiKSxlKj0yO2JyZWFrO2Nhc2UiY3BzdHIiOmNhc2Uic2Jjcy1jb250Ijpmb3Iocj0iIixvPXRoaXMubCxjPTA7YyE9ZTsrK2Mpe2lmKHRoaXMubGVucyYmdGhpcy5sZW5zLmluZGV4T2YobykhPT0tMSlyZXR1cm4gZj1mdCh0aGlzLG8pLHRoaXMubD1vKzEscz1EdC5jYWxsKHRoaXMsZS1jLGY/ImRiY3MtY29udCI6InNiY3MtY29udCIpLGkuam9pbigiIikrcztpLnB1c2gobjAoZnQodGhpcyxvKSkpLG8rPTF9cj1pLmpvaW4oIiIpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gdD1mdCh0aGlzLHRoaXMubCksdGhpcy5sKyssdDtjYXNlIDI6cmV0dXJuIHQ9KGE9PT0iaSI/aG86ZGEpKHRoaXMsdGhpcy5sKSx0aGlzLmwrPTIsdDtjYXNlIDQ6Y2FzZS00OnJldHVybiBhPT09ImkifHwhKHRoaXNbdGhpcy5sKzNdJjEyOCk/KHQ9KGU+MD9XYTp4bykodGhpcyx0aGlzLmwpLHRoaXMubCs9NCx0KToobj1Ocih0aGlzLHRoaXMubCksdGhpcy5sKz00LG4pO2Nhc2UgODpjYXNlLTg6aWYoYT09PSJmIilyZXR1cm4gZT09OD9uPXgwKHRoaXMsdGhpcy5sKTpuPXgwKFt0aGlzW3RoaXMubCs3XSx0aGlzW3RoaXMubCs2XSx0aGlzW3RoaXMubCs1XSx0aGlzW3RoaXMubCs0XSx0aGlzW3RoaXMubCszXSx0aGlzW3RoaXMubCsyXSx0aGlzW3RoaXMubCsxXSx0aGlzW3RoaXMubCswXV0sMCksdGhpcy5sKz04LG47ZT04O2Nhc2UgMTY6cj1OaSh0aGlzLHRoaXMubCxlKTticmVha319cmV0dXJuIHRoaXMubCs9ZSxyfXZhciB2bz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+PjgmMjU1LGVbcisyXT1hPj4+MTYmMjU1LGVbciszXT1hPj4+MjQmMjU1fSxwbz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+OCYyNTUsZVtyKzJdPWE+PjE2JjI1NSxlW3IrM109YT4+MjQmMjU1fSxnbz1mdW5jdGlvbihlLGEscil7ZVtyXT1hJjI1NSxlW3IrMV09YT4+PjgmMjU1fTtmdW5jdGlvbiBtbyhlLGEscil7dmFyIHQ9MCxuPTA7aWYocj09PSJkYmNzIil7Zm9yKG49MDtuIT1hLmxlbmd0aDsrK24pZ28odGhpcyxhLmNoYXJDb2RlQXQobiksdGhpcy5sKzIqbik7dD0yKmEubGVuZ3RofWVsc2UgaWYocj09PSJzYmNzInx8cj09ImNwc3RyIil7Zm9yKGE9YS5yZXBsYWNlKC9bXlx4MDAtXHg3Rl0vZywiXyIpLG49MDtuIT1hLmxlbmd0aDsrK24pdGhpc1t0aGlzLmwrbl09YS5jaGFyQ29kZUF0KG4pJjI1NTt0PWEubGVuZ3RofWVsc2UgaWYocj09PSJoZXgiKXtmb3IoO248ZTsrK24pdGhpc1t0aGlzLmwrK109cGFyc2VJbnQoYS5zbGljZSgyKm4sMipuKzIpLDE2KXx8MDtyZXR1cm4gdGhpc31lbHNlIGlmKHI9PT0idXRmMTZsZSIpe3ZhciBpPU1hdGgubWluKHRoaXMubCtlLHRoaXMubGVuZ3RoKTtmb3Iobj0wO248TWF0aC5taW4oYS5sZW5ndGgsZSk7KytuKXt2YXIgZj1hLmNoYXJDb2RlQXQobik7dGhpc1t0aGlzLmwrK109ZiYyNTUsdGhpc1t0aGlzLmwrK109Zj4+OH1mb3IoO3RoaXMubDxpOyl0aGlzW3RoaXMubCsrXT0wO3JldHVybiB0aGlzfWVsc2Ugc3dpdGNoKGUpe2Nhc2UgMTp0PTEsdGhpc1t0aGlzLmxdPWEmMjU1O2JyZWFrO2Nhc2UgMjp0PTIsdGhpc1t0aGlzLmxdPWEmMjU1LGE+Pj49OCx0aGlzW3RoaXMubCsxXT1hJjI1NTticmVhaztjYXNlIDM6dD0zLHRoaXNbdGhpcy5sXT1hJjI1NSxhPj4+PTgsdGhpc1t0aGlzLmwrMV09YSYyNTUsYT4+Pj04LHRoaXNbdGhpcy5sKzJdPWEmMjU1O2JyZWFrO2Nhc2UgNDp0PTQsdm8odGhpcyxhLHRoaXMubCk7YnJlYWs7Y2FzZSA4OmlmKHQ9OCxyPT09ImYiKXt1byh0aGlzLGEsdGhpcy5sKTticmVha31jYXNlIDE2OmJyZWFrO2Nhc2UtNDp0PTQscG8odGhpcyxhLHRoaXMubCk7YnJlYWt9cmV0dXJuIHRoaXMubCs9dCx0aGlzfWZ1bmN0aW9uIGppKGUsYSl7dmFyIHI9TmkodGhpcyx0aGlzLmwsZS5sZW5ndGg+PjEpO2lmKHIhPT1lKXRocm93IG5ldyBFcnJvcihhKyJFeHBlY3RlZCAiK2UrIiBzYXcgIityKTt0aGlzLmwrPWUubGVuZ3RoPj4xfWZ1bmN0aW9uIHNyKGUsYSl7ZS5sPWEsZS5yZWFkX3NoaWZ0PUR0LGUuY2hrPWppLGUud3JpdGVfc2hpZnQ9bW99ZnVuY3Rpb24geXIoZSxhKXtlLmwrPWF9ZnVuY3Rpb24gZnIoZSl7dmFyIGE9QWEoZSk7cmV0dXJuIHNyKGEsMCksYX1mdW5jdGlvbiB2YShlLGEscil7aWYoZSl7dmFyIHQsbixpO3NyKGUsZS5sfHwwKTtmb3IodmFyIGY9ZS5sZW5ndGgscz0wLGM9MDtlLmw8Zjspe3M9ZS5yZWFkX3NoaWZ0KDEpLHMmMTI4JiYocz0ocyYxMjcpKygoZS5yZWFkX3NoaWZ0KDEpJjEyNyk8PDcpKTt2YXIgbz1JMFtzXXx8STBbNjU1MzVdO2Zvcih0PWUucmVhZF9zaGlmdCgxKSxpPXQmMTI3LG49MTtuPDQmJnQmMTI4OysrbilpKz0oKHQ9ZS5yZWFkX3NoaWZ0KDEpKSYxMjcpPDw3Km47Yz1lLmwraTt2YXIgbD1vLmYmJm8uZihlLGkscik7aWYoZS5sPWMsYShsLG8scykpcmV0dXJufX19ZnVuY3Rpb24gYW4oKXt2YXIgZT1bXSxhPU5lPzE2Mzg0OjIwNDgscj1OZSYmdHlwZW9mIGZyKGEpLnN1YmFycmF5PT0iZnVuY3Rpb24iLHQ9ZnVuY3Rpb24odSl7dmFyIHg9ZnIodSk7cmV0dXJuIHNyKHgsMCkseH0sbj10KGEpLGk9ZnVuY3Rpb24oKXtuJiYobi5sJiYobi5sZW5ndGg+bi5sJiYobj1uLnNsaWNlKDAsbi5sKSxuLmw9bi5sZW5ndGgpLG4ubGVuZ3RoPjAmJmUucHVzaChuKSksbj1udWxsKX0sZj1mdW5jdGlvbih1KXtyZXR1cm4gbiYmdTxuLmxlbmd0aC1uLmw/bjooaSgpLG49dChNYXRoLm1heCh1KzEsYSkpKX0scz1mdW5jdGlvbigpe3JldHVybiBpKCkseWEoZSl9LGM9ZnVuY3Rpb24oKXtyZXR1cm4gaSgpLGV9LG89ZnVuY3Rpb24odSl7bi5sPjAmJmUucHVzaChuLnNsaWNlKDAsbi5sKSksZS5wdXNoKHUpLG49cj9uLnN1YmFycmF5KG4ubHx8MCk6bi5zbGljZShuLmx8fDApLHNyKG4sMCl9O3JldHVybntuZXh0OmYscHVzaDpvLGVuZDpzLF9idWZzOmUsZW5kMjpjfX1mdW5jdGlvbiBSdChlLGEscil7dmFyIHQ9VWUoZSk7aWYoYS5zPyh0LmNSZWwmJih0LmMrPWEucy5jKSx0LnJSZWwmJih0LnIrPWEucy5yKSk6KHQuY1JlbCYmKHQuYys9YS5jKSx0LnJSZWwmJih0LnIrPWEucikpLCFyfHxyLmJpZmY8MTIpe2Zvcig7dC5jPj0yNTY7KXQuYy09MjU2O2Zvcig7dC5yPj02NTUzNjspdC5yLT02NTUzNn1yZXR1cm4gdH1mdW5jdGlvbiBZaShlLGEscil7dmFyIHQ9VWUoZSk7cmV0dXJuIHQucz1SdCh0LnMsYS5zLHIpLHQuZT1SdCh0LmUsYS5zLHIpLHR9ZnVuY3Rpb24gT3QoZSxhKXtpZihlLmNSZWwmJmUuYzwwKWZvcihlPVVlKGUpO2UuYzwwOyllLmMrPWE+OD8xNjM4NDoyNTY7aWYoZS5yUmVsJiZlLnI8MClmb3IoZT1VZShlKTtlLnI8MDspZS5yKz1hPjg/MTA0ODU3NjphPjU/NjU1MzY6MTYzODQ7dmFyIHI9RGUoZSk7cmV0dXJuIWUuY1JlbCYmZS5jUmVsIT1udWxsJiYocj13byhyKSksIWUuclJlbCYmZS5yUmVsIT1udWxsJiYocj1fbyhyKSkscn1mdW5jdGlvbiB0bihlLGEpe3JldHVybiBlLnMucj09MCYmIWUucy5yUmVsJiZlLmUucj09KGEuYmlmZj49MTI/MTA0ODU3NTphLmJpZmY+PTg/NjU1MzY6MTYzODQpJiYhZS5lLnJSZWw/KGUucy5jUmVsPyIiOiIkIikrSGUoZS5zLmMpKyI6IisoZS5lLmNSZWw/IiI6IiQiKStIZShlLmUuYyk6ZS5zLmM9PTAmJiFlLnMuY1JlbCYmZS5lLmM9PShhLmJpZmY+PTEyPzE2MzgzOjI1NSkmJiFlLmUuY1JlbD8oZS5zLnJSZWw/IiI6IiQiKStHZShlLnMucikrIjoiKyhlLmUuclJlbD8iIjoiJCIpK0dlKGUuZS5yKTpPdChlLnMsYS5iaWZmKSsiOiIrT3QoZS5lLGEuYmlmZil9ZnVuY3Rpb24gbm4oZSl7cmV0dXJuIHBhcnNlSW50KGtvKGUpLDEwKS0xfWZ1bmN0aW9uIEdlKGUpe3JldHVybiIiKyhlKzEpfWZ1bmN0aW9uIF9vKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbQS1aXXxeKShcZCspJC8sIiQxJCQkMiIpfWZ1bmN0aW9uIGtvKGUpe3JldHVybiBlLnJlcGxhY2UoL1wkKFxkKykkLywiJDEiKX1mdW5jdGlvbiBzbihlKXtmb3IodmFyIGE9Rm8oZSkscj0wLHQ9MDt0IT09YS5sZW5ndGg7Kyt0KXI9MjYqcithLmNoYXJDb2RlQXQodCktNjQ7cmV0dXJuIHItMX1mdW5jdGlvbiBIZShlKXtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvbHVtbiAiK2UpO3ZhciBhPSIiO2ZvcigrK2U7ZTtlPU1hdGguZmxvb3IoKGUtMSkvMjYpKWE9U3RyaW5nLmZyb21DaGFyQ29kZSgoZS0xKSUyNis2NSkrYTtyZXR1cm4gYX1mdW5jdGlvbiB3byhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eKFtBLVpdKS8sIiQkJDEiKX1mdW5jdGlvbiBGbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXCQoW0EtWl0pLywiJDEiKX1mdW5jdGlvbiBUbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXCQ/W0EtWl0qKShcJD9cZCopLywiJDEsJDIiKS5zcGxpdCgiLCIpfWZ1bmN0aW9uIGdyKGUpe2Zvcih2YXIgYT0wLHI9MCx0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBuPWUuY2hhckNvZGVBdCh0KTtuPj00OCYmbjw9NTc/YT0xMCphKyhuLTQ4KTpuPj02NSYmbjw9OTAmJihyPTI2KnIrKG4tNjQpKX1yZXR1cm57YzpyLTEscjphLTF9fWZ1bmN0aW9uIERlKGUpe2Zvcih2YXIgYT1lLmMrMSxyPSIiO2E7YT0oYS0xKS8yNnwwKXI9U3RyaW5nLmZyb21DaGFyQ29kZSgoYS0xKSUyNis2NSkrcjtyZXR1cm4gcisoZS5yKzEpfWZ1bmN0aW9uIHBhKGUpe3ZhciBhPWUuaW5kZXhPZigiOiIpO3JldHVybiBhPT0tMT97czpncihlKSxlOmdyKGUpfTp7czpncihlLnNsaWNlKDAsYSkpLGU6Z3IoZS5zbGljZShhKzEpKX19ZnVuY3Rpb24gSWUoZSxhKXtyZXR1cm4gdHlwZW9mIGE+InUifHx0eXBlb2YgYT09Im51bWJlciI/SWUoZS5zLGUuZSk6KHR5cGVvZiBlIT0ic3RyaW5nIiYmKGU9RGUoZSkpLHR5cGVvZiBhIT0ic3RyaW5nIiYmKGE9RGUoYSkpLGU9PWE/ZTplKyI6IithKX1mdW5jdGlvbiBFbyhlLGEpe2lmKCFlJiYhKGEmJmEuYmlmZjw9NSYmYS5iaWZmPj0yKSl0aHJvdyBuZXcgRXJyb3IoImVtcHR5IHNoZWV0IG5hbWUiKTtyZXR1cm4vW15cd1x1NEUwMC1cdTlGRkZcdTMwNDAtXHUzMEZGXS8udGVzdChlKT8iJyIrZS5yZXBsYWNlKC8nL2csIicnIikrIiciOmV9ZnVuY3Rpb24gWmUoZSl7dmFyIGE9e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fSxyPTAsdD0wLG49MCxpPWUubGVuZ3RoO2ZvcihyPTA7dDxpJiYhKChuPWUuY2hhckNvZGVBdCh0KS02NCk8MXx8bj4yNik7Kyt0KXI9MjYqcituO2ZvcihhLnMuYz0tLXIscj0wO3Q8aSYmISgobj1lLmNoYXJDb2RlQXQodCktNDgpPDB8fG4+OSk7Kyt0KXI9MTAqcituO2lmKGEucy5yPS0tcix0PT09aXx8biE9MTApcmV0dXJuIGEuZS5jPWEucy5jLGEuZS5yPWEucy5yLGE7Zm9yKCsrdCxyPTA7dCE9aSYmISgobj1lLmNoYXJDb2RlQXQodCktNjQpPDF8fG4+MjYpOysrdClyPTI2KnIrbjtmb3IoYS5lLmM9LS1yLHI9MDt0IT1pJiYhKChuPWUuY2hhckNvZGVBdCh0KS00OCk8MHx8bj45KTsrK3Qpcj0xMCpyK247cmV0dXJuIGEuZS5yPS0tcixhfWZ1bmN0aW9uIEppKGUsYSl7dmFyIHI9ZS50PT0iZCImJmEgaW5zdGFuY2VvZiBEYXRlO2lmKGUueiE9bnVsbCl0cnl7cmV0dXJuIGUudz1ScihlLnoscj9vcihhKTphKX1jYXRjaHt9dHJ5e3JldHVybiBlLnc9UnIoKGUuWEZ8fHt9KS5udW1GbXRJZHx8KHI/MTQ6MCkscj9vcihhKTphKX1jYXRjaHtyZXR1cm4iIithfX1mdW5jdGlvbiBnYShlLGEscil7cmV0dXJuIGU9PW51bGx8fGUudD09bnVsbHx8ZS50PT0ieiI/IiI6ZS53IT09dm9pZCAwP2UudzooZS50PT0iZCImJiFlLnomJnImJnIuZGF0ZU5GJiYoZS56PXIuZGF0ZU5GKSxlLnQ9PSJlIj9icltlLnZdfHxlLnY6YT09bnVsbD9KaShlLGUudik6SmkoZSxhKSl9ZnVuY3Rpb24gQ2EoZSxhKXt2YXIgcj1hJiZhLnNoZWV0P2Euc2hlZXQ6IlNoZWV0MSIsdD17fTtyZXR1cm4gdFtyXT1lLHtTaGVldE5hbWVzOltyXSxTaGVldHM6dH19ZnVuY3Rpb24gQW8oZSl7dmFyIGE9e30scj1lfHx7fTtyZXR1cm4gci5kZW5zZSYmKGFbIiFkYXRhIl09W10pLGF9ZnVuY3Rpb24gWmkoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT9lWyIhZGF0YSJdIT1udWxsOnQuZGVuc2UsaT1lfHwobj97IiFkYXRhIjpbXX06e30pO24mJiFpWyIhZGF0YSJdJiYoaVsiIWRhdGEiXT1bXSk7dmFyIGY9MCxzPTA7aWYoaSYmdC5vcmlnaW4hPW51bGwpaWYodHlwZW9mIHQub3JpZ2luPT0ibnVtYmVyIilmPXQub3JpZ2luO2Vsc2V7dmFyIGM9dHlwZW9mIHQub3JpZ2luPT0ic3RyaW5nIj9ncih0Lm9yaWdpbik6dC5vcmlnaW47Zj1jLnIscz1jLmN9dmFyIG89e3M6e2M6MWU3LHI6MWU3fSxlOntjOjAscjowfX07aWYoaVsiIXJlZiJdKXt2YXIgbD1aZShpWyIhcmVmIl0pO28ucy5jPWwucy5jLG8ucy5yPWwucy5yLG8uZS5jPU1hdGgubWF4KG8uZS5jLGwuZS5jKSxvLmUucj1NYXRoLm1heChvLmUucixsLmUuciksZj09LTEmJihvLmUucj1mPWlbIiFyZWYiXT9sLmUucisxOjApfWVsc2Ugby5zLmM9by5lLmM9by5zLnI9by5lLnI9MDtmb3IodmFyIHU9W10seD0hMSxoPTA7aCE9YS5sZW5ndGg7KytoKWlmKGFbaF0pe2lmKCFBcnJheS5pc0FycmF5KGFbaF0pKXRocm93IG5ldyBFcnJvcigiYW9hX3RvX3NoZWV0IGV4cGVjdHMgYW4gYXJyYXkgb2YgYXJyYXlzIik7dmFyIGc9ZitoO24mJihpWyIhZGF0YSJdW2ddfHwoaVsiIWRhdGEiXVtnXT1bXSksdT1pWyIhZGF0YSJdW2ddKTtmb3IodmFyIG09YVtoXSxkPTA7ZCE9bS5sZW5ndGg7KytkKWlmKCEodHlwZW9mIG1bZF0+InUiKSl7dmFyIHA9e3Y6bVtkXSx0OiIifSx3PXMrZDtpZihvLnMucj5nJiYoby5zLnI9Zyksby5zLmM+dyYmKG8ucy5jPXcpLG8uZS5yPGcmJihvLmUucj1nKSxvLmUuYzx3JiYoby5lLmM9dykseD0hMCxtW2RdJiZ0eXBlb2YgbVtkXT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KG1bZF0pJiYhKG1bZF1pbnN0YW5jZW9mIERhdGUpKXA9bVtkXTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocC52KSYmKHAuZj1tW2RdWzFdLHAudj1wLnZbMF0pLHAudj09PW51bGwpaWYocC5mKXAudD0ibiI7ZWxzZSBpZih0Lm51bGxFcnJvcilwLnQ9ImUiLHAudj0wO2Vsc2UgaWYodC5zaGVldFN0dWJzKXAudD0ieiI7ZWxzZSBjb250aW51ZTtlbHNlIHR5cGVvZiBwLnY9PSJudW1iZXIiP2lzRmluaXRlKHAudik/cC50PSJuIjppc05hTihwLnYpPyhwLnQ9ImUiLHAudj0xNSk6KHAudD0iZSIscC52PTcpOnR5cGVvZiBwLnY9PSJib29sZWFuIj9wLnQ9ImIiOnAudiBpbnN0YW5jZW9mIERhdGU/KHAuej10LmRhdGVORnx8VGVbMTRdLHQuVVRDfHwocC52PW8wKHAudikpLHQuY2VsbERhdGVzPyhwLnQ9ImQiLHAudz1ScihwLnosb3IocC52LHQuZGF0ZTE5MDQpKSk6KHAudD0ibiIscC52PW9yKHAudix0LmRhdGUxOTA0KSxwLnc9UnIocC56LHAudikpKTpwLnQ9InMiO2lmKG4pdVt3XSYmdVt3XS56JiYocC56PXVbd10ueiksdVt3XT1wO2Vsc2V7dmFyIF89SGUodykrKGcrMSk7aVtfXSYmaVtfXS56JiYocC56PWlbX10ueiksaVtfXT1wfX19cmV0dXJuIHgmJm8ucy5jPDEwNGU1JiYoaVsiIXJlZiJdPUllKG8pKSxpfWZ1bmN0aW9uIGN0KGUsYSl7cmV0dXJuIFppKG51bGwsZSxhKX1mdW5jdGlvbiB5byhlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQsImkiKX1mdW5jdGlvbiBtcihlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIGE9PT0wPyIiOmUucmVhZF9zaGlmdChhLCJkYmNzIil9ZnVuY3Rpb24gU28oZSl7cmV0dXJue2ljaDplLnJlYWRfc2hpZnQoMiksaWZudDplLnJlYWRfc2hpZnQoMil9fWZ1bmN0aW9uIGZuKGUsYSl7dmFyIHI9ZS5sLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49bXIoZSksaT1bXSxmPXt0Om4saDpufTtpZih0JjEpe2Zvcih2YXIgcz1lLnJlYWRfc2hpZnQoNCksYz0wO2MhPXM7KytjKWkucHVzaChTbyhlKSk7Zi5yPWl9ZWxzZSBmLnI9W3tpY2g6MCxpZm50OjB9XTtyZXR1cm4gZS5sPXIrYSxmfXZhciBDbz1mbjtmdW5jdGlvbiBYcihlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIHIrPWUucmVhZF9zaGlmdCgxKTw8MTYsZS5sKysse2M6YSxpU3R5bGVSZWY6cn19ZnVuY3Rpb24gVmEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBhKz1lLnJlYWRfc2hpZnQoMSk8PDE2LGUubCsrLHtjOi0xLGlTdHlsZVJlZjphfX12YXIgYm89bXI7ZnVuY3Rpb24gZDAoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBhPT09MHx8YT09PTQyOTQ5NjcyOTU/IiI6ZS5yZWFkX3NoaWZ0KGEsImRiY3MiKX12YXIgSW89bXIsY249ZDA7ZnVuY3Rpb24gdjAoZSl7dmFyIGE9ZS5zbGljZShlLmwsZS5sKzQpLHI9YVswXSYxLHQ9YVswXSYyO2UubCs9NDt2YXIgbj10PT09MD94MChbMCwwLDAsMCxhWzBdJjI1MixhWzFdLGFbMl0sYVszXV0sMCk6V2EoYSwwKT4+MjtyZXR1cm4gcj9uLzEwMDpufWZ1bmN0aW9uIHFpKGUpe3ZhciBhPXtzOnt9LGU6e319O3JldHVybiBhLnMucj1lLnJlYWRfc2hpZnQoNCksYS5lLnI9ZS5yZWFkX3NoaWZ0KDQpLGEucy5jPWUucmVhZF9zaGlmdCg0KSxhLmUuYz1lLnJlYWRfc2hpZnQoNCksYX12YXIgR2E9cWk7ZnVuY3Rpb24gX3IoZSl7aWYoZS5sZW5ndGgtZS5sPDgpdGhyb3ciWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvdyI7cmV0dXJuIGUucmVhZF9zaGlmdCg4LCJmIil9ZnVuY3Rpb24gRG8oZSl7dmFyIGE9e30scj1lLnJlYWRfc2hpZnQoMSksdD1yPj4+MSxuPWUucmVhZF9zaGlmdCgxKSxpPWUucmVhZF9zaGlmdCgyLCJpIiksZj1lLnJlYWRfc2hpZnQoMSkscz1lLnJlYWRfc2hpZnQoMSksYz1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGUubCsrLHQpe2Nhc2UgMDphLmF1dG89MTticmVhaztjYXNlIDE6YS5pbmRleD1uO3ZhciBvPXRhW25dO28mJihhLnJnYj1qYShvKSk7YnJlYWs7Y2FzZSAyOmEucmdiPWphKFtmLHMsY10pO2JyZWFrO2Nhc2UgMzphLnRoZW1lPW47YnJlYWt9cmV0dXJuIGkhPTAmJihhLnRpbnQ9aT4wP2kvMzI3Njc6aS8zMjc2OCksYX1mdW5jdGlvbiBSbyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7ZS5sKys7dmFyIHI9e2ZCb2xkOmEmMSxmSXRhbGljOmEmMixmVW5kZXJsaW5lOmEmNCxmU3RyaWtlb3V0OmEmOCxmT3V0bGluZTphJjE2LGZTaGFkb3c6YSYzMixmQ29uZGVuc2U6YSY2NCxmRXh0ZW5kOmEmMTI4fTtyZXR1cm4gcn1mdW5jdGlvbiBRaShlLGEpe3ZhciByPXsyOiJCSVRNQVAiLDM6Ik1FVEFGSUxFUElDVCIsODoiRElCIiwxNDoiRU5ITUVUQUZJTEUifSx0PWUucmVhZF9zaGlmdCg0KTtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiIiO2Nhc2UgNDI5NDk2NzI5NTpjYXNlIDQyOTQ5NjcyOTQ6cmV0dXJuIHJbZS5yZWFkX3NoaWZ0KDQpXXx8IiJ9aWYodD40MDApdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDbGlwYm9hcmQ6ICIrdC50b1N0cmluZygxNikpO3JldHVybiBlLmwtPTQsZS5yZWFkX3NoaWZ0KDAsYT09MT8ibHBzdHIiOiJscHdzdHIiKX1mdW5jdGlvbiBPbyhlKXtyZXR1cm4gUWkoZSwxKX1mdW5jdGlvbiBObyhlKXtyZXR1cm4gUWkoZSwyKX12YXIgb249MixDcj0zLHAwPTExLGVzPTEyLGcwPTE5LG0wPTY0LE1vPTY1LFBvPTcxLExvPTQxMDgsQm89NDEyNix1cj04MCxycz04MSxVbz1bdXIscnNdLEhvPXsxOntuOiJDb2RlUGFnZSIsdDpvbn0sMjp7bjoiQ2F0ZWdvcnkiLHQ6dXJ9LDM6e246IlByZXNlbnRhdGlvbkZvcm1hdCIsdDp1cn0sNDp7bjoiQnl0ZUNvdW50Iix0OkNyfSw1OntuOiJMaW5lQ291bnQiLHQ6Q3J9LDY6e246IlBhcmFncmFwaENvdW50Iix0OkNyfSw3OntuOiJTbGlkZUNvdW50Iix0OkNyfSw4OntuOiJOb3RlQ291bnQiLHQ6Q3J9LDk6e246IkhpZGRlbkNvdW50Iix0OkNyfSwxMDp7bjoiTXVsdGltZWRpYUNsaXBDb3VudCIsdDpDcn0sMTE6e246IlNjYWxlQ3JvcCIsdDpwMH0sMTI6e246IkhlYWRpbmdQYWlycyIsdDpMb30sMTM6e246IlRpdGxlc09mUGFydHMiLHQ6Qm99LDE0OntuOiJNYW5hZ2VyIix0OnVyfSwxNTp7bjoiQ29tcGFueSIsdDp1cn0sMTY6e246IkxpbmtzVXBUb0RhdGUiLHQ6cDB9LDE3OntuOiJDaGFyYWN0ZXJDb3VudCIsdDpDcn0sMTk6e246IlNoYXJlZERvYyIsdDpwMH0sMjI6e246Ikh5cGVybGlua3NDaGFuZ2VkIix0OnAwfSwyMzp7bjoiQXBwVmVyc2lvbiIsdDpDcixwOiJ2ZXJzaW9uIn0sMjQ6e246IkRpZ1NpZyIsdDpNb30sMjY6e246IkNvbnRlbnRUeXBlIix0OnVyfSwyNzp7bjoiQ29udGVudFN0YXR1cyIsdDp1cn0sMjg6e246Ikxhbmd1YWdlIix0OnVyfSwyOTp7bjoiVmVyc2lvbiIsdDp1cn0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDpnMH0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6ZzB9LDE5MTkwNTQ0MzQ6e319LFdvPXsxOntuOiJDb2RlUGFnZSIsdDpvbn0sMjp7bjoiVGl0bGUiLHQ6dXJ9LDM6e246IlN1YmplY3QiLHQ6dXJ9LDQ6e246IkF1dGhvciIsdDp1cn0sNTp7bjoiS2V5d29yZHMiLHQ6dXJ9LDY6e246IkNvbW1lbnRzIix0OnVyfSw3OntuOiJUZW1wbGF0ZSIsdDp1cn0sODp7bjoiTGFzdEF1dGhvciIsdDp1cn0sOTp7bjoiUmV2TnVtYmVyIix0OnVyfSwxMDp7bjoiRWRpdFRpbWUiLHQ6bTB9LDExOntuOiJMYXN0UHJpbnRlZCIsdDptMH0sMTI6e246IkNyZWF0ZWREYXRlIix0Om0wfSwxMzp7bjoiTW9kaWZpZWREYXRlIix0Om0wfSwxNDp7bjoiUGFnZUNvdW50Iix0OkNyfSwxNTp7bjoiV29yZENvdW50Iix0OkNyfSwxNjp7bjoiQ2hhckNvdW50Iix0OkNyfSwxNzp7bjoiVGh1bWJuYWlsIix0OlBvfSwxODp7bjoiQXBwbGljYXRpb24iLHQ6dXJ9LDE5OntuOiJEb2NTZWN1cml0eSIsdDpDcn0sMjU1Ont9LDIxNDc0ODM2NDg6e246IkxvY2FsZSIsdDpnMH0sMjE0NzQ4MzY1MTp7bjoiQmVoYXZpb3IiLHQ6ZzB9LDE5MTkwNTQ0MzQ6e319LGFzPXsxOiJVUyIsMjoiQ0EiLDM6IiIsNzoiUlUiLDIwOiJFRyIsMzA6IkdSIiwzMToiTkwiLDMyOiJCRSIsMzM6IkZSIiwzNDoiRVMiLDM2OiJIVSIsMzk6IklUIiw0MToiQ0giLDQzOiJBVCIsNDQ6IkdCIiw0NToiREsiLDQ2OiJTRSIsNDc6Ik5PIiw0ODoiUEwiLDQ5OiJERSIsNTI6Ik1YIiw1NToiQlIiLDYxOiJBVSIsNjQ6Ik5aIiw2NjoiVEgiLDgxOiJKUCIsODI6IktSIiw4NDoiVk4iLDg2OiJDTiIsOTA6IlRSIiwxMDU6IkpTIiwyMTM6IkRaIiwyMTY6Ik1BIiwyMTg6IkxZIiwzNTE6IlBUIiwzNTQ6IklTIiwzNTg6IkZJIiw0MjA6IkNaIiw4ODY6IlRXIiw5NjE6IkxCIiw5NjI6IkpPIiw5NjM6IlNZIiw5NjQ6IklRIiw5NjU6IktXIiw5NjY6IlNBIiw5NzE6IkFFIiw5NzI6IklMIiw5NzQ6IlFBIiw5ODE6IklSIiw2NTUzNToiVVMifSxWbz1bbnVsbCwic29saWQiLCJtZWRpdW1HcmF5IiwiZGFya0dyYXkiLCJsaWdodEdyYXkiLCJkYXJrSG9yaXpvbnRhbCIsImRhcmtWZXJ0aWNhbCIsImRhcmtEb3duIiwiZGFya1VwIiwiZGFya0dyaWQiLCJkYXJrVHJlbGxpcyIsImxpZ2h0SG9yaXpvbnRhbCIsImxpZ2h0VmVydGljYWwiLCJsaWdodERvd24iLCJsaWdodFVwIiwibGlnaHRHcmlkIiwibGlnaHRUcmVsbGlzIiwiZ3JheTEyNSIsImdyYXkwNjI1Il07ZnVuY3Rpb24gR28oZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGEpe3JldHVyblthPj4xNiYyNTUsYT4+OCYyNTUsYSYyNTVdfSl9dmFyIFhvPUdvKFswLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSwwLDE2Nzc3MjE1LDE2NzExNjgwLDY1MjgwLDI1NSwxNjc3Njk2MCwxNjcxMTkzNSw2NTUzNSw4Mzg4NjA4LDMyNzY4LDEyOCw4NDIxMzc2LDgzODg3MzYsMzI4OTYsMTI2MzIyNTYsODQyMTUwNCwxMDA2NjQzMSwxMDA0MDE2NiwxNjc3NzE2NCwxMzQzNDg3OSw2Njg0Nzc0LDE2NzQ0NTc2LDI2MzE2LDEzNDIxODIzLDEyOCwxNjcxMTkzNSwxNjc3Njk2MCw2NTUzNSw4Mzg4NzM2LDgzODg2MDgsMzI4OTYsMjU1LDUyNDc5LDEzNDM0ODc5LDEzNDM0ODI4LDE2Nzc3MTEzLDEwMDc5NDg3LDE2NzUxMDUyLDEzNDA4NzY3LDE2NzY0MDU3LDMzNjg3MDMsMzM5NDc2NCwxMDA3OTIzMiwxNjc2MzkwNCwxNjc1MDg0OCwxNjczNzc5Miw2NzEwOTM3LDk4Njg5NTAsMTMxNTgsMzM4MTYwNiwxMzA1NiwzMzU1MzkyLDEwMDQwMDY0LDEwMDQwMTY2LDMzNTU1NDUsMzM1NTQ0MywwLDE2Nzc3MjE1LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdKSx0YT1VZShYbyksYnI9ezA6IiNOVUxMISIsNzoiI0RJVi8wISIsMTU6IiNWQUxVRSEiLDIzOiIjUkVGISIsMjk6IiNOQU1FPyIsMzY6IiNOVU0hIiw0MjoiI04vQSIsNDM6IiNHRVRUSU5HX0RBVEEiLDI1NToiI1dURj8ifSxkcj17IiNOVUxMISI6MCwiI0RJVi8wISI6NywiI1ZBTFVFISI6MTUsIiNSRUYhIjoyMywiI05BTUU/IjoyOSwiI05VTSEiOjM2LCIjTi9BIjo0MiwiI0dFVFRJTkdfREFUQSI6NDMsIiNXVEY/IjoyNTV9LHRzPVsiX3hsbm0uQ29uc29saWRhdGVfQXJlYSIsIl94bG5tLkF1dG9fT3BlbiIsIl94bG5tLkF1dG9fQ2xvc2UiLCJfeGxubS5FeHRyYWN0IiwiX3hsbm0uRGF0YWJhc2UiLCJfeGxubS5Dcml0ZXJpYSIsIl94bG5tLlByaW50X0FyZWEiLCJfeGxubS5QcmludF9UaXRsZXMiLCJfeGxubS5SZWNvcmRlciIsIl94bG5tLkRhdGFfRm9ybSIsIl94bG5tLkF1dG9fQWN0aXZhdGUiLCJfeGxubS5BdXRvX0RlYWN0aXZhdGUiLCJfeGxubS5TaGVldF9UaXRsZSIsIl94bG5tLl9GaWx0ZXJEYXRhYmFzZSJdLG5zPXsiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLm1haW4reG1sIjoid29ya2Jvb2tzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb0VuYWJsZWQubWFpbiI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb0VuYWJsZWQubWFpbit4bWwiOiJ3b3JrYm9va3MiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbCI6Indvcmtib29rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiOiJzaGVldHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud29ya3NoZWV0Ijoic2hlZXRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmJpbkluZGV4V3MiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWwiOiJjaGFydHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldCI6ImNoYXJ0cyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0K3htbCI6Im1hY3JvcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5tYWNyb3NoZWV0IjoibWFjcm9zIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmludGxtYWNyb3NoZWV0IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleE1zIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbCI6ImRpYWxvZ3MiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuZGlhbG9nc2hlZXQiOiJkaWFsb2dzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWwiOiJzdHJzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3MiOiJzdHJzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCI6InN0eWxlcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXMiOiJzdHlsZXMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sIjoiY29yZXByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbCI6ImN1c3Rwcm9wcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbCI6ImV4dHByb3BzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbVhtbFByb3BlcnRpZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmN1c3RvbVByb3BlcnR5IjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbCI6ImNvbW1lbnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzIjoiY29tbWVudHMiLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGhyZWFkZWRjb21tZW50cyt4bWwiOiJ0aHJlYWRlZGNvbW1lbnRzIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBlcnNvbit4bWwiOiJwZW9wbGUiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldE1ldGFkYXRhK3htbCI6Im1ldGFkYXRhIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGEiOiJtZXRhZGF0YSIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRjb2xvcnN0eWxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuY2hhcnRleCt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNhbGNDaGFpbiI6ImNhbGNjaGFpbnMiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjQ2hhaW4reG1sIjoiY2FsY2NoYWlucyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnByaW50ZXJTZXR0aW5ncyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVgiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFycyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29ubmVjdGlvbnMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5leHRlcm5hbExpbmsiOiJsaW5rcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsTGluayt4bWwiOiJsaW5rcyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdENhY2hlRGVmaW5pdGlvbiI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZVJlY29yZHMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RDYWNoZURlZmluaXRpb24reG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVSZWNvcmRzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucXVlcnlUYWJsZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeVRhYmxlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudXNlck5hbWVzIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkhlYWRlcnMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uTG9nIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uSGVhZGVycyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25Mb2creG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJOYW1lcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRhYmxlU2luZ2xlQ2VsbHMiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVTaW5nbGVDZWxscyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlciI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlcit4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNsaWNlckNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwud3NTb3J0TWFwIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbCI6InRoZW1lcyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZU92ZXJyaWRlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuVGltZWxpbmUreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5UaW1lbGluZUNhY2hlK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiOiJ2YmEiLCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmUiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llcyI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YSI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuU3VydmV5K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWwiOiJkcmF3aW5ncyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnRzaGFwZXMreG1sIjoiVE9ETyIsImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbUNvbG9ycyt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtRGF0YSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtTGF5b3V0K3htbCI6IlRPRE8iLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1TdHlsZSt4bWwiOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbERyYXdpbmciOiJUT0RPIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiOiJyZWxzIiwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm9sZU9iamVjdCI6IlRPRE8iLCJpbWFnZS9wbmciOiJUT0RPIixzaGVldDoianMifTtmdW5jdGlvbiB6bygpe3JldHVybnt3b3JrYm9va3M6W10sc2hlZXRzOltdLGNoYXJ0czpbXSxkaWFsb2dzOltdLG1hY3JvczpbXSxyZWxzOltdLHN0cnM6W10sY29tbWVudHM6W10sdGhyZWFkZWRjb21tZW50czpbXSxsaW5rczpbXSxjb3JlcHJvcHM6W10sZXh0cHJvcHM6W10sY3VzdHByb3BzOltdLHRoZW1lczpbXSxzdHlsZXM6W10sY2FsY2NoYWluczpbXSx2YmE6W10sZHJhd2luZ3M6W10sbWV0YWRhdGE6W10scGVvcGxlOltdLFRPRE86W10seG1sbnM6IiJ9fWZ1bmN0aW9uICRvKGUpe3ZhciBhPXpvKCk7aWYoIWV8fCFlLm1hdGNoKXJldHVybiBhO3ZhciByPXt9O2lmKChlLm1hdGNoKG5yKXx8W10pLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49b2UodCk7c3dpdGNoKG5bMF0ucmVwbGFjZShxYywiPCIpKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxUeXBlcyI6YS54bWxucz1uWyJ4bWxucyIrKG5bMF0ubWF0Y2goLzwoXHcrKTovKXx8WyIiLCIiXSlbMV1dO2JyZWFrO2Nhc2UiPERlZmF1bHQiOnJbbi5FeHRlbnNpb24udG9Mb3dlckNhc2UoKV09bi5Db250ZW50VHlwZTticmVhaztjYXNlIjxPdmVycmlkZSI6YVtuc1tuLkNvbnRlbnRUeXBlXV0hPT12b2lkIDAmJmFbbnNbbi5Db250ZW50VHlwZV1dLnB1c2gobi5QYXJ0TmFtZSk7YnJlYWt9fSksYS54bWxucyE9PWNvLkNUKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBOYW1lc3BhY2U6ICIrYS54bWxucyk7cmV0dXJuIGEuY2FsY2NoYWluPWEuY2FsY2NoYWlucy5sZW5ndGg+MD9hLmNhbGNjaGFpbnNbMF06IiIsYS5zc3Q9YS5zdHJzLmxlbmd0aD4wP2Euc3Ryc1swXToiIixhLnN0eWxlPWEuc3R5bGVzLmxlbmd0aD4wP2Euc3R5bGVzWzBdOiIiLGEuZGVmYXVsdHM9cixkZWxldGUgYS5jYWxjY2hhaW5zLGF9dmFyIG90PXtXQjoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIsU0hFRVQ6Imh0dHA6Ly9zaGVldGpzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiLEhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2h5cGVybGluayIsVk1MOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmciLFhQQVRIOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1BhdGgiLFhNSVNTOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxFeHRlcm5hbExpbmtQYXRoL3hsUGF0aE1pc3NpbmciLFhMSU5LOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGluayIsQ1hNTDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b21YbWwiLENYTUxQOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2N1c3RvbVhtbFByb3BzIixDTU5UOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NvbW1lbnRzIixDT1JFX1BST1BTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMvbWV0YWRhdGEvY29yZS1wcm9wZXJ0aWVzIixFWFRfUFJPUFM6Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvZXh0ZW5kZWQtcHJvcGVydGllcyIsQ1VTVF9QUk9QUzoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b20tcHJvcGVydGllcyIsU1NUOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3MiLFNUWToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiLFRIRU1FOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lIixDSEFSVDoiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydCIsQ0hBUlRFWDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNC9yZWxhdGlvbnNoaXBzL2NoYXJ0RXgiLENTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NoYXJ0c2hlZXQiLFdTOlsiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiLCJodHRwOi8vcHVybC5vY2xjLm9yZy9vb3htbC9vZmZpY2VEb2N1bWVudC9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCJdLERTOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RpYWxvZ3NoZWV0IixNUzoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3hsTWFjcm9zaGVldCIsSU1HOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlIixEUkFXOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2RyYXdpbmciLFhMTUVUQToiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zaGVldE1ldGFkYXRhIixUQ01OVDoiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3RocmVhZGVkQ29tbWVudCIsUEVPUExFOiJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDE3LzEwL3JlbGF0aW9uc2hpcHMvcGVyc29uIixDT05OOiJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2Nvbm5lY3Rpb25zIixWQkE6Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy92YmFQcm9qZWN0In07ZnVuY3Rpb24gTnQoZSl7dmFyIGE9ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBlLnNsaWNlKDAsYSsxKSsiX3JlbHMvIitlLnNsaWNlKGErMSkrIi5yZWxzIn1mdW5jdGlvbiBYYShlLGEpe3ZhciByPXsiIWlkIjp7fX07aWYoIWUpcmV0dXJuIHI7YS5jaGFyQXQoMCkhPT0iLyImJihhPSIvIithKTt2YXIgdD17fTtyZXR1cm4oZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBpPW9lKG4pO2lmKGlbMF09PT0iPFJlbGF0aW9uc2hpcCIpe3ZhciBmPXt9O2YuVHlwZT1pLlR5cGUsZi5UYXJnZXQ9Q2UoaS5UYXJnZXQpLGYuSWQ9aS5JZCxpLlRhcmdldE1vZGUmJihmLlRhcmdldE1vZGU9aS5UYXJnZXRNb2RlKTt2YXIgcz1pLlRhcmdldE1vZGU9PT0iRXh0ZXJuYWwiP2kuVGFyZ2V0OmhhKGkuVGFyZ2V0LGEpO3Jbc109Zix0W2kuSWRdPWZ9fSksclsiIWlkIl09dCxyfXZhciBLbz0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCI7ZnVuY3Rpb24gam8oZSxhKXtmb3IodmFyIHI9aDAoZSksdCxuO3Q9aXIuZXhlYyhyKTspc3dpdGNoKHRbM10pe2Nhc2UibWFuaWZlc3QiOmJyZWFrO2Nhc2UiZmlsZS1lbnRyeSI6aWYobj1vZSh0WzBdLCExKSxuLnBhdGg9PSIvIiYmbi50eXBlIT09S28pdGhyb3cgbmV3IEVycm9yKCJUaGlzIE9wZW5Eb2N1bWVudCBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2UiZW5jcnlwdGlvbi1kYXRhIjpjYXNlImFsZ29yaXRobSI6Y2FzZSJzdGFydC1rZXktZ2VuZXJhdGlvbiI6Y2FzZSJrZXktZGVyaXZhdGlvbiI6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBPRFMgRW5jcnlwdGlvbiIpO2RlZmF1bHQ6aWYoYSYmYS5XVEYpdGhyb3cgdH19dmFyIGlzPVtbImNwOmNhdGVnb3J5IiwiQ2F0ZWdvcnkiXSxbImNwOmNvbnRlbnRTdGF0dXMiLCJDb250ZW50U3RhdHVzIl0sWyJjcDprZXl3b3JkcyIsIktleXdvcmRzIl0sWyJjcDpsYXN0TW9kaWZpZWRCeSIsIkxhc3RBdXRob3IiXSxbImNwOmxhc3RQcmludGVkIiwiTGFzdFByaW50ZWQiXSxbImNwOnJldmlzaW9uIiwiUmV2TnVtYmVyIl0sWyJjcDp2ZXJzaW9uIiwiVmVyc2lvbiJdLFsiZGM6Y3JlYXRvciIsIkF1dGhvciJdLFsiZGM6ZGVzY3JpcHRpb24iLCJDb21tZW50cyJdLFsiZGM6aWRlbnRpZmllciIsIklkZW50aWZpZXIiXSxbImRjOmxhbmd1YWdlIiwiTGFuZ3VhZ2UiXSxbImRjOnN1YmplY3QiLCJTdWJqZWN0Il0sWyJkYzp0aXRsZSIsIlRpdGxlIl0sWyJkY3Rlcm1zOmNyZWF0ZWQiLCJDcmVhdGVkRGF0ZSIsImRhdGUiXSxbImRjdGVybXM6bW9kaWZpZWQiLCJNb2RpZmllZERhdGUiLCJkYXRlIl1dO2Z1bmN0aW9uIHNzKGUpe3ZhciBhPXt9O2U9VmUoZSk7Zm9yKHZhciByPTA7cjxpcy5sZW5ndGg7KytyKXt2YXIgdD1pc1tyXSxuPUhhKGUsdFswXSk7biE9bnVsbCYmbi5sZW5ndGg+MCYmKGFbdFsxXV09Q2UoblsxXSkpLHRbMl09PT0iZGF0ZSImJmFbdFsxXV0mJihhW3RbMV1dPXhyKGFbdFsxXV0pKX1yZXR1cm4gYX12YXIgWW89W1siQXBwbGljYXRpb24iLCJBcHBsaWNhdGlvbiIsInN0cmluZyJdLFsiQXBwVmVyc2lvbiIsIkFwcFZlcnNpb24iLCJzdHJpbmciXSxbIkNvbXBhbnkiLCJDb21wYW55Iiwic3RyaW5nIl0sWyJEb2NTZWN1cml0eSIsIkRvY1NlY3VyaXR5Iiwic3RyaW5nIl0sWyJNYW5hZ2VyIiwiTWFuYWdlciIsInN0cmluZyJdLFsiSHlwZXJsaW5rc0NoYW5nZWQiLCJIeXBlcmxpbmtzQ2hhbmdlZCIsImJvb2wiXSxbIlNoYXJlZERvYyIsIlNoYXJlZERvYyIsImJvb2wiXSxbIkxpbmtzVXBUb0RhdGUiLCJMaW5rc1VwVG9EYXRlIiwiYm9vbCJdLFsiU2NhbGVDcm9wIiwiU2NhbGVDcm9wIiwiYm9vbCJdLFsiSGVhZGluZ1BhaXJzIiwiSGVhZGluZ1BhaXJzIiwicmF3Il0sWyJUaXRsZXNPZlBhcnRzIiwiVGl0bGVzT2ZQYXJ0cyIsInJhdyJdXTtmdW5jdGlvbiBmcyhlLGEscix0KXt2YXIgbj1bXTtpZih0eXBlb2YgZT09InN0cmluZyIpbj1iaShlLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpbj1uLmNvbmNhdChlW2ldLm1hcChmdW5jdGlvbihsKXtyZXR1cm57djpsfX0pKTt2YXIgZj10eXBlb2YgYT09InN0cmluZyI/YmkoYSx0KS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGwudn0pOmEscz0wLGM9MDtpZihmLmxlbmd0aD4wKWZvcih2YXIgbz0wO28hPT1uLmxlbmd0aDtvKz0yKXtzd2l0Y2goYz0rbltvKzFdLnYsbltvXS52KXtjYXNlIldvcmtzaGVldHMiOmNhc2Ui5bel5L2c6KGoIjpjYXNlItCb0LjRgdGC0YsiOmNhc2Ui2KPZiNix2KfZgiDYp9mE2LnZhdmEIjpjYXNlIuODr+ODvOOCr+OCt+ODvOODiCI6Y2FzZSLXktec15nXldeg15XXqiDXoteR15XXk9eUIjpjYXNlIkFyYmVpdHNibMOkdHRlciI6Y2FzZSLDh2FsxLHFn21hIFNheWZhbGFyxLEiOmNhc2UiRmV1aWxsZXMgZGUgY2FsY3VsIjpjYXNlIkZvZ2xpIGRpIGxhdm9ybyI6Y2FzZSJGb2xoYXMgZGUgY8OhbGN1bG8iOmNhc2UiUGxhbmlsaGFzIjpjYXNlIlJlZ25lYXJrIjpjYXNlIkhvamFzIGRlIGPDoWxjdWxvIjpjYXNlIldlcmtibGFkZW4iOnIuV29ya3NoZWV0cz1jLHIuU2hlZXROYW1lcz1mLnNsaWNlKHMscytjKTticmVhaztjYXNlIk5hbWVkIFJhbmdlcyI6Y2FzZSJSYW5nb3MgY29uIG5vbWJyZSI6Y2FzZSLlkI3liY3ku5jjgY3kuIDopqciOmNhc2UiQmVuYW5udGUgQmVyZWljaGUiOmNhc2UiTmF2bmdpdm5lIG9tcsOlZGVyIjpyLk5hbWVkUmFuZ2VzPWMsci5EZWZpbmVkTmFtZXM9Zi5zbGljZShzLHMrYyk7YnJlYWs7Y2FzZSJDaGFydHMiOmNhc2UiRGlhZ3JhbW1lIjpyLkNoYXJ0c2hlZXRzPWMsci5DaGFydE5hbWVzPWYuc2xpY2UocyxzK2MpO2JyZWFrfXMrPWN9fWZ1bmN0aW9uIEpvKGUsYSxyKXt2YXIgdD17fTtyZXR1cm4gYXx8KGE9e30pLGU9VmUoZSksWW8uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT0oTGUoZSxuWzBdKXx8W10pWzFdO3N3aXRjaChuWzJdKXtjYXNlInN0cmluZyI6aSYmKGFbblsxXV09Q2UoaSkpO2JyZWFrO2Nhc2UiYm9vbCI6YVtuWzFdXT1pPT09InRydWUiO2JyZWFrO2Nhc2UicmF3Ijp2YXIgZj1IYShlLG5bMF0pO2YmJmYubGVuZ3RoPjAmJih0W25bMV1dPWZbMV0pO2JyZWFrfX0pLHQuSGVhZGluZ1BhaXJzJiZ0LlRpdGxlc09mUGFydHMmJmZzKHQuSGVhZGluZ1BhaXJzLHQuVGl0bGVzT2ZQYXJ0cyxhLHIpLGF9dmFyIFpvPS88W148Pl0rPltePF0qL2c7ZnVuY3Rpb24gcW8oZSxhKXt2YXIgcj17fSx0PSIiLG49ZS5tYXRjaChabyk7aWYobilmb3IodmFyIGk9MDtpIT1uLmxlbmd0aDsrK2kpe3ZhciBmPW5baV0scz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPFByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiPHByb3BlcnR5Ijp0PUNlKHMubmFtZSk7YnJlYWs7Y2FzZSI8L3Byb3BlcnR5PiI6dD1udWxsO2JyZWFrO2RlZmF1bHQ6aWYoZi5pbmRleE9mKCI8dnQ6Iik9PT0wKXt2YXIgYz1mLnNwbGl0KCI+Iiksbz1jWzBdLnNsaWNlKDQpLGw9Y1sxXTtzd2l0Y2gobyl7Y2FzZSJscHN0ciI6Y2FzZSJic3RyIjpjYXNlImxwd3N0ciI6clt0XT1DZShsKTticmVhaztjYXNlImJvb2wiOnJbdF09RmUobCk7YnJlYWs7Y2FzZSJpMSI6Y2FzZSJpMiI6Y2FzZSJpNCI6Y2FzZSJpOCI6Y2FzZSJpbnQiOmNhc2UidWludCI6clt0XT1wYXJzZUludChsLDEwKTticmVhaztjYXNlInI0IjpjYXNlInI4IjpjYXNlImRlY2ltYWwiOnJbdF09cGFyc2VGbG9hdChsKTticmVhaztjYXNlImZpbGV0aW1lIjpjYXNlImRhdGUiOnJbdF09eHIobCk7YnJlYWs7Y2FzZSJjeSI6Y2FzZSJlcnJvciI6clt0XT1DZShsKTticmVhaztkZWZhdWx0OmlmKG8uc2xpY2UoLTEpPT0iLyIpYnJlYWs7YS5XVEYmJnR5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuKCJVbmV4cGVjdGVkIixmLG8sYyl9fWVsc2UgaWYoZi5zbGljZSgwLDIpIT09IjwvIil7aWYoYS5XVEYpdGhyb3cgbmV3IEVycm9yKGYpfX19cmV0dXJuIHJ9dmFyIFFvPXtUaXRsZToiVGl0bGUiLFN1YmplY3Q6IlN1YmplY3QiLEF1dGhvcjoiQXV0aG9yIixLZXl3b3JkczoiS2V5d29yZHMiLENvbW1lbnRzOiJEZXNjcmlwdGlvbiIsTGFzdEF1dGhvcjoiTGFzdEF1dGhvciIsUmV2TnVtYmVyOiJSZXZpc2lvbiIsQXBwbGljYXRpb246IkFwcE5hbWUiLExhc3RQcmludGVkOiJMYXN0UHJpbnRlZCIsQ3JlYXRlZERhdGU6IkNyZWF0ZWQiLE1vZGlmaWVkRGF0ZToiTGFzdFNhdmVkIixDYXRlZ29yeToiQ2F0ZWdvcnkiLE1hbmFnZXI6Ik1hbmFnZXIiLENvbXBhbnk6IkNvbXBhbnkiLEFwcFZlcnNpb246IlZlcnNpb24iLENvbnRlbnRTdGF0dXM6IkNvbnRlbnRTdGF0dXMiLElkZW50aWZpZXI6IklkZW50aWZpZXIiLExhbmd1YWdlOiJMYW5ndWFnZSJ9LGxuO2Z1bmN0aW9uIGVsKGUsYSxyKXtsbnx8KGxuPUowKFFvKSksYT1sblthXXx8YSxlW2FdPXJ9ZnVuY3Rpb24gdW4oZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiBuZXcgRGF0ZSgoci8xZTcqTWF0aC5wb3coMiwzMikrYS8xZTctMTE2NDQ0NzM2MDApKjFlMykudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cLjAwMC8sIiIpfWZ1bmN0aW9uIHJsKGUsYSxyKXt2YXIgdD1lLmwsbj1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKTtpZihyKWZvcig7ZS5sLXQmMzspKytlLmw7cmV0dXJuIG59ZnVuY3Rpb24gYWwoZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgwLCJscHdzdHIiKTtyZXR1cm4gciYmKGUubCs9NC0odC5sZW5ndGgrMSYzKSYzKSx0fWZ1bmN0aW9uIGNzKGUsYSxyKXtyZXR1cm4gYT09PTMxP2FsKGUpOnJsKGUsYSxyKX1mdW5jdGlvbiBNdChlLGEscil7cmV0dXJuIGNzKGUsYSxyPT09ITE/MDo0KX1mdW5jdGlvbiB0bChlLGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcigiVnRVbmFsaWduZWRTdHJpbmcgbXVzdCBoYXZlIHBvc2l0aXZlIGxlbmd0aCIpO3JldHVybiBjcyhlLGEsMCl9ZnVuY3Rpb24gbmwoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCg0KSxyPVtdLHQ9MDt0IT1hOysrdCl7dmFyIG49ZS5sO3JbdF09ZS5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpLnJlcGxhY2UoU3IsIiIpLGUubC1uJjImJihlLmwrPTIpfXJldHVybiByfWZ1bmN0aW9uIGlsKGUpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1bXSx0PTA7dCE9YTsrK3Qpclt0XT1lLnJlYWRfc2hpZnQoMCwibHBzdHItY3AiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gcn1mdW5jdGlvbiBzbChlKXt2YXIgYT1lLmwscj1fMChlLHJzKTtlW2UubF09PTAmJmVbZS5sKzFdPT0wJiZlLmwtYSYyJiYoZS5sKz0yKTt2YXIgdD1fMChlLENyKTtyZXR1cm5bcix0XX1mdW5jdGlvbiBmbChlKXtmb3IodmFyIGE9ZS5yZWFkX3NoaWZ0KDQpLHI9W10sdD0wO3Q8YS8yOysrdClyLnB1c2goc2woZSkpO3JldHVybiByfWZ1bmN0aW9uIG9zKGUsYSl7Zm9yKHZhciByPWUucmVhZF9zaGlmdCg0KSx0PXt9LG49MDtuIT1yOysrbil7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLGY9ZS5yZWFkX3NoaWZ0KDQpO3RbaV09ZS5yZWFkX3NoaWZ0KGYsYT09PTEyMDA/InV0ZjE2bGUiOiJ1dGY4IikucmVwbGFjZShTciwiIikucmVwbGFjZShBdCwiISIpLGE9PT0xMjAwJiZmJTImJihlLmwrPTIpfXJldHVybiBlLmwmMyYmKGUubD1lLmw+PjIrMTw8MiksdH1mdW5jdGlvbiBscyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1lLnNsaWNlKGUubCxlLmwrYSk7cmV0dXJuIGUubCs9YSwoYSYzKT4wJiYoZS5sKz00LShhJjMpJjMpLHJ9ZnVuY3Rpb24gY2woZSl7dmFyIGE9e307cmV0dXJuIGEuU2l6ZT1lLnJlYWRfc2hpZnQoNCksZS5sKz1hLlNpemUrMy0oYS5TaXplLTEpJTQsYX1mdW5jdGlvbiBfMChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG4saT1yfHx7fTtpZihlLmwrPTIsYSE9PWVzJiZ0IT09YSYmVW8uaW5kZXhPZihhKT09PS0xJiYhKChhJjY1NTM0KT09NDEyNiYmKHQmNjU1MzQpPT00MTI2KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHR5cGUgIithKyIgc2F3ICIrdCk7c3dpdGNoKGE9PT1lcz90OmEpe2Nhc2UgMjpyZXR1cm4gbj1lLnJlYWRfc2hpZnQoMiwiaSIpLGkucmF3fHwoZS5sKz0yKSxuO2Nhc2UgMzpyZXR1cm4gbj1lLnJlYWRfc2hpZnQoNCwiaSIpLG47Y2FzZSAxMTpyZXR1cm4gZS5yZWFkX3NoaWZ0KDQpIT09MDtjYXNlIDE5OnJldHVybiBuPWUucmVhZF9zaGlmdCg0KSxuO2Nhc2UgMzA6ZS5sKz00LHZhbD1NdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgMzE6ZS5sKz00LHZhbD1NdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgNjQ6cmV0dXJuIHVuKGUpO2Nhc2UgNjU6cmV0dXJuIGxzKGUpO2Nhc2UgNzE6cmV0dXJuIGNsKGUpO2Nhc2UgODA6cmV0dXJuIE10KGUsdCwhaS5yYXcpLnJlcGxhY2UoU3IsIiIpO2Nhc2UgODE6cmV0dXJuIHRsKGUsdCkucmVwbGFjZShTciwiIik7Y2FzZSA0MTA4OnJldHVybiBmbChlKTtjYXNlIDQxMjY6Y2FzZSA0MTI3OnJldHVybiB0PT00MTI3P25sKGUpOmlsKGUpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgIithKyIgIit0KX19ZnVuY3Rpb24gdXMoZSxhKXt2YXIgcj1lLmwsdD1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCksaT1bXSxmPTAscz0wLGM9LTEsbz17fTtmb3IoZj0wO2YhPW47KytmKXt2YXIgbD1lLnJlYWRfc2hpZnQoNCksdT1lLnJlYWRfc2hpZnQoNCk7aVtmXT1bbCx1K3JdfWkuc29ydChmdW5jdGlvbih3LF8pe3JldHVybiB3WzFdLV9bMV19KTt2YXIgeD17fTtmb3IoZj0wO2YhPW47KytmKXtpZihlLmwhPT1pW2ZdWzFdKXt2YXIgaD0hMDtpZihmPjAmJmEpc3dpdGNoKGFbaVtmLTFdWzBdXS50KXtjYXNlIDI6ZS5sKzI9PT1pW2ZdWzFdJiYoZS5sKz0yLGg9ITEpO2JyZWFrO2Nhc2UgODA6ZS5sPD1pW2ZdWzFdJiYoZS5sPWlbZl1bMV0saD0hMSk7YnJlYWs7Y2FzZSA0MTA4OmUubDw9aVtmXVsxXSYmKGUubD1pW2ZdWzFdLGg9ITEpO2JyZWFrfWlmKCghYXx8Zj09MCkmJmUubDw9aVtmXVsxXSYmKGg9ITEsZS5sPWlbZl1bMV0pLGgpdGhyb3cgbmV3IEVycm9yKCJSZWFkIEVycm9yOiBFeHBlY3RlZCBhZGRyZXNzICIraVtmXVsxXSsiIGF0ICIrZS5sKyIgOiIrZil9aWYoYSl7aWYoaVtmXVswXT09MCYmaS5sZW5ndGg+ZisxJiZpW2ZdWzFdPT1pW2YrMV1bMV0pY29udGludWU7dmFyIGc9YVtpW2ZdWzBdXTtpZih4W2cubl09XzAoZSxnLnQse3JhdzohMH0pLGcucD09PSJ2ZXJzaW9uIiYmKHhbZy5uXT1TdHJpbmcoeFtnLm5dPj4xNikrIi4iKygiMDAwMCIrU3RyaW5nKHhbZy5uXSY2NTUzNSkpLnNsaWNlKC00KSksZy5uPT0iQ29kZVBhZ2UiKXN3aXRjaCh4W2cubl0pe2Nhc2UgMDp4W2cubl09MTI1MjtjYXNlIDg3NDpjYXNlIDkzMjpjYXNlIDkzNjpjYXNlIDk0OTpjYXNlIDk1MDpjYXNlIDEyNTA6Y2FzZSAxMjUxOmNhc2UgMTI1MzpjYXNlIDEyNTQ6Y2FzZSAxMjU1OmNhc2UgMTI1NjpjYXNlIDEyNTc6Y2FzZSAxMjU4OmNhc2UgMWU0OmNhc2UgMTIwMDpjYXNlIDEyMDE6Y2FzZSAxMjUyOmNhc2UgNjVlMzpjYXNlLTUzNjpjYXNlIDY1MDAxOmNhc2UtNTM1OllyKHM9eFtnLm5dPj4+MCY2NTUzNSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvZGVQYWdlOiAiK3hbZy5uXSl9fWVsc2UgaWYoaVtmXVswXT09PTEpe2lmKHM9eC5Db2RlUGFnZT1fMChlLG9uKSxZcihzKSxjIT09LTEpe3ZhciBtPWUubDtlLmw9aVtjXVsxXSxvPW9zKGUscyksZS5sPW19fWVsc2UgaWYoaVtmXVswXT09PTApe2lmKHM9PT0wKXtjPWYsZS5sPWlbZisxXVsxXTtjb250aW51ZX1vPW9zKGUscyl9ZWxzZXt2YXIgZD1vW2lbZl1bMF1dLHA7c3dpdGNoKGVbZS5sXSl7Y2FzZSA2NTplLmwrPTQscD1scyhlKTticmVhaztjYXNlIDMwOmUubCs9NCxwPU10KGUsZVtlLmwtNF0pLnJlcGxhY2UoLyhefFteXHUwMDAwXSlcdTAwMDArJC8sIiQxIik7YnJlYWs7Y2FzZSAzMTplLmwrPTQscD1NdChlLGVbZS5sLTRdKS5yZXBsYWNlKC8oXnxbXlx1MDAwMF0pXHUwMDAwKyQvLCIkMSIpO2JyZWFrO2Nhc2UgMzplLmwrPTQscD1lLnJlYWRfc2hpZnQoNCwiaSIpO2JyZWFrO2Nhc2UgMTk6ZS5sKz00LHA9ZS5yZWFkX3NoaWZ0KDQpO2JyZWFrO2Nhc2UgNTplLmwrPTQscD1lLnJlYWRfc2hpZnQoOCwiZiIpO2JyZWFrO2Nhc2UgMTE6ZS5sKz00LHA9YXIoZSw0KTticmVhaztjYXNlIDY0OmUubCs9NCxwPXhyKHVuKGUpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5wYXJzZWQgdmFsdWU6ICIrZVtlLmxdKX14W2RdPXB9fXJldHVybiBlLmw9cit0LHh9ZnVuY3Rpb24gaHMoZSxhLHIpe3ZhciB0PWUuY29udGVudDtpZighdClyZXR1cm57fTtzcih0LDApO3ZhciBuLGksZixzLGM9MDt0LmNoaygiZmVmZiIsIkJ5dGUgT3JkZXI6ICIpLHQucmVhZF9zaGlmdCgyKTt2YXIgbz10LnJlYWRfc2hpZnQoNCksbD10LnJlYWRfc2hpZnQoMTYpO2lmKGwhPT1NZS51dGlscy5jb25zdHMuSEVBREVSX0NMU0lEJiZsIT09cil0aHJvdyBuZXcgRXJyb3IoIkJhZCBQcm9wZXJ0eVNldCBDTFNJRCAiK2wpO2lmKG49dC5yZWFkX3NoaWZ0KDQpLG4hPT0xJiZuIT09Mil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCAjU2V0czogIituKTtpZihpPXQucmVhZF9zaGlmdCgxNikscz10LnJlYWRfc2hpZnQoNCksbj09PTEmJnMhPT10LmwpdGhyb3cgbmV3IEVycm9yKCJMZW5ndGggbWlzbWF0Y2g6ICIrcysiICE9PSAiK3QubCk7bj09PTImJihmPXQucmVhZF9zaGlmdCgxNiksYz10LnJlYWRfc2hpZnQoNCkpO3ZhciB1PXVzKHQsYSkseD17U3lzdGVtSWRlbnRpZmllcjpvfTtmb3IodmFyIGggaW4gdSl4W2hdPXVbaF07aWYoeC5GTVRJRD1pLG49PT0xKXJldHVybiB4O2lmKGMtdC5sPT0yJiYodC5sKz0yKSx0LmwhPT1jKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG1pc21hdGNoIDI6ICIrdC5sKyIgIT09ICIrYyk7dmFyIGc7dHJ5e2c9dXModCxudWxsKX1jYXRjaHt9Zm9yKGggaW4gZyl4W2hdPWdbaF07cmV0dXJuIHguRk1USUQ9W2ksZl0seH1mdW5jdGlvbiBiYShlLGEpe3JldHVybiBlLnJlYWRfc2hpZnQoYSksbnVsbH1mdW5jdGlvbiBvbChlLGEscil7Zm9yKHZhciB0PVtdLG49ZS5sK2E7ZS5sPG47KXQucHVzaChyKGUsbi1lLmwpKTtpZihuIT09ZS5sKXRocm93IG5ldyBFcnJvcigiU2x1cnAgZXJyb3IiKTtyZXR1cm4gdH1mdW5jdGlvbiBhcihlLGEpe3JldHVybiBlLnJlYWRfc2hpZnQoYSk9PT0xfWZ1bmN0aW9uIGVyKGUpe3JldHVybiBlLnJlYWRfc2hpZnQoMiwidSIpfWZ1bmN0aW9uIHhzKGUsYSl7cmV0dXJuIG9sKGUsYSxlcil9ZnVuY3Rpb24gZHMoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiByPT09MT9hOmE9PT0xfWZ1bmN0aW9uIHphKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQociYmci5iaWZmPj0xMj8yOjEpLG49InNiY3MtY29udCIsaT1IcjtpZihyJiZyLmJpZmY+PTgmJihIcj0xMjAwKSwhcnx8ci5iaWZmPT04KXt2YXIgZj1lLnJlYWRfc2hpZnQoMSk7ZiYmKG49ImRiY3MtY29udCIpfWVsc2Ugci5iaWZmPT0xMiYmKG49IndzdHIiKTtyLmJpZmY+PTImJnIuYmlmZjw9NSYmKG49ImNwc3RyIik7dmFyIHM9dD9lLnJlYWRfc2hpZnQodCxuKToiIjtyZXR1cm4gSHI9aSxzfWZ1bmN0aW9uIGxsKGUpe3ZhciBhPUhyO0hyPTEyMDA7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49dCY0LGk9dCY4LGY9MSsodCYxKSxzPTAsYyxvPXt9O2kmJihzPWUucmVhZF9zaGlmdCgyKSksbiYmKGM9ZS5yZWFkX3NoaWZ0KDQpKTt2YXIgbD1mPT0yPyJkYmNzLWNvbnQiOiJzYmNzLWNvbnQiLHU9cj09PTA/IiI6ZS5yZWFkX3NoaWZ0KHIsbCk7cmV0dXJuIGkmJihlLmwrPTQqcyksbiYmKGUubCs9Yyksby50PXUsaXx8KG8ucmF3PSI8dD4iK28udCsiPC90PiIsby5yPW8udCksSHI9YSxvfWZ1bmN0aW9uICRhKGUsYSxyKXt2YXIgdDtpZihyKXtpZihyLmJpZmY+PTImJnIuYmlmZjw9NSlyZXR1cm4gZS5yZWFkX3NoaWZ0KGEsImNwc3RyIik7aWYoci5iaWZmPj0xMilyZXR1cm4gZS5yZWFkX3NoaWZ0KGEsImRiY3MtY29udCIpfXZhciBuPWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gbj09PTA/dD1lLnJlYWRfc2hpZnQoYSwic2Jjcy1jb250Iik6dD1lLnJlYWRfc2hpZnQoYSwiZGJjcy1jb250IiksdH1mdW5jdGlvbiBQdChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpO3JldHVybiB0PT09MD8oci5iaWZmPD04JiZlLmwrKywiIik6JGEoZSx0LHIpfWZ1bmN0aW9uIEthKGUsYSxyKXtpZihyLmJpZmY+NSlyZXR1cm4gUHQoZSxhLHIpO3ZhciB0PWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gdD09PTA/KGUubCsrLCIiKTplLnJlYWRfc2hpZnQodCxyLmJpZmY8PTR8fCFlLmxlbnM/ImNwc3RyIjoic2Jjcy1jb250Iil9ZnVuY3Rpb24gdWwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpO2UubCsrO3ZhciByPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sKz0yLFthLHJdfWZ1bmN0aW9uIGhsKGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUubCx0PSExO2E+MjQmJihlLmwrPWEtMjQsZS5yZWFkX3NoaWZ0KDE2KT09PSI3OTU4ODFmNDNiMWQ3ZjQ4YWYyYzgyNWRjNDg1Mjc2MyImJih0PSEwKSxlLmw9cik7dmFyIG49ZS5yZWFkX3NoaWZ0KCh0P2EtMjQ6YSk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gdCYmKGUubCs9MjQpLG59ZnVuY3Rpb24geGwoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCgyKSxyPSIiO2EtLSA+MDspcis9Ii4uLyI7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKTtpZihlLmwrPTIsZS5yZWFkX3NoaWZ0KDIpIT01NzAwNSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBGaWxlTW9uaWtlciIpO3ZhciBuPWUucmVhZF9zaGlmdCg0KTtpZihuPT09MClyZXR1cm4gcit0LnJlcGxhY2UoL1xcL2csIi8iKTt2YXIgaT1lLnJlYWRfc2hpZnQoNCk7aWYoZS5yZWFkX3NoaWZ0KDIpIT0zKXRocm93IG5ldyBFcnJvcigiQmFkIEZpbGVNb25pa2VyIik7dmFyIGY9ZS5yZWFkX3NoaWZ0KGk+PjEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKTtyZXR1cm4gcitmfWZ1bmN0aW9uIGRsKGUsYSl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDE2KTtzd2l0Y2gocil7Y2FzZSJlMGM5ZWE3OWY5YmFjZTExOGM4MjAwYWEwMDRiYTkwYiI6cmV0dXJuIGhsKGUpO2Nhc2UiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDYiOnJldHVybiB4bChlKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTW9uaWtlciAiK3IpfX1mdW5jdGlvbiBrMChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoNCkscj1hPjA/ZS5yZWFkX3NoaWZ0KGEsInV0ZjE2bGUiKS5yZXBsYWNlKFNyLCIiKToiIjtyZXR1cm4gcn1mdW5jdGlvbiB2bChlLGEpe3ZhciByPWUubCthLHQ9ZS5yZWFkX3NoaWZ0KDQpO2lmKHQhPT0yKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246ICIrdCk7dmFyIG49ZS5yZWFkX3NoaWZ0KDIpO2UubCs9Mjt2YXIgaSxmLHMsYyxvPSIiLGwsdTtuJjE2JiYoaT1rMChlLHItZS5sKSksbiYxMjgmJihmPWswKGUsci1lLmwpKSwobiYyNTcpPT09MjU3JiYocz1rMChlLHItZS5sKSksKG4mMjU3KT09PTEmJihjPWRsKGUsci1lLmwpKSxuJjgmJihvPWswKGUsci1lLmwpKSxuJjMyJiYobD1lLnJlYWRfc2hpZnQoMTYpKSxuJjY0JiYodT11bihlKSksZS5sPXI7dmFyIHg9Znx8c3x8Y3x8IiI7eCYmbyYmKHgrPSIjIitvKSx4fHwoeD0iIyIrbyksbiYyJiZ4LmNoYXJBdCgwKT09Ii8iJiZ4LmNoYXJBdCgxKSE9Ii8iJiYoeD0iZmlsZTovLyIreCk7dmFyIGg9e1RhcmdldDp4fTtyZXR1cm4gbCYmKGguZ3VpZD1sKSx1JiYoaC50aW1lPXUpLGkmJihoLlRvb2x0aXA9aSksaH1mdW5jdGlvbiB2cyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSkscj1lLnJlYWRfc2hpZnQoMSksdD1lLnJlYWRfc2hpZnQoMSksbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2Escix0LG5dfWZ1bmN0aW9uIHBzKGUsYSl7dmFyIHI9dnMoZSk7cmV0dXJuIHJbM109MCxyfWZ1bmN0aW9uIHFyKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT17cjp0LGM6bixpeGZlOjB9O2lmKHImJnIuYmlmZj09Mnx8YT09Nyl7dmFyIGY9ZS5yZWFkX3NoaWZ0KDEpO2kuaXhmZT1mJjYzLGUubCs9Mn1lbHNlIGkuaXhmZT1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGl9ZnVuY3Rpb24gcGwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTgse3R5cGU6YSxmbGFnczpyfX1mdW5jdGlvbiBnbChlLGEscil7cmV0dXJuIGE9PT0wPyIiOkthKGUsYSxyKX1mdW5jdGlvbiBtbChlLGEscil7dmFyIHQ9ci5iaWZmPjg/NDoyLG49ZS5yZWFkX3NoaWZ0KHQpLGk9ZS5yZWFkX3NoaWZ0KHQsImkiKSxmPWUucmVhZF9zaGlmdCh0LCJpIik7cmV0dXJuW24saSxmXX1mdW5jdGlvbiBncyhlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMikscj12MChlKTtyZXR1cm5bYSxyXX1mdW5jdGlvbiBfbChlLGEscil7ZS5sKz00LGEtPTQ7dmFyIHQ9ZS5sK2Esbj16YShlLGEsciksaT1lLnJlYWRfc2hpZnQoMik7aWYodC09ZS5sLGkhPT10KXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIEFkZGluVWRmOiBwYWRkaW5nID0gIit0KyIgIT0gIitpKTtyZXR1cm4gZS5sKz1pLG59ZnVuY3Rpb24gdzAoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntzOntjOnQscjphfSxlOntjOm4scn19fWZ1bmN0aW9uIG1zKGUpe3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWUucmVhZF9zaGlmdCgxKSxuPWUucmVhZF9zaGlmdCgxKTtyZXR1cm57czp7Yzp0LHI6YX0sZTp7YzpuLHJ9fX12YXIga2w9bXM7ZnVuY3Rpb24gX3MoZSl7ZS5sKz00O3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gZS5sKz0xMixbcixhLHRdfWZ1bmN0aW9uIHdsKGUpe3ZhciBhPXt9O3JldHVybiBlLmwrPTQsZS5sKz0xNixhLmZTaGFyZWROb3RlPWUucmVhZF9zaGlmdCgyKSxlLmwrPTQsYX1mdW5jdGlvbiBGbChlKXt2YXIgYT17fTtyZXR1cm4gZS5sKz00LGUuY2Y9ZS5yZWFkX3NoaWZ0KDIpLGF9ZnVuY3Rpb24ga3IoZSl7ZS5sKz0yLGUubCs9ZS5yZWFkX3NoaWZ0KDIpfXZhciBUbD17MDprciw0OmtyLDU6a3IsNjprciw3OkZsLDg6a3IsOTprciwxMDprciwxMTprciwxMjprciwxMzp3bCwxNDprciwxNTprciwxNjprciwxNzprciwxODprciwxOTprciwyMDprciwyMTpfc307ZnVuY3Rpb24gRWwoZSxhKXtmb3IodmFyIHI9ZS5sK2EsdD1bXTtlLmw8cjspe3ZhciBuPWUucmVhZF9zaGlmdCgyKTtlLmwtPTI7dHJ5e3Rbbl09VGxbbl0oZSxyLWUubCl9Y2F0Y2h7cmV0dXJuIGUubD1yLHR9fXJldHVybiBlLmwhPXImJihlLmw9ciksdH1mdW5jdGlvbiBGMChlLGEpe3ZhciByPXtCSUZGVmVyOjAsZHQ6MH07c3dpdGNoKHIuQklGRlZlcj1lLnJlYWRfc2hpZnQoMiksYS09MixhPj0yJiYoci5kdD1lLnJlYWRfc2hpZnQoMiksZS5sLT0yKSxyLkJJRkZWZXIpe2Nhc2UgMTUzNjpjYXNlIDEyODA6Y2FzZSAxMDI0OmNhc2UgNzY4OmNhc2UgNTEyOmNhc2UgMjpjYXNlIDc6YnJlYWs7ZGVmYXVsdDppZihhPjYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIEJJRkYgVmVyICIrci5CSUZGVmVyKX1yZXR1cm4gZS5yZWFkX3NoaWZ0KGEpLHJ9ZnVuY3Rpb24gQWwoZSxhKXtyZXR1cm4gYT09PTB8fGUucmVhZF9zaGlmdCgyKSwxMjAwfWZ1bmN0aW9uIHlsKGUsYSxyKXtpZihyLmVuYylyZXR1cm4gZS5sKz1hLCIiO3ZhciB0PWUubCxuPUthKGUsMCxyKTtyZXR1cm4gZS5yZWFkX3NoaWZ0KGErdC1lLmwpLG59ZnVuY3Rpb24gU2woZSxhLHIpe3ZhciB0PXImJnIuYmlmZj09OHx8YT09Mj9lLnJlYWRfc2hpZnQoMik6KGUubCs9YSwwKTtyZXR1cm57ZkRpYWxvZzp0JjE2LGZCZWxvdzp0JjY0LGZSaWdodDp0JjEyOH19ZnVuY3Rpb24gQ2woZSxhLHIpe3ZhciB0PSIiO2lmKHIuYmlmZj09NClyZXR1cm4gdD16YShlLDAsciksdC5sZW5ndGg9PT0wJiYodD0iU2hlZXQxIikse25hbWU6dH07dmFyIG49ZS5yZWFkX3NoaWZ0KDQpLGk9ZS5yZWFkX3NoaWZ0KDEpJjMsZj1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGYpe2Nhc2UgMDpmPSJXb3Jrc2hlZXQiO2JyZWFrO2Nhc2UgMTpmPSJNYWNyb3NoZWV0IjticmVhaztjYXNlIDI6Zj0iQ2hhcnRzaGVldCI7YnJlYWs7Y2FzZSA2OmY9IlZCQU1vZHVsZSI7YnJlYWt9cmV0dXJuIHQ9emEoZSwwLHIpLHQubGVuZ3RoPT09MCYmKHQ9IlNoZWV0MSIpLHtwb3M6bixoczppLGR0OmYsbmFtZTp0fX1mdW5jdGlvbiBibChlLGEpe2Zvcih2YXIgcj1lLmwrYSx0PWUucmVhZF9zaGlmdCg0KSxuPWUucmVhZF9zaGlmdCg0KSxpPVtdLGY9MDtmIT1uJiZlLmw8cjsrK2YpaS5wdXNoKGxsKGUpKTtyZXR1cm4gaS5Db3VudD10LGkuVW5pcXVlPW4saX1mdW5jdGlvbiBJbChlLGEpe3ZhciByPXt9O3JldHVybiByLmRzc3Q9ZS5yZWFkX3NoaWZ0KDIpLGUubCs9YS0yLHJ9ZnVuY3Rpb24gRGwoZSl7dmFyIGE9e307YS5yPWUucmVhZF9zaGlmdCgyKSxhLmM9ZS5yZWFkX3NoaWZ0KDIpLGEuY250PWUucmVhZF9zaGlmdCgyKS1hLmM7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpO2UubCs9NDt2YXIgdD1lLnJlYWRfc2hpZnQoMSk7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyZXR1cm4gYS5peGZlPW4mNDA5NSxhLmZsYWdzPW4+PjEyJjE1LHQmNyYmKGEubGV2ZWw9dCY3KSx0JjMyJiYoYS5oaWRkZW49ITApLHQmNjQmJihhLmhwdD1yLzIwKSxhfWZ1bmN0aW9uIFJsKGUpe3ZhciBhPXBsKGUpO2lmKGEudHlwZSE9MjIxMSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRnV0dXJlIFJlY29yZCAiK2EudHlwZSk7dmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVybiByIT09MH1mdW5jdGlvbiBPbChlKXtyZXR1cm4gZS5yZWFkX3NoaWZ0KDIpLGUucmVhZF9zaGlmdCg0KX1mdW5jdGlvbiBrcyhlLGEscil7dmFyIHQ9MDtyJiZyLmJpZmY9PTJ8fCh0PWUucmVhZF9zaGlmdCgyKSk7dmFyIG49ZS5yZWFkX3NoaWZ0KDIpO3ImJnIuYmlmZj09MiYmKHQ9MS0obj4+MTUpLG4mPTMyNzY3KTt2YXIgaT17VW5zeW5jZWQ6dCYxLER5WmVybzoodCYyKT4+MSxFeEFzYzoodCY0KT4+MixFeERzYzoodCY4KT4+M307cmV0dXJuW2ksbl19ZnVuY3Rpb24gTmwoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KDIpLHM9ZS5yZWFkX3NoaWZ0KDIpLGM9ZS5yZWFkX3NoaWZ0KDIpLG89ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntQb3M6W2Escl0sRGltOlt0LG5dLEZsYWdzOmksQ3VyVGFiOmYsRmlyc3RUYWI6cyxTZWxlY3RlZDpjLFRhYlJhdGlvOm99fWZ1bmN0aW9uIE1sKGUsYSxyKXtpZihyJiZyLmJpZmY+PTImJnIuYmlmZjw1KXJldHVybnt9O3ZhciB0PWUucmVhZF9zaGlmdCgyKTtyZXR1cm57UlRMOnQmNjR9fWZ1bmN0aW9uIFBsKCl7fWZ1bmN0aW9uIExsKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXtkeUhlaWdodDplLnJlYWRfc2hpZnQoMiksZmw6ZS5yZWFkX3NoaWZ0KDIpfTtzd2l0Y2gobi5zej1uLmR5SGVpZ2h0LzIwLG4uaXRhbGljPSEhKG4uZmwmMiksbi5zdHJpa2U9ISEobi5mbCY4KSxuLm91dGxpbmU9ISEobi5mbCYxNiksbi5zaGFkb3c9ISEobi5mbCYzMiksbi5jb25kZW5zZT0hIShuLmZsJjY0KSxuLmV4dGVuZD0hIShuLmZsJjEyOCksciYmci5iaWZmfHw4KXtjYXNlIDI6YnJlYWs7Y2FzZSAzOmNhc2UgNDpuLmljdj1lLnJlYWRfc2hpZnQoMik7YnJlYWs7ZGVmYXVsdDpuLmljdj1lLnJlYWRfc2hpZnQoMiksbi5ibHM9ZS5yZWFkX3NoaWZ0KDIpLG4uYm9sZD1uLmJscz49NzAwLG4udmVydEFsaWduPWUucmVhZF9zaGlmdCgyKSxuLnVuZGVybGluZT1lLnJlYWRfc2hpZnQoMSksbi5mYW1pbHk9ZS5yZWFkX3NoaWZ0KDEpLG4uY2hhcnNldD1lLnJlYWRfc2hpZnQoMSksZS5sKys7YnJlYWt9cmV0dXJuIG4ubmFtZT1lLmw8dD96YShlLHQtZS5sLHIpOiIiLG59ZnVuY3Rpb24gQmwoZSxhLHIpe3ZhciB0PXFyKGUsYSxyKTtyZXR1cm4gdC5pc3N0PWUucmVhZF9zaGlmdCg0KSx0fWZ1bmN0aW9uIFVsKGUsYSxyKXtyLmJpZmZndWVzcyYmci5iaWZmPT0yJiYoci5iaWZmPTUpO3ZhciB0PWUubCthLG49cXIoZSxhLHIpLGk9UHQoZSx0LWUubCxyKTtyZXR1cm4gbi52YWw9aSxufWZ1bmN0aW9uIEhsKGUsYSxyKXt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1LYShlLDAscik7cmV0dXJuW3Qsbl19dmFyIFdsPUthO2Z1bmN0aW9uIHdzKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXIuYmlmZj09OHx8IXIuYmlmZj80OjIsaT1lLnJlYWRfc2hpZnQobiksZj1lLnJlYWRfc2hpZnQobikscz1lLnJlYWRfc2hpZnQoMiksYz1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubD10LHtzOntyOmksYzpzfSxlOntyOmYsY319fWZ1bmN0aW9uIFZsKGUpe3ZhciBhPWUucmVhZF9zaGlmdCgyKSxyPWUucmVhZF9zaGlmdCgyKSx0PWdzKGUpO3JldHVybntyOmEsYzpyLGl4ZmU6dFswXSxya251bTp0WzFdfX1mdW5jdGlvbiBHbChlLGEpe2Zvcih2YXIgcj1lLmwrYS0yLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9W107ZS5sPHI7KWkucHVzaChncyhlKSk7aWYoZS5sIT09cil0aHJvdyBuZXcgRXJyb3IoIk11bFJLIHJlYWQgZXJyb3IiKTt2YXIgZj1lLnJlYWRfc2hpZnQoMik7aWYoaS5sZW5ndGghPWYtbisxKXRocm93IG5ldyBFcnJvcigiTXVsUksgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6dCxjOm4sQzpmLHJrcmVjOml9fWZ1bmN0aW9uIFhsKGUsYSl7Zm9yKHZhciByPWUubCthLTIsdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1bXTtlLmw8cjspaS5wdXNoKGUucmVhZF9zaGlmdCgyKSk7aWYoZS5sIT09cil0aHJvdyBuZXcgRXJyb3IoIk11bEJsYW5rIHJlYWQgZXJyb3IiKTt2YXIgZj1lLnJlYWRfc2hpZnQoMik7aWYoaS5sZW5ndGghPWYtbisxKXRocm93IG5ldyBFcnJvcigiTXVsQmxhbmsgbGVuZ3RoIG1pc21hdGNoIik7cmV0dXJue3I6dCxjOm4sQzpmLGl4ZmU6aX19ZnVuY3Rpb24gemwoZSxhLHIsdCl7dmFyIG49e30saT1lLnJlYWRfc2hpZnQoNCksZj1lLnJlYWRfc2hpZnQoNCkscz1lLnJlYWRfc2hpZnQoNCksYz1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIG4ucGF0dGVyblR5cGU9Vm9bcz4+MjZdLG4uYWxjPWkmNyxuLmZXcmFwPWk+PjMmMSxuLmFsY1Y9aT4+NCY3LG4uZkp1c3RMYXN0PWk+PjcmMSxuLnRyb3Q9aT4+OCYyNTUsbi5jSW5kZW50PWk+PjE2JjE1LG4uZlNocmlua1RvRml0PWk+PjIwJjEsbi5pUmVhZE9yZGVyPWk+PjIyJjIsbi5mQXRyTnVtPWk+PjI2JjEsbi5mQXRyRm50PWk+PjI3JjEsbi5mQXRyQWxjPWk+PjI4JjEsbi5mQXRyQmRyPWk+PjI5JjEsbi5mQXRyUGF0PWk+PjMwJjEsbi5mQXRyUHJvdD1pPj4zMSYxLG4uZGdMZWZ0PWYmMTUsbi5kZ1JpZ2h0PWY+PjQmMTUsbi5kZ1RvcD1mPj44JjE1LG4uZGdCb3R0b209Zj4+MTImMTUsbi5pY3ZMZWZ0PWY+PjE2JjEyNyxuLmljdlJpZ2h0PWY+PjIzJjEyNyxuLmdyYml0RGlhZz1mPj4zMCYzLG4uaWN2VG9wPXMmMTI3LG4uaWN2Qm90dG9tPXM+PjcmMTI3LG4uaWN2RGlhZz1zPj4xNCYxMjcsbi5kZ0RpYWc9cz4+MjEmMTUsbi5pY3ZGb3JlPWMmMTI3LG4uaWN2QmFjaz1jPj43JjEyNyxuLmZzeEJ1dHRvbj1jPj4xNCYxLG59ZnVuY3Rpb24gJGwoZSxhLHIpe3ZhciB0PXt9O3JldHVybiB0LmlmbnQ9ZS5yZWFkX3NoaWZ0KDIpLHQubnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDIpLHQuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLHQubG9ja2VkPSEhKHQuZmxhZ3MmMSksdC5oaWRkZW49ISEodC5mbGFncyYyKSx0LmZTdHlsZT10LmZsYWdzPj4yJjEsdC54ZklkPXQuaXhmZVBhcmVudD10LmZsYWdzPj40JjQwOTUsYS09Nix0LmRhdGE9emwoZSxhLHQuZlN0eWxlKSx0fWZ1bmN0aW9uIEtsKGUpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDEpLGUubCsrLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDEpLGEubnVtRm10SWQ9YS5mbGFncyY2MyxhLmZsYWdzPj49NixhLmZTdHlsZT0wLGEuZGF0YT17fSxhfWZ1bmN0aW9uIGpsKGUpe3ZhciBhPXt9O3JldHVybiBhLmlmbnQ9ZS5yZWFkX3NoaWZ0KDEpLGEubnVtRm10SWQ9ZS5yZWFkX3NoaWZ0KDEpLGEuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpLGEuZlN0eWxlPWEuZmxhZ3M+PjImMSxhLmRhdGE9e30sYX1mdW5jdGlvbiBZbChlKXt2YXIgYT17fTtyZXR1cm4gYS5pZm50PWUucmVhZF9zaGlmdCgxKSxhLm51bUZtdElkPWUucmVhZF9zaGlmdCgxKSxhLmZsYWdzPWUucmVhZF9zaGlmdCgyKSxhLmZTdHlsZT1hLmZsYWdzPj4yJjEsYS5kYXRhPXt9LGF9ZnVuY3Rpb24gSmwoZSl7ZS5sKz00O3ZhciBhPVtlLnJlYWRfc2hpZnQoMiksZS5yZWFkX3NoaWZ0KDIpXTtpZihhWzBdIT09MCYmYVswXS0tLGFbMV0hPT0wJiZhWzFdLS0sYVswXT43fHxhWzFdPjcpdGhyb3cgbmV3IEVycm9yKCJCYWQgR3V0dGVyczogIithLmpvaW4oInwiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gWmwoZSxhLHIpe3ZhciB0PXFyKGUsNixyKSxuPWRzKGUpO3JldHVybiB0LnZhbD1uLHQudD1uPT09ITB8fG49PT0hMT8iYiI6ImUiLHR9ZnVuY3Rpb24gcWwoZSxhLHIpe3IuYmlmZmd1ZXNzJiZyLmJpZmY9PTImJihyLmJpZmY9NSk7dmFyIHQ9cXIoZSw2LHIpLG49X3IoZSk7cmV0dXJuIHQudmFsPW4sdH12YXIgRnM9Z2w7ZnVuY3Rpb24gUWwoZSxhLHIpe3ZhciB0PWUubCthLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpO2lmKHIuc2JjY2g9aSxpPT0xMDI1fHxpPT0xNDg0OSlyZXR1cm5baSxuXTtpZihpPDF8fGk+MjU1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTdXBCb29rIHR5cGU6ICIraSk7Zm9yKHZhciBmPSRhKGUsaSkscz1bXTt0PmUubDspcy5wdXNoKFB0KGUsdC1lLmwscikpO3JldHVybltpLG4sZixzXX1mdW5jdGlvbiBUcyhlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG4saT17ZkJ1aWx0SW46dCYxLGZXYW50QWR2aXNlOnQ+Pj4xJjEsZldhbnRQaWN0OnQ+Pj4yJjEsZk9sZTp0Pj4+MyYxLGZPbGVMaW5rOnQ+Pj40JjEsY2Y6dD4+PjUmMTAyMyxmSWNvbjp0Pj4+MTUmMX07cmV0dXJuIHIuc2JjY2g9PT0xNDg0OSYmKG49X2woZSxhLTIscikpLGkuYm9keT1ufHxlLnJlYWRfc2hpZnQoYS0yKSx0eXBlb2Ygbj09InN0cmluZyImJihpLk5hbWU9biksaX1mdW5jdGlvbiBFcyhlLGEscil7dmFyIHQ9ZS5sK2Esbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoMSksZj1lLnJlYWRfc2hpZnQoMSkscz1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6MiksYz0wOyghcnx8ci5iaWZmPj01KSYmKHIuYmlmZiE9NSYmKGUubCs9MiksYz1lLnJlYWRfc2hpZnQoMiksci5iaWZmPT01JiYoZS5sKz0yKSxlLmwrPTQpO3ZhciBvPSRhKGUsZixyKTtuJjMyJiYobz10c1tvLmNoYXJDb2RlQXQoMCldKTt2YXIgbD10LWUubDtyJiZyLmJpZmY9PTImJi0tbDt2YXIgdT10PT1lLmx8fHM9PT0wfHwhKGw+MCk/W106WngoZSxsLHIscyk7cmV0dXJue2NoS2V5OmksTmFtZTpvLGl0YWI6YyxyZ2NlOnV9fWZ1bmN0aW9uIEFzKGUsYSxyKXtpZihyLmJpZmY8OHx8IShyLmJpZmY+OCkmJmE9PWVbZS5sXSsoZVtlLmwrMV09PTM/MTowKSsxKXJldHVybiB5cyhlLGEscik7Zm9yKHZhciB0PVtdLG49ZS5sK2EsaT1lLnJlYWRfc2hpZnQoci5iaWZmPjg/NDoyKTtpLS0hPT0wOyl0LnB1c2gobWwoZSxyLmJpZmY+OD8xMjo2LHIpKTtpZihlLmwhPW4pdGhyb3cgbmV3IEVycm9yKCJCYWQgRXh0ZXJuU2hlZXQ6ICIrZS5sKyIgIT0gIituKTtyZXR1cm4gdH1mdW5jdGlvbiB5cyhlLGEscil7ZVtlLmwrMV09PTMmJmVbZS5sXSsrO3ZhciB0PXphKGUsYSxyKTtyZXR1cm4gdC5jaGFyQ29kZUF0KDApPT0zP3Quc2xpY2UoMSk6dH1mdW5jdGlvbiBldShlLGEscil7aWYoci5iaWZmPDgpe2UubCs9YTtyZXR1cm59dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9JGEoZSx0LHIpLGY9JGEoZSxuLHIpO3JldHVybltpLGZdfWZ1bmN0aW9uIHJ1KGUsYSxyKXt2YXIgdD1tcyhlKTtlLmwrKzt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGEtPTgsW3F4KGUsYSxyKSxuLHRdfWZ1bmN0aW9uIFNzKGUsYSxyKXt2YXIgdD1rbChlKTtzd2l0Y2goci5iaWZmKXtjYXNlIDI6ZS5sKyssYS09NzticmVhaztjYXNlIDM6Y2FzZSA0OmUubCs9MixhLT04O2JyZWFrO2RlZmF1bHQ6ZS5sKz02LGEtPTEyfXJldHVyblt0LFl4KGUsYSxyKV19ZnVuY3Rpb24gYXUoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDQpIT09MCxyPWUucmVhZF9zaGlmdCg0KSE9PTAsdD1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuW2Escix0XX1mdW5jdGlvbiB0dShlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KDIpLHM9S2EoZSwwLHIpO3JldHVyblt7cjp0LGM6bn0scyxmLGldfWZ1bmN0aW9uIG51KGUsYSxyKXtpZihyJiZyLmJpZmY8OCl7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO2lmKHQ9PTY1NTM1fHx0PT0tMSlyZXR1cm47dmFyIGk9ZS5yZWFkX3NoaWZ0KDIpLGY9ZS5yZWFkX3NoaWZ0KE1hdGgubWluKGksMjA0OCksImNwc3RyIik7cmV0dXJuW3tyOnQsYzpufSxmXX1yZXR1cm4gdHUoZSxhLHIpfWZ1bmN0aW9uIGl1KGUsYSl7Zm9yKHZhciByPVtdLHQ9ZS5yZWFkX3NoaWZ0KDIpO3QtLTspci5wdXNoKHcwKGUpKTtyZXR1cm4gcn1mdW5jdGlvbiBzdShlLGEscil7aWYociYmci5iaWZmPDgpcmV0dXJuIGN1KGUsYSxyKTt2YXIgdD1fcyhlKSxuPUVsKGUsYS0yMix0WzFdKTtyZXR1cm57Y21vOnQsZnQ6bn19dmFyIGZ1PXs4OmZ1bmN0aW9uKGUsYSl7dmFyIHI9ZS5sK2E7ZS5sKz0xMDt2YXIgdD1lLnJlYWRfc2hpZnQoMik7ZS5sKz00LGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGUubCs9bixlLmw9cix7Zm10OnR9fX07ZnVuY3Rpb24gY3UoZSxhLHIpe2UubCs9NDt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoMik7ZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz0yLGUubCs9MixlLmwrPTIsZS5sKz02LGEtPTM2O3ZhciBmPVtdO3JldHVybiBmLnB1c2goKGZ1W3RdfHx5cikoZSxhLHIpKSx7Y21vOltuLHQsaV0sZnQ6Zn19ZnVuY3Rpb24gb3UoZSxhLHIpe3ZhciB0PWUubCxuPSIiO3RyeXtlLmwrPTQ7dmFyIGk9KHIubGFzdG9ianx8e2NtbzpbMCwwXX0pLmNtb1sxXSxmO1swLDUsNywxMSwxMiwxNF0uaW5kZXhPZihpKT09LTE/ZS5sKz02OmY9dWwoZSw2LHIpO3ZhciBzPWUucmVhZF9zaGlmdCgyKTtlLnJlYWRfc2hpZnQoMiksZXIoZSwyKTt2YXIgYz1lLnJlYWRfc2hpZnQoMik7ZS5sKz1jO2Zvcih2YXIgbz0xO288ZS5sZW5zLmxlbmd0aC0xOysrbyl7aWYoZS5sLXQhPWUubGVuc1tvXSl0aHJvdyBuZXcgRXJyb3IoIlR4TzogYmFkIGNvbnRpbnVlIHJlY29yZCIpO3ZhciBsPWVbZS5sXSx1PSRhKGUsZS5sZW5zW28rMV0tZS5sZW5zW29dLTEpO2lmKG4rPXUsbi5sZW5ndGg+PShsP3M6MipzKSlicmVha31pZihuLmxlbmd0aCE9PXMmJm4ubGVuZ3RoIT09cyoyKXRocm93IG5ldyBFcnJvcigiY2NoVGV4dDogIitzKyIgIT0gIituLmxlbmd0aCk7cmV0dXJuIGUubD10K2Ese3Q6bn19Y2F0Y2h7cmV0dXJuIGUubD10K2Ese3Q6bn19fWZ1bmN0aW9uIGx1KGUsYSl7dmFyIHI9dzAoZSk7ZS5sKz0xNjt2YXIgdD12bChlLGEtMjQpO3JldHVybltyLHRdfWZ1bmN0aW9uIHV1KGUsYSl7ZS5yZWFkX3NoaWZ0KDIpO3ZhciByPXcwKGUpLHQ9ZS5yZWFkX3NoaWZ0KChhLTEwKS8yLCJkYmNzLWNvbnQiKTtyZXR1cm4gdD10LnJlcGxhY2UoU3IsIiIpLFtyLHRdfWZ1bmN0aW9uIGh1KGUpe3ZhciBhPVswLDBdLHI7cmV0dXJuIHI9ZS5yZWFkX3NoaWZ0KDIpLGFbMF09YXNbcl18fHIscj1lLnJlYWRfc2hpZnQoMiksYVsxXT1hc1tyXXx8cixhfWZ1bmN0aW9uIHh1KGUpe2Zvcih2YXIgYT1lLnJlYWRfc2hpZnQoMikscj1bXTthLS0gPjA7KXIucHVzaChwcyhlKSk7cmV0dXJuIHJ9ZnVuY3Rpb24gZHUoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCgyKSxyPVtdO2EtLSA+MDspci5wdXNoKHBzKGUpKTtyZXR1cm4gcn1mdW5jdGlvbiB2dShlKXtlLmwrPTI7dmFyIGE9e2N4ZnM6MCxjcmM6MH07cmV0dXJuIGEuY3hmcz1lLnJlYWRfc2hpZnQoMiksYS5jcmM9ZS5yZWFkX3NoaWZ0KDQpLGF9ZnVuY3Rpb24gQ3MoZSxhLHIpe2lmKCFyLmNlbGxTdHlsZXMpcmV0dXJuIHlyKGUsYSk7dmFyIHQ9ciYmci5iaWZmPj0xMj80OjIsbj1lLnJlYWRfc2hpZnQodCksaT1lLnJlYWRfc2hpZnQodCksZj1lLnJlYWRfc2hpZnQodCkscz1lLnJlYWRfc2hpZnQodCksYz1lLnJlYWRfc2hpZnQoMik7dD09MiYmKGUubCs9Mik7dmFyIG89e3M6bixlOmksdzpmLGl4ZmU6cyxmbGFnczpjfTtyZXR1cm4oci5iaWZmPj01fHwhci5iaWZmKSYmKG8ubGV2ZWw9Yz4+OCY3KSxvfWZ1bmN0aW9uIHB1KGUsYSl7dmFyIHI9e307cmV0dXJuIGE8MzJ8fChlLmwrPTE2LHIuaGVhZGVyPV9yKGUpLHIuZm9vdGVyPV9yKGUpLGUubCs9Mikscn1mdW5jdGlvbiBndShlLGEscil7dmFyIHQ9e2FyZWE6ITF9O2lmKHIuYmlmZiE9NSlyZXR1cm4gZS5sKz1hLHQ7dmFyIG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybiBlLmwrPTMsbiYxNiYmKHQuYXJlYT0hMCksdH12YXIgbXU9cXIsX3U9eHMsa3U9UHQ7ZnVuY3Rpb24gd3UoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDQpLG49e2ZtdDphLGVudjpyLGxlbjp0LGRhdGE6ZS5zbGljZShlLmwsZS5sK3QpfTtyZXR1cm4gZS5sKz10LG59ZnVuY3Rpb24gRnUoZSxhLHIpe3IuYmlmZmd1ZXNzJiZyLmJpZmY9PTUmJihyLmJpZmY9Mik7dmFyIHQ9cXIoZSw3LHIpLG49S2EoZSxhLTcscik7cmV0dXJuIHQudD0ic3RyIix0LnZhbD1uLHR9ZnVuY3Rpb24gVHUoZSxhLHIpe3ZhciB0PXFyKGUsNyxyKSxuPV9yKGUpO3JldHVybiB0LnQ9Im4iLHQudmFsPW4sdH1mdW5jdGlvbiBFdShlLGEscil7dmFyIHQ9cXIoZSw3LHIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiB0LnQ9Im4iLHQudmFsPW4sdH1mdW5jdGlvbiBBdShlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuIGE9PT0wPyhlLmwrKywiIik6ZS5yZWFkX3NoaWZ0KGEsInNiY3MtY29udCIpfWZ1bmN0aW9uIHl1KGUsYSxyKXt2YXIgdD1lLmwrNyxuPXFyKGUsNixyKTtlLmw9dDt2YXIgaT1kcyhlKTtyZXR1cm4gbi52YWw9aSxuLnQ9aT09PSEwfHxpPT09ITE/ImIiOiJlIixufWZ1bmN0aW9uIFN1KGUsYSl7ZS5sKz02LGUubCs9MixlLmwrPTEsZS5sKz0zLGUubCs9MSxlLmwrPWEtMTN9ZnVuY3Rpb24gQ3UoZSxhLHIpe3ZhciB0PWUubCthLG49cXIoZSw2LHIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9JGEoZSxpLHIpO3JldHVybiBlLmw9dCxuLnQ9InN0ciIsbi52YWw9ZixufWZ1bmN0aW9uIGJ1KGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUucmVhZF9zaGlmdCgxKSx0PWUucmVhZF9zaGlmdChyLCJzYmNzIik7cmV0dXJuIHQubGVuZ3RoPT09MCYmKHQ9IlNoZWV0MSIpLHtmbGFnczphLG5hbWU6dH19dmFyIEl1PVsyLDMsNDgsNDksMTMxLDEzOSwxNDAsMjQ1XSxicz1mdW5jdGlvbigpe3ZhciBlPXsxOjQzNywyOjg1MCwzOjEyNTIsNDoxZTQsMTAwOjg1MiwxMDE6ODY2LDEwMjo4NjUsMTAzOjg2MSwxMDQ6ODk1LDEwNTo2MjAsMTA2OjczNywxMDc6ODU3LDEyMDo5NTAsMTIxOjk0OSwxMjI6OTM2LDEyMzo5MzIsMTI0Ojg3NCwxMjU6MTI1NSwxMjY6MTI1NiwxNTA6MTAwMDcsMTUxOjEwMDI5LDE1MjoxMDAwNiwyMDA6MTI1MCwyMDE6MTI1MSwyMDI6MTI1NCwyMDM6MTI1MywwOjIwMTI3LDg6ODY1LDk6NDM3LDEwOjg1MCwxMTo0MzcsMTM6NDM3LDE0Ojg1MCwxNTo0MzcsMTY6ODUwLDE3OjQzNywxODo4NTAsMTk6OTMyLDIwOjg1MCwyMTo0MzcsMjI6ODUwLDIzOjg2NSwyNDo0MzcsMjU6NDM3LDI2Ojg1MCwyNzo0MzcsMjg6ODYzLDI5Ojg1MCwzMTo4NTIsMzQ6ODUyLDM1Ojg1MiwzNjo4NjAsMzc6ODUwLDM4Ojg2Niw1NTo4NTAsNjQ6ODUyLDc3OjkzNiw3ODo5NDksNzk6OTUwLDgwOjg3NCw4NzoxMjUyLDg4OjEyNTIsODk6MTI1MiwxMDg6ODYzLDEzNDo3MzcsMTM1Ojg1MiwxMzY6ODU3LDIwNDoxMjU3LDI1NToxNjk2OX0sYT1KMCh7MTo0MzcsMjo4NTAsMzoxMjUyLDQ6MWU0LDEwMDo4NTIsMTAxOjg2NiwxMDI6ODY1LDEwMzo4NjEsMTA0Ojg5NSwxMDU6NjIwLDEwNjo3MzcsMTA3Ojg1NywxMjA6OTUwLDEyMTo5NDksMTIyOjkzNiwxMjM6OTMyLDEyNDo4NzQsMTI1OjEyNTUsMTI2OjEyNTYsMTUwOjEwMDA3LDE1MToxMDAyOSwxNTI6MTAwMDYsMjAwOjEyNTAsMjAxOjEyNTEsMjAyOjEyNTQsMjAzOjEyNTMsMDoyMDEyN30pO2Z1bmN0aW9uIHIocyxjKXt2YXIgbz1bXSxsPUFhKDEpO3N3aXRjaChjLnR5cGUpe2Nhc2UiYmFzZTY0IjpsPURyKElyKHMpKTticmVhaztjYXNlImJpbmFyeSI6bD1EcihzKTticmVhaztjYXNlImJ1ZmZlciI6Y2FzZSJhcnJheSI6bD1zO2JyZWFrfXNyKGwsMCk7dmFyIHU9bC5yZWFkX3NoaWZ0KDEpLHg9ISEodSYxMzYpLGg9ITEsZz0hMTtzd2l0Y2godSl7Y2FzZSAyOmJyZWFrO2Nhc2UgMzpicmVhaztjYXNlIDQ4Omg9ITAseD0hMDticmVhaztjYXNlIDQ5Omg9ITAseD0hMDticmVhaztjYXNlIDEzMTpicmVhaztjYXNlIDEzOTpicmVhaztjYXNlIDE0MDpnPSEwO2JyZWFrO2Nhc2UgMjQ1OmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgVmVyc2lvbjogIit1LnRvU3RyaW5nKDE2KSl9dmFyIG09MCxkPTUyMTt1PT0yJiYobT1sLnJlYWRfc2hpZnQoMikpLGwubCs9Myx1IT0yJiYobT1sLnJlYWRfc2hpZnQoNCkpLG0+MTA0ODU3NiYmKG09MWU2KSx1IT0yJiYoZD1sLnJlYWRfc2hpZnQoMikpO3ZhciBwPWwucmVhZF9zaGlmdCgyKTtjLmNvZGVwYWdlLHUhPTImJihsLmwrPTE2LGwucmVhZF9zaGlmdCgxKSxsW2wubF0hPT0wJiZlW2xbbC5sXV0sbC5sKz0xLGwubCs9MiksZyYmKGwubCs9MzYpO2Zvcih2YXIgdz1bXSxfPXt9LHk9TWF0aC5taW4obC5sZW5ndGgsdT09Mj81MjE6ZC0xMC0oaD8yNjQ6MCkpLFI9Zz8zMjoxMTtsLmw8eSYmbFtsLmxdIT0xMzspc3dpdGNoKF89e30sXy5uYW1lPWZhKGwuc2xpY2UobC5sLGwubCtSKSkucmVwbGFjZSgvW1x1MDAwMFxyXG5dW1xTXHNdKiQvZywiIiksbC5sKz1SLF8udHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwucmVhZF9zaGlmdCgxKSksdSE9MiYmIWcmJihfLm9mZnNldD1sLnJlYWRfc2hpZnQoNCkpLF8ubGVuPWwucmVhZF9zaGlmdCgxKSx1PT0yJiYoXy5vZmZzZXQ9bC5yZWFkX3NoaWZ0KDIpKSxfLmRlYz1sLnJlYWRfc2hpZnQoMSksXy5uYW1lLmxlbmd0aCYmdy5wdXNoKF8pLHUhPTImJihsLmwrPWc/MTM6MTQpLF8udHlwZSl7Y2FzZSJCIjooIWh8fF8ubGVuIT04KSYmYy5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK18ubmFtZSsiOiIrXy50eXBlKTticmVhaztjYXNlIkciOmNhc2UiUCI6Yy5XVEYmJmNvbnNvbGUubG9nKCJTa2lwcGluZyAiK18ubmFtZSsiOiIrXy50eXBlKTticmVhaztjYXNlIisiOmNhc2UiMCI6Y2FzZSJAIjpjYXNlIkMiOmNhc2UiRCI6Y2FzZSJGIjpjYXNlIkkiOmNhc2UiTCI6Y2FzZSJNIjpjYXNlIk4iOmNhc2UiTyI6Y2FzZSJUIjpjYXNlIlkiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIEZpZWxkIFR5cGU6ICIrXy50eXBlKX1pZihsW2wubF0hPT0xMyYmKGwubD1kLTEpLGwucmVhZF9zaGlmdCgxKSE9PTEzKXRocm93IG5ldyBFcnJvcigiREJGIFRlcm1pbmF0b3Igbm90IGZvdW5kICIrbC5sKyIgIitsW2wubF0pO2wubD1kO3ZhciBQPTAsYj0wO2ZvcihvWzBdPVtdLGI9MDtiIT13Lmxlbmd0aDsrK2Ipb1swXVtiXT13W2JdLm5hbWU7Zm9yKDttLS0gPjA7KXtpZihsW2wubF09PT00Mil7bC5sKz1wO2NvbnRpbnVlfWZvcigrK2wubCxvWysrUF09W10sYj0wLGI9MDtiIT13Lmxlbmd0aDsrK2Ipe3ZhciBOPWwuc2xpY2UobC5sLGwubCt3W2JdLmxlbik7bC5sKz13W2JdLmxlbixzcihOLDApO3ZhciBJPWZhKE4pO3N3aXRjaCh3W2JdLnR5cGUpe2Nhc2UiQyI6SS50cmltKCkubGVuZ3RoJiYob1tQXVtiXT1JLnJlcGxhY2UoLyhbXlxzXSlccyskLywiJDEiKSk7YnJlYWs7Y2FzZSJEIjpJLmxlbmd0aD09PTg/KG9bUF1bYl09bmV3IERhdGUoRGF0ZS5VVEMoK0kuc2xpY2UoMCw0KSwrSS5zbGljZSg0LDYpLTEsK0kuc2xpY2UoNiw4KSwwLDAsMCwwKSksYyYmYy5VVEN8fChvW1BdW2JdPVVhKG9bUF1bYl0pKSk6b1tQXVtiXT1JO2JyZWFrO2Nhc2UiRiI6b1tQXVtiXT1wYXJzZUZsb2F0KEkudHJpbSgpKTticmVhaztjYXNlIisiOmNhc2UiSSI6b1tQXVtiXT1nP04ucmVhZF9zaGlmdCgtNCwiaSIpXjIxNDc0ODM2NDg6Ti5yZWFkX3NoaWZ0KDQsImkiKTticmVhaztjYXNlIkwiOnN3aXRjaChJLnRyaW0oKS50b1VwcGVyQ2FzZSgpKXtjYXNlIlkiOmNhc2UiVCI6b1tQXVtiXT0hMDticmVhaztjYXNlIk4iOmNhc2UiRiI6b1tQXVtiXT0hMTticmVhaztjYXNlIiI6Y2FzZSJcMCI6Y2FzZSI/IjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiREJGIFVucmVjb2duaXplZCBMOnwiK0krInwiKX1icmVhaztjYXNlIk0iOmlmKCF4KXRocm93IG5ldyBFcnJvcigiREJGIFVuZXhwZWN0ZWQgTUVNTyBmb3IgdHlwZSAiK3UudG9TdHJpbmcoMTYpKTtvW1BdW2JdPSIjI01FTU8jIyIrKGc/cGFyc2VJbnQoSS50cmltKCksMTApOk4ucmVhZF9zaGlmdCg0KSk7YnJlYWs7Y2FzZSJOIjpJPUkucmVwbGFjZSgvXHUwMDAwL2csIiIpLnRyaW0oKSxJJiZJIT0iLiImJihvW1BdW2JdPStJfHwwKTticmVhaztjYXNlIkAiOm9bUF1bYl09bmV3IERhdGUoTi5yZWFkX3NoaWZ0KC04LCJmIiktNjIxMzU2ODMyZTUpO2JyZWFrO2Nhc2UiVCI6e3ZhciBCPU4ucmVhZF9zaGlmdCg0KSxMPU4ucmVhZF9zaGlmdCg0KTtpZihCPT0wJiZMPT0wKWJyZWFrO29bUF1bYl09bmV3IERhdGUoKEItMjQ0MDU4OCkqODY0ZTUrTCksYyYmYy5VVEN8fChvW1BdW2JdPVVhKG9bUF1bYl0pKX1icmVhaztjYXNlIlkiOm9bUF1bYl09Ti5yZWFkX3NoaWZ0KDQsImkiKS8xZTQrTi5yZWFkX3NoaWZ0KDQsImkiKS8xZTQqTWF0aC5wb3coMiwzMik7YnJlYWs7Y2FzZSJPIjpvW1BdW2JdPS1OLnJlYWRfc2hpZnQoLTgsImYiKTticmVhaztjYXNlIkIiOmlmKGgmJndbYl0ubGVuPT04KXtvW1BdW2JdPU4ucmVhZF9zaGlmdCg4LCJmIik7YnJlYWt9Y2FzZSJHIjpjYXNlIlAiOk4ubCs9d1tiXS5sZW47YnJlYWs7Y2FzZSIwIjppZih3W2JdLm5hbWU9PT0iX051bGxGbGFncyIpYnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkRCRiBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgIit3W2JdLnR5cGUpfX19aWYodSE9MiYmbC5sPGwubGVuZ3RoJiZsW2wubCsrXSE9MjYpdGhyb3cgbmV3IEVycm9yKCJEQkYgRU9GIE1hcmtlciBtaXNzaW5nICIrKGwubC0xKSsiIG9mICIrbC5sZW5ndGgrIiAiK2xbbC5sLTFdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGMmJmMuc2hlZXRSb3dzJiYobz1vLnNsaWNlKDAsYy5zaGVldFJvd3MpKSxjLkRCRj13LG99ZnVuY3Rpb24gdChzLGMpe3ZhciBvPWN8fHt9O28uZGF0ZU5GfHwoby5kYXRlTkY9Inl5eXltbWRkIik7dmFyIGw9Y3QocihzLG8pLG8pO3JldHVybiBsWyIhY29scyJdPW8uREJGLm1hcChmdW5jdGlvbih1KXtyZXR1cm57d2NoOnUubGVuLERCRjp1fX0pLGRlbGV0ZSBvLkRCRixsfWZ1bmN0aW9uIG4ocyxjKXt0cnl7dmFyIG89Q2EodChzLGMpLGMpO3JldHVybiBvLmJvb2tUeXBlPSJkYmYiLG99Y2F0Y2gobCl7aWYoYyYmYy5XVEYpdGhyb3cgbH1yZXR1cm57U2hlZXROYW1lczpbXSxTaGVldHM6e319fXZhciBpPXtCOjgsQzoyNTAsTDoxLEQ6OCwiPyI6MCwiIjowfTtmdW5jdGlvbiBmKHMsYyl7aWYoIXNbIiFyZWYiXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHBvcnQgZW1wdHkgc2hlZXQgdG8gREJGIik7dmFyIG89Y3x8e30sbD1IcjtpZigrby5jb2RlcGFnZT49MCYmWXIoK28uY29kZXBhZ2UpLG8udHlwZT09InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZyIpO3ZhciB1PWFuKCkseD1ObihzLHtoZWFkZXI6MSxyYXc6ITAsY2VsbERhdGVzOiEwfSksaD14WzBdLGc9eC5zbGljZSgxKSxtPXNbIiFjb2xzIl18fFtdLGQ9MCxwPTAsdz0wLF89MTtmb3IoZD0wO2Q8aC5sZW5ndGg7KytkKXtpZigoKG1bZF18fHt9KS5EQkZ8fHt9KS5uYW1lKXtoW2RdPW1bZF0uREJGLm5hbWUsKyt3O2NvbnRpbnVlfWlmKGhbZF0hPW51bGwpe2lmKCsrdyx0eXBlb2YgaFtkXT09Im51bWJlciImJihoW2RdPWhbZF0udG9TdHJpbmcoMTApKSx0eXBlb2YgaFtkXSE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJEQkYgSW52YWxpZCBjb2x1bW4gbmFtZSAiK2hbZF0rIiB8Iit0eXBlb2YgaFtkXSsifCIpO2lmKGguaW5kZXhPZihoW2RdKSE9PWQpe2ZvcihwPTA7cDwxMDI0OysrcClpZihoLmluZGV4T2YoaFtkXSsiXyIrcCk9PS0xKXtoW2RdKz0iXyIrcDticmVha319fX12YXIgeT1aZShzWyIhcmVmIl0pLFI9W10sUD1bXSxiPVtdO2ZvcihkPTA7ZDw9eS5lLmMteS5zLmM7KytkKXt2YXIgTj0iIixJPSIiLEI9MCxMPVtdO2ZvcihwPTA7cDxnLmxlbmd0aDsrK3ApZ1twXVtkXSE9bnVsbCYmTC5wdXNoKGdbcF1bZF0pO2lmKEwubGVuZ3RoPT0wfHxoW2RdPT1udWxsKXtSW2RdPSI/Ijtjb250aW51ZX1mb3IocD0wO3A8TC5sZW5ndGg7KytwKXtzd2l0Y2godHlwZW9mIExbcF0pe2Nhc2UibnVtYmVyIjpJPSJCIjticmVhaztjYXNlInN0cmluZyI6ST0iQyI7YnJlYWs7Y2FzZSJib29sZWFuIjpJPSJMIjticmVhaztjYXNlIm9iamVjdCI6ST1MW3BdaW5zdGFuY2VvZiBEYXRlPyJEIjoiQyI7YnJlYWs7ZGVmYXVsdDpJPSJDIn1CPU1hdGgubWF4KEIsU3RyaW5nKExbcF0pLmxlbmd0aCksTj1OJiZOIT1JPyJDIjpJfUI+MjUwJiYoQj0yNTApLEk9KChtW2RdfHx7fSkuREJGfHx7fSkudHlwZSxJPT0iQyImJm1bZF0uREJGLmxlbj5CJiYoQj1tW2RdLkRCRi5sZW4pLE49PSJCIiYmST09Ik4iJiYoTj0iTiIsYltkXT1tW2RdLkRCRi5kZWMsQj1tW2RdLkRCRi5sZW4pLFBbZF09Tj09IkMifHxJPT0iTiI/QjppW05dfHwwLF8rPVBbZF0sUltkXT1OfXZhciBHPXUubmV4dCgzMik7Zm9yKEcud3JpdGVfc2hpZnQoNCwzMTg5MDI1NzYpLEcud3JpdGVfc2hpZnQoNCxnLmxlbmd0aCksRy53cml0ZV9zaGlmdCgyLDI5NiszMip3KSxHLndyaXRlX3NoaWZ0KDIsXyksZD0wO2Q8NDsrK2QpRy53cml0ZV9zaGlmdCg0LDApO3ZhciBpZT0rYVtIcl18fDM7Zm9yKEcud3JpdGVfc2hpZnQoNCwwfGllPDw4KSxlW2llXSE9K28uY29kZXBhZ2UmJihvLmNvZGVwYWdlJiZjb25zb2xlLmVycm9yKCJEQkYgVW5zdXBwb3J0ZWQgY29kZXBhZ2UgIitIcisiLCB1c2luZyAxMjUyIiksSHI9MTI1MiksZD0wLHA9MDtkPGgubGVuZ3RoOysrZClpZihoW2RdIT1udWxsKXt2YXIgbmU9dS5uZXh0KDMyKSxxPShoW2RdLnNsaWNlKC0xMCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiKS5zbGljZSgwLDExKTtuZS53cml0ZV9zaGlmdCgxLHEsInNiY3MiKSxuZS53cml0ZV9zaGlmdCgxLFJbZF09PSI/Ij8iQyI6UltkXSwic2JjcyIpLG5lLndyaXRlX3NoaWZ0KDQscCksbmUud3JpdGVfc2hpZnQoMSxQW2RdfHxpW1JbZF1dfHwwKSxuZS53cml0ZV9zaGlmdCgxLGJbZF18fDApLG5lLndyaXRlX3NoaWZ0KDEsMiksbmUud3JpdGVfc2hpZnQoNCwwKSxuZS53cml0ZV9zaGlmdCgxLDApLG5lLndyaXRlX3NoaWZ0KDQsMCksbmUud3JpdGVfc2hpZnQoNCwwKSxwKz1QW2RdfHxpW1JbZF1dfHwwfXZhciBsZT11Lm5leHQoMjY0KTtmb3IobGUud3JpdGVfc2hpZnQoNCwxMyksZD0wO2Q8NjU7KytkKWxlLndyaXRlX3NoaWZ0KDQsMCk7Zm9yKGQ9MDtkPGcubGVuZ3RoOysrZCl7dmFyIFE9dS5uZXh0KF8pO2ZvcihRLndyaXRlX3NoaWZ0KDEsMCkscD0wO3A8aC5sZW5ndGg7KytwKWlmKGhbcF0hPW51bGwpc3dpdGNoKFJbcF0pe2Nhc2UiTCI6US53cml0ZV9zaGlmdCgxLGdbZF1bcF09PW51bGw/NjM6Z1tkXVtwXT84NDo3MCk7YnJlYWs7Y2FzZSJCIjpRLndyaXRlX3NoaWZ0KDgsZ1tkXVtwXXx8MCwiZiIpO2JyZWFrO2Nhc2UiTiI6dmFyIGdlPSIwIjtmb3IodHlwZW9mIGdbZF1bcF09PSJudW1iZXIiJiYoZ2U9Z1tkXVtwXS50b0ZpeGVkKGJbcF18fDApKSxnZS5sZW5ndGg+UFtwXSYmKGdlPWdlLnNsaWNlKDAsUFtwXSkpLHc9MDt3PFBbcF0tZ2UubGVuZ3RoOysrdylRLndyaXRlX3NoaWZ0KDEsMzIpO1Eud3JpdGVfc2hpZnQoMSxnZSwic2JjcyIpO2JyZWFrO2Nhc2UiRCI6Z1tkXVtwXT8oUS53cml0ZV9zaGlmdCg0LCgiMDAwMCIrZ1tkXVtwXS5nZXRGdWxsWWVhcigpKS5zbGljZSgtNCksInNiY3MiKSxRLndyaXRlX3NoaWZ0KDIsKCIwMCIrKGdbZF1bcF0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCJzYmNzIiksUS53cml0ZV9zaGlmdCgyLCgiMDAiK2dbZF1bcF0uZ2V0RGF0ZSgpKS5zbGljZSgtMiksInNiY3MiKSk6US53cml0ZV9zaGlmdCg4LCIwMDAwMDAwMCIsInNiY3MiKTticmVhaztjYXNlIkMiOnZhciB1ZT1RLmwsaj1TdHJpbmcoZ1tkXVtwXSE9bnVsbD9nW2RdW3BdOiIiKS5zbGljZSgwLFBbcF0pO2ZvcihRLndyaXRlX3NoaWZ0KDEsaiwiY3BzdHIiKSx1ZSs9UFtwXS1RLmwsdz0wO3c8dWU7Kyt3KVEud3JpdGVfc2hpZnQoMSwzMik7YnJlYWt9fXJldHVybiBIcj1sLHUubmV4dCgxKS53cml0ZV9zaGlmdCgxLDI2KSx1LmVuZCgpfXJldHVybnt0b193b3JrYm9vazpuLHRvX3NoZWV0OnQsZnJvbV9zaGVldDpmfX0oKSxEdT1mdW5jdGlvbigpe3ZhciBlPXtBQToiw4AiLEJBOiLDgSIsQ0E6IsOCIixEQToxOTUsSEE6IsOEIixKQToxOTcsQUU6IsOIIixCRToiw4kiLENFOiLDiiIsSEU6IsOLIixBSToiw4wiLEJJOiLDjSIsQ0k6IsOOIixISToiw48iLEFPOiLDkiIsQk86IsOTIixDTzoiw5QiLERPOjIxMyxITzoiw5YiLEFVOiLDmSIsQlU6IsOaIixDVToiw5siLEhVOiLDnCIsQWE6IsOgIixCYToiw6EiLENhOiLDoiIsRGE6MjI3LEhhOiLDpCIsSmE6MjI5LEFlOiLDqCIsQmU6IsOpIixDZToiw6oiLEhlOiLDqyIsQWk6IsOsIixCaToiw60iLENpOiLDriIsSGk6IsOvIixBbzoiw7IiLEJvOiLDsyIsQ286IsO0IixEbzoyNDUsSG86IsO2IixBdToiw7kiLEJ1OiLDuiIsQ3U6IsO7IixIdToiw7wiLEtDOiLDhyIsS2M6IsOnIixxOiLDpiIsejoixZMiLGE6IsOGIixqOiLFkiIsRE46MjA5LERuOjI0MSxIeToyNTUsUzoxNjksYzoxNzAsUjoxNzQsIkIgIjoxODAsMDoxNzYsMToxNzcsMjoxNzgsMzoxNzksNToxODEsNjoxODIsNzoxODMsUToxODUsazoxODYsYjoyMDgsaToyMTYsbDoyMjIsczoyNDAseToyNDgsIiEiOjE2MSwnIic6MTYyLCIjIjoxNjMsIigiOjE2NCwiJSI6MTY1LCInIjoxNjcsIkggIjoxNjgsIisiOjE3MSwiOyI6MTg3LCI8IjoxODgsIj0iOjE4OSwiPiI6MTkwLCI/IjoxOTEsInsiOjIyM30sYT1uZXcgUmVnRXhwKCJceDFCTigiK3ByKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKS5yZXBsYWNlKCJ7IiwiXFx7IikrInxcXHwpIiwiZ20iKTt0cnl7YT1uZXcgUmVnRXhwKCJceDFCTigiK3ByKGUpLmpvaW4oInwiKS5yZXBsYWNlKC9cfFx8XHwvLCJ8XFx8fCIpLnJlcGxhY2UoLyhbPygpK10pL2csIlxcJDEiKSsifFxcfCkiLCJnbSIpfWNhdGNoe312YXIgcj1mdW5jdGlvbihoLGcpe3ZhciBtPWVbZ107cmV0dXJuIHR5cGVvZiBtPT0ibnVtYmVyIj8kbihtKTptfSx0PWZ1bmN0aW9uKGgsZyxtKXt2YXIgZD1nLmNoYXJDb2RlQXQoMCktMzI8PDR8bS5jaGFyQ29kZUF0KDApLTQ4O3JldHVybiBkPT01OT9oOiRuKGQpfTtlWyJ8Il09MjU0O3ZhciBuPWZ1bmN0aW9uKGgpe3JldHVybiBoLnJlcGxhY2UoL1xuL2csIlx4MUIgOiIpLnJlcGxhY2UoL1xyL2csIlx4MUIgPSIpfTtmdW5jdGlvbiBpKGgsZyl7c3dpdGNoKGcudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiBmKElyKGgpLGcpO2Nhc2UiYmluYXJ5IjpyZXR1cm4gZihoLGcpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gZihOZSYmQnVmZmVyLmlzQnVmZmVyKGgpP2gudG9TdHJpbmcoImJpbmFyeSIpOmZhKGgpLGcpO2Nhc2UiYXJyYXkiOnJldHVybiBmKEJhKGgpLGcpfXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHR5cGUgIitnLnR5cGUpfWZ1bmN0aW9uIGYoaCxnKXt2YXIgbT1oLnNwbGl0KC9bXG5ccl0rLyksZD0tMSxwPS0xLHc9MCxfPTAseT1bXSxSPVtdLFA9bnVsbCxiPXt9LE49W10sST1bXSxCPVtdLEw9MCxHLGllPXtXb3JrYm9vazp7V0JQcm9wczp7fSxOYW1lczpbXX19O2ZvcigrZy5jb2RlcGFnZT49MCYmWXIoK2cuY29kZXBhZ2UpO3chPT1tLmxlbmd0aDsrK3cpe0w9MDt2YXIgbmU9bVt3XS50cmltKCkucmVwbGFjZSgvXHgxQihbXHgyMC1ceDJGXSkoW1x4MzAtXHgzRl0pL2csdCkucmVwbGFjZShhLHIpLHE9bmUucmVwbGFjZSgvOzsvZywiXDAiKS5zcGxpdCgiOyIpLm1hcChmdW5jdGlvbihEKXtyZXR1cm4gRC5yZXBsYWNlKC9cdTAwMDAvZywiOyIpfSksbGU9cVswXSxRO2lmKG5lLmxlbmd0aD4wKXN3aXRjaChsZSl7Y2FzZSJJRCI6YnJlYWs7Y2FzZSJFIjpicmVhaztjYXNlIkIiOmJyZWFrO2Nhc2UiTyI6Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiViI6e3ZhciBnZT1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKTtnZT49MSYmZ2U8PTQmJihpZS5Xb3JrYm9vay5XQlByb3BzLmRhdGUxOTA0PSEwKX1icmVha31icmVhaztjYXNlIlciOmJyZWFrO2Nhc2UiUCI6c3dpdGNoKHFbMV0uY2hhckF0KDApKXtjYXNlIlAiOlIucHVzaChuZS5zbGljZSgzKS5yZXBsYWNlKC87Oy9nLCI7IikpO2JyZWFrfWJyZWFrO2Nhc2UiTk4iOnt2YXIgdWU9e1NoZWV0OjB9O2ZvcihfPTE7XzxxLmxlbmd0aDsrK18pc3dpdGNoKHFbX10uY2hhckF0KDApKXtjYXNlIk4iOnVlLk5hbWU9cVtfXS5zbGljZSgxKTticmVhaztjYXNlIkUiOnVlLlJlZj0oZyYmZy5zaGVldHx8IlNoZWV0MSIpKyIhIitxYShxW19dLnNsaWNlKDEpKTticmVha31pZS5Xb3JrYm9vay5OYW1lcy5wdXNoKHVlKX1icmVhaztjYXNlIkMiOnZhciBqPSExLHllPSExLGJlPSExLG1lPSExLFo9LTEsT2U9LTEsd2U9IiIsQWU9InoiLEE9IiI7Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiQSI6QT1xW19dLnNsaWNlKDEpO2JyZWFrO2Nhc2UiWCI6cD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLHllPSEwO2JyZWFrO2Nhc2UiWSI6Zm9yKGQ9cGFyc2VJbnQocVtfXS5zbGljZSgxKSwxMCktMSx5ZXx8KHA9MCksRz15Lmxlbmd0aDtHPD1kOysrRyl5W0ddPVtdO2JyZWFrO2Nhc2UiSyI6UT1xW19dLnNsaWNlKDEpLFEuY2hhckF0KDApPT09JyInPyhRPVEuc2xpY2UoMSxRLmxlbmd0aC0xKSxBZT0icyIpOlE9PT0iVFJVRSJ8fFE9PT0iRkFMU0UiPyhRPVE9PT0iVFJVRSIsQWU9ImIiKTpRLmNoYXJBdCgwKT09IiMiJiZkcltRXSE9bnVsbD8oQWU9ImUiLFE9ZHJbUV0pOmlzTmFOKE9yKFEpKXx8KFE9T3IoUSksQWU9Im4iLFAhPT1udWxsJiZacihQKSYmZy5jZWxsRGF0ZXMmJihRPVNhKGllLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQ/USsxNDYyOlEpLEFlPXR5cGVvZiBRPT0ibnVtYmVyIj8ibiI6ImQiKSksaj0hMDticmVhaztjYXNlIkUiOm1lPSEwLHdlPXFhKHFbX10uc2xpY2UoMSkse3I6ZCxjOnB9KTticmVhaztjYXNlIlMiOmJlPSEwO2JyZWFrO2Nhc2UiRyI6YnJlYWs7Y2FzZSJSIjpaPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTE7YnJlYWs7Y2FzZSJDIjpPZT1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xO2JyZWFrO2RlZmF1bHQ6aWYoZyYmZy5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituZSl9aWYoaiYmKHlbZF1bcF0/KHlbZF1bcF0udD1BZSx5W2RdW3BdLnY9USk6eVtkXVtwXT17dDpBZSx2OlF9LFAmJih5W2RdW3BdLno9UCksZy5jZWxsVGV4dCE9PSExJiZQJiYoeVtkXVtwXS53PVJyKHlbZF1bcF0ueix5W2RdW3BdLnYse2RhdGUxOTA0OmllLldvcmtib29rLldCUHJvcHMuZGF0ZTE5MDR9KSksUD1udWxsKSxiZSl7aWYobWUpdGhyb3cgbmV3IEVycm9yKCJTWUxLIHNoYXJlZCBmb3JtdWxhIGNhbm5vdCBoYXZlIG93biBmb3JtdWxhIik7dmFyIFU9Wj4tMSYmeVtaXVtPZV07aWYoIVV8fCFVWzFdKXRocm93IG5ldyBFcnJvcigiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlIik7d2U9WXMoVVsxXSx7cjpkLVosYzpwLU9lfSl9d2UmJih5W2RdW3BdP3lbZF1bcF0uZj13ZTp5W2RdW3BdPXt0OiJuIixmOndlfSksQSYmKHlbZF1bcF18fCh5W2RdW3BdPXt0OiJ6In0pLHlbZF1bcF0uYz1be2E6IlNoZWV0SlNZTEsiLHQ6QX1dKTticmVhaztjYXNlIkYiOnZhciBPPTA7Zm9yKF89MTtfPHEubGVuZ3RoOysrXylzd2l0Y2gocVtfXS5jaGFyQXQoMCkpe2Nhc2UiWCI6cD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLCsrTzticmVhaztjYXNlIlkiOmZvcihkPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTEsRz15Lmxlbmd0aDtHPD1kOysrRyl5W0ddPVtdO2JyZWFrO2Nhc2UiTSI6TD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS8yMDticmVhaztjYXNlIkYiOmJyZWFrO2Nhc2UiRyI6YnJlYWs7Y2FzZSJQIjpQPVJbcGFyc2VJbnQocVtfXS5zbGljZSgxKSwxMCldO2JyZWFrO2Nhc2UiUyI6YnJlYWs7Y2FzZSJEIjpicmVhaztjYXNlIk4iOmJyZWFrO2Nhc2UiVyI6Zm9yKEI9cVtfXS5zbGljZSgxKS5zcGxpdCgiICIpLEc9cGFyc2VJbnQoQlswXSwxMCk7Rzw9cGFyc2VJbnQoQlsxXSwxMCk7KytHKUw9cGFyc2VJbnQoQlsyXSwxMCksSVtHLTFdPUw9PT0wP3toaWRkZW46ITB9Ont3Y2g6TH07YnJlYWs7Y2FzZSJDIjpwPXBhcnNlSW50KHFbX10uc2xpY2UoMSksMTApLTEsSVtwXXx8KElbcF09e30pO2JyZWFrO2Nhc2UiUiI6ZD1wYXJzZUludChxW19dLnNsaWNlKDEpLDEwKS0xLE5bZF18fChOW2RdPXt9KSxMPjA/KE5bZF0uaHB0PUwsTltkXS5ocHg9VXQoTCkpOkw9PT0wJiYoTltkXS5oaWRkZW49ITApO2JyZWFrO2RlZmF1bHQ6aWYoZyYmZy5XVEYpdGhyb3cgbmV3IEVycm9yKCJTWUxLIGJhZCByZWNvcmQgIituZSl9TzwxJiYoUD1udWxsKTticmVhaztkZWZhdWx0OmlmKGcmJmcuV1RGKXRocm93IG5ldyBFcnJvcigiU1lMSyBiYWQgcmVjb3JkICIrbmUpfX1yZXR1cm4gTi5sZW5ndGg+MCYmKGJbIiFyb3dzIl09TiksSS5sZW5ndGg+MCYmKGJbIiFjb2xzIl09SSksSS5mb3JFYWNoKGZ1bmN0aW9uKEQpe3V0KEQpfSksZyYmZy5zaGVldFJvd3MmJih5PXkuc2xpY2UoMCxnLnNoZWV0Um93cykpLFt5LGIsaWVdfWZ1bmN0aW9uIHMoaCxnKXt2YXIgbT1pKGgsZyksZD1tWzBdLHA9bVsxXSx3PW1bMl0sXz1VZShnKTtfLmRhdGUxOTA0PSgoKHd8fHt9KS5Xb3JrYm9va3x8e30pLldCUHJvcHN8fHt9KS5kYXRlMTkwNDt2YXIgeT1jdChkLF8pO3ByKHApLmZvckVhY2goZnVuY3Rpb24oUCl7eVtQXT1wW1BdfSk7dmFyIFI9Q2EoeSxnKTtyZXR1cm4gcHIodykuZm9yRWFjaChmdW5jdGlvbihQKXtSW1BdPXdbUF19KSxSLmJvb2tUeXBlPSJzeWxrIixSfWZ1bmN0aW9uIGMoaCxnLG0sZCxwLHcpe3ZhciBfPSJDO1kiKyhtKzEpKyI7WCIrKGQrMSkrIjtLIjtzd2l0Y2goaC50KXtjYXNlIm4iOl8rPWlzRmluaXRlKGgudik/aC52fHwwOmJyW2lzTmFOKGgudik/MzY6N10saC5mJiYhaC5GJiYoXys9IjtFIitOMShoLmYse3I6bSxjOmR9KSk7YnJlYWs7Y2FzZSJiIjpfKz1oLnY/IlRSVUUiOiJGQUxTRSI7YnJlYWs7Y2FzZSJlIjpfKz1oLnd8fGJyW2gudl18fGgudjticmVhaztjYXNlImQiOl8rPW9yKHhyKGgudix3KSx3KTticmVhaztjYXNlInMiOl8rPSciJysoaC52PT1udWxsPyIiOlN0cmluZyhoLnYpKS5yZXBsYWNlKC8iL2csIiIpLnJlcGxhY2UoLzsvZywiOzsiKSsnIic7YnJlYWt9cmV0dXJuIF99ZnVuY3Rpb24gbyhoLGcsbSl7dmFyIGQ9IkM7WSIrKGcrMSkrIjtYIisobSsxKSsiO0EiO3JldHVybiBkKz1uKGgubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLnR9KS5qb2luKCIiKSksZH1mdW5jdGlvbiBsKGgsZyl7Zy5mb3JFYWNoKGZ1bmN0aW9uKG0sZCl7dmFyIHA9IkY7VyIrKGQrMSkrIiAiKyhkKzEpKyIgIjttLmhpZGRlbj9wKz0iMCI6KHR5cGVvZiBtLndpZHRoPT0ibnVtYmVyIiYmIW0ud3B4JiYobS53cHg9X2EobS53aWR0aCkpLHR5cGVvZiBtLndweD09Im51bWJlciImJiFtLndjaCYmKG0ud2NoPUphKG0ud3B4KSksdHlwZW9mIG0ud2NoPT0ibnVtYmVyIiYmKHArPU1hdGgucm91bmQobS53Y2gpKSkscC5jaGFyQXQocC5sZW5ndGgtMSkhPSIgIiYmaC5wdXNoKHApfSl9ZnVuY3Rpb24gdShoLGcpe2cuZm9yRWFjaChmdW5jdGlvbihtLGQpe3ZhciBwPSJGOyI7bS5oaWRkZW4/cCs9Ik0wOyI6bS5ocHQ/cCs9Ik0iKzIwKm0uaHB0KyI7IjptLmhweCYmKHArPSJNIisyMCpXcyhtLmhweCkrIjsiKSxwLmxlbmd0aD4yJiZoLnB1c2gocCsiUiIrKGQrMSkpfSl9ZnVuY3Rpb24geChoLGcsbSl7Z3x8KGc9e30pLGcuX2Zvcm1hdHM9WyJHZW5lcmFsIl07dmFyIGQ9WyJJRDtQU2hlZXRKUztOO0UiXSxwPVtdLHc9WmUoaFsiIXJlZiJdfHwiQTEiKSxfLHk9aFsiIWRhdGEiXSE9bnVsbCxSPWBccgpgLFA9KCgobXx8e30pLldvcmtib29rfHx7fSkuV0JQcm9wc3x8e30pLmRhdGUxOTA0LGI9IkdlbmVyYWwiO2QucHVzaCgiUDtQR2VuZXJhbCIpO3ZhciBOPXcucy5yLEk9dy5zLmMsQj1bXTtpZihoWyIhcmVmIl0pe2ZvcihOPXcucy5yO048PXcuZS5yOysrTilpZighKHkmJiFoWyIhZGF0YSJdW05dKSl7Zm9yKEI9W10sST13LnMuYztJPD13LmUuYzsrK0kpXz15P2hbIiFkYXRhIl1bTl1bSV06aFtIZShJKStHZShOKV0sISghX3x8IV8uYykmJkIucHVzaChvKF8uYyxOLEkpKTtCLmxlbmd0aCYmcC5wdXNoKEIuam9pbihSKSl9fWlmKGhbIiFyZWYiXSl7Zm9yKE49dy5zLnI7Tjw9dy5lLnI7KytOKWlmKCEoeSYmIWhbIiFkYXRhIl1bTl0pKXtmb3IoQj1bXSxJPXcucy5jO0k8PXcuZS5jOysrSSlpZihfPXk/aFsiIWRhdGEiXVtOXVtJXTpoW0hlKEkpK0dlKE4pXSwhKCFffHxfLnY9PW51bGwmJighXy5mfHxfLkYpKSl7aWYoKF8uenx8KF8udD09ImQiP1RlWzE0XToiR2VuZXJhbCIpKSE9Yil7dmFyIEw9Zy5fZm9ybWF0cy5pbmRleE9mKF8ueik7TD09LTEmJihnLl9mb3JtYXRzLnB1c2goXy56KSxMPWcuX2Zvcm1hdHMubGVuZ3RoLTEsZC5wdXNoKCJQO1AiK18uei5yZXBsYWNlKC87L2csIjs7IikpKSxCLnB1c2goIkY7UCIrTCsiO1kiKyhOKzEpKyI7WCIrKEkrMSkpfUIucHVzaChjKF8saCxOLEksZyxQKSl9cC5wdXNoKEIuam9pbihSKSl9fXJldHVybiBkLnB1c2goIkY7UDA7REcwRzg7TTI1NSIpLGhbIiFjb2xzIl0mJmwoZCxoWyIhY29scyJdKSxoWyIhcm93cyJdJiZ1KGQsaFsiIXJvd3MiXSksaFsiIXJlZiJdJiZkLnB1c2goIkI7WSIrKHcuZS5yLXcucy5yKzEpKyI7WCIrKHcuZS5jLXcucy5jKzEpKyI7RCIrW3cucy5jLHcucy5yLHcuZS5jLHcuZS5yXS5qb2luKCIgIikpLGQucHVzaCgiTztMO0Q7QiIrKFA/IjtWNCI6IiIpKyI7SzQ3O0cxMDAgMC4wMDEiKSxkZWxldGUgZy5fZm9ybWF0cyxkLmpvaW4oUikrUitwLmpvaW4oUikrUisiRSIrUn1yZXR1cm57dG9fd29ya2Jvb2s6cyxmcm9tX3NoZWV0Onh9fSgpLFJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShzLGMpe3N3aXRjaChjLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gYShJcihzKSxjKTtjYXNlImJpbmFyeSI6cmV0dXJuIGEocyxjKTtjYXNlImJ1ZmZlciI6cmV0dXJuIGEoTmUmJkJ1ZmZlci5pc0J1ZmZlcihzKT9zLnRvU3RyaW5nKCJiaW5hcnkiKTpmYShzKSxjKTtjYXNlImFycmF5IjpyZXR1cm4gYShCYShzKSxjKX10aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB0eXBlICIrYy50eXBlKX1mdW5jdGlvbiBhKHMsYyl7Zm9yKHZhciBvPXMuc3BsaXQoYApgKSxsPS0xLHU9LTEseD0wLGg9W107eCE9PW8ubGVuZ3RoOysreCl7aWYob1t4XS50cmltKCk9PT0iQk9UIil7aFsrK2xdPVtdLHU9MDtjb250aW51ZX1pZighKGw8MCkpe3ZhciBnPW9beF0udHJpbSgpLnNwbGl0KCIsIiksbT1nWzBdLGQ9Z1sxXTsrK3g7Zm9yKHZhciBwPW9beF18fCIiOyhwLm1hdGNoKC9bIl0vZyl8fFtdKS5sZW5ndGgmMSYmeDxvLmxlbmd0aC0xOylwKz1gCmArb1srK3hdO3N3aXRjaChwPXAudHJpbSgpLCttKXtjYXNlLTE6aWYocD09PSJCT1QiKXtoWysrbF09W10sdT0wO2NvbnRpbnVlfWVsc2UgaWYocCE9PSJFT0QiKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIERJRiBzcGVjaWFsIGNvbW1hbmQgIitwKTticmVhaztjYXNlIDA6cD09PSJUUlVFIj9oW2xdW3VdPSEwOnA9PT0iRkFMU0UiP2hbbF1bdV09ITE6aXNOYU4oT3IoZCkpP2lzTmFOKFN0KGQpLmdldERhdGUoKSk/aFtsXVt1XT1kOihoW2xdW3VdPXhyKGQpLGMmJmMuVVRDfHwoaFtsXVt1XT1VYShoW2xdW3VdKSkpOmhbbF1bdV09T3IoZCksKyt1O2JyZWFrO2Nhc2UgMTpwPXAuc2xpY2UoMSxwLmxlbmd0aC0xKSxwPXAucmVwbGFjZSgvIiIvZywnIicpLHAmJnAubWF0Y2goL149Ii4qIiQvKSYmKHA9cC5zbGljZSgyLC0xKSksaFtsXVt1KytdPXAhPT0iIj9wOm51bGw7YnJlYWt9aWYocD09PSJFT0QiKWJyZWFrfX1yZXR1cm4gYyYmYy5zaGVldFJvd3MmJihoPWguc2xpY2UoMCxjLnNoZWV0Um93cykpLGh9ZnVuY3Rpb24gcihzLGMpe3JldHVybiBjdChlKHMsYyksYyl9ZnVuY3Rpb24gdChzLGMpe3ZhciBvPUNhKHIocyxjKSxjKTtyZXR1cm4gby5ib29rVHlwZT0iZGlmIixvfWZ1bmN0aW9uIG4ocyxjKXtyZXR1cm4iMCwiK1N0cmluZyhzKStgXHIKYCtjfWZ1bmN0aW9uIGkocyl7cmV0dXJuYDEsMFxyCiJgK3MucmVwbGFjZSgvIi9nLCciIicpKyciJ31mdW5jdGlvbiBmKHMpe2lmKCFzWyIhcmVmIl0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXhwb3J0IGVtcHR5IHNoZWV0IHRvIERJRiIpO2Zvcih2YXIgYz1aZShzWyIhcmVmIl0pLG89c1siIWRhdGEiXSE9bnVsbCxsPVtgVEFCTEVccgowLDFccgoic2hlZXRqcyJccgpgLGBWRUNUT1JTXHIKMCxgKyhjLmUuci1jLnMucisxKStgXHIKIiJccgpgLGBUVVBMRVNccgowLGArKGMuZS5jLWMucy5jKzEpK2BccgoiIlxyCmAsYERBVEFccgowLDBccgoiIlxyCmBdLHU9Yy5zLnI7dTw9Yy5lLnI7Kyt1KXtmb3IodmFyIHg9bz9zWyIhZGF0YSJdW3VdOltdLGg9YC0xLDBccgpCT1RccgpgLGc9Yy5zLmM7Zzw9Yy5lLmM7KytnKXt2YXIgbT1vP3gmJnhbZ106c1tEZSh7cjp1LGM6Z30pXTtpZihtPT1udWxsKXtoKz1gMSwwXHIKIiJccgpgO2NvbnRpbnVlfXN3aXRjaChtLnQpe2Nhc2UibiI6bS53IT1udWxsP2grPSIwLCIrbS53K2BccgpWYDptLnYhPW51bGw/aCs9bihtLnYsIlYiKTptLmYhPW51bGwmJiFtLkY/aCs9aSgiPSIrbS5mKTpoKz1gMSwwXHIKIiJgO2JyZWFrO2Nhc2UiYiI6aCs9bS52P24oMSwiVFJVRSIpOm4oMCwiRkFMU0UiKTticmVhaztjYXNlInMiOmgrPWkoaXNOYU4oK20udik/bS52Oic9IicrbS52KyciJyk7YnJlYWs7Y2FzZSJkIjptLnd8fChtLnc9UnIobS56fHxUZVsxNF0sb3IoeHIobS52KSkpKSxoKz1uKG0udywiViIpO2JyZWFrO2RlZmF1bHQ6aCs9YDEsMFxyCiIiYH1oKz1gXHIKYH1sLnB1c2goaCl9cmV0dXJuIGwuam9pbigiIikrYC0xLDBccgpFT0RgfXJldHVybnt0b193b3JrYm9vazp0LHRvX3NoZWV0OnIsZnJvbV9zaGVldDpmfX0oKSxPdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodSl7cmV0dXJuIHUucmVwbGFjZSgvXFxiL2csIlxcIikucmVwbGFjZSgvXFxjL2csIjoiKS5yZXBsYWNlKC9cXG4vZyxgCmApfWZ1bmN0aW9uIGEodSl7cmV0dXJuIHUucmVwbGFjZSgvXFwvZywiXFxiIikucmVwbGFjZSgvOi9nLCJcXGMiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKX1mdW5jdGlvbiByKHUseCl7Zm9yKHZhciBoPXUuc3BsaXQoYApgKSxnPS0xLG09LTEsZD0wLHA9W107ZCE9PWgubGVuZ3RoOysrZCl7dmFyIHc9aFtkXS50cmltKCkuc3BsaXQoIjoiKTtpZih3WzBdPT09ImNlbGwiKXt2YXIgXz1ncih3WzFdKTtpZihwLmxlbmd0aDw9Xy5yKWZvcihnPXAubGVuZ3RoO2c8PV8ucjsrK2cpcFtnXXx8KHBbZ109W10pO3N3aXRjaChnPV8ucixtPV8uYyx3WzJdKXtjYXNlInQiOnBbZ11bbV09ZSh3WzNdKTticmVhaztjYXNlInYiOnBbZ11bbV09K3dbM107YnJlYWs7Y2FzZSJ2dGYiOnZhciB5PXdbdy5sZW5ndGgtMV07Y2FzZSJ2dGMiOnN3aXRjaCh3WzNdKXtjYXNlIm5sIjpwW2ddW21dPSEhK3dbNF07YnJlYWs7ZGVmYXVsdDpwW2ddW21dPXdbdy5sZW5ndGgtMV0uY2hhckF0KDApPT0iIyI/e3Q6ImUiLHY6ZHJbd1t3Lmxlbmd0aC0xXV19Oit3WzRdO2JyZWFrfXdbMl09PSJ2dGYiJiYocFtnXVttXT1bcFtnXVttXSx5XSl9fX1yZXR1cm4geCYmeC5zaGVldFJvd3MmJihwPXAuc2xpY2UoMCx4LnNoZWV0Um93cykpLHB9ZnVuY3Rpb24gdCh1LHgpe3JldHVybiBjdChyKHUseCkseCl9ZnVuY3Rpb24gbih1LHgpe3JldHVybiBDYSh0KHUseCkseCl9dmFyIGk9WyJzb2NpYWxjYWxjOnZlcnNpb246MS41IiwiTUlNRS1WZXJzaW9uOiAxLjAiLCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9U29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiXS5qb2luKGAKYCksZj1bIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUiLCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgiXS5qb2luKGAKYCkrYApgLHM9WyIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlIiwicGFydDpzaGVldCJdLmpvaW4oYApgKSxjPSItLVNvY2lhbENhbGNTcHJlYWRzaGVldENvbnRyb2xTYXZlLS0iO2Z1bmN0aW9uIG8odSl7aWYoIXV8fCF1WyIhcmVmIl0pcmV0dXJuIiI7Zm9yKHZhciB4PVtdLGg9W10sZyxtPSIiLGQ9cGEodVsiIXJlZiJdKSxwPXVbIiFkYXRhIl0hPW51bGwsdz1kLnMucjt3PD1kLmUucjsrK3cpZm9yKHZhciBfPWQucy5jO188PWQuZS5jOysrXylpZihtPURlKHtyOncsYzpffSksZz1wPyh1WyIhZGF0YSJdW3ddfHxbXSlbX106dVttXSwhKCFnfHxnLnY9PW51bGx8fGcudD09PSJ6Iikpe3N3aXRjaChoPVsiY2VsbCIsbSwidCJdLGcudCl7Y2FzZSJzIjpoLnB1c2goYShnLnYpKTticmVhaztjYXNlImIiOmhbMl09InZ0IisoZy5mPyJmIjoiYyIpLGhbM109Im5sIixoWzRdPWcudj8iMSI6IjAiLGhbNV09YShnLmZ8fChnLnY/IlRSVUUiOiJGQUxTRSIpKTticmVhaztjYXNlImQiOnZhciB5PW9yKHhyKGcudikpO2hbMl09InZ0YyIsaFszXT0ibmQiLGhbNF09IiIreSxoWzVdPWcud3x8UnIoZy56fHxUZVsxNF0seSk7YnJlYWs7Y2FzZSJuIjppc0Zpbml0ZShnLnYpP2cuZj8oaFsyXT0idnRmIixoWzNdPSJuIixoWzRdPWcudixoWzVdPWEoZy5mKSk6KGhbMl09InYiLGhbM109Zy52KTooaFsyXT0idnQiKyhnLmY/ImYiOiJjIiksaFszXT0iZSIrYnJbaXNOYU4oZy52KT8zNjo3XSxoWzRdPSIwIixoWzVdPWcuZnx8aFszXS5zbGljZSgxKSxoWzZdPSJlIixoWzddPWhbM10uc2xpY2UoMSkpO2JyZWFrO2Nhc2UiZSI6Y29udGludWV9eC5wdXNoKGguam9pbigiOiIpKX1yZXR1cm4geC5wdXNoKCJzaGVldDpjOiIrKGQuZS5jLWQucy5jKzEpKyI6cjoiKyhkLmUuci1kLnMucisxKSsiOnR2ZjoxIikseC5wdXNoKCJ2YWx1ZWZvcm1hdDoxOnRleHQtd2lraSIpLHguam9pbihgCmApfWZ1bmN0aW9uIGwodSl7cmV0dXJuW2ksZixzLGYsbyh1KSxjXS5qb2luKGAKYCl9cmV0dXJue3RvX3dvcmtib29rOm4sdG9fc2hlZXQ6dCxmcm9tX3NoZWV0Omx9fSgpLGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShsLHUseCxoLGcpe2cucmF3P3VbeF1baF09bDpsPT09IiJ8fChsPT09IlRSVUUiP3VbeF1baF09ITA6bD09PSJGQUxTRSI/dVt4XVtoXT0hMTppc05hTihPcihsKSk/aXNOYU4oU3QobCkuZ2V0RGF0ZSgpKT9sLmNoYXJDb2RlQXQoMCk9PTM1JiZkcltsXSE9bnVsbD91W3hdW2hdPXt0OiJlIix2OmRyW2xdLHc6bH06dVt4XVtoXT1sOnVbeF1baF09eHIobCk6dVt4XVtoXT1PcihsKSl9ZnVuY3Rpb24gYShsLHUpe3ZhciB4PXV8fHt9LGg9W107aWYoIWx8fGwubGVuZ3RoPT09MClyZXR1cm4gaDtmb3IodmFyIGc9bC5zcGxpdCgvW1xyXG5dLyksbT1nLmxlbmd0aC0xO20+PTAmJmdbbV0ubGVuZ3RoPT09MDspLS1tO2Zvcih2YXIgZD0xMCxwPTAsdz0wO3c8PW07Kyt3KXA9Z1t3XS5pbmRleE9mKCIgIikscD09LTE/cD1nW3ddLmxlbmd0aDpwKyssZD1NYXRoLm1heChkLHApO2Zvcih3PTA7dzw9bTsrK3cpe2hbd109W107dmFyIF89MDtmb3IoZShnW3ddLnNsaWNlKDAsZCkudHJpbSgpLGgsdyxfLHgpLF89MTtfPD0oZ1t3XS5sZW5ndGgtZCkvMTArMTsrK18pZShnW3ddLnNsaWNlKGQrKF8tMSkqMTAsZCtfKjEwKS50cmltKCksaCx3LF8seCl9cmV0dXJuIHguc2hlZXRSb3dzJiYoaD1oLnNsaWNlKDAseC5zaGVldFJvd3MpKSxofXZhciByPXs0NDoiLCIsOToiCSIsNTk6IjsiLDEyNDoifCJ9LHQ9ezQ0OjMsOToyLDU5OjEsMTI0OjB9O2Z1bmN0aW9uIG4obCl7Zm9yKHZhciB1PXt9LHg9ITEsaD0wLGc9MDtoPGwubGVuZ3RoOysraCkoZz1sLmNoYXJDb2RlQXQoaCkpPT0zND94PSF4OiF4JiZnIGluIHImJih1W2ddPSh1W2ddfHwwKSsxKTtnPVtdO2ZvcihoIGluIHUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsaCkmJmcucHVzaChbdVtoXSxoXSk7aWYoIWcubGVuZ3RoKXt1PXQ7Zm9yKGggaW4gdSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxoKSYmZy5wdXNoKFt1W2hdLGhdKX1yZXR1cm4gZy5zb3J0KGZ1bmN0aW9uKG0sZCl7cmV0dXJuIG1bMF0tZFswXXx8dFttWzFdXS10W2RbMV1dfSkscltnLnBvcCgpWzFdXXx8NDR9ZnVuY3Rpb24gaShsLHUpe3ZhciB4PXV8fHt9LGg9IiIsZz17fTt4LmRlbnNlJiYoZ1siIWRhdGEiXT1bXSk7dmFyIG09e3M6e2M6MCxyOjB9LGU6e2M6MCxyOjB9fTtsLnNsaWNlKDAsNCk9PSJzZXA9Ij9sLmNoYXJDb2RlQXQoNSk9PTEzJiZsLmNoYXJDb2RlQXQoNik9PTEwPyhoPWwuY2hhckF0KDQpLGw9bC5zbGljZSg3KSk6bC5jaGFyQ29kZUF0KDUpPT0xM3x8bC5jaGFyQ29kZUF0KDUpPT0xMD8oaD1sLmNoYXJBdCg0KSxsPWwuc2xpY2UoNikpOmg9bihsLnNsaWNlKDAsMTAyNCkpOngmJnguRlM/aD14LkZTOmg9bihsLnNsaWNlKDAsMTAyNCkpO3ZhciBkPTAscD0wLHc9MCxfPTAseT0wLFI9aC5jaGFyQ29kZUF0KDApLFA9ITEsYj0wLE49bC5jaGFyQ29kZUF0KDApLEk9eC5kYXRlTkYhPW51bGw/Q2MoeC5kYXRlTkYpOm51bGw7ZnVuY3Rpb24gQigpe3ZhciBMPWwuc2xpY2UoXyx5KTtMLnNsaWNlKC0xKT09IlxyIiYmKEw9TC5zbGljZSgwLC0xKSk7dmFyIEc9e307aWYoTC5jaGFyQXQoMCk9PSciJyYmTC5jaGFyQXQoTC5sZW5ndGgtMSk9PSciJyYmKEw9TC5zbGljZSgxLC0xKS5yZXBsYWNlKC8iIi9nLCciJykpLHguY2VsbFRleHQhPT0hMSYmKEcudz1MKSxMLmxlbmd0aD09PTApRy50PSJ6IjtlbHNlIGlmKHgucmF3KUcudD0icyIsRy52PUw7ZWxzZSBpZihMLnRyaW0oKS5sZW5ndGg9PT0wKUcudD0icyIsRy52PUw7ZWxzZSBpZihMLmNoYXJDb2RlQXQoMCk9PTYxKUwuY2hhckNvZGVBdCgxKT09MzQmJkwuY2hhckNvZGVBdChMLmxlbmd0aC0xKT09MzQ/KEcudD0icyIsRy52PUwuc2xpY2UoMiwtMSkucmVwbGFjZSgvIiIvZywnIicpKTpNMShMKT8oRy50PSJzIixHLmY9TC5zbGljZSgxKSxHLnY9TCk6KEcudD0icyIsRy52PUwpO2Vsc2UgaWYoTD09IlRSVUUiKUcudD0iYiIsRy52PSEwO2Vsc2UgaWYoTD09IkZBTFNFIilHLnQ9ImIiLEcudj0hMTtlbHNlIGlmKCFpc05hTih3PU9yKEwpKSlHLnQ9Im4iLEcudj13O2Vsc2UgaWYoIWlzTmFOKCh3PVN0KEwpKS5nZXREYXRlKCkpfHxJJiZMLm1hdGNoKEkpKXtpZihHLno9eC5kYXRlTkZ8fFRlWzE0XSxJJiZMLm1hdGNoKEkpKXt2YXIgaWU9YmMoTCx4LmRhdGVORixMLm1hdGNoKEkpfHxbXSk7dz14cihpZSkseCYmeC5VVEM9PT0hMSYmKHc9VWEodykpfWVsc2UgeCYmeC5VVEM9PT0hMT93PVVhKHcpOnguY2VsbFRleHQhPT0hMSYmeC5kYXRlTkYmJihHLnc9UnIoRy56LHcpKTt4LmNlbGxEYXRlcz8oRy50PSJkIixHLnY9dyk6KEcudD0ibiIsRy52PW9yKHcpKSx4LmNlbGxORnx8ZGVsZXRlIEcuen1lbHNlIEwuY2hhckNvZGVBdCgwKT09MzUmJmRyW0xdIT1udWxsPyhHLnQ9ImUiLEcudz1MLEcudj1kcltMXSk6KEcudD0icyIsRy52PUwpO2lmKEcudD09InoifHwoeC5kZW5zZT8oZ1siIWRhdGEiXVtkXXx8KGdbIiFkYXRhIl1bZF09W10pLGdbIiFkYXRhIl1bZF1bcF09Ryk6Z1tEZSh7YzpwLHI6ZH0pXT1HKSxfPXkrMSxOPWwuY2hhckNvZGVBdChfKSxtLmUuYzxwJiYobS5lLmM9cCksbS5lLnI8ZCYmKG0uZS5yPWQpLGI9PVIpKytwO2Vsc2UgaWYocD0wLCsrZCx4LnNoZWV0Um93cyYmeC5zaGVldFJvd3M8PWQpcmV0dXJuITB9ZTpmb3IoO3k8bC5sZW5ndGg7Kyt5KXN3aXRjaChiPWwuY2hhckNvZGVBdCh5KSl7Y2FzZSAzNDpOPT09MzQmJihQPSFQKTticmVhaztjYXNlIDEzOmlmKFApYnJlYWs7bC5jaGFyQ29kZUF0KHkrMSk9PTEwJiYrK3k7Y2FzZSBSOmNhc2UgMTA6aWYoIVAmJkIoKSlicmVhayBlO2JyZWFrfXJldHVybiB5LV8+MCYmQigpLGdbIiFyZWYiXT1JZShtKSxnfWZ1bmN0aW9uIGYobCx1KXtyZXR1cm4hKHUmJnUuUFJOKXx8dS5GU3x8bC5zbGljZSgwLDQpPT0ic2VwPSJ8fGwuaW5kZXhPZigiCSIpPj0wfHxsLmluZGV4T2YoIiwiKT49MHx8bC5pbmRleE9mKCI7Iik+PTA/aShsLHUpOmN0KGEobCx1KSx1KX1mdW5jdGlvbiBzKGwsdSl7dmFyIHg9IiIsaD11LnR5cGU9PSJzdHJpbmciP1swLDAsMCwwXTpSbihsLHUpO3N3aXRjaCh1LnR5cGUpe2Nhc2UiYmFzZTY0Ijp4PUlyKGwpO2JyZWFrO2Nhc2UiYmluYXJ5Ijp4PWw7YnJlYWs7Y2FzZSJidWZmZXIiOnUuY29kZXBhZ2U9PTY1MDAxP3g9bC50b1N0cmluZygidXRmOCIpOnUuY29kZXBhZ2UmJnR5cGVvZiBudDwidSI/eD1udC51dGlscy5kZWNvZGUodS5jb2RlcGFnZSxsKTp4PU5lJiZCdWZmZXIuaXNCdWZmZXIobCk/bC50b1N0cmluZygiYmluYXJ5Iik6ZmEobCk7YnJlYWs7Y2FzZSJhcnJheSI6eD1CYShsKTticmVhaztjYXNlInN0cmluZyI6eD1sO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK3UudHlwZSl9cmV0dXJuIGhbMF09PTIzOSYmaFsxXT09MTg3JiZoWzJdPT0xOTE/eD1WZSh4LnNsaWNlKDMpKTp1LnR5cGUhPSJzdHJpbmciJiZ1LnR5cGUhPSJidWZmZXIiJiZ1LmNvZGVwYWdlPT02NTAwMT94PVZlKHgpOnUudHlwZT09ImJpbmFyeSImJnR5cGVvZiBudDwidSImJnUuY29kZXBhZ2UmJih4PW50LnV0aWxzLmRlY29kZSh1LmNvZGVwYWdlLG50LnV0aWxzLmVuY29kZSgyODU5MSx4KSkpLHguc2xpY2UoMCwxOSk9PSJzb2NpYWxjYWxjOnZlcnNpb246Ij9PdS50b19zaGVldCh1LnR5cGU9PSJzdHJpbmciP3g6VmUoeCksdSk6Zih4LHUpfWZ1bmN0aW9uIGMobCx1KXtyZXR1cm4gQ2EocyhsLHUpLHUpfWZ1bmN0aW9uIG8obCl7dmFyIHU9W107aWYoIWxbIiFyZWYiXSlyZXR1cm4iIjtmb3IodmFyIHg9WmUobFsiIXJlZiJdKSxoLGc9bFsiIWRhdGEiXSE9bnVsbCxtPXgucy5yO208PXguZS5yOysrbSl7Zm9yKHZhciBkPVtdLHA9eC5zLmM7cDw9eC5lLmM7KytwKXt2YXIgdz1EZSh7cjptLGM6cH0pO2lmKGg9Zz8obFsiIWRhdGEiXVttXXx8W10pW3BdOmxbd10sIWh8fGgudj09bnVsbCl7ZC5wdXNoKCIgICAgICAgICAgIik7Y29udGludWV9Zm9yKHZhciBfPShoLnd8fChnYShoKSxoLncpfHwiIikuc2xpY2UoMCwxMCk7Xy5sZW5ndGg8MTA7KV8rPSIgIjtkLnB1c2goXysocD09PTA/IiAiOiIiKSl9dS5wdXNoKGQuam9pbigiIikpfXJldHVybiB1LmpvaW4oYApgKX1yZXR1cm57dG9fd29ya2Jvb2s6Yyx0b19zaGVldDpzLGZyb21fc2hlZXQ6b319KCk7ZnVuY3Rpb24gTnUoZSxhKXt2YXIgcj1hfHx7fSx0PSEhci5XVEY7ci5XVEY9ITA7dHJ5e3ZhciBuPUR1LnRvX3dvcmtib29rKGUscik7cmV0dXJuIHIuV1RGPXQsbn1jYXRjaChpKXtpZihyLldURj10LGkubWVzc2FnZS5pbmRleE9mKCJTWUxLIGJhZCByZWNvcmQgSUQiKT09LTEmJnQpdGhyb3cgaTtyZXR1cm4gbHQudG9fd29ya2Jvb2soZSxhKX19ZnVuY3Rpb24gTXUoZSxhKXt2YXIgcj1hfHx7fSx0PSEhci5XVEY7ci5XVEY9ITA7dHJ5e3ZhciBuPVJ1LnRvX3dvcmtib29rKGUscik7aWYoIW58fCFuLlNoZWV0cyl0aHJvdyJESUYgYmFkIHdvcmtib29rIjt2YXIgaT1uLlNoZWV0c1tuLlNoZWV0TmFtZXNbMF1dO2lmKCFpfHwhaVsiIXJlZiJdKXRocm93IkRJRiBlbXB0eSB3b3Jrc2hlZXQiO3JldHVybiByLldURj10LG59Y2F0Y2h7cmV0dXJuIHIuV1RGPXQsbHQudG9fd29ya2Jvb2soZSxhKX19dmFyIEx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShBLFUsTyl7aWYoQSl7c3IoQSxBLmx8fDApO2Zvcih2YXIgRD1PLkVudW18fG1lO0EubDxBLmxlbmd0aDspe3ZhciB6PUEucmVhZF9zaGlmdCgyKSxwZT1EW3pdfHxEWzY1NTM1XSxKPUEucmVhZF9zaGlmdCgyKSxyZT1BLmwrSixlZT1wZS5mJiZwZS5mKEEsSixPKTtpZihBLmw9cmUsVShlZSxwZSx6KSlyZXR1cm59fX1mdW5jdGlvbiBhKEEsVSl7c3dpdGNoKFUudHlwZSl7Y2FzZSJiYXNlNjQiOnJldHVybiB0KERyKElyKEEpKSxVKTtjYXNlImJpbmFyeSI6cmV0dXJuIHQoRHIoQSksVSk7Y2FzZSJidWZmZXIiOmNhc2UiYXJyYXkiOnJldHVybiB0KEEsVSl9dGhyb3ciVW5zdXBwb3J0ZWQgdHlwZSAiK1UudHlwZX12YXIgcj1bIm1tbW0iLCJkZC1tbW0teXl5eSIsImRkLW1tbSIsIm1tbS15eXl5IiwiQCIsIm1tL2RkIiwiaGg6bW06c3MgQU0vUE0iLCJoaDptbSBBTS9QTSIsIm1tL2RkL3l5eXkiLCJtbS9kZCIsImhoOm1tOnNzIiwiaGg6bW0iXTtmdW5jdGlvbiB0KEEsVSl7aWYoIUEpcmV0dXJuIEE7dmFyIE89VXx8e30sRD17fSx6PSJTaGVldDEiLHBlPSIiLEo9MCxyZT17fSxlZT1bXSxrZT1bXSxoZT1bXTtPLmRlbnNlJiYoaGU9RFsiIWRhdGEiXT1bXSk7dmFyIHhlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sWGU9Ty5zaGVldFJvd3N8fDAsemU9e307aWYoQVs0XT09ODEmJkFbNV09PTgwJiZBWzZdPT04NylyZXR1cm4gQWUoQSxVKTtpZihBWzJdPT0wJiYoQVszXT09OHx8QVszXT09OSkmJkEubGVuZ3RoPj0xNiYmQVsxNF09PTUmJkFbMTVdPT09MTA4KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgV29ya3MgMyBmb3IgTWFjIGZpbGUiKTtpZihBWzJdPT0yKU8uRW51bT1tZSxlKEEsZnVuY3Rpb24oZmUsc2EsanIpe3N3aXRjaChqcil7Y2FzZSAwOk8udmVycz1mZSxmZT49NDA5NiYmKE8ucXBybz0hMCk7YnJlYWs7Y2FzZSAyNTU6Ty52ZXJzPWZlLE8ud29ya3M9ITA7YnJlYWs7Y2FzZSA2OnhlPWZlO2JyZWFrO2Nhc2UgMjA0OmZlJiYocGU9ZmUpO2JyZWFrO2Nhc2UgMjIyOnBlPWZlO2JyZWFrO2Nhc2UgMTU6Y2FzZSA1MTooIU8ucXBybyYmIU8ud29ya3N8fGpyPT01MSkmJmZlWzFdLnYuY2hhckNvZGVBdCgwKTw0OCYmKGZlWzFdLnY9ZmVbMV0udi5zbGljZSgxKSksKE8ud29ya3N8fE8ud29ya3MyKSYmKGZlWzFdLnY9ZmVbMV0udi5yZXBsYWNlKC9cclxuL2csYApgKSk7Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTY6KGZlWzJdJjExMik9PTExMiYmKGZlWzJdJjE1KT4xJiYoZmVbMl0mMTUpPDE1JiYoZmVbMV0uej1PLmRhdGVORnx8clsoZmVbMl0mMTUpLTFdfHxUZVsxNF0sTy5jZWxsRGF0ZXMmJihmZVsxXS52PVNhKGZlWzFdLnYpLGZlWzFdLnQ9dHlwZW9mIGZlWzFdLnY9PSJudW1iZXIiPyJuIjoiZCIpKSxPLnFwcm8mJmZlWzNdPkomJihEWyIhcmVmIl09SWUoeGUpLHJlW3pdPUQsZWUucHVzaCh6KSxEPXt9LE8uZGVuc2UmJihoZT1EWyIhZGF0YSJdPVtdKSx4ZT17czp7cjowLGM6MH0sZTp7cjowLGM6MH19LEo9ZmVbM10sej1wZXx8IlNoZWV0IisoSisxKSxwZT0iIik7dmFyIFllPU8uZGVuc2U/KGhlW2ZlWzBdLnJdfHxbXSlbZmVbMF0uY106RFtEZShmZVswXSldO2lmKFllKXtZZS50PWZlWzFdLnQsWWUudj1mZVsxXS52LGZlWzFdLnohPW51bGwmJihZZS56PWZlWzFdLnopLGZlWzFdLmYhPW51bGwmJihZZS5mPWZlWzFdLmYpLHplPVllO2JyZWFrfU8uZGVuc2U/KGhlW2ZlWzBdLnJdfHwoaGVbZmVbMF0ucl09W10pLGhlW2ZlWzBdLnJdW2ZlWzBdLmNdPWZlWzFdKTpEW0RlKGZlWzBdKV09ZmVbMV0semU9ZmVbMV07YnJlYWs7Y2FzZSAyMTUwOTpPLndvcmtzMj0hMDticmVhaztjYXNlIDIxNTA2OmZlPT01MjgxJiYoemUuej0iaGg6bW06c3MiLE8uY2VsbERhdGVzJiZ6ZS50PT0ibiImJih6ZS52PVNhKHplLnYpLHplLnQ9dHlwZW9mIHplLnY9PSJudW1iZXIiPyJuIjoiZCIpKTticmVha319LE8pO2Vsc2UgaWYoQVsyXT09MjZ8fEFbMl09PTE0KU8uRW51bT1aLEFbMl09PTE0JiYoTy5xcHJvPSEwLEEubD0wKSxlKEEsZnVuY3Rpb24oZmUsc2EsanIpe3N3aXRjaChqcil7Y2FzZSAyMDQ6ej1mZTticmVhaztjYXNlIDIyOmZlWzFdLnYuY2hhckNvZGVBdCgwKTw0OCYmKGZlWzFdLnY9ZmVbMV0udi5zbGljZSgxKSksZmVbMV0udj1mZVsxXS52LnJlcGxhY2UoL1x4MEYuL2csZnVuY3Rpb24oWWUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFllLmNoYXJDb2RlQXQoMSktMzIpfSkucmVwbGFjZSgvXHJcbi9nLGAKYCk7Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjU6Y2FzZSAzNzpjYXNlIDM5OmNhc2UgNDA6aWYoZmVbM10+SiYmKERbIiFyZWYiXT1JZSh4ZSkscmVbel09RCxlZS5wdXNoKHopLEQ9e30sTy5kZW5zZSYmKGhlPURbIiFkYXRhIl09W10pLHhlPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sSj1mZVszXSx6PSJTaGVldCIrKEorMSkpLFhlPjAmJmZlWzBdLnI+PVhlKWJyZWFrO08uZGVuc2U/KGhlW2ZlWzBdLnJdfHwoaGVbZmVbMF0ucl09W10pLGhlW2ZlWzBdLnJdW2ZlWzBdLmNdPWZlWzFdKTpEW0RlKGZlWzBdKV09ZmVbMV0seGUuZS5jPGZlWzBdLmMmJih4ZS5lLmM9ZmVbMF0uYykseGUuZS5yPGZlWzBdLnImJih4ZS5lLnI9ZmVbMF0ucik7YnJlYWs7Y2FzZSAyNzpmZVsxNGUzXSYmKGtlW2ZlWzE0ZTNdWzBdXT1mZVsxNGUzXVsxXSk7YnJlYWs7Y2FzZSAxNTM3OmtlW2ZlWzBdXT1mZVsxXSxmZVswXT09SiYmKHo9ZmVbMV0pO2JyZWFrfX0sTyk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBMT1RVUyBCT0YgIitBWzJdKTtpZihEWyIhcmVmIl09SWUoeGUpLHJlW3BlfHx6XT1ELGVlLnB1c2gocGV8fHopLCFrZS5sZW5ndGgpcmV0dXJue1NoZWV0TmFtZXM6ZWUsU2hlZXRzOnJlfTtmb3IodmFyIGplPXt9LGRlPVtdLFdlPTA7V2U8a2UubGVuZ3RoOysrV2UpcmVbZWVbV2VdXT8oZGUucHVzaChrZVtXZV18fGVlW1dlXSksamVba2VbV2VdXT1yZVtrZVtXZV1dfHxyZVtlZVtXZV1dKTooZGUucHVzaChrZVtXZV0pLGplW2tlW1dlXV09eyIhcmVmIjoiQTEifSk7cmV0dXJue1NoZWV0TmFtZXM6ZGUsU2hlZXRzOmplfX1mdW5jdGlvbiBuKEEsVSl7dmFyIE89VXx8e307aWYoK08uY29kZXBhZ2U+PTAmJllyKCtPLmNvZGVwYWdlKSxPLnR5cGU9PSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHdyaXRlIFdLMSB0byBKUyBzdHJpbmciKTt2YXIgRD1hbigpO2lmKCFBWyIhcmVmIl0pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZXhwb3J0IGVtcHR5IHNoZWV0IHRvIFdLMSIpO3ZhciB6PVplKEFbIiFyZWYiXSkscGU9QVsiIWRhdGEiXSE9bnVsbCxKPVtdO1ByKEQsMCxmKDEwMzApKSxQcihELDYsbyh6KSk7Zm9yKHZhciByZT1NYXRoLm1pbih6LmUuciw4MTkxKSxlZT16LnMuYztlZTw9ei5lLmM7KytlZSlKW2VlXT1IZShlZSk7Zm9yKHZhciBrZT16LnMucjtrZTw9cmU7KytrZSl7dmFyIGhlPUdlKGtlKTtmb3IoZWU9ei5zLmM7ZWU8PXouZS5jOysrZWUpe3ZhciB4ZT1wZT8oQVsiIWRhdGEiXVtrZV18fFtdKVtlZV06QVtKW2VlXStoZV07aWYoISgheGV8fHhlLnQ9PSJ6Iikpc3dpdGNoKHhlLnQpe2Nhc2UibiI6KHhlLnZ8MCk9PXhlLnYmJnhlLnY+PS0zMjc2OCYmeGUudjw9MzI3Njc/UHIoRCwxMyxkKGtlLGVlLHhlKSk6UHIoRCwxNCx3KGtlLGVlLHhlKSk7YnJlYWs7Y2FzZSJkIjp2YXIgWGU9b3IoeGUudik7KFhlfDApPT1YZSYmWGU+PS0zMjc2OCYmWGU8PTMyNzY3P1ByKEQsMTMsZChrZSxlZSx7dDoibiIsdjpYZSx6OnhlLnp8fFRlWzE0XX0pKTpQcihELDE0LHcoa2UsZWUse3Q6Im4iLHY6WGUsejp4ZS56fHxUZVsxNF19KSk7YnJlYWs7ZGVmYXVsdDp2YXIgemU9Z2EoeGUpO1ByKEQsMTUsaChrZSxlZSx6ZS5zbGljZSgwLDIzOSkpKX19fXJldHVybiBQcihELDEpLEQuZW5kKCl9ZnVuY3Rpb24gaShBLFUpe3ZhciBPPVV8fHt9O2lmKCtPLmNvZGVwYWdlPj0wJiZZcigrTy5jb2RlcGFnZSksTy50eXBlPT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB3cml0ZSBXSzMgdG8gSlMgc3RyaW5nIik7dmFyIEQ9YW4oKTtQcihELDAscyhBKSk7Zm9yKHZhciB6PTAscGU9MDt6PEEuU2hlZXROYW1lcy5sZW5ndGg7Kyt6KShBLlNoZWV0c1tBLlNoZWV0TmFtZXNbel1dfHx7fSlbIiFyZWYiXSYmUHIoRCwyNyxiZShBLlNoZWV0TmFtZXNbel0scGUrKykpO3ZhciBKPTA7Zm9yKHo9MDt6PEEuU2hlZXROYW1lcy5sZW5ndGg7Kyt6KXt2YXIgcmU9QS5TaGVldHNbQS5TaGVldE5hbWVzW3pdXTtpZighKCFyZXx8IXJlWyIhcmVmIl0pKXtmb3IodmFyIGVlPVplKHJlWyIhcmVmIl0pLGtlPXJlWyIhZGF0YSJdIT1udWxsLGhlPVtdLHhlPU1hdGgubWluKGVlLmUuciw4MTkxKSxYZT1lZS5zLnI7WGU8PXhlOysrWGUpZm9yKHZhciB6ZT1HZShYZSksamU9ZWUucy5jO2plPD1lZS5lLmM7KytqZSl7WGU9PT1lZS5zLnImJihoZVtqZV09SGUoamUpKTt2YXIgZGU9aGVbamVdK3plLFdlPWtlPyhyZVsiIWRhdGEiXVtYZV18fFtdKVtqZV06cmVbZGVdO2lmKCEoIVdlfHxXZS50PT0ieiIpKWlmKFdlLnQ9PSJuIilQcihELDIzLGllKFhlLGplLEosV2UudikpO2Vsc2V7dmFyIGZlPWdhKFdlKTtQcihELDIyLEIoWGUsamUsSixmZS5zbGljZSgwLDIzOSkpKX19KytKfX1yZXR1cm4gUHIoRCwxKSxELmVuZCgpfWZ1bmN0aW9uIGYoQSl7dmFyIFU9ZnIoMik7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixBKSxVfWZ1bmN0aW9uIHMoQSl7dmFyIFU9ZnIoMjYpO1Uud3JpdGVfc2hpZnQoMiw0MDk2KSxVLndyaXRlX3NoaWZ0KDIsNCksVS53cml0ZV9zaGlmdCg0LDApO2Zvcih2YXIgTz0wLEQ9MCx6PTAscGU9MDtwZTxBLlNoZWV0TmFtZXMubGVuZ3RoOysrcGUpe3ZhciBKPUEuU2hlZXROYW1lc1twZV0scmU9QS5TaGVldHNbSl07aWYoISghcmV8fCFyZVsiIXJlZiJdKSl7Kyt6O3ZhciBlZT1wYShyZVsiIXJlZiJdKTtPPGVlLmUuciYmKE89ZWUuZS5yKSxEPGVlLmUuYyYmKEQ9ZWUuZS5jKX19cmV0dXJuIE8+ODE5MSYmKE89ODE5MSksVS53cml0ZV9zaGlmdCgyLE8pLFUud3JpdGVfc2hpZnQoMSx6KSxVLndyaXRlX3NoaWZ0KDEsRCksVS53cml0ZV9zaGlmdCgyLDApLFUud3JpdGVfc2hpZnQoMiwwKSxVLndyaXRlX3NoaWZ0KDEsMSksVS53cml0ZV9zaGlmdCgxLDIpLFUud3JpdGVfc2hpZnQoNCwwKSxVLndyaXRlX3NoaWZ0KDQsMCksVX1mdW5jdGlvbiBjKEEsVSxPKXt2YXIgRD17czp7YzowLHI6MH0sZTp7YzowLHI6MH19O3JldHVybiBVPT04JiZPLnFwcm8/KEQucy5jPUEucmVhZF9zaGlmdCgxKSxBLmwrKyxELnMucj1BLnJlYWRfc2hpZnQoMiksRC5lLmM9QS5yZWFkX3NoaWZ0KDEpLEEubCsrLEQuZS5yPUEucmVhZF9zaGlmdCgyKSxEKTooRC5zLmM9QS5yZWFkX3NoaWZ0KDIpLEQucy5yPUEucmVhZF9zaGlmdCgyKSxVPT0xMiYmTy5xcHJvJiYoQS5sKz0yKSxELmUuYz1BLnJlYWRfc2hpZnQoMiksRC5lLnI9QS5yZWFkX3NoaWZ0KDIpLFU9PTEyJiZPLnFwcm8mJihBLmwrPTIpLEQucy5jPT02NTUzNSYmKEQucy5jPUQuZS5jPUQucy5yPUQuZS5yPTApLEQpfWZ1bmN0aW9uIG8oQSl7dmFyIFU9ZnIoOCk7cmV0dXJuIFUud3JpdGVfc2hpZnQoMixBLnMuYyksVS53cml0ZV9zaGlmdCgyLEEucy5yKSxVLndyaXRlX3NoaWZ0KDIsQS5lLmMpLFUud3JpdGVfc2hpZnQoMixBLmUuciksVX1mdW5jdGlvbiBsKEEsVSxPKXt2YXIgRD1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDAsMF07cmV0dXJuIE8ucXBybyYmTy52ZXJzIT0yMDc2OD8oRFswXS5jPUEucmVhZF9zaGlmdCgxKSxEWzNdPUEucmVhZF9zaGlmdCgxKSxEWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLEEubCs9Mik6Ty53b3Jrcz8oRFswXS5jPUEucmVhZF9zaGlmdCgyKSxEWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLERbMl09QS5yZWFkX3NoaWZ0KDIpKTooRFsyXT1BLnJlYWRfc2hpZnQoMSksRFswXS5jPUEucmVhZF9zaGlmdCgyKSxEWzBdLnI9QS5yZWFkX3NoaWZ0KDIpKSxEfWZ1bmN0aW9uIHUoQSl7cmV0dXJuIEEueiYmWnIoQS56KT8yNDB8KHIuaW5kZXhPZihBLnopKzF8fDIpOjI1NX1mdW5jdGlvbiB4KEEsVSxPKXt2YXIgRD1BLmwrVSx6PWwoQSxVLE8pO2lmKHpbMV0udD0icyIsKE8udmVycyY2NTUzNCk9PTIwNzY4KXtBLmwrKzt2YXIgcGU9QS5yZWFkX3NoaWZ0KDEpO3JldHVybiB6WzFdLnY9QS5yZWFkX3NoaWZ0KHBlLCJ1dGY4Iiksen1yZXR1cm4gTy5xcHJvJiZBLmwrKyx6WzFdLnY9QS5yZWFkX3NoaWZ0KEQtQS5sLCJjc3RyIiksen1mdW5jdGlvbiBoKEEsVSxPKXt2YXIgRD1mcig3K08ubGVuZ3RoKTtELndyaXRlX3NoaWZ0KDEsMjU1KSxELndyaXRlX3NoaWZ0KDIsVSksRC53cml0ZV9zaGlmdCgyLEEpLEQud3JpdGVfc2hpZnQoMSwzOSk7Zm9yKHZhciB6PTA7ejxELmxlbmd0aDsrK3ope3ZhciBwZT1PLmNoYXJDb2RlQXQoeik7RC53cml0ZV9zaGlmdCgxLHBlPj0xMjg/OTU6cGUpfXJldHVybiBELndyaXRlX3NoaWZ0KDEsMCksRH1mdW5jdGlvbiBnKEEsVSxPKXt2YXIgRD1BLmwrVSx6PWwoQSxVLE8pO2lmKHpbMV0udD0icyIsTy52ZXJzPT0yMDc2OCl7dmFyIHBlPUEucmVhZF9zaGlmdCgxKTtyZXR1cm4gelsxXS52PUEucmVhZF9zaGlmdChwZSwidXRmOCIpLHp9cmV0dXJuIHpbMV0udj1BLnJlYWRfc2hpZnQoRC1BLmwsImNzdHIiKSx6fWZ1bmN0aW9uIG0oQSxVLE8pe3ZhciBEPWwoQSxVLE8pO3JldHVybiBEWzFdLnY9QS5yZWFkX3NoaWZ0KDIsImkiKSxEfWZ1bmN0aW9uIGQoQSxVLE8pe3ZhciBEPWZyKDcpO3JldHVybiBELndyaXRlX3NoaWZ0KDEsdShPKSksRC53cml0ZV9zaGlmdCgyLFUpLEQud3JpdGVfc2hpZnQoMixBKSxELndyaXRlX3NoaWZ0KDIsTy52LCJpIiksRH1mdW5jdGlvbiBwKEEsVSxPKXt2YXIgRD1sKEEsVSxPKTtyZXR1cm4gRFsxXS52PUEucmVhZF9zaGlmdCg4LCJmIiksRH1mdW5jdGlvbiB3KEEsVSxPKXt2YXIgRD1mcigxMyk7cmV0dXJuIEQud3JpdGVfc2hpZnQoMSx1KE8pKSxELndyaXRlX3NoaWZ0KDIsVSksRC53cml0ZV9zaGlmdCgyLEEpLEQud3JpdGVfc2hpZnQoOCxPLnYsImYiKSxEfWZ1bmN0aW9uIF8oQSxVLE8pe3ZhciBEPUEubCtVLHo9bChBLFUsTyk7aWYoelsxXS52PUEucmVhZF9zaGlmdCg4LCJmIiksTy5xcHJvKUEubD1EO2Vsc2V7dmFyIHBlPUEucmVhZF9zaGlmdCgyKTtiKEEuc2xpY2UoQS5sLEEubCtwZSkseiksQS5sKz1wZX1yZXR1cm4gen1mdW5jdGlvbiB5KEEsVSxPKXt2YXIgRD1VJjMyNzY4O3JldHVybiBVJj0tMzI3NjksVT0oRD9BOjApKyhVPj04MTkyP1UtMTYzODQ6VSksKEQ/IiI6IiQiKSsoTz9IZShVKTpHZShVKSl9dmFyIFI9ezMxOlsiTkEiLDBdLDMzOlsiQUJTIiwxXSwzNDpbIlRSVU5DIiwxXSwzNTpbIlNRUlQiLDFdLDM2OlsiTE9HIiwxXSwzNzpbIkxOIiwxXSwzODpbIlBJIiwwXSwzOTpbIlNJTiIsMV0sNDA6WyJDT1MiLDFdLDQxOlsiVEFOIiwxXSw0MjpbIkFUQU4yIiwyXSw0MzpbIkFUQU4iLDFdLDQ0OlsiQVNJTiIsMV0sNDU6WyJBQ09TIiwxXSw0NjpbIkVYUCIsMV0sNDc6WyJNT0QiLDJdLDQ5OlsiSVNOQSIsMV0sNTA6WyJJU0VSUiIsMV0sNTE6WyJGQUxTRSIsMF0sNTI6WyJUUlVFIiwwXSw1MzpbIlJBTkQiLDBdLDU0OlsiREFURSIsM10sNjM6WyJST1VORCIsMl0sNjQ6WyJUSU1FIiwzXSw2ODpbIklTTlVNQkVSIiwxXSw2OTpbIklTVEVYVCIsMV0sNzA6WyJMRU4iLDFdLDcxOlsiVkFMVUUiLDFdLDczOlsiTUlEIiwzXSw3NDpbIkNIQVIiLDFdLDgwOlsiU1VNIiw2OV0sODE6WyJBVkVSQUdFQSIsNjldLDgyOlsiQ09VTlRBIiw2OV0sODM6WyJNSU5BIiw2OV0sODQ6WyJNQVhBIiw2OV0sMTAyOlsiVVBQRVIiLDFdLDEwMzpbIkxPV0VSIiwxXSwxMDc6WyJQUk9QRVIiLDFdLDEwOTpbIlRSSU0iLDFdLDExMTpbIlQiLDFdfSxQPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiKyIsIi0iLCIqIiwiLyIsIl4iLCI9IiwiPD4iLCI8PSIsIj49IiwiPCIsIj4iLCIiLCIiLCIiLCIiLCImIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl07ZnVuY3Rpb24gYihBLFUpe3NyKEEsMCk7Zm9yKHZhciBPPVtdLEQ9MCx6PSIiLHBlPSIiLEo9IiIscmU9IiI7QS5sPEEubGVuZ3RoOyl7dmFyIGVlPUFbQS5sKytdO3N3aXRjaChlZSl7Y2FzZSAwOk8ucHVzaChBLnJlYWRfc2hpZnQoOCwiZiIpKTticmVhaztjYXNlIDE6cGU9eShVWzBdLmMsQS5yZWFkX3NoaWZ0KDIpLCEwKSx6PXkoVVswXS5yLEEucmVhZF9zaGlmdCgyKSwhMSksTy5wdXNoKHBlK3opO2JyZWFrO2Nhc2UgMjp7dmFyIGtlPXkoVVswXS5jLEEucmVhZF9zaGlmdCgyKSwhMCksaGU9eShVWzBdLnIsQS5yZWFkX3NoaWZ0KDIpLCExKTtwZT15KFVbMF0uYyxBLnJlYWRfc2hpZnQoMiksITApLHo9eShVWzBdLnIsQS5yZWFkX3NoaWZ0KDIpLCExKSxPLnB1c2goa2UraGUrIjoiK3BlK3opfWJyZWFrO2Nhc2UgMzppZihBLmw8QS5sZW5ndGgpe2NvbnNvbGUuZXJyb3IoIldLMSBwcmVtYXR1cmUgZm9ybXVsYSBlbmQiKTtyZXR1cm59YnJlYWs7Y2FzZSA0Ok8ucHVzaCgiKCIrTy5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgNTpPLnB1c2goQS5yZWFkX3NoaWZ0KDIpKTticmVhaztjYXNlIDY6e2Zvcih2YXIgeGU9IiI7ZWU9QVtBLmwrK107KXhlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVlKTtPLnB1c2goJyInK3hlLnJlcGxhY2UoLyIvZywnIiInKSsnIicpfWJyZWFrO2Nhc2UgODpPLnB1c2goIi0iK08ucG9wKCkpO2JyZWFrO2Nhc2UgMjM6Ty5wdXNoKCIrIitPLnBvcCgpKTticmVhaztjYXNlIDIyOk8ucHVzaCgiTk9UKCIrTy5wb3AoKSsiKSIpO2JyZWFrO2Nhc2UgMjA6Y2FzZSAyMTpyZT1PLnBvcCgpLEo9Ty5wb3AoKSxPLnB1c2goWyJBTkQiLCJPUiJdW2VlLTIwXSsiKCIrSisiLCIrcmUrIikiKTticmVhaztkZWZhdWx0OmlmKGVlPDMyJiZQW2VlXSlyZT1PLnBvcCgpLEo9Ty5wb3AoKSxPLnB1c2goSitQW2VlXStyZSk7ZWxzZSBpZihSW2VlXSl7aWYoRD1SW2VlXVsxXSxEPT02OSYmKEQ9QVtBLmwrK10pLEQ+Ty5sZW5ndGgpe2NvbnNvbGUuZXJyb3IoIldLMSBiYWQgZm9ybXVsYSBwYXJzZSAweCIrZWUudG9TdHJpbmcoMTYpKyI6fCIrTy5qb2luKCJ8IikrInwiKTtyZXR1cm59dmFyIFhlPU8uc2xpY2UoLUQpO08ubGVuZ3RoLT1ELE8ucHVzaChSW2VlXVswXSsiKCIrWGUuam9pbigiLCIpKyIpIil9ZWxzZSByZXR1cm4gZWU8PTc/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MjQ/Y29uc29sZS5lcnJvcigiV0sxIHVuc3VwcG9ydGVkIG9wICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MzA/Y29uc29sZS5lcnJvcigiV0sxIGludmFsaWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKTplZTw9MTE1P2NvbnNvbGUuZXJyb3IoIldLMSB1bnN1cHBvcnRlZCBmdW5jdGlvbiBvcGNvZGUgIitlZS50b1N0cmluZygxNikpOmNvbnNvbGUuZXJyb3IoIldLMSB1bnJlY29nbml6ZWQgb3Bjb2RlICIrZWUudG9TdHJpbmcoMTYpKX19Ty5sZW5ndGg9PTE/VVsxXS5mPSIiK09bMF06Y29uc29sZS5lcnJvcigiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHwiK08uam9pbigifCIpKyJ8Iil9ZnVuY3Rpb24gTihBKXt2YXIgVT1be2M6MCxyOjB9LHt0OiJuIix2OjB9LDBdO3JldHVybiBVWzBdLnI9QS5yZWFkX3NoaWZ0KDIpLFVbM109QVtBLmwrK10sVVswXS5jPUFbQS5sKytdLFV9ZnVuY3Rpb24gSShBLFUpe3ZhciBPPU4oQSk7cmV0dXJuIE9bMV0udD0icyIsT1sxXS52PUEucmVhZF9zaGlmdChVLTQsImNzdHIiKSxPfWZ1bmN0aW9uIEIoQSxVLE8sRCl7dmFyIHo9ZnIoNitELmxlbmd0aCk7ei53cml0ZV9zaGlmdCgyLEEpLHoud3JpdGVfc2hpZnQoMSxPKSx6LndyaXRlX3NoaWZ0KDEsVSksei53cml0ZV9zaGlmdCgxLDM5KTtmb3IodmFyIHBlPTA7cGU8RC5sZW5ndGg7KytwZSl7dmFyIEo9RC5jaGFyQ29kZUF0KHBlKTt6LndyaXRlX3NoaWZ0KDEsSj49MTI4Pzk1OkopfXJldHVybiB6LndyaXRlX3NoaWZ0KDEsMCksen1mdW5jdGlvbiBMKEEsVSl7dmFyIE89TihBKTtPWzFdLnY9QS5yZWFkX3NoaWZ0KDIpO3ZhciBEPU9bMV0udj4+MTtpZihPWzFdLnYmMSlzd2l0Y2goRCY3KXtjYXNlIDA6RD0oRD4+MykqNWUzO2JyZWFrO2Nhc2UgMTpEPShEPj4zKSo1MDA7YnJlYWs7Y2FzZSAyOkQ9KEQ+PjMpLzIwO2JyZWFrO2Nhc2UgMzpEPShEPj4zKS8yMDA7YnJlYWs7Y2FzZSA0OkQ9KEQ+PjMpLzJlMzticmVhaztjYXNlIDU6RD0oRD4+MykvMmU0O2JyZWFrO2Nhc2UgNjpEPShEPj4zKS8xNjticmVhaztjYXNlIDc6RD0oRD4+MykvNjQ7YnJlYWt9cmV0dXJuIE9bMV0udj1ELE99ZnVuY3Rpb24gRyhBLFUpe3ZhciBPPU4oQSksRD1BLnJlYWRfc2hpZnQoNCksej1BLnJlYWRfc2hpZnQoNCkscGU9QS5yZWFkX3NoaWZ0KDIpO2lmKHBlPT02NTUzNSlyZXR1cm4gRD09PTAmJno9PT0zMjIxMjI1NDcyPyhPWzFdLnQ9ImUiLE9bMV0udj0xNSk6RD09PTAmJno9PT0zNDg5NjYwOTI4PyhPWzFdLnQ9ImUiLE9bMV0udj00Mik6T1sxXS52PTAsTzt2YXIgSj1wZSYzMjc2ODtyZXR1cm4gcGU9KHBlJjMyNzY3KS0xNjQ0NixPWzFdLnY9KDEtSioyKSooeipNYXRoLnBvdygyLHBlKzMyKStEKk1hdGgucG93KDIscGUpKSxPfWZ1bmN0aW9uIGllKEEsVSxPLEQpe3ZhciB6PWZyKDE0KTtpZih6LndyaXRlX3NoaWZ0KDIsQSksei53cml0ZV9zaGlmdCgxLE8pLHoud3JpdGVfc2hpZnQoMSxVKSxEPT0wKXJldHVybiB6LndyaXRlX3NoaWZ0KDQsMCksei53cml0ZV9zaGlmdCg0LDApLHoud3JpdGVfc2hpZnQoMiw2NTUzNSksejt2YXIgcGU9MCxKPTAscmU9MCxlZT0wO3JldHVybiBEPDAmJihwZT0xLEQ9LUQpLEo9TWF0aC5sb2cyKEQpfDAsRC89TWF0aC5wb3coMixKLTMxKSxlZT1EPj4+MCxlZSYyMTQ3NDgzNjQ4fHwoRC89MiwrK0osZWU9RD4+PjApLEQtPWVlLGVlfD0yMTQ3NDgzNjQ4LGVlPj4+PTAsRCo9TWF0aC5wb3coMiwzMikscmU9RD4+PjAsei53cml0ZV9zaGlmdCg0LHJlKSx6LndyaXRlX3NoaWZ0KDQsZWUpLEorPTE2MzgzKyhwZT8zMjc2ODowKSx6LndyaXRlX3NoaWZ0KDIsSiksen1mdW5jdGlvbiBuZShBLFUpe3ZhciBPPUcoQSk7cmV0dXJuIEEubCs9VS0xNCxPfWZ1bmN0aW9uIHEoQSxVKXt2YXIgTz1OKEEpLEQ9QS5yZWFkX3NoaWZ0KDQpO3JldHVybiBPWzFdLnY9RD4+NixPfWZ1bmN0aW9uIGxlKEEsVSl7dmFyIE89TihBKSxEPUEucmVhZF9zaGlmdCg4LCJmIik7cmV0dXJuIE9bMV0udj1ELE99ZnVuY3Rpb24gUShBLFUpe3ZhciBPPWxlKEEpO3JldHVybiBBLmwrPVUtMTIsT31mdW5jdGlvbiBnZShBLFUpe3JldHVybiBBW0EubCtVLTFdPT0wP0EucmVhZF9zaGlmdChVLCJjc3RyIik6IiJ9ZnVuY3Rpb24gdWUoQSxVKXt2YXIgTz1BW0EubCsrXTtPPlUtMSYmKE89VS0xKTtmb3IodmFyIEQ9IiI7RC5sZW5ndGg8TzspRCs9U3RyaW5nLmZyb21DaGFyQ29kZShBW0EubCsrXSk7cmV0dXJuIER9ZnVuY3Rpb24gaihBLFUsTyl7aWYoISghTy5xcHJvfHxVPDIxKSl7dmFyIEQ9QS5yZWFkX3NoaWZ0KDEpO0EubCs9MTcsQS5sKz0xLEEubCs9Mjt2YXIgej1BLnJlYWRfc2hpZnQoVS0yMSwiY3N0ciIpO3JldHVybltELHpdfX1mdW5jdGlvbiB5ZShBLFUpe2Zvcih2YXIgTz17fSxEPUEubCtVO0EubDxEOyl7dmFyIHo9QS5yZWFkX3NoaWZ0KDIpO2lmKHo9PTE0ZTMpe2ZvcihPW3pdPVswLCIiXSxPW3pdWzBdPUEucmVhZF9zaGlmdCgyKTtBW0EubF07KU9bel1bMV0rPVN0cmluZy5mcm9tQ2hhckNvZGUoQVtBLmxdKSxBLmwrKztBLmwrK319cmV0dXJuIE99ZnVuY3Rpb24gYmUoQSxVKXt2YXIgTz1mcig1K0EubGVuZ3RoKTtPLndyaXRlX3NoaWZ0KDIsMTRlMyksTy53cml0ZV9zaGlmdCgyLFUpO2Zvcih2YXIgRD0wO0Q8QS5sZW5ndGg7KytEKXt2YXIgej1BLmNoYXJDb2RlQXQoRCk7T1tPLmwrK109ej4xMjc/OTU6en1yZXR1cm4gT1tPLmwrK109MCxPfXZhciBtZT17MDp7bjoiQk9GIixmOmVyfSwxOntuOiJFT0YifSwyOntuOiJDQUxDTU9ERSJ9LDM6e246IkNBTENPUkRFUiJ9LDQ6e246IlNQTElUIn0sNTp7bjoiU1lOQyJ9LDY6e246IlJBTkdFIixmOmN9LDc6e246IldJTkRPVzEifSw4OntuOiJDT0xXMSJ9LDk6e246IldJTlRXTyJ9LDEwOntuOiJDT0xXMiJ9LDExOntuOiJOQU1FIn0sMTI6e246IkJMQU5LIn0sMTM6e246IklOVEVHRVIiLGY6bX0sMTQ6e246Ik5VTUJFUiIsZjpwfSwxNTp7bjoiTEFCRUwiLGY6eH0sMTY6e246IkZPUk1VTEEiLGY6X30sMjQ6e246IlRBQkxFIn0sMjU6e246Ik9SQU5HRSJ9LDI2OntuOiJQUkFOR0UifSwyNzp7bjoiU1JBTkdFIn0sMjg6e246IkZSQU5HRSJ9LDI5OntuOiJLUkFOR0UxIn0sMzI6e246IkhSQU5HRSJ9LDM1OntuOiJLUkFOR0UyIn0sMzY6e246IlBST1RFQyJ9LDM3OntuOiJGT09URVIifSwzODp7bjoiSEVBREVSIn0sMzk6e246IlNFVFVQIn0sNDA6e246Ik1BUkdJTlMifSw0MTp7bjoiTEFCRUxGTVQifSw0Mjp7bjoiVElUTEVTIn0sNDM6e246IlNIRUVUSlMifSw0NTp7bjoiR1JBUEgifSw0Njp7bjoiTkdSQVBIIn0sNDc6e246IkNBTENDT1VOVCJ9LDQ4OntuOiJVTkZPUk1BVFRFRCJ9LDQ5OntuOiJDVVJTT1JXMTIifSw1MDp7bjoiV0lORE9XIn0sNTE6e246IlNUUklORyIsZjpnfSw1NTp7bjoiUEFTU1dPUkQifSw1Njp7bjoiTE9DS0VEIn0sNjA6e246IlFVRVJZIn0sNjE6e246IlFVRVJZTkFNRSJ9LDYyOntuOiJQUklOVCJ9LDYzOntuOiJQUklOVE5BTUUifSw2NDp7bjoiR1JBUEgyIn0sNjU6e246IkdSQVBITkFNRSJ9LDY2OntuOiJaT09NIn0sNjc6e246IlNZTVNQTElUIn0sNjg6e246Ik5TUk9XUyJ9LDY5OntuOiJOU0NPTFMifSw3MDp7bjoiUlVMRVIifSw3MTp7bjoiTk5BTUUifSw3Mjp7bjoiQUNPTU0ifSw3Mzp7bjoiQU1BQ1JPIn0sNzQ6e246IlBBUlNFIn0sMTAyOntuOiJQUkFOR0VTPz8ifSwxMDM6e246IlJSQU5HRVM/PyJ9LDEwNDp7bjoiRk5BTUU/PyJ9LDEwNTp7bjoiTVJBTkdFUz8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpnZX0sMjIyOntuOiJTSEVFVE5BTUVMUCIsZjp1ZX0sMjU1OntuOiJCT0YiLGY6ZXJ9LDIxNTA2OntuOiJXS1NORiIsZjplcn0sNjU1MzU6e246IiJ9fSxaPXswOntuOiJCT0YifSwxOntuOiJFT0YifSwyOntuOiJQQVNTV09SRCJ9LDM6e246IkNBTENTRVQifSw0OntuOiJXSU5ET1dTRVQifSw1OntuOiJTSEVFVENFTExQVFIifSw2OntuOiJTSEVFVExBWU9VVCJ9LDc6e246IkNPTFVNTldJRFRIIn0sODp7bjoiSElEREVOQ09MVU1OIn0sOTp7bjoiVVNFUlJBTkdFIn0sMTA6e246IlNZU1RFTVJBTkdFIn0sMTE6e246IlpFUk9GT1JDRSJ9LDEyOntuOiJTT1JUS0VZRElSIn0sMTM6e246IkZJTEVTRUFMIn0sMTQ6e246IkRBVEFGSUxMTlVNUyJ9LDE1OntuOiJQUklOVE1BSU4ifSwxNjp7bjoiUFJJTlRTVFJJTkcifSwxNzp7bjoiR1JBUEhNQUlOIn0sMTg6e246IkdSQVBIU1RSSU5HIn0sMTk6e246Ij8/In0sMjA6e246IkVSUkNFTEwifSwyMTp7bjoiTkFDRUxMIn0sMjI6e246IkxBQkVMMTYiLGY6SX0sMjM6e246Ik5VTUJFUjE3IixmOkd9LDI0OntuOiJOVU1CRVIxOCIsZjpMfSwyNTp7bjoiRk9STVVMQTE5IixmOm5lfSwyNjp7bjoiRk9STVVMQTFBIn0sMjc6e246IlhGT1JNQVQiLGY6eWV9LDI4OntuOiJEVExBQkVMTUlTQyJ9LDI5OntuOiJEVExBQkVMQ0VMTCJ9LDMwOntuOiJHUkFQSFdJTkRPVyJ9LDMxOntuOiJDUEEifSwzMjp7bjoiTFBMQVVUTyJ9LDMzOntuOiJRVUVSWSJ9LDM0OntuOiJISURERU5TSEVFVCJ9LDM1OntuOiI/PyJ9LDM3OntuOiJOVU1CRVIyNSIsZjpxfSwzODp7bjoiPz8ifSwzOTp7bjoiTlVNQkVSMjciLGY6bGV9LDQwOntuOiJGT1JNVUxBMjgiLGY6UX0sMTQyOntuOiI/PyJ9LDE0Nzp7bjoiPz8ifSwxNTA6e246Ij8/In0sMTUxOntuOiI/PyJ9LDE1Mjp7bjoiPz8ifSwxNTM6e246Ij8/In0sMTU0OntuOiI/PyJ9LDE1NTp7bjoiPz8ifSwxNTY6e246Ij8/In0sMTYzOntuOiI/PyJ9LDE3NDp7bjoiPz8ifSwxNzU6e246Ij8/In0sMTc2OntuOiI/PyJ9LDE3Nzp7bjoiPz8ifSwxODQ6e246Ij8/In0sMTg1OntuOiI/PyJ9LDE4Njp7bjoiPz8ifSwxODc6e246Ij8/In0sMTg4OntuOiI/PyJ9LDE5NTp7bjoiPz8ifSwyMDE6e246Ij8/In0sMjA0OntuOiJTSEVFVE5BTUVDUyIsZjpnZX0sMjA1OntuOiI/PyJ9LDIwNjp7bjoiPz8ifSwyMDc6e246Ij8/In0sMjA4OntuOiI/PyJ9LDI1Njp7bjoiPz8ifSwyNTk6e246Ij8/In0sMjYwOntuOiI/PyJ9LDI2MTp7bjoiPz8ifSwyNjI6e246Ij8/In0sMjYzOntuOiI/PyJ9LDI2NTp7bjoiPz8ifSwyNjY6e246Ij8/In0sMjY3OntuOiI/PyJ9LDI2ODp7bjoiPz8ifSwyNzA6e246Ij8/In0sMjcxOntuOiI/PyJ9LDM4NDp7bjoiPz8ifSwzODk6e246Ij8/In0sMzkwOntuOiI/PyJ9LDM5Mzp7bjoiPz8ifSwzOTY6e246Ij8/In0sNTEyOntuOiI/PyJ9LDUxNDp7bjoiPz8ifSw1MTM6e246Ij8/In0sNTE2OntuOiI/PyJ9LDUxNzp7bjoiPz8ifSw2NDA6e246Ij8/In0sNjQxOntuOiI/PyJ9LDY0Mjp7bjoiPz8ifSw2NDM6e246Ij8/In0sNjQ0OntuOiI/PyJ9LDY0NTp7bjoiPz8ifSw2NDY6e246Ij8/In0sNjQ3OntuOiI/PyJ9LDY0ODp7bjoiPz8ifSw2NTg6e246Ij8/In0sNjU5OntuOiI/PyJ9LDY2MDp7bjoiPz8ifSw2NjE6e246Ij8/In0sNjYyOntuOiI/PyJ9LDY2NTp7bjoiPz8ifSw2NjY6e246Ij8/In0sNzY4OntuOiI/PyJ9LDc3Mjp7bjoiPz8ifSwxNTM3OntuOiJTSEVFVElORk9RUCIsZjpqfSwxNjAwOntuOiI/PyJ9LDE2MDI6e246Ij8/In0sMTc5Mzp7bjoiPz8ifSwxNzk0OntuOiI/PyJ9LDE3OTU6e246Ij8/In0sMTc5Njp7bjoiPz8ifSwxOTIwOntuOiI/PyJ9LDIwNDg6e246Ij8/In0sMjA0OTp7bjoiPz8ifSwyMDUyOntuOiI/PyJ9LDI2ODg6e246Ij8/In0sMTA5OTg6e246Ij8/In0sMTI4NDk6e246Ij8/In0sMjgyMzM6e246Ij8/In0sMjg0ODQ6e246Ij8/In0sNjU1MzU6e246IiJ9fSxPZT17NToiZGQtbW1tLXl5Iiw2OiJkZC1tbW0iLDc6Im1tbS15eSIsODoibW0vZGQveXkiLDEwOiJoaDptbTpzcyBBTS9QTSIsMTE6ImhoOm1tIEFNL1BNIiwxNDoiZGQtbW1tLXl5eXkiLDE1OiJtbW0teXl5eSIsMzQ6IjAuMDAiLDUwOiIwLjAwO1tSZWRdMC4wMCIsNjY6IjAuMDA7KDAuMDApIiw4MjoiMC4wMDtbUmVkXSgwLjAwKSIsMTYyOiciJCIjLCMjMC4wMDtcXCgiJCIjLCMjMC4wMFxcKScsMjg4OiIwJSIsMzA0OiIwRSswMCIsMzIwOiIjID8vPyJ9O2Z1bmN0aW9uIHdlKEEpe3ZhciBVPUEucmVhZF9zaGlmdCgyKSxPPUEucmVhZF9zaGlmdCgxKTtpZihPIT0wKXRocm93InVuc3VwcG9ydGVkIFFQVyBzdHJpbmcgdHlwZSAiK08udG9TdHJpbmcoMTYpO3JldHVybiBBLnJlYWRfc2hpZnQoVSwic2Jjcy1jb250Iil9ZnVuY3Rpb24gQWUoQSxVKXtzcihBLDApO3ZhciBPPVV8fHt9LEQ9e307Ty5kZW5zZSYmKERbIiFkYXRhIl09W10pO3ZhciB6PVtdLHBlPSIiLEo9e3M6e3I6LTEsYzotMX0sZTp7cjotMSxjOi0xfX0scmU9MCxlZT0wLGtlPTAsaGU9MCx4ZT17U2hlZXROYW1lczpbXSxTaGVldHM6e319LFhlPVtdO2U6Zm9yKDtBLmw8QS5sZW5ndGg7KXt2YXIgemU9QS5yZWFkX3NoaWZ0KDIpLGplPUEucmVhZF9zaGlmdCgyKSxkZT1BLnNsaWNlKEEubCxBLmwramUpO3N3aXRjaChzcihkZSwwKSx6ZSl7Y2FzZSAxOmlmKGRlLnJlYWRfc2hpZnQoNCkhPTk2MjAyMzUwNSl0aHJvdyJCYWQgUVBXOSBCT0YhIjticmVhaztjYXNlIDI6YnJlYWsgZTtjYXNlIDg6YnJlYWs7Y2FzZSAxMDpmb3IodmFyIFdlPWRlLnJlYWRfc2hpZnQoNCksZmU9KGRlLmxlbmd0aC1kZS5sKS9XZXwwLHNhPTA7c2E8V2U7KytzYSl7dmFyIGpyPWRlLmwrZmUsWWU9e307ZGUubCs9MixZZS5udW1GbXRJZD1kZS5yZWFkX3NoaWZ0KDIpLE9lW1llLm51bUZtdElkXSYmKFllLno9T2VbWWUubnVtRm10SWRdKSxkZS5sPWpyLFhlLnB1c2goWWUpfWJyZWFrO2Nhc2UgMTAyNTpicmVhaztjYXNlIDEwMjY6YnJlYWs7Y2FzZSAxMDMxOmZvcihkZS5sKz0xMjtkZS5sPGRlLmxlbmd0aDspcmU9ZGUucmVhZF9zaGlmdCgyKSxlZT1kZS5yZWFkX3NoaWZ0KDEpLHoucHVzaChkZS5yZWFkX3NoaWZ0KHJlLCJjc3RyIikpO2JyZWFrO2Nhc2UgMTAzMjpicmVhaztjYXNlIDE1Mzc6e3ZhciBSYT1kZS5yZWFkX3NoaWZ0KDIpO0Q9e30sTy5kZW5zZSYmKERbIiFkYXRhIl09W10pLEoucy5jPWRlLnJlYWRfc2hpZnQoMiksSi5lLmM9ZGUucmVhZF9zaGlmdCgyKSxKLnMucj1kZS5yZWFkX3NoaWZ0KDQpLEouZS5yPWRlLnJlYWRfc2hpZnQoNCksZGUubCs9NCxkZS5sKzI8ZGUubGVuZ3RoJiYocmU9ZGUucmVhZF9zaGlmdCgyKSxlZT1kZS5yZWFkX3NoaWZ0KDEpLHBlPXJlPT0wPyIiOmRlLnJlYWRfc2hpZnQocmUsImNzdHIiKSkscGV8fChwZT1IZShSYSkpfWJyZWFrO2Nhc2UgMTUzODp7aWYoSi5zLmM+MjU1fHxKLnMucj45OTk5OTkpYnJlYWs7Si5lLmM8Si5zLmMmJihKLmUuYz1KLnMuYyksSi5lLnI8Si5zLnImJihKLmUucj1KLnMuciksRFsiIXJlZiJdPUllKEopLFp0KHhlLEQscGUpfWJyZWFrO2Nhc2UgMjU2MTprZT1kZS5yZWFkX3NoaWZ0KDIpLEouZS5jPGtlJiYoSi5lLmM9a2UpLEoucy5jPmtlJiYoSi5zLmM9a2UpLGhlPWRlLnJlYWRfc2hpZnQoNCksSi5zLnI+aGUmJihKLnMucj1oZSksaGU9ZGUucmVhZF9zaGlmdCg0KSxKLmUucjxoZSYmKEouZS5yPWhlKTticmVhaztjYXNlIDMwNzM6e2hlPWRlLnJlYWRfc2hpZnQoNCkscmU9ZGUucmVhZF9zaGlmdCg0KSxKLnMucj5oZSYmKEoucy5yPWhlKSxKLmUucjxoZStyZS0xJiYoSi5lLnI9aGUrcmUtMSk7Zm9yKHZhciBPYT1IZShrZSk7ZGUubDxkZS5sZW5ndGg7KXt2YXIgRWU9e3Q6InoifSxycj1kZS5yZWFkX3NoaWZ0KDEpLEZyPS0xO3JyJjEyOCYmKEZyPWRlLnJlYWRfc2hpZnQoMikpO3ZhciBGYT1yciY2ND9kZS5yZWFkX3NoaWZ0KDIpLTE6MDtzd2l0Y2gocnImMzEpe2Nhc2UgMDpicmVhaztjYXNlIDE6YnJlYWs7Y2FzZSAyOkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoMil9O2JyZWFrO2Nhc2UgMzpFZT17dDoibiIsdjpkZS5yZWFkX3NoaWZ0KDIsImkiKX07YnJlYWs7Y2FzZSA0OkVlPXt0OiJuIix2OnYwKGRlKX07YnJlYWs7Y2FzZSA1OkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoOCwiZiIpfTticmVhaztjYXNlIDc6RWU9e3Q6InMiLHY6eltlZT1kZS5yZWFkX3NoaWZ0KDQpLTFdfTticmVhaztjYXNlIDg6RWU9e3Q6Im4iLHY6ZGUucmVhZF9zaGlmdCg4LCJmIil9LGRlLmwrPTIsZGUubCs9NCxpc05hTihFZS52KSYmKEVlPXt0OiJlIix2OjE1fSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJVbnJlY29nbml6ZWQgUVBXIGNlbGwgdHlwZSAiKyhyciYzMSl9RnIhPS0xJiYoWGVbRnItMV18fHt9KS56JiYoRWUuej1YZVtGci0xXS56KTt2YXIgQz0wO2lmKHJyJjMyKXN3aXRjaChyciYzMSl7Y2FzZSAyOkM9ZGUucmVhZF9zaGlmdCgyKTticmVhaztjYXNlIDM6Qz1kZS5yZWFkX3NoaWZ0KDIsImkiKTticmVhaztjYXNlIDc6Qz1kZS5yZWFkX3NoaWZ0KDIpO2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5zdXBwb3J0ZWQgZGVsdGEgZm9yIFFQVyBjZWxsIHR5cGUgIisocnImMzEpfWlmKCEoIU8uc2hlZXRTdHVicyYmRWUudD09InoiKSl7dmFyIEJyPVVlKEVlKTtFZS50PT0ibiImJkVlLnomJlpyKEVlLnopJiZPLmNlbGxEYXRlcyYmKEJyLnY9U2EoRWUudiksQnIudD10eXBlb2YgQnIudj09Im51bWJlciI/Im4iOiJkIiksRFsiIWRhdGEiXSE9bnVsbD8oRFsiIWRhdGEiXVtoZV18fChEWyIhZGF0YSJdW2hlXT1bXSksRFsiIWRhdGEiXVtoZV1ba2VdPUJyKTpEW09hK0dlKGhlKV09QnJ9Zm9yKCsraGUsLS1yZTtGYS0tID4wJiZyZT49MDspe2lmKHJyJjMyKXN3aXRjaChyciYzMSl7Y2FzZSAyOkVlPXt0OiJuIix2OkVlLnYrQyY2NTUzNX07YnJlYWs7Y2FzZSAzOkVlPXt0OiJuIix2OkVlLnYrQyY2NTUzNX0sRWUudj4zMjc2NyYmKEVlLnYtPTY1NTM2KTticmVhaztjYXNlIDc6RWU9e3Q6InMiLHY6eltlZT1lZStDPj4+MF19O2JyZWFrO2RlZmF1bHQ6dGhyb3ciQ2Fubm90IGFwcGx5IGRlbHRhIGZvciBRUFcgY2VsbCB0eXBlICIrKHJyJjMxKX1lbHNlIHN3aXRjaChyciYzMSl7Y2FzZSAxOkVlPXt0OiJ6In07YnJlYWs7Y2FzZSAyOkVlPXt0OiJuIix2OmRlLnJlYWRfc2hpZnQoMil9O2JyZWFrO2Nhc2UgNzpFZT17dDoicyIsdjp6W2VlPWRlLnJlYWRfc2hpZnQoNCktMV19O2JyZWFrO2RlZmF1bHQ6dGhyb3ciQ2Fubm90IGFwcGx5IHJlcGVhdCBmb3IgUVBXIGNlbGwgdHlwZSAiKyhyciYzMSl9IU8uc2hlZXRTdHVicyYmRWUudD09InoifHwoRFsiIWRhdGEiXSE9bnVsbD8oRFsiIWRhdGEiXVtoZV18fChEWyIhZGF0YSJdW2hlXT1bXSksRFsiIWRhdGEiXVtoZV1ba2VdPUVlKTpEW09hK0dlKGhlKV09RWUpLCsraGUsLS1yZX19fWJyZWFrO2Nhc2UgMzA3NDp7a2U9ZGUucmVhZF9zaGlmdCgyKSxoZT1kZS5yZWFkX3NoaWZ0KDQpO3ZhciBfdD13ZShkZSk7RFsiIWRhdGEiXSE9bnVsbD8oRFsiIWRhdGEiXVtoZV18fChEWyIhZGF0YSJdW2hlXT1bXSksRFsiIWRhdGEiXVtoZV1ba2VdPXt0OiJzIix2Ol90fSk6RFtIZShrZSkrR2UoaGUpXT17dDoicyIsdjpfdH19YnJlYWt9QS5sKz1qZX1yZXR1cm4geGV9cmV0dXJue3NoZWV0X3RvX3drMTpuLGJvb2tfdG9fd2szOmksdG9fd29ya2Jvb2s6YX19KCk7ZnVuY3Rpb24gUHUoZSl7dmFyIGE9e30scj1lLm1hdGNoKG5yKSx0PTAsbj0hMTtpZihyKWZvcig7dCE9ci5sZW5ndGg7Kyt0KXt2YXIgaT1vZShyW3RdKTtzd2l0Y2goaVswXS5yZXBsYWNlKC88XHcqOi9nLCI8Iikpe2Nhc2UiPGNvbmRlbnNlIjpicmVhaztjYXNlIjxleHRlbmQiOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHNoYWRvdz4iOmNhc2UiPHNoYWRvdy8+IjphLnNoYWRvdz0xO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjaGFyc2V0IjppZihpLnZhbD09IjEiKWJyZWFrO2EuY3A9RzBbcGFyc2VJbnQoaS52YWwsMTApXTticmVhaztjYXNlIjxvdXRsaW5lIjppZighaS52YWwpYnJlYWs7Y2FzZSI8b3V0bGluZT4iOmNhc2UiPG91dGxpbmUvPiI6YS5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpicmVhaztjYXNlIjxyRm9udCI6YS5uYW1lPWkudmFsO2JyZWFrO2Nhc2UiPHN6IjphLnN6PWkudmFsO2JyZWFrO2Nhc2UiPHN0cmlrZSI6aWYoIWkudmFsKWJyZWFrO2Nhc2UiPHN0cmlrZT4iOmNhc2UiPHN0cmlrZS8+IjphLnN0cmlrZT0xO2JyZWFrO2Nhc2UiPC9zdHJpa2U+IjpicmVhaztjYXNlIjx1IjppZighaS52YWwpYnJlYWs7c3dpdGNoKGkudmFsKXtjYXNlImRvdWJsZSI6YS51dmFsPSJkb3VibGUiO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6YS51dmFsPSJzaW5nbGUtYWNjb3VudGluZyI7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjphLnV2YWw9ImRvdWJsZS1hY2NvdW50aW5nIjticmVha31jYXNlIjx1PiI6Y2FzZSI8dS8+IjphLnU9MTticmVhaztjYXNlIjwvdT4iOmJyZWFrO2Nhc2UiPGIiOmlmKGkudmFsPT0iMCIpYnJlYWs7Y2FzZSI8Yj4iOmNhc2UiPGIvPiI6YS5iPTE7YnJlYWs7Y2FzZSI8L2I+IjpicmVhaztjYXNlIjxpIjppZihpLnZhbD09IjAiKWJyZWFrO2Nhc2UiPGk+IjpjYXNlIjxpLz4iOmEuaT0xO2JyZWFrO2Nhc2UiPC9pPiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmkucmdiJiYoYS5jb2xvcj1pLnJnYi5zbGljZSgyLDgpKTticmVhaztjYXNlIjxjb2xvcj4iOmNhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZhbWlseSI6YS5mYW1pbHk9aS52YWw7YnJlYWs7Y2FzZSI8ZmFtaWx5PiI6Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOmEudmFsaWduPWkudmFsO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbj4iOmNhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpicmVhaztjYXNlIjxzY2hlbWU+IjpjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bj0hMDticmVhaztjYXNlIjwvZXh0PiI6bj0hMTticmVhaztkZWZhdWx0OmlmKGlbMF0uY2hhckNvZGVBdCgxKSE9PTQ3JiYhbil0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCByaWNoIGZvcm1hdCAiK2lbMF0pfX1yZXR1cm4gYX12YXIgTHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciBuPUxlKHQsInQiKTtpZighbilyZXR1cm57dDoicyIsdjoiIn07dmFyIGk9e3Q6InMiLHY6Q2UoblsxXSl9LGY9TGUodCwiclByIik7cmV0dXJuIGYmJihpLnM9UHUoZlsxXSkpLGl9dmFyIGE9LzwoPzpcdys6KT9yPi9nLHI9LzxcLyg/Olx3KzopP3I+LztyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShhLCIiKS5zcGxpdChyKS5tYXAoZSkuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBpLnZ9KX19KCksQnU9ZnVuY3Rpb24oKXt2YXIgYT0vKFxyXG58XG4pL2c7ZnVuY3Rpb24gcihuLGksZil7dmFyIHM9W107bi51JiZzLnB1c2goInRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyIpLG4udXZhbCYmcy5wdXNoKCJ0ZXh0LXVuZGVybGluZS1zdHlsZToiK24udXZhbCsiOyIpLG4uc3omJnMucHVzaCgiZm9udC1zaXplOiIrbi5zeisicHQ7Iiksbi5vdXRsaW5lJiZzLnB1c2goInRleHQtZWZmZWN0OiBvdXRsaW5lOyIpLG4uc2hhZG93JiZzLnB1c2goInRleHQtc2hhZG93OiBhdXRvOyIpLGkucHVzaCgnPHNwYW4gc3R5bGU9Iicrcy5qb2luKCIiKSsnIj4nKSxuLmImJihpLnB1c2goIjxiPiIpLGYucHVzaCgiPC9iPiIpKSxuLmkmJihpLnB1c2goIjxpPiIpLGYucHVzaCgiPC9pPiIpKSxuLnN0cmlrZSYmKGkucHVzaCgiPHM+IiksZi5wdXNoKCI8L3M+IikpO3ZhciBjPW4udmFsaWdufHwiIjtyZXR1cm4gYz09InN1cGVyc2NyaXB0Inx8Yz09InN1cGVyIj9jPSJzdXAiOmM9PSJzdWJzY3JpcHQiJiYoYz0ic3ViIiksYyE9IiImJihpLnB1c2goIjwiK2MrIj4iKSxmLnB1c2goIjwvIitjKyI+IikpLGYucHVzaCgiPC9zcGFuPiIpLG59ZnVuY3Rpb24gdChuKXt2YXIgaT1bW10sbi52LFtdXTtyZXR1cm4gbi52PyhuLnMmJnIobi5zLGlbMF0saVsyXSksaVswXS5qb2luKCIiKStpWzFdLnJlcGxhY2UoYSwiPGJyLz4iKStpWzJdLmpvaW4oIiIpKToiIn1yZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGkubWFwKHQpLmpvaW4oIiIpfX0oKSxVdT0vPCg/Olx3KzopP3RcYltePD5dKj4oW148XSopPFwvKD86XHcrOik/dD4vZyxIdT0vPCg/Olx3KzopP3JcYltePD5dKj4vO2Z1bmN0aW9uIGhuKGUsYSl7dmFyIHI9YT9hLmNlbGxIVE1MOiEwLHQ9e307cmV0dXJuIGU/KGUubWF0Y2goL15ccyo8KD86XHcrOik/dFtePl0qPi8pPyh0LnQ9Q2UoVmUoZS5zbGljZShlLmluZGV4T2YoIj4iKSsxKS5zcGxpdCgvPFwvKD86XHcrOik/dD4vKVswXXx8IiIpLCEwKSx0LnI9VmUoZSksciYmKHQuaD14YSh0LnQpKSk6ZS5tYXRjaChIdSkmJih0LnI9VmUoZSksdC50PUNlKFZlKChLYyhlLCJyUGgiKS5tYXRjaChVdSl8fFtdKS5qb2luKCIiKS5yZXBsYWNlKG5yLCIiKSksITApLHImJih0Lmg9QnUoTHUodC5yKSkpKSx0KTp7dDoiIn19dmFyIFd1PS88KD86XHcrOik/KD86c2l8c3N0SXRlbSk+L2csVnU9LzxcLyg/Olx3KzopPyg/OnNpfHNzdEl0ZW0pPi87ZnVuY3Rpb24gR3UoZSxhKXt2YXIgcj1bXSx0PSIiO2lmKCFlKXJldHVybiByO3ZhciBuPUxlKGUsInNzdCIpO2lmKG4pe3Q9blsxXS5yZXBsYWNlKFd1LCIiKS5zcGxpdChWdSk7Zm9yKHZhciBpPTA7aSE9dC5sZW5ndGg7KytpKXt2YXIgZj1obih0W2ldLnRyaW0oKSxhKTtmIT1udWxsJiYocltyLmxlbmd0aF09Zil9bj1vZShuWzBdLnNsaWNlKDAsblswXS5pbmRleE9mKCI+IikpKSxyLkNvdW50PW4uY291bnQsci5VbmlxdWU9bi51bmlxdWVDb3VudH1yZXR1cm4gcn1mdW5jdGlvbiBYdShlKXtyZXR1cm5bZS5yZWFkX3NoaWZ0KDQpLGUucmVhZF9zaGlmdCg0KV19ZnVuY3Rpb24genUoZSxhKXt2YXIgcj1bXSx0PSExO3JldHVybiB2YShlLGZ1bmN0aW9uKGksZixzKXtzd2l0Y2gocyl7Y2FzZSAxNTk6ci5Db3VudD1pWzBdLHIuVW5pcXVlPWlbMV07YnJlYWs7Y2FzZSAxOTpyLnB1c2goaSk7YnJlYWs7Y2FzZSAxNjA6cmV0dXJuITA7Y2FzZSAzNTp0PSEwO2JyZWFrO2Nhc2UgMzY6dD0hMTticmVhaztkZWZhdWx0OmlmKGYuVCwhdHx8YS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrcy50b1N0cmluZygxNikpfX0pLHJ9ZnVuY3Rpb24gSXMoZSl7Zm9yKHZhciBhPVtdLHI9ZS5zcGxpdCgiIiksdD0wO3Q8ci5sZW5ndGg7Kyt0KWFbdF09clt0XS5jaGFyQ29kZUF0KDApO3JldHVybiBhfWZ1bmN0aW9uIG1hKGUsYSl7dmFyIHI9e307cmV0dXJuIHIuTWFqb3I9ZS5yZWFkX3NoaWZ0KDIpLHIuTWlub3I9ZS5yZWFkX3NoaWZ0KDIpLGE+PTQmJihlLmwrPWEtNCkscn1mdW5jdGlvbiAkdShlKXt2YXIgYT17fTtyZXR1cm4gYS5pZD1lLnJlYWRfc2hpZnQoMCwibHBwNCIpLGEuUj1tYShlLDQpLGEuVT1tYShlLDQpLGEuVz1tYShlLDQpLGF9ZnVuY3Rpb24gS3UoZSl7Zm9yKHZhciBhPWUucmVhZF9zaGlmdCg0KSxyPWUubCthLTQsdD17fSxuPWUucmVhZF9zaGlmdCg0KSxpPVtdO24tLSA+MDspaS5wdXNoKHt0OmUucmVhZF9zaGlmdCg0KSx2OmUucmVhZF9zaGlmdCgwLCJscHA0Iil9KTtpZih0Lm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSx0LmNvbXBzPWksZS5sIT1yKXRocm93IG5ldyBFcnJvcigiQmFkIERhdGFTcGFjZU1hcEVudHJ5OiAiK2UubCsiICE9ICIrcik7cmV0dXJuIHR9ZnVuY3Rpb24ganUoZSl7dmFyIGE9W107ZS5sKz00O2Zvcih2YXIgcj1lLnJlYWRfc2hpZnQoNCk7ci0tID4wOylhLnB1c2goS3UoZSkpO3JldHVybiBhfWZ1bmN0aW9uIFl1KGUpe3ZhciBhPVtdO2UubCs9NDtmb3IodmFyIHI9ZS5yZWFkX3NoaWZ0KDQpO3ItLSA+MDspYS5wdXNoKGUucmVhZF9zaGlmdCgwLCJscHA0IikpO3JldHVybiBhfWZ1bmN0aW9uIEp1KGUpe3ZhciBhPXt9O3JldHVybiBlLnJlYWRfc2hpZnQoNCksZS5sKz00LGEuaWQ9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxhLm5hbWU9ZS5yZWFkX3NoaWZ0KDAsImxwcDQiKSxhLlI9bWEoZSw0KSxhLlU9bWEoZSw0KSxhLlc9bWEoZSw0KSxhfWZ1bmN0aW9uIFp1KGUpe3ZhciBhPUp1KGUpO2lmKGEuZW5hbWU9ZS5yZWFkX3NoaWZ0KDAsIjhscHA0IiksYS5ibGtzej1lLnJlYWRfc2hpZnQoNCksYS5jbW9kZT1lLnJlYWRfc2hpZnQoNCksZS5yZWFkX3NoaWZ0KDQpIT00KXRocm93IG5ldyBFcnJvcigiQmFkICFQcmltYXJ5IHJlY29yZCIpO3JldHVybiBhfWZ1bmN0aW9uIERzKGUsYSl7dmFyIHI9ZS5sK2EsdD17fTt0LkZsYWdzPWUucmVhZF9zaGlmdCg0KSY2MyxlLmwrPTQsdC5BbGdJRD1lLnJlYWRfc2hpZnQoNCk7dmFyIG49ITE7c3dpdGNoKHQuQWxnSUQpe2Nhc2UgMjYxMjY6Y2FzZSAyNjEyNzpjYXNlIDI2MTI4Om49dC5GbGFncz09MzY7YnJlYWs7Y2FzZSAyNjYyNTpuPXQuRmxhZ3M9PTQ7YnJlYWs7Y2FzZSAwOm49dC5GbGFncz09MTZ8fHQuRmxhZ3M9PTR8fHQuRmxhZ3M9PTM2O2JyZWFrO2RlZmF1bHQ6dGhyb3ciVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAiK3QuQWxnSUR9aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJFbmNyeXB0aW9uIEZsYWdzL0FsZ0lEIG1pc21hdGNoIik7cmV0dXJuIHQuQWxnSURIYXNoPWUucmVhZF9zaGlmdCg0KSx0LktleVNpemU9ZS5yZWFkX3NoaWZ0KDQpLHQuUHJvdmlkZXJUeXBlPWUucmVhZF9zaGlmdCg0KSxlLmwrPTgsdC5DU1BOYW1lPWUucmVhZF9zaGlmdChyLWUubD4+MSwidXRmMTZsZSIpLGUubD1yLHR9ZnVuY3Rpb24gUnMoZSxhKXt2YXIgcj17fSx0PWUubCthO3JldHVybiBlLmwrPTQsci5TYWx0PWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixyLlZlcmlmaWVyPWUuc2xpY2UoZS5sLGUubCsxNiksZS5sKz0xNixlLnJlYWRfc2hpZnQoNCksci5WZXJpZmllckhhc2g9ZS5zbGljZShlLmwsdCksZS5sPXQscn1mdW5jdGlvbiBxdShlKXt2YXIgYT1tYShlKTtzd2l0Y2goYS5NaW5vcil7Y2FzZSAyOnJldHVyblthLk1pbm9yLFF1KGUpXTtjYXNlIDM6cmV0dXJuW2EuTWlub3IsZWgoKV07Y2FzZSA0OnJldHVyblthLk1pbm9yLHJoKGUpXX10aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIHVucmVjb2duaXplZCBWZXJzaW9uOiAiK2EuTWlub3IpfWZ1bmN0aW9uIFF1KGUpe3ZhciBhPWUucmVhZF9zaGlmdCg0KTtpZigoYSY2MykhPTM2KXRocm93IG5ldyBFcnJvcigiRW5jcnlwdGlvbkluZm8gbWlzbWF0Y2giKTt2YXIgcj1lLnJlYWRfc2hpZnQoNCksdD1EcyhlLHIpLG49UnMoZSxlLmxlbmd0aC1lLmwpO3JldHVybnt0OiJTdGQiLGg6dCx2Om59fWZ1bmN0aW9uIGVoKCl7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZSIpfWZ1bmN0aW9uIHJoKGUpe3ZhciBhPVsic2FsdFNpemUiLCJibG9ja1NpemUiLCJrZXlCaXRzIiwiaGFzaFNpemUiLCJjaXBoZXJBbGdvcml0aG0iLCJjaXBoZXJDaGFpbmluZyIsImhhc2hBbGdvcml0aG0iLCJzYWx0VmFsdWUiXTtlLmwrPTQ7dmFyIHI9ZS5yZWFkX3NoaWZ0KGUubGVuZ3RoLWUubCwidXRmOCIpLHQ9e307cmV0dXJuIHIucmVwbGFjZShucixmdW5jdGlvbihpKXt2YXIgZj1vZShpKTtzd2l0Y2goQXIoZlswXSkpe2Nhc2UiPD94bWwiOmJyZWFrO2Nhc2UiPGVuY3J5cHRpb24iOmNhc2UiPC9lbmNyeXB0aW9uPiI6YnJlYWs7Y2FzZSI8a2V5RGF0YSI6YS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3Rbc109ZltzXX0pO2JyZWFrO2Nhc2UiPGRhdGFJbnRlZ3JpdHkiOnQuZW5jcnlwdGVkSG1hY0tleT1mLmVuY3J5cHRlZEhtYWNLZXksdC5lbmNyeXB0ZWRIbWFjVmFsdWU9Zi5lbmNyeXB0ZWRIbWFjVmFsdWU7YnJlYWs7Y2FzZSI8a2V5RW5jcnlwdG9ycz4iOmNhc2UiPGtleUVuY3J5cHRvcnMiOnQuZW5jcz1bXTticmVhaztjYXNlIjwva2V5RW5jcnlwdG9ycz4iOmJyZWFrO2Nhc2UiPGtleUVuY3J5cHRvciI6dC51cmk9Zi51cmk7YnJlYWs7Y2FzZSI8L2tleUVuY3J5cHRvcj4iOmJyZWFrO2Nhc2UiPGVuY3J5cHRlZEtleSI6dC5lbmNzLnB1c2goZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBmWzBdfX0pLHR9ZnVuY3Rpb24gYWgoZSxhKXt2YXIgcj17fSx0PXIuRW5jcnlwdGlvblZlcnNpb25JbmZvPW1hKGUsNCk7aWYoYS09NCx0Lk1pbm9yIT0yKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogIit0Lk1pbm9yKTtpZih0Lk1ham9yPjR8fHQuTWFqb3I8Mil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCBtYWpvciB2ZXJzaW9uIGNvZGU6ICIrdC5NYWpvcik7ci5GbGFncz1lLnJlYWRfc2hpZnQoNCksYS09NDt2YXIgbj1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuIGEtPTQsci5FbmNyeXB0aW9uSGVhZGVyPURzKGUsbiksYS09bixyLkVuY3J5cHRpb25WZXJpZmllcj1ScyhlLGEpLHJ9ZnVuY3Rpb24gdGgoZSl7dmFyIGE9e30scj1hLkVuY3J5cHRpb25WZXJzaW9uSW5mbz1tYShlLDQpO2lmKHIuTWFqb3IhPTF8fHIuTWlub3IhPTEpdGhyb3cidW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAiK3IuTWFqb3IrIiA6ICIrci5NaW5vcjtyZXR1cm4gYS5TYWx0PWUucmVhZF9zaGlmdCgxNiksYS5FbmNyeXB0ZWRWZXJpZmllcj1lLnJlYWRfc2hpZnQoMTYpLGEuRW5jcnlwdGVkVmVyaWZpZXJIYXNoPWUucmVhZF9zaGlmdCgxNiksYX1mdW5jdGlvbiBuaChlKXt2YXIgYT0wLHIsdD1JcyhlKSxuPXQubGVuZ3RoKzEsaSxmLHMsYyxvO2ZvcihyPUFhKG4pLHJbMF09dC5sZW5ndGgsaT0xO2khPW47KytpKXJbaV09dFtpLTFdO2ZvcihpPW4tMTtpPj0wOy0taSlmPXJbaV0scz1hJjE2Mzg0PzE6MCxjPWE8PDEmMzI3Njcsbz1zfGMsYT1vXmY7cmV0dXJuIGFeNTI4MTF9dmFyIE9zPWZ1bmN0aW9uKCl7dmFyIGU9WzE4NywyNTUsMjU1LDE4NiwyNTUsMjU1LDE4NSwxMjgsMCwxOTAsMTUsMCwxOTEsMTUsMF0sYT1bNTc4NDAsNzQzOSw1MjM4MCwzMzk4NCw0MzY0LDM2MDAsNjE5MDIsMTI2MDYsNjI1OCw1NzY1Nyw1NDI4NywzNDA0MSwxMDI1Miw0MzM3MCwyMDE2M10scj1bNDQ3OTYsMTk5MjksMzk4NTgsMTAwNTMsMjAxMDYsNDAyMTIsMTA3NjEsMzE1ODUsNjMxNzAsNjQ5MzMsNjAyNjcsNTA5MzUsNDAzOTksMTExOTksMTc3NjMsMzU1MjYsMTQ1MywyOTA2LDU4MTIsMTE2MjQsMjMyNDgsODg1LDE3NzAsMzU0MCw3MDgwLDE0MTYwLDI4MzIwLDU2NjQwLDU1MzY5LDQxMTM5LDIwODA3LDQxNjE0LDIxODIxLDQzNjQyLDE3NjIxLDI4NDg1LDU2OTcwLDQ0MzQxLDE5MDE5LDM4MDM4LDE0NjA1LDI5MjEwLDYwMTk1LDUwNzkxLDQwMTc1LDEwNzUxLDIxNTAyLDQzMDA0LDI0NTM3LDE4Mzg3LDM2Nzc0LDM5NDksNzg5OCwxNTc5NiwzMTU5Miw2MzE4NCw0NzIwMSwyNDgwMyw0OTYwNiwzNzgwNSwxNDIwMywyODQwNiw1NjgxMiwxNzgyNCwzNTY0OCwxNjk3LDMzOTQsNjc4OCwxMzU3NiwyNzE1Miw0MzYwMSwxNzUzOSwzNTA3OCw1NTcsMTExNCwyMjI4LDQ0NTYsMzAzODgsNjA3NzYsNTE5NTMsMzQyNDMsNzA3OSwxNDE1OCwyODMxNiwxNDEyOCwyODI1Niw1NjUxMiw0MzQyNSwxNzI1MSwzNDUwMiw3NTk3LDEzMTA1LDI2MjEwLDUyNDIwLDM1MjQxLDg4MywxNzY2LDM1MzIsNDEyOSw4MjU4LDE2NTE2LDMzMDMyLDQ2NTcsOTMxNCwxODYyOF0sdD1mdW5jdGlvbihmKXtyZXR1cm4oZi8yfGYqMTI4KSYyNTV9LG49ZnVuY3Rpb24oZixzKXtyZXR1cm4gdChmXnMpfSxpPWZ1bmN0aW9uKGYpe2Zvcih2YXIgcz1hW2YubGVuZ3RoLTFdLGM9MTA0LG89Zi5sZW5ndGgtMTtvPj0wOy0tbylmb3IodmFyIGw9ZltvXSx1PTA7dSE9NzsrK3UpbCY2NCYmKHNePXJbY10pLGwqPTIsLS1jO3JldHVybiBzfTtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBzPUlzKGYpLGM9aShzKSxvPXMubGVuZ3RoLGw9QWEoMTYpLHU9MDt1IT0xNjsrK3UpbFt1XT0wO3ZhciB4LGgsZztmb3IoKG8mMSk9PT0xJiYoeD1jPj44LGxbb109bihlWzBdLHgpLC0tbyx4PWMmMjU1LGg9c1tzLmxlbmd0aC0xXSxsW29dPW4oaCx4KSk7bz4wOyktLW8seD1jPj44LGxbb109bihzW29dLHgpLC0tbyx4PWMmMjU1LGxbb109bihzW29dLHgpO2ZvcihvPTE1LGc9MTUtcy5sZW5ndGg7Zz4wOyl4PWM+PjgsbFtvXT1uKGVbZ10seCksLS1vLC0tZyx4PWMmMjU1LGxbb109bihzW29dLHgpLC0tbywtLWc7cmV0dXJuIGx9fSgpLGloPWZ1bmN0aW9uKGUsYSxyLHQsbil7bnx8KG49YSksdHx8KHQ9T3MoZSkpO3ZhciBpLGY7Zm9yKGk9MDtpIT1hLmxlbmd0aDsrK2kpZj1hW2ldLGZePXRbcl0sZj0oZj4+NXxmPDwzKSYyNTUsbltpXT1mLCsrcjtyZXR1cm5bbixyLHRdfSxzaD1mdW5jdGlvbihlKXt2YXIgYT0wLHI9T3MoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWloKCIiLHQsYSxyKTtyZXR1cm4gYT1uWzFdLG5bMF19fTtmdW5jdGlvbiBmaChlLGEscix0KXt2YXIgbj17a2V5OmVyKGUpLHZlcmlmaWNhdGlvbkJ5dGVzOmVyKGUpfTtyZXR1cm4gci5wYXNzd29yZCYmKG4udmVyaWZpZXI9bmgoci5wYXNzd29yZCkpLHQudmFsaWQ9bi52ZXJpZmljYXRpb25CeXRlcz09PW4udmVyaWZpZXIsdC52YWxpZCYmKHQuaW5zaXR1PXNoKHIucGFzc3dvcmQpKSxufWZ1bmN0aW9uIGNoKGUsYSxyKXt2YXIgdD1yfHx7fTtyZXR1cm4gdC5JbmZvPWUucmVhZF9zaGlmdCgyKSxlLmwtPTIsdC5JbmZvPT09MT90LkRhdGE9dGgoZSk6dC5EYXRhPWFoKGUsYSksdH1mdW5jdGlvbiBvaChlLGEscil7dmFyIHQ9e1R5cGU6ci5iaWZmPj04P2UucmVhZF9zaGlmdCgyKTowfTtyZXR1cm4gdC5UeXBlP2NoKGUsYS0yLHQpOmZoKGUsci5iaWZmPj04P2E6YS0yLHIsdCksdH1mdW5jdGlvbiBsaChlLGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UiYmFzZTY0IjpyZXR1cm4gVDAoSXIoZSksYSk7Y2FzZSJiaW5hcnkiOnJldHVybiBUMChlLGEpO2Nhc2UiYnVmZmVyIjpyZXR1cm4gVDAoTmUmJkJ1ZmZlci5pc0J1ZmZlcihlKT9lLnRvU3RyaW5nKCJiaW5hcnkiKTpmYShlKSxhKTtjYXNlImFycmF5IjpyZXR1cm4gVDAoQmEoZSksYSl9dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9ZnVuY3Rpb24gVDAoZSxhKXt2YXIgcj1hfHx7fSx0PXt9LG49ci5kZW5zZTtuJiYodFsiIWRhdGEiXT1bXSk7dmFyIGk9dWEoZSwiXFx0cm93ZCIsIlxccm93Iik7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJSVEYgbWlzc2luZyB0YWJsZSIpO3ZhciBmPXtzOntjOjAscjowfSxlOntjOjAscjppLmxlbmd0aC0xfX0scz1bXTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7biYmKHM9dFsiIWRhdGEiXVtvXT1bXSk7Zm9yKHZhciBsPS9cXFtcd1wtXStcYi9nLHU9MCx4LGg9LTEsZz1bXTsoeD1sLmV4ZWMoYykpIT1udWxsOyl7dmFyIG09Yy5zbGljZSh1LGwubGFzdEluZGV4LXhbMF0ubGVuZ3RoKTtzd2l0Y2gobS5jaGFyQ29kZUF0KDApPT0zMiYmKG09bS5zbGljZSgxKSksbS5sZW5ndGgmJmcucHVzaChtKSx4WzBdKXtjYXNlIlxcY2VsbCI6aWYoKytoLGcubGVuZ3RoKXt2YXIgZD17djpnLmpvaW4oIiIpLHQ6InMifTtkLnY9PSJUUlVFInx8ZC52PT0iRkFMU0UiPyhkLnY9ZC52PT0iVFJVRSIsZC50PSJiIik6aXNOYU4oT3IoZC52KSk/ZHJbZC52XSE9bnVsbCYmKGQudD0iZSIsZC53PWQudixkLnY9ZHJbZC52XSk6KGQudD0ibiIsci5jZWxsVGV4dCE9PSExJiYoZC53PWQudiksZC52PU9yKGQudikpLG4/c1toXT1kOnRbRGUoe3I6byxjOmh9KV09ZH1nPVtdO2JyZWFrO2Nhc2UiXFxwYXIiOmcucHVzaChgCmApO2JyZWFrfXU9bC5sYXN0SW5kZXh9aD5mLmUuYyYmKGYuZS5jPWgpfSksdFsiIXJlZiJdPUllKGYpLHR9ZnVuY3Rpb24gdWgoZSxhKXt2YXIgcj1DYShsaChlLGEpLGEpO3JldHVybiByLmJvb2tUeXBlPSJydGYiLHJ9ZnVuY3Rpb24gaGgoZSl7dmFyIGE9ZS5zbGljZShlWzBdPT09IiMiPzE6MCkuc2xpY2UoMCw2KTtyZXR1cm5bcGFyc2VJbnQoYS5zbGljZSgwLDIpLDE2KSxwYXJzZUludChhLnNsaWNlKDIsNCksMTYpLHBhcnNlSW50KGEuc2xpY2UoNCw2KSwxNildfWZ1bmN0aW9uIGphKGUpe2Zvcih2YXIgYT0wLHI9MTthIT0zOysrYSlyPXIqMjU2KyhlW2FdPjI1NT8yNTU6ZVthXTwwPzA6ZVthXSk7cmV0dXJuIHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSl9ZnVuY3Rpb24geGgoZSl7dmFyIGE9ZVswXS8yNTUscj1lWzFdLzI1NSx0PWVbMl0vMjU1LG49TWF0aC5tYXgoYSxyLHQpLGk9TWF0aC5taW4oYSxyLHQpLGY9bi1pO2lmKGY9PT0wKXJldHVyblswLDAsYV07dmFyIHM9MCxjPTAsbz1uK2k7c3dpdGNoKGM9Zi8obz4xPzItbzpvKSxuKXtjYXNlIGE6cz0oKHItdCkvZis2KSU2O2JyZWFrO2Nhc2UgcjpzPSh0LWEpL2YrMjticmVhaztjYXNlIHQ6cz0oYS1yKS9mKzQ7YnJlYWt9cmV0dXJuW3MvNixjLG8vMl19ZnVuY3Rpb24gZGgoZSl7dmFyIGE9ZVswXSxyPWVbMV0sdD1lWzJdLG49cioyKih0PC41P3Q6MS10KSxpPXQtbi8yLGY9W2ksaSxpXSxzPTYqYSxjO2lmKHIhPT0wKXN3aXRjaChzfDApe2Nhc2UgMDpjYXNlIDY6Yz1uKnMsZlswXSs9bixmWzFdKz1jO2JyZWFrO2Nhc2UgMTpjPW4qKDItcyksZlswXSs9YyxmWzFdKz1uO2JyZWFrO2Nhc2UgMjpjPW4qKHMtMiksZlsxXSs9bixmWzJdKz1jO2JyZWFrO2Nhc2UgMzpjPW4qKDQtcyksZlsxXSs9YyxmWzJdKz1uO2JyZWFrO2Nhc2UgNDpjPW4qKHMtNCksZlsyXSs9bixmWzBdKz1jO2JyZWFrO2Nhc2UgNTpjPW4qKDYtcyksZlsyXSs9YyxmWzBdKz1uO2JyZWFrfWZvcih2YXIgbz0wO28hPTM7KytvKWZbb109TWF0aC5yb3VuZChmW29dKjI1NSk7cmV0dXJuIGZ9ZnVuY3Rpb24geG4oZSxhKXtpZihhPT09MClyZXR1cm4gZTt2YXIgcj14aChoaChlKSk7cmV0dXJuIGE8MD9yWzJdPXJbMl0qKDErYSk6clsyXT0xLSgxLXJbMl0pKigxLWEpLGphKGRoKHIpKX1mdW5jdGlvbiB6cihlLGEpe3ZhciByPXt9O2lmKGU9PW51bGwpcmV0dXJuIHI7aWYoZS5hdXRvIT1udWxsJiYoci5hdXRvPUZlKGUuYXV0bykpLGUucmdiIT1udWxsJiYoci5yZ2I9ZS5yZ2Iuc2xpY2UoLTYpLnRvVXBwZXJDYXNlKCkpLGUuaW5kZXhlZCE9bnVsbCl7ci5pbmRleGVkPXBhcnNlSW50KGUuaW5kZXhlZCwxMCksci5pbmRleD1yLmluZGV4ZWQ7dmFyIHQ9dGFbci5pbmRleGVkXTtyLmluZGV4ZWQ9PTgxJiYodD10YVsxXSksdHx8KHQ9dGFbMV0pLHQmJihyLnJnYj1qYSh0KSl9cmV0dXJuIGUudGhlbWUhPW51bGwmJihyLnRoZW1lPXBhcnNlSW50KGUudGhlbWUsMTApLGUudGludCE9bnVsbCYmKHIudGludD1wYXJzZUZsb2F0KGUudGludCkpLGEmJmEudGhlbWVFbGVtZW50cyYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtyLnRoZW1lXSYmKHIucmF3X3JnYj1hLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3IudGhlbWVdLnJnYixyLnJnYj14bihyLnJhd19yZ2Isci50aW50fHwwKSkpLGUudGludCE9bnVsbCYmci50aW50PT1udWxsJiYoci50aW50PXBhcnNlRmxvYXQoZS50aW50KSkscn1mdW5jdGlvbiBZYShlLGEpe2lmKCFlKXJldHVybiBlO3ZhciByPVVlKGUpO2lmKHIucmdiJiYoci5yZ2I9KCIiK3IucmdiKS5zbGljZSgtNikudG9VcHBlckNhc2UoKSksci5pbmRleGVkIT1udWxsJiYhci5yZ2Ipe3ZhciB0PXRhW3IuaW5kZXhlZF07ci5pbmRleGVkPT04MSYmKHQ9dGFbMV0pLHR8fCh0PXRhWzFdKSx0JiYoci5yZ2I9amEodCkpfXJldHVybiByLmluZGV4IT1udWxsJiZyLmluZGV4ZWQ9PW51bGwmJihyLmluZGV4ZWQ9ci5pbmRleCksci50aGVtZSE9bnVsbCYmYSYmYS50aGVtZUVsZW1lbnRzJiZhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lJiZhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3IudGhlbWVdJiYoci5yYXdfcmdiPWEudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbci50aGVtZV0ucmdiLHIucmdiPXhuKHIucmF3X3JnYixyLnRpbnR8fDApKSxyfWZ1bmN0aW9uIEUwKGUsYSl7aWYoIWUpcmV0dXJuIGU7dmFyIHI9VWUoZSk7cmV0dXJuIHIuY29sb3ImJihyLmNvbG9yPVlhKHIuY29sb3IsYSkpLHIuZmdDb2xvciYmKHIuZmdDb2xvcj1ZYShyLmZnQ29sb3IsYSkpLHIuYmdDb2xvciYmKHIuYmdDb2xvcj1ZYShyLmJnQ29sb3IsYSkpLFsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiZGlhZ29uYWwiLCJob3Jpem9udGFsIiwidmVydGljYWwiLCJzdGFydCIsImVuZCJdLmZvckVhY2goZnVuY3Rpb24odCl7clt0XSYmclt0XS5jb2xvciYmKHJbdF0uY29sb3I9WWEoclt0XS5jb2xvcixhKSl9KSxyLmdyYWRpZW50RmlsbCYmci5ncmFkaWVudEZpbGwuc3RvcHMmJnIuZ3JhZGllbnRGaWxsLnN0b3BzLmZvckVhY2goZnVuY3Rpb24odCl7dC5jb2xvciYmKHQuY29sb3I9WWEodC5jb2xvcixhKSl9KSxyfXZhciBOcz02LHZoPTE1LHBoPTEscWU9TnM7ZnVuY3Rpb24gX2EoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUrTWF0aC5yb3VuZCgxMjgvcWUpLzI1NikqcWUpfWZ1bmN0aW9uIEphKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTUpL3FlKjEwMCsuNSkvMTAwfWZ1bmN0aW9uIFphKGUpe3JldHVybiBNYXRoLnJvdW5kKChlKnFlKzUpL3FlKjI1NikvMjU2fWZ1bmN0aW9uIGRuKGUpe3JldHVybiBaYShKYShfYShlKSkpfWZ1bmN0aW9uIHZuKGUpe3ZhciBhPU1hdGguYWJzKGUtZG4oZSkpLHI9cWU7aWYoYT4uMDA1KWZvcihxZT1waDtxZTx2aDsrK3FlKU1hdGguYWJzKGUtZG4oZSkpPD1hJiYoYT1NYXRoLmFicyhlLWRuKGUpKSxyPXFlKTtxZT1yfWZ1bmN0aW9uIHV0KGUpe2Uud2lkdGg/KGUud3B4PV9hKGUud2lkdGgpLGUud2NoPUphKGUud3B4KSxlLk1EVz1xZSk6ZS53cHg/KGUud2NoPUphKGUud3B4KSxlLndpZHRoPVphKGUud2NoKSxlLk1EVz1xZSk6dHlwZW9mIGUud2NoPT0ibnVtYmVyIiYmKGUud2lkdGg9WmEoZS53Y2gpLGUud3B4PV9hKGUud2lkdGgpLGUuTURXPXFlKSxlLmN1c3RvbVdpZHRoJiZkZWxldGUgZS5jdXN0b21XaWR0aH12YXIgcG49MjU1LE1zPTU7ZnVuY3Rpb24gZ2goZSl7cmV0dXJuIGU+cG4/cG46ZTwwPzA6ZX1mdW5jdGlvbiBtaChlKXt2YXIgYT1aYShKYShNYXRoLm1heCgwLGUpKSk7cmV0dXJuIGdoKGEpfWZ1bmN0aW9uIFBzKGUpe3JldHVybiBlP2Uud3B4IT1udWxsP2Uud3B4OmUud2lkdGghPW51bGw/X2EoZS53aWR0aCk6ZS53Y2ghPW51bGw/X2EoWmEoZS53Y2gpKTo2NDo2NH1mdW5jdGlvbiBfaChlLGEpe3JldHVybiBlfHwoZT17fSksZS53cHg9TWF0aC5tYXgoMCxNYXRoLmNlaWwoYSkpLGUud2NoPUphKGUud3B4KSxlLndpZHRoPW1oKGUud3B4KSxlLk1EVz1xZSxlLmJlc3RGaXQ9ITAsZS5jdXN0b21XaWR0aD0hMCxlfWZ1bmN0aW9uIEJ0KGUpe3ZhciBhPWUmJmUuZm9udHx8e30scj0rYS5zejtyZXR1cm4gcj4wP3I6MTF9ZnVuY3Rpb24ga2goZSl7dmFyIGE9ZSYmZS5mb250fHx7fTtyZXR1cm4gYS5uYW1lfHwiQ2FsaWJyaSJ9ZnVuY3Rpb24gTHMoZSl7dmFyIGE9ZSYmZS5mb250fHx7fSxyPVtdO2EuaXRhbGljJiZyLnB1c2goIml0YWxpYyIpLGEuYm9sZCYmci5wdXNoKCJib2xkIiksci5wdXNoKEJ0KGUpKyJwdCIpO3ZhciB0PWtoKGUpO3JldHVybi9bLFxzJyJdLy50ZXN0KHQpJiYodD0nIicrU3RyaW5nKHQpLnJlcGxhY2UoLyIvZywnXFwiJykrJyInKSxyLnB1c2godCksci5qb2luKCIgIil9ZnVuY3Rpb24gd2goZSxhKXt2YXIgcj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIHI9PTl8fHI9PTMyP2EqLjMzOnI+PTQ4JiZyPD01Nz9hKi41MjpyPj02NSYmcjw9OTA/YSouNjI6cj49OTcmJnI8PTEyMj8iaWxqdGZyIi5pbmRleE9mKGUpPi0xP2EqLjI4OiJtdyIuaW5kZXhPZihlKT4tMT9hKi44MjphKi41OnI+PTExOTA0P2E6YSouNTJ9ZnVuY3Rpb24gRmgoZSxhKXtmb3IodmFyIHI9SHQoQnQoYSkpLHQ9MCxuPTA7bjxlLmxlbmd0aDsrK24pdCs9d2goZS5jaGFyQXQobikscik7cmV0dXJuIHR9ZnVuY3Rpb24gQnMoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT09bnVsbD8iIjpTdHJpbmcoZSksaT1uLnNwbGl0KC9cclxufFxufFxyL2cpLGY9MCxzPTAsYz0wO2lmKHQubWVhc3VyZVRleHQpZm9yKHM9MDtzPGkubGVuZ3RoOysrcyljPSt0Lm1lYXN1cmVUZXh0KGlbc10sTHMoYSksYXx8e30pLGlzRmluaXRlKGMpJiZjPmYmJihmPWMpO2Vsc2V7dmFyIG89dC5jYW52YXMsbD1udWxsO2lmKCFvJiZ0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KXRyeXtvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpfWNhdGNoe310cnl7bD1vJiZvLmdldENvbnRleHQmJm8uZ2V0Q29udGV4dCgiMmQiKX1jYXRjaHtsPW51bGx9aWYobCYmbC5tZWFzdXJlVGV4dClmb3IobC5mb250PUxzKGEpLHM9MDtzPGkubGVuZ3RoOysrcyljPWwubWVhc3VyZVRleHQoaVtzXSkud2lkdGgsaXNGaW5pdGUoYykmJmM+ZiYmKGY9Yyk7ZWxzZSBmb3Iocz0wO3M8aS5sZW5ndGg7KytzKWM9RmgoaVtzXSxhfHx7fSksaXNGaW5pdGUoYykmJmM+ZiYmKGY9Yyl9cmV0dXJuIGZ9ZnVuY3Rpb24gVGgoZSxhKXtyZXR1cm4hZXx8ZS52PT1udWxsPyIiOihlLnc9PW51bGwmJmUudCE9InoiJiZnYShlKSxTdHJpbmcoZS53IT1udWxsP2UudzplLnYpKX1mdW5jdGlvbiBFaChlLGEpe3ZhciByPVN0cmluZyhlPz8iIikuc3BsaXQoL1xyXG58XG58XHIvZyksdD1bXSxuPTAsaT0wLGY9bnVsbDtpZighYSlyZXR1cm4gcjtmb3Iobj0wO248ci5sZW5ndGg7KytuKXtmb3IoZj1yW25dLnNwbGl0KC9bXHQgXHUwMEEwXC1cL10rLyksaT0wO2k8Zi5sZW5ndGg7KytpKWZbaV0mJnQucHVzaChmW2ldKTsoIWYubGVuZ3RofHxmLmxlbmd0aD09MSYmIWZbMF0pJiZ0LnB1c2gocltuXSl9cmV0dXJuIHQubGVuZ3RoP3Q6WyIiXX1mdW5jdGlvbiBBaChlLGEscix0KXt2YXIgbj17fSxpPWVbIiFjb2xzIl18fFtdLGY9ZVsiIXJvd3MiXXx8W107cmV0dXJuIGlbdF0mJmlbdF0ucyYma2EobixpW3RdLnMpLGZbcl0mJmZbcl0ucyYma2EobixmW3JdLnMpLGEmJmEucyYma2EobixhLnMpLG59ZnVuY3Rpb24gVXMoZSxhLHIpe2Zvcih2YXIgdD1yfHx7fSxuPVRoKGUpLGk9YSYmYS5hbGlnbm1lbnR8fHt9LGY9ISFpLndyYXBUZXh0LHM9RWgobixmKSxjPTAsbz0wLGw9MDtsPHMubGVuZ3RoOysrbClvPUJzKHNbbF0sYSx0KSxvPmMmJihjPW8pO3ZhciB1PStpLmluZGVudHx8MDt1PjAmJihjKz11KjMqTWF0aC5tYXgoMSxxZSkpO3ZhciB4PStpLnRleHRSb3RhdGlvbnx8MDtpZih4PT0yNTUmJih4PTkwKSx4PjkwJiYoeD05MC14KSx4PDAmJih4PS14KSx4PjAmJng8OTApe3ZhciBoPXgqTWF0aC5QSS8xODAsZz1IdChCdChhKSk7Yz1NYXRoLmFicyhjKk1hdGguY29zKGgpKStNYXRoLmFicyhnKk1hdGguc2luKGgpKX1lbHNlIHg+PTkwJiYoYz1NYXRoLm1heChxZStNcyxIdChCdChhKSkrMikpO3JldHVybiBjKyh0LnBhZGRpbmchPW51bGw/K3QucGFkZGluZzpNcyl9ZnVuY3Rpb24geWgoZSl7Zm9yKHZhciBhPXt9LHI9MDtyPGUubGVuZ3RoOysrcilhW2Vbcl0ucy5yKyI6IitlW3JdLnMuY109ZVtyXTtyZXR1cm4gYX1mdW5jdGlvbiBTaChlLGEscil7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBuPWVbdF07aWYobi5zLnI8PWEmJmE8PW4uZS5yJiZuLnMuYzw9ciYmcjw9bi5lLmMpcmV0dXJuIShuLnMucj09YSYmbi5zLmM9PXIpfXJldHVybiExfWZ1bmN0aW9uIGduKGUsYSl7dmFyIHI9YXx8e30sdD1xZTtyLk1EVyYmKHFlPStyLk1EV3x8cWUpO3ZhciBuPXIucmFuZ2U/dHlwZW9mIHIucmFuZ2U9PSJzdHJpbmciP3BhKHIucmFuZ2UpOnIucmFuZ2U6cGEoZVsiIXJlZiJdfHwiQTEiKSxpPWVbIiFjb2xzIl18fFtdLGY9ZVsiIXJvd3MiXXx8W10scz1bXSxjPVtdLG89ci5taW5QeCE9bnVsbD8rci5taW5QeDpyLm1pbiE9bnVsbD9fYShaYSgrci5taW4pKTowLGw9ci5tYXhQeCE9bnVsbD8rci5tYXhQeDpfYShwbiksdT1yLmluY2x1ZGVNZXJnZWQ9PT0hMT9bXTplWyIhbWVyZ2VzIl18fFtdLHg9eWgodSksaD1lWyIhZGF0YSJdIT1udWxsLGc9MCxtPTAsZD0wLHA9bnVsbCx3PTAsXz1udWxsLHk9bnVsbCxSPTAsUD0wO2ZvcihnPW4ucy5jO2c8PW4uZS5jOysrZylzW2ddPVVlKGlbZ118fHt9KSwhKHNbZ10mJnNbZ10uaGlkZGVuJiZyLnNraXBIaWRkZW4pJiYoY1tnXT1zW2ddJiYoc1tnXS53cHghPW51bGx8fHNbZ10ud2lkdGghPW51bGx8fHNbZ10ud2NoIT1udWxsKT9QcyhzW2ddKTpvKTtmb3IobT1uLnMucjttPD1uLmUucjsrK20paWYoIShmW21dJiZmW21dLmhpZGRlbiYmci5za2lwSGlkZGVuKSl7Zm9yKGc9bi5zLmM7Zzw9bi5lLmM7KytnKWlmKCEoc1tnXSYmc1tnXS5oaWRkZW4mJnIuc2tpcEhpZGRlbikmJiFTaCh1LG0sZykmJihfPWg/KGVbIiFkYXRhIl1bbV18fFtdKVtnXTplW0RlKHtyOm0sYzpnfSldLCEoIV98fF8udj09bnVsbCkpKWlmKHk9QWgoZSxfLG0sZyksUj1VcyhfLHkscikseSYmeS5hbGlnbm1lbnQmJnkuYWxpZ25tZW50LnNocmlua1RvRml0JiZjW2ddJiYoUj1NYXRoLm1pbihSLGNbZ10pKSxwPXhbbSsiOiIrZ10sZD1wP3AuZS5jLXAucy5jKzE6MSxkPjEpe2ZvcihQPTAsdz0wO3c8ZDsrK3cpUCs9Y1tnK3ddfHxvO2lmKFI+UClmb3Iodz0wO3c8ZDsrK3cpY1tnK3ddPU1hdGgubWluKGwsTWF0aC5tYXgoY1tnK3ddfHxvLChjW2crd118fG8pKyhSLVApL2QpKX1lbHNlIGNbZ109TWF0aC5taW4obCxNYXRoLm1heChjW2ddfHxvLFIpKX1mb3IoZz1uLnMuYztnPD1uLmUuYzsrK2cpY1tnXSE9bnVsbCYmKHNbZ109X2goc1tnXXx8e30sTWF0aC5taW4obCxNYXRoLm1heChvLGNbZ10pKSkpO3JldHVybiByLnNldD09PSExPyhxZT10LHMpOihlWyIhY29scyJdPXMscWU9dCxzKX12YXIgQ2g9OTYsSHM9Q2g7ZnVuY3Rpb24gV3MoZSl7cmV0dXJuIGUqOTYvSHN9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIGUqSHMvOTZ9ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIGUqOTYvNzJ9ZnVuY3Rpb24gYmgoZSl7cmV0dXJuIGUqNzIvOTZ9dmFyIEloPXtOb25lOiJub25lIixTb2xpZDoic29saWQiLEdyYXk1MDoibWVkaXVtR3JheSIsR3JheTc1OiJkYXJrR3JheSIsR3JheTI1OiJsaWdodEdyYXkiLEhvcnpTdHJpcGU6ImRhcmtIb3Jpem9udGFsIixWZXJ0U3RyaXBlOiJkYXJrVmVydGljYWwiLFJldmVyc2VEaWFnU3RyaXBlOiJkYXJrRG93biIsRGlhZ1N0cmlwZToiZGFya1VwIixEaWFnQ3Jvc3M6ImRhcmtHcmlkIixUaGlja0RpYWdDcm9zczoiZGFya1RyZWxsaXMiLFRoaW5Ib3J6U3RyaXBlOiJsaWdodEhvcml6b250YWwiLFRoaW5WZXJ0U3RyaXBlOiJsaWdodFZlcnRpY2FsIixUaGluUmV2ZXJzZURpYWdTdHJpcGU6ImxpZ2h0RG93biIsVGhpbkhvcnpDcm9zczoibGlnaHRHcmlkIn07ZnVuY3Rpb24gRGgoZSxhLHIsdCl7YS5Cb3JkZXJzPVtdO3ZhciBuPXt9LGk9IiIsZj0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3ZhciBjPW9lKHMpO3N3aXRjaChBcihjWzBdKSl7Y2FzZSI8Ym9yZGVycyI6Y2FzZSI8Ym9yZGVycz4iOmNhc2UiPC9ib3JkZXJzPiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpjYXNlIjxib3JkZXIvPiI6bj17fSxjLmRpYWdvbmFsVXAmJihuLmRpYWdvbmFsVXA9RmUoYy5kaWFnb25hbFVwKSksYy5kaWFnb25hbERvd24mJihuLmRpYWdvbmFsRG93bj1GZShjLmRpYWdvbmFsRG93bikpLGEuQm9yZGVycy5wdXNoKG4pO2JyZWFrO2Nhc2UiPC9ib3JkZXI+IjpicmVhaztjYXNlIjxsZWZ0Lz4iOm4ubGVmdD17fSxjLnN0eWxlJiYobi5sZWZ0LnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGxlZnQiOmNhc2UiPGxlZnQ+IjppPSJsZWZ0IixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9sZWZ0PiI6aT0iIjticmVhaztjYXNlIjxyaWdodC8+IjpuLnJpZ2h0PXt9LGMuc3R5bGUmJihuLnJpZ2h0LnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOmk9InJpZ2h0IixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9yaWdodD4iOmk9IiI7YnJlYWs7Y2FzZSI8dG9wLz4iOm4udG9wPXt9LGMuc3R5bGUmJihuLnRvcC5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjx0b3AiOmNhc2UiPHRvcD4iOmk9InRvcCIsbltpXT1uW2ldfHx7fSxjLnN0eWxlJiYobltpXS5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjwvdG9wPiI6aT0iIjticmVhaztjYXNlIjxib3R0b20vPiI6bi5ib3R0b209e30sYy5zdHlsZSYmKG4uYm90dG9tLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGJvdHRvbSI6Y2FzZSI8Ym90dG9tPiI6aT0iYm90dG9tIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9ib3R0b20+IjppPSIiO2JyZWFrO2Nhc2UiPGRpYWdvbmFsLz4iOm4uZGlhZ29uYWw9e30sYy5zdHlsZSYmKG4uZGlhZ29uYWwuc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8ZGlhZ29uYWwiOmNhc2UiPGRpYWdvbmFsPiI6aT0iZGlhZ29uYWwiLG5baV09bltpXXx8e30sYy5zdHlsZSYmKG5baV0uc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6aT0iIjticmVhaztjYXNlIjxob3Jpem9udGFsLz4iOm4uaG9yaXpvbnRhbD17fSxjLnN0eWxlJiYobi5ob3Jpem9udGFsLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPGhvcml6b250YWwiOmNhc2UiPGhvcml6b250YWw+IjppPSJob3Jpem9udGFsIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC9ob3Jpem9udGFsPiI6aT0iIjticmVhaztjYXNlIjx2ZXJ0aWNhbC8+IjpuLnZlcnRpY2FsPXt9LGMuc3R5bGUmJihuLnZlcnRpY2FsLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPHZlcnRpY2FsIjpjYXNlIjx2ZXJ0aWNhbD4iOmk9InZlcnRpY2FsIixuW2ldPW5baV18fHt9LGMuc3R5bGUmJihuW2ldLnN0eWxlPWMuc3R5bGUpO2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOmk9IiI7YnJlYWs7Y2FzZSI8c3RhcnQvPiI6bi5zdGFydD17fSxjLnN0eWxlJiYobi5zdGFydC5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjxzdGFydCI6Y2FzZSI8c3RhcnQ+IjppPSJzdGFydCIsbltpXT1uW2ldfHx7fSxjLnN0eWxlJiYobltpXS5zdHlsZT1jLnN0eWxlKTticmVhaztjYXNlIjwvc3RhcnQ+IjppPSIiO2JyZWFrO2Nhc2UiPGVuZC8+IjpuLmVuZD17fSxjLnN0eWxlJiYobi5lbmQuc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8ZW5kIjpjYXNlIjxlbmQ+IjppPSJlbmQiLG5baV09bltpXXx8e30sYy5zdHlsZSYmKG5baV0uc3R5bGU9Yy5zdHlsZSk7YnJlYWs7Y2FzZSI8L2VuZD4iOmk9IiI7YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yPiI6aSYmKG5baV0uY29sb3I9enIoYyxyKSk7YnJlYWs7Y2FzZSI8Y29sb3IvPiI6Y2FzZSI8L2NvbG9yPiI6YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6YnJlYWs7Y2FzZSI8ZXh0IjpmPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpmPSExO2JyZWFrO2RlZmF1bHQ6aWYodCYmdC5XVEYmJiFmKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrY1swXSsiIGluIGJvcmRlcnMiKX19KX1mdW5jdGlvbiBSaChlLGEscix0KXthLkZpbGxzPVtdO3ZhciBuPXt9LGk9bnVsbCxmPW51bGwscz0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBvPW9lKGMpO3N3aXRjaChBcihvWzBdKSl7Y2FzZSI8ZmlsbHMiOmNhc2UiPGZpbGxzPiI6Y2FzZSI8L2ZpbGxzPiI6YnJlYWs7Y2FzZSI8ZmlsbD4iOmNhc2UiPGZpbGwiOmNhc2UiPGZpbGwvPiI6bj17fSxhLkZpbGxzLnB1c2gobik7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpicmVhaztjYXNlIjxncmFkaWVudEZpbGw+IjppPXtzdG9wczpbXX0sbi5ncmFkaWVudEZpbGw9aTticmVhaztjYXNlIjxncmFkaWVudEZpbGwiOmk9e3N0b3BzOltdfSxvLnR5cGUmJihpLnR5cGU9by50eXBlKSxvLmRlZ3JlZSYmKGkuZGVncmVlPXBhcnNlRmxvYXQoby5kZWdyZWUpKSxbImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLmZvckVhY2goZnVuY3Rpb24obCl7b1tsXSE9bnVsbCYmKGlbbF09cGFyc2VGbG9hdChvW2xdKSl9KSxuLmdyYWRpZW50RmlsbD1pO2JyZWFrO2Nhc2UiPC9ncmFkaWVudEZpbGw+IjppPW51bGw7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6by5wYXR0ZXJuVHlwZSYmKG4ucGF0dGVyblR5cGU9by5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6YnJlYWs7Y2FzZSI8YmdDb2xvciI6bi5iZ0NvbG9yPXpyKG8scik7YnJlYWs7Y2FzZSI8YmdDb2xvci8+IjpjYXNlIjwvYmdDb2xvcj4iOmJyZWFrO2Nhc2UiPGZnQ29sb3IiOm4uZmdDb2xvcj16cihvLHIpO2JyZWFrO2Nhc2UiPGZnQ29sb3IvPiI6Y2FzZSI8L2ZnQ29sb3I+IjpicmVhaztjYXNlIjxzdG9wIjpmPXt9LG8ucG9zaXRpb24hPW51bGwmJihmLnBvc2l0aW9uPXBhcnNlRmxvYXQoby5wb3NpdGlvbikpLGkmJmkuc3RvcHMucHVzaChmKTticmVhaztjYXNlIjxzdG9wLz4iOmkmJihmPXt9LG8ucG9zaXRpb24hPW51bGwmJihmLnBvc2l0aW9uPXBhcnNlRmxvYXQoby5wb3NpdGlvbikpLGkuc3RvcHMucHVzaChmKSksZj1udWxsO2JyZWFrO2Nhc2UiPC9zdG9wPiI6Zj1udWxsO2JyZWFrO2Nhc2UiPGNvbG9yIjpmJiYoZi5jb2xvcj16cihvLHIpKTticmVhaztjYXNlIjxjb2xvci8+IjpmJiYoZi5jb2xvcj16cihvLHIpKTticmVhaztjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOnM9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnM9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIXMpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitvWzBdKyIgaW4gZmlsbHMiKX19KX1mdW5jdGlvbiBPaChlLGEscix0KXthLkZvbnRzPVtdO3ZhciBuPXt9LGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPGZvbnRzIjpjYXNlIjxmb250cz4iOmNhc2UiPC9mb250cz4iOmJyZWFrO2Nhc2UiPGZvbnQiOmNhc2UiPGZvbnQ+IjpicmVhaztjYXNlIjwvZm9udD4iOmNhc2UiPGZvbnQvPiI6YS5Gb250cy5wdXNoKG4pLG49e307YnJlYWs7Y2FzZSI8bmFtZSI6cy52YWwmJihuLm5hbWU9VmUocy52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6bi5ib2xkPXMudmFsP0ZlKHMudmFsKToxO2JyZWFrO2Nhc2UiPGIvPiI6bi5ib2xkPTE7YnJlYWs7Y2FzZSI8L2I+IjpjYXNlIjwvYiI6YnJlYWs7Y2FzZSI8aSI6bi5pdGFsaWM9cy52YWw/RmUocy52YWwpOjE7YnJlYWs7Y2FzZSI8aS8+IjpuLml0YWxpYz0xO2JyZWFrO2Nhc2UiPC9pPiI6Y2FzZSI8L2kiOmJyZWFrO2Nhc2UiPHUiOnN3aXRjaChzLnZhbCl7Y2FzZSJub25lIjpuLnVuZGVybGluZT0wO2JyZWFrO2Nhc2Uic2luZ2xlIjpuLnVuZGVybGluZT0xO2JyZWFrO2Nhc2UiZG91YmxlIjpuLnVuZGVybGluZT0yO2JyZWFrO2Nhc2Uic2luZ2xlQWNjb3VudGluZyI6bi51bmRlcmxpbmU9MzM7YnJlYWs7Y2FzZSJkb3VibGVBY2NvdW50aW5nIjpuLnVuZGVybGluZT0zNDticmVha31icmVhaztjYXNlIjx1Lz4iOm4udW5kZXJsaW5lPTE7YnJlYWs7Y2FzZSI8L3U+IjpjYXNlIjwvdSI6YnJlYWs7Y2FzZSI8c3RyaWtlIjpuLnN0cmlrZT1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxzdHJpa2UvPiI6bi5zdHJpa2U9MTticmVhaztjYXNlIjwvc3RyaWtlPiI6Y2FzZSI8L3N0cmlrZSI6YnJlYWs7Y2FzZSI8b3V0bGluZSI6bi5vdXRsaW5lPXMudmFsP0ZlKHMudmFsKToxO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6bi5vdXRsaW5lPTE7YnJlYWs7Y2FzZSI8L291dGxpbmU+IjpjYXNlIjwvb3V0bGluZSI6YnJlYWs7Y2FzZSI8c2hhZG93IjpuLnNoYWRvdz1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxzaGFkb3cvPiI6bi5zaGFkb3c9MTticmVhaztjYXNlIjwvc2hhZG93PiI6Y2FzZSI8L3NoYWRvdyI6YnJlYWs7Y2FzZSI8Y29uZGVuc2UiOm4uY29uZGVuc2U9cy52YWw/RmUocy52YWwpOjE7YnJlYWs7Y2FzZSI8Y29uZGVuc2UvPiI6bi5jb25kZW5zZT0xO2JyZWFrO2Nhc2UiPC9jb25kZW5zZT4iOmNhc2UiPC9jb25kZW5zZSI6YnJlYWs7Y2FzZSI8ZXh0ZW5kIjpuLmV4dGVuZD1zLnZhbD9GZShzLnZhbCk6MTticmVhaztjYXNlIjxleHRlbmQvPiI6bi5leHRlbmQ9MTticmVhaztjYXNlIjwvZXh0ZW5kPiI6Y2FzZSI8L2V4dGVuZCI6YnJlYWs7Y2FzZSI8c3oiOnMudmFsJiYobi5zej0rcy52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmNhc2UiPC9zeiI6YnJlYWs7Y2FzZSI8dmVydEFsaWduIjpzLnZhbCYmKG4udmVydEFsaWduPXMudmFsKTticmVhaztjYXNlIjx2ZXJ0QWxpZ24vPiI6Y2FzZSI8L3ZlcnRBbGlnbj4iOmNhc2UiPC92ZXJ0QWxpZ24iOmJyZWFrO2Nhc2UiPGZhbWlseSI6cy52YWwmJihuLmZhbWlseT1wYXJzZUludChzLnZhbCwxMCkpO2JyZWFrO2Nhc2UiPGZhbWlseS8+IjpjYXNlIjwvZmFtaWx5PiI6Y2FzZSI8L2ZhbWlseSI6YnJlYWs7Y2FzZSI8c2NoZW1lIjpzLnZhbCYmKG4uc2NoZW1lPXMudmFsKTticmVhaztjYXNlIjxzY2hlbWUvPiI6Y2FzZSI8L3NjaGVtZT4iOmNhc2UiPC9zY2hlbWUiOmJyZWFrO2Nhc2UiPGNoYXJzZXQiOmlmKHMudmFsPT0iMSIpYnJlYWs7cy5jb2RlcGFnZT1HMFtwYXJzZUludChzLnZhbCwxMCldO2JyZWFrO2Nhc2UiPGNoYXJzZXQvPiI6Y2FzZSI8L2NoYXJzZXQ+IjpjYXNlIjwvY2hhcnNldCI6YnJlYWs7Y2FzZSI8Y29sb3IiOm4uY29sb3I9enIocyxyKTticmVhaztjYXNlIjxjb2xvci8+IjpjYXNlIjwvY29sb3I+IjpjYXNlIjwvY29sb3IiOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmk9ITA7YnJlYWs7Y2FzZSI8L0FsdGVybmF0ZUNvbnRlbnQ+IjpjYXNlIjwvQWx0ZXJuYXRlQ29udGVudCI6aT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gZm9udHMiKX19KX1mdW5jdGlvbiBOaChlLGEscil7YS5OdW1iZXJGbXQ9W107Zm9yKHZhciB0PXByKFRlKSxuPTA7bjx0Lmxlbmd0aDsrK24pYS5OdW1iZXJGbXRbdFtuXV09VGVbdFtuXV07dmFyIGk9ZS5tYXRjaChucik7aWYoaSlmb3Iobj0wO248aS5sZW5ndGg7KytuKXt2YXIgZj1vZShpW25dKTtzd2l0Y2goQXIoZlswXSkpe2Nhc2UiPG51bUZtdHMiOmNhc2UiPC9udW1GbXRzPiI6Y2FzZSI8bnVtRm10cy8+IjpjYXNlIjxudW1GbXRzPiI6YnJlYWs7Y2FzZSI8bnVtRm10Ijp7dmFyIHM9Q2UoVmUoZi5mb3JtYXRDb2RlKSksYz1wYXJzZUludChmLm51bUZtdElkLDEwKTtpZihhLk51bWJlckZtdFtjXT1zLGM+MCl7aWYoYz4zOTIpe2ZvcihjPTM5MjtjPjYwJiZhLk51bWJlckZtdFtjXSE9bnVsbDstLWMpO2EuTnVtYmVyRm10W2NdPXN9TGEocyxjKX19YnJlYWs7Y2FzZSI8L251bUZtdD4iOmJyZWFrO2RlZmF1bHQ6aWYoci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitmWzBdKyIgaW4gbnVtRm10cyIpfX19dmFyIEEwPVsibnVtRm10SWQiLCJmaWxsSWQiLCJmb250SWQiLCJib3JkZXJJZCIsInhmSWQiXSx5MD1bImFwcGx5QWxpZ25tZW50IiwiYXBwbHlCb3JkZXIiLCJhcHBseUZpbGwiLCJhcHBseUZvbnQiLCJhcHBseU51bWJlckZvcm1hdCIsImFwcGx5UHJvdGVjdGlvbiIsInBpdm90QnV0dG9uIiwicXVvdGVQcmVmaXgiXTtmdW5jdGlvbiBWcyhlLGEscix0KXthW3RdPVtdO3ZhciBuLGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKSxjPTA7c3dpdGNoKEFyKHNbMF0pKXtjYXNlIjxjZWxsWGZzIjpjYXNlIjxjZWxsWGZzPiI6Y2FzZSI8Y2VsbFhmcy8+IjpjYXNlIjwvY2VsbFhmcz4iOmNhc2UiPGNlbGxTdHlsZVhmcyI6Y2FzZSI8Y2VsbFN0eWxlWGZzPiI6Y2FzZSI8Y2VsbFN0eWxlWGZzLz4iOmNhc2UiPC9jZWxsU3R5bGVYZnM+IjpicmVhaztjYXNlIjx4ZiI6Y2FzZSI8eGYvPiI6Y2FzZSI8eGY+Ijpmb3Iobj1zLGRlbGV0ZSBuWzBdLGM9MDtjPEEwLmxlbmd0aDsrK2MpbltBMFtjXV0mJihuW0EwW2NdXT1wYXJzZUludChuW0EwW2NdXSwxMCkpO2ZvcihjPTA7Yzx5MC5sZW5ndGg7KytjKW5beTBbY11dJiYoblt5MFtjXV09RmUoblt5MFtjXV0pKTtpZihhLk51bWJlckZtdCYmbi5udW1GbXRJZD4zOTIpe2ZvcihjPTM5MjtjPjYwOy0tYylpZihhLk51bWJlckZtdFtuLm51bUZtdElkXT09YS5OdW1iZXJGbXRbY10pe24ubnVtRm10SWQ9YzticmVha319YVt0XS5wdXNoKG4pO2JyZWFrO2Nhc2UiPC94Zj4iOmJyZWFrO2Nhc2UiPGFsaWdubWVudCI6Y2FzZSI8YWxpZ25tZW50Lz4iOmNhc2UiPGFsaWdubWVudD4iOnZhciBvPXt9O3MudmVydGljYWwmJihvLnZlcnRpY2FsPXMudmVydGljYWwpLHMuaG9yaXpvbnRhbCYmKG8uaG9yaXpvbnRhbD1zLmhvcml6b250YWwpLHMudGV4dFJvdGF0aW9uIT1udWxsJiYoby50ZXh0Um90YXRpb249cGFyc2VJbnQocy50ZXh0Um90YXRpb24sMTApKSxzLmluZGVudCYmKG8uaW5kZW50PXBhcnNlSW50KHMuaW5kZW50LDEwKSkscy5yZWxhdGl2ZUluZGVudCYmKG8ucmVsYXRpdmVJbmRlbnQ9cGFyc2VJbnQocy5yZWxhdGl2ZUluZGVudCwxMCkpLHMucmVhZGluZ09yZGVyJiYoby5yZWFkaW5nT3JkZXI9cGFyc2VJbnQocy5yZWFkaW5nT3JkZXIsMTApKSxzLndyYXBUZXh0JiYoby53cmFwVGV4dD1GZShzLndyYXBUZXh0KSkscy5zaHJpbmtUb0ZpdCYmKG8uc2hyaW5rVG9GaXQ9RmUocy5zaHJpbmtUb0ZpdCkpLHMuanVzdGlmeUxhc3RMaW5lJiYoby5qdXN0aWZ5TGFzdExpbmU9RmUocy5qdXN0aWZ5TGFzdExpbmUpKSxuLmFsaWdubWVudD1vO2JyZWFrO2Nhc2UiPC9hbGlnbm1lbnQ+IjpicmVhaztjYXNlIjxwcm90ZWN0aW9uIjpjYXNlIjxwcm90ZWN0aW9uPiI6dmFyIGw9e307cy5sb2NrZWQhPW51bGwmJihsLmxvY2tlZD1GZShzLmxvY2tlZCkpLHMuaGlkZGVuIT1udWxsJiYobC5oaWRkZW49RmUocy5oaWRkZW4pKSxuLnByb3RlY3Rpb249bDticmVhaztjYXNlIjxwcm90ZWN0aW9uLz4iOmw9e30scy5sb2NrZWQhPW51bGwmJihsLmxvY2tlZD1GZShzLmxvY2tlZCkpLHMuaGlkZGVuIT1udWxsJiYobC5oaWRkZW49RmUocy5oaWRkZW4pKSxuLnByb3RlY3Rpb249bDticmVhaztjYXNlIjwvcHJvdGVjdGlvbj4iOmJyZWFrO2Nhc2UiPEFsdGVybmF0ZUNvbnRlbnQiOmNhc2UiPEFsdGVybmF0ZUNvbnRlbnQ+IjppPSEwO2JyZWFrO2Nhc2UiPC9BbHRlcm5hdGVDb250ZW50PiI6aT0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZihyJiZyLldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY2VsbFhmcyIpfX0pfWZ1bmN0aW9uIE1oKGUsYSxyKXtWcyhlLGEsciwiQ2VsbFhmIil9ZnVuY3Rpb24gUGgoZSxhLHIpe1ZzKGUsYSxyLCJDZWxsU3R5bGVYZiIpfWZ1bmN0aW9uIExoKGUsYSxyKXthLkNlbGxTdHlsZXM9W10sKGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1vZSh0KTtzd2l0Y2goQXIoblswXSkpe2Nhc2UiPGNlbGxTdHlsZXMiOmNhc2UiPGNlbGxTdHlsZXM+IjpjYXNlIjxjZWxsU3R5bGVzLz4iOmNhc2UiPC9jZWxsU3R5bGVzPiI6YnJlYWs7Y2FzZSI8Y2VsbFN0eWxlIjpjYXNlIjxjZWxsU3R5bGUvPiI6ZGVsZXRlIG5bMF0sbi54ZklkIT1udWxsJiYobi54ZklkPXBhcnNlSW50KG4ueGZJZCwxMCkpLG4uYnVpbHRpbklkIT1udWxsJiYobi5idWlsdGluSWQ9cGFyc2VJbnQobi5idWlsdGluSWQsMTApKSxuLmlMZXZlbCE9bnVsbCYmKG4uaUxldmVsPXBhcnNlSW50KG4uaUxldmVsLDEwKSksbi5jdXN0b21CdWlsdGluIT1udWxsJiYobi5jdXN0b21CdWlsdGluPUZlKG4uY3VzdG9tQnVpbHRpbikpLG4uaGlkZGVuIT1udWxsJiYobi5oaWRkZW49RmUobi5oaWRkZW4pKSxuLm5hbWUmJihuLm5hbWU9VmUobi5uYW1lKSksYS5DZWxsU3R5bGVzLnB1c2gobik7YnJlYWs7Y2FzZSI8L2NlbGxTdHlsZT4iOmJyZWFrO2RlZmF1bHQ6aWYociYmci5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIituWzBdKyIgaW4gY2VsbFN0eWxlcyIpfX0pfWZ1bmN0aW9uIEJoKGUsYSxyLHQpe2EuRHhmcz1bXTt2YXIgbj1udWxsLGk9bnVsbCxmPW51bGwscz1udWxsLGM9IiIsbz0hMTsoZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciB1PW9lKGwpO3N3aXRjaChBcih1WzBdKSl7Y2FzZSI8ZHhmcyI6Y2FzZSI8ZHhmcz4iOmNhc2UiPGR4ZnMvPiI6Y2FzZSI8L2R4ZnM+IjpicmVhaztjYXNlIjxkeGYiOmNhc2UiPGR4Zj4iOm49e30sYS5EeGZzLnB1c2gobik7YnJlYWs7Y2FzZSI8ZHhmLz4iOmEuRHhmcy5wdXNoKHt9KSxuPW51bGw7YnJlYWs7Y2FzZSI8L2R4Zj4iOm49bnVsbDticmVhaztjYXNlIjxmb250IjpjYXNlIjxmb250PiI6aT17fSxuJiYobi5mb250PWkpO2JyZWFrO2Nhc2UiPC9mb250PiI6Y2FzZSI8Zm9udC8+IjppPW51bGw7YnJlYWs7Y2FzZSI8bmFtZSI6aSYmdS52YWwmJihpLm5hbWU9VmUodS52YWwpKTticmVhaztjYXNlIjxuYW1lLz4iOmNhc2UiPC9uYW1lPiI6YnJlYWs7Y2FzZSI8YiI6aSYmKGkuYm9sZD11LnZhbD9GZSh1LnZhbCk6MSk7YnJlYWs7Y2FzZSI8Yi8+IjppJiYoaS5ib2xkPTEpO2JyZWFrO2Nhc2UiPC9iPiI6YnJlYWs7Y2FzZSI8aSI6aSYmKGkuaXRhbGljPXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxpLz4iOmkmJihpLml0YWxpYz0xKTticmVhaztjYXNlIjwvaT4iOmJyZWFrO2Nhc2UiPHUiOmkmJihpLnVuZGVybGluZT11LnZhbHx8MSk7YnJlYWs7Y2FzZSI8dS8+IjppJiYoaS51bmRlcmxpbmU9MSk7YnJlYWs7Y2FzZSI8L3U+IjpicmVhaztjYXNlIjxzdHJpa2UiOmkmJihpLnN0cmlrZT11LnZhbD9GZSh1LnZhbCk6MSk7YnJlYWs7Y2FzZSI8c3RyaWtlLz4iOmkmJihpLnN0cmlrZT0xKTticmVhaztjYXNlIjwvc3RyaWtlPiI6YnJlYWs7Y2FzZSI8c3oiOmkmJnUudmFsJiYoaS5zej0rdS52YWwpO2JyZWFrO2Nhc2UiPHN6Lz4iOmNhc2UiPC9zej4iOmJyZWFrO2Nhc2UiPG91dGxpbmUiOmkmJihpLm91dGxpbmU9dS52YWw/RmUodS52YWwpOjEpO2JyZWFrO2Nhc2UiPG91dGxpbmUvPiI6aSYmKGkub3V0bGluZT0xKTticmVhaztjYXNlIjwvb3V0bGluZT4iOmJyZWFrO2Nhc2UiPHNoYWRvdyI6aSYmKGkuc2hhZG93PXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxzaGFkb3cvPiI6aSYmKGkuc2hhZG93PTEpO2JyZWFrO2Nhc2UiPC9zaGFkb3c+IjpicmVhaztjYXNlIjxjb25kZW5zZSI6aSYmKGkuY29uZGVuc2U9dS52YWw/RmUodS52YWwpOjEpO2JyZWFrO2Nhc2UiPGNvbmRlbnNlLz4iOmkmJihpLmNvbmRlbnNlPTEpO2JyZWFrO2Nhc2UiPC9jb25kZW5zZT4iOmJyZWFrO2Nhc2UiPGV4dGVuZCI6aSYmKGkuZXh0ZW5kPXUudmFsP0ZlKHUudmFsKToxKTticmVhaztjYXNlIjxleHRlbmQvPiI6aSYmKGkuZXh0ZW5kPTEpO2JyZWFrO2Nhc2UiPC9leHRlbmQ+IjpicmVhaztjYXNlIjx2ZXJ0QWxpZ24iOmkmJnUudmFsJiYoaS52ZXJ0QWxpZ249dS52YWwpO2JyZWFrO2Nhc2UiPHZlcnRBbGlnbi8+IjpjYXNlIjwvdmVydEFsaWduPiI6YnJlYWs7Y2FzZSI8ZmFtaWx5IjppJiZ1LnZhbCYmKGkuZmFtaWx5PXBhcnNlSW50KHUudmFsLDEwKSk7YnJlYWs7Y2FzZSI8ZmFtaWx5Lz4iOmNhc2UiPC9mYW1pbHk+IjpicmVhaztjYXNlIjxzY2hlbWUiOmkmJnUudmFsJiYoaS5zY2hlbWU9dS52YWwpO2JyZWFrO2Nhc2UiPHNjaGVtZS8+IjpjYXNlIjwvc2NoZW1lPiI6YnJlYWs7Y2FzZSI8Y2hhcnNldCI6aSYmdS52YWwhPW51bGwmJihpLmNoYXJzZXQ9cGFyc2VJbnQodS52YWwsMTApKTticmVhaztjYXNlIjxjaGFyc2V0Lz4iOmNhc2UiPC9jaGFyc2V0PiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmk/aS5jb2xvcj16cih1LHIpOmMmJnMmJihzW2NdLmNvbG9yPXpyKHUscikpO2JyZWFrO2Nhc2UiPGNvbG9yLz4iOmNhc2UiPC9jb2xvcj4iOmJyZWFrO2Nhc2UiPGZpbGwiOmNhc2UiPGZpbGw+IjpmPXt9LG4mJihuLmZpbGw9Zik7YnJlYWs7Y2FzZSI8ZmlsbC8+IjpmPW51bGw7YnJlYWs7Y2FzZSI8L2ZpbGw+IjpmPW51bGw7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwiOmNhc2UiPHBhdHRlcm5GaWxsPiI6ZiYmdS5wYXR0ZXJuVHlwZSYmKGYucGF0dGVyblR5cGU9dS5wYXR0ZXJuVHlwZSk7YnJlYWs7Y2FzZSI8cGF0dGVybkZpbGwvPiI6Y2FzZSI8L3BhdHRlcm5GaWxsPiI6YnJlYWs7Y2FzZSI8ZmdDb2xvciI6ZiYmKGYuZmdDb2xvcj16cih1LHIpKTticmVhaztjYXNlIjxmZ0NvbG9yLz4iOmNhc2UiPC9mZ0NvbG9yPiI6YnJlYWs7Y2FzZSI8YmdDb2xvciI6ZiYmKGYuYmdDb2xvcj16cih1LHIpKTticmVhaztjYXNlIjxiZ0NvbG9yLz4iOmNhc2UiPC9iZ0NvbG9yPiI6YnJlYWs7Y2FzZSI8Ym9yZGVyIjpjYXNlIjxib3JkZXI+IjpzPXt9LG4mJihuLmJvcmRlcj1zKTticmVhaztjYXNlIjxib3JkZXIvPiI6cz1udWxsO2JyZWFrO2Nhc2UiPC9ib3JkZXI+IjpzPW51bGw7YnJlYWs7Y2FzZSI8bGVmdCI6Y2FzZSI8bGVmdD4iOmNhc2UiPGxlZnQvPiI6Yz0ibGVmdCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L2xlZnQ+IjpjPSIiO2JyZWFrO2Nhc2UiPHJpZ2h0IjpjYXNlIjxyaWdodD4iOmNhc2UiPHJpZ2h0Lz4iOmM9InJpZ2h0IixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvcmlnaHQ+IjpjPSIiO2JyZWFrO2Nhc2UiPHRvcCI6Y2FzZSI8dG9wPiI6Y2FzZSI8dG9wLz4iOmM9InRvcCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L3RvcD4iOmM9IiI7YnJlYWs7Y2FzZSI8Ym90dG9tIjpjYXNlIjxib3R0b20+IjpjYXNlIjxib3R0b20vPiI6Yz0iYm90dG9tIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvYm90dG9tPiI6Yz0iIjticmVhaztjYXNlIjxkaWFnb25hbCI6Y2FzZSI8ZGlhZ29uYWw+IjpjYXNlIjxkaWFnb25hbC8+IjpjPSJkaWFnb25hbCIscyYmKHNbY109c1tjXXx8e30sdS5zdHlsZSYmKHNbY10uc3R5bGU9dS5zdHlsZSkpLHVbMF0uc2xpY2UoLTIpPT0iLz4iJiYoYz0iIik7YnJlYWs7Y2FzZSI8L2RpYWdvbmFsPiI6Yz0iIjticmVhaztjYXNlIjxob3Jpem9udGFsIjpjYXNlIjxob3Jpem9udGFsPiI6Y2FzZSI8aG9yaXpvbnRhbC8+IjpjPSJob3Jpem9udGFsIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvaG9yaXpvbnRhbD4iOmM9IiI7YnJlYWs7Y2FzZSI8dmVydGljYWwiOmNhc2UiPHZlcnRpY2FsPiI6Y2FzZSI8dmVydGljYWwvPiI6Yz0idmVydGljYWwiLHMmJihzW2NdPXNbY118fHt9LHUuc3R5bGUmJihzW2NdLnN0eWxlPXUuc3R5bGUpKSx1WzBdLnNsaWNlKC0yKT09Ii8+IiYmKGM9IiIpO2JyZWFrO2Nhc2UiPC92ZXJ0aWNhbD4iOmM9IiI7YnJlYWs7Y2FzZSI8c3RhcnQiOmNhc2UiPHN0YXJ0PiI6Y2FzZSI8c3RhcnQvPiI6Yz0ic3RhcnQiLHMmJihzW2NdPXNbY118fHt9LHUuc3R5bGUmJihzW2NdLnN0eWxlPXUuc3R5bGUpKSx1WzBdLnNsaWNlKC0yKT09Ii8+IiYmKGM9IiIpO2JyZWFrO2Nhc2UiPC9zdGFydD4iOmM9IiI7YnJlYWs7Y2FzZSI8ZW5kIjpjYXNlIjxlbmQ+IjpjYXNlIjxlbmQvPiI6Yz0iZW5kIixzJiYoc1tjXT1zW2NdfHx7fSx1LnN0eWxlJiYoc1tjXS5zdHlsZT11LnN0eWxlKSksdVswXS5zbGljZSgtMik9PSIvPiImJihjPSIiKTticmVhaztjYXNlIjwvZW5kPiI6Yz0iIjticmVhaztjYXNlIjxhbGlnbm1lbnQiOm4mJihuLmFsaWdubWVudD17fSx1LnZlcnRpY2FsJiYobi5hbGlnbm1lbnQudmVydGljYWw9dS52ZXJ0aWNhbCksdS5ob3Jpem9udGFsJiYobi5hbGlnbm1lbnQuaG9yaXpvbnRhbD11Lmhvcml6b250YWwpLHUud3JhcFRleHQmJihuLmFsaWdubWVudC53cmFwVGV4dD1GZSh1LndyYXBUZXh0KSkpO2JyZWFrO2Nhc2UiPGFsaWdubWVudC8+IjpjYXNlIjwvYWxpZ25tZW50PiI6YnJlYWs7Y2FzZSI8bnVtRm10IjpuJiYobi5udW1GbXQ9e251bUZtdElkOnUubnVtRm10SWQhPW51bGw/cGFyc2VJbnQodS5udW1GbXRJZCwxMCk6dm9pZCAwLGZvcm1hdENvZGU6dS5mb3JtYXRDb2RlP0NlKFZlKHUuZm9ybWF0Q29kZSkpOnZvaWQgMH0pO2JyZWFrO2Nhc2UiPG51bUZtdC8+IjpjYXNlIjwvbnVtRm10PiI6YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbiI6biYmKG4ucHJvdGVjdGlvbj17fSx1LmxvY2tlZCE9bnVsbCYmKG4ucHJvdGVjdGlvbi5sb2NrZWQ9RmUodS5sb2NrZWQpKSx1LmhpZGRlbiE9bnVsbCYmKG4ucHJvdGVjdGlvbi5oaWRkZW49RmUodS5oaWRkZW4pKSk7YnJlYWs7Y2FzZSI8cHJvdGVjdGlvbi8+IjpjYXNlIjwvcHJvdGVjdGlvbj4iOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmJyZWFrO2Nhc2UiPGV4dCI6bz0hMDticmVhaztjYXNlIjwvZXh0PiI6bz0hMTticmVhaztkZWZhdWx0OmlmKHQmJnQuV1RGJiYhbyl0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK3VbMF0rIiBpbiBkeGZzIil9fSl9ZnVuY3Rpb24gVWgoZSxhLHIsdCl7YS5Db2xvcnM9e2luZGV4ZWRDb2xvcnM6W10sbXJ1Q29sb3JzOltdLHRoZW1lQ29sb3JzOltdfTt2YXIgbj1udWxsLGk9ITE7KGUubWF0Y2gobnIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1vZShmKTtzd2l0Y2goQXIoc1swXSkpe2Nhc2UiPGNvbG9ycyI6Y2FzZSI8Y29sb3JzPiI6Y2FzZSI8L2NvbG9ycz4iOmJyZWFrO2Nhc2UiPGluZGV4ZWRDb2xvcnMiOmNhc2UiPGluZGV4ZWRDb2xvcnM+IjpuPWEuQ29sb3JzLmluZGV4ZWRDb2xvcnM7YnJlYWs7Y2FzZSI8L2luZGV4ZWRDb2xvcnM+IjpuPW51bGw7YnJlYWs7Y2FzZSI8dGhlbWVDb2xvcnMiOmNhc2UiPHRoZW1lQ29sb3JzPiI6bj1hLkNvbG9ycy50aGVtZUNvbG9yczticmVhaztjYXNlIjwvdGhlbWVDb2xvcnM+IjpuPW51bGw7YnJlYWs7Y2FzZSI8bXJ1Q29sb3JzIjpjYXNlIjxtcnVDb2xvcnM+IjpuPWEuQ29sb3JzLm1ydUNvbG9yczticmVhaztjYXNlIjwvbXJ1Q29sb3JzPiI6bj1udWxsO2JyZWFrO2Nhc2UiPHJnYkNvbG9yIjpjYXNlIjxyZ2JDb2xvci8+IjpuJiZuLnB1c2goenIocyxyKSk7YnJlYWs7Y2FzZSI8L3JnYkNvbG9yPiI6YnJlYWs7Y2FzZSI8Y29sb3IiOmNhc2UiPGNvbG9yLz4iOm4mJm4ucHVzaCh6cihzLHIpKTticmVhaztjYXNlIjwvY29sb3I+IjpicmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpicmVhaztjYXNlIjxleHQiOmk9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOmk9ITE7YnJlYWs7ZGVmYXVsdDppZih0JiZ0LldURiYmIWkpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitzWzBdKyIgaW4gY29sb3JzIil9fSl9dmFyIEhoPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHIsdCxuKXt2YXIgaT17fTtpZighcilyZXR1cm4gaTtyPVowKEN0KHIsIjwhLS0iLCItLT4iKSk7dmFyIGY7cmV0dXJuKGY9TGUociwibnVtRm10cyIpKSYmTmgoZlswXSxpLG4pLChmPUxlKHIsImZvbnRzIikpJiZPaChmWzBdLGksdCxuKSwoZj1MZShyLCJmaWxscyIpKSYmUmgoZlswXSxpLHQsbiksKGY9TGUociwiYm9yZGVycyIpKSYmRGgoZlswXSxpLHQsbiksKGY9TGUociwiY2VsbFN0eWxlWGZzIikpJiZQaChmWzBdLGksbiksKGY9TGUociwiY2VsbFN0eWxlcyIpKSYmTGgoZlswXSxpLG4pLChmPUxlKHIsImNlbGxYZnMiKSkmJk1oKGZbMF0saSxuKSwoZj1MZShyLCJkeGZzIikpJiZCaChmWzBdLGksdCxuKSwoZj1MZShyLCJjb2xvcnMiKSkmJlVoKGZbMF0saSx0LG4pLGl9fSgpO2Z1bmN0aW9uIFdoKGUsYSl7dmFyIHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9bXIoZSk7cmV0dXJuW3IsdF19ZnVuY3Rpb24gVmgoZSxhLHIpe3ZhciB0PXt9O3Quc3o9ZS5yZWFkX3NoaWZ0KDIpLzIwO3ZhciBuPVJvKGUpO24uZkl0YWxpYyYmKHQuaXRhbGljPTEpLG4uZkNvbmRlbnNlJiYodC5jb25kZW5zZT0xKSxuLmZFeHRlbmQmJih0LmV4dGVuZD0xKSxuLmZTaGFkb3cmJih0LnNoYWRvdz0xKSxuLmZPdXRsaW5lJiYodC5vdXRsaW5lPTEpLG4uZlN0cmlrZW91dCYmKHQuc3RyaWtlPTEpO3ZhciBpPWUucmVhZF9zaGlmdCgyKTtzd2l0Y2goaT09PTcwMCYmKHQuYm9sZD0xKSxlLnJlYWRfc2hpZnQoMikpe2Nhc2UgMTp0LnZlcnRBbGlnbj0ic3VwZXJzY3JpcHQiO2JyZWFrO2Nhc2UgMjp0LnZlcnRBbGlnbj0ic3Vic2NyaXB0IjticmVha312YXIgZj1lLnJlYWRfc2hpZnQoMSk7ZiE9MCYmKHQudW5kZXJsaW5lPWYpO3ZhciBzPWUucmVhZF9zaGlmdCgxKTtzPjAmJih0LmZhbWlseT1zKTt2YXIgYz1lLnJlYWRfc2hpZnQoMSk7c3dpdGNoKGM+MCYmKHQuY2hhcnNldD1jKSxlLmwrKyx0LmNvbG9yPURvKGUpLGUucmVhZF9zaGlmdCgxKSl7Y2FzZSAxOnQuc2NoZW1lPSJtYWpvciI7YnJlYWs7Y2FzZSAyOnQuc2NoZW1lPSJtaW5vciI7YnJlYWt9cmV0dXJuIHQubmFtZT1tcihlKSx0fXZhciBHaD15cjtmdW5jdGlvbiBYaChlLGEpe3ZhciByPWUubCthLHQ9ZS5yZWFkX3NoaWZ0KDIpLG49ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmw9cix7aXhmZTp0LG51bUZtdElkOm59fXZhciB6aD15cjtmdW5jdGlvbiAkaChlLGEscil7dmFyIHQ9e307dC5OdW1iZXJGbXQ9W107Zm9yKHZhciBuIGluIFRlKXQuTnVtYmVyRm10W25dPVRlW25dO3QuQ2VsbFhmPVtdLHQuRm9udHM9W107dmFyIGk9W10sZj0hMTtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNDQ6dC5OdW1iZXJGbXRbY1swXV09Y1sxXSxMYShjWzFdLGNbMF0pO2JyZWFrO2Nhc2UgNDM6dC5Gb250cy5wdXNoKGMpLGMuY29sb3IudGhlbWUhPW51bGwmJmEmJmEudGhlbWVFbGVtZW50cyYmYS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZSYmKGMuY29sb3IucmdiPXhuKGEudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbYy5jb2xvci50aGVtZV0ucmdiLGMuY29sb3IudGludHx8MCkpO2JyZWFrO2Nhc2UgMTAyNTpicmVhaztjYXNlIDQ1OmJyZWFrO2Nhc2UgNDY6YnJlYWs7Y2FzZSA0NzppW2kubGVuZ3RoLTFdPT02MTcmJnQuQ2VsbFhmLnB1c2goYyk7YnJlYWs7Y2FzZSA0ODpjYXNlIDUwNzpjYXNlIDU3MjpjYXNlIDQ3NTpicmVhaztjYXNlIDExNzE6Y2FzZSAyMTAyOmNhc2UgMTEzMDpjYXNlIDUxMjpjYXNlIDIwOTU6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6Zj0hMDticmVhaztjYXNlIDM2OmY9ITE7YnJlYWs7Y2FzZSAzNzppLnB1c2gobCksZj0hMDticmVhaztjYXNlIDM4OmkucG9wKCksZj0hMTticmVhaztkZWZhdWx0OmlmKG8uVD4wKWkucHVzaChsKTtlbHNlIGlmKG8uVDwwKWkucG9wKCk7ZWxzZSBpZighZnx8ci5XVEYmJmlbaS5sZW5ndGgtMV0hPTM3KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19KSx0fXZhciBLaD1bIjwvYTpsdDE+IiwiPC9hOmRrMT4iLCI8L2E6bHQyPiIsIjwvYTpkazI+IiwiPC9hOmFjY2VudDE+IiwiPC9hOmFjY2VudDI+IiwiPC9hOmFjY2VudDM+IiwiPC9hOmFjY2VudDQ+IiwiPC9hOmFjY2VudDU+IiwiPC9hOmFjY2VudDY+IiwiPC9hOmhsaW5rPiIsIjwvYTpmb2xIbGluaz4iXTtmdW5jdGlvbiBqaChlLGEscil7YS50aGVtZUVsZW1lbnRzLmNsclNjaGVtZT1bXTt2YXIgdD17fTsoZVswXS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBpPW9lKG4pO3N3aXRjaChpWzBdKXtjYXNlIjxhOmNsclNjaGVtZSI6Y2FzZSI8L2E6Y2xyU2NoZW1lPiI6YnJlYWs7Y2FzZSI8YTpzcmdiQ2xyIjp0LnJnYj1pLnZhbDticmVhaztjYXNlIjwvYTpzcmdiQ2xyPiI6YnJlYWs7Y2FzZSI8YTpzeXNDbHIiOnQucmdiPWkubGFzdENscjticmVhaztjYXNlIjwvYTpzeXNDbHI+IjpicmVhaztjYXNlIjwvYTpkazE+IjpjYXNlIjwvYTpsdDE+IjpjYXNlIjxhOmRrMT4iOmNhc2UiPGE6bHQxPiI6Y2FzZSI8YTpkazI+IjpjYXNlIjwvYTpkazI+IjpjYXNlIjxhOmx0Mj4iOmNhc2UiPC9hOmx0Mj4iOmNhc2UiPGE6YWNjZW50MT4iOmNhc2UiPC9hOmFjY2VudDE+IjpjYXNlIjxhOmFjY2VudDI+IjpjYXNlIjwvYTphY2NlbnQyPiI6Y2FzZSI8YTphY2NlbnQzPiI6Y2FzZSI8L2E6YWNjZW50Mz4iOmNhc2UiPGE6YWNjZW50ND4iOmNhc2UiPC9hOmFjY2VudDQ+IjpjYXNlIjxhOmFjY2VudDU+IjpjYXNlIjwvYTphY2NlbnQ1PiI6Y2FzZSI8YTphY2NlbnQ2PiI6Y2FzZSI8L2E6YWNjZW50Nj4iOmNhc2UiPGE6aGxpbms+IjpjYXNlIjwvYTpobGluaz4iOmNhc2UiPGE6Zm9sSGxpbms+IjpjYXNlIjwvYTpmb2xIbGluaz4iOmlbMF0uY2hhckF0KDEpPT09Ii8iPyhhLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW0toLmluZGV4T2YoaVswXSldPXQsdD17fSk6dC5uYW1lPWlbMF0uc2xpY2UoMyxpWzBdLmxlbmd0aC0xKTticmVhaztkZWZhdWx0OmlmKHImJnIuV1RGKXRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkICIraVswXSsiIGluIGNsclNjaGVtZSIpfX0pfWZ1bmN0aW9uIFloKGUsYSxyKXthLnRoZW1lRWxlbWVudHM9e307dmFyIHQ7aWYoISh0PUhhKGUsImE6Y2xyU2NoZW1lIikpKXRocm93IG5ldyBFcnJvcigiY2xyU2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7aWYoamgodCxhLHIpLCEodD1IYShlLCJhOmZvbnRTY2hlbWUiKSkpdGhyb3cgbmV3IEVycm9yKCJmb250U2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIik7aWYoISh0PUhhKGUsImE6Zm10U2NoZW1lIikpKXRocm93IG5ldyBFcnJvcigiZm10U2NoZW1lIG5vdCBmb3VuZCBpbiB0aGVtZUVsZW1lbnRzIil9ZnVuY3Rpb24gR3MoZSxhKXsoIWV8fGUubGVuZ3RoPT09MCkmJihlPUpoKCkpO3ZhciByLHQ9e307aWYoIShyPUhhKGUsImE6dGhlbWVFbGVtZW50cyIpKSl0aHJvdyBuZXcgRXJyb3IoInRoZW1lRWxlbWVudHMgbm90IGZvdW5kIGluIHRoZW1lIik7cmV0dXJuIFloKHJbMF0sdCxhKSx0LnJhdz1lLHR9ZnVuY3Rpb24gSmgoZSxhKXtpZihhJiZhLnRoZW1lWExTWClyZXR1cm4gYS50aGVtZVhMU1g7aWYoZSYmdHlwZW9mIGUucmF3PT0ic3RyaW5nIilyZXR1cm4gZS5yYXc7dmFyIHI9W19pXTtyZXR1cm4gcltyLmxlbmd0aF09JzxhOnRoZW1lIHhtbG5zOmE9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluIiBuYW1lPSJPZmZpY2UgVGhlbWUiPicscltyLmxlbmd0aF09IjxhOnRoZW1lRWxlbWVudHM+IixyW3IubGVuZ3RoXT0nPGE6Y2xyU2NoZW1lIG5hbWU9Ik9mZmljZSI+JyxyW3IubGVuZ3RoXT0nPGE6ZGsxPjxhOnN5c0NsciB2YWw9IndpbmRvd1RleHQiIGxhc3RDbHI9IjAwMDAwMCIvPjwvYTpkazE+JyxyW3IubGVuZ3RoXT0nPGE6bHQxPjxhOnN5c0NsciB2YWw9IndpbmRvdyIgbGFzdENscj0iRkZGRkZGIi8+PC9hOmx0MT4nLHJbci5sZW5ndGhdPSc8YTpkazI+PGE6c3JnYkNsciB2YWw9IjFGNDk3RCIvPjwvYTpkazI+JyxyW3IubGVuZ3RoXT0nPGE6bHQyPjxhOnNyZ2JDbHIgdmFsPSJFRUVDRTEiLz48L2E6bHQyPicscltyLmxlbmd0aF09JzxhOmFjY2VudDE+PGE6c3JnYkNsciB2YWw9IjRGODFCRCIvPjwvYTphY2NlbnQxPicscltyLmxlbmd0aF09JzxhOmFjY2VudDI+PGE6c3JnYkNsciB2YWw9IkMwNTA0RCIvPjwvYTphY2NlbnQyPicscltyLmxlbmd0aF09JzxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9IjlCQkI1OSIvPjwvYTphY2NlbnQzPicscltyLmxlbmd0aF09JzxhOmFjY2VudDQ+PGE6c3JnYkNsciB2YWw9IjgwNjRBMiIvPjwvYTphY2NlbnQ0PicscltyLmxlbmd0aF09JzxhOmFjY2VudDU+PGE6c3JnYkNsciB2YWw9IjRCQUNDNiIvPjwvYTphY2NlbnQ1PicscltyLmxlbmd0aF09JzxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9IkY3OTY0NiIvPjwvYTphY2NlbnQ2PicscltyLmxlbmd0aF09JzxhOmhsaW5rPjxhOnNyZ2JDbHIgdmFsPSIwMDAwRkYiLz48L2E6aGxpbms+JyxyW3IubGVuZ3RoXT0nPGE6Zm9sSGxpbms+PGE6c3JnYkNsciB2YWw9IjgwMDA4MCIvPjwvYTpmb2xIbGluaz4nLHJbci5sZW5ndGhdPSI8L2E6Y2xyU2NoZW1lPiIscltyLmxlbmd0aF09JzxhOmZvbnRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLHJbci5sZW5ndGhdPSI8YTptYWpvckZvbnQ+IixyW3IubGVuZ3RoXT0nPGE6bGF0aW4gdHlwZWZhY2U9IkNhbWJyaWEiLz4nLHJbci5sZW5ndGhdPSc8YTplYSB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Y3MgdHlwZWZhY2U9IiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJKcGFuIiB0eXBlZmFjZT0i77yt77yzIO+8sOOCtOOCt+ODg+OCryIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5nIiB0eXBlZmFjZT0i66eR7J2AIOqzoOuUlSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIYW5zIiB0eXBlZmFjZT0i5a6L5L2TIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnQiIHR5cGVmYWNlPSLmlrDntLDmmI7pq5QiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQXJhYiIgdHlwZWZhY2U9IlRpbWVzIE5ldyBSb21hbiIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJIZWJyIiB0eXBlZmFjZT0iVGltZXMgTmV3IFJvbWFuIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iTW9vbEJvcmFuIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IktuZGEiIHR5cGVmYWNlPSJUdW5nYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJHdXJ1IiB0eXBlZmFjZT0iUmFhdmkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2FucyIgdHlwZWZhY2U9IkV1cGhlbWlhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkNoZXIiIHR5cGVmYWNlPSJQbGFudGFnZW5ldCBDaGVyb2tlZSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJZaWlpIiB0eXBlZmFjZT0iTWljcm9zb2Z0IFlpIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRpYnQiIHR5cGVmYWNlPSJNaWNyb3NvZnQgSGltYWxheWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGhhYSIgdHlwZWZhY2U9Ik1WIEJvbGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRGV2YSIgdHlwZWZhY2U9Ik1hbmdhbCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUZWx1IiB0eXBlZmFjZT0iR2F1dGFtaSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUYW1sIiB0eXBlZmFjZT0iTGF0aGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU3lyYyIgdHlwZWZhY2U9IkVzdHJhbmdlbG8gRWRlc3NhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik9yeWEiIHR5cGVmYWNlPSJLYWxpbmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1seW0iIHR5cGVmYWNlPSJLYXJ0aWthIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikxhb28iIHR5cGVmYWNlPSJEb2tDaGFtcGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iU2luaCIgdHlwZWZhY2U9Iklza29vbGEgUG90YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJNb25nIiB0eXBlZmFjZT0iTW9uZ29saWFuIEJhaXRpIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlZpZXQiIHR5cGVmYWNlPSJUaW1lcyBOZXcgUm9tYW4iLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVWlnaCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBVaWdodXIiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR2VvciIgdHlwZWZhY2U9IlN5bGZhZW4iLz4nLHJbci5sZW5ndGhdPSI8L2E6bWFqb3JGb250PiIscltyLmxlbmd0aF09IjxhOm1pbm9yRm9udD4iLHJbci5sZW5ndGhdPSc8YTpsYXRpbiB0eXBlZmFjZT0iQ2FsaWJyaSIvPicscltyLmxlbmd0aF09JzxhOmVhIHR5cGVmYWNlPSIiLz4nLHJbci5sZW5ndGhdPSc8YTpjcyB0eXBlZmFjZT0iIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkpwYW4iIHR5cGVmYWNlPSLvvK3vvLMg77yw44K044K344OD44KvIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbmciIHR5cGVmYWNlPSLrp5HsnYAg6rOg65SVIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkhhbnMiIHR5cGVmYWNlPSLlrovkvZMiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGFudCIgdHlwZWZhY2U9IuaWsOe0sOaYjumrlCIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJBcmFiIiB0eXBlZmFjZT0iQXJpYWwiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iSGViciIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRoYWkiIHR5cGVmYWNlPSJUYWhvbWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iRXRoaSIgdHlwZWZhY2U9Ik55YWxhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IkJlbmciIHR5cGVmYWNlPSJWcmluZGEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iR3VqciIgdHlwZWZhY2U9IlNocnV0aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJLaG1yIiB0eXBlZmFjZT0iRGF1blBlbmgiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iS25kYSIgdHlwZWZhY2U9IlR1bmdhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikd1cnUiIHR5cGVmYWNlPSJSYWF2aSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJDYW5zIiB0eXBlZmFjZT0iRXVwaGVtaWEiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iQ2hlciIgdHlwZWZhY2U9IlBsYW50YWdlbmV0IENoZXJva2VlIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IllpaWkiIHR5cGVmYWNlPSJNaWNyb3NvZnQgWWkgQmFpdGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVGlidCIgdHlwZWZhY2U9Ik1pY3Jvc29mdCBIaW1hbGF5YSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJUaGFhIiB0eXBlZmFjZT0iTVYgQm9saSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJEZXZhIiB0eXBlZmFjZT0iTWFuZ2FsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRlbHUiIHR5cGVmYWNlPSJHYXV0YW1pIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlRhbWwiIHR5cGVmYWNlPSJMYXRoYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTeXJjIiB0eXBlZmFjZT0iRXN0cmFuZ2VsbyBFZGVzc2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iT3J5YSIgdHlwZWZhY2U9IkthbGluZ2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTWx5bSIgdHlwZWZhY2U9IkthcnRpa2EiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iTGFvbyIgdHlwZWZhY2U9IkRva0NoYW1wYSIvPicscltyLmxlbmd0aF09JzxhOmZvbnQgc2NyaXB0PSJTaW5oIiB0eXBlZmFjZT0iSXNrb29sYSBQb3RhIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ik1vbmciIHR5cGVmYWNlPSJNb25nb2xpYW4gQmFpdGkiLz4nLHJbci5sZW5ndGhdPSc8YTpmb250IHNjcmlwdD0iVmlldCIgdHlwZWZhY2U9IkFyaWFsIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9IlVpZ2giIHR5cGVmYWNlPSJNaWNyb3NvZnQgVWlnaHVyIi8+JyxyW3IubGVuZ3RoXT0nPGE6Zm9udCBzY3JpcHQ9Ikdlb3IiIHR5cGVmYWNlPSJTeWxmYWVuIi8+JyxyW3IubGVuZ3RoXT0iPC9hOm1pbm9yRm9udD4iLHJbci5sZW5ndGhdPSI8L2E6Zm9udFNjaGVtZT4iLHJbci5sZW5ndGhdPSc8YTpmbXRTY2hlbWUgbmFtZT0iT2ZmaWNlIj4nLHJbci5sZW5ndGhdPSI8YTpmaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0nPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD4nLHJbci5sZW5ndGhdPSc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9IjEiPicscltyLmxlbmd0aF09IjxhOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSI1MDAwMCIvPjxhOnNhdE1vZCB2YWw9IjMwMDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMzUwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iMzcwMDAiLz48YTpzYXRNb2QgdmFsPSIzMDAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjEwMDAwMCI+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnRpbnQgdmFsPSIxNTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIxIi8+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjEwMDAwMCIvPjxhOnNoYWRlIHZhbD0iMTAwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMTMwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNTAwMDAiLz48YTpzaGFkZSB2YWw9IjEwMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpsaW4gYW5nPSIxNjIwMDAwMCIgc2NhbGVkPSIwIi8+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09IjwvYTpmaWxsU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6bG5TdHlsZUxzdD4iLHJbci5sZW5ndGhdPSc8YTpsbiB3PSI5NTI1IiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiPjxhOnNoYWRlIHZhbD0iOTUwMDAiLz48YTpzYXRNb2QgdmFsPSIxMDUwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPSJzb2xpZCIvPjwvYTpsbj4nLHJbci5sZW5ndGhdPSc8YTpsbiB3PSIyNTQwMCIgY2FwPSJmbGF0IiBjbXBkPSJzbmciIGFsZ249ImN0ciI+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9InNvbGlkIi8+PC9hOmxuPicscltyLmxlbmd0aF09JzxhOmxuIHc9IjM4MTAwIiBjYXA9ImZsYXQiIGNtcGQ9InNuZyIgYWxnbj0iY3RyIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD0icGhDbHIiLz48L2E6c29saWRGaWxsPjxhOnByc3REYXNoIHZhbD0ic29saWQiLz48L2E6bG4+JyxyW3IubGVuZ3RoXT0iPC9hOmxuU3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGVMc3Q+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPGE6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09JzxhOm91dGVyU2hkdyBibHVyUmFkPSI0MDAwMCIgZGlzdD0iMjAwMDAiIGRpcj0iNTQwMDAwMCIgcm90V2l0aFNoYXBlPSIwIj48YTpzcmdiQ2xyIHZhbD0iMDAwMDAwIj48YTphbHBoYSB2YWw9IjM4MDAwIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0THN0PiIscltyLmxlbmd0aF09IjwvYTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RTdHlsZT4iLHJbci5sZW5ndGhdPSI8YTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0nPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9IjQwMDAwIiBkaXN0PSIyMzAwMCIgZGlyPSI1NDAwMDAwIiByb3RXaXRoU2hhcGU9IjAiPjxhOnNyZ2JDbHIgdmFsPSIwMDAwMDAiPjxhOmFscGhhIHZhbD0iMzUwMDAiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3PicscltyLmxlbmd0aF09IjwvYTplZmZlY3RMc3Q+IixyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdFN0eWxlPiIscltyLmxlbmd0aF09IjxhOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpvdXRlclNoZHcgYmx1clJhZD0iNDAwMDAiIGRpc3Q9IjIzMDAwIiBkaXI9IjU0MDAwMDAiIHJvdFdpdGhTaGFwZT0iMCI+PGE6c3JnYkNsciB2YWw9IjAwMDAwMCI+PGE6YWxwaGEgdmFsPSIzNTAwMCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+JyxyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdExzdD4iLHJbci5sZW5ndGhdPSc8YTpzY2VuZTNkPjxhOmNhbWVyYSBwcnN0PSJvcnRob2dyYXBoaWNGcm9udCI+PGE6cm90IGxhdD0iMCIgbG9uPSIwIiByZXY9IjAiLz48L2E6Y2FtZXJhPjxhOmxpZ2h0UmlnIHJpZz0idGhyZWVQdCIgZGlyPSJ0Ij48YTpyb3QgbGF0PSIwIiBsb249IjAiIHJldj0iMTIwMDAwMCIvPjwvYTpsaWdodFJpZz48L2E6c2NlbmUzZD4nLHJbci5sZW5ndGhdPSc8YTpzcDNkPjxhOmJldmVsVCB3PSI2MzUwMCIgaD0iMjU0MDAiLz48L2E6c3AzZD4nLHJbci5sZW5ndGhdPSI8L2E6ZWZmZWN0U3R5bGU+IixyW3IubGVuZ3RoXT0iPC9hOmVmZmVjdFN0eWxlTHN0PiIscltyLmxlbmd0aF09IjxhOmJnRmlsbFN0eWxlTHN0PiIscltyLmxlbmd0aF09JzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPSJwaENsciIvPjwvYTpzb2xpZEZpbGw+JyxyW3IubGVuZ3RoXT0nPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPSIxIj4nLHJbci5sZW5ndGhdPSI8YTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTp0aW50IHZhbD0iNDAwMDAiLz48YTpzYXRNb2QgdmFsPSIzNTAwMDAiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nLHJbci5sZW5ndGhdPSc8YTpncyBwb3M9IjQwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjQ1MDAwIi8+PGE6c2hhZGUgdmFsPSI5OTAwMCIvPjxhOnNhdE1vZCB2YWw9IjM1MDAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09JzxhOmdzIHBvcz0iMTAwMDAwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6c2hhZGUgdmFsPSIyMDAwMCIvPjxhOnNhdE1vZCB2YWw9IjI1NTAwMCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPicscltyLmxlbmd0aF09IjwvYTpnc0xzdD4iLHJbci5sZW5ndGhdPSc8YTpwYXRoIHBhdGg9ImNpcmNsZSI+PGE6ZmlsbFRvUmVjdCBsPSI1MDAwMCIgdD0iLTgwMDAwIiByPSI1MDAwMCIgYj0iMTgwMDAwIi8+PC9hOnBhdGg+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09JzxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT0iMSI+JyxyW3IubGVuZ3RoXT0iPGE6Z3NMc3Q+IixyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIwIj48YTpzY2hlbWVDbHIgdmFsPSJwaENsciI+PGE6dGludCB2YWw9IjgwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMzAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0nPGE6Z3MgcG9zPSIxMDAwMDAiPjxhOnNjaGVtZUNsciB2YWw9InBoQ2xyIj48YTpzaGFkZSB2YWw9IjMwMDAwIi8+PGE6c2F0TW9kIHZhbD0iMjAwMDAwIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+JyxyW3IubGVuZ3RoXT0iPC9hOmdzTHN0PiIscltyLmxlbmd0aF09JzxhOnBhdGggcGF0aD0iY2lyY2xlIj48YTpmaWxsVG9SZWN0IGw9IjUwMDAwIiB0PSI1MDAwMCIgcj0iNTAwMDAiIGI9IjUwMDAwIi8+PC9hOnBhdGg+JyxyW3IubGVuZ3RoXT0iPC9hOmdyYWRGaWxsPiIscltyLmxlbmd0aF09IjwvYTpiZ0ZpbGxTdHlsZUxzdD4iLHJbci5sZW5ndGhdPSI8L2E6Zm10U2NoZW1lPiIscltyLmxlbmd0aF09IjwvYTp0aGVtZUVsZW1lbnRzPiIscltyLmxlbmd0aF09IjxhOm9iamVjdERlZmF1bHRzPiIscltyLmxlbmd0aF09IjxhOnNwRGVmPiIscltyLmxlbmd0aF09JzxhOnNwUHIvPjxhOmJvZHlQci8+PGE6bHN0U3R5bGUvPjxhOnN0eWxlPjxhOmxuUmVmIGlkeD0iMSI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD0iMyI+PGE6c2NoZW1lQ2xyIHZhbD0iYWNjZW50MSIvPjwvYTpmaWxsUmVmPjxhOmVmZmVjdFJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZWZmZWN0UmVmPjxhOmZvbnRSZWYgaWR4PSJtaW5vciI+PGE6c2NoZW1lQ2xyIHZhbD0ibHQxIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPicscltyLmxlbmd0aF09IjwvYTpzcERlZj4iLHJbci5sZW5ndGhdPSI8YTpsbkRlZj4iLHJbci5sZW5ndGhdPSc8YTpzcFByLz48YTpib2R5UHIvPjxhOmxzdFN0eWxlLz48YTpzdHlsZT48YTpsblJlZiBpZHg9IjIiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6bG5SZWY+PGE6ZmlsbFJlZiBpZHg9IjAiPjxhOnNjaGVtZUNsciB2YWw9ImFjY2VudDEiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PSIxIj48YTpzY2hlbWVDbHIgdmFsPSJhY2NlbnQxIi8+PC9hOmVmZmVjdFJlZj48YTpmb250UmVmIGlkeD0ibWlub3IiPjxhOnNjaGVtZUNsciB2YWw9InR4MSIvPjwvYTpmb250UmVmPjwvYTpzdHlsZT4nLHJbci5sZW5ndGhdPSI8L2E6bG5EZWY+IixyW3IubGVuZ3RoXT0iPC9hOm9iamVjdERlZmF1bHRzPiIscltyLmxlbmd0aF09IjxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz4iLHJbci5sZW5ndGhdPSI8L2E6dGhlbWU+IixyLmpvaW4oIiIpfWZ1bmN0aW9uIFpoKGUsYSxyKXt2YXIgdD1lLmwrYSxuPWUucmVhZF9zaGlmdCg0KTtpZihuIT09MTI0MjI2KXtpZighci5jZWxsU3R5bGVzKXtlLmw9dDtyZXR1cm59dmFyIGk9ZS5zbGljZShlLmwpO2UubD10O3ZhciBmO3RyeXtmPW1pKGkse3R5cGU6ImFycmF5In0pfWNhdGNoe3JldHVybn12YXIgcz1scihmLCJ0aGVtZS90aGVtZS90aGVtZTEueG1sIiwhMCk7aWYocylyZXR1cm4gR3MocyxyKX19ZnVuY3Rpb24gcWgoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCg0KX1mdW5jdGlvbiBRaChlKXt2YXIgYT17fTtzd2l0Y2goYS54Y2xyVHlwZT1lLnJlYWRfc2hpZnQoMiksYS5uVGludFNoYWRlPWUucmVhZF9zaGlmdCgyLCJpIiksYS54Y2xyVHlwZSl7Y2FzZSAwOmUubCs9NDticmVhaztjYXNlIDE6YS54Y2xyVmFsdWU9ZTEoZSw0KTticmVhaztjYXNlIDI6YS54Y2xyVmFsdWU9dnMoZSk7YnJlYWs7Y2FzZSAzOmEueGNsclZhbHVlPXFoKGUpO2JyZWFrO2Nhc2UgNDplLmwrPTQ7YnJlYWt9cmV0dXJuIGUubCs9OCxhfWZ1bmN0aW9uIGUxKGUsYSl7dmFyIHI9ZS5sK2EsdD1lLnJlYWRfc2hpZnQoMikmMTI3O3JldHVybiBlLmw9cix0fWZ1bmN0aW9uIHIxKGUsYSl7cmV0dXJuIHlyKGUsYSl9ZnVuY3Rpb24gYTEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLTQsdD1bYV07c3dpdGNoKGEpe2Nhc2UgNDpjYXNlIDU6Y2FzZSA3OmNhc2UgODpjYXNlIDk6Y2FzZSAxMDpjYXNlIDExOmNhc2UgMTM6dFsxXT1RaChlKTticmVhaztjYXNlIDY6dFsxXT1yMShlLHIpO2JyZWFrO2Nhc2UgMTQ6Y2FzZSAxNTp0WzFdPWUucmVhZF9zaGlmdChyPT09MT8xOjIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRXh0UHJvcCB0eXBlOiAiK2ErIiAiK3IpfXJldHVybiB0fWZ1bmN0aW9uIHQxKGUsYSl7dmFyIHI9ZS5sK2E7ZS5sKz0yO3ZhciB0PWUucmVhZF9zaGlmdCgyKTtlLmwrPTI7Zm9yKHZhciBuPWUucmVhZF9zaGlmdCgyKSxpPVtdO24tLSA+MDspaS5wdXNoKGExKGUsci1lLmwpKTtyZXR1cm57aXhmZTp0LGV4dDppfX1mdW5jdGlvbiBuMShlLGEpe2UmJihlLmRhdGF8fChlLmRhdGE9e30pLGEuZm9yRWFjaChmdW5jdGlvbihyKXtzd2l0Y2goclswXSl7Y2FzZSA0OmUuZGF0YS54ZmV4dEZvcmU9clsxXTticmVhaztjYXNlIDU6ZS5kYXRhLnhmZXh0QmFjaz1yWzFdO2JyZWFrO2Nhc2UgNjplLmRhdGEuZ3JhZGllbnRGaWxsPXJbMV07YnJlYWs7Y2FzZSA3OmUuZGF0YS54ZmV4dFRvcD1yWzFdO2JyZWFrO2Nhc2UgODplLmRhdGEueGZleHRCb3R0b209clsxXTticmVhaztjYXNlIDk6ZS5kYXRhLnhmZXh0TGVmdD1yWzFdO2JyZWFrO2Nhc2UgMTA6ZS5kYXRhLnhmZXh0UmlnaHQ9clsxXTticmVhaztjYXNlIDExOmUuZGF0YS54ZmV4dERpYWc9clsxXTticmVhaztjYXNlIDEzOmUueGZleHRGb250PXJbMV07YnJlYWs7Y2FzZSAxNDplLmZvbnRTY2hlbWU9clsxXTticmVhaztjYXNlIDE1OmUuZGF0YS5jSW5kZW50PXJbMV07YnJlYWt9fSkpfWZ1bmN0aW9uIGkxKGUsYSl7cmV0dXJue2ZsYWdzOmUucmVhZF9zaGlmdCg0KSx2ZXJzaW9uOmUucmVhZF9zaGlmdCg0KSxuYW1lOm1yKGUpfX1mdW5jdGlvbiBzMShlKXtmb3IodmFyIGE9W10scj1lLnJlYWRfc2hpZnQoNCk7ci0tID4wOylhLnB1c2goW2UucmVhZF9zaGlmdCg0KSxlLnJlYWRfc2hpZnQoNCldKTtyZXR1cm4gYX1mdW5jdGlvbiBmMShlKXtyZXR1cm4gZS5sKz00LGUucmVhZF9zaGlmdCg0KSE9MH1mdW5jdGlvbiBjMShlLGEscil7dmFyIHQ9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119LG49cnx8e30saT1bXSxmPSExLHM9MjtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNTg6YnJlYWs7Y2FzZSA1OTpicmVhaztjYXNlIDMzNTp0LlR5cGVzLnB1c2goe25hbWU6Yy5uYW1lfSk7YnJlYWs7Y2FzZSA1MTpjLmZvckVhY2goZnVuY3Rpb24odSl7cz09MT90LkNlbGwucHVzaCh7dHlwZTp0LlR5cGVzW3VbMF0tMV0ubmFtZSxpbmRleDp1WzFdfSk6cz09MCYmdC5WYWx1ZS5wdXNoKHt0eXBlOnQuVHlwZXNbdVswXS0xXS5uYW1lLGluZGV4OnVbMV19KX0pO2JyZWFrO2Nhc2UgMzM3OnM9Yz8xOjA7YnJlYWs7Y2FzZSAzMzg6cz0yO2JyZWFrO2Nhc2UgMzU6aS5wdXNoKGwpLGY9ITA7YnJlYWs7Y2FzZSAzNjppLnBvcCgpLGY9ITE7YnJlYWs7ZGVmYXVsdDppZighby5UKXtpZighZnx8bi5XVEYmJmlbaS5sZW5ndGgtMV0hPTM1KXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCByZWNvcmQgMHgiK2wudG9TdHJpbmcoMTYpKX19fSksdH1mdW5jdGlvbiBvMShlLGEscil7dmFyIHQ9e1R5cGVzOltdLENlbGw6W10sVmFsdWU6W119O2lmKCFlKXJldHVybiB0O3ZhciBuPSExLGk9MixmO3JldHVybiBlLnJlcGxhY2UobnIsZnVuY3Rpb24ocyl7dmFyIGM9b2Uocyk7c3dpdGNoKEFyKGNbMF0pKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxtZXRhZGF0YSI6Y2FzZSI8L21ldGFkYXRhPiI6YnJlYWs7Y2FzZSI8bWV0YWRhdGFUeXBlcyI6Y2FzZSI8L21ldGFkYXRhVHlwZXM+IjpicmVhaztjYXNlIjxtZXRhZGF0YVR5cGUiOnQuVHlwZXMucHVzaCh7bmFtZTpjLm5hbWV9KTticmVhaztjYXNlIjwvbWV0YWRhdGFUeXBlPiI6YnJlYWs7Y2FzZSI8ZnV0dXJlTWV0YWRhdGEiOmZvcih2YXIgbz0wO288dC5UeXBlcy5sZW5ndGg7KytvKXQuVHlwZXNbb10ubmFtZT09Yy5uYW1lJiYoZj10LlR5cGVzW29dKTticmVhaztjYXNlIjwvZnV0dXJlTWV0YWRhdGE+IjpicmVhaztjYXNlIjxiaz4iOmJyZWFrO2Nhc2UiPC9iaz4iOmJyZWFrO2Nhc2UiPHJjIjppPT0xP3QuQ2VsbC5wdXNoKHt0eXBlOnQuVHlwZXNbYy50LTFdLm5hbWUsaW5kZXg6K2Mudn0pOmk9PTAmJnQuVmFsdWUucHVzaCh7dHlwZTp0LlR5cGVzW2MudC0xXS5uYW1lLGluZGV4OitjLnZ9KTticmVhaztjYXNlIjwvcmM+IjpicmVhaztjYXNlIjxjZWxsTWV0YWRhdGEiOmk9MTticmVhaztjYXNlIjwvY2VsbE1ldGFkYXRhPiI6aT0yO2JyZWFrO2Nhc2UiPHZhbHVlTWV0YWRhdGEiOmk9MDticmVhaztjYXNlIjwvdmFsdWVNZXRhZGF0YT4iOmk9MjticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8ZXh0IjpuPSEwO2JyZWFrO2Nhc2UiPC9leHQ+IjpuPSExO2JyZWFrO2Nhc2UiPHJ2YiI6aWYoIWYpYnJlYWs7Zi5vZmZzZXRzfHwoZi5vZmZzZXRzPVtdKSxmLm9mZnNldHMucHVzaCgrYy5pKTticmVhaztkZWZhdWx0OmlmKCFuJiZyPy5XVEYpdGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgIitjWzBdKyIgaW4gbWV0YWRhdGEiKX1yZXR1cm4gc30pLHR9ZnVuY3Rpb24gbDEoZSl7dmFyIGE9W107aWYoIWUpcmV0dXJuIGE7dmFyIHI9MTtyZXR1cm4oZS5tYXRjaChucil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPW9lKHQpO3N3aXRjaChuWzBdKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjxjYWxjQ2hhaW4iOmNhc2UiPGNhbGNDaGFpbj4iOmNhc2UiPC9jYWxjQ2hhaW4+IjpicmVhaztjYXNlIjxjIjpkZWxldGUgblswXSxuLmk/cj1uLmk6bi5pPXIsYS5wdXNoKG4pO2JyZWFrfX0pLGF9ZnVuY3Rpb24gdTEoZSl7dmFyIGE9e307YS5pPWUucmVhZF9zaGlmdCg0KTt2YXIgcj17fTtyLnI9ZS5yZWFkX3NoaWZ0KDQpLHIuYz1lLnJlYWRfc2hpZnQoNCksYS5yPURlKHIpO3ZhciB0PWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gdCYyJiYoYS5sPSIxIiksdCY4JiYoYS5hPSIxIiksYX1mdW5jdGlvbiBoMShlLGEscil7dmFyIHQ9W107cmV0dXJuIHZhKGUsZnVuY3Rpb24oaSxmLHMpe3N3aXRjaChzKXtjYXNlIDYzOnQucHVzaChpKTticmVhaztkZWZhdWx0OmlmKCFmLlQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrcy50b1N0cmluZygxNikpfX0pLHR9ZnVuY3Rpb24gZGcoKXt9ZnVuY3Rpb24geDEoZSxhLHIsdCl7aWYoIWUpcmV0dXJuIGU7dmFyIG49dHx8e30saT0hMTt2YShlLGZ1bmN0aW9uKHMsYyxvKXtzd2l0Y2gobyl7Y2FzZSAzNTk6Y2FzZSAzNjM6Y2FzZSAzNjQ6Y2FzZSAzNjY6Y2FzZSAzNjc6Y2FzZSAzNjg6Y2FzZSAzNjk6Y2FzZSAzNzA6Y2FzZSAzNzE6Y2FzZSA0NzI6Y2FzZSA1Nzc6Y2FzZSA1Nzg6Y2FzZSA1Nzk6Y2FzZSA1ODA6Y2FzZSA1ODE6Y2FzZSA1ODI6Y2FzZSA1ODM6Y2FzZSA1ODQ6Y2FzZSA1ODU6Y2FzZSA1ODY6Y2FzZSA1ODc6Y2FzZSA1MTA4OmJyZWFrO2Nhc2UgMzU6aT0hMDticmVhaztjYXNlIDM2Omk9ITE7YnJlYWs7ZGVmYXVsdDppZighYy5UKXtpZighaXx8bi5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrby50b1N0cmluZygxNikpfX19LG4pfWZ1bmN0aW9uIFhzKGUsYSl7aWYoIWUpcmV0dXJue2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdLHJhdzoiIn07dmFyIHI9e2NoYXJ0czpbXSxpbWFnZXM6W10sc2hhcGVzOltdLHJhdzplfTthfHwoYT17IiFpZCI6e319KTt2YXIgdD0vPCg/Olx3KzopPyh0d29DZWxsQW5jaG9yfG9uZUNlbGxBbmNob3J8YWJzb2x1dGVBbmNob3IpXGJbXj5dKj5bXHNcU10qPzxcLyg/Olx3KzopP1wxPi9nLG49ZS5tYXRjaCh0KXx8W2VdO3JldHVybiBuLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIGY9ZDEoaSk7KGkubWF0Y2goLzxjOmNoYXJ0XGJbXjw+XSpyOmlkPSIoW148PiJdKikiL2cpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgbz1jLm1hdGNoKC9yOmlkPSIoW148PiJdKikiLyk7aWYobyl7dmFyIGw9YVsiIWlkIl1bb1sxXV18fHt9O3IuY2hhcnRzLnB1c2goe2lkOm9bMV0scmVsOmwsdGFyZ2V0OmwuVGFyZ2V0LGFuY2hvcjpmfSl9fSksKGkubWF0Y2goLzxhOmJsaXBcYltePD5dKig/OnI6ZW1iZWR8cjpsaW5rKT0iKFtePD4iXSopIi9nKXx8W10pLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIG89Yy5tYXRjaCgvKD86cjplbWJlZHxyOmxpbmspPSIoW148PiJdKikiLyk7aWYobyl7dmFyIGw9YVsiIWlkIl1bb1sxXV18fHt9O3IuaW1hZ2VzLnB1c2goe2lkOm9bMV0scmVsOmwsdGFyZ2V0OmwuVGFyZ2V0LGFuY2hvcjpmfSl9fSk7dmFyIHM9djEoaSk7cyYmci5zaGFwZXMucHVzaCh7dGV4dDpzLGFuY2hvcjpmLHJhdzppfSl9KSxyLmNoYXJ0PXIuY2hhcnRzWzBdJiZyLmNoYXJ0c1swXS50YXJnZXQscn1mdW5jdGlvbiB6cyhlLGEpe3ZhciByPUxlKGUsYSksdD1yJiZyWzFdfHwiIjtmdW5jdGlvbiBuKGkpe3ZhciBmPUxlKHQsaSk7cmV0dXJuIGYmJmZbMV0hPW51bGw/cGFyc2VJbnQoZlsxXSwxMCk6MH1yZXR1cm57Y29sOm4oImNvbCIpLGNvbE9mZjpuKCJjb2xPZmYiKSxyb3c6bigicm93Iikscm93T2ZmOm4oInJvd09mZiIpfX1mdW5jdGlvbiBkMShlKXt2YXIgYT0oZS5tYXRjaCgvXjwoPzpcdys6KT8oXHcrKS8pfHxbXSlbMV18fCJhbmNob3IiLHI9e3R5cGU6YX07KGUuaW5kZXhPZigiPHhkcjpmcm9tIik+PTB8fGUuaW5kZXhPZigiPGZyb20iKT49MCkmJihyLmZyb209enMoZSwiZnJvbSIpKSwoZS5pbmRleE9mKCI8eGRyOnRvIik+PTB8fGUuaW5kZXhPZigiPHRvIik+PTApJiYoci50bz16cyhlLCJ0byIpKTt2YXIgdD1lLm1hdGNoKC88KD86XHcrOik/cG9zXGJbXjw+XSpcLz4vKTtpZih0KXt2YXIgbj1vZSh0WzBdKTtyLnBvcz17eDpuLng/cGFyc2VJbnQobi54LDEwKTowLHk6bi55P3BhcnNlSW50KG4ueSwxMCk6MH19dmFyIGk9ZS5tYXRjaCgvPCg/Olx3KzopP2V4dFxiW148Pl0qXC8+Lyk7aWYoaSl7dmFyIGY9b2UoaVswXSk7ci5leHQ9e2N4OmYuY3g/cGFyc2VJbnQoZi5jeCwxMCk6MCxjeTpmLmN5P3BhcnNlSW50KGYuY3ksMTApOjB9fXJldHVybiByfWZ1bmN0aW9uIHYxKGUpe3ZhciBhPVtdO3JldHVybihlLm1hdGNoKC88YTp0XGJbXj5dKj5bXHNcU10qPzxcL2E6dD4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2EucHVzaChDZShyLnJlcGxhY2UoLzxbXj5dKj4vZywiIikpKX0pLGEuam9pbigiIil9ZnVuY3Rpb24gcDEoZSxhLHIpe3ZhciB0PWUuc2xpY2UoZS5sLGUubCthKTtyZXR1cm4gZS5sKz1hLCFyfHwhci5kcmF3aW5ncyYmIXIuY2hhcnRzP3tyYXc6dCxibGlwczpbXSxzaGFwZXM6W10saW1hZ2VzOltdLGNoYXJ0czpbXSxncm91cHM6ITB9OiRzKHQsITApfWZ1bmN0aW9uIGcxKGUsYSxyKXt2YXIgdD1lLnNsaWNlKGUubCxlLmwrYSk7cmV0dXJuIGUubCs9YSwhcnx8IXIuZHJhd2luZ3MmJiFyLmNoYXJ0cz97cmF3OnQsYmxpcHM6W10sc2hhcGVzOltdLGltYWdlczpbXSxjaGFydHM6W10sZ3JvdXBzOiExfTokcyh0LCExKX1mdW5jdGlvbiBNcihlLGEpe3JldHVybiBlW2FdfGVbYSsxXTw8OH1mdW5jdGlvbiBodChlLGEpe3JldHVybihlW2FdfGVbYSsxXTw8OHxlW2ErMl08PDE2fGVbYSszXTw8MjQpPj4+MH1mdW5jdGlvbiAkcyhlLGEpe3ZhciByPXtyYXc6ZSxibGlwczpbXSxzaGFwZXM6W10saW1hZ2VzOltdLGNoYXJ0czpbXSxncm91cHM6ISFhfSx0PXtvdXQ6cixjdXJyZW50Om51bGx9O3RyeXttbihlLDAsZS5sZW5ndGgsdCl9Y2F0Y2gobil7ci5lcnJvcj1uLm1lc3NhZ2V8fFN0cmluZyhuKX1yZXR1cm4gcn1mdW5jdGlvbiBtbihlLGEscix0KXtmb3IodmFyIG49YTtuKzg8PXImJm4rODw9ZS5sZW5ndGg7KXt2YXIgaT1NcihlLG4pLGY9TXIoZSxuKzIpLHM9aHQoZSxuKzQpLGM9aSYxNSxvPWk+PjQsbD1uKzgsdT1sK3M7aWYodT5lLmxlbmd0aCYmKHU9ZS5sZW5ndGgpLGY9PTYxNDQ0KXt2YXIgeD17cmF3OmUuc2xpY2Uobix1KSxwcm9wczp7fX07dC5vdXQuc2hhcGVzLnB1c2goeCk7dmFyIGg9dC5jdXJyZW50O3QuY3VycmVudD14LG1uKGUsbCx1LHQpLHQuY3VycmVudD1ofWVsc2UgZj09NjE0NDc/dC5vdXQuYmxpcHMucHVzaChrMShlLGwsdSxvKSk6Zj09NjE0NTAmJnQuY3VycmVudD8odC5jdXJyZW50LnNwaWQ9aHQoZSxsKSx0LmN1cnJlbnQuZmxhZ3M9aHQoZSxsKzQpKTpmPT02MTQ1MSYmdC5jdXJyZW50Pyh0LmN1cnJlbnQucHJvcHM9bTEoZSxsLHUsbyksdC5jdXJyZW50LnByb3BzLnBpYiE9bnVsbCYmKHQuY3VycmVudC5ibGlwSWQ9dC5jdXJyZW50LnByb3BzLnBpYikpOmY9PTYxNDU2JiZ0LmN1cnJlbnQ/dC5jdXJyZW50LmFuY2hvcj1fMShlLGwsdSk6Zj09NjE0NTcmJnQuY3VycmVudD90LmN1cnJlbnQuY2xpZW50RGF0YT1lLnNsaWNlKGwsdSk6Yz09MTUmJm1uKGUsbCx1LHQpO249dX19ZnVuY3Rpb24gbTEoZSxhLHIsdCl7Zm9yKHZhciBuPXt9LGk9W10sZj1hLHM9MDtzPHQmJmYrNjw9cjsrK3MsZis9Nil7dmFyIGM9TXIoZSxmKSxvPWh0KGUsZisyKSxsPWMmMTYzODM7bltsXT1vLGMmMTYzODQmJmkucHVzaChbbCxvXSksbD09MjYwJiYobi5waWI9byksbD09MjYxJiYobi5waWJOYW1lPW8pLGw9PTg5NiYmKG4uZmlsbENvbG9yPW8pLGw9PTg5NyYmKG4uZmlsbE9wYWNpdHk9byksbD09OTU5JiYobi5saW5lQ29sb3I9byl9cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbih1KXtmK3VbMV08PXImJihuWyJjb21wbGV4XyIrdVswXV09ZS5zbGljZShmLGYrdVsxXSkpLGYrPXVbMV19KSxufWZ1bmN0aW9uIF8xKGUsYSxyKXtpZihyLWE8MTgpcmV0dXJue307dmFyIHQ9YSxuPU1yKGUsdCk7dCs9Mjt2YXIgaT1NcihlLHQpLGY9TXIoZSx0KzIpLHM9TXIoZSx0KzQpLGM9TXIoZSx0KzYpO3QrPTg7dmFyIG89TXIoZSx0KSxsPU1yKGUsdCsyKSx1PU1yKGUsdCs0KSx4PU1yKGUsdCs2KTtyZXR1cm57dHlwZToidHdvQ2VsbEFuY2hvciIsZmxhZ3M6bixmcm9tOntjb2w6aSxjb2xPZmY6Zio5NTI1LzEwMjQscm93OnMscm93T2ZmOmMqOTUyNS8yNTZ9LHRvOntjb2w6byxjb2xPZmY6bCo5NTI1LzEwMjQscm93OnUscm93T2ZmOngqOTUyNS8yNTZ9fX1mdW5jdGlvbiBLcyhlLGEscil7Zm9yKHZhciB0PWE7dCs4PD1yOysrdCl7aWYoZVt0XT09MTM3JiZlW3QrMV09PTgwJiZlW3QrMl09PTc4JiZlW3QrM109PTcxKXJldHVyblt0LCJpbWFnZS9wbmciXTtpZihlW3RdPT0yNTUmJmVbdCsxXT09MjE2JiZlW3QrMl09PTI1NSlyZXR1cm5bdCwiaW1hZ2UvanBlZyJdO2lmKGVbdF09PTY2JiZlW3QrMV09PTc3KXJldHVyblt0LCJpbWFnZS9ibXAiXX1yZXR1cm5bYSwiIl19ZnVuY3Rpb24gazEoZSxhLHIsdCl7dmFyIG49e2luZGV4OnQscmF3OmUuc2xpY2UoYSxyKX07aWYoci1hPDM2KXJldHVybiBuO24uYnRXaW4zMj1lW2FdLG4uYnRNYWNPUz1lW2ErMV0sbi5zaXplPWh0KGUsYSsyMCksbi5jUmVmPWh0KGUsYSsyNCk7dmFyIGk9YSszNjtpZihpKzg8PXIpe24uYmxpcFR5cGU9TXIoZSxpKzIpO3ZhciBmPWkrOCxzPXIsYz1LcyhlLGYscyk7Y1sxXSYmKG4uY29udGVudFR5cGU9Y1sxXSxuLmRhdGE9ZS5zbGljZShjWzBdLHMpLG4uZGF0YVVSST0iZGF0YToiK24uY29udGVudFR5cGUrIjtiYXNlNjQsIit6MChuLmRhdGEpKX1yZXR1cm4gbn1mdW5jdGlvbiB3MShlLGEscil7dmFyIHQ9MDsoZGkoZSwiKD86c2hhcGV8cmVjdCkiKXx8W10pLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGk9IiIsZj0hMCxzPS0xLGM9LTEsbz0tMTtzd2l0Y2gobi5yZXBsYWNlKG5yLGZ1bmN0aW9uKHUseCl7dmFyIGg9b2UodSk7c3dpdGNoKEFyKGhbMF0pKXtjYXNlIjxDbGllbnREYXRhIjpoLk9iamVjdFR5cGUmJihpPWguT2JqZWN0VHlwZSk7YnJlYWs7Y2FzZSI8VmlzaWJsZSI6Y2FzZSI8VmlzaWJsZS8+IjpmPSExO2JyZWFrO2Nhc2UiPFJvdyI6Y2FzZSI8Um93PiI6cz14K3UubGVuZ3RoO2JyZWFrO2Nhc2UiPC9Sb3c+IjpjPStuLnNsaWNlKHMseCkudHJpbSgpO2JyZWFrO2Nhc2UiPENvbHVtbiI6Y2FzZSI8Q29sdW1uPiI6cz14K3UubGVuZ3RoO2JyZWFrO2Nhc2UiPC9Db2x1bW4+IjpvPStuLnNsaWNlKHMseCkudHJpbSgpO2JyZWFrfXJldHVybiIifSksaSl7Y2FzZSJOb3RlIjp2YXIgbD1KdChhLGM+PTAmJm8+PTA/RGUoe3I6YyxjOm99KTpyW3RdLnJlZik7bC5jJiYobC5jLmhpZGRlbj1mKSwrK3Q7YnJlYWt9fSl9ZnVuY3Rpb24ganMoZSxhLHIsdCl7dmFyIG49ZVsiIWRhdGEiXSE9bnVsbCxpO2EuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcz1ncihmLnJlZik7aWYoIShzLnI8MHx8cy5jPDApKXtpZihuPyhlWyIhZGF0YSJdW3Mucl18fChlWyIhZGF0YSJdW3Mucl09W10pLGk9ZVsiIWRhdGEiXVtzLnJdW3MuY10pOmk9ZVtmLnJlZl0sIWkpe2k9e3Q6InoifSxuP2VbIiFkYXRhIl1bcy5yXVtzLmNdPWk6ZVtmLnJlZl09aTt2YXIgYz1aZShlWyIhcmVmIl18fCJCRFdHTzEwMDAwMDE6QTEiKTtjLnMucj5zLnImJihjLnMucj1zLnIpLGMuZS5yPHMuciYmKGMuZS5yPXMuciksYy5zLmM+cy5jJiYoYy5zLmM9cy5jKSxjLmUuYzxzLmMmJihjLmUuYz1zLmMpO3ZhciBvPUllKGMpO2VbIiFyZWYiXT1vfWkuY3x8KGkuYz1bXSk7dmFyIGw9e2E6Zi5hdXRob3IsdDpmLnQscjpmLnIsVDpyfTtmLmgmJihsLmg9Zi5oKTtmb3IodmFyIHU9aS5jLmxlbmd0aC0xO3U+PTA7LS11KXtpZighciYmaS5jW3VdLlQpcmV0dXJuO3ImJiFpLmNbdV0uVCYmaS5jLnNwbGljZSh1LDEpfWlmKHImJnQpe2Zvcih1PTA7dTx0Lmxlbmd0aDsrK3UpaWYobC5hPT10W3VdLmlkKXtsLmE9dFt1XS5uYW1lfHxsLmE7YnJlYWt9fWkuYy5wdXNoKGwpfX0pfWZ1bmN0aW9uIEYxKGUsYSl7aWYoZS5tYXRjaCgvPCg/Olx3KzopP2NvbW1lbnRzICpcLz4vKSlyZXR1cm5bXTt2YXIgcj1bXSx0PVtdLG49TGUoZSwiYXV0aG9ycyIpO24mJm5bMV0mJm5bMV0uc3BsaXQoLzxcL1x3Kjo/YXV0aG9yPi8pLmZvckVhY2goZnVuY3Rpb24oZil7aWYoIShmPT09IiJ8fGYudHJpbSgpPT09IiIpKXt2YXIgcz1mLm1hdGNoKC88KD86XHcrOik/YXV0aG9yW148Pl0qPiguKikvKTtzJiZyLnB1c2goc1sxXSl9fSk7dmFyIGk9TGUoZSwiY29tbWVudExpc3QiKTtyZXR1cm4gaSYmaVsxXSYmaVsxXS5zcGxpdCgvPFwvXHcqOj9jb21tZW50Pi8pLmZvckVhY2goZnVuY3Rpb24oZil7aWYoIShmPT09IiJ8fGYudHJpbSgpPT09IiIpKXt2YXIgcz1mLm1hdGNoKC88KD86XHcrOik/Y29tbWVudFtePD5dKj4vKTtpZihzKXt2YXIgYz1vZShzWzBdKSxvPXthdXRob3I6Yy5hdXRob3JJZCYmcltjLmF1dGhvcklkXXx8InNoZWV0anNnaG9zdCIscmVmOmMucmVmLGd1aWQ6Yy5ndWlkfSxsPWdyKGMucmVmKTtpZighKGEuc2hlZXRSb3dzJiZhLnNoZWV0Um93czw9bC5yKSl7dmFyIHU9TGUoZiwidGV4dCIpLHg9ISF1JiYhIXVbMV0mJmhuKHVbMV0pfHx7cjoiIix0OiIiLGg6IiJ9O28ucj14LnIseC5yPT0iPHQ+PC90PiImJih4LnQ9eC5oPSIiKSxvLnQ9KHgudHx8IiIpLnJlcGxhY2UoL1xyXG4vZyxgCmApLnJlcGxhY2UoL1xyL2csYApgKSxhLmNlbGxIVE1MJiYoby5oPXguaCksdC5wdXNoKG8pfX19fSksdH1mdW5jdGlvbiBUMShlLGEpe3ZhciByPVtdLHQ9ITEsbj17fSxpPTA7cmV0dXJuIGUucmVwbGFjZShucixmdW5jdGlvbihzLGMpe3ZhciBvPW9lKHMpO3N3aXRjaChBcihvWzBdKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8VGhyZWFkZWRDb21tZW50cyI6YnJlYWs7Y2FzZSI8L1RocmVhZGVkQ29tbWVudHM+IjpicmVhaztjYXNlIjx0aHJlYWRlZENvbW1lbnQiOm49e2F1dGhvcjpvLnBlcnNvbklkLGd1aWQ6by5pZCxyZWY6by5yZWYsVDoxfTticmVhaztjYXNlIjwvdGhyZWFkZWRDb21tZW50PiI6bi50IT1udWxsJiZyLnB1c2gobik7YnJlYWs7Y2FzZSI8dGV4dD4iOmNhc2UiPHRleHQiOmk9YytzLmxlbmd0aDticmVhaztjYXNlIjwvdGV4dD4iOm4udD1lLnNsaWNlKGksYykucmVwbGFjZSgvXHJcbi9nLGAKYCkucmVwbGFjZSgvXHIvZyxgCmApO2JyZWFrO2Nhc2UiPG1lbnRpb25zIjpjYXNlIjxtZW50aW9ucz4iOnQ9ITA7YnJlYWs7Y2FzZSI8L21lbnRpb25zPiI6dD0hMTticmVhaztjYXNlIjxleHRMc3QiOmNhc2UiPGV4dExzdD4iOmNhc2UiPC9leHRMc3Q+IjpjYXNlIjxleHRMc3QvPiI6YnJlYWs7Y2FzZSI8ZXh0Ijp0PSEwO2JyZWFrO2Nhc2UiPC9leHQ+Ijp0PSExO2JyZWFrO2RlZmF1bHQ6aWYoIXQmJmEuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrb1swXSsiIGluIHRocmVhZGVkIGNvbW1lbnRzIil9cmV0dXJuIHN9KSxyfWZ1bmN0aW9uIEUxKGUsYSl7dmFyIHI9W10sdD0hMTtyZXR1cm4gZS5yZXBsYWNlKG5yLGZ1bmN0aW9uKGkpe3ZhciBmPW9lKGkpO3N3aXRjaChBcihmWzBdKSl7Y2FzZSI8P3htbCI6YnJlYWs7Y2FzZSI8cGVyc29uTGlzdCI6YnJlYWs7Y2FzZSI8L3BlcnNvbkxpc3Q+IjpicmVhaztjYXNlIjxwZXJzb24iOnIucHVzaCh7bmFtZTpmLmRpc3BsYXluYW1lLGlkOmYuaWR9KTticmVhaztjYXNlIjwvcGVyc29uPiI6YnJlYWs7Y2FzZSI8ZXh0THN0IjpjYXNlIjxleHRMc3Q+IjpjYXNlIjwvZXh0THN0PiI6Y2FzZSI8ZXh0THN0Lz4iOmJyZWFrO2Nhc2UiPGV4dCI6dD0hMDticmVhaztjYXNlIjwvZXh0PiI6dD0hMTticmVhaztkZWZhdWx0OmlmKCF0JiZhLldURil0aHJvdyBuZXcgRXJyb3IoInVucmVjb2duaXplZCAiK2ZbMF0rIiBpbiB0aHJlYWRlZCBjb21tZW50cyIpfXJldHVybiBpfSkscn1mdW5jdGlvbiBBMShlKXt2YXIgYT17fTthLmlhdXRob3I9ZS5yZWFkX3NoaWZ0KDQpO3ZhciByPUdhKGUpO3JldHVybiBhLnJmeD1yLnMsYS5yZWY9RGUoci5zKSxlLmwrPTE2LGF9dmFyIHkxPW1yO2Z1bmN0aW9uIFMxKGUsYSl7dmFyIHI9W10sdD1bXSxuPXt9LGk9ITE7cmV0dXJuIHZhKGUsZnVuY3Rpb24ocyxjLG8pe3N3aXRjaChvKXtjYXNlIDYzMjp0LnB1c2gocyk7YnJlYWs7Y2FzZSA2MzU6bj1zO2JyZWFrO2Nhc2UgNjM3Om4udD1zLnQsbi5oPXMuaCxuLnI9cy5yO2JyZWFrO2Nhc2UgNjM2OmlmKG4uYXV0aG9yPXRbbi5pYXV0aG9yXSxkZWxldGUgbi5pYXV0aG9yLGEuc2hlZXRSb3dzJiZuLnJmeCYmYS5zaGVldFJvd3M8PW4ucmZ4LnIpYnJlYWs7bi50fHwobi50PSIiKSxkZWxldGUgbi5yZngsci5wdXNoKG4pO2JyZWFrO2Nhc2UgMzA3MjpicmVhaztjYXNlIDM1Omk9ITA7YnJlYWs7Y2FzZSAzNjppPSExO2JyZWFrO2Nhc2UgMzc6YnJlYWs7Y2FzZSAzODpicmVhaztkZWZhdWx0OmlmKCFjLlQpe2lmKCFpfHxhLldURil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgcmVjb3JkIDB4IitvLnRvU3RyaW5nKDE2KSl9fX0pLHJ9dmFyIEMxPSJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3QiO2Z1bmN0aW9uIGIxKGUpe3ZhciBhPU1lLnV0aWxzLmNmYl9uZXcoe3Jvb3Q6IlIifSk7cmV0dXJuIGUuRnVsbFBhdGhzLmZvckVhY2goZnVuY3Rpb24ocix0KXtpZighKHIuc2xpY2UoLTEpPT09Ii8ifHwhci5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKSl7dmFyIG49ci5yZXBsYWNlKC9eW15cL10qLywiUiIpLnJlcGxhY2UoL1wvX1ZCQV9QUk9KRUNUX0NVUlx1MDAwMCovLCIiKTtNZS51dGlscy5jZmJfYWRkKGEsbixlLkZpbGVJbmRleFt0XS5jb250ZW50KX19KSxNZS53cml0ZShhKX1mdW5jdGlvbiBJMSgpe3JldHVybnsiIXR5cGUiOiJkaWFsb2cifX1mdW5jdGlvbiBEMSgpe3JldHVybnsiIXR5cGUiOiJkaWFsb2cifX1mdW5jdGlvbiBSMSgpe3JldHVybnsiIXR5cGUiOiJtYWNybyJ9fWZ1bmN0aW9uIE8xKCl7cmV0dXJueyIhdHlwZSI6Im1hY3JvIn19dmFyIHFhPWZ1bmN0aW9uKCl7dmFyIGU9LyhefFteQS1aYS16X10pUihcWz8tP1xkK1xdfFsxLTldXGQqfClDKFxbPy0/XGQrXF18WzEtOV1cZCp8KSg/IVtBLVphLXowLTlfXSkvZyxhPXtyOjAsYzowfTtmdW5jdGlvbiByKHQsbixpLGYpe3ZhciBzPSExLGM9ITE7aS5sZW5ndGg9PTA/Yz0hMDppLmNoYXJBdCgwKT09IlsiJiYoYz0hMCxpPWkuc2xpY2UoMSwtMSkpLGYubGVuZ3RoPT0wP3M9ITA6Zi5jaGFyQXQoMCk9PSJbIiYmKHM9ITAsZj1mLnNsaWNlKDEsLTEpKTt2YXIgbz1pLmxlbmd0aD4wP3BhcnNlSW50KGksMTApfDA6MCxsPWYubGVuZ3RoPjA/cGFyc2VJbnQoZiwxMCl8MDowO3JldHVybiBzP2wrPWEuYzotLWwsYz9vKz1hLnI6LS1vLG4rKHM/IiI6IiQiKStIZShsKSsoYz8iIjoiJCIpK0dlKG8pfXJldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBhPWksbi5yZXBsYWNlKGUscil9fSgpLF9uPS8oXnxbXi5fQS1aYS16MC05XSkoXCQ/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoXCQ/KShcZHsxLDd9KSg/IVtfLlwoQS1aYS16MC05XSkvZzt0cnl7X249LyhefFteLl9BLVphLXowLTldKShbJF0/KShbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSkoWyRdPykoMTBbMC0zXVxkezR9fDEwNFswLTddXGR7M318MTA0OFswLTRdXGR7Mn18MTA0ODVbMC02XVxkfDEwNDg1N1swLTZdfFsxLTldXGR7MCw1fSkoPyFbXy5cKEEtWmEtejAtOV0pL2d9Y2F0Y2h7fXZhciBOMT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLHIpe3JldHVybiBhLnJlcGxhY2UoX24sZnVuY3Rpb24odCxuLGksZixzLGMpe3ZhciBvPXNuKGYpLShpPzA6ci5jKSxsPW5uKGMpLShzPzA6ci5yKSx1PXM9PSIkIj9sKzE6bD09MD8iIjoiWyIrbCsiXSIseD1pPT0iJCI/bysxOm89PTA/IiI6IlsiK28rIl0iO3JldHVybiBuKyJSIit1KyJDIit4fSl9fSgpO2Z1bmN0aW9uIFlzKGUsYSl7cmV0dXJuIGUucmVwbGFjZShfbixmdW5jdGlvbihyLHQsbixpLGYscyl7cmV0dXJuIHQrKG49PSIkIj9uK2k6SGUoc24oaSkrYS5jKSkrKGY9PSIkIj9mK3M6R2Uobm4ocykrYS5yKSl9KX1mdW5jdGlvbiBKcyhlLGEscil7dmFyIHQ9cGEoYSksbj10LnMsaT1ncihyKSxmPXtyOmkuci1uLnIsYzppLmMtbi5jfTtyZXR1cm4gWXMoZSxmKX1mdW5jdGlvbiBNMShlKXtyZXR1cm4gZS5sZW5ndGghPTF9ZnVuY3Rpb24gWnMoZSl7cmV0dXJuIGUucmVwbGFjZSgvX3hsZm5cLi9nLCIiKX1mdW5jdGlvbiBjcihlKXtlLmwrPTF9ZnVuY3Rpb24gSWEoZSxhKXt2YXIgcj1lLnJlYWRfc2hpZnQoYT09MT8xOjIpO3JldHVybltyJjE2MzgzLHI+PjE0JjEscj4+MTUmMV19ZnVuY3Rpb24gcXMoZSxhLHIpe3ZhciB0PTI7aWYocil7aWYoci5iaWZmPj0yJiZyLmJpZmY8PTUpcmV0dXJuIFFzKGUpO3IuYmlmZj09MTImJih0PTQpfXZhciBuPWUucmVhZF9zaGlmdCh0KSxpPWUucmVhZF9zaGlmdCh0KSxmPUlhKGUsMikscz1JYShlLDIpO3JldHVybntzOntyOm4sYzpmWzBdLGNSZWw6ZlsxXSxyUmVsOmZbMl19LGU6e3I6aSxjOnNbMF0sY1JlbDpzWzFdLHJSZWw6c1syXX19fWZ1bmN0aW9uIFFzKGUpe3ZhciBhPUlhKGUsMikscj1JYShlLDIpLHQ9ZS5yZWFkX3NoaWZ0KDEpLG49ZS5yZWFkX3NoaWZ0KDEpO3JldHVybntzOntyOmFbMF0sYzp0LGNSZWw6YVsxXSxyUmVsOmFbMl19LGU6e3I6clswXSxjOm4sY1JlbDpyWzFdLHJSZWw6clsyXX19fWZ1bmN0aW9uIFAxKGUsYSxyKXtpZihyLmJpZmY8OClyZXR1cm4gUXMoZSk7dmFyIHQ9ZS5yZWFkX3NoaWZ0KHIuYmlmZj09MTI/NDoyKSxuPWUucmVhZF9zaGlmdChyLmJpZmY9PTEyPzQ6MiksaT1JYShlLDIpLGY9SWEoZSwyKTtyZXR1cm57czp7cjp0LGM6aVswXSxjUmVsOmlbMV0sclJlbDppWzJdfSxlOntyOm4sYzpmWzBdLGNSZWw6ZlsxXSxyUmVsOmZbMl19fX1mdW5jdGlvbiBlZihlLGEscil7aWYociYmci5iaWZmPj0yJiZyLmJpZmY8PTUpcmV0dXJuIEwxKGUpO3ZhciB0PWUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTEyPzQ6Miksbj1JYShlLDIpO3JldHVybntyOnQsYzpuWzBdLGNSZWw6blsxXSxyUmVsOm5bMl19fWZ1bmN0aW9uIEwxKGUpe3ZhciBhPUlhKGUsMikscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJue3I6YVswXSxjOnIsY1JlbDphWzFdLHJSZWw6YVsyXX19ZnVuY3Rpb24gQjEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybntyOmEsYzpyJjI1NSxmUXVvdGVkOiEhKHImMTYzODQpLGNSZWw6cj4+MTUsclJlbDpyPj4xNX19ZnVuY3Rpb24gVTEoZSxhLHIpe3ZhciB0PXImJnIuYmlmZj9yLmJpZmY6ODtpZih0Pj0yJiZ0PD01KXJldHVybiBIMShlKTt2YXIgbj1lLnJlYWRfc2hpZnQodD49MTI/NDoyKSxpPWUucmVhZF9zaGlmdCgyKSxmPShpJjE2Mzg0KT4+MTQscz0oaSYzMjc2OCk+PjE1O2lmKGkmPTE2MzgzLHM9PTEpZm9yKDtuPjUyNDI4Nzspbi09MTA0ODU3NjtpZihmPT0xKWZvcig7aT44MTkxOylpPWktMTYzODQ7cmV0dXJue3I6bixjOmksY1JlbDpmLHJSZWw6c319ZnVuY3Rpb24gSDEoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDEpLHQ9KGEmMzI3NjgpPj4xNSxuPShhJjE2Mzg0KT4+MTQ7cmV0dXJuIGEmPTE2MzgzLHQ9PTEmJmE+PTgxOTImJihhPWEtMTYzODQpLG49PTEmJnI+PTEyOCYmKHI9ci0yNTYpLHtyOmEsYzpyLGNSZWw6bixyUmVsOnR9fWZ1bmN0aW9uIFcxKGUsYSxyKXt2YXIgdD0oZVtlLmwrK10mOTYpPj41LG49cXMoZSxyLmJpZmY+PTImJnIuYmlmZjw9NT82Ojgscik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gVjEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjUsbj1lLnJlYWRfc2hpZnQoMiwiaSIpLGk9ODtpZihyKXN3aXRjaChyLmJpZmYpe2Nhc2UgNTplLmwrPTEyLGk9NjticmVhaztjYXNlIDEyOmk9MTI7YnJlYWt9dmFyIGY9cXMoZSxpLHIpO3JldHVyblt0LG4sZl19ZnVuY3Rpb24gRzEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjU7cmV0dXJuIGUubCs9ciYmci5iaWZmPjg/MTI6ci5iaWZmPDg/Njo4LFt0XX1mdW5jdGlvbiBYMShlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTg7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6ZS5sKz0xMixpPTY7YnJlYWs7Y2FzZSAxMjppPTEyO2JyZWFrfXJldHVybiBlLmwrPWksW3Qsbl19ZnVuY3Rpb24gejEoZSxhLHIpe3ZhciB0PShlW2UubCsrXSY5Nik+PjUsbj1QMShlLGEtMSxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiAkMShlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NTtyZXR1cm4gZS5sKz1yLmJpZmY9PTI/NjpyLmJpZmY9PTEyPzE0OjcsW3RdfWZ1bmN0aW9uIHJmKGUpe3ZhciBhPWVbZS5sKzFdJjEscj0xO3JldHVybiBlLmwrPTQsW2Escl19ZnVuY3Rpb24gSzEoZSxhLHIpe2UubCs9Mjtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpLG49W10saT0wO2k8PXQ7KytpKW4ucHVzaChlLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6MikpO3JldHVybiBufWZ1bmN0aW9uIGoxKGUsYSxyKXt2YXIgdD1lW2UubCsxXSYyNTU/MTowO3JldHVybiBlLmwrPTIsW3QsZS5yZWFkX3NoaWZ0KHImJnIuYmlmZj09Mj8xOjIpXX1mdW5jdGlvbiBZMShlLGEscil7dmFyIHQ9ZVtlLmwrMV0mMjU1PzE6MDtyZXR1cm4gZS5sKz0yLFt0LGUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTI/MToyKV19ZnVuY3Rpb24gSjEoZSl7dmFyIGE9ZVtlLmwrMV0mMjU1PzE6MDtyZXR1cm4gZS5sKz0yLFthLGUucmVhZF9zaGlmdCgyKV19ZnVuY3Rpb24gWjEoZSxhLHIpe3ZhciB0PWVbZS5sKzFdJjI1NT8xOjA7cmV0dXJuIGUubCs9ciYmci5iaWZmPT0yPzM6NCxbdF19ZnVuY3Rpb24gYWYoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDEpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVyblthLHJdfWZ1bmN0aW9uIHExKGUpe3JldHVybiBlLnJlYWRfc2hpZnQoMiksYWYoZSl9ZnVuY3Rpb24gUTEoZSl7cmV0dXJuIGUucmVhZF9zaGlmdCgyKSxhZihlKX1mdW5jdGlvbiBleChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWVmKGUsMCxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiByeChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPVUxKGUsMCxyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiBheChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdCgyKTtyJiZyLmJpZmY9PTUmJihlLmwrPTEyKTt2YXIgaT1lZihlLDAscik7cmV0dXJuW3QsbixpXX1mdW5jdGlvbiB0eChlLGEscil7dmFyIHQ9KGVbZS5sXSY5Nik+PjU7ZS5sKz0xO3ZhciBuPWUucmVhZF9zaGlmdChyJiZyLmJpZmY8PTM/MToyKTtyZXR1cm5bbmRbbl0sY2Zbbl0sdF19ZnVuY3Rpb24gbngoZSxhLHIpe3ZhciB0PWVbZS5sKytdLG49ZS5yZWFkX3NoaWZ0KDEpLGk9ciYmci5iaWZmPD0zP1t0PT04OD8tMTowLGUucmVhZF9zaGlmdCgxKV06aXgoZSk7cmV0dXJuW24sKGlbMF09PT0wP2NmOnRkKVtpWzFdXV19ZnVuY3Rpb24gaXgoZSl7cmV0dXJuW2VbZS5sKzFdPj43LGUucmVhZF9zaGlmdCgyKSYzMjc2N119ZnVuY3Rpb24gc3goZSxhLHIpe2UubCs9ciYmci5iaWZmPT0yPzM6NH1mdW5jdGlvbiBmeChlLGEscil7aWYoZS5sKyssciYmci5iaWZmPT0xMilyZXR1cm5bZS5yZWFkX3NoaWZ0KDQsImkiKSwwXTt2YXIgdD1lLnJlYWRfc2hpZnQoMiksbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6Mik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gY3goZSl7cmV0dXJuIGUubCsrLGJyW2UucmVhZF9zaGlmdCgxKV19ZnVuY3Rpb24gb3goZSl7cmV0dXJuIGUubCsrLGUucmVhZF9zaGlmdCgyKX1mdW5jdGlvbiBseChlKXtyZXR1cm4gZS5sKyssZS5yZWFkX3NoaWZ0KDEpIT09MH1mdW5jdGlvbiB1eChlKXtyZXR1cm4gZS5sKyssX3IoZSl9ZnVuY3Rpb24gaHgoZSxhLHIpe3JldHVybiBlLmwrKyx6YShlLGEtMSxyKX1mdW5jdGlvbiB4eChlLGEpe3ZhciByPVtlLnJlYWRfc2hpZnQoMSldO2lmKGE9PTEyKXN3aXRjaChyWzBdKXtjYXNlIDI6clswXT00O2JyZWFrO2Nhc2UgNDpyWzBdPTE2O2JyZWFrO2Nhc2UgMDpyWzBdPTE7YnJlYWs7Y2FzZSAxOnJbMF09MjticmVha31zd2l0Y2goclswXSl7Y2FzZSA0OnJbMV09YXIoZSwxKT8iVFJVRSI6IkZBTFNFIixhIT0xMiYmKGUubCs9Nyk7YnJlYWs7Y2FzZSAzNzpjYXNlIDE2OnJbMV09YnJbZVtlLmxdXSxlLmwrPWE9PTEyPzQ6ODticmVhaztjYXNlIDA6ZS5sKz04O2JyZWFrO2Nhc2UgMTpyWzFdPV9yKGUpO2JyZWFrO2Nhc2UgMjpyWzFdPUthKGUsMCx7YmlmZjphPjAmJmE8OD8yOmF9KTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQmFkIFNlckFyOiAiK3JbMF0pfXJldHVybiByfWZ1bmN0aW9uIGR4KGUsYSxyKXtmb3IodmFyIHQ9ZS5yZWFkX3NoaWZ0KHIuYmlmZj09MTI/NDoyKSxuPVtdLGk9MDtpIT10OysraSluLnB1c2goKHIuYmlmZj09MTI/R2E6dzApKGUpKTtyZXR1cm4gbn1mdW5jdGlvbiB2eChlLGEscil7dmFyIHQ9MCxuPTA7ci5iaWZmPT0xMj8odD1lLnJlYWRfc2hpZnQoNCksbj1lLnJlYWRfc2hpZnQoNCkpOihuPTErZS5yZWFkX3NoaWZ0KDEpLHQ9MStlLnJlYWRfc2hpZnQoMikpLHIuYmlmZj49MiYmci5iaWZmPDgmJigtLXQsLS1uPT0wJiYobj0yNTYpKTtmb3IodmFyIGk9MCxmPVtdO2khPXQmJihmW2ldPVtdKTsrK2kpZm9yKHZhciBzPTA7cyE9bjsrK3MpZltpXVtzXT14eChlLHIuYmlmZik7cmV0dXJuIGZ9ZnVuY3Rpb24gcHgoZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgxKT4+PjUmMyxuPSFyfHxyLmJpZmY+PTg/NDoyLGk9ZS5yZWFkX3NoaWZ0KG4pO3N3aXRjaChyLmJpZmYpe2Nhc2UgMjplLmwrPTU7YnJlYWs7Y2FzZSAzOmNhc2UgNDplLmwrPTg7YnJlYWs7Y2FzZSA1OmUubCs9MTI7YnJlYWt9cmV0dXJuW3QsMCxpXX1mdW5jdGlvbiBneChlLGEscil7aWYoci5iaWZmPT01KXJldHVybiBteChlKTt2YXIgdD1lLnJlYWRfc2hpZnQoMSk+Pj41JjMsbj1lLnJlYWRfc2hpZnQoMiksaT1lLnJlYWRfc2hpZnQoNCk7cmV0dXJuW3QsbixpXX1mdW5jdGlvbiBteChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMiwiaSIpO2UubCs9ODt2YXIgdD1lLnJlYWRfc2hpZnQoMik7cmV0dXJuIGUubCs9MTIsW2Escix0XX1mdW5jdGlvbiBfeChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO2UubCs9ciYmci5iaWZmPT0yPzM6NDt2YXIgbj1lLnJlYWRfc2hpZnQociYmci5iaWZmPT0yPzE6Mik7cmV0dXJuW3Qsbl19ZnVuY3Rpb24ga3goZSxhLHIpe3ZhciB0PWUucmVhZF9zaGlmdCgxKT4+PjUmMyxuPWUucmVhZF9zaGlmdChyJiZyLmJpZmY9PTI/MToyKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiB3eChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDEpPj4+NSYzO3JldHVybiBlLmwrPTQsci5iaWZmPDgmJmUubC0tLHIuYmlmZj09MTImJihlLmwrPTIpLFt0XX1mdW5jdGlvbiBGeChlLGEscil7dmFyIHQ9KGVbZS5sKytdJjk2KT4+NSxuPWUucmVhZF9zaGlmdCgyKSxpPTQ7aWYocilzd2l0Y2goci5iaWZmKXtjYXNlIDU6aT0xNTticmVhaztjYXNlIDEyOmk9NjticmVha31yZXR1cm4gZS5sKz1pLFt0LG5dfXZhciBUeD15cixFeD15cixBeD15cjtmdW5jdGlvbiBXdChlLGEscil7cmV0dXJuIGUubCs9MixbQjEoZSldfWZ1bmN0aW9uIGtuKGUpe3JldHVybiBlLmwrPTYsW119dmFyIHl4PVd0LFN4PWtuLEN4PWtuLGJ4PVd0O2Z1bmN0aW9uIHRmKGUpe3JldHVybiBlLmwrPTIsW2VyKGUpLGUucmVhZF9zaGlmdCgyKSYxXX12YXIgSXg9V3QsRHg9dGYsUng9a24sT3g9V3QsTng9V3QsTXg9WyJEYXRhIiwiQWxsIiwiSGVhZGVycyIsIj8/IiwiP0RhdGEyIiwiPz8iLCI/RGF0YUhlYWRlcnMiLCI/PyIsIlRvdGFscyIsIj8/IiwiPz8iLCI/PyIsIj9EYXRhVG90YWxzIiwiPz8iLCI/PyIsIj8/IiwiP0N1cnJlbnQiXTtmdW5jdGlvbiBQeChlKXtlLmwrPTI7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpLHI9ZS5yZWFkX3NoaWZ0KDIpLHQ9ZS5yZWFkX3NoaWZ0KDQpLG49ZS5yZWFkX3NoaWZ0KDIpLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9TXhbcj4+MiYzMV07cmV0dXJue2l4dGk6YSxjb2x0eXBlOnImMyxydDpmLGlkeDp0LGM6bixDOml9fWZ1bmN0aW9uIEx4KGUpe3JldHVybiBlLmwrPTIsW2UucmVhZF9zaGlmdCg0KV19ZnVuY3Rpb24gQngoZSxhLHIpe3JldHVybiBlLmwrPTUsZS5sKz0yLGUubCs9ci5iaWZmPT0yPzE6NCxbIlBUR1NIRUVUIl19ZnVuY3Rpb24gVXgoZSxhLHIpe3JldHVybiBlLmwrPXIuYmlmZj09Mj80OjUsWyJQVEdFTkRTSEVFVCJdfWZ1bmN0aW9uIEh4KGUpe3ZhciBhPWUucmVhZF9zaGlmdCgxKT4+PjUmMyxyPWUucmVhZF9zaGlmdCgyKTtyZXR1cm5bYSxyXX1mdW5jdGlvbiBXeChlKXt2YXIgYT1lLnJlYWRfc2hpZnQoMSk+Pj41JjMscj1lLnJlYWRfc2hpZnQoMik7cmV0dXJuW2Escl19ZnVuY3Rpb24gVngoZSl7cmV0dXJuIGUubCs9NCxbMCwwXX12YXIgbmY9ezE6e246IlB0Z0V4cCIsZjpmeH0sMjp7bjoiUHRnVGJsIixmOkF4fSwzOntuOiJQdGdBZGQiLGY6Y3J9LDQ6e246IlB0Z1N1YiIsZjpjcn0sNTp7bjoiUHRnTXVsIixmOmNyfSw2OntuOiJQdGdEaXYiLGY6Y3J9LDc6e246IlB0Z1Bvd2VyIixmOmNyfSw4OntuOiJQdGdDb25jYXQiLGY6Y3J9LDk6e246IlB0Z0x0IixmOmNyfSwxMDp7bjoiUHRnTGUiLGY6Y3J9LDExOntuOiJQdGdFcSIsZjpjcn0sMTI6e246IlB0Z0dlIixmOmNyfSwxMzp7bjoiUHRnR3QiLGY6Y3J9LDE0OntuOiJQdGdOZSIsZjpjcn0sMTU6e246IlB0Z0lzZWN0IixmOmNyfSwxNjp7bjoiUHRnVW5pb24iLGY6Y3J9LDE3OntuOiJQdGdSYW5nZSIsZjpjcn0sMTg6e246IlB0Z1VwbHVzIixmOmNyfSwxOTp7bjoiUHRnVW1pbnVzIixmOmNyfSwyMDp7bjoiUHRnUGVyY2VudCIsZjpjcn0sMjE6e246IlB0Z1BhcmVuIixmOmNyfSwyMjp7bjoiUHRnTWlzc0FyZyIsZjpjcn0sMjM6e246IlB0Z1N0ciIsZjpoeH0sMjY6e246IlB0Z1NoZWV0IixmOkJ4fSwyNzp7bjoiUHRnRW5kU2hlZXQiLGY6VXh9LDI4OntuOiJQdGdFcnIiLGY6Y3h9LDI5OntuOiJQdGdCb29sIixmOmx4fSwzMDp7bjoiUHRnSW50IixmOm94fSwzMTp7bjoiUHRnTnVtIixmOnV4fSwzMjp7bjoiUHRnQXJyYXkiLGY6JDF9LDMzOntuOiJQdGdGdW5jIixmOnR4fSwzNDp7bjoiUHRnRnVuY1ZhciIsZjpueH0sMzU6e246IlB0Z05hbWUiLGY6cHh9LDM2OntuOiJQdGdSZWYiLGY6ZXh9LDM3OntuOiJQdGdBcmVhIixmOlcxfSwzODp7bjoiUHRnTWVtQXJlYSIsZjpfeH0sMzk6e246IlB0Z01lbUVyciIsZjpUeH0sNDA6e246IlB0Z01lbU5vTWVtIixmOkV4fSw0MTp7bjoiUHRnTWVtRnVuYyIsZjpreH0sNDI6e246IlB0Z1JlZkVyciIsZjp3eH0sNDM6e246IlB0Z0FyZWFFcnIiLGY6RzF9LDQ0OntuOiJQdGdSZWZOIixmOnJ4fSw0NTp7bjoiUHRnQXJlYU4iLGY6ejF9LDQ2OntuOiJQdGdNZW1BcmVhTiIsZjpIeH0sNDc6e246IlB0Z01lbU5vTWVtTiIsZjpXeH0sNTc6e246IlB0Z05hbWVYIixmOmd4fSw1ODp7bjoiUHRnUmVmM2QiLGY6YXh9LDU5OntuOiJQdGdBcmVhM2QiLGY6VjF9LDYwOntuOiJQdGdSZWZFcnIzZCIsZjpGeH0sNjE6e246IlB0Z0FyZWFFcnIzZCIsZjpYMX0sMjU1Ont9fSxHeD17NjQ6MzIsOTY6MzIsNjU6MzMsOTc6MzMsNjY6MzQsOTg6MzQsNjc6MzUsOTk6MzUsNjg6MzYsMTAwOjM2LDY5OjM3LDEwMTozNyw3MDozOCwxMDI6MzgsNzE6MzksMTAzOjM5LDcyOjQwLDEwNDo0MCw3Mzo0MSwxMDU6NDEsNzQ6NDIsMTA2OjQyLDc1OjQzLDEwNzo0Myw3Njo0NCwxMDg6NDQsNzc6NDUsMTA5OjQ1LDc4OjQ2LDExMDo0Niw3OTo0NywxMTE6NDcsODg6MzQsMTIwOjM0LDg5OjU3LDEyMTo1Nyw5MDo1OCwxMjI6NTgsOTE6NTksMTIzOjU5LDkyOjYwLDEyNDo2MCw5Mzo2MSwxMjU6NjF9LFh4PXsxOntuOiJQdGdFbGZMZWwiLGY6dGZ9LDI6e246IlB0Z0VsZlJ3IixmOk94fSwzOntuOiJQdGdFbGZDb2wiLGY6eXh9LDY6e246IlB0Z0VsZlJ3ViIsZjpOeH0sNzp7bjoiUHRnRWxmQ29sViIsZjpieH0sMTA6e246IlB0Z0VsZlJhZGljYWwiLGY6SXh9LDExOntuOiJQdGdFbGZSYWRpY2FsUyIsZjpSeH0sMTM6e246IlB0Z0VsZkNvbFMiLGY6U3h9LDE1OntuOiJQdGdFbGZDb2xTViIsZjpDeH0sMTY6e246IlB0Z0VsZlJhZGljYWxMZWwiLGY6RHh9LDI1OntuOiJQdGdMaXN0IixmOlB4fSwyOTp7bjoiUHRnU3hOYW1lIixmOkx4fSwyNTU6e319LHp4PXswOntuOiJQdGdBdHRyTm9vcCIsZjpWeH0sMTp7bjoiUHRnQXR0clNlbWkiLGY6WjF9LDI6e246IlB0Z0F0dHJJZiIsZjpZMX0sNDp7bjoiUHRnQXR0ckNob29zZSIsZjpLMX0sODp7bjoiUHRnQXR0ckdvdG8iLGY6ajF9LDE2OntuOiJQdGdBdHRyU3VtIixmOnN4fSwzMjp7bjoiUHRnQXR0ckJheGNlbCIsZjpyZn0sMzM6e246IlB0Z0F0dHJCYXhjZWwiLGY6cmZ9LDY0OntuOiJQdGdBdHRyU3BhY2UiLGY6cTF9LDY1OntuOiJQdGdBdHRyU3BhY2VTZW1pIixmOlExfSwxMjg6e246IlB0Z0F0dHJJZkVycm9yIixmOkoxfSwyNTU6e319O2Z1bmN0aW9uIFZ0KGUsYSxyLHQpe2lmKHQuYmlmZjw4KXJldHVybiB5cihlLGEpO2Zvcih2YXIgbj1lLmwrYSxpPVtdLGY9MDtmIT09ci5sZW5ndGg7KytmKXN3aXRjaChyW2ZdWzBdKXtjYXNlIlB0Z0FycmF5IjpyW2ZdWzFdPXZ4KGUsMCx0KSxpLnB1c2gocltmXVsxXSk7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhIjpyW2ZdWzJdPWR4KGUscltmXVsxXSx0KSxpLnB1c2gocltmXVsyXSk7YnJlYWs7Y2FzZSJQdGdFeHAiOnQmJnQuYmlmZj09MTImJihyW2ZdWzFdWzFdPWUucmVhZF9zaGlmdCg0KSxpLnB1c2gocltmXVsxXSkpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6Y2FzZSJQdGdFbGZSYWRpY2FsUyI6Y2FzZSJQdGdFbGZDb2xTIjpjYXNlIlB0Z0VsZkNvbFNWIjp0aHJvdyJVbnN1cHBvcnRlZCAiK3JbZl1bMF19cmV0dXJuIGE9bi1lLmwsYSE9PTAmJmkucHVzaCh5cihlLGEpKSxpfWZ1bmN0aW9uIEd0KGUsYSxyKXtmb3IodmFyIHQ9ZS5sK2EsbixpLGY9W107dCE9ZS5sOylhPXQtZS5sLGk9ZVtlLmxdLG49bmZbaV18fG5mW0d4W2ldXSwoaT09PTI0fHxpPT09MjUpJiYobj0oaT09PTI0P1h4Onp4KVtlW2UubCsxXV0pLCFufHwhbi5mP3lyKGUsYSk6Zi5wdXNoKFtuLm4sbi5mKGUsYSxyKV0pO3JldHVybiBmfWZ1bmN0aW9uICR4KGUpe2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aDsrK3Ipe2Zvcih2YXIgdD1lW3JdLG49W10saT0wO2k8dC5sZW5ndGg7KytpKXt2YXIgZj10W2ldO2lmKGYpc3dpdGNoKGZbMF0pe2Nhc2UgMjpuLnB1c2goJyInK2ZbMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7ZGVmYXVsdDpuLnB1c2goZlsxXSl9ZWxzZSBuLnB1c2goIiIpfWEucHVzaChuLmpvaW4oIiwiKSl9cmV0dXJuIGEuam9pbigiOyIpfXZhciBLeD17UHRnQWRkOiIrIixQdGdDb25jYXQ6IiYiLFB0Z0RpdjoiLyIsUHRnRXE6Ij0iLFB0Z0dlOiI+PSIsUHRnR3Q6Ij4iLFB0Z0xlOiI8PSIsUHRnTHQ6IjwiLFB0Z011bDoiKiIsUHRnTmU6Ijw+IixQdGdQb3dlcjoiXiIsUHRnU3ViOiItIn07ZnVuY3Rpb24gangoZSxhKXt2YXIgcj1lLmxhc3RJbmRleE9mKCIhIiksdD1hLmxhc3RJbmRleE9mKCIhIik7cmV0dXJuIHI9PS0xJiZ0PT0tMT9lKyI6IithOnI+MCYmdD4wJiZlLnNsaWNlKDAscikudG9Mb3dlckNhc2UoKT09YS5zbGljZSgwLHQpLnRvTG93ZXJDYXNlKCk/ZSsiOiIrYS5zbGljZSh0KzEpOihjb25zb2xlLmVycm9yKCJDYW5ub3QgaHlkcmF0ZSByYW5nZSIsZSxhKSxlKyI6IithKX1mdW5jdGlvbiBzZihlLGEscil7aWYoIWUpcmV0dXJuIlNIMzNUSlNFUlIwIjtpZihyLmJpZmY+OCYmKCFlLlhUSXx8IWUuWFRJW2FdKSlyZXR1cm4gZS5TaGVldE5hbWVzW2FdO2lmKCFlLlhUSSlyZXR1cm4iU0gzM1RKU0VSUjYiO3ZhciB0PWUuWFRJW2FdO2lmKHIuYmlmZjw4KXJldHVybiBhPjFlNCYmKGEtPTY1NTM2KSxhPDAmJihhPS1hKSxhPT0wPyIiOmUuWFRJW2EtMV07aWYoIXQpcmV0dXJuIlNIMzNUSlNFUlIxIjt2YXIgbj0iIjtpZihyLmJpZmY+OClzd2l0Y2goZVt0WzBdXVswXSl7Y2FzZSAzNTc6cmV0dXJuIG49dFsxXT09LTE/IiNSRUYiOmUuU2hlZXROYW1lc1t0WzFdXSx0WzFdPT10WzJdP246bisiOiIrZS5TaGVldE5hbWVzW3RbMl1dO2Nhc2UgMzU4OnJldHVybiByLlNJRCE9bnVsbD9lLlNoZWV0TmFtZXNbci5TSURdOiJTSDMzVEpTU0FNRSIrZVt0WzBdXVswXTtjYXNlIDM1NTpkZWZhdWx0OnJldHVybiJTSDMzVEpTU1JDIitlW3RbMF1dWzBdfXN3aXRjaChlW3RbMF1dWzBdWzBdKXtjYXNlIDEwMjU6cmV0dXJuIG49dFsxXT09LTE/IiNSRUYiOmUuU2hlZXROYW1lc1t0WzFdXXx8IlNIMzNUSlNFUlIzIix0WzFdPT10WzJdP246bisiOiIrZS5TaGVldE5hbWVzW3RbMl1dO2Nhc2UgMTQ4NDk6cmV0dXJuIGVbdFswXV0uc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLk5hbWV9KS5qb2luKCI7OyIpO2RlZmF1bHQ6cmV0dXJuIGVbdFswXV1bMF1bM10/KG49dFsxXT09LTE/IiNSRUYiOmVbdFswXV1bMF1bM11bdFsxXV18fCJTSDMzVEpTRVJSNCIsdFsxXT09dFsyXT9uOm4rIjoiK2VbdFswXV1bMF1bM11bdFsyXV0pOiJTSDMzVEpTRVJSMiJ9fWZ1bmN0aW9uIGZmKGUsYSxyKXt2YXIgdD1zZihlLGEscik7cmV0dXJuIHQ9PSIjUkVGIj90OkVvKHQscil9ZnVuY3Rpb24gd3IoZSxhLHIsdCxuKXt2YXIgaT1uJiZuLmJpZmZ8fDgsZj17czp7YzowLHI6MH0sZTp7YzowLHI6MH19LHM9W10sYyxvLGwsdT0wLHg9MCxoLGc9IiI7aWYoIWVbMF18fCFlWzBdWzBdKXJldHVybiIiO2Zvcih2YXIgbT0tMSxkPSIiLHA9MCx3PWVbMF0ubGVuZ3RoO3A8dzsrK3Ape3ZhciBfPWVbMF1bcF07c3dpdGNoKF9bMF0pe2Nhc2UiUHRnVW1pbnVzIjpzLnB1c2goIi0iK3MucG9wKCkpO2JyZWFrO2Nhc2UiUHRnVXBsdXMiOnMucHVzaCgiKyIrcy5wb3AoKSk7YnJlYWs7Y2FzZSJQdGdQZXJjZW50IjpzLnB1c2gocy5wb3AoKSsiJSIpO2JyZWFrO2Nhc2UiUHRnQWRkIjpjYXNlIlB0Z0NvbmNhdCI6Y2FzZSJQdGdEaXYiOmNhc2UiUHRnRXEiOmNhc2UiUHRnR2UiOmNhc2UiUHRnR3QiOmNhc2UiUHRnTGUiOmNhc2UiUHRnTHQiOmNhc2UiUHRnTXVsIjpjYXNlIlB0Z05lIjpjYXNlIlB0Z1Bvd2VyIjpjYXNlIlB0Z1N1YiI6aWYoYz1zLnBvcCgpLG89cy5wb3AoKSxtPj0wKXtzd2l0Y2goZVswXVttXVsxXVswXSl7Y2FzZSAwOmQ9UGUoIiAiLGVbMF1bbV1bMV1bMV0pO2JyZWFrO2Nhc2UgMTpkPVBlKCJcciIsZVswXVttXVsxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihkPSIiLG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVttXVsxXVswXSl9bz1vK2QsbT0tMX1zLnB1c2gobytLeFtfWzBdXStjKTticmVhaztjYXNlIlB0Z0lzZWN0IjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChvKyIgIitjKTticmVhaztjYXNlIlB0Z1VuaW9uIjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChvKyIsIitjKTticmVhaztjYXNlIlB0Z1JhbmdlIjpjPXMucG9wKCksbz1zLnBvcCgpLHMucHVzaChqeChvLGMpKTticmVhaztjYXNlIlB0Z0F0dHJDaG9vc2UiOmJyZWFrO2Nhc2UiUHRnQXR0ckdvdG8iOmJyZWFrO2Nhc2UiUHRnQXR0cklmIjpicmVhaztjYXNlIlB0Z0F0dHJJZkVycm9yIjpicmVhaztjYXNlIlB0Z1JlZiI6bD1SdChfWzFdWzFdLGYsbikscy5wdXNoKE90KGwsaSkpO2JyZWFrO2Nhc2UiUHRnUmVmTiI6bD1yP1J0KF9bMV1bMV0scixuKTpfWzFdWzFdLHMucHVzaChPdChsLGkpKTticmVhaztjYXNlIlB0Z1JlZjNkIjp1PV9bMV1bMV0sbD1SdChfWzFdWzJdLGYsbiksZz1mZih0LHUsbikscy5wdXNoKGcrIiEiK090KGwsaSkpO2JyZWFrO2Nhc2UiUHRnRnVuYyI6Y2FzZSJQdGdGdW5jVmFyIjp2YXIgeT1fWzFdWzBdLFI9X1sxXVsxXTt5fHwoeT0wKSx5Jj0xMjc7dmFyIFA9eT09MD9bXTpzLnNsaWNlKC15KTtzLmxlbmd0aC09eSxSPT09IlVzZXIiJiYoUj1QLnNoaWZ0KCkpLHMucHVzaChSKyIoIitQLmpvaW4oIiwiKSsiKSIpO2JyZWFrO2Nhc2UiUHRnQm9vbCI6cy5wdXNoKF9bMV0/IlRSVUUiOiJGQUxTRSIpO2JyZWFrO2Nhc2UiUHRnSW50IjpzLnB1c2goX1sxXSk7YnJlYWs7Y2FzZSJQdGdOdW0iOnMucHVzaChTdHJpbmcoX1sxXSkpO2JyZWFrO2Nhc2UiUHRnU3RyIjpzLnB1c2goJyInK19bMV0ucmVwbGFjZSgvIi9nLCciIicpKyciJyk7YnJlYWs7Y2FzZSJQdGdFcnIiOnMucHVzaChfWzFdKTticmVhaztjYXNlIlB0Z0FyZWFOIjpoPVlpKF9bMV1bMV0scj97czpyfTpmLG4pLHMucHVzaCh0bihoLG4pKTticmVhaztjYXNlIlB0Z0FyZWEiOmg9WWkoX1sxXVsxXSxmLG4pLHMucHVzaCh0bihoLG4pKTticmVhaztjYXNlIlB0Z0FyZWEzZCI6dT1fWzFdWzFdLGg9X1sxXVsyXSxnPWZmKHQsdSxuKSxzLnB1c2goZysiISIrdG4oaCxuKSk7YnJlYWs7Y2FzZSJQdGdBdHRyU3VtIjpzLnB1c2goIlNVTSgiK3MucG9wKCkrIikiKTticmVhaztjYXNlIlB0Z0F0dHJCYXhjZWwiOmNhc2UiUHRnQXR0clNlbWkiOmJyZWFrO2Nhc2UiUHRnTmFtZSI6eD1fWzFdWzJdO3ZhciBiPSh0Lm5hbWVzfHxbXSlbeC0xXXx8KHRbMF18fFtdKVt4XSxOPWI/Yi5OYW1lOiJTSDMzVEpTTkFNRSIrU3RyaW5nKHgpO04mJk4uc2xpY2UoMCw2KT09Il94bGZuLiImJiFuLnhsZm4mJihOPU4uc2xpY2UoNikpLHMucHVzaChOKTticmVhaztjYXNlIlB0Z05hbWVYIjp2YXIgST1fWzFdWzFdO3g9X1sxXVsyXTt2YXIgQjtpZihuLmJpZmY8PTUpSTwwJiYoST0tSSksdFtJXSYmKEI9dFtJXVt4XSk7ZWxzZXt2YXIgTD0iIjtpZigoKHRbSV18fFtdKVswXXx8W10pWzBdPT0xNDg0OXx8KCgodFtJXXx8W10pWzBdfHxbXSlbMF09PTEwMjU/dFtJXVt4XSYmdFtJXVt4XS5pdGFiPjAmJihMPXQuU2hlZXROYW1lc1t0W0ldW3hdLml0YWItMV0rIiEiKTpMPXQuU2hlZXROYW1lc1t4LTFdKyIhIiksdFtJXSYmdFtJXVt4XSlMKz10W0ldW3hdLk5hbWU7ZWxzZSBpZih0WzBdJiZ0WzBdW3hdKUwrPXRbMF1beF0uTmFtZTtlbHNle3ZhciBHPShzZih0LEksbil8fCIiKS5zcGxpdCgiOzsiKTtHW3gtMV0/TD1HW3gtMV06TCs9IlNIMzNUSlNFUlJYIn1zLnB1c2goTCk7YnJlYWt9Qnx8KEI9e05hbWU6IlNIMzNUSlNFUlJZIn0pLHMucHVzaChCLk5hbWUpO2JyZWFrO2Nhc2UiUHRnUGFyZW4iOnZhciBpZT0iKCIsbmU9IikiO2lmKG0+PTApe3N3aXRjaChkPSIiLGVbMF1bbV1bMV1bMF0pe2Nhc2UgMjppZT1QZSgiICIsZVswXVttXVsxXVsxXSkraWU7YnJlYWs7Y2FzZSAzOmllPVBlKCJcciIsZVswXVttXVsxXVsxXSkraWU7YnJlYWs7Y2FzZSA0Om5lPVBlKCIgIixlWzBdW21dWzFdWzFdKStuZTticmVhaztjYXNlIDU6bmU9UGUoIlxyIixlWzBdW21dWzFdWzFdKStuZTticmVhaztkZWZhdWx0OmlmKG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrZVswXVttXVsxXVswXSl9bT0tMX1zLnB1c2goaWUrcy5wb3AoKStuZSk7YnJlYWs7Y2FzZSJQdGdSZWZFcnIiOnMucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z1JlZkVycjNkIjpzLnB1c2goIiNSRUYhIik7YnJlYWs7Y2FzZSJQdGdFeHAiOmw9e2M6X1sxXVsxXSxyOl9bMV1bMF19O3ZhciBxPXtjOnIuYyxyOnIucn07aWYodC5zaGFyZWRmW0RlKGwpXSl7dmFyIGxlPXQuc2hhcmVkZltEZShsKV07cy5wdXNoKHdyKGxlLGYscSx0LG4pKX1lbHNle3ZhciBRPSExO2ZvcihjPTA7YyE9dC5hcnJheWYubGVuZ3RoOysrYylpZihvPXQuYXJyYXlmW2NdLCEobC5jPG9bMF0ucy5jfHxsLmM+b1swXS5lLmMpJiYhKGwucjxvWzBdLnMucnx8bC5yPm9bMF0uZS5yKSl7cy5wdXNoKHdyKG9bMV0sZixxLHQsbikpLFE9ITA7YnJlYWt9UXx8cy5wdXNoKF9bMV0pfWJyZWFrO2Nhc2UiUHRnQXJyYXkiOnMucHVzaCgieyIrJHgoX1sxXSkrIn0iKTticmVhaztjYXNlIlB0Z01lbUFyZWEiOmJyZWFrO2Nhc2UiUHRnQXR0clNwYWNlIjpjYXNlIlB0Z0F0dHJTcGFjZVNlbWkiOm09cDticmVhaztjYXNlIlB0Z1RibCI6YnJlYWs7Y2FzZSJQdGdNZW1FcnIiOmJyZWFrO2Nhc2UiUHRnTWlzc0FyZyI6cy5wdXNoKCIiKTticmVhaztjYXNlIlB0Z0FyZWFFcnIiOnMucHVzaCgiI1JFRiEiKTticmVhaztjYXNlIlB0Z0FyZWFFcnIzZCI6cy5wdXNoKCIjUkVGISIpO2JyZWFrO2Nhc2UiUHRnTGlzdCI6cy5wdXNoKCJUYWJsZSIrX1sxXS5pZHgrIlsjIitfWzFdLnJ0KyJdIik7YnJlYWs7Y2FzZSJQdGdNZW1BcmVhTiI6Y2FzZSJQdGdNZW1Ob01lbU4iOmNhc2UiUHRnQXR0ck5vb3AiOmNhc2UiUHRnU2hlZXQiOmNhc2UiUHRnRW5kU2hlZXQiOmJyZWFrO2Nhc2UiUHRnTWVtRnVuYyI6YnJlYWs7Y2FzZSJQdGdNZW1Ob01lbSI6YnJlYWs7Y2FzZSJQdGdFbGZDb2wiOmNhc2UiUHRnRWxmQ29sUyI6Y2FzZSJQdGdFbGZDb2xTViI6Y2FzZSJQdGdFbGZDb2xWIjpjYXNlIlB0Z0VsZkxlbCI6Y2FzZSJQdGdFbGZSYWRpY2FsIjpjYXNlIlB0Z0VsZlJhZGljYWxMZWwiOmNhc2UiUHRnRWxmUmFkaWNhbFMiOmNhc2UiUHRnRWxmUnciOmNhc2UiUHRnRWxmUndWIjp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIEVMRnMiKTtjYXNlIlB0Z1N4TmFtZSI6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoXykpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgRm9ybXVsYSBUb2tlbjogIitTdHJpbmcoXykpfXZhciBnZT1bIlB0Z0F0dHJTcGFjZSIsIlB0Z0F0dHJTcGFjZVNlbWkiLCJQdGdBdHRyR290byJdO2lmKG4uYmlmZiE9MyYmbT49MCYmZ2UuaW5kZXhPZihlWzBdW3BdWzBdKT09LTEpe189ZVswXVttXTt2YXIgdWU9ITA7c3dpdGNoKF9bMV1bMF0pe2Nhc2UgNDp1ZT0hMTtjYXNlIDA6ZD1QZSgiICIsX1sxXVsxXSk7YnJlYWs7Y2FzZSA1OnVlPSExO2Nhc2UgMTpkPVBlKCJcciIsX1sxXVsxXSk7YnJlYWs7ZGVmYXVsdDppZihkPSIiLG4uV1RGKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlICIrX1sxXVswXSl9cy5wdXNoKCh1ZT9kOiIiKStzLnBvcCgpKyh1ZT8iIjpkKSksbT0tMX19aWYocy5sZW5ndGg+MSYmbi5XVEYpdGhyb3cgbmV3IEVycm9yKCJiYWQgZm9ybXVsYSBzdGFjayIpO3JldHVybiBzWzBdPT0iVFJVRSI/ITA6c1swXT09IkZBTFNFIj8hMTpzWzBdfWZ1bmN0aW9uIFl4KGUsYSxyKXt2YXIgdD1lLmwrYSxuPXIuYmlmZj09Mj8xOjIsaSxmPWUucmVhZF9zaGlmdChuKTtpZihmPT02NTUzNSlyZXR1cm5bW10seXIoZSxhLTIpXTt2YXIgcz1HdChlLGYscik7cmV0dXJuIGEhPT1mK24mJihpPVZ0KGUsYS1mLW4scyxyKSksZS5sPXQsW3MsaV19ZnVuY3Rpb24gSngoZSxhLHIpe3ZhciB0PWUubCthLG49ci5iaWZmPT0yPzE6MixpLGY9ZS5yZWFkX3NoaWZ0KG4pO2lmKGY9PTY1NTM1KXJldHVybltbXSx5cihlLGEtMildO3ZhciBzPUd0KGUsZixyKTtyZXR1cm4gYSE9PWYrbiYmKGk9VnQoZSxhLWYtbixzLHIpKSxlLmw9dCxbcyxpXX1mdW5jdGlvbiBaeChlLGEscix0KXt2YXIgbj1lLmwrYSxpPUd0KGUsdCxyKSxmO3JldHVybiBuIT09ZS5sJiYoZj1WdChlLG4tZS5sLGkscikpLFtpLGZdfWZ1bmN0aW9uIHF4KGUsYSxyKXt2YXIgdD1lLmwrYSxuLGk9ZS5yZWFkX3NoaWZ0KDIpLGY9R3QoZSxpLHIpO3JldHVybiBpPT02NTUzNT9bW10seXIoZSxhLTIpXTooYSE9PWkrMiYmKG49VnQoZSx0LWktMixmLHIpKSxbZixuXSl9ZnVuY3Rpb24gUXgoZSl7dmFyIGE7aWYoZGEoZSxlLmwrNikhPT02NTUzNSlyZXR1cm5bX3IoZSksIm4iXTtzd2l0Y2goZVtlLmxdKXtjYXNlIDA6cmV0dXJuIGUubCs9OCxbIlN0cmluZyIsInMiXTtjYXNlIDE6cmV0dXJuIGE9ZVtlLmwrMl09PT0xLGUubCs9OCxbYSwiYiJdO2Nhc2UgMjpyZXR1cm4gYT1lW2UubCsyXSxlLmwrPTgsW2EsImUiXTtjYXNlIDM6cmV0dXJuIGUubCs9OCxbIiIsInMiXX1yZXR1cm5bXX1mdW5jdGlvbiB3bihlLGEscil7dmFyIHQ9ZS5sK2Esbj1xcihlLDYsciksaT1ReChlKSxmPWUucmVhZF9zaGlmdCgxKTtyLmJpZmYhPTImJihlLnJlYWRfc2hpZnQoMSksci5iaWZmPj01JiZlLnJlYWRfc2hpZnQoNCkpO3ZhciBzPUp4KGUsdC1lLmwscik7cmV0dXJue2NlbGw6bix2YWw6aVswXSxmb3JtdWxhOnMsc2hhcmVkOmY+PjMmMSx0dDppWzFdfX1mdW5jdGlvbiBTMChlLGEscil7dmFyIHQ9ZS5yZWFkX3NoaWZ0KDQpLG49R3QoZSx0LHIpLGk9ZS5yZWFkX3NoaWZ0KDQpLGY9aT4wP1Z0KGUsaSxuLHIpOm51bGw7cmV0dXJuW24sZl19dmFyIGVkPVMwLEMwPVMwLHJkPVMwLGFkPVMwLHRkPXswOiJCRUVQIiwxOiJPUEVOIiwyOiJPUEVOLkxJTktTIiwzOiJDTE9TRS5BTEwiLDQ6IlNBVkUiLDU6IlNBVkUuQVMiLDY6IkZJTEUuREVMRVRFIiw3OiJQQUdFLlNFVFVQIiw4OiJQUklOVCIsOToiUFJJTlRFUi5TRVRVUCIsMTA6IlFVSVQiLDExOiJORVcuV0lORE9XIiwxMjoiQVJSQU5HRS5BTEwiLDEzOiJXSU5ET1cuU0laRSIsMTQ6IldJTkRPVy5NT1ZFIiwxNToiRlVMTCIsMTY6IkNMT1NFIiwxNzoiUlVOIiwyMjoiU0VULlBSSU5ULkFSRUEiLDIzOiJTRVQuUFJJTlQuVElUTEVTIiwyNDoiU0VULlBBR0UuQlJFQUsiLDI1OiJSRU1PVkUuUEFHRS5CUkVBSyIsMjY6IkZPTlQiLDI3OiJESVNQTEFZIiwyODoiUFJPVEVDVC5ET0NVTUVOVCIsMjk6IlBSRUNJU0lPTiIsMzA6IkExLlIxQzEiLDMxOiJDQUxDVUxBVEUuTk9XIiwzMjoiQ0FMQ1VMQVRJT04iLDM0OiJEQVRBLkZJTkQiLDM1OiJFWFRSQUNUIiwzNjoiREFUQS5ERUxFVEUiLDM3OiJTRVQuREFUQUJBU0UiLDM4OiJTRVQuQ1JJVEVSSUEiLDM5OiJTT1JUIiw0MDoiREFUQS5TRVJJRVMiLDQxOiJUQUJMRSIsNDI6IkZPUk1BVC5OVU1CRVIiLDQzOiJBTElHTk1FTlQiLDQ0OiJTVFlMRSIsNDU6IkJPUkRFUiIsNDY6IkNFTEwuUFJPVEVDVElPTiIsNDc6IkNPTFVNTi5XSURUSCIsNDg6IlVORE8iLDQ5OiJDVVQiLDUwOiJDT1BZIiw1MToiUEFTVEUiLDUyOiJDTEVBUiIsNTM6IlBBU1RFLlNQRUNJQUwiLDU0OiJFRElULkRFTEVURSIsNTU6IklOU0VSVCIsNTY6IkZJTEwuUklHSFQiLDU3OiJGSUxMLkRPV04iLDYxOiJERUZJTkUuTkFNRSIsNjI6IkNSRUFURS5OQU1FUyIsNjM6IkZPUk1VTEEuR09UTyIsNjQ6IkZPUk1VTEEuRklORCIsNjU6IlNFTEVDVC5MQVNULkNFTEwiLDY2OiJTSE9XLkFDVElWRS5DRUxMIiw2NzoiR0FMTEVSWS5BUkVBIiw2ODoiR0FMTEVSWS5CQVIiLDY5OiJHQUxMRVJZLkNPTFVNTiIsNzA6IkdBTExFUlkuTElORSIsNzE6IkdBTExFUlkuUElFIiw3MjoiR0FMTEVSWS5TQ0FUVEVSIiw3MzoiQ09NQklOQVRJT04iLDc0OiJQUkVGRVJSRUQiLDc1OiJBREQuT1ZFUkxBWSIsNzY6IkdSSURMSU5FUyIsNzc6IlNFVC5QUkVGRVJSRUQiLDc4OiJBWEVTIiw3OToiTEVHRU5EIiw4MDoiQVRUQUNILlRFWFQiLDgxOiJBREQuQVJST1ciLDgyOiJTRUxFQ1QuQ0hBUlQiLDgzOiJTRUxFQ1QuUExPVC5BUkVBIiw4NDoiUEFUVEVSTlMiLDg1OiJNQUlOLkNIQVJUIiw4NjoiT1ZFUkxBWSIsODc6IlNDQUxFIiw4ODoiRk9STUFULkxFR0VORCIsODk6IkZPUk1BVC5URVhUIiw5MDoiRURJVC5SRVBFQVQiLDkxOiJQQVJTRSIsOTI6IkpVU1RJRlkiLDkzOiJISURFIiw5NDoiVU5ISURFIiw5NToiV09SS1NQQUNFIiw5NjoiRk9STVVMQSIsOTc6IkZPUk1VTEEuRklMTCIsOTg6IkZPUk1VTEEuQVJSQVkiLDk5OiJEQVRBLkZJTkQuTkVYVCIsMTAwOiJEQVRBLkZJTkQuUFJFViIsMTAxOiJGT1JNVUxBLkZJTkQuTkVYVCIsMTAyOiJGT1JNVUxBLkZJTkQuUFJFViIsMTAzOiJBQ1RJVkFURSIsMTA0OiJBQ1RJVkFURS5ORVhUIiwxMDU6IkFDVElWQVRFLlBSRVYiLDEwNjoiVU5MT0NLRUQuTkVYVCIsMTA3OiJVTkxPQ0tFRC5QUkVWIiwxMDg6IkNPUFkuUElDVFVSRSIsMTA5OiJTRUxFQ1QiLDExMDoiREVMRVRFLk5BTUUiLDExMToiREVMRVRFLkZPUk1BVCIsMTEyOiJWTElORSIsMTEzOiJITElORSIsMTE0OiJWUEFHRSIsMTE1OiJIUEFHRSIsMTE2OiJWU0NST0xMIiwxMTc6IkhTQ1JPTEwiLDExODoiQUxFUlQiLDExOToiTkVXIiwxMjA6IkNBTkNFTC5DT1BZIiwxMjE6IlNIT1cuQ0xJUEJPQVJEIiwxMjI6Ik1FU1NBR0UiLDEyNDoiUEFTVEUuTElOSyIsMTI1OiJBUFAuQUNUSVZBVEUiLDEyNjoiREVMRVRFLkFSUk9XIiwxMjc6IlJPVy5IRUlHSFQiLDEyODoiRk9STUFULk1PVkUiLDEyOToiRk9STUFULlNJWkUiLDEzMDoiRk9STVVMQS5SRVBMQUNFIiwxMzE6IlNFTkQuS0VZUyIsMTMyOiJTRUxFQ1QuU1BFQ0lBTCIsMTMzOiJBUFBMWS5OQU1FUyIsMTM0OiJSRVBMQUNFLkZPTlQiLDEzNToiRlJFRVpFLlBBTkVTIiwxMzY6IlNIT1cuSU5GTyIsMTM3OiJTUExJVCIsMTM4OiJPTi5XSU5ET1ciLDEzOToiT04uREFUQSIsMTQwOiJESVNBQkxFLklOUFVUIiwxNDI6Ik9VVExJTkUiLDE0MzoiTElTVC5OQU1FUyIsMTQ0OiJGSUxFLkNMT1NFIiwxNDU6IlNBVkUuV09SS0JPT0siLDE0NjoiREFUQS5GT1JNIiwxNDc6IkNPUFkuQ0hBUlQiLDE0ODoiT04uVElNRSIsMTQ5OiJXQUlUIiwxNTA6IkZPUk1BVC5GT05UIiwxNTE6IkZJTEwuVVAiLDE1MjoiRklMTC5MRUZUIiwxNTM6IkRFTEVURS5PVkVSTEFZIiwxNTU6IlNIT1JULk1FTlVTIiwxNTk6IlNFVC5VUERBVEUuU1RBVFVTIiwxNjE6IkNPTE9SLlBBTEVUVEUiLDE2MjoiREVMRVRFLlNUWUxFIiwxNjM6IldJTkRPVy5SRVNUT1JFIiwxNjQ6IldJTkRPVy5NQVhJTUlaRSIsMTY2OiJDSEFOR0UuTElOSyIsMTY3OiJDQUxDVUxBVEUuRE9DVU1FTlQiLDE2ODoiT04uS0VZIiwxNjk6IkFQUC5SRVNUT1JFIiwxNzA6IkFQUC5NT1ZFIiwxNzE6IkFQUC5TSVpFIiwxNzI6IkFQUC5NSU5JTUlaRSIsMTczOiJBUFAuTUFYSU1JWkUiLDE3NDoiQlJJTkcuVE8uRlJPTlQiLDE3NToiU0VORC5UTy5CQUNLIiwxODU6Ik1BSU4uQ0hBUlQuVFlQRSIsMTg2OiJPVkVSTEFZLkNIQVJULlRZUEUiLDE4NzoiU0VMRUNULkVORCIsMTg4OiJPUEVOLk1BSUwiLDE4OToiU0VORC5NQUlMIiwxOTA6IlNUQU5EQVJELkZPTlQiLDE5MToiQ09OU09MSURBVEUiLDE5MjoiU09SVC5TUEVDSUFMIiwxOTM6IkdBTExFUlkuM0QuQVJFQSIsMTk0OiJHQUxMRVJZLjNELkNPTFVNTiIsMTk1OiJHQUxMRVJZLjNELkxJTkUiLDE5NjoiR0FMTEVSWS4zRC5QSUUiLDE5NzoiVklFVy4zRCIsMTk4OiJHT0FMLlNFRUsiLDE5OToiV09SS0dST1VQIiwyMDA6IkZJTEwuR1JPVVAiLDIwMToiVVBEQVRFLkxJTksiLDIwMjoiUFJPTU9URSIsMjAzOiJERU1PVEUiLDIwNDoiU0hPVy5ERVRBSUwiLDIwNjoiVU5HUk9VUCIsMjA3OiJPQkpFQ1QuUFJPUEVSVElFUyIsMjA4OiJTQVZFLk5FVy5PQkpFQ1QiLDIwOToiU0hBUkUiLDIxMDoiU0hBUkUuTkFNRSIsMjExOiJEVVBMSUNBVEUiLDIxMjoiQVBQTFkuU1RZTEUiLDIxMzoiQVNTSUdOLlRPLk9CSkVDVCIsMjE0OiJPQkpFQ1QuUFJPVEVDVElPTiIsMjE1OiJISURFLk9CSkVDVCIsMjE2OiJTRVQuRVhUUkFDVCIsMjE3OiJDUkVBVEUuUFVCTElTSEVSIiwyMTg6IlNVQlNDUklCRS5UTyIsMjE5OiJBVFRSSUJVVEVTIiwyMjA6IlNIT1cuVE9PTEJBUiIsMjIyOiJQUklOVC5QUkVWSUVXIiwyMjM6IkVESVQuQ09MT1IiLDIyNDoiU0hPVy5MRVZFTFMiLDIyNToiRk9STUFULk1BSU4iLDIyNjoiRk9STUFULk9WRVJMQVkiLDIyNzoiT04uUkVDQUxDIiwyMjg6IkVESVQuU0VSSUVTIiwyMjk6IkRFRklORS5TVFlMRSIsMjQwOiJMSU5FLlBSSU5UIiwyNDM6IkVOVEVSLkRBVEEiLDI0OToiR0FMTEVSWS5SQURBUiIsMjUwOiJNRVJHRS5TVFlMRVMiLDI1MToiRURJVElPTi5PUFRJT05TIiwyNTI6IlBBU1RFLlBJQ1RVUkUiLDI1MzoiUEFTVEUuUElDVFVSRS5MSU5LIiwyNTQ6IlNQRUxMSU5HIiwyNTY6IlpPT00iLDI1OToiSU5TRVJULk9CSkVDVCIsMjYwOiJXSU5ET1cuTUlOSU1JWkUiLDI2NToiU09VTkQuTk9URSIsMjY2OiJTT1VORC5QTEFZIiwyNjc6IkZPUk1BVC5TSEFQRSIsMjY4OiJFWFRFTkQuUE9MWUdPTiIsMjY5OiJGT1JNQVQuQVVUTyIsMjcyOiJHQUxMRVJZLjNELkJBUiIsMjczOiJHQUxMRVJZLjNELlNVUkZBQ0UiLDI3NDoiRklMTC5BVVRPIiwyNzY6IkNVU1RPTUlaRS5UT09MQkFSIiwyNzc6IkFERC5UT09MIiwyNzg6IkVESVQuT0JKRUNUIiwyNzk6Ik9OLkRPVUJMRUNMSUNLIiwyODA6Ik9OLkVOVFJZIiwyODE6IldPUktCT09LLkFERCIsMjgyOiJXT1JLQk9PSy5NT1ZFIiwyODM6IldPUktCT09LLkNPUFkiLDI4NDoiV09SS0JPT0suT1BUSU9OUyIsMjg1OiJTQVZFLldPUktTUEFDRSIsMjg4OiJDSEFSVC5XSVpBUkQiLDI4OToiREVMRVRFLlRPT0wiLDI5MDoiTU9WRS5UT09MIiwyOTE6IldPUktCT09LLlNFTEVDVCIsMjkyOiJXT1JLQk9PSy5BQ1RJVkFURSIsMjkzOiJBU1NJR04uVE8uVE9PTCIsMjk1OiJDT1BZLlRPT0wiLDI5NjoiUkVTRVQuVE9PTCIsMjk3OiJDT05TVFJBSU4uTlVNRVJJQyIsMjk4OiJQQVNURS5UT09MIiwzMDI6IldPUktCT09LLk5FVyIsMzA1OiJTQ0VOQVJJTy5DRUxMUyIsMzA2OiJTQ0VOQVJJTy5ERUxFVEUiLDMwNzoiU0NFTkFSSU8uQUREIiwzMDg6IlNDRU5BUklPLkVESVQiLDMwOToiU0NFTkFSSU8uU0hPVyIsMzEwOiJTQ0VOQVJJTy5TSE9XLk5FWFQiLDMxMToiU0NFTkFSSU8uU1VNTUFSWSIsMzEyOiJQSVZPVC5UQUJMRS5XSVpBUkQiLDMxMzoiUElWT1QuRklFTEQuUFJPUEVSVElFUyIsMzE0OiJQSVZPVC5GSUVMRCIsMzE1OiJQSVZPVC5JVEVNIiwzMTY6IlBJVk9ULkFERC5GSUVMRFMiLDMxODoiT1BUSU9OUy5DQUxDVUxBVElPTiIsMzE5OiJPUFRJT05TLkVESVQiLDMyMDoiT1BUSU9OUy5WSUVXIiwzMjE6IkFERElOLk1BTkFHRVIiLDMyMjoiTUVOVS5FRElUT1IiLDMyMzoiQVRUQUNILlRPT0xCQVJTIiwzMjQ6IlZCQUFjdGl2YXRlIiwzMjU6Ik9QVElPTlMuQ0hBUlQiLDMyODoiVkJBLklOU0VSVC5GSUxFIiwzMzA6IlZCQS5QUk9DRURVUkUuREVGSU5JVElPTiIsMzM2OiJST1VUSU5HLlNMSVAiLDMzODoiUk9VVEUuRE9DVU1FTlQiLDMzOToiTUFJTC5MT0dPTiIsMzQyOiJJTlNFUlQuUElDVFVSRSIsMzQzOiJFRElULlRPT0wiLDM0NDoiR0FMTEVSWS5ET1VHSE5VVCIsMzUwOiJDSEFSVC5UUkVORCIsMzUyOiJQSVZPVC5JVEVNLlBST1BFUlRJRVMiLDM1NDoiV09SS0JPT0suSU5TRVJUIiwzNTU6Ik9QVElPTlMuVFJBTlNJVElPTiIsMzU2OiJPUFRJT05TLkdFTkVSQUwiLDM3MDoiRklMVEVSLkFEVkFOQ0VEIiwzNzM6Ik1BSUwuQURELk1BSUxFUiIsMzc0OiJNQUlMLkRFTEVURS5NQUlMRVIiLDM3NToiTUFJTC5SRVBMWSIsMzc2OiJNQUlMLlJFUExZLkFMTCIsMzc3OiJNQUlMLkZPUldBUkQiLDM3ODoiTUFJTC5ORVhULkxFVFRFUiIsMzc5OiJEQVRBLkxBQkVMIiwzODA6IklOU0VSVC5USVRMRSIsMzgxOiJGT05ULlBST1BFUlRJRVMiLDM4MjoiTUFDUk8uT1BUSU9OUyIsMzgzOiJXT1JLQk9PSy5ISURFIiwzODQ6IldPUktCT09LLlVOSElERSIsMzg1OiJXT1JLQk9PSy5ERUxFVEUiLDM4NjoiV09SS0JPT0suTkFNRSIsMzg4OiJHQUxMRVJZLkNVU1RPTSIsMzkwOiJBREQuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkxOiJERUxFVEUuQ0hBUlQuQVVUT0ZPUk1BVCIsMzkyOiJDSEFSVC5BREQuREFUQSIsMzkzOiJBVVRPLk9VVExJTkUiLDM5NDoiVEFCLk9SREVSIiwzOTU6IlNIT1cuRElBTE9HIiwzOTY6IlNFTEVDVC5BTEwiLDM5NzoiVU5HUk9VUC5TSEVFVFMiLDM5ODoiU1VCVE9UQUwuQ1JFQVRFIiwzOTk6IlNVQlRPVEFMLlJFTU9WRSIsNDAwOiJSRU5BTUUuT0JKRUNUIiw0MTI6IldPUktCT09LLlNDUk9MTCIsNDEzOiJXT1JLQk9PSy5ORVhUIiw0MTQ6IldPUktCT09LLlBSRVYiLDQxNToiV09SS0JPT0suVEFCLlNQTElUIiw0MTY6IkZVTEwuU0NSRUVOIiw0MTc6IldPUktCT09LLlBST1RFQ1QiLDQyMDoiU0NST0xMQkFSLlBST1BFUlRJRVMiLDQyMToiUElWT1QuU0hPVy5QQUdFUyIsNDIyOiJURVhULlRPLkNPTFVNTlMiLDQyMzoiRk9STUFULkNIQVJUVFlQRSIsNDI0OiJMSU5LLkZPUk1BVCIsNDI1OiJUUkFDRVIuRElTUExBWSIsNDMwOiJUUkFDRVIuTkFWSUdBVEUiLDQzMToiVFJBQ0VSLkNMRUFSIiw0MzI6IlRSQUNFUi5FUlJPUiIsNDMzOiJQSVZPVC5GSUVMRC5HUk9VUCIsNDM0OiJQSVZPVC5GSUVMRC5VTkdST1VQIiw0MzU6IkNIRUNLQk9YLlBST1BFUlRJRVMiLDQzNjoiTEFCRUwuUFJPUEVSVElFUyIsNDM3OiJMSVNUQk9YLlBST1BFUlRJRVMiLDQzODoiRURJVEJPWC5QUk9QRVJUSUVTIiw0Mzk6IlBJVk9ULlJFRlJFU0giLDQ0MDoiTElOSy5DT01CTyIsNDQxOiJPUEVOLlRFWFQiLDQ0MjoiSElERS5ESUFMT0ciLDQ0MzoiU0VULkRJQUxPRy5GT0NVUyIsNDQ0OiJFTkFCTEUuT0JKRUNUIiw0NDU6IlBVU0hCVVRUT04uUFJPUEVSVElFUyIsNDQ2OiJTRVQuRElBTE9HLkRFRkFVTFQiLDQ0NzoiRklMVEVSIiw0NDg6IkZJTFRFUi5TSE9XLkFMTCIsNDQ5OiJDTEVBUi5PVVRMSU5FIiw0NTA6IkZVTkNUSU9OLldJWkFSRCIsNDUxOiJBREQuTElTVC5JVEVNIiw0NTI6IlNFVC5MSVNULklURU0iLDQ1MzoiUkVNT1ZFLkxJU1QuSVRFTSIsNDU0OiJTRUxFQ1QuTElTVC5JVEVNIiw0NTU6IlNFVC5DT05UUk9MLlZBTFVFIiw0NTY6IlNBVkUuQ09QWS5BUyIsNDU4OiJPUFRJT05TLkxJU1RTLkFERCIsNDU5OiJPUFRJT05TLkxJU1RTLkRFTEVURSIsNDYwOiJTRVJJRVMuQVhFUyIsNDYxOiJTRVJJRVMuWCIsNDYyOiJTRVJJRVMuWSIsNDYzOiJFUlJPUkJBUi5YIiw0NjQ6IkVSUk9SQkFSLlkiLDQ2NToiRk9STUFULkNIQVJUIiw0NjY6IlNFUklFUy5PUkRFUiIsNDY3OiJNQUlMLkxPR09GRiIsNDY4OiJDTEVBUi5ST1VUSU5HLlNMSVAiLDQ2OToiQVBQLkFDVElWQVRFLk1JQ1JPU09GVCIsNDcwOiJNQUlMLkVESVQuTUFJTEVSIiw0NzE6Ik9OLlNIRUVUIiw0NzI6IlNUQU5EQVJELldJRFRIIiw0NzM6IlNDRU5BUklPLk1FUkdFIiw0NzQ6IlNVTU1BUlkuSU5GTyIsNDc1OiJGSU5ELkZJTEUiLDQ3NjoiQUNUSVZFLkNFTEwuRk9OVCIsNDc3OiJFTkFCTEUuVElQV0laQVJEIiw0Nzg6IlZCQS5NQUtFLkFERElOIiw0ODA6IklOU0VSVERBVEFUQUJMRSIsNDgxOiJXT1JLR1JPVVAuT1BUSU9OUyIsNDgyOiJNQUlMLlNFTkQuTUFJTEVSIiw0ODU6IkFVVE9DT1JSRUNUIiw0ODk6IlBPU1QuRE9DVU1FTlQiLDQ5MToiUElDS0xJU1QiLDQ5MzoiVklFVy5TSE9XIiw0OTQ6IlZJRVcuREVGSU5FIiw0OTU6IlZJRVcuREVMRVRFIiw1MDk6IlNIRUVULkJBQ0tHUk9VTkQiLDUxMDoiSU5TRVJULk1BUC5PQkpFQ1QiLDUxMToiT1BUSU9OUy5NRU5PTk8iLDUxNzoiTVNPQ0hFQ0tTIiw1MTg6Ik5PUk1BTCIsNTE5OiJMQVlPVVQiLDUyMDoiUk0uUFJJTlQuQVJFQSIsNTIxOiJDTEVBUi5QUklOVC5BUkVBIiw1MjI6IkFERC5QUklOVC5BUkVBIiw1MjM6Ik1PVkUuQlJLIiw1NDU6IkhJREVDVVJSLk5PVEUiLDU0NjoiSElERUFMTC5OT1RFUyIsNTQ3OiJERUxFVEUuTk9URSIsNTQ4OiJUUkFWRVJTRS5OT1RFUyIsNTQ5OiJBQ1RJVkFURS5OT1RFUyIsNjIwOiJQUk9URUNULlJFVklTSU9OUyIsNjIxOiJVTlBST1RFQ1QuUkVWSVNJT05TIiw2NDc6Ik9QVElPTlMuTUUiLDY1MzoiV0VCLlBVQkxJU0giLDY2NzoiTkVXV0VCUVVFUlkiLDY3MzoiUElWT1QuVEFCTEUuQ0hBUlQiLDc1MzoiT1BUSU9OUy5TQVZFIiw3NTU6Ik9QVElPTlMuU1BFTEwiLDgwODoiSElERUFMTC5JTktBTk5PVFMifSxjZj17MDoiQ09VTlQiLDE6IklGIiwyOiJJU05BIiwzOiJJU0VSUk9SIiw0OiJTVU0iLDU6IkFWRVJBR0UiLDY6Ik1JTiIsNzoiTUFYIiw4OiJST1ciLDk6IkNPTFVNTiIsMTA6Ik5BIiwxMToiTlBWIiwxMjoiU1RERVYiLDEzOiJET0xMQVIiLDE0OiJGSVhFRCIsMTU6IlNJTiIsMTY6IkNPUyIsMTc6IlRBTiIsMTg6IkFUQU4iLDE5OiJQSSIsMjA6IlNRUlQiLDIxOiJFWFAiLDIyOiJMTiIsMjM6IkxPRzEwIiwyNDoiQUJTIiwyNToiSU5UIiwyNjoiU0lHTiIsMjc6IlJPVU5EIiwyODoiTE9PS1VQIiwyOToiSU5ERVgiLDMwOiJSRVBUIiwzMToiTUlEIiwzMjoiTEVOIiwzMzoiVkFMVUUiLDM0OiJUUlVFIiwzNToiRkFMU0UiLDM2OiJBTkQiLDM3OiJPUiIsMzg6Ik5PVCIsMzk6Ik1PRCIsNDA6IkRDT1VOVCIsNDE6IkRTVU0iLDQyOiJEQVZFUkFHRSIsNDM6IkRNSU4iLDQ0OiJETUFYIiw0NToiRFNUREVWIiw0NjoiVkFSIiw0NzoiRFZBUiIsNDg6IlRFWFQiLDQ5OiJMSU5FU1QiLDUwOiJUUkVORCIsNTE6IkxPR0VTVCIsNTI6IkdST1dUSCIsNTM6IkdPVE8iLDU0OiJIQUxUIiw1NToiUkVUVVJOIiw1NjoiUFYiLDU3OiJGViIsNTg6Ik5QRVIiLDU5OiJQTVQiLDYwOiJSQVRFIiw2MToiTUlSUiIsNjI6IklSUiIsNjM6IlJBTkQiLDY0OiJNQVRDSCIsNjU6IkRBVEUiLDY2OiJUSU1FIiw2NzoiREFZIiw2ODoiTU9OVEgiLDY5OiJZRUFSIiw3MDoiV0VFS0RBWSIsNzE6IkhPVVIiLDcyOiJNSU5VVEUiLDczOiJTRUNPTkQiLDc0OiJOT1ciLDc1OiJBUkVBUyIsNzY6IlJPV1MiLDc3OiJDT0xVTU5TIiw3ODoiT0ZGU0VUIiw3OToiQUJTUkVGIiw4MDoiUkVMUkVGIiw4MToiQVJHVU1FTlQiLDgyOiJTRUFSQ0giLDgzOiJUUkFOU1BPU0UiLDg0OiJFUlJPUiIsODU6IlNURVAiLDg2OiJUWVBFIiw4NzoiRUNITyIsODg6IlNFVC5OQU1FIiw4OToiQ0FMTEVSIiw5MDoiREVSRUYiLDkxOiJXSU5ET1dTIiw5MjoiU0VSSUVTIiw5MzoiRE9DVU1FTlRTIiw5NDoiQUNUSVZFLkNFTEwiLDk1OiJTRUxFQ1RJT04iLDk2OiJSRVNVTFQiLDk3OiJBVEFOMiIsOTg6IkFTSU4iLDk5OiJBQ09TIiwxMDA6IkNIT09TRSIsMTAxOiJITE9PS1VQIiwxMDI6IlZMT09LVVAiLDEwMzoiTElOS1MiLDEwNDoiSU5QVVQiLDEwNToiSVNSRUYiLDEwNjoiR0VULkZPUk1VTEEiLDEwNzoiR0VULk5BTUUiLDEwODoiU0VULlZBTFVFIiwxMDk6IkxPRyIsMTEwOiJFWEVDIiwxMTE6IkNIQVIiLDExMjoiTE9XRVIiLDExMzoiVVBQRVIiLDExNDoiUFJPUEVSIiwxMTU6IkxFRlQiLDExNjoiUklHSFQiLDExNzoiRVhBQ1QiLDExODoiVFJJTSIsMTE5OiJSRVBMQUNFIiwxMjA6IlNVQlNUSVRVVEUiLDEyMToiQ09ERSIsMTIyOiJOQU1FUyIsMTIzOiJESVJFQ1RPUlkiLDEyNDoiRklORCIsMTI1OiJDRUxMIiwxMjY6IklTRVJSIiwxMjc6IklTVEVYVCIsMTI4OiJJU05VTUJFUiIsMTI5OiJJU0JMQU5LIiwxMzA6IlQiLDEzMToiTiIsMTMyOiJGT1BFTiIsMTMzOiJGQ0xPU0UiLDEzNDoiRlNJWkUiLDEzNToiRlJFQURMTiIsMTM2OiJGUkVBRCIsMTM3OiJGV1JJVEVMTiIsMTM4OiJGV1JJVEUiLDEzOToiRlBPUyIsMTQwOiJEQVRFVkFMVUUiLDE0MToiVElNRVZBTFVFIiwxNDI6IlNMTiIsMTQzOiJTWUQiLDE0NDoiRERCIiwxNDU6IkdFVC5ERUYiLDE0NjoiUkVGVEVYVCIsMTQ3OiJURVhUUkVGIiwxNDg6IklORElSRUNUIiwxNDk6IlJFR0lTVEVSIiwxNTA6IkNBTEwiLDE1MToiQURELkJBUiIsMTUyOiJBREQuTUVOVSIsMTUzOiJBREQuQ09NTUFORCIsMTU0OiJFTkFCTEUuQ09NTUFORCIsMTU1OiJDSEVDSy5DT01NQU5EIiwxNTY6IlJFTkFNRS5DT01NQU5EIiwxNTc6IlNIT1cuQkFSIiwxNTg6IkRFTEVURS5NRU5VIiwxNTk6IkRFTEVURS5DT01NQU5EIiwxNjA6IkdFVC5DSEFSVC5JVEVNIiwxNjE6IkRJQUxPRy5CT1giLDE2MjoiQ0xFQU4iLDE2MzoiTURFVEVSTSIsMTY0OiJNSU5WRVJTRSIsMTY1OiJNTVVMVCIsMTY2OiJGSUxFUyIsMTY3OiJJUE1UIiwxNjg6IlBQTVQiLDE2OToiQ09VTlRBIiwxNzA6IkNBTkNFTC5LRVkiLDE3MToiRk9SIiwxNzI6IldISUxFIiwxNzM6IkJSRUFLIiwxNzQ6Ik5FWFQiLDE3NToiSU5JVElBVEUiLDE3NjoiUkVRVUVTVCIsMTc3OiJQT0tFIiwxNzg6IkVYRUNVVEUiLDE3OToiVEVSTUlOQVRFIiwxODA6IlJFU1RBUlQiLDE4MToiSEVMUCIsMTgyOiJHRVQuQkFSIiwxODM6IlBST0RVQ1QiLDE4NDoiRkFDVCIsMTg1OiJHRVQuQ0VMTCIsMTg2OiJHRVQuV09SS1NQQUNFIiwxODc6IkdFVC5XSU5ET1ciLDE4ODoiR0VULkRPQ1VNRU5UIiwxODk6IkRQUk9EVUNUIiwxOTA6IklTTk9OVEVYVCIsMTkxOiJHRVQuTk9URSIsMTkyOiJOT1RFIiwxOTM6IlNUREVWUCIsMTk0OiJWQVJQIiwxOTU6IkRTVERFVlAiLDE5NjoiRFZBUlAiLDE5NzoiVFJVTkMiLDE5ODoiSVNMT0dJQ0FMIiwxOTk6IkRDT1VOVEEiLDIwMDoiREVMRVRFLkJBUiIsMjAxOiJVTlJFR0lTVEVSIiwyMDQ6IlVTRE9MTEFSIiwyMDU6IkZJTkRCIiwyMDY6IlNFQVJDSEIiLDIwNzoiUkVQTEFDRUIiLDIwODoiTEVGVEIiLDIwOToiUklHSFRCIiwyMTA6Ik1JREIiLDIxMToiTEVOQiIsMjEyOiJST1VORFVQIiwyMTM6IlJPVU5ERE9XTiIsMjE0OiJBU0MiLDIxNToiREJDUyIsMjE2OiJSQU5LIiwyMTk6IkFERFJFU1MiLDIyMDoiREFZUzM2MCIsMjIxOiJUT0RBWSIsMjIyOiJWREIiLDIyMzoiRUxTRSIsMjI0OiJFTFNFLklGIiwyMjU6IkVORC5JRiIsMjI2OiJGT1IuQ0VMTCIsMjI3OiJNRURJQU4iLDIyODoiU1VNUFJPRFVDVCIsMjI5OiJTSU5IIiwyMzA6IkNPU0giLDIzMToiVEFOSCIsMjMyOiJBU0lOSCIsMjMzOiJBQ09TSCIsMjM0OiJBVEFOSCIsMjM1OiJER0VUIiwyMzY6IkNSRUFURS5PQkpFQ1QiLDIzNzoiVk9MQVRJTEUiLDIzODoiTEFTVC5FUlJPUiIsMjM5OiJDVVNUT00uVU5ETyIsMjQwOiJDVVNUT00uUkVQRUFUIiwyNDE6IkZPUk1VTEEuQ09OVkVSVCIsMjQyOiJHRVQuTElOSy5JTkZPIiwyNDM6IlRFWFQuQk9YIiwyNDQ6IklORk8iLDI0NToiR1JPVVAiLDI0NjoiR0VULk9CSkVDVCIsMjQ3OiJEQiIsMjQ4OiJQQVVTRSIsMjUxOiJSRVNVTUUiLDI1MjoiRlJFUVVFTkNZIiwyNTM6IkFERC5UT09MQkFSIiwyNTQ6IkRFTEVURS5UT09MQkFSIiwyNTU6IlVzZXIiLDI1NjoiUkVTRVQuVE9PTEJBUiIsMjU3OiJFVkFMVUFURSIsMjU4OiJHRVQuVE9PTEJBUiIsMjU5OiJHRVQuVE9PTCIsMjYwOiJTUEVMTElORy5DSEVDSyIsMjYxOiJFUlJPUi5UWVBFIiwyNjI6IkFQUC5USVRMRSIsMjYzOiJXSU5ET1cuVElUTEUiLDI2NDoiU0FWRS5UT09MQkFSIiwyNjU6IkVOQUJMRS5UT09MIiwyNjY6IlBSRVNTLlRPT0wiLDI2NzoiUkVHSVNURVIuSUQiLDI2ODoiR0VULldPUktCT09LIiwyNjk6IkFWRURFViIsMjcwOiJCRVRBRElTVCIsMjcxOiJHQU1NQUxOIiwyNzI6IkJFVEFJTlYiLDI3MzoiQklOT01ESVNUIiwyNzQ6IkNISURJU1QiLDI3NToiQ0hJSU5WIiwyNzY6IkNPTUJJTiIsMjc3OiJDT05GSURFTkNFIiwyNzg6IkNSSVRCSU5PTSIsMjc5OiJFVkVOIiwyODA6IkVYUE9ORElTVCIsMjgxOiJGRElTVCIsMjgyOiJGSU5WIiwyODM6IkZJU0hFUiIsMjg0OiJGSVNIRVJJTlYiLDI4NToiRkxPT1IiLDI4NjoiR0FNTUFESVNUIiwyODc6IkdBTU1BSU5WIiwyODg6IkNFSUxJTkciLDI4OToiSFlQR0VPTURJU1QiLDI5MDoiTE9HTk9STURJU1QiLDI5MToiTE9HSU5WIiwyOTI6Ik5FR0JJTk9NRElTVCIsMjkzOiJOT1JNRElTVCIsMjk0OiJOT1JNU0RJU1QiLDI5NToiTk9STUlOViIsMjk2OiJOT1JNU0lOViIsMjk3OiJTVEFOREFSRElaRSIsMjk4OiJPREQiLDI5OToiUEVSTVVUIiwzMDA6IlBPSVNTT04iLDMwMToiVERJU1QiLDMwMjoiV0VJQlVMTCIsMzAzOiJTVU1YTVkyIiwzMDQ6IlNVTVgyTVkyIiwzMDU6IlNVTVgyUFkyIiwzMDY6IkNISVRFU1QiLDMwNzoiQ09SUkVMIiwzMDg6IkNPVkFSIiwzMDk6IkZPUkVDQVNUIiwzMTA6IkZURVNUIiwzMTE6IklOVEVSQ0VQVCIsMzEyOiJQRUFSU09OIiwzMTM6IlJTUSIsMzE0OiJTVEVZWCIsMzE1OiJTTE9QRSIsMzE2OiJUVEVTVCIsMzE3OiJQUk9CIiwzMTg6IkRFVlNRIiwzMTk6IkdFT01FQU4iLDMyMDoiSEFSTUVBTiIsMzIxOiJTVU1TUSIsMzIyOiJLVVJUIiwzMjM6IlNLRVciLDMyNDoiWlRFU1QiLDMyNToiTEFSR0UiLDMyNjoiU01BTEwiLDMyNzoiUVVBUlRJTEUiLDMyODoiUEVSQ0VOVElMRSIsMzI5OiJQRVJDRU5UUkFOSyIsMzMwOiJNT0RFIiwzMzE6IlRSSU1NRUFOIiwzMzI6IlRJTlYiLDMzNDoiTU9WSUUuQ09NTUFORCIsMzM1OiJHRVQuTU9WSUUiLDMzNjoiQ09OQ0FURU5BVEUiLDMzNzoiUE9XRVIiLDMzODoiUElWT1QuQURELkRBVEEiLDMzOToiR0VULlBJVk9ULlRBQkxFIiwzNDA6IkdFVC5QSVZPVC5GSUVMRCIsMzQxOiJHRVQuUElWT1QuSVRFTSIsMzQyOiJSQURJQU5TIiwzNDM6IkRFR1JFRVMiLDM0NDoiU1VCVE9UQUwiLDM0NToiU1VNSUYiLDM0NjoiQ09VTlRJRiIsMzQ3OiJDT1VOVEJMQU5LIiwzNDg6IlNDRU5BUklPLkdFVCIsMzQ5OiJPUFRJT05TLkxJU1RTLkdFVCIsMzUwOiJJU1BNVCIsMzUxOiJEQVRFRElGIiwzNTI6IkRBVEVTVFJJTkciLDM1MzoiTlVNQkVSU1RSSU5HIiwzNTQ6IlJPTUFOIiwzNTU6Ik9QRU4uRElBTE9HIiwzNTY6IlNBVkUuRElBTE9HIiwzNTc6IlZJRVcuR0VUIiwzNTg6IkdFVFBJVk9UREFUQSIsMzU5OiJIWVBFUkxJTksiLDM2MDoiUEhPTkVUSUMiLDM2MToiQVZFUkFHRUEiLDM2MjoiTUFYQSIsMzYzOiJNSU5BIiwzNjQ6IlNUREVWUEEiLDM2NToiVkFSUEEiLDM2NjoiU1RERVZBIiwzNjc6IlZBUkEiLDM2ODoiQkFIVFRFWFQiLDM2OToiVEhBSURBWU9GV0VFSyIsMzcwOiJUSEFJRElHSVQiLDM3MToiVEhBSU1PTlRIT0ZZRUFSIiwzNzI6IlRIQUlOVU1TT1VORCIsMzczOiJUSEFJTlVNU1RSSU5HIiwzNzQ6IlRIQUlTVFJJTkdMRU5HVEgiLDM3NToiSVNUSEFJRElHSVQiLDM3NjoiUk9VTkRCQUhURE9XTiIsMzc3OiJST1VOREJBSFRVUCIsMzc4OiJUSEFJWUVBUiIsMzc5OiJSVEQiLDM4MDoiQ1VCRVZBTFVFIiwzODE6IkNVQkVNRU1CRVIiLDM4MjoiQ1VCRU1FTUJFUlBST1BFUlRZIiwzODM6IkNVQkVSQU5LRURNRU1CRVIiLDM4NDoiSEVYMkJJTiIsMzg1OiJIRVgyREVDIiwzODY6IkhFWDJPQ1QiLDM4NzoiREVDMkJJTiIsMzg4OiJERUMySEVYIiwzODk6IkRFQzJPQ1QiLDM5MDoiT0NUMkJJTiIsMzkxOiJPQ1QySEVYIiwzOTI6Ik9DVDJERUMiLDM5MzoiQklOMkRFQyIsMzk0OiJCSU4yT0NUIiwzOTU6IkJJTjJIRVgiLDM5NjoiSU1TVUIiLDM5NzoiSU1ESVYiLDM5ODoiSU1QT1dFUiIsMzk5OiJJTUFCUyIsNDAwOiJJTVNRUlQiLDQwMToiSU1MTiIsNDAyOiJJTUxPRzIiLDQwMzoiSU1MT0cxMCIsNDA0OiJJTVNJTiIsNDA1OiJJTUNPUyIsNDA2OiJJTUVYUCIsNDA3OiJJTUFSR1VNRU5UIiw0MDg6IklNQ09OSlVHQVRFIiw0MDk6IklNQUdJTkFSWSIsNDEwOiJJTVJFQUwiLDQxMToiQ09NUExFWCIsNDEyOiJJTVNVTSIsNDEzOiJJTVBST0RVQ1QiLDQxNDoiU0VSSUVTU1VNIiw0MTU6IkZBQ1RET1VCTEUiLDQxNjoiU1FSVFBJIiw0MTc6IlFVT1RJRU5UIiw0MTg6IkRFTFRBIiw0MTk6IkdFU1RFUCIsNDIwOiJJU0VWRU4iLDQyMToiSVNPREQiLDQyMjoiTVJPVU5EIiw0MjM6IkVSRiIsNDI0OiJFUkZDIiw0MjU6IkJFU1NFTEoiLDQyNjoiQkVTU0VMSyIsNDI3OiJCRVNTRUxZIiw0Mjg6IkJFU1NFTEkiLDQyOToiWElSUiIsNDMwOiJYTlBWIiw0MzE6IlBSSUNFTUFUIiw0MzI6IllJRUxETUFUIiw0MzM6IklOVFJBVEUiLDQzNDoiUkVDRUlWRUQiLDQzNToiRElTQyIsNDM2OiJQUklDRURJU0MiLDQzNzoiWUlFTERESVNDIiw0Mzg6IlRCSUxMRVEiLDQzOToiVEJJTExQUklDRSIsNDQwOiJUQklMTFlJRUxEIiw0NDE6IlBSSUNFIiw0NDI6IllJRUxEIiw0NDM6IkRPTExBUkRFIiw0NDQ6IkRPTExBUkZSIiw0NDU6Ik5PTUlOQUwiLDQ0NjoiRUZGRUNUIiw0NDc6IkNVTVBSSU5DIiw0NDg6IkNVTUlQTVQiLDQ0OToiRURBVEUiLDQ1MDoiRU9NT05USCIsNDUxOiJZRUFSRlJBQyIsNDUyOiJDT1VQREFZQlMiLDQ1MzoiQ09VUERBWVMiLDQ1NDoiQ09VUERBWVNOQyIsNDU1OiJDT1VQTkNEIiw0NTY6IkNPVVBOVU0iLDQ1NzoiQ09VUFBDRCIsNDU4OiJEVVJBVElPTiIsNDU5OiJNRFVSQVRJT04iLDQ2MDoiT0RETFBSSUNFIiw0NjE6Ik9ERExZSUVMRCIsNDYyOiJPRERGUFJJQ0UiLDQ2MzoiT0RERllJRUxEIiw0NjQ6IlJBTkRCRVRXRUVOIiw0NjU6IldFRUtOVU0iLDQ2NjoiQU1PUkRFR1JDIiw0Njc6IkFNT1JMSU5DIiw0Njg6IkNPTlZFUlQiLDcyNDoiU0hFRVRKUyIsNDY5OiJBQ0NSSU5UIiw0NzA6IkFDQ1JJTlRNIiw0NzE6IldPUktEQVkiLDQ3MjoiTkVUV09SS0RBWVMiLDQ3MzoiR0NEIiw0NzQ6Ik1VTFRJTk9NSUFMIiw0NzU6IkxDTSIsNDc2OiJGVlNDSEVEVUxFIiw0Nzc6IkNVQkVLUElNRU1CRVIiLDQ3ODoiQ1VCRVNFVCIsNDc5OiJDVUJFU0VUQ09VTlQiLDQ4MDoiSUZFUlJPUiIsNDgxOiJDT1VOVElGUyIsNDgyOiJTVU1JRlMiLDQ4MzoiQVZFUkFHRUlGIiw0ODQ6IkFWRVJBR0VJRlMifSxuZD17MjoxLDM6MSwxMDowLDE1OjEsMTY6MSwxNzoxLDE4OjEsMTk6MCwyMDoxLDIxOjEsMjI6MSwyMzoxLDI0OjEsMjU6MSwyNjoxLDI3OjIsMzA6MiwzMTozLDMyOjEsMzM6MSwzNDowLDM1OjAsMzg6MSwzOToyLDQwOjMsNDE6Myw0MjozLDQzOjMsNDQ6Myw0NTozLDQ3OjMsNDg6Miw1MzoxLDYxOjMsNjM6MCw2NTozLDY2OjMsNjc6MSw2ODoxLDY5OjEsNzA6MSw3MToxLDcyOjEsNzM6MSw3NDowLDc1OjEsNzY6MSw3NzoxLDc5OjIsODA6Miw4MzoxLDg1OjAsODY6MSw4OTowLDkwOjEsOTQ6MCw5NTowLDk3OjIsOTg6MSw5OToxLDEwMTozLDEwMjozLDEwNToxLDEwNjoxLDEwODoyLDExMToxLDExMjoxLDExMzoxLDExNDoxLDExNzoyLDExODoxLDExOTo0LDEyMToxLDEyNjoxLDEyNzoxLDEyODoxLDEyOToxLDEzMDoxLDEzMToxLDEzMzoxLDEzNDoxLDEzNToxLDEzNjoyLDEzNzoyLDEzODoyLDE0MDoxLDE0MToxLDE0MjozLDE0Mzo0LDE0NDo0LDE2MToxLDE2MjoxLDE2MzoxLDE2NDoxLDE2NToyLDE3MjoxLDE3NToyLDE3NjoyLDE3NzozLDE3ODoyLDE3OToxLDE4NDoxLDE4NjoxLDE4OTozLDE5MDoxLDE5NTozLDE5NjozLDE5NzoxLDE5ODoxLDE5OTozLDIwMToxLDIwNzo0LDIxMDozLDIxMToxLDIxMjoyLDIxMzoyLDIxNDoxLDIxNToxLDIyNTowLDIyOToxLDIzMDoxLDIzMToxLDIzMjoxLDIzMzoxLDIzNDoxLDIzNTozLDI0NDoxLDI0Nzo0LDI1MjoyLDI1NzoxLDI2MToxLDI3MToxLDI3Mzo0LDI3NDoyLDI3NToyLDI3NjoyLDI3NzozLDI3ODozLDI3OToxLDI4MDozLDI4MTozLDI4MjozLDI4MzoxLDI4NDoxLDI4NToyLDI4Njo0LDI4NzozLDI4ODoyLDI4OTo0LDI5MDozLDI5MTozLDI5MjozLDI5Mzo0LDI5NDoxLDI5NTozLDI5NjoxLDI5NzozLDI5ODoxLDI5OToyLDMwMDozLDMwMTozLDMwMjo0LDMwMzoyLDMwNDoyLDMwNToyLDMwNjoyLDMwNzoyLDMwODoyLDMwOTozLDMxMDoyLDMxMToyLDMxMjoyLDMxMzoyLDMxNDoyLDMxNToyLDMxNjo0LDMyNToyLDMyNjoyLDMyNzoyLDMyODoyLDMzMToyLDMzMjoyLDMzNzoyLDM0MjoxLDM0MzoxLDM0NjoyLDM0NzoxLDM1MDo0LDM1MTozLDM1MjoxLDM1MzoyLDM2MDoxLDM2ODoxLDM2OToxLDM3MDoxLDM3MToxLDM3MjoxLDM3MzoxLDM3NDoxLDM3NToxLDM3NjoxLDM3NzoxLDM3ODoxLDM4MjozLDM4NToxLDM5MjoxLDM5MzoxLDM5NjoyLDM5NzoyLDM5ODoyLDM5OToxLDQwMDoxLDQwMToxLDQwMjoxLDQwMzoxLDQwNDoxLDQwNToxLDQwNjoxLDQwNzoxLDQwODoxLDQwOToxLDQxMDoxLDQxNDo0LDQxNToxLDQxNjoxLDQxNzoyLDQyMDoxLDQyMToxLDQyMjoyLDQyNDoxLDQyNToyLDQyNjoyLDQyNzoyLDQyODoyLDQzMDozLDQzODozLDQzOTozLDQ0MDozLDQ0MzoyLDQ0NDoyLDQ0NToyLDQ0NjoyLDQ0Nzo2LDQ0ODo2LDQ0OToyLDQ1MDoyLDQ2NDoyLDQ2ODozLDQ3NjoyLDQ3OToxLDQ4MDoyLDY1NTM1OjB9O2Z1bmN0aW9uIG9mKGUpe3JldHVybiBlLnNsaWNlKDAsMyk9PSJvZjoiJiYoZT1lLnNsaWNlKDMpKSxlLmNoYXJDb2RlQXQoMCk9PTYxJiYoZT1lLnNsaWNlKDEpLGUuY2hhckNvZGVBdCgwKT09NjEmJihlPWUuc2xpY2UoMSkpKSxlPWUucmVwbGFjZSgvQ09NXC5NSUNST1NPRlRcLi9nLCIiKSxlPWUucmVwbGFjZSgvXFsoKD86XC5bQS1aXStbMC05XSspKD86OlwuW0EtWl0rWzAtOV0rKT8pXF0vZyxmdW5jdGlvbihhLHIpe3JldHVybiByLnJlcGxhY2UoL1wuL2csIiIpfSksZT1lLnJlcGxhY2UoL1wkJyhbXiddfCcnKSsnL2csZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2xpY2UoMSl9KSxlPWUucmVwbGFjZSgvXCQoW15cXVwuICMkXSspL2csZnVuY3Rpb24oYSxyKXtyZXR1cm4gci5tYXRjaCgvXihbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSk/KDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pPyQvKT9hOnJ9KSxlPWUucmVwbGFjZSgvXFsuKCNbQS1aXSpbPyFdKVxdL2csIiQxIiksZS5yZXBsYWNlKC9bO35dL2csIiwiKS5yZXBsYWNlKC9cfC9nLCI7Iil9ZnVuY3Rpb24gRm4oZSl7ZT1lLnJlcGxhY2UoL1wkJyhbXiddfCcnKSsnL2csZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMSl9KSxlPWUucmVwbGFjZSgvXCQoW15cXVwuICMkXSspL2csZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5tYXRjaCgvXihbQS1aXXsxLDJ9fFtBLVddW0EtWl17Mn18WFtBLUVdW0EtWl18WEZbQS1EXSk/KDEwWzAtM11cZHs0fXwxMDRbMC03XVxkezN9fDEwNDhbMC00XVxkezJ9fDEwNDg1WzAtNl1cZHwxMDQ4NTdbMC02XXxbMS05XVxkezAsNX0pPyQvKT90Om59KTt2YXIgYT1lLnNwbGl0KCI6Iikscj1hWzBdLnNwbGl0KCIuIilbMF07cmV0dXJuW3IsYVswXS5zcGxpdCgiLiIpWzFdKyhhLmxlbmd0aD4xPyI6IisoYVsxXS5zcGxpdCgiLiIpWzFdfHxhWzFdLnNwbGl0KCIuIilbMF0pOiIiKV19dmFyIFh0PXt9LHh0PXt9O2Z1bmN0aW9uIHp0KGUsYSl7aWYoZSl7dmFyIHI9Wy43LC43LC43NSwuNzUsLjMsLjNdO2E9PSJ4bG1sIiYmKHI9WzEsMSwxLDEsLjUsLjVdKSxlLmxlZnQ9PW51bGwmJihlLmxlZnQ9clswXSksZS5yaWdodD09bnVsbCYmKGUucmlnaHQ9clsxXSksZS50b3A9PW51bGwmJihlLnRvcD1yWzJdKSxlLmJvdHRvbT09bnVsbCYmKGUuYm90dG9tPXJbM10pLGUuaGVhZGVyPT1udWxsJiYoZS5oZWFkZXI9cls0XSksZS5mb290ZXI9PW51bGwmJihlLmZvb3Rlcj1yWzVdKX19ZnVuY3Rpb24ga2EoZSxhKXtyZXR1cm4gYSYmcHIoYSkuZm9yRWFjaChmdW5jdGlvbihyKXtlW3JdPVVlKGFbcl0pfSksZX1mdW5jdGlvbiBsZihlLGEpe3JldHVybiBhJiYoYS5wYXR0ZXJuVHlwZSE9bnVsbCYmKGUucGF0dGVyblR5cGU9YS5wYXR0ZXJuVHlwZSksYS5mZ0NvbG9yIT1udWxsJiYoZS5mZ0NvbG9yPVVlKGEuZmdDb2xvcikpLGEuYmdDb2xvciE9bnVsbCYmKGUuYmdDb2xvcj1VZShhLmJnQ29sb3IpKSxhLmdyYWRpZW50RmlsbCE9bnVsbCYmKGUuZ3JhZGllbnRGaWxsPVVlKGEuZ3JhZGllbnRGaWxsKSkpLGV9ZnVuY3Rpb24gaWQoZSxhLHIsdCl7aWYoIWV8fCFhKXJldHVybiBudWxsO3ZhciBuPXt9O2EueGZJZCE9bnVsbCYmZS5DZWxsU3R5bGVYZiYmZS5DZWxsU3R5bGVYZlthLnhmSWRdJiZrYShuLGUuQ2VsbFN0eWxlWGZbYS54ZklkXSksa2EobixhKTt2YXIgaT17aWQ6dCx4ZjpVZShuKX07cmV0dXJuIG4ubnVtRm10SWQhPW51bGwmJihpLm51bUZtdElkPW4ubnVtRm10SWQsZS5OdW1iZXJGbXQmJmUuTnVtYmVyRm10W24ubnVtRm10SWRdIT1udWxsJiYoaS5udW1GbXQ9ZS5OdW1iZXJGbXRbbi5udW1GbXRJZF0pKSxuLmZvbnRJZCE9bnVsbCYmZS5Gb250cyYmZS5Gb250c1tuLmZvbnRJZF0mJihpLmZvbnQ9RTAoZS5Gb250c1tuLmZvbnRJZF0scikpLG4uZmlsbElkIT1udWxsJiZlLkZpbGxzJiZlLkZpbGxzW24uZmlsbElkXSYmKGkuZmlsbD1FMChlLkZpbGxzW24uZmlsbElkXSxyKSxsZihpLGkuZmlsbCkpLG4uYm9yZGVySWQhPW51bGwmJmUuQm9yZGVycyYmZS5Cb3JkZXJzW24uYm9yZGVySWRdJiYoaS5ib3JkZXI9RTAoZS5Cb3JkZXJzW24uYm9yZGVySWRdLHIpKSxuLmFsaWdubWVudCYmKGkuYWxpZ25tZW50PVVlKG4uYWxpZ25tZW50KSksbi5wcm90ZWN0aW9uJiYoaS5wcm90ZWN0aW9uPVVlKG4ucHJvdGVjdGlvbikpLGl9ZnVuY3Rpb24gdWYoZSxhLHIsdCxuLGksZixzLGMpe3RyeXt0LmNlbGxORiYmKGUuej1UZVthXSl9Y2F0Y2godSl7aWYodC5XVEYpdGhyb3cgdX1pZighKGUudD09PSJ6IiYmIXQuY2VsbFN0eWxlcykpe2lmKGUudD09PSJkIiYmdHlwZW9mIGUudj09InN0cmluZyImJihlLnY9eHIoZS52KSksKCF0fHx0LmNlbGxUZXh0IT09ITEpJiZlLnQhPT0ieiIpdHJ5e2lmKFRlW2FdPT1udWxsJiZMYShTY1thXXx8IkdlbmVyYWwiLGEpLGUudD09PSJlIillLnc9ZS53fHxicltlLnZdO2Vsc2UgaWYoYT09PTApaWYoZS50PT09Im4iKShlLnZ8MCk9PT1lLnY/ZS53PWUudi50b1N0cmluZygxMCk6ZS53PXl0KGUudik7ZWxzZSBpZihlLnQ9PT0iZCIpe3ZhciBvPW9yKGUudiwhIWYpOyhvfDApPT09bz9lLnc9by50b1N0cmluZygxMCk6ZS53PXl0KG8pfWVsc2V7aWYoZS52PT09dm9pZCAwKXJldHVybiIiO2Uudz1QYShlLnYseHQpfWVsc2UgZS50PT09ImQiP2Uudz1ScihhLG9yKGUudiwhIWYpLHh0KTplLnc9UnIoYSxlLnYseHQpfWNhdGNoKHUpe2lmKHQuV1RGKXRocm93IHV9aWYodC5jZWxsU3R5bGVzKXtpZihzIT1udWxsKXRyeXt2YXIgbD1pZChpLHMsbixjKTtpZihsKXtlLnM9bDtyZXR1cm59fWNhdGNoKHUpe2lmKHQuV1RGKXRocm93IHV9aWYociE9bnVsbCl0cnl7ZS5zPUUwKGkuRmlsbHNbcl0sbil9Y2F0Y2godSl7aWYodC5XVEYmJmkuRmlsbHMpdGhyb3cgdX19fX1mdW5jdGlvbiBzZChlLGEpe3JldHVybiEoZS5lLnI8YS5zLnJ8fGEuZS5yPGUucy5yfHxlLmUuYzxhLnMuY3x8YS5lLmM8ZS5zLmMpfWZ1bmN0aW9uIFRuKGUsYSl7Zm9yKHZhciByPWUmJmVbIiFtZXJnZXMiXXx8W10sdD1bXSxuPWUmJmVbIiFyZWYiXT9aZShlWyIhcmVmIl0pOm51bGwsaT17fSxmPTA7ZjxyLmxlbmd0aDsrK2Ype3ZhciBzPXJbZl0sYz0iIjtpZighc3x8IXMuc3x8IXMuZSl7dC5wdXNoKHtjb2RlOiJFX01FUkdFX1JBTkdFIixtZXNzYWdlOiJNZXJnZSByYW5nZSBpcyBtYWxmb3JtZWQiLGluZGV4OmZ9KTtjb250aW51ZX1pZihzLnMucjwwfHxzLnMuYzwwfHxzLmUucjxzLnMucnx8cy5lLmM8cy5zLmMpe3QucHVzaCh7Y29kZToiRV9NRVJHRV9SQU5HRSIsbWVzc2FnZToiTWVyZ2UgcmFuZ2UgaXMgaW52YWxpZCIsaW5kZXg6ZixyYW5nZTpzfSk7Y29udGludWV9Yz1JZShzKSxpW2NdIT1udWxsJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfRFVQIixtZXNzYWdlOiJNZXJnZSByYW5nZSBpcyBkdXBsaWNhdGVkIixpbmRleDpmLG90aGVyOmlbY10scmFuZ2U6Y30pLGlbY109ZixuJiYocy5zLnI8bi5zLnJ8fHMucy5jPG4ucy5jfHxzLmUucj5uLmUucnx8cy5lLmM+bi5lLmMpJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfQk9VTkRTIixtZXNzYWdlOiJNZXJnZSByYW5nZSBleGNlZWRzIHdvcmtzaGVldCByYW5nZSIsaW5kZXg6ZixyYW5nZTpjLHJlZjpJZShuKX0pO2Zvcih2YXIgbz0wO288ZjsrK28pIXJbb118fCFyW29dLnN8fCFyW29dLmV8fHNkKHMscltvXSkmJkllKHJbb10pIT1jJiZ0LnB1c2goe2NvZGU6IkVfTUVSR0VfT1ZFUkxBUCIsbWVzc2FnZToiTWVyZ2UgcmFuZ2VzIG92ZXJsYXAiLGluZGV4OmYsb3RoZXI6byxyYW5nZTpjLG90aGVyUmFuZ2U6SWUocltvXSl9KX1pZih0Lmxlbmd0aCYmYSYmYS5XVEYpdGhyb3cgbmV3IEVycm9yKHRbMF0ubWVzc2FnZSsiICgiKyh0WzBdLnJhbmdlfHx0WzBdLmluZGV4KSsiKSIpO3JldHVybiB0fWZ1bmN0aW9uIGZkKGUsYSl7dmFyIHI9WmUoYSk7ci5zLnI8PXIuZS5yJiZyLnMuYzw9ci5lLmMmJnIucy5yPj0wJiZyLnMuYz49MCYmKGVbIiFyZWYiXT1JZShyKSl9dmFyIGNkPS88KD86XHcrOik/bWVyZ2VDZWxsIHJlZj1bIiddW0EtWjAtOTpdK1snIl1ccypbXC9dPz4vZyxvZD0vPCg/Olx3KzopP2h5cGVybGluayBbXjw+XSo+L21nLGxkPS8iKFx3KjpcdyopIi8sdWQ9LzwoPzpcdys6KT9jb2xcYltePD5dKltcL10/Pi9nLGhkPS88KD86XHc6KT9hdXRvRmlsdGVyW14+XSooW1wvXXw+KFtcc1xTXSopPFwvKD86XHc6KT9hdXRvRmlsdGVyKT4vZyx4ZD0vPCg/Olx3KzopP3BhZ2VNYXJnaW5zW148Pl0qXC8+L2csaGY9LzwoPzpcdys6KT9zaGVldFByXGJbXjw+XSo/XC8+LztmdW5jdGlvbiBkZChlLGEscix0LG4saSxmKXtpZighZSlyZXR1cm4gZTt0fHwodD17IiFpZCI6e319KTt2YXIgcz17fTthLmRlbnNlJiYoc1siIWRhdGEiXT1bXSk7dmFyIGM9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sbz0iIixsPSIiLHU9TGUoZSwic2hlZXREYXRhIik7dT8obz1lLnNsaWNlKDAsdS5pbmRleCksbD1lLnNsaWNlKHUuaW5kZXgrdVswXS5sZW5ndGgpKTpvPWw9ZTt2YXIgeD1vLm1hdGNoKGhmKTt4P0VuKHhbMF0scyxuLHIpOih4PUxlKG8sInNoZWV0UHIiKSkmJnZkKHhbMF0seFsxXXx8IiIscyxuLHIpO3ZhciBoPShvLm1hdGNoKC88KD86XHcqOik/ZGltZW5zaW9uLyl8fHtpbmRleDotMX0pLmluZGV4O2lmKGg+MCl7dmFyIGc9by5zbGljZShoLGgrNTApLm1hdGNoKGxkKTtnJiYhKGEmJmEubm9kaW0pJiZmZChzLGdbMV0pfXZhciBtPUxlKG8sInNoZWV0Vmlld3MiKTttJiZtWzFdJiZ3ZChtWzFdLG4pO3ZhciBkPVtdO2lmKGEuY2VsbFN0eWxlcyl7dmFyIHA9by5tYXRjaCh1ZCk7cCYmbWQoZCxwKX11JiZGZCh1WzFdLHMsYSxjLGksZixuKTt2YXIgdz1sLm1hdGNoKGhkKTt3JiYoc1siIWF1dG9maWx0ZXIiXT1fZCh3WzBdKSk7dmFyIF89W10seT1sLm1hdGNoKGNkKTtpZih5KWZvcihoPTA7aCE9eS5sZW5ndGg7KytoKV9baF09WmUoeVtoXS5zbGljZSh5W2hdLmluZGV4T2YoIj0iKSsyKSk7dmFyIFI9bC5tYXRjaChvZCk7UiYmcGQocyxSLHQpO3ZhciBQPWwubWF0Y2goeGQpO1AmJihzWyIhbWFyZ2lucyJdPWdkKG9lKFBbMF0pKSk7dmFyIGI7aWYoKGI9bC5tYXRjaCgvPCg/Olx3KzopP2RyYXdpbmdcYltePD5dKnI6aWQ9IiguKj8pIi8pKSYmKHNbIiFyZWwiXT1iWzFdKSwoYj1sLm1hdGNoKC9sZWdhY3lEcmF3aW5nIHI6aWQ9IiguKj8pIi8pKSYmKHNbIiFsZWdyZWwiXT1iWzFdKSxhJiZhLm5vZGltJiYoYy5zLmM9Yy5zLnI9MCksIXNbIiFyZWYiXSYmYy5lLmM+PWMucy5jJiZjLmUucj49Yy5zLnImJihzWyIhcmVmIl09SWUoYykpLGEuc2hlZXRSb3dzPjAmJnNbIiFyZWYiXSl7dmFyIE49WmUoc1siIXJlZiJdKTthLnNoZWV0Um93czw9K04uZS5yJiYoTi5lLnI9YS5zaGVldFJvd3MtMSxOLmUucj5jLmUuciYmKE4uZS5yPWMuZS5yKSxOLmUucjxOLnMuciYmKE4ucy5yPU4uZS5yKSxOLmUuYz5jLmUuYyYmKE4uZS5jPWMuZS5jKSxOLmUuYzxOLnMuYyYmKE4ucy5jPU4uZS5jKSxzWyIhZnVsbHJlZiJdPXNbIiFyZWYiXSxzWyIhcmVmIl09SWUoTikpfWlmKGQubGVuZ3RoPjAmJihzWyIhY29scyJdPWQpLF8ubGVuZ3RoPjApe3NbIiFtZXJnZXMiXT1fO3ZhciBJPVRuKHMse1dURjohIShhJiYoYS5XVEZ8fGEudmFsaWRhdGVNZXJnZXMpKX0pO0kubGVuZ3RoJiYoc1siIW1lcmdlRXJyb3JzIl09SSl9cmV0dXJuIHRbIiFpZCJdW3NbIiFyZWwiXV0mJihzWyIhZHJhd2VsIl09dFsiIWlkIl1bc1siIXJlbCJdXSksdFsiIWlkIl1bc1siIWxlZ3JlbCJdXSYmKHNbIiFsZWdkcmF3ZWwiXT10WyIhaWQiXVtzWyIhbGVncmVsIl1dKSxzfWZ1bmN0aW9uIEVuKGUsYSxyLHQpe3ZhciBuPW9lKGUpO3IuU2hlZXRzW3RdfHwoci5TaGVldHNbdF09e30pLG4uY29kZU5hbWUmJihyLlNoZWV0c1t0XS5Db2RlTmFtZT1DZShWZShuLmNvZGVOYW1lKSkpfWZ1bmN0aW9uIHZkKGUsYSxyLHQsbil7RW4oZS5zbGljZSgwLGUuaW5kZXhPZigiPiIpKSxyLHQsbil9ZnVuY3Rpb24gcGQoZSxhLHIpe2Zvcih2YXIgdD1lWyIhZGF0YSJdIT1udWxsLG49MDtuIT1hLmxlbmd0aDsrK24pe3ZhciBpPW9lKFZlKGFbbl0pLCEwKTtpZighaS5yZWYpcmV0dXJuO3ZhciBmPSgocnx8e30pWyIhaWQiXXx8W10pW2kuaWRdO2Y/KGkuVGFyZ2V0PWYuVGFyZ2V0LGkubG9jYXRpb24mJihpLlRhcmdldCs9IiMiK0NlKGkubG9jYXRpb24pKSk6KGkuVGFyZ2V0PSIjIitDZShpLmxvY2F0aW9uKSxmPXtUYXJnZXQ6aS5UYXJnZXQsVGFyZ2V0TW9kZToiSW50ZXJuYWwifSksaS5SZWw9ZixpLnRvb2x0aXAmJihpLlRvb2x0aXA9aS50b29sdGlwLGRlbGV0ZSBpLnRvb2x0aXApO2Zvcih2YXIgcz1aZShpLnJlZiksYz1zLnMucjtjPD1zLmUucjsrK2MpZm9yKHZhciBvPXMucy5jO288PXMuZS5jOysrbyl7dmFyIGw9SGUobykrR2UoYyk7dD8oZVsiIWRhdGEiXVtjXXx8KGVbIiFkYXRhIl1bY109W10pLGVbIiFkYXRhIl1bY11bb118fChlWyIhZGF0YSJdW2NdW29dPXt0OiJ6Iix2OnZvaWQgMH0pLGVbIiFkYXRhIl1bY11bb10ubD1pKTooZVtsXXx8KGVbbF09e3Q6InoiLHY6dm9pZCAwfSksZVtsXS5sPWkpfX19ZnVuY3Rpb24gZ2QoZSl7dmFyIGE9e307cmV0dXJuWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJoZWFkZXIiLCJmb290ZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2Vbcl0mJihhW3JdPXBhcnNlRmxvYXQoZVtyXSkpfSksYX1mdW5jdGlvbiBtZChlLGEpe2Zvcih2YXIgcj0hMSx0PTA7dCE9YS5sZW5ndGg7Kyt0KXt2YXIgbj1vZShhW3RdLCEwKTtuLmhpZGRlbiYmKG4uaGlkZGVuPUZlKG4uaGlkZGVuKSksbi5iZXN0Rml0JiYobi5iZXN0Rml0PUZlKG4uYmVzdEZpdCkpLG4uY3VzdG9tV2lkdGgmJihuLmN1c3RvbVdpZHRoPUZlKG4uY3VzdG9tV2lkdGgpKTt2YXIgaT1wYXJzZUludChuLm1pbiwxMCktMSxmPXBhcnNlSW50KG4ubWF4LDEwKS0xO2ZvcihuLm91dGxpbmVMZXZlbCYmKG4ubGV2ZWw9K24ub3V0bGluZUxldmVsfHwwKSxkZWxldGUgbi5taW4sZGVsZXRlIG4ubWF4LG4ud2lkdGg9K24ud2lkdGgsIXImJm4ud2lkdGgmJihyPSEwLHZuKG4ud2lkdGgpKSx1dChuKTtpPD1mOyllW2krK109VWUobil9fWZ1bmN0aW9uIF9kKGUpe3ZhciBhPXtyZWY6KGUubWF0Y2goL3JlZj1bIiddKFteIiddKilbIiddLyl8fFtdKVsxXX07cmV0dXJuIGF9dmFyIGtkPS88KD86XHc6KT9zaGVldFZpZXcoPzpbXjw+YS16XVtePD5dKik/XC8/Pi9nO2Z1bmN0aW9uIHdkKGUsYSl7YS5WaWV3c3x8KGEuVmlld3M9W3t9XSksKGUubWF0Y2goa2QpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihyLHQpe3ZhciBuPW9lKHIpO2EuVmlld3NbdF18fChhLlZpZXdzW3RdPXt9KSwrbi56b29tU2NhbGUmJihhLlZpZXdzW3RdLnpvb209K24uem9vbVNjYWxlKSxuLnJpZ2h0VG9MZWZ0JiZGZShuLnJpZ2h0VG9MZWZ0KSYmKGEuVmlld3NbdF0uUlRMPSEwKX0pfXZhciBGZD1mdW5jdGlvbigpe3ZhciBlPS88KD86XHcrOik/Y1sgXC8+XS8sYT0vPFwvKD86XHcrOik/cm93Pi8scj0vcj1bIiddKFteIiddKilbIiddLyx0PS9yZWY9WyInXShbXiInXSopWyInXS87cmV0dXJuIGZ1bmN0aW9uKGksZixzLGMsbyxsLHUpe2Zvcih2YXIgeD0wLGg9IiIsZz1bXSxtPVtdLGQ9MCxwPTAsdz0wLF89IiIseSxSLFA9MCxiPTAsTixJLEI9MCxMPTAsRz0tMSxpZT1BcnJheS5pc0FycmF5KGwuQ2VsbFhmKSxuZSxxPVtdLGxlPVtdLFE9ZlsiIWRhdGEiXSE9bnVsbCxnZT1bXSx1ZT17fSxqPSExLHllPSEhcy5zaGVldFN0dWJzLGJlPSEhKCh1fHx7fSkuV0JQcm9wc3x8e30pLmRhdGUxOTA0LG1lPWkuc3BsaXQoYSksWj0wLE9lPW1lLmxlbmd0aDtaIT1PZTsrK1ope2g9bWVbWl0udHJpbSgpO3ZhciB3ZT1oLmxlbmd0aDtpZih3ZSE9PTApe3ZhciBBZT0wO2U6Zm9yKHg9MDt4PHdlOysreClzd2l0Y2goaFt4XSl7Y2FzZSI+IjppZihoW3gtMV0hPSIvIil7Kyt4O2JyZWFrIGV9aWYocyYmcy5jZWxsU3R5bGVzKXtpZihSPW9lKGguc2xpY2UoQWUseCksITApLFA9Ui5yIT1udWxsP3BhcnNlSW50KFIuciwxMCk6UCsxLGI9LTEscy5zaGVldFJvd3MmJnMuc2hlZXRSb3dzPFApY29udGludWU7dWU9e30saj0hMSxSLmh0JiYoaj0hMCx1ZS5ocHQ9cGFyc2VGbG9hdChSLmh0KSx1ZS5ocHg9VXQodWUuaHB0KSksUi5oaWRkZW4mJkZlKFIuaGlkZGVuKSYmKGo9ITAsdWUuaGlkZGVuPSEwKSxSLm91dGxpbmVMZXZlbCE9bnVsbCYmKGo9ITAsdWUubGV2ZWw9K1Iub3V0bGluZUxldmVsKSxqJiYoZ2VbUC0xXT11ZSl9YnJlYWs7Y2FzZSI8IjpBZT14O2JyZWFrfWlmKEFlPj14KWJyZWFrO2lmKFI9b2UoaC5zbGljZShBZSx4KSwhMCksUD1SLnIhPW51bGw/cGFyc2VJbnQoUi5yLDEwKTpQKzEsYj0tMSwhKHMuc2hlZXRSb3dzJiZzLnNoZWV0Um93czxQKSl7cy5ub2RpbXx8KGMucy5yPlAtMSYmKGMucy5yPVAtMSksYy5lLnI8UC0xJiYoYy5lLnI9UC0xKSkscyYmcy5jZWxsU3R5bGVzJiYodWU9e30saj0hMSxSLmh0JiYoaj0hMCx1ZS5ocHQ9cGFyc2VGbG9hdChSLmh0KSx1ZS5ocHg9VXQodWUuaHB0KSksUi5oaWRkZW4mJkZlKFIuaGlkZGVuKSYmKGo9ITAsdWUuaGlkZGVuPSEwKSxSLm91dGxpbmVMZXZlbCE9bnVsbCYmKGo9ITAsdWUubGV2ZWw9K1Iub3V0bGluZUxldmVsKSxqJiYoZ2VbUC0xXT11ZSkpLGc9aC5zbGljZSh4KS5zcGxpdChlKTtmb3IodmFyIEE9MDtBIT1nLmxlbmd0aCYmZ1tBXS50cmltKCkuY2hhckF0KDApPT0iPCI7KytBKTtmb3IoZz1nLnNsaWNlKEEpLHg9MDt4IT1nLmxlbmd0aDsrK3gpaWYoaD1nW3hdLnRyaW0oKSxoLmxlbmd0aCE9PTApe2lmKG09aC5tYXRjaChyKSxkPXgscD0wLHc9MCxoPSI8YyAiKyhoLnNsaWNlKDAsMSk9PSI8Ij8iPiI6IiIpK2gsbSE9bnVsbCYmbS5sZW5ndGg9PT0yKXtmb3IoZD0wLF89bVsxXSxwPTA7cCE9Xy5sZW5ndGgmJiEoKHc9Xy5jaGFyQ29kZUF0KHApLTY0KTwxfHx3PjI2KTsrK3ApZD0yNipkK3c7LS1kLGI9ZH1lbHNlKytiO2ZvcihwPTA7cCE9aC5sZW5ndGgmJmguY2hhckNvZGVBdChwKSE9PTYyOysrcCk7aWYoKytwLFI9b2UoaC5zbGljZSgwLHApLCEwKSxSLnJ8fChSLnI9RGUoe3I6UC0xLGM6Yn0pKSxfPWguc2xpY2UocCkseT17dDoiIn0sKG09TGUoXywidiIpKSE9bnVsbCYmbVsxXSE9PSIiJiYoeS52PUNlKG1bMV0pKSxzLmNlbGxGb3JtdWxhKXtpZigobT1MZShfLCJmIikpIT1udWxsKXtpZihtWzFdPT0iIiltWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSYmKEk9b2UobVswXSksbGVbSS5zaV0mJih5LmY9SnMobGVbSS5zaV1bMV0sbGVbSS5zaV1bMl0sUi5yKSkpO2Vsc2UgaWYoeS5mPUNlKFZlKG1bMV0pLCEwKSxzLnhsZm58fCh5LmY9WnMoeS5mKSksbVswXS5pbmRleE9mKCd0PSJhcnJheSInKT4tMSl5LkY9KF8ubWF0Y2godCl8fFtdKVsxXSx5LkYuaW5kZXhPZigiOiIpPi0xJiZxLnB1c2goW1plKHkuRikseS5GXSk7ZWxzZSBpZihtWzBdLmluZGV4T2YoJ3Q9InNoYXJlZCInKT4tMSl7ST1vZShtWzBdKTt2YXIgVT1DZShWZShtWzFdKSwhMCk7cy54bGZufHwoVT1acyhVKSksbGVbcGFyc2VJbnQoSS5zaSwxMCldPVtJLFUsUi5yXX19ZWxzZShtPV8ubWF0Y2goLzxmW148Pl0qXC8+LykpJiYoST1vZShtWzBdKSxsZVtJLnNpXSYmKHkuZj1KcyhsZVtJLnNpXVsxXSxsZVtJLnNpXVsyXSxSLnIpKSk7dmFyIE89Z3IoUi5yKTtmb3IocD0wO3A8cS5sZW5ndGg7KytwKU8ucj49cVtwXVswXS5zLnImJk8ucjw9cVtwXVswXS5lLnImJk8uYz49cVtwXVswXS5zLmMmJk8uYzw9cVtwXVswXS5lLmMmJih5LkY9cVtwXVsxXSl9aWYoUi50PT1udWxsJiZ5LnY9PT12b2lkIDApaWYoeS5mfHx5LkYpeS52PTAseS50PSJuIjtlbHNlIGlmKHllKXkudD0ieiI7ZWxzZSBjb250aW51ZTtlbHNlIHkudD1SLnR8fCJuIjtzd2l0Y2goYy5zLmM+YiYmKGMucy5jPWIpLGMuZS5jPGImJihjLmUuYz1iKSx5LnQpe2Nhc2UibiI6aWYoeS52PT0iInx8eS52PT1udWxsKXtpZigheWUpY29udGludWU7eS50PSJ6In1lbHNlIHkudj1wYXJzZUZsb2F0KHkudik7YnJlYWs7Y2FzZSJzIjppZih0eXBlb2YgeS52PiJ1Iil7aWYoIXllKWNvbnRpbnVlO3kudD0ieiJ9ZWxzZSBOPVh0W3BhcnNlSW50KHkudiwxMCldLHkudj1OLnQseS5yPU4ucixzLmNlbGxIVE1MJiYoeS5oPU4uaCk7YnJlYWs7Y2FzZSJzdHIiOnkudD0icyIseS52PXkudiE9bnVsbD9DZShWZSh5LnYpLCEwKToiIixzLmNlbGxIVE1MJiYoeS5oPXhhKHkudikpO2JyZWFrO2Nhc2UiaW5saW5lU3RyIjptPUxlKF8sImlzIikseS50PSJzIixtIT1udWxsJiYoTj1obihtWzFdKSk/KHkudj1OLnQscy5jZWxsSFRNTCYmKHkuaD1OLmgpKTp5LnY9IiI7YnJlYWs7Y2FzZSJiIjp5LnY9RmUoeS52KTticmVhaztjYXNlImQiOnMuY2VsbERhdGVzP3kudj14cih5LnYsYmUpOih5LnY9b3IoeHIoeS52LGJlKSxiZSkseS50PSJuIik7YnJlYWs7Y2FzZSJlIjooIXN8fHMuY2VsbFRleHQhPT0hMSkmJih5Lnc9eS52KSx5LnY9ZHJbeS52XTticmVha31pZihCPUw9MCxHPS0xLG5lPW51bGwsaWUmJlIucyE9PXZvaWQgMCYmKEc9cGFyc2VJbnQoUi5zLDEwKSxuZT1sLkNlbGxYZltHXSxuZSE9bnVsbCYmKG5lLm51bUZtdElkIT1udWxsJiYoQj1uZS5udW1GbXRJZCkscy5jZWxsU3R5bGVzJiZuZS5maWxsSWQhPW51bGwmJihMPW5lLmZpbGxJZCkpKSx1Zih5LEIsTCxzLG8sbCxiZSxuZSxHKSxzLmNlbGxEYXRlcyYmaWUmJnkudD09Im4iJiZacihUZVtCXSkmJih5LnY9U2EoeS52KyhiZT8xNDYyOjApKSx5LnQ9dHlwZW9mIHkudj09Im51bWJlciI/Im4iOiJkIiksUi5jbSYmcy54bG1ldGEpe3ZhciBEPShzLnhsbWV0YS5DZWxsfHxbXSlbK1IuY20tMV07RCYmRC50eXBlPT0iWExEQVBSIiYmKHkuRD0hMCl9dmFyIHo7cy5ub2RpbSYmKHo9Z3IoUi5yKSxjLnMucj56LnImJihjLnMucj16LnIpLGMuZS5yPHouciYmKGMuZS5yPXoucikpLFE/KHo9Z3IoUi5yKSxmWyIhZGF0YSJdW3oucl18fChmWyIhZGF0YSJdW3oucl09W10pLGZbIiFkYXRhIl1bei5yXVt6LmNdPXkpOmZbUi5yXT15fX19fWdlLmxlbmd0aD4wJiYoZlsiIXJvd3MiXT1nZSl9fSgpO2Z1bmN0aW9uIFRkKGUsYSl7dmFyIHI9e30sdD1lLmwrYTtyLnI9ZS5yZWFkX3NoaWZ0KDQpLGUubCs9NDt2YXIgbj1lLnJlYWRfc2hpZnQoMik7ZS5sKz0xO3ZhciBpPWUucmVhZF9zaGlmdCgxKTtyZXR1cm4gZS5sPXQsaSY3JiYoci5sZXZlbD1pJjcpLGkmMTYmJihyLmhpZGRlbj0hMCksaSYzMiYmKHIuaHB0PW4vMjApLHJ9dmFyIEVkPUdhO2Z1bmN0aW9uIEFkKCl7fWZ1bmN0aW9uIHlkKGUsYSl7dmFyIHI9e30sdD1lW2UubF07cmV0dXJuKytlLmwsci5hYm92ZT0hKHQmNjQpLHIubGVmdD0hKHQmMTI4KSxlLmwrPTE4LHIubmFtZT1ibyhlKSxyfWZ1bmN0aW9uIFNkKGUpe3ZhciBhPVhyKGUpO3JldHVyblthXX1mdW5jdGlvbiBDZChlKXt2YXIgYT1WYShlKTtyZXR1cm5bYV19ZnVuY3Rpb24gYmQoZSl7dmFyIGE9WHIoZSkscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2EsciwiYiJdfWZ1bmN0aW9uIElkKGUpe3ZhciBhPVZhKGUpLHI9ZS5yZWFkX3NoaWZ0KDEpO3JldHVyblthLHIsImIiXX1mdW5jdGlvbiBEZChlKXt2YXIgYT1YcihlKSxyPWUucmVhZF9zaGlmdCgxKTtyZXR1cm5bYSxyLCJlIl19ZnVuY3Rpb24gUmQoZSl7dmFyIGE9VmEoZSkscj1lLnJlYWRfc2hpZnQoMSk7cmV0dXJuW2EsciwiZSJdfWZ1bmN0aW9uIE9kKGUpe3ZhciBhPVhyKGUpLHI9ZS5yZWFkX3NoaWZ0KDQpO3JldHVyblthLHIsInMiXX1mdW5jdGlvbiBOZChlKXt2YXIgYT1WYShlKSxyPWUucmVhZF9zaGlmdCg0KTtyZXR1cm5bYSxyLCJzIl19ZnVuY3Rpb24gTWQoZSl7dmFyIGE9WHIoZSkscj1fcihlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24geGYoZSl7dmFyIGE9VmEoZSkscj1fcihlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gUGQoZSl7dmFyIGE9WHIoZSkscj12MChlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gTGQoZSl7dmFyIGE9VmEoZSkscj12MChlKTtyZXR1cm5bYSxyLCJuIl19ZnVuY3Rpb24gQmQoZSl7dmFyIGE9WHIoZSkscj1mbihlKTtyZXR1cm5bYSxyLCJpcyJdfWZ1bmN0aW9uIFVkKGUpe3ZhciBhPVhyKGUpLHI9bXIoZSk7cmV0dXJuW2Esciwic3RyIl19ZnVuY3Rpb24gSGQoZSl7dmFyIGE9VmEoZSkscj1tcihlKTtyZXR1cm5bYSxyLCJzdHIiXX1mdW5jdGlvbiBXZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPWUucmVhZF9zaGlmdCgxKSxmPVtuLGksImIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9QzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn1mdW5jdGlvbiBWZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPWUucmVhZF9zaGlmdCgxKSxmPVtuLGksImUiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9QzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn1mdW5jdGlvbiBHZChlLGEscil7dmFyIHQ9ZS5sK2Esbj1YcihlKTtuLnI9clsiIXJvdyJdO3ZhciBpPV9yKGUpLGY9W24saSwibiJdO2lmKHIuY2VsbEZvcm11bGEpe2UubCs9Mjt2YXIgcz1DMChlLHQtZS5sLHIpO2ZbM109d3IocyxudWxsLG4sci5zdXBib29rcyxyKX1lbHNlIGUubD10O3JldHVybiBmfWZ1bmN0aW9uIFhkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPVhyKGUpO24ucj1yWyIhcm93Il07dmFyIGk9bXIoZSksZj1bbixpLCJzdHIiXTtpZihyLmNlbGxGb3JtdWxhKXtlLmwrPTI7dmFyIHM9QzAoZSx0LWUubCxyKTtmWzNdPXdyKHMsbnVsbCxuLHIuc3VwYm9va3Mscil9ZWxzZSBlLmw9dDtyZXR1cm4gZn12YXIgemQ9R2E7ZnVuY3Rpb24gJGQoZSxhKXt2YXIgcj1lLmwrYSx0PUdhKGUpLG49ZDAoZSksaT1tcihlKSxmPW1yKGUpLHM9bXIoZSk7ZS5sPXI7dmFyIGM9e3JmeDp0LHJlbElkOm4sbG9jOmksZGlzcGxheTpzfTtyZXR1cm4gZiYmKGMuVG9vbHRpcD1mKSxjfWZ1bmN0aW9uIEtkKCl7fWZ1bmN0aW9uIGpkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPXFpKGUpLGk9ZS5yZWFkX3NoaWZ0KDEpLGY9W25dO2lmKGZbMl09aSxyLmNlbGxGb3JtdWxhKXt2YXIgcz1lZChlLHQtZS5sLHIpO2ZbMV09c31lbHNlIGUubD10O3JldHVybiBmfWZ1bmN0aW9uIFlkKGUsYSxyKXt2YXIgdD1lLmwrYSxuPUdhKGUpLGk9W25dO2lmKHIuY2VsbEZvcm11bGEpe3ZhciBmPWFkKGUsdC1lLmwscik7aVsxXT1mLGUubD10fWVsc2UgZS5sPXQ7cmV0dXJuIGl9dmFyIEpkPVsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiaGVhZGVyIiwiZm9vdGVyIl07ZnVuY3Rpb24gWmQoZSl7dmFyIGE9e307cmV0dXJuIEpkLmZvckVhY2goZnVuY3Rpb24ocil7YVtyXT1fcihlKX0pLGF9ZnVuY3Rpb24gcWQoZSl7dmFyIGE9ZS5yZWFkX3NoaWZ0KDIpO3JldHVybiBlLmwrPTI4LHtSVEw6YSYzMn19ZnVuY3Rpb24gUWQoKXt9ZnVuY3Rpb24gZXYoKXt9ZnVuY3Rpb24gcnYoZSxhLHIsdCxuLGksZil7aWYoIWUpcmV0dXJuIGU7dmFyIHM9YXx8e307dHx8KHQ9eyIhaWQiOnt9fSk7dmFyIGM9e307cy5kZW5zZSYmKGNbIiFkYXRhIl09W10pO3ZhciBvLGw9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sdT0hMSx4PSExLGgsZyxtLGQscCx3LF8seSxSLFA9W107cy5iaWZmPTEyLHNbIiFyb3ciXT0wO3ZhciBiPTAsTj0hMSxJPVtdLEI9e30sTD1zLnN1cGJvb2tzfHxuLnN1cGJvb2tzfHxbW11dO2lmKEwuc2hhcmVkZj1CLEwuYXJyYXlmPUksTC5TaGVldE5hbWVzPW4uU2hlZXROYW1lc3x8bi5TaGVldHMubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWUubmFtZX0pLCFzLnN1cGJvb2tzJiYocy5zdXBib29rcz1MLG4uTmFtZXMpKWZvcih2YXIgRz0wO0c8bi5OYW1lcy5sZW5ndGg7KytHKUxbMF1bRysxXT1uLk5hbWVzW0ddO3ZhciBpZT1bXSxuZT1bXSxxPSExO0kwWzE2XT17bjoiQnJ0U2hvcnRSZWFsIixmOnhmfTt2YXIgbGUsUT0xNDYyKishISgobnx8e30pLldCUHJvcHN8fHt9KS5kYXRlMTkwNDtpZih2YShlLGZ1bmN0aW9uKGoseWUsYmUpe2lmKCF4KXN3aXRjaChiZSl7Y2FzZSAxNDg6bz1qO2JyZWFrO2Nhc2UgMDpoPWoscy5zaGVldFJvd3MmJnMuc2hlZXRSb3dzPD1oLnImJih4PSEwKSx5PUdlKGQ9aC5yKSxzWyIhcm93Il09aC5yLChqLmhpZGRlbnx8ai5ocHR8fGoubGV2ZWwhPW51bGwpJiYoai5ocHQmJihqLmhweD1VdChqLmhwdCkpLG5lW2oucl09aik7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmNhc2UgNjpjYXNlIDc6Y2FzZSA4OmNhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSA2Mjpzd2l0Y2goZz17dDpqWzJdfSxqWzJdKXtjYXNlIm4iOmcudj1qWzFdO2JyZWFrO2Nhc2UicyI6Xz1YdFtqWzFdXSxnLnY9Xy50LGcucj1fLnI7YnJlYWs7Y2FzZSJiIjpnLnY9ISFqWzFdO2JyZWFrO2Nhc2UiZSI6Zy52PWpbMV0scy5jZWxsVGV4dCE9PSExJiYoZy53PWJyW2cudl0pO2JyZWFrO2Nhc2Uic3RyIjpnLnQ9InMiLGcudj1qWzFdO2JyZWFrO2Nhc2UiaXMiOmcudD0icyIsZy52PWpbMV0udDticmVha31pZigobT1mLkNlbGxYZltqWzBdLmlTdHlsZVJlZl0pJiZ1ZihnLG0ubnVtRm10SWQsbnVsbCxzLGksZixRPjAsbSxqWzBdLmlTdHlsZVJlZikscD1qWzBdLmM9PS0xP3ArMTpqWzBdLmMscy5kZW5zZT8oY1siIWRhdGEiXVtkXXx8KGNbIiFkYXRhIl1bZF09W10pLGNbIiFkYXRhIl1bZF1bcF09Zyk6Y1tIZShwKSt5XT1nLHMuY2VsbEZvcm11bGEpe2ZvcihOPSExLGI9MDtiPEkubGVuZ3RoOysrYil7dmFyIG1lPUlbYl07aC5yPj1tZVswXS5zLnImJmgucjw9bWVbMF0uZS5yJiZwPj1tZVswXS5zLmMmJnA8PW1lWzBdLmUuYyYmKGcuRj1JZShtZVswXSksTj0hMCl9IU4mJmoubGVuZ3RoPjMmJihnLmY9alszXSl9aWYobC5zLnI+aC5yJiYobC5zLnI9aC5yKSxsLnMuYz5wJiYobC5zLmM9cCksbC5lLnI8aC5yJiYobC5lLnI9aC5yKSxsLmUuYzxwJiYobC5lLmM9cCkscy5jZWxsRGF0ZXMmJm0mJmcudD09Im4iJiZacihUZVttLm51bUZtdElkXSkpe3ZhciBaPWNhKGcuditRKTtaJiYoZy50PSJkIixnLnY9bmV3IERhdGUoRGF0ZS5VVEMoWi55LFoubS0xLFouZCxaLkgsWi5NLFouUyxaLnUpKSl9bGUmJihsZS50eXBlPT0iWExEQVBSIiYmKGcuRD0hMCksbGU9dm9pZCAwKTticmVhaztjYXNlIDE6Y2FzZSAxMjppZighcy5zaGVldFN0dWJzfHx1KWJyZWFrO2c9e3Q6InoiLHY6dm9pZCAwfSxwPWpbMF0uYz09LTE/cCsxOmpbMF0uYyxzLmRlbnNlPyhjWyIhZGF0YSJdW2RdfHwoY1siIWRhdGEiXVtkXT1bXSksY1siIWRhdGEiXVtkXVtwXT1nKTpjW0hlKHApK3ldPWcsbC5zLnI+aC5yJiYobC5zLnI9aC5yKSxsLnMuYz5wJiYobC5zLmM9cCksbC5lLnI8aC5yJiYobC5lLnI9aC5yKSxsLmUuYzxwJiYobC5lLmM9cCksbGUmJihsZS50eXBlPT0iWExEQVBSIiYmKGcuRD0hMCksbGU9dm9pZCAwKTticmVhaztjYXNlIDE3NjpQLnB1c2goaik7YnJlYWs7Y2FzZSA0OTpsZT0oKHMueGxtZXRhfHx7fSkuQ2VsbHx8W10pW2otMV07YnJlYWs7Y2FzZSA0OTQ6dmFyIE9lPXRbIiFpZCJdW2oucmVsSWRdO2ZvcihPZT8oai5UYXJnZXQ9T2UuVGFyZ2V0LGoubG9jJiYoai5UYXJnZXQrPSIjIitqLmxvYyksai5SZWw9T2UpOmoucmVsSWQ9PSIiJiYoai5UYXJnZXQ9IiMiK2oubG9jKSxkPWoucmZ4LnMucjtkPD1qLnJmeC5lLnI7KytkKWZvcihwPWoucmZ4LnMuYztwPD1qLnJmeC5lLmM7KytwKXMuZGVuc2U/KGNbIiFkYXRhIl1bZF18fChjWyIhZGF0YSJdW2RdPVtdKSxjWyIhZGF0YSJdW2RdW3BdfHwoY1siIWRhdGEiXVtkXVtwXT17dDoieiIsdjp2b2lkIDB9KSxjWyIhZGF0YSJdW2RdW3BdLmw9aik6KHc9SGUocCkrR2UoZCksY1t3XXx8KGNbd109e3Q6InoiLHY6dm9pZCAwfSksY1t3XS5sPWopO2JyZWFrO2Nhc2UgNDI2OmlmKCFzLmNlbGxGb3JtdWxhKWJyZWFrO0kucHVzaChqKSxSPXMuZGVuc2U/Y1siIWRhdGEiXVtkXVtwXTpjW0hlKHApK3ldLFIuZj13cihqWzFdLGwse3I6aC5yLGM6cH0sTCxzKSxSLkY9SWUoalswXSk7YnJlYWs7Y2FzZSA0Mjc6aWYoIXMuY2VsbEZvcm11bGEpYnJlYWs7QltEZShqWzBdLnMpXT1qWzFdLFI9cy5kZW5zZT9jWyIhZGF0YSJdW2RdW3BdOmNbSGUocCkreV0sUi5mPXdyKGpbMV0sbCx7cjpoLnIsYzpwfSxMLHMpO2JyZWFrO2Nhc2UgNjA6aWYoIXMuY2VsbFN0eWxlcylicmVhaztmb3IoO2ouZT49ai5zOylpZVtqLmUtLV09e3dpZHRoOmoudy8yNTYsaGlkZGVuOiEhKGouZmxhZ3MmMSksbGV2ZWw6ai5sZXZlbH0scXx8KHE9ITAsdm4oai53LzI1NikpLHV0KGllW2ouZSsxXSk7YnJlYWs7Y2FzZSA1NTE6aiYmKGNbIiFsZWdyZWwiXT1qKTticmVhaztjYXNlIDE2MTpjWyIhYXV0b2ZpbHRlciJdPXtyZWY6SWUoail9O2JyZWFrO2Nhc2UgNDc2OmNbIiFtYXJnaW5zIl09ajticmVhaztjYXNlIDE0NzpuLlNoZWV0c1tyXXx8KG4uU2hlZXRzW3JdPXt9KSxqLm5hbWUmJihuLlNoZWV0c1tyXS5Db2RlTmFtZT1qLm5hbWUpLChqLmFib3ZlfHxqLmxlZnQpJiYoY1siIW91dGxpbmUiXT17YWJvdmU6ai5hYm92ZSxsZWZ0OmoubGVmdH0pO2JyZWFrO2Nhc2UgMTM3Om4uVmlld3N8fChuLlZpZXdzPVt7fV0pLG4uVmlld3NbMF18fChuLlZpZXdzWzBdPXt9KSxqLlJUTCYmKG4uVmlld3NbMF0uUlRMPSEwKTticmVhaztjYXNlIDQ4NTpicmVhaztjYXNlIDY0OmNhc2UgMTA1MzpicmVhaztjYXNlIDE1MTpicmVhaztjYXNlIDE1MjpjYXNlIDE3NTpjYXNlIDY0NDpjYXNlIDYyNTpjYXNlIDU2MjpjYXNlIDM5NjpjYXNlIDExMTI6Y2FzZSAxMTQ2OmNhc2UgNDcxOmNhc2UgMTA1MDpjYXNlIDY0OTpjYXNlIDExMDU6Y2FzZSA1ODk6Y2FzZSA2MDc6Y2FzZSA1NjQ6Y2FzZSAxMDU1OmNhc2UgMTY4OmNhc2UgMTc0OmNhc2UgMTE4MDpjYXNlIDQ5OTpjYXNlIDUwNzpjYXNlIDU1MDpjYXNlIDE3MTpjYXNlIDE2NzpjYXNlIDExNzc6Y2FzZSAxNjk6Y2FzZSAxMTgxOmNhc2UgNTUyOmNhc2UgNjYxOmNhc2UgNjM5OmNhc2UgNDc4OmNhc2UgNTM3OmNhc2UgNDc3OmNhc2UgNTM2OmNhc2UgMTEwMzpjYXNlIDY4MDpjYXNlIDExMDQ6Y2FzZSAxMDI0OmNhc2UgNjYzOmNhc2UgNTM1OmNhc2UgNjc4OmNhc2UgNTA0OmNhc2UgMTA0MzpjYXNlIDQyODpjYXNlIDE3MDpjYXNlIDMwNzI6Y2FzZSA1MDpjYXNlIDIwNzA6Y2FzZSAxMDQ1OmJyZWFrO2Nhc2UgMzU6dT0hMDticmVhaztjYXNlIDM2OnU9ITE7YnJlYWs7Y2FzZSAzNzp1PSEwO2JyZWFrO2Nhc2UgMzg6dT0hMTticmVhaztkZWZhdWx0OmlmKCF5ZS5UKXtpZighdXx8cy5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrYmUudG9TdHJpbmcoMTYpKX19fSxzKSxkZWxldGUgcy5zdXBib29rcyxkZWxldGUgc1siIXJvdyJdLCFjWyIhcmVmIl0mJihsLnMucjwyZTZ8fG8mJihvLmUucj4wfHxvLmUuYz4wfHxvLnMucj4wfHxvLnMuYz4wKSkmJihjWyIhcmVmIl09SWUob3x8bCkpLHMuc2hlZXRSb3dzJiZjWyIhcmVmIl0pe3ZhciBnZT1aZShjWyIhcmVmIl0pO3Muc2hlZXRSb3dzPD0rZ2UuZS5yJiYoZ2UuZS5yPXMuc2hlZXRSb3dzLTEsZ2UuZS5yPmwuZS5yJiYoZ2UuZS5yPWwuZS5yKSxnZS5lLnI8Z2Uucy5yJiYoZ2Uucy5yPWdlLmUuciksZ2UuZS5jPmwuZS5jJiYoZ2UuZS5jPWwuZS5jKSxnZS5lLmM8Z2Uucy5jJiYoZ2Uucy5jPWdlLmUuYyksY1siIWZ1bGxyZWYiXT1jWyIhcmVmIl0sY1siIXJlZiJdPUllKGdlKSl9cmV0dXJuIFAubGVuZ3RoPjAmJihjWyIhbWVyZ2VzIl09UCksaWUubGVuZ3RoPjAmJihjWyIhY29scyJdPWllKSxuZS5sZW5ndGg+MCYmKGNbIiFyb3dzIl09bmUpLHRbIiFpZCJdW2NbIiFsZWdyZWwiXV0mJihjWyIhbGVnZHJhd2VsIl09dFsiIWlkIl1bY1siIWxlZ3JlbCJdXSksY31mdW5jdGlvbiBBbihlKXt2YXIgYT1bXSxyPWUubWF0Y2goL148YzpudW1DYWNoZT4vKSx0OyhlLm1hdGNoKC88YzpwdCBpZHg9IihcZCopIltePD5cL10qPjxjOnY+KFtePF0qKTxcL2M6dj48XC9jOnB0Pi9tZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBmPWkubWF0Y2goLzxjOnB0IGlkeD0iKFxkKikiW148PlwvXSo+PGM6dj4oW148XSopPFwvYzp2PjxcL2M6cHQ+Lyk7ZiYmKGFbK2ZbMV1dPXI/K2ZbMl06ZlsyXSl9KTt2YXIgbj1DZSgoSGEoZSwiYzpmb3JtYXRDb2RlIil8fFsiIiwiR2VuZXJhbCJdKVsxXSk7cmV0dXJuKHVhKGUsIjxjOmY+IiwiPC9jOmY+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3Q9aS5yZXBsYWNlKC88W148Pl0qPi9nLCIiKX0pLFthLG4sdF19ZnVuY3Rpb24gYXYoZSl7dmFyIGE9dWEoZSwiPGM6bnVtQ2FjaGU+IiwiPC9jOm51bUNhY2hlPiIpO2lmKGEmJmEubGVuZ3RoKXt2YXIgcj1BbihhWzBdKTtyZXR1cm57dmFsdWVzOnJbMF0sZm9ybWF0Q29kZTpyWzFdLGZvcm11bGE6clsyXX19dmFyIHQ9dWEoZSwiPGM6c3RyQ2FjaGU+IiwiPC9jOnN0ckNhY2hlPiIpO2lmKHQmJnQubGVuZ3RoKXt2YXIgbj1Bbih0WzBdKTtyZXR1cm57dmFsdWVzOm5bMF0sZm9ybWF0Q29kZTpuWzFdLGZvcm11bGE6blsyXX19dmFyIGk9KHVhKGUsIjxjOmY+IiwiPC9jOmY+Iil8fFtdKVswXTtyZXR1cm57dmFsdWVzOltdLGZvcm11bGE6aT9pLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpOnZvaWQgMH19ZnVuY3Rpb24gdHYoZSl7dmFyIGE9dWEoZSwiPGM6dHg+IiwiPC9jOnR4PiIpO2lmKCFhfHwhYS5sZW5ndGgpcmV0dXJuIiI7dmFyIHI9TGUoYVswXSwidiIpO2lmKHImJnJbMV0pcmV0dXJuIENlKHJbMV0pO3ZhciB0PUxlKGFbMF0sImYiKTtyZXR1cm4gdCYmdFsxXT9DZSh0WzFdKToiIn1mdW5jdGlvbiBudihlKXt2YXIgYT17bmFtZTp0dihlKX0scj1MZShlLCJpZHgiKTtyJiYoYS5pZHg9KyhvZShyWzBdKS52YWx8fDApKTt2YXIgdD1MZShlLCJvcmRlciIpO3JldHVybiB0JiYoYS5vcmRlcj0rKG9lKHRbMF0pLnZhbHx8MCkpLFsiY2F0IiwidmFsIiwieFZhbCIsInlWYWwiLCJidWJibGVTaXplIl0uZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgaT1MZShlLG4pO2kmJihhW25dPWF2KGlbMF0pKX0pLGEudmFsJiZhLnZhbC52YWx1ZXM/YS5kYXRhPWEudmFsLnZhbHVlczphLnlWYWwmJmEueVZhbC52YWx1ZXMmJihhLmRhdGE9YS55VmFsLnZhbHVlcyksYX1mdW5jdGlvbiBpdihlKXt2YXIgYT1MZShlLCJ0aXRsZSIpO2lmKCFhKXJldHVybiIiO3ZhciByPVtdO3JldHVybihhWzBdLm1hdGNoKC88YTp0XGJbXj5dKj5bXHNcU10qPzxcL2E6dD4vZyl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IucHVzaChDZSh0LnJlcGxhY2UoLzxbXj5dKj4vZywiIikpKX0pLHIuam9pbigiIil9ZnVuY3Rpb24gc3YoZSxhLHIpe3ZhciB0PXt0YXJnZXQ6YSxyYXc6ZSxyZWxzOnIsc2VyaWVzOltdfTt0LnRpdGxlPWl2KGUpO3ZhciBuPUxlKGUsInBsb3RBcmVhIiksaT1uP25bMV06ZTtbImJhckNoYXJ0IiwibGluZUNoYXJ0IiwiYXJlYUNoYXJ0Iiwic2NhdHRlckNoYXJ0IiwicGllQ2hhcnQiLCJkb3VnaG51dENoYXJ0IiwiYnViYmxlQ2hhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyh1YShpLCI8YzoiK2MrIj4iLCI8L2M6IitjKyI+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3QudHlwZXx8KHQudHlwZT1jKTt2YXIgbD1MZShvLCJncm91cGluZyIpO2wmJih0Lmdyb3VwaW5nPW9lKGxbMF0pLnZhbCksKHVhKG8sIjxjOnNlcj4iLCI8L2M6c2VyPiIpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih1KXt2YXIgeD1udih1KTt4LmNoYXJ0VHlwZT1jLHQuc2VyaWVzLnB1c2goeCl9KX0pfSk7dmFyIGY9TGUoZSwibGVnZW5kIik7aWYoZil7dC5sZWdlbmQ9e307dmFyIHM9TGUoZlswXSwibGVnZW5kUG9zIik7cyYmKHQubGVnZW5kLnBvc2l0aW9uPW9lKHNbMF0pLnZhbCl9cmV0dXJuIHR9ZnVuY3Rpb24gZGYoZSxhLHIsdCxuLGkpe3ZhciBmPWl8fHsiIXR5cGUiOiJjaGFydCJ9O2lmKCFlKXJldHVybiBpO2ZbIiFjaGFydCJdPXN2KGUsYSx0KTt2YXIgcz0wLGM9MCxvPSJBIixsPXtzOntyOjJlNixjOjJlNn0sZTp7cjowLGM6MH19O3JldHVybih1YShlLCI8YzpudW1DYWNoZT4iLCI8L2M6bnVtQ2FjaGU+Iil8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe3ZhciB4PUFuKHUpO2wucy5yPWwucy5jPTAsbC5lLmM9cyxvPUhlKHMpLHhbMF0uZm9yRWFjaChmdW5jdGlvbihoLGcpe2ZbIiFkYXRhIl0/KGZbIiFkYXRhIl1bZ118fChmWyIhZGF0YSJdW2ddPVtdKSxmWyIhZGF0YSJdW2ddW3NdPXt0OiJuIix2Omgsejp4WzFdfSk6ZltvK0dlKGcpXT17dDoibiIsdjpoLHo6eFsxXX0sYz1nfSksbC5lLnI8YyYmKGwuZS5yPWMpLCsrc30pLHM+MCYmKGZbIiFyZWYiXT1JZShsKSksZn1mdW5jdGlvbiBmdihlLGEscix0LG4pe2lmKCFlKXJldHVybiBlO3R8fCh0PXsiIWlkIjp7fX0pO3ZhciBpPXsiIXR5cGUiOiJjaGFydCIsIiFkcmF3ZWwiOm51bGwsIiFyZWwiOiIifSxmLHM9ZS5tYXRjaChoZik7cmV0dXJuIHMmJkVuKHNbMF0saSxuLHIpLChmPWUubWF0Y2goL2RyYXdpbmcgcjppZD0iKC4qPykiLykpJiYoaVsiIXJlbCJdPWZbMV0pLHRbIiFpZCJdW2lbIiFyZWwiXV0mJihpWyIhZHJhd2VsIl09dFsiIWlkIl1baVsiIXJlbCJdXSksaX1mdW5jdGlvbiBjdihlLGEpe2UubCs9MTA7dmFyIHI9bXIoZSk7cmV0dXJue25hbWU6cn19ZnVuY3Rpb24gb3YoZSxhLHIsdCxuKXtpZighZSlyZXR1cm4gZTt0fHwodD17IiFpZCI6e319KTt2YXIgaT17IiF0eXBlIjoiY2hhcnQiLCIhZHJhd2VsIjpudWxsLCIhcmVsIjoiIn0sZj0hMTtyZXR1cm4gdmEoZSxmdW5jdGlvbihjLG8sbCl7c3dpdGNoKGwpe2Nhc2UgNTUwOmlbIiFyZWwiXT1jO2JyZWFrO2Nhc2UgNjUxOm4uU2hlZXRzW3JdfHwobi5TaGVldHNbcl09e30pLGMubmFtZSYmKG4uU2hlZXRzW3JdLkNvZGVOYW1lPWMubmFtZSk7YnJlYWs7Y2FzZSA1NjI6Y2FzZSA2NTI6Y2FzZSA2Njk6Y2FzZSA2Nzk6Y2FzZSA1NTE6Y2FzZSA1NTI6Y2FzZSA0NzY6Y2FzZSAzMDcyOmJyZWFrO2Nhc2UgMzU6Zj0hMDticmVhaztjYXNlIDM2OmY9ITE7YnJlYWs7Y2FzZSAzNzpicmVhaztjYXNlIDM4OmJyZWFrO2RlZmF1bHQ6aWYoIShvLlQ+MCkpe2lmKCEoby5UPDApKXtpZighZnx8YS5XVEYpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX19fSxhKSx0WyIhaWQiXVtpWyIhcmVsIl1dJiYoaVsiIWRyYXdlbCJdPXRbIiFpZCJdW2lbIiFyZWwiXV0pLGl9dmFyIHZmPVtbImFsbG93UmVmcmVzaFF1ZXJ5IiwhMSwiYm9vbCJdLFsiYXV0b0NvbXByZXNzUGljdHVyZXMiLCEwLCJib29sIl0sWyJiYWNrdXBGaWxlIiwhMSwiYm9vbCJdLFsiY2hlY2tDb21wYXRpYmlsaXR5IiwhMSwiYm9vbCJdLFsiQ29kZU5hbWUiLCIiXSxbImRhdGUxOTA0IiwhMSwiYm9vbCJdLFsiZGVmYXVsdFRoZW1lVmVyc2lvbiIsMCwiaW50Il0sWyJmaWx0ZXJQcml2YWN5IiwhMSwiYm9vbCJdLFsiaGlkZVBpdm90RmllbGRMaXN0IiwhMSwiYm9vbCJdLFsicHJvbXB0ZWRTb2x1dGlvbnMiLCExLCJib29sIl0sWyJwdWJsaXNoSXRlbXMiLCExLCJib29sIl0sWyJyZWZyZXNoQWxsQ29ubmVjdGlvbnMiLCExLCJib29sIl0sWyJzYXZlRXh0ZXJuYWxMaW5rVmFsdWVzIiwhMCwiYm9vbCJdLFsic2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMiLCEwLCJib29sIl0sWyJzaG93SW5rQW5ub3RhdGlvbiIsITAsImJvb2wiXSxbInNob3dPYmplY3RzIiwiYWxsIl0sWyJzaG93UGl2b3RDaGFydEZpbHRlciIsITEsImJvb2wiXSxbInVwZGF0ZUxpbmtzIiwidXNlclNldCJdXSxsdj1bWyJhY3RpdmVUYWIiLDAsImludCJdLFsiYXV0b0ZpbHRlckRhdGVHcm91cGluZyIsITAsImJvb2wiXSxbImZpcnN0U2hlZXQiLDAsImludCJdLFsibWluaW1pemVkIiwhMSwiYm9vbCJdLFsic2hvd0hvcml6b250YWxTY3JvbGwiLCEwLCJib29sIl0sWyJzaG93U2hlZXRUYWJzIiwhMCwiYm9vbCJdLFsic2hvd1ZlcnRpY2FsU2Nyb2xsIiwhMCwiYm9vbCJdLFsidGFiUmF0aW8iLDYwMCwiaW50Il0sWyJ2aXNpYmlsaXR5IiwidmlzaWJsZSJdXSx1dj1bXSxodj1bWyJjYWxjQ29tcGxldGVkIiwidHJ1ZSJdLFsiY2FsY01vZGUiLCJhdXRvIl0sWyJjYWxjT25TYXZlIiwidHJ1ZSJdLFsiY29uY3VycmVudENhbGMiLCJ0cnVlIl0sWyJmdWxsQ2FsY09uTG9hZCIsImZhbHNlIl0sWyJmdWxsUHJlY2lzaW9uIiwidHJ1ZSJdLFsiaXRlcmF0ZSIsImZhbHNlIl0sWyJpdGVyYXRlQ291bnQiLCIxMDAiXSxbIml0ZXJhdGVEZWx0YSIsIjAuMDAxIl0sWyJyZWZNb2RlIiwiQTEiXV07ZnVuY3Rpb24gcGYoZSxhKXtmb3IodmFyIHI9MDtyIT1lLmxlbmd0aDsrK3IpZm9yKHZhciB0PWVbcl0sbj0wO24hPWEubGVuZ3RoOysrbil7dmFyIGk9YVtuXTtpZih0W2lbMF1dPT1udWxsKXRbaVswXV09aVsxXTtlbHNlIHN3aXRjaChpWzJdKXtjYXNlImJvb2wiOnR5cGVvZiB0W2lbMF1dPT0ic3RyaW5nIiYmKHRbaVswXV09RmUodFtpWzBdXSkpO2JyZWFrO2Nhc2UiaW50Ijp0eXBlb2YgdFtpWzBdXT09InN0cmluZyImJih0W2lbMF1dPXBhcnNlSW50KHRbaVswXV0sMTApKTticmVha319fWZ1bmN0aW9uIGdmKGUsYSl7Zm9yKHZhciByPTA7ciE9YS5sZW5ndGg7KytyKXt2YXIgdD1hW3JdO2lmKGVbdFswXV09PW51bGwpZVt0WzBdXT10WzFdO2Vsc2Ugc3dpdGNoKHRbMl0pe2Nhc2UiYm9vbCI6dHlwZW9mIGVbdFswXV09PSJzdHJpbmciJiYoZVt0WzBdXT1GZShlW3RbMF1dKSk7YnJlYWs7Y2FzZSJpbnQiOnR5cGVvZiBlW3RbMF1dPT0ic3RyaW5nIiYmKGVbdFswXV09cGFyc2VJbnQoZVt0WzBdXSwxMCkpO2JyZWFrfX19ZnVuY3Rpb24gbWYoZSl7Z2YoZS5XQlByb3BzLHZmKSxnZihlLkNhbGNQcixodikscGYoZS5XQlZpZXcsbHYpLHBmKGUuU2hlZXRzLHV2KSx4dC5kYXRlMTkwND1GZShlLldCUHJvcHMuZGF0ZTE5MDQpfXZhciB4dj0iOl1bKj8vXFwiLnNwbGl0KCIiKTtmdW5jdGlvbiBkdihlLGEpe3RyeXtpZihlPT0iIil0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGJlIGJsYW5rIik7aWYoZS5sZW5ndGg+MzEpdGhyb3cgbmV3IEVycm9yKCJTaGVldCBuYW1lIGNhbm5vdCBleGNlZWQgMzEgY2hhcnMiKTtpZihlLmNoYXJDb2RlQXQoMCk9PTM5fHxlLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk9PTM5KXRocm93IG5ldyBFcnJvcigiU2hlZXQgbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYXBvc3Ryb3BoZSAoJykiKTtpZihlLnRvTG93ZXJDYXNlKCk9PSJoaXN0b3J5Iil0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGJlICdIaXN0b3J5JyIpO3h2LmZvckVhY2goZnVuY3Rpb24ocil7aWYoZS5pbmRleE9mKHIpIT0tMSl0aHJvdyBuZXcgRXJyb3IoIlNoZWV0IG5hbWUgY2Fubm90IGNvbnRhaW4gOiBcXCAvID8gKiBbIF0iKX0pfWNhdGNoKHIpe2lmKGEpcmV0dXJuITE7dGhyb3cgcn1yZXR1cm4hMH12YXIgdnY9Lzxcdys6d29ya2Jvb2svO2Z1bmN0aW9uIHB2KGUsYSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCBmaWxlIik7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSxOYW1lczpbXSx4bWxuczoiIn0sdD0hMSxuPSJ4bWxucyIsaT17fSxmPTA7aWYoZS5yZXBsYWNlKG5yLGZ1bmN0aW9uKGMsbyl7dmFyIGw9b2UoYyk7c3dpdGNoKEFyKGxbMF0pKXtjYXNlIjw/eG1sIjpicmVhaztjYXNlIjx3b3JrYm9vayI6Yy5tYXRjaCh2dikmJihuPSJ4bWxucyIrYy5tYXRjaCgvPChcdyspOi8pWzFdKSxyLnhtbG5zPWxbbl07YnJlYWs7Y2FzZSI8L3dvcmtib29rPiI6YnJlYWs7Y2FzZSI8ZmlsZVZlcnNpb24iOmRlbGV0ZSBsWzBdLHIuQXBwVmVyc2lvbj1sO2JyZWFrO2Nhc2UiPGZpbGVWZXJzaW9uLz4iOmNhc2UiPC9maWxlVmVyc2lvbj4iOmJyZWFrO2Nhc2UiPGZpbGVTaGFyaW5nIjpicmVhaztjYXNlIjxmaWxlU2hhcmluZy8+IjpicmVhaztjYXNlIjx3b3JrYm9va1ByIjpjYXNlIjx3b3JrYm9va1ByLz4iOnZmLmZvckVhY2goZnVuY3Rpb24odSl7aWYobFt1WzBdXSE9bnVsbClzd2l0Y2godVsyXSl7Y2FzZSJib29sIjpyLldCUHJvcHNbdVswXV09RmUobFt1WzBdXSk7YnJlYWs7Y2FzZSJpbnQiOnIuV0JQcm9wc1t1WzBdXT1wYXJzZUludChsW3VbMF1dLDEwKTticmVhaztkZWZhdWx0OnIuV0JQcm9wc1t1WzBdXT1sW3VbMF1dfX0pLGwuY29kZU5hbWUmJihyLldCUHJvcHMuQ29kZU5hbWU9VmUobC5jb2RlTmFtZSkpO2JyZWFrO2Nhc2UiPC93b3JrYm9va1ByPiI6YnJlYWs7Y2FzZSI8d29ya2Jvb2tQcm90ZWN0aW9uIjpicmVhaztjYXNlIjx3b3JrYm9va1Byb3RlY3Rpb24vPiI6YnJlYWs7Y2FzZSI8Ym9va1ZpZXdzIjpjYXNlIjxib29rVmlld3M+IjpjYXNlIjwvYm9va1ZpZXdzPiI6YnJlYWs7Y2FzZSI8d29ya2Jvb2tWaWV3IjpjYXNlIjx3b3JrYm9va1ZpZXcvPiI6ZGVsZXRlIGxbMF0sci5XQlZpZXcucHVzaChsKTticmVhaztjYXNlIjwvd29ya2Jvb2tWaWV3PiI6YnJlYWs7Y2FzZSI8c2hlZXRzIjpjYXNlIjxzaGVldHM+IjpjYXNlIjwvc2hlZXRzPiI6YnJlYWs7Y2FzZSI8c2hlZXQiOnN3aXRjaChsLnN0YXRlKXtjYXNlImhpZGRlbiI6bC5IaWRkZW49MTticmVhaztjYXNlInZlcnlIaWRkZW4iOmwuSGlkZGVuPTI7YnJlYWs7ZGVmYXVsdDpsLkhpZGRlbj0wfWRlbGV0ZSBsLnN0YXRlLGwubmFtZT1DZShWZShsLm5hbWUpKSxkZWxldGUgbFswXSxyLlNoZWV0cy5wdXNoKGwpO2JyZWFrO2Nhc2UiPC9zaGVldD4iOmJyZWFrO2Nhc2UiPGZ1bmN0aW9uR3JvdXBzIjpjYXNlIjxmdW5jdGlvbkdyb3Vwcy8+IjpicmVhaztjYXNlIjxmdW5jdGlvbkdyb3VwIjpicmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXMiOmNhc2UiPC9leHRlcm5hbFJlZmVyZW5jZXM+IjpjYXNlIjxleHRlcm5hbFJlZmVyZW5jZXM+IjpicmVhaztjYXNlIjxleHRlcm5hbFJlZmVyZW5jZSI6YnJlYWs7Y2FzZSI8ZGVmaW5lZE5hbWVzLz4iOmJyZWFrO2Nhc2UiPGRlZmluZWROYW1lcz4iOmNhc2UiPGRlZmluZWROYW1lcyI6dD0hMDticmVhaztjYXNlIjwvZGVmaW5lZE5hbWVzPiI6dD0hMTticmVhaztjYXNlIjxkZWZpbmVkTmFtZSI6aT17fSxpLk5hbWU9VmUobC5uYW1lKSxsLmNvbW1lbnQmJihpLkNvbW1lbnQ9bC5jb21tZW50KSxsLmxvY2FsU2hlZXRJZCYmKGkuU2hlZXQ9K2wubG9jYWxTaGVldElkKSxGZShsLmhpZGRlbnx8IjAiKSYmKGkuSGlkZGVuPSEwKSxmPW8rYy5sZW5ndGg7YnJlYWs7Y2FzZSI8L2RlZmluZWROYW1lPiI6aS5SZWY9Q2UoVmUoZS5zbGljZShmLG8pKSksci5OYW1lcy5wdXNoKGkpO2JyZWFrO2Nhc2UiPGRlZmluZWROYW1lLz4iOmJyZWFrO2Nhc2UiPGNhbGNQciI6ZGVsZXRlIGxbMF0sci5DYWxjUHI9bDticmVhaztjYXNlIjxjYWxjUHIvPiI6ZGVsZXRlIGxbMF0sci5DYWxjUHI9bDticmVhaztjYXNlIjwvY2FsY1ByPiI6YnJlYWs7Y2FzZSI8b2xlU2l6ZSI6YnJlYWs7Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cz4iOmNhc2UiPC9jdXN0b21Xb3JrYm9va1ZpZXdzPiI6Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3cyI6YnJlYWs7Y2FzZSI8Y3VzdG9tV29ya2Jvb2tWaWV3IjpjYXNlIjwvY3VzdG9tV29ya2Jvb2tWaWV3PiI6YnJlYWs7Y2FzZSI8cGl2b3RDYWNoZXM+IjpjYXNlIjwvcGl2b3RDYWNoZXM+IjpjYXNlIjxwaXZvdENhY2hlcyI6YnJlYWs7Y2FzZSI8cGl2b3RDYWNoZSI6YnJlYWs7Y2FzZSI8c21hcnRUYWdQciI6Y2FzZSI8c21hcnRUYWdQci8+IjpicmVhaztjYXNlIjxzbWFydFRhZ1R5cGVzIjpjYXNlIjxzbWFydFRhZ1R5cGVzPiI6Y2FzZSI8L3NtYXJ0VGFnVHlwZXM+IjpicmVhaztjYXNlIjxzbWFydFRhZ1R5cGUiOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hpbmciOmNhc2UiPHdlYlB1Ymxpc2hpbmcvPiI6YnJlYWs7Y2FzZSI8ZmlsZVJlY292ZXJ5UHIiOmNhc2UiPGZpbGVSZWNvdmVyeVByLz4iOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hPYmplY3RzPiI6Y2FzZSI8d2ViUHVibGlzaE9iamVjdHMiOmNhc2UiPC93ZWJQdWJsaXNoT2JqZWN0cz4iOmJyZWFrO2Nhc2UiPHdlYlB1Ymxpc2hPYmplY3QiOmJyZWFrO2Nhc2UiPGV4dExzdCI6Y2FzZSI8ZXh0THN0PiI6Y2FzZSI8L2V4dExzdD4iOmNhc2UiPGV4dExzdC8+IjpicmVhaztjYXNlIjxleHQiOnQ9ITA7YnJlYWs7Y2FzZSI8L2V4dD4iOnQ9ITE7YnJlYWs7Y2FzZSI8QXJjaElEIjpicmVhaztjYXNlIjxBbHRlcm5hdGVDb250ZW50IjpjYXNlIjxBbHRlcm5hdGVDb250ZW50PiI6dD0hMDticmVhaztjYXNlIjwvQWx0ZXJuYXRlQ29udGVudD4iOnQ9ITE7YnJlYWs7Y2FzZSI8cmV2aXNpb25QdHIiOmJyZWFrO2RlZmF1bHQ6aWYoIXQmJmEuV1RGKXRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkICIrbFswXSsiIGluIHdvcmtib29rIil9cmV0dXJuIGN9KSxvby5pbmRleE9mKHIueG1sbnMpPT09LTEpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIE5hbWVzcGFjZTogIityLnhtbG5zKTtyZXR1cm4gbWYocikscn1mdW5jdGlvbiBndihlLGEpe3ZhciByPXt9O3JldHVybiByLkhpZGRlbj1lLnJlYWRfc2hpZnQoNCksci5pVGFiSUQ9ZS5yZWFkX3NoaWZ0KDQpLHIuc3RyUmVsSUQ9Y24oZSksci5uYW1lPW1yKGUpLHJ9ZnVuY3Rpb24gbXYoZSxhKXt2YXIgcj17fSx0PWUucmVhZF9zaGlmdCg0KTtyLmRlZmF1bHRUaGVtZVZlcnNpb249ZS5yZWFkX3NoaWZ0KDQpO3ZhciBuPWE+OD9tcihlKToiIjtyZXR1cm4gbi5sZW5ndGg+MCYmKHIuQ29kZU5hbWU9biksci5hdXRvQ29tcHJlc3NQaWN0dXJlcz0hISh0JjY1NTM2KSxyLmJhY2t1cEZpbGU9ISEodCY2NCksci5jaGVja0NvbXBhdGliaWxpdHk9ISEodCY0MDk2KSxyLmRhdGUxOTA0PSEhKHQmMSksci5maWx0ZXJQcml2YWN5PSEhKHQmOCksci5oaWRlUGl2b3RGaWVsZExpc3Q9ISEodCYxMDI0KSxyLnByb21wdGVkU29sdXRpb25zPSEhKHQmMTYpLHIucHVibGlzaEl0ZW1zPSEhKHQmMjA0OCksci5yZWZyZXNoQWxsQ29ubmVjdGlvbnM9ISEodCYyNjIxNDQpLHIuc2F2ZUV4dGVybmFsTGlua1ZhbHVlcz0hISh0JjEyOCksci5zaG93Qm9yZGVyVW5zZWxlY3RlZFRhYmxlcz0hISh0JjQpLHIuc2hvd0lua0Fubm90YXRpb249ISEodCYzMiksci5zaG93T2JqZWN0cz1bImFsbCIsInBsYWNlaG9sZGVycyIsIm5vbmUiXVt0Pj4xMyYzXSxyLnNob3dQaXZvdENoYXJ0RmlsdGVyPSEhKHQmMzI3NjgpLHIudXBkYXRlTGlua3M9WyJ1c2VyU2V0IiwibmV2ZXIiLCJhbHdheXMiXVt0Pj44JjNdLHJ9ZnVuY3Rpb24gX3YoZSxhKXt2YXIgcj17fTtyZXR1cm4gZS5yZWFkX3NoaWZ0KDQpLHIuQXJjaElEPWUucmVhZF9zaGlmdCg0KSxlLmwrPWEtOCxyfWZ1bmN0aW9uIGt2KGUsYSxyKXt2YXIgdD1lLmwrYSxuPWUucmVhZF9zaGlmdCg0KTtlLmwrPTE7dmFyIGk9ZS5yZWFkX3NoaWZ0KDQpLGY9SW8oZSkscyxjPSIiO3RyeXtzPXJkKGUsMCxyKTt0cnl7Yz1kMChlKX1jYXRjaHt9fWNhdGNoe2NvbnNvbGUuZXJyb3IoIkNvdWxkIG5vdCBwYXJzZSBkZWZpbmVkIG5hbWUgIitmKX1uJjMyJiYoZj0iX3hsbm0uIitmKSxlLmw9dDt2YXIgbz17TmFtZTpmLFB0ZzpzLEZsYWdzOm59O3JldHVybiBpPDI2ODQzNTQ1NSYmKG8uU2hlZXQ9aSksYyYmKG8uQ29tbWVudD1jKSxvfWZ1bmN0aW9uIHd2KGUsYSl7dmFyIHI9e0FwcFZlcnNpb246e30sV0JQcm9wczp7fSxXQlZpZXc6W10sU2hlZXRzOltdLENhbGNQcjp7fSx4bWxuczoiIn0sdD1bXSxuPSExO2F8fChhPXt9KSxhLmJpZmY9MTI7dmFyIGk9W10sZj1bW11dO3JldHVybiBmLlNoZWV0TmFtZXM9W10sZi5YVEk9W10sSTBbMTZdPXtuOiJCcnRGUlRBcmNoSUQkIixmOl92fSx2YShlLGZ1bmN0aW9uKGMsbyxsKXtzd2l0Y2gobCl7Y2FzZSAxNTY6Zi5TaGVldE5hbWVzLnB1c2goYy5uYW1lKSxyLlNoZWV0cy5wdXNoKGMpO2JyZWFrO2Nhc2UgMTUzOnIuV0JQcm9wcz1jO2JyZWFrO2Nhc2UgMzk6Yy5TaGVldCE9bnVsbCYmKGEuU0lEPWMuU2hlZXQpLGMuUmVmPWMuUHRnP3dyKGMuUHRnLG51bGwsbnVsbCxmLGEpOiIjUkVGISIsZGVsZXRlIGEuU0lELGRlbGV0ZSBjLlB0ZyxpLnB1c2goYyk7YnJlYWs7Y2FzZSAxMDM2OmJyZWFrO2Nhc2UgMzU3OmNhc2UgMzU4OmNhc2UgMzU1OmNhc2UgNjY3OmZbMF0ubGVuZ3RoP2YucHVzaChbbCxjXSk6ZlswXT1bbCxjXSxmW2YubGVuZ3RoLTFdLlhUST1bXTticmVhaztjYXNlIDM2MjpmLmxlbmd0aD09PTAmJihmWzBdPVtdLGZbMF0uWFRJPVtdKSxmW2YubGVuZ3RoLTFdLlhUST1mW2YubGVuZ3RoLTFdLlhUSS5jb25jYXQoYyksZi5YVEk9Zi5YVEkuY29uY2F0KGMpO2JyZWFrO2Nhc2UgMzYxOmJyZWFrO2Nhc2UgMjA3MTpjYXNlIDE1ODpjYXNlIDE0MzpjYXNlIDY2NDpjYXNlIDM1MzpicmVhaztjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgNTM0OmNhc2UgNjc3OmNhc2UgMTU3OmNhc2UgNjEwOmNhc2UgMjA1MDpjYXNlIDE1NTpjYXNlIDU0ODpjYXNlIDY3NjpjYXNlIDEyODpjYXNlIDY2NTpjYXNlIDIxMjg6Y2FzZSAyMTI1OmNhc2UgNTQ5OmNhc2UgMjA1MzpjYXNlIDU5NjpjYXNlIDIwNzY6Y2FzZSAyMDc1OmNhc2UgMjA4MjpjYXNlIDM5NzpjYXNlIDE1NDpjYXNlIDExMTc6Y2FzZSA1NTM6Y2FzZSAyMDkxOmJyZWFrO2Nhc2UgMzU6dC5wdXNoKGwpLG49ITA7YnJlYWs7Y2FzZSAzNjp0LnBvcCgpLG49ITE7YnJlYWs7Y2FzZSAzNzp0LnB1c2gobCksbj0hMDticmVhaztjYXNlIDM4OnQucG9wKCksbj0hMTticmVhaztjYXNlIDE2OmJyZWFrO2RlZmF1bHQ6aWYoIW8uVCl7aWYoIW58fGEuV1RGJiZ0W3QubGVuZ3RoLTFdIT0zNyYmdFt0Lmxlbmd0aC0xXSE9MzUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHJlY29yZCAweCIrbC50b1N0cmluZygxNikpfX19LGEpLG1mKHIpLHIuTmFtZXM9aSxyLnN1cGJvb2tzPWYscn1mdW5jdGlvbiBGdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP3d2KGUscik6cHYoZSxyKX1mdW5jdGlvbiBUdihlLGEscix0LG4saSxmLHMpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9ydihlLHQscixuLGksZixzKTpkZChlLHQscixuLGksZixzKX1mdW5jdGlvbiBFdihlLGEscix0LG4saSxmLHMpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9vdihlLHQscixuLGkpOmZ2KGUsdCxyLG4saSl9ZnVuY3Rpb24gQXYoZSxhLHIsdCxuLGksZixzKXtyZXR1cm4gYS5zbGljZSgtNCk9PT0iLmJpbiI/UjEoKTpPMSgpfWZ1bmN0aW9uIHl2KGUsYSxyLHQsbixpLGYscyl7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP0kxKCk6RDEoKX1mdW5jdGlvbiBTdihlLGEscix0KXtyZXR1cm4gYS5zbGljZSgtNCk9PT0iLmJpbiI/JGgoZSxyLHQpOkhoKGUscix0KX1mdW5jdGlvbiBDdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP3p1KGUscik6R3UoZSxyKX1mdW5jdGlvbiBidihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP1MxKGUscik6RjEoZSxyKX1mdW5jdGlvbiBJdihlLGEscil7cmV0dXJuIGEuc2xpY2UoLTQpPT09Ii5iaW4iP2gxKGUpOmwxKGUpfWZ1bmN0aW9uIER2KGUsYSxyLHQpe3JldHVybiByLnNsaWNlKC00KT09PSIuYmluIj94MShlLGEscix0KTp2b2lkIDB9ZnVuY3Rpb24gUnYoZSxhLHIpe3JldHVybiBhLnNsaWNlKC00KT09PSIuYmluIj9jMShlLGEscik6bzEoZSxhLHIpfXZhciBfZj0vXGIoKD86XHcrOik/W1x3XSspPSgoPzoiKShbXiJdKikoPzoiKXwoPzonKShbXiddKikoPzonKSkvZyxrZj0vXGIoKD86XHcrOik/W1x3XSspPSgoPzoiKSg/OlteIl0qKSg/OiIpfCg/OicpKD86W14nXSopKD86JykpLztmdW5jdGlvbiBRcihlLGEpe3ZhciByPWUuc3BsaXQoL1xzKy8pLHQ9W107aWYoYXx8KHRbMF09clswXSksci5sZW5ndGg9PT0xKXJldHVybiB0O3ZhciBuPWUubWF0Y2goX2YpLGksZixzLGM7aWYobilmb3IoYz0wO2MhPW4ubGVuZ3RoOysrYylpPW5bY10ubWF0Y2goa2YpLChmPWlbMV0uaW5kZXhPZigiOiIpKT09PS0xP3RbaVsxXV09aVsyXS5zbGljZSgxLGlbMl0ubGVuZ3RoLTEpOihpWzFdLnNsaWNlKDAsNik9PT0ieG1sbnM6Ij9zPSJ4bWxucyIraVsxXS5zbGljZSg2KTpzPWlbMV0uc2xpY2UoZisxKSx0W3NdPWlbMl0uc2xpY2UoMSxpWzJdLmxlbmd0aC0xKSk7cmV0dXJuIHR9ZnVuY3Rpb24gT3YoZSl7dmFyIGE9ZS5zcGxpdCgvXHMrLykscj17fTtpZihhLmxlbmd0aD09PTEpcmV0dXJuIHI7dmFyIHQ9ZS5tYXRjaChfZiksbixpLGYscztpZih0KWZvcihzPTA7cyE9dC5sZW5ndGg7KytzKW49dFtzXS5tYXRjaChrZiksKGk9blsxXS5pbmRleE9mKCI6IikpPT09LTE/cltuWzFdXT1uWzJdLnNsaWNlKDEsblsyXS5sZW5ndGgtMSk6KG5bMV0uc2xpY2UoMCw2KT09PSJ4bWxuczoiP2Y9InhtbG5zIituWzFdLnNsaWNlKDYpOmY9blsxXS5zbGljZShpKzEpLHJbZl09blsyXS5zbGljZSgxLG5bMl0ubGVuZ3RoLTEpKTtyZXR1cm4gcn12YXIgJHQ7ZnVuY3Rpb24gTnYoZSxhLHIpe3ZhciB0PSR0W2VdfHxDZShlKTtyZXR1cm4gdD09PSJHZW5lcmFsIj9QYShhKTpScih0LGEse2RhdGUxOTA0OiEhcn0pfWZ1bmN0aW9uIE12KGUsYSxyLHQpe3ZhciBuPXQ7c3dpdGNoKChyWzBdLm1hdGNoKC9kdDpkdD0iKFtcdy5dKykiLyl8fFsiIiwiIl0pWzFdKXtjYXNlImJvb2xlYW4iOm49RmUodCk7YnJlYWs7Y2FzZSJpMiI6Y2FzZSJpbnQiOm49cGFyc2VJbnQodCwxMCk7YnJlYWs7Y2FzZSJyNCI6Y2FzZSJmbG9hdCI6bj1wYXJzZUZsb2F0KHQpO2JyZWFrO2Nhc2UiZGF0ZSI6Y2FzZSJkYXRlVGltZS50eiI6bj14cih0KTticmVhaztjYXNlImk4IjpjYXNlInN0cmluZyI6Y2FzZSJmaXhlZCI6Y2FzZSJ1dWlkIjpjYXNlImJpbi5iYXNlNjQiOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJiYWQgY3VzdHByb3A6IityWzBdKX1lW0NlKGEpXT1ufWZ1bmN0aW9uIFB2KGUsYSxyLHQpe2lmKGUudCE9PSJ6Iil7aWYoIXJ8fHIuY2VsbFRleHQhPT0hMSl0cnl7ZS50PT09ImUiP2Uudz1lLnd8fGJyW2Uudl06YT09PSJHZW5lcmFsIj9lLnQ9PT0ibiI/KGUudnwwKT09PWUudj9lLnc9ZS52LnRvU3RyaW5nKDEwKTplLnc9eXQoZS52KTplLnc9UGEoZS52KTplLnc9TnYoYXx8IkdlbmVyYWwiLGUudix0KX1jYXRjaChmKXtpZihyLldURil0aHJvdyBmfXRyeXt2YXIgbj0kdFthXXx8YXx8IkdlbmVyYWwiO2lmKHIuY2VsbE5GJiYoZS56PW4pLHIuY2VsbERhdGVzJiZlLnQ9PSJuIiYmWnIobikpe3ZhciBpPWNhKGUudisodD8xNDYyOjApKTtpJiYoZS50PSJkIixlLnY9bmV3IERhdGUoRGF0ZS5VVEMoaS55LGkubS0xLGkuZCxpLkgsaS5NLGkuUyxpLnUpKSl9fWNhdGNoKGYpe2lmKHIuV1RGKXRocm93IGZ9fX1mdW5jdGlvbiBMdihlLGEscil7aWYoci5jZWxsU3R5bGVzJiZhLkludGVyaW9yKXt2YXIgdD1hLkludGVyaW9yO3QuUGF0dGVybiYmKHQucGF0dGVyblR5cGU9SWhbdC5QYXR0ZXJuXXx8dC5QYXR0ZXJuKX1lW2EuSURdPWF9ZnVuY3Rpb24gQnYoZSxhLHIsdCxuLGksZixzLGMsbyxsKXt2YXIgdT0iR2VuZXJhbCIseD10LlN0eWxlSUQsaD17fTtvPW98fHt9O3ZhciBnPVtdLG09MDtmb3IoeD09PXZvaWQgMCYmcyYmKHg9cy5TdHlsZUlEKSx4PT09dm9pZCAwJiZmJiYoeD1mLlN0eWxlSUQpO2lbeF0hPT12b2lkIDA7KXt2YXIgZD1pW3hdO2lmKGQubmYmJih1PWQubmYpLGQuSW50ZXJpb3ImJmcucHVzaChkLkludGVyaW9yKSwhZC5QYXJlbnQpYnJlYWs7eD1kLlBhcmVudH1zd2l0Y2goci5UeXBlKXtjYXNlIkJvb2xlYW4iOnQudD0iYiIsdC52PUZlKGUpO2JyZWFrO2Nhc2UiU3RyaW5nIjp0LnQ9InMiLHQucj1BaShDZShlKSksdC52PWUuaW5kZXhPZigiPCIpPi0xP0NlKGF8fGUpLnJlcGxhY2UoLzxbXjw+XSo+L2csIiIpOnQucjticmVhaztjYXNlIkRhdGVUaW1lIjplLnNsaWNlKC0xKSE9IloiJiYoZSs9IloiKSx0LnY9b3IoeHIoZSxsKSxsKSx0LnYhPT10LnYmJih0LnY9Q2UoZSkpLCghdXx8dT09IkdlbmVyYWwiKSYmKHU9Inl5eXktbW0tZGQiKTtjYXNlIk51bWJlciI6dC52PT09dm9pZCAwJiYodC52PStlKSx0LnR8fCh0LnQ9Im4iKTticmVhaztjYXNlIkVycm9yIjp0LnQ9ImUiLHQudj1kcltlXSxvLmNlbGxUZXh0IT09ITEmJih0Lnc9ZSk7YnJlYWs7ZGVmYXVsdDplPT0iIiYmYT09IiI/dC50PSJ6IjoodC50PSJzIix0LnY9QWkoYXx8ZSkpO2JyZWFrfWlmKFB2KHQsdSxvLGwpLG8uY2VsbEZvcm11bGEhPT0hMSlpZih0LkZvcm11bGEpe3ZhciBwPUNlKHQuRm9ybXVsYSk7cC5jaGFyQ29kZUF0KDApPT02MSYmKHA9cC5zbGljZSgxKSksdC5mPXFhKHAsbiksZGVsZXRlIHQuRm9ybXVsYSx0LkFycmF5UmFuZ2U9PSJSQyI/dC5GPXFhKCJSQzpSQyIsbik6dC5BcnJheVJhbmdlJiYodC5GPXFhKHQuQXJyYXlSYW5nZSxuKSxjLnB1c2goW1plKHQuRiksdC5GXSkpfWVsc2UgZm9yKG09MDttPGMubGVuZ3RoOysrbSluLnI+PWNbbV1bMF0ucy5yJiZuLnI8PWNbbV1bMF0uZS5yJiZuLmM+PWNbbV1bMF0ucy5jJiZuLmM8PWNbbV1bMF0uZS5jJiYodC5GPWNbbV1bMV0pO28uY2VsbFN0eWxlcyYmKGcuZm9yRWFjaChmdW5jdGlvbih3KXshaC5wYXR0ZXJuVHlwZSYmdy5wYXR0ZXJuVHlwZSYmKGgucGF0dGVyblR5cGU9dy5wYXR0ZXJuVHlwZSl9KSx0LnM9aCksdC5TdHlsZUlEIT09dm9pZCAwJiYodC5peGZlPXQuU3R5bGVJRCl9ZnVuY3Rpb24gVXYoZSl7cmV0dXJuIHRzLmluZGV4T2YoIl94bG5tLiIrZSk+LTE/Il94bG5tLiIrZTplfWZ1bmN0aW9uIEh2KGUpe2UudD1lLnZ8fCIiLGUudD1lLnQucmVwbGFjZSgvXHJcbi9nLGAKYCkucmVwbGFjZSgvXHIvZyxgCmApLGUudj1lLnc9ZS5peGZlPXZvaWQgMH1mdW5jdGlvbiB5bihlLGEpe3ZhciByPWF8fHt9O2xpKCk7dmFyIHQ9VHQoaDAoZSkpOyhyLnR5cGU9PSJiaW5hcnkifHxyLnR5cGU9PSJhcnJheSJ8fHIudHlwZT09ImJhc2U2NCIpJiYodD1WZSh0KSk7dmFyIG49dC5zbGljZSgwLDEwMjQpLnRvTG93ZXJDYXNlKCksaT0hMTtpZihuPW4ucmVwbGFjZSgvIi4qPyIvZywiIiksKG4uaW5kZXhPZigiPiIpJjEwMjMpPk1hdGgubWluKG4uaW5kZXhPZigiLCIpJjEwMjMsbi5pbmRleE9mKCI7IikmMTAyMykpe3ZhciBmPVVlKHIpO3JldHVybiBmLnR5cGU9InN0cmluZyIsbHQudG9fd29ya2Jvb2sodCxmKX1pZihuLmluZGV4T2YoIjw/eG1sIik9PS0xJiZbImh0bWwiLCJ0YWJsZSIsImhlYWQiLCJtZXRhIiwic2NyaXB0Iiwic3R5bGUiLCJkaXYiXS5mb3JFYWNoKGZ1bmN0aW9uKGhlKXtuLmluZGV4T2YoIjwiK2hlKT49MCYmKGk9ITApfSksaSlyZXR1cm4gcDIodCxyKTskdD17IkdlbmVyYWwgTnVtYmVyIjoiR2VuZXJhbCIsIkdlbmVyYWwgRGF0ZSI6VGVbMjJdLCJMb25nIERhdGUiOiJkZGRkLCBtbW1tIGRkLCB5eXl5IiwiTWVkaXVtIERhdGUiOlRlWzE1XSwiU2hvcnQgRGF0ZSI6VGVbMTRdLCJMb25nIFRpbWUiOlRlWzE5XSwiTWVkaXVtIFRpbWUiOlRlWzE4XSwiU2hvcnQgVGltZSI6VGVbMjBdLEN1cnJlbmN5OiciJCIjLCMjMC4wMF8pO1tSZWRdXFwoIiQiIywjIzAuMDBcXCknLEZpeGVkOlRlWzJdLFN0YW5kYXJkOlRlWzRdLFBlcmNlbnQ6VGVbMTBdLFNjaWVudGlmaWM6VGVbMTFdLCJZZXMvTm8iOiciWWVzIjsiWWVzIjsiTm8iO0AnLCJUcnVlL0ZhbHNlIjonIlRydWUiOyJUcnVlIjsiRmFsc2UiO0AnLCJPbi9PZmYiOiciWWVzIjsiWWVzIjsiTm8iO0AnfTt2YXIgcyxjPVtdLG8sbD17fSx1PVtdLHg9e30saD0iIjtyLmRlbnNlJiYoeFsiIWRhdGEiXT1bXSk7dmFyIGc9e30sbT17fSxkPVFyKCc8RGF0YSBzczpUeXBlPSJTdHJpbmciPicpLHA9MCx3PTAsXz0wLHk9e3M6e3I6MmU2LGM6MmU2fSxlOntyOjAsYzowfX0sUj17fSxQPXt9LGI9IiIsTj0wLEk9W10sQj17fSxMPXt9LEc9MCxpZT1bXSxuZT1bXSxxPXt9LGxlPVtdLFEsZ2U9ITEsdWU9W10saj1bXSx5ZT17fSxiZT0wLG1lPTAsWj17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfX0sT2U9e307aXIubGFzdEluZGV4PTAsdD1DdCh0LCI8IS0tIiwiLS0+Iik7Zm9yKHZhciB3ZT0iIjtzPWlyLmV4ZWModCk7KXN3aXRjaChzWzNdPSh3ZT1zWzNdKS50b0xvd2VyQ2FzZSgpKXtjYXNlImRhdGEiOmlmKHdlPT0iZGF0YSIpe2lmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBzWzBdLmNoYXJBdChzWzBdLmxlbmd0aC0yKSE9PSIvIiYmYy5wdXNoKFtzWzNdLCEwXSk7YnJlYWt9aWYoY1tjLmxlbmd0aC0xXVsxXSlicmVhaztzWzFdPT09Ii8iP0J2KHQuc2xpY2UocCxzLmluZGV4KSxiLGQsY1tjLmxlbmd0aC0xXVswXT09ImNvbW1lbnQiP3E6Zyx7Yzp3LHI6X30sUixsZVt3XSxtLHVlLHIsWi5XQlByb3BzLmRhdGUxOTA0KTooYj0iIixkPVFyKHNbMF0pLHA9cy5pbmRleCtzWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJjZWxsIjppZihzWzFdPT09Ii8iKWlmKG5lLmxlbmd0aD4wJiYoZy5jPW5lKSwoIXIuc2hlZXRSb3dzfHxyLnNoZWV0Um93cz5fKSYmZy52IT09dm9pZCAwJiYoci5kZW5zZT8oeFsiIWRhdGEiXVtfXXx8KHhbIiFkYXRhIl1bX109W10pLHhbIiFkYXRhIl1bX11bd109Zyk6eFtIZSh3KStHZShfKV09ZyksZy5IUmVmJiYoZy5sPXtUYXJnZXQ6Q2UoZy5IUmVmKX0sZy5IUmVmU2NyZWVuVGlwJiYoZy5sLlRvb2x0aXA9Zy5IUmVmU2NyZWVuVGlwKSxkZWxldGUgZy5IUmVmLGRlbGV0ZSBnLkhSZWZTY3JlZW5UaXApLChnLk1lcmdlQWNyb3NzfHxnLk1lcmdlRG93bikmJihiZT13KyhwYXJzZUludChnLk1lcmdlQWNyb3NzLDEwKXwwKSxtZT1fKyhwYXJzZUludChnLk1lcmdlRG93biwxMCl8MCksKGJlPnd8fG1lPl8pJiZJLnB1c2goe3M6e2M6dyxyOl99LGU6e2M6YmUscjptZX19KSksIXIuc2hlZXRTdHVicylnLk1lcmdlQWNyb3NzP3c9YmUrMTorK3c7ZWxzZSBpZihnLk1lcmdlQWNyb3NzfHxnLk1lcmdlRG93bil7Zm9yKHZhciBBZT13O0FlPD1iZTsrK0FlKWZvcih2YXIgQT1fO0E8PW1lOysrQSkoQWU+d3x8QT5fKSYmKHIuZGVuc2U/KHhbIiFkYXRhIl1bQV18fCh4WyIhZGF0YSJdW0FdPVtdKSx4WyIhZGF0YSJdW0FdW0FlXT17dDoieiJ9KTp4W0hlKEFlKStHZShBKV09e3Q6InoifSk7dz1iZSsxfWVsc2UrK3c7ZWxzZSBnPU92KHNbMF0pLGcuSW5kZXgmJih3PStnLkluZGV4LTEpLHc8eS5zLmMmJih5LnMuYz13KSx3PnkuZS5jJiYoeS5lLmM9dyksc1swXS5zbGljZSgtMik9PT0iLz4iJiYrK3csbmU9W107YnJlYWs7Y2FzZSJyb3ciOnNbMV09PT0iLyJ8fHNbMF0uc2xpY2UoLTIpPT09Ii8+Ij8oXzx5LnMuciYmKHkucy5yPV8pLF8+eS5lLnImJih5LmUucj1fKSxzWzBdLnNsaWNlKC0yKT09PSIvPiImJihtPVFyKHNbMF0pLG0uSW5kZXgmJihfPSttLkluZGV4LTEpKSx3PTAsKytfKToobT1RcihzWzBdKSxtLkluZGV4JiYoXz0rbS5JbmRleC0xKSx5ZT17fSwobS5BdXRvRml0SGVpZ2h0PT0iMCJ8fG0uSGVpZ2h0KSYmKHllLmhweD1wYXJzZUludChtLkhlaWdodCwxMCkseWUuaHB0PVdzKHllLmhweCksaltfXT15ZSksbS5IaWRkZW49PSIxIiYmKHllLmhpZGRlbj0hMCxqW19dPXllKSk7YnJlYWs7Y2FzZSJ3b3Jrc2hlZXQiOmlmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSk7dS5wdXNoKGgpLHkucy5yPD15LmUuciYmeS5zLmM8PXkuZS5jJiYoeFsiIXJlZiJdPUllKHkpLHIuc2hlZXRSb3dzJiZyLnNoZWV0Um93czw9eS5lLnImJih4WyIhZnVsbHJlZiJdPXhbIiFyZWYiXSx5LmUucj1yLnNoZWV0Um93cy0xLHhbIiFyZWYiXT1JZSh5KSkpLEkubGVuZ3RoJiYoeFsiIW1lcmdlcyJdPUkpLGxlLmxlbmd0aD4wJiYoeFsiIWNvbHMiXT1sZSksai5sZW5ndGg+MCYmKHhbIiFyb3dzIl09aiksbFtoXT14fWVsc2UgeT17czp7cjoyZTYsYzoyZTZ9LGU6e3I6MCxjOjB9fSxfPXc9MCxjLnB1c2goW3NbM10sITFdKSxvPVFyKHNbMF0pLGg9Q2Uoby5OYW1lKSx4PXt9LHIuZGVuc2UmJih4WyIhZGF0YSJdPVtdKSxJPVtdLHVlPVtdLGo9W10sT2U9e25hbWU6aCxIaWRkZW46MH0sWi5TaGVldHMucHVzaChPZSk7YnJlYWs7Y2FzZSJ0YWJsZSI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNle2lmKHNbMF0uc2xpY2UoLTIpPT0iLz4iKWJyZWFrO2MucHVzaChbc1szXSwhMV0pLGxlPVtdLGdlPSExfWJyZWFrO2Nhc2Uic3R5bGUiOnNbMV09PT0iLyI/THYoUixQLHIpOlA9UXIoc1swXSk7YnJlYWs7Y2FzZSJudW1iZXJmb3JtYXQiOlAubmY9Q2UoUXIoc1swXSkuRm9ybWF0fHwiR2VuZXJhbCIpLCR0W1AubmZdJiYoUC5uZj0kdFtQLm5mXSk7Zm9yKHZhciBVPTA7VSE9MzkyJiZUZVtVXSE9UC5uZjsrK1UpO2lmKFU9PTM5Mil7Zm9yKFU9NTc7VSE9MzkyOysrVSlpZihUZVtVXT09bnVsbCl7TGEoUC5uZixVKTticmVha319YnJlYWs7Y2FzZSJjb2x1bW4iOmlmKGNbYy5sZW5ndGgtMV1bMF0hPT0idGFibGUifHxzWzFdPT09Ii8iKWJyZWFrO2lmKFE9UXIoc1swXSksUS5IaWRkZW4mJihRLmhpZGRlbj0hMCxkZWxldGUgUS5IaWRkZW4pLFEuV2lkdGgmJihRLndweD1wYXJzZUludChRLldpZHRoLDEwKSksIWdlJiZRLndweD4xMCl7Z2U9ITAscWU9TnM7Zm9yKHZhciBPPTA7TzxsZS5sZW5ndGg7KytPKWxlW09dJiZ1dChsZVtPXSl9Z2UmJnV0KFEpLGxlW1EuSW5kZXgtMXx8bGUubGVuZ3RoXT1RO2Zvcih2YXIgRD0wO0Q8K1EuU3BhbjsrK0QpbGVbbGUubGVuZ3RoXT1VZShRKTticmVhaztjYXNlIm5hbWVkcmFuZ2UiOmlmKHNbMV09PT0iLyIpYnJlYWs7Wi5OYW1lc3x8KFouTmFtZXM9W10pO3ZhciB6PW9lKHNbMF0pLHBlPXtOYW1lOlV2KHouTmFtZSksUmVmOnFhKHouUmVmZXJzVG8uc2xpY2UoMSkse3I6MCxjOjB9KX07Wi5TaGVldHMubGVuZ3RoPjAmJihwZS5TaGVldD1aLlNoZWV0cy5sZW5ndGgtMSksWi5OYW1lcy5wdXNoKHBlKTticmVhaztjYXNlIm5hbWVkY2VsbCI6YnJlYWs7Y2FzZSJiIjpicmVhaztjYXNlImkiOmJyZWFrO2Nhc2UidSI6YnJlYWs7Y2FzZSJzIjpicmVhaztjYXNlImVtIjpicmVhaztjYXNlImgyIjpicmVhaztjYXNlImgzIjpicmVhaztjYXNlInN1YiI6YnJlYWs7Y2FzZSJzdXAiOmJyZWFrO2Nhc2Uic3BhbiI6YnJlYWs7Y2FzZSJhbGlnbm1lbnQiOmJyZWFrO2Nhc2UiYm9yZGVycyI6YnJlYWs7Y2FzZSJib3JkZXIiOmJyZWFrO2Nhc2UiZm9udCI6aWYoc1swXS5zbGljZSgtMik9PT0iLz4iKWJyZWFrO3NbMV09PT0iLyI/Yis9dC5zbGljZShOLHMuaW5kZXgpOk49cy5pbmRleCtzWzBdLmxlbmd0aDticmVhaztjYXNlImludGVyaW9yIjppZighci5jZWxsU3R5bGVzKWJyZWFrO1AuSW50ZXJpb3I9UXIoc1swXSk7YnJlYWs7Y2FzZSJwcm90ZWN0aW9uIjpicmVhaztjYXNlImF1dGhvciI6Y2FzZSJ0aXRsZSI6Y2FzZSJkZXNjcmlwdGlvbiI6Y2FzZSJjcmVhdGVkIjpjYXNlImtleXdvcmRzIjpjYXNlInN1YmplY3QiOmNhc2UiY2F0ZWdvcnkiOmNhc2UiY29tcGFueSI6Y2FzZSJsYXN0YXV0aG9yIjpjYXNlImxhc3RzYXZlZCI6Y2FzZSJsYXN0cHJpbnRlZCI6Y2FzZSJ2ZXJzaW9uIjpjYXNlInJldmlzaW9uIjpjYXNlInRvdGFsdGltZSI6Y2FzZSJoeXBlcmxpbmtiYXNlIjpjYXNlIm1hbmFnZXIiOmNhc2UiY29udGVudHN0YXR1cyI6Y2FzZSJpZGVudGlmaWVyIjpjYXNlImxhbmd1YWdlIjpjYXNlImFwcG5hbWUiOmlmKHNbMF0uc2xpY2UoLTIpPT09Ii8+IilicmVhaztzWzFdPT09Ii8iP2VsKEIsd2UsdC5zbGljZShHLHMuaW5kZXgpKTpHPXMuaW5kZXgrc1swXS5sZW5ndGg7YnJlYWs7Y2FzZSJwYXJhZ3JhcGhzIjpicmVhaztjYXNlInN0eWxlcyI6Y2FzZSJ3b3JrYm9vayI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIGMucHVzaChbc1szXSwhMV0pO2JyZWFrO2Nhc2UiY29tbWVudCI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKTtIdihxKSxuZS5wdXNoKHEpfWVsc2UgYy5wdXNoKFtzWzNdLCExXSksbz1RcihzWzBdKSxGZShvLlNob3dBbHdheXN8fCIwIil8fChuZS5oaWRkZW49ITApLHE9e2E6by5BdXRob3J9O2JyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIGlmKHNbMF0uY2hhckF0KHNbMF0ubGVuZ3RoLTIpIT09Ii8iKXt2YXIgSj1RcihzWzBdKTt4WyIhYXV0b2ZpbHRlciJdPXtyZWY6cWEoSi5SYW5nZSkucmVwbGFjZSgvXCQvZywiIil9LGMucHVzaChbc1szXSwhMF0pfWJyZWFrO2Nhc2UibmFtZSI6YnJlYWs7Y2FzZSJkYXRhdmFsaWRhdGlvbiI6aWYoc1sxXT09PSIvIil7aWYoKG89Yy5wb3AoKSlbMF0hPT1zWzNdKXRocm93IG5ldyBFcnJvcigiQmFkIHN0YXRlOiAiK28uam9pbigifCIpKX1lbHNlIHNbMF0uY2hhckF0KHNbMF0ubGVuZ3RoLTIpIT09Ii8iJiZjLnB1c2goW3NbM10sITBdKTticmVhaztjYXNlInBpeGVsc3BlcmluY2giOmJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6Y2FzZSJkb2N1bWVudHByb3BlcnRpZXMiOmNhc2UiY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIjpjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOmNhc2UicGl2b3R0YWJsZSI6Y2FzZSJwaXZvdGNhY2hlIjpjYXNlIm5hbWVzIjpjYXNlIm1hcGluZm8iOmNhc2UicGFnZWJyZWFrcyI6Y2FzZSJxdWVyeXRhYmxlIjpjYXNlInNvcnRpbmciOmNhc2Uic2NoZW1hIjpjYXNlImNvbmRpdGlvbmFsZm9ybWF0dGluZyI6Y2FzZSJzbWFydHRhZ3R5cGUiOmNhc2Uic21hcnR0YWdzIjpjYXNlImV4Y2Vsd29ya2Jvb2siOmNhc2Uid29ya2Jvb2tvcHRpb25zIjpjYXNlIndvcmtzaGVldG9wdGlvbnMiOmlmKHNbMV09PT0iLyIpe2lmKChvPWMucG9wKCkpWzBdIT09c1szXSl0aHJvdyBuZXcgRXJyb3IoIkJhZCBzdGF0ZTogIitvLmpvaW4oInwiKSl9ZWxzZSBzWzBdLmNoYXJBdChzWzBdLmxlbmd0aC0yKSE9PSIvIiYmYy5wdXNoKFtzWzNdLCEwXSk7YnJlYWs7Y2FzZSJudWxsIjpicmVhaztkZWZhdWx0OmlmKGMubGVuZ3RoPT0wJiZzWzNdPT0iZG9jdW1lbnQifHxjLmxlbmd0aD09MCYmc1szXT09InVvZiIpcmV0dXJuIE5mKHQscik7dmFyIHJlPSEwO3N3aXRjaChjW2MubGVuZ3RoLTFdWzBdKXtjYXNlIm9mZmljZWRvY3VtZW50c2V0dGluZ3MiOnN3aXRjaChzWzNdKXtjYXNlImFsbG93cG5nIjpicmVhaztjYXNlInJlbW92ZXBlcnNvbmFsaW5mb3JtYXRpb24iOmJyZWFrO2Nhc2UiZG93bmxvYWRjb21wb25lbnRzIjpicmVhaztjYXNlImxvY2F0aW9ub2Zjb21wb25lbnRzIjpicmVhaztjYXNlImNvbG9ycyI6YnJlYWs7Y2FzZSJjb2xvciI6YnJlYWs7Y2FzZSJpbmRleCI6YnJlYWs7Y2FzZSJyZ2IiOmJyZWFrO2Nhc2UidGFyZ2V0c2NyZWVuc2l6ZSI6YnJlYWs7Y2FzZSJyZWFkb25seXJlY29tbWVuZGVkIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiY29tcG9uZW50b3B0aW9ucyI6c3dpdGNoKHNbM10pe2Nhc2UidG9vbGJhciI6YnJlYWs7Y2FzZSJoaWRlb2ZmaWNlbG9nbyI6YnJlYWs7Y2FzZSJzcHJlYWRzaGVldGF1dG9maXQiOmJyZWFrO2Nhc2UibGFiZWwiOmJyZWFrO2Nhc2UiY2FwdGlvbiI6YnJlYWs7Y2FzZSJtYXhoZWlnaHQiOmJyZWFrO2Nhc2UibWF4d2lkdGgiOmJyZWFrO2Nhc2UibmV4dHNoZWV0bnVtYmVyIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiZXhjZWx3b3JrYm9vayI6c3dpdGNoKHNbM10pe2Nhc2UiZGF0ZTE5MDQiOlouV0JQcm9wcy5kYXRlMTkwND0hMDticmVhaztjYXNlImhpZGVob3Jpem9udGFsc2Nyb2xsYmFyIjpicmVhaztjYXNlImhpZGV2ZXJ0aWNhbHNjcm9sbGJhciI6YnJlYWs7Y2FzZSJoaWRld29ya2Jvb2t0YWJzIjpicmVhaztjYXNlIndpbmRvd2hlaWdodCI6YnJlYWs7Y2FzZSJ3aW5kb3d3aWR0aCI6YnJlYWs7Y2FzZSJ3aW5kb3d0b3B4IjpicmVhaztjYXNlIndpbmRvd3RvcHkiOmJyZWFrO2Nhc2UidGFicmF0aW8iOmJyZWFrO2Nhc2UicHJvdGVjdHN0cnVjdHVyZSI6YnJlYWs7Y2FzZSJwcm90ZWN0d2luZG93IjpicmVhaztjYXNlInByb3RlY3R3aW5kb3dzIjpicmVhaztjYXNlImFjdGl2ZXNoZWV0IjpicmVhaztjYXNlImRpc3BsYXlpbmtub3RlcyI6YnJlYWs7Y2FzZSJmaXJzdHZpc2libGVzaGVldCI6YnJlYWs7Y2FzZSJzdXBib29rIjpicmVhaztjYXNlInNoZWV0bmFtZSI6YnJlYWs7Y2FzZSJzaGVldGluZGV4IjpicmVhaztjYXNlInNoZWV0aW5kZXhmaXJzdCI6YnJlYWs7Y2FzZSJzaGVldGluZGV4bGFzdCI6YnJlYWs7Y2FzZSJkbGwiOmJyZWFrO2Nhc2UiYWNjZXB0bGFiZWxzaW5mb3JtdWxhcyI6YnJlYWs7Y2FzZSJkb25vdHNhdmVsaW5rdmFsdWVzIjpicmVhaztjYXNlIml0ZXJhdGlvbiI6YnJlYWs7Y2FzZSJtYXhpdGVyYXRpb25zIjpicmVhaztjYXNlIm1heGNoYW5nZSI6YnJlYWs7Y2FzZSJwYXRoIjpicmVhaztjYXNlInhjdCI6YnJlYWs7Y2FzZSJjb3VudCI6YnJlYWs7Y2FzZSJzZWxlY3RlZHNoZWV0cyI6YnJlYWs7Y2FzZSJjYWxjdWxhdGlvbiI6YnJlYWs7Y2FzZSJ1bmNhbGNlZCI6YnJlYWs7Y2FzZSJzdGFydHVwcHJvbXB0IjpicmVhaztjYXNlImNybiI6YnJlYWs7Y2FzZSJleHRlcm5uYW1lIjpicmVhaztjYXNlImZvcm11bGEiOmJyZWFrO2Nhc2UiY29sZmlyc3QiOmJyZWFrO2Nhc2UiY29sbGFzdCI6YnJlYWs7Y2FzZSJ3YW50YWR2aXNlIjpicmVhaztjYXNlImJvb2xlYW4iOmJyZWFrO2Nhc2UiZXJyb3IiOmJyZWFrO2Nhc2UidGV4dCI6YnJlYWs7Y2FzZSJvbGUiOmJyZWFrO2Nhc2Uibm9hdXRvcmVjb3ZlciI6YnJlYWs7Y2FzZSJwdWJsaXNob2JqZWN0cyI6YnJlYWs7Y2FzZSJkb25vdGNhbGN1bGF0ZWJlZm9yZXNhdmUiOmJyZWFrO2Nhc2UibnVtYmVyIjpicmVhaztjYXNlInJlZm1vZGVyMWMxIjpicmVhaztjYXNlImVtYmVkc2F2ZXNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlIndvcmtib29rb3B0aW9ucyI6c3dpdGNoKHNbM10pe2Nhc2Uib3djdmVyc2lvbiI6YnJlYWs7Y2FzZSJoZWlnaHQiOmJyZWFrO2Nhc2Uid2lkdGgiOmJyZWFrO2RlZmF1bHQ6cmU9ITF9YnJlYWs7Y2FzZSJ3b3Jrc2hlZXRvcHRpb25zIjpzd2l0Y2goc1szXSl7Y2FzZSJ2aXNpYmxlIjppZihzWzBdLnNsaWNlKC0yKSE9PSIvPiIpaWYoc1sxXT09PSIvIilzd2l0Y2godC5zbGljZShHLHMuaW5kZXgpKXtjYXNlIlNoZWV0SGlkZGVuIjpPZS5IaWRkZW49MTticmVhaztjYXNlIlNoZWV0VmVyeUhpZGRlbiI6T2UuSGlkZGVuPTI7YnJlYWt9ZWxzZSBHPXMuaW5kZXgrc1swXS5sZW5ndGg7YnJlYWs7Y2FzZSJoZWFkZXIiOnhbIiFtYXJnaW5zIl18fHp0KHhbIiFtYXJnaW5zIl09e30sInhsbWwiKSxpc05hTigrb2Uoc1swXSkuTWFyZ2luKXx8KHhbIiFtYXJnaW5zIl0uaGVhZGVyPStvZShzWzBdKS5NYXJnaW4pO2JyZWFrO2Nhc2UiZm9vdGVyIjp4WyIhbWFyZ2lucyJdfHx6dCh4WyIhbWFyZ2lucyJdPXt9LCJ4bG1sIiksaXNOYU4oK29lKHNbMF0pLk1hcmdpbil8fCh4WyIhbWFyZ2lucyJdLmZvb3Rlcj0rb2Uoc1swXSkuTWFyZ2luKTticmVhaztjYXNlInBhZ2VtYXJnaW5zIjp2YXIgZWU9b2Uoc1swXSk7eFsiIW1hcmdpbnMiXXx8enQoeFsiIW1hcmdpbnMiXT17fSwieGxtbCIpLGlzTmFOKCtlZS5Ub3ApfHwoeFsiIW1hcmdpbnMiXS50b3A9K2VlLlRvcCksaXNOYU4oK2VlLkxlZnQpfHwoeFsiIW1hcmdpbnMiXS5sZWZ0PStlZS5MZWZ0KSxpc05hTigrZWUuUmlnaHQpfHwoeFsiIW1hcmdpbnMiXS5yaWdodD0rZWUuUmlnaHQpLGlzTmFOKCtlZS5Cb3R0b20pfHwoeFsiIW1hcmdpbnMiXS5ib3R0b209K2VlLkJvdHRvbSk7YnJlYWs7Y2FzZSJkaXNwbGF5cmlnaHR0b2xlZnQiOlouVmlld3N8fChaLlZpZXdzPVtdKSxaLlZpZXdzWzBdfHwoWi5WaWV3c1swXT17fSksWi5WaWV3c1swXS5SVEw9ITA7YnJlYWs7Y2FzZSJmcmVlemVwYW5lcyI6YnJlYWs7Y2FzZSJmcm96ZW5ub3NwbGl0IjpicmVhaztjYXNlInNwbGl0aG9yaXpvbnRhbCI6Y2FzZSJzcGxpdHZlcnRpY2FsIjpicmVhaztjYXNlImRvbm90ZGlzcGxheWdyaWRsaW5lcyI6YnJlYWs7Y2FzZSJhY3RpdmVyb3ciOmJyZWFrO2Nhc2UiYWN0aXZlY29sIjpicmVhaztjYXNlInRvcHJvd2JvdHRvbXBhbmUiOmJyZWFrO2Nhc2UibGVmdGNvbHVtbnJpZ2h0cGFuZSI6YnJlYWs7Y2FzZSJ1bnN5bmNlZCI6YnJlYWs7Y2FzZSJwcmludCI6YnJlYWs7Y2FzZSJwcmludGVycm9ycyI6YnJlYWs7Y2FzZSJwYW5lcyI6YnJlYWs7Y2FzZSJzY2FsZSI6YnJlYWs7Y2FzZSJwYW5lIjpicmVhaztjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJsYXlvdXQiOmJyZWFrO2Nhc2UicGFnZXNldHVwIjpicmVhaztjYXNlInNlbGVjdGVkIjpicmVhaztjYXNlInByb3RlY3RvYmplY3RzIjpicmVhaztjYXNlImVuYWJsZXNlbGVjdGlvbiI6YnJlYWs7Y2FzZSJwcm90ZWN0c2NlbmFyaW9zIjpicmVhaztjYXNlInZhbGlkcHJpbnRlcmluZm8iOmJyZWFrO2Nhc2UiaG9yaXpvbnRhbHJlc29sdXRpb24iOmJyZWFrO2Nhc2UidmVydGljYWxyZXNvbHV0aW9uIjpicmVhaztjYXNlIm51bWJlcm9mY29waWVzIjpicmVhaztjYXNlImFjdGl2ZXBhbmUiOmJyZWFrO2Nhc2UidG9wcm93dmlzaWJsZSI6YnJlYWs7Y2FzZSJsZWZ0Y29sdW1udmlzaWJsZSI6YnJlYWs7Y2FzZSJmaXR0b3BhZ2UiOmJyZWFrO2Nhc2UicmFuZ2VzZWxlY3Rpb24iOmJyZWFrO2Nhc2UicGFwZXJzaXplaW5kZXgiOmJyZWFrO2Nhc2UicGFnZWxheW91dHpvb20iOmJyZWFrO2Nhc2UicGFnZWJyZWFrem9vbSI6YnJlYWs7Y2FzZSJmaWx0ZXJvbiI6YnJlYWs7Y2FzZSJmaXR3aWR0aCI6YnJlYWs7Y2FzZSJmaXRoZWlnaHQiOmJyZWFrO2Nhc2UiY29tbWVudHNsYXlvdXQiOmJyZWFrO2Nhc2Uiem9vbSI6YnJlYWs7Y2FzZSJsZWZ0dG9yaWdodCI6YnJlYWs7Y2FzZSJncmlkbGluZXMiOmJyZWFrO2Nhc2UiYWxsb3dzb3J0IjpicmVhaztjYXNlImFsbG93ZmlsdGVyIjpicmVhaztjYXNlImFsbG93aW5zZXJ0cm93cyI6YnJlYWs7Y2FzZSJhbGxvd2RlbGV0ZXJvd3MiOmJyZWFrO2Nhc2UiYWxsb3dpbnNlcnRjb2xzIjpicmVhaztjYXNlImFsbG93ZGVsZXRlY29scyI6YnJlYWs7Y2FzZSJhbGxvd2luc2VydGh5cGVybGlua3MiOmJyZWFrO2Nhc2UiYWxsb3dmb3JtYXRjZWxscyI6YnJlYWs7Y2FzZSJhbGxvd3NpemVjb2xzIjpicmVhaztjYXNlImFsbG93c2l6ZXJvd3MiOmJyZWFrO2Nhc2Uibm9zdW1tYXJ5cm93c2JlbG93ZGV0YWlsIjp4WyIhb3V0bGluZSJdfHwoeFsiIW91dGxpbmUiXT17fSkseFsiIW91dGxpbmUiXS5hYm92ZT0hMDticmVhaztjYXNlInRhYmNvbG9yaW5kZXgiOmJyZWFrO2Nhc2UiZG9ub3RkaXNwbGF5aGVhZGluZ3MiOmJyZWFrO2Nhc2Uic2hvd3BhZ2VsYXlvdXR6b29tIjpicmVhaztjYXNlIm5vc3VtbWFyeWNvbHVtbnNyaWdodGRldGFpbCI6eFsiIW91dGxpbmUiXXx8KHhbIiFvdXRsaW5lIl09e30pLHhbIiFvdXRsaW5lIl0ubGVmdD0hMDticmVhaztjYXNlImJsYWNrYW5kd2hpdGUiOmJyZWFrO2Nhc2UiZG9ub3RkaXNwbGF5emVyb3MiOmJyZWFrO2Nhc2UiZGlzcGxheXBhZ2VicmVhayI6YnJlYWs7Y2FzZSJyb3djb2xoZWFkaW5ncyI6YnJlYWs7Y2FzZSJkb25vdGRpc3BsYXlvdXRsaW5lIjpicmVhaztjYXNlIm5vb3JpZW50YXRpb24iOmJyZWFrO2Nhc2UiYWxsb3d1c2VwaXZvdHRhYmxlcyI6YnJlYWs7Y2FzZSJ6ZXJvaGVpZ2h0IjpicmVhaztjYXNlInZpZXdhYmxlcmFuZ2UiOmJyZWFrO2Nhc2Uic2VsZWN0aW9uIjpicmVhaztjYXNlInByb3RlY3Rjb250ZW50cyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlInBpdm90dGFibGUiOmNhc2UicGl2b3RjYWNoZSI6c3dpdGNoKHNbM10pe2Nhc2UiaW1tZWRpYXRlaXRlbXNvbmRyb3AiOmJyZWFrO2Nhc2Uic2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCI6YnJlYWs7Y2FzZSJjb21wYWN0cm93aW5kZW50IjpicmVhaztjYXNlImxvY2F0aW9uIjpicmVhaztjYXNlInBpdm90ZmllbGQiOmJyZWFrO2Nhc2Uib3JpZW50YXRpb24iOmJyZWFrO2Nhc2UibGF5b3V0Zm9ybSI6YnJlYWs7Y2FzZSJsYXlvdXRzdWJ0b3RhbGxvY2F0aW9uIjpicmVhaztjYXNlImxheW91dGNvbXBhY3Ryb3ciOmJyZWFrO2Nhc2UicG9zaXRpb24iOmJyZWFrO2Nhc2UicGl2b3RpdGVtIjpicmVhaztjYXNlImRhdGF0eXBlIjpicmVhaztjYXNlImRhdGFmaWVsZCI6YnJlYWs7Y2FzZSJzb3VyY2VuYW1lIjpicmVhaztjYXNlInBhcmVudGZpZWxkIjpicmVhaztjYXNlInB0bGluZWl0ZW1zIjpicmVhaztjYXNlInB0bGluZWl0ZW0iOmJyZWFrO2Nhc2UiY291bnRvZnNhbWVpdGVtcyI6YnJlYWs7Y2FzZSJpdGVtIjpicmVhaztjYXNlIml0ZW10eXBlIjpicmVhaztjYXNlInB0c291cmNlIjpicmVhaztjYXNlImNhY2hlaW5kZXgiOmJyZWFrO2Nhc2UiY29uc29saWRhdGlvbnJlZmVyZW5jZSI6YnJlYWs7Y2FzZSJmaWxlbmFtZSI6YnJlYWs7Y2FzZSJyZWZlcmVuY2UiOmJyZWFrO2Nhc2Uibm9jb2x1bW5ncmFuZCI6YnJlYWs7Y2FzZSJub3Jvd2dyYW5kIjpicmVhaztjYXNlImJsYW5rbGluZWFmdGVyaXRlbXMiOmJyZWFrO2Nhc2UiaGlkZGVuIjpicmVhaztjYXNlInN1YnRvdGFsIjpicmVhaztjYXNlImJhc2VmaWVsZCI6YnJlYWs7Y2FzZSJtYXBjaGlsZGl0ZW1zIjpicmVhaztjYXNlImZ1bmN0aW9uIjpicmVhaztjYXNlInJlZnJlc2hvbmZpbGVvcGVuIjpicmVhaztjYXNlInByaW50c2V0dGl0bGVzIjpicmVhaztjYXNlIm1lcmdlbGFiZWxzIjpicmVhaztjYXNlImRlZmF1bHR2ZXJzaW9uIjpicmVhaztjYXNlInJlZnJlc2huYW1lIjpicmVhaztjYXNlInJlZnJlc2hkYXRlIjpicmVhaztjYXNlInJlZnJlc2hkYXRlY29weSI6YnJlYWs7Y2FzZSJ2ZXJzaW9ubGFzdHJlZnJlc2giOmJyZWFrO2Nhc2UidmVyc2lvbmxhc3R1cGRhdGUiOmJyZWFrO2Nhc2UidmVyc2lvbnVwZGF0ZWFibGVtaW4iOmJyZWFrO2Nhc2UidmVyc2lvbnJlZnJlc2hhYmxlbWluIjpicmVhaztjYXNlImNhbGN1bGF0aW9uIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UicGFnZWJyZWFrcyI6c3dpdGNoKHNbM10pe2Nhc2UiY29sYnJlYWtzIjpicmVhaztjYXNlImNvbGJyZWFrIjpicmVhaztjYXNlInJvd2JyZWFrcyI6YnJlYWs7Y2FzZSJyb3dicmVhayI6YnJlYWs7Y2FzZSJjb2xzdGFydCI6YnJlYWs7Y2FzZSJjb2xlbmQiOmJyZWFrO2Nhc2Uicm93ZW5kIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiYXV0b2ZpbHRlciI6c3dpdGNoKHNbM10pe2Nhc2UiYXV0b2ZpbHRlcmNvbHVtbiI6YnJlYWs7Y2FzZSJhdXRvZmlsdGVyY29uZGl0aW9uIjpicmVhaztjYXNlImF1dG9maWx0ZXJhbmQiOmJyZWFrO2Nhc2UiYXV0b2ZpbHRlcm9yIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UicXVlcnl0YWJsZSI6c3dpdGNoKHNbM10pe2Nhc2UiaWQiOmJyZWFrO2Nhc2UiYXV0b2Zvcm1hdGZvbnQiOmJyZWFrO2Nhc2UiYXV0b2Zvcm1hdHBhdHRlcm4iOmJyZWFrO2Nhc2UicXVlcnlzb3VyY2UiOmJyZWFrO2Nhc2UicXVlcnl0eXBlIjpicmVhaztjYXNlImVuYWJsZXJlZGlyZWN0aW9ucyI6YnJlYWs7Y2FzZSJyZWZyZXNoZWRpbnhsOSI6YnJlYWs7Y2FzZSJ1cmxzdHJpbmciOmJyZWFrO2Nhc2UiaHRtbHRhYmxlcyI6YnJlYWs7Y2FzZSJjb25uZWN0aW9uIjpicmVhaztjYXNlImNvbW1hbmR0ZXh0IjpicmVhaztjYXNlInJlZnJlc2hpbmZvIjpicmVhaztjYXNlIm5vdGl0bGVzIjpicmVhaztjYXNlIm5leHRpZCI6YnJlYWs7Y2FzZSJjb2x1bW5pbmZvIjpicmVhaztjYXNlIm92ZXJ3cml0ZWNlbGxzIjpicmVhaztjYXNlImRvbm90cHJvbXB0Zm9yZmlsZSI6YnJlYWs7Y2FzZSJ0ZXh0d2l6YXJkc2V0dGluZ3MiOmJyZWFrO2Nhc2Uic291cmNlIjpicmVhaztjYXNlIm51bWJlciI6YnJlYWs7Y2FzZSJkZWNpbWFsIjpicmVhaztjYXNlInRob3VzYW5kc2VwYXJhdG9yIjpicmVhaztjYXNlInRyYWlsaW5nbWludXNudW1iZXJzIjpicmVhaztjYXNlImZvcm1hdHNldHRpbmdzIjpicmVhaztjYXNlImZpZWxkdHlwZSI6YnJlYWs7Y2FzZSJkZWxpbWl0ZXJzIjpicmVhaztjYXNlInRhYiI6YnJlYWs7Y2FzZSJjb21tYSI6YnJlYWs7Y2FzZSJhdXRvZm9ybWF0bmFtZSI6YnJlYWs7Y2FzZSJ2ZXJzaW9ubGFzdGVkaXQiOmJyZWFrO2Nhc2UidmVyc2lvbmxhc3RyZWZyZXNoIjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UiZGF0YXZhbGlkYXRpb24iOnN3aXRjaChzWzNdKXtjYXNlInJhbmdlIjpicmVhaztjYXNlInR5cGUiOmJyZWFrO2Nhc2UibWluIjpicmVhaztjYXNlIm1heCI6YnJlYWs7Y2FzZSJzb3J0IjpicmVhaztjYXNlImRlc2NlbmRpbmciOmJyZWFrO2Nhc2Uib3JkZXIiOmJyZWFrO2Nhc2UiY2FzZXNlbnNpdGl2ZSI6YnJlYWs7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJlcnJvcnN0eWxlIjpicmVhaztjYXNlImVycm9ybWVzc2FnZSI6YnJlYWs7Y2FzZSJlcnJvcnRpdGxlIjpicmVhaztjYXNlImlucHV0bWVzc2FnZSI6YnJlYWs7Y2FzZSJpbnB1dHRpdGxlIjpicmVhaztjYXNlImNvbWJvaGlkZSI6YnJlYWs7Y2FzZSJpbnB1dGhpZGUiOmJyZWFrO2Nhc2UiY29uZGl0aW9uIjpicmVhaztjYXNlInF1YWxpZmllciI6YnJlYWs7Y2FzZSJ1c2VibGFuayI6YnJlYWs7Y2FzZSJ2YWx1ZTEiOmJyZWFrO2Nhc2UidmFsdWUyIjpicmVhaztjYXNlImZvcm1hdCI6YnJlYWs7Y2FzZSJjZWxscmFuZ2VsaXN0IjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2Uic29ydGluZyI6Y2FzZSJjb25kaXRpb25hbGZvcm1hdHRpbmciOnN3aXRjaChzWzNdKXtjYXNlInJhbmdlIjpicmVhaztjYXNlInR5cGUiOmJyZWFrO2Nhc2UibWluIjpicmVhaztjYXNlIm1heCI6YnJlYWs7Y2FzZSJzb3J0IjpicmVhaztjYXNlImRlc2NlbmRpbmciOmJyZWFrO2Nhc2Uib3JkZXIiOmJyZWFrO2Nhc2UiY2FzZXNlbnNpdGl2ZSI6YnJlYWs7Y2FzZSJ2YWx1ZSI6YnJlYWs7Y2FzZSJlcnJvcnN0eWxlIjpicmVhaztjYXNlImVycm9ybWVzc2FnZSI6YnJlYWs7Y2FzZSJlcnJvcnRpdGxlIjpicmVhaztjYXNlImNlbGxyYW5nZWxpc3QiOmJyZWFrO2Nhc2UiaW5wdXRtZXNzYWdlIjpicmVhaztjYXNlImlucHV0dGl0bGUiOmJyZWFrO2Nhc2UiY29tYm9oaWRlIjpicmVhaztjYXNlImlucHV0aGlkZSI6YnJlYWs7Y2FzZSJjb25kaXRpb24iOmJyZWFrO2Nhc2UicXVhbGlmaWVyIjpicmVhaztjYXNlInVzZWJsYW5rIjpicmVhaztjYXNlInZhbHVlMSI6YnJlYWs7Y2FzZSJ2YWx1ZTIiOmJyZWFrO2Nhc2UiZm9ybWF0IjpicmVhaztkZWZhdWx0OnJlPSExfWJyZWFrO2Nhc2UibWFwaW5mbyI6Y2FzZSJzY2hlbWEiOmNhc2UiZGF0YSI6c3dpdGNoKHNbM10pe2Nhc2UibWFwIjpicmVhaztjYXNlImVudHJ5IjpicmVhaztjYXNlInJhbmdlIjpicmVhaztjYXNlInhwYXRoIjpicmVhaztjYXNlImZpZWxkIjpicmVhaztjYXNlInhzZHR5cGUiOmJyZWFrO2Nhc2UiZmlsdGVyb24iOmJyZWFrO2Nhc2UiYWdncmVnYXRlIjpicmVhaztjYXNlImVsZW1lbnR0eXBlIjpicmVhaztjYXNlImF0dHJpYnV0ZXR5cGUiOmJyZWFrO2Nhc2Uic2NoZW1hIjpjYXNlImVsZW1lbnQiOmNhc2UiY29tcGxleHR5cGUiOmNhc2UiZGF0YXR5cGUiOmNhc2UiYWxsIjpjYXNlImF0dHJpYnV0ZSI6Y2FzZSJleHRlbmRzIjpicmVhaztjYXNlInJvdyI6YnJlYWs7ZGVmYXVsdDpyZT0hMX1icmVhaztjYXNlInNtYXJ0dGFncyI6YnJlYWs7ZGVmYXVsdDpyZT0hMTticmVha31pZihyZXx8c1szXS5tYXRjaCgvIVxbQ0RBVEEvKSlicmVhaztpZighY1tjLmxlbmd0aC0xXVsxXSl0aHJvdyJVbnJlY29nbml6ZWQgdGFnOiAiK3NbM10rInwiK2Muam9pbigifCIpO2lmKGNbYy5sZW5ndGgtMV1bMF09PT0iY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzIil7aWYoc1swXS5zbGljZSgtMik9PT0iLz4iKWJyZWFrO3NbMV09PT0iLyI/TXYoTCx3ZSxpZSx0LnNsaWNlKEcscy5pbmRleCkpOihpZT1zLEc9cy5pbmRleCtzWzBdLmxlbmd0aCk7YnJlYWt9aWYoci5XVEYpdGhyb3ciVW5yZWNvZ25pemVkIHRhZzogIitzWzNdKyJ8IitjLmpvaW4oInwiKX12YXIga2U9e307cmV0dXJuIXIuYm9va1NoZWV0cyYmIXIuYm9va1Byb3BzJiYoa2UuU2hlZXRzPWwpLGtlLlNoZWV0TmFtZXM9dSxrZS5Xb3JrYm9vaz1aLGtlLlNTRj1VZShUZSksa2UuUHJvcHM9QixrZS5DdXN0cHJvcHM9TCxrZS5ib29rVHlwZT0ieGxtbCIsa2V9ZnVuY3Rpb24gU24oZSxhKXtzd2l0Y2goRG4oYT1hfHx7fSksYS50eXBlfHwiYmFzZTY0Iil7Y2FzZSJiYXNlNjQiOnJldHVybiB5bihJcihlKSxhKTtjYXNlImJpbmFyeSI6Y2FzZSJidWZmZXIiOmNhc2UiZmlsZSI6cmV0dXJuIHluKGUsYSk7Y2FzZSJhcnJheSI6cmV0dXJuIHluKGZhKGUpLGEpfX1mdW5jdGlvbiBXdihlKXt2YXIgYT17fSxyPWUuY29udGVudDtpZihyLmw9MjgsYS5BbnNpVXNlclR5cGU9ci5yZWFkX3NoaWZ0KDAsImxwc3RyLWFuc2kiKSxhLkFuc2lDbGlwYm9hcmRGb3JtYXQ9T28ociksci5sZW5ndGgtci5sPD00KXJldHVybiBhO3ZhciB0PXIucmVhZF9zaGlmdCg0KTtpZih0PT0wfHx0PjQwfHwoci5sLT00LGEuUmVzZXJ2ZWQxPXIucmVhZF9zaGlmdCgwLCJscHN0ci1hbnNpIiksci5sZW5ndGgtci5sPD00KXx8KHQ9ci5yZWFkX3NoaWZ0KDQpLHQhPT0xOTA3NTA1NjUyKXx8KGEuVW5pY29kZUNsaXBib2FyZEZvcm1hdD1ObyhyKSx0PXIucmVhZF9zaGlmdCg0KSx0PT0wfHx0PjQwKSlyZXR1cm4gYTtyLmwtPTQsYS5SZXNlcnZlZDI9ci5yZWFkX3NoaWZ0KDAsImxwd3N0ciIpfXZhciBWdj1bNjAsMTA4NCwyMDY2LDIxNjUsMjE3NV07ZnVuY3Rpb24gR3YoZSxhLHIsdCxuKXt2YXIgaT10LGY9W10scz1yLnNsaWNlKHIubCxyLmwraSk7aWYobiYmbi5lbmMmJm4uZW5jLmluc2l0dSYmcy5sZW5ndGg+MClzd2l0Y2goZSl7Y2FzZSA5OmNhc2UgNTIxOmNhc2UgMTAzMzpjYXNlIDIwNTc6Y2FzZSA0NzpjYXNlIDQwNTpjYXNlIDIyNTpjYXNlIDQwNjpjYXNlIDMxMjpjYXNlIDQwNDpjYXNlIDEwOmJyZWFrO2Nhc2UgMTMzOmJyZWFrO2RlZmF1bHQ6bi5lbmMuaW5zaXR1KHMpfWYucHVzaChzKSxyLmwrPWk7Zm9yKHZhciBjPWRhKHIsci5sKSxvPUNuW2NdLGw9MDtvIT1udWxsJiZWdi5pbmRleE9mKGMpPi0xOylpPWRhKHIsci5sKzIpLGw9ci5sKzQsYz09MjA2Nj9sKz00OihjPT0yMTY1fHxjPT0yMTc1KSYmKGwrPTEyKSxzPXIuc2xpY2UobCxyLmwrNCtpKSxmLnB1c2gocyksci5sKz00K2ksbz1DbltjPWRhKHIsci5sKV07dmFyIHU9eWEoZik7c3IodSwwKTt2YXIgeD0wO3UubGVucz1bXTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoOysraCl1LmxlbnMucHVzaCh4KSx4Kz1mW2hdLmxlbmd0aDtpZih1Lmxlbmd0aDx0KXRocm93IlhMUyBSZWNvcmQgMHgiK2UudG9TdHJpbmcoMTYpKyIgVHJ1bmNhdGVkOiAiK3UubGVuZ3RoKyIgPCAiK3Q7cmV0dXJuIGEuZih1LHUubGVuZ3RoLG4pfWZ1bmN0aW9uIG5hKGUsYSxyKXtpZihlLnQhPT0ieiImJmUuWEYpe3ZhciB0PTA7dHJ5e3Q9ZS56fHxlLlhGLm51bUZtdElkfHwwLGEuY2VsbE5GJiZlLno9PW51bGwmJihlLno9VGVbdF0pfWNhdGNoKGkpe2lmKGEuV1RGKXRocm93IGl9aWYoIWF8fGEuY2VsbFRleHQhPT0hMSl0cnl7ZS50PT09ImUiP2Uudz1lLnd8fGJyW2Uudl06dD09PTB8fHQ9PSJHZW5lcmFsIj9lLnQ9PT0ibiI/KGUudnwwKT09PWUudj9lLnc9ZS52LnRvU3RyaW5nKDEwKTplLnc9eXQoZS52KTplLnc9UGEoZS52KTplLnc9UnIodCxlLnYse2RhdGUxOTA0OiEhcixkYXRlTkY6YSYmYS5kYXRlTkZ9KX1jYXRjaChpKXtpZihhLldURil0aHJvdyBpfWlmKGEuY2VsbERhdGVzJiZ0JiZlLnQ9PSJuIiYmWnIoVGVbdF18fFN0cmluZyh0KSkpe3ZhciBuPWNhKGUudisocj8xNDYyOjApKTtuJiYoZS50PSJkIixlLnY9bmV3IERhdGUoRGF0ZS5VVEMobi55LG4ubS0xLG4uZCxuLkgsbi5NLG4uUyxuLnUpKSl9fX1mdW5jdGlvbiBiMChlLGEscil7cmV0dXJue3Y6ZSxpeGZlOmEsdDpyfX12YXIgWHY9WyJub25lIiwidGhpbiIsIm1lZGl1bSIsImRhc2hlZCIsImRvdHRlZCIsInRoaWNrIiwiZG91YmxlIiwiaGFpciIsIm1lZGl1bURhc2hlZCIsImRhc2hEb3QiLCJtZWRpdW1EYXNoRG90IiwiZGFzaERvdERvdCIsIm1lZGl1bURhc2hEb3REb3QiLCJzbGFudERhc2hEb3QiXSx3Zj1bbnVsbCwibGVmdCIsImNlbnRlciIsInJpZ2h0IiwiZmlsbCIsImp1c3RpZnkiLCJjZW50ZXJDb250aW51b3VzIiwiZGlzdHJpYnV0ZWQiXSxGZj1bInRvcCIsImNlbnRlciIsImJvdHRvbSIsImp1c3RpZnkiLCJkaXN0cmlidXRlZCJdO2Z1bmN0aW9uIHp2KGUsYSl7dmFyIHI9ZS5sK2EsdD17fTtyZXR1cm4gYT49MTYmJih0Lng9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lnk9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lnc9ZS5yZWFkX3NoaWZ0KDQsImkiKSx0Lmg9ZS5yZWFkX3NoaWZ0KDQsImkiKSksZS5sPXIsdH1mdW5jdGlvbiAkdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTEyJiYodC5jYXRUeXBlPWUucmVhZF9zaGlmdCgyKSx0LnZhbFR5cGU9ZS5yZWFkX3NoaWZ0KDIpLHQuY0NhdD1lLnJlYWRfc2hpZnQoMiksdC5jVmFsPWUucmVhZF9zaGlmdCgyKSx0LmJ1YmJsZVR5cGU9ZS5yZWFkX3NoaWZ0KDIpLHQuY0J1YmJsZT1lLnJlYWRfc2hpZnQoMikpLGUubD1yLHR9ZnVuY3Rpb24gS3YoZSxhLHIpe3ZhciB0PWUubCthLG49e307YT49MiYmKG4uaWQ9ZS5yZWFkX3NoaWZ0KDIpKTt0cnl7ZS5sPHQmJihuLnRleHQ9emEoZSx0LWUubCxyKSl9Y2F0Y2h7ZS5sPXR9cmV0dXJuIGUubD10LG59ZnVuY3Rpb24ganYoZSxhKXt2YXIgcj1lLmwrYSx0PXt9O3JldHVybiBhPj0yMCYmKHQueD1lLnJlYWRfc2hpZnQoNCwiaSIpLHQueT1lLnJlYWRfc2hpZnQoNCwiaSIpLHQudz1lLnJlYWRfc2hpZnQoNCwiaSIpLHQuaD1lLnJlYWRfc2hpZnQoNCwiaSIpLHQuZG9jaz1lLnJlYWRfc2hpZnQoMSksdC5zcGFjaW5nPWUucmVhZF9zaGlmdCgxKSx0LmZsYWdzPWUucmVhZF9zaGlmdCgyKSksZS5sPXIsdH1mdW5jdGlvbiBZdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTImJih0LmF4aXNUeXBlPWUucmVhZF9zaGlmdCgyKSksZS5sPXIsdH1mdW5jdGlvbiBKdihlLGEpe3ZhciByPWUubCthLHQ9e307cmV0dXJuIGE+PTMyJiYodC5oQWxpZ249ZS5yZWFkX3NoaWZ0KDEpLHQudkFsaWduPWUucmVhZF9zaGlmdCgxKSx0LmJnTW9kZT1lLnJlYWRfc2hpZnQoMiksdC5jb2xvcj1lLnJlYWRfc2hpZnQoNCksdC54PWUucmVhZF9zaGlmdCg0LCJpIiksdC55PWUucmVhZF9zaGlmdCg0LCJpIiksdC53PWUucmVhZF9zaGlmdCg0LCJpIiksdC5oPWUucmVhZF9zaGlmdCg0LCJpIikpLGUubD1yLHR9ZnVuY3Rpb24gWnYoZSxhKXt2YXIgcj1lLmwrYSx0PXt9O2lmKGE+PTYpe3QuaWQ9ZS5yZWFkX3NoaWZ0KDEpLHQucnQ9ZS5yZWFkX3NoaWZ0KDEpLHQuZmxhZ3M9ZS5yZWFkX3NoaWZ0KDIpO3ZhciBuPWUucmVhZF9zaGlmdCgyKTt0LmNjZT1uLHQuZm9ybXVsYVJhdz1lLnNsaWNlKGUubCxNYXRoLm1pbihyLGUubCtuKSl9cmV0dXJuIGUubD1yLHR9ZnVuY3Rpb24gUWEoZSl7cmV0dXJuIGZ1bmN0aW9uKHIsdCl7dmFyIG49ci5sK3QsaT17dHlwZTplfTtyZXR1cm4gdD49MiYmKGkuZmxhZ3M9ci5yZWFkX3NoaWZ0KDIpKSxyLmw9bixpfX12YXIgcXY9UWEoImJhckNoYXJ0IiksUXY9UWEoImxpbmVDaGFydCIpLGUyPVFhKCJwaWVDaGFydCIpLHIyPVFhKCJhcmVhQ2hhcnQiKSxhMj1RYSgic2NhdHRlckNoYXJ0IiksdDI9UWEoInJhZGFyQ2hhcnQiKSxuMj1RYSgic3VyZmFjZUNoYXJ0Iik7ZnVuY3Rpb24gaTIoZSxhKXt2YXIgcj17b3B0czp7fX0sdD17fSxuPXt9O2EuZGVuc2UmJihuWyIhZGF0YSJdPVtdKTt2YXIgaT17fSxmPXt9LHM9bnVsbCxjPVtdLG89IiIsbD17fSx1LHg9IiIsaCxnLG0sZCxwPXt9LHc9W10sXyx5LFI9W10sUD1bXSxiPXt9LE49W10sST17U2hlZXRzOltdLFdCUHJvcHM6e2RhdGUxOTA0OiExfSxWaWV3czpbe31dfSxCPXt9LEw9ITEsRz1mdW5jdGlvbihNKXtyZXR1cm4gTTw4P3RhW01dOk08NjQmJk5bTS04XXx8dGFbTV19LGllPWZ1bmN0aW9uKE0pe2lmKE09PW51bGwpcmV0dXJuIG51bGw7dmFyIFk9RyhNKSx2PXtpbmRleGVkOk0saW5kZXg6TX07cmV0dXJuIFkmJih2LnJnYj1qYShZKSksWWEodixPZSl9LG5lPWZ1bmN0aW9uKE0pe2lmKCFNKXJldHVybiBudWxsO3ZhciBZPXt9O3N3aXRjaChNLnhjbHJUeXBlKXtjYXNlIDA6WS5hdXRvPTE7YnJlYWs7Y2FzZSAxOlk9aWUoTS54Y2xyVmFsdWUpfHx7fTticmVhaztjYXNlIDI6WS5yZ2I9amEoTS54Y2xyVmFsdWUpO2JyZWFrO2Nhc2UgMzpZLnRoZW1lPU0ueGNsclZhbHVlO2JyZWFrfXJldHVybiBNLm5UaW50U2hhZGUmJihZLnRpbnQ9TS5uVGludFNoYWRlPjA/TS5uVGludFNoYWRlLzMyNzY3Ok0ublRpbnRTaGFkZS8zMjc2OCksWWEoWSxPZSl9LHE9ZnVuY3Rpb24oTSxZKXtpZighTSlyZXR1cm4gbnVsbDt2YXIgdj17fTtyZXR1cm4gTS5uYW1lJiYodi5uYW1lPU0ubmFtZSksTS5zeiYmKHYuc3o9TS5zeiksTS5ib2xkJiYodi5ib2xkPSEwKSxNLml0YWxpYyYmKHYuaXRhbGljPSEwKSxNLnVuZGVybGluZSYmKHYudW5kZXJsaW5lPU0udW5kZXJsaW5lKSxNLnN0cmlrZSYmKHYuc3RyaWtlPSEwKSxNLm91dGxpbmUmJih2Lm91dGxpbmU9ITApLE0uc2hhZG93JiYodi5zaGFkb3c9ITApLE0uZmFtaWx5IT1udWxsJiYodi5mYW1pbHk9TS5mYW1pbHkpLE0uY2hhcnNldCE9bnVsbCYmKHYuY2hhcnNldD1NLmNoYXJzZXQpLE0udmVydEFsaWduPT0xP3YudmVydEFsaWduPSJzdXBlcnNjcmlwdCI6TS52ZXJ0QWxpZ249PTImJih2LnZlcnRBbGlnbj0ic3Vic2NyaXB0IiksWSYmWS5mb250U2NoZW1lIT1udWxsJiYodi5zY2hlbWU9WS5mb250U2NoZW1lPT0xPyJtYWpvciI6WS5mb250U2NoZW1lPT0yPyJtaW5vciI6Im5vbmUiKSx2LmNvbG9yPW5lKFkmJlkueGZleHRGb250KXx8aWUoTS5pY3YpLHYuY29sb3ImJnYuY29sb3IuYXV0byYmZGVsZXRlIHYuY29sb3Isdn0sbGU9ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIG51bGw7dmFyIFk9e3BhdHRlcm5UeXBlOk0ucGF0dGVyblR5cGV8fCJub25lIn0sdj1uZShNLnhmZXh0Rm9yZSl8fGllKE0uaWN2Rm9yZSksVD1uZShNLnhmZXh0QmFjayl8fGllKE0uaWN2QmFjayk7cmV0dXJuIHYmJihZLmZnQ29sb3I9diksVCYmKFkuYmdDb2xvcj1UKSxNLmdyYWRpZW50RmlsbCYmKFkuZ3JhZGllbnRGaWxsPU0uZ3JhZGllbnRGaWxsKSxZfSxRPWZ1bmN0aW9uKE0sWSx2KXtpZighTSlyZXR1cm4gbnVsbDt2YXIgVD17c3R5bGU6WHZbTV18fCJ0aGluIn0saz1uZSh2KXx8aWUoWSk7cmV0dXJuIGsmJihULmNvbG9yPWspLFR9LGdlPWZ1bmN0aW9uKE0pe2lmKCFNKXJldHVybiBudWxsO3ZhciBZPXt9LHY7cmV0dXJuKHY9UShNLmRnTGVmdCxNLmljdkxlZnQsTS54ZmV4dExlZnQpKSYmKFkubGVmdD12KSwodj1RKE0uZGdSaWdodCxNLmljdlJpZ2h0LE0ueGZleHRSaWdodCkpJiYoWS5yaWdodD12KSwodj1RKE0uZGdUb3AsTS5pY3ZUb3AsTS54ZmV4dFRvcCkpJiYoWS50b3A9diksKHY9UShNLmRnQm90dG9tLE0uaWN2Qm90dG9tLE0ueGZleHRCb3R0b20pKSYmKFkuYm90dG9tPXYpLCh2PVEoTS5kZ0RpYWcsTS5pY3ZEaWFnLE0ueGZleHREaWFnKSkmJihZLmRpYWdvbmFsPXYpLE0uZ3JiaXREaWFnJjEmJihZLmRpYWdvbmFsVXA9ITApLE0uZ3JiaXREaWFnJjImJihZLmRpYWdvbmFsRG93bj0hMCkscHIoWSkubGVuZ3RoP1k6bnVsbH0sdWU9ZnVuY3Rpb24oTSl7aWYoIU0pcmV0dXJuIG51bGw7dmFyIFk9e307cmV0dXJuIHdmW00uYWxjXSYmKFkuaG9yaXpvbnRhbD13ZltNLmFsY10pLEZmW00uYWxjVl0mJk0uYWxjViE9MiYmKFkudmVydGljYWw9RmZbTS5hbGNWXSksTS5mV3JhcCYmKFkud3JhcFRleHQ9ITApLE0uZlNocmlua1RvRml0JiYoWS5zaHJpbmtUb0ZpdD0hMCksTS50cm90JiYoWS50ZXh0Um90YXRpb249TS50cm90KSxNLmNJbmRlbnQmJihZLmluZGVudD1NLmNJbmRlbnQpLE0uaVJlYWRPcmRlciYmKFkucmVhZGluZ09yZGVyPU0uaVJlYWRPcmRlcikscHIoWSkubGVuZ3RoP1k6bnVsbH0saj1mdW5jdGlvbihNLFkpe2lmKCFZKXJldHVybiBNO3ZhciB2PVkuZGF0YXx8e307WS5udW1GbXRJZCE9bnVsbCYmKE0ubnVtRm10SWQ9WS5udW1GbXRJZCxUZVtZLm51bUZtdElkXSE9bnVsbCYmKE0ubnVtRm10PVRlW1kubnVtRm10SWRdKSk7dmFyIFQ9cShQW1kuaWZudF0sWSk7VCYmKE0uZm9udD1UKTt2YXIgaz1sZSh2KTtrJiYoTS5maWxsPWssbGYoTSxrKSk7dmFyIEY9Z2Uodik7RiYmKE0uYm9yZGVyPUYpO3ZhciBFPXVlKHYpO3JldHVybiBFJiYoTS5hbGlnbm1lbnQ9RSksKFkubG9ja2VkfHxZLmhpZGRlbikmJihNLnByb3RlY3Rpb249e2xvY2tlZDpZLmxvY2tlZCxoaWRkZW46WS5oaWRkZW59KSxNfSx5ZT1mdW5jdGlvbihNLFkpe2lmKCFNKXJldHVybiBudWxsO2lmKFk9PW51bGwmJihZPVIuaW5kZXhPZihNKSksYltZXSlyZXR1cm4gYltZXTt2YXIgdj17aWQ6WSx4ZjpVZShNKX07cmV0dXJuIU0uZlN0eWxlJiZNLnhmSWQhPW51bGwmJk0ueGZJZCE9PVkmJlJbTS54ZklkXSYma2Eodix5ZShSW00ueGZJZF0sTS54ZklkKSksdi5pZD1ZLHYueGY9VWUoTSksaih2LE0pLGJbWV09dn0sYmU9ZnVuY3Rpb24oTSxZKXtpZighKCFNLlhGfHwhWXx8IVkuY2VsbFN0eWxlcykpe3ZhciB2PXllKE0uWEYsTS5peGZlKTt2JiYoTS5zPXYpfX0sbWU9ZnVuY3Rpb24oTSxZLHYpe2lmKCEoIUwmJmtlPjEpJiYhKHYuc2hlZXRSb3dzJiZNLnI+PXYuc2hlZXRSb3dzKSl7aWYodi5jZWxsU3R5bGVzJiZZLlhGJiZZLlhGLmRhdGEmJmJlKFksdiksZGVsZXRlIFkuaXhmZSxkZWxldGUgWS5YRix1PU0seD1EZShNKSwoIWZ8fCFmLnN8fCFmLmUpJiYoZj17czp7cjowLGM6MH0sZTp7cjowLGM6MH19KSxNLnI8Zi5zLnImJihmLnMucj1NLnIpLE0uYzxmLnMuYyYmKGYucy5jPU0uYyksTS5yKzE+Zi5lLnImJihmLmUucj1NLnIrMSksTS5jKzE+Zi5lLmMmJihmLmUuYz1NLmMrMSksdi5jZWxsRm9ybXVsYSYmWS5mKXtmb3IodmFyIFQ9MDtUPHcubGVuZ3RoOysrVClpZighKHdbVF1bMF0ucy5jPk0uY3x8d1tUXVswXS5zLnI+TS5yKSYmISh3W1RdWzBdLmUuYzxNLmN8fHdbVF1bMF0uZS5yPE0ucikpe1kuRj1JZSh3W1RdWzBdKSwod1tUXVswXS5zLmMhPU0uY3x8d1tUXVswXS5zLnIhPU0ucikmJmRlbGV0ZSBZLmYsWS5mJiYoWS5mPSIiK3dyKHdbVF1bMV0sZixNLHJlLFopKTticmVha319di5kZW5zZT8oblsiIWRhdGEiXVtNLnJdfHwoblsiIWRhdGEiXVtNLnJdPVtdKSxuWyIhZGF0YSJdW00ucl1bTS5jXT1ZKTpuW3hdPVl9fSxaPXtlbmM6ITEsc2JjY2g6MCxzbmFtZXM6W10sc2hhcmVkZjpwLGFycmF5Zjp3LHJydGFiaWQ6W10sbGFzdHVzZXI6IiIsYmlmZjo4LGNvZGVwYWdlOjAsd2lubG9ja2VkOjAsY2VsbFN0eWxlczohIWEmJiEhYS5jZWxsU3R5bGVzLGRyYXdpbmdzOiEhYSYmISFhLmRyYXdpbmdzLGNoYXJ0czohIWEmJiEhYS5jaGFydHMsV1RGOiEhYSYmISFhLldURn07YS5wYXNzd29yZCYmKFoucGFzc3dvcmQ9YS5wYXNzd29yZCk7dmFyIE9lLHdlPVtdLEFlPVtdLEE9W10sVT1bXSxPPSExLEQ9e2JsaXBzOltdfSx6PW51bGwscGU9W10sSj1udWxsLHJlPVtdO3JlLlNoZWV0TmFtZXM9Wi5zbmFtZXMscmUuc2hhcmVkZj1aLnNoYXJlZGYscmUuYXJyYXlmPVouYXJyYXlmLHJlLm5hbWVzPVtdLHJlLlhUST1bXTt2YXIgZWU9MCxrZT0wLGhlPTAseGU9W10sWGU9W10semUsamU9ZnVuY3Rpb24oKXtyZXR1cm4genx8KHo9e3JhdzpbXSxpbWFnZXM6W10sc2hhcGVzOltdLGNoYXJ0czpbXX0pLHp9LGRlPWZ1bmN0aW9uKE0pe2lmKE0mJiEoIWEuZHJhd2luZ3MmJiFhLmNoYXJ0cykpaWYoTS5ncm91cHMmJk0uYmxpcHMpRC5ibGlwcz1ELmJsaXBzLmNvbmNhdChNLmJsaXBzKTtlbHNle3ZhciBZPWplKCk7TS5yYXcmJlkucmF3LnB1c2goTS5yYXcpLE0uYmxpcHMmJk0uYmxpcHMubGVuZ3RoJiYoRC5ibGlwcz1ELmJsaXBzLmNvbmNhdChNLmJsaXBzKSksKE0uc2hhcGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbih2KXtwZS5wdXNoKHYpO3ZhciBUPXYuYmxpcElkIT1udWxsP0QuYmxpcHNbdi5ibGlwSWQtMV06bnVsbDtUJiZULmRhdGFVUkk/WS5pbWFnZXMucHVzaCh7aWQ6Inhscy1pbWFnZS0iKyhZLmltYWdlcy5sZW5ndGgrMSksb2JqZWN0SWQ6di5zcGlkLGJpZmZUeXBlOiJtc29EcmF3aW5nIixhbmNob3I6di5hbmNob3IsZGF0YVVSSTpULmRhdGFVUkksY29udGVudFR5cGU6VC5jb250ZW50VHlwZSxyYXc6di5yYXd9KTpZLnNoYXBlcy5wdXNoKHtpZDoieGxzLXNoYXBlLSIrKFkuc2hhcGVzLmxlbmd0aCsxKSxvYmplY3RJZDp2LnNwaWQsYmlmZlR5cGU6Im1zb0RyYXdpbmciLGFuY2hvcjp2LmFuY2hvcixwcm9wczp2LnByb3BzLHJhdzp2LnJhd30pfSl9fSxXZT1mdW5jdGlvbihNKXtpZighKCFNfHwhTS5JbURhdGF8fCFNLkltRGF0YS5kYXRhKSYmISghYS5kcmF3aW5ncyYmIWEuY2hhcnRzKSl7dmFyIFk9amUoKSx2PU0uSW1EYXRhLmRhdGEsVD1Lcyh2LDAsdi5sZW5ndGgpLGs9TS5fc2hhcGV8fHt9LEY9e2lkOiJ4bHMtaW1kYXRhLSIrKFkuaW1hZ2VzLmxlbmd0aCsxKSxvYmplY3RJZDpNLmNtbyYmTS5jbW9bMF0sYmlmZlR5cGU6ImltRGF0YSIsYW5jaG9yOmsuYW5jaG9yLHJhdzpNLkltRGF0YX07VFsxXT8oRi5jb250ZW50VHlwZT1UWzFdLEYuZGF0YVVSST0iZGF0YToiK1RbMV0rIjtiYXNlNjQsIit6MCh2LnNsaWNlKFRbMF0pKSxZLmltYWdlcy5wdXNoKEYpKTpZLnNoYXBlcy5wdXNoKHtpZDoieGxzLWltZGF0YS0iKyhZLnNoYXBlcy5sZW5ndGgrMSksb2JqZWN0SWQ6Ri5vYmplY3RJZCxiaWZmVHlwZToiaW1EYXRhIixhbmNob3I6ay5hbmNob3IscmF3Ok0uSW1EYXRhfSl9fSxmZT1mdW5jdGlvbigpe0o9e3R5cGU6bnVsbCx0aXRsZToiIixzZXJpZXM6W10sc2VyaWVzVGV4dDpbXSxyYXc6W10sY3VycmVudDpudWxsfX0sc2E9ZnVuY3Rpb24oTSxZKXtzd2l0Y2goSnx8ZmUoKSxKLnJhdy5wdXNoKHtydDpNLHY6WX0pLE0pe2Nhc2UgNDA5OTpKLmN1cnJlbnQ9e3JhdzpZLG5hbWU6IiIsZGF0YTpbXX0sSi5zZXJpZXMucHVzaChKLmN1cnJlbnQpO2JyZWFrO2Nhc2UgNDEwOTpZJiZZLnRleHQmJihKLmN1cnJlbnQmJiFKLmN1cnJlbnQubmFtZT9KLmN1cnJlbnQubmFtZT1ZLnRleHQ6Si50aXRsZT9KLnNlcmllc1RleHQucHVzaChZLnRleHQpOkoudGl0bGU9WS50ZXh0KTticmVhaztjYXNlIDQxMTk6Y2FzZSA0MTIwOmNhc2UgNDEyMTpjYXNlIDQxMjI6Y2FzZSA0MTIzOmNhc2UgNDE1ODpjYXNlIDQxNTk6WSYmWS50eXBlJiYoSi50eXBlPVkudHlwZSk7YnJlYWs7Y2FzZSA0MTc3OkouY3VycmVudCYmKEouY3VycmVudC5icmFpfHwoSi5jdXJyZW50LmJyYWk9W10pLEouY3VycmVudC5icmFpLnB1c2goWSkpO2JyZWFrfX0sanI9ZnVuY3Rpb24oTSl7aWYoIUp8fCFKLnJhdy5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIFk9e3R5cGU6Si50eXBlfHwiYmFyQ2hhcnQiLHRpdGxlOkoudGl0bGUsc2VyaWVzOltdLHJhdzpKLnJhd307aWYoTSYmTVsiIXJlZiJdKXt2YXIgdj1aZShNWyIhcmVmIl0pLFQ9TVsiIWRhdGEiXSE9bnVsbCxrLEYsRSxTPSExO2ZvcihGPXYucy5yO0Y8PXYuZS5yOysrRilFPVQ/KE1bIiFkYXRhIl1bRl18fFtdKVt2LnMuY106TVtEZSh7cjpGLGM6di5zLmN9KV0sRSYmRS50PT0ibiImJihTPSEwKTt2YXIgVz1bXTtpZighUyYmdi5lLmM+di5zLmMpZm9yKEY9di5zLnI7Rjw9di5lLnI7KytGKUU9VD8oTVsiIWRhdGEiXVtGXXx8W10pW3Yucy5jXTpNW0RlKHtyOkYsYzp2LnMuY30pXSxXLnB1c2goRT9FLnd8fEUudjoiIik7Zm9yKGs9di5zLmMrKFcubGVuZ3RoPzE6MCk7azw9di5lLmM7KytrKXt2YXIgSz1bXSxIPShKLnNlcmllc1trLXYucy5jXXx8Si5zZXJpZXNbay12LnMuYy0xXXx8e30pLm5hbWV8fCIiO2ZvcihGPXYucy5yO0Y8PXYuZS5yOysrRilFPVQ/KE1bIiFkYXRhIl1bRl18fFtdKVtrXTpNW0RlKHtyOkYsYzprfSldLEUmJkUudD09Im4iP0sucHVzaChFLnYpOkUmJkUudiE9bnVsbCYmIWlzTmFOKCtFLnYpJiZLLnB1c2goK0Uudik7Sy5sZW5ndGgmJlkuc2VyaWVzLnB1c2goe25hbWU6SCxkYXRhOkssdmFsOnt2YWx1ZXM6S30sY2F0Ont2YWx1ZXM6V319KX19cmV0dXJuIFkuc2VyaWVzLmxlbmd0aHx8Si5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihWKXtZLnNlcmllcy5wdXNoKHtuYW1lOlYubmFtZXx8IiIsZGF0YTpbXSxyYXc6Vn0pfSksWX0sWWU9ZnVuY3Rpb24oTSl7aWYoTVsiIW1lcmdlcyJdJiZNWyIhbWVyZ2VzIl0ubGVuZ3RoKXt2YXIgWT1UbihNLHtXVEY6ISEoYSYmKGEuV1RGfHxhLnZhbGlkYXRlTWVyZ2VzKSl9KTtZLmxlbmd0aCYmKE1bIiFtZXJnZUVycm9ycyJdPVkpfXomJih6LmltYWdlcy5sZW5ndGh8fHouc2hhcGVzLmxlbmd0aHx8ei5jaGFydHMubGVuZ3RofHx6LnJhdy5sZW5ndGgpJiYoTVsiIWRyYXdpbmdzIl09eik7dmFyIHY9YS5jaGFydHM/anIoTSk6bnVsbDt2JiYoTVsiIWNoYXJ0Il09dixNWyIhY2hhcnRzIl18fChNWyIhY2hhcnRzIl09W10pLHomJnouY2hhcnRzLmxlbmd0aD96LmNoYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKFQpe1QubW9kZWx8fChULm1vZGVsPXYpLE1bIiFjaGFydHMiXS5wdXNoKFQpfSk6TVsiIWNoYXJ0cyJdLnB1c2goe2lkOiJ4bHMtY2hhcnQtIitNWyIhY2hhcnRzIl0ubGVuZ3RoLHRpdGxlOnYudGl0bGUsbW9kZWw6dixyYXc6di5yYXcsYW5jaG9yOnt0eXBlOiJhYnNvbHV0ZUFuY2hvciIscG9zOnt4OjAseTowfSxleHQ6e2N4OjQ4MCo5NTI1LGN5OjI4OCo5NTI1fX19KSl9O1ouY29kZXBhZ2U9MTIwMCxZcigxMjAwKTtmb3IodmFyIFJhPSExO2UubDxlLmxlbmd0aC0xOyl7dmFyIE9hPWUubCxFZT1lLnJlYWRfc2hpZnQoMik7aWYoRWU9PT0wJiZlZT09PTEwKWJyZWFrO3ZhciBycj1lLmw9PT1lLmxlbmd0aD8wOmUucmVhZF9zaGlmdCgyKSxGcj1DbltFZV07aWYoa2U9PTAmJls5LDUyMSwxMDMzLDIwNTddLmluZGV4T2YoRWUpPT0tMSlicmVhaztpZihGciYmRnIuZil7aWYoYS5ib29rU2hlZXRzJiZlZT09PTEzMyYmRWUhPT0xMzMpYnJlYWs7aWYoZWU9RWUsRnIucj09PTJ8fEZyLnI9PTEyKXt2YXIgRmE9ZS5yZWFkX3NoaWZ0KDIpO2lmKHJyLT0yLCFaLmVuYyYmRmEhPT1FZSYmKChGYSYyNTUpPDw4fEZhPj44KSE9PUVlKXRocm93IG5ldyBFcnJvcigicnQgbWlzbWF0Y2g6ICIrRmErIiE9IitFZSk7RnIucj09MTImJihlLmwrPTEwLHJyLT0xMCl9dmFyIEM9e307aWYoRWU9PT0xMD9DPUZyLmYoZSxycixaKTpDPUd2KEVlLEZyLGUscnIsWiksa2U9PTAmJls5LDUyMSwxMDMzLDIwNTddLmluZGV4T2YoZWUpPT09LTEpY29udGludWU7c3dpdGNoKEVlKXtjYXNlIDM0OnIub3B0cy5EYXRlMTkwND1JLldCUHJvcHMuZGF0ZTE5MDQ9QzticmVhaztjYXNlIDEzNDpyLm9wdHMuV3JpdGVQcm90ZWN0PSEwO2JyZWFrO2Nhc2UgNDc6aWYoWi5lbmN8fChlLmw9MCksWi5lbmM9QywhYS5wYXNzd29yZCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7aWYoQy52YWxpZD09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRpb24gc2NoZW1lIHVuc3VwcG9ydGVkIik7aWYoIUMudmFsaWQpdGhyb3cgbmV3IEVycm9yKCJQYXNzd29yZCBpcyBpbmNvcnJlY3QiKTticmVhaztjYXNlIDkyOloubGFzdHVzZXI9QzticmVhaztjYXNlIDY2OnZhciBCcj1OdW1iZXIoQyk7c3dpdGNoKEJyKXtjYXNlIDIxMDEwOkJyPTEyMDA7YnJlYWs7Y2FzZSAzMjc2ODpCcj0xZTQ7YnJlYWs7Y2FzZSAzMjc2OTpCcj0xMjUyO2JyZWFrfVlyKFouY29kZXBhZ2U9QnIpLFJhPSEwO2JyZWFrO2Nhc2UgMzE3OloucnJ0YWJpZD1DO2JyZWFrO2Nhc2UgMjU6Wi53aW5sb2NrZWQ9QzticmVhaztjYXNlIDQzOTpyLm9wdHMuUmVmcmVzaEFsbD1DO2JyZWFrO2Nhc2UgMTI6ci5vcHRzLkNhbGNDb3VudD1DO2JyZWFrO2Nhc2UgMTY6ci5vcHRzLkNhbGNEZWx0YT1DO2JyZWFrO2Nhc2UgMTc6ci5vcHRzLkNhbGNJdGVyPUM7YnJlYWs7Y2FzZSAxMzpyLm9wdHMuQ2FsY01vZGU9QzticmVhaztjYXNlIDE0OnIub3B0cy5DYWxjUHJlY2lzaW9uPUM7YnJlYWs7Y2FzZSA5NTpyLm9wdHMuQ2FsY1NhdmVSZWNhbGM9QzticmVhaztjYXNlIDE1OlouQ2FsY1JlZk1vZGU9QzticmVhaztjYXNlIDIyMTE6ci5vcHRzLkZ1bGxDYWxjPUM7YnJlYWs7Y2FzZSAxMjk6Qy5mRGlhbG9nJiYoblsiIXR5cGUiXT0iZGlhbG9nIiksQy5mQmVsb3d8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5hYm92ZT0hMCksQy5mUmlnaHR8fCgoblsiIW91dGxpbmUiXXx8KG5bIiFvdXRsaW5lIl09e30pKS5sZWZ0PSEwKTticmVhaztjYXNlIDY3OmNhc2UgNTc5OmNhc2UgMTA5MTpjYXNlIDIyNDpSLnB1c2goQyk7YnJlYWs7Y2FzZSA0OTpQLnB1c2goQyksWi5iaWZmPj01JiZQLmxlbmd0aD09NCYmUC5wdXNoKG51bGwpO2JyZWFrO2Nhc2UgNDMwOnJlLnB1c2goW0NdKSxyZVtyZS5sZW5ndGgtMV0uWFRJPVtdO2JyZWFrO2Nhc2UgMzU6Y2FzZSA1NDc6cmVbcmUubGVuZ3RoLTFdLnB1c2goQyk7YnJlYWs7Y2FzZSAyNDpjYXNlIDUzNjp6ZT17TmFtZTpDLk5hbWUsUmVmOndyKEMucmdjZSxmLG51bGwscmUsWil9LEMuaXRhYj4wJiYoemUuU2hlZXQ9Qy5pdGFiLTEpLHJlLm5hbWVzLnB1c2goemUpLHJlWzBdfHwocmVbMF09W10scmVbMF0uWFRJPVtdKSxyZVtyZS5sZW5ndGgtMV0ucHVzaChDKSxDLk5hbWU9PSJfeGxubS5fRmlsdGVyRGF0YWJhc2UiJiZDLml0YWI+MCYmQy5yZ2NlJiZDLnJnY2VbMF0mJkMucmdjZVswXVswXSYmQy5yZ2NlWzBdWzBdWzBdPT0iUHRnQXJlYTNkIiYmKFhlW0MuaXRhYi0xXT17cmVmOkllKEMucmdjZVswXVswXVsxXVsyXSl9KTticmVhaztjYXNlIDIyOlouRXh0ZXJuQ291bnQ9QzticmVhaztjYXNlIDIzOnJlLmxlbmd0aD09MCYmKHJlWzBdPVtdLHJlWzBdLlhUST1bXSkscmVbcmUubGVuZ3RoLTFdLlhUST1yZVtyZS5sZW5ndGgtMV0uWFRJLmNvbmNhdChDKSxyZS5YVEk9cmUuWFRJLmNvbmNhdChDKTticmVhaztjYXNlIDIxOTY6aWYoWi5iaWZmPDgpYnJlYWs7emUhPW51bGwmJih6ZS5Db21tZW50PUNbMV0pO2JyZWFrO2Nhc2UgMTg6blsiIXByb3RlY3QiXT1DO2JyZWFrO2Nhc2UgMTk6QyE9PTAmJlouV1RGJiZjb25zb2xlLmVycm9yKCJQYXNzd29yZCB2ZXJpZmllcjogIitDKTticmVhaztjYXNlIDEzMzppW1ouYmlmZj09ND9aLnNuYW1lcy5sZW5ndGg6Qy5wb3NdPUMsWi5zbmFtZXMucHVzaChDLm5hbWUpO2JyZWFrO2Nhc2UgMTA6e2lmKC0ta2U/IUw6TClicmVhaztpZihmLmUpe2lmKGYuZS5yPjAmJmYuZS5jPjApe2lmKGYuZS5yLS0sZi5lLmMtLSxuWyIhcmVmIl09SWUoZiksYS5zaGVldFJvd3MmJmEuc2hlZXRSb3dzPD1mLmUucil7dmFyIF90PWYuZS5yO2YuZS5yPWEuc2hlZXRSb3dzLTEsblsiIWZ1bGxyZWYiXT1uWyIhcmVmIl0sblsiIXJlZiJdPUllKGYpLGYuZS5yPV90fWYuZS5yKyssZi5lLmMrK313ZS5sZW5ndGg+MCYmKG5bIiFtZXJnZXMiXT13ZSksQWUubGVuZ3RoPjAmJihuWyIhb2JqZWN0cyJdPUFlKSxBLmxlbmd0aD4wJiYoblsiIWNvbHMiXT1BKSxVLmxlbmd0aD4wJiYoblsiIXJvd3MiXT1VKSxZZShuKSxJLlNoZWV0cy5wdXNoKEIpfW89PT0iIj9sPW46dFtvXT1uLG49e30sYS5kZW5zZSYmKG5bIiFkYXRhIl09W10pfWJyZWFrO2Nhc2UgOTpjYXNlIDUyMTpjYXNlIDEwMzM6Y2FzZSAyMDU3OntpZihaLmJpZmY9PT04JiYoWi5iaWZmPXs5OjIsNTIxOjMsMTAzMzo0fVtFZV18fHs1MTI6Miw3Njg6MywxMDI0OjQsMTI4MDo1LDE1MzY6OCwyOjIsNzoyfVtDLkJJRkZWZXJdfHw4KSxaLmJpZmZndWVzcz1DLkJJRkZWZXI9PTAsQy5CSUZGVmVyPT0wJiZDLmR0PT00MDk2JiYoWi5iaWZmPTUsUmE9ITAsWXIoWi5jb2RlcGFnZT0yODU5MSkpLFouYmlmZj09NCYmQy5kdCYyNTYmJihMPSEwKSxaLmJpZmY9PTgmJkMuQklGRlZlcj09MCYmQy5kdD09MTYmJihaLmJpZmY9Miksa2UrKyYmIUwpYnJlYWs7aWYobj17fSxhLmRlbnNlJiYoblsiIWRhdGEiXT1bXSksWi5iaWZmPDgmJiFSYSYmKFJhPSEwLFlyKFouY29kZXBhZ2U9YS5jb2RlcGFnZXx8MTI1MikpLFouYmlmZj09NCYmTClvPShpW1ouc25hbWVzLmluZGV4T2YobykrMV18fHtuYW1lOiIifSkubmFtZTtlbHNlIGlmKFouYmlmZjw1fHxDLkJJRkZWZXI9PTAmJkMuZHQ9PTQwOTYpe289PT0iIiYmKG89IlNoZWV0MSIpLGY9e3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTt2YXIgUXQ9e3BvczplLmwtcnIsbmFtZTpvfTtpW1F0LnBvc109UXQsWi5zbmFtZXMucHVzaChvKX1lbHNlIG89KGlbT2FdfHx7bmFtZToiIn0pLm5hbWU7Qy5kdD09MzImJihuWyIhdHlwZSJdPSJjaGFydCIpLEMuZHQ9PTY0JiYoblsiIXR5cGUiXT0ibWFjcm8iKSx3ZT1bXSxBZT1bXSx6PW51bGwscGU9W10sZmUoKSxaLmFycmF5Zj13PVtdLEE9W10sVT1bXSxPPSExLEI9e0hpZGRlbjooaVtPYV18fHtoczowfSkuaHMsbmFtZTpvfX1icmVhaztjYXNlIDUxNTpjYXNlIDM6Y2FzZSAyOm5bIiF0eXBlIl09PSJjaGFydCImJihhLmRlbnNlPyhuWyIhZGF0YSJdW0Mucl18fFtdKVtDLmNdOm5bSGUoQy5jKStHZShDLnIpXSkmJisrQy5jLF89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXXx8e30sdjpDLnZhbCx0OiJuIn0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNTpjYXNlIDUxNzpfPXtpeGZlOkMuaXhmZSxYRjpSW0MuaXhmZV0sdjpDLnZhbCx0OkMudH0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNjM4Ol89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXSx2OkMucmtudW0sdDoibiJ9LGhlPjAmJihfLno9Xy5YRiYmXy5YRi5udW1GbXRJZCYmeGVbXy5YRi5udW1GbXRJZF18fHhlW18uaXhmZT4+OCY2M10pLG5hKF8sYSxyLm9wdHMuRGF0ZTE5MDQpLG1lKHtjOkMuYyxyOkMucn0sXyxhKTticmVhaztjYXNlIDE4OTpmb3IodmFyIE5hPUMuYztOYTw9Qy5DOysrTmEpe3ZhciBlMD1DLnJrcmVjW05hLUMuY11bMF07Xz17aXhmZTplMCxYRjpSW2UwXSx2OkMucmtyZWNbTmEtQy5jXVsxXSx0OiJuIn0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6TmEscjpDLnJ9LF8sYSl9YnJlYWs7Y2FzZSA2OmNhc2UgNTE4OmNhc2UgMTAzMDp7aWYoQy52YWw9PSJTdHJpbmciKXtzPUM7YnJlYWt9aWYoXz1iMChDLnZhbCxDLmNlbGwuaXhmZSxDLnR0KSxfLlhGPVJbXy5peGZlXSxhLmNlbGxGb3JtdWxhKXt2YXIgTWE9Qy5mb3JtdWxhO2lmKE1hJiZNYVswXSYmTWFbMF1bMF0mJk1hWzBdWzBdWzBdPT0iUHRnRXhwIil7dmFyIFUwPU1hWzBdWzBdWzFdWzBdLGF0PU1hWzBdWzBdWzFdWzFdLEgwPURlKHtyOlUwLGM6YXR9KTtwW0gwXT9fLmY9IiIrd3IoQy5mb3JtdWxhLGYsQy5jZWxsLHJlLFopOl8uRj0oKGEuZGVuc2U/KG5bIiFkYXRhIl1bVTBdfHxbXSlbYXRdOm5bSDBdKXx8e30pLkZ9ZWxzZSBfLmY9IiIrd3IoQy5mb3JtdWxhLGYsQy5jZWxsLHJlLFopfWhlPjAmJihfLno9Xy5YRiYmXy5YRi5udW1GbXRJZCYmeGVbXy5YRi5udW1GbXRJZF18fHhlW18uaXhmZT4+OCY2M10pLG5hKF8sYSxyLm9wdHMuRGF0ZTE5MDQpLG1lKEMuY2VsbCxfLGEpLHM9Q31icmVhaztjYXNlIDc6Y2FzZSA1MTk6aWYocylzLnZhbD1DLF89YjAoQyxzLmNlbGwuaXhmZSwicyIpLF8uWEY9UltfLml4ZmVdLGEuY2VsbEZvcm11bGEmJihfLmY9IiIrd3Iocy5mb3JtdWxhLGYscy5jZWxsLHJlLFopKSxoZT4wJiYoXy56PV8uWEYmJl8uWEYubnVtRm10SWQmJnhlW18uWEYubnVtRm10SWRdfHx4ZVtfLml4ZmU+PjgmNjNdKSxuYShfLGEsci5vcHRzLkRhdGUxOTA0KSxtZShzLmNlbGwsXyxhKSxzPW51bGw7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhIik7YnJlYWs7Y2FzZSAzMzpjYXNlIDU0NTp7dy5wdXNoKEMpO3ZhciBXMD1EZShDWzBdLnMpO2lmKGg9YS5kZW5zZT8oblsiIWRhdGEiXVtDWzBdLnMucl18fFtdKVtDWzBdLnMuY106bltXMF0sYS5jZWxsRm9ybXVsYSYmaCl7aWYoIXN8fCFXMHx8IWgpYnJlYWs7aC5mPSIiK3dyKENbMV0sZixDWzBdLHJlLFopLGguRj1JZShDWzBdKX19YnJlYWs7Y2FzZSAxMjEyOntpZighYS5jZWxsRm9ybXVsYSlicmVhaztpZih4KXtpZighcylicmVhaztwW0RlKHMuY2VsbCldPUNbMF0saD1hLmRlbnNlPyhuWyIhZGF0YSJdW3MuY2VsbC5yXXx8W10pW3MuY2VsbC5jXTpuW0RlKHMuY2VsbCldLChofHx7fSkuZj0iIit3cihDWzBdLGYsdSxyZSxaKX19YnJlYWs7Y2FzZSAyNTM6Xz1iMChjW0MuaXNzdF0udCxDLml4ZmUsInMiKSxjW0MuaXNzdF0uaCYmKF8uaD1jW0MuaXNzdF0uaCksXy5YRj1SW18uaXhmZV0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgNTEzOmEuc2hlZXRTdHVicyYmKF89e2l4ZmU6Qy5peGZlLFhGOlJbQy5peGZlXSx0OiJ6In0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpKTticmVhaztjYXNlIDE5MDppZihhLnNoZWV0U3R1YnMpZm9yKHZhciBrdD1DLmM7a3Q8PUMuQzsrK2t0KXt2YXIgVjA9Qy5peGZlW2t0LUMuY107Xz17aXhmZTpWMCxYRjpSW1YwXSx0OiJ6In0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6a3QscjpDLnJ9LF8sYSl9YnJlYWs7Y2FzZSAyMTQ6Y2FzZSA1MTY6Y2FzZSA0Ol89YjAoQy52YWwsQy5peGZlLCJzIiksXy5YRj1SW18uaXhmZV0saGU+MCYmKF8uej1fLlhGJiZfLlhGLm51bUZtdElkJiZ4ZVtfLlhGLm51bUZtdElkXXx8eGVbXy5peGZlPj44JjYzXSksbmEoXyxhLHIub3B0cy5EYXRlMTkwNCksbWUoe2M6Qy5jLHI6Qy5yfSxfLGEpO2JyZWFrO2Nhc2UgMDpjYXNlIDUxMjprZT09PTEmJihmPUMpO2JyZWFrO2Nhc2UgMjUyOmM9QzticmVhaztjYXNlIDEwNTQ6aWYoWi5iaWZmPj0zJiZaLmJpZmY8PTQpe3hlW2hlKytdPUNbMV07Zm9yKHZhciB3dD0wO3d0PGhlKzE2MyYmVGVbd3RdIT1DWzFdOysrd3QpO3d0Pj0xNjMmJkxhKENbMV0saGUrMTYzKX1lbHNlIExhKENbMV0sQ1swXSk7YnJlYWs7Y2FzZSAzMDp7eGVbaGUrK109Qztmb3IodmFyIEZ0PTA7RnQ8aGUrMTYzJiZUZVtGdF0hPUM7KytGdCk7RnQ+PTE2MyYmTGEoQyxoZSsxNjMpfWJyZWFrO2Nhc2UgMjI5OndlPXdlLmNvbmNhdChDKTticmVhaztjYXNlIDIzNTpkZShDKTticmVhaztjYXNlIDIzNjpkZShDKTticmVhaztjYXNlIDkzOmlmKEFlW0MuY21vWzBdXT1aLmxhc3RvYmo9QyxwZS5sZW5ndGgmJihDLl9zaGFwZT1wZS5zaGlmdCgpLEMuX3NoYXBlLm9iamVjdD1DLEMuY21vWzFdPT01KSl7dmFyIFVuPWplKCk7VW4uY2hhcnRzLnB1c2goe2lkOiJ4bHMtY2hhcnQtb2JqZWN0LSIrQy5jbW9bMF0sb2JqZWN0SWQ6Qy5jbW9bMF0sYmlmZlR5cGU6Im9iaiIsYW5jaG9yOkMuX3NoYXBlLmFuY2hvcixyYXc6Qy5fc2hhcGUucmF3fSl9YnJlYWs7Y2FzZSA0Mzg6Wi5sYXN0b2JqLlR4Tz1DO2JyZWFrO2Nhc2UgMTI3OloubGFzdG9iai5JbURhdGE9QyxXZShaLmxhc3RvYmopO2JyZWFrO2Nhc2UgNDQwOmZvcihkPUNbMF0ucy5yO2Q8PUNbMF0uZS5yOysrZClmb3IobT1DWzBdLnMuYzttPD1DWzBdLmUuYzsrK20paD1hLmRlbnNlPyhuWyIhZGF0YSJdW2RdfHxbXSlbbV06bltEZSh7YzptLHI6ZH0pXSxoJiYoaC5sPUNbMV0pO2JyZWFrO2Nhc2UgMjA0ODpmb3IoZD1DWzBdLnMucjtkPD1DWzBdLmUucjsrK2QpZm9yKG09Q1swXS5zLmM7bTw9Q1swXS5lLmM7KyttKWg9YS5kZW5zZT8oblsiIWRhdGEiXVtkXXx8W10pW21dOm5bRGUoe2M6bSxyOmR9KV0saCYmaC5sJiYoaC5sLlRvb2x0aXA9Q1sxXSk7YnJlYWs7Y2FzZSAyODp7aWYoaD1hLmRlbnNlPyhuWyIhZGF0YSJdW0NbMF0ucl18fFtdKVtDWzBdLmNdOm5bRGUoQ1swXSldLGh8fChhLmRlbnNlPyhuWyIhZGF0YSJdW0NbMF0ucl18fChuWyIhZGF0YSJdW0NbMF0ucl09W10pLGg9blsiIWRhdGEiXVtDWzBdLnJdW0NbMF0uY109e3Q6InoifSk6aD1uW0RlKENbMF0pXT17dDoieiJ9LGYuZS5yPU1hdGgubWF4KGYuZS5yLENbMF0uciksZi5zLnI9TWF0aC5taW4oZi5zLnIsQ1swXS5yKSxmLmUuYz1NYXRoLm1heChmLmUuYyxDWzBdLmMpLGYucy5jPU1hdGgubWluKGYucy5jLENbMF0uYykpLGguY3x8KGguYz1bXSksWi5iaWZmPD01JiZaLmJpZmY+PTIpZz17YToiU2hlZXRKNSIsdDpDWzFdfTtlbHNle3ZhciBIbj1BZVtDWzJdXTtnPXthOkNbMV0sdDpIbi5UeE8udH0sQ1szXSE9bnVsbCYmIShDWzNdJjIpJiYoaC5jLmhpZGRlbj0hMCl9aC5jLnB1c2goZyl9YnJlYWs7Y2FzZSAyMTczOm4xKFJbQy5peGZlXSxDLmV4dCksYj17fTticmVhaztjYXNlIDEyNTp7aWYoIVouY2VsbFN0eWxlcylicmVhaztmb3IoO0MuZT49Qy5zOylBW0MuZS0tXT17d2lkdGg6Qy53LzI1NixsZXZlbDpDLmxldmVsfHwwLGhpZGRlbjohIShDLmZsYWdzJjEpfSxDLml4ZmUhPW51bGwmJlJbQy5peGZlXSYmKEFbQy5lKzFdLnM9eWUoUltDLml4ZmVdLEMuaXhmZSkpLE98fChPPSEwLHZuKEMudy8yNTYpKSx1dChBW0MuZSsxXSl9YnJlYWs7Y2FzZSA1MjA6e3ZhciBVcj17fTtDLmxldmVsIT1udWxsJiYoVVtDLnJdPVVyLFVyLmxldmVsPUMubGV2ZWwpLEMuaGlkZGVuJiYoVVtDLnJdPVVyLFVyLmhpZGRlbj0hMCksWi5jZWxsU3R5bGVzJiZDLml4ZmUhPW51bGwmJkMuaXhmZSE9NDA5NSYmUltDLml4ZmVdJiYoVVtDLnJdPVVyLFVyLnM9eWUoUltDLml4ZmVdLEMuaXhmZSkpLEMuaHB0JiYoVVtDLnJdPVVyLFVyLmhwdD1DLmhwdCxVci5ocHg9VXQoQy5ocHQpKX1icmVhaztjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDQxOm5bIiFtYXJnaW5zIl18fHp0KG5bIiFtYXJnaW5zIl09e30pLG5bIiFtYXJnaW5zIl1bezM4OiJsZWZ0IiwzOToicmlnaHQiLDQwOiJ0b3AiLDQxOiJib3R0b20ifVtFZV1dPUM7YnJlYWs7Y2FzZSAxNjE6blsiIW1hcmdpbnMiXXx8enQoblsiIW1hcmdpbnMiXT17fSksblsiIW1hcmdpbnMiXS5oZWFkZXI9Qy5oZWFkZXIsblsiIW1hcmdpbnMiXS5mb290ZXI9Qy5mb290ZXI7YnJlYWs7Y2FzZSA1NzQ6Qy5SVEwmJihJLlZpZXdzWzBdLlJUTD0hMCk7YnJlYWs7Y2FzZSAxNDY6Tj1DLGI9e307YnJlYWs7Y2FzZSAyMTk4Ok9lPUMsYj17fTticmVhaztjYXNlIDE0MDp5PUM7YnJlYWs7Y2FzZSA0MDk4OmNhc2UgNDA5OTpjYXNlIDQxMDk6Y2FzZSA0MTE2OmNhc2UgNDExNzpjYXNlIDQxMTk6Y2FzZSA0MTIwOmNhc2UgNDEyMTpjYXNlIDQxMjI6Y2FzZSA0MTIzOmNhc2UgNDEyNTpjYXNlIDQxMjc6Y2FzZSA0MTI4OmNhc2UgNDEzMzpjYXNlIDQxNDk6Y2FzZSA0MTU0OmNhc2UgNDE1ODpjYXNlIDQxNTk6Y2FzZSA0MTYxOmNhc2UgNDE2NTpjYXNlIDQxNzc6c2EoRWUsQyk7YnJlYWs7Y2FzZSA0NDI6bz9CLkNvZGVOYW1lPUN8fEIubmFtZTpJLldCUHJvcHMuQ29kZU5hbWU9Q3x8IlRoaXNXb3JrYm9vayI7YnJlYWt9fWVsc2UgRnJ8fGNvbnNvbGUuZXJyb3IoIk1pc3NpbmcgSW5mbyBmb3IgWExTIFJlY29yZCAweCIrRWUudG9TdHJpbmcoMTYpKSxlLmwrPXJyfXJldHVybiByLlNoZWV0TmFtZXM9cHIoaSkuc29ydChmdW5jdGlvbigkZSxNKXtyZXR1cm4gTnVtYmVyKCRlKS1OdW1iZXIoTSl9KS5tYXAoZnVuY3Rpb24oJGUpe3JldHVybiBpWyRlXS5uYW1lfSksYS5ib29rU2hlZXRzfHwoci5TaGVldHM9dCksIXIuU2hlZXROYW1lcy5sZW5ndGgmJmxbIiFyZWYiXT8oci5TaGVldE5hbWVzLnB1c2goIlNoZWV0MSIpLHIuU2hlZXRzJiYoci5TaGVldHMuU2hlZXQxPWwpKTpyLlByZWFtYmxlPWwsci5TaGVldHMmJlhlLmZvckVhY2goZnVuY3Rpb24oJGUsTSl7ci5TaGVldHNbci5TaGVldE5hbWVzW01dXVsiIWF1dG9maWx0ZXIiXT0kZX0pLHIuU3RyaW5ncz1jLHIuU1NGPVVlKFRlKSxaLmVuYyYmKHIuRW5jcnlwdGlvbj1aLmVuYyksT2UmJihyLlRoZW1lcz1PZSksci5NZXRhZGF0YT17fSx5IT09dm9pZCAwJiYoci5NZXRhZGF0YS5Db3VudHJ5PXkpLHJlLm5hbWVzLmxlbmd0aD4wJiYoSS5OYW1lcz1yZS5uYW1lcyksci5Xb3JrYm9vaz1JLHJ9dmFyIFRmPXtTSToiZTA4NTlmZjJmOTRmNjgxMGFiOTEwODAwMmIyN2IzZDkiLERTSToiMDJkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUiLFVESToiMDVkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWUifTtmdW5jdGlvbiBzMihlLGEscil7dmFyIHQ9TWUuZmluZChlLCIvIURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uIik7aWYodCYmdC5zaXplPjApdHJ5e3ZhciBuPWhzKHQsSG8sVGYuRFNJKTtmb3IodmFyIGkgaW4gbilhW2ldPW5baV19Y2F0Y2gobyl7ci5XVEYmJmNvbnNvbGUuZXJyb3IobyYmby5tZXNzYWdlfHxvKX12YXIgZj1NZS5maW5kKGUsIi8hU3VtbWFyeUluZm9ybWF0aW9uIik7aWYoZiYmZi5zaXplPjApdHJ5e3ZhciBzPWhzKGYsV28sVGYuU0kpO2Zvcih2YXIgYyBpbiBzKWFbY109PW51bGwmJihhW2NdPXNbY10pfWNhdGNoKG8pe3IuV1RGJiZjb25zb2xlLmVycm9yKG8mJm8ubWVzc2FnZXx8byl9YS5IZWFkaW5nUGFpcnMmJmEuVGl0bGVzT2ZQYXJ0cyYmKGZzKGEuSGVhZGluZ1BhaXJzLGEuVGl0bGVzT2ZQYXJ0cyxhLHIpLGRlbGV0ZSBhLkhlYWRpbmdQYWlycyxkZWxldGUgYS5UaXRsZXNPZlBhcnRzKX1mdW5jdGlvbiBFZihlLGEpe2F8fChhPXt9KSxEbihhKSxWbigpLGEuY29kZXBhZ2UmJlgwKGEuY29kZXBhZ2UpO3ZhciByLHQ7aWYoZS5GdWxsUGF0aHMpe2lmKE1lLmZpbmQoZSwiL2VuY3J5cHRpb24iKSl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkIik7cj1NZS5maW5kKGUsIiFDb21wT2JqIiksdD1NZS5maW5kKGUsIi9Xb3JrYm9vayIpfHxNZS5maW5kKGUsIi9Cb29rIil9ZWxzZXtzd2l0Y2goYS50eXBlKXtjYXNlImJhc2U2NCI6ZT1EcihJcihlKSk7YnJlYWs7Y2FzZSJiaW5hcnkiOmU9RHIoZSk7YnJlYWs7Y2FzZSJidWZmZXIiOmJyZWFrO2Nhc2UiYXJyYXkiOkFycmF5LmlzQXJyYXkoZSl8fChlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTticmVha31zcihlLDApLHQ9e2NvbnRlbnQ6ZX19dmFyIG4saTtpZihyJiZXdihyKSxhLmJvb2tQcm9wcyYmIWEuYm9va1NoZWV0cyluPXt9O2Vsc2V7dmFyIGY9TmU/ImJ1ZmZlciI6ImFycmF5IjtpZih0JiZ0LmNvbnRlbnQpbj1pMih0LmNvbnRlbnQsYSk7ZWxzZSBpZigoaT1NZS5maW5kKGUsIlBlcmZlY3RPZmZpY2VfTUFJTiIpKSYmaS5jb250ZW50KW49THQudG9fd29ya2Jvb2soaS5jb250ZW50LChhLnR5cGU9ZixhKSk7ZWxzZSBpZigoaT1NZS5maW5kKGUsIk5hdGl2ZUNvbnRlbnRfTUFJTiIpKSYmaS5jb250ZW50KW49THQudG9fd29ya2Jvb2soaS5jb250ZW50LChhLnR5cGU9ZixhKSk7ZWxzZSB0aHJvdyhpPU1lLmZpbmQoZSwiTU4wIikpJiZpLmNvbnRlbnQ/bmV3IEVycm9yKCJVbnN1cHBvcnRlZCBXb3JrcyA0IGZvciBNYWMgZmlsZSIpOm5ldyBFcnJvcigiQ2Fubm90IGZpbmQgV29ya2Jvb2sgc3RyZWFtIik7YS5ib29rVkJBJiZlLkZ1bGxQYXRocyYmTWUuZmluZChlLCIvX1ZCQV9QUk9KRUNUX0NVUi9WQkEvZGlyIikmJihuLnZiYXJhdz1iMShlKSl9dmFyIHM9e307cmV0dXJuIGUuRnVsbFBhdGhzJiZzMihlLHMsYSksbi5Qcm9wcz1uLkN1c3Rwcm9wcz1zLGEuYm9va0ZpbGVzJiYobi5jZmI9ZSksbn12YXIgSTA9ezA6e2Y6VGR9LDE6e2Y6U2R9LDI6e2Y6UGR9LDM6e2Y6RGR9LDQ6e2Y6YmR9LDU6e2Y6TWR9LDY6e2Y6VWR9LDc6e2Y6T2R9LDg6e2Y6WGR9LDk6e2Y6R2R9LDEwOntmOldkfSwxMTp7ZjpWZH0sMTI6e2Y6Q2R9LDEzOntmOkxkfSwxNDp7ZjpSZH0sMTU6e2Y6SWR9LDE2OntmOnhmfSwxNzp7ZjpIZH0sMTg6e2Y6TmR9LDE5OntmOmZufSwyMDp7fSwyMTp7fSwyMjp7fSwyMzp7fSwyNDp7fSwyNTp7fSwyNjp7fSwyNzp7fSwyODp7fSwyOTp7fSwzMDp7fSwzMTp7fSwzMjp7fSwzMzp7fSwzNDp7fSwzNTp7VDoxfSwzNjp7VDotMX0sMzc6e1Q6MX0sMzg6e1Q6LTF9LDM5OntmOmt2fSw0MDp7fSw0Mjp7fSw0Mzp7ZjpWaH0sNDQ6e2Y6V2h9LDQ1OntmOkdofSw0Njp7Zjp6aH0sNDc6e2Y6WGh9LDQ4Ont9LDQ5OntmOnlvfSw1MDp7fSw1MTp7ZjpzMX0sNTI6e1Q6MX0sNTM6e1Q6LTF9LDU0OntUOjF9LDU1OntUOi0xfSw1Njp7VDoxfSw1Nzp7VDotMX0sNTg6e30sNTk6e30sNjA6e2Y6Q3N9LDYyOntmOkJkfSw2Mzp7Zjp1MX0sNjQ6e2Y6UWR9LDY1Ont9LDY2Ont9LDY3Ont9LDY4Ont9LDY5Ont9LDcwOnt9LDEyODp7fSwxMjk6e1Q6MX0sMTMwOntUOi0xfSwxMzE6e1Q6MSxmOnlyLHA6MH0sMTMyOntUOi0xfSwxMzM6e1Q6MX0sMTM0OntUOi0xfSwxMzU6e1Q6MX0sMTM2OntUOi0xfSwxMzc6e1Q6MSxmOnFkfSwxMzg6e1Q6LTF9LDEzOTp7VDoxfSwxNDA6e1Q6LTF9LDE0MTp7VDoxfSwxNDI6e1Q6LTF9LDE0Mzp7VDoxfSwxNDQ6e1Q6LTF9LDE0NTp7VDoxfSwxNDY6e1Q6LTF9LDE0Nzp7Zjp5ZH0sMTQ4OntmOkVkLHA6MTZ9LDE1MTp7ZjpLZH0sMTUyOnt9LDE1Mzp7Zjptdn0sMTU0Ont9LDE1NTp7fSwxNTY6e2Y6Z3Z9LDE1Nzp7fSwxNTg6e30sMTU5OntUOjEsZjpYdX0sMTYwOntUOi0xfSwxNjE6e1Q6MSxmOkdhfSwxNjI6e1Q6LTF9LDE2Mzp7VDoxfSwxNjQ6e1Q6LTF9LDE2NTp7VDoxfSwxNjY6e1Q6LTF9LDE2Nzp7fSwxNjg6e30sMTY5Ont9LDE3MDp7fSwxNzE6e30sMTcyOntUOjF9LDE3Mzp7VDotMX0sMTc0Ont9LDE3NTp7fSwxNzY6e2Y6emR9LDE3Nzp7VDoxfSwxNzg6e1Q6LTF9LDE3OTp7VDoxfSwxODA6e1Q6LTF9LDE4MTp7VDoxfSwxODI6e1Q6LTF9LDE4Mzp7VDoxfSwxODQ6e1Q6LTF9LDE4NTp7VDoxfSwxODY6e1Q6LTF9LDE4Nzp7VDoxfSwxODg6e1Q6LTF9LDE4OTp7VDoxfSwxOTA6e1Q6LTF9LDE5MTp7VDoxfSwxOTI6e1Q6LTF9LDE5Mzp7VDoxfSwxOTQ6e1Q6LTF9LDE5NTp7VDoxfSwxOTY6e1Q6LTF9LDE5Nzp7VDoxfSwxOTg6e1Q6LTF9LDE5OTp7VDoxfSwyMDA6e1Q6LTF9LDIwMTp7VDoxfSwyMDI6e1Q6LTF9LDIwMzp7VDoxfSwyMDQ6e1Q6LTF9LDIwNTp7VDoxfSwyMDY6e1Q6LTF9LDIwNzp7VDoxfSwyMDg6e1Q6LTF9LDIwOTp7VDoxfSwyMTA6e1Q6LTF9LDIxMTp7VDoxfSwyMTI6e1Q6LTF9LDIxMzp7VDoxfSwyMTQ6e1Q6LTF9LDIxNTp7VDoxfSwyMTY6e1Q6LTF9LDIxNzp7VDoxfSwyMTg6e1Q6LTF9LDIxOTp7VDoxfSwyMjA6e1Q6LTF9LDIyMTp7VDoxfSwyMjI6e1Q6LTF9LDIyMzp7VDoxfSwyMjQ6e1Q6LTF9LDIyNTp7VDoxfSwyMjY6e1Q6LTF9LDIyNzp7VDoxfSwyMjg6e1Q6LTF9LDIyOTp7VDoxfSwyMzA6e1Q6LTF9LDIzMTp7VDoxfSwyMzI6e1Q6LTF9LDIzMzp7VDoxfSwyMzQ6e1Q6LTF9LDIzNTp7VDoxfSwyMzY6e1Q6LTF9LDIzNzp7VDoxfSwyMzg6e1Q6LTF9LDIzOTp7VDoxfSwyNDA6e1Q6LTF9LDI0MTp7VDoxfSwyNDI6e1Q6LTF9LDI0Mzp7VDoxfSwyNDQ6e1Q6LTF9LDI0NTp7VDoxfSwyNDY6e1Q6LTF9LDI0Nzp7VDoxfSwyNDg6e1Q6LTF9LDI0OTp7VDoxfSwyNTA6e1Q6LTF9LDI1MTp7VDoxfSwyNTI6e1Q6LTF9LDI1Mzp7VDoxfSwyNTQ6e1Q6LTF9LDI1NTp7VDoxfSwyNTY6e1Q6LTF9LDI1Nzp7VDoxfSwyNTg6e1Q6LTF9LDI1OTp7VDoxfSwyNjA6e1Q6LTF9LDI2MTp7VDoxfSwyNjI6e1Q6LTF9LDI2Mzp7VDoxfSwyNjQ6e1Q6LTF9LDI2NTp7VDoxfSwyNjY6e1Q6LTF9LDI2Nzp7VDoxfSwyNjg6e1Q6LTF9LDI2OTp7VDoxfSwyNzA6e1Q6LTF9LDI3MTp7VDoxfSwyNzI6e1Q6LTF9LDI3Mzp7VDoxfSwyNzQ6e1Q6LTF9LDI3NTp7VDoxfSwyNzY6e1Q6LTF9LDI3Nzp7fSwyNzg6e1Q6MX0sMjc5OntUOi0xfSwyODA6e1Q6MX0sMjgxOntUOi0xfSwyODI6e1Q6MX0sMjgzOntUOjF9LDI4NDp7VDotMX0sMjg1OntUOjF9LDI4Njp7VDotMX0sMjg3OntUOjF9LDI4ODp7VDotMX0sMjg5OntUOjF9LDI5MDp7VDotMX0sMjkxOntUOjF9LDI5Mjp7VDotMX0sMjkzOntUOjF9LDI5NDp7VDotMX0sMjk1OntUOjF9LDI5Njp7VDotMX0sMjk3OntUOjF9LDI5ODp7VDotMX0sMjk5OntUOjF9LDMwMDp7VDotMX0sMzAxOntUOjF9LDMwMjp7VDotMX0sMzAzOntUOjF9LDMwNDp7VDotMX0sMzA1OntUOjF9LDMwNjp7VDotMX0sMzA3OntUOjF9LDMwODp7VDotMX0sMzA5OntUOjF9LDMxMDp7VDotMX0sMzExOntUOjF9LDMxMjp7VDotMX0sMzEzOntUOi0xfSwzMTQ6e1Q6MX0sMzE1OntUOi0xfSwzMTY6e1Q6MX0sMzE3OntUOi0xfSwzMTg6e1Q6MX0sMzE5OntUOi0xfSwzMjA6e1Q6MX0sMzIxOntUOi0xfSwzMjI6e1Q6MX0sMzIzOntUOi0xfSwzMjQ6e1Q6MX0sMzI1OntUOi0xfSwzMjY6e1Q6MX0sMzI3OntUOi0xfSwzMjg6e1Q6MX0sMzI5OntUOi0xfSwzMzA6e1Q6MX0sMzMxOntUOi0xfSwzMzI6e1Q6MX0sMzMzOntUOi0xfSwzMzQ6e1Q6MX0sMzM1OntmOmkxfSwzMzY6e1Q6LTF9LDMzNzp7ZjpmMSxUOjF9LDMzODp7VDotMX0sMzM5OntUOjF9LDM0MDp7VDotMX0sMzQxOntUOjF9LDM0Mjp7VDotMX0sMzQzOntUOjF9LDM0NDp7VDotMX0sMzQ1OntUOjF9LDM0Njp7VDotMX0sMzQ3OntUOjF9LDM0ODp7VDotMX0sMzQ5OntUOjF9LDM1MDp7VDotMX0sMzUxOnt9LDM1Mjp7fSwzNTM6e1Q6MX0sMzU0OntUOi0xfSwzNTU6e2Y6Y259LDM1Nzp7fSwzNTg6e30sMzU5Ont9LDM2MDp7VDoxfSwzNjE6e30sMzYyOntmOkFzfSwzNjM6e30sMzY0Ont9LDM2Njp7fSwzNjc6e30sMzY4Ont9LDM2OTp7fSwzNzA6e30sMzcxOnt9LDM3Mjp7VDoxfSwzNzM6e1Q6LTF9LDM3NDp7VDoxfSwzNzU6e1Q6LTF9LDM3Njp7VDoxfSwzNzc6e1Q6LTF9LDM3ODp7VDoxfSwzNzk6e1Q6LTF9LDM4MDp7VDoxfSwzODE6e1Q6LTF9LDM4Mjp7VDoxfSwzODM6e1Q6LTF9LDM4NDp7VDoxfSwzODU6e1Q6LTF9LDM4Njp7VDoxfSwzODc6e1Q6LTF9LDM4ODp7VDoxfSwzODk6e1Q6LTF9LDM5MDp7VDoxfSwzOTE6e1Q6LTF9LDM5Mjp7VDoxfSwzOTM6e1Q6LTF9LDM5NDp7VDoxfSwzOTU6e1Q6LTF9LDM5Njp7fSwzOTc6e30sMzk4Ont9LDM5OTp7fSw0MDA6e30sNDAxOntUOjF9LDQwMzp7fSw0MDQ6e30sNDA1Ont9LDQwNjp7fSw0MDc6e30sNDA4Ont9LDQwOTp7fSw0MTA6e30sNDExOnt9LDQxMjp7fSw0MTM6e30sNDE0Ont9LDQxNTp7fSw0MTY6e30sNDE3Ont9LDQxODp7fSw0MTk6e30sNDIwOnt9LDQyMTp7fSw0MjI6e1Q6MX0sNDIzOntUOjF9LDQyNDp7VDotMX0sNDI1OntUOi0xfSw0MjY6e2Y6amR9LDQyNzp7ZjpZZH0sNDI4Ont9LDQyOTp7VDoxfSw0MzA6e1Q6LTF9LDQzMTp7VDoxfSw0MzI6e1Q6LTF9LDQzMzp7VDoxfSw0MzQ6e1Q6LTF9LDQzNTp7VDoxfSw0MzY6e1Q6LTF9LDQzNzp7VDoxfSw0Mzg6e1Q6LTF9LDQzOTp7VDoxfSw0NDA6e1Q6LTF9LDQ0MTp7VDoxfSw0NDI6e1Q6LTF9LDQ0Mzp7VDoxfSw0NDQ6e1Q6LTF9LDQ0NTp7VDoxfSw0NDY6e1Q6LTF9LDQ0Nzp7VDoxfSw0NDg6e1Q6LTF9LDQ0OTp7VDoxfSw0NTA6e1Q6LTF9LDQ1MTp7VDoxfSw0NTI6e1Q6LTF9LDQ1Mzp7VDoxfSw0NTQ6e1Q6LTF9LDQ1NTp7VDoxfSw0NTY6e1Q6LTF9LDQ1Nzp7VDoxfSw0NTg6e1Q6LTF9LDQ1OTp7VDoxfSw0NjA6e1Q6LTF9LDQ2MTp7VDoxfSw0NjI6e1Q6LTF9LDQ2Mzp7VDoxfSw0NjQ6e1Q6LTF9LDQ2NTp7VDoxfSw0NjY6e1Q6LTF9LDQ2Nzp7VDoxfSw0Njg6e1Q6LTF9LDQ2OTp7VDoxfSw0NzA6e1Q6LTF9LDQ3MTp7fSw0NzI6e30sNDczOntUOjF9LDQ3NDp7VDotMX0sNDc1Ont9LDQ3Njp7ZjpaZH0sNDc3Ont9LDQ3ODp7fSw0Nzk6e1Q6MX0sNDgwOntUOi0xfSw0ODE6e1Q6MX0sNDgyOntUOi0xfSw0ODM6e1Q6MX0sNDg0OntUOi0xfSw0ODU6e2Y6QWR9LDQ4Njp7VDoxfSw0ODc6e1Q6LTF9LDQ4ODp7VDoxfSw0ODk6e1Q6LTF9LDQ5MDp7VDoxfSw0OTE6e1Q6LTF9LDQ5Mjp7VDoxfSw0OTM6e1Q6LTF9LDQ5NDp7ZjokZH0sNDk1OntUOjF9LDQ5Njp7VDotMX0sNDk3OntUOjF9LDQ5ODp7VDotMX0sNDk5Ont9LDUwMDp7VDoxfSw1MDE6e1Q6LTF9LDUwMjp7VDoxfSw1MDM6e1Q6LTF9LDUwNDp7fSw1MDU6e1Q6MX0sNTA2OntUOi0xfSw1MDc6e30sNTA4OntUOjF9LDUwOTp7VDotMX0sNTEwOntUOjF9LDUxMTp7VDotMX0sNTEyOnt9LDUxMzp7fSw1MTQ6e1Q6MX0sNTE1OntUOi0xfSw1MTY6e1Q6MX0sNTE3OntUOi0xfSw1MTg6e1Q6MX0sNTE5OntUOi0xfSw1MjA6e1Q6MX0sNTIxOntUOi0xfSw1MjI6e30sNTIzOnt9LDUyNDp7fSw1MjU6e30sNTI2Ont9LDUyNzp7fSw1Mjg6e1Q6MX0sNTI5OntUOi0xfSw1MzA6e1Q6MX0sNTMxOntUOi0xfSw1MzI6e1Q6MX0sNTMzOntUOi0xfSw1MzQ6e30sNTM1Ont9LDUzNjp7fSw1Mzc6e30sNTM4OntUOjF9LDUzOTp7VDotMX0sNTQwOntUOjF9LDU0MTp7VDotMX0sNTQyOntUOjF9LDU0ODp7fSw1NDk6e30sNTUwOntmOmNufSw1NTE6e2Y6ZDB9LDU1Mjp7fSw1NTM6e30sNTU0OntUOjF9LDU1NTp7VDotMX0sNTU2OntUOjF9LDU1Nzp7VDotMX0sNTU4OntUOjF9LDU1OTp7VDotMX0sNTYwOntUOjF9LDU2MTp7VDotMX0sNTYyOnt9LDU2NDp7fSw1NjU6e1Q6MX0sNTY2OntUOi0xfSw1Njk6e1Q6MX0sNTcwOntUOi0xfSw1NzI6e30sNTczOntUOjF9LDU3NDp7VDotMX0sNTc3Ont9LDU3ODp7fSw1Nzk6e30sNTgwOnt9LDU4MTp7fSw1ODI6e30sNTgzOnt9LDU4NDp7fSw1ODU6e30sNTg2Ont9LDU4Nzp7fSw1ODg6e1Q6LTF9LDU4OTp7fSw1OTA6e1Q6MX0sNTkxOntUOi0xfSw1OTI6e1Q6MX0sNTkzOntUOi0xfSw1OTQ6e1Q6MX0sNTk1OntUOi0xfSw1OTY6e30sNTk3OntUOjF9LDU5ODp7VDotMX0sNTk5OntUOjF9LDYwMDp7VDotMX0sNjAxOntUOjF9LDYwMjp7VDotMX0sNjAzOntUOjF9LDYwNDp7VDotMX0sNjA1OntUOjF9LDYwNjp7VDotMX0sNjA3Ont9LDYwODp7VDoxfSw2MDk6e1Q6LTF9LDYxMDp7fSw2MTE6e1Q6MX0sNjEyOntUOi0xfSw2MTM6e1Q6MX0sNjE0OntUOi0xfSw2MTU6e1Q6MX0sNjE2OntUOi0xfSw2MTc6e1Q6MX0sNjE4OntUOi0xfSw2MTk6e1Q6MX0sNjIwOntUOi0xfSw2MjU6e30sNjI2OntUOjF9LDYyNzp7VDotMX0sNjI4OntUOjF9LDYyOTp7VDotMX0sNjMwOntUOjF9LDYzMTp7VDotMX0sNjMyOntmOnkxfSw2MzM6e1Q6MX0sNjM0OntUOi0xfSw2MzU6e1Q6MSxmOkExfSw2MzY6e1Q6LTF9LDYzNzp7ZjpDb30sNjM4OntUOjF9LDYzOTp7fSw2NDA6e1Q6LTF9LDY0MTp7VDoxfSw2NDI6e1Q6LTF9LDY0Mzp7VDoxfSw2NDQ6e30sNjQ1OntUOi0xfSw2NDY6e1Q6MX0sNjQ4OntUOjF9LDY0OTp7fSw2NTA6e1Q6LTF9LDY1MTp7Zjpjdn0sNjUyOnt9LDY1Mzp7VDoxfSw2NTQ6e1Q6LTF9LDY1NTp7VDoxfSw2NTY6e1Q6LTF9LDY1Nzp7VDoxfSw2NTg6e1Q6LTF9LDY1OTp7fSw2NjA6e1Q6MX0sNjYxOnt9LDY2Mjp7VDotMX0sNjYzOnt9LDY2NDp7VDoxfSw2NjU6e30sNjY2OntUOi0xfSw2Njc6e30sNjY4Ont9LDY2OTp7fSw2NzE6e1Q6MX0sNjcyOntUOi0xfSw2NzM6e1Q6MX0sNjc0OntUOi0xfSw2NzU6e30sNjc2Ont9LDY3Nzp7fSw2Nzg6e30sNjc5Ont9LDY4MDp7fSw2ODE6e30sMTAyNDp7fSwxMDI1Ont9LDEwMjY6e1Q6MX0sMTAyNzp7VDotMX0sMTAyODp7VDoxfSwxMDI5OntUOi0xfSwxMDMwOnt9LDEwMzE6e1Q6MX0sMTAzMjp7VDotMX0sMTAzMzp7VDoxfSwxMDM0OntUOi0xfSwxMDM1Ont9LDEwMzY6e30sMTAzNzp7fSwxMDM4OntUOjF9LDEwMzk6e1Q6LTF9LDEwNDA6e30sMTA0MTp7VDoxfSwxMDQyOntUOi0xfSwxMDQzOnt9LDEwNDQ6e30sMTA0NTp7fSwxMDQ2OntUOjF9LDEwNDc6e1Q6LTF9LDEwNDg6e1Q6MX0sMTA0OTp7VDotMX0sMTA1MDp7fSwxMDUxOntUOjF9LDEwNTI6e1Q6MX0sMTA1Mzp7Zjpldn0sMTA1NDp7VDoxfSwxMDU1Ont9LDEwNTY6e1Q6MX0sMTA1Nzp7VDotMX0sMTA1ODp7VDoxfSwxMDU5OntUOi0xfSwxMDYxOnt9LDEwNjI6e1Q6MX0sMTA2Mzp7VDotMX0sMTA2NDp7VDoxfSwxMDY1OntUOi0xfSwxMDY2OntUOjF9LDEwNjc6e1Q6LTF9LDEwNjg6e1Q6MX0sMTA2OTp7VDotMX0sMTA3MDp7VDoxfSwxMDcxOntUOi0xfSwxMDcyOntUOjF9LDEwNzM6e1Q6LTF9LDEwNzU6e1Q6MX0sMTA3Njp7VDotMX0sMTA3Nzp7VDoxfSwxMDc4OntUOi0xfSwxMDc5OntUOjF9LDEwODA6e1Q6LTF9LDEwODE6e1Q6MX0sMTA4Mjp7VDotMX0sMTA4Mzp7VDoxfSwxMDg0OntUOi0xfSwxMDg1Ont9LDEwODY6e1Q6MX0sMTA4Nzp7VDotMX0sMTA4ODp7VDoxfSwxMDg5OntUOi0xfSwxMDkwOntUOjF9LDEwOTE6e1Q6LTF9LDEwOTI6e1Q6MX0sMTA5Mzp7VDotMX0sMTA5NDp7VDoxfSwxMDk1OntUOi0xfSwxMDk2Ont9LDEwOTc6e1Q6MX0sMTA5ODp7fSwxMDk5OntUOi0xfSwxMTAwOntUOjF9LDExMDE6e1Q6LTF9LDExMDI6e30sMTEwMzp7fSwxMTA0Ont9LDExMDU6e30sMTExMTp7fSwxMTEyOnt9LDExMTM6e1Q6MX0sMTExNDp7VDotMX0sMTExNTp7VDoxfSwxMTE2OntUOi0xfSwxMTE3Ont9LDExMTg6e1Q6MX0sMTExOTp7VDotMX0sMTEyMDp7VDoxfSwxMTIxOntUOi0xfSwxMTIyOntUOjF9LDExMjM6e1Q6LTF9LDExMjQ6e1Q6MX0sMTEyNTp7VDotMX0sMTEyNjp7fSwxMTI4OntUOjF9LDExMjk6e1Q6LTF9LDExMzA6e30sMTEzMTp7VDoxfSwxMTMyOntUOi0xfSwxMTMzOntUOjF9LDExMzQ6e1Q6LTF9LDExMzU6e1Q6MX0sMTEzNjp7VDotMX0sMTEzNzp7VDoxfSwxMTM4OntUOi0xfSwxMTM5OntUOjF9LDExNDA6e1Q6LTF9LDExNDE6e30sMTE0Mjp7VDoxfSwxMTQzOntUOi0xfSwxMTQ0OntUOjF9LDExNDU6e1Q6LTF9LDExNDY6e30sMTE0Nzp7VDoxfSwxMTQ4OntUOi0xfSwxMTQ5OntUOjF9LDExNTA6e1Q6LTF9LDExNTI6e1Q6MX0sMTE1Mzp7VDotMX0sMTE1NDp7VDotMX0sMTE1NTp7VDotMX0sMTE1Njp7VDotMX0sMTE1Nzp7VDoxfSwxMTU4OntUOi0xfSwxMTU5OntUOjF9LDExNjA6e1Q6LTF9LDExNjE6e1Q6MX0sMTE2Mjp7VDotMX0sMTE2Mzp7VDoxfSwxMTY0OntUOi0xfSwxMTY1OntUOjF9LDExNjY6e1Q6LTF9LDExNjc6e1Q6MX0sMTE2ODp7VDotMX0sMTE2OTp7VDoxfSwxMTcwOntUOi0xfSwxMTcxOnt9LDExNzI6e1Q6MX0sMTE3Mzp7VDotMX0sMTE3Nzp7fSwxMTc4OntUOjF9LDExODA6e30sMTE4MTp7fSwxMTgyOnt9LDIwNDg6e1Q6MX0sMjA0OTp7VDotMX0sMjA1MDp7fSwyMDUxOntUOjF9LDIwNTI6e1Q6LTF9LDIwNTM6e30sMjA1NDp7fSwyMDU1OntUOjF9LDIwNTY6e1Q6LTF9LDIwNTc6e1Q6MX0sMjA1ODp7VDotMX0sMjA2MDp7fSwyMDY3Ont9LDIwNjg6e1Q6MX0sMjA2OTp7VDotMX0sMjA3MDp7fSwyMDcxOnt9LDIwNzI6e1Q6MX0sMjA3Mzp7VDotMX0sMjA3NTp7fSwyMDc2Ont9LDIwNzc6e1Q6MX0sMjA3ODp7VDotMX0sMjA3OTp7fSwyMDgwOntUOjF9LDIwODE6e1Q6LTF9LDIwODI6e30sMjA4Mzp7VDoxfSwyMDg0OntUOi0xfSwyMDg1OntUOjF9LDIwODY6e1Q6LTF9LDIwODc6e1Q6MX0sMjA4ODp7VDotMX0sMjA4OTp7VDoxfSwyMDkwOntUOi0xfSwyMDkxOnt9LDIwOTI6e30sMjA5Mzp7VDoxfSwyMDk0OntUOi0xfSwyMDk1Ont9LDIwOTY6e1Q6MX0sMjA5Nzp7VDotMX0sMjA5ODp7VDoxfSwyMDk5OntUOi0xfSwyMTAwOntUOjF9LDIxMDE6e1Q6LTF9LDIxMDI6e30sMjEwMzp7VDoxfSwyMTA0OntUOi0xfSwyMTA1Ont9LDIxMDY6e1Q6MX0sMjEwNzp7VDotMX0sMjEwODp7fSwyMTA5OntUOjF9LDIxMTA6e1Q6LTF9LDIxMTE6e1Q6MX0sMjExMjp7VDotMX0sMjExMzp7VDoxfSwyMTE0OntUOi0xfSwyMTE1Ont9LDIxMTY6e30sMjExNzp7fSwyMTE4OntUOjF9LDIxMTk6e1Q6LTF9LDIxMjA6e30sMjEyMTp7VDoxfSwyMTIyOntUOi0xfSwyMTIzOntUOjF9LDIxMjQ6e1Q6LTF9LDIxMjU6e30sMjEyNjp7VDoxfSwyMTI3OntUOi0xfSwyMTI4Ont9LDIxMjk6e1Q6MX0sMjEzMDp7VDotMX0sMjEzMTp7VDoxfSwyMTMyOntUOi0xfSwyMTMzOntUOjF9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e1Q6MX0sMjEzODp7VDotMX0sMjEzOTp7VDoxfSwyMTQwOntUOi0xfSwyMTQxOnt9LDMwNzI6e30sMzA3Mzp7fSw0MDk2OntUOjF9LDQwOTc6e1Q6LTF9LDUwMDI6e1Q6MX0sNTAwMzp7VDotMX0sNTA4MTp7VDoxfSw1MDgyOntUOi0xfSw1MDgzOnt9LDUwODQ6e1Q6MX0sNTA4NTp7VDotMX0sNTA4Njp7VDoxfSw1MDg3OntUOi0xfSw1MDg4Ont9LDUwODk6e30sNTA5MDp7fSw1MDkyOntUOjF9LDUwOTM6e1Q6LTF9LDUwOTQ6e30sNTA5NTp7VDoxfSw1MDk2OntUOi0xfSw1MDk3Ont9LDUwOTk6e30sNTEwMDp7fSw1MTAxOnt9LDUxMDI6e30sNTEwMzp7fSw1MTA1Ont9LDUxMDg6e30sNTEwOTp7fSw1MTEwOnt9LDUxMTE6e30sNTExMjp7fSw1MTEzOnt9LDUxMTQ6e30sNTExNzp7fSw1MTI3Ont9LDUxMzA6e30sNTEzMTp7fSw1MTMyOnt9LDUxMzQ6e30sNTEzNTp7fSw2NTUzNTp7bjoiIn19LENuPXs2OntmOndufSwxMDp7ZjpiYX0sMTI6e2Y6ZXJ9LDEzOntmOmVyfSwxNDp7Zjphcn0sMTU6e2Y6YXJ9LDE2OntmOl9yfSwxNzp7Zjphcn0sMTg6e2Y6YXJ9LDE5OntmOmVyfSwyMDp7ZjpGc30sMjE6e2Y6RnN9LDIzOntmOkFzfSwyNDp7ZjpFc30sMjU6e2Y6YXJ9LDI2Ont9LDI3Ont9LDI4OntmOm51fSwyOTp7fSwzNDp7Zjphcn0sMzU6e2Y6VHN9LDM4OntmOl9yfSwzOTp7Zjpfcn0sNDA6e2Y6X3J9LDQxOntmOl9yfSw0Mjp7Zjphcn0sNDM6e2Y6YXJ9LDQ3OntmOm9ofSw0OTp7ZjpMbH0sNTE6e2Y6ZXJ9LDYwOnt9LDYxOntmOk5sfSw2NDp7Zjphcn0sNjU6e2Y6UGx9LDY2OntmOmVyfSw3Nzp7fSw4MDp7fSw4MTp7fSw4Mjp7fSw4NTp7Zjplcn0sODk6e30sOTA6e30sOTE6e30sOTI6e2Y6eWx9LDkzOntmOnN1fSw5NDp7fSw5NTp7Zjphcn0sOTY6e30sOTc6e30sOTk6e2Y6YXJ9LDEyNTp7ZjpDc30sMTI4OntmOkpsfSwxMjk6e2Y6U2x9LDEzMDp7Zjplcn0sMTMxOntmOmFyfSwxMzI6e2Y6YXJ9LDEzMzp7ZjpDbH0sMTM0Ont9LDE0MDp7ZjpodX0sMTQxOntmOmVyfSwxNDQ6e30sMTQ2OntmOmR1fSwxNTE6e30sMTUyOnt9LDE1Mzp7fSwxNTQ6e30sMTU1Ont9LDE1Njp7Zjplcn0sMTU3Ont9LDE1ODp7fSwxNjA6e2Y6X3V9LDE2MTp7ZjpwdX0sMTc0Ont9LDE3NTp7fSwxNzY6e30sMTc3Ont9LDE3ODp7fSwxODA6e30sMTgxOnt9LDE4Mjp7fSwxODQ6e30sMTg1Ont9LDE4OTp7ZjpHbH0sMTkwOntmOlhsfSwxOTM6e2Y6YmF9LDE5Nzp7fSwxOTg6e30sMTk5Ont9LDIwMDp7fSwyMDE6e30sMjAyOntmOmFyfSwyMDM6e30sMjA0Ont9LDIwNTp7fSwyMDY6e30sMjA3Ont9LDIwODp7fSwyMDk6e30sMjEwOnt9LDIxMTp7fSwyMTM6e30sMjE1Ont9LDIxNjp7fSwyMTc6e30sMjE4OntmOmVyfSwyMjA6e30sMjIxOntmOmFyfSwyMjI6e30sMjI0OntmOiRsfSwyMjU6e2Y6QWx9LDIyNjp7ZjpiYX0sMjI3Ont9LDIyOTp7ZjppdX0sMjMzOnt9LDIzNTp7ZjpwMX0sMjM2OntmOmcxfSwyMzc6e30sMjM5Ont9LDI0MDp7fSwyNDE6e30sMjQyOnt9LDI0NDp7fSwyNDU6e30sMjQ2Ont9LDI0Nzp7fSwyNDg6e30sMjQ5Ont9LDI1MTp7fSwyNTI6e2Y6Ymx9LDI1Mzp7ZjpCbH0sMjU1OntmOklsfSwyNTY6e30sMjU5Ont9LDI5MDp7fSwzMTE6e30sMzEyOnt9LDMxNTp7fSwzMTc6e2Y6eHN9LDMxODp7fSwzMTk6e30sMzIwOnt9LDMzMDp7fSwzMzE6e30sMzMzOnt9LDMzNDp7fSwzMzU6e30sMzM2Ont9LDMzNzp7fSwzMzg6e30sMzM5Ont9LDM0MDp7fSwzNTE6e30sMzUyOntmOmFyfSwzNTM6e2Y6YmF9LDQwMTp7fSw0MDI6e30sNDAzOnt9LDQwNDp7fSw0MDU6e30sNDA2Ont9LDQwNzp7fSw0MDg6e30sNDI1Ont9LDQyNjp7fSw0Mjc6e30sNDI4Ont9LDQyOTp7fSw0MzA6e2Y6UWx9LDQzMTp7Zjphcn0sNDMyOnt9LDQzMzp7fSw0MzQ6e30sNDM3Ont9LDQzODp7ZjpvdX0sNDM5OntmOmFyfSw0NDA6e2Y6bHV9LDQ0MTp7fSw0NDI6e2Y6UHR9LDQ0Mzp7fSw0NDQ6e2Y6ZXJ9LDQ0NTp7fSw0NDY6e30sNDQ4OntmOmJhfSw0NDk6e2Y6T2wscjoyfSw0NTA6e2Y6YmF9LDUxMjp7Zjp3c30sNTEzOntmOm11fSw1MTU6e2Y6cWx9LDUxNjp7ZjpVbH0sNTE3OntmOlpsfSw1MTk6e2Y6a3V9LDUyMDp7ZjpEbH0sNTIzOnt9LDU0NTp7ZjpTc30sNTQ5OntmOmtzfSw1NjY6e30sNTc0OntmOk1sfSw2Mzg6e2Y6Vmx9LDY1OTp7fSwxMDQ4Ont9LDEwNTQ6e2Y6SGx9LDEwODQ6e30sMTIxMjp7ZjpydX0sMjA0ODp7Zjp1dX0sMjA0OTp7fSwyMDUwOnt9LDIwNTE6e30sMjA1Mjp7fSwyMDUzOnt9LDIwNTQ6e30sMjA1NTp7fSwyMDU2Ont9LDIwNTc6e2Y6RjB9LDIwNTg6e30sMjA1OTp7fSwyMDYwOnt9LDIwNjE6e30sMjA2Mjp7fSwyMDYzOnt9LDIwNjQ6e30sMjA2Njp7fSwyMDY3Ont9LDIxMjg6e30sMjEyOTp7fSwyMTMwOnt9LDIxMzE6e30sMjEzMjp7fSwyMTMzOnt9LDIxMzQ6e30sMjEzNTp7fSwyMTM2Ont9LDIxMzc6e30sMjEzODp7fSwyMTQ2Ont9LDIxNDc6e3I6MTJ9LDIxNDg6e30sMjE0OTp7fSwyMTUwOnt9LDIxNTE6e2Y6YmF9LDIxNTI6e30sMjE1NDp7fSwyMTU1Ont9LDIxNTY6e30sMjE2MTp7fSwyMTYyOnt9LDIxNjQ6e30sMjE2NTp7fSwyMTY2Ont9LDIxNjc6e30sMjE2ODp7fSwyMTY5Ont9LDIxNzA6e30sMjE3MTp7fSwyMTcyOntmOnZ1LHI6MTJ9LDIxNzM6e2Y6dDEscjoxMn0sMjE3NDp7fSwyMTc1Ont9LDIxODA6e30sMjE4MTp7fSwyMTgyOnt9LDIxODM6e30sMjE4NDp7fSwyMTg1Ont9LDIxODY6e30sMjE4Nzp7fSwyMTg4OntmOmFyLHI6MTJ9LDIxODk6e30sMjE5MDp7cjoxMn0sMjE5MTp7fSwyMTkyOnt9LDIxOTQ6e30sMjE5NTp7fSwyMTk2OntmOmV1LHI6MTJ9LDIxOTc6e30sMjE5ODp7ZjpaaCxyOjEyfSwyMTk5Ont9LDIyMDA6e30sMjIwMTp7fSwyMjAyOntmOmF1LHI6MTJ9LDIyMDM6e2Y6YmF9LDIyMDQ6e30sMjIwNTp7fSwyMjA2Ont9LDIyMDc6e30sMjIxMTp7ZjpSbH0sMjIxMjp7fSwyMjEzOnt9LDIyMTQ6e30sMjIxNTp7fSw0MDk3Ont9LDQwOTg6e2Y6enZ9LDQwOTk6e2Y6JHZ9LDQxMDI6e30sNDEwMzp7fSw0MTA1Ont9LDQxMDY6e30sNDEwNzp7fSw0MTA4Ont9LDQxMDk6e2Y6S3Z9LDQxMTY6e30sNDExNzp7Zjpqdn0sNDExODp7fSw0MTE5OntmOnF2fSw0MTIwOntmOlF2fSw0MTIxOntmOmUyfSw0MTIyOntmOnIyfSw0MTIzOntmOmEyfSw0MTI0Ont9LDQxMjU6e2Y6WXZ9LDQxMjY6e30sNDEyNzp7fSw0MTI4Ont9LDQxMjk6e30sNDEzMDp7fSw0MTMyOnt9LDQxMzM6e2Y6SnZ9LDQxMzQ6e2Y6ZXJ9LDQxMzU6e30sNDE0Njp7fSw0MTQ3Ont9LDQxNDg6e30sNDE0OTp7fSw0MTU0Ont9LDQxNTY6e30sNDE1Nzp7fSw0MTU4OntmOnQyfSw0MTU5OntmOm4yfSw0MTYwOnt9LDQxNjE6e30sNDE2Mzp7fSw0MTY0OntmOmd1fSw0MTY1Ont9LDQxNjY6e30sNDE2ODp7fSw0MTcwOnt9LDQxNzE6e30sNDE3NDp7fSw0MTc1Ont9LDQxNzY6e30sNDE3Nzp7Zjpadn0sNDE4Nzp7fSw0MTg4OntmOnh1fSw0MTg5Ont9LDQxOTE6e30sNDE5Mjp7fSw0MTkzOnt9LDQxOTQ6e30sNDE5NTp7fSw0MTk2Ont9LDQxOTc6e30sNDE5ODp7fSw0MTk5Ont9LDQyMDA6e30sMDp7Zjp3c30sMTp7fSwyOntmOkV1fSwzOntmOlR1fSw0OntmOkZ1fSw1OntmOnl1fSw3OntmOkF1fSw4Ont9LDk6e2Y6RjB9LDExOnt9LDIyOntmOmVyfSwzMDp7ZjpXbH0sMzE6e30sMzI6e30sMzM6e2Y6U3N9LDM2Ont9LDM3OntmOmtzfSw1MDp7ZjpTdX0sNjI6e30sNTI6e30sNjc6e2Y6S2x9LDY4OntmOmVyfSw2OTp7fSw4Njp7fSwxMjY6e30sMTI3OntmOnd1fSwxMzU6e30sMTM2Ont9LDEzNzp7fSwxNDM6e2Y6YnV9LDE0NTp7fSwxNDg6e30sMTQ5Ont9LDE1MDp7fSwxNjk6e30sMTcxOnt9LDE4ODp7fSwxOTE6e30sMTkyOnt9LDE5NDp7fSwxOTU6e30sMjE0OntmOkN1fSwyMjM6e30sMjM0Ont9LDM1NDp7fSw0MjE6e30sNTE4OntmOndufSw1MjE6e2Y6RjB9LDUzNjp7ZjpFc30sNTQ3OntmOlRzfSw1NjE6e30sNTc5OntmOmpsfSwxMDMwOntmOndufSwxMDMzOntmOkYwfSwxMDkxOntmOllsfSwyMTU3Ont9LDIxNjM6e30sMjE3Nzp7fSwyMjQwOnt9LDIyNDE6e30sMjI0Mjp7fSwyMjQzOnt9LDIyNDQ6e30sMjI0NTp7fSwyMjQ2Ont9LDIyNDc6e30sMjI0ODp7fSwyMjQ5Ont9LDIyNTA6e30sMjI1MTp7fSwyMjYyOntyOjEyfSwxMDE6e30sMTAyOnt9LDEwNTp7fSwxMDY6e30sMTA3Ont9LDEwOTp7fSwxMTI6e30sMTE0Ont9LDI5MjgyOnt9fTtmdW5jdGlvbiBQcihlLGEscix0KXt2YXIgbj1hO2lmKCFpc05hTihuKSl7dmFyIGk9dHx8KHJ8fFtdKS5sZW5ndGh8fDAsZj1lLm5leHQoNCk7Zi53cml0ZV9zaGlmdCgyLG4pLGYud3JpdGVfc2hpZnQoMixpKSxpPjAmJktpKHIpJiZlLnB1c2gocil9fWZ1bmN0aW9uIEFmKGUsYSl7dmFyIHI9YXx8e30sdD1yLmRlbnNlIT1udWxsP3IuZGVuc2U6dGMsbj17fTt0JiYoblsiIWRhdGEiXT1bXSksZT1DdChlLCI8IS0tIiwiLS0+Iik7dmFyIGk9ZS5tYXRjaCgvPHRhYmxlL2kpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+Iik7dmFyIGY9ZS5tYXRjaCgvPFwvdGFibGUvaSkscz1pLmluZGV4LGM9ZiYmZi5pbmRleHx8ZS5sZW5ndGgsbz16YyhlLnNsaWNlKHMsYyksLyg6Pzx0cltePD5dKj4pL2ksIjx0cj4iKSxsPS0xLHU9MCx4PTAsaD0wLGc9e3M6e3I6MWU3LGM6MWU3fSxlOntyOjAsYzowfX0sbT1bXTtmb3Iocz0wO3M8by5sZW5ndGg7KytzKXt2YXIgZD1vW3NdLnRyaW0oKSxwPWQuc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO2lmKHA9PSI8dHIiKXtpZigrK2wsci5zaGVldFJvd3MmJnIuc2hlZXRSb3dzPD1sKXstLWw7YnJlYWt9dT0wO2NvbnRpbnVlfWlmKCEocCE9Ijx0ZCImJnAhPSI8dGgiKSl7dmFyIHc9ZC5zcGxpdCgvPFwvdFtkaF0+L2kpO2ZvcihjPTA7Yzx3Lmxlbmd0aDsrK2Mpe3ZhciBfPXdbY10udHJpbSgpO2lmKF8ubWF0Y2goLzx0W2RoXS9pKSl7Zm9yKHZhciB5PV8sUj0wO3kuY2hhckF0KDApPT0iPCImJihSPXkuaW5kZXhPZigiPiIpKT4tMTspeT15LnNsaWNlKFIrMSk7Zm9yKHZhciBQPTA7UDxtLmxlbmd0aDsrK1Ape3ZhciBiPW1bUF07Yi5zLmM9PXUmJmIucy5yPGwmJmw8PWIuZS5yJiYodT1iLmUuYysxLFA9LTEpfXZhciBOPW9lKF8uc2xpY2UoMCxfLmluZGV4T2YoIj4iKSkpO2g9Ti5jb2xzcGFuPytOLmNvbHNwYW46MSwoKHg9K04ucm93c3Bhbik+MXx8aD4xKSYmbS5wdXNoKHtzOntyOmwsYzp1fSxlOntyOmwrKHh8fDEpLTEsYzp1K2gtMX19KTt2YXIgST1OLnR8fE5bImRhdGEtdCJdfHwiIjtpZigheS5sZW5ndGgpe3UrPWg7Y29udGludWV9aWYoeT1DaSh5KSxnLnMucj5sJiYoZy5zLnI9bCksZy5lLnI8bCYmKGcuZS5yPWwpLGcucy5jPnUmJihnLnMuYz11KSxnLmUuYzx1JiYoZy5lLmM9dSksIXkubGVuZ3RoKXt1Kz1oO2NvbnRpbnVlfXZhciBCPXt0OiJzIix2Onl9O3IucmF3fHwheS50cmltKCkubGVuZ3RofHxJPT0icyJ8fCh5PT09IlRSVUUiP0I9e3Q6ImIiLHY6ITB9Onk9PT0iRkFMU0UiP0I9e3Q6ImIiLHY6ITF9OmlzTmFOKE9yKHkpKT9pc05hTihTdCh5KS5nZXREYXRlKCkpP3kuY2hhckNvZGVBdCgwKT09MzUmJmRyW3ldIT1udWxsJiYoQi50PSJlIixCLnc9eSxCLnY9ZHJbeV0pOihCPXt0OiJkIix2OnhyKHkpfSxyLlVUQz09PSExJiYoQi52PVVhKEIudikpLHIuY2VsbERhdGVzfHwoQj17dDoibiIsdjpvcihCLnYpfSksQi56PXIuZGF0ZU5GfHxUZVsxNF0pOkI9e3Q6Im4iLHY6T3IoeSl9KSxCLmNlbGxUZXh0IT09ITEmJihCLnc9eSksdD8oblsiIWRhdGEiXVtsXXx8KG5bIiFkYXRhIl1bbF09W10pLG5bIiFkYXRhIl1bbF1bdV09Qik6bltEZSh7cjpsLGM6dX0pXT1CLHUrPWh9fX19cmV0dXJuIG5bIiFyZWYiXT1JZShnKSxtLmxlbmd0aCYmKG5bIiFtZXJnZXMiXT1tKSxufWZ1bmN0aW9uIGYyKGUpe3JldHVybiBhbyhTdHJpbmcoZSkucmVwbGFjZSgvIi9nLCInIikpfWZ1bmN0aW9uIEt0KGUpe3JldHVybiBlJiZlLnJnYj8iIyIrU3RyaW5nKGUucmdiKS5zbGljZSgtNik6IiJ9ZnVuY3Rpb24gYzIoZSl7cmV0dXJuIGU/IiciK2YyKGUpLnJlcGxhY2UoLycvZywiXFwnIikrIiciOiIifWZ1bmN0aW9uIG8yKGUpe3N3aXRjaChlKXtjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmNhc2UibWVkaXVtRGFzaGVkIjpyZXR1cm4iZGFzaGVkIjtjYXNlImRvdHRlZCI6Y2FzZSJoYWlyIjpyZXR1cm4iZG90dGVkIjtjYXNlImRvdWJsZSI6cmV0dXJuImRvdWJsZSI7Y2FzZSJub25lIjpyZXR1cm4ibm9uZSI7ZGVmYXVsdDpyZXR1cm4ic29saWQifX1mdW5jdGlvbiBsMihlKXtzd2l0Y2goZSl7Y2FzZSJtZWRpdW0iOmNhc2UibWVkaXVtRGFzaERvdCI6Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpjYXNlIm1lZGl1bURhc2hlZCI6cmV0dXJuIjJweCI7Y2FzZSJ0aGljayI6cmV0dXJuIjNweCI7Y2FzZSJoYWlyIjpyZXR1cm4iMXB4IjtkZWZhdWx0OnJldHVybiIxcHgifX1mdW5jdGlvbiBEMChlLGEscil7aWYoISghcnx8IXIuc3R5bGV8fHIuc3R5bGU9PSJub25lIikpe3ZhciB0PUt0KHIuY29sb3IpfHwiIzAwMDAwMCI7ZS5wdXNoKCJib3JkZXItIithKyI6IitsMihyLnN0eWxlKSsiICIrbzIoci5zdHlsZSkrIiAiK3QpfX1mdW5jdGlvbiB1MihlLGEpe2lmKCFhfHwhYS5jZWxsU3R5bGVzfHwhZXx8IWUucylyZXR1cm4iIjt2YXIgcj1lLnMsdD1bXSxuPXIuZm9udHx8e307bi5uYW1lJiZ0LnB1c2goImZvbnQtZmFtaWx5OiIrYzIobi5uYW1lKSksbi5zeiYmdC5wdXNoKCJmb250LXNpemU6IituLnN6KyJwdCIpLG4uYm9sZCYmdC5wdXNoKCJmb250LXdlaWdodDpib2xkIiksbi5pdGFsaWMmJnQucHVzaCgiZm9udC1zdHlsZTppdGFsaWMiKTt2YXIgaT1bXTtuLnVuZGVybGluZSYmaS5wdXNoKCJ1bmRlcmxpbmUiKSxuLnN0cmlrZSYmaS5wdXNoKCJsaW5lLXRocm91Z2giKSxpLmxlbmd0aCYmdC5wdXNoKCJ0ZXh0LWRlY29yYXRpb246IitpLmpvaW4oIiAiKSksbi5jb2xvciYmS3Qobi5jb2xvcikmJnQucHVzaCgiY29sb3I6IitLdChuLmNvbG9yKSk7dmFyIGY9ci5maWxsfHxyLHM9IiI7Zi5wYXR0ZXJuVHlwZSE9Im5vbmUiJiZmLnBhdHRlcm5UeXBlIT0iZ3JheTEyNSImJihzPUt0KGYuZmdDb2xvcil8fEt0KGYuYmdDb2xvcikpLHMmJnQucHVzaCgiYmFja2dyb3VuZC1jb2xvcjoiK3MpO3ZhciBjPXIuYWxpZ25tZW50fHx7fTtpZihjLmhvcml6b250YWwmJnQucHVzaCgidGV4dC1hbGlnbjoiK2MuaG9yaXpvbnRhbCksYy52ZXJ0aWNhbCYmdC5wdXNoKCJ2ZXJ0aWNhbC1hbGlnbjoiK2MudmVydGljYWwpLGMudGV4dFJvdGF0aW9uIT1udWxsJiZjLnRleHRSb3RhdGlvbiE9PTApe3ZhciBvPWMudGV4dFJvdGF0aW9uPT0yNTU/OTA6Yy50ZXh0Um90YXRpb24+OTA/OTAtYy50ZXh0Um90YXRpb246Yy50ZXh0Um90YXRpb247dC5wdXNoKCJ0cmFuc2Zvcm06cm90YXRlKCIrbysiZGVnKSIpLHQucHVzaCgidHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIiKX12YXIgbD1yLmJvcmRlcnx8e307cmV0dXJuIEQwKHQsImxlZnQiLGwubGVmdHx8bC5zdGFydCksRDAodCwicmlnaHQiLGwucmlnaHR8fGwuZW5kKSxEMCh0LCJ0b3AiLGwudG9wKSxEMCh0LCJib3R0b20iLGwuYm90dG9tKSx0LmpvaW4oIjsiKX1mdW5jdGlvbiBoMihlLGEscix0LG4pe2lmKCFhfHwhZSlyZXR1cm4iIjt2YXIgaT1lLnN8fHt9LGY9aS5hbGlnbm1lbnR8fHt9LHM9W107aWYoKGEuYnJvd3NlclBpeGVsc3x8YS5hdXRvRml0KSYmcy5wdXNoKCJib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowIDJweDttaW4td2lkdGg6MCIpLGYud3JhcFRleHQ/cy5wdXNoKCJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDtvdmVyZmxvdy13cmFwOm5vcm1hbDt3b3JkLWJyZWFrOm5vcm1hbCIpOihzLnB1c2goIndoaXRlLXNwYWNlOnByZSIpLGYuc2hyaW5rVG9GaXR8fGEub3ZlcmZsb3c9PSJjbGlwInx8YS5vdmVyZmxvdz09ImhpZGRlbiI/cy5wdXNoKCJvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzpjbGlwIik6cy5wdXNoKCJvdmVyZmxvdzp2aXNpYmxlIikpLGYuc2hyaW5rVG9GaXQmJm4mJnIhPW51bGwpe2Zvcih2YXIgYz0wLG89dHx8MSxsPTA7bDxvOysrbCljKz1SMChuW3IrbF0pO3ZhciB1PVVzKGUsaSxhKTtpZihjPjAmJnU+Yyl7dmFyIHg9TWF0aC5tYXgoLjI1LE1hdGgubWluKDEsYy91KSk7cy5wdXNoKCJmb250LXNpemU6IitNYXRoLm1heCgxLEJ0KGkpKngpKyJwdCIpfX1yZXR1cm4gcy5qb2luKCI7Iil9ZnVuY3Rpb24gUjAoZSl7cmV0dXJuIFBzKGUpfWZ1bmN0aW9uIGJuKGUpe3JldHVybiBlP2UuaHB4IT1udWxsP2UuaHB4OmUuaHB0IT1udWxsP0h0KGUuaHB0KToyMDoyMH1mdW5jdGlvbiB4MihlLGEscix0KXtmb3IodmFyIG49ZVsiIW1lcmdlcyJdfHxbXSxpPVtdLGY9e30scz1lWyIhZGF0YSJdIT1udWxsLGM9KGVbIiFyb3dzIl18fFtdKVtyXSxvPXQmJnQuX2h0bWxDb2xzfHxlWyIhY29scyJdfHxbXSxsPWEucy5jO2w8PWEuZS5jOysrbCl7Zm9yKHZhciB1PTAseD0wLGg9MDtoPG4ubGVuZ3RoOysraClpZighKG5baF0ucy5yPnJ8fG5baF0ucy5jPmwpJiYhKG5baF0uZS5yPHJ8fG5baF0uZS5jPGwpKXtpZihuW2hdLnMucjxyfHxuW2hdLnMuYzxsKXt1PS0xO2JyZWFrfXU9bltoXS5lLnItbltoXS5zLnIrMSx4PW5baF0uZS5jLW5baF0ucy5jKzE7YnJlYWt9aWYoISh1PDApKXt2YXIgZz1IZShsKStHZShyKSxtPXM/KGVbIiFkYXRhIl1bcl18fFtdKVtsXTplW2ddLGQ9bTtpZihtJiZtLnQ9PSJuIiYmbS52IT1udWxsJiYhaXNGaW5pdGUobS52KSYmKGlzTmFOKG0udik/bT17dDoiZSIsdjozNix3OmJyWzM2XX06bT17dDoiZSIsdjo3LHc6YnJbN119LGQ9bSksdC5jZWxsU3R5bGVzKXt2YXIgcD17fTtvW2xdJiZvW2xdLnMmJmthKHAsb1tsXS5zKSxjJiZjLnMmJmthKHAsYy5zKSxtJiZtLnMmJmthKHAsbS5zKSxwcihwKS5sZW5ndGgmJihkPW0/VWUobSk6e3Q6InoifSxkLnM9cCl9dmFyIHc9bSYmbS52IT1udWxsJiYobS5ofHx4YShtLnd8fChnYShtKSxtLncpfHwiIikpfHwiIjtmPXt9LHU+MSYmKGYucm93c3Bhbj11KSx4PjEmJihmLmNvbHNwYW49eCksdC5lZGl0YWJsZT93PSc8c3BhbiBjb250ZW50ZWRpdGFibGU9InRydWUiPicrdysiPC9zcGFuPiI6bSYmKGZbImRhdGEtdCJdPW0mJm0udHx8InoiLG0udiE9bnVsbCYmKGZbImRhdGEtdiJdPXhhKG0udiBpbnN0YW5jZW9mIERhdGU/bS52LnRvSVNPU3RyaW5nKCk6bS52KSksbS56IT1udWxsJiYoZlsiZGF0YS16Il09bS56KSxtLmYhPW51bGwmJihmWyJkYXRhLWYiXT14YShtLmYpKSxtLmwmJihtLmwuVGFyZ2V0fHwiIyIpLmNoYXJBdCgwKSE9IiMiJiYoIXQuc2FuaXRpemVMaW5rc3x8KG0ubC5UYXJnZXR8fCIiKS5zbGljZSgwLDExKS50b0xvd2VyQ2FzZSgpIT0iamF2YXNjcmlwdDoiKSYmKHc9JzxhIGhyZWY9IicreGEobS5sLlRhcmdldCkrJyI+Jyt3KyI8L2E+IikpO3ZhciBfPXUyKGQsdCkseT1oMihkLHQsbCx4LG8pO3kmJihfPV8/XysiOyIreTp5KSxfJiYoZi5zdHlsZT1fKSxmLmlkPSh0LmlkfHwic2pzIikrIi0iK2csaS5wdXNoKHUwKCJ0ZCIsdyxmKSl9fXZhciBSPXt9LFA9W107cmV0dXJuIGMmJihjLmhpZGRlbiYmUC5wdXNoKCJkaXNwbGF5Om5vbmUiKSx0LmJyb3dzZXJQaXhlbHMmJlAucHVzaCgiaGVpZ2h0OiIrYm4oYykrInB4IikpLFAubGVuZ3RoJiYoUi5zdHlsZT1QLmpvaW4oIjsiKSksdTAoInRyIixpLmpvaW4oIiIpLFIpfXZhciBkMj0nPGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiLz48dGl0bGU+U2hlZXRKUyBUYWJsZSBFeHBvcnQ8L3RpdGxlPjwvaGVhZD48Ym9keT4nLHYyPSI8L2JvZHk+PC9odG1sPiI7ZnVuY3Rpb24gcDIoZSxhKXt2YXIgcj1qYyhlLCJ0YWJsZSIpO2lmKCFyfHxyLmxlbmd0aD09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgSFRNTDogY291bGQgbm90IGZpbmQgPHRhYmxlPiIpO2lmKHIubGVuZ3RoPT0xKXt2YXIgdD1DYShBZihyWzBdLGEpLGEpO3JldHVybiB0LmJvb2tUeXBlPSJodG1sIix0fXZhciBuPU1uKCk7cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihpLGYpe1p0KG4sQWYoaSxhKSwiU2hlZXQiKyhmKzEpKX0pLG4uYm9va1R5cGU9Imh0bWwiLG59dmFyIGR0PTk1MjU7ZnVuY3Rpb24geWYoZSxhLHIpe2Zvcih2YXIgdD17bGVmdDowLHRvcDowLHdpZHRoOjQ4MCxoZWlnaHQ6Mjg4fSxuPXImJnIuX2h0bWxDb2xzfHxlWyIhY29scyJdfHxbXSxpPWVbIiFyb3dzIl18fFtdLGY9YSYmYS5mcm9tfHx7Y29sOjAscm93OjAsY29sT2ZmOjAscm93T2ZmOjB9LHM9YSYmYS50byxjPTA7YzwoZi5jb2x8fDApOysrYyl0LmxlZnQrPVIwKG5bY10pO2Zvcih2YXIgbz0wO288KGYucm93fHwwKTsrK28pdC50b3ArPWJuKGlbb10pO2lmKHQubGVmdCs9KGYuY29sT2ZmfHwwKS9kdCx0LnRvcCs9KGYucm93T2ZmfHwwKS9kdCxzKXt2YXIgbD0wLHU9MDtmb3IoYz0wO2M8KHMuY29sfHwwKTsrK2MpbCs9UjAobltjXSk7Zm9yKG89MDtvPChzLnJvd3x8MCk7KytvKXUrPWJuKGlbb10pO2wrPShzLmNvbE9mZnx8MCkvZHQsdSs9KHMucm93T2ZmfHwwKS9kdCx0LndpZHRoPU1hdGgubWF4KDEsbC10LmxlZnQpLHQuaGVpZ2h0PU1hdGgubWF4KDEsdS10LnRvcCl9ZWxzZSBhJiZhLmV4dCYmKGEuZXh0LmN4JiYodC53aWR0aD1hLmV4dC5jeC9kdCksYS5leHQuY3kmJih0LmhlaWdodD1hLmV4dC5jeS9kdCkpO3JldHVybiB0fWZ1bmN0aW9uIFNmKGUpe3JldHVybiJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OiIrTWF0aC5yb3VuZChlLmxlZnQpKyJweDt0b3A6IitNYXRoLnJvdW5kKGUudG9wKSsicHg7d2lkdGg6IitNYXRoLnJvdW5kKGUud2lkdGgpKyJweDtoZWlnaHQ6IitNYXRoLnJvdW5kKGUuaGVpZ2h0KSsicHgifWZ1bmN0aW9uIE8wKGUpe3JldHVybiBlP2UudmFsJiZlLnZhbC52YWx1ZXM/ZS52YWwudmFsdWVzOmUueVZhbCYmZS55VmFsLnZhbHVlcz9lLnlWYWwudmFsdWVzOmUuZGF0YSYmZS5kYXRhLmxlbmd0aD9lLmRhdGE6W106W119ZnVuY3Rpb24gZzIoZSl7cmV0dXJuIGU/ZS5jYXQmJmUuY2F0LnZhbHVlcz9lLmNhdC52YWx1ZXM6ZS54VmFsJiZlLnhWYWwudmFsdWVzP2UueFZhbC52YWx1ZXM6W106W119ZnVuY3Rpb24gbTIoZSxhLHIpe3ZhciB0PWUmJihlLm1vZGVsfHxlWyIhY2hhcnQiXXx8ZSk7aWYoIXQpcmV0dXJuIiI7dmFyIG49dC5zZXJpZXN8fFtdLGk9KHQudHlwZXx8IiIpLnJlcGxhY2UoL0NoYXJ0JC8sIiIpLGY9TWF0aC5tYXgoMTYwLE1hdGgucm91bmQoYXx8NDgwKSkscz1NYXRoLm1heCgxMjAsTWF0aC5yb3VuZChyfHwyODgpKSxjPXQudGl0bGV8fGUudGl0bGV8fCIiLG89WyIjNEY4MUJEIiwiI0MwNTA0RCIsIiM5QkJCNTkiLCIjODA2NEEyIiwiIzRCQUNDNiIsIiNGNzk2NDYiXSxsPVsnPHN2ZyBjbGFzcz0ic2pzLWNoYXJ0LXN2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iJytmKyciIGhlaWdodD0iJytzKyciIHZpZXdCb3g9IjAgMCAnK2YrIiAiK3MrJyI+J107bC5wdXNoKCc8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iJytmKyciIGhlaWdodD0iJytzKyciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2QwZDdkZSIvPicpLGMmJmwucHVzaCgnPHRleHQgeD0iJytmLzIrJyIgeT0iMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCI+Jyt4YShjKSsiPC90ZXh0PiIpO3ZhciB1PWM/MzQ6MTYseD00MixoPTE0LGc9MjgsbT1mLXgtaCxkPXMtdS1nLHA9W107bi5mb3JFYWNoKGZ1bmN0aW9uKGllKXtPMChpZSkuZm9yRWFjaChmdW5jdGlvbihuZSl7dHlwZW9mIG5lPT0ibnVtYmVyIiYmaXNGaW5pdGUobmUpJiZwLnB1c2gobmUpfSl9KTt2YXIgdz1NYXRoLm1heC5hcHBseShNYXRoLHAuY29uY2F0KFswXSkpLF89TWF0aC5taW4uYXBwbHkoTWF0aCxwLmNvbmNhdChbMF0pKTtpZihfPjAmJihfPTApLHc9PV8mJih3PV8rMSksbC5wdXNoKCc8bGluZSB4MT0iJyt4KyciIHkxPSInKyh1K2QpKyciIHgyPSInKyh4K20pKyciIHkyPSInKyh1K2QpKyciIHN0cm9rZT0iIzQ0NCIvPicpLGwucHVzaCgnPGxpbmUgeDE9IicreCsnIiB5MT0iJyt1KyciIHgyPSInK3grJyIgeTI9IicrKHUrZCkrJyIgc3Ryb2tlPSIjNDQ0Ii8+JyksaT09InBpZSJ8fGk9PSJkb3VnaG51dCIpe3ZhciB5PU8wKG5bMF18fHt9KSxSPXkucmVkdWNlKGZ1bmN0aW9uKGllLG5lKXtyZXR1cm4gaWUrKHR5cGVvZiBuZT09Im51bWJlciI/TWF0aC5tYXgoMCxuZSk6MCl9LDApfHwxLFA9Zi8yLGI9dStkLzIsTj1NYXRoLm1heCgxMCxNYXRoLm1pbihtLGQpLzItOCksST0tTWF0aC5QSS8yO3JldHVybiB5LmZvckVhY2goZnVuY3Rpb24oaWUsbmUpe3ZhciBxPUkrTWF0aC5tYXgoMCwraWV8fDApL1IqTWF0aC5QSSoyLGxlPVArTipNYXRoLmNvcyhJKSxRPWIrTipNYXRoLnNpbihJKSxnZT1QK04qTWF0aC5jb3MocSksdWU9YitOKk1hdGguc2luKHEpLGo9cS1JPk1hdGguUEk/MTowO2wucHVzaCgnPHBhdGggZD0iTScrUCsiLCIrYisiIEwiK2xlKyIsIitRKyIgQSIrTisiLCIrTisiIDAgIitqKyIsMSAiK2dlKyIsIit1ZSsnIFoiIGZpbGw9Iicrb1tuZSVvLmxlbmd0aF0rJyIvPicpLEk9cX0pLGk9PSJkb3VnaG51dCImJmwucHVzaCgnPGNpcmNsZSBjeD0iJytQKyciIGN5PSInK2IrJyIgcj0iJytOKi40NSsnIiBmaWxsPSIjZmZmIi8+JyksbC5wdXNoKCI8L3N2Zz4iKSxsLmpvaW4oIiIpfXZhciBCPTA7aWYobi5mb3JFYWNoKGZ1bmN0aW9uKGllKXtCPU1hdGgubWF4KEIsTzAoaWUpLmxlbmd0aCl9KSwhQilyZXR1cm4gbC5wdXNoKCI8L3N2Zz4iKSxsLmpvaW4oIiIpO3ZhciBMPW0vQjtuLmZvckVhY2goZnVuY3Rpb24oaWUsbmUpe3ZhciBxPU8wKGllKSxsZT1vW25lJW8ubGVuZ3RoXTtpZihpPT0ibGluZSJ8fGk9PSJzY2F0dGVyInx8aT09ImFyZWEiKXt2YXIgUT1bXTtxLmZvckVhY2goZnVuY3Rpb24odWUsail7aWYoISh0eXBlb2YgdWUhPSJudW1iZXIifHwhaXNGaW5pdGUodWUpKSl7dmFyIHllPXgrTCooaisuNSksYmU9dStkLSh1ZS1fKS8ody1fKSpkO1EucHVzaChbeWUsYmVdKX19KSxpPT0iYXJlYSImJlEubGVuZ3RoJiZsLnB1c2goJzxwb2x5Z29uIHBvaW50cz0iJytbW1FbMF1bMF0sdStkXV0uY29uY2F0KFEpLmNvbmNhdChbW1FbUS5sZW5ndGgtMV1bMF0sdStkXV0pLm1hcChmdW5jdGlvbih1ZSl7cmV0dXJuIHVlWzBdKyIsIit1ZVsxXX0pLmpvaW4oIiAiKSsnIiBmaWxsPSInK2xlKyciIG9wYWNpdHk9IjAuMzUiLz4nKSxRLmxlbmd0aCYmbC5wdXNoKCc8cG9seWxpbmUgcG9pbnRzPSInK1EubWFwKGZ1bmN0aW9uKHVlKXtyZXR1cm4gdWVbMF0rIiwiK3VlWzFdfSkuam9pbigiICIpKyciIGZpbGw9Im5vbmUiIHN0cm9rZT0iJytsZSsnIiBzdHJva2Utd2lkdGg9IjIiLz4nKSxRLmZvckVhY2goZnVuY3Rpb24odWUpe2wucHVzaCgnPGNpcmNsZSBjeD0iJyt1ZVswXSsnIiBjeT0iJyt1ZVsxXSsnIiByPSIyLjUiIGZpbGw9IicrbGUrJyIvPicpfSl9ZWxzZXt2YXIgZ2U9TWF0aC5tYXgoMSxML01hdGgubWF4KG4ubGVuZ3RoLDEpKi43Mik7cS5mb3JFYWNoKGZ1bmN0aW9uKHVlLGope2lmKCEodHlwZW9mIHVlIT0ibnVtYmVyInx8IWlzRmluaXRlKHVlKSkpe3ZhciB5ZT14K0wqaisoTC1nZSpuLmxlbmd0aCkvMitnZSpuZSxiZT11K2QtKHVlLV8pLyh3LV8pKmQsbWU9dStkLSgwLV8pLyh3LV8pKmQ7bC5wdXNoKCc8cmVjdCB4PSInK3llKyciIHk9IicrTWF0aC5taW4oYmUsbWUpKyciIHdpZHRoPSInK2dlKyciIGhlaWdodD0iJytNYXRoLm1heCgxLE1hdGguYWJzKG1lLWJlKSkrJyIgZmlsbD0iJytsZSsnIi8+Jyl9fSl9aWUubmFtZSYmbC5wdXNoKCc8dGV4dCB4PSInKyh4KzgpKyciIHk9IicrKHUrMTQrbmUqMTQpKyciIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMSIgZmlsbD0iJytsZSsnIj4nK3hhKGllLm5hbWUpKyI8L3RleHQ+Iil9KTt2YXIgRz1nMihuWzBdfHx7fSk7cmV0dXJuIEcuc2xpY2UoMCxNYXRoLm1pbihHLmxlbmd0aCxCKSkuZm9yRWFjaChmdW5jdGlvbihpZSxuZSl7bmUlTWF0aC5jZWlsKEIvOCk9PTAmJmwucHVzaCgnPHRleHQgeD0iJysoeCtMKihuZSsuNSkpKyciIHk9IicrKHUrZCsxNikrJyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEwIj4nK3hhKFN0cmluZyhpZSkpKyI8L3RleHQ+Iil9KSxsLnB1c2goIjwvc3ZnPiIpLGwuam9pbigiIil9ZnVuY3Rpb24gXzIoZSxhKXt2YXIgcj1bXSx0PWVbIiFkcmF3aW5ncyJdfHx7fSxuPWVbIiFjaGFydHMiXXx8W107cmV0dXJuIGEmJmEuZHJhd2luZ3MmJnQuaW1hZ2VzJiZ0LmltYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKCEoIWl8fCFpLmRhdGFVUkkpKXt2YXIgZj15ZihlLGkuYW5jaG9yLGEpO3IucHVzaCgnPGltZyBjbGFzcz0ic2pzLWRyYXdpbmctaW1hZ2UiIHNyYz0iJytpLmRhdGFVUkkrJyIgc3R5bGU9IicrU2YoZikrJyIvPicpfX0pLGEmJmEuY2hhcnRzJiZuLmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIGY9eWYoZSxpLmFuY2hvcixhKTtyLnB1c2goJzxkaXYgY2xhc3M9InNqcy1jaGFydCIgc3R5bGU9IicrU2YoZikrJyI+JyttMihpLGYud2lkdGgsZi5oZWlnaHQpKyI8L2Rpdj4iKX0pLHIubGVuZ3RoPyc8ZGl2IGNsYXNzPSJzanMtZHJhd2luZy1sYXllciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtwb2ludGVyLWV2ZW50czpub25lIj4nK3Iuam9pbigiIikrIjwvZGl2PiI6IiJ9ZnVuY3Rpb24gazIoZSxhLHIpe3ZhciB0PVtdLG49e30saT1bXTtyJiZyLmlkJiYobi5pZD1yLmlkKSxyJiYoci5icm93c2VyUGl4ZWxzfHxyLmF1dG9GaXQpJiZpLnB1c2goImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt0YWJsZS1sYXlvdXQ6Zml4ZWQiKSxpLmxlbmd0aCYmKG4uc3R5bGU9aS5qb2luKCI7IikpO3ZhciBmPXUwKCJ0YWJsZSIsIiIsbikucmVwbGFjZSgvPFwvdGFibGU+JC8sIiIpLHM9ciYmci5faHRtbENvbHN8fGVbIiFjb2xzIl07aWYociYmKHIuYnJvd3NlclBpeGVsc3x8ci5hdXRvRml0KSYmcyl7dC5wdXNoKCI8Y29sZ3JvdXA+Iik7Zm9yKHZhciBjPWEucy5jO2M8PWEuZS5jOysrYyl7dmFyIG89c1tjXSxsPVtdO2wucHVzaCgid2lkdGg6IitSMChvKSsicHgiKSxvJiZvLmhpZGRlbiYmbC5wdXNoKCJkaXNwbGF5Om5vbmUiKSx0LnB1c2godTAoImNvbCIsbnVsbCx7c3R5bGU6bC5qb2luKCI7Iil9KSl9dC5wdXNoKCI8L2NvbGdyb3VwPiIpfXJldHVybiBmK3Quam9pbigiIil9ZnVuY3Rpb24gdzIoZSxhKXt2YXIgcj17fTtpZihhKWZvcih2YXIgdCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHQpJiYoclt0XT1hW3RdKTtpZihyLmF1dG9GaXQpe3ZhciBuPXtzZXQ6ITF9O2lmKHR5cGVvZiByLmF1dG9GaXQ9PSJvYmplY3QiKWZvcih0IGluIHIuYXV0b0ZpdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoci5hdXRvRml0LHQpJiYoblt0XT1yLmF1dG9GaXRbdF0pO3IubWVhc3VyZVRleHQmJm4ubWVhc3VyZVRleHQ9PW51bGwmJihuLm1lYXN1cmVUZXh0PXIubWVhc3VyZVRleHQpLHIuY2FudmFzJiZuLmNhbnZhcz09bnVsbCYmKG4uY2FudmFzPXIuY2FudmFzKSxyLl9odG1sQ29scz1nbihlLG4pLHIuYnJvd3NlclBpeGVscz09bnVsbCYmKHIuYnJvd3NlclBpeGVscz0hMCl9dmFyIGk9ci5oZWFkZXIhPW51bGw/ci5oZWFkZXI6ZDIsZj1yLmZvb3RlciE9bnVsbD9yLmZvb3Rlcjp2MixzPVtpXSxjPXBhKGVbIiFyZWYiXXx8IkExIiksbz1yLmNoYXJ0cyYmZVsiIWNoYXJ0cyJdJiZlWyIhY2hhcnRzIl0ubGVuZ3RofHxyLmRyYXdpbmdzJiZlWyIhZHJhd2luZ3MiXTtpZihvJiZzLnB1c2goJzxkaXYgY2xhc3M9InNqcy1zaGVldCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrIj4nKSxzLnB1c2goazIoZSxjLHIpKSxlWyIhcmVmIl0pZm9yKHZhciBsPWMucy5yO2w8PWMuZS5yOysrbClzLnB1c2goeDIoZSxjLGwscikpO3JldHVybiBvPyhzLnB1c2goIjwvdGFibGU+Iikscy5wdXNoKF8yKGUscikpLHMucHVzaCgiPC9kaXY+Iikscy5wdXNoKGYpKTpzLnB1c2goIjwvdGFibGU+IitmKSxzLmpvaW4oIiIpfWZ1bmN0aW9uIENmKGUsYSxyKXt2YXIgdD1yfHx7fSxuPWVbIiFkYXRhIl0hPW51bGwsaT0wLGY9MDtpZih0Lm9yaWdpbiE9bnVsbClpZih0eXBlb2YgdC5vcmlnaW49PSJudW1iZXIiKWk9dC5vcmlnaW47ZWxzZXt2YXIgcz10eXBlb2YgdC5vcmlnaW49PSJzdHJpbmciP2dyKHQub3JpZ2luKTp0Lm9yaWdpbjtpPXMucixmPXMuY312YXIgYz17czp7cjowLGM6MH0sZTp7cjppLGM6Zn19O2lmKGVbIiFyZWYiXSl7dmFyIG89cGEoZVsiIXJlZiJdKTtjLnMucj1NYXRoLm1pbihjLnMucixvLnMuciksYy5zLmM9TWF0aC5taW4oYy5zLmMsby5zLmMpLGMuZS5yPU1hdGgubWF4KGMuZS5yLG8uZS5yKSxjLmUuYz1NYXRoLm1heChjLmUuYyxvLmUuYyksaT09LTEmJihjLmUucj1pPW8uZS5yKzEpfXZhciBsPWEucm93cztpZighbCl0aHJvdyJVbnN1cHBvcnRlZCBvcmlnaW4gd2hlbiAiK2EudGFnTmFtZSsiIGlzIG5vdCBhIFRBQkxFIjt2YXIgdT1NYXRoLm1pbih0LnNoZWV0Um93c3x8MWU3LGwubGVuZ3RoKSx4PVtdLGg9MCxnPWVbIiFyb3dzIl18fChlWyIhcm93cyJdPVtdKSxtPTAsZD0wLHA9MCx3PTAsXz0wLHk9MDtmb3IoZVsiIWNvbHMiXXx8KGVbIiFjb2xzIl09W10pO208bC5sZW5ndGgmJmQ8dTsrK20pe3ZhciBSPWxbbV07aWYoSWYoUikpe2lmKHQuZGlzcGxheSljb250aW51ZTtnW2RdPXtoaWRkZW46ITB9fXZhciBQPVIuY2VsbHM7Zm9yKHA9dz0wO3A8UC5sZW5ndGg7KytwKXt2YXIgYj1QW3BdO2lmKCEodC5kaXNwbGF5JiZJZihiKSkpe3ZhciBOPWIuaGFzQXR0cmlidXRlKCJkYXRhLXYiKT9iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik6Yi5oYXNBdHRyaWJ1dGUoInYiKT9iLmdldEF0dHJpYnV0ZSgidiIpOkNpKGIuaW5uZXJIVE1MKSxJPWIuZ2V0QXR0cmlidXRlKCJkYXRhLXoiKXx8Yi5nZXRBdHRyaWJ1dGUoInoiKSxCPWIuaGFzQXR0cmlidXRlKCJkYXRhLWYiKT9iLmdldEF0dHJpYnV0ZSgiZGF0YS1mIik6Yi5oYXNBdHRyaWJ1dGUoImYiKT9iLmdldEF0dHJpYnV0ZSgiZiIpOm51bGw7Zm9yKGg9MDtoPHgubGVuZ3RoOysraCl7dmFyIEw9eFtoXTtMLnMuYz09dytmJiZMLnMucjxkK2kmJmQraTw9TC5lLnImJih3PUwuZS5jKzEtZixoPS0xKX15PStiLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpfHwxLCgoXz0rYi5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKXx8MSk+MXx8eT4xKSYmeC5wdXNoKHtzOntyOmQraSxjOncrZn0sZTp7cjpkK2krKF98fDEpLTEsYzp3K2YrKHl8fDEpLTF9fSk7dmFyIEc9e3Q6InMiLHY6Tn0saWU9Yi5nZXRBdHRyaWJ1dGUoImRhdGEtdCIpfHxiLmdldEF0dHJpYnV0ZSgidCIpfHwiIjtOIT1udWxsJiYoTi5sZW5ndGg9PTA/Ry50PWllfHwieiI6dC5yYXd8fE4udHJpbSgpLmxlbmd0aD09MHx8aWU9PSJzInx8KGllPT0iZSImJmJyWytOXT9HPXt0OiJlIix2OitOLHc6YnJbK05dfTpOPT09IlRSVUUiP0c9e3Q6ImIiLHY6ITB9Ok49PT0iRkFMU0UiP0c9e3Q6ImIiLHY6ITF9OmlzTmFOKE9yKE4pKT9pc05hTihTdChOKS5nZXREYXRlKCkpP04uY2hhckNvZGVBdCgwKT09MzUmJmRyW05dIT1udWxsJiYoRz17dDoiZSIsdjpkcltOXSx3Ok59KTooRz17dDoiZCIsdjp4cihOKX0sdC5VVEMmJihHLnY9bzAoRy52KSksdC5jZWxsRGF0ZXN8fChHPXt0OiJuIix2Om9yKEcudil9KSxHLno9dC5kYXRlTkZ8fFRlWzE0XSk6Rz17dDoibiIsdjpPcihOKX0pKSxHLno9PT12b2lkIDAmJkkhPW51bGwmJihHLno9SSk7dmFyIG5lPSIiLHE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQSIpO2lmKHEmJnEubGVuZ3RoKWZvcih2YXIgbGU9MDtsZTxxLmxlbmd0aCYmIShxW2xlXS5oYXNBdHRyaWJ1dGUoImhyZWYiKSYmKG5lPXFbbGVdLmdldEF0dHJpYnV0ZSgiaHJlZiIpLG5lLmNoYXJBdCgwKSE9IiMiKSk7KytsZSk7bmUmJm5lLmNoYXJBdCgwKSE9IiMiJiZuZS5zbGljZSgwLDExKS50b0xvd2VyQ2FzZSgpIT0iamF2YXNjcmlwdDoiJiYoRy5sPXtUYXJnZXQ6bmV9KSxCIT1udWxsJiYoRy5mPUIpLG4/KGVbIiFkYXRhIl1bZCtpXXx8KGVbIiFkYXRhIl1bZCtpXT1bXSksZVsiIWRhdGEiXVtkK2ldW3crZl09Ryk6ZVtEZSh7Yzp3K2YscjpkK2l9KV09RyxjLmUuYzx3K2YmJihjLmUuYz13K2YpLHcrPXl9fSsrZH1yZXR1cm4geC5sZW5ndGgmJihlWyIhbWVyZ2VzIl09KGVbIiFtZXJnZXMiXXx8W10pLmNvbmNhdCh4KSksYy5lLnI9TWF0aC5tYXgoYy5lLnIsZC0xK2kpLGVbIiFyZWYiXT1JZShjKSxkPj11JiYoZVsiIWZ1bGxyZWYiXT1JZSgoYy5lLnI9bC5sZW5ndGgtbStkLTEraSxjKSkpLGV9ZnVuY3Rpb24gYmYoZSxhKXt2YXIgcj1hfHx7fSx0PXt9O3JldHVybiByLmRlbnNlJiYodFsiIWRhdGEiXT1bXSksQ2YodCxlLGEpfWZ1bmN0aW9uIEYyKGUsYSl7dmFyIHI9Q2EoYmYoZSxhKSxhKTtyZXR1cm4gcn1mdW5jdGlvbiBJZihlKXt2YXIgYT0iIixyPVQyKGUpO3JldHVybiByJiYoYT1yKGUpLmdldFByb3BlcnR5VmFsdWUoImRpc3BsYXkiKSksYXx8KGE9ZS5zdHlsZSYmZS5zdHlsZS5kaXNwbGF5KSxhPT09Im5vbmUifWZ1bmN0aW9uIFQyKGUpe3JldHVybiBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcmJnR5cGVvZiBlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZT09ImZ1bmN0aW9uIj9lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZTp0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZT09ImZ1bmN0aW9uIj9nZXRDb21wdXRlZFN0eWxlOm51bGx9ZnVuY3Rpb24gRTIoZSl7dmFyIGE9ZS5yZXBsYWNlKC9bXHRcclxuXS9nLCIgIikudHJpbSgpLnJlcGxhY2UoLyArL2csIiAiKS5yZXBsYWNlKC88dGV4dDpzXC8+L2csIiAiKS5yZXBsYWNlKC88dGV4dDpzIHRleHQ6Yz0iKFxkKykiXC8+L2csZnVuY3Rpb24odCxuKXtyZXR1cm4gQXJyYXkocGFyc2VJbnQobiwxMCkrMSkuam9pbigiICIpfSkucmVwbGFjZSgvPHRleHQ6dGFiW148Pl0qXC8+L2csIgkiKS5yZXBsYWNlKC88dGV4dDpsaW5lLWJyZWFrXC8+L2csYApgKSxyPUNlKGEucmVwbGFjZSgvPFtePD5dKj4vZywiIikpO3JldHVybltyXX1mdW5jdGlvbiBEZihlLGEscil7dmFyIHQ9cnx8e30sbj1oMChlKTtpci5sYXN0SW5kZXg9MCxuPVowKEN0KG4sIjwhLS0iLCItLT4iKSk7Zm9yKHZhciBpLGYscz0iIixjPSIiLG8sbD0wLHU9LTEseD0iIjtpPWlyLmV4ZWMobik7KXN3aXRjaChpWzNdPWlbM10ucmVwbGFjZSgvX1tcc1xTXSokLywiIikpe2Nhc2UibnVtYmVyLXN0eWxlIjpjYXNlImN1cnJlbmN5LXN0eWxlIjpjYXNlInBlcmNlbnRhZ2Utc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpjYXNlInRleHQtc3R5bGUiOmlbMV09PT0iLyI/KGZbInRydW5jYXRlLW9uLW92ZXJmbG93Il09PSJmYWxzZSImJihzLm1hdGNoKC9oLyk/cz1zLnJlcGxhY2UoL2grLywiWyQmXSIpOnMubWF0Y2goL20vKT9zPXMucmVwbGFjZSgvbSsvLCJbJCZdIik6cy5tYXRjaCgvcy8pJiYocz1zLnJlcGxhY2UoL3MrLywiWyQmXSIpKSksdFtmLm5hbWVdPXMscz0iIik6aVswXS5jaGFyQXQoaVswXS5sZW5ndGgtMikhPT0iLyImJihzPSIiLGY9b2UoaVswXSwhMSkpO2JyZWFrO2Nhc2UiYm9vbGVhbi1zdHlsZSI6aVsxXT09PSIvIj8odFtmLm5hbWVdPSJHZW5lcmFsIixzPSIiKTppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIiYmKHM9IiIsZj1vZShpWzBdLCExKSk7YnJlYWs7Y2FzZSJib29sZWFuIjpzKz0iR2VuZXJhbCI7YnJlYWs7Y2FzZSJ0ZXh0IjppWzFdPT09Ii8iPyh4PW4uc2xpY2UodSxpci5sYXN0SW5kZXgtaVswXS5sZW5ndGgpLHg9PSIlIiYmZlswXT09IjxudW1iZXI6cGVyY2VudGFnZS1zdHlsZSI/cys9IiUiOnMrPSciJyt4LnJlcGxhY2UoLyIvZywnIiInKSsnIicpOmlbMF0uY2hhckF0KGlbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1pci5sYXN0SW5kZXgpO2JyZWFrO2Nhc2UiZGF5Ijpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZCI7YnJlYWs7Y2FzZSJsb25nIjpzKz0iZGQiO2JyZWFrO2RlZmF1bHQ6cys9ImRkIjticmVha31icmVhaztjYXNlImRheS1vZi13ZWVrIjpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZGRkIjticmVhaztjYXNlImxvbmciOnMrPSJkZGRkIjticmVhaztkZWZhdWx0OnMrPSJkZGQiO2JyZWFrfWJyZWFrO2Nhc2UiZXJhIjpzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0iZWUiO2JyZWFrO2Nhc2UibG9uZyI6cys9ImVlZWUiO2JyZWFrO2RlZmF1bHQ6cys9ImVlZWUiO2JyZWFrfWJyZWFrO2Nhc2UiaG91cnMiOnN3aXRjaChvPW9lKGlbMF0sITEpLG8uc3R5bGUpe2Nhc2Uic2hvcnQiOnMrPSJoIjticmVhaztjYXNlImxvbmciOnMrPSJoaCI7YnJlYWs7ZGVmYXVsdDpzKz0iaGgiO2JyZWFrfWJyZWFrO2Nhc2UibWludXRlcyI6c3dpdGNoKG89b2UoaVswXSwhMSksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Im0iO2JyZWFrO2Nhc2UibG9uZyI6cys9Im1tIjticmVhaztkZWZhdWx0OnMrPSJtbSI7YnJlYWt9YnJlYWs7Y2FzZSJtb250aCI6c3dpdGNoKG89b2UoaVswXSwhMSksby50ZXh0dWFsJiYocys9Im1tIiksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Im0iO2JyZWFrO2Nhc2UibG9uZyI6cys9Im1tIjticmVhaztkZWZhdWx0OnMrPSJtIjticmVha31icmVhaztjYXNlInNlY29uZHMiOntzd2l0Y2gobz1vZShpWzBdLCExKSxvLnN0eWxlKXtjYXNlInNob3J0IjpzKz0icyI7YnJlYWs7Y2FzZSJsb25nIjpzKz0ic3MiO2JyZWFrO2RlZmF1bHQ6cys9InNzIjticmVha31vWyJkZWNpbWFsLXBsYWNlcyJdJiYocys9Ii4iK1BlKCIwIiwrb1siZGVjaW1hbC1wbGFjZXMiXSkpfWJyZWFrO2Nhc2UieWVhciI6c3dpdGNoKG89b2UoaVswXSwhMSksby5zdHlsZSl7Y2FzZSJzaG9ydCI6cys9Inl5IjticmVhaztjYXNlImxvbmciOnMrPSJ5eXl5IjticmVhaztkZWZhdWx0OnMrPSJ5eSI7YnJlYWt9YnJlYWs7Y2FzZSJhbS1wbSI6cys9IkFNL1BNIjticmVhaztjYXNlIndlZWstb2YteWVhciI6Y2FzZSJxdWFydGVyIjpjb25zb2xlLmVycm9yKCJFeGNlbCBkb2VzIG5vdCBzdXBwb3J0IE9EUyBmb3JtYXQgdG9rZW4gIitpWzNdKTticmVhaztjYXNlImZpbGwtY2hhcmFjdGVyIjppWzFdPT09Ii8iPyh4PW4uc2xpY2UodSxpci5sYXN0SW5kZXgtaVswXS5sZW5ndGgpLHMrPSciJyt4LnJlcGxhY2UoLyIvZywnIiInKSsnIionKTppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIiYmKHU9aXIubGFzdEluZGV4KTticmVhaztjYXNlInNjaWVudGlmaWMtbnVtYmVyIjpvPW9lKGlbMF0sITEpLHMrPSIwLiIrUGUoIjAiLCtvWyJtaW4tZGVjaW1hbC1wbGFjZXMiXXx8K29bImRlY2ltYWwtcGxhY2VzIl18fDIpK1BlKCI/Iiwrb1siZGVjaW1hbC1wbGFjZXMiXS0rb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApKyJFIisoRmUob1siZm9yY2VkLWV4cG9uZW50LXNpZ24iXSk/IisiOiIiKStQZSgiMCIsK29bIm1pbi1leHBvbmVudC1kaWdpdHMiXXx8Mik7YnJlYWs7Y2FzZSJmcmFjdGlvbiI6bz1vZShpWzBdLCExKSwrb1sibWluLWludGVnZXItZGlnaXRzIl0/cys9UGUoIjAiLCtvWyJtaW4taW50ZWdlci1kaWdpdHMiXSk6cys9IiMiLHMrPSIgIixzKz1QZSgiPyIsK29bIm1pbi1udW1lcmF0b3ItZGlnaXRzIl18fDEpLHMrPSIvIiwrb1siZGVub21pbmF0b3ItdmFsdWUiXT9zKz1vWyJkZW5vbWluYXRvci12YWx1ZSJdOnMrPVBlKCI/Iiwrb1sibWluLWRlbm9taW5hdG9yLWRpZ2l0cyJdfHwxKTticmVhaztjYXNlImN1cnJlbmN5LXN5bWJvbCI6aVsxXT09PSIvIj9zKz0nIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJzppWzBdLmNoYXJBdChpWzBdLmxlbmd0aC0yKSE9PSIvIj91PWlyLmxhc3RJbmRleDpzKz0iJCI7YnJlYWs7Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOnN3aXRjaChvPW9lKGlbMF0sITEpLChvLmNvbG9yfHwiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCIjIiwiIikpe2Nhc2UiZmYwMDAwIjpjYXNlInJlZCI6cz0iW1JlZF0iK3M7YnJlYWt9YnJlYWs7Y2FzZSJ0ZXh0LWNvbnRlbnQiOnMrPSJAIjticmVhaztjYXNlIm1hcCI6bz1vZShpWzBdLCExKSxDZShvLmNvbmRpdGlvbik9PSJ2YWx1ZSgpPj0wIj9zPXRbb1siYXBwbHktc3R5bGUtbmFtZSJdXSsiOyIrczphJiZhLldURiYmY29uc29sZS5lcnJvcigiT0RTIG51bWJlciBmb3JtYXQgbWF5IGJlIGluY29ycmVjdDogIitvLmNvbmRpdGlvbik7YnJlYWs7Y2FzZSJudW1iZXIiOmlmKGlbMV09PT0iLyIpYnJlYWs7bz1vZShpWzBdLCExKSxjPSIiLGMrPVBlKCIwIiwrb1sibWluLWludGVnZXItZGlnaXRzIl18fDEpLEZlKG8uZ3JvdXBpbmcpJiYoYz1vYShQZSgiIyIsTWF0aC5tYXgoMCw0LWMubGVuZ3RoKSkrYykpLCgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fCtvWyJkZWNpbWFsLXBsYWNlcyJdKSYmKGMrPSIuIiksK29bIm1pbi1kZWNpbWFsLXBsYWNlcyJdJiYoYys9UGUoIjAiLCtvWyJtaW4tZGVjaW1hbC1wbGFjZXMiXXx8MSkpLCtvWyJkZWNpbWFsLXBsYWNlcyJdLSgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApJiYoYys9UGUoIjAiLCtvWyJkZWNpbWFsLXBsYWNlcyJdLSgrb1sibWluLWRlY2ltYWwtcGxhY2VzIl18fDApKSkscys9YzticmVhaztjYXNlImVtYmVkZGVkLXRleHQiOmlbMV09PT0iLyI/bD09MD9zKz0nIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJzpzPXMuc2xpY2UoMCxsKSsnIicrbi5zbGljZSh1LGlyLmxhc3RJbmRleC1pWzBdLmxlbmd0aCkucmVwbGFjZSgvIi9nLCciIicpKyciJytzLnNsaWNlKGwpOmlbMF0uY2hhckF0KGlbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1pci5sYXN0SW5kZXgsbD0tK29lKGlbMF0sITEpLnBvc2l0aW9ufHwwKTticmVha31yZXR1cm4gdH1mdW5jdGlvbiBSZihlLGEscil7dmFyIHQ9YXx8e30sbj1oMChlKSxpPVtdLGYscyxjLG89IiIsbD0wLHUseCxoPXt9LGc9W10sbT17fTt0LmRlbnNlJiYobVsiIWRhdGEiXT1bXSk7dmFyIGQscCx3PXt2YWx1ZToiIn0sXz17fSx5PSIiLFI9MCxQPSIiLGI9MCxOPVtdLEk9W10sQj0tMSxMPS0xLEc9e3M6e3I6MWU2LGM6MWU3fSxlOntyOjAsYzowfX0saWU9MCxuZT1yfHx7fSxxPXt9LGxlPXt9LFE9W10sZ2U9e30sdWU9MCxqPTAseWU9W10sYmU9MSxtZT0xLFo9W10sT2U9e05hbWVzOltdLFdCUHJvcHM6e30sU2hlZXRzOltdfSx3ZT17fSxBZT1bIiIsIiJdLEE9W10sVT17fSxPPSIiLEQ9MCx6PSExLHBlPSExLEo9MDtmb3IoaXIubGFzdEluZGV4PTAsbj1aMChDdChuLCI8IS0tIiwiLS0+IikpO2Q9aXIuZXhlYyhuKTspc3dpdGNoKGRbM109ZFszXS5yZXBsYWNlKC9fW1xzXFNdKiQvLCIiKSl7Y2FzZSJ0YWJsZSI6Y2FzZSLlt6XkvZzooagiOmRbMV09PT0iLyI/KEcuZS5jPj1HLnMuYyYmRy5lLnI+PUcucy5yP21bIiFyZWYiXT1JZShHKTptWyIhcmVmIl09IkExOkExIix0LnNoZWV0Um93cz4wJiZ0LnNoZWV0Um93czw9Ry5lLnImJihtWyIhZnVsbHJlZiJdPW1bIiFyZWYiXSxHLmUucj10LnNoZWV0Um93cy0xLG1bIiFyZWYiXT1JZShHKSksUS5sZW5ndGgmJihtWyIhbWVyZ2VzIl09USkseWUubGVuZ3RoJiYobVsiIXJvd3MiXT15ZSksdS5uYW1lPXUu5ZCN56ewfHx1Lm5hbWUsdHlwZW9mIEpTT048InUiJiZKU09OLnN0cmluZ2lmeSh1KSxnLnB1c2godS5uYW1lKSxoW3UubmFtZV09bSxPZS5TaGVldHMucHVzaCh7SGlkZGVuOmxlW3VbInN0eWxlLW5hbWUiXV0mJmxlW3VbInN0eWxlLW5hbWUiXV0uZGlzcGxheT9GZShsZVt1WyJzdHlsZS1uYW1lIl1dLmRpc3BsYXkpPzA6MTowfSkscGU9ITEpOmRbMF0uY2hhckF0KGRbMF0ubGVuZ3RoLTIpIT09Ii8iJiYodT1vZShkWzBdLCExKSxCPUw9LTEsRy5zLnI9Ry5zLmM9MWU3LEcuZS5yPUcuZS5jPTAsbT17fSx0LmRlbnNlJiYobVsiIWRhdGEiXT1bXSksUT1bXSx5ZT1bXSxwZT0hMCk7YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctZ3JvdXAiOmRbMV09PT0iLyI/LS1pZTorK2llO2JyZWFrO2Nhc2UidGFibGUtcm93IjpjYXNlIuihjCI6aWYoZFsxXT09PSIvIil7Qis9YmUsYmU9MTticmVha31pZih4PW9lKGRbMF0sITEpLHgu6KGM5Y+3P0I9eC7ooYzlj7ctMTpCPT0tMSYmKEI9MCksYmU9K3hbIm51bWJlci1yb3dzLXJlcGVhdGVkIl18fDEsYmU8MTApZm9yKEo9MDtKPGJlOysrSilpZT4wJiYoeWVbQitKXT17bGV2ZWw6aWV9KTtMPS0xO2JyZWFrO2Nhc2UiY292ZXJlZC10YWJsZS1jZWxsIjppZihkWzFdIT09Ii8iKWlmKCsrTCx3PW9lKGRbMF0sITEpLG1lPXBhcnNlSW50KHdbIm51bWJlci1jb2x1bW5zLXJlcGVhdGVkIl18fCIxIiwxMCl8fDEsdC5zaGVldFN0dWJzKXtmb3IoO21lLS0gPjA7KXQuZGVuc2U/KG1bIiFkYXRhIl1bQl18fChtWyIhZGF0YSJdW0JdPVtdKSxtWyIhZGF0YSJdW0JdW0xdPXt0OiJ6In0pOm1bRGUoe3I6QixjOkx9KV09e3Q6InoifSwrK0w7LS1MfWVsc2UgTCs9bWUtMTt5PSIiLE49W107YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsIjpjYXNlIuaVsOaNriI6aWYoZFswXS5jaGFyQXQoZFswXS5sZW5ndGgtMik9PT0iLyIpKytMLHc9b2UoZFswXSwhMSksbWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKXx8MSxwPXt0OiJ6Iix2Om51bGx9LHcuZm9ybXVsYSYmdC5jZWxsRm9ybXVsYSE9ITEmJihwLmY9b2YoQ2Uody5mb3JtdWxhKSkpLHdbInN0eWxlLW5hbWUiXSYmcVt3WyJzdHlsZS1uYW1lIl1dJiYocC56PXFbd1sic3R5bGUtbmFtZSJdXSksKHcu5pWw5o2u57G75Z6LfHx3WyJ2YWx1ZS10eXBlIl0pPT0ic3RyaW5nIiYmKHAudD0icyIscC52PUNlKHdbInN0cmluZy12YWx1ZSJdfHwiIiksdC5kZW5zZT8obVsiIWRhdGEiXVtCXXx8KG1bIiFkYXRhIl1bQl09W10pLG1bIiFkYXRhIl1bQl1bTF09cCk6bVtIZShMKStHZShCKV09cCksTCs9bWUtMTtlbHNlIGlmKGRbMV0hPT0iLyIpeysrTCx5PVA9IiIsUj1iPTAsTj1bXSxJPVtdLG1lPTE7dmFyIHJlPWJlP0IrYmUtMTpCO2lmKEw+Ry5lLmMmJihHLmUuYz1MKSxMPEcucy5jJiYoRy5zLmM9TCksQjxHLnMuciYmKEcucy5yPUIpLHJlPkcuZS5yJiYoRy5lLnI9cmUpLHc9b2UoZFswXSwhMSksXz1lbyhkWzBdLCEwKSxBPVtdLFU9e30scD17dDp3LuaVsOaNruexu+Wei3x8d1sidmFsdWUtdHlwZSJdLHY6bnVsbH0sd1sic3R5bGUtbmFtZSJdJiZxW3dbInN0eWxlLW5hbWUiXV0mJihwLno9cVt3WyJzdHlsZS1uYW1lIl1dKSx0LmNlbGxGb3JtdWxhKWlmKHcuZm9ybXVsYSYmKHcuZm9ybXVsYT1DZSh3LmZvcm11bGEpKSx3WyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdJiZ3WyJudW1iZXItbWF0cml4LXJvd3Mtc3Bhbm5lZCJdJiYodWU9cGFyc2VJbnQod1sibnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQiXSwxMCl8fDAsaj1wYXJzZUludCh3WyJudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCJdLDEwKXx8MCxnZT17czp7cjpCLGM6TH0sZTp7cjpCK3VlLTEsYzpMK2otMX19LHAuRj1JZShnZSksWi5wdXNoKFtnZSxwLkZdKSksdy5mb3JtdWxhKXAuZj1vZih3LmZvcm11bGEpO2Vsc2UgZm9yKEo9MDtKPFoubGVuZ3RoOysrSilCPj1aW0pdWzBdLnMuciYmQjw9WltKXVswXS5lLnImJkw+PVpbSl1bMF0ucy5jJiZMPD1aW0pdWzBdLmUuYyYmKHAuRj1aW0pdWzFdKTtzd2l0Y2goKHdbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8d1sibnVtYmVyLXJvd3Mtc3Bhbm5lZCJdKSYmKHVlPXBhcnNlSW50KHdbIm51bWJlci1yb3dzLXNwYW5uZWQiXXx8IjEiLDEwKXx8MSxqPXBhcnNlSW50KHdbIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiXXx8IjEiLDEwKXx8MSx1ZSpqPjEmJihnZT17czp7cjpCLGM6TH0sZTp7cjpCK3VlLTEsYzpMK2otMX19LFEucHVzaChnZSkpKSx3WyJudW1iZXItY29sdW1ucy1yZXBlYXRlZCJdJiYobWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXSwxMCkpLHAudCl7Y2FzZSJib29sZWFuIjpwLnQ9ImIiLHAudj1GZSh3WyJib29sZWFuLXZhbHVlIl0pfHwrd1siYm9vbGVhbi12YWx1ZSJdPj0xO2JyZWFrO2Nhc2UiZmxvYXQiOnAudD0ibiIscC52PXBhcnNlRmxvYXQody52YWx1ZSksdC5jZWxsRGF0ZXMmJnAueiYmWnIocC56KSYmKHAudj1TYShwLnYrKE9lLldCUHJvcHMuZGF0ZTE5MDQ/MTQ2MjowKSkscC50PXR5cGVvZiBwLnY9PSJudW1iZXIiPyJuIjoiZCIpO2JyZWFrO2Nhc2UicGVyY2VudGFnZSI6cC50PSJuIixwLnY9cGFyc2VGbG9hdCh3LnZhbHVlKTticmVhaztjYXNlImN1cnJlbmN5IjpwLnQ9Im4iLHAudj1wYXJzZUZsb2F0KHcudmFsdWUpO2JyZWFrO2Nhc2UiZGF0ZSI6cC50PSJkIixwLnY9eHIod1siZGF0ZS12YWx1ZSJdLE9lLldCUHJvcHMuZGF0ZTE5MDQpLHQuY2VsbERhdGVzfHwocC50PSJuIixwLnY9b3IocC52LE9lLldCUHJvcHMuZGF0ZTE5MDQpKSxwLnp8fChwLno9Im0vZC95eSIpO2JyZWFrO2Nhc2UidGltZSI6cC50PSJuIixwLnY9TWMod1sidGltZS12YWx1ZSJdKS84NjQwMCx0LmNlbGxEYXRlcyYmKHAudj1TYShwLnYpLHAudD10eXBlb2YgcC52PT0ibnVtYmVyIj8ibiI6ImQiKSxwLnp8fChwLno9IkhIOk1NOlNTIik7YnJlYWs7Y2FzZSJudW1iZXIiOnAudD0ibiIscC52PXBhcnNlRmxvYXQody7mlbDmja7mlbDlgLwpO2JyZWFrO2RlZmF1bHQ6aWYocC50PT09InN0cmluZyJ8fHAudD09PSJ0ZXh0Inx8IXAudClwLnQ9InMiLHdbInN0cmluZy12YWx1ZSJdIT1udWxsJiYoeT1DZSh3WyJzdHJpbmctdmFsdWUiXSksTj1bXSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHZhbHVlIHR5cGUgIitwLnQpfX1lbHNle2lmKHo9ITEsX1siY2FsY2V4dDp2YWx1ZS10eXBlIl09PSJlcnJvciImJmRyW3ldIT1udWxsJiYocC50PSJlIixwLnc9eSxwLnY9ZHJbeV0pLHAudD09PSJzIiYmKHAudj15fHwiIixOLmxlbmd0aCYmKHAuUj1OKSx6PVI9PTApLHdlLlRhcmdldCYmKHAubD13ZSksQS5sZW5ndGg+MCYmKHAuYz1BLEE9W10pLHkmJnQuY2VsbFRleHQhPT0hMSYmKHAudz15KSx6JiYocC50PSJ6IixkZWxldGUgcC52KSwoIXp8fHQuc2hlZXRTdHVicykmJiEodC5zaGVldFJvd3MmJnQuc2hlZXRSb3dzPD1CKSlmb3IodmFyIGVlPTA7ZWU8YmU7KytlZSl7aWYobWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSx0LmRlbnNlKWZvcihtWyIhZGF0YSJdW0IrZWVdfHwobVsiIWRhdGEiXVtCK2VlXT1bXSksbVsiIWRhdGEiXVtCK2VlXVtMXT1lZT09MD9wOlVlKHApOy0tbWU+MDspbVsiIWRhdGEiXVtCK2VlXVtMK21lXT1VZShwKTtlbHNlIGZvcihtW0RlKHtyOkIrZWUsYzpMfSldPXA7LS1tZT4wOyltW0RlKHtyOkIrZWUsYzpMK21lfSldPVVlKHApO0cuZS5jPD1MJiYoRy5lLmM9TCl9bWU9cGFyc2VJbnQod1sibnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQiXXx8IjEiLDEwKSxMKz1tZS0xLG1lPTAscD17fSx5PSIiLE49W119d2U9e307YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y2FzZSJkb2N1bWVudC1jb250ZW50IjpjYXNlIueUteWtkOihqOagvOaWh+ahoyI6Y2FzZSJzcHJlYWRzaGVldCI6Y2FzZSLkuLvkvZMiOmNhc2Uic2NyaXB0cyI6Y2FzZSJzdHlsZXMiOmNhc2UiZm9udC1mYWNlLWRlY2xzIjpjYXNlIm1hc3Rlci1zdHlsZXMiOmlmKGRbMV09PT0iLyIpe2lmKChmPWkucG9wKCkpWzBdIT09ZFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrZn1lbHNlIGRbMF0uY2hhckF0KGRbMF0ubGVuZ3RoLTIpIT09Ii8iJiZpLnB1c2goW2RbM10sITBdKTticmVhaztjYXNlImFubm90YXRpb24iOmlmKGRbMV09PT0iLyIpe2lmKChmPWkucG9wKCkpWzBdIT09ZFszXSl0aHJvdyJCYWQgc3RhdGU6ICIrZjtVLnQ9eSxOLmxlbmd0aCYmKFUuUj1OKSxVLmE9TyxBLnB1c2goVSkseT1QLFI9YixOPUl9ZWxzZSBpZihkWzBdLmNoYXJBdChkWzBdLmxlbmd0aC0yKSE9PSIvIil7aS5wdXNoKFtkWzNdLCExXSk7dmFyIGtlPW9lKGRbMF0sITApO2tlLmRpc3BsYXkmJkZlKGtlLmRpc3BsYXkpfHwoQS5oaWRkZW49ITApLFA9eSxiPVIsST1OLHk9IiIsUj0wLE49W119Tz0iIixEPTA7YnJlYWs7Y2FzZSJjcmVhdG9yIjpkWzFdPT09Ii8iP089bi5zbGljZShELGQuaW5kZXgpOkQ9ZC5pbmRleCtkWzBdLmxlbmd0aDticmVhaztjYXNlIm1ldGEiOmNhc2Ui5YWD5pWw5o2uIjpjYXNlInNldHRpbmdzIjpjYXNlImNvbmZpZy1pdGVtLXNldCI6Y2FzZSJjb25maWctaXRlbS1tYXAtaW5kZXhlZCI6Y2FzZSJjb25maWctaXRlbS1tYXAtZW50cnkiOmNhc2UiY29uZmlnLWl0ZW0tbWFwLW5hbWVkIjpjYXNlInNoYXBlcyI6Y2FzZSJmcmFtZSI6Y2FzZSJ0ZXh0LWJveCI6Y2FzZSJpbWFnZSI6Y2FzZSJkYXRhLXBpbG90LXRhYmxlcyI6Y2FzZSJsaXN0LXN0eWxlIjpjYXNlImZvcm0iOmNhc2UiZGRlLWxpbmtzIjpjYXNlImV2ZW50LWxpc3RlbmVycyI6Y2FzZSJjaGFydCI6aWYoZFsxXT09PSIvIil7aWYoKGY9aS5wb3AoKSlbMF0hPT1kWzNdKXRocm93IkJhZCBzdGF0ZTogIitmfWVsc2UgZFswXS5jaGFyQXQoZFswXS5sZW5ndGgtMikhPT0iLyImJmkucHVzaChbZFszXSwhMV0pO3k9IiIsUj0wLE49W107YnJlYWs7Y2FzZSJzY2llbnRpZmljLW51bWJlciI6Y2FzZSJjdXJyZW5jeS1zeW1ib2wiOmNhc2UiZmlsbC1jaGFyYWN0ZXIiOmJyZWFrO2Nhc2UidGV4dC1zdHlsZSI6Y2FzZSJib29sZWFuLXN0eWxlIjpjYXNlIm51bWJlci1zdHlsZSI6Y2FzZSJjdXJyZW5jeS1zdHlsZSI6Y2FzZSJwZXJjZW50YWdlLXN0eWxlIjpjYXNlImRhdGUtc3R5bGUiOmNhc2UidGltZS1zdHlsZSI6aWYoZFsxXT09PSIvIil7dmFyIGhlPWlyLmxhc3RJbmRleDtEZihuLnNsaWNlKGMsaXIubGFzdEluZGV4KSxhLG5lKSxpci5sYXN0SW5kZXg9aGV9ZWxzZSBkWzBdLmNoYXJBdChkWzBdLmxlbmd0aC0yKSE9PSIvIiYmKGM9aXIubGFzdEluZGV4LWRbMF0ubGVuZ3RoKTticmVhaztjYXNlInNjcmlwdCI6YnJlYWs7Y2FzZSJsaWJyYXJpZXMiOmJyZWFrO2Nhc2UiYXV0b21hdGljLXN0eWxlcyI6YnJlYWs7Y2FzZSJkZWZhdWx0LXN0eWxlIjpjYXNlInBhZ2UtbGF5b3V0IjpicmVhaztjYXNlInN0eWxlIjp7dmFyIHhlPW9lKGRbMF0sITEpO3hlLmZhbWlseT09InRhYmxlLWNlbGwiJiZuZVt4ZVsiZGF0YS1zdHlsZS1uYW1lIl1dP3FbeGUubmFtZV09bmVbeGVbImRhdGEtc3R5bGUtbmFtZSJdXTp4ZS5mYW1pbHk9PSJ0YWJsZSImJihsZVt4ZS5uYW1lXT14ZSl9YnJlYWs7Y2FzZSJtYXAiOmJyZWFrO2Nhc2UiZm9udC1mYWNlIjpicmVhaztjYXNlInBhcmFncmFwaC1wcm9wZXJ0aWVzIjpicmVhaztjYXNlInRhYmxlLXByb3BlcnRpZXMiOnt2YXIgWGU9b2UoZFswXSwhMSk7eGUmJnhlLmZhbWlseT09InRhYmxlIiYmKHhlLmRpc3BsYXk9WGUuZGlzcGxheSl9YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4tcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJ0YWJsZS1yb3ctcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiOmJyZWFrO2Nhc2UibnVtYmVyIjpicmVhaztjYXNlImZyYWN0aW9uIjpicmVhaztjYXNlImRheSI6Y2FzZSJtb250aCI6Y2FzZSJ5ZWFyIjpjYXNlImVyYSI6Y2FzZSJkYXktb2Ytd2VlayI6Y2FzZSJ3ZWVrLW9mLXllYXIiOmNhc2UicXVhcnRlciI6Y2FzZSJob3VycyI6Y2FzZSJtaW51dGVzIjpjYXNlInNlY29uZHMiOmNhc2UiYW0tcG0iOmJyZWFrO2Nhc2UiYm9vbGVhbiI6YnJlYWs7Y2FzZSJ0ZXh0IjppZihkWzBdLnNsaWNlKC0yKT09PSIvPiIpYnJlYWs7aWYoZFsxXT09PSIvIilzd2l0Y2goaVtpLmxlbmd0aC0xXVswXSl7Y2FzZSJudW1iZXItc3R5bGUiOmNhc2UiZGF0ZS1zdHlsZSI6Y2FzZSJ0aW1lLXN0eWxlIjpvKz1uLnNsaWNlKGwsZC5pbmRleCk7YnJlYWt9ZWxzZSBsPWQuaW5kZXgrZFswXS5sZW5ndGg7YnJlYWs7Y2FzZSJuYW1lZC1yYW5nZSI6cz1vZShkWzBdLCExKSxBZT1GbihzWyJjZWxsLXJhbmdlLWFkZHJlc3MiXSk7dmFyIHplPXtOYW1lOnMubmFtZSxSZWY6QWVbMF0rIiEiK0FlWzFdfTtwZSYmKHplLlNoZWV0PWcubGVuZ3RoKSxPZS5OYW1lcy5wdXNoKHplKTticmVhaztjYXNlInRleHQtY29udGVudCI6YnJlYWs7Y2FzZSJ0ZXh0LXByb3BlcnRpZXMiOmJyZWFrO2Nhc2UiZW1iZWRkZWQtdGV4dCI6YnJlYWs7Y2FzZSJib2R5IjpjYXNlIueUteWtkOihqOagvCI6YnJlYWs7Y2FzZSJmb3JtcyI6YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4iOmJyZWFrO2Nhc2UidGFibGUtaGVhZGVyLXJvd3MiOmJyZWFrO2Nhc2UidGFibGUtcm93cyI6YnJlYWs7Y2FzZSJ0YWJsZS1jb2x1bW4tZ3JvdXAiOmJyZWFrO2Nhc2UidGFibGUtaGVhZGVyLWNvbHVtbnMiOmJyZWFrO2Nhc2UidGFibGUtY29sdW1ucyI6YnJlYWs7Y2FzZSJudWxsLWRhdGUiOnN3aXRjaChzPW9lKGRbMF0sITEpLHNbImRhdGUtdmFsdWUiXSl7Y2FzZSIxOTA0LTAxLTAxIjpPZS5XQlByb3BzLmRhdGUxOTA0PSEwO2JyZWFrfWJyZWFrO2Nhc2UiZ3JhcGhpYy1wcm9wZXJ0aWVzIjpicmVhaztjYXNlImNhbGN1bGF0aW9uLXNldHRpbmdzIjpicmVhaztjYXNlIm5hbWVkLWV4cHJlc3Npb25zIjpicmVhaztjYXNlImxhYmVsLXJhbmdlIjpicmVhaztjYXNlImxhYmVsLXJhbmdlcyI6YnJlYWs7Y2FzZSJuYW1lZC1leHByZXNzaW9uIjpicmVhaztjYXNlInNvcnQiOmJyZWFrO2Nhc2Uic29ydC1ieSI6YnJlYWs7Y2FzZSJzb3J0LWdyb3VwcyI6YnJlYWs7Y2FzZSJ0YWIiOmJyZWFrO2Nhc2UibGluZS1icmVhayI6YnJlYWs7Y2FzZSJzcGFuIjpicmVhaztjYXNlInAiOmNhc2Ui5paH5pys5LiyIjppZihbIm1hc3Rlci1zdHlsZXMiXS5pbmRleE9mKGlbaS5sZW5ndGgtMV1bMF0pPi0xKWJyZWFrO2lmKGRbMV09PT0iLyImJighd3x8IXdbInN0cmluZy12YWx1ZSJdKSl7dmFyIGplPUUyKG4uc2xpY2UoUixkLmluZGV4KSk7eT0oeS5sZW5ndGg+MD95K2AKYDoiIikramVbMF19ZWxzZSBkWzBdLnNsaWNlKC0yKT09Ii8+Ij95Kz1gCmA6KG9lKGRbMF0sITEpLFI9ZC5pbmRleCtkWzBdLmxlbmd0aCk7YnJlYWs7Y2FzZSJzIjpicmVhaztjYXNlImRhdGFiYXNlLXJhbmdlIjppZihkWzFdPT09Ii8iKWJyZWFrO3RyeXtBZT1GbihvZShkWzBdKVsidGFyZ2V0LXJhbmdlLWFkZHJlc3MiXSksaFtBZVswXV1bIiFhdXRvZmlsdGVyIl09e3JlZjpBZVsxXX19Y2F0Y2h7fWJyZWFrO2Nhc2UiZGF0ZSI6YnJlYWs7Y2FzZSJvYmplY3QiOmJyZWFrO2Nhc2UidGl0bGUiOmNhc2Ui5qCH6aKYIjpicmVhaztjYXNlImRlc2MiOmJyZWFrO2Nhc2UiYmluYXJ5LWRhdGEiOmJyZWFrO2Nhc2UidGFibGUtc291cmNlIjpicmVhaztjYXNlInNjZW5hcmlvIjpicmVhaztjYXNlIml0ZXJhdGlvbiI6YnJlYWs7Y2FzZSJjb250ZW50LXZhbGlkYXRpb25zIjpicmVhaztjYXNlImNvbnRlbnQtdmFsaWRhdGlvbiI6YnJlYWs7Y2FzZSJoZWxwLW1lc3NhZ2UiOmJyZWFrO2Nhc2UiZXJyb3ItbWVzc2FnZSI6YnJlYWs7Y2FzZSJkYXRhYmFzZS1yYW5nZXMiOmJyZWFrO2Nhc2UiZmlsdGVyIjpicmVhaztjYXNlImZpbHRlci1hbmQiOmJyZWFrO2Nhc2UiZmlsdGVyLW9yIjpicmVhaztjYXNlImZpbHRlci1jb25kaXRpb24iOmJyZWFrO2Nhc2UiZmlsdGVyLXNldC1pdGVtIjpicmVhaztjYXNlImxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0IjpicmVhaztjYXNlImxpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyIjpicmVhaztjYXNlImxpc3QtbGV2ZWwtcHJvcGVydGllcyI6YnJlYWs7Y2FzZSJzZW5kZXItZmlyc3RuYW1lIjpjYXNlInNlbmRlci1sYXN0bmFtZSI6Y2FzZSJzZW5kZXItaW5pdGlhbHMiOmNhc2Uic2VuZGVyLXRpdGxlIjpjYXNlInNlbmRlci1wb3NpdGlvbiI6Y2FzZSJzZW5kZXItZW1haWwiOmNhc2Uic2VuZGVyLXBob25lLXByaXZhdGUiOmNhc2Uic2VuZGVyLWZheCI6Y2FzZSJzZW5kZXItY29tcGFueSI6Y2FzZSJzZW5kZXItcGhvbmUtd29yayI6Y2FzZSJzZW5kZXItc3RyZWV0IjpjYXNlInNlbmRlci1jaXR5IjpjYXNlInNlbmRlci1wb3N0YWwtY29kZSI6Y2FzZSJzZW5kZXItY291bnRyeSI6Y2FzZSJzZW5kZXItc3RhdGUtb3ItcHJvdmluY2UiOmNhc2UiYXV0aG9yLW5hbWUiOmNhc2UiYXV0aG9yLWluaXRpYWxzIjpjYXNlImNoYXB0ZXIiOmNhc2UiZmlsZS1uYW1lIjpjYXNlInRlbXBsYXRlLW5hbWUiOmNhc2Uic2hlZXQtbmFtZSI6YnJlYWs7Y2FzZSJldmVudC1saXN0ZW5lciI6YnJlYWs7Y2FzZSJpbml0aWFsLWNyZWF0b3IiOmNhc2UiY3JlYXRpb24tZGF0ZSI6Y2FzZSJwcmludC1kYXRlIjpjYXNlImdlbmVyYXRvciI6Y2FzZSJkb2N1bWVudC1zdGF0aXN0aWMiOmNhc2UidXNlci1kZWZpbmVkIjpjYXNlImVkaXRpbmctZHVyYXRpb24iOmNhc2UiZWRpdGluZy1jeWNsZXMiOmJyZWFrO2Nhc2UiY29uZmlnLWl0ZW0iOmJyZWFrO2Nhc2UicGFnZS1udW1iZXIiOmJyZWFrO2Nhc2UicGFnZS1jb3VudCI6YnJlYWs7Y2FzZSJ0aW1lIjpicmVhaztjYXNlImNlbGwtcmFuZ2Utc291cmNlIjpicmVhaztjYXNlImRldGVjdGl2ZSI6YnJlYWs7Y2FzZSJvcGVyYXRpb24iOmJyZWFrO2Nhc2UiaGlnaGxpZ2h0ZWQtcmFuZ2UiOmJyZWFrO2Nhc2UiZGF0YS1waWxvdC10YWJsZSI6Y2FzZSJzb3VyY2UtY2VsbC1yYW5nZSI6Y2FzZSJzb3VyY2Utc2VydmljZSI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkIjpjYXNlImRhdGEtcGlsb3QtbGV2ZWwiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbHMiOmNhc2UiZGF0YS1waWxvdC1zdWJ0b3RhbCI6Y2FzZSJkYXRhLXBpbG90LW1lbWJlcnMiOmNhc2UiZGF0YS1waWxvdC1tZW1iZXIiOmNhc2UiZGF0YS1waWxvdC1kaXNwbGF5LWluZm8iOmNhc2UiZGF0YS1waWxvdC1zb3J0LWluZm8iOmNhc2UiZGF0YS1waWxvdC1sYXlvdXQtaW5mbyI6Y2FzZSJkYXRhLXBpbG90LWZpZWxkLXJlZmVyZW5jZSI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwcyI6Y2FzZSJkYXRhLXBpbG90LWdyb3VwIjpjYXNlImRhdGEtcGlsb3QtZ3JvdXAtbWVtYmVyIjpicmVhaztjYXNlInJlY3QiOmJyZWFrO2Nhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbHMiOmNhc2UiZGRlLWNvbm5lY3Rpb24tZGVjbCI6Y2FzZSJkZGUtbGluayI6Y2FzZSJkZGUtc291cmNlIjpicmVhaztjYXNlInByb3BlcnRpZXMiOmJyZWFrO2Nhc2UicHJvcGVydHkiOmJyZWFrO2Nhc2UiYSI6aWYoZFsxXSE9PSIvIil7aWYod2U9b2UoZFswXSwhMSksIXdlLmhyZWYpYnJlYWs7d2UuVGFyZ2V0PUNlKHdlLmhyZWYpLGRlbGV0ZSB3ZS5ocmVmLHdlLlRhcmdldC5jaGFyQXQoMCk9PSIjIiYmd2UuVGFyZ2V0LmluZGV4T2YoIi4iKT4tMT8oQWU9Rm4od2UuVGFyZ2V0LnNsaWNlKDEpKSx3ZS5UYXJnZXQ9IiMiK0FlWzBdKyIhIitBZVsxXSk6d2UuVGFyZ2V0Lm1hdGNoKC9eXC5cLltcXFwvXS8pJiYod2UuVGFyZ2V0PXdlLlRhcmdldC5zbGljZSgzKSksd2UudGl0bGUmJih3ZS5Ub29sdGlwPUNlKHdlLnRpdGxlKSxkZWxldGUgd2UudGl0bGUpfWJyZWFrO2Nhc2UidGFibGUtcHJvdGVjdGlvbiI6YnJlYWs7Y2FzZSJkYXRhLXBpbG90LWdyYW5kLXRvdGFsIjpicmVhaztjYXNlIm9mZmljZS1kb2N1bWVudC1jb21tb24tYXR0cnMiOmJyZWFrO2RlZmF1bHQ6c3dpdGNoKGRbMl0pe2Nhc2UiZGM6IjpjYXNlImNhbGNleHQ6IjpjYXNlImxvZXh0OiI6Y2FzZSJvb286IjpjYXNlImNoYXJ0b29vOiI6Y2FzZSJkcmF3OiI6Y2FzZSJzdHlsZToiOmNhc2UiY2hhcnQ6IjpjYXNlImZvcm06IjpjYXNlInVvZjoiOmNhc2Ui6KGoOiI6Y2FzZSLlrZc6IjpicmVhaztkZWZhdWx0OmlmKHQuV1RGKXRocm93IG5ldyBFcnJvcihkKX19dmFyIGRlPXtTaGVldHM6aCxTaGVldE5hbWVzOmcsV29ya2Jvb2s6T2V9O3JldHVybiB0LmJvb2tTaGVldHMmJmRlbGV0ZSBkZS5TaGVldHMsZGV9ZnVuY3Rpb24gT2YoZSxhKXthPWF8fHt9LEdyKGUsIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIpJiZqbyh0cihlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKSxhKTt2YXIgcj1scihlLCJzdHlsZXMueG1sIiksdD1yJiZEZihWZShyKSxhKSxuPWxyKGUsImNvbnRlbnQueG1sIik7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIGNvbnRlbnQueG1sIGluIE9EUyAvIFVPRiBmaWxlIik7dmFyIGk9UmYoVmUobiksYSx0KTtyZXR1cm4gR3IoZSwibWV0YS54bWwiKSYmKGkuUHJvcHM9c3ModHIoZSwibWV0YS54bWwiKSkpLGkuYm9va1R5cGU9Im9kcyIsaX1mdW5jdGlvbiBOZihlLGEpe3ZhciByPVJmKGUsYSk7cmV0dXJuIHIuYm9va1R5cGU9ImZvZHMiLHJ9LyohIHNoZWV0anMgKEMpIDIwMTMtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL3ZhciB2cj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXk+InUifHx0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuc3ViYXJyYXk+InUiPyJzbGljZSI6dHlwZW9mIEJ1ZmZlcjwidSI/dHlwZW9mIEJ1ZmZlci5wcm90b3R5cGUuc3ViYXJyYXk+InUiPyJzbGljZSI6KHR5cGVvZiBCdWZmZXIuZnJvbT09ImZ1bmN0aW9uIj9CdWZmZXIuZnJvbShbNzIsNjJdKTpuZXcgQnVmZmVyKFs3Miw2Ml0pKWluc3RhbmNlb2YgVWludDhBcnJheT8ic3ViYXJyYXkiOiJzbGljZSI6InN1YmFycmF5In1jYXRjaHtyZXR1cm4ic2xpY2UifX0oKTtmdW5jdGlvbiBqdChlKXtyZXR1cm4gbmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfWZ1bmN0aW9uIHZ0KGUpe3JldHVybiB0eXBlb2YgVGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigpLmRlY29kZShlKTpWZShmYShlKSl9ZnVuY3Rpb24gTWYoZSl7Zm9yKHZhciBhPTAscj0wO3I8ZS5sZW5ndGg7KytyKWErPWVbcl0ubGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KGEpLG49MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgaT1lW3JdLGY9aS5sZW5ndGg7aWYoZjwyNTApZm9yKHZhciBzPTA7czxmOysrcyl0W24rK109aVtzXTtlbHNlIHQuc2V0KGksbiksbis9Zn1yZXR1cm4gdH1mdW5jdGlvbiBZdChlKXtyZXR1cm4gZS09ZT4+MSYxNDMxNjU1NzY1LGU9KGUmODU4OTkzNDU5KSsoZT4+MiY4NTg5OTM0NTkpLChlKyhlPj40KSYyNTI2NDUxMzUpKjE2ODQzMDA5Pj4+MjR9ZnVuY3Rpb24gQTIoZSxhKXtmb3IodmFyIHI9KGVbYSsxNV0mMTI3KTw8N3xlW2ErMTRdPj4xLHQ9ZVthKzE0XSYxLG49YSsxMztuPj1hOy0tbil0PXQqMjU2K2Vbbl07cmV0dXJuKGVbYSsxNV0mMTI4Py10OnQpKk1hdGgucG93KDEwLHItNjE3Nil9ZnVuY3Rpb24gTjAoZSxhKXt2YXIgcj1hLmwsdD1lW3JdJjEyNztlOmlmKGVbcisrXT49MTI4JiYodHw9KGVbcl0mMTI3KTw8NyxlW3IrK108MTI4fHwodHw9KGVbcl0mMTI3KTw8MTQsZVtyKytdPDEyOCl8fCh0fD0oZVtyXSYxMjcpPDwyMSxlW3IrK108MTI4KXx8KHQrPShlW3JdJjEyNykqTWF0aC5wb3coMiwyOCksKytyLGVbcisrXTwxMjgpfHwodCs9KGVbcl0mMTI3KSpNYXRoLnBvdygyLDM1KSwrK3IsZVtyKytdPDEyOCl8fCh0Kz0oZVtyXSYxMjcpKk1hdGgucG93KDIsNDIpLCsrcixlW3IrK108MTI4KSkpYnJlYWsgZTtyZXR1cm4gYS5sPXIsdH1mdW5jdGlvbiBCZShlKXt2YXIgYT0wLHI9ZVthXSYxMjc7cmV0dXJuIGVbYSsrXTwxMjh8fChyfD0oZVthXSYxMjcpPDw3LGVbYSsrXTwxMjgpfHwocnw9KGVbYV0mMTI3KTw8MTQsZVthKytdPDEyOCl8fChyfD0oZVthXSYxMjcpPDwyMSxlW2ErK108MTI4KXx8KHJ8PShlW2FdJjE1KTw8MjgpLHJ9ZnVuY3Rpb24gUmUoZSl7Zm9yKHZhciBhPVtdLHI9e2w6MH07ci5sPGUubGVuZ3RoOyl7dmFyIHQ9ci5sLG49TjAoZSxyKSxpPW4mNztuPW4vOHwwO3ZhciBmLHM9ci5sO3N3aXRjaChpKXtjYXNlIDA6e2Zvcig7ZVtzKytdPj0xMjg7KTtmPWVbdnJdKHIubCxzKSxyLmw9c31icmVhaztjYXNlIDE6Zj1lW3ZyXShzLHMrOCksci5sPXMrODticmVhaztjYXNlIDI6e3ZhciBjPU4wKGUscik7Zj1lW3ZyXShyLmwsci5sK2MpLHIubCs9Y31icmVhaztjYXNlIDU6Zj1lW3ZyXShzLHMrNCksci5sPXMrNDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiUEIgVHlwZSAiLmNvbmNhdChpLCIgZm9yIEZpZWxkICIpLmNvbmNhdChuLCIgYXQgb2Zmc2V0ICIpLmNvbmNhdCh0KSl9dmFyIG89e2RhdGE6Zix0eXBlOml9O2Fbbl09PW51bGwmJihhW25dPVtdKSxhW25dLnB1c2gobyl9cmV0dXJuIGF9ZnVuY3Rpb24gTTAoZSxhKXtyZXR1cm4gZT8ubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBhKHIuZGF0YSl9KXx8W119ZnVuY3Rpb24geTIoZSl7Zm9yKHZhciBhLHI9W10sdD17bDowfTt0Lmw8ZS5sZW5ndGg7KXt2YXIgbj1OMChlLHQpLGk9UmUoZVt2cl0odC5sLHQubCtuKSk7dC5sKz1uO3ZhciBmPXtpZDpCZShpWzFdWzBdLmRhdGEpLG1lc3NhZ2VzOltdfTtpWzJdLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGM9UmUocy5kYXRhKSxvPUJlKGNbM11bMF0uZGF0YSk7Zi5tZXNzYWdlcy5wdXNoKHttZXRhOmMsZGF0YTplW3ZyXSh0LmwsdC5sK28pfSksdC5sKz1vfSksKGE9aVszXSkhPW51bGwmJmFbMF0mJihmLm1lcmdlPUJlKGlbM11bMF0uZGF0YSk+Pj4wPjApLHIucHVzaChmKX1yZXR1cm4gcn1mdW5jdGlvbiBTMihlLGEpe2lmKGUhPTApdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIFNuYXBweSBjaHVuayB0eXBlICIuY29uY2F0KGUpKTtmb3IodmFyIHI9e2w6MH0sdD1OMChhLHIpLG49W10saT1yLmw7aTxhLmxlbmd0aDspe3ZhciBmPWFbaV0mMztpZihmPT0wKXt2YXIgcz1hW2krK10+PjI7aWYoczw2MCkrK3M7ZWxzZXt2YXIgYz1zLTU5O3M9YVtpXSxjPjEmJihzfD1hW2krMV08PDgpLGM+MiYmKHN8PWFbaSsyXTw8MTYpLGM+MyYmKHN8PWFbaSszXTw8MjQpLHM+Pj49MCxzKyssaSs9Y31uLnB1c2goYVt2cl0oaSxpK3MpKSxpKz1zO2NvbnRpbnVlfWVsc2V7dmFyIG89MCxsPTA7aWYoZj09MT8obD0oYVtpXT4+MiY3KSs0LG89KGFbaSsrXSYyMjQpPDwzLG98PWFbaSsrXSk6KGw9KGFbaSsrXT4+MikrMSxmPT0yPyhvPWFbaV18YVtpKzFdPDw4LGkrPTIpOihvPShhW2ldfGFbaSsxXTw8OHxhW2krMl08PDE2fGFbaSszXTw8MjQpPj4+MCxpKz00KSksbz09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgb2Zmc2V0IDAiKTtmb3IodmFyIHU9bi5sZW5ndGgtMSx4PW87dT49MCYmeD49blt1XS5sZW5ndGg7KXgtPW5bdV0ubGVuZ3RoLC0tdTtpZih1PDApaWYoeD09MCl4PW5bdT0wXS5sZW5ndGg7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgb2Zmc2V0IGJleW9uZCBsZW5ndGgiKTtpZihsPHgpbi5wdXNoKG5bdV1bdnJdKG5bdV0ubGVuZ3RoLXgsblt1XS5sZW5ndGgteCtsKSk7ZWxzZXtmb3IoeD4wJiYobi5wdXNoKG5bdV1bdnJdKG5bdV0ubGVuZ3RoLXgpKSxsLT14KSwrK3U7bD49blt1XS5sZW5ndGg7KW4ucHVzaChuW3VdKSxsLT1uW3VdLmxlbmd0aCwrK3U7bCYmbi5wdXNoKG5bdV1bdnJdKDAsbCkpfW4ubGVuZ3RoPjI1JiYobj1bTWYobildKX19Zm9yKHZhciBoPTAsZz0wO2c8bi5sZW5ndGg7KytnKWgrPW5bZ10ubGVuZ3RoO2lmKGghPXQpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGxlbmd0aDogIi5jb25jYXQoaCwiICE9ICIpLmNvbmNhdCh0KSk7cmV0dXJuIG59ZnVuY3Rpb24gQzIoZSl7QXJyYXkuaXNBcnJheShlKSYmKGU9bmV3IFVpbnQ4QXJyYXkoZSkpO2Zvcih2YXIgYT1bXSxyPTA7cjxlLmxlbmd0aDspe3ZhciB0PWVbcisrXSxuPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTY7cis9MyxhLnB1c2guYXBwbHkoYSxTMih0LGVbdnJdKHIscituKSkpLHIrPW59aWYociE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZGF0YSBpcyBub3QgYSB2YWxpZCBmcmFtZWQgc3RyZWFtISIpO3JldHVybiBhLmxlbmd0aD09MT9hWzBdOk1mKGEpfXZhciBiMj1mdW5jdGlvbigpe3JldHVybntzc3Q6W10scnNzdDpbXSxvZm10OltdLG5mbXQ6W10sZm1sYTpbXSxmZXJyOltdLGNtbnQ6W119fTtmdW5jdGlvbiBQZihlLGEscix0LG4pe3ZhciBpLGYscyxjLG89YSYyNTUsbD1hPj44LHU9bD49NT9uOnQ7ZTppZihyJihsPjQ/ODo0KSYmZS50PT0ibiImJm89PTcpe3ZhciB4PShpPXVbN10pIT1udWxsJiZpWzBdP0JlKHVbN11bMF0uZGF0YSk6LTE7aWYoeD09LTEpYnJlYWsgZTt2YXIgaD0oZj11WzE1XSkhPW51bGwmJmZbMF0/QmUodVsxNV1bMF0uZGF0YSk6LTEsZz0ocz11WzE2XSkhPW51bGwmJnNbMF0/QmUodVsxNl1bMF0uZGF0YSk6LTEsbT0oYz11WzQwXSkhPW51bGwmJmNbMF0/QmUodVs0MF1bMF0uZGF0YSk6LTEsZD1lLnYscD1kO3I6aWYobSl7aWYoZD09MCl7aD1nPTI7YnJlYWsgcn1kPj02MDQ4MDA/aD0xOmQ+PTg2NDAwP2g9MjpkPj0zNjAwP2g9NDpkPj02MD9oPTg6ZD49MT9oPTE2Omg9MzIsTWF0aC5mbG9vcihkKSE9ZD9nPTMyOmQlNjA/Zz0xNjpkJTM2MDA/Zz04OmQlODY0MDA/Zz00OmQlNjA0ODAwJiYoZz0yKSxnPGgmJihnPWgpfWlmKGg9PS0xfHxnPT0tMSlicmVhayBlO3ZhciB3PVtdLF89W107aD09MSYmKHA9ZC82MDQ4MDAsZz09MT9fLnB1c2goJ2QiZCInKToocHw9MCxkLT02MDQ4MDAqcCksdy5wdXNoKHArKHg9PTI/IiB3ZWVrIisocD09MT8iIjoicyIpOng9PTE/InciOiIiKSkpLGg8PTImJmc+PTImJihwPWQvODY0MDAsZz4yJiYocHw9MCxkLT04NjQwMCpwKSxfLnB1c2goJ2QiZCInKSx3LnB1c2gocCsoeD09Mj8iIGRheSIrKHA9PTE/IiI6InMiKTp4PT0xPyJkIjoiIikpKSxoPD00JiZnPj00JiYocD1kLzM2MDAsZz40JiYocHw9MCxkLT0zNjAwKnApLF8ucHVzaCgoaD49ND8iW2hdIjoiaCIpKyciaCInKSx3LnB1c2gocCsoeD09Mj8iIGhvdXIiKyhwPT0xPyIiOiJzIik6eD09MT8iaCI6IiIpKSksaDw9OCYmZz49OCYmKHA9ZC82MCxnPjgmJihwfD0wLGQtPTYwKnApLF8ucHVzaCgoaD49OD8iW21dIjoibSIpKycibSInKSx4PT0wP3cucHVzaCgoaD09OCYmZz09OHx8cD49MTA/IiI6IjAiKStwKTp3LnB1c2gocCsoeD09Mj8iIG1pbnV0ZSIrKHA9PTE/IiI6InMiKTp4PT0xPyJtIjoiIikpKSxoPD0xNiYmZz49MTYmJihwPWQsZz4xNiYmKHB8PTAsZC09cCksXy5wdXNoKChoPj0xNj8iW3NdIjoicyIpKycicyInKSx4PT0wP3cucHVzaCgoZz09MTYmJmg9PTE2fHxwPj0xMD8iIjoiMCIpK3ApOncucHVzaChwKyh4PT0yPyIgc2Vjb25kIisocD09MT8iIjoicyIpOng9PTE/InMiOiIiKSkpLGc+PTMyJiYocD1NYXRoLnJvdW5kKDFlMypkKSxoPDMyJiZfLnB1c2goJy4wMDAibXMiJykseD09MD93LnB1c2goKHA+PTEwMD8iIjpwPj0xMD8iMCI6IjAwIikrcCk6dy5wdXNoKHArKHg9PTI/IiBtaWxsaXNlY29uZCIrKHA9PTE/IiI6InMiKTp4PT0xPyJtcyI6IiIpKSksZS53PXcuam9pbih4PT0wPyI6IjoiICIpLGUuej1fLmpvaW4oeD09MD8nIjoiJzoiICIpLHg9PTAmJihlLnc9ZS53LnJlcGxhY2UoLzooXGRcZFxkKSQvLCIuJDEiKSl9fWZ1bmN0aW9uIEkyKGUsYSxyLHQpe3ZhciBuPWp0KGUpLGk9bi5nZXRVaW50MzIoNCwhMCksZj0tMSxzPS0xLGM9LTEsbz1OYU4sbD0wLHU9bmV3IERhdGUoRGF0ZS5VVEMoMjAwMSwwLDEpKSx4PXI+MT8xMjo4O2kmMiYmKGM9bi5nZXRVaW50MzIoeCwhMCkseCs9NCkseCs9WXQoaSYocj4xPzM0Njg6Mzk2KSkqNCxpJjUxMiYmKGY9bi5nZXRVaW50MzIoeCwhMCkseCs9NCkseCs9WXQoaSYocj4xPzEyMjg4OjQwOTYpKSo0LGkmMTYmJihzPW4uZ2V0VWludDMyKHgsITApLHgrPTQpLGkmMzImJihvPW4uZ2V0RmxvYXQ2NCh4LCEwKSx4Kz04KSxpJjY0JiYodS5zZXRUaW1lKHUuZ2V0VGltZSgpKyhsPW4uZ2V0RmxvYXQ2NCh4LCEwKSkqMWUzKSx4Kz04KSxyPjEmJihpPW4uZ2V0VWludDMyKDgsITApPj4+MTYsaSYyNTUmJihjPT0tMSYmKGM9bi5nZXRVaW50MzIoeCwhMCkpLHgrPTQpKTt2YXIgaCxnPWVbcj49ND8xOjJdO3N3aXRjaChnKXtjYXNlIDA6cmV0dXJuO2Nhc2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OmEuc3N0W3NdfTticmVhaztjYXNlIDU6dD8uY2VsbERhdGVzP2g9e3Q6ImQiLHY6dX06aD17dDoibiIsdjpsLzg2NDAwKzM1NDMwLHo6VGVbMTRdfTticmVhaztjYXNlIDY6aD17dDoiYiIsdjpvPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZihmPi0xKXt2YXIgbT1hLnJzc3RbZl07aD17dDoicyIsdjptLnZ9LG0ubCYmKGgubD17VGFyZ2V0Om0ubH0pfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVt2cl0oMCw0KSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVt2cl0oMCw0KSkpfXJldHVybiBjPi0xJiZQZihoLGd8cjw8OCxpLGEub2ZtdFtjXSxhLm5mbXRbY10pLGc9PTcmJihoLnYvPTg2NDAwKSxofWZ1bmN0aW9uIEQyKGUsYSxyKXt2YXIgdD1qdChlKTt0LmdldFVpbnQzMig0LCEwKTt2YXIgbj10LmdldFVpbnQzMig4LCEwKSxpPTEyLGY9LTEscz0tMSxjPS0xLG89TmFOLGw9TmFOLHU9MCx4PW5ldyBEYXRlKERhdGUuVVRDKDIwMDEsMCwxKSk7biYxJiYobz1BMihlLGkpLGkrPTE2KSxuJjImJihsPXQuZ2V0RmxvYXQ2NChpLCEwKSxpKz04KSxuJjQmJih4LnNldFRpbWUoeC5nZXRUaW1lKCkrKHU9dC5nZXRGbG9hdDY0KGksITApKSoxZTMpLGkrPTgpLG4mOCYmKHM9dC5nZXRVaW50MzIoaSwhMCksaSs9NCksbiYxNiYmKGY9dC5nZXRVaW50MzIoaSwhMCksaSs9NCksaSs9WXQobiY0ODApKjQsbiY1MTImJih0LmdldFVpbnQzMihpLCEwKSxpKz00KSxpKz1ZdChuJjEwMjQpKjQsbiYyMDQ4JiYodC5nZXRVaW50MzIoaSwhMCksaSs9NCk7dmFyIGgsZz1lWzFdO3N3aXRjaChnKXtjYXNlIDA6aD17dDoieiJ9O2JyZWFrO2Nhc2UgMjpoPXt0OiJuIix2Om99O2JyZWFrO2Nhc2UgMzpoPXt0OiJzIix2OmEuc3N0W3NdfTticmVhaztjYXNlIDU6cj8uY2VsbERhdGVzP2g9e3Q6ImQiLHY6eH06aD17dDoibiIsdjp1Lzg2NDAwKzM1NDMwLHo6VGVbMTRdfTticmVhaztjYXNlIDY6aD17dDoiYiIsdjpsPjB9O2JyZWFrO2Nhc2UgNzpoPXt0OiJuIix2Omx9O2JyZWFrO2Nhc2UgODpoPXt0OiJlIix2OjB9O2JyZWFrO2Nhc2UgOTppZihmPi0xKXt2YXIgbT1hLnJzc3RbZl07aD17dDoicyIsdjptLnZ9LG0ubCYmKGgubD17VGFyZ2V0Om0ubH0pfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVsxXSwiIDogIikuY29uY2F0KG4mMzEsIiA6ICIpLmNvbmNhdChlW3ZyXSgwLDQpKSk7YnJlYWs7Y2FzZSAxMDpoPXt0OiJuIix2Om99O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgIi5jb25jYXQoZVsxXSwiIDogIikuY29uY2F0KG4mMzEsIiA6ICIpLmNvbmNhdChlW3ZyXSgwLDQpKSl9aWYoaSs9WXQobiY0MDk2KSo0LG4mNTE2MDk2JiYoYz09LTEmJihjPXQuZ2V0VWludDMyKGksITApKSxpKz00KSxuJjUyNDI4OCl7dmFyIGQ9dC5nZXRVaW50MzIoaSwhMCk7aSs9NCxhLmNtbnRbZF0mJihoLmM9TTIoYS5jbW50W2RdKSl9cmV0dXJuIGM+LTEmJlBmKGgsZ3wxMjgwLG4+PjEzLGEub2ZtdFtjXSxhLm5mbXRbY10pLGc9PTcmJihoLnYvPTg2NDAwKSxofWZ1bmN0aW9uIFIyKGUsYSxyKXtzd2l0Y2goZVswXSl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpyZXR1cm4gSTIoZSxhLGVbMF0scik7Y2FzZSA1OnJldHVybiBEMihlLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBheWxvYWQgdmVyc2lvbiAiLmNvbmNhdChlWzBdKSl9fWZ1bmN0aW9uIGhyKGUpe3ZhciBhPVJlKGUpO3JldHVybiBCZShhWzFdWzBdLmRhdGEpfWZ1bmN0aW9uIGV0KGUsYSl7dmFyIHI9UmUoYS5kYXRhKSx0PUJlKHJbMV1bMF0uZGF0YSksbj1yWzNdLGk9W107cmV0dXJuKG58fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBzLGMsbz1SZShmLmRhdGEpO2lmKG9bMV0pe3ZhciBsPUJlKG9bMV1bMF0uZGF0YSk+Pj4wO3N3aXRjaCh0KXtjYXNlIDE6aVtsXT12dChvWzNdWzBdLmRhdGEpO2JyZWFrO2Nhc2UgODp7dmFyIHU9ZVtocihvWzldWzBdLmRhdGEpXVswXSx4PVJlKHUuZGF0YSksaD1lW2hyKHhbMV1bMF0uZGF0YSldWzBdLGc9QmUoaC5tZXRhWzFdWzBdLmRhdGEpO2lmKGchPTIwMDEpdGhyb3cgbmV3IEVycm9yKCIyMDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvICIuY29uY2F0KGcpKTt2YXIgbT1SZShoLmRhdGEpLGQ9e3Y6bVszXS5tYXAoZnVuY3Rpb24oXyl7cmV0dXJuIHZ0KF8uZGF0YSl9KS5qb2luKCIiKX07aVtsXT1kO2U6aWYoKHM9bT8uWzExXSkhPW51bGwmJnNbMF0pe3ZhciBwPShjPVJlKG1bMTFdWzBdLmRhdGEpKT09bnVsbD92b2lkIDA6Y1sxXTtpZighcClicmVhayBlO3AuZm9yRWFjaChmdW5jdGlvbihfKXt2YXIgeSxSLFAsYj1SZShfLmRhdGEpO2lmKCh5PWJbMl0pIT1udWxsJiZ5WzBdKXt2YXIgTj1lW2hyKChSPWJbMl0pPT1udWxsP3ZvaWQgMDpSWzBdLmRhdGEpXVswXSxJPUJlKE4ubWV0YVsxXVswXS5kYXRhKTtzd2l0Y2goSSl7Y2FzZSAyMDMyOnZhciBCPVJlKE4uZGF0YSk7KFA9Qj8uWzJdKSE9bnVsbCYmUFswXSYmIWQubCYmKGQubD12dChCWzJdWzBdLmRhdGEpKTticmVhaztjYXNlIDIwMzk6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygidW5yZWNvZ25pemVkIE9iamVjdEF0dHJpYnV0ZSB0eXBlICIuY29uY2F0KEkpKX19fSl9fWJyZWFrO2Nhc2UgMjppW2xdPVJlKG9bNl1bMF0uZGF0YSk7YnJlYWs7Y2FzZSAzOmlbbF09UmUob1s1XVswXS5kYXRhKTticmVhaztjYXNlIDEwOnt2YXIgdz1lW2hyKG9bMTBdWzBdLmRhdGEpXVswXTtpW2xdPUxmKGUsdy5kYXRhKX1icmVhaztkZWZhdWx0OnRocm93IHR9fX0pLGl9ZnVuY3Rpb24gTzIoZSxhKXt2YXIgcix0LG4saSxmLHMsYyxvLGwsdSx4LGgsZyxtLGQ9UmUoZSkscD1CZShkWzFdWzBdLmRhdGEpPj4+MCx3PUJlKGRbMl1bMF0uZGF0YSk+Pj4wLF89KCh0PShyPWRbOF0pPT1udWxsP3ZvaWQgMDpyWzBdKT09bnVsbD92b2lkIDA6dC5kYXRhKSYmQmUoZFs4XVswXS5kYXRhKT4wfHwhMSx5LFI7aWYoKGk9KG49ZFs3XSk9PW51bGw/dm9pZCAwOm5bMF0pIT1udWxsJiZpLmRhdGEmJmEhPTApeT0ocz0oZj1kWzddKT09bnVsbD92b2lkIDA6ZlswXSk9PW51bGw/dm9pZCAwOnMuZGF0YSxSPShvPShjPWRbNl0pPT1udWxsP3ZvaWQgMDpjWzBdKT09bnVsbD92b2lkIDA6by5kYXRhO2Vsc2UgaWYoKHU9KGw9ZFs0XSk9PW51bGw/dm9pZCAwOmxbMF0pIT1udWxsJiZ1LmRhdGEmJmEhPTEpeT0oaD0oeD1kWzRdKT09bnVsbD92b2lkIDA6eFswXSk9PW51bGw/dm9pZCAwOmguZGF0YSxSPShtPShnPWRbM10pPT1udWxsP3ZvaWQgMDpnWzBdKT09bnVsbD92b2lkIDA6bS5kYXRhO2Vsc2UgdGhyb3ciTlVNQkVSUyBUaWxlIG1pc3NpbmcgIi5jb25jYXQoYSwiIGNlbGwgc3RvcmFnZSIpO2Zvcih2YXIgUD1fPzQ6MSxiPWp0KHkpLE49W10sST0wO0k8eS5sZW5ndGgvMjsrK0kpe3ZhciBCPWIuZ2V0VWludDE2KEkqMiwhMCk7Qjw2NTUzNSYmTi5wdXNoKFtJLEJdKX1pZihOLmxlbmd0aCE9dyl0aHJvdyJFeHBlY3RlZCAiLmNvbmNhdCh3LCIgY2VsbHMsIGZvdW5kICIpLmNvbmNhdChOLmxlbmd0aCk7dmFyIEw9W107Zm9yKEk9MDtJPE4ubGVuZ3RoLTE7KytJKUxbTltJXVswXV09Ult2cl0oTltJXVsxXSpQLE5bSSsxXVsxXSpQKTtyZXR1cm4gTi5sZW5ndGg+PTEmJihMW05bTi5sZW5ndGgtMV1bMF1dPVJbdnJdKE5bTi5sZW5ndGgtMV1bMV0qUCkpLHtSOnAsY2VsbHM6TH19ZnVuY3Rpb24gTjIoZSxhKXt2YXIgcix0PVJlKGEuZGF0YSksbj0tMTsocj10Py5bN10pIT1udWxsJiZyWzBdJiYoQmUodFs3XVswXS5kYXRhKT4+PjA/bj0xOm49MCk7dmFyIGk9TTAodFs1XSxmdW5jdGlvbihmKXtyZXR1cm4gTzIoZixuKX0pO3JldHVybntucm93czpCZSh0WzRdWzBdLmRhdGEpPj4+MCxkYXRhOmkucmVkdWNlKGZ1bmN0aW9uKGYscyl7cmV0dXJuIGZbcy5SXXx8KGZbcy5SXT1bXSkscy5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGMsbyl7aWYoZltzLlJdW29dKXRocm93IG5ldyBFcnJvcigiRHVwbGljYXRlIGNlbGwgcj0iLmNvbmNhdChzLlIsIiBjPSIpLmNvbmNhdChvKSk7ZltzLlJdW29dPWN9KSxmfSxbXSl9fWZ1bmN0aW9uIExmKGUsYSl7dmFyIHIsdCxuLGksZixzLGMsbyxsLHUseD17dDoiIixhOiIifSxoPVJlKGEpO2lmKCh0PShyPWg/LlsxXSk9PW51bGw/dm9pZCAwOnJbMF0pIT1udWxsJiZ0LmRhdGEmJih4LnQ9dnQoKGk9KG49aD8uWzFdKT09bnVsbD92b2lkIDA6blswXSk9PW51bGw/dm9pZCAwOmkuZGF0YSl8fCIiKSwocz0oZj1oPy5bM10pPT1udWxsP3ZvaWQgMDpmWzBdKSE9bnVsbCYmcy5kYXRhKXt2YXIgZz1lW2hyKChvPShjPWg/LlszXSk9PW51bGw/dm9pZCAwOmNbMF0pPT1udWxsP3ZvaWQgMDpvLmRhdGEpXVswXSxtPVJlKGcuZGF0YSk7KHU9KGw9bVsxXSk9PW51bGw/dm9pZCAwOmxbMF0pIT1udWxsJiZ1LmRhdGEmJih4LmE9dnQobVsxXVswXS5kYXRhKSl9cmV0dXJuIGg/Lls0XSYmKHgucmVwbGllcz1bXSxoWzRdLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIHA9ZVtocihkLmRhdGEpXVswXTt4LnJlcGxpZXMucHVzaChMZihlLHAuZGF0YSkpfSkpLHh9ZnVuY3Rpb24gTTIoZSl7dmFyIGE9W107cmV0dXJuIGEucHVzaCh7dDplLnR8fCIiLGE6ZS5hLFQ6ZS5yZXBsaWVzJiZlLnJlcGxpZXMubGVuZ3RoPjB9KSxlLnJlcGxpZXMmJmUucmVwbGllcy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2EucHVzaCh7dDpyLnR8fCIiLGE6ci5hLFQ6ITB9KX0pLGF9ZnVuY3Rpb24gUDIoZSxhLHIsdCl7dmFyIG4saSxmLHMsYyxvLGwsdSx4LGgsZyxtLGQscCx3PVJlKGEuZGF0YSksXz17czp7cjowLGM6MH0sZTp7cjowLGM6MH19O2lmKF8uZS5yPShCZSh3WzZdWzBdLmRhdGEpPj4+MCktMSxfLmUucjwwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3cgdmFyaW50ICIuY29uY2F0KHdbNl1bMF0uZGF0YSkpO2lmKF8uZS5jPShCZSh3WzddWzBdLmRhdGEpPj4+MCktMSxfLmUuYzwwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2wgdmFyaW50ICIuY29uY2F0KHdbN11bMF0uZGF0YSkpO3JbIiFyZWYiXT1JZShfKTt2YXIgeT1yWyIhZGF0YSJdIT1udWxsLFI9cixQPVJlKHdbNF1bMF0uZGF0YSksYj1iMigpOyhuPVBbNF0pIT1udWxsJiZuWzBdJiYoYi5zc3Q9ZXQoZSxlW2hyKFBbNF1bMF0uZGF0YSldWzBdKSksKGk9UFs2XSkhPW51bGwmJmlbMF0mJihiLmZtbGE9ZXQoZSxlW2hyKFBbNl1bMF0uZGF0YSldWzBdKSksKGY9UFsxMV0pIT1udWxsJiZmWzBdJiYoYi5vZm10PWV0KGUsZVtocihQWzExXVswXS5kYXRhKV1bMF0pKSwocz1QWzEyXSkhPW51bGwmJnNbMF0mJihiLmZlcnI9ZXQoZSxlW2hyKFBbMTJdWzBdLmRhdGEpXVswXSkpLChjPVBbMTddKSE9bnVsbCYmY1swXSYmKGIucnNzdD1ldChlLGVbaHIoUFsxN11bMF0uZGF0YSldWzBdKSksKG89UFsxOV0pIT1udWxsJiZvWzBdJiYoYi5jbW50PWV0KGUsZVtocihQWzE5XVswXS5kYXRhKV1bMF0pKSwobD1QWzIyXSkhPW51bGwmJmxbMF0mJihiLm5mbXQ9ZXQoZSxlW2hyKFBbMjJdWzBdLmRhdGEpXVswXSkpO3ZhciBOPVJlKFBbM11bMF0uZGF0YSksST0wO2lmKCEoKHU9UFs5XSkhPW51bGwmJnVbMF0pKXRocm93Ik5VTUJFUlMgZmlsZSBtaXNzaW5nIHJvdyB0cmVlIjt2YXIgQj1SZShQWzldWzBdLmRhdGEpWzFdLm1hcChmdW5jdGlvbihxKXtyZXR1cm4gUmUocS5kYXRhKX0pO2lmKEIuZm9yRWFjaChmdW5jdGlvbihxKXtJPUJlKHFbMV1bMF0uZGF0YSk7dmFyIGxlPUJlKHFbMl1bMF0uZGF0YSksUT1OWzFdW2xlXTtpZighUSl0aHJvdyJOVU1CRVJTIG1pc3NpbmcgdGlsZSAiK2xlO3ZhciBnZT1SZShRLmRhdGEpLHVlPWVbaHIoZ2VbMl1bMF0uZGF0YSldWzBdLGo9QmUodWUubWV0YVsxXVswXS5kYXRhKTtpZihqIT02MDAyKXRocm93IG5ldyBFcnJvcigiNjAwMSB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdChqKSk7dmFyIHllPU4yKGUsdWUpO3llLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiZSxtZSl7YmUuZm9yRWFjaChmdW5jdGlvbihaLE9lKXt2YXIgd2U9UjIoWixiLHQpO3dlJiYoeT8oUlsiIWRhdGEiXVtJK21lXXx8KFJbIiFkYXRhIl1bSSttZV09W10pLFJbIiFkYXRhIl1bSSttZV1bT2VdPXdlKTpyW0hlKE9lKStHZShJK21lKV09d2UpfSl9KSxJKz15ZS5ucm93c30pLCh4PVBbMTNdKSE9bnVsbCYmeFswXSl7dmFyIEw9ZVtocihQWzEzXVswXS5kYXRhKV1bMF0sRz1CZShMLm1ldGFbMV1bMF0uZGF0YSk7aWYoRyE9NjE0NCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIG1lcmdlIHR5cGUgNjE0NCwgZm91bmQgIi5jb25jYXQoRykpO3JbIiFtZXJnZXMiXT0oaD1SZShMLmRhdGEpKT09bnVsbD92b2lkIDA6aFsxXS5tYXAoZnVuY3Rpb24ocSl7dmFyIGxlPVJlKHEuZGF0YSksUT1qdChSZShsZVsxXVswXS5kYXRhKVsxXVswXS5kYXRhKSxnZT1qdChSZShsZVsyXVswXS5kYXRhKVsxXVswXS5kYXRhKTtyZXR1cm57czp7cjpRLmdldFVpbnQxNigwLCEwKSxjOlEuZ2V0VWludDE2KDIsITApfSxlOntyOlEuZ2V0VWludDE2KDAsITApK2dlLmdldFVpbnQxNigwLCEwKS0xLGM6US5nZXRVaW50MTYoMiwhMCkrZ2UuZ2V0VWludDE2KDIsITApLTF9fX0pfWlmKCEoKGc9clsiIW1lcmdlcyJdKSE9bnVsbCYmZy5sZW5ndGgpJiYoKG09d1s0N10pIT1udWxsJiZtWzBdKSl7dmFyIGllPVJlKHdbNDddWzBdLmRhdGEpO2lmKChkPWllWzJdKSE9bnVsbCYmZFswXSl7dmFyIG5lPVJlKGllWzJdWzBdLmRhdGEpOyhwPW5lWzNdKSE9bnVsbCYmcFswXSYmKHJbIiFtZXJnZXMiXT1NMChuZVszXSxmdW5jdGlvbihxKXt2YXIgbGUsUSxnZSx1ZSxqLHllPVJlKHEpLGJlPVJlKHllWzJdWzBdLmRhdGEpLG1lPVJlKGJlWzFdWzBdLmRhdGEpO2lmKChsZT1tZVsxXSkhPW51bGwmJmxlWzBdKXt2YXIgWj1SZShtZVsxXVswXS5kYXRhKSxPZT1CZShaWzFdWzBdLmRhdGEpO2lmKE9lPT02Nyl7dmFyIHdlPVJlKFpbNDBdWzBdLmRhdGEpO2lmKCEoISgoUT13ZVszXSkhPW51bGwmJlFbMF0pfHwhKChnZT13ZVs0XSkhPW51bGwmJmdlWzBdKSkpe3ZhciBBZT1SZSh3ZVszXVswXS5kYXRhKSxBPVJlKHdlWzRdWzBdLmRhdGEpLFU9QmUoQWVbMV1bMF0uZGF0YSksTz0odWU9QWVbMl0pIT1udWxsJiZ1ZVswXT9CZShBZVsyXVswXS5kYXRhKTpVLEQ9QmUoQVsxXVswXS5kYXRhKSx6PShqPUFbMl0pIT1udWxsJiZqWzBdP0JlKEFbMl1bMF0uZGF0YSk6RDtyZXR1cm57czp7cjpELGM6VX0sZTp7cjp6LGM6T319fX19fSkuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxIT1udWxsfSkpfX19ZnVuY3Rpb24gTDIoZSxhLHIpe3ZhciB0PVJlKGEuZGF0YSksbj17IiFyZWYiOiJBMSJ9O3I/LmRlbnNlJiYoblsiIWRhdGEiXT1bXSk7dmFyIGk9ZVtocih0WzJdWzBdLmRhdGEpXSxmPUJlKGlbMF0ubWV0YVsxXVswXS5kYXRhKTtpZihmIT02MDAxKXRocm93IG5ldyBFcnJvcigiNjAwMCB1bmV4cGVjdGVkIHJlZmVyZW5jZSB0byAiLmNvbmNhdChmKSk7cmV0dXJuIFAyKGUsaVswXSxuLHIpLG59ZnVuY3Rpb24gQjIoZSxhLHIpe3ZhciB0LG49UmUoYS5kYXRhKSxpPXtuYW1lOih0PW5bMV0pIT1udWxsJiZ0WzBdP3Z0KG5bMV1bMF0uZGF0YSk6IiIsc2hlZXRzOltdfSxmPU0wKG5bMl0saHIpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24ocyl7ZVtzXS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBvPUJlKGMubWV0YVsxXVswXS5kYXRhKTtvPT02ZTMmJmkuc2hlZXRzLnB1c2goTDIoZSxjLHIpKX0pfSksaX1mdW5jdGlvbiBVMihlLGEscil7dmFyIHQsbj1NbigpO24uV29ya2Jvb2s9e1dCUHJvcHM6e2RhdGUxOTA0OiEwfX07dmFyIGk9UmUoYS5kYXRhKTtpZigodD1pWzJdKSE9bnVsbCYmdFswXSl0aHJvdyBuZXcgRXJyb3IoIktleW5vdGUgcHJlc2VudGF0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpO3ZhciBmPU0wKGlbMV0saHIpO2lmKGYuZm9yRWFjaChmdW5jdGlvbihzKXtlW3NdLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIG89QmUoYy5tZXRhWzFdWzBdLmRhdGEpO2lmKG89PTIpe3ZhciBsPUIyKGUsYyxyKTtsLnNoZWV0cy5mb3JFYWNoKGZ1bmN0aW9uKHUseCl7WnQobix1LHg9PTA/bC5uYW1lOmwubmFtZSsiXyIreCwhMCl9KX19KX0pLG4uU2hlZXROYW1lcy5sZW5ndGg9PTApdGhyb3cgbmV3IEVycm9yKCJFbXB0eSBOVU1CRVJTIGZpbGUiKTtyZXR1cm4gbi5ib29rVHlwZT0ibnVtYmVycyIsbn1mdW5jdGlvbiBJbihlLGEpe3ZhciByLHQsbixpLGYscyxjLG89e30sbD1bXTtpZihlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubWF0Y2goL1wuaXdwdjIvKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBhc3N3b3JkIHByb3RlY3Rpb24iKX0pLGUuRmlsZUluZGV4LmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5uYW1lLm1hdGNoKC9cLml3YSQvKSYmeC5jb250ZW50WzBdPT0wKXt2YXIgaDt0cnl7aD1DMih4LmNvbnRlbnQpfWNhdGNoKG0pe3JldHVybiBjb25zb2xlLmxvZygiPz8gIit4LmNvbnRlbnQubGVuZ3RoKyIgIisobS5tZXNzYWdlfHxtKSl9dmFyIGc7dHJ5e2c9eTIoaCl9Y2F0Y2gobSl7cmV0dXJuIGNvbnNvbGUubG9nKCIjIyAiKyhtLm1lc3NhZ2V8fG0pKX1nLmZvckVhY2goZnVuY3Rpb24obSl7b1ttLmlkXT1tLm1lc3NhZ2VzLGwucHVzaChtLmlkKX0pfX0pLCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkZpbGUgaGFzIG5vIG1lc3NhZ2VzIik7aWYoKG49KHQ9KHI9bz8uWzFdKT09bnVsbD92b2lkIDA6clswXS5tZXRhKT09bnVsbD92b2lkIDA6dFsxXSkhPW51bGwmJm5bMF0uZGF0YSYmQmUob1sxXVswXS5tZXRhWzFdWzBdLmRhdGEpPT0xZTQpdGhyb3cgbmV3IEVycm9yKCJQYWdlcyBkb2N1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgdT0oKGM9KHM9KGY9KGk9bz8uWzFdKT09bnVsbD92b2lkIDA6aVswXSk9PW51bGw/dm9pZCAwOmYubWV0YSk9PW51bGw/dm9pZCAwOnNbMV0pPT1udWxsP3ZvaWQgMDpjWzBdLmRhdGEpJiZCZShvWzFdWzBdLm1ldGFbMV1bMF0uZGF0YSk9PTEmJm9bMV1bMF07aWYodXx8bC5mb3JFYWNoKGZ1bmN0aW9uKHgpe29beF0uZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZz1CZShoLm1ldGFbMV1bMF0uZGF0YSk+Pj4wO2lmKGc9PTEpaWYoIXUpdT1oO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJEb2N1bWVudCBoYXMgbXVsdGlwbGUgcm9vdHMiKX0pfSksIXUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBEb2N1bWVudCByb290Iik7cmV0dXJuIFUyKG8sdSxhKX1mdW5jdGlvbiBIMihlKXtyZXR1cm4gZnVuY3Rpb24ocil7Zm9yKHZhciB0PTA7dCE9ZS5sZW5ndGg7Kyt0KXt2YXIgbj1lW3RdO3JbblswXV09PT12b2lkIDAmJihyW25bMF1dPW5bMV0pLG5bMl09PT0ibiImJihyW25bMF1dPU51bWJlcihyW25bMF1dKSl9fX1mdW5jdGlvbiBEbihlKXtIMihbWyJjZWxsTkYiLCExXSxbImNlbGxIVE1MIiwhMF0sWyJjZWxsRm9ybXVsYSIsITBdLFsiY2VsbFN0eWxlcyIsITFdLFsiY2VsbFRleHQiLCEwXSxbImNlbGxEYXRlcyIsITFdLFsic2hlZXRTdHVicyIsITFdLFsic2hlZXRSb3dzIiwwLCJuIl0sWyJib29rRGVwcyIsITFdLFsiYm9va1NoZWV0cyIsITFdLFsiYm9va1Byb3BzIiwhMV0sWyJib29rRmlsZXMiLCExXSxbImJvb2tWQkEiLCExXSxbInBhc3N3b3JkIiwiIl0sWyJXVEYiLCExXV0pKGUpfWZ1bmN0aW9uIFcyKGUpe3JldHVybiBvdC5XUy5pbmRleE9mKGUpPi0xPyJzaGVldCI6ZT09b3QuQ1M/ImNoYXJ0IjplPT1vdC5EUz8iZGlhbG9nIjplPT1vdC5NUz8ibWFjcm8iOmUmJmUubGVuZ3RoP2U6InNoZWV0In1mdW5jdGlvbiBWMihlLGEpe2lmKCFlKXJldHVybiAwO3RyeXtlPWEubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkfHwodC5pZD10LnN0clJlbElEKSxbdC5uYW1lLGVbIiFpZCJdW3QuaWRdLlRhcmdldCxXMihlWyIhaWQiXVt0LmlkXS5UeXBlKV19KX1jYXRjaHtyZXR1cm4gbnVsbH1yZXR1cm4hZXx8ZS5sZW5ndGg9PT0wP251bGw6ZX1mdW5jdGlvbiBHMihlLGEscix0LG4saSxmLHMpe2lmKCEoIWV8fCFlWyIhbGVnZHJhd2VsIl0pKXt2YXIgYz1oYShlWyIhbGVnZHJhd2VsIl0uVGFyZ2V0LHQpLG89bHIocixjLCEwKTtvJiZ3MShWZShvKSxlLHN8fFtdKX19ZnVuY3Rpb24gWDIoZSl7dmFyIGE9KGV8fCIiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy4qXC4vLCIiKTtzd2l0Y2goYSl7Y2FzZSJwbmciOnJldHVybiJpbWFnZS9wbmciO2Nhc2UiZ2lmIjpyZXR1cm4iaW1hZ2UvZ2lmIjtjYXNlImJtcCI6cmV0dXJuImltYWdlL2JtcCI7Y2FzZSJzdmciOnJldHVybiJpbWFnZS9zdmcreG1sIjtjYXNlImpwZyI6Y2FzZSJqcGVnIjpyZXR1cm4iaW1hZ2UvanBlZyI7ZGVmYXVsdDpyZXR1cm4iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn19ZnVuY3Rpb24gejIoZSxhLHIsdCxuLGksZil7aWYoISghZXx8IWVbIiFkcmF3ZWwiXSkmJiEoIWl8fCFpLmRyYXdpbmdzJiYhaS5jaGFydHMpKXt2YXIgcz1oYShlWyIhZHJhd2VsIl0uVGFyZ2V0LHQpLGM9TnQocyksbz1YcyhscihyLHMsITApLFhhKGxyKHIsYywhMCkscykpO2VbIiFkcmF3aW5ncyJdPW8saS5kcmF3aW5ncyYmby5pbWFnZXMmJm8uaW1hZ2VzLmxlbmd0aCYmby5pbWFnZXMuZm9yRWFjaChmdW5jdGlvbihsKXtpZighKCFsfHwhbC50YXJnZXQpKXt2YXIgdT1oYShsLnRhcmdldCxzKSx4PVEwKHIsdSwhMCk7eCYmKGwuZGF0YVVSST0iZGF0YToiK1gyKHUpKyI7YmFzZTY0LCIrejAoeCkpLGwucGF0aD11fX0pLGkuY2hhcnRzJiZvLmNoYXJ0cyYmby5jaGFydHMubGVuZ3RoJiYoZVsiIWNoYXJ0cyJdPVtdLG8uY2hhcnRzLmZvckVhY2goZnVuY3Rpb24obCl7aWYoISghbHx8IWwudGFyZ2V0KSl7dmFyIHU9aGEobC50YXJnZXQscykseD1OdCh1KSxoPWRmKGxyKHIsdSwhMCksdSxpLFhhKGxyKHIseCwhMCksdSksZix7IiF0eXBlIjoiY2hhcnQifSk7bC5tb2RlbD1oJiZoWyIhY2hhcnQiXSxsLmRhdGE9aCxsLnBhdGg9dSxlWyIhY2hhcnRzIl0ucHVzaChsKX19KSl9fWZ1bmN0aW9uICQyKGUsYSxyLHQsbixpLGYscyxjLG8sbCx1KXt0cnl7aVt0XT1YYShscihlLHIsITApLGEpO3ZhciB4PXRyKGUsYSksaDtzd2l0Y2gocyl7Y2FzZSJzaGVldCI6aD1Udih4LGEsbixjLGlbdF0sbyxsLHUpO2JyZWFrO2Nhc2UiY2hhcnQiOmlmKGg9RXYoeCxhLG4sYyxpW3RdLG8sbCx1KSwhaHx8IWhbIiFkcmF3ZWwiXXx8IWMuZHJhd2luZ3MmJiFjLmNoYXJ0cylicmVhazt2YXIgZz1oYShoWyIhZHJhd2VsIl0uVGFyZ2V0LGEpLG09TnQoZyksZD1YcyhscihlLGcsITApLFhhKGxyKGUsbSwhMCksZykpO2lmKGhbIiFkcmF3aW5ncyJdPWQsIWMuY2hhcnRzfHwhZC5jaGFydClicmVhazt2YXIgcD1oYShkLmNoYXJ0LGcpLHc9TnQocCk7aD1kZihscihlLHAsITApLHAsYyxYYShscihlLHcsITApLHApLG8saCksZC5jaGFydHMmJmQuY2hhcnRzLmxlbmd0aCYmKGQuY2hhcnRzWzBdLm1vZGVsPWgmJmhbIiFjaGFydCJdLGhbIiFjaGFydHMiXT1kLmNoYXJ0cyk7YnJlYWs7Y2FzZSJtYWNybyI6aD1Bdih4LGEsbixjLGlbdF0sbyxsLHUpO2JyZWFrO2Nhc2UiZGlhbG9nIjpoPXl2KHgsYSxuLGMsaVt0XSxvLGwsdSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBzaGVldCB0eXBlICIrcyl9Zlt0XT1oO3ZhciBfPVtdLHk9W107aSYmaVt0XSYmcHIoaVt0XSkuZm9yRWFjaChmdW5jdGlvbihSKXt2YXIgUD0iIjtpZihpW3RdW1JdLlR5cGU9PW90LkNNTlQpe2lmKFA9aGEoaVt0XVtSXS5UYXJnZXQsYSksXz1idih0cihlLFAsITApLFAsYyksIV98fCFfLmxlbmd0aClyZXR1cm47anMoaCxfLCExKX1pW3RdW1JdLlR5cGU9PW90LlRDTU5UJiYoUD1oYShpW3RdW1JdLlRhcmdldCxhKSx5PXkuY29uY2F0KFQxKHRyKGUsUCwhMCksYykpKX0pLHkmJnkubGVuZ3RoJiZqcyhoLHksITAsYy5wZW9wbGV8fFtdKSxzPT0ic2hlZXQiJiZ6MihoLHMsZSxhLG4sYyxvKSxHMihoLHMsZSxhLG4sYyxvLF8pfWNhdGNoKFIpe2lmKGMuV1RGKXRocm93IFJ9fWZ1bmN0aW9uICRyKGUpe3JldHVybiBlLmNoYXJBdCgwKT09Ii8iP2Uuc2xpY2UoMSk6ZX1mdW5jdGlvbiBLMihlLGEpe2lmKGxpKCksYT1hfHx7fSxEbihhKSxHcihlLCJNRVRBLUlORi9tYW5pZmVzdC54bWwiKXx8R3IoZSwib2JqZWN0ZGF0YS54bWwiKSlyZXR1cm4gT2YoZSxhKTtpZihHcihlLCJJbmRleC9Eb2N1bWVudC5pd2EiKSl7aWYodHlwZW9mIFVpbnQ4QXJyYXk+InUiKXRocm93IG5ldyBFcnJvcigiTlVNQkVSUyBmaWxlIHBhcnNpbmcgcmVxdWlyZXMgVWludDhBcnJheSBzdXBwb3J0Iik7aWYodHlwZW9mIEluPCJ1Iil7aWYoZS5GaWxlSW5kZXgpcmV0dXJuIEluKGUsYSk7dmFyIHI9TWUudXRpbHMuY2ZiX25ldygpO3JldHVybiBnaShlKS5mb3JFYWNoKGZ1bmN0aW9uKHEpe0pjKHIscSxRMChlLHEpKX0pLEluKHIsYSl9dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBOVU1CRVJTIGZpbGUiKX1pZighR3IoZSwiW0NvbnRlbnRfVHlwZXNdLnhtbCIpKXtpZihHcihlLCJpbmRleC54bWwuZ3oiKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIE5VTUJFUlMgMDggZmlsZSIpO2lmKEdyKGUsImluZGV4LnhtbCIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTlVNQkVSUyAwOSBmaWxlIik7dmFyIHQ9TWUuZmluZChlLCJJbmRleC56aXAiKTtpZih0KXJldHVybiBhPVVlKGEpLGRlbGV0ZSBhLnR5cGUsdHlwZW9mIHQuY29udGVudD09InN0cmluZyImJihhLnR5cGU9ImJpbmFyeSIpLHR5cGVvZiBCdW48InUiJiZCdWZmZXIuaXNCdWZmZXIodC5jb250ZW50KT9wdChuZXcgVWludDhBcnJheSh0LmNvbnRlbnQpLGEpOnB0KHQuY29udGVudCxhKTt0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIFpJUCBmaWxlIil9dmFyIG49Z2koZSksaT0kbyhscihlLCJbQ29udGVudF9UeXBlc10ueG1sIikpLGY9ITEscyxjO2lmKGkud29ya2Jvb2tzLmxlbmd0aD09PTAmJihjPSJ4bC93b3JrYm9vay54bWwiLHRyKGUsYywhMCkmJmkud29ya2Jvb2tzLnB1c2goYykpLGkud29ya2Jvb2tzLmxlbmd0aD09PTApe2lmKGM9InhsL3dvcmtib29rLmJpbiIsIXRyKGUsYywhMCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3QgZmluZCB3b3JrYm9vayIpO2kud29ya2Jvb2tzLnB1c2goYyksZj0hMH1pLndvcmtib29rc1swXS5zbGljZSgtMyk9PSJiaW4iJiYoZj0hMCk7dmFyIG89e30sbD17fTtpZighYS5ib29rU2hlZXRzJiYhYS5ib29rUHJvcHMpe2lmKFh0PVtdLGkuc3N0KXRyeXtYdD1Ddih0cihlLCRyKGkuc3N0KSksaS5zc3QsYSl9Y2F0Y2gocSl7aWYoYS5XVEYpdGhyb3cgcX1hLmNlbGxTdHlsZXMmJmkudGhlbWVzLmxlbmd0aCYmKG89R3MobHIoZSxpLnRoZW1lc1swXS5yZXBsYWNlKC9eXC8vLCIiKSwhMCl8fCIiLGEpKSxpLnN0eWxlJiYobD1Tdih0cihlLCRyKGkuc3R5bGUpKSxpLnN0eWxlLG8sYSkpfWkubGlua3MubWFwKGZ1bmN0aW9uKHEpe3RyeXt2YXIgbGU9WGEobHIoZSxOdCgkcihxKSkpLHEpO3JldHVybiBEdih0cihlLCRyKHEpKSxsZSxxLGEpfWNhdGNoe319KTt2YXIgdT1Gdih0cihlLCRyKGkud29ya2Jvb2tzWzBdKSksaS53b3JrYm9va3NbMF0sYSkseD17fSxoPSIiO2kuY29yZXByb3BzLmxlbmd0aCYmKGg9dHIoZSwkcihpLmNvcmVwcm9wc1swXSksITApLGgmJih4PXNzKGgpKSxpLmV4dHByb3BzLmxlbmd0aCE9PTAmJihoPXRyKGUsJHIoaS5leHRwcm9wc1swXSksITApLGgmJkpvKGgseCxhKSkpO3ZhciBnPXt9OyghYS5ib29rU2hlZXRzfHxhLmJvb2tQcm9wcykmJmkuY3VzdHByb3BzLmxlbmd0aCE9PTAmJihoPWxyKGUsJHIoaS5jdXN0cHJvcHNbMF0pLCEwKSxoJiYoZz1xbyhoLGEpKSk7dmFyIG09e307aWYoKGEuYm9va1NoZWV0c3x8YS5ib29rUHJvcHMpJiYodS5TaGVldHM/cz11LlNoZWV0cy5tYXAoZnVuY3Rpb24obGUpe3JldHVybiBsZS5uYW1lfSk6eC5Xb3Jrc2hlZXRzJiZ4LlNoZWV0TmFtZXMubGVuZ3RoPjAmJihzPXguU2hlZXROYW1lcyksYS5ib29rUHJvcHMmJihtLlByb3BzPXgsbS5DdXN0cHJvcHM9ZyksYS5ib29rU2hlZXRzJiZ0eXBlb2YgczwidSImJihtLlNoZWV0TmFtZXM9cyksYS5ib29rU2hlZXRzP20uU2hlZXROYW1lczphLmJvb2tQcm9wcykpcmV0dXJuIG07cz17fTt2YXIgZD17fTthLmJvb2tEZXBzJiZpLmNhbGNjaGFpbiYmKGQ9SXYodHIoZSwkcihpLmNhbGNjaGFpbikpLGkuY2FsY2NoYWluKSk7dmFyIHA9MCx3PXt9LF8seTt7dmFyIFI9dS5TaGVldHM7eC5Xb3Jrc2hlZXRzPVIubGVuZ3RoLHguU2hlZXROYW1lcz1bXTtmb3IodmFyIFA9MDtQIT1SLmxlbmd0aDsrK1ApeC5TaGVldE5hbWVzW1BdPVJbUF0ubmFtZX12YXIgYj1mPyJiaW4iOiJ4bWwiLE49aS53b3JrYm9va3NbMF0ubGFzdEluZGV4T2YoIi8iKSxJPShpLndvcmtib29rc1swXS5zbGljZSgwLE4rMSkrIl9yZWxzLyIraS53b3JrYm9va3NbMF0uc2xpY2UoTisxKSsiLnJlbHMiKS5yZXBsYWNlKC9eXC8vLCIiKTtHcihlLEkpfHwoST0ieGwvX3JlbHMvd29ya2Jvb2suIitiKyIucmVscyIpO3ZhciBCPVhhKGxyKGUsSSwhMCksSS5yZXBsYWNlKC9fcmVscy4qLywiczVzIikpOyhpLm1ldGFkYXRhfHxbXSkubGVuZ3RoPj0xJiYoYS54bG1ldGE9UnYodHIoZSwkcihpLm1ldGFkYXRhWzBdKSksaS5tZXRhZGF0YVswXSxhKSksKGkucGVvcGxlfHxbXSkubGVuZ3RoPj0xJiYoYS5wZW9wbGU9RTEodHIoZSwkcihpLnBlb3BsZVswXSkpLGEpKSxCJiYoQj1WMihCLHUuU2hlZXRzKSk7dmFyIEw9dHIoZSwieGwvd29ya3NoZWV0cy9zaGVldC54bWwiLCEwKT8xOjA7ZTpmb3IocD0wO3AhPXguV29ya3NoZWV0czsrK3Ape3ZhciBHPSJzaGVldCI7aWYoQiYmQltwXT8oXz0ieGwvIitCW3BdWzFdLnJlcGxhY2UoL1tcL10/eGxcLy8sIiIpLEdyKGUsXyl8fChfPUJbcF1bMV0pLEdyKGUsXyl8fChfPUkucmVwbGFjZSgvX3JlbHNcL1tcU1xzXSokLywiIikrQltwXVsxXSksRz1CW3BdWzJdKTooXz0ieGwvd29ya3NoZWV0cy9zaGVldCIrKHArMS1MKSsiLiIrYixfPV8ucmVwbGFjZSgvc2hlZXQwXC4vLCJzaGVldC4iKSkseT1fLnJlcGxhY2UoL14oLiopKFwvKShbXlwvXSopJC8sIiQxL19yZWxzLyQzLnJlbHMiKSxhJiZhLnNoZWV0cyE9bnVsbClzd2l0Y2godHlwZW9mIGEuc2hlZXRzKXtjYXNlIm51bWJlciI6aWYocCE9YS5zaGVldHMpY29udGludWUgZTticmVhaztjYXNlInN0cmluZyI6aWYoeC5TaGVldE5hbWVzW3BdLnRvTG93ZXJDYXNlKCkhPWEuc2hlZXRzLnRvTG93ZXJDYXNlKCkpY29udGludWUgZTticmVhaztkZWZhdWx0OmlmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkoYS5zaGVldHMpKXtmb3IodmFyIGllPSExLG5lPTA7bmUhPWEuc2hlZXRzLmxlbmd0aDsrK25lKXR5cGVvZiBhLnNoZWV0c1tuZV09PSJudW1iZXIiJiZhLnNoZWV0c1tuZV09PXAmJihpZT0xKSx0eXBlb2YgYS5zaGVldHNbbmVdPT0ic3RyaW5nIiYmYS5zaGVldHNbbmVdLnRvTG93ZXJDYXNlKCk9PXguU2hlZXROYW1lc1twXS50b0xvd2VyQ2FzZSgpJiYoaWU9MSk7aWYoIWllKWNvbnRpbnVlIGV9fSQyKGUsXyx5LHguU2hlZXROYW1lc1twXSxwLHcscyxHLGEsdSxvLGwpfXJldHVybiBtPXtEaXJlY3Rvcnk6aSxXb3JrYm9vazp1LFByb3BzOngsQ3VzdHByb3BzOmcsRGVwczpkLFNoZWV0czpzLFNoZWV0TmFtZXM6eC5TaGVldE5hbWVzLFN0cmluZ3M6WHQsU3R5bGVzOmwsVGhlbWVzOm8sU1NGOlVlKFRlKX0sYSYmYS5ib29rRmlsZXMmJihlLmZpbGVzPyhtLmtleXM9bixtLmZpbGVzPWUuZmlsZXMpOihtLmtleXM9W10sbS5maWxlcz17fSxlLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHEsbGUpe3E9cS5yZXBsYWNlKC9eUm9vdCBFbnRyeVtcL10vLCIiKSxtLmtleXMucHVzaChxKSxtLmZpbGVzW3FdPWUuRmlsZUluZGV4W2xlXX0pKSksYSYmYS5ib29rVkJBJiYoaS52YmEubGVuZ3RoPjA/bS52YmFyYXc9dHIoZSwkcihpLnZiYVswXSksITApOmkuZGVmYXVsdHMmJmkuZGVmYXVsdHMuYmluPT09QzEmJihtLnZiYXJhdz10cihlLCJ4bC92YmFQcm9qZWN0LmJpbiIsITApKSksbS5ib29rVHlwZT1mPyJ4bHNiIjoieGxzeCIsbX1mdW5jdGlvbiBqMihlLGEpe3ZhciByPWF8fHt9LHQ9Ildvcmtib29rIixuPU1lLmZpbmQoZSx0KTt0cnl7aWYodD0iLyFEYXRhU3BhY2VzL1ZlcnNpb24iLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO2lmKCR1KG4uY29udGVudCksdD0iLyFEYXRhU3BhY2VzL0RhdGFTcGFjZU1hcCIsbj1NZS5maW5kKGUsdCksIW58fCFuLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nICIrdCk7dmFyIGk9anUobi5jb250ZW50KTtpZihpLmxlbmd0aCE9PTF8fGlbMF0uY29tcHMubGVuZ3RoIT09MXx8aVswXS5jb21wc1swXS50IT09MHx8aVswXS5uYW1lIT09IlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UifHxpWzBdLmNvbXBzWzBdLnYhPT0iRW5jcnlwdGVkUGFja2FnZSIpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit0KTtpZih0PSIvIURhdGFTcGFjZXMvRGF0YVNwYWNlSW5mby9TdHJvbmdFbmNyeXB0aW9uRGF0YVNwYWNlIixuPU1lLmZpbmQoZSx0KSwhbnx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit0KTt2YXIgZj1ZdShuLmNvbnRlbnQpO2lmKGYubGVuZ3RoIT0xfHxmWzBdIT0iU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybSIpdGhyb3cgbmV3IEVycm9yKCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBiYWQgIit0KTtpZih0PSIvIURhdGFTcGFjZXMvVHJhbnNmb3JtSW5mby9TdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5IixuPU1lLmZpbmQoZSx0KSwhbnx8IW4uY29udGVudCl0aHJvdyBuZXcgRXJyb3IoIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgIit0KTtadShuLmNvbnRlbnQpfWNhdGNoe31pZih0PSIvRW5jcnlwdGlvbkluZm8iLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO3ZhciBzPXF1KG4uY29udGVudCk7aWYodD0iL0VuY3J5cHRlZFBhY2thZ2UiLG49TWUuZmluZChlLHQpLCFufHwhbi5jb250ZW50KXRocm93IG5ldyBFcnJvcigiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyAiK3QpO2lmKHNbMF09PTQmJnR5cGVvZiBkZWNyeXB0X2FnaWxlPCJ1IilyZXR1cm4gZGVjcnlwdF9hZ2lsZShzWzFdLG4uY29udGVudCxyLnBhc3N3b3JkfHwiIixyKTtpZihzWzBdPT0yJiZ0eXBlb2YgZGVjcnlwdF9zdGQ3NjwidSIpcmV0dXJuIGRlY3J5cHRfc3RkNzYoc1sxXSxuLmNvbnRlbnQsci5wYXNzd29yZHx8IiIscik7dGhyb3cgbmV3IEVycm9yKCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZCIpfWZ1bmN0aW9uIFJuKGUsYSl7dmFyIHI9IiI7c3dpdGNoKChhfHx7fSkudHlwZXx8ImJhc2U2NCIpe2Nhc2UiYnVmZmVyIjpyZXR1cm5bZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0sZVs2XSxlWzddXTtjYXNlImJhc2U2NCI6cj1JcihlLnNsaWNlKDAsMTIpKTticmVhaztjYXNlImJpbmFyeSI6cj1lO2JyZWFrO2Nhc2UiYXJyYXkiOnJldHVybltlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdLGVbN11dO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiKyhhJiZhLnR5cGV8fCJ1bmRlZmluZWQiKSl9cmV0dXJuW3IuY2hhckNvZGVBdCgwKSxyLmNoYXJDb2RlQXQoMSksci5jaGFyQ29kZUF0KDIpLHIuY2hhckNvZGVBdCgzKSxyLmNoYXJDb2RlQXQoNCksci5jaGFyQ29kZUF0KDUpLHIuY2hhckNvZGVBdCg2KSxyLmNoYXJDb2RlQXQoNyldfWZ1bmN0aW9uIFkyKGUsYSl7cmV0dXJuIE1lLmZpbmQoZSwiRW5jcnlwdGVkUGFja2FnZSIpP2oyKGUsYSk6RWYoZSxhKX1mdW5jdGlvbiBKMihlLGEpe3ZhciByLHQ9ZSxuPWF8fHt9O3JldHVybiBuLnR5cGV8fChuLnR5cGU9TmUmJkJ1ZmZlci5pc0J1ZmZlcihlKT8iYnVmZmVyIjoiYmFzZTY0Iikscj1taSh0LG4pLEsyKHIsbil9ZnVuY3Rpb24gQmYoZSxhKXt2YXIgcj0wO2U6Zm9yKDtyPGUubGVuZ3RoOylzd2l0Y2goZS5jaGFyQ29kZUF0KHIpKXtjYXNlIDEwOmNhc2UgMTM6Y2FzZSAzMjorK3I7YnJlYWs7Y2FzZSA2MDpyZXR1cm4gU24oZS5zbGljZShyKSxhKTtkZWZhdWx0OmJyZWFrIGV9cmV0dXJuIGx0LnRvX3dvcmtib29rKGUsYSl9ZnVuY3Rpb24gWjIoZSxhKXt2YXIgcj0iIix0PVJuKGUsYSk7c3dpdGNoKGEudHlwZSl7Y2FzZSJiYXNlNjQiOnI9SXIoZSk7YnJlYWs7Y2FzZSJiaW5hcnkiOnI9ZTticmVhaztjYXNlImJ1ZmZlciI6cj1lLnRvU3RyaW5nKCJiaW5hcnkiKTticmVhaztjYXNlImFycmF5IjpyPUJhKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgdHlwZSAiK2EudHlwZSl9cmV0dXJuIHRbMF09PTIzOSYmdFsxXT09MTg3JiZ0WzJdPT0xOTEmJihyPVZlKHIpKSxhLnR5cGU9ImJpbmFyeSIsQmYocixhKX1mdW5jdGlvbiBxMihlLGEpe3ZhciByPWU7cmV0dXJuIGEudHlwZT09ImJhc2U2NCImJihyPUlyKHIpKSx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihyPW5ldyBVaW50OEFycmF5KGUpKSxyPU5lJiZCdWZmZXIuaXNCdWZmZXIoZSk/ZS5zbGljZSgyKS50b1N0cmluZygidXRmMTZsZSIpOnR5cGVvZiBVaW50OEFycmF5PCJ1IiYmciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIikuZGVjb2RlKHIuc2xpY2UoMikpOmFjKHIuc2xpY2UoMikpOlhuKHIuc2xpY2UoMikpLGEudHlwZT0iYmluYXJ5IixCZihyLGEpfWZ1bmN0aW9uIFEyKGUpe3JldHVybiBlLm1hdGNoKC9bXlx4MDAtXHg3Rl0vKT9idChlKTplfWZ1bmN0aW9uIE9uKGUsYSxyLHQpe3JldHVybiB0PyhyLnR5cGU9InN0cmluZyIsbHQudG9fd29ya2Jvb2soZSxyKSk6bHQudG9fd29ya2Jvb2soYSxyKX1mdW5jdGlvbiBwdChlLGEpe1ZuKCk7dmFyIHI9YXx8e307aWYoci5jb2RlcGFnZSYmdHlwZW9mIG50PiJ1IiYmY29uc29sZS5lcnJvcigiQ29kZXBhZ2UgdGFibGVzIGFyZSBub3QgbG9hZGVkLiAgTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbWF5IG5vdCBnaXZlIGV4cGVjdGVkIHJlc3VsdHMiKSx0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHB0KG5ldyBVaW50OEFycmF5KGUpLChyPVVlKHIpLHIudHlwZT0iYXJyYXkiLHIpKTtpZih0eXBlb2YgSW50OEFycmF5PCJ1IiYmZSBpbnN0YW5jZW9mIEludDhBcnJheSlyZXR1cm4gcHQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKSxyKTt0eXBlb2YgVWludDhBcnJheTwidSImJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYhci50eXBlJiYoci50eXBlPXR5cGVvZiBEZW5vPCJ1Ij8iYnVmZmVyIjoiYXJyYXkiKTt2YXIgdD1lLG49WzAsMCwwLDBdLGk9ITE7aWYoci5jZWxsU3R5bGVzJiYoci5jZWxsTkY9ITAsci5zaGVldFN0dWJzPSEwKSx4dD17fSxyLmRhdGVORiYmKHh0LmRhdGVORj1yLmRhdGVORiksci50eXBlfHwoci50eXBlPU5lJiZCdWZmZXIuaXNCdWZmZXIoZSk/ImJ1ZmZlciI6ImJhc2U2NCIpLHIudHlwZT09ImZpbGUiJiYoci50eXBlPU5lPyJidWZmZXIiOiJiaW5hcnkiLHQ9UmMoZSksdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiYhTmUmJihyLnR5cGU9ImFycmF5IikpLHIudHlwZT09InN0cmluZyImJihpPSEwLHIudHlwZT0iYmluYXJ5IixyLmNvZGVwYWdlPTY1MDAxLHQ9UTIoZSkpLHIudHlwZT09ImFycmF5IiYmdHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSYmdHlwZW9mIEFycmF5QnVmZmVyPCJ1Iil7dmFyIGY9bmV3IEFycmF5QnVmZmVyKDMpLHM9bmV3IFVpbnQ4QXJyYXkoZik7aWYocy5mb289ImJhciIsIXMuZm9vKXJldHVybiByPVVlKHIpLHIudHlwZT0iYXJyYXkiLHB0KCQwKHQpLHIpfXN3aXRjaCgobj1Sbih0LHIpKVswXSl7Y2FzZSAyMDg6aWYoblsxXT09PTIwNyYmblsyXT09PTE3JiZuWzNdPT09MjI0JiZuWzRdPT09MTYxJiZuWzVdPT09MTc3JiZuWzZdPT09MjYmJm5bN109PT0yMjUpcmV0dXJuIFkyKE1lLnJlYWQodCxyKSxyKTticmVhaztjYXNlIDk6aWYoblsxXTw9OClyZXR1cm4gRWYodCxyKTticmVhaztjYXNlIDYwOnJldHVybiBTbih0LHIpO2Nhc2UgNzM6aWYoblsxXT09PTczJiZuWzJdPT09NDImJm5bM109PT0wKXRocm93IG5ldyBFcnJvcigiVElGRiBJbWFnZSBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7aWYoblsxXT09PTY4KXJldHVybiBOdSh0LHIpO2JyZWFrO2Nhc2UgODQ6aWYoblsxXT09PTY1JiZuWzJdPT09NjYmJm5bM109PT03NilyZXR1cm4gTXUodCxyKTticmVhaztjYXNlIDgwOnJldHVybiBuWzFdPT09NzUmJm5bMl08OSYmblszXTw5P0oyKHQscik6T24oZSx0LHIsaSk7Y2FzZSAyMzk6cmV0dXJuIG5bM109PT02MD9Tbih0LHIpOk9uKGUsdCxyLGkpO2Nhc2UgMjU1OmlmKG5bMV09PT0yNTQpcmV0dXJuIHEyKHQscik7aWYoblsxXT09PTAmJm5bMl09PT0yJiZuWzNdPT09MClyZXR1cm4gTHQudG9fd29ya2Jvb2sodCxyKTticmVhaztjYXNlIDA6aWYoblsxXT09PTAmJihuWzJdPj0yJiZuWzNdPT09MHx8blsyXT09PTAmJihuWzNdPT09OHx8blszXT09PTkpKSlyZXR1cm4gTHQudG9fd29ya2Jvb2sodCxyKTticmVhaztjYXNlIDM6Y2FzZSAxMzE6Y2FzZSAxMzk6Y2FzZSAxNDA6cmV0dXJuIGJzLnRvX3dvcmtib29rKHQscik7Y2FzZSAxMjM6aWYoblsxXT09PTkyJiZuWzJdPT09MTE0JiZuWzNdPT09MTE2KXJldHVybiB1aCh0LHIpO2JyZWFrO2Nhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBaMih0LHIpO2Nhc2UgMTM3OmlmKG5bMV09PT04MCYmblsyXT09PTc4JiZuWzNdPT09NzEpdGhyb3cgbmV3IEVycm9yKCJQTkcgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldCIpO2JyZWFrO2Nhc2UgMzc6aWYoblsxXT09PTgwJiZuWzJdPT09NjgmJm5bM109PT03MCl0aHJvdyBuZXcgRXJyb3IoIlBERiBGaWxlIGlzIG5vdCBhIHNwcmVhZHNoZWV0Iik7YnJlYWs7Y2FzZSA4OmlmKG5bMV09PT0yMzEpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNdWx0aXBsYW4gMS54IGZpbGUhIik7YnJlYWs7Y2FzZSAxMjppZihuWzFdPT09MjM2KXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgTXVsdGlwbGFuIDIueCBmaWxlISIpO2lmKG5bMV09PT0yMzcpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBNdWx0aXBsYW4gMy54IGZpbGUhIik7YnJlYWt9cmV0dXJuIEl1LmluZGV4T2YoblswXSk+LTEmJm5bMl08PTEyJiZuWzNdPD0zMT9icy50b193b3JrYm9vayh0LHIpOk9uKGUsdCxyLGkpfWZ1bmN0aW9uIGVwKGUsYSxyLHQsbixpLGYpe3ZhciBzPUdlKHIpLGM9Zi5kZWZ2YWwsbz1mLnJhd3x8IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLCJyYXciKSxsPSEwLHU9ZVsiIWRhdGEiXSE9bnVsbCx4PW49PT0xP1tdOnt9O2lmKG4hPT0xKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHgsIl9fcm93TnVtX18iLHt2YWx1ZTpyLGVudW1lcmFibGU6ITF9KX1jYXRjaHt4Ll9fcm93TnVtX189cn1lbHNlIHguX19yb3dOdW1fXz1yO2lmKCF1fHxlWyIhZGF0YSJdW3JdKWZvcih2YXIgaD1hLnMuYztoPD1hLmUuYzsrK2gpe3ZhciBnPXU/KGVbIiFkYXRhIl1bcl18fFtdKVtoXTplW3RbaF0rc107aWYoZz09bnVsbHx8Zy50PT09dm9pZCAwKXtpZihjPT09dm9pZCAwKWNvbnRpbnVlO2lbaF0hPW51bGwmJih4W2lbaF1dPWMpO2NvbnRpbnVlfXZhciBtPWcudjtzd2l0Y2goZy50KXtjYXNlInoiOmlmKG09PW51bGwpYnJlYWs7Y29udGludWU7Y2FzZSJlIjptPW09PTA/bnVsbDp2b2lkIDA7YnJlYWs7Y2FzZSJzIjpjYXNlImIiOmJyZWFrO2Nhc2UibiI6aWYoIWcuenx8IVpyKGcueil8fChtPVNhKG0pLHR5cGVvZiBtPT0ibnVtYmVyIikpYnJlYWs7Y2FzZSJkIjpmJiYoZi5VVEN8fGYucmF3PT09ITEpfHwobT1VYShuZXcgRGF0ZShtKSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlY29nbml6ZWQgdHlwZSAiK2cudCl9aWYoaVtoXSE9bnVsbCl7aWYobT09bnVsbClpZihnLnQ9PSJlIiYmbT09PW51bGwpeFtpW2hdXT1udWxsO2Vsc2UgaWYoYyE9PXZvaWQgMCl4W2lbaF1dPWM7ZWxzZSBpZihvJiZtPT09bnVsbCl4W2lbaF1dPW51bGw7ZWxzZSBjb250aW51ZTtlbHNlIHhbaVtoXV09KGcudD09PSJuIiYmdHlwZW9mIGYucmF3TnVtYmVycz09ImJvb2xlYW4iP2YucmF3TnVtYmVyczpvKT9tOmdhKGcsbSxmKTttIT1udWxsJiYobD0hMSl9fXJldHVybntyb3c6eCxpc2VtcHR5Omx9fWZ1bmN0aW9uIE5uKGUsYSl7aWYoZT09bnVsbHx8ZVsiIXJlZiJdPT1udWxsKXJldHVybltdO3ZhciByPXt0OiJuIix2OjB9LHQ9MCxuPTEsaT1bXSxmPTAscz0iIixjPXtzOntyOjAsYzowfSxlOntyOjAsYzowfX0sbz1hfHx7fSxsPW8ucmFuZ2UhPW51bGw/by5yYW5nZTplWyIhcmVmIl07c3dpdGNoKG8uaGVhZGVyPT09MT90PTE6by5oZWFkZXI9PT0iQSI/dD0yOkFycmF5LmlzQXJyYXkoby5oZWFkZXIpP3Q9MzpvLmhlYWRlcj09bnVsbCYmKHQ9MCksdHlwZW9mIGwpe2Nhc2Uic3RyaW5nIjpjPVplKGwpO2JyZWFrO2Nhc2UibnVtYmVyIjpjPVplKGVbIiFyZWYiXSksYy5zLnI9bDticmVhaztkZWZhdWx0OmM9bH10PjAmJihuPTApO3ZhciB1PUdlKGMucy5yKSx4PVtdLGg9W10sZz0wLG09MCxkPWVbIiFkYXRhIl0hPW51bGwscD1jLnMucix3PTAsXz17fTtkJiYhZVsiIWRhdGEiXVtwXSYmKGVbIiFkYXRhIl1bcF09W10pO3ZhciB5PW8uc2tpcEhpZGRlbiYmZVsiIWNvbHMiXXx8W10sUj1vLnNraXBIaWRkZW4mJmVbIiFyb3dzIl18fFtdO2Zvcih3PWMucy5jO3c8PWMuZS5jOysrdylpZighKHlbd118fHt9KS5oaWRkZW4pc3dpdGNoKHhbd109SGUodykscj1kP2VbIiFkYXRhIl1bcF1bd106ZVt4W3ddK3VdLHQpe2Nhc2UgMTppW3ddPXctYy5zLmM7YnJlYWs7Y2FzZSAyOmlbd109eFt3XTticmVhaztjYXNlIDM6aVt3XT1vLmhlYWRlclt3LWMucy5jXTticmVhaztkZWZhdWx0OmlmKHI9PW51bGwmJihyPXt3OiJfX0VNUFRZIix0OiJzIn0pLHM9Zj1nYShyLG51bGwsbyksbT1fW2ZdfHwwLCFtKV9bZl09MTtlbHNle2RvIHM9ZisiXyIrbSsrO3doaWxlKF9bc10pO19bZl09bSxfW3NdPTF9aVt3XT1zfWZvcihwPWMucy5yK247cDw9Yy5lLnI7KytwKWlmKCEoUltwXXx8e30pLmhpZGRlbil7dmFyIFA9ZXAoZSxjLHAseCx0LGksbyk7KFAuaXNlbXB0eT09PSExfHwodD09PTE/by5ibGFua3Jvd3MhPT0hMTpvLmJsYW5rcm93cykpJiYoaFtnKytdPVAucm93KX1yZXR1cm4gaC5sZW5ndGg9ZyxofXZhciBVZj0vIi9nO2Z1bmN0aW9uIHJwKGUsYSxyLHQsbixpLGYscyxjKXtmb3IodmFyIG89ITAsbD1bXSx1PSIiLHg9R2UociksaD1lWyIhZGF0YSJdIT1udWxsLGc9aCYmZVsiIWRhdGEiXVtyXXx8W10sbT1hLnMuYzttPD1hLmUuYzsrK20paWYodFttXSl7dmFyIGQ9aD9nW21dOmVbdFttXSt4XTtpZihkPT1udWxsKXU9IiI7ZWxzZSBpZihkLnYhPW51bGwpe289ITEsdT0iIisoYy5yYXdOdW1iZXJzJiZkLnQ9PSJuIj9kLnY6Z2EoZCxudWxsLGMpKTtmb3IodmFyIHA9MCx3PTA7cCE9PXUubGVuZ3RoOysrcClpZigodz11LmNoYXJDb2RlQXQocCkpPT09bnx8dz09PWl8fHc9PT0xMHx8dz09PTEzfHx3PT09MzR8fGMuZm9yY2VRdW90ZXMpe3U9JyInK3UucmVwbGFjZShVZiwnIiInKSsnIic7YnJlYWt9dT09IklEIiYmcz09MCYmbC5sZW5ndGg9PTAmJih1PSciSUQiJyl9ZWxzZSBkLmYhPW51bGwmJiFkLkY/KG89ITEsdT0iPSIrZC5mLHUuaW5kZXhPZigiLCIpPj0wJiYodT0nIicrdS5yZXBsYWNlKFVmLCciIicpKyciJykpOnU9IiI7bC5wdXNoKHUpfWlmKGMuc3RyaXApZm9yKDtsW2wubGVuZ3RoLTFdPT09IiI7KS0tbC5sZW5ndGg7cmV0dXJuIGMuYmxhbmtyb3dzPT09ITEmJm8/bnVsbDpsLmpvaW4oZil9ZnVuY3Rpb24gSGYoZSxhKXt2YXIgcj1bXSx0PWE/P3t9O2lmKGU9PW51bGx8fGVbIiFyZWYiXT09bnVsbClyZXR1cm4iIjtmb3IodmFyIG49WmUoZVsiIXJlZiJdKSxpPXQuRlMhPT12b2lkIDA/dC5GUzoiLCIsZj1pLmNoYXJDb2RlQXQoMCkscz10LlJTIT09dm9pZCAwP3QuUlM6YApgLGM9cy5jaGFyQ29kZUF0KDApLG89IiIsbD1bXSx1PXQuc2tpcEhpZGRlbiYmZVsiIWNvbHMiXXx8W10seD10LnNraXBIaWRkZW4mJmVbIiFyb3dzIl18fFtdLGg9bi5zLmM7aDw9bi5lLmM7KytoKSh1W2hdfHx7fSkuaGlkZGVufHwobFtoXT1IZShoKSk7Zm9yKHZhciBnPTAsbT1uLnMucjttPD1uLmUucjsrK20pKHhbbV18fHt9KS5oaWRkZW58fChvPXJwKGUsbixtLGwsZixjLGksZyx0KSxvIT1udWxsJiYob3x8dC5ibGFua3Jvd3MhPT0hMSkmJnIucHVzaCgoZysrP3M6IiIpK28pKTtyZXR1cm4gci5qb2luKCIiKX1mdW5jdGlvbiBhcChlLGEpe2F8fChhPXt9KSxhLkZTPSIJIixhLlJTPWAKYDt2YXIgcj1IZihlLGEpO3JldHVybiByfWZ1bmN0aW9uIHRwKGUsYSl7dmFyIHI9IiIsdCxuPSIiO2lmKGU9PW51bGx8fGVbIiFyZWYiXT09bnVsbClyZXR1cm5bXTt2YXIgaT1aZShlWyIhcmVmIl0pLGY9IiIscz1bXSxjLG89W10sbD1lWyIhZGF0YSJdIT1udWxsO2ZvcihjPWkucy5jO2M8PWkuZS5jOysrYylzW2NdPUhlKGMpO2Zvcih2YXIgdT1pLnMucjt1PD1pLmUucjsrK3UpZm9yKGY9R2UodSksYz1pLnMuYztjPD1pLmUuYzsrK2MpaWYocj1zW2NdK2YsdD1sPyhlWyIhZGF0YSJdW3VdfHxbXSlbY106ZVtyXSxuPSIiLHQhPT12b2lkIDApe2lmKHQuRiE9bnVsbCl7aWYocj10LkYsIXQuZiljb250aW51ZTtuPXQuZixyLmluZGV4T2YoIjoiKT09LTEmJihyPXIrIjoiK3IpfWlmKHQuZiE9bnVsbCluPXQuZjtlbHNle2lmKGEmJmEudmFsdWVzPT09ITEpY29udGludWU7aWYodC50PT0ieiIpY29udGludWU7aWYodC50PT0ibiImJnQudiE9bnVsbCluPSIiK3QudjtlbHNlIGlmKHQudD09ImIiKW49dC52PyJUUlVFIjoiRkFMU0UiO2Vsc2UgaWYodC53IT09dm9pZCAwKW49IiciK3QudztlbHNle2lmKHQudj09PXZvaWQgMCljb250aW51ZTt0LnQ9PSJzIj9uPSInIit0LnY6bj0iIit0LnZ9fW9bby5sZW5ndGhdPXIrIj0iK259cmV0dXJuIG99ZnVuY3Rpb24gV2YoZSxhLHIpe3ZhciB0PXJ8fHt9LG49ZT9lWyIhZGF0YSJdIT1udWxsOnQuZGVuc2UsaT0rIXQuc2tpcEhlYWRlcixmPWV8fHt9OyFlJiZuJiYoZlsiIWRhdGEiXT1bXSk7dmFyIHM9MCxjPTA7aWYoZiYmdC5vcmlnaW4hPW51bGwpaWYodHlwZW9mIHQub3JpZ2luPT0ibnVtYmVyIilzPXQub3JpZ2luO2Vsc2V7dmFyIG89dHlwZW9mIHQub3JpZ2luPT0ic3RyaW5nIj9ncih0Lm9yaWdpbik6dC5vcmlnaW47cz1vLnIsYz1vLmN9dmFyIGw9e3M6e2M6MCxyOjB9LGU6e2MscjpzK2EubGVuZ3RoLTEraX19O2lmKGZbIiFyZWYiXSl7dmFyIHU9WmUoZlsiIXJlZiJdKTtsLmUuYz1NYXRoLm1heChsLmUuYyx1LmUuYyksbC5lLnI9TWF0aC5tYXgobC5lLnIsdS5lLnIpLHM9PS0xJiYocz11LmUucisxLGwuZS5yPXMrYS5sZW5ndGgtMStpKX1lbHNlIHM9PS0xJiYocz0wLGwuZS5yPWEubGVuZ3RoLTEraSk7dmFyIHg9dC5oZWFkZXJ8fFtdLGg9MCxnPVtdO2EuZm9yRWFjaChmdW5jdGlvbihkLHApe24mJiFmWyIhZGF0YSJdW3MrcCtpXSYmKGZbIiFkYXRhIl1bcytwK2ldPVtdKSxuJiYoZz1mWyIhZGF0YSJdW3MrcCtpXSkscHIoZCkuZm9yRWFjaChmdW5jdGlvbih3KXsoaD14LmluZGV4T2YodykpPT0tMSYmKHhbaD14Lmxlbmd0aF09dyk7dmFyIF89ZFt3XSx5PSJ6IixSPSIiLFA9bj8iIjpIZShjK2gpK0dlKHMrcCtpKSxiPW4/Z1tjK2hdOmZbUF07XyYmdHlwZW9mIF89PSJvYmplY3QiJiYhKF8gaW5zdGFuY2VvZiBEYXRlKT9uP2dbYytoXT1fOmZbUF09XzoodHlwZW9mIF89PSJudW1iZXIiP3k9Im4iOnR5cGVvZiBfPT0iYm9vbGVhbiI/eT0iYiI6dHlwZW9mIF89PSJzdHJpbmciP3k9InMiOl8gaW5zdGFuY2VvZiBEYXRlPyh5PSJkIix0LlVUQ3x8KF89bzAoXykpLHQuY2VsbERhdGVzfHwoeT0ibiIsXz1vcihfKSksUj1iIT1udWxsJiZiLnomJlpyKGIueik/Yi56OnQuZGF0ZU5GfHxUZVsxNF0pOl89PT1udWxsJiZ0Lm51bGxFcnJvciYmKHk9ImUiLF89MCksYj8oYi50PXksYi52PV8sZGVsZXRlIGIudyxkZWxldGUgYi5SLFImJihiLno9UikpOm4/Z1tjK2hdPWI9e3Q6eSx2Ol99OmZbUF09Yj17dDp5LHY6X30sUiYmKGIuej1SKSl9KX0pLGwuZS5jPU1hdGgubWF4KGwuZS5jLGMreC5sZW5ndGgtMSk7dmFyIG09R2Uocyk7aWYobiYmIWZbIiFkYXRhIl1bc10mJihmWyIhZGF0YSJdW3NdPVtdKSxpKWZvcihoPTA7aDx4Lmxlbmd0aDsrK2gpbj9mWyIhZGF0YSJdW3NdW2grY109e3Q6InMiLHY6eFtoXX06ZltIZShoK2MpK21dPXt0OiJzIix2OnhbaF19O3JldHVybiBmWyIhcmVmIl09SWUobCksZn1mdW5jdGlvbiBucChlLGEpe3JldHVybiBXZihudWxsLGUsYSl9ZnVuY3Rpb24gSnQoZSxhLHIpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoZVsiIWRhdGEiXSE9bnVsbCl7dmFyIHQ9Z3IoYSk7cmV0dXJuIGVbIiFkYXRhIl1bdC5yXXx8KGVbIiFkYXRhIl1bdC5yXT1bXSksZVsiIWRhdGEiXVt0LnJdW3QuY118fChlWyIhZGF0YSJdW3Qucl1bdC5jXT17dDoieiJ9KX1yZXR1cm4gZVthXXx8KGVbYV09e3Q6InoifSl9cmV0dXJuIHR5cGVvZiBhIT0ibnVtYmVyIj9KdChlLERlKGEpKTpKdChlLEhlKHJ8fDApK0dlKGEpKX1mdW5jdGlvbiBpcChlLGEpe2lmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoYT49MCYmZS5TaGVldE5hbWVzLmxlbmd0aD5hKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgIyAiK2EpfWVsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgcj1lLlNoZWV0TmFtZXMuaW5kZXhPZihhKTtpZihyPi0xKXJldHVybiByO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc2hlZXQgbmFtZSB8IithKyJ8Iil9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNoZWV0IHwiK2ErInwiKX1mdW5jdGlvbiBNbihlLGEpe3ZhciByPXtTaGVldE5hbWVzOltdLFNoZWV0czp7fX07cmV0dXJuIGUmJlp0KHIsZSxhfHwiU2hlZXQxIikscn1mdW5jdGlvbiBadChlLGEscix0KXt2YXIgbj0xO2lmKCFyKWZvcig7bjw9NjU1MzUmJmUuU2hlZXROYW1lcy5pbmRleE9mKHI9IlNoZWV0IituKSE9LTE7KytuLHI9dm9pZCAwKTtpZighcnx8ZS5TaGVldE5hbWVzLmxlbmd0aD49NjU1MzUpdGhyb3cgbmV3IEVycm9yKCJUb28gbWFueSB3b3Jrc2hlZXRzIik7aWYodCYmZS5TaGVldE5hbWVzLmluZGV4T2Yocik+PTAmJnIubGVuZ3RoPDMyKXt2YXIgaT1yLm1hdGNoKC9cZCskLyk7bj1pJiYraVswXXx8MDt2YXIgZj1pJiZyLnNsaWNlKDAsaS5pbmRleCl8fHI7Zm9yKCsrbjtuPD02NTUzNSYmZS5TaGVldE5hbWVzLmluZGV4T2Yocj1mK24pIT0tMTsrK24pO31pZihkdihyKSxlLlNoZWV0TmFtZXMuaW5kZXhPZihyKT49MCl0aHJvdyBuZXcgRXJyb3IoIldvcmtzaGVldCB3aXRoIG5hbWUgfCIrcisifCBhbHJlYWR5IGV4aXN0cyEiKTtyZXR1cm4gZS5TaGVldE5hbWVzLnB1c2gociksZS5TaGVldHNbcl09YSxyfWZ1bmN0aW9uIHNwKGUsYSxyKXtlLldvcmtib29rfHwoZS5Xb3JrYm9vaz17fSksZS5Xb3JrYm9vay5TaGVldHN8fChlLldvcmtib29rLlNoZWV0cz1bXSk7dmFyIHQ9aXAoZSxhKTtzd2l0Y2goZS5Xb3JrYm9vay5TaGVldHNbdF18fChlLldvcmtib29rLlNoZWV0c1t0XT17fSkscil7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkJhZCBzaGVldCB2aXNpYmlsaXR5IHNldHRpbmcgIityKX1lLldvcmtib29rLlNoZWV0c1t0XS5IaWRkZW49cn1mdW5jdGlvbiBmcChlLGEpe3JldHVybiBlLno9YSxlfWZ1bmN0aW9uIFZmKGUsYSxyKXtyZXR1cm4gYT8oZS5sPXtUYXJnZXQ6YX0sciYmKGUubC5Ub29sdGlwPXIpKTpkZWxldGUgZS5sLGV9ZnVuY3Rpb24gY3AoZSxhLHIpe3JldHVybiBWZihlLCIjIithLHIpfWZ1bmN0aW9uIG9wKGUsYSxyKXtlLmN8fChlLmM9W10pLGUuYy5wdXNoKHt0OmEsYTpyfHwiU2hlZXRKUyJ9KX1mdW5jdGlvbiBscChlLGEscix0KXtmb3IodmFyIG49dHlwZW9mIGEhPSJzdHJpbmciP2E6WmUoYSksaT10eXBlb2YgYT09InN0cmluZyI/YTpJZShhKSxmPW4ucy5yO2Y8PW4uZS5yOysrZilmb3IodmFyIHM9bi5zLmM7czw9bi5lLmM7KytzKXt2YXIgYz1KdChlLGYscyk7Yy50PSJuIixjLkY9aSxkZWxldGUgYy52LGY9PW4ucy5yJiZzPT1uLnMuYyYmKGMuZj1yLHQmJihjLkQ9ITApKX12YXIgbz1wYShlWyIhcmVmIl0pO3JldHVybiBvLnMucj5uLnMuciYmKG8ucy5yPW4ucy5yKSxvLnMuYz5uLnMuYyYmKG8ucy5jPW4ucy5jKSxvLmUucjxuLmUuciYmKG8uZS5yPW4uZS5yKSxvLmUuYzxuLmUuYyYmKG8uZS5jPW4uZS5jKSxlWyIhcmVmIl09SWUobyksZX12YXIgaWE9e2VuY29kZV9jb2w6SGUsZW5jb2RlX3JvdzpHZSxlbmNvZGVfY2VsbDpEZSxlbmNvZGVfcmFuZ2U6SWUsZGVjb2RlX2NvbDpzbixkZWNvZGVfcm93Om5uLHNwbGl0X2NlbGw6VG8sZGVjb2RlX2NlbGw6Z3IsZGVjb2RlX3JhbmdlOnBhLGZvcm1hdF9jZWxsOmdhLHNoZWV0X25ldzpBbyxzaGVldF9hZGRfYW9hOlppLHNoZWV0X2FkZF9qc29uOldmLHNoZWV0X2FkZF9kb206Q2YsYW9hX3RvX3NoZWV0OmN0LGpzb25fdG9fc2hlZXQ6bnAsdGFibGVfdG9fc2hlZXQ6YmYsdGFibGVfdG9fYm9vazpGMixzaGVldF90b19jc3Y6SGYsc2hlZXRfdG9fdHh0OmFwLHNoZWV0X3RvX2pzb246Tm4sc2hlZXRfdG9faHRtbDp3MixzaGVldF90b19mb3JtdWxhZTp0cCxzaGVldF90b19yb3dfb2JqZWN0X2FycmF5Ok5uLHZhbGlkYXRlX21lcmdlczpUbixtZWFzdXJlX3RleHRfd2lkdGg6QnMsYXV0b19maXRfY29sdW1uczpnbixhdXRvZml0X2NvbHVtbnM6Z24sY29sX3dpZHRoX3RvX3B4Ol9hLHB4X3RvX2NvbF93aWR0aDpmdW5jdGlvbihlKXtyZXR1cm4gWmEoSmEoZSkpfSxyb3dfaGVpZ2h0X3RvX3B4Okh0LHB4X3RvX3Jvd19oZWlnaHQ6Ymgsc2hlZXRfZ2V0X2NlbGw6SnQsYm9va19uZXc6TW4sYm9va19hcHBlbmRfc2hlZXQ6WnQsYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eTpzcCxjZWxsX3NldF9udW1iZXJfZm9ybWF0OmZwLGNlbGxfc2V0X2h5cGVybGluazpWZixjZWxsX3NldF9pbnRlcm5hbF9saW5rOmNwLGNlbGxfYWRkX2NvbW1lbnQ6b3Asc2hlZXRfc2V0X2FycmF5X2Zvcm11bGE6bHAsY29uc3RzOntTSEVFVF9WSVNJQkxFOjAsU0hFRVRfSElEREVOOjEsU0hFRVRfVkVSWV9ISURERU46Mn19O2Z1bmN0aW9uIFAwKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIFAwPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYX06ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJmEuY29uc3RydWN0b3I9PT1TeW1ib2wmJmEhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBhfSxQMChlKX12YXIgdXA9L15ccysvLGhwPS9ccyskLztmdW5jdGlvbiBfZShlLGEpe2lmKGU9ZXx8IiIsYT1hfHx7fSxlIGluc3RhbmNlb2YgX2UpcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNlb2YgX2UpKXJldHVybiBuZXcgX2UoZSxhKTt2YXIgcj14cChlKTt0aGlzLl9vcmlnaW5hbElucHV0PWUsdGhpcy5fcj1yLnIsdGhpcy5fZz1yLmcsdGhpcy5fYj1yLmIsdGhpcy5fYT1yLmEsdGhpcy5fcm91bmRBPU1hdGgucm91bmQoMTAwKnRoaXMuX2EpLzEwMCx0aGlzLl9mb3JtYXQ9YS5mb3JtYXR8fHIuZm9ybWF0LHRoaXMuX2dyYWRpZW50VHlwZT1hLmdyYWRpZW50VHlwZSx0aGlzLl9yPDEmJih0aGlzLl9yPU1hdGgucm91bmQodGhpcy5fcikpLHRoaXMuX2c8MSYmKHRoaXMuX2c9TWF0aC5yb3VuZCh0aGlzLl9nKSksdGhpcy5fYjwxJiYodGhpcy5fYj1NYXRoLnJvdW5kKHRoaXMuX2IpKSx0aGlzLl9vaz1yLm9rfV9lLnByb3RvdHlwZT17aXNEYXJrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnJpZ2h0bmVzcygpPDEyOH0saXNMaWdodDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmlzRGFyaygpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29rfSxnZXRPcmlnaW5hbElucHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsSW5wdXR9LGdldEZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtYXR9LGdldEFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F9LGdldEJyaWdodG5lc3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRvUmdiKCk7cmV0dXJuKGEucioyOTkrYS5nKjU4NythLmIqMTE0KS8xZTN9LGdldEx1bWluYW5jZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMudG9SZ2IoKSxyLHQsbixpLGYscztyZXR1cm4gcj1hLnIvMjU1LHQ9YS5nLzI1NSxuPWEuYi8yNTUscjw9LjAzOTI4P2k9ci8xMi45MjppPU1hdGgucG93KChyKy4wNTUpLzEuMDU1LDIuNCksdDw9LjAzOTI4P2Y9dC8xMi45MjpmPU1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCksbjw9LjAzOTI4P3M9bi8xMi45MjpzPU1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCksLjIxMjYqaSsuNzE1MipmKy4wNzIyKnN9LHNldEFscGhhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9hPWpmKGEpLHRoaXMuX3JvdW5kQT1NYXRoLnJvdW5kKDEwMCp0aGlzLl9hKS8xMDAsdGhpc30sdG9Ic3Y6ZnVuY3Rpb24oKXt2YXIgYT1YZih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYik7cmV0dXJue2g6YS5oKjM2MCxzOmEucyx2OmEudixhOnRoaXMuX2F9fSx0b0hzdlN0cmluZzpmdW5jdGlvbigpe3ZhciBhPVhmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKSxyPU1hdGgucm91bmQoYS5oKjM2MCksdD1NYXRoLnJvdW5kKGEucyoxMDApLG49TWF0aC5yb3VuZChhLnYqMTAwKTtyZXR1cm4gdGhpcy5fYT09MT8iaHN2KCIrcisiLCAiK3QrIiUsICIrbisiJSkiOiJoc3ZhKCIrcisiLCAiK3QrIiUsICIrbisiJSwgIit0aGlzLl9yb3VuZEErIikifSx0b0hzbDpmdW5jdGlvbigpe3ZhciBhPUdmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iKTtyZXR1cm57aDphLmgqMzYwLHM6YS5zLGw6YS5sLGE6dGhpcy5fYX19LHRvSHNsU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9R2YodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IpLHI9TWF0aC5yb3VuZChhLmgqMzYwKSx0PU1hdGgucm91bmQoYS5zKjEwMCksbj1NYXRoLnJvdW5kKGEubCoxMDApO3JldHVybiB0aGlzLl9hPT0xPyJoc2woIityKyIsICIrdCsiJSwgIituKyIlKSI6ImhzbGEoIityKyIsICIrdCsiJSwgIituKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvSGV4OmZ1bmN0aW9uKGEpe3JldHVybiB6Zih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYixhKX0sdG9IZXhTdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIiMiK3RoaXMudG9IZXgoYSl9LHRvSGV4ODpmdW5jdGlvbihhKXtyZXR1cm4gZ3AodGhpcy5fcix0aGlzLl9nLHRoaXMuX2IsdGhpcy5fYSxhKX0sdG9IZXg4U3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiIjIit0aGlzLnRvSGV4OChhKX0sdG9SZ2I6ZnVuY3Rpb24oKXtyZXR1cm57cjpNYXRoLnJvdW5kKHRoaXMuX3IpLGc6TWF0aC5yb3VuZCh0aGlzLl9nKSxiOk1hdGgucm91bmQodGhpcy5fYiksYTp0aGlzLl9hfX0sdG9SZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT09MT8icmdiKCIrTWF0aC5yb3VuZCh0aGlzLl9yKSsiLCAiK01hdGgucm91bmQodGhpcy5fZykrIiwgIitNYXRoLnJvdW5kKHRoaXMuX2IpKyIpIjoicmdiYSgiK01hdGgucm91bmQodGhpcy5fcikrIiwgIitNYXRoLnJvdW5kKHRoaXMuX2cpKyIsICIrTWF0aC5yb3VuZCh0aGlzLl9iKSsiLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvUGVyY2VudGFnZVJnYjpmdW5jdGlvbigpe3JldHVybntyOk1hdGgucm91bmQoS2UodGhpcy5fciwyNTUpKjEwMCkrIiUiLGc6TWF0aC5yb3VuZChLZSh0aGlzLl9nLDI1NSkqMTAwKSsiJSIsYjpNYXRoLnJvdW5kKEtlKHRoaXMuX2IsMjU1KSoxMDApKyIlIixhOnRoaXMuX2F9fSx0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT09MT8icmdiKCIrTWF0aC5yb3VuZChLZSh0aGlzLl9yLDI1NSkqMTAwKSsiJSwgIitNYXRoLnJvdW5kKEtlKHRoaXMuX2csMjU1KSoxMDApKyIlLCAiK01hdGgucm91bmQoS2UodGhpcy5fYiwyNTUpKjEwMCkrIiUpIjoicmdiYSgiK01hdGgucm91bmQoS2UodGhpcy5fciwyNTUpKjEwMCkrIiUsICIrTWF0aC5yb3VuZChLZSh0aGlzLl9nLDI1NSkqMTAwKSsiJSwgIitNYXRoLnJvdW5kKEtlKHRoaXMuX2IsMjU1KSoxMDApKyIlLCAiK3RoaXMuX3JvdW5kQSsiKSJ9LHRvTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPT09MD8idHJhbnNwYXJlbnQiOnRoaXMuX2E8MT8hMTpicFt6Zih0aGlzLl9yLHRoaXMuX2csdGhpcy5fYiwhMCldfHwhMX0sdG9GaWx0ZXI6ZnVuY3Rpb24oYSl7dmFyIHI9IiMiKyRmKHRoaXMuX3IsdGhpcy5fZyx0aGlzLl9iLHRoaXMuX2EpLHQ9cixuPXRoaXMuX2dyYWRpZW50VHlwZT8iR3JhZGllbnRUeXBlID0gMSwgIjoiIjtpZihhKXt2YXIgaT1fZShhKTt0PSIjIiskZihpLl9yLGkuX2csaS5fYixpLl9hKX1yZXR1cm4icHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KCIrbisic3RhcnRDb2xvcnN0cj0iK3IrIixlbmRDb2xvcnN0cj0iK3QrIikifSx0b1N0cmluZzpmdW5jdGlvbihhKXt2YXIgcj0hIWE7YT1hfHx0aGlzLl9mb3JtYXQ7dmFyIHQ9ITEsbj10aGlzLl9hPDEmJnRoaXMuX2E+PTAsaT0hciYmbiYmKGE9PT0iaGV4Inx8YT09PSJoZXg2Inx8YT09PSJoZXgzInx8YT09PSJoZXg0Inx8YT09PSJoZXg4Inx8YT09PSJuYW1lIik7cmV0dXJuIGk/YT09PSJuYW1lIiYmdGhpcy5fYT09PTA/dGhpcy50b05hbWUoKTp0aGlzLnRvUmdiU3RyaW5nKCk6KGE9PT0icmdiIiYmKHQ9dGhpcy50b1JnYlN0cmluZygpKSxhPT09InByZ2IiJiYodD10aGlzLnRvUGVyY2VudGFnZVJnYlN0cmluZygpKSwoYT09PSJoZXgifHxhPT09ImhleDYiKSYmKHQ9dGhpcy50b0hleFN0cmluZygpKSxhPT09ImhleDMiJiYodD10aGlzLnRvSGV4U3RyaW5nKCEwKSksYT09PSJoZXg0IiYmKHQ9dGhpcy50b0hleDhTdHJpbmcoITApKSxhPT09ImhleDgiJiYodD10aGlzLnRvSGV4OFN0cmluZygpKSxhPT09Im5hbWUiJiYodD10aGlzLnRvTmFtZSgpKSxhPT09ImhzbCImJih0PXRoaXMudG9Ic2xTdHJpbmcoKSksYT09PSJoc3YiJiYodD10aGlzLnRvSHN2U3RyaW5nKCkpLHR8fHRoaXMudG9IZXhTdHJpbmcoKSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIF9lKHRoaXMudG9TdHJpbmcoKSl9LF9hcHBseU1vZGlmaWNhdGlvbjpmdW5jdGlvbihhLHIpe3ZhciB0PWEuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwocikpKTtyZXR1cm4gdGhpcy5fcj10Ll9yLHRoaXMuX2c9dC5fZyx0aGlzLl9iPXQuX2IsdGhpcy5zZXRBbHBoYSh0Ll9hKSx0aGlzfSxsaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHdwLGFyZ3VtZW50cyl9LGJyaWdodGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKEZwLGFyZ3VtZW50cyl9LGRhcmtlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihUcCxhcmd1bWVudHMpfSxkZXNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKG1wLGFyZ3VtZW50cyl9LHNhdHVyYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKF9wLGFyZ3VtZW50cyl9LGdyZXlzY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihrcCxhcmd1bWVudHMpfSxzcGluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKEVwLGFyZ3VtZW50cyl9LF9hcHBseUNvbWJpbmF0aW9uOmZ1bmN0aW9uKGEscil7cmV0dXJuIGEuYXBwbHkobnVsbCxbdGhpc10uY29uY2F0KFtdLnNsaWNlLmNhbGwocikpKX0sYW5hbG9nb3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oU3AsYXJndW1lbnRzKX0sY29tcGxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEFwLGFyZ3VtZW50cyl9LG1vbm9jaHJvbWF0aWM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihDcCxhcmd1bWVudHMpfSxzcGxpdGNvbXBsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih5cCxhcmd1bWVudHMpfSx0cmlhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEtmLFszXSl9LHRldHJhZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKEtmLFs0XSl9fSxfZS5mcm9tUmF0aW89ZnVuY3Rpb24oZSxhKXtpZihQMChlKT09Im9iamVjdCIpe3ZhciByPXt9O2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJih0PT09ImEiP3JbdF09ZVt0XTpyW3RdPXF0KGVbdF0pKTtlPXJ9cmV0dXJuIF9lKGUsYSl9O2Z1bmN0aW9uIHhwKGUpe3ZhciBhPXtyOjAsZzowLGI6MH0scj0xLHQ9bnVsbCxuPW51bGwsaT1udWxsLGY9ITEscz0hMTtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT1PcChlKSksUDAoZSk9PSJvYmplY3QiJiYod2EoZS5yKSYmd2EoZS5nKSYmd2EoZS5iKT8oYT1kcChlLnIsZS5nLGUuYiksZj0hMCxzPVN0cmluZyhlLnIpLnN1YnN0cigtMSk9PT0iJSI/InByZ2IiOiJyZ2IiKTp3YShlLmgpJiZ3YShlLnMpJiZ3YShlLnYpPyh0PXF0KGUucyksbj1xdChlLnYpLGE9cHAoZS5oLHQsbiksZj0hMCxzPSJoc3YiKTp3YShlLmgpJiZ3YShlLnMpJiZ3YShlLmwpJiYodD1xdChlLnMpLGk9cXQoZS5sKSxhPXZwKGUuaCx0LGkpLGY9ITAscz0iaHNsIiksZS5oYXNPd25Qcm9wZXJ0eSgiYSIpJiYocj1lLmEpKSxyPWpmKHIpLHtvazpmLGZvcm1hdDplLmZvcm1hdHx8cyxyOk1hdGgubWluKDI1NSxNYXRoLm1heChhLnIsMCkpLGc6TWF0aC5taW4oMjU1LE1hdGgubWF4KGEuZywwKSksYjpNYXRoLm1pbigyNTUsTWF0aC5tYXgoYS5iLDApKSxhOnJ9fWZ1bmN0aW9uIGRwKGUsYSxyKXtyZXR1cm57cjpLZShlLDI1NSkqMjU1LGc6S2UoYSwyNTUpKjI1NSxiOktlKHIsMjU1KSoyNTV9fWZ1bmN0aW9uIEdmKGUsYSxyKXtlPUtlKGUsMjU1KSxhPUtlKGEsMjU1KSxyPUtlKHIsMjU1KTt2YXIgdD1NYXRoLm1heChlLGEsciksbj1NYXRoLm1pbihlLGEsciksaSxmLHM9KHQrbikvMjtpZih0PT1uKWk9Zj0wO2Vsc2V7dmFyIGM9dC1uO3N3aXRjaChmPXM+LjU/Yy8oMi10LW4pOmMvKHQrbiksdCl7Y2FzZSBlOmk9KGEtcikvYysoYTxyPzY6MCk7YnJlYWs7Y2FzZSBhOmk9KHItZSkvYysyO2JyZWFrO2Nhc2UgcjppPShlLWEpL2MrNDticmVha31pLz02fXJldHVybntoOmksczpmLGw6c319ZnVuY3Rpb24gdnAoZSxhLHIpe3ZhciB0LG4saTtlPUtlKGUsMzYwKSxhPUtlKGEsMTAwKSxyPUtlKHIsMTAwKTtmdW5jdGlvbiBmKG8sbCx1KXtyZXR1cm4gdTwwJiYodSs9MSksdT4xJiYodS09MSksdTwxLzY/bysobC1vKSo2KnU6dTwxLzI/bDp1PDIvMz9vKyhsLW8pKigyLzMtdSkqNjpvfWlmKGE9PT0wKXQ9bj1pPXI7ZWxzZXt2YXIgcz1yPC41P3IqKDErYSk6cithLXIqYSxjPTIqci1zO3Q9ZihjLHMsZSsxLzMpLG49ZihjLHMsZSksaT1mKGMscyxlLTEvMyl9cmV0dXJue3I6dCoyNTUsZzpuKjI1NSxiOmkqMjU1fX1mdW5jdGlvbiBYZihlLGEscil7ZT1LZShlLDI1NSksYT1LZShhLDI1NSkscj1LZShyLDI1NSk7dmFyIHQ9TWF0aC5tYXgoZSxhLHIpLG49TWF0aC5taW4oZSxhLHIpLGksZixzPXQsYz10LW47aWYoZj10PT09MD8wOmMvdCx0PT1uKWk9MDtlbHNle3N3aXRjaCh0KXtjYXNlIGU6aT0oYS1yKS9jKyhhPHI/NjowKTticmVhaztjYXNlIGE6aT0oci1lKS9jKzI7YnJlYWs7Y2FzZSByOmk9KGUtYSkvYys0O2JyZWFrfWkvPTZ9cmV0dXJue2g6aSxzOmYsdjpzfX1mdW5jdGlvbiBwcChlLGEscil7ZT1LZShlLDM2MCkqNixhPUtlKGEsMTAwKSxyPUtlKHIsMTAwKTt2YXIgdD1NYXRoLmZsb29yKGUpLG49ZS10LGk9ciooMS1hKSxmPXIqKDEtbiphKSxzPXIqKDEtKDEtbikqYSksYz10JTYsbz1bcixmLGksaSxzLHJdW2NdLGw9W3MscixyLGYsaSxpXVtjXSx1PVtpLGkscyxyLHIsZl1bY107cmV0dXJue3I6byoyNTUsZzpsKjI1NSxiOnUqMjU1fX1mdW5jdGlvbiB6ZihlLGEscix0KXt2YXIgbj1bZWEoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQoYSkudG9TdHJpbmcoMTYpKSxlYShNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSldO3JldHVybiB0JiZuWzBdLmNoYXJBdCgwKT09blswXS5jaGFyQXQoMSkmJm5bMV0uY2hhckF0KDApPT1uWzFdLmNoYXJBdCgxKSYmblsyXS5jaGFyQXQoMCk9PW5bMl0uY2hhckF0KDEpP25bMF0uY2hhckF0KDApK25bMV0uY2hhckF0KDApK25bMl0uY2hhckF0KDApOm4uam9pbigiIil9ZnVuY3Rpb24gZ3AoZSxhLHIsdCxuKXt2YXIgaT1bZWEoTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQoYSkudG9TdHJpbmcoMTYpKSxlYShNYXRoLnJvdW5kKHIpLnRvU3RyaW5nKDE2KSksZWEoWWYodCkpXTtyZXR1cm4gbiYmaVswXS5jaGFyQXQoMCk9PWlbMF0uY2hhckF0KDEpJiZpWzFdLmNoYXJBdCgwKT09aVsxXS5jaGFyQXQoMSkmJmlbMl0uY2hhckF0KDApPT1pWzJdLmNoYXJBdCgxKSYmaVszXS5jaGFyQXQoMCk9PWlbM10uY2hhckF0KDEpP2lbMF0uY2hhckF0KDApK2lbMV0uY2hhckF0KDApK2lbMl0uY2hhckF0KDApK2lbM10uY2hhckF0KDApOmkuam9pbigiIil9ZnVuY3Rpb24gJGYoZSxhLHIsdCl7dmFyIG49W2VhKFlmKHQpKSxlYShNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KSksZWEoTWF0aC5yb3VuZChhKS50b1N0cmluZygxNikpLGVhKE1hdGgucm91bmQocikudG9TdHJpbmcoMTYpKV07cmV0dXJuIG4uam9pbigiIil9X2UuZXF1YWxzPWZ1bmN0aW9uKGUsYSl7cmV0dXJuIWV8fCFhPyExOl9lKGUpLnRvUmdiU3RyaW5nKCk9PV9lKGEpLnRvUmdiU3RyaW5nKCl9LF9lLnJhbmRvbT1mdW5jdGlvbigpe3JldHVybiBfZS5mcm9tUmF0aW8oe3I6TWF0aC5yYW5kb20oKSxnOk1hdGgucmFuZG9tKCksYjpNYXRoLnJhbmRvbSgpfSl9O2Z1bmN0aW9uIG1wKGUsYSl7YT1hPT09MD8wOmF8fDEwO3ZhciByPV9lKGUpLnRvSHNsKCk7cmV0dXJuIHIucy09YS8xMDAsci5zPUwwKHIucyksX2Uocil9ZnVuY3Rpb24gX3AoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9Ic2woKTtyZXR1cm4gci5zKz1hLzEwMCxyLnM9TDAoci5zKSxfZShyKX1mdW5jdGlvbiBrcChlKXtyZXR1cm4gX2UoZSkuZGVzYXR1cmF0ZSgxMDApfWZ1bmN0aW9uIHdwKGUsYSl7YT1hPT09MD8wOmF8fDEwO3ZhciByPV9lKGUpLnRvSHNsKCk7cmV0dXJuIHIubCs9YS8xMDAsci5sPUwwKHIubCksX2Uocil9ZnVuY3Rpb24gRnAoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9SZ2IoKTtyZXR1cm4gci5yPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LHIuci1NYXRoLnJvdW5kKDI1NSotKGEvMTAwKSkpKSxyLmc9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsci5nLU1hdGgucm91bmQoMjU1Ki0oYS8xMDApKSkpLHIuYj1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxyLmItTWF0aC5yb3VuZCgyNTUqLShhLzEwMCkpKSksX2Uocil9ZnVuY3Rpb24gVHAoZSxhKXthPWE9PT0wPzA6YXx8MTA7dmFyIHI9X2UoZSkudG9Ic2woKTtyZXR1cm4gci5sLT1hLzEwMCxyLmw9TDAoci5sKSxfZShyKX1mdW5jdGlvbiBFcChlLGEpe3ZhciByPV9lKGUpLnRvSHNsKCksdD0oci5oK2EpJTM2MDtyZXR1cm4gci5oPXQ8MD8zNjArdDp0LF9lKHIpfWZ1bmN0aW9uIEFwKGUpe3ZhciBhPV9lKGUpLnRvSHNsKCk7cmV0dXJuIGEuaD0oYS5oKzE4MCklMzYwLF9lKGEpfWZ1bmN0aW9uIEtmKGUsYSl7aWYoaXNOYU4oYSl8fGE8PTApdGhyb3cgbmV3IEVycm9yKCJBcmd1bWVudCB0byBwb2x5YWQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO2Zvcih2YXIgcj1fZShlKS50b0hzbCgpLHQ9W19lKGUpXSxuPTM2MC9hLGk9MTtpPGE7aSsrKXQucHVzaChfZSh7aDooci5oK2kqbiklMzYwLHM6ci5zLGw6ci5sfSkpO3JldHVybiB0fWZ1bmN0aW9uIHlwKGUpe3ZhciBhPV9lKGUpLnRvSHNsKCkscj1hLmg7cmV0dXJuW19lKGUpLF9lKHtoOihyKzcyKSUzNjAsczphLnMsbDphLmx9KSxfZSh7aDoocisyMTYpJTM2MCxzOmEucyxsOmEubH0pXX1mdW5jdGlvbiBTcChlLGEscil7YT1hfHw2LHI9cnx8MzA7dmFyIHQ9X2UoZSkudG9Ic2woKSxuPTM2MC9yLGk9W19lKGUpXTtmb3IodC5oPSh0LmgtKG4qYT4+MSkrNzIwKSUzNjA7LS1hOyl0Lmg9KHQuaCtuKSUzNjAsaS5wdXNoKF9lKHQpKTtyZXR1cm4gaX1mdW5jdGlvbiBDcChlLGEpe2E9YXx8Njtmb3IodmFyIHI9X2UoZSkudG9Ic3YoKSx0PXIuaCxuPXIucyxpPXIudixmPVtdLHM9MS9hO2EtLTspZi5wdXNoKF9lKHtoOnQsczpuLHY6aX0pKSxpPShpK3MpJTE7cmV0dXJuIGZ9X2UubWl4PWZ1bmN0aW9uKGUsYSxyKXtyPXI9PT0wPzA6cnx8NTA7dmFyIHQ9X2UoZSkudG9SZ2IoKSxuPV9lKGEpLnRvUmdiKCksaT1yLzEwMCxmPXtyOihuLnItdC5yKSppK3QucixnOihuLmctdC5nKSppK3QuZyxiOihuLmItdC5iKSppK3QuYixhOihuLmEtdC5hKSppK3QuYX07cmV0dXJuIF9lKGYpfSxfZS5yZWFkYWJpbGl0eT1mdW5jdGlvbihlLGEpe3ZhciByPV9lKGUpLHQ9X2UoYSk7cmV0dXJuKE1hdGgubWF4KHIuZ2V0THVtaW5hbmNlKCksdC5nZXRMdW1pbmFuY2UoKSkrLjA1KS8oTWF0aC5taW4oci5nZXRMdW1pbmFuY2UoKSx0LmdldEx1bWluYW5jZSgpKSsuMDUpfSxfZS5pc1JlYWRhYmxlPWZ1bmN0aW9uKGUsYSxyKXt2YXIgdD1fZS5yZWFkYWJpbGl0eShlLGEpLG4saTtzd2l0Y2goaT0hMSxuPU5wKHIpLG4ubGV2ZWwrbi5zaXplKXtjYXNlIkFBc21hbGwiOmNhc2UiQUFBbGFyZ2UiOmk9dD49NC41O2JyZWFrO2Nhc2UiQUFsYXJnZSI6aT10Pj0zO2JyZWFrO2Nhc2UiQUFBc21hbGwiOmk9dD49NzticmVha31yZXR1cm4gaX0sX2UubW9zdFJlYWRhYmxlPWZ1bmN0aW9uKGUsYSxyKXt2YXIgdD1udWxsLG49MCxpLGYscyxjO3I9cnx8e30sZj1yLmluY2x1ZGVGYWxsYmFja0NvbG9ycyxzPXIubGV2ZWwsYz1yLnNpemU7Zm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspaT1fZS5yZWFkYWJpbGl0eShlLGFbb10pLGk+biYmKG49aSx0PV9lKGFbb10pKTtyZXR1cm4gX2UuaXNSZWFkYWJsZShlLHQse2xldmVsOnMsc2l6ZTpjfSl8fCFmP3Q6KHIuaW5jbHVkZUZhbGxiYWNrQ29sb3JzPSExLF9lLm1vc3RSZWFkYWJsZShlLFsiI2ZmZiIsIiMwMDAiXSxyKSl9O3ZhciBQbj1fZS5uYW1lcz17YWxpY2VibHVlOiJmMGY4ZmYiLGFudGlxdWV3aGl0ZToiZmFlYmQ3IixhcXVhOiIwZmYiLGFxdWFtYXJpbmU6IjdmZmZkNCIsYXp1cmU6ImYwZmZmZiIsYmVpZ2U6ImY1ZjVkYyIsYmlzcXVlOiJmZmU0YzQiLGJsYWNrOiIwMDAiLGJsYW5jaGVkYWxtb25kOiJmZmViY2QiLGJsdWU6IjAwZiIsYmx1ZXZpb2xldDoiOGEyYmUyIixicm93bjoiYTUyYTJhIixidXJseXdvb2Q6ImRlYjg4NyIsYnVybnRzaWVubmE6ImVhN2U1ZCIsY2FkZXRibHVlOiI1ZjllYTAiLGNoYXJ0cmV1c2U6IjdmZmYwMCIsY2hvY29sYXRlOiJkMjY5MWUiLGNvcmFsOiJmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiI2NDk1ZWQiLGNvcm5zaWxrOiJmZmY4ZGMiLGNyaW1zb246ImRjMTQzYyIsY3lhbjoiMGZmIixkYXJrYmx1ZToiMDAwMDhiIixkYXJrY3lhbjoiMDA4YjhiIixkYXJrZ29sZGVucm9kOiJiODg2MGIiLGRhcmtncmF5OiJhOWE5YTkiLGRhcmtncmVlbjoiMDA2NDAwIixkYXJrZ3JleToiYTlhOWE5IixkYXJra2hha2k6ImJkYjc2YiIsZGFya21hZ2VudGE6IjhiMDA4YiIsZGFya29saXZlZ3JlZW46IjU1NmIyZiIsZGFya29yYW5nZToiZmY4YzAwIixkYXJrb3JjaGlkOiI5OTMyY2MiLGRhcmtyZWQ6IjhiMDAwMCIsZGFya3NhbG1vbjoiZTk5NjdhIixkYXJrc2VhZ3JlZW46IjhmYmM4ZiIsZGFya3NsYXRlYmx1ZToiNDgzZDhiIixkYXJrc2xhdGVncmF5OiIyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IjJmNGY0ZiIsZGFya3R1cnF1b2lzZToiMDBjZWQxIixkYXJrdmlvbGV0OiI5NDAwZDMiLGRlZXBwaW5rOiJmZjE0OTMiLGRlZXBza3libHVlOiIwMGJmZmYiLGRpbWdyYXk6IjY5Njk2OSIsZGltZ3JleToiNjk2OTY5Iixkb2RnZXJibHVlOiIxZTkwZmYiLGZpcmVicmljazoiYjIyMjIyIixmbG9yYWx3aGl0ZToiZmZmYWYwIixmb3Jlc3RncmVlbjoiMjI4YjIyIixmdWNoc2lhOiJmMGYiLGdhaW5zYm9ybzoiZGNkY2RjIixnaG9zdHdoaXRlOiJmOGY4ZmYiLGdvbGQ6ImZmZDcwMCIsZ29sZGVucm9kOiJkYWE1MjAiLGdyYXk6IjgwODA4MCIsZ3JlZW46IjAwODAwMCIsZ3JlZW55ZWxsb3c6ImFkZmYyZiIsZ3JleToiODA4MDgwIixob25leWRldzoiZjBmZmYwIixob3RwaW5rOiJmZjY5YjQiLGluZGlhbnJlZDoiY2Q1YzVjIixpbmRpZ286IjRiMDA4MiIsaXZvcnk6ImZmZmZmMCIsa2hha2k6ImYwZTY4YyIsbGF2ZW5kZXI6ImU2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiZmZmMGY1IixsYXduZ3JlZW46IjdjZmMwMCIsbGVtb25jaGlmZm9uOiJmZmZhY2QiLGxpZ2h0Ymx1ZToiYWRkOGU2IixsaWdodGNvcmFsOiJmMDgwODAiLGxpZ2h0Y3lhbjoiZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiZmFmYWQyIixsaWdodGdyYXk6ImQzZDNkMyIsbGlnaHRncmVlbjoiOTBlZTkwIixsaWdodGdyZXk6ImQzZDNkMyIsbGlnaHRwaW5rOiJmZmI2YzEiLGxpZ2h0c2FsbW9uOiJmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IjIwYjJhYSIsbGlnaHRza3libHVlOiI4N2NlZmEiLGxpZ2h0c2xhdGVncmF5OiI3ODkiLGxpZ2h0c2xhdGVncmV5OiI3ODkiLGxpZ2h0c3RlZWxibHVlOiJiMGM0ZGUiLGxpZ2h0eWVsbG93OiJmZmZmZTAiLGxpbWU6IjBmMCIsbGltZWdyZWVuOiIzMmNkMzIiLGxpbmVuOiJmYWYwZTYiLG1hZ2VudGE6ImYwZiIsbWFyb29uOiI4MDAwMDAiLG1lZGl1bWFxdWFtYXJpbmU6IjY2Y2RhYSIsbWVkaXVtYmx1ZToiMDAwMGNkIixtZWRpdW1vcmNoaWQ6ImJhNTVkMyIsbWVkaXVtcHVycGxlOiI5MzcwZGIiLG1lZGl1bXNlYWdyZWVuOiIzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiN2I2OGVlIixtZWRpdW1zcHJpbmdncmVlbjoiMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IjQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiJjNzE1ODUiLG1pZG5pZ2h0Ymx1ZToiMTkxOTcwIixtaW50Y3JlYW06ImY1ZmZmYSIsbWlzdHlyb3NlOiJmZmU0ZTEiLG1vY2Nhc2luOiJmZmU0YjUiLG5hdmFqb3doaXRlOiJmZmRlYWQiLG5hdnk6IjAwMDA4MCIsb2xkbGFjZToiZmRmNWU2IixvbGl2ZToiODA4MDAwIixvbGl2ZWRyYWI6IjZiOGUyMyIsb3JhbmdlOiJmZmE1MDAiLG9yYW5nZXJlZDoiZmY0NTAwIixvcmNoaWQ6ImRhNzBkNiIscGFsZWdvbGRlbnJvZDoiZWVlOGFhIixwYWxlZ3JlZW46Ijk4ZmI5OCIscGFsZXR1cnF1b2lzZToiYWZlZWVlIixwYWxldmlvbGV0cmVkOiJkYjcwOTMiLHBhcGF5YXdoaXA6ImZmZWZkNSIscGVhY2hwdWZmOiJmZmRhYjkiLHBlcnU6ImNkODUzZiIscGluazoiZmZjMGNiIixwbHVtOiJkZGEwZGQiLHBvd2RlcmJsdWU6ImIwZTBlNiIscHVycGxlOiI4MDAwODAiLHJlYmVjY2FwdXJwbGU6IjY2MzM5OSIscmVkOiJmMDAiLHJvc3licm93bjoiYmM4ZjhmIixyb3lhbGJsdWU6IjQxNjllMSIsc2FkZGxlYnJvd246IjhiNDUxMyIsc2FsbW9uOiJmYTgwNzIiLHNhbmR5YnJvd246ImY0YTQ2MCIsc2VhZ3JlZW46IjJlOGI1NyIsc2Vhc2hlbGw6ImZmZjVlZSIsc2llbm5hOiJhMDUyMmQiLHNpbHZlcjoiYzBjMGMwIixza3libHVlOiI4N2NlZWIiLHNsYXRlYmx1ZToiNmE1YWNkIixzbGF0ZWdyYXk6IjcwODA5MCIsc2xhdGVncmV5OiI3MDgwOTAiLHNub3c6ImZmZmFmYSIsc3ByaW5nZ3JlZW46IjAwZmY3ZiIsc3RlZWxibHVlOiI0NjgyYjQiLHRhbjoiZDJiNDhjIix0ZWFsOiIwMDgwODAiLHRoaXN0bGU6ImQ4YmZkOCIsdG9tYXRvOiJmZjYzNDciLHR1cnF1b2lzZToiNDBlMGQwIix2aW9sZXQ6ImVlODJlZSIsd2hlYXQ6ImY1ZGViMyIsd2hpdGU6ImZmZiIsd2hpdGVzbW9rZToiZjVmNWY1Iix5ZWxsb3c6ImZmMCIseWVsbG93Z3JlZW46IjlhY2QzMiJ9LGJwPV9lLmhleE5hbWVzPUlwKFBuKTtmdW5jdGlvbiBJcChlKXt2YXIgYT17fTtmb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYoYVtlW3JdXT1yKTtyZXR1cm4gYX1mdW5jdGlvbiBqZihlKXtyZXR1cm4gZT1wYXJzZUZsb2F0KGUpLChpc05hTihlKXx8ZTwwfHxlPjEpJiYoZT0xKSxlfWZ1bmN0aW9uIEtlKGUsYSl7RHAoZSkmJihlPSIxMDAlIik7dmFyIHI9UnAoZSk7cmV0dXJuIGU9TWF0aC5taW4oYSxNYXRoLm1heCgwLHBhcnNlRmxvYXQoZSkpKSxyJiYoZT1wYXJzZUludChlKmEsMTApLzEwMCksTWF0aC5hYnMoZS1hKTwxZS02PzE6ZSVhL3BhcnNlRmxvYXQoYSl9ZnVuY3Rpb24gTDAoZSl7cmV0dXJuIE1hdGgubWluKDEsTWF0aC5tYXgoMCxlKSl9ZnVuY3Rpb24gTHIoZSl7cmV0dXJuIHBhcnNlSW50KGUsMTYpfWZ1bmN0aW9uIERwKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyImJmUuaW5kZXhPZigiLiIpIT0tMSYmcGFyc2VGbG9hdChlKT09PTF9ZnVuY3Rpb24gUnAoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIiYmZS5pbmRleE9mKCIlIikhPS0xfWZ1bmN0aW9uIGVhKGUpe3JldHVybiBlLmxlbmd0aD09MT8iMCIrZToiIitlfWZ1bmN0aW9uIHF0KGUpe3JldHVybiBlPD0xJiYoZT1lKjEwMCsiJSIpLGV9ZnVuY3Rpb24gWWYoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSoyNTUpLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBKZihlKXtyZXR1cm4gTHIoZSkvMjU1fXZhciByYT1mdW5jdGlvbigpe3ZhciBlPSJbLVxcK10/XFxkKyU/IixhPSJbLVxcK10/XFxkKlxcLlxcZCslPyIscj0iKD86IithKyIpfCg/OiIrZSsiKSIsdD0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyIsbj0iW1xcc3xcXChdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilbLHxcXHNdKygiK3IrIilcXHMqXFwpPyI7cmV0dXJue0NTU19VTklUOm5ldyBSZWdFeHAocikscmdiOm5ldyBSZWdFeHAoInJnYiIrdCkscmdiYTpuZXcgUmVnRXhwKCJyZ2JhIituKSxoc2w6bmV3IFJlZ0V4cCgiaHNsIit0KSxoc2xhOm5ldyBSZWdFeHAoImhzbGEiK24pLGhzdjpuZXcgUmVnRXhwKCJoc3YiK3QpLGhzdmE6bmV3IFJlZ0V4cCgiaHN2YSIrbiksaGV4MzovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8saGV4NjovXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8saGV4NDovXiM/KFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLGhleDg6L14jPyhbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkkL319KCk7ZnVuY3Rpb24gd2EoZSl7cmV0dXJuISFyYS5DU1NfVU5JVC5leGVjKGUpfWZ1bmN0aW9uIE9wKGUpe2U9ZS5yZXBsYWNlKHVwLCIiKS5yZXBsYWNlKGhwLCIiKS50b0xvd2VyQ2FzZSgpO3ZhciBhPSExO2lmKFBuW2VdKWU9UG5bZV0sYT0hMDtlbHNlIGlmKGU9PSJ0cmFuc3BhcmVudCIpcmV0dXJue3I6MCxnOjAsYjowLGE6MCxmb3JtYXQ6Im5hbWUifTt2YXIgcjtyZXR1cm4ocj1yYS5yZ2IuZXhlYyhlKSk/e3I6clsxXSxnOnJbMl0sYjpyWzNdfToocj1yYS5yZ2JhLmV4ZWMoZSkpP3tyOnJbMV0sZzpyWzJdLGI6clszXSxhOnJbNF19OihyPXJhLmhzbC5leGVjKGUpKT97aDpyWzFdLHM6clsyXSxsOnJbM119OihyPXJhLmhzbGEuZXhlYyhlKSk/e2g6clsxXSxzOnJbMl0sbDpyWzNdLGE6cls0XX06KHI9cmEuaHN2LmV4ZWMoZSkpP3toOnJbMV0sczpyWzJdLHY6clszXX06KHI9cmEuaHN2YS5leGVjKGUpKT97aDpyWzFdLHM6clsyXSx2OnJbM10sYTpyWzRdfToocj1yYS5oZXg4LmV4ZWMoZSkpP3tyOkxyKHJbMV0pLGc6THIoclsyXSksYjpMcihyWzNdKSxhOkpmKHJbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9OihyPXJhLmhleDYuZXhlYyhlKSk/e3I6THIoclsxXSksZzpMcihyWzJdKSxiOkxyKHJbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In06KHI9cmEuaGV4NC5leGVjKGUpKT97cjpMcihyWzFdKyIiK3JbMV0pLGc6THIoclsyXSsiIityWzJdKSxiOkxyKHJbM10rIiIrclszXSksYTpKZihyWzRdKyIiK3JbNF0pLGZvcm1hdDphPyJuYW1lIjoiaGV4OCJ9OihyPXJhLmhleDMuZXhlYyhlKSk/e3I6THIoclsxXSsiIityWzFdKSxnOkxyKHJbMl0rIiIrclsyXSksYjpMcihyWzNdKyIiK3JbM10pLGZvcm1hdDphPyJuYW1lIjoiaGV4In06ITF9ZnVuY3Rpb24gTnAoZSl7dmFyIGEscjtyZXR1cm4gZT1lfHx7bGV2ZWw6IkFBIixzaXplOiJzbWFsbCJ9LGE9KGUubGV2ZWx8fCJBQSIpLnRvVXBwZXJDYXNlKCkscj0oZS5zaXplfHwic21hbGwiKS50b0xvd2VyQ2FzZSgpLGEhPT0iQUEiJiZhIT09IkFBQSImJihhPSJBQSIpLHIhPT0ic21hbGwiJiZyIT09ImxhcmdlIiYmKHI9InNtYWxsIikse2xldmVsOmEsc2l6ZTpyfX1jb25zdCBNcD1bIkZGMDAwMDAwIiwiRkZGRkZGRkYiLCJGRkZGMDAwMCIsIkZGMDBGRjAwIiwiRkYwMDAwRkYiLCJGRkZGRkYwMCIsIkZGRkYwMEZGIiwiRkYwMEZGRkYiLCJGRjAwMDAwMCIsIkZGRkZGRkZGIiwiRkZGRjAwMDAiLCJGRjAwRkYwMCIsIkZGMDAwMEZGIiwiRkZGRkZGMDAiLCJGRkZGMDBGRiIsIkZGMDBGRkZGIiwiRkY4MDAwMDAiLCJGRjAwODAwMCIsIkZGMDAwMDgwIiwiRkY4MDgwMDAiLCJGRjgwMDA4MCIsIkZGMDA4MDgwIiwiRkZDMEMwQzAiLCJGRjgwODA4MCIsIkZGOTk5OUZGIiwiRkY5OTMzNjYiLCJGRkZGRkZDQyIsIkZGQ0NGRkZGIiwiRkY2NjAwNjYiLCJGRkZGODA4MCIsIkZGMDA2NkNDIiwiRkZDQ0NDRkYiLCJGRjAwMDA4MCIsIkZGRkYwMEZGIiwiRkZGRkZGMDAiLCJGRjAwRkZGRiIsIkZGODAwMDgwIiwiRkY4MDAwMDAiLCJGRjAwODA4MCIsIkZGMDAwMEZGIiwiRkYwMENDRkYiLCJGRkNDRkZGRiIsIkZGQ0NGRkNDIiwiRkZGRkZGOTkiLCJGRjk5Q0NGRiIsIkZGRkY5OUNDIiwiRkZDQzk5RkYiLCJGRkZGQ0M5OSIsIkZGMzM2NkZGIiwiRkYzM0NDQ0MiLCJGRjk5Q0MwMCIsIkZGRkZDQzAwIiwiRkZGRjk5MDAiLCJGRkZGNjYwMCIsIkZGNjY2Njk5IiwiRkY5Njk2OTYiLCJGRjAwMzM2NiIsIkZGMzM5OTY2IiwiRkYwMDMzMDAiLCJGRjMzMzMwMCIsIkZGOTkzMzAwIiwiRkY5OTMzNjYiLCJGRjMzMzM5OSIsIkZGMzMzMzMzIl0sRGE9MjQwLExuPTI1NTtmdW5jdGlvbiBQcChlLGEscil7Y29uc3QgdD1NYXRoLm1heChlLGEsciksbj1NYXRoLm1pbihlLGEsciksaT10K24sZj10LW4scz1pLzI7bGV0IGMsbztpZihuPT10KXJldHVyblswLHMsMF07czw9LjU/bz1mL2k6bz1mLygyLWkpO2NvbnN0IGw9KHQtZSkvZix1PSh0LWEpL2YseD0odC1yKS9mO3JldHVybiBlPT10P2M9eC11OmE9PT10P2M9MitsLXg6Yz00K3UtbCxjPWMvNiUxLFtjLHMsb119ZnVuY3Rpb24gTHAoZSl7ZS5sZW5ndGg+NiYmKGU9ZS5zdWJzdHJpbmcoMikpO2NvbnN0IGE9cGFyc2VJbnQoZS5zbGljZSgwLDIpLDE2KS9MbixyPXBhcnNlSW50KGUuc2xpY2UoMiw0KSwxNikvTG4sdD1wYXJzZUludChlLnNsaWNlKDQsNiksMTYpL0xuLFtuLGksZl09UHAoYSxyLHQpO3JldHVybltNYXRoLnJvdW5kKG4qRGEpLE1hdGgucm91bmQoaSpEYSksTWF0aC5yb3VuZChmKkRhKV19ZnVuY3Rpb24gQnAoZSxhLHIpe3JldHVybiBfZSh7aDplL0RhKjM2MCxzOnIvRGEsbDphL0RhfSkudG9IZXgoKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFVwKGUsYSl7cmV0dXJuIGU8PTA/TWF0aC5yb3VuZChhKigxK2UpKTpNYXRoLnJvdW5kKGEqKDEtZSkrKERhLURhKigxLWUpKSl9ZnVuY3Rpb24gSHAoZSxhKXtpZighZSlyZXR1cm4gZTtjb25zdFtyLHQsbl09THAoZSk7cmV0dXJuYEZGJHtCcChyLFVwKGEsdCksbil9YH1jb25zdCBXcD04LjQzLFZwPTE1LEdwPSIjMjAyMTI0IixYcD05NTI1LHpwPTQ4MCwkcD0yODgsS3A9MjQsanA9OCxLcj1lPT50eXBlb2YgZT09Im51bWJlciImJk51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMCxZcD0oKT0+e2NvbnN0IGU9aWEuY29sX3dpZHRoX3RvX3B4LGE9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShXcCk6dm9pZCAwO3JldHVybiBNYXRoLmNlaWwoS3IoYSk/PzY0KX0sSnA9e3Jvd0hlaWdodDooKCk9Pntjb25zdCBlPWlhLnJvd19oZWlnaHRfdG9fcHgsYT10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKFZwKTp2b2lkIDA7cmV0dXJuIE1hdGguY2VpbChLcihhKT8/MjApfSkoKSxjb2xXaWR0aDpZcCgpfSxacD0oZSxhKT0+YCR7ZX0tJHthfWAsWmY9ZT0+ZT9lLnchPT12b2lkIDAmJmUudyE9PW51bGw/YCR7ZS53fWA6ZS52PT09dm9pZCAwfHxlLnY9PT1udWxsPyIiOmUudD09PSJkIiYmZS52IGluc3RhbmNlb2YgRGF0ZT9lLnYudG9Mb2NhbGVEYXRlU3RyaW5nKCk6YCR7ZS52fWA6IiIscXA9ZT0+e2lmKCFlKXJldHVybjtpZihlLmhpZGRlbilyZXR1cm4gMDtjb25zdCBhPUtyKGUud3B4KTtpZihhIT09dm9pZCAwJiZhPj0wKXJldHVybiBNYXRoLmNlaWwoYSk7Y29uc3Qgcj1LcihlLndpZHRoKTtpZihyPT09MClyZXR1cm4gMDtpZihyIT09dm9pZCAwJiZyPjApe2NvbnN0IG49aWEuY29sX3dpZHRoX3RvX3B4LGk9dHlwZW9mIG49PSJmdW5jdGlvbiI/S3IobihyKSk6dm9pZCAwO3JldHVybiBNYXRoLmNlaWwoaSE9PXZvaWQgMD9pOnIqKGUuTURXfHw3KSl9Y29uc3QgdD1LcihlLndjaCk7aWYodD09PTApcmV0dXJuIDA7aWYodCE9PXZvaWQgMCYmdD4wKXJldHVybiBNYXRoLmNlaWwodCooZS5NRFd8fDcpKzUpfSxRcD0oZSxhLHIpPT50eXBlb2YgZT09Im51bWJlciI/ZTplPy5bYV0/P3IsZ3Q9ZT0+KGV8fDApL1hwLGVnPWU9PmU/ZS5oaWRkZW4/ITA6KEtyKGUud3B4KT8/LTEpPj0wfHwoS3IoZS53aWR0aCk/Py0xKT49MHx8KEtyKGUud2NoKT8/LTEpPj0wOiExLHFmPWU9PntpZighZSlyZXR1cm47aWYoZS5oaWRkZW4pcmV0dXJuIDA7Y29uc3QgYT1LcihlLmhweCk7aWYoYSE9PXZvaWQgMCYmYT49MClyZXR1cm4gTWF0aC5jZWlsKGEpO2NvbnN0IHI9S3IoZS5ocHQpO2lmKHIhPT12b2lkIDAmJnI+PTApe2NvbnN0IHQ9aWEucm93X2hlaWdodF90b19weCxuPXR5cGVvZiB0PT0iZnVuY3Rpb24iP0tyKHQocikpOnZvaWQgMDtyZXR1cm4gTWF0aC5jZWlsKG4/P3IqOTYvNzIpfX0scmc9ZT0+e3N3aXRjaChgJHtlfHwiIn1gKXtjYXNlImxlZnQiOnJldHVybiJMZWZ0IjtjYXNlImNlbnRlciI6Y2FzZSJjZW50ZXJDb250aW51b3VzIjpjYXNlImRpc3RyaWJ1dGVkIjpjYXNlImp1c3RpZnkiOnJldHVybiJDZW50ZXIiO2Nhc2UicmlnaHQiOnJldHVybiJSaWdodCI7ZGVmYXVsdDpyZXR1cm59fSxhZz1lPT57c3dpdGNoKGAke2V8fCIifWApe2Nhc2UidG9wIjpyZXR1cm4iVG9wIjtjYXNlImNlbnRlciI6Y2FzZSJtaWRkbGUiOmNhc2UiZGlzdHJpYnV0ZWQiOmNhc2UianVzdGlmeSI6cmV0dXJuIk1pZGRsZSI7Y2FzZSJib3R0b20iOnJldHVybiJCb3R0b20iO2RlZmF1bHQ6cmV0dXJufX0sUWY9ZT0+e2lmKCFlKXJldHVybiIiO2NvbnN0IGE9W3JnKGUuaG9yaXpvbnRhbCksYWcoZS52ZXJ0aWNhbCldLmZpbHRlcihCb29sZWFuKS5tYXAocj0+YGh0JHtyfWApO3JldHVybiBlLndyYXBUZXh0JiZhLnB1c2goImh0V3JhcCIpLGUuc2hyaW5rVG9GaXQmJmEucHVzaCgiaHRTaHJpbmsiKSxhLmpvaW4oIiAiKX0sQm49ZT0+e2lmKCFlKXJldHVybjtjb25zdCBhPWUucmF3X3JnYiYmdHlwZW9mIGUudGludD09Im51bWJlciI/SHAoZS5yYXdfcmdiLGUudGludCk6dm9pZCAwLHI9ZS5yZ2J8fGF8fGUucmF3X3JnYjtpZih0eXBlb2Ygcj09InN0cmluZyImJnIpe2NvbnN0IG49ci5zdGFydHNXaXRoKCIjIik/ci5zbGljZSgxKTpyO3JldHVybmAjJHtuLmxlbmd0aD42P24uc2xpY2UoLTYpOm59YH1jb25zdCB0PXR5cGVvZiBlLmluZGV4ZWQ9PSJudW1iZXIiP2UuaW5kZXhlZDplLmluZGV4O2lmKHR5cGVvZiB0PT0ibnVtYmVyIil7Y29uc3Qgbj1NcFt0XTtpZihuKXJldHVybmAjJHtuLnNsaWNlKC02KX1gfX0sdGc9ZT0+ZT8odHlwZW9mIGUuaW5kZXhlZD09Im51bWJlciI/ZS5pbmRleGVkOmUuaW5kZXgpPT09MzI3Njc6ITEsbmc9ZT0+dGcoZSk/R3A6Qm4oZSksaWc9ZT0+e3N3aXRjaChlKXtjYXNlImhhaXIiOnJldHVybiIwLjVweCI7Y2FzZSJtZWRpdW0iOmNhc2UibWVkaXVtRGFzaGVkIjpjYXNlIm1lZGl1bURhc2hEb3QiOmNhc2UibWVkaXVtRGFzaERvdERvdCI6cmV0dXJuIjJweCI7Y2FzZSJ0aGljayI6Y2FzZSJkb3VibGUiOnJldHVybiIzcHgiO2RlZmF1bHQ6cmV0dXJuIjFweCJ9fSxzZz1lPT57c3dpdGNoKGUpe2Nhc2UiZGFzaGVkIjpjYXNlIm1lZGl1bURhc2hlZCI6Y2FzZSJkYXNoRG90IjpjYXNlIm1lZGl1bURhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJtZWRpdW1EYXNoRG90RG90IjpjYXNlInNsYW50RGFzaERvdCI6cmV0dXJuImRhc2hlZCI7Y2FzZSJkb3R0ZWQiOnJldHVybiJkb3R0ZWQiO2Nhc2UiZG91YmxlIjpyZXR1cm4iZG91YmxlIjtkZWZhdWx0OnJldHVybiJzb2xpZCJ9fSxmZz0oLi4uZSk9Pntjb25zdCBhPXt9O3JldHVybiBlLmZvckVhY2gocj0+e3ImJk9iamVjdC5lbnRyaWVzKHIpLmZvckVhY2goKFt0LG5dKT0+e2lmKG4mJnR5cGVvZiBuPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkobikpe2FbdF09ey4uLmFbdF0mJnR5cGVvZiBhW3RdPT0ib2JqZWN0Ij9hW3RdOnt9LC4uLm59O3JldHVybn1hW3RdPW59KX0pLE9iamVjdC5rZXlzKGEpLmxlbmd0aD9hOnZvaWQgMH0sY2c9ZT0+e2NvbnN0IGE9e30scj1lPy5maWxsfHx7fSx0PUJuKGU/LmZnQ29sb3J8fHIuZmdDb2xvcnx8ZT8uYmdDb2xvcnx8ci5iZ0NvbG9yKSxuPWU/LnBhdHRlcm5UeXBlfHxyLnBhdHRlcm5UeXBlO3QmJm4hPT0ibm9uZSImJihhLmJhY2tncm91bmRDb2xvcj10KTtjb25zdCBpPWU/LmZvbnR8fHt9LGY9bmcoaS5jb2xvcnx8ZT8uY29sb3IpO2YmJihhLmNvbG9yPWYpLChpLml0YWxpY3x8ZT8uaXRhbGljKSYmKGEuZm9udFN0eWxlPSJpdGFsaWMiKSwoaS5ib2xkfHxlPy5ib2xkKSYmKGEuZm9udFdlaWdodD0iYm9sZCIpO2NvbnN0IHM9aS5zenx8ZT8uc3o7cyYmKGEuZm9udFNpemU9YCR7c31weGApO2NvbnN0IGM9aS5uYW1lfHxlPy5uYW1lO2MmJihhLmZvbnRGYW1pbHk9Yyk7Y29uc3Qgbz1lPy5ib3JkZXI7cmV0dXJuIG8mJlsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uZm9yRWFjaChsPT57Y29uc3QgdT1vW2xdO2lmKCF1Py5zdHlsZXx8dS5zdHlsZT09PSJub25lIilyZXR1cm47Y29uc3QgeD1gYm9yZGVyJHtsLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7bC5zbGljZSgxKX1gO2FbYCR7eH1XaWR0aGBdPWlnKHUuc3R5bGUpLGFbYCR7eH1TdHlsZWBdPXNnKHUuc3R5bGUpLGFbYCR7eH1Db2xvcmBdPUJuKHUuY29sb3IpfHwiIzAwMDAwMCJ9KSxPYmplY3Qua2V5cyhhKS5sZW5ndGg/YTp2b2lkIDB9LG9nPShlLGEpPT57Zm9yKGNvbnN0IHIgb2YgZSlmb3IobGV0IHQ9MDt0PGE7dCs9MSkoclt0XT09PXZvaWQgMHx8clt0XT09PW51bGwpJiYoclt0XT0iIik7cmV0dXJuIGV9O2NsYXNzIEIwe193cztfc3RhcnRSb3c7X3BhZ2VTaXplO190b3RhbFJvd3M7X3RvdGFsQ29scztzdGF0aWMgZGVmYXVsdHM9SnA7X2RhdGE7X2NlbGw7X21lcmdlO19yb3dIZWlnaHRzO19jb2xXaWR0aHM7X2F1dG9GaXRDb2x1bW5zO19jb2x1bW5zO19zdHJ1Y3R1cmU7X21ldGE7cmFuZ2U7c3RhdGljIGNyZWF0ZShhLHI9e30pe3JldHVybiBuZXcgQjAoYSxyKX1jb25zdHJ1Y3RvcihhLHIpe3RoaXMuX3dzPWEsdGhpcy5fc3RhcnRSb3c9TWF0aC5tYXgoci5zdGFydFJvd3x8MCwwKSx0aGlzLl9wYWdlU2l6ZT1NYXRoLm1heChyLnBhZ2VTaXplfHw1MDAsMSksdGhpcy5fdG90YWxSb3dzPXIudG90YWxSb3dzLHRoaXMuX3RvdGFsQ29scz1yLnRvdGFsQ29scztjb25zdHsiIXJlZiI6dH09YTt0aGlzLnJhbmdlPWlhLmRlY29kZV9yYW5nZSh0fHwiQTEiKX1nZXQgd3MoKXtyZXR1cm4gdGhpcy5fd3N9Z2V0IGRlZmF1bHRzKCl7cmV0dXJuIEIwLmRlZmF1bHRzfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGE/Pyh0aGlzLl9kYXRhPXRoaXMuZ2V0RGF0YSgpKX1nZXQgY2VsbCgpe3JldHVybiB0aGlzLl9jZWxsPz8odGhpcy5fY2VsbD10aGlzLmdldENlbGwoKSl9Z2V0IG1lcmdlKCl7cmV0dXJuIHRoaXMuX21lcmdlPz8odGhpcy5fbWVyZ2U9dGhpcy5nZXRNZXJnZSgpKX1nZXQgY29sdW1ucygpe3JldHVybiB0aGlzLl9jb2x1bW5zPz8odGhpcy5fY29sdW1ucz10aGlzLmdldENvbHVtbnMoKSl9Z2V0IHN0cnVjdHVyZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3R1cmU/Pyh0aGlzLl9zdHJ1Y3R1cmU9dGhpcy5nZXRTdHJ1Y3R1cmUoKSl9Z2V0IHJvd0hlaWdodHMoKXtyZXR1cm4gdGhpcy5fcm93SGVpZ2h0cz8/KHRoaXMuX3Jvd0hlaWdodHM9dGhpcy5nZXRSb3dIZWlnaHRzKCkpfWdldCBjb2xXaWR0aHMoKXtyZXR1cm4gdGhpcy5fY29sV2lkdGhzPz8odGhpcy5fY29sV2lkdGhzPXRoaXMuZ2V0Q29sV2lkdGhzKCkpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMuX21ldGE/Pyh0aGlzLl9tZXRhPXtzdGFydFJvdzp0aGlzLnN0YXJ0Um93LGVuZFJvdzp0aGlzLmVuZFJvdyxwYWdlU2l6ZTp0aGlzLl9wYWdlU2l6ZSx0b3RhbFJvd3M6dGhpcy50b3RhbFJvd3MsdG90YWxDb2xzOnRoaXMudG90YWxDb2xzfSl9Z2V0IHRvdGFsUm93cygpe3JldHVybiB0aGlzLl90b3RhbFJvd3M/P3RoaXMucmFuZ2UuZS5yKzF9Z2V0IHRvdGFsQ29scygpe3JldHVybiB0aGlzLl90b3RhbENvbHM/P3RoaXMucmFuZ2UuZS5jKzF9Z2V0IHN0YXJ0Um93KCl7cmV0dXJuIE1hdGgubWluKHRoaXMuX3N0YXJ0Um93LE1hdGgubWF4KHRoaXMudG90YWxSb3dzLTEsMCkpfWdldCBlbmRSb3coKXtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGFydFJvdyt0aGlzLl9wYWdlU2l6ZSx0aGlzLnRvdGFsUm93cyl9Z2V0IGRlbnNlUm93cygpe2NvbnN0IGE9dGhpcy53cztyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOkFycmF5LmlzQXJyYXkoYVsiIWRhdGEiXSk/YVsiIWRhdGEiXTp2b2lkIDB9Z2V0Q2VsbEF0KGEscil7Y29uc3QgdD10aGlzLmRlbnNlUm93cztyZXR1cm4gdD90W2FdPy5bcl06dGhpcy53c1tpYS5lbmNvZGVfY2VsbCh7cjphLGM6cn0pXX1nZXRBeGlzT2Zmc2V0KGEscix0KXtsZXQgbj0wO2ZvcihsZXQgaT0wO2k8YTtpKz0xKW4rPVFwKHIsaSx0KTtyZXR1cm4gbn1nZXRNYXJrZXJMZWZ0KGEpe3JldHVybiBhP3RoaXMuZ2V0QXhpc09mZnNldChhLmNvbHx8MCx0aGlzLmdldENvbFdpZHRocygpLHRoaXMuZGVmYXVsdHMuY29sV2lkdGgpK2d0KGEuY29sT2ZmKTowfWdldE1hcmtlclRvcChhKXtyZXR1cm4gYT90aGlzLmdldEF4aXNPZmZzZXQoYS5yb3d8fDAsdGhpcy5nZXRBbGxSb3dIZWlnaHRzKCksdGhpcy5kZWZhdWx0cy5yb3dIZWlnaHQpK2d0KGEucm93T2ZmKTowfWdldEltYWdlcygpe2NvbnN0IHI9dGhpcy53c1siIWRyYXdpbmdzIl0/LmltYWdlc3x8W107aWYoIXIubGVuZ3RoKXJldHVybjtjb25zdCB0PXIuZmxhdE1hcCgobixpKT0+e2NvbnN0IGY9bi5hbmNob3I7aWYoIW4uZGF0YVVSSXx8IWYpcmV0dXJuW107Y29uc3Qgcz1mLmZyb20sYz1zP3RoaXMuZ2V0TWFya2VyTGVmdChzKTpndChmLnBvcz8ueCksbz1zP3RoaXMuZ2V0TWFya2VyVG9wKHMpOmd0KGYucG9zPy55KSxsPWYudG8/dGhpcy5nZXRNYXJrZXJMZWZ0KGYudG8pOmMrZ3QoZi5leHQ/LmN4KSx1PWYudG8/dGhpcy5nZXRNYXJrZXJUb3AoZi50byk6bytndChmLmV4dD8uY3kpO3JldHVyblt7aWQ6bi5pZHx8bi5vYmplY3RJZD8udG9TdHJpbmcoKXx8bi50YXJnZXR8fGBpbWFnZS0ke2krMX1gLHNyYzpuLmRhdGFVUkksY29udGVudFR5cGU6bi5jb250ZW50VHlwZSxsZWZ0Ok1hdGgubWF4KDAsYyksdG9wOk1hdGgubWF4KDAsbyksd2lkdGg6TWF0aC5tYXgoMSxsPmM/bC1jOnpwKSxoZWlnaHQ6TWF0aC5tYXgoMSx1Pm8/dS1vOiRwKSxyb3c6cz8ucm93fHwwLGNvbDpzPy5jb2x8fDB9XX0pO3JldHVybiB0Lmxlbmd0aD90OnZvaWQgMH1nZXRBbGxNZXJnZSgpe2NvbnN0IGE9dGhpcy53cyx7IiFtZXJnZXMiOnI9W119PWE7cmV0dXJuIHIubWFwKHQ9Pntjb25zdHtyOm4sYzppfT10LnMse3I6ZixjOnN9PXQuZTtyZXR1cm57cm93Om4sY29sOmkscm93c3BhbjpmLW4rMSxjb2xzcGFuOnMtaSsxfX0pfWdldERhdGEoKXtjb25zdCBhPVtdLHI9dGhpcy5kZW5zZVJvd3M7Zm9yKGxldCB0PXRoaXMuc3RhcnRSb3c7dDx0aGlzLmVuZFJvdzt0Kz0xKXtjb25zdCBuPXI/Llt0XSxpPW4/bi5zbGljZSgwLHRoaXMudG90YWxDb2xzKS5tYXAoZj0+WmYoZikpOkFycmF5LmZyb20oe2xlbmd0aDp0aGlzLnRvdGFsQ29sc30sKGYscyk9PlpmKHRoaXMuZ2V0Q2VsbEF0KHQscykpKTthLnB1c2goaSl9cmV0dXJuIG9nKGEsdGhpcy50b3RhbENvbHMpfWdldENlbGwoKXtjb25zdCBhPXt9LHsiIWNvbHMiOnI9W10sIiFyb3dzIjp0PVtdfT10aGlzLndzO2ZvcihsZXQgbj10aGlzLnN0YXJ0Um93O248dGhpcy5lbmRSb3c7bis9MSlmb3IobGV0IGk9MDtpPHRoaXMudG90YWxDb2xzO2krPTEpe2NvbnN0IGY9dGhpcy5nZXRDZWxsQXQobixpKSxzPWZnKHJbaV0/LnMsdFtuXT8ucyxmPy5zKSxjPVFmKHM/LmFsaWdubWVudCksbz1jZyhzKTshYyYmIW98fChhW1pwKG4tdGhpcy5zdGFydFJvdyxpKV09ey4uLmM/e2NsYXNzTmFtZTpjfTp7fSxzdHlsZTpvfHx7fX0pfXJldHVybiBhfWdldE1lcmdlKCl7cmV0dXJuIHRoaXMuZ2V0QWxsTWVyZ2UoKS5mbGF0TWFwKGE9PmEucm93K2Eucm93c3Bhbi0xPHRoaXMuc3RhcnRSb3d8fGEucm93Pj10aGlzLmVuZFJvd3x8YS5yb3c8dGhpcy5zdGFydFJvdz9bXTp7Li4uYSxyb3c6YS5yb3ctdGhpcy5zdGFydFJvd30pfWdldFJvd0hlaWdodHMoKXtjb25zdHtyb3dIZWlnaHQ6YX09dGhpcy5kZWZhdWx0cyx7IiFyb3dzIjpyPVtdfT10aGlzLndzLHQ9W107aWYoci5sZW5ndGgmJnRoaXMuZW5kUm93PnRoaXMuc3RhcnRSb3cpZm9yKGxldCBuPXRoaXMuc3RhcnRSb3c7bjx0aGlzLmVuZFJvdztuKz0xKXtjb25zdCBpPXFmKHJbbl0pO2khPT12b2lkIDAmJih0W24tdGhpcy5zdGFydFJvd109aSl9cmV0dXJuIHQubGVuZ3RoPT09MT90WzBdOnQubGVuZ3RoP3Q6YX1nZXRBbGxSb3dIZWlnaHRzKCl7Y29uc3R7IiFyb3dzIjphPVtdfT10aGlzLndzLHI9W107aWYoYS5sZW5ndGgpZm9yKGxldCB0PTA7dDx0aGlzLnRvdGFsUm93czt0Kz0xKXtjb25zdCBuPXFmKGFbdF0pO24hPT12b2lkIDAmJihyW3RdPW4pfXJldHVybiByLmxlbmd0aD9yOnZvaWQgMH1nZXRBdXRvRml0Q29sdW1ucygpe2NvbnN0IGE9aWEuYXV0b19maXRfY29sdW1uc3x8aWEuYXV0b2ZpdF9jb2x1bW5zO2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXRyeXtyZXR1cm4gYSh0aGlzLndzLHtzZXQ6ITEsc2tpcEhpZGRlbjohMCxpbmNsdWRlTWVyZ2VkOiExLG1pblB4OktwLHBhZGRpbmc6anB9KX1jYXRjaChyKXtjb25zb2xlLndhcm4oIltmaWxlLXZpZXdlcl0gRXhjZWwg6Ieq5Yqo5YiX5a696K6h566X5aSx6LSl77yM5bey5Zue6YCA5Yiw5Y6f5aeL5YiX5a6944CCIixyKTtyZXR1cm59fWdldCBhdXRvRml0Q29sdW1ucygpe3JldHVybiB0aGlzLl9hdXRvRml0Q29sdW1ucz09PXZvaWQgMCYmKHRoaXMuX2F1dG9GaXRDb2x1bW5zPXRoaXMuZ2V0QXV0b0ZpdENvbHVtbnMoKXx8bnVsbCksdGhpcy5fYXV0b0ZpdENvbHVtbnN8fHZvaWQgMH1nZXRDb2x1bW5NZXRhKGEscil7Y29uc3QgdD1hW3JdO3JldHVybiBlZyh0KT90OnRoaXMuYXV0b0ZpdENvbHVtbnM/LltyXXx8dH1nZXRDb2xXaWR0aHMoKXtjb25zdHtjb2xXaWR0aDphfT10aGlzLmRlZmF1bHRzLHsiIWNvbHMiOnI9W119PXRoaXMud3MsdD1bXTtmb3IobGV0IG49MDtuPHRoaXMudG90YWxDb2xzO24rPTEpe2NvbnN0IGk9cXAodGhpcy5nZXRDb2x1bW5NZXRhKHIsbikpO2khPT12b2lkIDAmJih0W25dPWkpfXJldHVybiB0Lmxlbmd0aD90OmF9Z2V0Q29sdW1ucygpe2NvbnN0eyIhY29scyI6YT1bXX09dGhpcy53cztyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOnRoaXMudG90YWxDb2xzfSwocix0KT0+e2NvbnN0IG49dGhpcy5nZXRDb2x1bW5NZXRhKGEsdCk7cmV0dXJue2tleTp0KzEsdGl0bGU6aWEuZW5jb2RlX2NvbCh0KSxoaWRkZW46ISFuPy5oaWRkZW4sZWRpdG9yOiExLGNsYXNzTmFtZTpRZihuPy5zPy5hbGlnbm1lbnQpLHJlbmRlcmVyOiJzdHlsZVJlbmRlciJ9fSl9Z2V0U3RydWN0dXJlKCl7cmV0dXJue21lcmdlOnRoaXMuZ2V0QWxsTWVyZ2UoKSxjb2xXaWR0aHM6dGhpcy5nZXRDb2xXaWR0aHMoKSxyb3dIZWlnaHRzOnRoaXMuZ2V0QWxsUm93SGVpZ2h0cygpLGNvbHVtbnM6dGhpcy5nZXRDb2x1bW5zKCksaW1hZ2VzOnRoaXMuZ2V0SW1hZ2VzKCl9fXRvT2JqZWN0KCl7Y29uc3R7ZGVmYXVsdHM6YSxkYXRhOnIsY2VsbDp0LG1lcmdlOm4scm93SGVpZ2h0czppLGNvbFdpZHRoczpmLGNvbHVtbnM6cyxtZXRhOmN9PXRoaXM7cmV0dXJue2RlZmF1bHRzOmEsZGF0YTpyLGNlbGw6dCxtZXJnZTpuLHJvd0hlaWdodHM6aSxjb2xXaWR0aHM6Zixjb2x1bW5zOnMsbWV0YTpjfX19Y29uc3QgbXQ9c2VsZixydD17d29ya2Jvb2s6bnVsbCxzaGVldHM6W119LGxnPXt0eXBlOiJhcnJheSIsZGVuc2U6ITAsY2VsbERhdGVzOiEwLGNlbGxTdHlsZXM6ITAsYnJvd3NlclBpeGVsczohMCxkcmF3aW5nczohMCx2YWxpZGF0ZU1lcmdlczohMH07bXQub25tZXNzYWdlPWFzeW5jIGU9Pntjb25zdHtkYXRhOnt0eXBlOmEscGF5bG9hZDpyPXt9fX09ZSx7c2hlZXQ6dCx3b3JrYm9vazpuLHN0YXJ0Um93Omk9MCxwYWdlU2l6ZTpmPTUwMCxzZXNzaW9uSWQ6cz0wfT1yO3N3aXRjaChhKXtjYXNlInBhcnNlV29ya2Jvb2siOnVnKG4pO2JyZWFrO2Nhc2UicGFyc2VTaGVldCI6aGcodCxpLGYscyk7YnJlYWt9fSxtdC5vbmVycm9yPWU9Pntjb25zb2xlLmVycm9yKGUpfTtjb25zdCB1Zz1lPT57dHJ5e3J0Lndvcmtib29rPXB0KGUsbGcpLHhnKCl9Y2F0Y2goYSl7bXQucG9zdE1lc3NhZ2Uoe3R5cGU6InBhcnNlRXJyb3IiLHBheWxvYWQ6e21lc3NhZ2U6YSBpbnN0YW5jZW9mIEVycm9yP2EubWVzc2FnZTpTdHJpbmcoYSl9fSl9fSxoZz0oZSxhPTAscj01MDAsdD0wKT0+e3RyeXtjb25zdCBuPXJ0Lndvcmtib29rLGk9cnQuc2hlZXRzLmZpbmQoZj0+Zi5pZD09PWUpPy5uYW1lO2lmKG4/LlNoZWV0cyYmaSl7Y29uc3QgZj1uLlNoZWV0c1tpXTtpZihmKXtjb25zdCBzPXJ0LnNoZWV0cy5maW5kKHU9PnUuaWQ9PT1lKSxjPUIwLmNyZWF0ZShmLHtzdGFydFJvdzphLHBhZ2VTaXplOnIsdG90YWxSb3dzOnM/LnJvd0NvdW50LHRvdGFsQ29sczpzPy5jb2xDb3VudH0pLG89Yy50b09iamVjdCgpLGw9YT09PTA/Yy5zdHJ1Y3R1cmU6dm9pZCAwO210LnBvc3RNZXNzYWdlKHt0eXBlOiJwYXJzZVNoZWV0IixwYXlsb2FkOntzZXNzaW9uSWQ6dCxzaGVldDplLHNoZWV0RGF0YTpsP3suLi5vLHN0cnVjdHVyZTpsfTpvfX0pfX19Y2F0Y2gobil7bXQucG9zdE1lc3NhZ2Uoe3R5cGU6InBhcnNlRXJyb3IiLHBheWxvYWQ6e3Nlc3Npb25JZDp0LHN0YXJ0Um93OmEsbWVzc2FnZTpuIGluc3RhbmNlb2YgRXJyb3I/bi5tZXNzYWdlOlN0cmluZyhuKX19KX19LHhnPSgpPT57Y29uc3QgZT1ydC53b3JrYm9vaztpZihlPy5TaGVldE5hbWVzKXtjb25zdCBhPWUuV29ya2Jvb2s/LlNoZWV0c3x8W107cnQuc2hlZXRzPWUuU2hlZXROYW1lcy5yZWR1Y2UoKHIsdCxuKT0+e2NvbnN0IGY9ZS5TaGVldHNbdF0/LlsiIXJlZiJdO2lmKCFmKXJldHVybiByO2NvbnN0IHM9aWEuZGVjb2RlX3JhbmdlKGYpO3JldHVybiByLnB1c2goe2lkOnIubGVuZ3RoLG5hbWU6dCxoaWRkZW46ISFhW25dPy5IaWRkZW4scm93Q291bnQ6cy5lLnIrMSxjb2xDb3VudDpzLmUuYysxfSkscn0sW10pLG10LnBvc3RNZXNzYWdlKHt0eXBlOiJzaGVldHMiLHBheWxvYWQ6e3NoZWV0czpydC5zaGVldHN9fSl9fX0pKCk7Cg==',ul=typeof window<'u'&&window['Blob']&&new Blob([Uint8Array['from'](atob(hs),p=>p['charCodeAt'](0x0))],{'type':'text/javascript;charset=utf-8'});function Bc(){let p;try{if(p=ul&&(window['URL']||window['webkitURL'])['createObjectURL'](ul),!p)throw'';return new Worker(p);}catch{return new Worker('data:application/javascript;base64,'+hs);}finally{p&&(window['URL']||window['webkitURL'])['revokeObjectURL'](p);}}const Ac={'create'(){const kZ=bn;return n()[kZ(0x16f)](()=>new Bc());}},$=0x1f4,Gl=0x3,Ll=0x1,_c='__index',es='__k',ct='__s',rt={'rowHeight':0x14,'colWidth':0x40},mi={'Placeholder':0x0,'Loading':0x1,'Loaded':0x2},Wt=()=>({'active':!0x1,'totalRows':0x0,'totalCols':0x0,'indexOffset':0x0,'defaults':{...rt},'dataKeys':[],'rows':[],'columns':[],'cellCache':new Map(),'mergeStartMap':new Map(),'mergeCoveredMap':new Map(),'rowHeightCache':new Map(),'windowRows':new Map(),'windowCells':new Map(),'loadedWindows':new Set(),'loadingWindows':new Set()}),si=(p,r)=>p+'-'+r,kt=p=>'c'+p,yt=p=>p?.[ct]??mi['Placeholder'],qc=p=>{const r=new Array(p);for(let s=0x0;s<p;s+=0x1)r[s]={[es]:''+s,[ct]:mi['Placeholder']};return r;},$c=p=>p?Math['floor'](Math['max'](p-0x1,0x0)/$)*$:0x0,qi=(p=0x0,r=0x0)=>Math['min'](Math['max'](p,0x0),$c(r)),xl=(p=0x0,r=0x0)=>{const l0=bn,s=Math[l0(0x1b8)](Math['max'](p,0x0)/$)*$;return qi(s,r);},ih=({startRow:p,endRow:r,direction:u,totalRows:w,far:x=!0x1})=>{const l1=bn,y=new Set(),z=xl(p,w),C=xl(r,w);for(let G=z;G<=C;G+=$)y['add'](G);const D=x?Gl+0x1:Gl,E=x?Ll+0x1:Ll,F=u>0x0?C:z;for(let K=0x1;K<=D;K+=0x1)y['add'](qi(F+u*K*$,w));for(let L=0x1;L<=E;L+=0x1)y['add'](qi(F-u*L*$,w));return Array[l1(0x28f)](y);},Vl=(p,r,u,w)=>{const x=Math['min'](u+$,r);for(let y=u;y<x;y+=0x1){const z=p[y];z&&(z[ct]=w);}};function $i(p){'@babel/helpers - typeof';const l2=bn;return $i=typeof Symbol=='function'&&typeof Symbol[l2(0xd9)]=='symbol'?function(r){return typeof r;}:function(r){return r&&typeof Symbol=='function'&&r['constructor']===Symbol&&r!==Symbol['prototype']?'symbol':typeof r;},$i(p);}var th=/^\s+/,lh=/\s+$/;function J(p,r){const l3=bn;if(p=p||'',r=r||{},p instanceof J)return p;if(!(this instanceof J))return new J(p,r);var s=sh(p);this['_originalInput']=p,this['_r']=s['r'],this['_g']=s['g'],this['_b']=s['b'],this['_a']=s['a'],this['_roundA']=Math['round'](0x64*this['_a'])/0x64,this[l3(0x3e4)]=r['format']||s['format'],this['_gradientType']=r[l3(0x360)],this['_r']<0x1&&(this['_r']=Math['round'](this['_r'])),this['_g']<0x1&&(this['_g']=Math[l3(0x128)](this['_g'])),this['_b']<0x1&&(this['_b']=Math['round'](this['_b'])),this['_ok']=s['ok'];}J[bn(0x1bc)]={'isDark':function(){return this['getBrightness']()<0x80;},'isLight':function(){return!this['isDark']();},'isValid':function(){return this['_ok'];},'getOriginalInput':function(){return this['_originalInput'];},'getFormat':function(){return this['_format'];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var p=this['toRgb']();return(p['r']*0x12b+p['g']*0x24b+p['b']*0x72)/0x3e8;},'getLuminance':function(){var p=this['toRgb'](),r,u,w,x,y,z;return r=p['r']/0xff,u=p['g']/0xff,w=p['b']/0xff,r<=0.03928?x=r/12.92:x=Math['pow']((r+0.055)/1.055,2.4),u<=0.03928?y=u/12.92:y=Math['pow']((u+0.055)/1.055,2.4),w<=0.03928?z=w/12.92:z=Math['pow']((w+0.055)/1.055,2.4),0.2126*x+0.7152*y+0.0722*z;},'setAlpha':function(p){return this['_a']=ds(p),this['_roundA']=Math['round'](0x64*this['_a'])/0x64,this;},'toHsv':function(){var p=Kl(this['_r'],this['_g'],this['_b']);return{'h':p['h']*0x168,'s':p['s'],'v':p['v'],'a':this['_a']};},'toHsvString':function(){const l4=bn;var p=Kl(this['_r'],this['_g'],this['_b']),r=Math['round'](p['h']*0x168),u=Math['round'](p['s']*0x64),w=Math['round'](p['v']*0x64);return this['_a']==0x1?l4(0x359)+r+',\x20'+u+'%,\x20'+w+'%)':'hsva('+r+',\x20'+u+'%,\x20'+w+'%,\x20'+this['_roundA']+')';},'toHsl':function(){var p=rl(this['_r'],this['_g'],this['_b']);return{'h':p['h']*0x168,'s':p['s'],'l':p['l'],'a':this['_a']};},'toHslString':function(){const l5=bn;var p=rl(this['_r'],this['_g'],this['_b']),r=Math[l5(0x128)](p['h']*0x168),u=Math['round'](p['s']*0x64),w=Math[l5(0x128)](p['l']*0x64);return this['_a']==0x1?'hsl('+r+',\x20'+u+'%,\x20'+w+'%)':'hsla('+r+',\x20'+u+'%,\x20'+w+'%,\x20'+this['_roundA']+')';},'toHex':function(p){return Tl(this['_r'],this['_g'],this['_b'],p);},'toHexString':function(p){return'#'+this['toHex'](p);},'toHex8':function(p){return dh(this['_r'],this['_g'],this['_b'],this['_a'],p);},'toHex8String':function(p){return'#'+this['toHex8'](p);},'toRgb':function(){const l6=bn;return{'r':Math['round'](this['_r']),'g':Math[l6(0x128)](this['_g']),'b':Math['round'](this['_b']),'a':this['_a']};},'toRgbString':function(){const l7=bn;return this['_a']==0x1?'rgb('+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+')':l7(0xe0)+Math['round'](this['_r'])+',\x20'+Math['round'](this['_g'])+',\x20'+Math['round'](this['_b'])+',\x20'+this['_roundA']+')';},'toPercentageRgb':function(){const l8=bn;return{'r':Math['round'](j(this['_r'],0xff)*0x64)+'%','g':Math[l8(0x128)](j(this['_g'],0xff)*0x64)+'%','b':Math['round'](j(this['_b'],0xff)*0x64)+'%','a':this['_a']};},'toPercentageRgbString':function(){const l9=bn;return this['_a']==0x1?'rgb('+Math['round'](j(this['_r'],0xff)*0x64)+'%,\x20'+Math[l9(0x128)](j(this['_g'],0xff)*0x64)+'%,\x20'+Math['round'](j(this['_b'],0xff)*0x64)+'%)':'rgba('+Math[l9(0x128)](j(this['_r'],0xff)*0x64)+l9(0x380)+Math[l9(0x128)](j(this['_g'],0xff)*0x64)+l9(0x380)+Math[l9(0x128)](j(this['_b'],0xff)*0x64)+'%,\x20'+this['_roundA']+')';},'toName':function(){return this['_a']===0x0?'transparent':this['_a']<0x1?!0x1:Xh[Tl(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1;},'toFilter':function(p){const la=bn;var r='#'+Jl(this['_r'],this['_g'],this['_b'],this['_a']),u=r,w=this[la(0x99)]?'GradientType\x20=\x201,\x20':'';if(p){var x=J(p);u='#'+Jl(x['_r'],x['_g'],x['_b'],x['_a']);}return la(0x227)+w+la(0x3cb)+r+',endColorstr='+u+')';},'toString':function(p){const lb=bn;var r=!!p;p=p||this['_format'];var u=!0x1,w=this['_a']<0x1&&this['_a']>=0x0,x=!r&&w&&(p==='hex'||p==='hex6'||p==='hex3'||p==='hex4'||p==='hex8'||p==='name');return x?p==='name'&&this['_a']===0x0?this['toName']():this[lb(0x24c)]():(p==='rgb'&&(u=this['toRgbString']()),p==='prgb'&&(u=this['toPercentageRgbString']()),(p===lb(0x254)||p===lb(0x24b))&&(u=this['toHexString']()),p==='hex3'&&(u=this['toHexString'](!0x0)),p==='hex4'&&(u=this[lb(0x2ba)](!0x0)),p==='hex8'&&(u=this['toHex8String']()),p==='name'&&(u=this['toName']()),p===lb(0x135)&&(u=this['toHslString']()),p===lb(0xbc)&&(u=this['toHsvString']()),u||this['toHexString']());},'clone':function(){return J(this['toString']());},'_applyModification':function(p,r){const ld=bn;var s=p['apply'](null,[this]['concat']([]['slice'][ld(0x1fc)](r)));return this['_r']=s['_r'],this['_g']=s['_g'],this['_b']=s['_b'],this['setAlpha'](s['_a']),this;},'lighten':function(){return this['_applyModification'](oh,arguments);},'brighten':function(){return this['_applyModification'](nh,arguments);},'darken':function(){return this['_applyModification'](bh,arguments);},'desaturate':function(){return this['_applyModification'](mh,arguments);},'saturate':function(){return this['_applyModification'](Zh,arguments);},'greyscale':function(){return this['_applyModification'](Ih,arguments);},'spin':function(){const lf=bn;return this[lf(0x368)](ah,arguments);},'_applyCombination':function(p,r){const lg=bn;return p[lg(0x11d)](null,[this]['concat']([][lg(0x3e2)]['call'](r)));},'analogous':function(){const lj=bn;return this[lj(0x2dc)](yh,arguments);},'complement':function(){return this['_applyCombination'](Yh,arguments);},'monochromatic':function(){return this['_applyCombination'](Sh,arguments);},'splitcomplement':function(){return this['_applyCombination'](Wh,arguments);},'triad':function(){return this['_applyCombination'](Ml,[0x3]);},'tetrad':function(){return this['_applyCombination'](Ml,[0x4]);}},J['fromRatio']=function(p,r){const lk=bn;if($i(p)==lk(0x15a)){var s={};for(var u in p)p['hasOwnProperty'](u)&&(u==='a'?s[u]=p[u]:s[u]=Vi(p[u]));p=s;}return J(p,r);};function sh(p){const ll=bn;var r={'r':0x0,'g':0x0,'b':0x0},u=0x1,w=null,x=null,y=null,z=!0x1,C=!0x1;return typeof p=='string'&&(p=Lh(p)),$i(p)=='object'&&(li(p['r'])&&li(p['g'])&&li(p['b'])?(r=ch(p['r'],p['g'],p['b']),z=!0x0,C=String(p['r'])['substr'](-0x1)==='%'?'prgb':ll(0x1ad)):li(p['h'])&&li(p['s'])&&li(p['v'])?(w=Vi(p['s']),x=Vi(p['v']),r=eh(p['h'],w,x),z=!0x0,C='hsv'):li(p['h'])&&li(p['s'])&&li(p['l'])&&(w=Vi(p['s']),y=Vi(p['l']),r=hh(p['h'],w,y),z=!0x0,C=ll(0x135)),p['hasOwnProperty']('a')&&(u=p['a'])),u=ds(u),{'ok':z,'format':p['format']||C,'r':Math['min'](0xff,Math['max'](r['r'],0x0)),'g':Math['min'](0xff,Math['max'](r['g'],0x0)),'b':Math['min'](0xff,Math[ll(0x340)](r['b'],0x0)),'a':u};}function ch(p,r,s){return{'r':j(p,0xff)*0xff,'g':j(r,0xff)*0xff,'b':j(s,0xff)*0xff};}function rl(p,r,u){const lm=bn;p=j(p,0xff),r=j(r,0xff),u=j(u,0xff);var w=Math['max'](p,r,u),x=Math[lm(0x10c)](p,r,u),y,z,C=(w+x)/0x2;if(w==x)y=z=0x0;else{var D=w-x;switch(z=C>0.5?D/(0x2-w-x):D/(w+x),w){case p:y=(r-u)/D+(r<u?0x6:0x0);break;case r:y=(u-p)/D+0x2;break;case u:y=(p-r)/D+0x4;break;}y/=0x6;}return{'h':y,'s':z,'l':C};}function hh(p,r,u){var w,x,y;p=j(p,0x168),r=j(r,0x64),u=j(u,0x64);function z(E,F,G){return G<0x0&&(G+=0x1),G>0x1&&(G-=0x1),G<0x1/0x6?E+(F-E)*0x6*G:G<0x1/0x2?F:G<0x2/0x3?E+(F-E)*(0x2/0x3-G)*0x6:E;}if(r===0x0)w=x=y=u;else{var C=u<0.5?u*(0x1+r):u+r-u*r,D=0x2*u-C;w=z(D,C,p+0x1/0x3),x=z(D,C,p),y=z(D,C,p-0x1/0x3);}return{'r':w*0xff,'g':x*0xff,'b':y*0xff};}function Kl(p,r,u){const ln=bn;p=j(p,0xff),r=j(r,0xff),u=j(u,0xff);var w=Math['max'](p,r,u),x=Math[ln(0x10c)](p,r,u),y,z,C=w,D=w-x;if(z=w===0x0?0x0:D/w,w==x)y=0x0;else{switch(w){case p:y=(r-u)/D+(r<u?0x6:0x0);break;case r:y=(u-p)/D+0x2;break;case u:y=(p-r)/D+0x4;break;}y/=0x6;}return{'h':y,'s':z,'v':C};}function eh(p,r,u){const lo=bn;p=j(p,0x168)*0x6,r=j(r,0x64),u=j(u,0x64);var w=Math[lo(0x1b8)](p),x=p-w,y=u*(0x1-r),z=u*(0x1-x*r),C=u*(0x1-(0x1-x)*r),D=w%0x6,E=[u,z,y,y,C,u][D],F=[C,u,u,z,y,y][D],G=[y,y,C,u,u,z][D];return{'r':E*0xff,'g':F*0xff,'b':G*0xff};}function Tl(p,r,u,w){const lp=bn;var x=[B(Math['round'](p)['toString'](0x10)),B(Math['round'](r)[lp(0x290)](0x10)),B(Math['round'](u)['toString'](0x10))];return w&&x[0x0]['charAt'](0x0)==x[0x0]['charAt'](0x1)&&x[0x1]['charAt'](0x0)==x[0x1]['charAt'](0x1)&&x[0x2]['charAt'](0x0)==x[0x2]['charAt'](0x1)?x[0x0]['charAt'](0x0)+x[0x1]['charAt'](0x0)+x[0x2][lp(0x22b)](0x0):x['join']('');}function dh(p,r,u,w,x){const lq=bn;var y=[B(Math['round'](p)['toString'](0x10)),B(Math['round'](r)['toString'](0x10)),B(Math['round'](u)['toString'](0x10)),B(ms(w))];return x&&y[0x0]['charAt'](0x0)==y[0x0]['charAt'](0x1)&&y[0x1]['charAt'](0x0)==y[0x1]['charAt'](0x1)&&y[0x2]['charAt'](0x0)==y[0x2][lq(0x22b)](0x1)&&y[0x3][lq(0x22b)](0x0)==y[0x3]['charAt'](0x1)?y[0x0][lq(0x22b)](0x0)+y[0x1]['charAt'](0x0)+y[0x2]['charAt'](0x0)+y[0x3]['charAt'](0x0):y['join']('');}function Jl(p,r,u,w){var x=[B(ms(w)),B(Math['round'](p)['toString'](0x10)),B(Math['round'](r)['toString'](0x10)),B(Math['round'](u)['toString'](0x10))];return x['join']('');}J['equals']=function(p,r){return!p||!r?!0x1:J(p)['toRgbString']()==J(r)['toRgbString']();},J['random']=function(){const lr=bn;return J['fromRatio']({'r':Math['random'](),'g':Math['random'](),'b':Math[lr(0xd5)]()});};function mh(p,r){const lu=bn;r=r===0x0?0x0:r||0xa;var s=J(p)[lu(0x11e)]();return s['s']-=r/0x64,s['s']=ht(s['s']),J(s);}function Zh(p,r){r=r===0x0?0x0:r||0xa;var s=J(p)['toHsl']();return s['s']+=r/0x64,s['s']=ht(s['s']),J(s);}function Ih(p){const lv=bn;return J(p)[lv(0x10b)](0x64);}function oh(p,r){r=r===0x0?0x0:r||0xa;var s=J(p)['toHsl']();return s['l']+=r/0x64,s['l']=ht(s['l']),J(s);}function nh(p,r){const lw=bn;r=r===0x0?0x0:r||0xa;var s=J(p)[lw(0xc1)]();return s['r']=Math['max'](0x0,Math['min'](0xff,s['r']-Math['round'](0xff*-(r/0x64)))),s['g']=Math['max'](0x0,Math['min'](0xff,s['g']-Math['round'](0xff*-(r/0x64)))),s['b']=Math[lw(0x340)](0x0,Math['min'](0xff,s['b']-Math['round'](0xff*-(r/0x64)))),J(s);}function bh(p,r){const lx=bn;r=r===0x0?0x0:r||0xa;var s=J(p)[lx(0x11e)]();return s['l']-=r/0x64,s['l']=ht(s['l']),J(s);}function ah(p,r){var s=J(p)['toHsl'](),u=(s['h']+r)%0x168;return s['h']=u<0x0?0x168+u:u,J(s);}function b(c,d){c=c-0x8d;const e=a();let f=e[c];return f;}function Yh(p){var r=J(p)['toHsl']();return r['h']=(r['h']+0xb4)%0x168,J(r);}function Ml(p,r){const ly=bn;if(isNaN(r)||r<=0x0)throw new Error('Argument\x20to\x20polyad\x20must\x20be\x20a\x20positive\x20number');for(var u=J(p)[ly(0x11e)](),w=[J(p)],x=0x168/r,y=0x1;y<r;y++)w['push'](J({'h':(u['h']+y*x)%0x168,'s':u['s'],'l':u['l']}));return w;}function Wh(p){var r=J(p)['toHsl'](),s=r['h'];return[J(p),J({'h':(s+0x48)%0x168,'s':r['s'],'l':r['l']}),J({'h':(s+0xd8)%0x168,'s':r['s'],'l':r['l']})];}function yh(p,r,u){const lz=bn;r=r||0x6,u=u||0x1e;var w=J(p)['toHsl'](),x=0x168/u,y=[J(p)];for(w['h']=(w['h']-(x*r>>0x1)+0x2d0)%0x168;--r;)w['h']=(w['h']+x)%0x168,y[lz(0x18f)](J(w));return y;}function Sh(p,r){r=r||0x6;for(var u=J(p)['toHsv'](),w=u['h'],x=u['s'],y=u['v'],z=[],C=0x1/r;r--;)z['push'](J({'h':w,'s':x,'v':y})),y=(y+C)%0x1;return z;}J['mix']=function(p,r,u){u=u===0x0?0x0:u||0x32;var w=J(p)['toRgb'](),x=J(r)['toRgb'](),y=u/0x64,z={'r':(x['r']-w['r'])*y+w['r'],'g':(x['g']-w['g'])*y+w['g'],'b':(x['b']-w['b'])*y+w['b'],'a':(x['a']-w['a'])*y+w['a']};return J(z);},J['readability']=function(p,r){const lA=bn;var s=J(p),u=J(r);return(Math['max'](s[lA(0x3bf)](),u[lA(0x3bf)]())+0.05)/(Math['min'](s['getLuminance'](),u['getLuminance']())+0.05);},J['isReadable']=function(p,r,u){var w=J['readability'](p,r),x,y;switch(y=!0x1,x=xh(u),x['level']+x['size']){case'AAsmall':case'AAAlarge':y=w>=4.5;break;case'AAlarge':y=w>=0x3;break;case'AAAsmall':y=w>=0x7;break;}return y;},J['mostReadable']=function(p,r,u){const lB=bn;var w=null,x=0x0,y,z,C,D;u=u||{},z=u['includeFallbackColors'],C=u['level'],D=u['size'];for(var E=0x0;E<r[lB(0x3d0)];E++)y=J['readability'](p,r[E]),y>x&&(x=y,w=J(r[E]));return J['isReadable'](p,w,{'level':C,'size':D})||!z?w:(u['includeFallbackColors']=!0x1,J[lB(0x281)](p,['#fff','#000'],u));};var Kt=J['names']={'aliceblue':'f0f8ff','antiquewhite':'faebd7','aqua':'0ff','aquamarine':'7fffd4','azure':'f0ffff','beige':'f5f5dc','bisque':'ffe4c4','black':'000','blanchedalmond':'ffebcd','blue':'00f','blueviolet':'8a2be2','brown':'a52a2a','burlywood':'deb887','burntsienna':'ea7e5d','cadetblue':'5f9ea0','chartreuse':'7fff00','chocolate':'d2691e','coral':'ff7f50','cornflowerblue':'6495ed','cornsilk':'fff8dc','crimson':'dc143c','cyan':'0ff','darkblue':'00008b','darkcyan':bn(0x3ff),'darkgoldenrod':bn(0x14e),'darkgray':'a9a9a9','darkgreen':'006400','darkgrey':'a9a9a9','darkkhaki':bn(0xb6),'darkmagenta':'8b008b','darkolivegreen':'556b2f','darkorange':bn(0x3de),'darkorchid':'9932cc','darkred':'8b0000','darksalmon':'e9967a','darkseagreen':'8fbc8f','darkslateblue':bn(0x103),'darkslategray':bn(0x3e9),'darkslategrey':'2f4f4f','darkturquoise':bn(0xa1),'darkviolet':'9400d3','deeppink':bn(0x2d9),'deepskyblue':'00bfff','dimgray':'696969','dimgrey':'696969','dodgerblue':'1e90ff','firebrick':'b22222','floralwhite':'fffaf0','forestgreen':'228b22','fuchsia':'f0f','gainsboro':bn(0x3d6),'ghostwhite':'f8f8ff','gold':bn(0x361),'goldenrod':'daa520','gray':bn(0x249),'green':'008000','greenyellow':bn(0x397),'grey':'808080','honeydew':'f0fff0','hotpink':bn(0x337),'indianred':bn(0x2ad),'indigo':'4b0082','ivory':'fffff0','khaki':'f0e68c','lavender':'e6e6fa','lavenderblush':bn(0x213),'lawngreen':'7cfc00','lemonchiffon':bn(0x35f),'lightblue':'add8e6','lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':'fafad2','lightgray':'d3d3d3','lightgreen':'90ee90','lightgrey':bn(0x398),'lightpink':'ffb6c1','lightsalmon':'ffa07a','lightseagreen':'20b2aa','lightskyblue':'87cefa','lightslategray':'789','lightslategrey':bn(0x247),'lightsteelblue':'b0c4de','lightyellow':bn(0x15f),'lime':'0f0','limegreen':'32cd32','linen':'faf0e6','magenta':bn(0x1b7),'maroon':'800000','mediumaquamarine':'66cdaa','mediumblue':'0000cd','mediumorchid':'ba55d3','mediumpurple':'9370db','mediumseagreen':'3cb371','mediumslateblue':'7b68ee','mediumspringgreen':'00fa9a','mediumturquoise':'48d1cc','mediumvioletred':'c71585','midnightblue':'191970','mintcream':'f5fffa','mistyrose':bn(0x309),'moccasin':bn(0x331),'navajowhite':'ffdead','navy':'000080','oldlace':bn(0x306),'olive':'808000','olivedrab':'6b8e23','orange':'ffa500','orangered':'ff4500','orchid':'da70d6','palegoldenrod':'eee8aa','palegreen':'98fb98','paleturquoise':'afeeee','palevioletred':'db7093','papayawhip':bn(0x3bb),'peachpuff':'ffdab9','peru':'cd853f','pink':'ffc0cb','plum':'dda0dd','powderblue':bn(0x11f),'purple':bn(0x140),'rebeccapurple':bn(0x25c),'red':'f00','rosybrown':'bc8f8f','royalblue':'4169e1','saddlebrown':'8b4513','salmon':bn(0x393),'sandybrown':'f4a460','seagreen':'2e8b57','seashell':bn(0x248),'sienna':bn(0x302),'silver':'c0c0c0','skyblue':'87ceeb','slateblue':'6a5acd','slategray':bn(0x160),'slategrey':'708090','snow':bn(0x3d3),'springgreen':'00ff7f','steelblue':'4682b4','tan':'d2b48c','teal':bn(0x1ea),'thistle':'d8bfd8','tomato':bn(0x2de),'turquoise':'40e0d0','violet':'ee82ee','wheat':'f5deb3','white':bn(0x25b),'whitesmoke':'f5f5f5','yellow':'ff0','yellowgreen':'9acd32'},Xh=J['hexNames']=ph(Kt);function ph(p){var r={};for(var s in p)p['hasOwnProperty'](s)&&(r[p[s]]=s);return r;}function ds(p){return p=parseFloat(p),(isNaN(p)||p<0x0||p>0x1)&&(p=0x1),p;}function j(p,r){const lC=bn;uh(p)&&(p=lC(0x245));var s=Gh(p);return p=Math['min'](r,Math['max'](0x0,parseFloat(p))),s&&(p=parseInt(p*r,0xa)/0x64),Math['abs'](p-r)<0.000001?0x1:p%r/parseFloat(r);}function ht(p){return Math['min'](0x1,Math['max'](0x0,p));}function H(p){return parseInt(p,0x10);}function uh(p){return typeof p=='string'&&p['indexOf']('.')!=-0x1&&parseFloat(p)===0x1;}function Gh(p){const lD=bn;return typeof p==lD(0x285)&&p['indexOf']('%')!=-0x1;}function B(p){return p['length']==0x1?'0'+p:''+p;}function Vi(p){return p<=0x1&&(p=p*0x64+'%'),p;}function ms(p){return Math['round'](parseFloat(p)*0xff)['toString'](0x10);}function Nl(p){return H(p)/0xff;}var v=(function(){const lE=bn;var p='[-\x5c+]?\x5cd+%?',r=lE(0x139),u='(?:'+r+')|(?:'+p+')',w='[\x5cs|\x5c(]+('+u+')[,|\x5cs]+('+u+')[,|\x5cs]+('+u+')\x5cs*\x5c)?',x='[\x5cs|\x5c(]+('+u+lE(0x294)+u+')[,|\x5cs]+('+u+')[,|\x5cs]+('+u+')\x5cs*\x5c)?';return{'CSS_UNIT':new RegExp(u),'rgb':new RegExp('rgb'+w),'rgba':new RegExp('rgba'+x),'hsl':new RegExp('hsl'+w),'hsla':new RegExp('hsla'+x),'hsv':new RegExp('hsv'+w),'hsva':new RegExp('hsva'+x),'hex3':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex6':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,'hex4':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex8':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};}());function li(p){return!!v['CSS_UNIT']['exec'](p);}function Lh(p){const lF=bn;p=p['replace'](th,'')['replace'](lh,'')['toLowerCase']();var r=!0x1;if(Kt[p])p=Kt[p],r=!0x0;else{if(p=='transparent')return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':'name'};}var s;return(s=v[lF(0x1ad)]['exec'](p))?{'r':s[0x1],'g':s[0x2],'b':s[0x3]}:(s=v['rgba']['exec'](p))?{'r':s[0x1],'g':s[0x2],'b':s[0x3],'a':s[0x4]}:(s=v['hsl']['exec'](p))?{'h':s[0x1],'s':s[0x2],'l':s[0x3]}:(s=v['hsla'][lF(0x327)](p))?{'h':s[0x1],'s':s[0x2],'l':s[0x3],'a':s[0x4]}:(s=v['hsv']['exec'](p))?{'h':s[0x1],'s':s[0x2],'v':s[0x3]}:(s=v['hsva']['exec'](p))?{'h':s[0x1],'s':s[0x2],'v':s[0x3],'a':s[0x4]}:(s=v['hex8']['exec'](p))?{'r':H(s[0x1]),'g':H(s[0x2]),'b':H(s[0x3]),'a':Nl(s[0x4]),'format':r?'name':'hex8'}:(s=v['hex6'][lF(0x327)](p))?{'r':H(s[0x1]),'g':H(s[0x2]),'b':H(s[0x3]),'format':r?'name':'hex'}:(s=v['hex4'][lF(0x327)](p))?{'r':H(s[0x1]+''+s[0x1]),'g':H(s[0x2]+''+s[0x2]),'b':H(s[0x3]+''+s[0x3]),'a':Nl(s[0x4]+''+s[0x4]),'format':r?'name':'hex8'}:(s=v[lF(0x21d)][lF(0x327)](p))?{'r':H(s[0x1]+''+s[0x1]),'g':H(s[0x2]+''+s[0x2]),'b':H(s[0x3]+''+s[0x3]),'format':r?'name':'hex'}:!0x1;}function xh(p){const lG=bn;var r,s;return p=p||{'level':'AA','size':'small'},r=(p[lG(0x258)]||'AA')['toUpperCase'](),s=(p['size']||'small')[lG(0x120)](),r!=='AA'&&r!=='AAA'&&(r='AA'),s!=='small'&&s!==lG(0x115)&&(s='small'),{'level':r,'size':s};}const ri=0x44,Fi='Aptos,\x20Calibri,\x20\x22Segoe\x20UI\x22,\x20\x22PingFang\x20SC\x22,\x20\x22Microsoft\x20YaHei\x22,\x20sans-serif',wi=0xb,Fl=0x8,Zs=0.1,Ot=0x2,Is=1.2,Tt=0x22,os='#f3f3f3',ns='#5f6368',Vh='#d7dbe0',wl='#21a366',rh='rgba(33,\x20163,\x20102,\x200.1)',Kh=0x1,Th='#000000',Jh={'double':0x8,'solid':0x7,'dashed':0x5,'dotted':0x4},bs='bold\x2012px\x20'+Fi,Dt=wi+'px\x20'+Fi,Mh=0x20,Rl={'backgroundColor':os,'color':ns,'font':bs},Nh={'backgroundColor':'#f4f7f9','color':'#73808d','font':bn(0x2b6)+wi+'px\x20'+Fi};let St;const zl=new Map(),as=p=>p['map'](r=>({...r,...r['children']?.['length']?{'children':as(r[bn(0x1c6)])}:{}})),Fh=p=>{const lH=bn;if(typeof p['font']=='string'&&p['font']['trim']())return p['font'];if(!(p[lH(0x20a)]!==void 0x0||p['fontSize']!==void 0x0||p[lH(0x16a)]!==void 0x0||p[lH(0x1af)]!==void 0x0))return;const r=((()=>{const lI=lH,{fontWeight:u}=p;if(typeof u=='number')return u>=0x258?'bold':'normal';if(typeof u=='string'){const w=u['trim']();return/^\d+$/['test'](w)?Number(w)>=0x258?'bold':'normal':w;}return lI(0x2f7);})());return[p['fontStyle']||'normal',r,(Number['parseInt'](p[lH(0x153)],0xa)||wi)+'px',p['fontFamily']||Fi]['join']('\x20');},Ys=p=>{if(p){if(p['includes']('htLeft'))return'left';if(p['includes']('htRight'))return'right';if(p['includes']('htCenter'))return'center';}},Ws=p=>{const lJ=bn;if(p){if(p['includes'](lJ(0x3f1)))return'top';if(p['includes']('htBottom'))return'bottom';if(p['includes']('htMiddle'))return'middle';}},Cl=(p,r)=>!!p?.['split'](/\s+/)['includes'](r),wh=(p,r,s)=>typeof p==bn(0x1df)?p:p?.[r]??s,Pt=p=>{const lK=bn,r=Number(p?.[lK(0x3ef)]);return Number['isFinite'](r)&&r>0x0?r:0x0;},Rh=p=>!!p&&!p['hide']&&Pt(p)>0x0,zh=p=>p['structure']?.['columns']?.['length']?p['structure']['columns']:p['columns'],Ch=p=>p['structure']?.['colWidths']??p[bn(0x1e0)],gl=(p,r,s)=>typeof p=='number'?p:p?.[r]??s,Jt=(p,r)=>typeof p=='number'&&Number['isFinite'](p)?p<=0x0?Zs:Math[bn(0x340)](Math['ceil'](p),Fl):Math['max'](Math['ceil'](r),Fl),gh=p=>{const lL=bn;if(p==null)return!0x1;const r=(''+p)['trim']();return r?!/^\d+([./:-]\d+)*$/[lL(0x102)](r):!0x1;},Uh=p=>{const lM=bn,r=p['meta'],u=p['data']||[];if(!r||u[lM(0x3d0)]<0x2||(p['merge']||[])[lM(0x3d0)])return 0x0;const w=u[0x0]||[],x=u[0x1]||[],y=w['filter'](C=>(''+(C??''))[lM(0x26d)]()!==''),z=x['filter'](C=>(''+(C??''))['trim']()!=='');return y['length']<Math['min'](Math['max'](Math['floor'](r['totalCols']/0x2),0x3),0x6)||!y['every'](gh)||z['length']<0x2?0x0:0x1;},jh=p=>{const lN=bn,r=zh(p),u=Ch(p),w=[{'key':_c,'title':'','type':'index','fixed':'left','width':ri,'minWidth':ri,'maxWidth':ri,'widthFillDisable':!0x0,'headerAlign':lN(0xcc),'align':'center','headerVerticalAlign':lN(0x1ae),'verticalAlign':'middle','overflowTooltipShow':!0x1,'overflowTooltipHeaderShow':!0x1}],x=[];for(let y=0x0;y<(p['meta']?.['totalCols']||0x0);y+=0x1){const z=kt(y),C=r?.[y],D=wh(u,y,p['defaults']['colWidth']),E=!!C?.['hidden']||D<=0x0,F=Ws(C?.['className'])||'middle';x['push'](z),w['push']({'key':z,'title':C?.['title']||''+(y+0x1),'width':E?0x0:Math[lN(0x340)](Math['ceil'](D),0x1),'hide':E,'widthFillDisable':!0x0,'renderType':'both','headerAlign':'center','headerVerticalAlign':'middle','align':Ys(C?.['className'])||lN(0x277),'verticalAlign':F,'overflowTooltipShow':!0x0,'overflowTooltipHeaderShow':!0x0});}return{'columns':w,'dataKeys':x};},Ul=p=>as(p),Eh=p=>{if(typeof p=='number'&&Number['isFinite'](p))return Math['max'](p,0x0);if(typeof p=='string'){const r=Number['parseFloat'](p);return Number['isFinite'](r)?Math['max'](r,0x0):0x0;}return 0x0;},kh=p=>{const lO=bn;if(typeof p!='string')return lO(0x39a);const r=p[lO(0x26d)]();switch(r){case'double':case'dashed':case'dotted':case'solid':return r;default:return'solid';}},Ei=(p,r)=>{const lP=bn,s=Eh(p['border'+r+'Width']);if(s)return{'width':s,'style':kh(p['border'+r+lP(0x1c5)]),'color':p[lP(0x199)+r+lP(0x1c8)]||Th};},Mt=p=>p?!!(p['borderTop']||p['borderRight']||p['borderBottom']||p['borderLeft']):!0x1,ys=p=>p?!!(p['horizontalAlign']||p['verticalAlign']||p['wrapText']||p[bn(0x95)]):!0x1,jl=(p,r)=>ys(p)?!!(p?.['wrapText']||p?.['shrinkToFit']||p?.['horizontalAlign']&&p[bn(0x40d)]!==(r?.['align']||'left')||p?.[bn(0x336)]&&p['verticalAlign']!==(r?.['verticalAlign']||'middle')):!0x1,Oh=p=>{switch(p){case'center':return'center';case'right':return'flex-end';default:return'flex-start';}},Dh=p=>{const lQ=bn;switch(p){case lQ(0x295):return'flex-start';case lQ(0x2c5):return'flex-end';default:return lQ(0xcc);}},Ph=(p,r,s,u)=>{switch(p){case'right':return r-s;case'center':return-Math['min'](u,Math['max']((s-r)/0x2,0x0));default:return 0x0;}},Xt=p=>typeof p[bn(0x36b)]=='number'&&p['_height']<=Zs,Nt=(p,r)=>{const lR=bn,s=p?.[lR(0x31c)];if(typeof s==lR(0x285)&&s['startsWith']('c')){const u=Number(s['slice'](0x1));if(Number['isInteger'](u)&&u>=0x0)return u;}return Math['max'](r-0x1,0x0);},ki=(p,r,s)=>si(p,Nt(s,r)+0x1),Ss=(p,r)=>si(p,r+0x1),Ht=p=>p==null?'':''+p,Hh=p=>Ht(p)['trim']()!=='',fh=p=>/^[+-]?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?%?$/['test'](p[bn(0x26d)]()),Qh=(p,r)=>{const lS=bn,u=r+'\x0a'+p,w=zl['get'](u);if(w!==void 0x0)return w;!St&&typeof document<'u'&&(St=document[lS(0x3cc)]('canvas'));const x=St?.[lS(0x315)]('2d');if(!x)return p['length']*wi;x['font']=r;const y=x['measureText'](p)['width']+Ot*0x2;return zl['set'](u,y),y;},vh=(p,r,u,w)=>{const x=p['columns'][w+0x1];if(!Rh(x))return!0x1;const y=Ss(u,w);return p['mergeStartMap']['has'](y)||p['mergeCoveredMap']['has'](y)?!0x1:!Hh(r[kt(w)]);},El=(p,r,u,w,x)=>{const lT=bn;let y=0x0;for(let z=0x1;z<=Mh;z+=0x1){const C=w+z*x;if(C<0x0||C>=p[lT(0x38d)]||!vh(p,r,u,C))break;y+=Pt(p['columns'][C+0x1]);}return y;},kl=(p,r,u,w,x,z,C)=>{const lU=bn,D=Ht(C);if(!D||z?.['wrapText']||z?.[lU(0x95)]||fh(D))return;const E=Ss(u,w);if(p['mergeStartMap']['has'](E)||p['mergeCoveredMap']['has'](E))return;const F=Pt(x);if(!F)return;const G=z?.['font']||Dt,K=Math['ceil'](Qh(D,G));if(K<=F)return;const L=z?.[lU(0x40d)]||x?.[lU(0x19f)]||'left',M=L===lU(0x238)||L==='center'?El(p,r,u,w,-0x1):0x0,N=L!=='right'?El(p,r,u,w,0x1):0x0,O=F+M+N;if(O<=F)return;const Q=Math['min'](K,O);return{'left':Ph(L,F,Q,M),'width':Q};},ei=p=>p?p[bn(0x3ef)]*0x64+(Jh[p['style']]||0x1):0x0,Bh=(p,r,u,w)=>{const lV=bn,x=p['cellCache']['get'](si(r-0x1,u+0x1)),y=p['cellCache']['get'](si(r+0x1,u+0x1)),z=p['cellCache']['get'](si(r,u)),C=p['cellCache']['get'](si(r,u+0x2)),D=ei(w['borderTop'])>=ei(x?.['borderBottom'])?w['borderTop']:void 0x0,E=ei(w[lV(0x2a6)])>ei(y?.['borderTop'])?w[lV(0x2a6)]:void 0x0,F=ei(w['borderLeft'])>=ei(z?.['borderRight'])?w['borderLeft']:void 0x0,G=ei(w[lV(0x3c3)])>ei(C?.['borderLeft'])?w[lV(0x3c3)]:void 0x0;return{...w,'borderTop':D,'borderRight':G,'borderBottom':E,'borderLeft':F};},Oi=(p,r)=>{const lW=bn,s=document['createElement']('span'),u=r['width']/0x2;return Object['assign'](s['style'],{'position':'absolute','pointerEvents':lW(0x23e),'boxSizing':'border-box'}),p==='top'||p==='bottom'?(Object[lW(0x3e6)](s['style'],{'left':-u+'px','width':lW(0x36a)+r['width']+lW(0x219),'height':'0'}),s[lW(0xf3)][p]=-u+'px',s[lW(0xf3)]['borderTop']=r['width']+'px\x20'+r[lW(0xf3)]+'\x20'+r['color']):(Object['assign'](s['style'],{'top':-u+'px','height':lW(0x36a)+r['width']+'px)','width':'0'}),s[lW(0xf3)][p]=-u+'px',s['style'][lW(0x2bf)]=r['width']+'px\x20'+r[lW(0xf3)]+'\x20'+r[lW(0x3ce)]),s;},Ah=(p,r)=>{const lX=bn,s=document['createElement']('span');return s['textContent']=Ht(p),Object['assign'](s['style'],{'position':'relative','zIndex':'1','width':'100%','height':'100%','boxSizing':'border-box','display':'flex','alignItems':Dh(r['verticalAlign']),'justifyContent':Oh(r['horizontalAlign']),'padding':'0\x20'+Ot+'px','overflow':'hidden','textOverflow':r['wrapText']?'clip':lX(0x33d),'whiteSpace':r['wrapText']?lX(0x23f):'nowrap','wordBreak':r['wrapText']?'break-word':lX(0x2f7),'lineHeight':''+Is,'textAlign':r['horizontalAlign']||'left','color':r['color']||lX(0x390),'font':r['font']||Dt,'transform':r['shrinkToFit']?lX(0x328):lX(0x23e),'transformOrigin':(r['horizontalAlign']||'left')+'\x20center'}),s;},_h=(p,r)=>{const lY=bn;r&&Object[lY(0x3e6)](p[lY(0xf3)],{'position':'absolute','left':r['left']+'px','top':'0','width':r['width']+'px','overflow':'hidden','textOverflow':'clip'});},qh=(p,r,u,w,x)=>{const lZ=bn;p['replaceChildren'](),Object['assign'](p['style'],{'pointerEvents':lZ(0x23e),'overflow':lZ(0x321),'background':'transparent'});const y=document['createDocumentFragment']();if(w){const z=Ah(u,r);_h(z,x),y['appendChild'](z);}r['borderTop']&&y['appendChild'](Oi('top',r['borderTop'])),r['borderRight']&&y[lZ(0x3cf)](Oi('right',r['borderRight'])),r['borderBottom']&&y['appendChild'](Oi('bottom',r[lZ(0x2a6)])),r['borderLeft']&&y['appendChild'](Oi('left',r[lZ(0x2bf)])),p['appendChild'](y);},$h=p=>{const m0=bn;if(!p)return;const r=p['style']||{},u={};r['backgroundColor']&&(u['backgroundColor']=r['backgroundColor']),r['color']?u['color']=r['color']:r['backgroundColor']&&J(r['backgroundColor'])['isDark']()&&(u['color']='#ffffff');const w=Fh(r);w?u['font']=w:r[m0(0xdc)]&&J(r['backgroundColor'])[m0(0x125)]()&&(u['font']='bold\x20'+wi+'px\x20'+Fi);const x=Ei(r,'Top');x&&(u['borderTop']=x);const y=Ei(r,'Right');y&&(u['borderRight']=y);const z=Ei(r,'Bottom');z&&(u[m0(0x2a6)]=z);const C=Ei(r,'Left');C&&(u['borderLeft']=C);const D=Ys(p['className']);D&&(u['horizontalAlign']=D);const E=Ws(p['className']);if(E&&(u['verticalAlign']=E),Cl(p['className'],'htWrap')&&(u['wrapText']=!0x0),Cl(p['className'],m0(0x3b3))&&(u['shrinkToFit']=!0x0),!(!u['backgroundColor']&&!u['color']&&!u['font']&&!Mt(u)&&!ys(u)))return u;},pt=({hostHeight:p,sheetDefaults:r,virtualState:u})=>{const m3=bn,w=({rowIndex:C,colIndex:D,column:E})=>{if(D===0x0)return;const F=ki(C,D,E);if(u['mergeCoveredMap']['has'](F))return{'rowspan':0x0,'colspan':0x0};const G=u['mergeStartMap']['get'](F);if(G)return{'rowspan':G['rowspan'],'colspan':G['colspan']};},x=()=>Rl,y=({row:C,rowIndex:D,colIndex:E,column:F})=>{const m1=b;if(E===0x0)return Rl;const G=C;if(!Xt(G))return yt(G)!==mi['Loaded']?Nh:u['cellCache'][m1(0x17f)](ki(D,E,F));},z=({row:C,rowIndex:D,colIndex:E,column:F,value:G})=>{const m2=b,K=C;if(E===0x0||Xt(K)||yt(K)!==mi['Loaded'])return;const L=ki(D,E,F);if(u[m2(0x1a4)]['has'](L))return;const M=u[m2(0x3aa)]['get'](L),N=Nt(F,E),O=kl(u,K,D,N,F,M,G),Q=jl(M,F)||!!O;if(!(!Mt(M)&&!Q))return R=>{const T={...M||{},'horizontalAlign':M?.['horizontalAlign']||F?.['align'],'verticalAlign':M?.['verticalAlign']||F?.['verticalAlign']},U=Mt(M)?Bh(u,D,N,T):T;qh(R,U,G,Q,O);};};return{'ROW_KEY':es,'DISABLED':!0x0,'HEIGHT':Math[m3(0x340)](p,0xf0),'MAX_HEIGHT':Math['max'](p,0xf0),'HEADER_HEIGHT':Tt,'CELL_HEIGHT':Jt(r['rowHeight'],r['rowHeight']),'CELL_WIDTH':r['colWidth'],'CELL_PADDING':Ot,'CELL_LINE_HEIGHT':Is,'COLUMNS_VERTICAL_ALIGN':'middle','HEADER_FONT':bs,'BODY_FONT':Dt,'BORDER_RADIUS':0x0,'BORDER_COLOR':Vh,'HEADER_BG_COLOR':os,'BODY_BG_COLOR':'#ffffff','HEADER_TEXT_COLOR':ns,'BODY_TEXT_COLOR':'#202124','READONLY_COLOR':'#ffffff','READONLY_TEXT_COLOR':'#202124','EDIT_BG_COLOR':'#ffffff','PLACEHOLDER_COLOR':m3(0x141),'SCROLLER_COLOR':'#c1c7d0','SCROLLER_FOCUS_COLOR':m3(0x3dc),'SELECT_ROW_COL_BG_COLOR':rh,'SELECT_AREA_COLOR':'rgba(33,\x20163,\x20102,\x200.14)','SELECT_BORDER_COLOR':wl,'AUTOFILL_POINT_BORDER_COLOR':wl,'ENABLE_SELECTOR':!0x0,'ENABLE_SELECTOR_SINGLE':!0x1,'ENABLE_SELECTOR_SPAN_COL':!0x0,'ENABLE_SELECTOR_SPAN_ROW':!0x0,'ENABLE_SELECTOR_ALL_ROWS':!0x0,'ENABLE_SELECTOR_ALL_COLS':!0x0,'SELECTOR_AREA_MIN_X':Kh,'ENABLE_CONTEXT_MENU':!0x1,'ENABLE_HEADER_CONTEXT_MENU':!0x1,'ENABLE_AUTOFILL':!0x0,'ENABLE_AUTOFILL_SPAN_COL':!0x0,'ENABLE_AUTOFILL_SPAN_ROW':!0x0,'ENABLE_PASTER':!0x1,'ENABLE_HISTORY':!0x1,'ENABLE_RESIZE_COLUMN':!0x1,'ENABLE_RESIZE_ROW':!0x1,'ENABLE_KEYBOARD':!0x0,'ENABLE_COPY':!0x0,'BEFORE_AUTOFILL_DATA_METHOD':()=>[],'SPAN_METHOD':w,'HEADER_CELL_STYLE_METHOD':x,'BODY_CELL_STYLE_METHOD':y,'BODY_CELL_RENDER_METHOD':z,'BODY_CELL_FORMATTER_METHOD':({row:C,rowIndex:D,colIndex:E,column:F,value:G})=>{const m4=m3;if(Xt(C))return'';if(E===0x0){const N=D+0x1-u['indexOffset'];return N>0x0?''+N:'';}if(yt(C)!==mi[m4(0xd0)])return'';const K=C,L=u['cellCache']['get'](ki(D,E,F)),M=kl(u,K,D,Nt(F,E),F,L,G);return jl(L,F)||M||G==null?'':''+G;}};},ie=e({'__name':'XlsxTable','props':{'data':null},'setup'(x){const m5=bn,G=x,N=c(null),Q=c([]),U=c(0x0),a0=c(''),a1=c(0x0),a2=c(0x0),a3=c({...rt}),a4=c(!0x0),a5=c(!0x1),a6=c(0x0),a7=c(0x0),a8=c([]),a9=c({'scrollX':0x0,'scrollY':0x0,'width':0x0,'height':0x0}),aa=g(()=>Q['value']['find'](b5=>b5['id']===U['value'])),ab=g(()=>{const b5=Q['value']['filter'](b6=>!b6['hidden']);return b5['length']?b5:Q['value'];}),ad=g(()=>!a0['value']&&!a5['value']&&(ao['value']||a4['value'])),ae=g(()=>!ad[m5(0x22d)]&&!a0['value']&&a5['value']&&a7[m5(0x22d)]>0x0),af=g(()=>Q[m5(0x22d)]['length']?aa['value']?.['name']?m5(0x22f)+aa['value']['name']+'」...':'正在准备工作表内容...':'正在解析\x20Excel\x20工作簿,请耐心等待...'),ag=g(()=>a1['value']?m5(0x404)+Math[m5(0x10c)](a6['value']*$,a1[m5(0x22d)])['toLocaleString']()+'\x20/\x20'+a1[m5(0x22d)]['toLocaleString']()+'\x20行':''),ai=g(()=>{const m6=m5,b5=a1['value']||aa[m6(0x22d)]?.[m6(0x190)]||0x0,b6=a2['value']||aa['value']?.['colCount']||0x0;return b5?b6?'共\x20'+b5+'\x20行,'+b6+'\x20列,按视口预取平滑加载':'共\x20'+b5+'\x20行,按视口预取平滑加载':'';}),aj={'left':ri+'px','top':Tt+'px'},ak=g(()=>({'transform':'translate('+-a9[m5(0x22d)]['scrollX']+m5(0x1f8)+-a9['value']['scrollY']+'px)'})),am=g(()=>{const m7=m5,b5=a9[m7(0x22d)],b6=Math['max'](b5['width']-ri,0x0),b7=Math[m7(0x340)](b5['height']-Tt,0x0);return a8['value']['filter'](b8=>{const m8=m7,b9=b8[m8(0x277)]-b5['scrollX'],ba=b8['top']-b5['scrollY'];return b9+b8['width']>=-0xf0&&b9<=b6+0xf0&&ba+b8['height']>=-0xf0&&ba<=b7+0xf0;});}),an=()=>Ac['create'](),{loading:ao,worker:ap,onWorkerEvent:aq}=Js(an);let ar=Wt();const au=new Map(),av=new Map();let aw=null,ax=null,ay=0x0,az=0x0,aA={'start':0x0,'end':0x0},aB=0x1,aC=0x0,aD=0x0;const aE=()=>U['value']??Q['value'][0x0]?.['id'],aF=()=>N['value']?.['clientHeight']||0x0,aG=()=>{const m9=m5;a6['value']=ar['loadedWindows'][m9(0xbd)],a7['value']=ar['loadingWindows']['size'];},aH=()=>{const ma=m5;a9['value']={'scrollX':aw?.['ctx'][ma(0x118)]||0x0,'scrollY':aw?.['ctx']['scrollY']||0x0,'width':N[ma(0x22d)]?.['clientWidth']||0x0,'height':N['value']?.['clientHeight']||0x0};},aI=b5=>({'left':Math['round'](b5[m5(0x277)])+'px','top':Math['round'](b5[m5(0x295)])+'px','width':Math['round'](b5['width'])+'px','height':Math['round'](b5['height'])+'px'}),aJ=()=>({'config':pt({'hostHeight':aF(),'sheetDefaults':a3['value'],'virtualState':ar}),'columns':Ul(ar['columns'])}),aK=()=>{aA={'start':0x0,'end':0x0},aB=0x1,aC=0x0;},aL=()=>{aw&&(az&&cancelAnimationFrame(az),az=requestAnimationFrame(()=>{const mb=b;if(az=0x0,!aw||!ar['active']||!ar['totalRows'])return;const b5=Math['max'](aw[mb(0x372)]['body'][mb(0x1c0)]||0x0,0x0),b6=Math['max'](aw['ctx'][mb(0x156)]['tailIndex']||b5,b5),b7=aw['ctx'][mb(0x2e4)]||0x0;aB=b7>=aC?0x1:-0x1,aC=b7,aA={'start':b5,'end':b6},aH(),aQ(b5,b6);}));},aM=()=>(aw||!N['value']||(aw=new vc(N['value'],{'data':[],'columns':[],'config':pt({'hostHeight':aF(),'sheetDefaults':a3['value'],'virtualState':ar})}),aw['on']('onScrollX',aL),aw['on']('onScrollY',aL),aw['on']('resize',aL)),aw),aN=(b5,b6=ar['columns'],b7=ar[m5(0x2c0)],b8=!0x1)=>{const md=m5,b9={'config':pt({'hostHeight':aF(),'sheetDefaults':a3['value'],'virtualState':ar}),'columns':Ul(b6)};if(b5['loadConfig'](b9[md(0x29e)]),b5['loadColumns'](b9['columns']),b5['loadData'](b7),b5['draw'](),aH(),b8){requestAnimationFrame(()=>{b5['scrollTo'](0x0,0x0),b5['draw'](),aH(),aL();});return;}aL();},aO=()=>{const mf=m5,b5=aM();if(!b5)return;const {config:b6,columns:b7}=aJ();b5['loadConfig'](b6),ar[mf(0x12c)]&&b7[mf(0x3d0)]&&b5['loadColumns'](b7),b5['doLayout'](),b5['draw'](),aH(),aL();},aP=(b5=0x0,b6=!0x0)=>{const mg=m5,b7=aE();if(b7===void 0x0)return;const b8=qi(b5,ar['totalRows']);ar['loadedWindows']['has'](b8)||ar['loadingWindows']['has'](b8)||(ar['loadingWindows']['add'](b8),aG(),ar['active']&&(Vl(ar['rows'],ar['totalRows'],b8,mi[mg(0x1cb)]),aw?.[mg(0x3ed)]()),a0[mg(0x22d)]='',ap['emit']('parseSheet',{'sheet':b7,'startRow':b8,'pageSize':$,'sessionId':aD}),b6&&(ao['value']=!0x1));},aQ=(b5,b6)=>{!ar['active']||!ar['totalRows']||ih({'startRow':b5,'endRow':b6,'direction':aB,'totalRows':ar['totalRows']})['forEach'](b7=>aP(b7,!0x0));},aR=b5=>{const mj=m5,b6=b5['meta'];if(!b6)return;const {columns:b7,dataKeys:b8}=jh(b5);ar={...Wt(),'active':!0x0,'totalRows':b6['totalRows'],'totalCols':b6['totalCols'],'indexOffset':Uh(b5),'defaults':b5[mj(0x16f)],'dataKeys':b8,'rows':qc(b6[mj(0x1b1)]),'columns':b7},a3['value']=b5['defaults'],a1['value']=b6['totalRows'],a2['value']=b6['totalCols'],aG(),l(()=>{const mk=mj,b9=aM();b9&&aN(b9,b7,ar[mk(0x2c0)],!0x0);});},aS=b5=>{ar['dataKeys']['forEach'](b6=>{delete b5[b6];});},aT=b5=>{Array['isArray'](b5)&&b5['forEach']((b6,b7)=>{const mm=b;if(b6===void 0x0)return;const b8=ar['rows'][b7];if(!b8)return;const b9=Jt(b6,ar['defaults'][mm(0x2e8)]);b8[mm(0x36b)]=b9,ar['rowHeightCache']['set'](b7,b9);});},aU=b5=>{const mn=m5,b6=b5['meta'];if(!b6)return;const b7=[],b8=Math[mn(0x10c)](b6['endRow'],ar['totalRows']);for(let b9=b6['startRow'];b9<b8;b9+=0x1){const ba=ar['rows'][b9],bb=b9-b6['startRow'];if(!ba)continue;aS(ba),(b5['data']?.[bb]||[])['forEach']((bf,bg)=>{bf===''||bf===null||bf===void 0x0||(ba[kt(bg)]=bf);});const bd=gl(b5[mn(0x2fa)],bb,ar['defaults']['rowHeight']),be=Jt(gl(b5['structure']?.[mn(0x2fa)],b9,bd),ar['defaults']['rowHeight']);ba['_height']=be,ba[ct]=mi['Loaded'],ar[mn(0x14c)][mn(0x35c)](b9,be),b7['push'](b9);}ar['windowRows']['set'](b6[mn(0x2b8)],b7);},aV=b5=>{const mo=m5,b6=b5['meta'];if(!b6)return;const b7=[];Object['entries'](b5['cell']||{})[mo(0x288)](([b8,b9])=>{const mp=mo,[ba,bb]=b8[mp(0xce)]('-')['map'](Number),bd=si(b6[mp(0x2b8)]+ba,bb+0x1),be=$h(b9);be&&(ar['cellCache']['set'](bd,be),b7['push'](bd));}),ar['windowCells'][mo(0x35c)](b6['startRow'],b7);},aW=b5=>{const mq=m5;ar[mq(0x2c3)]['clear'](),ar['mergeCoveredMap'][mq(0x234)](),b5['forEach'](b6=>{const b7=si(b6['row'],b6['col']+0x1);ar['mergeStartMap']['set'](b7,{...b6,'col':b6['col']+0x1});for(let b8=0x0;b8<b6['rowspan'];b8+=0x1)for(let b9=0x0;b9<b6['colspan'];b9+=0x1){if(b8===0x0&&b9===0x0)continue;const ba=si(b6['row']+b8,b6['col']+b9+0x1);ar['mergeCoveredMap']['set'](ba,!0x0);}});},aX=b5=>{const mr=m5,b6=b5['structure'],b7=b6?.[mr(0x181)];if(b7)aW(b7);else{const b8=b5['meta'];b8&&!ar['mergeStartMap']['size']&&aW((b5['merge']||[])['map'](b9=>({...b9,'row':b9['row']+b8[mr(0x2b8)]})));}if(aT(b6?.[mr(0x2fa)]),b6?.['images']){a8['value']=b6['images'];const b9=aE();b9!==void 0x0&&av['set'](b9,b6['images']);}},aY=b5=>{const mt=m5,b6=b5['meta'];if(!b6)return;ar['active']||aR(b5),aX(b5),aU(b5),aV(b5),ar['loadedWindows']['add'](b6['startRow']),ar['loadingWindows']['delete'](b6['startRow']),aG(),a5['value']=!0x0;const b7=aE();b7!==void 0x0&&au['set'](b7,ar),aw?.['draw'](),ao['value']=!0x1,a4['value']=!0x1;const b8=aA['start']||b6['startRow'],b9=Math[mt(0x340)](aA['end'],b6['endRow']-0x1,b6[mt(0x2b8)]);aQ(b8,b9);},aZ=()=>{const mu=m5;a0['value']='',a1[mu(0x22d)]=0x0,a2['value']=0x0,a3['value']={...rt},a8['value']=[],ar=Wt(),a5['value']=!0x1,aK(),aG(),aH(),aw&&(aw['loadColumns']([]),aw['loadData']([]),aw['scrollTo'](0x0,0x0),aw['draw']());},b0=()=>{const b5=aE();b5===void 0x0||!ar['active']||au['set'](b5,ar);},b1=b5=>{const mv=m5,b6=au[mv(0x17f)](b5);return b6?(b6['loadingWindows']['clear'](),ar=b6,a0['value']='',a1['value']=b6[mv(0x1b1)],a2['value']=b6[mv(0x38d)],a3['value']=b6[mv(0x16f)],a8['value']=av[mv(0x17f)](b5)||[],a5['value']=b6['loadedWindows']['size']>0x0,a4['value']=!a5['value'],aG(),l(()=>{const b7=aM();b7&&(aN(b7,b6['columns'],b6['rows']),aH());}),!0x0):!0x1;},b2=()=>{const mw=m5,b5=aE();if(b5===void 0x0){ao['value']=!0x1,a4['value']=!0x1;return;}if(aD+=0x1,b1(b5)){ao['value']=!0x1;return;}a4[mw(0x22d)]=!0x0,aZ(),aP(0x0,!0x1);},b3=b5=>{U['value']!==b5&&(b0(),U['value']=b5,b2());},b4=()=>{ap['emit']('parseWorkbook',{'workbook':G['data']});};return aq('sheets',({sheets:b5})=>{const mx=m5;Q['value']=b5;const b6=b5['find'](b7=>!b7[mx(0x229)])||b5[0x0];if(b6){U['value']=b6['id'],b2();return;}a4['value']=!0x1,ao[mx(0x22d)]=!0x1;}),aq('parseSheet',({sessionId:b5,sheet:b6,sheetData:b7})=>{b5!==aD||b6!==aE()||aY(b7);}),aq('parseError',({sessionId:b5,startRow:b6,message:b7})=>{const my=m5;b5&&b5!==aD||(a4['value']=!0x1,ao['value']=!0x1,typeof b6=='number'?(ar['loadingWindows']['delete'](b6),aG(),ar['active']&&(Vl(ar[my(0x2c0)],ar[my(0x1b1)],b6,mi[my(0x19a)]),aw?.['draw']())):(ar['loadingWindows']['clear'](),aG()),a0['value']=b7||my(0x8f));}),h(()=>G['data'],()=>{const mz=m5;aD+=0x1,Q['value']=[],U['value']=0x0,au[mz(0x234)](),av[mz(0x234)](),a4['value']=!0x0,aZ(),b4();}),i(()=>{aM(),N['value']&&(ax=new ResizeObserver(()=>{ay&&cancelAnimationFrame(ay),ay=requestAnimationFrame(()=>{ay=0x0,aO();});}),ax['observe'](N['value'])),b4();}),k(()=>{ay&&cancelAnimationFrame(ay),az&&cancelAnimationFrame(az),ax?.['disconnect'](),ax=null,aw?.['destroy'](),aw=null;}),{'__sfc':!0x0,'props':G,'tableHost':N,'sheets':Q,'sheetIndex':U,'errorMessage':a0,'totalRows':a1,'totalCols':a2,'sheetDefaults':a3,'sheetInitializing':a4,'hasInitialWindow':a5,'loadedWindowCount':a6,'loadingWindowCount':a7,'sheetImages':a8,'imageViewport':a9,'activeSheet':aa,'sheetTabs':ab,'showBlockingLoading':ad,'showStreamingLoading':ae,'sheetLoadingText':af,'cachedSummary':ag,'statusSummary':ai,'imageClipStyle':aj,'imageLayerStyle':ak,'visibleImages':am,'compositeWorkerFactory':an,'loading':ao,'worker':ap,'onWorkerEvent':aq,'virtualState':ar,'sheetStateCache':au,'sheetImageCache':av,'table':aw,'resizeObserver':ax,'resizeFrame':ay,'scrollFrame':az,'viewportRange':aA,'scrollDirection':aB,'lastScrollY':aC,'sheetSessionId':aD,'getActiveSheetId':aE,'getHostHeight':aF,'syncWindowStats':aG,'syncImageViewport':aH,'getImageStyle':aI,'buildTableView':aJ,'resetViewportTracking':aK,'scheduleViewportLoad':aL,'ensureTable':aM,'renderTable':aN,'syncTableLayout':aO,'requestWindow':aP,'ensureViewportWindows':aQ,'initializeVirtualSheet':aR,'clearVirtualRow':aS,'applyStructureRowHeights':aT,'applyWindowRows':aU,'applyWindowCells':aV,'setSheetMerges':aW,'applySheetStructure':aX,'applyVirtualWindow':aY,'resetViewState':aZ,'cacheCurrentSheetState':b0,'restoreCachedSheetState':b1,'startSheetSession':b2,'handleSheet':b3,'emitParseWorkbook':b4};}}),te='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAC9FBMVEUAAAABAQEODw8AAAAAAAAAAAAzMzMBAQEAAAABAQFycnIAAAD9/f0mJiYAAAD9/f2EhITS0tIbf0qBgYHOzs6Kiorl5eVpgHRXWVgLDQz7+/v39/dDmWoObzoQfEIqi1YVf0Ukh1Ha2tofhE2lpaVebGTt7e15eXnh4eHX19cZgUmYmJg8Pj1VVVWoqKiEhIQObznGxsaxsbEng1C1tbXMzMy+vr7CwsLR0dHFxcVmZmampqa2trY/cFVTU1PZ2dnW1tYAAgDm5ubY2Ng/lmcObzo/lmcNbzo+lmYOcDo2kV////8QfEH9/f3+/v77+/v4+Pgri1YRfUIsjFjy8vIdg0v6+vopilXw8PAniVMTfkTt7e0liFIXgEfo6Ogbgkr3+PcVf0UfhU3q6uohhk/29vYZgUj19fX09PQjh1Dm5ubs7Ozk5OTv7+/e3t7i4uIho2YUSixbz5owuHkfmWAYXDdNtYT4+/nb29vc3NwjhlDg4ODW1tYtjFnQ0NDU1NTY2NjU1tUOcTsQekDIyclEmWvKysrHx8cxjlsXfUNAlmi/wL9OtYUAeDdFiFtYn3Y7l2YTbzsAbTQzdUpQvYVVzpcBoWEAQhkht3VHblVGYU8AViozuHpJqnZJoXHMzMwAl1tjuo4jmmFGtIEeXTn1+fbExMS7u7sAejoThk1FnGxs0qEogUwAfT5Nk2jBwcEyilc6hFQAeS0uiFQBgEMrhVAObjm0tLQAdiZCjmAbf0YigEkAfDOpqany9vRHjmIdiFEChEcWfEK4uLg/ilsAbwHO39Vt0qIAdBxzqIc8h1cOdT03kV8AchC/1Meurq6kw7ADk1jo8eygoKCXl5dgtozt9PC3z8APg0ni7OaxsrFr0aDc6eGNtZwjll7W5NysyLaevalEsX9poH6Aq5BUmXAdXDiTuaGGspfG2c0gckBLqnYAZx8AZAZo0Z9edmY9aE09XEgLfkJhroFhkXF61KdxvJZlwY88sH0BtXFXi2gATxf6D1MSAAAAS3RSTlMACQYNExgZHSQpVTD3Njb2O/wOPfwr9w0LEPb28fHx8fHx+/FxF/VD9vzxWy4RiUz91JhUrPLIspTmOMvjJGLlvEbSzbGxiorOzuSptM5HAAA3i0lEQVR42uycy04aURzGC0JvK0mxxXRn6C22Nppae9G0SdetLIiZhISYEILhuoVgABMDCx7CHSxZ+gC+RZ+m58rHOWeOA1bAtOc7MAzD0NjMr9/3P/859Z6Tk5OTk5OT020pHL53lxQO37Ef6J9W+K5K/GSOhv9U7Lo/oyPhQJiPwom1O6uDg/sPotH1lYlr/uxZwmFwu7n/4vXTJeu1rzY2vhH9+PH9+97ep09byc3VtYPoisTAUXBrDrv2NJPNzV1Z8vBRkT+EymPV+As9SL5ZKmXLzfqb2O723qed5OpBJMwoSDgG/h6ARHjtaS67EBXtKkO1sZpMVaKGULNWztbqbwgHW5trUQaBM4K/u/4hALAATUFATREHQCJQr28Q1euNZrl6trv9IbkaIX8HZwR/B0Bo7WkpuwT5IECeEFxAUkARIOrUO503b047jerp7sedzQdhwoBD4KbXP/RuhQDAQzrLttiRR7PihUicIT7C53Krfw/nkuGb/nxQkcC3IgACGAJEp6ftWKzdqbc+f9h8SBhwNnAzAFYoAJncQkQBstkBHVK+CIyDAASctWOteKvdiX/eeR9xNnBTANYBwMKkg8DeX1cUGggIAtqtVjx+0WoPPiYfOgRucv1X1iNrLzMlrhzZgXAsWDgNB7CXK7HBxPdFQGjxABvgiaCUhRoCHSLmAa3WxcX5eau7v/XWBcHsAKyvR1ZfVkoLEQfBKp/iUHEBoxZgBLRjlIBur9cVCDgCZgfAyyxAJcjCgW2SQAlQGWgQyRgQBJz3Rr3efjJ6z+XAbADcj84bACBABnnAD0xj8EcAPtBkDIxdAIUAJWDQHwy+vg+5HJgFgIgEoEIGfTEG2wQP/Tx5INgOYAqYP2KmyKVNClALCBMQBIz6g6udh84EplN4DEC6Mmd5GQ8oWInI2BJhwgXUIKiDgJYgYDjYfxxOuEpgBgCevEx785XkIOPRDX1YXcGOgGwTwQUEAjwG+GSAEtC/3Iq6GJglAuYMgAmCJAAZgSpBnTPqFQEDoIzGAGpBWgh0z2khMByOvr69lwg5AgIBCAkHOPEWrYomxQfQP2DSbIBJ5IBOgIyB0f77sCNgNgDS8x7XXn+PuwE3AUgnICsJqCkmYBYC/d9JR8D0ABTSCxAQMKV6AeQzO5ycEmgEnLFCgBIwGg6vtkKOgLsFwITL2BDIGHGAgpCMAAJOxx5AC4Hh1oqbDEwJQD69cFmcwDNNABTABCaDoNpUJwNxTgCJgZ31RCLkCJgOgJP5DjMP7G5QQS8JBMAEMCGACagEsBTo968GHyIhR8AUAFSOT25XaW2P8DVTdWAUBIgC5AAQQFOIVoIxRkCPEHDZ3Yu6QmDBANhVgBsYAEg/MCoCVIPIgZxiAigEpAfEeB1ACWg7AqYBwDsunJxoD2UX78ULhMP8Hd/iGzhfXHxrKPAy0bABeEDJtytQo5oggAIgU2B42dh74AgIBiBVWIT0mLDFQVoPAzSIDAbQE+D3B2U/IN5lbeGrYfnjQ0fAnQDAqBMmCk+tHtDCIGMDQCsF4QGtcUfoclB0BAQBsPo8lfdVIR+kwpSfEADyCg0KEAHzxIqHIEA5iJ4AhQClYKczcXuYhECsuP0o/MwREADA/BUQCBYvgA1I+caAJKBhEHDZb5S33zoClghAgW0CEPCdHAABBYCSMR+UMYAUEATQEIg1yp+/OAKuBeAof3xz5ac5h51kt4QT0GDLATCAFNBbApMp0BIEDIfNuiMgGIB5K09kEgD5x4G4fSAI8ER/UK8GJQCcANkPEIUgsYDyRm33lSNgOQDAJnyiQQGg4BMFRltAiwEhWEATFiAJGA5rtXpt970j4BoAUsdSKSKyPfYRPY4dCPvmoZTcpCQF7MH9gM8MJjCQLUPCAdkUcNfAhgAAwDIRVgeAgMHosl1s1pu7m44AKwCHqflKUGWiYkaCZX4IBtAXAgJFLk6ANhkkFtAvlpuNatwRsDwA4Cp2AHwnBzoAcAG5klwFgBIgJ4PizuBgcNXJUgJijoAlAWBPFbUmsF9/dIgNC9CXjCIEYAG9bLFcazRiSUfAEgAAA+Q5RgFI5PMgYcwAeXIWzHoQFpDRUwCFICfgrC0IaHIC2smQI2AWAI5SU+qIjBtIdQMyjPmhhoCU7AkoJoCOEBpCnIBhO0c+a5JgoAS4JSK+AByZAweDBlXwOaZ8E8GYF6T1UsAOADyALhOU3YD+IJflBNS3VhwBd8cBQAAACLAAvS3o2w/S5oLng2GtRAmoNeoNR4DNAZR/r4oDHOIYXnBcXPxD9UPttOsJSKEe0OcEZASGAJYKlkUdiI5grNUiFnCWyQoPaLiloiYAP4/mLcZGsMzJgcyBNDDQZwO4MYA6kKUAWyvOQmDQJWcJD6g6AhYKAHQYVBgcpybbxqgHaAqw56QN+LaF0QxAP4iFwCibkQRsND9EEm6JSDAAy7GAlFkNyOmgRAAA+FhAGRYgQoB2A7qjqpcDAW6p6DIAmGpqYLaIpAWgFgQB1gwQZQBmAoN2OiNToLrRdEtFVQB+HY51xJ9HZHAR65aHsCfe4Rg+wR/Bviw+YmIvKYUKf2n3ENEfRAhgpVgJKQACsEKM1YHx3gU5uQQP+OgIUAGYo4CWxRow7F6AO4XoB/jVAT7rgzo0BC56JU8hwC0VXTAAwg58Lr+lnaB0B7BmSK4UYfJbIzQZAg3ZDWjFB+W06gHbjxwBiwEABmBxAUtFgBiYTAGlDGC/wkoFoJhVLUDWgb1qwaMElMYEuKWiCwIAsmcAHMDMAAAAC+D/h6jiKRFAZVQB0gLOT088T/OA/36h4MIBCHYAgwBkgOoB44ZgRSFAbwgTcQv4Q97Z6zgNRFFYAiRKFLEVPACioaBD4g0sj1NYq0iRokhRtBabQJtoo9iRUCh4CDq2pKSi4gEo6Hga5tdnfuMJxc5i30ASktiLmI9zZ+49nhxHZWkTMHiraAtAViSIS4uIsXos9KqAREGWBPXugD0PFBDIkrCRBMQ0cKIIuFarwfdvBm4VVQA8YwDkxo2/wO87bojgu3gWyAtubnDXhaZjxF0MwiCCLKAtBev9cXoFDVAEDNwqqgGAwJiFB8477OF3gVMgvEnBygbwDJoSEADAloD6OFuyY0wCtsO2iuoA5H4JyGMlIPxuFEhBAYAE0PAQsLZngmgJ6BJwqL+s5lXlZIHNoAkIKgAkoDMw1OF3uxnoXBiq2rAnB6x9EoCrxlU58HgzFseZq8HNkM3CGgB+CYi68Tj5LrJAfAZwJcCnAGV0Djh82Y7ZoZwbXQOai+FaRYMKAN2OlYCOd/nd+bMAPYQE2AS4CgAJMPeN2G/mbDFZugTsB2sUBABsiPhQ5aQgRU74n9pX+HP2RP0m/AVxJw/Fh+QdzoPzdaQBjgF7LGT7sDAaxcslZgKV1RhUbaEFHVjLGCAJGO3o0dAALQvs6lcDJUAD4E6CYxGtLKImoMsAWkMgoHT2EUESMEzi9WFJVcSbBXa7gRoF7xoASzFw84TtI5IA6P1hCwBFgOMOEwAc9hQAg4CpImCza14/HKJN7M4BKBQB5zQO4FCGAtDwA6CXA62FwL4auwSwDzICNoM0CiZQAPnfv1sBQAAUABLQCQAIAAAlZ4gfCwIW7zgBLzdDNAomAIAzECcB5pqQ3cMvGGwJTAGAPQkYTdic0p0JtgQMzyh45wAI9c+7JgEgABoAApZzNwes7VkgWkKtPXS0FosKTxZYMQK2w7OKJpkEEvo7NrRJAEfAngYGZoHedUAzmkoAbAIWfB7QvBzerqIAgI4KISSnwe7YM/mL5AQv8j/JFxDEfUa019TR2mGmBpATKiBKAoWSANjG2cYiFQ1IAAqCXgI2GwaAgIlLiI+AoRkFNQDuKnLFlhsxZUK7NQQCOASBaYCQgPqaut9PEbChBAzLKJgAAJDgBgn3Gh0AVGfAAgAEmMYQDsCCXHYSMKxdRVMoAFKKp0oQXRQYAwDPtULoCaEYJAAo5CnmQQIGZRVNAoB89IcjAUECYgHALOAwYz2vTg0YklEwVQrISbBIlHdpABTAIWDtmwTAG8YA8BMw0QnYDMgomAaAnN5IrADknTnAd72o5gwyAVBnOk3AYIyCSQBg2T+kAeE2QTgHVNhWGrsJAwBsIbvjAIQJuFYENIOxiiYAABCEekWnZwEAQLlEjYKwDQByAACg0aEBzVCMgvdsGRi3EnDXAZVWEbYAoBEAgFeVQgTsPg6DgHQA5KGJgOsudABAMcDTEnDKwcgBzSzD2QwCqpaAmSTgcByEUTAhAOwusleQB3LAWCqAJMBIAT4JaBYZr0BHZYHDlyHsKQkAKAEMghAImfH4T7hk9pGBqaBtGCKuTcxQgCVM4tbOUTMWJgDy/GECpu1MsB6CVRQAiOHJMEyZO9h4EaxwcnCgeJLJD6hX1Qfw4MkGshVltItoCHOpcY25aAupwVvaXcEpZ6AFADvHba4zSZhHAwQCfAWpCBj13yioAZBpw6f+lOFODSJ/g6hP4xPidfUWjiWZOkw8B1sIOfCKBTlGyn3sFIc4ANAARsCVlgRY6P2AWbsO2EwzKTmuBnARmJgEjOpXfTcKKgCeZAiSRcS/fx44sQHvLBMW8jGwGlA9IZjE10wCnHIwAFB8uQSUtgbs6kPfjYIAIEVEl4pRItQJQEXYLAZgGmBdJSQACGsAO94kYLR7/ajXBCQF4LxeAS4zhQToAJhJwNsQ2K7ZzwxpwNJPQL+NgokBCFPQoQAFAAABavwnE8sZpBRgO+E/DhoQJuC6JaDpNQFpAQiPP1YDCFxfCgkAABUNZ8MAY/tQAUBIA+ZhAvpsFEwFABYQWXQOkAqAFKCPHAgQgUmAlIB3DIAya1egIQ2oPAT02CiYCgBgECoTdl1PgBzACbAtwk45UAIA5KAB3QT01yiYGoDwFMA3DSDYaQISMKehJMACwN4w5H2V0YjQgNIl4EE/CUgOABCIWgk6/hBIgD0LcAFYvb/KsmgNWBsE9NUomA4ATANCi4BTrUIAoAgAAI4EAIA5qDt3HtDTPSWTAhC/EkT4OoO+HDARG8iapYCbsaU77logSMCun0bBB8lTwMneYsAyljsAzB0A1gBgoQMQpwGlh4BeGgUfJFeAyPFHoB6IHEDDXgdMLAAYATdFpsW5a4FDHwl4kF4BkAKiEcg9SQCVADjEre+RAABhDXAvGQEB9df+2cTuAQBnSgAUwJ0GOgBMTQA+5Bkish7QcwLSA4BiUPz1g2Y5GPNASwLMvUMBAKJTAywCRp/6ZhRM3A4W9+chgA0sHQlov2TWBADTQFgXghqADpOPgP3HnhkF74UCkOzMtSAxe4KXAMAxCBsAvCOBKlQcATeMgGO/jIL3AQD4EKMJQGvYmQWUVg6YgoDVLEPEEeDWBPcXvTIK6qbQpOE2gGJmgkoCMGIgwM0Bq0WwEp3HEtCM9vs+GQUBAEkUOUq/JHqvQbMejOuEPC1BKMBsdZ15ApiFsoBDQI+MghoAebIg2tA6gYHxSIBxpYgnCZgtwdU08wayQAcBM0rAdje6GPXHKCgAePz0WZYnDG7+t4O/YncBveUgSIDvMiFIwGqS+SNCA6YtAZumvqh7YxO7JwAQNPlC31eDD1jmEBCgOgKuL6QFgPiHH6f0EVCZFaFtnwhQADwnxf8RHAKrL4hNQ9wdQ3Rr4KrUxjwsBuy8cvw9WUCsBSgB/TAKtgDQdJouvD+bjoJn8JEbIBlWErgqjZYQcsCqMhSAZf3L8bKU3yg8Yx+aricV25KyyLMsZxjMOVLm5uKCgH4YBQHA5ThdXOLRCM6BGTCFQbNBwJKPV8gatprzYS/m5XrByzr1/uLL8eOnr1+/ff58e3v78+d3Hj9vP3891s12Na2W46Kgp237AlMKCiOgoQT0wigoAXjxvGD/3sluJ4NTABZaGdAuGsUswE0CmAW8m1zRkb+hSbzZHQ6Huq5HdE1HIfhypBi0HFAM/vz6wePX98/H3c11uRyPr0qhJpwABs9F3QejYAvA5Xh+T2IpH+lfSKdABHKB/CXrgS4BrjeMt4PEThHqW+V3jALGAFOCj1QLGASUAoaB5OA3jR+3x+bdpFpWE3oioQGcgLf/v1HwL3vn9jJTFIbxGGdXNDlEKTkkh3IocsgFScqpmdiamtROMxnMrWkcyyku+AvMHZkLLuVCyJWaHKJE+RDCf+Fda717nv3utfaMzDDbzH4cvtworZ/ned611nzLADBl6bx9RwauUkn9RuI/MwoSAkYAy89CDzwCAEAAPiMUek4UDMwIfOCCcYJ7gMBQ8OYNUdCoFbz8cdME64aA//6iYACAd7g0OJUptekXSf2BvyoZDkjdEQgcAM9BOO6GtT8iVLcZ0FmQJQguGQgCCgwDGgKi4GmjWvAoR4IU2Py/XxQMAFhyJJ80BSAYBkgSASy/k4AyAPBgAZIATgJCgBjQNmAaQUNDACswaRBA8PDWuWKBSqROgRn/+zWxNgDl/CDl8ROQef1DfwUFcILY0QA9UJFSAgFGrqekqoyAsYFTphXOICkI7DzgSsBGcO3UUf+oJuDM7f+bgPHjFQBTly7JH0+EzGd76SuLKaAV7YbAARDg+C7yCAEQoBhAHyQpBAiCqBPcCo8H8IHa0WpNEXDt/74mRgTMnTCFAPASIcbAiNdffbEQAAFdQwAAcA3Ac2KyCpgkICENLpECIzAMwAfeZ0/UaT8gm2AC5szupJlKixdP2rJl+rRZfjF58kmVgnfkSJltwCRBdwJwLAiuAgtADCAHiADuAvCBM8yAHQZg4PW9U7Xz2ca9JBKweO2O7Tvn/7auJ1Vfnv349PxdWXdUdoGuBDAATgKKnAKCgBoToKQZgA1kzzTAgPABg8DtGafONG4l7qLg2u3zmzdvNn9fN5KrK6/Grn//efwIXAAE2ABYnxMBAEyAEgiowwOYAUSBtAGzUwQGgjrw9MyMxuVkXRRcu7N58+LwqNm8Ojb27LlX8hgBMgEnAQeYABwM258WlgRUQQAQUIomAf0IMcBzAdvA66fZ7AW6JpYUArZs5+W/OhS6eFUz0Hr14+MRTUBZEiBvEsSOAvAAIAAPwECoxAjwcQGPBVmCADsEzECAwO1GIzEErJ1/U6/+jVbrylCo1bqhGRhrPi97bAIgIKp98TWgYA5zLBOok9gFhA9wIWQjMBQQB2I2pDagEKCpMCkXBXc0zepfOX06lzs9BFL/iiuKgebVVy/z3QmABRACkoDYGGAEBATtKAAEQR7AB7QNGATuNxJxUXDHTb38p4di7aHcaY3Aq8+eJECEgD0L8reRxiaDfEoAVVDYAHwAY4HYI0IWKBtgBN48vJyAa2J6/Vv8fz83JGIfaN0gAuABggBxqzRMQHQUwBUxeICbAR4NTwKCMAXZsA2YLvD69bWBE7C2Scs/NAsvpRAgAt6WC4SAaYIIgd0gAB7g3g6AB8AEsDVMBCALrErQLobSBu4FCNwf8EXBLfOHef0VATQSfMwfVzvEIAAW0MkDcDlAFgEZBMwAq4Y8AAXcDNkG+B4JI/D6/aaBXhTcfvNqKzfUal0c+0r3NpkACgFYgCTggCBAFIECYkAiUAUDoIAwYMlSIGzAIKBM4MWmFQMgAAEw5OuvCHj1PF/g46GIBYQRCN0Qw7EAYgAmYCUBICBFIBC7BGBAI8BVYJAE7GzeGGL/5xS40Xrmq+NCEQJm+UmuWYAUQwAQAAPoA0wBOIhAwDbAjTDIgRfvB0bA2hFYfyLg6hhZgCKg3A4BdgCtAABBgLsKUgzoIEAhtCiAG9hWIGygYRC4TTlwfwAEcAMY+gBQao19oLXzmAAFgLAAx6aweGCWhcflQAAQgMBAaEJAJeA2MIMRMCbwdNPUcQPYEVo8fxQMQI0C3+oFUwRtC5CfF+tOABAABEWm4GgcBWBA3idkE6BTok2TM/+egLUXr+zPjYJaY8+9ChHAPRDbgSz7pjgI0IrsC0oEungBIMB1wrYN6CqgTOD2pgn//mRoR3MkDIAAePLyuE8eYFmA/R2EJAK4Ls5iAuACNgPSC6oseXqEQkg5oEyACBjA2eD2G7nR0JU7X4s+WQAGAZQAknUuwDlQcpoAkgCNUIwGkMMKhA0YBLgJ3P73N0R2jkQFJJ1+/OWYTxaAGrgPJcBOATQBBwLHtQqBKiTfdoMYCIAAPmemtgX0nsD7aeNX/tNRYM6uEakABMC3qh+yAAbA/d1DXAgwAbYNIBBsBiAnA5wE540JUAzc2/yPh8HZC3K5/SOh04/vVotFbQFEgCwBgaz7AbgnJh6ZDCQZ0AoQAATurQJGAC6gTIBi4MKmiXMy/zAEZo4SAPUiWkCoBECOIgAT4F0h2QdJYQQKgCCuHIIBIKC6AJlAVk0Dlzp+P8EUgF4AOGEB4M4ATgEgIF8YkwgoCLxCwEEFZuDDDFxGYCFAZVDFwOV7yzvUgBSAngCg7RqugaWSswWKJ8eZAPnSLBhAELAKwgziIQACCALKAWMCjcuNzVMz48alAPQfgEcEAFsAlwDMgZB8Yk6aAB8PkOw2wCCIWljBmIgjxBAE0Q8aqm2hxoWz6+bOjqsBKQC9AFA7dkzVQACADIAUD24TQBBEowAcRGsBM1CRDBiJLmDmARoH1OnA8tjdgBSAP1ZOA8AZgBIAB5AQuJqAOR+AC8jBEGZgGgEwkGkgGeAggAnQd6CasXpqJpMC0H8ATlaPcQbIFtjhseEDSiEAgokAMwEQgLgQRJzAr1ibBPiUSbsMkglkz63JxIRACkBvAFQJAD8A4HCcA+wRl4SMmAF2AbkxYHPASYBmWOHtQjsLjh2VJqC2BGZcWDpu5d8NAQAwIuvPAHAG5PMEAKYAVwIgBuQTM3xbCDZAP2wKUAcYgQADX2SBCAL+sKnqgrX1E2ZnUgD6DcA5A0BFXwzSpwGOKQBHgyCAFTYBEhNA6ugEJA8QVFjCBczNUn1SSATo04Hl41a6CEgB6AmAet04AEqACwDsCaIIsORMiJlAQuA5GAjtFKEOhKsAJkLlAbXVkxUAFgEpAH0AoGLGAN4IiHttgJdfICCembAYEC4ACoCAYy5QAOATxyBgWW2RsoAUgH4DoDOAHYAjAB3AIgAuAABkHyShE1qtMAoB+kClIGxAToTUBBbW3RaQAvDnevzoFAEQjAFogarzxyKAOmgHgYsACwEFgTw6QhQELuC3mwApIODE37UAALB//8GRkALgRN0eA5ABtjgEWBEAMBRgMMRYIH0AEmcGvEcoTYAHwqrTAlIAegPgBMYAAIDXhyzBAQQF6jNk7SQInKCEsSAfooBYkzYgs4AJAAImBogAYwEpAP0FoO4AYG8sAegAUQT2hcU+EK2EgEC6gNUHnSZw4ujqibYFpAD0CgDmwLADdHh6Dg4gEYAJiLmgRD9dDHjhueC4J9oATEB8G7qTyzNEwF8HYETWnwB40I4AC4COBMhvJiLOCSUC7dlQbg4AgrBEF5AIcA746+daFpAC0GsHqB7DRoB0gDgEsPRScAAQ4NggKjEEaASOsTAUA8W2CRzbunEunQqmAPQNgPMKgPBOEACg5Y97bpg7gA2C7AKYDNEGAmEssI6OnU2AEfBXZVamAPTTAWq6AxR9vhEAAJQ6TAPxj+M5GSDhc2UwAsjZByu+YIAIqGyjSVASkALQSwc4X1Md4KhfcQHQuQfghxAOCmMIcPuAFx4LwghEtgbrVANTAPoKQL1K9wJ1CZQAdEOggwWwJAG4OyIZCGTtETsJ8DZkIjUwBaB3AIo+IoAJwPLHCxYQYwJuBGwXKAOBfBcEClunTPhLGQAADh48NBI6CABwGmQBoNqgQ1h4iwA8YCoYQA5IBsITgRgJUAfDCFAGpAD0D4ATBoCKBQDUzQKAAIQUCG0Rh7qAhQDkhRGwZ8LyhrmLhQWkAPQNgLwFQHcESEDAQcBevGSrDwkYANhA5y4AAgIX8LZOmZsC0HcA/HgAEAG23A4ABNAF8NlieV4IBNwm4EkTIKkMSDIA+zsoSX8nOkDHCOi2H8AO4N4cDMUAEEAbjCBQcpqA50kXKJY2ZEQGJA2AOx30h6u1/04HHeqqHjoAq+PRkFl/tw64EYCYAfaAX+ydSajTQBjHUZ8bXgRBUE/igqDgVTyJHocmT7TVYsQSU2sRLyoWCh4FD4IXBQ8iLhRcqJSmBQWpFsQFRFRww31DvXgRt5uTpf6TZmaaZqmJ+m9eUh5JfDK/fvN9/5lJS2x70J0OFqkXNCe5AKy9wNcVEDBc+18R3HRtSADssQD4AB4ABheE8IX75cgEcn0EoCo0IUBRyIDAmQ3unL1yTnIBaLQ+kUKOI/ljvRHglvWPco6jAvnU8nNLMQCu0cDxAADwIwAyAdlGgL5c5qDlC7DnkzOWFlEENi6kfcCECTECECYAdA/VCFdPugFuvaH7hHBVO9RdGx0AJQEA4lwQL24yaBLAdIZcVSFnUQlqgq0yLQQdISBZAOQbzbskQ9jKkLuXG0Pf8LLwhs2hbygGQNAF+LCFxZaAudkvJwHCyeS2P4g5IzvG10ybk1wA8nr3GZEIUxLp7PebBiAB2N/h3+9ZV88HFADAjCB2EghLUCBZ4tjCNgKoBaECoyRkLixy5wIbZ88aixWA+aEAaLRuZQj3E3vHbwhAALhD+Pe7FSADEOcAOWskiPAk0Y0pMwxgVREnJ2AtJ8DUIXcuCPX1AxsXxtIHAIB8XgmhRvMRv8nkt611yhBaJ8Tp0eWGEkJ5OwIAgGKnU6oVaoXK8MJUwUqNq1KpU3Ko45D1jbZFyxFwRgHziGnENAbIKxINwIbqgftE4rXZy/pQbdaov+TRJJH7B7QNSgjlz/YDsP7bA6qTw+vBt4pkWwKVr59v3DjvR0/d+vx1vWUQmwiUMFK43T1OtCmzamqSAVAal58TiRtBn59pRHYrBIBA0i0A8IyQwvoHP95QnR5aPx5UJDsG1D4fCajPHbiDSAbMzZIdA4qrl40lGQDabNf5H9snZ/3fPq9cFQST6wHanx8BNpoR4MGbg3upDg6r0ycNAEwEajeO7AqkI0879iJzqIdAybWybMfyMWNAKLEA6N33NX7m/qrpu90azVd8kmrvu2uVAOIBsN4CYK8tCoJ/2QBQ0S4gBADjRTcBePAM3QOB7c4sMIEAKNQMEJSCFx777Lk3PBaBdBcg+ZcYgAIFAM0fCICMVDkfBIAjFgCYRQ5ZyYCTAGnFpHgBUMIKZgCrFPTbco3Ln0hGYAEoQSUGAATEDwCa3waAyg2AuarIbRFtJKsmLxpLNABr66jeWNX7Wp83kQQ3qTcSCkCYLqDfHDaORc9Igbx6+pRkRwCRGSD5LQX11ssIwgjkE4DTaNdRAnDEAmAcq0qLJgB08xBQWLxyzHCDEwxAXtt3n999fxDl7+gAPhCJbwGoQSwAcRXgjgAHD9L9qCMAVcGioGjPH+0xAARoj7Bz+RiSgOgBUMIIFbyg+a5WB0KWr64DQpFZAP6TQFrb/YEuwCYAM8cgJwIlVxmQxAggNAMyPkrBMkrAKC0A/zkAlXGg2+gBsAQEXAQYOykeMxgRoBxeG2AGMGv4DYMuPzTg8vASAGA0v0nAHwAAAgCOEWNjR1aMLRpLOABlgRmQIZ+aDfHVwhLwLq4OI0UYAWwGDo6uCzjfB0B/R4C5Q2TV1OQDIDIDiHSrrosu1uvvCOFbAHnxXxgeAGbzxw9Abtyj3wQAAwrA6mlTjOGARANQ1mEGMErBlu79V8LDI9aQANhpwOgAKAEAZhjomUTb5SXLJvfGg5ILQBlmALsUFF35WmgBlMPJPwBUowRAHhcRgOUE44tnjU2JEYByNMqrqOS8peA6VeFemL39kHvhwwNqfgQAIAaYx5EAUEMEYCDgDAUbl6cBgDLMAFYpeJH1QUboEFgA5VASA2C0+NCKCgBEAC8CzkmE49uXpgKAMswARi13qMX5JG9oHaoQvgUQMgEQA/CDTgcJNCEEAASfEEIByI3zZTNAd8XcQloHpgCAPMwA/6WgGJv3LmyiBuDbg5MPTgadEiZZANApYX06b/wM1OevNdleRsYRlhiTFXECUK5GJpgBDL07o7Ou0S9/5JeAdy82qlHJA0Cx0DG+N6YSRJnf4p5Soy9zT7dCoeaVPVeYbgNEAZhjADAhJgAiJKDdQj3nqedbLADK7e4T/iXddtg/TghATpYxKXwoSVKmFwOgAWuLWE+Zcz9WIIeDsycomhFgzqQUACA0A143vR9nDUGDbQFUQ0oIgP2FETYDkmRt9MeHMtZeKFkgo91zCAKy3fo4AIMinRISKwBadGpcREbvreiySv/5yuNLKAE9FsDFhhadyo+9ALBXhkiAgSc8SEAoibuMEI8XgtwRAG8KhhdsOUGJB0DJrr3PbdBHaFAAc0cAzBZFC61gAIAAMQJ+hEVEA9cO0Zfd8lZuYFNB1kxLCwCazjUDJFKhpWDf2fW3MuG6h01d+2MAoO3DI4AIwAfAPDrDP6gYLxiDAVNSAoCmN1HVear6pt6Py0v+yZdx8kgBwKJAEh4B5H4iDBxBwEwIrbe/f0dWT48TAC1S5VswAzx6h0ZFuOBbAFqUqvoAALIBIITuwqYCspkLQOw44H7gIN0gsnrG5NQAQLv1u8K6DmeWq4IS8FV0GWCwCNDrBkgk/YAsTget5rfeekVmL4sPgAVRAyA0A14bzQpUXnFPfNKlNeIoIoDMAUDyK9MK8EGAf3kBWBwnAFrUghnAyOxvb/7drkrrAv9pELfOoLOICoBrURpBPSFiGBKBgt5iEBJeAFamCQBVhxnAKAV19fdpd7in3TFOi1JMADqGF8w1g3PYe4R2rfgVNYbdhrDMFwuAsdQAoFWzG7hzvCtv63Zu1z6DQMGwAKpa3AAU1h86dzyQzn2pEMkUqXw/HFDfa35jgEzmzYoVADVq6U1k94zqTjXVrr8kEt8CUKMWA4D99+6dCKJ75wDA4Z9HA+nnYQAgJIC+l9IGgAozgFkK+oQkdgCO3zv14lQAnTjuAODosUA6KgYADhElQJo3M2UAKDADGGsF2/QMDaOArMkjihqxmACcu/diTwD1A7A7gAYBAH9IdgIwMSUAqLrADHje1I0A8EFgAZgB4K8HQPJTEcrxA6DGIK1dhxngKfHbNCdDAGBYAHH8TVrSAChIMIjFBJBYAVBjEXJ8lhuk6xdf8y2Ay23V0N8OQE3qtT0gYEtKIQCqfhNmgGe5sKqeRaHIsABM/e0AVCTZMVIoQoAgCUwPANUtMAO8q/0uIwB4LIDNVdXU3w9AxhAiAMYKEBZcAExIEwCo81iGcJcLx4ffAeAfAaBnCiMlBAeZNAPANwMy5PVHXgdwHQnAvwNARjbTAesh1C4MzN9myNx4AcjGo2rrQo1I7BCAANA/aahezcYjNcEAOL+o2jggMUgzAFn95l1eoOf9/tVNPRuT1G6SAZBdb+0IYGaJKQZA5ZsBfAtAzdpKOgDGfyIaAECA7KLAOKQagCzMAJ+iFgCuTjoAJDwAPMm9Q7ojQDbLNQM4FoCrA0g4ANF0AWKlHgB1m8JM93gWwGMN1yYfAPIfgIFqN5kFH9cCyEYvABDhcHCOmAQEHw5OEgDZONW+6DUDuKsGYkkAAEC0E0KIoTATQirkXwCgWmeYASO1AABAtFPCCAk5JcwAQPrrAfjF3rn8vhBFcdx/IKxEQmxsrCTWliIyv1KNiveoMB7xXIhHSUQXzKKEBUHsSCq5FcrImBGvqJSqiIVHQhDvVzxXbNyZaXvQnkunc5t5nG9+9fvJb2Za7mfu955zz72DJAMkpgBwANCi0N4Fn3uTb7XKhGMOQHZrRzIASQFIGowAAMGVhUMyg7/8qrmJgFcxHmMAjAvPU/+TApA0AgAAzl5DF4b4aj9YPsR/7E0p9wuUguUlgwcgK1kqJAPEKQA1K0cAAL40rH8BBS4TPohADWF6tAEQJgNggvjr3z1RpADwWh1A8KFU2xLcRofmlwzAhKxsqU4y4B96bBpqVrLkATAdW1LoF4WmH7T+iD0AvEww0gD80fztb/0KrEEyAKpkLfm6G/YBQncDKG9V5Uo+ACAAIABFHgCjBg8DEKUBVZmSBABOgPsiALgMEwxAZAI1yQRkAwwD8SIX2GiOegBPS3J/VgfjjxgtL1XlCQBAEkGDV0IAMGqwC4DYBEyZXUBXAFZ4qeD0ptm9Smlrk28lAwCj8uK/Z4NrhqZKEwAAk0E/Tu/xpdPf2wRs+nb0/dFOvXde8DP8DQ7gE0r/DcBwmQCoMpVd2PlIeDwZdHaJikgGAOlZp82iH5XM0wDA0QM+dfS/AVCiC4BmNLqlgbEd5SV2AV0B2FO0rl69qvcqq7QHAHh/YL0vHXjPp4P/2fRNAEZHFADNqNzoZRz9xpRGAALA1UKhMNSr9OJvABz1CwD0AHjTexNO0bWArIYsAsdMYPvX4EckAMDNUAKgKJ0NDwBwybcATZJwA8DnBA1NlsIGALeA35ofMgjuVyup7CqyAHADSCm96YUpiYDwAeD0AK0ZBJhHgkyyMjAANElS7bMPkSWA168jv7h7OZfVPCUBgJbJN+96pd0ReGhEHACj8VRJISH/DWx18P2GrC5ADSEAMJXcvPXb3z1FGgB24fkMZAR4/OQJmB8cjAmEFgBHnc8riAEAqs2LQVPYJgD4/jEPr2ieCSQHgOlKHAHgBoA/NqBSgkLRwZhAaAHoPhbir4gDwC7s3YRuFXmBscoTfJewylYtcIUSALSqfKAAaFJkuw+DwWyeMfMFvkLgrITINKQACDRAABYGL6NxB98J2GQLFzITf7TQ06qxMHhp4QNgemwBsIsv0X9e6nnF5kdgy0X4aTOeVxi/SPwBiG0PoHGLR+/vtw3D6yPwx0U8Ktn8QxEAkQXAaDwTPA2slHWOyZZOHse3i3YgCR6AsE0HhwKAccEDYONty6O8lsEbVZ4oRJeKF20JAIStICSuALgDPHQbmLLqHaV+nYk/NvjJBZkAyC8JwwUlYbEFwGi8RmN85U7DEBsFHBc8AOEqClViCkC2fOkiau53r1jtt9Ossw9FQ4WA+wAOQLjKwkMDwMJgxWqIAXiVv+z3I9EdpLgJmEwqALAwJAIMRAkAoQE8+tPaRQlh5VnAJqCVuwKQSjwAwbZ/tnxLsBL0xZ+3tV25gR3KTeAkjxcDEQEwOAByrIGuBOVJYM8AQP86mgAYBAC5AMVqj/H7n6d47T8Px1PG7oChwXLBySIA5AOglk+hBsBrfjsblFXv4yPGi+dLdq5fEQCDBIBhCX7P1KE9gZjzF3Fi3taaxBAA0QDAiesQuUlg1uWU6h0MGQ7G4xoLEAAKAyUDYA2tvIs7+r1TZavLOfqVf5wjEQCn+UPf+BECgFUxA3CTu1XW9SQ0b+DNHTOJAMxasXwZzwWne9ZvqeDZaZ+aHTsAWA0r8/IKvazu72RfEG0l+6bGZAGweNanz4d86fOn2e32//TlsC99+TQ7ZgBo8x5gnblr59i9bJsibu7O/WpJAiA96/PPI77083NaaSr95aBPfUnHC4B5eETnJoEraESHTx64sSM4h0/hABw6cuzVq2O968ghAODwwQ2+dPBwzABgpnArgBcmCoBdeT5DdGaNyQPg1UYfIgC6SNPRud1mWhc/Vzx4vHsioxEAEgHgvXffEhuAlwTGz7bwErJm/oC/Qd+yyqcJgK4AzAtAtulVeeNGLjqbueWBqG6Y9jwCINQA8P71oSKa2S1awrb5uoBPIQgiSH0hARBqAAS3sLfUh/3rfK88EDcBAiDMALjjePwOvnembPnpQQCB56ZNAIQXgJzFk3kpPJnz7N83sFceiGcRylaOAAgtAHxGT9R6D8t67j9GkU/+YSIEQFgBsCuwFQCSBP6fMOKGYK08xJH+pRMAcgDgmbwnIgN48n9Nx6pvRV3AowtWjgAIJQBgAH1F8RaUB2KzyQRAGAHgdZ3HRSHcdTAAocS5RL5e9GXFJgDCCAAyekOTwHhCGC8o9ZYKEQDhAyADKRwfSWDES/BoMjPPhwAAmg4OHACriMzjoElgXLmrZ+8GcS0cACoI6QLAWH4b+xU3ACjmwOL3zH9fnzW8VSX4nLLdx4flAFBJWFcAMv7Fqq+Fvfa9BeVcDzzZlUf/NIF+AKCi0IABsIrnLwbZYragrNRdKnSpaPUDAJWFBwwAa+AG0EwC64Fd0Isp7X4AoIUhwQLAqo8V/D+P/+ZNr+1ledOK+BUfV1kfANDSsKAAAAMQyI3ce2bqtiLSxfNFiwAIBwA8BXRbWTz7b21qiv/Ak8C9Q3Xy3oxNLXVcfLFym0NFAIQCgMyQfmlPpy61da2kZ3qWXjp9CdTl8vpQxp/0EgEQ9CCwWCz9rSKopPtrpyKoy+UzGQIgNADoYoXoogSACIBkiAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAiAkWMzQ8nQVQKAACAACAACgAAgAAgAAoAAIAAIAAKAACAAEgnAmjlzCAACgAAgAAiA5AKwnABINAB8XShvfwIgaQDkW1GAC0B6hrM8lABIhAgAAmAbtwACIMEAtMYA851EkDsGIAASBcC2tXkCgADgAKxxAFhMACQSAD4EcABYQQAkGABIBM5IEQBDyZADQD6/btWqRQTAbxo1NpMQAvTi6R35ZhpgDQHQ1rTkAHBpsweA0/4uALMJgGHDpiQFAMt8viX/51zQ7IjsEicVgKlDCQHA/vh4HeSBnERgZLYJlArApJ2FoSQoY314utoNAlwLoB6gpfFj6kNJ0NX9bIQTBLhRYDsNEI3ZYBkAgKbUE9EF6B+et6eCIAigHsDxgCSYQOHdx6fOEACCgAglAqUAAJq2M/4m8PXdhx87/pgJiFIUKBmASfWJsSeg/u7jnXVr8+AAy6OUB5IDAGhK7Amov/vwfbPXAcAYkHqAliaP2RlvAur7zhV35dsOAEMAAqBtAhPjGwsU6jvffXyWb6UBvSEAAfCHptYnnotrLFDYue/dxxdbWg4wP4IOIBMAIGDizjh2AoW62/6bN/MOgGeB2g5AAHQQsJN3AvV4MVCo13eee3fOaX+nA4AYIGIOIBEA0KRf7Jk/S8NAGMax1QgOhUgHM3RxE9yKo4EORTr5IRwLmRM88qeEZBCF1g+QrY7FJV/Cb+BWdArp1snJ9+5Nc9cuFirNXcnvIHO533PPe0c7UAIpy8CBQO2n4yx/nqN/XgD0n6A6AJvc9j9oBIDRQZBS+1m+WE4d33aszSsgToA6ACLdwQgGAZBuzVhismyS5z/zwOb+ywLgE6AOgEi33xlBc27PRF7yRZ59feo2WfkXC0CtCbCfACBa964/6GzNq6y8vyy/53HgE/TPBwBcAZWbAHsMAHJx/heGoWmn1z3zbfYkBbOSKRDHcRi5xCdeIPp/EP2rNAGEAEhDo9E0tJ45DWMZCAsiIEmStuu6uq4z/aV/eAHQAVAH4H/8Hx0ZxycQgCiUhgjg/j0vYPXP/Q/X/Ss0AeQMQJMG4KadRJWScNqAi4ef6cfjD/e/wj8fAKoVgMwBcHHXq10iIB/tU/14/Ll/+gLgBVAHYPcAtD3Y8qpZ/QSPQgIC9rl+OP7cf1kA90oVgMwBIHTPK10BPfFgPaCfQj6zz9of3/9r/tUrAGkD0DJ1n1SOD4t+GDYF7a/00/ffpn8sgDoAuwVAa5lXji0VDmBR+6z8C/1DwT9eABQrAHkDcHZpOfJgIY949lE/TH+o/9I/HwAqFYDMAfhlvw5SHASCKAwvZyazz2b2OreJCxFBaAQJSqvjAebyqdRLpTtZB3wF+TXkAN/rDtn+CPq/PtZm+jHkxz/3fw/gRQP4PvwuG0XijpZr0fTBr/6jY3/mAcSFK9ibvvDDf8L//9z/PYBXDOAYIlEhRNhLM/hx+z/7O7sAaAfwdTgOgachx4c+/O/Xv1N/5gF0w0zyKLy8wDd98OP4m7+3HwDmARRrt3dzp+jqrvTd2iZ98Nv179SfdwBl0e69gNXCnS8v8HH4M37H/rQD+CyLut01gOfVho/Dn/H79WcewFQTJOxZk+Lj7Is++Bvw+/QnHsB6rgmatNv3qPZJ//n4O/RnHkA/7p6YI8DDPuknfrf+tAP4KH+qM089qtQe+Ekf/D79mQfQVD1Bgp3YYf+gfwK/V3/mAZwqsppGPglf/Z3zEw/gwj4d2wAIw0AUragp0sEADBPZ7th/FEAIGURFd1j/eYPcT5vjeG+Bu1bP6fPvH/zP++sGsMwWq4JIyS7+7/mFA2iThyCzsDrrawfQTUKc5/bgXmF9Avgipy+zvnAAwx6AmwK/KTa+fADCehVj0w1AroBekG4AY8cbAYAAQAAgABAACAAEAAIAAYAAQAAgABAACAAEAAIAAYAAQAAgABAANnbpoASAGAiAGNTA1b/ag37qoCxMoiECIAACIAACIAACxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0CcAHECxAkQJ0DcwADrBNgCPPHtE2CNCbAEeOgGGDPgb88OchsEYjAKS2QmMy60QcoKcgA2SBwEKfc/To1Tkl27qStTve8EUf4ngwQBfOv/B/B8BIzrfYWz+zpGewRYAIMG0K34A50GMAQMIPW3bryYDg4uZuxufYoYQMqlv07TsrzBzbJM07UvOcUL4JRyLqWKtOoDDlolUkvJOZ1CBbCfgHOp8yzyDicyz3Mt52gHYA/ATkAVkVZa/DppRaRuByBkAK8CqsBJfe0fKwA7AVZALtoAXJRadP5t/2BvAI8ArIBHArnAhc2v+4c7AM8CNIGU4Sbp/CH3t+8BmsDWwJDgZND1t/kjfQfYNV8JwJfNH3B/1VgDcNYEnX/TGEJw0ZjI85sGHg6y/u4Yv/Jo+FcBAAAAAAAAAAAAAAAA/OQT3R040atZehsAAAAASUVORK5CYII=';var le=function(){const mA=bn;var p=this,r=p['_self']['_c'],s=p['_self']['_setupProxy'];return r('div',{'staticClass':mA(0x232)},[s['showBlockingLoading']?r('div',{'staticClass':'loading'},[r('div',{'staticClass':'loading-card'},[p['_m'](0x0),r('div',{'staticClass':'loading-copy'},[r('span',{'staticClass':'loading-kicker'},[p['_v']('Excel\x20表格')]),r('strong',[p['_v'](p['_s'](s['sheetLoadingText']))]),r('p',[p['_v']('正在准备工作表、样式和大数据视口,请稍候。')])]),r('span',{'staticClass':mA(0x3f7)})])]):s[mA(0xb4)]?r('div',{'staticClass':'error'},[p['_v']('\x20'+p['_s'](s[mA(0xb4)])+'\x20')]):p['_e'](),r(mA(0xae),{'staticClass':'table-wrapper'},[s['showStreamingLoading']?r('div',{'staticClass':'sheet-loading'},[r('span',{'staticClass':mA(0x1d6)}),r('span',[p['_v']('正在平滑补充可视区数据')]),s['cachedSummary']?r('span',{'staticClass':mA(0xc0)},[p['_v'](p['_s'](s['cachedSummary']))]):p['_e']()]):p['_e'](),r(mA(0xae),{'staticClass':mA(0x1ee)},[r('div',{'ref':'tableHost','staticClass':mA(0xf5),'staticStyle':{'width':'100%','height':'100%'}}),s[mA(0x19d)]['length']?r(mA(0xae),{'staticClass':'excel-image-viewport','style':s['imageClipStyle'],'attrs':{'aria-hidden':'true'}},[r('div',{'staticClass':'excel-image-layer','style':s['imageLayerStyle']},p['_l'](s[mA(0x19d)],function(u,w){const mB=mA;return r('img',{'key':u['id']+'-'+w,'staticClass':'excel-image','style':s['getImageStyle'](u),'attrs':{'src':u['src'],'alt':u['id'],'draggable':mB(0x379)}});}),0x0)]):p['_e']()])]),r('div',{'staticClass':'toolbar'},[r('div',{'staticClass':'btn-group'},p['_l'](s[mA(0x25e)],function(u){const mD=mA;return r('button',{'key':u['id'],'class':{'active':s['sheetIndex']===u['id']},'staticStyle':{'padding':'0\x2030px'},'on':{'click':function(w){const mC=b;return s[mC(0x1a5)](u['id']);}}},[p['_v']('\x20'+p['_s'](u[mD(0x134)])+'\x20')]);}),0x0),s['statusSummary']?r('div',{'staticClass':'summary'},[p['_v']('\x20'+p['_s'](s['statusSummary'])+'\x20')]):p['_e']()])]);},se=[function(){var p=this,r=p['_self']['_c'];return p['_self']['_setupProxy'],r('div',{'staticClass':'loading-brand'},[r('img',{'staticClass':'lg','attrs':{'src':te,'alt':'xlsx'}})]);}],ce=o(ie,le,se,!0x1,null,'bfbc9353',null,null);const me=ce['exports'];export{me as default};
|