1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177 |
- var CSe=Object.defineProperty;var wSe=(s,e,t)=>e in s?CSe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var go=(s,e,t)=>(wSe(s,typeof e!="symbol"?e+"":e,t),t);import{bj as cW,o as MSe,_ as TSe,a as BSe,b as LSe,c as kSe,d as ISe,e as DSe,g as GSe,h as ESe,i as vSe,j as xSe,k as JSe,l as XSe,m as YSe,n as zSe,p as _Se,q as OSe,r as jSe,s as HSe,t as PSe,u as KSe,v as qSe,w as $Se,x as eWe,y as tWe,z as iWe,A as nWe,B as sWe,C as oWe,D as lWe,E as rWe,F as aWe,G as dWe,H as cWe,I as hWe,J as uWe,K as mWe,L as pWe,M as gWe,N as bWe,O as UWe,P as fWe,Q as FWe,R as ZWe,S as AWe,T as NWe,U as RWe,V as SWe,W as WWe,X as VWe,Y as QWe,Z as yWe,$ as CWe,a0 as wWe,a1 as MWe,a2 as TWe,a3 as BWe,a4 as LWe,a5 as kWe,a6 as IWe,a7 as DWe,a8 as GWe,a9 as EWe,aa as vWe,ab as xWe,ac as JWe,ad as XWe,ae as YWe,af as zWe,ag as _We,ah as OWe,ai as jWe,aj as HWe,ak as PWe,al as KWe,am as qWe,an as $We,ao as eVe,ap as tVe,aq as iVe,ar as nVe,as as sVe,at as oVe,au as lVe,av as rVe,aw as aVe,ax as dVe,ay as cVe,az as hVe,aA as uVe,aB as mVe,aC as pVe,aD as gVe,aE as bVe,aF as UVe,aG as fVe,aH as FVe,aI as ZVe,aJ as AVe,aK as NVe,aL as RVe,aM as SVe,aN as WVe,aO as VVe,aP as QVe,aQ as yVe,aR as CVe,aS as wVe,aT as MVe,aU as TVe,aV as BVe,aW as LVe,aX as kVe,aY as IVe,aZ as DVe,a_ as GVe,a$ as EVe,b0 as vVe,b1 as xVe,b2 as JVe,b3 as XVe,b4 as YVe,b5 as zVe,b6 as _Ve,b7 as OVe,b8 as jVe,b9 as HVe,ba as PVe,bb as KVe,bc as qVe,bd as $Ve,be as eQe,bf as tQe,bg as iQe,bh as nQe,bi as sQe,f as oQe}from"./f41-60b8a352.js";import{_ as im,r as x,D as mf,i as na,z as Vr,o as ce,b as we,e as te,G as que,H as vI,C as ft,w as T,I as Ed,F as Zt,d as C,J as F1,f as V,q as xn,t as zn,c as HF,l as Rt,K as uE,p as OT,h as jT,M as Oc,N as $ue,O as xO,a as qe,s as ws,k as Ft,P as lQe,Q as rQe,S as aQe,T as dQe,U as cQe,m as gs,n as Mi,E as Lt,g as it,y as xI,j as Cn,V as ro,A as Ei,B as Ki,W as hQe,X as uQe,v as ks,Y as mQe,Z as Ut,$ as pQe,a0 as mE,a1 as gQe,a2 as eme,a3 as Zne,u as bQe}from"./index-a6266cb6.js";import{m as UQe}from"./header-a9a1a5ab.js";import{r as rs}from"./request-93e1bd0c.js";import{f as c9,a as fQe}from"./f22-deb38015.js";import{P as FQe,u as t$,_ as tme,a as sL,b as oL,M as ZQe,c as AQe}from"./vue-flow-core-71a89306.js";import{_ as NQe}from"./vue-flow-background-7afad64b.js";const ime="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAA8ZJREFUSEu1lW1IW2cUx3/Pza1mVeuVBitbRjNwLIXK7Ohmv4xOWvCFlUbqaJF2y5hjdMypZDGKjjnwg6YtCJHR2S8VHGysRaQOWxzYDW1dh1sG8cOGIx2Is2411zVdg01yt3uNL4lapdAH7od7n/P8f+ec55xzBU94iSesz9YArw3L7H/Rjsm0G4RMLDZPFD+dOepmDj4a4Jq2IG93AY7/Hz9ok2gijMAC2gEQUZA66djRvxFoY0Cjeow4LYbArfEvuF4cXSPScNcKpmYE+Wixt/HunEq1WR/gnq9FaKWEF97gs9zwZmmgQT0EWifEy1IhawHueweRYi3cCR3h4nORVeJKUVGRKxwOZ05MTHwMJIOb7h0kHm3jB3/x6miTAc6gmdycm2gLZZzJnUmIy3a7/Z3y8vL2iooKxWw2MzAwMOPz+drn5uY+B1acaAz50KSrdGR/s+RYMqDhn7cgnodX6dANsrKyjlZWVp6tqqrKVxSFaDRqPJFIBP29q6srMDQ01DI9Pb14ye5QIRIuOnJObQBQB5G007Tn3AZK859/YbD2ww8oLCw0hJeWHoX+PjMzQ319PVPynjqOX5o0PG9Qf8SrvIzrwW7kh4UpESQ2F5UcVN/q4/s2Dj17n+rqaqxWq7Ghqiqtra1MTU1RUFDAt6O/nKDmt5No4iKCFmLpDkyRAeJS9Qrg/dlMstKu0KEUJzx1cHKoD0mGWARunOX4KxYjPaOjo5SUlOB0OvH7/bjdbgfO4DVyla9BHECgEpecnNkxmgzI3DaIN+fVZcCbw308vA/p2ZCRCz9dwPbnJXw+HzabzYhkZGSEpqYmvRH70Ytkl3KBuOm8Lq7rpKboZ7zKvqQIdAuTGeR0+LWf0oxxPB6Pcck6IBAIUFNTswhYZ6UAQldYoIZO45IdHPuyj6d2gmxePPr7VQPQ3NyMxWIx7qC3t5eenp7XgeXSXM1Zp0w1G97sTw2j7buO8sz+dl56126A/rjOYdN3BmBsbIzu7u7JYDDYAny1tVnUOizz776bEKtY1fJmtqW/x54TjWRb8+x/XSYjI0MdHx/XhfVGW6lfvVBSRsvaUeGZL0HT6pgNVaSOCuCTxIg4p1drktf6iBGxRrxK2cYpWtrxzNeiaaXrQNbPxNKwkziSaNJlu83GdSNCauPO3Wsp0SwK1IVspAkPgjziC6dXza8tAIzZMpuHlOZC4zBCCwC3E01kRWh7DRXBedqVy1u75I2s9O8fze1FYEMImTgq2oMA557++1FH1jbaZtaPsb+1n/5jCC8d+Q8662t8FY6VlwAAAABJRU5ErkJggg==",nme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAfdJREFUSEvF1U9IFFEcwPHvQwkPhhtUmxdJMBI81K0dSJK1YxAdh72YIgU5S9DFi4blTUHd3Q5RtEUt20GRbgW2eLHm0jEIEhIvuriwU7sHicVp3+bKuPmct7XSuw3z5n3e+/15IzjiIVTrh0KhS67rntHxhRA527ZXDpqrBEzT3IpEIid1gFQq5aTT6RN1AZZl5WOxWEAHiEajTjweVwJngZmaheYsy1psFHARuALMeZFGnuD/AOFwOBkMBmX4fEc2m13LZDI3VUk+8AQMfGshEGjxXV1OcJxtnndu+wGPgAvAJznx9IPvX42O5i4d4MN6aXNrvK3dD5BJfgm8At4ZiUL+yY1WrTIdXiw6H0eOK8tUhmgIWACagSlg1EgUXtcJ9AL9NadIyU6W3XrN8+IOMG8kCqN1Ap2AtygiQAXwjvu7DxMNCNFdYNkLyPBI9cXvJP/YMDqatC47e720mh1vO1ez2T+A/e//vUwPB9xYf5JjrVqNxs/imoi+rzaazGmu3B0+wDMzT/dVrTLly5IjBivX9flyJU4CZhkZqc3BvhC59QMhYBYYBorAbeCt8ofzF8DT3XK3PTsdayRwCkhWb4IqogYeX8/T3qOXg43POXHrjQRkqT8ExoCSRNTAdN9lmipd7j922BT3lr2h2ftGCfivqjfjF4O0xpkfneTiAAAAAElFTkSuQmCC",sme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAABNdJREFUSEu1lXtQVFUcxz8XFpYFdhHlsYo8fICpaNqTSseY1HyNVO5oD1F8MKVZM86EaYpgYpqRMtWkFQgxUCYqAakzpjyySJghGhUX0BBCXUKGJfbB7nJ3b7PLaGiCTk2/mfvHOffc3+d3fud7v0fgfw7BmT87OzsiJiZmube393/GmUwmMSUlJaugoKDNmcwFaGhoSLHZbKlBQUE4n/5x+Trkl8KPdXC1A2Tu8MBIePYR0EyDIb7/rKm4uDg+Li4u7xagpaUlpaamJjUyMpLo6GjXF8YeeHtfO4dK2/GLiiY4BHyUYLeDoQtam8DSCTtXwmvzb4cUFBSsWLx4cc5tAIvFkhoVFeVa2aaHWRvBdPljwodpUa9Own34CQTfKyDJcOgfxK6bi17nx08nYc1s+CDxb8igANEOszZBU+sFRonvE7pTjeeYPMYLZtTYEYEreNBiCaH3fBqmxucoLYGtGnhL0wcZFLD/GCTt0/F4+GGUsfvRF3qxdm0zMx/tRGYCyQ16lXDRzZN8VBh/TUdfu5zyb+HcPhg74h6AyGVdBDqyGBLhj+9jO1AeU7DjzQbURhGkvgodHmAYC/V+HnxuD8Z8+geqjo/ihYmQnjgIoF1vJyG5jIcTV3Pj+CKWaaoxXZDz+oxWODUCKtQgt8OiFqToLjqnwlcyJVWNG9Cd3sL1X0D7xSCAjIwMfu6KIcBPhywsl2cCDVQVDWPJBD2TK9Q4hT0aGKkQ4d1ajJEOKtVy8m7MxVxWSNGX0FMMhUcHUFFlSxRbjkC0cg9DlmbwXrgOzxp3fKuHUlcURq4gMEuScJ3l1lrMk2xUh3qS3fUU1rJSvvkM9Ifh+xMDAJq6o1j6EcxcZEWxMIJ3hHbCLjmQN3jBrkkguvUdQogZks67zqE0QMGRtucxlOVz6hAYCgdpkSogiogEmPcy+Ma+yJzgEuaZzPjVgdCoguoAUNghVocYYqMucDR7zmlobpqP6doTKHpknEkXBpdp7AYw+kHk9CqU0+N4Q+ggtNuOz+8gM/bJ1OwvY3dVGoWVrxIe6El3j8Qfegm5ByTO9STYUjTwn1x+DuZshdkaUD20B9WEnSzEwBSsyBx97rX363Qamtawe5UXeqNEgJ9AXbOdpCwrdgfIMGTUZY5YP6BVbDwAmRUwfQ54R5xENjENH9VFArFj0I3h9PZySlK9KT4r0qZ3UFgpsm2pnDa9xCclNmdeURDFyPoc/2aXmzrNrr8XOe1i/X7ILoepT0JIBAgqLYJPM+0X1CiujiP5JTmHz/RSXOU0Dxgf6kaSRs7KvT2usSRJiY1Zqsy7Am7a1sEK2JYHrV0QNBy8leAwWgmSi+RvUDB7s9nVEmc8PVmGZpqMdZ9a+gCQ2pip3DYo4CbIeRec1cK1Dmjr6qX2N6ur/3aHRO6pXoL9BdeOKrV2knOtfXbikFZcOqDKcQHq6+s3h4WFpWm12tuN/S6jP20q1mWrXRfPkhkexE6SuVTU0S3xSqwHqXlWDlb0WqyiMKo5x7fNBUhISIiIj49fYLVaZfckANuPTZzSaR26/M61TokqFfDhUeumxkzVrlsqup+kd64Zt8qwBYHNgFe/dxZBkpLrs1TpN+dcO/i3MSHBqBbdHQsQhBAk6ZrN7vadsy398/0nwP0U9he3Amg3HqbCNAAAAABJRU5ErkJggg==",RQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAYAAACohjseAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPTSURBVHgB7VpBctowFP2Su2m6SG4Qh073zQlKLxDCDZKZhmQXcoLACUpWJUxnoCcw5AIlJ2i6z1D1Bu0qm6Lf/9WYGGKDDZbBHb8ZxpaQQM/6+v99WQAFChQoYBEiTiP3g1eWDhxS822kImQAGpjSGm/BgaFqVxUsibkE3ZpXlyAvqdUOrBEaoQVbuqla1V+QEDLqC/dscCmF/LhucgwpoC4eHA+WQCjB1yfekURowAZBAJZdGhckRPgMSnkIGwgByccVSlADbsMGQoYsF7Y28hWRxCPXYB6wVxv0UMou+QqvVPMaYW1yTRAE7k5uQZbDmuSbYAz89wRfwKpAoOCLv6fqhNhN1kds24q3qxOkgekxVtXn6tCvKp0OWnQ5j+qipd4Pyq/S6U2XCB+BBaRiolJKzz3zXL+sX+oGXVRoY4RmkBwrJlvkzNggDdAsCpRffZKsGbXQx7PNSKirUafS8MtG61pWTKk5GVLtrkCn65dploYUmS/8MpNDod/7ZZJdb43WtYxUvajRi7XBZNCjTwctQNHneyI3MU2eaTZryACphwlW/mx6fllvjY+J3QWR63HZrXs7kswZMsorrcRBNj02Qb7n9TjqHLQmXz5QfpkROTMWsATBnpVmK1hXqt1QAg11yBD2CKK4m83AtRz3/wX57GCFIHtMs/Ye4c8kOxkNz8OHTaRO0A8H/uzxWgxuN6hOtU/utgkZIXWCDgX42XDwLHy0Kw1E+AIZIF2CJMPu20+aVGqHSbnmnsMHbT9Omm7pOs32HVhGmgSvpmQYa0yBU1sJQc3KJkymXIUozZoSUiHIMzG6rkzcv9koDtOYRrNOyTkVplnTxMoEH51K1S+bdefIblT72fXImtUmydXyQYppiLpJV5dmzeUqWnfnZJruvG5mPZ5436mfMhV/6CE5YsjkIWWsRpBMjmTZzGxhrK60HpfqlxTFplPeURDMO3JFEAX+gISI7UUFwi3Fu7us053A/6vxK+gn7LaYIAdyFtD3108aM09YSFCgvsorOUYMgs9MkjXnO/qs49U2p1i9JB2SKhkmZX0vcw7K9OF1GNsPJPWi/MPWc7g5uAVI5uQWOxkp2Bx7gap9yHDbbwYqWBAg3EUdwgki/qRXYP7P0DvwgVKdSjPqj9YBk1Dj04OOipGhB4HMewMpvwXrOFxQOjMUfPpojaC9nB1KrSo0e+VgPeWUe2EnoiJPOlHiekRb7JGJ60aBXg1M7Z4HMP8oF2XnjpY9FCYsbBwmIqQdHadjHcZ7QyY7FnAYdZIhU/AugtSKdgX684gVKFCgQCb4C6Y1bO4otCN4AAAAAElFTkSuQmCC",Ane="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAp5JREFUSEvF1ltIFGEUB/D/mdnVlOhBIliDckcJujxkNyss6qGHFNxdhKULFFbOrhUS9VjBPNR7kEa7mtFDhBi6oyBBD12giMikQsPYXbUkFUHpzu7OzIndUFYz28+FmqeBOXN+nO9835wh/IOL0o2iOv2obMGTrcvgV0sc8cv9mjeezDWDrPKF1tlAfWBMAPw9K4hoNbHliQQ9oVlI8YmOzSxLLwh8IBJwty4WKfa3r2CWxwE6FA1U3fn/SKHatTxHMpaKVDR03TMkVImihlpAVCOAjEUDLocg0l5Okq0kU8Ri6+tgwH1XCMk0+dw4IUTxdR4EuCxTjIEvgwHXRUEk1AjgcGoLWqixy9y7EMhxKT7Q4voohGRaQVbLNR+yR3tgez/2+QJZeBSZij1Gm9fMCknfwpJJO8LNVc+gaZIyWmqC8RqEDQCemmx4h4PVo9OY0HKV+DpdFnFp8mXJMJrDzdUjyXunTw8xW9223NxbHEvUM+Ecybw1cs39IflcCPlTT4pOdmyUDKk1Wti7FppmFauheiY6b9pp+3BD1aAQ4vTp+4hpfaqShO12+GbFxDSsqPpzgF9Gp+Knkn1R/HodGBoglRMlPmX8gZy3J2nlKar+BIS3UccyP7S9htOv1xLjEoBKMJWD5e5oU+W7Bb/ChWpXfk6+kZMMspm5P8JXK2Jzl9Cp6g8BDBVgrLYn6EsoaqgTRLtg593RBveb6fiZobXYeaKo+n0QxmGhDxKdBXEjmM/Asm/7ayUih1FR9W4Q9puETRLjCsCjeY74kd/Gr1LbvgaSPJAav4RvIgiRWWZZchMR7WTwvbzJ2PH+tl/zfVZPUmfAr9dKjEoRIBkbM2LHRm54J51+/XSBtTLQE9ySSM8x629FNHmm8T8B/QHSKPa1fQIAAAAASUVORK5CYII=",SQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAABAxJREFUSEu9lX9M1HUYx9/3iwNODhA4QrFAOTwIBWx4ZtKJsgHmISlLCpHlXBbkhFwWWGgcpRLLXBskW2tNxWlzyUb+oAYEDDhuYXcTbMAUApsYECd4cPfl7trnQ/fVi+/F1VqfP7/f5/m8Ps/zvJ/n4eF/ODwHY/2713asiwzM+a+YMxarqb5rpKK/Or2LQiL2XxEXpsnH89IivLkgdjtw48449HcmMDnNwA5gyWIvJEQEIEwmcfmuojM/1R3fHa92QKTvpEca9yavcHKw2uw43zKIz6/1ISxYgtgwfwRJxdTm9sgUdP1jkHgIcUCtQGJ00DzYsUvd14szY1JdQowmBq9VaiHz9URx5tMI8ffifHHLrd9QUqNHYpQMJTtXQShgK4C/hUw8tCD7kzZkJT6FnI3hbpXp4JddEPJ5OJYTBz5/DjQPciB1hVHbOwqlPBDdQ0bIl/jgrXSFWwCH0c6KVmxbG4pXng/jhpCaNN0cQfvPo9RALOJjgyII1flKt0GjD8xI0zTi6vtJCJSKudPlL/HAoa9u0Et9vEQ4W/gsYp70YyFEVXs+60Bz9328nRGF11Pl8x6Qd1qHlPgQGhFnTVTRMqSWNsJPIsKZgvWIXuZLLzEMTmBqmkGCPACK/Dr24r5KNZt/x8cGwwi+bv8FVfsSuCGvblqOLZomnNr7DBRLpdSPpEB56Dp4POCHsmScaxnAt7pfsX9rJJXvc1FBkHqLWLDJYsVWTRMaNJtdq+uBiXFyIkpTHf4eM4wVjZpk2oSOY5m14e6YCeHBi5zSVnLegNKXV3NDdqxbhoraW/gwO9bJ6feHFhgGJhDs58lG6DB4oawJtUUqp/4wM1aIRQJuSFp8CHI+baehPn7IKIkrvAoBn4feSjX9ZWFsyKvW4eSeNVQkjlOrHcaPt8ddR5KbFE7zrz2RApGQzzqaGRtyT7XBQ8hHUWYMVeAX+UqUXryJ47vjsMhTSG0vtQ+h+KweUi8hOspTUP5ND/dYIZ2bGC1DhjKUsz++09/DG1Wd0JanIODPOUYML7QOgtRi1kqEDtQdVuFy5zA3pKN3FCU1BtQf3eR2E943zmBfVSd6hows5EjWKiIKbojNZqe5Jk345pZIt0HEcPuJZmyIkmFqhqF+IgHf9RQmsn3p41bkJi1HtmpuDi10SJqJMD7aFQuhYK6eC456oqhdJ9sQGihBgXol5CE+nBxd3xjeqzFgrTwAR/7JqHfcRpZWTfMAquv76T4hFy1d7A3zrBV3x6fRYLgHX4kIhXRpyeY94q+RiPOTwycL0hWPBP+Yi81up0Ul63ds0uz2+j16QX/5g6y4F9k1tubglezNq5/YZrXaPBbKvzv/bXaY6jqHy/pPZ/Q82pXueP5Lmz8A9lDiKOb3VdsAAAAASUVORK5CYII=",WQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAmxJREFUSEvllktoE1EUhv8zk9Z0oSCKxYLSSWyNIAVRXBUKioKvJK01oAvFtsxEStGlKxV0485XtR1aHwtdWEwzneLCjYibbrpRKSgm01BLi0RprZuknTk6iQlNCU2cQja9u8twzjf3P/859xIqsKgCDBRAGmV96xKsbhA2O4fTjFDtevT1/vFfuRx5iK87siVtimNg7HIOyEYyMGb8TDVjKGTa+zzEe2nkGFv8GuCr8f7gbacgj6I9ANAN5qa4GvxYAPGER06CWSfGoZgaeOsUIinDPQThHpnWgdhA6/h6gNT53zVMR5vsowqmEPv8OLCQk69e1n1VvOROszifGPAbK2X1hiN7LRZvpV1m53Rv249V5fLK2gUmPGVQXKx27bMtKSnaEQLeADxvsrknoZ6esZNIitYP5g+GGuwtVsu8u4oV3iNHz4HoOYApk/iyyBQBMOdioeGLeiqZBUSHCNTOjJuGGrj235BsEr2dYA39C05aNVbD5J3Wucy3sPaSGGcALDBwlwiZvshIlOLB2JPgVFnukpRoO4GKQjyKNgugttjfW0zKpOpXS0LqlZGzAviFLddfma4AeLVcLknWjxKxBvCiSWght5U3Qu60q0IkJXqeQM9KFd6j6IcBUyem0ZgaCJVdkx11m95/m51rtgPEtDC+3MKNsu7jFRb2do3utzZQ0ug9kZDCwweJ6TqRdTHW1/a9pFxORss6GSu5Uc+EHqMvYI9rR8sja4MgdBQd9bs7tI2LVfgEYKej7MuC7EurZnuqZeJGKF1Q+EwHd2m1EKiTiLetAWS4xdTgxMPQ73z3ryFZ2aEVea38AZD9kSi0dD5YAAAAAElFTkSuQmCC",VQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAABF1JREFUSEu9VW2IVFUYft4zM3q3ZtKlaF0oJUSpCLHYLCFpxAqWuefOrOxQFPnDCMMfghnUbpCy9UMMJAr6oVhBWtnF/bjvnV2VwklMk7LvH0kfmApZFJRONbPNnLc5yx2ZdcbFX55/97znnud9n+d530O4CouuAgauCMR13UVE1CMiC5RSjjHmnIgcKRQK39okPc9LicgxY8zeQqHw4qWJzwSitNaPicjTRLQUgAD4C0AFwI0AfmDmxRbAGPMZES0GUALQxcz/NAO1BdFa3wCAiWiZiOwHsMdxnILv+xZkam3ZskUdP348GY/HvwAwRyn1pDFmWETWdnR07PF9f7JxtgWkt7f3png8fhRAkogeDYLAgrRdWusRADlLYxiGpz3POywiK0TEJvNOGIbr7Y/TQDKZTKdS6jCAzlqt1jM+Pn6u+XYbTyQSc0ZHR0/Z/Ww222+M8Rsgdk9r/QyAlwHsY+b+FhDXdTcT0XNEdE8QBF/bA+l0Op5MJtcT0SYA8+2ezbRUKs0rFotlrfXfAHaLyLvGmO5YLPYGgDHHcdY0KLtYSV9f3/XVavU0gF3MvCHK6hoAAYCVAN40xnyglCrbzHt6el47ceLEsC0IgAW6diprot2zZ89+oq0m2Wx2jTFmZ6VSufngwYO/RSAv1N00ICK9YRgWG9Sl02knlUodAnAvgH5m3pfL5ZYaY24tl8sci8U6JyYmzrYIr7XeCWA5M99hg1FlvxPRtiAInm38kMvl5tZqte8BpIholYj8AeB0w7au6w5Zah3Huc73/do0TbTWH9WDF4IgcG3Add27lFKfApgbBMGFBojW+hiAWxKJxJ3Dw8O/eJ53xhjzdhiGg/ZMJpNZq5TaFY/Hu0ZGRqYYuaiJ1tpeeJaZ+yKQZUqpI0EQzLrUv/l8vsP3/X8jSq3TDjDzuui/h4noPaXU/LGxsTPTQFzX3U9EDjOnI7oWV6vVk/Xx8UAYhh/O0CvnAWxg5rciUEvtVqvL6Ojon5dWYkVez8zzIutacX8EUGbmhe1AMpnMdqXUxuastdbWjbcx86IW4TOZzArbiCLySBiGe+0Bz/OWiMhXAMaVUk81yrfuSiaTg0T0PBENBEGwLUosmUqlfjbGvNI8KC9qks/nY5VK5XMRSTDz7U1CPwTAt26qJ/AdgPNEtARAB4Ahx3GGGi7SWm+vD9GNdSMsLBQKP7VUEom2nIiOisj2MAxth0+tfD4/q1wuPw7gbvutlDo1OTnpT0xMWDqnluu6y4joYyIaCoJg2rhvGZCe520SEVv+S8y8+XKCN+97nrfSGDNCRF92d3c/uGPHjv+a4y0glrZyuWyH3Nb66LJdPsDMn7QDiyb2AIB1InJIKbW6uafa0tV8keu6q+qP0+v2MRKRbwAcAXCSiEhEuojIUnc/gJqIDJZKpVeLxWK1XTIzPr+RGVYbY7JEdF99SC6ILvm1Pnms6/bFYrH3G/1wOWqv6I2/El1mOnNVQP4HeDjyKAodu7YAAAAASUVORK5CYII=",QQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAAAXNSR0IArs4c6QAAAi1JREFUSEvtlE9o03AUx9/7NTVBGIoiFGQIIrIJPfXiWZGS0KRlkMMEEWQUPAleveTmGILIboWhBz2MHsJ+v7RF6MCLoFh6EPyDNwVnETw4kKSY5tlIAtq1TVP0thzz+773Sd73/b4IU55qtZrt9Xoq55xP0yWd4TSBYRgLRPRNCHEkqdG080NIqumNHZemaWcymcwzAGAAsAgAH4lowBhb4Zy/TkUAgIme6Lp+FQCeRA0DRLzNOX+QFhDqk4y/T0S3EPEO5/zuPIBESKVSOT4YDN76vr/UarX2/znENM1jnuftRp70XdfNt9vt76MgwzA2fd/fbDabHyZ9xNhxFYvFE7Ist4novaIo1/r9/gYRrbquuzwKMgzjERGtBEFgNhqNp+NAByCmaWY8z+sCwCchhB4WWZbFut3uOhHdQMTHI40uEVE+ercmhNgaBU2CvAzjxHGcYgzpdDrriHgAEgSBiojnfxuMuJXL5W7WarWff4KmjWuXiN6F43Jdd4MxtirL8nK9Xv/Ll2hc1wFgrVAoPLQsK0j8k1gQG09E54Z3ZF9RlPwoINTqun4PALaFEK9SGR+LVVU9JUnS3nB7Tv6XFQ5Bh1E/k/GapuUYY0sAcBQRd4joSliYzWb3bNueeLNTGR9l1nMAuBAXIuKXcSs8S55NTOFyubw4jIo3ALAAAD8kSTpr2/bXWZrONK5YpOv6RQAIQ/KyEOLFPIDEqA8FpVLptOM4n+cFhHW/AGQgDyhHORyqAAAAAElFTkSuQmCC",yQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHZSURBVHgB1VRdasJAEN6s0QcRmiPoDfQG8U1EbW7Q3qD2BLUnqJ6g3iApCvqWeIPcwD3CiuCDqOk3kg1LmkhJq+AHw+5M1m/+ZezeYehKr9ezcTiGYTywAoiiaHM4HMbL5VL8cNDtdp9LpdIn+zvEdrttBUEgSTGVFeRPOCTOhud5khUAVQDZ+9Vq1YE6JRtPvZFFyQmmaYq0jbMr4+oOzCyjbdsWge4omUjb9/u9tdvthGqkBtJXlUolUIbMDIj7dDq5x+Nxjca9KfJareaTjXPuKPJ+vz+EuHEwcjab2XpQmQ7oIUjamIgQMiInRI57E7P+Pp/PR/RuMBiQ8w/Y6ywHyR4gCh9HHRE0lM1xHAuZ+CBtkq6TwyktpBvbJ3F5zkCW4WKx8OhusguQUjJEzkCkTFESmRY17i/67zCuX1QIuudOkap5XJaJXi76joWcQhcqM1pQJaiCo3j4L8ipLMN0T7Q+CQjpQonOlTdFNKKviKalaq4I4bANdRXbhGY79wzOXfyvNZNyZTmIoxAZdmpkcOGthWyoPNSDMDeD/8RNHWwgVqfTqbOCwPzbZ1LOk51IeoBG0dg9lsvlNZaOFQVNFYYjTHT9I20nDhtisWKQWLJxelTvG9+HAeL1Q0xgqAAAAABJRU5ErkJggg==",CQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMnSURBVHgB3VVBUhpREO3+Y6WM2XADB03WkhMAFwhwArEqYsxGcgLhBOIqQlIFnmDAC4gnCNkbnZwgZKOpivM7rz/MMFBoWNsL/dP87tev/+v/iZ6L8Sqb/A+B70VUECbfOSyN7Rr1w7NKGP9uxFxaa5vhl0pvMX7tyeTvgwJ7fMzCBTFwCI3x5zd5vMkAhaccA+h2Nt4u/vdoFSZ+PciYO69LLGUWukLprWiDhmGrMk7voT+UUQBxieyAyBzZyBbDr5XhkyAO4N58Q9UZ69m98HOlT4/Y9sGgL0J5a+xbWqexi0MKgIYi9jTsVFq6zywGKgOtTAMXAbQAbU/8jURDtwCAsrxpl7KIHaBy35DJLGWyvR9UxZiuZTA4mx2gXwvqhs2RLl1yVHqLhFPWv+Dp2UjOac3kjVADG5o3nVJjKcjWweAWAcObdnlv5rvowldlS+i57bNH4YOCrVM/PjcnCKZJ5QsAaom60IYCNvhGK0p8g2P0pOqYpaSpLeN7VZT4hm3xul0Zvka8WMqoQPT3WN5zIMZSTnldp5QB6lVtxVzrppJ15ya2aKPJWV23JnHZWtAj9jaxLCZ5aNY4X0RG8eebj0FOc6aZqXliWgogYAB2I5zVpbnTYqZpmMYMhumYBARSzNASe2Aap79/tEtleQnlJe3AcFIqVub3z4GgUyEzJ5v/viCXxLCb7DmLh9LJmXnTGgppliiDjoyXg4jb6LtJniYS4qFAurFv0diahsoZy+GMiMmjZaOlINEr6itV9LeeBHC0B/CMKik9hG4oDwYnSLaLe+00fVGiIznLcjVXTPojWxv04CjZDZtNWrIf5IwxAbnrYiIMJJ4CMmbiXSsdj4x5HdSlTFzlxjac8947iX2qIL0uGLMC1VxBId8h3qYWkgbQW0GZQXVNWmzrogOUq5iDrhVqhZ3SJ1rB/MPBLuash+UpCqr/F0Rt6/Cijkk7cbdphGlfuLqT5DgbvjMtx0Do/LZTqi7b9+jLmH6MFMy9F5HKnMZ4wHJQ3g4TFyZzMX82K4PEtl0LypZMGcn1BthxTpGfOPwR+j+0G9RLP2bP2/4B45WcET0BU4UAAAAASUVORK5CYII=",wQe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGkSURBVHgB1ZVBTsJQEIb/N7gwbtQbPDyBxrjHE2BXxhXdKLgSTwCegLJTNFGXrkq9ALg3ga0bqCewF/CN8wgYA20JFWL8kqbtm3nzz0v/TIEUdMXX+tTfxS+g1KCBS6QusCqBZfD/BVTcoq4ENWK4YGyNsyJmvAxbRRcLEn+CddNkIJLCW/aSZ/CGqSIDKilgLUpMnVFxZQ7DaydEBnJJgej1KdrcP1YEfhveOG1kJPEj6/OgRIoaUFTTZ0EtNqfiF5JiqQKj4p/wjDF7Rpk8KbhJhSRWTxOZ+QZ2NBBRzxYPb53+uFNNhnpQ3Abz+ySXQVoplOyzYXhhq3g5/wS5sTUXRIQKtpGZ9bhkSXSl44ZhcyiCkXWTtPs4aBXrU3mFkdMkZm0cek40XWstTkAs+SCbIZt7MLCbmtPFv2FcDZNi89gp+17+NMhsUUv6LGJEivgDKxNYAn80Te1vUiYp5VTJ3o3hpl0P75wuFiTWRWLNXXHQ/aQFETqybpG3LhYkdtjJoOtvH5zY0xVGC1J8kNWKaeTLz52dcuBhVeiqn2ls/OQLhTacA80bXHwAAAAASUVORK5CYII=",ome=""+new URL("xuek10-9e62a0b5.png",import.meta.url).href,lme=""+new URL("xuek11-ece0cea6.png",import.meta.url).href,rme=""+new URL("xuek12-1e6dae67.png",import.meta.url).href;const MQe={style:{width:"100%",height:"100%"}},TQe={class:"echartitem",style:{width:"100%",height:"100%"}},BQe={__name:"process-monitor1",props:{echartdata:{type:String},curvedata:{type:String}},emits:[""],setup(s,{expose:e,emit:t}){let i=x(["变量1","变量2"]),n=x([]),o=x([{name:"变量1",type:"line",data:[10,20,30,40]},{name:"变量2",type:"line",data:[20,10,40,30]}]),l=x(["-0.25","0.00","0.25","0.50","0.75","1.00"]),r=x(),a;x();let d=x(null),c=x([]),h=x("");mf({instance:null}),na(()=>{a=Vr(r.value),g(),a.resize(),window.addEventListener("resize",()=>{a.resize()})});const u=()=>{c.value=[],o.value=[],l.value=[]},m=b=>{h.value=b,o.value=[];let f=h.value;for(let Z=0;Z<f.length;Z++){i.value=f[Z].vars.split(","),n.value=f[Z].vals.split(" ");let A=n.value.map(N=>Number(N));c.value.push(A),l.value.push(f[Z].step)}for(let Z=0;Z<i.value.length;Z++){let A=c.value.map(W=>W[Z]),N={name:i.value[Z],type:"line",stack:"Total",data:A};o.value.push(N)}a.setOption({legend:{data:i.value},xAxis:{data:l.value},series:o.value})},p=b=>{h.value=b,c.value=[],o.value=[],l.value=[];let f=JSON.parse(h.value),Z=0;for(let A=0;A<f.length;A++){Z+=1,i.value=f[A].vars.split(","),n.value=f[A].vals.split(" ");let N=n.value.map(W=>Number(W));c.value.push(N),l.value.push(Z)}console.log(c.value);for(let A=0;A<i.value.length;A++){let N=c.value.map(Q=>Q[A]),W={name:i.value[A],type:"line",stack:"Total",data:N};o.value.push(W)}a.setOption({legend:{data:i.value},xAxis:{data:l.value},series:o.value})},g=()=>{d.value={title:{text:"几何外形",left:"12%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#333333"}},legend:{data:i.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"10%",right:"5%",bottom:"10%",containLabel:!0},toolbox:{feature:{saveAsImage:{}}},xAxis:{type:"category",boundaryGap:!1,name:"x/c",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",data:l.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}},yAxis:{type:"value",name:"y/c",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},axisTick:{show:!0}},series:o.value},d.value&&a.setOption(d.value),window.onresize=function(){a.resize()}};return e({linechart:g,getshuju:p,getsockechart:m,echatinit:u}),(b,f)=>(ce(),we("div",MQe,[te("div",TQe,[te("div",{id:"line-left",ref_key:"chartContainer",ref:r,style:{width:"100%",height:"100%"}},null,512)])]))}},LQe=im(BQe,[["__scopeId","data-v-687d4b28"]]);const kQe={style:{width:"100%",height:"100%"}},IQe={class:"echartitem",style:{width:"100%",height:"100%"}},DQe={__name:"process-monitor2",props:{echartdata:{type:String},curvedata:{type:String}},emits:[""],setup(s,{expose:e,emit:t}){let i=x([]),n=x([]),o=x([{name:"变量1",type:"line",data:[10,20,30,40]}]),l=x(["-0.25","0.00","0.25","0.50","0.75","1.00"]),r=x(),a;x();let d=x(null),c=x([]),h=x("");mf({instance:null}),na(()=>{a=Vr(r.value),g(),a.resize(),window.addEventListener("resize",()=>{a.resize()})});const u=()=>{c.value=[],o.value=[],l.value=[]},m=b=>{h.value=b,o.value=[];let f=h.value;for(let Z=0;Z<f.length;Z++){i.value=f[Z].vars.split(","),n.value=f[Z].vals.split(" ");let A=n.value.map(N=>Number(N));c.value.push(A),l.value.push(f[Z].step)}for(let Z=0;Z<i.value.length;Z++){let A=c.value.map(W=>W[Z]),N={name:i.value[Z],type:"line",stack:"Total",data:A};o.value.push(N)}a.setOption({legend:{data:i.value},xAxis:{data:l.value},series:o.value})},p=b=>{h.value=b,c.value=[],o.value=[],l.value=[];let f=JSON.parse(h.value),Z=0;for(let A=0;A<f.length;A++){Z+=1,i.value=f[A].vars.split(","),n.value=f[A].vals.split(" ");let N=n.value.map(W=>Number(W));c.value.push(N),l.value.push(Z)}console.log(c.value);for(let A=0;A<i.value.length;A++){let N=c.value.map(Q=>Q[A]),W={name:i.value[A],type:"line",stack:"Total",data:N};o.value.push(W)}a.setOption({legend:{data:i.value},xAxis:{data:l.value},series:o.value})},g=()=>{d.value={title:{text:"压力分布",left:"7.5%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#333333"}},legend:{data:i.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"5%",right:"10%",bottom:"10%",containLabel:!0},toolbox:{feature:{saveAsImage:{}}},xAxis:{type:"category",boundaryGap:!1,name:"x/c",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",data:l.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}},yAxis:{type:"value",name:"cp",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},axisTick:{show:!0}},series:o.value},d.value&&a.setOption(d.value),window.onresize=function(){a.resize()}};return e({linechart:g,getshuju:p,getsockechart:m,echatinit:u}),(b,f)=>(ce(),we("div",kQe,[te("div",IQe,[te("div",{id:"line-right",ref_key:"chartContainer",ref:r,style:{width:"100%",height:"100%"}},null,512)])]))}},GQe=im(DQe,[["__scopeId","data-v-ac8e7d77"]]),EQe={name:"ControlButton",compatConfig:{MODE:3}},vQe=(s,e)=>{const t=s.__vccOpts||s;for(const[i,n]of e)t[i]=n;return t},xQe={class:"vue-flow__controls-button"};function JQe(s,e,t,i,n,o){return ce(),we("button",xQe,[Ed(s.$slots,"default")])}const qm=vQe(EQe,[["render",JQe]]),XQe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},YQe=te("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"},null,-1),zQe=[YQe];function _Qe(s,e){return ce(),we("svg",XQe,zQe)}const OQe={render:_Qe},jQe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},HQe=te("path",{d:"M0 0h32v4.2H0z"},null,-1),PQe=[HQe];function KQe(s,e){return ce(),we("svg",jQe,PQe)}const qQe={render:KQe},$Qe={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},e1e=te("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0 0 27.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 0 1-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"},null,-1),t1e=[e1e];function i1e(s,e){return ce(),we("svg",$Qe,t1e)}const n1e={render:i1e},s1e={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},o1e=te("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"},null,-1),l1e=[o1e];function r1e(s,e){return ce(),we("svg",s1e,l1e)}const a1e={render:r1e},d1e={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},c1e=te("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z"},null,-1),h1e=[c1e];function u1e(s,e){return ce(),we("svg",d1e,h1e)}const m1e={render:u1e},p1e={name:"Controls",compatConfig:{MODE:3}},g1e=que({...p1e,props:{showZoom:{type:Boolean,default:!0},showFitView:{type:Boolean,default:!0},showInteractive:{type:Boolean,default:!0},fitViewParams:{},position:{default:()=>FQe.BottomLeft}},emits:["zoomIn","zoomOut","fitView","interactionChange"],setup(s,{emit:e}){const{nodesDraggable:t,nodesConnectable:i,elementsSelectable:n,setInteractive:o,zoomIn:l,zoomOut:r,fitView:a,viewport:d,minZoom:c,maxZoom:h}=t$(),u=vI(()=>t.value||i.value||n.value),m=vI(()=>d.value.zoom<=c.value),p=vI(()=>d.value.zoom>=h.value);function g(){l(),e("zoomIn")}function b(){r(),e("zoomOut")}function f(){a(s.fitViewParams),e("fitView")}function Z(){o(!u.value),e("interactionChange",!u.value)}return(A,N)=>(ce(),ft(V(tme),{class:"vue-flow__controls",position:A.position},{default:T(()=>[Ed(A.$slots,"top"),A.showZoom?(ce(),we(Zt,{key:0},[Ed(A.$slots,"control-zoom-in",{},()=>[C(qm,{class:"vue-flow__controls-zoomin",disabled:p.value,onClick:g},{default:T(()=>[Ed(A.$slots,"icon-zoom-in",{},()=>[(ce(),ft(F1(V(OQe))))])]),_:3},8,["disabled"])]),Ed(A.$slots,"control-zoom-out",{},()=>[C(qm,{class:"vue-flow__controls-zoomout",disabled:m.value,onClick:b},{default:T(()=>[Ed(A.$slots,"icon-zoom-out",{},()=>[(ce(),ft(F1(V(qQe))))])]),_:3},8,["disabled"])])],64)):xn("",!0),A.showFitView?Ed(A.$slots,"control-fit-view",{key:1},()=>[C(qm,{class:"vue-flow__controls-fitview",onClick:f},{default:T(()=>[Ed(A.$slots,"icon-fit-view",{},()=>[(ce(),ft(F1(V(n1e))))])]),_:3})]):xn("",!0),A.showInteractive?Ed(A.$slots,"control-interactive",{key:2},()=>[A.showInteractive?(ce(),ft(qm,{key:0,class:"vue-flow__controls-interactive",onClick:Z},{default:T(()=>[u.value?Ed(A.$slots,"icon-unlock",{key:0},()=>[(ce(),ft(F1(V(m1e))))]):xn("",!0),u.value?xn("",!0):Ed(A.$slots,"icon-lock",{key:1},()=>[(ce(),ft(F1(V(a1e))))])]),_:3})):xn("",!0)]):xn("",!0),Ed(A.$slots,"default")]),_:3},8,["position"]))}});const b1e={key:0},U1e=["id"],f1e=["src"],F1e={__name:"eltree",props:{node:{type:Object,required:!0},sourcePosition:{type:String},targetPosition:{type:String}},setup(s){const e=s;return na(()=>{}),(t,i)=>e.node.data!=null?(ce(),we("div",b1e,[te("div",{class:"custom-node icons",id:`node-${s.node.id}`},[e.node.data.label!="模块化"?(ce(),we("img",{key:0,src:e.node.data.image},null,8,f1e)):xn("",!0),te("span",null,zn(e.node.data.label),1)],8,U1e),e.node.data.label!="模块化"?(ce(),ft(V(oL),{key:0,type:"source",position:V(sL).Right},null,8,["position"])):xn("",!0),C(V(oL),{id:"target-c",type:"source",position:V(sL).Top},null,8,["position"]),e.node.data.label!="模块化"?(ce(),ft(V(oL),{key:1,id:"target-b",type:"target",position:V(sL).Left},null,8,["position"])):xn("",!0),C(V(oL),{id:"target-d",type:"target",position:V(sL).Bottom},null,8,["position"])])):xn("",!0)}},Z1e=im(F1e,[["__scopeId","data-v-ffa74766"]]);const A1e=s=>(OT("data-v-cea9196f"),s=s(),jT(),s),N1e=["d"],R1e=["x","y"],S1e=A1e(()=>te("text",null,"测试",-1)),W1e={__name:"CustomEdge",props:{sourceX:Number,sourceY:Number,targetX:Number,targetY:Number,label:String},setup(s){const{sourceX:e,sourceY:t,targetX:i,targetY:n,label:o}=s,l=HF(()=>`M${e},${t} C${(e+i)/2},${t} ${(e+i)/2},${n} ${i},${n}`),r=HF(()=>(e+i)/2),a=HF(()=>(t+n)/2),d=HF(()=>({fontSize:"12px",fill:"#000",textAnchor:"middle",dominantBaseline:"middle"})),c=HF(()=>(o||"").split(`
- `));return(h,u)=>(ce(),we("g",null,[te("path",{d:l.value,fill:"transparent"},null,8,N1e),(ce(!0),we(Zt,null,Rt(c.value,(m,p)=>(ce(),we("g",{key:p},[te("text",{x:r.value,y:a.value+p*15,style:uE(d.value)},zn(m),13,R1e),S1e]))),128))]))}},V1e=im(W1e,[["__scopeId","data-v-cea9196f"]]),Q1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7JJREFUaEPtWk1WGkEQ/rp5Lkw2eoMB41o9QcgFMswN9D0FkhWeQDyBZKdj3tOcoIdcQHMC3cfA3CBkkZ/NVCU90IgwDAOMMOY5G5/YU3xfVXXV19UKPPFHPHH8GCFgHajtHLCdRWIBcOufO7eD2B4QsKrNI8moZxG8wUSMuu/ax+b3PoHN92o7COQNWBy23LeNLJIovPtcA/EJEe2YSPQJbByoXZbyonVmZ3pfFCpNFkR7386dS+3kZwKLTrW5ImDV1Bp+wgJjLVXgAp3h6jLO/swEdHmVQl5BpAzeIGX26AXv+Q2nE+ecmQkUKs02AIuZPqXqfb0RhXytbYPpuOU6sWV8JgJWVVmSZZsJzfa5XUqbwDT25yIA8GXrrLT3WAQE48s31y6mnkLGQ88ExrjWOGihEbDKqiaF2AL4B62irqtHoeJdTJNeJPjYP3X8pRDYqDQ9BmwNmATlVyTWQi01xUNMju863lIIhE3tT7cnaC/qn4OfJeHRf69X5RaaQkkAJl2zlAgkBZdknY6c/CXbEOxNKtOZ7AMm/SbJCL0uswSSRCpzBKx9VZQSxVAgMjpEuPY/OtcL6cRddYoSMXy/dzoq7KsaZLRaJYnLwWolfgslIEZkAzEavmsfpiqno6TEgz5AtLOyAsT2gQGlWSh7CkJoUfiBBDU0sVdVVQxYngg9EYlRpantAU0qF6AocvDvTrth3yir0rjDTvASnt6kVlUVJcurKF3Vr0YAWq69HhWF1Agk3XTD6wplVYeQRzKgN3cR+Z6veFc6tXR3Nyk3aGPpBKyyKuVY7gY5qkUB7BNYpfWosrp0AnGR6x9sAL99ZuczmULjCPTAX2lJRYL2/NPu3GckBWeZCy3oQBOCB+O45dpjz8WppZCpQoEeibiOF8qBfVXMCVhxaRLkcD2c+2ZgEOd5YzM1AvlK8yas2fo8kKQP9BAMDwbMSHOS51MnoKuJ7BLotFwnHAZvVNUuU3wE/kmHa9M39DuTymbm90C+rC6FkFutM3snSW9JLYWSfNljrMkcAb0HAn0s7QnCSaRnIhDq8HLze1f2sgeB2PllPIj7Kca9LgLAdGj2UupyOiyRWj5LqcJaPedjdND9URJrZkIxyfTMETCGteyd9CVxfxcBOl8HLup0P9Hro3RRap14HsBpvzt3BNIGNK29/5eAuWYlpkO/11mn9c5jr+/OY2X0NWtYKqvNOhhHjw1kLvtDanXkTnjzQG1TRv/VQAK3gxVMOyLTl9pJIvXkCfwFZEdAbW+zlMwAAAAASUVORK5CYII=",y1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACGBJREFUaEPtmnlUVNcdxz/vDQzMgDgouEQTVDCSuoELmooLKlGJrSh1XzAR3KNWExNNNXGPia2kp2o11ooCKnh0NKKi4uAWgyuEUFzYJK6oICKLs7zXM8ORaNUoDDR4Tu5/M+/c976f+/293/3de5/AK96EV1w/TwOEnvDC1tarRoIZDEl80yXpcW1PAkw5PaOJs41mYf/XveyVoqYmQeQ/MGZvOX07OyGjKJ/VPl8/0vYzwORTXj3cHQJ1M38XDDSpSeIf05LddF5SeHaeQctqH4sTjwOMXTeiWffQLnXH1lDxFlkRp+5qR4dn7mK1z8anAKJDPMYO9nbuXpMBtp/PTxi8Pj38NwCLS5IJuaAAyaBHVCoRHJ3AxqZaDawSB0zREcgxm+FMIoqiQpBkEAUkB0fw9YPg8Sh6B1QLSNUAZGdgKshHNOhRlJQgFd6HnGzQHURxYB+Syg6i9yL69qxyiCoBeJ4qWZah45sIWenI66MQBg5/tQCkrHSEjp7g6oJ8MBGxsdsrBCDLSIG9EI/pkD75DHH251Uu3nzD6gkhoxFpzgeIG9ZiGjMO8Yt/INjZvRoAskGPtPxzxLAvkCdPh3lfItraVov4KndALryP/Omf4XAcfPV3hL4DEQQBufQe8k8nkAuyEUwGZLtaCM7uCPW9EexrWwVXZSEkXctB+vgDhHYdECfNRFA5gPEhkm4+wtk1CPoHYKNCVjohi0pMCiWyrQpFny9RuPetNESVAMgPSzGlpaBo1hycNOUVoZy2A2FbENjaIwdugje6gMoZRFsQxPLa0exSZVuFAcy5/e6dIq5dLeB27gMKHxhQKAQ0GjVuTTQ0fr02CoVZHMg5xxA2dAOFAmn4HkSPyo/08wArBGAWHzxyO2dO5VBcpEcyyegNMkaDCUGQzTpp7unKx3O6039AyzKI8HcQsg4iOzZADvkeUVO1c0GFAJBl7twtxqA3C8b8E71e4saN+1y8cJe1qxK5lHYLe5XI6ZTpNGzohJyfAf/qhlB0HVOjTohjDiEoHSsbMU/1qxjAY913a1Nxc6tLW+8G5f8eO5pFUEAkEia+Pz8Fj+YuZS5cTUSIGgAltzC1GYkicDOWEaiCVimA+IOXmD1zP7v2Blti/lGLijjPjImxtG1XnzhdCKLiZ5HyD5EIO8aCaETqvw6xXWgVyK/ETJybW0jXTutYvMyfwcPalIsouFdCn+4buHqtgG82BdEvoMVTAqUjixB185HVdZBG7kXRqJPVEBV2YHKolpTkm+hOjMfGtizbmNuU8VqiI1OYNL0zC5f6P1OYLJkgMgAh8wDSW0GIQVGgUFoFUSGA745nMah/FNHaEXTr0dTy4OJiA3/5ZD+R4cmETPBh/qKe2Nk9fxUmJ29C0AaDY33kSSkIatf/D0BpiYHBgVHY29kQvWuk5R28fr2AuR/GsS82nQ/n+DJrti/C7dSy0kEygKmobAYuuQcPriPkZUD6AYTiPOSWgyFoC4JlQqt8e2kHtkYmMW3Ct8TGj8W7/WusXHGcTf8+h0ptx6q1f6SjTyPLzGrKPIRwdi3cSYfiW1CSh2AylqVdpRO4vgXtQ8BzIIK99XtlLwWQl1fMwIBNpP6Yy/CRLTl0KJt69WsRMqkjo0Z5WQq2p5uMbF7nSzICkiVtmkdbeMbuZeXH/yWzUNhfT7DkMx32alv8+3kwZqw3b//+jV+MdWtEVaTvSzkQHp6Ei4sDfn5NUKufXdvn5xdz/OgV0lJzKSrS41JPzejgdmg0KoueS5duE38wnRYtXOnZ24MLabno4jNAMPtUNq2bvWrYqDb9+r1JVEQSbm4aevl7lPOkpt7kaEIWrds0xLdr2W7nSwG8aEQOH0pn7kdxqBzs6N3HHbWDkhs3Clm4uLflpc+5ks/QwCgy0u/i3aEhcbpQdIcziT+QwYW0WyTEZ9I3oAVuzZwJGtISk1GiX8+NhK3uz6gx3pbHm8uVQe9GkJ2Zh987TYncNsISulYDnDt7lWGDttKvfwuWLO+Do+OTeb2goJRxo2MQRRH9QyOpqbe4nDO7fEymTtCyR3uRc/+ZRp26ZW5Nn7KbWO0FzqdNp5aTHcXFeoL+EIG9SolapSAz4y7xx8ejViutB3h/VAyHD2WQfHEGtWvbP2GWwWBicuhOThzLZuuOEcRs+ZF/rkokLXMGLq61MBol2nqG0bJVfaK1Iy19S0uNtPZYSecubmzeNsQiftb0WI4czmRn7BhitqSwbs0pTp6bSKPGGusBevuu5+at+5w8M5la/wOwdGE8K5d/h1NdFXXrqRg6pA3LFiSwc+8IunZ3J/7gZYYN3MqKrwMIHtfeAqDdmUro6B2sWR/In4a1ZtliHX9bdhyNi4o69dWEvN+BubPiiDvyHu06NLYeIOyr4yxZkECntxvSpVsT9AYJv97uZGfkW96LTxf0YvzEjpZFT+LJn3jXfzPLVvgTOtGHqRN3sT/2Emd+mIrGuSx83hsVQ+LJq5xKmkJkxHmWLtAxbWYXZn7ka4l5s9tDB2xl7cYBDBrcynoASZI4djSHlOQbFJcYea2xI8OGteHb3ZcsGX/AQM/yeaLgXil7dl+2VKutWtVjt/YCDg629PJ3t4g3L5h2bk+jtrMdfj2bEhOdRi0nJQEBzctDMze3iAP7MunQqQGenq7WA7woQ1X3dauzUHULfNH9fwN40QhV9/VfdGDTmKaBozu5DKhuEdbcf92J3PAJUVcSnnVG5tWkjm1g1iKvGn3M6hd2ITzhcuEzjlnNwzLl9IweHo6aET513ZxVNjXqrLjUIN2bF3stOft2yT3WdA575OLThf3kU+bPDGrmpwaQ9OiA+/kA1gTor9C3anabfgXhjx75XxxgmW3tVgRIAAAAAElFTkSuQmCC",C1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABsNJREFUaEPtWntMU1cY/24LFCqllwDxKjA6H5DMx7rMaEQ3yx4OGSD4hzINAovAfDAKOlwyHA9ZpkOHsmW86ijZQqRjK6JRZ+LAZIGxZabGSAJuS5WW8ShwKaXFQu/dznW3VAUK5RFYOP+0997znfP9vt93zvd9514MFnjDFrj+8AwAUaJSzAUQz0dgFgCVuixaZavbEwBWJNVKASzA4cATneYLGBpAZKE5QnXJzvOsTlYAqw8pxcMUiNXF0fL5ovBYeqxIUkopGupZJqwAViYq4zEa1H/IouvnMwDRe0oJ1wKiP8seG3oRwFyztcjAXFv86fkWGVjQDGzw9pa+ZTZnmTCM/JbHS+vq6qphAfn6+oq3mUzl681mUZ2rq/xHnS5tNsA67EIEQUhkfX11Gx49YvQq9PAgy3i8EC6XS6LrvSZTXUZ/vwj9b+dyIczHJ6Gjo2PGg6LDAHx9fePr29vLBTTNAKjl8+G7LVvAw8ODuV5/4wYkDwxYjf46QdT3AFRYLBZVd3e3iiCI+ODh4Z2DHM6DpuHhbJIkGeBTbVMGQBCECMOwcqFQKNlnMECiRgMDGAby2FjIq6iwzp+fkgJvFBXBcosFStzdIUgmg+bmZrh37x40NjaSOSSJRxiNMMDhQLqnZ/3lnp6Qp5VHcw0NDSFs44KzC0BXnaBa5eKSutlsFlW7ufV7enrGpaWl4QcOHIC2tjaoKi0Ff39/2BETY7U+q4hCoYCHd+9C8I4dEBwcbNXvzIkTEJuXZ70uEQigRCCQUxRV0dHRwaQuW3186vYPDkr+5nLhKz4/rbOz89xY7NgFEHApKb5Yp4tDrlLn6gq4UgmhoaFTZfqJ/ggYsW8fBI2MMPdPSiTw6sGDgO43NDSoMQxTXensjELsoSYXCMgPBwY8HQIQW7W/ztaXb54+DXszMqYFAAmX5ueDrrYWMByH2KIi8PPzY8ZErJ49exaOFBYCu74q3d0h18nJcyxXssvAlu/fzTrd1ydhd5P7lZWwe/fuaQOYaAC9Xg9fbN0KYc3NgFwoWygk27jctLF2MbsATNeOiIL4/PIQHg9WpaRATFLSrCrPDo6YQAse7WpojSFWFAqFGgDOL6UokROGkRoAuWtUkWjCdNp49XB8QUFB3GxbfTJWaWxsBHlYGOT+tyl9hOPqmzHlCeMCoDHAH/2cn3osO1+0+cVA0BsfLzoPvhNoekzwgr8HNLfprb9+Xm5MH71pGNB/1MfPiw+aHiNzPZ78aN9ReXZsW/mGWz/By4dGF3+9qytkvHn8nDMhvjNmQQMYJ3649co2p6Bw2LXZH35t7WEAbAz0gh8a25h76Pf98CAovNICmwK9AYCGptYe6zO2z0TybB9beXZMW/lfflPBLnkK7B0cZPSoXLIECiPP1nPdl1aMW5EZrx4uaGpqErO7xGSons0+UqkUhioqYDlFPSgVCLKdI75UL5g1IJPJICsrS83hcBI0Gg0T8Ca1C0lcXMo3mM3gFh8PyTYRdDYtjSJ8a14e4AEBEJiZCWVlZSgFqTEajQm28cAugO3VCQUfkyRzsIWyyt+LiwGlEbPZrl+/DvyICGukzsJxuMznR7e3t1vTdXZ+uwD2KOKUKXo9zgp8k5kJx06enE39GWuHJCfPTCReeSkp6tPe3lSUl6BVv72pCdasWTMjAFCgQkGKTcFRBEZ+XlVVBW//G4WTDQYm00308rpUr9NFOZQLoYMtlPuvHxoS3+Hxdh49elSUnp4+LQAoyp6KjIRXWloYt/QoKACk/IULF5B711AUlYMmIGhayrNY1C0jI/LxUmq7LmR7MsfWAqGhoZLc3FygaZpJp59bt47JUFlLsuiQK/Q/fAgxycnWZA09Q2nBa8ePM7UCameEQsRujtFoPDfVwmZKAFjFECM0TWd9gGGid7RaxorV4eHwSc3oGivJzISNp04xShYLBLBJoWCsjNzm2sWLcLm11criZ0Kh+vP+/ucdodUhAGiisUpK2dq1IBQKGSaeLilDli1T6zmcWwCA9m/VHoNBGTU4KEIV2Qkcz7nd1ZU9pwCYor63tw7FB9SQFb/GsJdwHGd2rDCSVNpuvxEEkaDVaq1FPXJHZ2dnMUVRaq1W6/DxvcMMICUjvb2z15nNqSYM669yd4+yVQQdq8QaDHIuTQfc5vEqrnV3Sx2xsD2ZaQGwN/hcPF8EMBdWnmiORQYWGZimBf6/LoRes1pGQPJXafSYR3rTNNyMiaO3qbYvvJ950U3RFhJoQOcx865x0BcEHABbIz/zqcHqRKWYmqefGnAAVPcn+tRg3pl8Egot+K9V/gGSrV1tfcL86gAAAABJRU5ErkJggg==",w1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA6BJREFUaEPtWk1u01AQ/uaFSggh0RvUCeq6ZkGFxCa9AIlPQLvoLwvSE5DeoJVQadNKhBO45QINCwQqi5o9Tc0NskACqfgNGidund86TZO+VLxdlGf7+2bmm5k3NmHMF405frQTWPxsY2LCNpLY+bmHvedeHFszgVffCtABkEo1bTKGjGYLwCNsz25FmC4JrB2L1W1sz5aNAdwJyOrXAkhVsD0bGjlOYB6KfLx9WjGawMqXLFTKigz9n8DIvTUqD1gFdxK/YCvRlcKkVvD9HWdwfQ2DgLXiWqkAWVawwTQFIkkIkjEuFjE+nZZy2YE9NggBAQoNW2lYSNEMAzYxWSBMXgXs1ghYS26eiF4Tk50EaFcijBqID64ievF/wN/1Q5T9TafWdE2/HsgsuUWQepP4wV02MuAT6w9J78OkckrrrdO9Ft3cFoF+Qyi95JYJ8Kslp2iMB5TWGwImSIUZqfJ40Z2PgwsINb/khGHWIOBVS86mEQSaQ4fL1d38Qmb5kFtCyq/u5tIRAcWoGBNC40OA+SeIplrFKhoIlK6HzH3UJLuEabnVBTuOP3wPMB0Qgg9SYZnV+7ArjBWqzPLhWWshkyzUrwaGFkLM7J2V8k8EeGbpwBeLa9IL0iqIMFnVSXVfBmhAB3rO33cqmRW3yKxenjXE18n67UQMIMCgytnuizlp2tRvFKu7TqGX9c3SQMOkkReEhIiyl/XjlVgDnuT7q+rA0DRwGRL1UJDfyWI/utKAEAqhMDaqpVxY6qfXXDsI1EmyXscAAhISTHrO33F8a9G1/T3HSy9/PCJwx57fPA00rF8PHdgiYmvFzSpWR5280EkDYafbvGpR7yO90NA0ELd+evnwhBiWfqDTIuReXmjVzu31Qg3rN1mc9bpYr5cXjCEgNYCgfQbZJIf2UM/wmPUGNGoqFVbigc7EQw2hZJmmpf+MnciiOnBrGrgOgeu00wSM94HGqCPl2J+Jr0NgaHVgAA2Ep61EizGptHZ+7DvN0/J+xyrWqptPBarAwMxAgy3AU6TXE4EH8Bfh5KKdcL8E4g+UtvneH9hay0hRySxUcv1MElD9hlDXew5CoNtNpxddWxOscFYKlWWCHOoHKmQjJdDpYXFvAYaP15OE0I3tGUYI3Ri4JDe6ywRssM7i3bPmYWoSq4xyz9qxTPe89tesAkJedDPXoIPkBWeU4OuvrhA3cvunBtEL71ECS/6sC8tHl9zBjz2SW8OInf8AQ/y5Xgs9wNUAAAAASUVORK5CYII=",M1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADX5JREFUaEPVmVtsXNd1hr+99zlnbpwZUqJoUTcqsmJJbqPIkiwHtgMbrRMnTXp7K4qgaIA2iCUU9WvRpz7kKX1obNh98ItQIH4JjBQJ4qJt0ERIXdtREl9k2dGNou6iKA7JIWfmzLnsXax9SJmyXFG3NMkhBsMh55y9/r3+9a/LVvyWX+q33H5uBPDXr+0iDHf9RgJL07d56bG3l9t2PYADh5/F5mDMdV/6jQFj3WagyYv7vrVk04cA9v9Udn2Xe+FheW/endEWcg2kdO0M2kDoGhhVBvmzvyyQL/5uWPaPmy09q/a/eQalf8yL+/wmLwfwl2g14Z7fexAYu2MAzuIA5xzWTvPmB98mqI2y+xN/REAFpZT/n/IrCwj5tnwQECteE+qZN76KNpt5cZ/Y+asAkIv1ZMScu/pdXj/+Mlfmm/zJ43/HxoEdaMJrAAoQS2bckp78fwCwOJtxbu4nvD/+EtPpDCevJmwe3MeX9nydofJ6D8DoyHvjNq97CUDcL68AXI5zGqUhd5bYnuO1o9+kl5xgIYFTMzEqb/Lw2Jd5cuefUaJScF5usLqg061huXcAHCkOg3YKnPUGZC4jttMcPf8dzk29ShCmdLqa8VafzFWo0eAP9z3DtpHHUJ77JRDgyrEYFCs55F4CyAoAOKE8kGFVyonJH3D0zLdxQQuNotcPGJ/OyJTGuJyx+m6+sOdrjNTuR7mS3A3aosSTK1/3EoCoTYZyxtPHqT6t3nv895HnSPVplBaeG+K+4uSUxRqD1hlhUmH72kf54u6/oaQH/SagLFrotPJ1rwHkPgwkEhI7zc9OvMT5mUMEQQ7KEQR2EYDDmRIG6wGXKfH5XX/FttHPoV0FbdSH6eHmIO4lAO98sBmWHkfOvMKxS/+KM3MY2VXTJzCKuB9wcirH6TIRCqtydGAZDjfy+V1fZ/3gHpQKMbcWxXcCYCnRLM+gErcapx0uz5jpHufH73yDvppEBSmBUmjTx+iQXhxx8mqKMxGRUziTgbGU8ypbhvby1J79VM1qtAp8LClPJfGpvH90bW4XgOyyPKzIkiIWUh74jbcGpyzd7BKHPzjI5fahIhhNhjGKUOWgNZ3UcHIqQ6tKscumh9GKMA+pqDqf/Z2vsH3D72NcCeXXUSgtyhYsLbhcY+8SgFjuMnAK60THM947/wrvjr+MMx3CQLbQoY31AJTWzKeGU1MZRlXQoks6wWipjRzy9eHqDp7Y9VXW1neiVIByOUot1kY+N1yXIO4EQOFG5T1ReNXJJ5sz3TnBD9/5Bj13EWNyAmWJtBRsKaG+HoBWZQJ5jsoItCPUDq1SAldnbM0j/N7OvyVyQx68rPZhXrgrAJ4siy9JPc7nLEdOP2/xs+Pf4diVV1CRxqjcGx240BsRiAeMZr5vOD0tRoUYL5eWQEOghGE5RkWUVZMnP32AzcNPYGzgJVg2Tehb0OradbsekB2XLCsFWoCVKNMW53qcmPwv/ufoy+TBJMo4jDIE2mK8UUUMCICFRBKZ3B8uGuy88aEA8MGufdCvrX6KJ3ftpxmN+YAWAFboeK8AOBt6D1hSUtvi+69/k1byPkovYAKF0QFGa4xOC4pQAOikAadERl24CFR5+kQUyUsCXmtL2Q3wuxv+gL2f/HM0VRwBVmL+7mIArJOFxBESuEKeBd4b/wGvj/8LlDt+gQBDqDShCdBGvJQSqoBAG7qJ4dxlRWrK5LqHNjmGHE1GZOQeoVKGCTKqaoSnH/p7VlV2YXSGbJrW12Xo26WQ7HjmTXQuI3OO6c4v+bfX/pGensSYkHJYpRxUaVRWUy01CXWJSrlEOWoQhUOgQuI4oJt06eYzxGmXftwjTedJ0jmSdBbn+uRqAW1zto48xSMP/gWBavq4uWsAS8kkt6nft6OnfsJ09wj3rVpHozxCs76G0FR90hJOi2ZY2yenR2oz4jTG2RKhqWFMQDmowKJcOpeS2Q5J3mWqfYE4vkpnLmHrpscYbm5GU/5olXprHnDOjS01G85ZlLJYV9Aps4mXTG+qgzTv009m6fQv0YkvM9+7TKc/S5q1SbN55rptJltgSkM0Kw2GasPUa6tYVR9lsDpCo7qGKJRWs1wop1drg5YAdvI3KbevSekdAMiL5JRLAKs5bJ7Q7s5wuf0BrfnztNpnSPNpMlqgYpTuF5KqIpS2LCSOs5Oavgk9z421GAMREaWgRr20mmZ1Neubn2SosYHBxgYGoo2EquolVDbqtgFca+qdxeYZSodMx2cZn3yDc1PvMTt/liSb9fIaBEVi0iYkCmpUgipVExCaEjqI6Du4Ogu9TCTRkqY9ctfD0iV3/WJiIc/JHWFYY6C6mpHBbawf+jRrh3ZSMqsX6yNhk1rZA/b5vQcVbkwqK5H9zEHCDK++/gIXZ9+hXC1TLQ+yqjZCozxEozbqaVANmpTCOlFQ9aole+w7Rml0rNSnGiUUlE1xOd2kTZzN0UvmWOhcpRtfJE5b9OIrpHkblVbYsfmLbN/0Zd+5FQ2PmtD7V5hKZM/vPagFgBWeOxKd0mqf5cTpwzQHG6wZ2kStvBYj9b3Ipu+JpXZMyPOe532czNDNO+T5LLOdOeZ7hqGBUSrRIJVKjWo0QDms+YRlZEqhfEdBliUkaZtucpG59iRZv8KD9z/l++6iYzATev+bNx+r5Nc8INnTkkoJalOMkgrI4ZTxXVTqOnR7V2n3zjI9d4H5hUvE2RRJNoV181jfJiZ00pAzV1NyFRGpiGoYUStXGIgaNMtrWT/8AIP1ERoDo5SDIV8bKZWiycky45NkAUDe9coA3PO7Dzqnx5YmZ0nRtZLZLt3+FFfax7k0/Utm2qeJ+zMk2Qxasm+QY0Iw2nqu60C47ZjvRUy0UlLJ0k4TSK+jUiLJstLI2JBSGDFQGaRRXc/o6u2sro/RrIxRDe7z2R2vRr4euhUADx101oxZpOftMb1wjrNXjnHi8mFaC+OktFAuQYfKUyAyIYFyRSbWVcqm4Xc5iMqUTUiS1bjUyellfVzeJ0tinyes6oKJga4fMQa+DHFEoQCvUg3XMzy4mS1rdjNY20E5XLsYAz9dYTL33EMHrdVjVve4MP0+33vjBeJshlz1KJVCKuEg9cowQ7V1DJQHGarfR60knK5TCuRV88GLKnkPSC2YqBBF7g0Xd1rrWIhnSeyCz8Tt3jTd3ixx3CLOzpLlItcxTvWoqiqrBh5iz/b9hGbNRHDg8EoA9hx0jrHYTvGjN77L+fgE64Y3sHnNdpqlYQYH1hFIbS9qI/TSaaHTvslJwMW+7JiPeyT9Ft18gYVUebADYZVGdRCjSmhKPnvb3IKRPCPqlJHnM+S2x3ynRad3iVb7CL14im2bvsLoqn0Tev/Pbw7APicA3Jg8bKHTxlVyBoImJpchlsWZ1Je5vbxHYtssdM/T6bVY6M7Sja/QTc+Ruxm/28qmzCRweirGBEKpCo1qg5pusqa+nnplladJtTJEtTLgPRhSLoYCXnalbRVl6+NsRCmqrgwg/9bua9Np2dlM6nprvCL1s1kmpt7iyvwprs5N0E8uk9rLvk2TPteYBB0kvkwOF3uD+bTE+FTi1Ut+pPYPTU4kdZMrY2RaYSrUpdQYWMVIYytrGjtY09hKaESRhI6FBjkJ4mdW8ICM18UDi92jMMPfKRo/1Z7gFyf+nQvtX5ByiSC0vpYX1QlN5EEEJkWEtui6cmbTiImrqa9KxQxfcitp8qVPDtGBlIgJNcnceYlGtJUtI4/ywKYnqJRW+wRmbdHOKiUyulIMfOR8QG6VDCrTM+F2yjxT7dO8M/FDLrTeBaYxoei2DLIU2kmNr3x5EWCZSyuMT/VBh/45QSTGFy1jaDTaSfMTMVzazP0bH2Xr6OPUo7U+Tvze+dnpYjvubklGrz/gKPrSpYOIosMUMD03z5X2MY6Of4/p9hFUIHIIUSQpP/Fdl8jrXFZm/EoCulT0xDr3pUaoNYFTNMNNbBl9mB2bHqdRlhK67mlWGH3XcyG/BV5hiupZfmQupHHWedWwzHFx9i0+mHiV2e4pdNRBGZlKCIVc4YFFAJJUpTQPlYwXm9x/3x72bf0SjfJGwqDhJx1aL5UNsuCyqfViIruDE5pFAIuTrSIvCwDxhMyI5JxL0csmOXP5EKcu/iddLqBKie+L20nJz4U0A/5zWZVZW9/Cvm1/yrqhT1ENa4tUkSGvP5wqFEiSiXdA0XcstsYrV6O3ekZWjNRliCtzlmIsaN0cM52jHL9wiLPzbxIFLTqiQlcylNXUg9U8suOP2TH6WZrhKFoGWGKnTCeWjXeLM7SPPfG4dwCKAZegEA/ISYAmzy1K5+RujmOT/8HFyR8x1bnIxGTOJ9Z9hr0PPM2mVQ8SUkHb0BspBYvY+nEGfwyQmwLYhbNPuhcfefaWTymXgZBTFu8VJ2JpyFWHOBvnreOHsGqInQ88Tc0MEfgmYWlgpXBCQ1/phjcM1j8WwIHD/wC8feMxq9x+4PCzX3tseNe6ZjRxw9Nu+MPSBHn59G6ppy1GIZakeFkZsUQy6wW7/CTGLjseXvmA4+dnO5u//27rbf75M/+0ZM6NRFs88F4ZwK/lG9d2/v8G8Gux684XvbXDzTt//q/8zv8Frng7mv8Nz88AAAAASUVORK5CYII=",T1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAclJREFUaEPtWk1OwkAU/qYNGzdeATlBNxITN3gDewNM1Cgu7A3EG0BiilEW3gC8ARujwU3dG9IjsCedMcVU+YuvMFMs5HXbeTPve+/7pm/6RmDDH7Hh/mMewNmLg0LBySWw0SjA42Ew6ds0gKt3DzICbHtqUG7ASFUEsAu/3Ex8+gVQ68dRd+CXn3Lj8CJHLt88CKsHvzwO8iSAKiwR4m6/l2sAF68VWHYxCTQDWHu2TGSgdNrxYFvXRp2PZHPQdhvknEYAnHfqENYNudgyA5S8HTy4ddKEAQAocQYWECUvFBISz1LIIcnlmQHKRjdsuV3SLmsNWJE8+my72X0MGQAhYs4AJQKmEFOI4gjxPmsKKaUCCCz1HVBCnYT3bpgKWtYAUjkxM0gKuccAUOunPlKaLuY4A2NKmsvAh1DLiTjakcdhw00n/KxFzKUEtY1xBriUoDjyz6UEi5hKEIuYRUxxhEVMNzj+qkY3ZRfyAOEtSrYlVTX3P7Y0WaxnbmIb1fNA03qbAThQsoLWAd3m0Qyilnl88AKC+TZrPGvc6FZqCBml+8Wh5ckKxkJ83yCYCPL8VYOk4b3C/Gsw+Yl8stYWXvZYQxhNLvEFFhUhTxlKYYAAAAAASUVORK5CYII=",B1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADDdJREFUaEPdmX1sHOWdx7+/Z2Z2195d79jEeSvEQwipSkvZ8BLRUtCmrXgRpyZGp0qthGLfXSUud706NLz1H8xJbUPbXEypKDqqwyf+6LW0Z1PuRF/E2YjS0BTkNe+5QDIh5MXxy856vd7ZnZnnd31mX2xjdGcnjgQ3srW7M888z+/ze39mCB/xgz7i8mMxwNdeSMMw0h9KMM/L4rHrsvNlWwjwd3/qgQwATVsw6EMDI9kCkMIjWx+qyzQHsOug0noaj2zt/9AI/EGC/O2LPSAxjEe2hkqeD9AFQTZ+dM3whxrgjgMZCM2qK3rlAb5+OIqHLy3j56zhERCGyUfvmQR6V8+gl3X0/vn3uRznDWDXmQRSlSi+e+EkenImAteA7s8gZiYwmXDQXloNw8nBbY5ir5nD1zmKh6m8bJYVB9hzOg4SSciYj30tE/jWzBqQ0GHM5FEOmhDoLpoFoamNccrREOUWPNj2Lu7NWdjbamP38Sbsv6i0ZJAVA1Cukki0IIi3QZQ87F1zBPdMbYAUBr5vvoN7nY2gmTyC1iiMEmG8ksOq2CaUWg+DSqvQ4kyigHYkMQ6vtR3fbjq2JIgVAbh7fD2iTRdAlh24RgkyX4TeciHI0yG0EhH9BkAEQDPAswgqwOxUM8+MzWJ2Eoiv3o/Hr/8h7sql8f3WLO6bvh5BOYvvtRf+T4hzAthzejUQWQ0NBC1C+E7iFdxXaAfPJoFICkBOCHEQ4PZQEJZgt8AoTRDPjAOlKcBzQVrkZb50++1A4j1oMxfhu8k3cM/0Z/Fgyx/OH8Dd40kguh6GTMJLHcL3qIC7nCuh+SbIKCIaGRNe8BLAF4RCqIJYKYDdPODmwUrzxXFFzhBE3LFtOx7a8Ct8K5fGrOsAMQdRdODB1tH/FeKsLHDPlNJuKgw+dXyzcBmIUyBfh6DpcNH7K/ugGXeCq9WFCMxc/RoaQ7lR9qcgIcAk1KAHsPGmEfxg1VO4e2IHgsoI9q0/hm+O7QCC6vcPOs4awHdN6MkOSH8aFFgQ7MD3gR+sG8ae8QyZFwywIDMUPJR4rkg2is2h3wGFcQXAIMpjVccWLf6xdLBvw2Ds3lOW7/vq30bfxbZxz9gV3oNrFltj2QAqpzfhCvjFPDzN1DQ2AyFteJ4DwNH1RFomIhmOt9xfU37dCHOfdavkx8BvDgHKAiQgYsk++cTNu407j3Zp0h12+z5hGz1H04TAkqTldMG2u2/jQkssF0DfczzTaJyIHARg758uHDXuei/tAdDZM4PV6/fDiKRDzX/AoSwQXiMwXh0mFCYBCCbNGI2u2bQbgB2D67hIpAU8U/qB4/7o8mGzZ8R0+rYoRc0dywEwe46aRXgWg0wCO17f5qw65wFWGSp4dfY3WMdg4GhD3bUGaz5M3YXCcyfeZjryGjGps0JFyedjazfZQsorpJR5+L7tPrrFTvS8milXfCcegb0AYjkA88GV4C78dKhF9imAdLy+T2bph5UhjhiZ0OPnS330EHDRJSBdb5wOh/ge8MdnGb5PIMEkjOfirat6GXCKD185avaMWF7FM0mQqSsBdN92+j5jN2RZDkCs582MmkTFaiClo0UqJoIYawic4sOfGtX2HN4uL9kwyBFVs8J0Uw1dBviPB4g6LPDaddVr6lxtEI78N8h+GyAtvMFoSmzxHrsua+46mPZlYEKH+qsurALt0evnOuRlAfz9SCYgIxdlr5UlHAQVNpoiKqhM34dV3mRt99rMngVRq4QdU8H6FvSNHQ8EHdb9dRM0DOR7oKH/AoRKpwK6rvXHI7F/hSZTCCqjCLgDcRp1+rYt9H9Fs1QAZUpUPNMXZCLwWI+WwwmVljzPg6E0s+2zAwDULqmq5WruJ3r5dYbj2CmD/yp/zVUDaGoyF8XEwZeBKQdMGoOEk4jJ23TfhfOTW0Jtm18bSuuqSEKHH0O2AbN0gCETXiQFo5KvCv5CGmHaCSwwOYWtV6aCRPPgoqTjloHnszBE8FCKZged9FXfCNpadywCyDmMA6OKWsUCmPQuM3n6Kd1NpAVrOSldE0zk664NF3D6O6txsFSAUAt3HLAQSBN6kAJ8aBKmkP6x8cduzGpPzA7JeFOGa6W2IeBrNnB8wjGR79bI5yDRQvnPfWbg/QDh7xdeAeUKIAhogm3TczpZr4TBGxAcjWHCB2JA1u7vrLrTUgHMrmcsGFpHmAg4ICLN8bzAcfpvsZN739pe+OTHB1UmVLEZxq1yHfU5/Ca0YnG4LTizm1ma5PuO84VtQ56ZMudbKxz7zimm1+zQAoDGzTxzZzIYHwEH6nKocdIiXAqm805/9/IA1t7xjAUfFnzX9nVYEz/pHFbnVLl3bsrc7ycTmfdlTqbT04Q/vYtmL7c7KSezgmFK8p3Cp69Mz27euL9hhXpl9nzgmVeYfaUg5UZaPx7d0q0EX9v1UytWI7b7v7L8NGp2DZgRwR1n/uW2sB9Z+zcDGZXWNOjOydt3DDDXgnfegxk6eILpZC6/uvBWZ3VtX6mQNfbyJ27/6hCUS7wv4PHGSdDrp+sZyWmvHO5uljIHLSBdBbgWkB9zs3bfMi0QxkDXgBnT/bTmsxMgMDVozqnbbsrIVMv+hiCh94BQ9IDf2GxwefeawqtZXSPyfR+6IRywME/femNXubVtp7ovjJsqOPNMhejpNxv9UZMo92+OvfuQrukmBcJhrWK+tLfz7OrA2q4nwkKmQzgwjJT92JefE78u5mSyOew668oM20+7AHppHO18tLPNz4X+qutAXiZTY9NaOvWxhD1+67Vzz5xqd4cgvzsCnCnVIZzMund3VEFJbR+c4btvnHvQttQgVhNc1jOQFvBNH7rtwnGmt9ywM/eJjX3zu87qOiB++iT0kju4RT/UxxyoDgJTpUjHkQnq8wOY0KO92HWDagwzCj2Mn1oQ0ZlZ4LfHlbxhQEuhZ7D/4ueUDDv2D5mDu+cVtOUA1N0kfddAGkYEh26+Yb+bSKi+JyxY1eoFYKwMPDsBKzrZuyl+Jlz4jTHdPDkZPA4ikzQDEAZw8QU233ppo/DVKnioD3rSZhT9MJjjUbZvsk51kxSO19xsD3bP60iXC5D59n+mIXVr8hILr16+eaCeeeouFIIcmAbeKdl/sfZwtx4RTtZr+Qf7mks78fqpFL14kljoCCE0A/zXlwFRAcjazk3FgUrB2Rww4oQ1QVnhsrVez9UXTY/2f2XLwieFywXY8eMDliGl+eTGT/WQ1bIzNHvooDUBZgLwLx20N7l9X1h3/Knf5syduW0bd3IyEkYJvXgCfHCKSdOJhcHYuopwtVnbZ841sFSRoH87CS6rmzRuT8mnvnr5RHdf5znsB+YXHuMtP+frWpgGG5sTpf23K8Dzs7j6QmfbmBZ8473rrB2IabV9ZXUGGpkC/95RGxhCU4zR3a6a04YHVn0IjOcdotdmG8EsK5GL0dd69huaBsBR7gLh8bDyVjVf74yJf1YEpv3h1rRrOtesuaKeXGrhUdvXAzRRAZ4pgIoC/KUkeH3YMDcsGY4/UQEGpkBCq/vXA3Jve+98RS65lZh/E70TjCAm5l561ANhUgK/dIFPV4BrzQX7mfr9ocfVwGlaggaL4KQAd8YX7IEasfXveeBEoKygsts/yu+0niPAk+MZ3LBqqNro1FJf/bn8sx5gVsBXxRcoqZ6c5rtJQ9l5CfqPWci/jAPRajPVONQax32IX8wo6AcWCa8GLjeIRY57mdE15wtAHJwqligfLwSp4motr4SIE1LhmHmtxQwjnySkCkBera3GlBh56TJoSoLXabWCACQEUkWJvOIR/zzdL+9LLdR8nXK5AItUWzvx+KmSBbiIaIYpiE3SIykB6ai6rWtk+oE8JjRheYGXjcV0K6br/i0G/X6gUkkjIDMa089wBVo0gpNfJFKPKZZ2rBSAWm0gxyYMz9I0I8E6mHyf2AvGI5EopIYNUscLwsNmMnCiRT1grMAKIqGWc2Vg9stEwa+Z224mmlqa9GfhQkuZ+OfMCR2IakBUByTnUX4phfzngPYvEo09zdycAOQ2Irc+Xy+z3ktn8bZmJS2wFLgVH/P/GSANlhn8+Nq+FdfaSk6462DXn5vU7OLXrGoR9aKb2YEM5rZwK7n4uc5FVC2m85S88E29ulh/4X2ui52f+xuar0+/GOD8LHzeZv3IA/wPBSBoi2AJ4GoAAAAASUVORK5CYII=",L1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACkVJREFUaEPVmnmQVNUVh7973+vpnu7p6Z5mVnEWERDBJCMuGDWRVBKtqJWksmg2jVNmK0kiJkajJhKs8p9oXGLAiMFCJWYxEpBoMEiEIAKuLIog27DMzmw90+t77574GnApREYCMrlVt/qPrn7v951z7rnnntuK//Oh/s/1cyDAd1c0Egg0Dkswx1nD/eeseae2dwNMeWFqQ5kdP6Mu0jwcAboyUr90U38fM8+8e7++twGuet63eqPMOKMBmDYcAXxNZ9+24e6Vzak5zDyz4Il3AlyBVs1yz+mThzPAJfdvbnp0TR/MPHPOMQXI5nLkMxmi8RjqPZbiwSLgmAMIsK07yQ0/vZ5zFj3E566/iTFTb0CpoSXEYw7Qn0rTdP9j6Ft/xM/rBwl2Kyp/M5fKL106JD8cc4DfLnqWB++6i0+vXsCNdxehF7vsfK2Gk5auJVAaO2TuOKYAW1tauWzWY6gZt3B5qI9vLirBWuvRcmOa0NTpjLzmpkN64ZgBuJ6h6fZ72PDyBur+MYcrRxnOe7IUq9Uj9YMB2pxqxq3aSFFJ9H29cEwA/IU7d+kK7lr4DPLYHCZ17+SKRhj/aAk6BeqqQbav9yi/YzZVX7ti+AFs2tVK031/Iteyi5K/zuJcO8dlZ9scP7vkzS1HCN6QZseSPPnGj3PyguUoSx8U4kP3QHcyyeUzHqZ1MIs88WdGbV7HpKDLNyZbJG6PIGFN+LYsrfMzdGcsRi9dS2Ts+OEBMJhK8f2Zc3itI4mdSqLm/o5GyTAxLHzlUzbRm8KYhCL0QJbev+Zo7RESV/+SkddPP9YAwu62dqbMmE1zMos4Oay1r1C2ZgUTbYePRoXPnxcg8r0A1GisBR7peVladgn5hrFMWLYebdvvCXFUQ8gY4bnVq3li1fP8e0cnmWwG09OBFYnD/D9yUj7FONvj1Ljis+faFH+1CBmpUMs93H/maHndY9DT1C9aTexjp324AOmcwy1PreKpF9cg2RRe5w7o2AWeoDMOkZeWc4p2OCEgTCxXfGKSTej8ADJSw3oPljq0rXPpzSriU66n9qZbPzyAjOPws4WrWLVxK07rZrzWN1DtrZAaRNWPR694mpHZJCdpj9qgMLECzjqtiMDZVgFAbfdgtUv3Sw5dg2/m3NETGPv0i9hFwQMgjngIGWP41X2zmb/8OaS3C3p7IJmEbBYVCqNiCYJrnudky+V4bagNwanV0PhRm8BEG6lSqD2CWuuRfDFPe7eQEc2ox1dQevqkowsgIsyaPZsZt92O8TxwXJTrguuiPEEaJ6FffpaabIrR2qXKhtpiobEGTh4fIHCKBeUaNSCYTR65l3K0tykGPCH+3aupm37HAVXqEfFA3nV5rrmFxa9u5IVVq+h8Yh6mpQ3e9Abi77sCiXJIJAhuWMcY7XKcZai0hYYwfKQGTjypiMBYCyoUpAzSLDjrcnTsEJKOwquo4ZRVm7GKi9/lhcMHEKEtnWHx5haWbd1Nb38vks2gMv1ku9poe2Ih7o6dKC9fAJBzz0evXEKV63Cidij3tQagocQwvlpTP8bCPsFGEoADqgW813N0bzP0pCAnitqHH2fEZy46fAA/RBxjWNvazdPN7Wzo6CfnOhg3j8mnED/Os368D+Ak++hctozM+vWoE8YgTpbQzu2M0g41yviRQkVI0RAVxtUojmuwsepsJC5gFHQJssUh+YbHnn5/HSiCF1/C2PseeVcYDckDAtM6BzMsb+7gPzs66EpnC1bwF6wxHuLu3ZxMJo3KDkJ+AMmmIZuia91rJF0LvWIJVRhOsDwSSkjYQqUPEBNGV2kq6zR6pA1xUKKQHoGdHtlNeTq6YNAovEiU8S82UxSLv+WFQwI4dzZOnrtu27SlzZ0F6xciWqQgXmQfQD6NcR3wRef3QkjO/0yxu72P7JPziQ4OMEq7VGhDXCvKAkJ1GOpjioYqxYiRFro6AKXiEyADQJvBeSNPV5swmFNkRKi550Gqv3LZ0AG8uydO7k1npj2wtpmXW/cUxO+fBQgvh7j5ggfIZdD5DJJLYXIZ+pMD7Fn8L4LbNlOHodpyKVOKuDbEQoqRYeH4ONRVWpRWWSh/+uW/VpA2SJfB25Kndzf0pSAjYJ81mZMfW4xWeyvUQ3qg0FYRpgnCwte387fXd5N1nL0e8Bzw8ns/HQeVy2CcNCqfYaC3j/ZX1mKvXEaVeNRqh5gSYpYiZgsVQUVNxFATVxxXaRGu0OhyG6KgtEZyBnoMptlhcIehu89nEnK6iAnPbyZ0XO0HANjX2PItv6N/kDuWr6G1P1UQbzw/z/sAOZTjr4UM2WSS1k1bkafmU+7kOF57lClDqRZKfYAAVBUL1VFFVQwqyjWhhIUaYb0N4Bikz0CLR267S1e3kMpDFsWIn0yj9tqbC8fNoXngHZ05P61nXYe5L29k0YbNiOsWpi8eN89Adw972toxj/+ZRHqgID6hDCUaokqIBqA8KFSEFRVRRWUMyhKaQJkFsX0AlkZ8gKQgnR7eNoeeLmEg44eRgtoTmbB8PVZR8IMD7F89YgzPbt3JAytfoS+ZRAoxn6K3swu1YC6Jvh6qtcsIDCWWUKIUJbZQFvTTp5CIKMpLFImYpiSusOIWlGqIgGgbM/Zi5Iwp6LIGpLON1MN/YM+cWeQ8IS9Q/7cllJ0z+fAB9oN09PfzzMZtnFFXQ7y0lKcX/J1Hrv4xZZkkcQWRgvUVURtiRUIiJIwIK8oi/oRoTBOMKpRv/YjGJOLIRb/FGv9F1L6FWkjZIgwufpKOa68kvaeL4gu+xOjZf+Frs7ce2daiv05emv93Hvn2JZQoKPHjPqCIB4REsRAPq70zApGIIhjRWFENYQuTSCCX/xGr/tz37syJkNmykV1fv5BUTxfjVr7Btx5PNc070r1RMcLCH17J9r88SGkRlIcgEYZ4GEqLNSVhCBUrAiGFFdEQUkhxGK/pYexxFxSy0MGGnw2zu3ey7dILKf3yN5gavqRp3vqj0NxNtu3mmU+Oo7woS2UpxCOK4rAiEFBYtkIFBBUECWiUpfC++mus86agh9AT9SFynR3suub7XDfh2qb5LaEj3532s9WeO68m+OzvKY4rdFAVhO7byt/q5IsH5sLrsD9/87ti/lA9RT9UvVyaSx/Y1jTvteyRB/AFeO2b4L7TUH67xwJcQeVB/Gozr5AMeI1fx/rWvWj93of2Q4F84H3gUA985/fGr5We+TKqb0mh5+/ndpUFldpb65jyT6IuexSrKPJBHnv45fThvMXpWYa97gv+iQAMmJyg+gUJX4A+fxY65B8ADn8cVQ/4ssS4mFcmY6VfLYS/kQAy4jvocdPRVtHhK9/3y6MO4L/HbX8IveUaJDoJ6n+Bip31VjX5vxJ8KADGTSFOFypYV9ighnp9NBS49wNoRMxkmTnJv770byqH5RgzfV3fls7c0gOvWX25U16YikgfxhuWF90otfcfBPeeddd+6x54NbjvwntYmh/W7Lf8wQGGqfKDyRra5ewwhvovpcUzi0Uc9PIAAAAASUVORK5CYII=",k1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAqxJREFUaEPtmkuOElEUhv97sQc6sV2BPOIcBxITB8IGBFYgPeAhDoQViCsQEoMNmMgOqnEDjQOjaQcy10C5Ahn1pFPnmKJFaahbQAhwqmNNqwr+73x1X3VLIeCHCnh+LALkP8VxcBAXCXZxMUDn0WA221WA518rIAcIha5cJAaGOAzgNpqJxjTTP4DymVv1OJqJrpjAXkGefalA6T6aiUmRZwFy0MrGmwd90QClz0noUHha6P8AO7e1iYFY3sqxVo+NoZl/DtvZmh9UOG/FtVYvTNcQ8Ue7kzW3w00AIgWrq5R+6heQHErZ77LGdhQuWUnN+tT8G9wdtjJHxvPbBmCo/qj1JGUKIB7ADe5nIRAAfhYCAeBnITAAJguBATBZCBSAl4VAAXhZkAvAGEPhcL7/n7dwr2zFHUd/kzeQMVWh9GuvYLPjQrhkhTXrkTgARXTELsASC2IB4BrQOATrl8ssRIs9FmcAoAbdRE2f69EyC9FC75fXNZdQe5rMMaE36qQz0aJVB7TndHnaFqKFExtK3fW2sC8A5sGonbnv301SY9jKVmLF3gkDaVEAYIyH7fQdN1Sk+OFUgZMLARljukURdY66eV2xJwNu2GErPVlj+1pgegW4Y4Z3l7u3NjAZdRVF7OOsvcyCYqqy1u9lPUJzAL4WHKoiJNzAMgviulE3sHYo9WNmQb984ub1EO2xEc8D+FowDsXCANa3IAxgfQsCAdazIBBgPQtCAVa3IBRgdQuCAVazsEWAWMnKEWFxlvmnT7/BqH/vZH3316KFXo1B7l6X58Eafft4S6/XzcvAHZ7Z5PX6DmOa/+o6A8TBlMTbh3URlTaFKJ/lAAwWt1ndG9yNbuYxyJksSsQdSl1+QTBT5MVPDaYb3uLSTwL9rfw03jX82ENm5Y2pfgNjgSpezjfRPQAAAABJRU5ErkJggg==",I1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABIJJREFUaEPdmr1uG0cQx/+zjACnCvUGRxmpeVdECJCGegKSUgKkE1nIopUi5BNIfILIQCA7dBELLiPpKL+A6CJI4BSkkdYQ7w1yTZxC4U6wdzySJ37t8ktStiJws7f/3+7O7MweCQ+80QPXj2GAvV9trK3Z9xLs5qaFl1+1BrXFAb77owzZARKJmNG9gZFsAfgMJ5vPIk19gIN3atZtnGy+ujeCRwl5+nsZJBo42QwmeRCgAEEefvyiMQ+AVXItdJAEIxl7zyfw8Ai+d5z353k/Sr9lIBJWNNFzA1hlN4mP4nsizhCTDbol/LZahs/ELZZ86r3Mm6/2IgGsPdcWJK6mih4z5ZJx7NWyFaMVWSTAxv5lG4AFhg+BZ5DSB8ShERDL6nUtf6QNsSgAtXXEP+KvYOABERtPXOVkP2gLYvjXtey6tv3CAEquJVioFVAAleta/lj9fLznFliIn7UFAZAkU96LvKfVZzkA8CXLSkKxCHEYbCuDdvcABmJHmd4NQNlNJv5Gbpp2ne20MoDgkDJsPT+Z0E8BtPdP1QEXHH7k1Mf7wyw+YD1xy8I0PBqAhgCvMxDUdX72IFEl52L4oDMFsEqXh4KhH6cNhEemwwDREz6m9EX8oDMBCGbeJKbPIF51GQ+gHnKFnIsgRAdNF0Dtd8HiyjQkzsIwEQDwITspcuphEqgLMMuBNIv4YAU+levt3de5vg/cepNk5Q/hNtYFSO1fNknVB0tuDHjtn7Ipbu68gsDuyOEYDbLPt7QBYnnOkgGkkHnveb7O73fCxHBck531YBvprMDnB67d6YjmMrWrmU+QLH54kW/wn9uHkDQ50knhkPNLSwvAKrmZrgNPZSDGW4asE+CRgFa19S/gRcmblvgwVG2Rc9ZYLACjel3LBjPHzZxafoOTWtggyoKQmTpLpgBaW6grnps7OQioEzReA2upMjAy2kKDxcqIMfqRY1tdBBjl/gaS46YmTqx6pvbfXBF49PJ2K7CpkWNmtUMdW5Q+d7TDqDLcKLlH4KA4GWokZfHDwWkDIhFWZMtukou9xE4njCo9wVnwUbRHFeirBVCZqdzqpdi6AMEqPH1ThuShAn21AFSh9Jl5Mhftio3S5REYsa20MgBJVXLO4gecyQpEEI9LboFDfwji/AoAfICqsZmPxMwCEPXtlZSP4Ld3T5NaTiw7KVMfX3hJOUpAcPLqRCHJxekAst7L96cZz7MCg+/WBpgmSD0PC5bVXmzNCNCC7OSBtSSEdHu504MBiDLKIPnbLkNQGKLvAkCNy+93VM2gX7UNlIb9Cow9Sl/oO/qifCAAaH5jQ0hV+Otnoox6YB+l0YNpgo6/LBIghPjWgriZ5fbCh0SRnHMFpN8WDRCNzM2vMxBcALMqVNJjFKmK7S0k16GquOiqRF++/q2EyTtv23IzlwTWLIC7W4t84MbXDpWTBp+wAjZYZvD8y37iNA/FsvoevCsAaA1/ZlUDqg/dzOomTO9QWZbIce8lCiPewCQP/9Ug+uC9anF64/VmPjL/H/7ZQ28m7o3Vf2YfA17QVu2hAAAAAElFTkSuQmCC",D1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAACb1JREFUWEftmdtvXEcdx78zcy57tdeX2HGTtE7jJukFkgZIpUpFAVU88GQQRZGQekHiASEVeOCZ9h0J8R/AOyJ5JlQJTwiBlCCVIlTUdZo0bu3Gt72cPefMBf3mslnHJl5QIlSpq4xn9+zu7Od85zu/+f0mDJ+xB/uM8eJz4Ec9Yw9U2Fy/0CqKxo+ZNMuQaEEaoDRA7lthgL4BH2hgYGzTuYaRBkYr1ysN+p7R9NwACoDR0IZuzYBzBiY4WCLAa9GKmI6uyQp+U/3ptZX9bv4/Anevf/NsrKOrUMaCMgkHS40ACZr6DGABONMwhbaQWnpQD+1gHTjon3E9mZIJBp5wiEYC0UpgJtgKYvGt5EdXbtwPvS9wdn15kTNzHdq06EcgARZgA7BVVFuFWUbg7jWBmtDoswRvxxhR2UM7YoJmYClH1EwgplOwKQFT41tKls9Xf7hb6X2B83eXfw1tXrOwNIWkcAAmG1hlDZBpsJ7rqZkAXHpo6j2sJmvQc7LGqMqWl4FFDKKZIJ6rgM1GMHUBCP2r5Pvv/GRU5f2B31vehEILmqbVA5N/CZas4AEJmnU1YKGV9a+WytrGlPdsYe2hHLyDJXCysAmuAARZIkZyuAY+H8M0ORCxleSNK8cfCGzay61igE07IA1OoH6xMauuB+57O3Q00CV1lfWvLn1PkKXxXh6BJRGU97D2PanMGUQ9QvJYHeJIBWZSABGQvHFll6h7FM7+sbzIBWsP7UDTSHaQGiyH9y2p6kDZjut1TgoTrI8OHp5uNtjBRgyCJSGGjZxsnC2qAunRBqLjNWA6AsQ4wO3lRa4IGM5zAbg0YCEyeFhsO2DTk9CkMEGTby2stragBUg3a+1gx/O+JnWDPUK0iAXSY3UkJyeAwwTMkLz2+wMUJmDD2tYSPkKgdNNrgcm/5NsdDbalgW0FTcCk7kBBk8LBGqO2CGHNRgtNoRjKGO88Fy0EZ6gt1FF9rgUspjbkJa+OA8y4AyYFrB3CgtNgfQN0lAVlGxrYlFB9p7BtOS06r7RX2YY06cKbNsYOR7AKxkO7mMzAMDVVRfP5GbBT1TGBV5cXuQzALkJYaB/OGC22bQVsKLC7CmajhMokNEFTpLAe9huItwdZQWkNaWFdc8A0vFOZNKb+UDXBoS8dAj9Tt7vKwQoTsBZtN4LbNCx07mKtVXhTAusKbE1CbxVQPaeyGUho2uksqLOGkg6wNBplALZuM3ZoZwtS3gFPxhFOnJtD9MKkvYsxgC8uMla2WbhlH/iH8Zciw10JfEythNrKobrk4xJ6IN3WTPG41JBKo/CgBFvC2cEpTFrcU9qtcYNGJHD2i/NIXpqyvh4PWMi2/TT5KsTisOA62irLbhXQdwrIzRxqu4AmW2ROVSk1Sg+beyUtsLeCS0ucJVzvZwFAnTN89dkFVL4+7RR+/aA4vHlxkWkP7KFpZFa4jQI7CuyjAuxfBeTtAeSnA6huYSOFHCgUSiM31BzgqLLBEqX3Lilsr3ngwhhMCoFvnF5A/cKMzTGSH4wDzDxwiIA2xAF2wW0qsHYOvDtAcbMHuZ5B7pTIc4m+JguYIaz1rrdBAL8H7Regh6abJMUfjxK8fOowGudn7MYRv/nOAXGYFBaqDe5Sv2FNQtC5AaPo8F4G/acu8vd30F/vo1MqCztU1XqT1qjGptRIZ+aQNuvoiQRxcwLNyQlEcWrTSiYEFDi0URBGYyqN0DqaYpVJJPUUL3zvlwcAZ2QJAmaQmmGgBPqloM0KFaExKXNEf+6huLSGj/65gRXFoReOIVlcQmXxBGpzC6g9dgyYmsH8sSfQbDYhhPifCxFGe/bIY28uQcBGtwsw9IoIm1mMT/sx1vqT2MrnMZXkePHDv2H1rwvg51/G0S+cRX32ENI0tfnAw36MBayg21kZYWsQYa2X4NbOJG52zuGDjSXcuaNxvPt3/OLNVxHH8cPm2zPeWMCFQrtTRNgYRFjtpPiw8wQ+2D6P23dbuH0zx0e3t/HSaYFvn0nx4jOnkMRN1Gq0Mz38x1jAmWTtnQEBx7jTSXG79yRWds5hdWsSO5sKg0xjalbguSPv48vNP+DkbB35ThPcLCCOF1CqSSSVWRjewuzsHCqVygN9XJYler0e1tZuIo0yGLWGPFsHsInTZ352sIe7BW/vkH/7EVZ7KT7uP47V3tO40z2CbGCLXjRqGienb+Ar83/BM4d6qBrpoghtMD73ULlGv1NifZ0S6QaqSQ3cRMNc2BiNfm8bnGWYm0tRb8QwhBcz1yKG9OnLBwN3Cm4tsZVFWO/H+KQ/g43BEu4OjqBTNmzEm66s42jzBp6duYWlqT5qXNpqZFftF+pAX7XY92yq5vMUW4ACFJEIjioMY3sPLP4L4G4RoZML3KUokaXYLhbQK2dR6Do4FBrJJzhcu4kTrS6OTuSo0jkAZXSUNxchy6M8mvZfV2nYYnZ4NuHLfIK2wIAZAUdENR2QnhpD4V7J271SoFMIdAYRtnJ6niCTE1AmAWcFGvE25ms5FiZyzFcLxEx54JEjgZCaugTYZX7UhxzFr1FD4ZCmTTC7u1mF7XOG9NSlgy1Bi25QCvRKjm4ZoVfQ5sGRKwZlGGJu0EgUWhWJ2VqJVlpCUHFpLQCwULhaYK92KLfsyY/PJUNQISQCDP0IePrUGMClRnsg3Q6XSYZMChSSo9TM/hYBV2ONZiLRqpaoRcpNtfXoCLC3gb0eSi6vsH09Cmy9HFS+p/hYwBrGAheSYSBJWW63aVKXHhE3qEQatVihmShE9Oshb7bT7qHDtVDQBujhyY8ntjmLhyQfB3AOpEtjKGxg2gRIoKVtDpZ+h8Ym4EQYVGJl8wvmzxqGPtUjwEHlIay3BBUI/qRqmGQNof1CFEB64gBguucs+67RYJAES8pqlwjZapwWNAFbaAVBpUlI8n0aOlSYru9RdwR0FDiEuBDmaPFxbKVPXnKlx8hk7NlPB9krVzX4BVslaea8O8wzDWJOa0SDMwNXSvkoYOOrt0RYZOEmQtEW7BBg76chS9jFZ9fmHytLly4cCJxl37nAwK+6ss751h/nWoVt6KRbsNPqF1RQMwAPX4cz4fA5P1g4bt218Dysz8W1Fl+rPvXbawcCe1u8xYCfB1hSOKAPA2NQK/hzWLj6WjCcbdjez0T4TKDwpz5DqFA4gL2dnvjdW/dP/wMT2Cx75XUGRtCLu74YlA0LJ4Sq/YCDZQJ0UHZ00Y34lzHcMMa8nS5dvrzHqyMF0H7vDa9l2UUCdtAUttyfe4/Rl/YcY5/3dl277/vh4xFWqscv7/tfBQ9cdA+k/z+/+fBrmkd8Q58DP2KB8W8FtFSWApzM+gAAAABJRU5ErkJggg==",G1e=""+new URL("mob-90497040.png",import.meta.url).href,E1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAACBCAYAAADnoNlQAAAAAXNSR0IArs4c6QAACrhJREFUeF7tnUtslFUUx88AFZmkDymJD1ozaJBAfLSLYqsJFIWFplEj6gIxpSurGC0kuKFKiSUxkJRHBLrroMaFiDHa4KIg1ESgdTHVIEgJMrHFR9JiKUkrtNMxZ+Az02/u65s7c+fO1/Pt4LuPc//n951zXzABoGfGKxCY8QqQAEAQEAQEATEABAFBQBAQA0AQEARaEDSeDpGCFinQXhNN1xr11UFTpARu3NgAs2Y/DwC16XZI9bKoQDyOIJyEqdh28ACFGgRNkRBMxE4AxEO1iwvhhUdLoDg4J4ujoabTUaC7fxROXrwO0as3AeLQAgeqtqu0I4fgNgCh+QWhjtcWAUJAj90KtBz9A7Yf/QNgKrYJDlbvkVkrh2Bjbzg0f279iXeWQKh0rqw9em+JApuODMCeE38DxOOVcGB5n8gsMQRv9lZAIBAJrw9BffUCS4ZHZqgoMDIeg0Xv/wwjY5NhOLC8QQOCnpaSYMG2f3ZVqvRLZSxT4HY0GIH9VXelD8HG3nDt4qJEKqAn/xQI9wxDwyeXAWKTi0SrBXE6IAjyz/NJFndfvA61ey8QBHntRU3jCQJNAf1QnSDwgxc1x0AQaAroh+oEgR+8qDkGgkBTQD9UJwj84EXNMRAEmgL6oTpB4Acvao6BINAU0A/VCQI/eFFzDASBpoB+qE4Q+MGLmmMgCDQF9EN1gsAPXtQcA0GgKaAfqhMEfvCi5hgIAk0B/VCdIPCDFzXHQBBoCuiH6gSBH7yoOQaCQFNAP1QnCPzgRc0xEASaAvqhOkHgBy9qjoEg0BTQD9UJAj94UXMMBIGmgH6oThD4wYuaYyAINAX0Q3WCwA9e1BwDQaApoB+qEwR+8KLmGKyFYHB4TDi0stKg5tCpuqOAtRCs3HoMRCA0v/IwNDz1AHkyAwpYCcGZ/iF4te2UcHiPP7QAPtv8RAYkoCashODdQxE4cnpA6p2+tmegMFggLUcFxApYCYEsFThD2llfCWtrysnHmgpYB8H5gWtQt6NbaViUEpRkkhayDoIPPj8L4e9+m2b40vIiKJsfhK6f/pr290XBAvi+dTWlBKmb8ywd1LV2w/nBa9OsfrGmHJaVF0Hr57+kjOazzU/C4w+Vpi1DT/8wnBu8BucGbvVZPK8AFi4IwrKyYuV2r49NwLXxiRQb3MtYLPfFmYH/+8L3L9WUw0LJctdtI3a0rLzYk40igayKBFeGx2DF1mMp9u6sr0gMmJUmcJmIy0WvD048O47/lgJccjvopOaXH4Y1FfcIm99yKAJfuiayWLd7x+pEPXT+3s4L0OGKcPiu/Y0qWPPYvcz2992uMzqWCphTAft5u26J1tzIKgjQMbgycD/fNK9MQFCx+ShcH5tMSQmRtmeUGUDQthzqg57+IeU679QtSQjNe1gQYNlL7c8lAFjXdioRbViPM7bkd2gj1pFtmLmBxSWzLKqwbLAKgnVtPwCGvuQH877j5MaDvSnzAiyrmhLSEdexRQQCDwKMBK2Hz0JX3/S5jNNm8ticv8NUiACIvn4ejNgegrC0rFgZcCxoDQS8VIChuL1xeWJQHd9dYs4LVFOC6tKTpyAPNh4EuHwV7Xe4Vzc6kCanB68RwRoIeKkgeXuYt3xMzr88B+7t/BX2dfYzXxcG58Da6vsTky0MwUdO/w5XhsdTyvKWpDwIZJ+jG17ZJhmOc2HpvESUOD84ym3e69LZGghUQz1rXiBLCbwog/Xwa8XJH4ZS50GRMTWxhGbtUqpAgKCh09dU3JoEDg6NQXGwANBh+Ii2yrEuRsPq22WxfFffn7Dl40jKHMkZg2qKtCYdoOiVm79NIZuVM3mCi3I2LwrgV/X9jjXML4rnFNbBlQyCpWVFiXlLMmjuTkVRAFdHa2vuT7Gz4/glaD2cumzGgl6igRWRACdOje29KYNMng84L3nzAtGgWXsP2B5PXKcv1hwC9yx21U//mR8RBAgaAiA7+uZFOBGoaCevHusD4uUPKyDgfQUsJ2HORuewHpyNs8R+sPFrZnlc9omcg+t09zKNBZsIAhloaJhoq5z1ISQPRtQ3a/nJ1M2GXz7h0cxzKq88K1SLoJFN3FjvWZNQkSNwr0D28CIh1kNQMdXxHl5kxPKijajk9nIeCUQTIt5XOjo+wVxHs75SlbsJMiclv88GBLyVEfYruzwjqqt6yppzCGTLIi8OwrLu2XumIfCaDlQiwYyHQHcDxw2Jm/5MpwNWjqZ0gF5I8yfxvNwdUI0I7i+Vt/z0kjNlfetCINKBtRpJtkcUSVX3CnKaDlh3B2SCy96z7hjwog1uFGHk0H10IUBQVzR3MTd+ZEs9USRVSUU49pxCwFu/r664R3qTGE8BedvA7i9ABFtn80rPBy5uaHQhwPZYh2dOP7wvWjSXyIvNItFWrsrSRhTm3SFUtgIRHbjgUTDeA8AtX96l1kxA4NVG2WGTyv6EA1nOIoFofat6i5gXClkh9PX2XjjGOdJFMXBPH28o4b0FBGzw6lhiP7+3fzjx53SOkrFd1ZAsiwaOjYXz5iQOt0T3IWS7jO5IljMIeOHPSxgThXl3CEVH1u04yTwdVJkTiO4zZiISoA24kkEb3RdnVOxzyuBhU+fWWuk2dc43i0SpQPVuAA5CtNPGagdv9yB86Yrc8PQDiRPHbMwJnDbxGPvdQ31e/D6trJc0kNN0IJrQqC5rcACieQHvjgF+bQgC676ATHkeoJmKBE7/eEz8weGznmxkHTfLxpNTCHh3B7zmUFkeFQGFx8sIowwG58IJbhIln+cnC5xpCJzUgJdT3RdY3Y5F+/Ci6nuuOxGqAGC5nMwJcMLFejDv4sTMy4NXxfEsgfVgW6IzfKyDtmBawYkgrgTwwVUA/jsHnCii42VtiGzggaM6RoxcOAk8NzA67WY0XijFa/h4I0pmn6yvnEAgM4rem1WAIDCrt5W9EQRWusWsUQSBWb2t7I0gsNItZo0iCMzqbWVvBIGVbjFrFEFgVm8reyMIrHSLWaMIArN6W9kbQWClW8waRRCY1dvK3ggCK91i1iiCwKzeVvZGEFjpFrNGEQRm9bayN4LASreYNYogMKu3lb0RBFa6xaxRBIFZva3sjSCw0i1mjSIIzOptZW8EgZVuMWsUQWBWbyt7IwisdItZowgCs3pb2RtBYKVbzBpFEJjV28reCAIr3WLWKILArN5W9kYQWOkWs0YRBGb1trI3gsBKt5g1iiAwq7eVvREEVrrFrFEZgyBUemf95e2PmLWeesuIAntP/A1NRwYACubcBXsqR3iNBoS9vXGmCWbN3v3PrkoomTc7I4ZRI+YUaPg0CuEzQ32wv0r4v32LIWiKlMDE5OWmVXeX7F5bbs566klbgejVm7Do/Z8BpmKb4GD1HlGDYgiw5ps9LRCYtS28PgT11bd+648euxUYGY9B5YfnIDr0bxSmYqugvSaqBwHW3tgbBgjUtzx7XwKE0Pw77FZhBluHk8ENn0YhOnxjBGKTlTIAUCp5JHAEfevHFojDNvxj7eLCGSyzvUPvuzIOI/jr8/F4N0zFNqgA4A0CLN0UCcHNiVqA+AsAgRJ75ZiJlsVHAAJRmBX4Cj6qOulFAfVI4KVVKptXChAEeeWu7BhLEGRH17xqlSDIK3dlx1iCIDu65lWrBEFeuSs7xhIE2dE1r1r9D64pOQmEJl5AAAAAAElFTkSuQmCC",v1e=""+new URL("csh-8ce19601.png",import.meta.url).href,x1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABndJREFUaEPtmmtMW+cZx3/H+G6Db1wNFFNCIWENJNUoLBkhoVW0LWmldm3TJs2I2n1I1WqJpn6a1JCqn7ax0WzKokVtsyhVNxZN6pRqVasAQZ0iUqUlI8taugAFzN3GBtvHl2OfyUgoZKXDl6XQjfPVep73/3v+7/v4eXWOwNf8Eb7m+vkiwA//WoNKVbMmwSKRXk5v612q7TYAx0t9x4405rRUF+nXpP4hV4jj74y1DL1SfXxR4C2A567UnHm69OMf1GWvSfGLol7tnOTI+eEtnKxdcGIpQHPnkco3Gssz1zTApc/maWz75BAna8+sA6yGVesOrEbVl6657sD/mQMyw++fJKu8HrNj63+F/SvfQp//pZWpK+0U7j6KvW5f2hAJA4iRCDqVKu0FJdHL9V89ihTwkvutgxQ/eBgxEOHau93UP7o76fwJAYy43TS/8TpHm5rYU10DQnpD69Cls3i6TyKGZQZ9W+gf1GEuMfNC608IBUWiYhDfvBdJgPm5OSyCkoLNm5eFSwhARuaFt96iZ3CAF3c18XhdfdKVWhoQCAQ5d/wYnwfuRfJOoBjsRmtxElWAEJIJe0KEy8opqaiixO6gccdOTBs2pA4Qj7zhdPLsubNI4TBHdzbx5PbtKUFc//swb/7uKgaDHb1Bh/jJ+6hjH7CpYReWAgfW7HwcVd9Ao9EiJOB0Qg4sKv1Dz2VaL3YQC0s8v7OR5h0Nt81//4nIHwhy4tV38E8qyS65B2U0gl8S+Mff2vnpywfI3VCRUkGSAohvpRfb2+nq70cOR3imYTuHmx5csVJ91wf5/evdGHNqMJvMqNQKPNNTOKdu8tguPfV7v4ewzF0qEaKkAOIJJzyzPP3aaTw+kagUZl/t/fx4z14yvsTuCxcu09nhwp5Xgt6oh+A8UZWJ/n9e5YmnHNhtJkrLyxPRmt4ZWBr90cAAz795jrAUJRaVuDc/n7bmZizGW3eHuTkfZ35zgSGnimLHJjKkEDqzjemZaUZHbrKnUUfD3h1oM9QoNZqvFiC+2unODk51dSHEosQkiRyjkYMNjTy1/dtMTLj55SvnMdgqsGTnowi4kfUW5rwiQ8NXefiRcqoqi3E4HAiCImXx8cCkt9DiajJw7I/tXOjtBTkGsRjIMht8mZQKd5NVUIFBiKDUGAmjYGx8DCk6wuH9Ndgry9HEQJ2VlZb4tADiwX5RZN+JNsY8XoRojKJpPZWZmzDnl6CTAoRUemKomZwYRY7McuCZLRQXWMm12xM6tMFgkJA/gD8s4g+FGXWOMelykTk+xq7Hn0BnsaTuwGLpnK4Znm39NdaJAqrKarFZbYT800RQ4nLN4B6/yaDnQ2Yz3AuHOMeWjTkzixydBlNGBn69nkBQJN5m9dMuRgWZSa8XX0hEnp3DEhaZseWQZ7WxuaycsiI7u+8upbSubqGFp7yFFgHefvsylzomuctRhdFoJBoN4/f5GRnuY9D9EQMxJ5ISBGXGQruVFRno3V5iGhVRUxaCLKNSKcmZcmG5pxKDQUdJcRF6pRqHKoOq+7ZSmJePTqNZ0q5vjTIpA8S7zG9P/JnZQAFFhWWAhFKpwjvnY2y4j/HcQURlDJ1ai1oB+VYrSiBbFDEU2rHnF6CJxci3WMkxmzBr1GhMpiX/BonNWykAyAwNTnDq1GWs5lJ0RgOyFEKtNTEzM8On/R8iyPPUbVTx8KHHsFosaLXa2wbAxKQtd77jrSP+pOHA+PgMrT/vonJjPZmZOoLBEC7XLFOTU8z7brDvyVryrJkU2XPRmy1pd5mVEiTlgN/r4We/uEjFxgZMJi0RScHI0CQ3rnWzaYuWA/u/gyRFsNlsK44XKwlb/vc0Hei4eAX3rBFHoY2xKT0DA2N82t/DA9uMPPBQE8hgMplS05ZiVFIO/Ol8D1u/WU1Xxyh9fZ+h00+x/+A2NEQpLHGgSWMkSFF/cm30vfPv4vSZGR64zn33l9LQUItCUGAwGlKcJVOVfSsuKQe8Hg8+vx9CIcx5eQudRa/Xr5r4pEcJ9/g46iwjnqlpsu2FaNWapR0t/XKmkCEpB1LIf8dD1gHueIlXWGDdgXUH0qzA//QWqmn7/l0f/2hnXpo1urPhZ3pcHDo7sMxrVsDx0rWWlu8WHnNY1XdWRYrZe50ibZ0Tx4derm5ZTPHFu8ZzV+KfGazNTw2gd/EF95cDpFid1QpL/ba3Wor/bd1/AeGmpF4S5tr2AAAAAElFTkSuQmCC",J1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABCBJREFUaEPtWktoU1kY/pIxiwTagnFRsSnSYqUqNFlYbQULnVYQquITVLBToRBdKAR00w5WTDcthJnVBF2kXeiiPopOGaEvULDVbpqArZihQWykXZhFU0igj8T5zniusU2mtwnppHjP6j7OOf/3+M9/uA8dNnnTbXL8WEVgZ3Ov9SfAmovElgHvh3snvYnYviOw0/70lj6OtlwELzHF4mj7cPfEbXmuENh1tde6vKwfbz23F021pTnJwTM0BefDCcRiMZt0QiFQ2tz7S1yv90y5j+ckeAmq1P4MulisaereyS5e0whstF2aAxut+Mp4mgOaAxkqoKVQhgJmPFxzIGMJM5zgx3JgwDuLft+M0Oxg2TacrrIo+k0G5+AZCijnBUYDyi0FOFJRiDyTIUOdUw9flwM3u8fxeHRazHagbBseOKqVmV/7P+Oia2RVpCKzCe4r+1FeVJAVEusiYHX8hXyjATroEAxF4HUdVdRNJHDfUY1PoQh+73uPT6Eo8k0GvHTWZcUJ1QQkwHprIfKMBjwZnUbruX1oqi0RyiYSkM8Q4cgiDrcOYD6ypPQlsRvdXsxHFnGq2gKmJR+a9qTpkGoCMn0Imi7wPDGNkhEgMfsfYxjwzeJUlQWdjTbc6XmLruEAOhptCEcX4OyZwAPHIRwoM6eVYqoJ1LQMirT5s7UGRVtNsDmei4AyjVIRuNE9Ltwi2c5GKy64RhCOLgpCVJ1CSAJv/CF4hgPIN27B9Ybd2GE2geOPVGwHnV95fKaqGBdcr9Z+IksEx8BsA74ZkRpUktUoFQEGIDAC+PXsPpx3vcJ8dGkVgTzTFhxzvhDX3/g/i3XW11KD864RlFvycbm2BA3t/96XxySuioC0PZnHBOa2VyYlwHw/3DIohnU0WnG6qlioOOYP4UV7naho0oF+74xILa4fKQbFmZyew6BvFtcaduPx6Ee8C4bRcckGu3tM9FWVQjJ9uNjqK7YLQNwP2nsmlAozEZxTyiiV4b7QNRQQabfDbBRpwpKaisCj0Y8C6LjrqEKA5RdxnQDLNcI09AxPCQysbizjaxJ42V6nqEjVCIKNFUauA4KLI550HyB495VKpcokEpBKM98ry8xiPNPx3XQYc9EFQZoFg3FYilmenT1vRUrSEY5bkwBZPvq6ebGKJDbWeSrM3XaPpQC/9b1XbjMwr9VXFIrgsjENJoNhsR7YSIj3ec57/b5ZAZrgpFgyDuOzz2t/CE0/lwhR1iSgvRdKq7qrH6Q5oF6r7PTUHMiOrupn1RxQr1V2emoOZEdX9bNqDqjXKjs9NQeyo6v6WVM68O0z67c3D+qn3ZiefLjhS4Gkn1kJocT+tO2fJ5VbGwMnzShx3A7cPaF8jF/1q8Gu5l5rLEd/NdAD3r//61eDNDX5X4dt+r9VvgA4S3VeaoBRVAAAAABJRU5ErkJggg==",X1e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7lJREFUaEPtWk1IG1EQHlMVEjAe4kFRi0TU/oHrpVYLpqg5CFIRwYM9aA7S1EOFQHtJQIX04iHQk6KH1EM9WGywWgqNCh6qNT0kQi1tSkSqUg/mYIQItW7KjL7tRmO6zS4hwj6QZPfNzJvvm+/NI+5mwSUfWZc8fzgHoKzXw10B4DIR2DFAYHO8PSDOLQ5AmXVmQBODwUxMnuXEx2Bwc6xtiF0LACr6PNzxscbv6LwJlsbyjMTgXgiB89U68DxfwyohACjv9fTENBp3aPR+RibPkiq3voEsnreExttf4D0VQLrLpVYg3YyfXU+tgFoBmQyoEpJJoGx3tQKyKZQZQK2ATALJ/SB6BHm6nAtD4TyORDaSKrAdjsID13LSXHuajGBpNJKNc+ozeNd26fv1Uj2MWm+f88Wk3Isb9Bc5TfBGST5gnI66UrJfDYbh+dw3WA3u0bVelwPm6kLob62CYoOO7kkGYLLPJwXwuLWKAuNAWwSdp8uGg+hvCLha4tjbCUehy7VMNjhKDDrYP/xFtsUGLby134P3a7vwdMJ/ynw25GtzBXvxbxRJAMSZ46IMzHB3jcAWs/kY3KNqIfN6bQ6xiMAQIBtigFidO5UFNDW98gNqKwsIkHXER1VE1peczfSJa2M1OuquCrEUB4CsTa9skZyKC7TgnFqnpCZt9bQoA4jfh7u5uGTERD2Z8MPrlS26hZISy0ZspzgAxu6k7S7JgVULr2srDQSOSWPWYQLUfaKBbHe5PsBO+FCYRiIQDNsjkveAVAl5A7tgHfVRuWftJnJDOWEyTEZSAaAv+qGs0EcMBAGgfBUHwHSbiFEE5Xe1xEnI0XlL6FxJO8Sp9LByDAhrDIpJCFthje0d5WHmCiFPe9LXI4dHMB84aalMRg12LyWCoObsJqElItt6bS75Y6dyL2yApckozLP9hbEUByCWxtKzZuokBCB6BA0OL7VI3NjI+pftfdI33sOBtggUbRHUS1s9PBr5FNdmmaTwk8VJWULsUMN+bK4uoiSwa/iC4YQH18MRH3zdjlBbxY3LksFDyrv2UwCCmxyTM3NFlDw7xJhs8FzB+f7Wa4Li/ltC/9JqKvOM+Yt82UmN1Tk7MgJAKqCZjwpADntK+KoVUIJFOTHUCshhTwlftQJKsCgnhloBOewp4atWQAkW5cS4sAJ/H7NK/9UkJ5FUfN2LIfqnQcLHrBjQaJ0ZhBgMpBI8bT4xGNoYaxMexp971aCi18PxGfqqgQYg8D3ZqwZpY1HBhS792yp/AKlYS16p/QUbAAAAAElFTkSuQmCC",Y1e=""+new URL("fsi-99d432b4.png",import.meta.url).href,z1e=""+new URL("catia-3b70cd85.png",import.meta.url).href,_1e=""+new URL("flight-80532c16.png",import.meta.url).href;let $s=0,O1e=0,Nne=x([]);function j1e(){return`${$s}${O1e++}`}function H1e(){return console.log($s),$s=="2-1"?{label:"优化问题",image:Q1e,name:"优化问题"}:$s=="3-1"?{label:"CATIA",image:y1e,name:"CATIA"}:$s=="3-0"?{label:"CST",image:C1e,name:"CST"}:$s=="3-10"?{label:"FFD",image:x1e,name:"FFD"}:$s=="3-11"?{label:"ADflow",image:J1e,name:"ADflow"}:$s=="3-12"?{label:"TACS",image:X1e,name:"TACS"}:$s=="3-13"?{label:"FUM to FEM",image:Y1e,name:"FSI"}:$s=="3-14"?{label:"CATIA",image:z1e,name:"CATIA"}:$s=="3-15"?{label:"Flight",image:_1e,name:"Flight"}:$s=="3-2"?{label:"Excel",image:w1e,name:"Excel"}:$s=="3-3"?{label:"Feko",image:M1e,name:"Feko"}:$s=="3-4"?{label:"Fluent",image:T1e,name:"Fluent"}:$s=="3-5"?{label:"HCFD",image:B1e,name:"HCFD"}:$s=="3-6"?{label:"Matlab",image:L1e,name:"Matlab"}:$s=="3-7"?{label:"Nastran",image:k1e,name:"Nastran"}:$s=="3-8"?{label:"Python",image:I1e,name:"Python"}:$s=="3-9"?{label:"Xfoil",image:D1e,name:"Xfoil"}:$s=="4-1"?{label:"进化优化器",image:ome,name:"进化优化器"}:$s=="4-2"?{label:"代理优化器",image:lme,name:"代理优化器"}:$s=="4-3"?{label:"梯度优化器",image:rme,name:"梯度优化器"}:$s=="3-01"?{label:"优化器",image:G1e,name:"优化器"}:$s=="3-02"?{label:"参数化",image:v1e,name:"参数化"}:$s=="3-03"?{label:"气动分析",image:E1e,name:"气动分析"}:null}const P1e={draggedType:x(null),isDragOver:x(!1),isDragging:x(!1)};function ame(){const{draggedType:s,isDragOver:e,isDragging:t}=P1e,{addNodes:i,addEdges:n,screenToFlowCoordinate:o,onNodesInitialized:l,updateNode:r}=t$();Oc(t,p=>{document.body.style.userSelect=p?"none":""});function a(p,g,b){p.dataTransfer&&($s=b,p.dataTransfer.setData("application/vueflow",g),p.dataTransfer.effectAllowed="move"),s.value=g,t.value=!0,document.addEventListener("drop",u)}function d(p){p.preventDefault(),s.value&&(e.value=!0,p.dataTransfer&&(p.dataTransfer.dropEffect="move"))}function c(p){}function h(p){e.value=!1}function u(){t.value=!1,e.value=!1,s.value=null,$s="",document.removeEventListener("drop",u)}function m(p){const g=o({x:p.clientX,y:p.clientY}),b=j1e(),f=H1e();let Z=x([]),A=x([]);if($s!="4"){Z.value=[],A.value=[];const W={id:b,type:s.value,position:g,data:f};Z.value.push(W)}const{off:N}=l(()=>{r(b,W=>({position:{x:W.position.x-W.dimensions.width/2,y:W.position.y-W.dimensions.height/2},dimensions:{height:58,width:60}})),N()});i(Z.value),Nne.value=Z.value}return{treeobj:Nne,draggedType:s,isDragOver:e,isDragging:t,onDragStart:a,onDragLeave:h,onDragOver:d,onDrop:m,handleNodeDrop:c}}/*!
- * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
- * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
- * Released under MIT License
- *//*! *****************************************************************************
- Copyright (c) Microsoft Corporation.
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */var JO=function(s,e){return JO=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])},JO(s,e)};function nm(s,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");JO(s,e);function t(){this.constructor=s}s.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var XO=function(){return XO=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},XO.apply(this,arguments)};function sd(s,e,t,i){function n(o){return o instanceof t?o:new t(function(l){l(o)})}return new(t||(t=Promise))(function(o,l){function r(c){try{d(i.next(c))}catch(h){l(h)}}function a(c){try{d(i.throw(c))}catch(h){l(h)}}function d(c){c.done?o(c.value):n(c.value).then(r,a)}d((i=i.apply(s,e||[])).next())})}function Na(s,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,n,o,l;return l={next:r(0),throw:r(1),return:r(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function r(d){return function(c){return a([d,c])}}function a(d){if(i)throw new TypeError("Generator is already executing.");for(;t;)try{if(i=1,n&&(o=d[0]&2?n.return:d[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,d[1])).done)return o;switch(n=0,o&&(d=[d[0]&2,o.value]),d[0]){case 0:case 1:o=d;break;case 4:return t.label++,{value:d[1],done:!1};case 5:t.label++,n=d[1],d=[0];continue;case 7:d=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(d[0]===6||d[0]===2)){t=0;continue}if(d[0]===3&&(!o||d[1]>o[0]&&d[1]<o[3])){t.label=d[1];break}if(d[0]===6&&t.label<o[1]){t.label=o[1],o=d;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(d);break}o[2]&&t.ops.pop(),t.trys.pop();continue}d=e.call(s,t)}catch(c){d=[6,c],n=0}finally{i=o=0}if(d[0]&5)throw d[1];return{value:d[0]?d[1]:void 0,done:!0}}}function lL(s,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,o;i<n;i++)(o||!(i in e))&&(o||(o=Array.prototype.slice.call(e,0,i)),o[i]=e[i]);return s.concat(o||e)}var b0=function(){function s(e,t,i,n){this.left=e,this.top=t,this.width=i,this.height=n}return s.prototype.add=function(e,t,i,n){return new s(this.left+e,this.top+t,this.width+i,this.height+n)},s.fromClientRect=function(e,t){return new s(t.left+e.windowBounds.left,t.top+e.windowBounds.top,t.width,t.height)},s.fromDOMRectList=function(e,t){var i=Array.from(t).find(function(n){return n.width!==0});return i?new s(i.left+e.windowBounds.left,i.top+e.windowBounds.top,i.width,i.height):s.EMPTY},s.EMPTY=new s(0,0,0,0),s}(),I5=function(s,e){return b0.fromClientRect(s,e.getBoundingClientRect())},K1e=function(s){var e=s.body,t=s.documentElement;if(!e||!t)throw new Error("Unable to get document size");var i=Math.max(Math.max(e.scrollWidth,t.scrollWidth),Math.max(e.offsetWidth,t.offsetWidth),Math.max(e.clientWidth,t.clientWidth)),n=Math.max(Math.max(e.scrollHeight,t.scrollHeight),Math.max(e.offsetHeight,t.offsetHeight),Math.max(e.clientHeight,t.clientHeight));return new b0(0,0,i,n)},D5=function(s){for(var e=[],t=0,i=s.length;t<i;){var n=s.charCodeAt(t++);if(n>=55296&&n<=56319&&t<i){var o=s.charCodeAt(t++);(o&64512)===56320?e.push(((n&1023)<<10)+(o&1023)+65536):(e.push(n),t--)}else e.push(n)}return e},pl=function(){for(var s=[],e=0;e<arguments.length;e++)s[e]=arguments[e];if(String.fromCodePoint)return String.fromCodePoint.apply(String,s);var t=s.length;if(!t)return"";for(var i=[],n=-1,o="";++n<t;){var l=s[n];l<=65535?i.push(l):(l-=65536,i.push((l>>10)+55296,l%1024+56320)),(n+1===t||i.length>16384)&&(o+=String.fromCharCode.apply(String,i),i.length=0)}return o},Rne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",q1e=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var rL=0;rL<Rne.length;rL++)q1e[Rne.charCodeAt(rL)]=rL;var Sne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ly=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var aL=0;aL<Sne.length;aL++)Ly[Sne.charCodeAt(aL)]=aL;var $1e=function(s){var e=s.length*.75,t=s.length,i,n=0,o,l,r,a;s[s.length-1]==="="&&(e--,s[s.length-2]==="="&&e--);var d=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(e):new Array(e),c=Array.isArray(d)?d:new Uint8Array(d);for(i=0;i<t;i+=4)o=Ly[s.charCodeAt(i)],l=Ly[s.charCodeAt(i+1)],r=Ly[s.charCodeAt(i+2)],a=Ly[s.charCodeAt(i+3)],c[n++]=o<<2|l>>4,c[n++]=(l&15)<<4|r>>2,c[n++]=(r&3)<<6|a&63;return d},eye=function(s){for(var e=s.length,t=[],i=0;i<e;i+=2)t.push(s[i+1]<<8|s[i]);return t},tye=function(s){for(var e=s.length,t=[],i=0;i<e;i+=4)t.push(s[i+3]<<24|s[i+2]<<16|s[i+1]<<8|s[i]);return t},GZ=5,i$=6+5,h9=2,iye=i$-GZ,dme=65536>>GZ,nye=1<<GZ,u9=nye-1,sye=1024>>GZ,oye=dme+sye,lye=oye,rye=32,aye=lye+rye,dye=65536>>i$,cye=1<<iye,hye=cye-1,Wne=function(s,e,t){return s.slice?s.slice(e,t):new Uint16Array(Array.prototype.slice.call(s,e,t))},uye=function(s,e,t){return s.slice?s.slice(e,t):new Uint32Array(Array.prototype.slice.call(s,e,t))},mye=function(s,e){var t=$1e(s),i=Array.isArray(t)?tye(t):new Uint32Array(t),n=Array.isArray(t)?eye(t):new Uint16Array(t),o=24,l=Wne(n,o/2,i[4]/2),r=i[5]===2?Wne(n,(o+i[4])/2):uye(i,Math.ceil((o+i[4])/4));return new pye(i[0],i[1],i[2],i[3],l,r)},pye=function(){function s(e,t,i,n,o,l){this.initialValue=e,this.errorValue=t,this.highStart=i,this.highValueIndex=n,this.index=o,this.data=l}return s.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=this.index[e>>GZ],t=(t<<h9)+(e&u9),this.data[t];if(e<=65535)return t=this.index[dme+(e-55296>>GZ)],t=(t<<h9)+(e&u9),this.data[t];if(e<this.highStart)return t=aye-dye+(e>>i$),t=this.index[t],t+=e>>GZ&hye,t=this.index[t],t=(t<<h9)+(e&u9),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},s}(),Vne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",gye=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var dL=0;dL<Vne.length;dL++)gye[Vne.charCodeAt(dL)]=dL;var bye="KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==",Qne=50,Uye=1,cme=2,hme=3,fye=4,Fye=5,yne=7,ume=8,Cne=9,sU=10,YO=11,wne=12,zO=13,Zye=14,ky=15,_O=16,cL=17,Z1=18,Aye=19,Mne=20,OO=21,A1=22,m9=23,FN=24,Wc=25,Iy=26,Dy=27,ZN=28,Nye=29,PF=30,Rye=31,hL=32,uL=33,jO=34,HO=35,PO=36,_w=37,KO=38,JI=39,XI=40,p9=41,mme=42,Sye=43,Wye=[9001,65288],pme="!",Yn="×",mL="÷",qO=mye(bye),Yp=[PF,PO],$O=[Uye,cme,hme,Fye],gme=[sU,ume],Tne=[Dy,Iy],Vye=$O.concat(gme),Bne=[KO,JI,XI,jO,HO],Qye=[ky,zO],yye=function(s,e){e===void 0&&(e="strict");var t=[],i=[],n=[];return s.forEach(function(o,l){var r=qO.get(o);if(r>Qne?(n.push(!0),r-=Qne):n.push(!1),["normal","auto","loose"].indexOf(e)!==-1&&[8208,8211,12316,12448].indexOf(o)!==-1)return i.push(l),t.push(_O);if(r===fye||r===YO){if(l===0)return i.push(l),t.push(PF);var a=t[l-1];return Vye.indexOf(a)===-1?(i.push(i[l-1]),t.push(a)):(i.push(l),t.push(PF))}if(i.push(l),r===Rye)return t.push(e==="strict"?OO:_w);if(r===mme||r===Nye)return t.push(PF);if(r===Sye)return o>=131072&&o<=196605||o>=196608&&o<=262141?t.push(_w):t.push(PF);t.push(r)}),[i,t,n]},g9=function(s,e,t,i){var n=i[t];if(Array.isArray(s)?s.indexOf(n)!==-1:s===n)for(var o=t;o<=i.length;){o++;var l=i[o];if(l===e)return!0;if(l!==sU)break}if(n===sU)for(var o=t;o>0;){o--;var r=i[o];if(Array.isArray(s)?s.indexOf(r)!==-1:s===r)for(var a=t;a<=i.length;){a++;var l=i[a];if(l===e)return!0;if(l!==sU)break}if(r!==sU)break}return!1},Lne=function(s,e){for(var t=s;t>=0;){var i=e[t];if(i===sU)t--;else return i}return 0},Cye=function(s,e,t,i,n){if(t[i]===0)return Yn;var o=i-1;if(Array.isArray(n)&&n[o]===!0)return Yn;var l=o-1,r=o+1,a=e[o],d=l>=0?e[l]:0,c=e[r];if(a===cme&&c===hme)return Yn;if($O.indexOf(a)!==-1)return pme;if($O.indexOf(c)!==-1||gme.indexOf(c)!==-1)return Yn;if(Lne(o,e)===ume)return mL;if(qO.get(s[o])===YO||(a===hL||a===uL)&&qO.get(s[r])===YO||a===yne||c===yne||a===Cne||[sU,zO,ky].indexOf(a)===-1&&c===Cne||[cL,Z1,Aye,FN,ZN].indexOf(c)!==-1||Lne(o,e)===A1||g9(m9,A1,o,e)||g9([cL,Z1],OO,o,e)||g9(wne,wne,o,e))return Yn;if(a===sU)return mL;if(a===m9||c===m9)return Yn;if(c===_O||a===_O)return mL;if([zO,ky,OO].indexOf(c)!==-1||a===Zye||d===PO&&Qye.indexOf(a)!==-1||a===ZN&&c===PO||c===Mne||Yp.indexOf(c)!==-1&&a===Wc||Yp.indexOf(a)!==-1&&c===Wc||a===Dy&&[_w,hL,uL].indexOf(c)!==-1||[_w,hL,uL].indexOf(a)!==-1&&c===Iy||Yp.indexOf(a)!==-1&&Tne.indexOf(c)!==-1||Tne.indexOf(a)!==-1&&Yp.indexOf(c)!==-1||[Dy,Iy].indexOf(a)!==-1&&(c===Wc||[A1,ky].indexOf(c)!==-1&&e[r+1]===Wc)||[A1,ky].indexOf(a)!==-1&&c===Wc||a===Wc&&[Wc,ZN,FN].indexOf(c)!==-1)return Yn;if([Wc,ZN,FN,cL,Z1].indexOf(c)!==-1)for(var h=o;h>=0;){var u=e[h];if(u===Wc)return Yn;if([ZN,FN].indexOf(u)!==-1)h--;else break}if([Dy,Iy].indexOf(c)!==-1)for(var h=[cL,Z1].indexOf(a)!==-1?l:o;h>=0;){var u=e[h];if(u===Wc)return Yn;if([ZN,FN].indexOf(u)!==-1)h--;else break}if(KO===a&&[KO,JI,jO,HO].indexOf(c)!==-1||[JI,jO].indexOf(a)!==-1&&[JI,XI].indexOf(c)!==-1||[XI,HO].indexOf(a)!==-1&&c===XI||Bne.indexOf(a)!==-1&&[Mne,Iy].indexOf(c)!==-1||Bne.indexOf(c)!==-1&&a===Dy||Yp.indexOf(a)!==-1&&Yp.indexOf(c)!==-1||a===FN&&Yp.indexOf(c)!==-1||Yp.concat(Wc).indexOf(a)!==-1&&c===A1&&Wye.indexOf(s[r])===-1||Yp.concat(Wc).indexOf(c)!==-1&&a===Z1)return Yn;if(a===p9&&c===p9){for(var m=t[o],p=1;m>0&&(m--,e[m]===p9);)p++;if(p%2!==0)return Yn}return a===hL&&c===uL?Yn:mL},wye=function(s,e){e||(e={lineBreak:"normal",wordBreak:"normal"});var t=yye(s,e.lineBreak),i=t[0],n=t[1],o=t[2];(e.wordBreak==="break-all"||e.wordBreak==="break-word")&&(n=n.map(function(r){return[Wc,PF,mme].indexOf(r)!==-1?_w:r}));var l=e.wordBreak==="keep-all"?o.map(function(r,a){return r&&s[a]>=19968&&s[a]<=40959}):void 0;return[i,n,l]},Mye=function(){function s(e,t,i,n){this.codePoints=e,this.required=t===pme,this.start=i,this.end=n}return s.prototype.slice=function(){return pl.apply(void 0,this.codePoints.slice(this.start,this.end))},s}(),Tye=function(s,e){var t=D5(s),i=wye(t,e),n=i[0],o=i[1],l=i[2],r=t.length,a=0,d=0;return{next:function(){if(d>=r)return{done:!0,value:null};for(var c=Yn;d<r&&(c=Cye(t,o,n,++d,l))===Yn;);if(c!==Yn||d===r){var h=new Mye(t,c,a,d);return a=d,{value:h,done:!1}}return{done:!0,value:null}}}},Bye=1,Lye=2,HT=4,kne=8,pE=10,Ine=47,iC=92,kye=9,Iye=32,pL=34,N1=61,Dye=35,Gye=36,Eye=37,gL=39,bL=40,R1=41,vye=95,jd=45,xye=33,Jye=60,Xye=62,Yye=64,zye=91,_ye=93,Oye=61,jye=123,UL=63,Hye=125,Dne=124,Pye=126,Kye=128,Gne=65533,b9=42,NZ=43,qye=44,$ye=58,e2e=59,Ow=46,t2e=0,i2e=8,n2e=11,s2e=14,o2e=31,l2e=127,um=-1,bme=48,Ume=97,fme=101,r2e=102,a2e=117,d2e=122,Fme=65,Zme=69,Ame=70,c2e=85,h2e=90,ya=function(s){return s>=bme&&s<=57},u2e=function(s){return s>=55296&&s<=57343},AN=function(s){return ya(s)||s>=Fme&&s<=Ame||s>=Ume&&s<=r2e},m2e=function(s){return s>=Ume&&s<=d2e},p2e=function(s){return s>=Fme&&s<=h2e},g2e=function(s){return m2e(s)||p2e(s)},b2e=function(s){return s>=Kye},fL=function(s){return s===pE||s===kye||s===Iye},gE=function(s){return g2e(s)||b2e(s)||s===vye},Ene=function(s){return gE(s)||ya(s)||s===jd},U2e=function(s){return s>=t2e&&s<=i2e||s===n2e||s>=s2e&&s<=o2e||s===l2e},Nb=function(s,e){return s!==iC?!1:e!==pE},FL=function(s,e,t){return s===jd?gE(e)||Nb(e,t):gE(s)?!0:!!(s===iC&&Nb(s,e))},U9=function(s,e,t){return s===NZ||s===jd?ya(e)?!0:e===Ow&&ya(t):ya(s===Ow?e:s)},f2e=function(s){var e=0,t=1;(s[e]===NZ||s[e]===jd)&&(s[e]===jd&&(t=-1),e++);for(var i=[];ya(s[e]);)i.push(s[e++]);var n=i.length?parseInt(pl.apply(void 0,i),10):0;s[e]===Ow&&e++;for(var o=[];ya(s[e]);)o.push(s[e++]);var l=o.length,r=l?parseInt(pl.apply(void 0,o),10):0;(s[e]===Zme||s[e]===fme)&&e++;var a=1;(s[e]===NZ||s[e]===jd)&&(s[e]===jd&&(a=-1),e++);for(var d=[];ya(s[e]);)d.push(s[e++]);var c=d.length?parseInt(pl.apply(void 0,d),10):0;return t*(n+r*Math.pow(10,-l))*Math.pow(10,a*c)},F2e={type:2},Z2e={type:3},A2e={type:4},N2e={type:13},R2e={type:8},S2e={type:21},W2e={type:9},V2e={type:10},Q2e={type:11},y2e={type:12},C2e={type:14},ZL={type:23},w2e={type:1},M2e={type:25},T2e={type:24},B2e={type:26},L2e={type:27},k2e={type:28},I2e={type:29},D2e={type:31},ej={type:32},Nme=function(){function s(){this._value=[]}return s.prototype.write=function(e){this._value=this._value.concat(D5(e))},s.prototype.read=function(){for(var e=[],t=this.consumeToken();t!==ej;)e.push(t),t=this.consumeToken();return e},s.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case pL:return this.consumeStringToken(pL);case Dye:var t=this.peekCodePoint(0),i=this.peekCodePoint(1),n=this.peekCodePoint(2);if(Ene(t)||Nb(i,n)){var o=FL(t,i,n)?Lye:Bye,l=this.consumeName();return{type:5,value:l,flags:o}}break;case Gye:if(this.peekCodePoint(0)===N1)return this.consumeCodePoint(),N2e;break;case gL:return this.consumeStringToken(gL);case bL:return F2e;case R1:return Z2e;case b9:if(this.peekCodePoint(0)===N1)return this.consumeCodePoint(),C2e;break;case NZ:if(U9(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case qye:return A2e;case jd:var r=e,a=this.peekCodePoint(0),d=this.peekCodePoint(1);if(U9(r,a,d))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(FL(r,a,d))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(a===jd&&d===Xye)return this.consumeCodePoint(),this.consumeCodePoint(),T2e;break;case Ow:if(U9(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case Ine:if(this.peekCodePoint(0)===b9)for(this.consumeCodePoint();;){var c=this.consumeCodePoint();if(c===b9&&(c=this.consumeCodePoint(),c===Ine))return this.consumeToken();if(c===um)return this.consumeToken()}break;case $ye:return B2e;case e2e:return L2e;case Jye:if(this.peekCodePoint(0)===xye&&this.peekCodePoint(1)===jd&&this.peekCodePoint(2)===jd)return this.consumeCodePoint(),this.consumeCodePoint(),M2e;break;case Yye:var h=this.peekCodePoint(0),u=this.peekCodePoint(1),m=this.peekCodePoint(2);if(FL(h,u,m)){var l=this.consumeName();return{type:7,value:l}}break;case zye:return k2e;case iC:if(Nb(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case _ye:return I2e;case Oye:if(this.peekCodePoint(0)===N1)return this.consumeCodePoint(),R2e;break;case jye:return Q2e;case Hye:return y2e;case a2e:case c2e:var p=this.peekCodePoint(0),g=this.peekCodePoint(1);return p===NZ&&(AN(g)||g===UL)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case Dne:if(this.peekCodePoint(0)===N1)return this.consumeCodePoint(),W2e;if(this.peekCodePoint(0)===Dne)return this.consumeCodePoint(),S2e;break;case Pye:if(this.peekCodePoint(0)===N1)return this.consumeCodePoint(),V2e;break;case um:return ej}return fL(e)?(this.consumeWhiteSpace(),D2e):ya(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):gE(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:pl(e)}},s.prototype.consumeCodePoint=function(){var e=this._value.shift();return typeof e>"u"?-1:e},s.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},s.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},s.prototype.consumeUnicodeRangeToken=function(){for(var e=[],t=this.consumeCodePoint();AN(t)&&e.length<6;)e.push(t),t=this.consumeCodePoint();for(var i=!1;t===UL&&e.length<6;)e.push(t),t=this.consumeCodePoint(),i=!0;if(i){var n=parseInt(pl.apply(void 0,e.map(function(a){return a===UL?bme:a})),16),o=parseInt(pl.apply(void 0,e.map(function(a){return a===UL?Ame:a})),16);return{type:30,start:n,end:o}}var l=parseInt(pl.apply(void 0,e),16);if(this.peekCodePoint(0)===jd&&AN(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var r=[];AN(t)&&r.length<6;)r.push(t),t=this.consumeCodePoint();var o=parseInt(pl.apply(void 0,r),16);return{type:30,start:l,end:o}}else return{type:30,start:l,end:l}},s.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return e.toLowerCase()==="url"&&this.peekCodePoint(0)===bL?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===bL?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},s.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===um)return{type:22,value:""};var t=this.peekCodePoint(0);if(t===gL||t===pL){var i=this.consumeStringToken(this.consumeCodePoint());return i.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===um||this.peekCodePoint(0)===R1)?(this.consumeCodePoint(),{type:22,value:i.value}):(this.consumeBadUrlRemnants(),ZL)}for(;;){var n=this.consumeCodePoint();if(n===um||n===R1)return{type:22,value:pl.apply(void 0,e)};if(fL(n))return this.consumeWhiteSpace(),this.peekCodePoint(0)===um||this.peekCodePoint(0)===R1?(this.consumeCodePoint(),{type:22,value:pl.apply(void 0,e)}):(this.consumeBadUrlRemnants(),ZL);if(n===pL||n===gL||n===bL||U2e(n))return this.consumeBadUrlRemnants(),ZL;if(n===iC)if(Nb(n,this.peekCodePoint(0)))e.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),ZL;else e.push(n)}},s.prototype.consumeWhiteSpace=function(){for(;fL(this.peekCodePoint(0));)this.consumeCodePoint()},s.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(e===R1||e===um)return;Nb(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},s.prototype.consumeStringSlice=function(e){for(var t=5e4,i="";e>0;){var n=Math.min(t,e);i+=pl.apply(void 0,this._value.splice(0,n)),e-=n}return this._value.shift(),i},s.prototype.consumeStringToken=function(e){var t="",i=0;do{var n=this._value[i];if(n===um||n===void 0||n===e)return t+=this.consumeStringSlice(i),{type:0,value:t};if(n===pE)return this._value.splice(0,i),w2e;if(n===iC){var o=this._value[i+1];o!==um&&o!==void 0&&(o===pE?(t+=this.consumeStringSlice(i),i=-1,this._value.shift()):Nb(n,o)&&(t+=this.consumeStringSlice(i),t+=pl(this.consumeEscapedCodePoint()),i=-1))}i++}while(!0)},s.prototype.consumeNumber=function(){var e=[],t=HT,i=this.peekCodePoint(0);for((i===NZ||i===jd)&&e.push(this.consumeCodePoint());ya(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0);var n=this.peekCodePoint(1);if(i===Ow&&ya(n))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=kne;ya(this.peekCodePoint(0));)e.push(this.consumeCodePoint());i=this.peekCodePoint(0),n=this.peekCodePoint(1);var o=this.peekCodePoint(2);if((i===Zme||i===fme)&&((n===NZ||n===jd)&&ya(o)||ya(n)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),t=kne;ya(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[f2e(e),t]},s.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),t=e[0],i=e[1],n=this.peekCodePoint(0),o=this.peekCodePoint(1),l=this.peekCodePoint(2);if(FL(n,o,l)){var r=this.consumeName();return{type:15,number:t,flags:i,unit:r}}return n===Eye?(this.consumeCodePoint(),{type:16,number:t,flags:i}):{type:17,number:t,flags:i}},s.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(AN(e)){for(var t=pl(e);AN(this.peekCodePoint(0))&&t.length<6;)t+=pl(this.consumeCodePoint());fL(this.peekCodePoint(0))&&this.consumeCodePoint();var i=parseInt(t,16);return i===0||u2e(i)||i>1114111?Gne:i}return e===um?Gne:e},s.prototype.consumeName=function(){for(var e="";;){var t=this.consumeCodePoint();if(Ene(t))e+=pl(t);else if(Nb(t,this.peekCodePoint(0)))e+=pl(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(t),e}},s}(),Rme=function(){function s(e){this._tokens=e}return s.create=function(e){var t=new Nme;return t.write(e),new s(t.read())},s.parseValue=function(e){return s.create(e).parseComponentValue()},s.parseValues=function(e){return s.create(e).parseComponentValues()},s.prototype.parseComponentValue=function(){for(var e=this.consumeToken();e.type===31;)e=this.consumeToken();if(e.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var t=this.consumeComponentValue();do e=this.consumeToken();while(e.type===31);if(e.type===32)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},s.prototype.parseComponentValues=function(){for(var e=[];;){var t=this.consumeComponentValue();if(t.type===32)return e;e.push(t),e.push()}},s.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},s.prototype.consumeSimpleBlock=function(e){for(var t={type:e,values:[]},i=this.consumeToken();;){if(i.type===32||E2e(i,e))return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue()),i=this.consumeToken()}},s.prototype.consumeFunction=function(e){for(var t={name:e.value,values:[],type:18};;){var i=this.consumeToken();if(i.type===32||i.type===3)return t;this.reconsumeToken(i),t.values.push(this.consumeComponentValue())}},s.prototype.consumeToken=function(){var e=this._tokens.shift();return typeof e>"u"?ej:e},s.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},s}(),PT=function(s){return s.type===15},IQ=function(s){return s.type===17},io=function(s){return s.type===20},G2e=function(s){return s.type===0},tj=function(s,e){return io(s)&&s.value===e},Sme=function(s){return s.type!==31},PW=function(s){return s.type!==31&&s.type!==4},Tp=function(s){var e=[],t=[];return s.forEach(function(i){if(i.type===4){if(t.length===0)throw new Error("Error parsing function args, zero tokens for arg");e.push(t),t=[];return}i.type!==31&&t.push(i)}),t.length&&e.push(t),e},E2e=function(s,e){return e===11&&s.type===12||e===28&&s.type===29?!0:e===2&&s.type===3},JU=function(s){return s.type===17||s.type===15},Ml=function(s){return s.type===16||JU(s)},Wme=function(s){return s.length>1?[s[0],s[1]]:[s[0]]},Hr={type:17,number:0,flags:HT},n$={type:16,number:50,flags:HT},oU={type:16,number:100,flags:HT},Gy=function(s,e,t){var i=s[0],n=s[1];return[Uo(i,e),Uo(typeof n<"u"?n:i,t)]},Uo=function(s,e){if(s.type===16)return s.number/100*e;if(PT(s))switch(s.unit){case"rem":case"em":return 16*s.number;case"px":default:return s.number}return s.number},Vme="deg",Qme="grad",yme="rad",Cme="turn",G5={name:"angle",parse:function(s,e){if(e.type===15)switch(e.unit){case Vme:return Math.PI*e.number/180;case Qme:return Math.PI/200*e.number;case yme:return e.number;case Cme:return Math.PI*2*e.number}throw new Error("Unsupported angle type")}},wme=function(s){return s.type===15&&(s.unit===Vme||s.unit===Qme||s.unit===yme||s.unit===Cme)},Mme=function(s){var e=s.filter(io).map(function(t){return t.value}).join(" ");switch(e){case"to bottom right":case"to right bottom":case"left top":case"top left":return[Hr,Hr];case"to top":case"bottom":return vh(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[Hr,oU];case"to right":case"left":return vh(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[oU,oU];case"to bottom":case"top":return vh(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[oU,Hr];case"to left":case"right":return vh(270)}return 0},vh=function(s){return Math.PI*s/180},TU={name:"color",parse:function(s,e){if(e.type===18){var t=v2e[e.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported color function "'+e.name+'"');return t(s,e.values)}if(e.type===5){if(e.value.length===3){var i=e.value.substring(0,1),n=e.value.substring(1,2),o=e.value.substring(2,3);return lU(parseInt(i+i,16),parseInt(n+n,16),parseInt(o+o,16),1)}if(e.value.length===4){var i=e.value.substring(0,1),n=e.value.substring(1,2),o=e.value.substring(2,3),l=e.value.substring(3,4);return lU(parseInt(i+i,16),parseInt(n+n,16),parseInt(o+o,16),parseInt(l+l,16)/255)}if(e.value.length===6){var i=e.value.substring(0,2),n=e.value.substring(2,4),o=e.value.substring(4,6);return lU(parseInt(i,16),parseInt(n,16),parseInt(o,16),1)}if(e.value.length===8){var i=e.value.substring(0,2),n=e.value.substring(2,4),o=e.value.substring(4,6),l=e.value.substring(6,8);return lU(parseInt(i,16),parseInt(n,16),parseInt(o,16),parseInt(l,16)/255)}}if(e.type===20){var r=r0[e.value.toUpperCase()];if(typeof r<"u")return r}return r0.TRANSPARENT}},BU=function(s){return(255&s)===0},mr=function(s){var e=255&s,t=255&s>>8,i=255&s>>16,n=255&s>>24;return e<255?"rgba("+n+","+i+","+t+","+e/255+")":"rgb("+n+","+i+","+t+")"},lU=function(s,e,t,i){return(s<<24|e<<16|t<<8|Math.round(i*255)<<0)>>>0},vne=function(s,e){if(s.type===17)return s.number;if(s.type===16){var t=e===3?1:255;return e===3?s.number/100*t:Math.round(s.number/100*t)}return 0},xne=function(s,e){var t=e.filter(PW);if(t.length===3){var i=t.map(vne),n=i[0],o=i[1],l=i[2];return lU(n,o,l,1)}if(t.length===4){var r=t.map(vne),n=r[0],o=r[1],l=r[2],a=r[3];return lU(n,o,l,a)}return 0};function f9(s,e,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(e-s)*t*6+s:t<1/2?e:t<2/3?(e-s)*6*(2/3-t)+s:s}var Jne=function(s,e){var t=e.filter(PW),i=t[0],n=t[1],o=t[2],l=t[3],r=(i.type===17?vh(i.number):G5.parse(s,i))/(Math.PI*2),a=Ml(n)?n.number/100:0,d=Ml(o)?o.number/100:0,c=typeof l<"u"&&Ml(l)?Uo(l,1):1;if(a===0)return lU(d*255,d*255,d*255,1);var h=d<=.5?d*(a+1):d+a-d*a,u=d*2-h,m=f9(u,h,r+1/3),p=f9(u,h,r),g=f9(u,h,r-1/3);return lU(m*255,p*255,g*255,c)},v2e={hsl:Jne,hsla:Jne,rgb:xne,rgba:xne},nC=function(s,e){return TU.parse(s,Rme.create(e).parseComponentValue())},r0={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},x2e={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(s,e){return e.map(function(t){if(io(t))switch(t.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},J2e={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},E5=function(s,e){var t=TU.parse(s,e[0]),i=e[1];return i&&Ml(i)?{color:t,stop:i}:{color:t,stop:null}},Xne=function(s,e){var t=s[0],i=s[s.length-1];t.stop===null&&(t.stop=Hr),i.stop===null&&(i.stop=oU);for(var n=[],o=0,l=0;l<s.length;l++){var r=s[l].stop;if(r!==null){var a=Uo(r,e);a>o?n.push(a):n.push(o),o=a}else n.push(null)}for(var d=null,l=0;l<n.length;l++){var c=n[l];if(c===null)d===null&&(d=l);else if(d!==null){for(var h=l-d,u=n[d-1],m=(c-u)/(h+1),p=1;p<=h;p++)n[d+p-1]=m*p;d=null}}return s.map(function(g,b){var f=g.color;return{color:f,stop:Math.max(Math.min(1,n[b]/e),0)}})},X2e=function(s,e,t){var i=e/2,n=t/2,o=Uo(s[0],e)-i,l=n-Uo(s[1],t);return(Math.atan2(l,o)+Math.PI*2)%(Math.PI*2)},Y2e=function(s,e,t){var i=typeof s=="number"?s:X2e(s,e,t),n=Math.abs(e*Math.sin(i))+Math.abs(t*Math.cos(i)),o=e/2,l=t/2,r=n/2,a=Math.sin(i-Math.PI/2)*r,d=Math.cos(i-Math.PI/2)*r;return[n,o-d,o+d,l-a,l+a]},pu=function(s,e){return Math.sqrt(s*s+e*e)},Yne=function(s,e,t,i,n){var o=[[0,0],[0,e],[s,0],[s,e]];return o.reduce(function(l,r){var a=r[0],d=r[1],c=pu(t-a,i-d);return(n?c<l.optimumDistance:c>l.optimumDistance)?{optimumCorner:r,optimumDistance:c}:l},{optimumDistance:n?1/0:-1/0,optimumCorner:null}).optimumCorner},z2e=function(s,e,t,i,n){var o=0,l=0;switch(s.size){case 0:s.shape===0?o=l=Math.min(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):s.shape===1&&(o=Math.min(Math.abs(e),Math.abs(e-i)),l=Math.min(Math.abs(t),Math.abs(t-n)));break;case 2:if(s.shape===0)o=l=Math.min(pu(e,t),pu(e,t-n),pu(e-i,t),pu(e-i,t-n));else if(s.shape===1){var r=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(e),Math.abs(e-i)),a=Yne(i,n,e,t,!0),d=a[0],c=a[1];o=pu(d-e,(c-t)/r),l=r*o}break;case 1:s.shape===0?o=l=Math.max(Math.abs(e),Math.abs(e-i),Math.abs(t),Math.abs(t-n)):s.shape===1&&(o=Math.max(Math.abs(e),Math.abs(e-i)),l=Math.max(Math.abs(t),Math.abs(t-n)));break;case 3:if(s.shape===0)o=l=Math.max(pu(e,t),pu(e,t-n),pu(e-i,t),pu(e-i,t-n));else if(s.shape===1){var r=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(e),Math.abs(e-i)),h=Yne(i,n,e,t,!1),d=h[0],c=h[1];o=pu(d-e,(c-t)/r),l=r*o}break}return Array.isArray(s.size)&&(o=Uo(s.size[0],i),l=s.size.length===2?Uo(s.size[1],n):o),[o,l]},_2e=function(s,e){var t=vh(180),i=[];return Tp(e).forEach(function(n,o){if(o===0){var l=n[0];if(l.type===20&&l.value==="to"){t=Mme(n);return}else if(wme(l)){t=G5.parse(s,l);return}}var r=E5(s,n);i.push(r)}),{angle:t,stops:i,type:1}},AL=function(s,e){var t=vh(180),i=[];return Tp(e).forEach(function(n,o){if(o===0){var l=n[0];if(l.type===20&&["top","left","right","bottom"].indexOf(l.value)!==-1){t=Mme(n);return}else if(wme(l)){t=(G5.parse(s,l)+vh(270))%vh(360);return}}var r=E5(s,n);i.push(r)}),{angle:t,stops:i,type:1}},O2e=function(s,e){var t=vh(180),i=[],n=1,o=0,l=3,r=[];return Tp(e).forEach(function(a,d){var c=a[0];if(d===0){if(io(c)&&c.value==="linear"){n=1;return}else if(io(c)&&c.value==="radial"){n=2;return}}if(c.type===18){if(c.name==="from"){var h=TU.parse(s,c.values[0]);i.push({stop:Hr,color:h})}else if(c.name==="to"){var h=TU.parse(s,c.values[0]);i.push({stop:oU,color:h})}else if(c.name==="color-stop"){var u=c.values.filter(PW);if(u.length===2){var h=TU.parse(s,u[1]),m=u[0];IQ(m)&&i.push({stop:{type:16,number:m.number*100,flags:m.flags},color:h})}}}}),n===1?{angle:(t+vh(180))%vh(360),stops:i,type:n}:{size:l,shape:o,stops:i,position:r,type:n}},Tme="closest-side",Bme="farthest-side",Lme="closest-corner",kme="farthest-corner",Ime="circle",Dme="ellipse",Gme="cover",Eme="contain",j2e=function(s,e){var t=0,i=3,n=[],o=[];return Tp(e).forEach(function(l,r){var a=!0;if(r===0){var d=!1;a=l.reduce(function(h,u){if(d)if(io(u))switch(u.value){case"center":return o.push(n$),h;case"top":case"left":return o.push(Hr),h;case"right":case"bottom":return o.push(oU),h}else(Ml(u)||JU(u))&&o.push(u);else if(io(u))switch(u.value){case Ime:return t=0,!1;case Dme:return t=1,!1;case"at":return d=!0,!1;case Tme:return i=0,!1;case Gme:case Bme:return i=1,!1;case Eme:case Lme:return i=2,!1;case kme:return i=3,!1}else if(JU(u)||Ml(u))return Array.isArray(i)||(i=[]),i.push(u),!1;return h},a)}if(a){var c=E5(s,l);n.push(c)}}),{size:i,shape:t,stops:n,position:o,type:2}},NL=function(s,e){var t=0,i=3,n=[],o=[];return Tp(e).forEach(function(l,r){var a=!0;if(r===0?a=l.reduce(function(c,h){if(io(h))switch(h.value){case"center":return o.push(n$),!1;case"top":case"left":return o.push(Hr),!1;case"right":case"bottom":return o.push(oU),!1}else if(Ml(h)||JU(h))return o.push(h),!1;return c},a):r===1&&(a=l.reduce(function(c,h){if(io(h))switch(h.value){case Ime:return t=0,!1;case Dme:return t=1,!1;case Eme:case Tme:return i=0,!1;case Bme:return i=1,!1;case Lme:return i=2,!1;case Gme:case kme:return i=3,!1}else if(JU(h)||Ml(h))return Array.isArray(i)||(i=[]),i.push(h),!1;return c},a)),a){var d=E5(s,l);n.push(d)}}),{size:i,shape:t,stops:n,position:o,type:2}},H2e=function(s){return s.type===1},P2e=function(s){return s.type===2},s$={name:"image",parse:function(s,e){if(e.type===22){var t={url:e.value,type:0};return s.cache.addImage(e.value),t}if(e.type===18){var i=vme[e.name];if(typeof i>"u")throw new Error('Attempting to parse an unsupported image function "'+e.name+'"');return i(s,e.values)}throw new Error("Unsupported image type "+e.type)}};function K2e(s){return!(s.type===20&&s.value==="none")&&(s.type!==18||!!vme[s.name])}var vme={"linear-gradient":_2e,"-moz-linear-gradient":AL,"-ms-linear-gradient":AL,"-o-linear-gradient":AL,"-webkit-linear-gradient":AL,"radial-gradient":j2e,"-moz-radial-gradient":NL,"-ms-radial-gradient":NL,"-o-radial-gradient":NL,"-webkit-radial-gradient":NL,"-webkit-gradient":O2e},q2e={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(s,e){if(e.length===0)return[];var t=e[0];return t.type===20&&t.value==="none"?[]:e.filter(function(i){return PW(i)&&K2e(i)}).map(function(i){return s$.parse(s,i)})}},$2e={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(s,e){return e.map(function(t){if(io(t))switch(t.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},eCe={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(s,e){return Tp(e).map(function(t){return t.filter(Ml)}).map(Wme)}},tCe={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(s,e){return Tp(e).map(function(t){return t.filter(io).map(function(i){return i.value}).join(" ")}).map(iCe)}},iCe=function(s){switch(s){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},hW;(function(s){s.AUTO="auto",s.CONTAIN="contain",s.COVER="cover"})(hW||(hW={}));var nCe={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(s,e){return Tp(e).map(function(t){return t.filter(sCe)})}},sCe=function(s){return io(s)||Ml(s)},v5=function(s){return{name:"border-"+s+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},oCe=v5("top"),lCe=v5("right"),rCe=v5("bottom"),aCe=v5("left"),x5=function(s){return{name:"border-radius-"+s,initialValue:"0 0",prefix:!1,type:1,parse:function(e,t){return Wme(t.filter(Ml))}}},dCe=x5("top-left"),cCe=x5("top-right"),hCe=x5("bottom-right"),uCe=x5("bottom-left"),J5=function(s){return{name:"border-"+s+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},mCe=J5("top"),pCe=J5("right"),gCe=J5("bottom"),bCe=J5("left"),X5=function(s){return{name:"border-"+s+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,t){return PT(t)?t.number:0}}},UCe=X5("top"),fCe=X5("right"),FCe=X5("bottom"),ZCe=X5("left"),ACe={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},NCe={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(s,e){switch(e){case"rtl":return 1;case"ltr":default:return 0}}},RCe={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(s,e){return e.filter(io).reduce(function(t,i){return t|SCe(i.value)},0)}},SCe=function(s){switch(s){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},WCe={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},VCe={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(s,e){return e.type===20&&e.value==="normal"?0:e.type===17||e.type===15?e.number:0}},bE;(function(s){s.NORMAL="normal",s.STRICT="strict"})(bE||(bE={}));var QCe={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"strict":return bE.STRICT;case"normal":default:return bE.NORMAL}}},yCe={name:"line-height",initialValue:"normal",prefix:!1,type:4},zne=function(s,e){return io(s)&&s.value==="normal"?1.2*e:s.type===17?e*s.number:Ml(s)?Uo(s,e):e},CCe={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(s,e){return e.type===20&&e.value==="none"?null:s$.parse(s,e)}},wCe={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(s,e){switch(e){case"inside":return 0;case"outside":default:return 1}}},ij={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},Y5=function(s){return{name:"margin-"+s,initialValue:"0",prefix:!1,type:4}},MCe=Y5("top"),TCe=Y5("right"),BCe=Y5("bottom"),LCe=Y5("left"),kCe={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(s,e){return e.filter(io).map(function(t){switch(t.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},ICe={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"break-word":return"break-word";case"normal":default:return"normal"}}},z5=function(s){return{name:"padding-"+s,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},DCe=z5("top"),GCe=z5("right"),ECe=z5("bottom"),vCe=z5("left"),xCe={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(s,e){switch(e){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},JCe={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(s,e){switch(e){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},XCe={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(s,e){return e.length===1&&tj(e[0],"none")?[]:Tp(e).map(function(t){for(var i={color:r0.TRANSPARENT,offsetX:Hr,offsetY:Hr,blur:Hr},n=0,o=0;o<t.length;o++){var l=t[o];JU(l)?(n===0?i.offsetX=l:n===1?i.offsetY=l:i.blur=l,n++):i.color=TU.parse(s,l)}return i})}},YCe={name:"text-transform",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"uppercase":return 2;case"lowercase":return 1;case"capitalize":return 3}return 0}},zCe={name:"transform",initialValue:"none",prefix:!0,type:0,parse:function(s,e){if(e.type===20&&e.value==="none")return null;if(e.type===18){var t=jCe[e.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported transform function "'+e.name+'"');return t(e.values)}return null}},_Ce=function(s){var e=s.filter(function(t){return t.type===17}).map(function(t){return t.number});return e.length===6?e:null},OCe=function(s){var e=s.filter(function(a){return a.type===17}).map(function(a){return a.number}),t=e[0],i=e[1];e[2],e[3];var n=e[4],o=e[5];e[6],e[7],e[8],e[9],e[10],e[11];var l=e[12],r=e[13];return e[14],e[15],e.length===16?[t,i,n,o,l,r]:null},jCe={matrix:_Ce,matrix3d:OCe},_ne={type:16,number:50,flags:HT},HCe=[_ne,_ne],PCe={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(s,e){var t=e.filter(Ml);return t.length!==2?HCe:[t[0],t[1]]}},KCe={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(s,e){switch(e){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},sC;(function(s){s.NORMAL="normal",s.BREAK_ALL="break-all",s.KEEP_ALL="keep-all"})(sC||(sC={}));var qCe={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"break-all":return sC.BREAK_ALL;case"keep-all":return sC.KEEP_ALL;case"normal":default:return sC.NORMAL}}},$Ce={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(s,e){if(e.type===20)return{auto:!0,order:0};if(IQ(e))return{auto:!1,order:e.number};throw new Error("Invalid z-index number parsed")}},xme={name:"time",parse:function(s,e){if(e.type===15)switch(e.unit.toLowerCase()){case"s":return 1e3*e.number;case"ms":return e.number}throw new Error("Unsupported time type")}},ewe={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(s,e){return IQ(e)?e.number:1}},twe={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},iwe={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(s,e){return e.filter(io).map(function(t){switch(t.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(t){return t!==0})}},nwe={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(s,e){var t=[],i=[];return e.forEach(function(n){switch(n.type){case 20:case 0:t.push(n.value);break;case 17:t.push(n.number.toString());break;case 4:i.push(t.join(" ")),t.length=0;break}}),t.length&&i.push(t.join(" ")),i.map(function(n){return n.indexOf(" ")===-1?n:"'"+n+"'"})}},swe={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},owe={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(s,e){if(IQ(e))return e.number;if(io(e))switch(e.value){case"bold":return 700;case"normal":default:return 400}return 400}},lwe={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(s,e){return e.filter(io).map(function(t){return t.value})}},rwe={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(s,e){switch(e){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},$l=function(s,e){return(s&e)!==0},awe={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(s,e){if(e.length===0)return[];var t=e[0];return t.type===20&&t.value==="none"?[]:e}},dwe={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(s,e){if(e.length===0)return null;var t=e[0];if(t.type===20&&t.value==="none")return null;for(var i=[],n=e.filter(Sme),o=0;o<n.length;o++){var l=n[o],r=n[o+1];if(l.type===20){var a=r&&IQ(r)?r.number:1;i.push({counter:l.value,increment:a})}}return i}},cwe={name:"counter-reset",initialValue:"none",prefix:!0,type:1,parse:function(s,e){if(e.length===0)return[];for(var t=[],i=e.filter(Sme),n=0;n<i.length;n++){var o=i[n],l=i[n+1];if(io(o)&&o.value!=="none"){var r=l&&IQ(l)?l.number:0;t.push({counter:o.value,reset:r})}}return t}},hwe={name:"duration",initialValue:"0s",prefix:!1,type:1,parse:function(s,e){return e.filter(PT).map(function(t){return xme.parse(s,t)})}},uwe={name:"quotes",initialValue:"none",prefix:!0,type:1,parse:function(s,e){if(e.length===0)return null;var t=e[0];if(t.type===20&&t.value==="none")return null;var i=[],n=e.filter(G2e);if(n.length%2!==0)return null;for(var o=0;o<n.length;o+=2){var l=n[o].value,r=n[o+1].value;i.push({open:l,close:r})}return i}},One=function(s,e,t){if(!s)return"";var i=s[Math.min(e,s.length-1)];return i?t?i.open:i.close:""},mwe={name:"box-shadow",initialValue:"none",type:1,prefix:!1,parse:function(s,e){return e.length===1&&tj(e[0],"none")?[]:Tp(e).map(function(t){for(var i={color:255,offsetX:Hr,offsetY:Hr,blur:Hr,spread:Hr,inset:!1},n=0,o=0;o<t.length;o++){var l=t[o];tj(l,"inset")?i.inset=!0:JU(l)?(n===0?i.offsetX=l:n===1?i.offsetY=l:n===2?i.blur=l:i.spread=l,n++):i.color=TU.parse(s,l)}return i})}},pwe={name:"paint-order",initialValue:"normal",prefix:!1,type:1,parse:function(s,e){var t=[0,1,2],i=[];return e.filter(io).forEach(function(n){switch(n.value){case"stroke":i.push(1);break;case"fill":i.push(0);break;case"markers":i.push(2);break}}),t.forEach(function(n){i.indexOf(n)===-1&&i.push(n)}),i}},gwe={name:"-webkit-text-stroke-color",initialValue:"currentcolor",prefix:!1,type:3,format:"color"},bwe={name:"-webkit-text-stroke-width",initialValue:"0",type:0,prefix:!1,parse:function(s,e){return PT(e)?e.number:0}},Uwe=function(){function s(e,t){var i,n;this.animationDuration=_t(e,hwe,t.animationDuration),this.backgroundClip=_t(e,x2e,t.backgroundClip),this.backgroundColor=_t(e,J2e,t.backgroundColor),this.backgroundImage=_t(e,q2e,t.backgroundImage),this.backgroundOrigin=_t(e,$2e,t.backgroundOrigin),this.backgroundPosition=_t(e,eCe,t.backgroundPosition),this.backgroundRepeat=_t(e,tCe,t.backgroundRepeat),this.backgroundSize=_t(e,nCe,t.backgroundSize),this.borderTopColor=_t(e,oCe,t.borderTopColor),this.borderRightColor=_t(e,lCe,t.borderRightColor),this.borderBottomColor=_t(e,rCe,t.borderBottomColor),this.borderLeftColor=_t(e,aCe,t.borderLeftColor),this.borderTopLeftRadius=_t(e,dCe,t.borderTopLeftRadius),this.borderTopRightRadius=_t(e,cCe,t.borderTopRightRadius),this.borderBottomRightRadius=_t(e,hCe,t.borderBottomRightRadius),this.borderBottomLeftRadius=_t(e,uCe,t.borderBottomLeftRadius),this.borderTopStyle=_t(e,mCe,t.borderTopStyle),this.borderRightStyle=_t(e,pCe,t.borderRightStyle),this.borderBottomStyle=_t(e,gCe,t.borderBottomStyle),this.borderLeftStyle=_t(e,bCe,t.borderLeftStyle),this.borderTopWidth=_t(e,UCe,t.borderTopWidth),this.borderRightWidth=_t(e,fCe,t.borderRightWidth),this.borderBottomWidth=_t(e,FCe,t.borderBottomWidth),this.borderLeftWidth=_t(e,ZCe,t.borderLeftWidth),this.boxShadow=_t(e,mwe,t.boxShadow),this.color=_t(e,ACe,t.color),this.direction=_t(e,NCe,t.direction),this.display=_t(e,RCe,t.display),this.float=_t(e,WCe,t.cssFloat),this.fontFamily=_t(e,nwe,t.fontFamily),this.fontSize=_t(e,swe,t.fontSize),this.fontStyle=_t(e,rwe,t.fontStyle),this.fontVariant=_t(e,lwe,t.fontVariant),this.fontWeight=_t(e,owe,t.fontWeight),this.letterSpacing=_t(e,VCe,t.letterSpacing),this.lineBreak=_t(e,QCe,t.lineBreak),this.lineHeight=_t(e,yCe,t.lineHeight),this.listStyleImage=_t(e,CCe,t.listStyleImage),this.listStylePosition=_t(e,wCe,t.listStylePosition),this.listStyleType=_t(e,ij,t.listStyleType),this.marginTop=_t(e,MCe,t.marginTop),this.marginRight=_t(e,TCe,t.marginRight),this.marginBottom=_t(e,BCe,t.marginBottom),this.marginLeft=_t(e,LCe,t.marginLeft),this.opacity=_t(e,ewe,t.opacity);var o=_t(e,kCe,t.overflow);this.overflowX=o[0],this.overflowY=o[o.length>1?1:0],this.overflowWrap=_t(e,ICe,t.overflowWrap),this.paddingTop=_t(e,DCe,t.paddingTop),this.paddingRight=_t(e,GCe,t.paddingRight),this.paddingBottom=_t(e,ECe,t.paddingBottom),this.paddingLeft=_t(e,vCe,t.paddingLeft),this.paintOrder=_t(e,pwe,t.paintOrder),this.position=_t(e,JCe,t.position),this.textAlign=_t(e,xCe,t.textAlign),this.textDecorationColor=_t(e,twe,(i=t.textDecorationColor)!==null&&i!==void 0?i:t.color),this.textDecorationLine=_t(e,iwe,(n=t.textDecorationLine)!==null&&n!==void 0?n:t.textDecoration),this.textShadow=_t(e,XCe,t.textShadow),this.textTransform=_t(e,YCe,t.textTransform),this.transform=_t(e,zCe,t.transform),this.transformOrigin=_t(e,PCe,t.transformOrigin),this.visibility=_t(e,KCe,t.visibility),this.webkitTextStrokeColor=_t(e,gwe,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=_t(e,bwe,t.webkitTextStrokeWidth),this.wordBreak=_t(e,qCe,t.wordBreak),this.zIndex=_t(e,$Ce,t.zIndex)}return s.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},s.prototype.isTransparent=function(){return BU(this.backgroundColor)},s.prototype.isTransformed=function(){return this.transform!==null},s.prototype.isPositioned=function(){return this.position!==0},s.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},s.prototype.isFloating=function(){return this.float!==0},s.prototype.isInlineLevel=function(){return $l(this.display,4)||$l(this.display,33554432)||$l(this.display,268435456)||$l(this.display,536870912)||$l(this.display,67108864)||$l(this.display,134217728)},s}(),fwe=function(){function s(e,t){this.content=_t(e,awe,t.content),this.quotes=_t(e,uwe,t.quotes)}return s}(),jne=function(){function s(e,t){this.counterIncrement=_t(e,dwe,t.counterIncrement),this.counterReset=_t(e,cwe,t.counterReset)}return s}(),_t=function(s,e,t){var i=new Nme,n=t!==null&&typeof t<"u"?t.toString():e.initialValue;i.write(n);var o=new Rme(i.read());switch(e.type){case 2:var l=o.parseComponentValue();return e.parse(s,io(l)?l.value:e.initialValue);case 0:return e.parse(s,o.parseComponentValue());case 1:return e.parse(s,o.parseComponentValues());case 4:return o.parseComponentValue();case 3:switch(e.format){case"angle":return G5.parse(s,o.parseComponentValue());case"color":return TU.parse(s,o.parseComponentValue());case"image":return s$.parse(s,o.parseComponentValue());case"length":var r=o.parseComponentValue();return JU(r)?r:Hr;case"length-percentage":var a=o.parseComponentValue();return Ml(a)?a:Hr;case"time":return xme.parse(s,o.parseComponentValue())}break}},Fwe="data-html2canvas-debug",Zwe=function(s){var e=s.getAttribute(Fwe);switch(e){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},nj=function(s,e){var t=Zwe(s);return t===1||e===t},Bp=function(){function s(e,t){if(this.context=e,this.textNodes=[],this.elements=[],this.flags=0,nj(t,3))debugger;this.styles=new Uwe(e,window.getComputedStyle(t,null)),lj(t)&&(this.styles.animationDuration.some(function(i){return i>0})&&(t.style.animationDuration="0s"),this.styles.transform!==null&&(t.style.transform="none")),this.bounds=I5(this.context,t),nj(t,4)&&(this.flags|=16)}return s}(),Awe="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",Hne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ey=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var RL=0;RL<Hne.length;RL++)Ey[Hne.charCodeAt(RL)]=RL;var Nwe=function(s){var e=s.length*.75,t=s.length,i,n=0,o,l,r,a;s[s.length-1]==="="&&(e--,s[s.length-2]==="="&&e--);var d=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u"&&typeof Uint8Array.prototype.slice<"u"?new ArrayBuffer(e):new Array(e),c=Array.isArray(d)?d:new Uint8Array(d);for(i=0;i<t;i+=4)o=Ey[s.charCodeAt(i)],l=Ey[s.charCodeAt(i+1)],r=Ey[s.charCodeAt(i+2)],a=Ey[s.charCodeAt(i+3)],c[n++]=o<<2|l>>4,c[n++]=(l&15)<<4|r>>2,c[n++]=(r&3)<<6|a&63;return d},Rwe=function(s){for(var e=s.length,t=[],i=0;i<e;i+=2)t.push(s[i+1]<<8|s[i]);return t},Swe=function(s){for(var e=s.length,t=[],i=0;i<e;i+=4)t.push(s[i+3]<<24|s[i+2]<<16|s[i+1]<<8|s[i]);return t},EZ=5,o$=6+5,F9=2,Wwe=o$-EZ,Jme=65536>>EZ,Vwe=1<<EZ,Z9=Vwe-1,Qwe=1024>>EZ,ywe=Jme+Qwe,Cwe=ywe,wwe=32,Mwe=Cwe+wwe,Twe=65536>>o$,Bwe=1<<Wwe,Lwe=Bwe-1,Pne=function(s,e,t){return s.slice?s.slice(e,t):new Uint16Array(Array.prototype.slice.call(s,e,t))},kwe=function(s,e,t){return s.slice?s.slice(e,t):new Uint32Array(Array.prototype.slice.call(s,e,t))},Iwe=function(s,e){var t=Nwe(s),i=Array.isArray(t)?Swe(t):new Uint32Array(t),n=Array.isArray(t)?Rwe(t):new Uint16Array(t),o=24,l=Pne(n,o/2,i[4]/2),r=i[5]===2?Pne(n,(o+i[4])/2):kwe(i,Math.ceil((o+i[4])/4));return new Dwe(i[0],i[1],i[2],i[3],l,r)},Dwe=function(){function s(e,t,i,n,o,l){this.initialValue=e,this.errorValue=t,this.highStart=i,this.highValueIndex=n,this.index=o,this.data=l}return s.prototype.get=function(e){var t;if(e>=0){if(e<55296||e>56319&&e<=65535)return t=this.index[e>>EZ],t=(t<<F9)+(e&Z9),this.data[t];if(e<=65535)return t=this.index[Jme+(e-55296>>EZ)],t=(t<<F9)+(e&Z9),this.data[t];if(e<this.highStart)return t=Mwe-Twe+(e>>o$),t=this.index[t],t+=e>>EZ&Lwe,t=this.index[t],t=(t<<F9)+(e&Z9),this.data[t];if(e<=1114111)return this.data[this.highValueIndex]}return this.errorValue},s}(),Kne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Gwe=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var SL=0;SL<Kne.length;SL++)Gwe[Kne.charCodeAt(SL)]=SL;var Ewe=1,A9=2,N9=3,qne=4,$ne=5,vwe=7,ese=8,R9=9,S9=10,tse=11,ise=12,nse=13,sse=14,W9=15,xwe=function(s){for(var e=[],t=0,i=s.length;t<i;){var n=s.charCodeAt(t++);if(n>=55296&&n<=56319&&t<i){var o=s.charCodeAt(t++);(o&64512)===56320?e.push(((n&1023)<<10)+(o&1023)+65536):(e.push(n),t--)}else e.push(n)}return e},Jwe=function(){for(var s=[],e=0;e<arguments.length;e++)s[e]=arguments[e];if(String.fromCodePoint)return String.fromCodePoint.apply(String,s);var t=s.length;if(!t)return"";for(var i=[],n=-1,o="";++n<t;){var l=s[n];l<=65535?i.push(l):(l-=65536,i.push((l>>10)+55296,l%1024+56320)),(n+1===t||i.length>16384)&&(o+=String.fromCharCode.apply(String,i),i.length=0)}return o},Xwe=Iwe(Awe),Sh="×",V9="÷",Ywe=function(s){return Xwe.get(s)},zwe=function(s,e,t){var i=t-2,n=e[i],o=e[t-1],l=e[t];if(o===A9&&l===N9)return Sh;if(o===A9||o===N9||o===qne||l===A9||l===N9||l===qne)return V9;if(o===ese&&[ese,R9,tse,ise].indexOf(l)!==-1||(o===tse||o===R9)&&(l===R9||l===S9)||(o===ise||o===S9)&&l===S9||l===nse||l===$ne||l===vwe||o===Ewe)return Sh;if(o===nse&&l===sse){for(;n===$ne;)n=e[--i];if(n===sse)return Sh}if(o===W9&&l===W9){for(var r=0;n===W9;)r++,n=e[--i];if(r%2===0)return Sh}return V9},_we=function(s){var e=xwe(s),t=e.length,i=0,n=0,o=e.map(Ywe);return{next:function(){if(i>=t)return{done:!0,value:null};for(var l=Sh;i<t&&(l=zwe(e,o,++i))===Sh;);if(l!==Sh||i===t){var r=Jwe.apply(null,e.slice(n,i));return n=i,{value:r,done:!1}}return{done:!0,value:null}}}},Owe=function(s){for(var e=_we(s),t=[],i;!(i=e.next()).done;)i.value&&t.push(i.value.slice());return t},jwe=function(s){var e=123;if(s.createRange){var t=s.createRange();if(t.getBoundingClientRect){var i=s.createElement("boundtest");i.style.height=e+"px",i.style.display="block",s.body.appendChild(i),t.selectNode(i);var n=t.getBoundingClientRect(),o=Math.round(n.height);if(s.body.removeChild(i),o===e)return!0}}return!1},Hwe=function(s){var e=s.createElement("boundtest");e.style.width="50px",e.style.display="block",e.style.fontSize="12px",e.style.letterSpacing="0px",e.style.wordSpacing="0px",s.body.appendChild(e);var t=s.createRange();e.innerHTML=typeof"".repeat=="function"?"👨".repeat(10):"";var i=e.firstChild,n=D5(i.data).map(function(a){return pl(a)}),o=0,l={},r=n.every(function(a,d){t.setStart(i,o),t.setEnd(i,o+a.length);var c=t.getBoundingClientRect();o+=a.length;var h=c.x>l.x||c.y>l.y;return l=c,d===0?!0:h});return s.body.removeChild(e),r},Pwe=function(){return typeof new Image().crossOrigin<"u"},Kwe=function(){return typeof new XMLHttpRequest().responseType=="string"},qwe=function(s){var e=new Image,t=s.createElement("canvas"),i=t.getContext("2d");if(!i)return!1;e.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{i.drawImage(e,0,0),t.toDataURL()}catch{return!1}return!0},ose=function(s){return s[0]===0&&s[1]===255&&s[2]===0&&s[3]===255},$we=function(s){var e=s.createElement("canvas"),t=100;e.width=t,e.height=t;var i=e.getContext("2d");if(!i)return Promise.reject(!1);i.fillStyle="rgb(0, 255, 0)",i.fillRect(0,0,t,t);var n=new Image,o=e.toDataURL();n.src=o;var l=sj(t,t,0,0,n);return i.fillStyle="red",i.fillRect(0,0,t,t),lse(l).then(function(r){i.drawImage(r,0,0);var a=i.getImageData(0,0,t,t).data;i.fillStyle="red",i.fillRect(0,0,t,t);var d=s.createElement("div");return d.style.backgroundImage="url("+o+")",d.style.height=t+"px",ose(a)?lse(sj(t,t,0,0,d)):Promise.reject(!1)}).then(function(r){return i.drawImage(r,0,0),ose(i.getImageData(0,0,t,t).data)}).catch(function(){return!1})},sj=function(s,e,t,i,n){var o="http://www.w3.org/2000/svg",l=document.createElementNS(o,"svg"),r=document.createElementNS(o,"foreignObject");return l.setAttributeNS(null,"width",s.toString()),l.setAttributeNS(null,"height",e.toString()),r.setAttributeNS(null,"width","100%"),r.setAttributeNS(null,"height","100%"),r.setAttributeNS(null,"x",t.toString()),r.setAttributeNS(null,"y",i.toString()),r.setAttributeNS(null,"externalResourcesRequired","true"),l.appendChild(r),r.appendChild(n),l},lse=function(s){return new Promise(function(e,t){var i=new Image;i.onload=function(){return e(i)},i.onerror=t,i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(s))})},Xr={get SUPPORT_RANGE_BOUNDS(){var s=jwe(document);return Object.defineProperty(Xr,"SUPPORT_RANGE_BOUNDS",{value:s}),s},get SUPPORT_WORD_BREAKING(){var s=Xr.SUPPORT_RANGE_BOUNDS&&Hwe(document);return Object.defineProperty(Xr,"SUPPORT_WORD_BREAKING",{value:s}),s},get SUPPORT_SVG_DRAWING(){var s=qwe(document);return Object.defineProperty(Xr,"SUPPORT_SVG_DRAWING",{value:s}),s},get SUPPORT_FOREIGNOBJECT_DRAWING(){var s=typeof Array.from=="function"&&typeof window.fetch=="function"?$we(document):Promise.resolve(!1);return Object.defineProperty(Xr,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:s}),s},get SUPPORT_CORS_IMAGES(){var s=Pwe();return Object.defineProperty(Xr,"SUPPORT_CORS_IMAGES",{value:s}),s},get SUPPORT_RESPONSE_TYPE(){var s=Kwe();return Object.defineProperty(Xr,"SUPPORT_RESPONSE_TYPE",{value:s}),s},get SUPPORT_CORS_XHR(){var s="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Xr,"SUPPORT_CORS_XHR",{value:s}),s},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var s=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(Xr,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:s}),s}},oC=function(){function s(e,t){this.text=e,this.bounds=t}return s}(),eMe=function(s,e,t,i){var n=nMe(e,t),o=[],l=0;return n.forEach(function(r){if(t.textDecorationLine.length||r.trim().length>0)if(Xr.SUPPORT_RANGE_BOUNDS){var a=rse(i,l,r.length).getClientRects();if(a.length>1){var d=l$(r),c=0;d.forEach(function(u){o.push(new oC(u,b0.fromDOMRectList(s,rse(i,c+l,u.length).getClientRects()))),c+=u.length})}else o.push(new oC(r,b0.fromDOMRectList(s,a)))}else{var h=i.splitText(r.length);o.push(new oC(r,tMe(s,i))),i=h}else Xr.SUPPORT_RANGE_BOUNDS||(i=i.splitText(r.length));l+=r.length}),o},tMe=function(s,e){var t=e.ownerDocument;if(t){var i=t.createElement("html2canvaswrapper");i.appendChild(e.cloneNode(!0));var n=e.parentNode;if(n){n.replaceChild(i,e);var o=I5(s,i);return i.firstChild&&n.replaceChild(i.firstChild,i),o}}return b0.EMPTY},rse=function(s,e,t){var i=s.ownerDocument;if(!i)throw new Error("Node has no owner document");var n=i.createRange();return n.setStart(s,e),n.setEnd(s,e+t),n},l$=function(s){if(Xr.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(e.segment(s)).map(function(t){return t.segment})}return Owe(s)},iMe=function(s,e){if(Xr.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(s)).map(function(i){return i.segment})}return oMe(s,e)},nMe=function(s,e){return e.letterSpacing!==0?l$(s):iMe(s,e)},sMe=[32,160,4961,65792,65793,4153,4241],oMe=function(s,e){for(var t=Tye(s,{lineBreak:e.lineBreak,wordBreak:e.overflowWrap==="break-word"?"break-word":e.wordBreak}),i=[],n,o=function(){if(n.value){var l=n.value.slice(),r=D5(l),a="";r.forEach(function(d){sMe.indexOf(d)===-1?a+=pl(d):(a.length&&i.push(a),i.push(pl(d)),a="")}),a.length&&i.push(a)}};!(n=t.next()).done;)o();return i},lMe=function(){function s(e,t,i){this.text=rMe(t.data,i.textTransform),this.textBounds=eMe(e,this.text,i,t)}return s}(),rMe=function(s,e){switch(e){case 1:return s.toLowerCase();case 3:return s.replace(aMe,dMe);case 2:return s.toUpperCase();default:return s}},aMe=/(^|\s|:|-|\(|\))([a-z])/g,dMe=function(s,e,t){return s.length>0?e+t.toUpperCase():s},Xme=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.src=i.currentSrc||i.src,n.intrinsicWidth=i.naturalWidth,n.intrinsicHeight=i.naturalHeight,n.context.cache.addImage(n.src),n}return e}(Bp),Yme=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.canvas=i,n.intrinsicWidth=i.width,n.intrinsicHeight=i.height,n}return e}(Bp),zme=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this,o=new XMLSerializer,l=I5(t,i);return i.setAttribute("width",l.width+"px"),i.setAttribute("height",l.height+"px"),n.svg="data:image/svg+xml,"+encodeURIComponent(o.serializeToString(i)),n.intrinsicWidth=i.width.baseVal.value,n.intrinsicHeight=i.height.baseVal.value,n.context.cache.addImage(n.svg),n}return e}(Bp),_me=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.value=i.value,n}return e}(Bp),oj=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.start=i.start,n.reversed=typeof i.reversed=="boolean"&&i.reversed===!0,n}return e}(Bp),cMe=[{type:15,flags:0,unit:"px",number:3}],hMe=[{type:16,flags:0,number:50}],uMe=function(s){return s.width>s.height?new b0(s.left+(s.width-s.height)/2,s.top,s.height,s.height):s.width<s.height?new b0(s.left,s.top+(s.height-s.width)/2,s.width,s.width):s},mMe=function(s){var e=s.type===pMe?new Array(s.value.length+1).join("•"):s.value;return e.length===0?s.placeholder||"":e},UE="checkbox",fE="radio",pMe="password",ase=707406591,r$=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;switch(n.type=i.type.toLowerCase(),n.checked=i.checked,n.value=mMe(i),(n.type===UE||n.type===fE)&&(n.styles.backgroundColor=3739148031,n.styles.borderTopColor=n.styles.borderRightColor=n.styles.borderBottomColor=n.styles.borderLeftColor=2779096575,n.styles.borderTopWidth=n.styles.borderRightWidth=n.styles.borderBottomWidth=n.styles.borderLeftWidth=1,n.styles.borderTopStyle=n.styles.borderRightStyle=n.styles.borderBottomStyle=n.styles.borderLeftStyle=1,n.styles.backgroundClip=[0],n.styles.backgroundOrigin=[0],n.bounds=uMe(n.bounds)),n.type){case UE:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=cMe;break;case fE:n.styles.borderTopRightRadius=n.styles.borderTopLeftRadius=n.styles.borderBottomRightRadius=n.styles.borderBottomLeftRadius=hMe;break}return n}return e}(Bp),Ome=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this,o=i.options[i.selectedIndex||0];return n.value=o&&o.text||"",n}return e}(Bp),jme=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.value=i.value,n}return e}(Bp),Hme=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;n.src=i.src,n.width=parseInt(i.width,10)||0,n.height=parseInt(i.height,10)||0,n.backgroundColor=n.styles.backgroundColor;try{if(i.contentWindow&&i.contentWindow.document&&i.contentWindow.document.documentElement){n.tree=Kme(t,i.contentWindow.document.documentElement);var o=i.contentWindow.document.documentElement?nC(t,getComputedStyle(i.contentWindow.document.documentElement).backgroundColor):r0.TRANSPARENT,l=i.contentWindow.document.body?nC(t,getComputedStyle(i.contentWindow.document.body).backgroundColor):r0.TRANSPARENT;n.backgroundColor=BU(o)?BU(l)?n.styles.backgroundColor:l:o}}catch{}return n}return e}(Bp),gMe=["OL","UL","MENU"],YI=function(s,e,t,i){for(var n=e.firstChild,o=void 0;n;n=o)if(o=n.nextSibling,qme(n)&&n.data.trim().length>0)t.textNodes.push(new lMe(s,n,t.styles));else if(nS(n))if(ipe(n)&&n.assignedNodes)n.assignedNodes().forEach(function(r){return YI(s,r,t,i)});else{var l=Pme(s,n);l.styles.isVisible()&&(bMe(n,l,i)?l.flags|=4:UMe(l.styles)&&(l.flags|=2),gMe.indexOf(n.tagName)!==-1&&(l.flags|=8),t.elements.push(l),n.slot,n.shadowRoot?YI(s,n.shadowRoot,l,i):!FE(n)&&!$me(n)&&!ZE(n)&&YI(s,n,l,i))}},Pme=function(s,e){return rj(e)?new Xme(s,e):epe(e)?new Yme(s,e):$me(e)?new zme(s,e):fMe(e)?new _me(s,e):FMe(e)?new oj(s,e):ZMe(e)?new r$(s,e):ZE(e)?new Ome(s,e):FE(e)?new jme(s,e):tpe(e)?new Hme(s,e):new Bp(s,e)},Kme=function(s,e){var t=Pme(s,e);return t.flags|=4,YI(s,e,t,t),t},bMe=function(s,e,t){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||a$(s)&&t.styles.isTransparent()},UMe=function(s){return s.isPositioned()||s.isFloating()},qme=function(s){return s.nodeType===Node.TEXT_NODE},nS=function(s){return s.nodeType===Node.ELEMENT_NODE},lj=function(s){return nS(s)&&typeof s.style<"u"&&!zI(s)},zI=function(s){return typeof s.className=="object"},fMe=function(s){return s.tagName==="LI"},FMe=function(s){return s.tagName==="OL"},ZMe=function(s){return s.tagName==="INPUT"},AMe=function(s){return s.tagName==="HTML"},$me=function(s){return s.tagName==="svg"},a$=function(s){return s.tagName==="BODY"},epe=function(s){return s.tagName==="CANVAS"},dse=function(s){return s.tagName==="VIDEO"},rj=function(s){return s.tagName==="IMG"},tpe=function(s){return s.tagName==="IFRAME"},cse=function(s){return s.tagName==="STYLE"},NMe=function(s){return s.tagName==="SCRIPT"},FE=function(s){return s.tagName==="TEXTAREA"},ZE=function(s){return s.tagName==="SELECT"},ipe=function(s){return s.tagName==="SLOT"},hse=function(s){return s.tagName.indexOf("-")>0},RMe=function(){function s(){this.counters={}}return s.prototype.getCounterValue=function(e){var t=this.counters[e];return t&&t.length?t[t.length-1]:1},s.prototype.getCounterValues=function(e){var t=this.counters[e];return t||[]},s.prototype.pop=function(e){var t=this;e.forEach(function(i){return t.counters[i].pop()})},s.prototype.parse=function(e){var t=this,i=e.counterIncrement,n=e.counterReset,o=!0;i!==null&&i.forEach(function(r){var a=t.counters[r.counter];a&&r.increment!==0&&(o=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=r.increment)});var l=[];return o&&n.forEach(function(r){var a=t.counters[r.counter];l.push(r.counter),a||(a=t.counters[r.counter]=[]),a.push(r.reset)}),l},s}(),use={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},mse={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},SMe={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},WMe={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},NN=function(s,e,t,i,n,o){return s<e||s>t?jw(s,n,o.length>0):i.integers.reduce(function(l,r,a){for(;s>=r;)s-=r,l+=i.values[a];return l},"")+o},npe=function(s,e,t,i){var n="";do t||s--,n=i(s)+n,s/=e;while(s*e>=e);return n},dl=function(s,e,t,i,n){var o=t-e+1;return(s<0?"-":"")+(npe(Math.abs(s),o,i,function(l){return pl(Math.floor(l%o)+e)})+n)},Tf=function(s,e,t){t===void 0&&(t=". ");var i=e.length;return npe(Math.abs(s),i,!1,function(n){return e[Math.floor(n%i)]})+t},UR=1,ob=2,lb=4,vy=8,zp=function(s,e,t,i,n,o){if(s<-9999||s>9999)return jw(s,4,n.length>0);var l=Math.abs(s),r=n;if(l===0)return e[0]+r;for(var a=0;l>0&&a<=4;a++){var d=l%10;d===0&&$l(o,UR)&&r!==""?r=e[d]+r:d>1||d===1&&a===0||d===1&&a===1&&$l(o,ob)||d===1&&a===1&&$l(o,lb)&&s>100||d===1&&a>1&&$l(o,vy)?r=e[d]+(a>0?t[a-1]:"")+r:d===1&&a>0&&(r=t[a-1]+r),l=Math.floor(l/10)}return(s<0?i:"")+r},pse="十百千萬",gse="拾佰仟萬",bse="マイナス",Q9="마이너스",jw=function(s,e,t){var i=t?". ":"",n=t?"、":"",o=t?", ":"",l=t?" ":"";switch(e){case 0:return"•"+l;case 1:return"◦"+l;case 2:return"◾"+l;case 5:var r=dl(s,48,57,!0,i);return r.length<4?"0"+r:r;case 4:return Tf(s,"〇一二三四五六七八九",n);case 6:return NN(s,1,3999,use,3,i).toLowerCase();case 7:return NN(s,1,3999,use,3,i);case 8:return dl(s,945,969,!1,i);case 9:return dl(s,97,122,!1,i);case 10:return dl(s,65,90,!1,i);case 11:return dl(s,1632,1641,!0,i);case 12:case 49:return NN(s,1,9999,mse,3,i);case 35:return NN(s,1,9999,mse,3,i).toLowerCase();case 13:return dl(s,2534,2543,!0,i);case 14:case 30:return dl(s,6112,6121,!0,i);case 15:return Tf(s,"子丑寅卯辰巳午未申酉戌亥",n);case 16:return Tf(s,"甲乙丙丁戊己庚辛壬癸",n);case 17:case 48:return zp(s,"零一二三四五六七八九",pse,"負",n,ob|lb|vy);case 47:return zp(s,"零壹貳參肆伍陸柒捌玖",gse,"負",n,UR|ob|lb|vy);case 42:return zp(s,"零一二三四五六七八九",pse,"负",n,ob|lb|vy);case 41:return zp(s,"零壹贰叁肆伍陆柒捌玖",gse,"负",n,UR|ob|lb|vy);case 26:return zp(s,"〇一二三四五六七八九","十百千万",bse,n,0);case 25:return zp(s,"零壱弐参四伍六七八九","拾百千万",bse,n,UR|ob|lb);case 31:return zp(s,"영일이삼사오육칠팔구","십백천만",Q9,o,UR|ob|lb);case 33:return zp(s,"零一二三四五六七八九","十百千萬",Q9,o,0);case 32:return zp(s,"零壹貳參四五六七八九","拾百千",Q9,o,UR|ob|lb);case 18:return dl(s,2406,2415,!0,i);case 20:return NN(s,1,19999,WMe,3,i);case 21:return dl(s,2790,2799,!0,i);case 22:return dl(s,2662,2671,!0,i);case 22:return NN(s,1,10999,SMe,3,i);case 23:return Tf(s,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return Tf(s,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return dl(s,3302,3311,!0,i);case 28:return Tf(s,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case 29:return Tf(s,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case 34:return dl(s,3792,3801,!0,i);case 37:return dl(s,6160,6169,!0,i);case 38:return dl(s,4160,4169,!0,i);case 39:return dl(s,2918,2927,!0,i);case 40:return dl(s,1776,1785,!0,i);case 43:return dl(s,3046,3055,!0,i);case 44:return dl(s,3174,3183,!0,i);case 45:return dl(s,3664,3673,!0,i);case 46:return dl(s,3872,3881,!0,i);case 3:default:return dl(s,48,57,!0,i)}},spe="data-html2canvas-ignore",Use=function(){function s(e,t,i){if(this.context=e,this.options=i,this.scrolledElements=[],this.referenceElement=t,this.counters=new RMe,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return s.prototype.toIFrame=function(e,t){var i=this,n=VMe(e,t);if(!n.contentWindow)return Promise.reject("Unable to find iframe window");var o=e.defaultView.pageXOffset,l=e.defaultView.pageYOffset,r=n.contentWindow,a=r.document,d=CMe(n).then(function(){return sd(i,void 0,void 0,function(){var c,h;return Na(this,function(u){switch(u.label){case 0:return this.scrolledElements.forEach(BMe),r&&(r.scrollTo(t.left,t.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(r.scrollY!==t.top||r.scrollX!==t.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(r.scrollX-t.left,r.scrollY-t.top,0,0))),c=this.options.onclone,h=this.clonedReferenceElement,typeof h>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:u.sent(),u.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,yMe(a)]:[3,4];case 3:u.sent(),u.label=4;case 4:return typeof c=="function"?[2,Promise.resolve().then(function(){return c(a,h)}).then(function(){return n})]:[2,n]}})})});return a.open(),a.write(MMe(document.doctype)+"<html></html>"),TMe(this.referenceElement.ownerDocument,o,l),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),d},s.prototype.createElementClone=function(e){if(nj(e,2))debugger;if(epe(e))return this.createCanvasClone(e);if(dse(e))return this.createVideoClone(e);if(cse(e))return this.createStyleClone(e);var t=e.cloneNode(!1);return rj(t)&&(rj(e)&&e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),t.loading==="lazy"&&(t.loading="eager")),hse(t)?this.createCustomElementClone(t):t},s.prototype.createCustomElementClone=function(e){var t=document.createElement("html2canvascustomelement");return y9(e.style,t),t},s.prototype.createStyleClone=function(e){try{var t=e.sheet;if(t&&t.cssRules){var i=[].slice.call(t.cssRules,0).reduce(function(o,l){return l&&typeof l.cssText=="string"?o+l.cssText:o},""),n=e.cloneNode(!1);return n.textContent=i,n}}catch(o){if(this.context.logger.error("Unable to access cssRules property",o),o.name!=="SecurityError")throw o}return e.cloneNode(!1)},s.prototype.createCanvasClone=function(e){var t;if(this.options.inlineImages&&e.ownerDocument){var i=e.ownerDocument.createElement("img");try{return i.src=e.toDataURL(),i}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var n=e.cloneNode(!1);try{n.width=e.width,n.height=e.height;var o=e.getContext("2d"),l=n.getContext("2d");if(l)if(!this.options.allowTaint&&o)l.putImageData(o.getImageData(0,0,e.width,e.height),0,0);else{var r=(t=e.getContext("webgl2"))!==null&&t!==void 0?t:e.getContext("webgl");if(r){var a=r.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}l.drawImage(e,0,0)}return n}catch{this.context.logger.info("Unable to clone canvas as it is tainted",e)}return n},s.prototype.createVideoClone=function(e){var t=e.ownerDocument.createElement("canvas");t.width=e.offsetWidth,t.height=e.offsetHeight;var i=t.getContext("2d");try{return i&&(i.drawImage(e,0,0,t.width,t.height),this.options.allowTaint||i.getImageData(0,0,t.width,t.height)),t}catch{this.context.logger.info("Unable to clone video as it is tainted",e)}var n=e.ownerDocument.createElement("canvas");return n.width=e.offsetWidth,n.height=e.offsetHeight,n},s.prototype.appendChildNode=function(e,t,i){(!nS(t)||!NMe(t)&&!t.hasAttribute(spe)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(t)))&&(!this.options.copyStyles||!nS(t)||!cse(t))&&e.appendChild(this.cloneNode(t,i))},s.prototype.cloneChildNodes=function(e,t,i){for(var n=this,o=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;o;o=o.nextSibling)if(nS(o)&&ipe(o)&&typeof o.assignedNodes=="function"){var l=o.assignedNodes();l.length&&l.forEach(function(r){return n.appendChildNode(t,r,i)})}else this.appendChildNode(t,o,i)},s.prototype.cloneNode=function(e,t){if(qme(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var i=e.ownerDocument.defaultView;if(i&&nS(e)&&(lj(e)||zI(e))){var n=this.createElementClone(e);n.style.transitionProperty="none";var o=i.getComputedStyle(e),l=i.getComputedStyle(e,":before"),r=i.getComputedStyle(e,":after");this.referenceElement===e&&lj(n)&&(this.clonedReferenceElement=n),a$(n)&&IMe(n);var a=this.counters.parse(new jne(this.context,o)),d=this.resolvePseudoContent(e,n,l,lC.BEFORE);hse(e)&&(t=!0),dse(e)||this.cloneChildNodes(e,n,t),d&&n.insertBefore(d,n.firstChild);var c=this.resolvePseudoContent(e,n,r,lC.AFTER);return c&&n.appendChild(c),this.counters.pop(a),(o&&(this.options.copyStyles||zI(e))&&!tpe(e)||t)&&y9(o,n),(e.scrollTop!==0||e.scrollLeft!==0)&&this.scrolledElements.push([n,e.scrollLeft,e.scrollTop]),(FE(e)||ZE(e))&&(FE(n)||ZE(n))&&(n.value=e.value),n}return e.cloneNode(!1)},s.prototype.resolvePseudoContent=function(e,t,i,n){var o=this;if(i){var l=i.content,r=t.ownerDocument;if(!(!r||!l||l==="none"||l==="-moz-alt-content"||i.display==="none")){this.counters.parse(new jne(this.context,i));var a=new fwe(this.context,i),d=r.createElement("html2canvaspseudoelement");y9(i,d),a.content.forEach(function(h){if(h.type===0)d.appendChild(r.createTextNode(h.value));else if(h.type===22){var u=r.createElement("img");u.src=h.value,u.style.opacity="1",d.appendChild(u)}else if(h.type===18){if(h.name==="attr"){var m=h.values.filter(io);m.length&&d.appendChild(r.createTextNode(e.getAttribute(m[0].value)||""))}else if(h.name==="counter"){var p=h.values.filter(PW),g=p[0],b=p[1];if(g&&io(g)){var f=o.counters.getCounterValue(g.value),Z=b&&io(b)?ij.parse(o.context,b.value):3;d.appendChild(r.createTextNode(jw(f,Z,!1)))}}else if(h.name==="counters"){var A=h.values.filter(PW),g=A[0],N=A[1],b=A[2];if(g&&io(g)){var W=o.counters.getCounterValues(g.value),Q=b&&io(b)?ij.parse(o.context,b.value):3,R=N&&N.type===0?N.value:"",M=W.map(function(G){return jw(G,Q,!1)}).join(R);d.appendChild(r.createTextNode(M))}}}else if(h.type===20)switch(h.value){case"open-quote":d.appendChild(r.createTextNode(One(a.quotes,o.quoteDepth++,!0)));break;case"close-quote":d.appendChild(r.createTextNode(One(a.quotes,--o.quoteDepth,!1)));break;default:d.appendChild(r.createTextNode(h.value))}}),d.className=aj+" "+dj;var c=n===lC.BEFORE?" "+aj:" "+dj;return zI(t)?t.className.baseValue+=c:t.className+=c,d}}},s.destroy=function(e){return e.parentNode?(e.parentNode.removeChild(e),!0):!1},s}(),lC;(function(s){s[s.BEFORE=0]="BEFORE",s[s.AFTER=1]="AFTER"})(lC||(lC={}));var VMe=function(s,e){var t=s.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute(spe,"true"),s.body.appendChild(t),t},QMe=function(s){return new Promise(function(e){if(s.complete){e();return}if(!s.src){e();return}s.onload=e,s.onerror=e})},yMe=function(s){return Promise.all([].slice.call(s.images,0).map(QMe))},CMe=function(s){return new Promise(function(e,t){var i=s.contentWindow;if(!i)return t("No window assigned for iframe");var n=i.document;i.onload=s.onload=function(){i.onload=s.onload=null;var o=setInterval(function(){n.body.childNodes.length>0&&n.readyState==="complete"&&(clearInterval(o),e(s))},50)}})},wMe=["all","d","content"],y9=function(s,e){for(var t=s.length-1;t>=0;t--){var i=s.item(t);wMe.indexOf(i)===-1&&e.style.setProperty(i,s.getPropertyValue(i))}return e},MMe=function(s){var e="";return s&&(e+="<!DOCTYPE ",s.name&&(e+=s.name),s.internalSubset&&(e+=s.internalSubset),s.publicId&&(e+='"'+s.publicId+'"'),s.systemId&&(e+='"'+s.systemId+'"'),e+=">"),e},TMe=function(s,e,t){s&&s.defaultView&&(e!==s.defaultView.pageXOffset||t!==s.defaultView.pageYOffset)&&s.defaultView.scrollTo(e,t)},BMe=function(s){var e=s[0],t=s[1],i=s[2];e.scrollLeft=t,e.scrollTop=i},LMe=":before",kMe=":after",aj="___html2canvas___pseudoelement_before",dj="___html2canvas___pseudoelement_after",fse=`{
- content: "" !important;
- display: none !important;
- }`,IMe=function(s){DMe(s,"."+aj+LMe+fse+`
- .`+dj+kMe+fse)},DMe=function(s,e){var t=s.ownerDocument;if(t){var i=t.createElement("style");i.textContent=e,s.appendChild(i)}},ope=function(){function s(){}return s.getOrigin=function(e){var t=s._link;return t?(t.href=e,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},s.isSameOrigin=function(e){return s.getOrigin(e)===s._origin},s.setContext=function(e){s._link=e.document.createElement("a"),s._origin=s.getOrigin(e.location.href)},s._origin="about:blank",s}(),GMe=function(){function s(e,t){this.context=e,this._options=t,this._cache={}}return s.prototype.addImage=function(e){var t=Promise.resolve();return this.has(e)||(w9(e)||JMe(e))&&(this._cache[e]=this.loadImage(e)).catch(function(){}),t},s.prototype.match=function(e){return this._cache[e]},s.prototype.loadImage=function(e){return sd(this,void 0,void 0,function(){var t,i,n,o,l=this;return Na(this,function(r){switch(r.label){case 0:return t=ope.isSameOrigin(e),i=!C9(e)&&this._options.useCORS===!0&&Xr.SUPPORT_CORS_IMAGES&&!t,n=!C9(e)&&!t&&!w9(e)&&typeof this._options.proxy=="string"&&Xr.SUPPORT_CORS_XHR&&!i,!t&&this._options.allowTaint===!1&&!C9(e)&&!w9(e)&&!n&&!i?[2]:(o=e,n?[4,this.proxy(o)]:[3,2]);case 1:o=r.sent(),r.label=2;case 2:return this.context.logger.debug("Added image "+e.substring(0,256)),[4,new Promise(function(a,d){var c=new Image;c.onload=function(){return a(c)},c.onerror=d,(XMe(o)||i)&&(c.crossOrigin="anonymous"),c.src=o,c.complete===!0&&setTimeout(function(){return a(c)},500),l._options.imageTimeout>0&&setTimeout(function(){return d("Timed out ("+l._options.imageTimeout+"ms) loading image")},l._options.imageTimeout)})];case 3:return[2,r.sent()]}})})},s.prototype.has=function(e){return typeof this._cache[e]<"u"},s.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},s.prototype.proxy=function(e){var t=this,i=this._options.proxy;if(!i)throw new Error("No proxy defined");var n=e.substring(0,256);return new Promise(function(o,l){var r=Xr.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(r==="text")o(a.response);else{var h=new FileReader;h.addEventListener("load",function(){return o(h.result)},!1),h.addEventListener("error",function(u){return l(u)},!1),h.readAsDataURL(a.response)}else l("Failed to proxy resource "+n+" with status code "+a.status)},a.onerror=l;var d=i.indexOf("?")>-1?"&":"?";if(a.open("GET",""+i+d+"url="+encodeURIComponent(e)+"&responseType="+r),r!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=r),t._options.imageTimeout){var c=t._options.imageTimeout;a.timeout=c,a.ontimeout=function(){return l("Timed out ("+c+"ms) proxying "+n)}}a.send()})},s}(),EMe=/^data:image\/svg\+xml/i,vMe=/^data:image\/.*;base64,/i,xMe=/^data:image\/.*/i,JMe=function(s){return Xr.SUPPORT_SVG_DRAWING||!YMe(s)},C9=function(s){return xMe.test(s)},XMe=function(s){return vMe.test(s)},w9=function(s){return s.substr(0,4)==="blob"},YMe=function(s){return s.substr(-3).toLowerCase()==="svg"||EMe.test(s)},Et=function(){function s(e,t){this.type=0,this.x=e,this.y=t}return s.prototype.add=function(e,t){return new s(this.x+e,this.y+t)},s}(),RN=function(s,e,t){return new Et(s.x+(e.x-s.x)*t,s.y+(e.y-s.y)*t)},WL=function(){function s(e,t,i,n){this.type=1,this.start=e,this.startControl=t,this.endControl=i,this.end=n}return s.prototype.subdivide=function(e,t){var i=RN(this.start,this.startControl,e),n=RN(this.startControl,this.endControl,e),o=RN(this.endControl,this.end,e),l=RN(i,n,e),r=RN(n,o,e),a=RN(l,r,e);return t?new s(this.start,i,l,a):new s(a,r,o,this.end)},s.prototype.add=function(e,t){return new s(this.start.add(e,t),this.startControl.add(e,t),this.endControl.add(e,t),this.end.add(e,t))},s.prototype.reverse=function(){return new s(this.end,this.endControl,this.startControl,this.start)},s}(),kh=function(s){return s.type===1},zMe=function(){function s(e){var t=e.styles,i=e.bounds,n=Gy(t.borderTopLeftRadius,i.width,i.height),o=n[0],l=n[1],r=Gy(t.borderTopRightRadius,i.width,i.height),a=r[0],d=r[1],c=Gy(t.borderBottomRightRadius,i.width,i.height),h=c[0],u=c[1],m=Gy(t.borderBottomLeftRadius,i.width,i.height),p=m[0],g=m[1],b=[];b.push((o+a)/i.width),b.push((p+h)/i.width),b.push((l+g)/i.height),b.push((d+u)/i.height);var f=Math.max.apply(Math,b);f>1&&(o/=f,l/=f,a/=f,d/=f,h/=f,u/=f,p/=f,g/=f);var Z=i.width-a,A=i.height-u,N=i.width-h,W=i.height-g,Q=t.borderTopWidth,R=t.borderRightWidth,M=t.borderBottomWidth,w=t.borderLeftWidth,Y=Uo(t.paddingTop,e.bounds.width),G=Uo(t.paddingRight,e.bounds.width),P=Uo(t.paddingBottom,e.bounds.width),j=Uo(t.paddingLeft,e.bounds.width);this.topLeftBorderDoubleOuterBox=o>0||l>0?wo(i.left+w/3,i.top+Q/3,o-w/3,l-Q/3,Bs.TOP_LEFT):new Et(i.left+w/3,i.top+Q/3),this.topRightBorderDoubleOuterBox=o>0||l>0?wo(i.left+Z,i.top+Q/3,a-R/3,d-Q/3,Bs.TOP_RIGHT):new Et(i.left+i.width-R/3,i.top+Q/3),this.bottomRightBorderDoubleOuterBox=h>0||u>0?wo(i.left+N,i.top+A,h-R/3,u-M/3,Bs.BOTTOM_RIGHT):new Et(i.left+i.width-R/3,i.top+i.height-M/3),this.bottomLeftBorderDoubleOuterBox=p>0||g>0?wo(i.left+w/3,i.top+W,p-w/3,g-M/3,Bs.BOTTOM_LEFT):new Et(i.left+w/3,i.top+i.height-M/3),this.topLeftBorderDoubleInnerBox=o>0||l>0?wo(i.left+w*2/3,i.top+Q*2/3,o-w*2/3,l-Q*2/3,Bs.TOP_LEFT):new Et(i.left+w*2/3,i.top+Q*2/3),this.topRightBorderDoubleInnerBox=o>0||l>0?wo(i.left+Z,i.top+Q*2/3,a-R*2/3,d-Q*2/3,Bs.TOP_RIGHT):new Et(i.left+i.width-R*2/3,i.top+Q*2/3),this.bottomRightBorderDoubleInnerBox=h>0||u>0?wo(i.left+N,i.top+A,h-R*2/3,u-M*2/3,Bs.BOTTOM_RIGHT):new Et(i.left+i.width-R*2/3,i.top+i.height-M*2/3),this.bottomLeftBorderDoubleInnerBox=p>0||g>0?wo(i.left+w*2/3,i.top+W,p-w*2/3,g-M*2/3,Bs.BOTTOM_LEFT):new Et(i.left+w*2/3,i.top+i.height-M*2/3),this.topLeftBorderStroke=o>0||l>0?wo(i.left+w/2,i.top+Q/2,o-w/2,l-Q/2,Bs.TOP_LEFT):new Et(i.left+w/2,i.top+Q/2),this.topRightBorderStroke=o>0||l>0?wo(i.left+Z,i.top+Q/2,a-R/2,d-Q/2,Bs.TOP_RIGHT):new Et(i.left+i.width-R/2,i.top+Q/2),this.bottomRightBorderStroke=h>0||u>0?wo(i.left+N,i.top+A,h-R/2,u-M/2,Bs.BOTTOM_RIGHT):new Et(i.left+i.width-R/2,i.top+i.height-M/2),this.bottomLeftBorderStroke=p>0||g>0?wo(i.left+w/2,i.top+W,p-w/2,g-M/2,Bs.BOTTOM_LEFT):new Et(i.left+w/2,i.top+i.height-M/2),this.topLeftBorderBox=o>0||l>0?wo(i.left,i.top,o,l,Bs.TOP_LEFT):new Et(i.left,i.top),this.topRightBorderBox=a>0||d>0?wo(i.left+Z,i.top,a,d,Bs.TOP_RIGHT):new Et(i.left+i.width,i.top),this.bottomRightBorderBox=h>0||u>0?wo(i.left+N,i.top+A,h,u,Bs.BOTTOM_RIGHT):new Et(i.left+i.width,i.top+i.height),this.bottomLeftBorderBox=p>0||g>0?wo(i.left,i.top+W,p,g,Bs.BOTTOM_LEFT):new Et(i.left,i.top+i.height),this.topLeftPaddingBox=o>0||l>0?wo(i.left+w,i.top+Q,Math.max(0,o-w),Math.max(0,l-Q),Bs.TOP_LEFT):new Et(i.left+w,i.top+Q),this.topRightPaddingBox=a>0||d>0?wo(i.left+Math.min(Z,i.width-R),i.top+Q,Z>i.width+R?0:Math.max(0,a-R),Math.max(0,d-Q),Bs.TOP_RIGHT):new Et(i.left+i.width-R,i.top+Q),this.bottomRightPaddingBox=h>0||u>0?wo(i.left+Math.min(N,i.width-w),i.top+Math.min(A,i.height-M),Math.max(0,h-R),Math.max(0,u-M),Bs.BOTTOM_RIGHT):new Et(i.left+i.width-R,i.top+i.height-M),this.bottomLeftPaddingBox=p>0||g>0?wo(i.left+w,i.top+Math.min(W,i.height-M),Math.max(0,p-w),Math.max(0,g-M),Bs.BOTTOM_LEFT):new Et(i.left+w,i.top+i.height-M),this.topLeftContentBox=o>0||l>0?wo(i.left+w+j,i.top+Q+Y,Math.max(0,o-(w+j)),Math.max(0,l-(Q+Y)),Bs.TOP_LEFT):new Et(i.left+w+j,i.top+Q+Y),this.topRightContentBox=a>0||d>0?wo(i.left+Math.min(Z,i.width+w+j),i.top+Q+Y,Z>i.width+w+j?0:a-w+j,d-(Q+Y),Bs.TOP_RIGHT):new Et(i.left+i.width-(R+G),i.top+Q+Y),this.bottomRightContentBox=h>0||u>0?wo(i.left+Math.min(N,i.width-(w+j)),i.top+Math.min(A,i.height+Q+Y),Math.max(0,h-(R+G)),u-(M+P),Bs.BOTTOM_RIGHT):new Et(i.left+i.width-(R+G),i.top+i.height-(M+P)),this.bottomLeftContentBox=p>0||g>0?wo(i.left+w+j,i.top+W,Math.max(0,p-(w+j)),g-(M+P),Bs.BOTTOM_LEFT):new Et(i.left+w+j,i.top+i.height-(M+P))}return s}(),Bs;(function(s){s[s.TOP_LEFT=0]="TOP_LEFT",s[s.TOP_RIGHT=1]="TOP_RIGHT",s[s.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",s[s.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(Bs||(Bs={}));var wo=function(s,e,t,i,n){var o=4*((Math.sqrt(2)-1)/3),l=t*o,r=i*o,a=s+t,d=e+i;switch(n){case Bs.TOP_LEFT:return new WL(new Et(s,d),new Et(s,d-r),new Et(a-l,e),new Et(a,e));case Bs.TOP_RIGHT:return new WL(new Et(s,e),new Et(s+l,e),new Et(a,d-r),new Et(a,d));case Bs.BOTTOM_RIGHT:return new WL(new Et(a,e),new Et(a,e+r),new Et(s+l,d),new Et(s,d));case Bs.BOTTOM_LEFT:default:return new WL(new Et(a,d),new Et(a-l,d),new Et(s,e+r),new Et(s,e))}},AE=function(s){return[s.topLeftBorderBox,s.topRightBorderBox,s.bottomRightBorderBox,s.bottomLeftBorderBox]},_Me=function(s){return[s.topLeftContentBox,s.topRightContentBox,s.bottomRightContentBox,s.bottomLeftContentBox]},NE=function(s){return[s.topLeftPaddingBox,s.topRightPaddingBox,s.bottomRightPaddingBox,s.bottomLeftPaddingBox]},OMe=function(){function s(e,t,i){this.offsetX=e,this.offsetY=t,this.matrix=i,this.type=0,this.target=6}return s}(),VL=function(){function s(e,t){this.path=e,this.target=t,this.type=1}return s}(),jMe=function(){function s(e){this.opacity=e,this.type=2,this.target=6}return s}(),HMe=function(s){return s.type===0},lpe=function(s){return s.type===1},PMe=function(s){return s.type===2},Fse=function(s,e){return s.length===e.length?s.some(function(t,i){return t===e[i]}):!1},KMe=function(s,e,t,i,n){return s.map(function(o,l){switch(l){case 0:return o.add(e,t);case 1:return o.add(e+i,t);case 2:return o.add(e+i,t+n);case 3:return o.add(e,t+n)}return o})},rpe=function(){function s(e){this.element=e,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return s}(),ape=function(){function s(e,t){if(this.container=e,this.parent=t,this.effects=[],this.curves=new zMe(this.container),this.container.styles.opacity<1&&this.effects.push(new jMe(this.container.styles.opacity)),this.container.styles.transform!==null){var i=this.container.bounds.left+this.container.styles.transformOrigin[0].number,n=this.container.bounds.top+this.container.styles.transformOrigin[1].number,o=this.container.styles.transform;this.effects.push(new OMe(i,n,o))}if(this.container.styles.overflowX!==0){var l=AE(this.curves),r=NE(this.curves);Fse(l,r)?this.effects.push(new VL(l,6)):(this.effects.push(new VL(l,2)),this.effects.push(new VL(r,4)))}}return s.prototype.getEffects=function(e){for(var t=[2,3].indexOf(this.container.styles.position)===-1,i=this.parent,n=this.effects.slice(0);i;){var o=i.effects.filter(function(a){return!lpe(a)});if(t||i.container.styles.position!==0||!i.parent){if(n.unshift.apply(n,o),t=[2,3].indexOf(i.container.styles.position)===-1,i.container.styles.overflowX!==0){var l=AE(i.curves),r=NE(i.curves);Fse(l,r)||n.unshift(new VL(r,6))}}else n.unshift.apply(n,o);i=i.parent}return n.filter(function(a){return $l(a.target,e)})},s}(),cj=function(s,e,t,i){s.container.elements.forEach(function(n){var o=$l(n.flags,4),l=$l(n.flags,2),r=new ape(n,s);$l(n.styles.display,2048)&&i.push(r);var a=$l(n.flags,8)?[]:i;if(o||l){var d=o||n.styles.isPositioned()?t:e,c=new rpe(r);if(n.styles.isPositioned()||n.styles.opacity<1||n.styles.isTransformed()){var h=n.styles.zIndex.order;if(h<0){var u=0;d.negativeZIndex.some(function(p,g){return h>p.element.container.styles.zIndex.order?(u=g,!1):u>0}),d.negativeZIndex.splice(u,0,c)}else if(h>0){var m=0;d.positiveZIndex.some(function(p,g){return h>=p.element.container.styles.zIndex.order?(m=g+1,!1):m>0}),d.positiveZIndex.splice(m,0,c)}else d.zeroOrAutoZIndexOrTransformedOrOpacity.push(c)}else n.styles.isFloating()?d.nonPositionedFloats.push(c):d.nonPositionedInlineLevel.push(c);cj(r,c,o?c:t,a)}else n.styles.isInlineLevel()?e.inlineLevel.push(r):e.nonInlineLevel.push(r),cj(r,e,t,a);$l(n.flags,8)&&dpe(n,a)})},dpe=function(s,e){for(var t=s instanceof oj?s.start:1,i=s instanceof oj?s.reversed:!1,n=0;n<e.length;n++){var o=e[n];o.container instanceof _me&&typeof o.container.value=="number"&&o.container.value!==0&&(t=o.container.value),o.listValue=jw(t,o.container.styles.listStyleType,!0),t+=i?-1:1}},qMe=function(s){var e=new ape(s,null),t=new rpe(e),i=[];return cj(e,t,t,i),dpe(e.container,i),t},Zse=function(s,e){switch(e){case 0:return xh(s.topLeftBorderBox,s.topLeftPaddingBox,s.topRightBorderBox,s.topRightPaddingBox);case 1:return xh(s.topRightBorderBox,s.topRightPaddingBox,s.bottomRightBorderBox,s.bottomRightPaddingBox);case 2:return xh(s.bottomRightBorderBox,s.bottomRightPaddingBox,s.bottomLeftBorderBox,s.bottomLeftPaddingBox);case 3:default:return xh(s.bottomLeftBorderBox,s.bottomLeftPaddingBox,s.topLeftBorderBox,s.topLeftPaddingBox)}},$Me=function(s,e){switch(e){case 0:return xh(s.topLeftBorderBox,s.topLeftBorderDoubleOuterBox,s.topRightBorderBox,s.topRightBorderDoubleOuterBox);case 1:return xh(s.topRightBorderBox,s.topRightBorderDoubleOuterBox,s.bottomRightBorderBox,s.bottomRightBorderDoubleOuterBox);case 2:return xh(s.bottomRightBorderBox,s.bottomRightBorderDoubleOuterBox,s.bottomLeftBorderBox,s.bottomLeftBorderDoubleOuterBox);case 3:default:return xh(s.bottomLeftBorderBox,s.bottomLeftBorderDoubleOuterBox,s.topLeftBorderBox,s.topLeftBorderDoubleOuterBox)}},eTe=function(s,e){switch(e){case 0:return xh(s.topLeftBorderDoubleInnerBox,s.topLeftPaddingBox,s.topRightBorderDoubleInnerBox,s.topRightPaddingBox);case 1:return xh(s.topRightBorderDoubleInnerBox,s.topRightPaddingBox,s.bottomRightBorderDoubleInnerBox,s.bottomRightPaddingBox);case 2:return xh(s.bottomRightBorderDoubleInnerBox,s.bottomRightPaddingBox,s.bottomLeftBorderDoubleInnerBox,s.bottomLeftPaddingBox);case 3:default:return xh(s.bottomLeftBorderDoubleInnerBox,s.bottomLeftPaddingBox,s.topLeftBorderDoubleInnerBox,s.topLeftPaddingBox)}},tTe=function(s,e){switch(e){case 0:return QL(s.topLeftBorderStroke,s.topRightBorderStroke);case 1:return QL(s.topRightBorderStroke,s.bottomRightBorderStroke);case 2:return QL(s.bottomRightBorderStroke,s.bottomLeftBorderStroke);case 3:default:return QL(s.bottomLeftBorderStroke,s.topLeftBorderStroke)}},QL=function(s,e){var t=[];return kh(s)?t.push(s.subdivide(.5,!1)):t.push(s),kh(e)?t.push(e.subdivide(.5,!0)):t.push(e),t},xh=function(s,e,t,i){var n=[];return kh(s)?n.push(s.subdivide(.5,!1)):n.push(s),kh(t)?n.push(t.subdivide(.5,!0)):n.push(t),kh(i)?n.push(i.subdivide(.5,!0).reverse()):n.push(i),kh(e)?n.push(e.subdivide(.5,!1).reverse()):n.push(e),n},cpe=function(s){var e=s.bounds,t=s.styles;return e.add(t.borderLeftWidth,t.borderTopWidth,-(t.borderRightWidth+t.borderLeftWidth),-(t.borderTopWidth+t.borderBottomWidth))},RE=function(s){var e=s.styles,t=s.bounds,i=Uo(e.paddingLeft,t.width),n=Uo(e.paddingRight,t.width),o=Uo(e.paddingTop,t.width),l=Uo(e.paddingBottom,t.width);return t.add(i+e.borderLeftWidth,o+e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth+i+n),-(e.borderTopWidth+e.borderBottomWidth+o+l))},iTe=function(s,e){return s===0?e.bounds:s===2?RE(e):cpe(e)},nTe=function(s,e){return s===0?e.bounds:s===2?RE(e):cpe(e)},M9=function(s,e,t){var i=iTe(fR(s.styles.backgroundOrigin,e),s),n=nTe(fR(s.styles.backgroundClip,e),s),o=sTe(fR(s.styles.backgroundSize,e),t,i),l=o[0],r=o[1],a=Gy(fR(s.styles.backgroundPosition,e),i.width-l,i.height-r),d=oTe(fR(s.styles.backgroundRepeat,e),a,o,i,n),c=Math.round(i.left+a[0]),h=Math.round(i.top+a[1]);return[d,c,h,l,r]},SN=function(s){return io(s)&&s.value===hW.AUTO},yL=function(s){return typeof s=="number"},sTe=function(s,e,t){var i=e[0],n=e[1],o=e[2],l=s[0],r=s[1];if(!l)return[0,0];if(Ml(l)&&r&&Ml(r))return[Uo(l,t.width),Uo(r,t.height)];var a=yL(o);if(io(l)&&(l.value===hW.CONTAIN||l.value===hW.COVER)){if(yL(o)){var d=t.width/t.height;return d<o!=(l.value===hW.COVER)?[t.width,t.width/o]:[t.height*o,t.height]}return[t.width,t.height]}var c=yL(i),h=yL(n),u=c||h;if(SN(l)&&(!r||SN(r))){if(c&&h)return[i,n];if(!a&&!u)return[t.width,t.height];if(u&&a){var m=c?i:n*o,p=h?n:i/o;return[m,p]}var g=c?i:t.width,b=h?n:t.height;return[g,b]}if(a){var f=0,Z=0;return Ml(l)?f=Uo(l,t.width):Ml(r)&&(Z=Uo(r,t.height)),SN(l)?f=Z*o:(!r||SN(r))&&(Z=f/o),[f,Z]}var A=null,N=null;if(Ml(l)?A=Uo(l,t.width):r&&Ml(r)&&(N=Uo(r,t.height)),A!==null&&(!r||SN(r))&&(N=c&&h?A/i*n:t.height),N!==null&&SN(l)&&(A=c&&h?N/n*i:t.width),A!==null&&N!==null)return[A,N];throw new Error("Unable to calculate background-size for element")},fR=function(s,e){var t=s[e];return typeof t>"u"?s[0]:t},oTe=function(s,e,t,i,n){var o=e[0],l=e[1],r=t[0],a=t[1];switch(s){case 2:return[new Et(Math.round(i.left),Math.round(i.top+l)),new Et(Math.round(i.left+i.width),Math.round(i.top+l)),new Et(Math.round(i.left+i.width),Math.round(a+i.top+l)),new Et(Math.round(i.left),Math.round(a+i.top+l))];case 3:return[new Et(Math.round(i.left+o),Math.round(i.top)),new Et(Math.round(i.left+o+r),Math.round(i.top)),new Et(Math.round(i.left+o+r),Math.round(i.height+i.top)),new Et(Math.round(i.left+o),Math.round(i.height+i.top))];case 1:return[new Et(Math.round(i.left+o),Math.round(i.top+l)),new Et(Math.round(i.left+o+r),Math.round(i.top+l)),new Et(Math.round(i.left+o+r),Math.round(i.top+l+a)),new Et(Math.round(i.left+o),Math.round(i.top+l+a))];default:return[new Et(Math.round(n.left),Math.round(n.top)),new Et(Math.round(n.left+n.width),Math.round(n.top)),new Et(Math.round(n.left+n.width),Math.round(n.height+n.top)),new Et(Math.round(n.left),Math.round(n.height+n.top))]}},lTe="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",Ase="Hidden Text",rTe=function(){function s(e){this._data={},this._document=e}return s.prototype.parseMetrics=function(e,t){var i=this._document.createElement("div"),n=this._document.createElement("img"),o=this._document.createElement("span"),l=this._document.body;i.style.visibility="hidden",i.style.fontFamily=e,i.style.fontSize=t,i.style.margin="0",i.style.padding="0",i.style.whiteSpace="nowrap",l.appendChild(i),n.src=lTe,n.width=1,n.height=1,n.style.margin="0",n.style.padding="0",n.style.verticalAlign="baseline",o.style.fontFamily=e,o.style.fontSize=t,o.style.margin="0",o.style.padding="0",o.appendChild(this._document.createTextNode(Ase)),i.appendChild(o),i.appendChild(n);var r=n.offsetTop-o.offsetTop+2;i.removeChild(o),i.appendChild(this._document.createTextNode(Ase)),i.style.lineHeight="normal",n.style.verticalAlign="super";var a=n.offsetTop-i.offsetTop+2;return l.removeChild(i),{baseline:r,middle:a}},s.prototype.getMetrics=function(e,t){var i=e+" "+t;return typeof this._data[i]>"u"&&(this._data[i]=this.parseMetrics(e,t)),this._data[i]},s}(),hpe=function(){function s(e,t){this.context=e,this.options=t}return s}(),aTe=1e4,dTe=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n._activeEffects=[],n.canvas=i.canvas?i.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),i.canvas||(n.canvas.width=Math.floor(i.width*i.scale),n.canvas.height=Math.floor(i.height*i.scale),n.canvas.style.width=i.width+"px",n.canvas.style.height=i.height+"px"),n.fontMetrics=new rTe(document),n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-i.x,-i.y),n.ctx.textBaseline="bottom",n._activeEffects=[],n.context.logger.debug("Canvas renderer initialized ("+i.width+"x"+i.height+") with scale "+i.scale),n}return e.prototype.applyEffects=function(t){for(var i=this;this._activeEffects.length;)this.popEffect();t.forEach(function(n){return i.applyEffect(n)})},e.prototype.applyEffect=function(t){this.ctx.save(),PMe(t)&&(this.ctx.globalAlpha=t.opacity),HMe(t)&&(this.ctx.translate(t.offsetX,t.offsetY),this.ctx.transform(t.matrix[0],t.matrix[1],t.matrix[2],t.matrix[3],t.matrix[4],t.matrix[5]),this.ctx.translate(-t.offsetX,-t.offsetY)),lpe(t)&&(this.path(t.path),this.ctx.clip()),this._activeEffects.push(t)},e.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},e.prototype.renderStack=function(t){return sd(this,void 0,void 0,function(){var i;return Na(this,function(n){switch(n.label){case 0:return i=t.element.container.styles,i.isVisible()?[4,this.renderStackContent(t)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}})})},e.prototype.renderNode=function(t){return sd(this,void 0,void 0,function(){return Na(this,function(i){switch(i.label){case 0:if($l(t.container.flags,16))debugger;return t.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(t)]:[3,3];case 1:return i.sent(),[4,this.renderNodeContent(t)];case 2:i.sent(),i.label=3;case 3:return[2]}})})},e.prototype.renderTextWithLetterSpacing=function(t,i,n){var o=this;if(i===0)this.ctx.fillText(t.text,t.bounds.left,t.bounds.top+n);else{var l=l$(t.text);l.reduce(function(r,a){return o.ctx.fillText(a,r,t.bounds.top+n),r+o.ctx.measureText(a).width},t.bounds.left)}},e.prototype.createFontStyle=function(t){var i=t.fontVariant.filter(function(l){return l==="normal"||l==="small-caps"}).join(""),n=pTe(t.fontFamily).join(", "),o=PT(t.fontSize)?""+t.fontSize.number+t.fontSize.unit:t.fontSize.number+"px";return[[t.fontStyle,i,t.fontWeight,o,n].join(" "),n,o]},e.prototype.renderTextNode=function(t,i){return sd(this,void 0,void 0,function(){var n,o,l,r,a,d,c,h,u=this;return Na(this,function(m){return n=this.createFontStyle(i),o=n[0],l=n[1],r=n[2],this.ctx.font=o,this.ctx.direction=i.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(l,r),d=a.baseline,c=a.middle,h=i.paintOrder,t.textBounds.forEach(function(p){h.forEach(function(g){switch(g){case 0:u.ctx.fillStyle=mr(i.color),u.renderTextWithLetterSpacing(p,i.letterSpacing,d);var b=i.textShadow;b.length&&p.text.trim().length&&(b.slice(0).reverse().forEach(function(f){u.ctx.shadowColor=mr(f.color),u.ctx.shadowOffsetX=f.offsetX.number*u.options.scale,u.ctx.shadowOffsetY=f.offsetY.number*u.options.scale,u.ctx.shadowBlur=f.blur.number,u.renderTextWithLetterSpacing(p,i.letterSpacing,d)}),u.ctx.shadowColor="",u.ctx.shadowOffsetX=0,u.ctx.shadowOffsetY=0,u.ctx.shadowBlur=0),i.textDecorationLine.length&&(u.ctx.fillStyle=mr(i.textDecorationColor||i.color),i.textDecorationLine.forEach(function(f){switch(f){case 1:u.ctx.fillRect(p.bounds.left,Math.round(p.bounds.top+d),p.bounds.width,1);break;case 2:u.ctx.fillRect(p.bounds.left,Math.round(p.bounds.top),p.bounds.width,1);break;case 3:u.ctx.fillRect(p.bounds.left,Math.ceil(p.bounds.top+c),p.bounds.width,1);break}}));break;case 1:i.webkitTextStrokeWidth&&p.text.trim().length&&(u.ctx.strokeStyle=mr(i.webkitTextStrokeColor),u.ctx.lineWidth=i.webkitTextStrokeWidth,u.ctx.lineJoin=window.chrome?"miter":"round",u.ctx.strokeText(p.text,p.bounds.left,p.bounds.top+d)),u.ctx.strokeStyle="",u.ctx.lineWidth=0,u.ctx.lineJoin="miter";break}})}),[2]})})},e.prototype.renderReplacedElement=function(t,i,n){if(n&&t.intrinsicWidth>0&&t.intrinsicHeight>0){var o=RE(t),l=NE(i);this.path(l),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(n,0,0,t.intrinsicWidth,t.intrinsicHeight,o.left,o.top,o.width,o.height),this.ctx.restore()}},e.prototype.renderNodeContent=function(t){return sd(this,void 0,void 0,function(){var i,n,o,l,r,a,Z,Z,d,c,h,u,N,m,p,W,g,b,f,Z,A,N,W;return Na(this,function(Q){switch(Q.label){case 0:this.applyEffects(t.getEffects(4)),i=t.container,n=t.curves,o=i.styles,l=0,r=i.textNodes,Q.label=1;case 1:return l<r.length?(a=r[l],[4,this.renderTextNode(a,o)]):[3,4];case 2:Q.sent(),Q.label=3;case 3:return l++,[3,1];case 4:if(!(i instanceof Xme))return[3,8];Q.label=5;case 5:return Q.trys.push([5,7,,8]),[4,this.context.cache.match(i.src)];case 6:return Z=Q.sent(),this.renderReplacedElement(i,n,Z),[3,8];case 7:return Q.sent(),this.context.logger.error("Error loading image "+i.src),[3,8];case 8:if(i instanceof Yme&&this.renderReplacedElement(i,n,i.canvas),!(i instanceof zme))return[3,12];Q.label=9;case 9:return Q.trys.push([9,11,,12]),[4,this.context.cache.match(i.svg)];case 10:return Z=Q.sent(),this.renderReplacedElement(i,n,Z),[3,12];case 11:return Q.sent(),this.context.logger.error("Error loading svg "+i.svg.substring(0,255)),[3,12];case 12:return i instanceof Hme&&i.tree?(d=new e(this.context,{scale:this.options.scale,backgroundColor:i.backgroundColor,x:0,y:0,width:i.width,height:i.height}),[4,d.render(i.tree)]):[3,14];case 13:c=Q.sent(),i.width&&i.height&&this.ctx.drawImage(c,0,0,i.width,i.height,i.bounds.left,i.bounds.top,i.bounds.width,i.bounds.height),Q.label=14;case 14:if(i instanceof r$&&(h=Math.min(i.bounds.width,i.bounds.height),i.type===UE?i.checked&&(this.ctx.save(),this.path([new Et(i.bounds.left+h*.39363,i.bounds.top+h*.79),new Et(i.bounds.left+h*.16,i.bounds.top+h*.5549),new Et(i.bounds.left+h*.27347,i.bounds.top+h*.44071),new Et(i.bounds.left+h*.39694,i.bounds.top+h*.5649),new Et(i.bounds.left+h*.72983,i.bounds.top+h*.23),new Et(i.bounds.left+h*.84,i.bounds.top+h*.34085),new Et(i.bounds.left+h*.39363,i.bounds.top+h*.79)]),this.ctx.fillStyle=mr(ase),this.ctx.fill(),this.ctx.restore()):i.type===fE&&i.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(i.bounds.left+h/2,i.bounds.top+h/2,h/4,0,Math.PI*2,!0),this.ctx.fillStyle=mr(ase),this.ctx.fill(),this.ctx.restore())),cTe(i)&&i.value.length){switch(u=this.createFontStyle(o),N=u[0],m=u[1],p=this.fontMetrics.getMetrics(N,m).baseline,this.ctx.font=N,this.ctx.fillStyle=mr(o.color),this.ctx.textBaseline="alphabetic",this.ctx.textAlign=uTe(i.styles.textAlign),W=RE(i),g=0,i.styles.textAlign){case 1:g+=W.width/2;break;case 2:g+=W.width;break}b=W.add(g,0,0,-W.height/2+1),this.ctx.save(),this.path([new Et(W.left,W.top),new Et(W.left+W.width,W.top),new Et(W.left+W.width,W.top+W.height),new Et(W.left,W.top+W.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new oC(i.value,b),o.letterSpacing,p),this.ctx.restore(),this.ctx.textBaseline="alphabetic",this.ctx.textAlign="left"}if(!$l(i.styles.display,2048))return[3,20];if(i.styles.listStyleImage===null)return[3,19];if(f=i.styles.listStyleImage,f.type!==0)return[3,18];Z=void 0,A=f.url,Q.label=15;case 15:return Q.trys.push([15,17,,18]),[4,this.context.cache.match(A)];case 16:return Z=Q.sent(),this.ctx.drawImage(Z,i.bounds.left-(Z.width+10),i.bounds.top),[3,18];case 17:return Q.sent(),this.context.logger.error("Error loading list-style-image "+A),[3,18];case 18:return[3,20];case 19:t.listValue&&i.styles.listStyleType!==-1&&(N=this.createFontStyle(o)[0],this.ctx.font=N,this.ctx.fillStyle=mr(o.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",W=new b0(i.bounds.left,i.bounds.top+Uo(i.styles.paddingTop,i.bounds.width),i.bounds.width,zne(o.lineHeight,o.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new oC(t.listValue,W),o.letterSpacing,zne(o.lineHeight,o.fontSize.number)/2+2),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),Q.label=20;case 20:return[2]}})})},e.prototype.renderStackContent=function(t){return sd(this,void 0,void 0,function(){var i,n,f,o,l,f,r,a,f,d,c,f,h,u,f,m,p,f,g,b,f;return Na(this,function(Z){switch(Z.label){case 0:if($l(t.element.container.flags,16))debugger;return[4,this.renderNodeBackgroundAndBorders(t.element)];case 1:Z.sent(),i=0,n=t.negativeZIndex,Z.label=2;case 2:return i<n.length?(f=n[i],[4,this.renderStack(f)]):[3,5];case 3:Z.sent(),Z.label=4;case 4:return i++,[3,2];case 5:return[4,this.renderNodeContent(t.element)];case 6:Z.sent(),o=0,l=t.nonInlineLevel,Z.label=7;case 7:return o<l.length?(f=l[o],[4,this.renderNode(f)]):[3,10];case 8:Z.sent(),Z.label=9;case 9:return o++,[3,7];case 10:r=0,a=t.nonPositionedFloats,Z.label=11;case 11:return r<a.length?(f=a[r],[4,this.renderStack(f)]):[3,14];case 12:Z.sent(),Z.label=13;case 13:return r++,[3,11];case 14:d=0,c=t.nonPositionedInlineLevel,Z.label=15;case 15:return d<c.length?(f=c[d],[4,this.renderStack(f)]):[3,18];case 16:Z.sent(),Z.label=17;case 17:return d++,[3,15];case 18:h=0,u=t.inlineLevel,Z.label=19;case 19:return h<u.length?(f=u[h],[4,this.renderNode(f)]):[3,22];case 20:Z.sent(),Z.label=21;case 21:return h++,[3,19];case 22:m=0,p=t.zeroOrAutoZIndexOrTransformedOrOpacity,Z.label=23;case 23:return m<p.length?(f=p[m],[4,this.renderStack(f)]):[3,26];case 24:Z.sent(),Z.label=25;case 25:return m++,[3,23];case 26:g=0,b=t.positiveZIndex,Z.label=27;case 27:return g<b.length?(f=b[g],[4,this.renderStack(f)]):[3,30];case 28:Z.sent(),Z.label=29;case 29:return g++,[3,27];case 30:return[2]}})})},e.prototype.mask=function(t){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(t.slice(0).reverse()),this.ctx.closePath()},e.prototype.path=function(t){this.ctx.beginPath(),this.formatPath(t),this.ctx.closePath()},e.prototype.formatPath=function(t){var i=this;t.forEach(function(n,o){var l=kh(n)?n.start:n;o===0?i.ctx.moveTo(l.x,l.y):i.ctx.lineTo(l.x,l.y),kh(n)&&i.ctx.bezierCurveTo(n.startControl.x,n.startControl.y,n.endControl.x,n.endControl.y,n.end.x,n.end.y)})},e.prototype.renderRepeat=function(t,i,n,o){this.path(t),this.ctx.fillStyle=i,this.ctx.translate(n,o),this.ctx.fill(),this.ctx.translate(-n,-o)},e.prototype.resizeImage=function(t,i,n){var o;if(t.width===i&&t.height===n)return t;var l=(o=this.canvas.ownerDocument)!==null&&o!==void 0?o:document,r=l.createElement("canvas");r.width=Math.max(1,i),r.height=Math.max(1,n);var a=r.getContext("2d");return a.drawImage(t,0,0,t.width,t.height,0,0,i,n),r},e.prototype.renderBackgroundImage=function(t){return sd(this,void 0,void 0,function(){var i,n,o,l,r,a;return Na(this,function(d){switch(d.label){case 0:i=t.styles.backgroundImage.length-1,n=function(c){var h,u,m,Y,se,pe,j,X,M,p,Y,se,pe,j,X,g,b,f,Z,A,N,W,Q,R,M,w,Y,G,P,j,X,ie,se,pe,Ue,Qe,He,Te,xe,Je,Mt,St;return Na(this,function(Pe){switch(Pe.label){case 0:if(c.type!==0)return[3,5];h=void 0,u=c.url,Pe.label=1;case 1:return Pe.trys.push([1,3,,4]),[4,o.context.cache.match(u)];case 2:return h=Pe.sent(),[3,4];case 3:return Pe.sent(),o.context.logger.error("Error loading background-image "+u),[3,4];case 4:return h&&(m=M9(t,i,[h.width,h.height,h.width/h.height]),Y=m[0],se=m[1],pe=m[2],j=m[3],X=m[4],M=o.ctx.createPattern(o.resizeImage(h,j,X),"repeat"),o.renderRepeat(Y,M,se,pe)),[3,6];case 5:H2e(c)?(p=M9(t,i,[null,null,null]),Y=p[0],se=p[1],pe=p[2],j=p[3],X=p[4],g=Y2e(c.angle,j,X),b=g[0],f=g[1],Z=g[2],A=g[3],N=g[4],W=document.createElement("canvas"),W.width=j,W.height=X,Q=W.getContext("2d"),R=Q.createLinearGradient(f,A,Z,N),Xne(c.stops,b).forEach(function(Be){return R.addColorStop(Be.stop,mr(Be.color))}),Q.fillStyle=R,Q.fillRect(0,0,j,X),j>0&&X>0&&(M=o.ctx.createPattern(W,"repeat"),o.renderRepeat(Y,M,se,pe))):P2e(c)&&(w=M9(t,i,[null,null,null]),Y=w[0],G=w[1],P=w[2],j=w[3],X=w[4],ie=c.position.length===0?[n$]:c.position,se=Uo(ie[0],j),pe=Uo(ie[ie.length-1],X),Ue=z2e(c,se,pe,j,X),Qe=Ue[0],He=Ue[1],Qe>0&&He>0&&(Te=o.ctx.createRadialGradient(G+se,P+pe,0,G+se,P+pe,Qe),Xne(c.stops,Qe*2).forEach(function(Be){return Te.addColorStop(Be.stop,mr(Be.color))}),o.path(Y),o.ctx.fillStyle=Te,Qe!==He?(xe=t.bounds.left+.5*t.bounds.width,Je=t.bounds.top+.5*t.bounds.height,Mt=He/Qe,St=1/Mt,o.ctx.save(),o.ctx.translate(xe,Je),o.ctx.transform(1,0,0,Mt,0,0),o.ctx.translate(-xe,-Je),o.ctx.fillRect(G,St*(P-Je)+Je,j,X*St),o.ctx.restore()):o.ctx.fill())),Pe.label=6;case 6:return i--,[2]}})},o=this,l=0,r=t.styles.backgroundImage.slice(0).reverse(),d.label=1;case 1:return l<r.length?(a=r[l],[5,n(a)]):[3,4];case 2:d.sent(),d.label=3;case 3:return l++,[3,1];case 4:return[2]}})})},e.prototype.renderSolidBorder=function(t,i,n){return sd(this,void 0,void 0,function(){return Na(this,function(o){return this.path(Zse(n,i)),this.ctx.fillStyle=mr(t),this.ctx.fill(),[2]})})},e.prototype.renderDoubleBorder=function(t,i,n,o){return sd(this,void 0,void 0,function(){var l,r;return Na(this,function(a){switch(a.label){case 0:return i<3?[4,this.renderSolidBorder(t,n,o)]:[3,2];case 1:return a.sent(),[2];case 2:return l=$Me(o,n),this.path(l),this.ctx.fillStyle=mr(t),this.ctx.fill(),r=eTe(o,n),this.path(r),this.ctx.fill(),[2]}})})},e.prototype.renderNodeBackgroundAndBorders=function(t){return sd(this,void 0,void 0,function(){var i,n,o,l,r,a,d,c,h=this;return Na(this,function(u){switch(u.label){case 0:return this.applyEffects(t.getEffects(2)),i=t.container.styles,n=!BU(i.backgroundColor)||i.backgroundImage.length,o=[{style:i.borderTopStyle,color:i.borderTopColor,width:i.borderTopWidth},{style:i.borderRightStyle,color:i.borderRightColor,width:i.borderRightWidth},{style:i.borderBottomStyle,color:i.borderBottomColor,width:i.borderBottomWidth},{style:i.borderLeftStyle,color:i.borderLeftColor,width:i.borderLeftWidth}],l=hTe(fR(i.backgroundClip,0),t.curves),n||i.boxShadow.length?(this.ctx.save(),this.path(l),this.ctx.clip(),BU(i.backgroundColor)||(this.ctx.fillStyle=mr(i.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(t.container)]):[3,2];case 1:u.sent(),this.ctx.restore(),i.boxShadow.slice(0).reverse().forEach(function(m){h.ctx.save();var p=AE(t.curves),g=m.inset?0:aTe,b=KMe(p,-g+(m.inset?1:-1)*m.spread.number,(m.inset?1:-1)*m.spread.number,m.spread.number*(m.inset?-2:2),m.spread.number*(m.inset?-2:2));m.inset?(h.path(p),h.ctx.clip(),h.mask(b)):(h.mask(p),h.ctx.clip(),h.path(b)),h.ctx.shadowOffsetX=m.offsetX.number+g,h.ctx.shadowOffsetY=m.offsetY.number,h.ctx.shadowColor=mr(m.color),h.ctx.shadowBlur=m.blur.number,h.ctx.fillStyle=m.inset?mr(m.color):"rgba(0,0,0,1)",h.ctx.fill(),h.ctx.restore()}),u.label=2;case 2:r=0,a=0,d=o,u.label=3;case 3:return a<d.length?(c=d[a],c.style!==0&&!BU(c.color)&&c.width>0?c.style!==2?[3,5]:[4,this.renderDashedDottedBorder(c.color,c.width,r,t.curves,2)]:[3,11]):[3,13];case 4:return u.sent(),[3,11];case 5:return c.style!==3?[3,7]:[4,this.renderDashedDottedBorder(c.color,c.width,r,t.curves,3)];case 6:return u.sent(),[3,11];case 7:return c.style!==4?[3,9]:[4,this.renderDoubleBorder(c.color,c.width,r,t.curves)];case 8:return u.sent(),[3,11];case 9:return[4,this.renderSolidBorder(c.color,r,t.curves)];case 10:u.sent(),u.label=11;case 11:r++,u.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},e.prototype.renderDashedDottedBorder=function(t,i,n,o,l){return sd(this,void 0,void 0,function(){var r,a,d,c,h,u,m,p,g,b,f,Z,A,N,W,Q,W,Q;return Na(this,function(R){return this.ctx.save(),r=tTe(o,n),a=Zse(o,n),l===2&&(this.path(a),this.ctx.clip()),kh(a[0])?(d=a[0].start.x,c=a[0].start.y):(d=a[0].x,c=a[0].y),kh(a[1])?(h=a[1].end.x,u=a[1].end.y):(h=a[1].x,u=a[1].y),n===0||n===2?m=Math.abs(d-h):m=Math.abs(c-u),this.ctx.beginPath(),l===3?this.formatPath(r):this.formatPath(a.slice(0,2)),p=i<3?i*3:i*2,g=i<3?i*2:i,l===3&&(p=i,g=i),b=!0,m<=p*2?b=!1:m<=p*2+g?(f=m/(2*p+g),p*=f,g*=f):(Z=Math.floor((m+g)/(p+g)),A=(m-Z*p)/(Z-1),N=(m-(Z+1)*p)/Z,g=N<=0||Math.abs(g-A)<Math.abs(g-N)?A:N),b&&(l===3?this.ctx.setLineDash([0,p+g]):this.ctx.setLineDash([p,g])),l===3?(this.ctx.lineCap="round",this.ctx.lineWidth=i):this.ctx.lineWidth=i*2+1.1,this.ctx.strokeStyle=mr(t),this.ctx.stroke(),this.ctx.setLineDash([]),l===2&&(kh(a[0])&&(W=a[3],Q=a[0],this.ctx.beginPath(),this.formatPath([new Et(W.end.x,W.end.y),new Et(Q.start.x,Q.start.y)]),this.ctx.stroke()),kh(a[1])&&(W=a[1],Q=a[2],this.ctx.beginPath(),this.formatPath([new Et(W.end.x,W.end.y),new Et(Q.start.x,Q.start.y)]),this.ctx.stroke())),this.ctx.restore(),[2]})})},e.prototype.render=function(t){return sd(this,void 0,void 0,function(){var i;return Na(this,function(n){switch(n.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=mr(this.options.backgroundColor),this.ctx.fillRect(this.options.x,this.options.y,this.options.width,this.options.height)),i=qMe(t),[4,this.renderStack(i)];case 1:return n.sent(),this.applyEffects([]),[2,this.canvas]}})})},e}(hpe),cTe=function(s){return s instanceof jme||s instanceof Ome?!0:s instanceof r$&&s.type!==fE&&s.type!==UE},hTe=function(s,e){switch(s){case 0:return AE(e);case 2:return _Me(e);case 1:default:return NE(e)}},uTe=function(s){switch(s){case 1:return"center";case 2:return"right";case 0:default:return"left"}},mTe=["-apple-system","system-ui"],pTe=function(s){return/iPhone OS 15_(0|1)/.test(window.navigator.userAgent)?s.filter(function(e){return mTe.indexOf(e)===-1}):s},gTe=function(s){nm(e,s);function e(t,i){var n=s.call(this,t,i)||this;return n.canvas=i.canvas?i.canvas:document.createElement("canvas"),n.ctx=n.canvas.getContext("2d"),n.options=i,n.canvas.width=Math.floor(i.width*i.scale),n.canvas.height=Math.floor(i.height*i.scale),n.canvas.style.width=i.width+"px",n.canvas.style.height=i.height+"px",n.ctx.scale(n.options.scale,n.options.scale),n.ctx.translate(-i.x,-i.y),n.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized ("+i.width+"x"+i.height+" at "+i.x+","+i.y+") with scale "+i.scale),n}return e.prototype.render=function(t){return sd(this,void 0,void 0,function(){var i,n;return Na(this,function(o){switch(o.label){case 0:return i=sj(this.options.width*this.options.scale,this.options.height*this.options.scale,this.options.scale,this.options.scale,t),[4,bTe(i)];case 1:return n=o.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=mr(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(n,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},e}(hpe),bTe=function(s){return new Promise(function(e,t){var i=new Image;i.onload=function(){e(i)},i.onerror=t,i.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(s))})},UTe=function(){function s(e){var t=e.id,i=e.enabled;this.id=t,this.enabled=i,this.start=Date.now()}return s.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&(typeof window<"u"&&window.console&&typeof console.debug=="function"?console.debug.apply(console,lL([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},s.prototype.getTime=function(){return Date.now()-this.start},s.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&typeof window<"u"&&window.console&&typeof console.info=="function"&&console.info.apply(console,lL([this.id,this.getTime()+"ms"],e))},s.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&(typeof window<"u"&&window.console&&typeof console.warn=="function"?console.warn.apply(console,lL([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},s.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.enabled&&(typeof window<"u"&&window.console&&typeof console.error=="function"?console.error.apply(console,lL([this.id,this.getTime()+"ms"],e)):this.info.apply(this,e))},s.instances={},s}(),fTe=function(){function s(e,t){var i;this.windowBounds=t,this.instanceName="#"+s.instanceCount++,this.logger=new UTe({id:this.instanceName,enabled:e.logging}),this.cache=(i=e.cache)!==null&&i!==void 0?i:new GMe(this,e)}return s.instanceCount=1,s}(),FTe=function(s,e){return e===void 0&&(e={}),ZTe(s,e)};typeof window<"u"&&ope.setContext(window);var ZTe=function(s,e){return sd(void 0,void 0,void 0,function(){var t,i,n,o,l,r,a,d,c,h,u,m,p,g,b,f,Z,A,N,W,R,Q,R,M,w,Y,G,P,j,X,ie,se,pe,Ue,Qe,He,Te,xe,Je,Mt;return Na(this,function(St){switch(St.label){case 0:if(!s||typeof s!="object")return[2,Promise.reject("Invalid element provided as first argument")];if(t=s.ownerDocument,!t)throw new Error("Element is not attached to a Document");if(i=t.defaultView,!i)throw new Error("Document is not attached to a Window");return n={allowTaint:(M=e.allowTaint)!==null&&M!==void 0?M:!1,imageTimeout:(w=e.imageTimeout)!==null&&w!==void 0?w:15e3,proxy:e.proxy,useCORS:(Y=e.useCORS)!==null&&Y!==void 0?Y:!1},o=XO({logging:(G=e.logging)!==null&&G!==void 0?G:!0,cache:e.cache},n),l={windowWidth:(P=e.windowWidth)!==null&&P!==void 0?P:i.innerWidth,windowHeight:(j=e.windowHeight)!==null&&j!==void 0?j:i.innerHeight,scrollX:(X=e.scrollX)!==null&&X!==void 0?X:i.pageXOffset,scrollY:(ie=e.scrollY)!==null&&ie!==void 0?ie:i.pageYOffset},r=new b0(l.scrollX,l.scrollY,l.windowWidth,l.windowHeight),a=new fTe(o,r),d=(se=e.foreignObjectRendering)!==null&&se!==void 0?se:!1,c={allowTaint:(pe=e.allowTaint)!==null&&pe!==void 0?pe:!1,onclone:e.onclone,ignoreElements:e.ignoreElements,inlineImages:d,copyStyles:d},a.logger.debug("Starting document clone with size "+r.width+"x"+r.height+" scrolled to "+-r.left+","+-r.top),h=new Use(a,s,c),u=h.clonedReferenceElement,u?[4,h.toIFrame(t,r)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return m=St.sent(),p=a$(u)||AMe(u)?K1e(u.ownerDocument):I5(a,u),g=p.width,b=p.height,f=p.left,Z=p.top,A=ATe(a,u,e.backgroundColor),N={canvas:e.canvas,backgroundColor:A,scale:(Qe=(Ue=e.scale)!==null&&Ue!==void 0?Ue:i.devicePixelRatio)!==null&&Qe!==void 0?Qe:1,x:((He=e.x)!==null&&He!==void 0?He:0)+f,y:((Te=e.y)!==null&&Te!==void 0?Te:0)+Z,width:(xe=e.width)!==null&&xe!==void 0?xe:Math.ceil(g),height:(Je=e.height)!==null&&Je!==void 0?Je:Math.ceil(b)},d?(a.logger.debug("Document cloned, using foreign object rendering"),R=new gTe(a,N),[4,R.render(u)]):[3,3];case 2:return W=St.sent(),[3,5];case 3:return a.logger.debug("Document cloned, element located at "+f+","+Z+" with size "+g+"x"+b+" using computed rendering"),a.logger.debug("Starting DOM parsing"),Q=Kme(a,u),A===Q.styles.backgroundColor&&(Q.styles.backgroundColor=r0.TRANSPARENT),a.logger.debug("Starting renderer for element at "+N.x+","+N.y+" with size "+N.width+"x"+N.height),R=new dTe(a,N),[4,R.render(Q)];case 4:W=St.sent(),St.label=5;case 5:return(!((Mt=e.removeContainer)!==null&&Mt!==void 0)||Mt)&&(Use.destroy(m)||a.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore")),a.logger.debug("Finished rendering"),[2,W]}})})},ATe=function(s,e,t){var i=e.ownerDocument,n=i.documentElement?nC(s,getComputedStyle(i.documentElement).backgroundColor):r0.TRANSPARENT,o=i.body?nC(s,getComputedStyle(i.body).backgroundColor):r0.TRANSPARENT,l=typeof t=="string"?nC(s,t):t===null?r0.TRANSPARENT:4294967295;return e===i.documentElement?BU(n)?BU(o)?l:o:n:l};const NTe={key:0,width:"16",height:"16",viewBox:"0 0 32 32"},RTe=te("path",{d:"M18 28A12 12 0 1 0 6 16v6.2l-3.6-3.6L1 20l6 6l6-6l-1.4-1.4L8 22.2V16a10 10 0 1 1 10 10Z"},null,-1),STe=[RTe],WTe={key:1,width:"16",height:"16",viewBox:"0 0 24 24"},VTe=te("path",{d:"M14 20v-2h2.6l-3.2-3.2l1.425-1.425L18 16.55V14h2v6Zm-8.6 0L4 18.6L16.6 6H14V4h6v6h-2V7.4Zm3.775-9.425L4 5.4L5.4 4l5.175 5.175Z"},null,-1),QTe=[VTe],yTe={key:2,width:"16",height:"16",viewBox:"0 0 24 24"},CTe=te("path",{d:"M12 17q-2.075 0-3.537-1.463Q7 14.075 7 12t1.463-3.538Q9.925 7 12 7t3.538 1.462Q17 9.925 17 12q0 2.075-1.462 3.537Q14.075 17 12 17ZM2 13q-.425 0-.712-.288Q1 12.425 1 12t.288-.713Q1.575 11 2 11h2q.425 0 .713.287Q5 11.575 5 12t-.287.712Q4.425 13 4 13Zm18 0q-.425 0-.712-.288Q19 12.425 19 12t.288-.713Q19.575 11 20 11h2q.425 0 .712.287q.288.288.288.713t-.288.712Q22.425 13 22 13Zm-8-8q-.425 0-.712-.288Q11 4.425 11 4V2q0-.425.288-.713Q11.575 1 12 1t.713.287Q13 1.575 13 2v2q0 .425-.287.712Q12.425 5 12 5Zm0 18q-.425 0-.712-.288Q11 22.425 11 22v-2q0-.425.288-.712Q11.575 19 12 19t.713.288Q13 19.575 13 20v2q0 .425-.287.712Q12.425 23 12 23ZM5.65 7.05L4.575 6q-.3-.275-.288-.7q.013-.425.288-.725q.3-.3.725-.3t.7.3L7.05 5.65q.275.3.275.7q0 .4-.275.7q-.275.3-.687.287q-.413-.012-.713-.287ZM18 19.425l-1.05-1.075q-.275-.3-.275-.712q0-.413.275-.688q.275-.3.688-.287q.412.012.712.287L19.425 18q.3.275.288.7q-.013.425-.288.725q-.3.3-.725.3t-.7-.3ZM16.95 7.05q-.3-.275-.287-.688q.012-.412.287-.712L18 4.575q.275-.3.7-.288q.425.013.725.288q.3.3.3.725t-.3.7L18.35 7.05q-.3.275-.7.275q-.4 0-.7-.275ZM4.575 19.425q-.3-.3-.3-.725t.3-.7l1.075-1.05q.3-.275.713-.275q.412 0 .687.275q.3.275.288.688q-.013.412-.288.712L6 19.425q-.275.3-.7.287q-.425-.012-.725-.287Z"},null,-1),wTe=[CTe],MTe={key:3,width:"16",height:"16",viewBox:"0 0 24 24"},TTe=te("path",{d:"M12 21q-3.75 0-6.375-2.625T3 12q0-3.75 2.625-6.375T12 3q.35 0 .688.025q.337.025.662.075q-1.025.725-1.637 1.887Q11.1 6.15 11.1 7.5q0 2.25 1.575 3.825Q14.25 12.9 16.5 12.9q1.375 0 2.525-.613q1.15-.612 1.875-1.637q.05.325.075.662Q21 11.65 21 12q0 3.75-2.625 6.375T12 21Z"},null,-1),BTe=[TTe],LTe={key:4,width:"20",height:"20",viewBox:"0 0 24 24"},kTe=te("path",{d:"m12 17l4-4l-1.4-1.4l-1.6 1.55V9h-2v4.15L9.4 11.6L8 13zm-6 5q-.825 0-1.412-.587T4 20V8l6-6h8q.825 0 1.413.588T20 4v16q0 .825-.587 1.413T18 22zm0-2h12V4h-7.15L6 8.85zm0 0h12z"},null,-1),ITe=[kTe],T9={__name:"Icon",props:{name:{type:String,required:!0}},setup(s){return(e,t)=>(ce(),we(Zt,null,[s.name==="reset"?(ce(),we("svg",NTe,STe)):xn("",!0),s.name==="update"?(ce(),we("svg",WTe,QTe)):xn("",!0),s.name==="sun"?(ce(),we("svg",yTe,wTe)):xn("",!0),s.name==="moon"?(ce(),we("svg",MTe,BTe)):xn("",!0),s.name==="log"?(ce(),we("svg",LTe,ITe)):xn("",!0)],64))}};const DTe={class:"field"},GTe=te("label",{for:"label"},"Label:",-1),ETe={class:"my-header"},vTe=["id"],xTe={style:{"margin-top":"20px",padding:"20px"}},JTe={class:"dialog-footer"},XTe={class:"my-header"},YTe=["id"],zTe={style:{"margin-top":"5px",padding:"10px 35px"}},_Te={class:"eldesign classtable"},OTe={class:"dialog-footer"},jTe=te("div",{class:"dnd-flow"},null,-1),HTe={__name:"index",props:{optimizer:{type:Boolean},jboptimizer:{type:Boolean},Xfoil:{type:Boolean}},emits:["optimizerfalse"],setup(s,{expose:e,emit:t}){const i=x(!1);let n=x();$ue();const{onInit:o,onNodeDragStop:l,onNodeContextMenu:r,onConnect:a,addEdges:d,setViewport:c,toObject:h,addNode:u}=t$();let m=x(),p=x(),g=x(),b=x("#000"),f=x({name:"",description:""}),Z=x([]),A=x(1),N=x(),W=x("#b1b1b7"),Q=x("");x();let R=x("");x(!1);let M=x([]),w=x(),Y=x(null),G=x(!1);x(),x({position:{x:0,y:0},target:"kong"});let P=x([]),j=x([]),X=x(0);const{onDragOver:ie,onDrop:se,onDragLeave:pe,isDragOver:Ue}=ame(),Qe=x([]),He=x([]),Te=x(!1),xe=x({name:""});r(je=>{M.value=je.node,xe.value.name=je.node.data.label,Te.value=!0}),a(je=>{console.log(je),je.type="smoothstep",je.markerEnd=ZQe.ArrowClosed,je.color=W.value,je.style={strokeWidth:A.value,stroke:W.value},d(je),Y.value=null});const Je=()=>{M.value&&M.value.data?(M.value.data.label=xe.value.name,console.log(M.value.data.label)):console.error("noid.value 或 noid.value.data 未定义"),Te.value=!1};cW.on("child2Data",je=>{n.value=je,console.log(n.value)}),xO(()=>{cW.off("child2Data")});function Mt(je){M.value=je.node,xe.value.name=je.node.data.label,console.log("shuju:",je.node.data),console.log("noid.value:",M.value),console.log("changeName.value:",xe.value.name),G.value=!G.value}const St=je=>{N.value=je,M.value.style!=null&&(console.log(M.value.style),M.value.style.backgroundColor=je)};function Pe(){let je=[],ut=[];for(let _i=0;_i<P.value.length;_i++)je.push(P.value[_i].position.x),ut.push(P.value[_i].position.y);let cn=Math.min(...je),$i=Math.max(...ut);console.log(je),X.value++;let ei="模块"+X.value,ja={id:X.value.toString(),data:{label:ei},position:{x:cn,y:$i},style:{backgroundColor:N.value,width:"200px",height:"200px"}};if(P.value.length!=0){j.value=[];for(let _i=0;_i<P.value.length;_i++)j.value.push(P.value[_i]);console.log(j.value),Z.value=j.value.map(_i=>(_i.parentNode==null&&(_i.isParent=!1,_i.parentNode=ja.id,console.log(_i.parentNode),_i.position.x=_i.position.x/2,_i.position.y=_i.position.y/2,_i.expandParent=!0),_i))}He.value.push(ja);for(let _i=0;_i<Z.value.length;_i++)console.log(Z.value[_i]),He.value.push(Z.value[_i]);console.log(He.value)}function Be(je){M.value=je.node,console.log(je.node.data.name),je.node.data.name=="优化器"?t("optimizerfalse","优化器"):je.node.data.name=="进化优化器"?t("optimizerfalse","进化优化器"):je.node.data.name=="代理优化器"?t("optimizerfalse","代理优化器"):je.node.data.name=="Xfoil"?t("optimizerfalse","Xfoil"):je.node.data.name=="梯度优化器"?t("optimizerfalse","梯度优化器"):je.node.data.name=="CST"?t("optimizerfalse","CST"):je.node.data.name=="ADflow"?t("optimizerfalse","ADflow"):je.node.data.name=="CST"?t("optimizerfalse","CST"):je.node.data.name=="FFD"?t("optimizerfalse","FFD"):je.node.data.name=="TACS"?t("optimizerfalse","TACS"):je.node.data.name=="参数化"?t("optimizerfalse","参数化"):je.node.data.name=="气动分析"?t("optimizerfalse","气动分析"):rt.value.some(ut=>je.node.data.name.includes(ut))?t("optimizerfalse","Python"):je.node.data.name=="CATIA"?t("optimizerfalse","CATIA"):je.node.data.name=="FSI"?t("optimizerfalse","FUM to FEM"):je.node.data.name=="Flight"&&t("optimizerfalse","Flight")}let rt=x(["Python","Branin","Rosenbrock","Rastrigin","G9","Forrester"]),Tt=null;function qt(je){Y.value&&Tt&&(Tt.style={...Tt.style,stroke:Tt.originalColor,strokeWidth:1}),w.value=je.edge.id,Y.value=je.edge,Y.value.originalColor=Y.value.style.stroke,Y.value.style={...Y.value.style,stroke:"#2267B1",strokeWidth:2},Tt=Y.value}let yt=x(!1),fe=x([{data:"升力系数Cl",flag:1},{data:"阻力系数Cd",flag:1},{data:"压阻力系数Cdp",flag:1},{data:"上表面转换点位置xtr-upper",flag:1},{data:"下表面转换点位置xtr-lower",flag:1}]),Vi=x(!1),st=x(!1);const Fn=je=>{fe.value.forEach(ut=>{ut.flag=je}),st.value=!1},qi=()=>{let je=fe.value.filter(ut=>ut.flag).length;Vi.value=je===fe.value.length,st.value=je>0&&je<fe.value.length},Zo=()=>{let je=fe.value.filter(ut=>ut.flag).map(ut=>ut.data);console.log("xuanzhongshuju:",je),console.log("seledge:",Y.value),Y.value.label=je.join(`
- `),yt.value=!1};function is(je){qi(),console.log("Edge Double Click",je),Y.value=je.edge,yt.value=!0}function Ao(je,ut){console.log(2222)}o(je=>{je.fitView()}),l(({event:je,nodes:ut,node:cn})=>{console.log(ut),P.value=ut,console.log("Node Drag Stop",{event:je,nodes:ut,node:cn})}),a(je=>{d(je)});function js(je){je=w.value,m.value.removeEdges(je),console.log("msg:",n.value)}const xl=je=>{se(je),cW.emit("doSomethingEvent")};function wi(je){if(je=M.value.id,n.value==null){if(He.value.length>0){for(let ut=0;ut<He.value.length;ut++)je==He.value[ut].id&&(console.log(44444),console.log(He.value[ut]),He.value.splice(ut,1));console.log(He.value)}}else{if(He.value.length>0)for(let ut=0;ut<He.value.length;ut++)je==He.value[ut].id&&(console.log(He.value[ut]),He.value.splice(ut,1));for(let ut=0;ut<n.value[0].children.length;ut++)if(je.includes(n.value[0].children[ut].Text))for(let cn=0;cn<n.value[0].children[ut].children.length;cn++)je==n.value[0].children[ut].children[cn].id&&(n.value[0].children[ut].children.splice(cn,1),m.value.removeNodes(je))}}function rl(){He.value=[],Qe.value=[],j.value=[],P.value=[];for(let je=0;je<n.value[0].children.length;je++)for(let ut=0;ut<n.value[0].children[je].children.length;ut++)n.value[0].children[je].children=[]}async function yo(){let je={nodes:h().nodes,edges:h().edges};p.value=JSON.stringify(je);try{const ut=m.value.$el,$i=(await FTe(ut)).toDataURL("image/png");R.value=$i,R.value!=""&&(console.log("进入了"),Dt())}catch(ut){console.error("转换出错:",ut)}}const Dt=()=>{const je=JSON.parse(sessionStorage.getItem("objlist")),ut=je?je.stype:"";console.log(ut);const cn={transCode:"MDO0002",pid:Q.value,name:f.value.name,remark:f.value.description,image:R.value,isshare:"1",flow:p.value,stype:ut};console.log(cn),rs(cn).then($i=>{console.log($i),Cn({message:$i.returnMsg,type:"success"})}).catch($i=>{Cn.error($i.returnMsg)})};function oo(){c({x:0,y:0,zoom:1})}function oh(){i.value=!i.value,i.value?b.value="#fff":b.value="#000"}na(()=>{setTimeout(function(){ou()},1500)});const ou=()=>{let je=JSON.parse(sessionStorage.getItem("objlist"));if(je.flow!=""){let ut=JSON.parse(je.flow);He.value=ut.nodes,Qe.value=ut.edges}f.value.name=je.name,f.value.description=je.remark,Q.value=je.pid},Oa=je=>{Y.value&&(Y.value.style.strokeWidth=je),A.value=je,console.log(je)},al=je=>{if(console.log("yanse:",je),W.value=je,Y.value){const ut={...Y.value,style:{...Y.value.style,stroke:W.value,strokeWidth:1}},cn=Qe.value.map($i=>$i.id===Y.value.id?ut:$i);Qe.value=cn}};return Oc(()=>Y.value,(je,ut)=>{Y.value!=null}),e({changeAllEdgesColor:al,linestrokeWidth:Oa,getroter:ou,onSelection:Pe,bgcolorfunc:St}),(je,ut)=>{const cn=qe("el-icon"),$i=qe("el-input"),ei=qe("el-form-item"),ja=qe("el-form"),_i=qe("el-checkbox"),hn=qe("el-table-column"),yr=qe("el-table"),wd=qe("el-card");return ce(),we(Zt,null,[C(V(AQe),{ref_key:"vueFlowRef",ref:m,nodes:He.value,edges:Qe.value,class:Mi([{dark:i.value},"basic-flow"]),"default-viewport":{zoom:1.5},"min-zoom":.2,"max-zoom":2.5,onDrop:xl,onContextmenu:xI(je.onContextMenu,["prevent"]),onNodeContextmenu:ut[11]||(ut[11]=Ai=>Ao()),onDragover:V(ie),onDragleave:V(pe),onEdgeClick:qt,onNodeDoubleClick:Be,onNodeClick:Mt,onEdgeDoubleClick:is},{"node-default":T(Ai=>[C(Z1e,{node:Ai},null,8,["node"])]),"edge-default":T(Ai=>[C(V1e,{sourceX:Ai.sourceX,sourceY:Ai.sourceY,targetX:Ai.targetX,targetY:Ai.targetY,label:Ai.data.label},null,8,["sourceX","sourceY","targetX","targetY","label"])]),default:T(()=>[C(V(NQe),{"pattern-color":"#aaa",gap:16}),C(V(tme),{position:"right",style:{display:"none"}},{default:T(()=>[te("div",DTe,[te("div",null,[GTe,ws(te("input",{id:"label","onUpdate:modelValue":ut[0]||(ut[0]=Ai=>Ft(g)?g.value=Ai:g=Ai)},null,512),[[lQe,V(g),void 0,{lazy:!0}]])]),te("button",{onClick:Je,class:"lableaniu"},"确定")])]),_:1}),C(V(g1e),{position:"top-left"},{default:T(()=>[C(V(qm),{title:"重置",onClick:oo},{default:T(()=>[C(T9,{name:"reset"})]),_:1}),C(V(qm),{title:"背景切换",onClick:oh},{default:T(()=>[i.value?(ce(),ft(T9,{key:0,name:"sun"})):(ce(),ft(T9,{key:1,name:"moon"}))]),_:1}),C(V(qm),{title:"保存",onClick:yo},{default:T(()=>[C(cn,{color:V(b)},{default:T(()=>[C(V(rQe))]),_:1},8,["color"])]),_:1}),C(V(qm),{title:"删除节点",onClick:ut[1]||(ut[1]=Ai=>wi())},{default:T(()=>[C(cn,{color:V(b)},{default:T(()=>[C(V(aQe))]),_:1},8,["color"])]),_:1}),C(V(qm),{title:"删除线",onClick:ut[2]||(ut[2]=Ai=>js())},{default:T(()=>[C(cn,{color:V(b)},{default:T(()=>[C(V(dQe))]),_:1},8,["color"])]),_:1}),C(V(qm),{title:"清空全部",onClick:ut[3]||(ut[3]=Ai=>rl())},{default:T(()=>[C(cn,{color:V(b)},{default:T(()=>[C(V(cQe))]),_:1},8,["color"])]),_:1})]),_:1}),C(V(gs),{modelValue:Te.value,"onUpdate:modelValue":ut[6]||(ut[6]=Ai=>Te.value=Ai),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",width:"400",class:"dialog_class bgcolor colortext tianjia sel"},{header:T(({titleId:Ai,titleClass:Li})=>[te("div",ETe,[te("h4",{id:Ai,class:Mi(Li)},"修改名称",10,vTe)])]),footer:T(()=>[te("div",JTe,[C(V(Lt),{onClick:ut[5]||(ut[5]=Ai=>Te.value=!1)},{default:T(()=>[it("取 消")]),_:1}),C(V(Lt),{type:"primary",onClick:Je},{default:T(()=>[it("确 定")]),_:1})])]),default:T(()=>[te("div",xTe,[C(ja,{model:xe.value,"label-width":"100px",class:"demo-ruleForm"},{default:T(()=>[C(ei,{label:"新名称:",prop:"name"},{default:T(()=>[C($i,{modelValue:xe.value.name,"onUpdate:modelValue":ut[4]||(ut[4]=Ai=>xe.value.name=Ai),placeholder:"请输入名称"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(yt),"onUpdate:modelValue":ut[10]||(ut[10]=Ai=>Ft(yt)?yt.value=Ai:yt=Ai),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",width:"500",class:"dialog_style bgcolor colortext tianjia sel"},{header:T(({titleId:Ai,titleClass:Li})=>[te("div",XTe,[te("h4",{id:Ai,class:Mi(Li)},"数据流",10,YTe)])]),footer:T(()=>[te("div",OTe,[C(V(Lt),{onClick:ut[8]||(ut[8]=Ai=>Ft(yt)?yt.value=!1:yt=!1)},{default:T(()=>[it("取 消")]),_:1}),C(V(Lt),{type:"primary",onClick:ut[9]||(ut[9]=Ai=>{Zo(),Ft(yt)?yt.value=!1:yt=!1})},{default:T(()=>[it("确 定")]),_:1})])]),default:T(()=>[te("div",zTe,[C(wd,null,{default:T(()=>[C(_i,{modelValue:V(Vi),"onUpdate:modelValue":ut[7]||(ut[7]=Ai=>Ft(Vi)?Vi.value=Ai:Vi=Ai),indeterminate:V(st),onChange:Fn},{default:T(()=>[it("全选")]),_:1},8,["modelValue","indeterminate"]),te("div",_Te,[C(yr,{data:V(fe),border:""},{default:T(()=>[C(hn,{type:"index",label:"","header-cell-style":{display:"none"}}),C(hn,{prop:"flag",width:"55"},{default:T(({row:Ai})=>[C(_i,{"false-label":0,"true-label":1,modelValue:Ai.flag,"onUpdate:modelValue":Li=>Ai.flag=Li,onChange:qi},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(hn,{prop:"data",label:""})]),_:1},8,["data"])])]),_:1})])]),_:1},8,["modelValue"])]),_:1},8,["nodes","edges","class","onContextmenu","onDragover","onDragleave"]),jTe],64)}}},PTe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAKdJREFUOE9jZKAQMBKj//+1IHmG3wwzGN6982V0PPAHWQ9BA6CadzD8ZyxgNFi7E91CvAYQ0gwyDKcBxGjGaQCxmrEaQIpmDAP+73dgYRASuowrwLDFGEoY/N/vwMEgJHSagZkhg1Fn3VFiohgjEP+fD1BgYGLaTKwhWGOBFENwRyORLsGfkIgwhHBSJmAIQQNAMQENk+UM797ZkpyZYFEJSiPomkFyAM83WhGVK0eFAAAAAElFTkSuQmCC",KTe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABCBJREFUaEPtWktoU1kY/pIxiwTagnFRsSnSYqUqNFlYbQULnVYQquITVLBToRBdKAR00w5WTDcthJnVBF2kXeiiPopOGaEvULDVbpqArZihQWykXZhFU0igj8T5zniusU2mtwnppHjP6j7OOf/3+M9/uA8dNnnTbXL8WEVgZ3Ov9SfAmovElgHvh3snvYnYviOw0/70lj6OtlwELzHF4mj7cPfEbXmuENh1tde6vKwfbz23F021pTnJwTM0BefDCcRiMZt0QiFQ2tz7S1yv90y5j+ckeAmq1P4MulisaereyS5e0whstF2aAxut+Mp4mgOaAxkqoKVQhgJmPFxzIGMJM5zgx3JgwDuLft+M0Oxg2TacrrIo+k0G5+AZCijnBUYDyi0FOFJRiDyTIUOdUw9flwM3u8fxeHRazHagbBseOKqVmV/7P+Oia2RVpCKzCe4r+1FeVJAVEusiYHX8hXyjATroEAxF4HUdVdRNJHDfUY1PoQh+73uPT6Eo8k0GvHTWZcUJ1QQkwHprIfKMBjwZnUbruX1oqi0RyiYSkM8Q4cgiDrcOYD6ypPQlsRvdXsxHFnGq2gKmJR+a9qTpkGoCMn0Imi7wPDGNkhEgMfsfYxjwzeJUlQWdjTbc6XmLruEAOhptCEcX4OyZwAPHIRwoM6eVYqoJ1LQMirT5s7UGRVtNsDmei4AyjVIRuNE9Ltwi2c5GKy64RhCOLgpCVJ1CSAJv/CF4hgPIN27B9Ybd2GE2geOPVGwHnV95fKaqGBdcr9Z+IksEx8BsA74ZkRpUktUoFQEGIDAC+PXsPpx3vcJ8dGkVgTzTFhxzvhDX3/g/i3XW11KD864RlFvycbm2BA3t/96XxySuioC0PZnHBOa2VyYlwHw/3DIohnU0WnG6qlioOOYP4UV7naho0oF+74xILa4fKQbFmZyew6BvFtcaduPx6Ee8C4bRcckGu3tM9FWVQjJ9uNjqK7YLQNwP2nsmlAozEZxTyiiV4b7QNRQQabfDbBRpwpKaisCj0Y8C6LjrqEKA5RdxnQDLNcI09AxPCQysbizjaxJ42V6nqEjVCIKNFUauA4KLI550HyB495VKpcokEpBKM98ry8xiPNPx3XQYc9EFQZoFg3FYilmenT1vRUrSEY5bkwBZPvq6ebGKJDbWeSrM3XaPpQC/9b1XbjMwr9VXFIrgsjENJoNhsR7YSIj3ec57/b5ZAZrgpFgyDuOzz2t/CE0/lwhR1iSgvRdKq7qrH6Q5oF6r7PTUHMiOrupn1RxQr1V2emoOZEdX9bNqDqjXKjs9NQeyo6v6WVM68O0z67c3D+qn3ZiefLjhS4Gkn1kJocT+tO2fJ5VbGwMnzShx3A7cPaF8jF/1q8Gu5l5rLEd/NdAD3r//61eDNDX5X4dt+r9VvgA4S3VeaoBRVAAAAABJRU5ErkJggg==",qTe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7lJREFUaEPtWk1IG1EQHlMVEjAe4kFRi0TU/oHrpVYLpqg5CFIRwYM9aA7S1EOFQHtJQIX04iHQk6KH1EM9WGywWgqNCh6qNT0kQi1tSkSqUg/mYIQItW7KjL7tRmO6zS4hwj6QZPfNzJvvm+/NI+5mwSUfWZc8fzgHoKzXw10B4DIR2DFAYHO8PSDOLQ5AmXVmQBODwUxMnuXEx2Bwc6xtiF0LACr6PNzxscbv6LwJlsbyjMTgXgiB89U68DxfwyohACjv9fTENBp3aPR+RibPkiq3voEsnreExttf4D0VQLrLpVYg3YyfXU+tgFoBmQyoEpJJoGx3tQKyKZQZQK2ATALJ/SB6BHm6nAtD4TyORDaSKrAdjsID13LSXHuajGBpNJKNc+ozeNd26fv1Uj2MWm+f88Wk3Isb9Bc5TfBGST5gnI66UrJfDYbh+dw3WA3u0bVelwPm6kLob62CYoOO7kkGYLLPJwXwuLWKAuNAWwSdp8uGg+hvCLha4tjbCUehy7VMNjhKDDrYP/xFtsUGLby134P3a7vwdMJ/ynw25GtzBXvxbxRJAMSZ46IMzHB3jcAWs/kY3KNqIfN6bQ6xiMAQIBtigFidO5UFNDW98gNqKwsIkHXER1VE1peczfSJa2M1OuquCrEUB4CsTa9skZyKC7TgnFqnpCZt9bQoA4jfh7u5uGTERD2Z8MPrlS26hZISy0ZspzgAxu6k7S7JgVULr2srDQSOSWPWYQLUfaKBbHe5PsBO+FCYRiIQDNsjkveAVAl5A7tgHfVRuWftJnJDOWEyTEZSAaAv+qGs0EcMBAGgfBUHwHSbiFEE5Xe1xEnI0XlL6FxJO8Sp9LByDAhrDIpJCFthje0d5WHmCiFPe9LXI4dHMB84aalMRg12LyWCoObsJqElItt6bS75Y6dyL2yApckozLP9hbEUByCWxtKzZuokBCB6BA0OL7VI3NjI+pftfdI33sOBtggUbRHUS1s9PBr5FNdmmaTwk8VJWULsUMN+bK4uoiSwa/iC4YQH18MRH3zdjlBbxY3LksFDyrv2UwCCmxyTM3NFlDw7xJhs8FzB+f7Wa4Li/ltC/9JqKvOM+Yt82UmN1Tk7MgJAKqCZjwpADntK+KoVUIJFOTHUCshhTwlftQJKsCgnhloBOewp4atWQAkW5cS4sAJ/H7NK/9UkJ5FUfN2LIfqnQcLHrBjQaJ0ZhBgMpBI8bT4xGNoYaxMexp971aCi18PxGfqqgQYg8D3ZqwZpY1HBhS792yp/AKlYS16p/QUbAAAAAElFTkSuQmCC",$Te="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAACBCAYAAADnoNlQAAAAAXNSR0IArs4c6QAACrhJREFUeF7tnUtslFUUx88AFZmkDymJD1ozaJBAfLSLYqsJFIWFplEj6gIxpSurGC0kuKFKiSUxkJRHBLrroMaFiDHa4KIg1ESgdTHVIEgJMrHFR9JiKUkrtNMxZ+Az02/u65s7c+fO1/Pt4LuPc//n951zXzABoGfGKxCY8QqQAEAQEAQEATEABAFBQBAQA0AQEARaEDSeDpGCFinQXhNN1xr11UFTpARu3NgAs2Y/DwC16XZI9bKoQDyOIJyEqdh28ACFGgRNkRBMxE4AxEO1iwvhhUdLoDg4J4ujoabTUaC7fxROXrwO0as3AeLQAgeqtqu0I4fgNgCh+QWhjtcWAUJAj90KtBz9A7Yf/QNgKrYJDlbvkVkrh2Bjbzg0f279iXeWQKh0rqw9em+JApuODMCeE38DxOOVcGB5n8gsMQRv9lZAIBAJrw9BffUCS4ZHZqgoMDIeg0Xv/wwjY5NhOLC8QQOCnpaSYMG2f3ZVqvRLZSxT4HY0GIH9VXelD8HG3nDt4qJEKqAn/xQI9wxDwyeXAWKTi0SrBXE6IAjyz/NJFndfvA61ey8QBHntRU3jCQJNAf1QnSDwgxc1x0AQaAroh+oEgR+8qDkGgkBTQD9UJwj84EXNMRAEmgL6oTpB4Acvao6BINAU0A/VCQI/eFFzDASBpoB+qE4Q+MGLmmMgCDQF9EN1gsAPXtQcA0GgKaAfqhMEfvCi5hgIAk0B/VCdIPCDFzXHQBBoCuiH6gSBH7yoOQaCQFNAP1QnCPzgRc0xEASaAvqhOkHgBy9qjoEg0BTQD9UJAj94UXMMBIGmgH6oThD4wYuaYyAINAX0Q3WCwA9e1BwDQaApoB+qEwR+8KLmGKyFYHB4TDi0stKg5tCpuqOAtRCs3HoMRCA0v/IwNDz1AHkyAwpYCcGZ/iF4te2UcHiPP7QAPtv8RAYkoCashODdQxE4cnpA6p2+tmegMFggLUcFxApYCYEsFThD2llfCWtrysnHmgpYB8H5gWtQt6NbaViUEpRkkhayDoIPPj8L4e9+m2b40vIiKJsfhK6f/pr290XBAvi+dTWlBKmb8ywd1LV2w/nBa9OsfrGmHJaVF0Hr57+kjOazzU/C4w+Vpi1DT/8wnBu8BucGbvVZPK8AFi4IwrKyYuV2r49NwLXxiRQb3MtYLPfFmYH/+8L3L9WUw0LJctdtI3a0rLzYk40igayKBFeGx2DF1mMp9u6sr0gMmJUmcJmIy0WvD048O47/lgJccjvopOaXH4Y1FfcIm99yKAJfuiayWLd7x+pEPXT+3s4L0OGKcPiu/Y0qWPPYvcz2992uMzqWCphTAft5u26J1tzIKgjQMbgycD/fNK9MQFCx+ShcH5tMSQmRtmeUGUDQthzqg57+IeU679QtSQjNe1gQYNlL7c8lAFjXdioRbViPM7bkd2gj1pFtmLmBxSWzLKqwbLAKgnVtPwCGvuQH877j5MaDvSnzAiyrmhLSEdexRQQCDwKMBK2Hz0JX3/S5jNNm8ticv8NUiACIvn4ejNgegrC0rFgZcCxoDQS8VIChuL1xeWJQHd9dYs4LVFOC6tKTpyAPNh4EuHwV7Xe4Vzc6kCanB68RwRoIeKkgeXuYt3xMzr88B+7t/BX2dfYzXxcG58Da6vsTky0MwUdO/w5XhsdTyvKWpDwIZJ+jG17ZJhmOc2HpvESUOD84ym3e69LZGghUQz1rXiBLCbwog/Xwa8XJH4ZS50GRMTWxhGbtUqpAgKCh09dU3JoEDg6NQXGwANBh+Ii2yrEuRsPq22WxfFffn7Dl40jKHMkZg2qKtCYdoOiVm79NIZuVM3mCi3I2LwrgV/X9jjXML4rnFNbBlQyCpWVFiXlLMmjuTkVRAFdHa2vuT7Gz4/glaD2cumzGgl6igRWRACdOje29KYNMng84L3nzAtGgWXsP2B5PXKcv1hwC9yx21U//mR8RBAgaAiA7+uZFOBGoaCevHusD4uUPKyDgfQUsJ2HORuewHpyNs8R+sPFrZnlc9omcg+t09zKNBZsIAhloaJhoq5z1ISQPRtQ3a/nJ1M2GXz7h0cxzKq88K1SLoJFN3FjvWZNQkSNwr0D28CIh1kNQMdXxHl5kxPKijajk9nIeCUQTIt5XOjo+wVxHs75SlbsJMiclv88GBLyVEfYruzwjqqt6yppzCGTLIi8OwrLu2XumIfCaDlQiwYyHQHcDxw2Jm/5MpwNWjqZ0gF5I8yfxvNwdUI0I7i+Vt/z0kjNlfetCINKBtRpJtkcUSVX3CnKaDlh3B2SCy96z7hjwog1uFGHk0H10IUBQVzR3MTd+ZEs9USRVSUU49pxCwFu/r664R3qTGE8BedvA7i9ABFtn80rPBy5uaHQhwPZYh2dOP7wvWjSXyIvNItFWrsrSRhTm3SFUtgIRHbjgUTDeA8AtX96l1kxA4NVG2WGTyv6EA1nOIoFofat6i5gXClkh9PX2XjjGOdJFMXBPH28o4b0FBGzw6lhiP7+3fzjx53SOkrFd1ZAsiwaOjYXz5iQOt0T3IWS7jO5IljMIeOHPSxgThXl3CEVH1u04yTwdVJkTiO4zZiISoA24kkEb3RdnVOxzyuBhU+fWWuk2dc43i0SpQPVuAA5CtNPGagdv9yB86Yrc8PQDiRPHbMwJnDbxGPvdQ31e/D6trJc0kNN0IJrQqC5rcACieQHvjgF+bQgC676ATHkeoJmKBE7/eEz8weGznmxkHTfLxpNTCHh3B7zmUFkeFQGFx8sIowwG58IJbhIln+cnC5xpCJzUgJdT3RdY3Y5F+/Ci6nuuOxGqAGC5nMwJcMLFejDv4sTMy4NXxfEsgfVgW6IzfKyDtmBawYkgrgTwwVUA/jsHnCii42VtiGzggaM6RoxcOAk8NzA67WY0XijFa/h4I0pmn6yvnEAgM4rem1WAIDCrt5W9EQRWusWsUQSBWb2t7I0gsNItZo0iCMzqbWVvBIGVbjFrFEFgVm8reyMIrHSLWaMIArN6W9kbQWClW8waRRCY1dvK3ggCK91i1iiCwKzeVvZGEFjpFrNGEQRm9bayN4LASreYNYogMKu3lb0RBFa6xaxRBIFZva3sjSCw0i1mjSIIzOptZW8EgZVuMWsUQWBWbyt7IwisdItZowgCs3pb2RtBYKVbzBpFEJjV28reCAIr3WLWKILArN5W9kYQWOkWs0YRBGb1trI3gsBKt5g1iiAwq7eVvREEVrrFrFEZgyBUemf95e2PmLWeesuIAntP/A1NRwYACubcBXsqR3iNBoS9vXGmCWbN3v3PrkoomTc7I4ZRI+YUaPg0CuEzQ32wv0r4v32LIWiKlMDE5OWmVXeX7F5bbs566klbgejVm7Do/Z8BpmKb4GD1HlGDYgiw5ps9LRCYtS28PgT11bd+648euxUYGY9B5YfnIDr0bxSmYqugvSaqBwHW3tgbBgjUtzx7XwKE0Pw77FZhBluHk8ENn0YhOnxjBGKTlTIAUCp5JHAEfevHFojDNvxj7eLCGSyzvUPvuzIOI/jr8/F4N0zFNqgA4A0CLN0UCcHNiVqA+AsAgRJ75ZiJlsVHAAJRmBX4Cj6qOulFAfVI4KVVKptXChAEeeWu7BhLEGRH17xqlSDIK3dlx1iCIDu65lWrBEFeuSs7xhIE2dE1r1r9D64pOQmEJl5AAAAAAElFTkSuQmCC",eBe=""+new URL("catia-3b70cd85.png",import.meta.url).href,tBe=""+new URL("csh-8ce19601.png",import.meta.url).href,iBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABndJREFUaEPtmmtMW+cZx3/H+G6Db1wNFFNCIWENJNUoLBkhoVW0LWmldm3TJs2I2n1I1WqJpn6a1JCqn7ax0WzKokVtsyhVNxZN6pRqVasAQZ0iUqUlI8taugAFzN3GBtvHl2OfyUgoZKXDl6XQjfPVep73/3v+7/v4eXWOwNf8Eb7m+vkiwA//WoNKVbMmwSKRXk5v612q7TYAx0t9x4405rRUF+nXpP4hV4jj74y1DL1SfXxR4C2A567UnHm69OMf1GWvSfGLol7tnOTI+eEtnKxdcGIpQHPnkco3Gssz1zTApc/maWz75BAna8+sA6yGVesOrEbVl6657sD/mQMyw++fJKu8HrNj63+F/SvfQp//pZWpK+0U7j6KvW5f2hAJA4iRCDqVKu0FJdHL9V89ihTwkvutgxQ/eBgxEOHau93UP7o76fwJAYy43TS/8TpHm5rYU10DQnpD69Cls3i6TyKGZQZ9W+gf1GEuMfNC608IBUWiYhDfvBdJgPm5OSyCkoLNm5eFSwhARuaFt96iZ3CAF3c18XhdfdKVWhoQCAQ5d/wYnwfuRfJOoBjsRmtxElWAEJIJe0KEy8opqaiixO6gccdOTBs2pA4Qj7zhdPLsubNI4TBHdzbx5PbtKUFc//swb/7uKgaDHb1Bh/jJ+6hjH7CpYReWAgfW7HwcVd9Ao9EiJOB0Qg4sKv1Dz2VaL3YQC0s8v7OR5h0Nt81//4nIHwhy4tV38E8qyS65B2U0gl8S+Mff2vnpywfI3VCRUkGSAohvpRfb2+nq70cOR3imYTuHmx5csVJ91wf5/evdGHNqMJvMqNQKPNNTOKdu8tguPfV7v4ewzF0qEaKkAOIJJzyzPP3aaTw+kagUZl/t/fx4z14yvsTuCxcu09nhwp5Xgt6oh+A8UZWJ/n9e5YmnHNhtJkrLyxPRmt4ZWBr90cAAz795jrAUJRaVuDc/n7bmZizGW3eHuTkfZ35zgSGnimLHJjKkEDqzjemZaUZHbrKnUUfD3h1oM9QoNZqvFiC+2unODk51dSHEosQkiRyjkYMNjTy1/dtMTLj55SvnMdgqsGTnowi4kfUW5rwiQ8NXefiRcqoqi3E4HAiCImXx8cCkt9DiajJw7I/tXOjtBTkGsRjIMht8mZQKd5NVUIFBiKDUGAmjYGx8DCk6wuH9Ndgry9HEQJ2VlZb4tADiwX5RZN+JNsY8XoRojKJpPZWZmzDnl6CTAoRUemKomZwYRY7McuCZLRQXWMm12xM6tMFgkJA/gD8s4g+FGXWOMelykTk+xq7Hn0BnsaTuwGLpnK4Znm39NdaJAqrKarFZbYT800RQ4nLN4B6/yaDnQ2Yz3AuHOMeWjTkzixydBlNGBn69nkBQJN5m9dMuRgWZSa8XX0hEnp3DEhaZseWQZ7WxuaycsiI7u+8upbSubqGFp7yFFgHefvsylzomuctRhdFoJBoN4/f5GRnuY9D9EQMxJ5ISBGXGQruVFRno3V5iGhVRUxaCLKNSKcmZcmG5pxKDQUdJcRF6pRqHKoOq+7ZSmJePTqNZ0q5vjTIpA8S7zG9P/JnZQAFFhWWAhFKpwjvnY2y4j/HcQURlDJ1ai1oB+VYrSiBbFDEU2rHnF6CJxci3WMkxmzBr1GhMpiX/BonNWykAyAwNTnDq1GWs5lJ0RgOyFEKtNTEzM8On/R8iyPPUbVTx8KHHsFosaLXa2wbAxKQtd77jrSP+pOHA+PgMrT/vonJjPZmZOoLBEC7XLFOTU8z7brDvyVryrJkU2XPRmy1pd5mVEiTlgN/r4We/uEjFxgZMJi0RScHI0CQ3rnWzaYuWA/u/gyRFsNlsK44XKwlb/vc0Hei4eAX3rBFHoY2xKT0DA2N82t/DA9uMPPBQE8hgMplS05ZiVFIO/Ol8D1u/WU1Xxyh9fZ+h00+x/+A2NEQpLHGgSWMkSFF/cm30vfPv4vSZGR64zn33l9LQUItCUGAwGlKcJVOVfSsuKQe8Hg8+vx9CIcx5eQudRa/Xr5r4pEcJ9/g46iwjnqlpsu2FaNWapR0t/XKmkCEpB1LIf8dD1gHueIlXWGDdgXUH0qzA//QWqmn7/l0f/2hnXpo1urPhZ3pcHDo7sMxrVsDx0rWWlu8WHnNY1XdWRYrZe50ibZ0Tx4derm5ZTPHFu8ZzV+KfGazNTw2gd/EF95cDpFid1QpL/ba3Wor/bd1/AeGmpF4S5tr2AAAAAElFTkSuQmCC",nBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAAXNSR0IArs4c6QAABCpJREFUaEPtmUtoE0EYx7+ZVPvQ6BYPPkBsQVoQxGRTELyYnrz0oSehB2sv7U0UikeTipcqhSqCtCBWkRZPGtqLekh68AHNbLcoQkFstJK0oBjb2EbN7thvSULS3TxqmzJFB0I2yc7u/zffN99jQ2CLDyKSfofDUUMp9SiK0lGsLqEAZFmeIYTUaJpWq6pqqBgIYQBkWfYQQrwomnPeoyiKcVxoCAHgcDjcNpvNnyE2mrRCdNMBUAyl9DQh5BDn3AEAEiFESgnhnIcIIegeUc75lK7rAUrpPXSdTLHFWiHLAkkzZl2o0Aqkftc0rYdS6l4Rfq/YOQXOK8oKaQCXy3UaAB43Nzev+f7BYBAikQjOCwAArrqPc67iSlNKQzabzXAFTdMkznnq5aCUtiatZHnPYqyQBpBl+TyuHor5mzE6OgqDg4MQDofRPXATDuW7TjJk+le7zqo5Ba2wYQB443A4bECMjY3hR1XTtDO5wqHT6RyilLYXWqxCVthQgJQYBOnq6jLcasVl+nVdv5kJkrJ2IfHJ3/NaoSQAKWH53MrtdkvxeFxKJBJG0NB1Hd+N46RbGXsFvyOEXGSMPbECLimAlVuhaxW58lmnYZSzcseSA2S61cjICMRisTXrT0a5IcaYqUbaNIA1q86Y4PV6MTD8B1jPIq5r7r9pAcaYkZhEGJgYGWOBlQr1PkYxHCldlpsYhbe0tIBeni4iReAwNNCfUaypqlVVNeorS4BAIADd3d3wreGKMMJRSNliCOzTDxAg3bFZAmC8vnH7Lnw/ekEogG3Radj5/hG6U1q3JUBfXx88GHsFsfpzQgGUz7+GqtlnUcZYdd49gO7zXI1A7PBZoQAqwuNQGR5XGWPOvABYSb74XAbLB08JBVA144PtX9RxRVHceQGwK/tA6iB+4KRQAPbp+1C2+DGrpLDcAw0NDfCjthV+7TkmFMCud4NAf0SyHrmYAPx+PzQ2NsJifTsk7IeEApAmewES8Y7MdtUEMDw8DG1tbbBwpBO0qn3CABAtDtLkdWx2GoPBID48MIYJYGBgwGgHo87LwG0VwgDYlubAcCFKnRMTE7lLCY/HA95rvQaASCMjC6fLCEsLdHZ2wp2HPlg40iWSftj+dQp2zPiysrAlQFNTEzwefytcFrZKYpYALpcLXoYSsFTbKpQFKmefQvnc66wkZglQV1cHU7H9oiYxH2MMH4GmhykK2e12mJdOwM+9x4WygFUSs7QAfilwErukKEp/XguIClAdvIrSzqx+QmdyITxLtCSGbeTuN7dMWTinC22FVjJnKYGN/FZoJXMC/LbXCJfEsJWs/PQ0pChK7erQaNoDWMD9kuqFCqFly/PYB5iSWNYewA8rjYyXc/5Xf/KVmphS2p9ZhZpcqNQCSnV9If7oXg/cf4D1rN5GzN3yFvgDeHmLUMPmZkgAAAAASUVORK5CYII=",sBe=""+new URL("flight-80532c16.png",import.meta.url).href,oBe=""+new URL("fsi-99d432b4.png",import.meta.url).href,lBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABvpJREFUaEPtWT9sG1Uc/p5baDefO5QFGjcSE4rqbEgFxREbUNVhrFTZ2VCXOBJKAovtpSQpUpyhMNYdKGOdodlQbVE2pDiULQNOO8FydgdoqeqHv/fuOXfJ/U2CUKU86eTk3fn8fb/v+/3e794JvOZDvOb4cULg/1bwRAGPAmXbwmnkkEIOElmkUunR+cGgD4EuBujgm0zruJQ7HgW+sPM4JSoAcgAsDzgpdyHE2AHAEk1IuYFbmcZRyByNwIJdgBBrALIAepBye0iiidNo4S90Uc/0POC+snMYKHUKgJhyyHYxkLXDEjkcgSU7CynuAMgr4EKu4znqBwCHhZZ2O4sCpFKOAehCyGksZ7pJFElOQNvlvoqekLXEwP3QLdlVRUSiB8gaVjP1uCSSEVh4VoQY0LNdnJIzuJnpxP2hyOu0qg+VGlJUsZquRX4HSLCQucEfQuo4YFC1LfytSOQg5XwcJeIpoKPz+yF8WnASNX6lcZPQgQotufEILPYInp6fjJlkTO5KuVzO93o9NBoNJuYMgHiW0wHbUgXihZwMKw7RBBb6FQhZhZCzWI6s2awmd/L5fH5ubg65XA4kwOPu3bskQiXo7ehKs2SXVKWLsFI4AWMdKdtYzTCqQYOL11w+n69evXoVhUJBge52Nc7hPDqdjpqbn5/nfDwiiz1bqbZiTQf9cDiBBbsBIYoQ8mKAdRTw8fHx8vXr161SqQTLstBqtdRnNptVoNvtNsbGxhSxZrOJ3d1d3L59u7uzs7M+tGZwyVywqxCCDgj6/YgqRO+zFfCPfuHcuXNrV65cyZbLZQWW4Aic1uEnbWOAUwH+X6lU1DleS6Kbm5skQlsdTPQlO69Ka4iNghXQbcL9AO9XmaT1eh30OsEQoFGAQDl4jjbidW6SnKMaJE1L8bxDYBZcod0tiLKRaGIlPXugcaxnesEEFu06IOYC5GvgTLqIF30VzWq1OiKyvb2tokzrrK+v49KlSwoso82Df1MhknbyweBqYMHeVb8p5TRuOYvkYm8LEsCqNTkiYArLQE6GEOg9hITl+eJeCBr4/NcinjwCfvwSJMJEXVtbU+AInMSKxaJShjlAIryGhYjnOc/B63ioxF6ya9oysEYkFu3mcG4Kq1ZGfcGAl+gQWxgBGwPZHkaCi9H+oQmkL0CR4PHz8qjikAhBbWxseHKAEacKZpDg5OSkmms2m8yBWZiWwpAQKKtCsmIJD/h/5DSt5k9Ar4Y2pGqs6PeDBC4vFTFxzTtPNXYeqDnmg9tKtAxtZcoqz9u2jZmZGWVBZ43QPneTAFoQqv1uALI0bMU7cMDzUn8Ce/U/mAAV4PjzMXAmDVz4AOg/0YQe3ACePhqVUTdw2oh2otU4aCVaqtVqaQXMcDd3Zm4f+KMR+Oz7Is5P6FvTQrSTOUjElR+sNkxeLnJGAdqG1cjkjEcBPxI+4IMJGAsN5DpuZcq+FqICBMqD0Sf4x/f03xz8/4dPFRHaZWpqSn2yStE6ruRV1ajT6XgVcJN4hTJeourXE4UnsV/91Tdu4ONvdQ6QAH3/7id7PDlHAps3FAFWHqpA4BxUg9bhEaqAT+T2T4URYDdoYcW6GKgAbfLWhM4BjqePgHccBUiCST3MESZpOp1WixnbiK0t3hqjZq9Wq+1VoRig3ZdEL2QvZMZHugZmf9I5QBLP+5oIh7EV1XEsZBQgCbMK85OViQq4OlXvahuDTDCB8D6kgYlrRRVtowBJPHuirWSS+JfvPAowB/r9vrISCdBWrEC6ywYbO798C6URTEAnMh9kgtrZEjLjFbz9flYRMflgbEV1HAVoIZZPNnZclZnQjm24NnBxmPdt5o6kAL+8186GPdpVcTZTxPn3svjoayhb/fFYtRcmB5xmTQEnARJygJt22rt/FAO4uST8eSBaBXMfPolVcTZdxOUlTYLl9M6HIwuxbNIqTg9E4FzhDw08HgG3CvF2CTSR9AVN5Ld7KsnpdefprM0uI9Yjpd74sqKewaOfibUKbGktpBI91HPnjoQ4CJwRj7epa9qIgdwOaCZHJosmwEu5p/lK7ddwGzHJ9h+jTZs0Y9uakX9TPIRQe0MzWM2EfjceAf662SU45B5mLAJu8Ny2XPbthD23ik/gvybh7j5jgiekZAR0Uu9tqSfYwwxVQD9l6UVMyPkY+08Jc2D/r6tocTtEsD/W+/un0IqqGJ7bKLugBCHm9IaubCOFUqJ7HEoBNwqdF2Z/HzBvXbh6v9z3goOA31BVKYdUagqQZt+UhSFR1N0QklvIzwu0FUBrURHvKya9jcg597x+m5MaLn4Rm7dRyX88BLyq5J3XSFkIF2i+vOBLvhQ6eI5Oorc5ISyOn0BUyI75/AmBYw5o4tudKJA4ZMf8hX8BYYbS8rulJLAAAAAASUVORK5CYII=",rBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwlJREFUaEPtmL1uGkEQx/8nFECyC9yBEumSMhQJKVCODj+ByRMkFlRuAg1OF6cLFXbjChTeIPAEuVSAKCApQnuNObojUiwFLEQ8Fjh8HOwuB5c7hW2Q0Nzs/GZmZ2ZXgsuX5HL78f8BKIoSB/B6G5GTJKlSrVbLIrqFIxCLxZrBYDASDAZF9mHKdrtd6Lqu1Wq1J0zhKQFhAEVRtGQyKadSKZF9mLKFQgHFYnEHwPSUUyPwGAAdzlVLu5VRnQrwBsAnBsBXgnQywHsAzAqwA1gSZqtViFJoFwFmCVshYFsEJp04FApZsXfhW13X0el0WvV6/YWI4kkn5k6haDQa8Xg8CZFNeGWHw2G50Wi0eOVJThhARLkdsusBpA1qfJtf5wfULIWWOMDpzzwwSgvtwi+sIhc45BdfnkKBcWfOAJj1StbQjsJeOfHUK7IPU7bcHqDSvtGQCzCb6bSyVRFoAiAQ8shfiKyhnSh++eSln2mUiMBl/Tcu6/2NApDxXxYgXARADlyEcDBAHsCFSdgJ4u04jQ6RNVQbUojuxc8ZKUjnszw5A9SYVlUWUkYgx8gaZzYA0N1kVakmZxNAiedOTEPe2W3T+3D364wUoqJCNjEBZo2nmLoIYNF4FwFQvhv3aTN9mrKGlgj75KPwA5Eyz5St/LhBuT3g7QPcKbS48WmPegPrAYBpsLnA6AK5A54xxQIA7fxuS8PcR+5hziLAmv7d4GfrA4zy8QiArVxo7hpTRuW50FgAOI834d2LwLe/QYcC6P8CBtctKa2aXSnJYdOv1hYA8nENj57JeMjq9IJ8V9+Aq++alFbnx2l6cCMA+r831uoagInxNNJPp5YrAJYZT0FwPAAZTy8lr+Y8P8lLlXcWWkjk0fbPAE2ZnzlO0DHPMPcvAKgKUbenck1GLnupoDPR4xmnZyBsiABVG/PrrElYnApgfp11GcA8BKXWpA/co6wXAf++DN8exzkTEOlfUzc268SUTtTISmba1gEgZduahUpSRqUSyb2EAbg12yS4A7DJ0Uu3+QMH7MBAibiTPwAAAABJRU5ErkJggg==",aBe=""+new URL("gc3-c7873d2e.png",import.meta.url).href,dBe=""+new URL("mob-90497040.png",import.meta.url).href,cBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA4CAYAAABHRFAgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAkDSURBVHgB7VpLbJRVFD53Cp228pgxuhBMGHCh6MISRU2IMqjoBtMiuNAEaTcuWNiSSMuChCFB0sKiZYOJm05DogtA2shGJRQwLggqZQHiho6JhYUkM6VAX3Su57v3///53zNTZzKY8CWdx33999xz7jnfOVOix3iM/w0ElYvObIwWU6vPSjmK0Cj1xDP0iKF8IbtyV3hWc0BvhmbkOuqP5+gRwqKyRn+RTZoCJtfUObpGb+UpNy0ThpbT9AghXMi92QTledOSTXGOhtgcLQFHPlviGNp+4gGlf5vDx2Zl0vWUVJ8jLHCNTThYSAgoBUwzpow6Sn38mos1cEOj18rRrhARLTx2J5rU9zx10J7sJjoSH6UaIRLYk6cUv8aw+URcDcOmE2yS1PriYs/wjWus80o45uGQIqKPagh/x7Mn28YbG8DHKx1LqPmZOjbFWRq+Nkd9HzSqzV+9Pc/3cF4Nx3cImcnm6egvM5SIRWjnq/WUm5K0undSrynlbjoc76cawF/I7twYvybaXqmngY8aHV0QbPeZaTp/86GjHYKe/rRJHYgdB85OU+rsDKl7PStX18Lzes0VWuQ9Y9P73406uqCpTV/ftwkor7KGLph9647e8wjfsSGq7yvMtp46qQbwCinUnUI48HRBQKM9Q4K10htvZhNMqs+sZHRsPf7AOZflSzxpPEZEVlEN4BVyEYcKlhH3CUINXVdhgS6whqAtBSE3OcICPjdymzEPd9ecA+2ad5dEfpBqAK+Qh9jVC2YtrC0Itfv7adVsmSHM0y/upfiuSTmsx2qhOnmucTAZ42DOUw3gH0KmKWfeNQ9EZIyCAP5qgxVPJZvyND1CcRIkoF6MkBAI6NT6ko5/q+LGUClbg5djIsBoXqHHbjSpn2DWFGVigbVrAK+Q86T4KTxi3wcN1LdFhxAQAMtLdk94g3vXxH7SRIBaDLKQerdBhSCDTCR47Zp4Vy+tE5qOwSN2biiEEJje/s1R447KTo6lzGklHEmOtc4alEmMQ9hJxAtnh1g7fM3mtNwAzzUpoD9y/zW2esmAyVn5wf2syY4NzliZ4uB+AMHdBxAQ2rMDTKn9xJTxNA41dqfVle3kA4IFhAmZ4f2k6fDyA7RA+DOermwKD4f2xrqXKjNF7ENIgCma9A2hQXFU1jrak0ztQPeWF/iuonVai7zR3uXt1jP2ZDlDUYdZ4k4X7p39s5Am6qcp2skxLwHzjPG1TP86pwSFIH1bCnfVhJsNwUxxAIUQkndqQujqwgtP1dHJT5ZQENpP3afL4w+RMCDNO08VExIxb2+2nc1kBOZmB4QY/H2WPahTyEEeZ6d0jnlCHvDEViP5Xv9sHYVhxTI2tnGMj7xMC0RwqgXTELJdx0sO8jAXZBJEvk5k9Pa8ufs0j9tqOKVRRcwlh6PuiQFVWbAglmshgrcAvPC0cQhSFkouWAfrdedG1NXSzisQ4ZWBnnia7KWMPeyUhGY0gy4No/yhN5O/ynwW1HDIqAdhA0kwAqoTbbyxDGmem1RCPBWuyZXmIUDzXbnT/I55MbWeahdJTtI38qdNQWuUV8hK8YlNiTEK84amB7XlpN1vNdCNf+Zp+I85x9D1K+vo4OamgiA+mJyR9PkZ3Mt5q21pVKi5z7OWv7pkePo8W90RpRTvlqhcqBDDjkm6BAWlE9wOM9dhaIRbE7tei9KuN3RYGb+bp8t/P2RhZ2nX6w18H0uvow1dn6VzN+fUnNa19UpQoPfiFB0fnQ3NV8sXshR0ZdOghbhvpz5eYm2oGG5N5tVBQLMrlkZKmgNNv5eeVO8sTj+Hqd3uMZUXUmtRkfiDmxvVqYfhFgt1fHSGhtiU9UY1IOj6lYtY49Gizun4lRnq/VlnSx7CQWHedaGQ4jTe4FCKCQjhtn17T5mbXUAAGh1is9b9M6Hr7FgXVQdiPH/A3V9ZIXWIUK7+6Jam0KHH2GH0XpzWwiEVQ7iakXHqjQn1ju8crdCPccUEhcYNJBWbsqG8CnoxRLQzwh1cFnIPYaLHLlnmNchllDbHAO080urPuN84lHfWLA40XcRTPFcdWp3TKVZWk02KduXwoO1sZhDGD5aAoHs9LgHdOKz6R7Fmz8Vp3yEIT9u/uWeafMadoFdWSF0CUWaGOwWv5zYzbGTIjJfaJItDaKYFDuu+u1gfBzo+qQ40R3XMtlxhpPKOB2xHqKJWBl9xn3DSJm7cMT4jrpWaVehxykLGbdYBoXtN7YJ+ojZ1yPtzRGXvZGFTGX5dzRTOU9ccnzArflReIizlBN/NmFuTFlAaDUDlNWnCr0TCWNZgFbdiVA6EJvSB0OUXX1ReSJABEHOUSBg7musd3NSKZyDuLlcfCD1OHYqVlZCOxS1rjR+fhEyp5/oUy6pBBkaQMcCdd7/ZwOS80UHrNLk2BI1EOkpaU+gCGEi5e60vmeCDHxvjmg3O7EA1yEACDx/48AnFRPxQCNyyLczMFNBvlEd3NAesxwnAD21LzQNIuC2kskLa3FhY+oRMAmasADNDAuw2MyTCuNfoZ0Bbbz+3OHBNiGc5JRcZqCxB1/kmilMJnDryyDBYaZIJRe+U100Yfwo4EJh9GPb99MCMvxmmhqvtfdXIQpLmvYDJFssZkSeCst2a9LIj3EEcVpgGAcV4mBAogGD0OJPn6uSTqL0wUYaDGdj2RElTsFH8QVjkkvCidk8ahvcHJg3G4yp7GqgOGVAFMDEGRgLaZXcYaEN1AGmYnWwXE8rMO1terHfUhYbZEsZNK3CXPc3tULVgFKiVp2VtQrBzN7WAABzT25xVwNMWqxzAnCGg6VhwGLinOKR9P05pIXXZM+U3v3pC2pyQTy+ci/KAJ7k8EqZBaB4FZvc8F0L/E6x6tA4Zia7VXrA2iNPWiXGc2/9C45935kOXscg91sE8lDd0TTdjteM5IT8KVedOmtBEPenbJ1TOtwpCtKwNXsLKSaVB6PWabVQGqqfJ4sjgZfyuDB10446VtSz4l+rqajIMgivskjpQS23/7r7vEDgaWy66YCGr53hKQXe2n7dQAkmXR7kOtOBfqWsrJLBXk/qQEZla/dfIYzxGDfAvraT+5THxLC8AAAAASUVORK5CYII=",hBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA7JJREFUaEPtWk1WGkEQ/rp5Lkw2eoMB41o9QcgFMswN9D0FkhWeQDyBZKdj3tOcoIdcQHMC3cfA3CBkkZ/NVCU90IgwDAOMMOY5G5/YU3xfVXXV19UKPPFHPHH8GCFgHajtHLCdRWIBcOufO7eD2B4QsKrNI8moZxG8wUSMuu/ax+b3PoHN92o7COQNWBy23LeNLJIovPtcA/EJEe2YSPQJbByoXZbyonVmZ3pfFCpNFkR7386dS+3kZwKLTrW5ImDV1Bp+wgJjLVXgAp3h6jLO/swEdHmVQl5BpAzeIGX26AXv+Q2nE+ecmQkUKs02AIuZPqXqfb0RhXytbYPpuOU6sWV8JgJWVVmSZZsJzfa5XUqbwDT25yIA8GXrrLT3WAQE48s31y6mnkLGQ88ExrjWOGihEbDKqiaF2AL4B62irqtHoeJdTJNeJPjYP3X8pRDYqDQ9BmwNmATlVyTWQi01xUNMju863lIIhE3tT7cnaC/qn4OfJeHRf69X5RaaQkkAJl2zlAgkBZdknY6c/CXbEOxNKtOZ7AMm/SbJCL0uswSSRCpzBKx9VZQSxVAgMjpEuPY/OtcL6cRddYoSMXy/dzoq7KsaZLRaJYnLwWolfgslIEZkAzEavmsfpiqno6TEgz5AtLOyAsT2gQGlWSh7CkJoUfiBBDU0sVdVVQxYngg9EYlRpantAU0qF6AocvDvTrth3yir0rjDTvASnt6kVlUVJcurKF3Vr0YAWq69HhWF1Agk3XTD6wplVYeQRzKgN3cR+Z6veFc6tXR3Nyk3aGPpBKyyKuVY7gY5qkUB7BNYpfWosrp0AnGR6x9sAL99ZuczmULjCPTAX2lJRYL2/NPu3GckBWeZCy3oQBOCB+O45dpjz8WppZCpQoEeibiOF8qBfVXMCVhxaRLkcD2c+2ZgEOd5YzM1AvlK8yas2fo8kKQP9BAMDwbMSHOS51MnoKuJ7BLotFwnHAZvVNUuU3wE/kmHa9M39DuTymbm90C+rC6FkFutM3snSW9JLYWSfNljrMkcAb0HAn0s7QnCSaRnIhDq8HLze1f2sgeB2PllPIj7Kca9LgLAdGj2UupyOiyRWj5LqcJaPedjdND9URJrZkIxyfTMETCGteyd9CVxfxcBOl8HLup0P9Hro3RRap14HsBpvzt3BNIGNK29/5eAuWYlpkO/11mn9c5jr+/OY2X0NWtYKqvNOhhHjw1kLvtDanXkTnjzQG1TRv/VQAK3gxVMOyLTl9pJIvXkCfwFZEdAbW+zlMwAAAAASUVORK5CYII=",uBe=""+new URL("w1-4cddb641.png",import.meta.url).href,mBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACnBJREFUaEPVmk1sXNUVx//33vcxH554HDt2TBJwiCF8tRhaQkVF5Vaoi67cqlRIlSBUQiogUbrourCv1CJVdNEN3VdN1qWIdFHRQqWkEgVVVIwDIQab+Gs88+a9dz+qcz/G4yZCmUkQYcTLnRm/ee/8zvmfc++5D4Yv+Yt9ye3H5QBP/W0BcbxwQ4KV5Tn8/pvnBm3bC/DsW89DK0CIPSfdMDDazAEYx8snXgo27QI88yZ5fQEvn3jlhjH4SoY8/ffnwfgZvHzCOnkQ4CQ4W8ZvHzhzQwP89I1FcDEXHH1VAObsYrMoxn7GpFmCRBPSAKUBcn8UBuga8J4GesYeOtcw0sBo5UalQb8zmt4bQAEwGtqQuww4Z2CCgyUCvBYti/3RGVnBH6o/P7O8x6HDAuyc/d5CrKPXoYw1nEk44+kggwmCxgxgASDTMIW2RmvpDfcQzngHAvrPuJG0wAQDTzjEWALRTGD2sWXE4vvJs6/u5uQwANnZpTnOzFlo06SbQgIsGB8ArMe1jQDLCMR9JsNNOOhcgrHXGIiCh3AEBMHAUo6okUDsT8EmBEyNbypZ3ld92kdiGID87aVXoM0T1ngKOUUgAJBsrOcNkGmwjhvpMAGg9BA0euM1SYnek5QGo2DtZ2ARg2gkiKcrYFMRTF0AQr+U/OS15y3kUADvLG1AoQlNMvAApH8ynqTjDSYItqMBC6Gs/rVUVmam3JWRlZNyMM54AqEUMEFFgCAJxUgO1sBnYpgGByK2nDz56tGhAExrqVn0sGFvQDcjw33yMut9D9D18mlrYIe8r6z+delHMro0PhcGjCenKJ8D2o8UBc4g6hGSm+oQhyow4wKIgOTJV13BudoIZO8uzXHBWn35UNhJPlKD5fC6J687w9m2G3VOESDjffXxMAQf5GMrEhlPjukflAnGyagqkB4eQ3S0BuyPADEKQGtpjisCgNNsACgNWKg83nhsOQDTkdAUAYIg3VvjtZURJTTBW/nY6/m8IO8HOYVqFAukR+pIbt8HHCQAhuSJPw8ZAQIwrGUl5CsQSicHC0D6J91va7BNDWwpaAIg7/cUNEUgSGlQRqGM2mqkaSqAMsYr1VUjwRlqs3VU72kCc6ktscnjowAw7gDIQ1Y+IYE1WNcAbWUNZ+sa2JBQXRcBe+SUxD4SPgq2hEpXTrUx9nJkvILxEG5OYGCYmKiicd8k2PHqiAArS3NcBgBXgSyEL5+MkndLAesK7JKCWS+hMglNEFSJbA74Cc3LiaSjtIa0xrvDAdDlXRQoBjQeqCY48LUD4PfW7Sw3fAQIQIuWu6KbxCxE7mq9jcCGBNYU2KqE3iygOi4KpiehaSa2hjspKekMLo1GGQCsOo29tJMRRcYBjMcRjt0/jejBcUs1AsBjc4yVLRZc4ieifv2nynNJAh/TUUJt5lA7lAcldE+6pQTNB6WGVBqFN5yML+Hk4yJAvtmNhKsZBmORwMJXZ5A8PGHzYjQAIVv216TLMBeEBG5r63n2YQF9sYDcyKG2CmiSUea8LqVG6Y3PvactgJeOW1Y5CbnRRwlAnTN86+5ZVL6z30Xg5LDzwMZjc0x7AA9Bd2KFm7iwrcA+KsD+W0Be6EF+2oPaKWwlkj2FQmnkhg5n8KDng4RKr32KgP3OAxTGYFwIfPeOWdQXJ+0aKXlqFADmAcKi25ZUwCbwhgJr5cDbPRTnO5BrGeR2iTyX6GqSjOkbb7XvZRNAdiF8QnsIgqaI3BwleOT4QYydmLQTWfzca0POAxQBoVrgvu0ZhMgNGFWfdzLoN3aQv7eN7loX7VJZ4/tet9qmnNfYkBrp5DTSRh0dkSBu7ENjfB+iOLXLaCYEFDi0URBGYyKN0DycYoVJJPUUD/7410MCZCQhAmCQmqGnBLqloMkUFaExLnNE/+igOLWKj/6zjmXFoWePIJmbR2XuGGrTs6jddASYmMTMkVvQaDQghBi52WO0xhhqLUQARrcKMHSKCBtZjE+7MVa749jMZzCR5Hjog39h5Z+z4CceweGvLKA+dQBpmtr1zPV+jQSgoFtZGWGzF2G1k+DD7XGcb9+P99fncfGixtGdf+NXzz2OOI6vt72XXW8kgEKh1S4irPcirLRTfNC+Be9vncCFS01cOJ/jowtbePgOgR/cm+Khu44jiRuo1WjmvP6vkQAyyVrbPQKIcbGd4kLnVixv34+VzXFsbyj0Mo2JKYF7Dr2Hrzf+gtun6si3G+BmFnE8i1KNI6lMwfAmpqamUalUPjMPyrJEp9PB6up5pFEGo1aRZ2sANnDHvb8YPgd2Ct7aJv13I6x0UnzcvRkrnTtxcecQsp7dVMBYTeP2/efwwMxbuOtAB1UjbbdmV6x+7aRyjW67xNoaNRJjqCY1cBP1ewFjNLqdLXCWYXo6RX0shiFzY+aOiCG98/TwAO2CWwltZhHWujE+6U5ivTePS71DaJdjtsLur6zhcOMc7p78EPMTXdS4tN3ant459NG+q7N/s0tRv84KO1TcGUsdmLGjBxDXALBTRGjnApeoCmUptopZdMopFLoODoWx5BMcrJ3HseYODu/LUaV9F1qxUt9QhFUs9RG0XnCdmN0c6O8N+W0VgrAAgBkAQUQ9MZAeHyECnZK3OqVAuxBo9yJs5vQ+QSb3QZkEnBUYi7cwU8sxuy/HTLVAzJQHGNiCCUtx1wC4lS2NYY3lc95Q+aWwCmZnXxsB+54hPX5qeAlREvdKgU7JsVNG6BQ0mXHkikEZhpgbjCUKzYrEVK1EMy0hqFm3kgFY2AiwAD4aoT21O3N+7RyKFplIBodxACS9bQSAUqPVk24GziRDJgUKyVFqZu9NANVYo5FINKslapFy0rAaHwDwsrHfhxbVR8B+HgQg4/tR2I3ISAAaxgIUkqEnyfPcLivI+/SKuEEl0qjFCo1EISJrQt9gZeIhwndhgyBA9HfmPAFdNsiI8iCAcCCdHyECBqZFBpPhpT2c8XRfuhcBJMKgEiu7PmJ+r6evcz0AEKLQN95LiBomv7NoL7oHwie2ANJjQwKQT7LsR0aDQZLx5HntFnZ294MKBgFYCAVBrVtoevyyux8B+v4y7w8YPggQSqqVkk9mjs301lOuNbvajS06t5c9+roGX7RdpWZO+/1HCgYxp5zT4MzAtZ6+ytj67iUUkjZAhaY3yCcYP7j6CMbbZLa5/tfK/KnFoQGy7IeLDPx11xY73fvtfBsBW7oJycrAJ2jwdgDofw7PBMJ5/mJhe31PIvtK5HsRrcW3q7f90T14GSYCXkYvMOCXwXiKQEDpL5qDN4O++xsBvpcOe0t29JEK5wTD/a5cPxChkQJ7MT32pxf63w8L4CAePcnACIIesu2+gudDIobSeCWAILEAETw/mMQD+mcM54wxL6bzp0/vuecoAOECWfYYATgIKpPun93X4Ee7j3SFv+357v9+H06PsFw9enrvo6Xwt2sB2GvtF/TpMwAWYPQifveN33xBpl3dbZ958ySAc5c/ZqWf04NuYzah1ZXDd3W3+PzOYsz9HwQDTr68+w4PvD8/M67lyn3Ph4tc/+2DazFvhN9+6QH+B7HwialpMFP5AAAAAElFTkSuQmCC",pBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABsNJREFUaEPtWntMU1cY/24LFCqllwDxKjA6H5DMx7rMaEQ3yx4OGSD4hzINAovAfDAKOlwyHA9ZpkOHsmW86ijZQqRjK6JRZ+LAZIGxZabGSAJuS5WW8ShwKaXFQu/dznW3VAUK5RFYOP+0997znfP9vt93zvd9514MFnjDFrj+8AwAUaJSzAUQz0dgFgCVuixaZavbEwBWJNVKASzA4cATneYLGBpAZKE5QnXJzvOsTlYAqw8pxcMUiNXF0fL5ovBYeqxIUkopGupZJqwAViYq4zEa1H/IouvnMwDRe0oJ1wKiP8seG3oRwFyztcjAXFv86fkWGVjQDGzw9pa+ZTZnmTCM/JbHS+vq6qphAfn6+oq3mUzl681mUZ2rq/xHnS5tNsA67EIEQUhkfX11Gx49YvQq9PAgy3i8EC6XS6LrvSZTXUZ/vwj9b+dyIczHJ6Gjo2PGg6LDAHx9fePr29vLBTTNAKjl8+G7LVvAw8ODuV5/4wYkDwxYjf46QdT3AFRYLBZVd3e3iiCI+ODh4Z2DHM6DpuHhbJIkGeBTbVMGQBCECMOwcqFQKNlnMECiRgMDGAby2FjIq6iwzp+fkgJvFBXBcosFStzdIUgmg+bmZrh37x40NjaSOSSJRxiNMMDhQLqnZ/3lnp6Qp5VHcw0NDSFs44KzC0BXnaBa5eKSutlsFlW7ufV7enrGpaWl4QcOHIC2tjaoKi0Ff39/2BETY7U+q4hCoYCHd+9C8I4dEBwcbNXvzIkTEJuXZ70uEQigRCCQUxRV0dHRwaQuW3186vYPDkr+5nLhKz4/rbOz89xY7NgFEHApKb5Yp4tDrlLn6gq4UgmhoaFTZfqJ/ggYsW8fBI2MMPdPSiTw6sGDgO43NDSoMQxTXensjELsoSYXCMgPBwY8HQIQW7W/ztaXb54+DXszMqYFAAmX5ueDrrYWMByH2KIi8PPzY8ZErJ49exaOFBYCu74q3d0h18nJcyxXssvAlu/fzTrd1ydhd5P7lZWwe/fuaQOYaAC9Xg9fbN0KYc3NgFwoWygk27jctLF2MbsATNeOiIL4/PIQHg9WpaRATFLSrCrPDo6YQAse7WpojSFWFAqFGgDOL6UokROGkRoAuWtUkWjCdNp49XB8QUFB3GxbfTJWaWxsBHlYGOT+tyl9hOPqmzHlCeMCoDHAH/2cn3osO1+0+cVA0BsfLzoPvhNoekzwgr8HNLfprb9+Xm5MH71pGNB/1MfPiw+aHiNzPZ78aN9ReXZsW/mGWz/By4dGF3+9qytkvHn8nDMhvjNmQQMYJ3649co2p6Bw2LXZH35t7WEAbAz0gh8a25h76Pf98CAovNICmwK9AYCGptYe6zO2z0TybB9beXZMW/lfflPBLnkK7B0cZPSoXLIECiPP1nPdl1aMW5EZrx4uaGpqErO7xGSons0+UqkUhioqYDlFPSgVCLKdI75UL5g1IJPJICsrS83hcBI0Gg0T8Ca1C0lcXMo3mM3gFh8PyTYRdDYtjSJ8a14e4AEBEJiZCWVlZSgFqTEajQm28cAugO3VCQUfkyRzsIWyyt+LiwGlEbPZrl+/DvyICGukzsJxuMznR7e3t1vTdXZ+uwD2KOKUKXo9zgp8k5kJx06enE39GWuHJCfPTCReeSkp6tPe3lSUl6BVv72pCdasWTMjAFCgQkGKTcFRBEZ+XlVVBW//G4WTDQYm00308rpUr9NFOZQLoYMtlPuvHxoS3+Hxdh49elSUnp4+LQAoyp6KjIRXWloYt/QoKACk/IULF5B711AUlYMmIGhayrNY1C0jI/LxUmq7LmR7MsfWAqGhoZLc3FygaZpJp59bt47JUFlLsuiQK/Q/fAgxycnWZA09Q2nBa8ePM7UCameEQsRujtFoPDfVwmZKAFjFECM0TWd9gGGid7RaxorV4eHwSc3oGivJzISNp04xShYLBLBJoWCsjNzm2sWLcLm11criZ0Kh+vP+/ucdodUhAGiisUpK2dq1IBQKGSaeLilDli1T6zmcWwCA9m/VHoNBGTU4KEIV2Qkcz7nd1ZU9pwCYor63tw7FB9SQFb/GsJdwHGd2rDCSVNpuvxEEkaDVaq1FPXJHZ2dnMUVRaq1W6/DxvcMMICUjvb2z15nNqSYM669yd4+yVQQdq8QaDHIuTQfc5vEqrnV3Sx2xsD2ZaQGwN/hcPF8EMBdWnmiORQYWGZimBf6/LoRes1pGQPJXafSYR3rTNNyMiaO3qbYvvJ950U3RFhJoQOcx865x0BcEHABbIz/zqcHqRKWYmqefGnAAVPcn+tRg3pl8Egot+K9V/gGSrV1tfcL86gAAAABJRU5ErkJggg==",gBe=""+new URL("xuek0-6ac9648e.png",import.meta.url).href,bBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACGBJREFUaEPtmnlUVNcdxz/vDQzMgDgouEQTVDCSuoELmooLKlGJrSh1XzAR3KNWExNNNXGPia2kp2o11ooCKnh0NKKi4uAWgyuEUFzYJK6oICKLs7zXM8ORaNUoDDR4Tu5/M+/c976f+/293/3de5/AK96EV1w/TwOEnvDC1tarRoIZDEl80yXpcW1PAkw5PaOJs41mYf/XveyVoqYmQeQ/MGZvOX07OyGjKJ/VPl8/0vYzwORTXj3cHQJ1M38XDDSpSeIf05LddF5SeHaeQctqH4sTjwOMXTeiWffQLnXH1lDxFlkRp+5qR4dn7mK1z8anAKJDPMYO9nbuXpMBtp/PTxi8Pj38NwCLS5IJuaAAyaBHVCoRHJ3AxqZaDawSB0zREcgxm+FMIoqiQpBkEAUkB0fw9YPg8Sh6B1QLSNUAZGdgKshHNOhRlJQgFd6HnGzQHURxYB+Syg6i9yL69qxyiCoBeJ4qWZah45sIWenI66MQBg5/tQCkrHSEjp7g6oJ8MBGxsdsrBCDLSIG9EI/pkD75DHH251Uu3nzD6gkhoxFpzgeIG9ZiGjMO8Yt/INjZvRoAskGPtPxzxLAvkCdPh3lfItraVov4KndALryP/Omf4XAcfPV3hL4DEQQBufQe8k8nkAuyEUwGZLtaCM7uCPW9EexrWwVXZSEkXctB+vgDhHYdECfNRFA5gPEhkm4+wtk1CPoHYKNCVjohi0pMCiWyrQpFny9RuPetNESVAMgPSzGlpaBo1hycNOUVoZy2A2FbENjaIwdugje6gMoZRFsQxPLa0exSZVuFAcy5/e6dIq5dLeB27gMKHxhQKAQ0GjVuTTQ0fr02CoVZHMg5xxA2dAOFAmn4HkSPyo/08wArBGAWHzxyO2dO5VBcpEcyyegNMkaDCUGQzTpp7unKx3O6039AyzKI8HcQsg4iOzZADvkeUVO1c0GFAJBl7twtxqA3C8b8E71e4saN+1y8cJe1qxK5lHYLe5XI6ZTpNGzohJyfAf/qhlB0HVOjTohjDiEoHSsbMU/1qxjAY913a1Nxc6tLW+8G5f8eO5pFUEAkEia+Pz8Fj+YuZS5cTUSIGgAltzC1GYkicDOWEaiCVimA+IOXmD1zP7v2Blti/lGLijjPjImxtG1XnzhdCKLiZ5HyD5EIO8aCaETqvw6xXWgVyK/ETJybW0jXTutYvMyfwcPalIsouFdCn+4buHqtgG82BdEvoMVTAqUjixB185HVdZBG7kXRqJPVEBV2YHKolpTkm+hOjMfGtizbmNuU8VqiI1OYNL0zC5f6P1OYLJkgMgAh8wDSW0GIQVGgUFoFUSGA745nMah/FNHaEXTr0dTy4OJiA3/5ZD+R4cmETPBh/qKe2Nk9fxUmJ29C0AaDY33kSSkIatf/D0BpiYHBgVHY29kQvWuk5R28fr2AuR/GsS82nQ/n+DJrti/C7dSy0kEygKmobAYuuQcPriPkZUD6AYTiPOSWgyFoC4JlQqt8e2kHtkYmMW3Ct8TGj8W7/WusXHGcTf8+h0ptx6q1f6SjTyPLzGrKPIRwdi3cSYfiW1CSh2AylqVdpRO4vgXtQ8BzIIK99XtlLwWQl1fMwIBNpP6Yy/CRLTl0KJt69WsRMqkjo0Z5WQq2p5uMbF7nSzICkiVtmkdbeMbuZeXH/yWzUNhfT7DkMx32alv8+3kwZqw3b//+jV+MdWtEVaTvSzkQHp6Ei4sDfn5NUKufXdvn5xdz/OgV0lJzKSrS41JPzejgdmg0KoueS5duE38wnRYtXOnZ24MLabno4jNAMPtUNq2bvWrYqDb9+r1JVEQSbm4aevl7lPOkpt7kaEIWrds0xLdr2W7nSwG8aEQOH0pn7kdxqBzs6N3HHbWDkhs3Clm4uLflpc+5ks/QwCgy0u/i3aEhcbpQdIcziT+QwYW0WyTEZ9I3oAVuzZwJGtISk1GiX8+NhK3uz6gx3pbHm8uVQe9GkJ2Zh987TYncNsISulYDnDt7lWGDttKvfwuWLO+Do+OTeb2goJRxo2MQRRH9QyOpqbe4nDO7fEymTtCyR3uRc/+ZRp26ZW5Nn7KbWO0FzqdNp5aTHcXFeoL+EIG9SolapSAz4y7xx8ejViutB3h/VAyHD2WQfHEGtWvbP2GWwWBicuhOThzLZuuOEcRs+ZF/rkokLXMGLq61MBol2nqG0bJVfaK1Iy19S0uNtPZYSecubmzeNsQiftb0WI4czmRn7BhitqSwbs0pTp6bSKPGGusBevuu5+at+5w8M5la/wOwdGE8K5d/h1NdFXXrqRg6pA3LFiSwc+8IunZ3J/7gZYYN3MqKrwMIHtfeAqDdmUro6B2sWR/In4a1ZtliHX9bdhyNi4o69dWEvN+BubPiiDvyHu06NLYeIOyr4yxZkECntxvSpVsT9AYJv97uZGfkW96LTxf0YvzEjpZFT+LJn3jXfzPLVvgTOtGHqRN3sT/2Emd+mIrGuSx83hsVQ+LJq5xKmkJkxHmWLtAxbWYXZn7ka4l5s9tDB2xl7cYBDBrcynoASZI4djSHlOQbFJcYea2xI8OGteHb3ZcsGX/AQM/yeaLgXil7dl+2VKutWtVjt/YCDg629PJ3t4g3L5h2bk+jtrMdfj2bEhOdRi0nJQEBzctDMze3iAP7MunQqQGenq7WA7woQ1X3dauzUHULfNH9fwN40QhV9/VfdGDTmKaBozu5DKhuEdbcf92J3PAJUVcSnnVG5tWkjm1g1iKvGn3M6hd2ITzhcuEzjlnNwzLl9IweHo6aET513ZxVNjXqrLjUIN2bF3stOft2yT3WdA575OLThf3kU+bPDGrmpwaQ9OiA+/kA1gTor9C3anabfgXhjx75XxxgmW3tVgRIAAAAAElFTkSuQmCC",UBe=""+new URL("xuek10-9e62a0b5.png",import.meta.url).href,fBe=""+new URL("xuek11-ece0cea6.png",import.meta.url).href,FBe=""+new URL("xuek12-1e6dae67.png",import.meta.url).href,ZBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA6BJREFUaEPtWk1u01AQ/uaFSggh0RvUCeq6ZkGFxCa9AIlPQLvoLwvSE5DeoJVQadNKhBO45QINCwQqi5o9Tc0NskACqfgNGidund86TZO+VLxdlGf7+2bmm5k3NmHMF405frQTWPxsY2LCNpLY+bmHvedeHFszgVffCtABkEo1bTKGjGYLwCNsz25FmC4JrB2L1W1sz5aNAdwJyOrXAkhVsD0bGjlOYB6KfLx9WjGawMqXLFTKigz9n8DIvTUqD1gFdxK/YCvRlcKkVvD9HWdwfQ2DgLXiWqkAWVawwTQFIkkIkjEuFjE+nZZy2YE9NggBAQoNW2lYSNEMAzYxWSBMXgXs1ghYS26eiF4Tk50EaFcijBqID64ievF/wN/1Q5T9TafWdE2/HsgsuUWQepP4wV02MuAT6w9J78OkckrrrdO9Ft3cFoF+Qyi95JYJ8Kslp2iMB5TWGwImSIUZqfJ40Z2PgwsINb/khGHWIOBVS86mEQSaQ4fL1d38Qmb5kFtCyq/u5tIRAcWoGBNC40OA+SeIplrFKhoIlK6HzH3UJLuEabnVBTuOP3wPMB0Qgg9SYZnV+7ArjBWqzPLhWWshkyzUrwaGFkLM7J2V8k8EeGbpwBeLa9IL0iqIMFnVSXVfBmhAB3rO33cqmRW3yKxenjXE18n67UQMIMCgytnuizlp2tRvFKu7TqGX9c3SQMOkkReEhIiyl/XjlVgDnuT7q+rA0DRwGRL1UJDfyWI/utKAEAqhMDaqpVxY6qfXXDsI1EmyXscAAhISTHrO33F8a9G1/T3HSy9/PCJwx57fPA00rF8PHdgiYmvFzSpWR5280EkDYafbvGpR7yO90NA0ELd+evnwhBiWfqDTIuReXmjVzu31Qg3rN1mc9bpYr5cXjCEgNYCgfQbZJIf2UM/wmPUGNGoqFVbigc7EQw2hZJmmpf+MnciiOnBrGrgOgeu00wSM94HGqCPl2J+Jr0NgaHVgAA2Ep61EizGptHZ+7DvN0/J+xyrWqptPBarAwMxAgy3AU6TXE4EH8Bfh5KKdcL8E4g+UtvneH9hay0hRySxUcv1MElD9hlDXew5CoNtNpxddWxOscFYKlWWCHOoHKmQjJdDpYXFvAYaP15OE0I3tGUYI3Ri4JDe6ywRssM7i3bPmYWoSq4xyz9qxTPe89tesAkJedDPXoIPkBWeU4OuvrhA3cvunBtEL71ECS/6sC8tHl9zBjz2SW8OInf8AQ/y5Xgs9wNUAAAAASUVORK5CYII=",ABe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADX5JREFUaEPVmVtsXNd1hr+99zlnbpwZUqJoUTcqsmJJbqPIkiwHtgMbrRMnTXp7K4qgaIA2iCUU9WvRpz7kKX1obNh98ItQIH4JjBQJ4qJt0ERIXdtREl9k2dGNou6iKA7JIWfmzLnsXax9SJmyXFG3NMkhBsMh55y9/r3+9a/LVvyWX+q33H5uBPDXr+0iDHf9RgJL07d56bG3l9t2PYADh5/F5mDMdV/6jQFj3WagyYv7vrVk04cA9v9Udn2Xe+FheW/endEWcg2kdO0M2kDoGhhVBvmzvyyQL/5uWPaPmy09q/a/eQalf8yL+/wmLwfwl2g14Z7fexAYu2MAzuIA5xzWTvPmB98mqI2y+xN/REAFpZT/n/IrCwj5tnwQECteE+qZN76KNpt5cZ/Y+asAkIv1ZMScu/pdXj/+Mlfmm/zJ43/HxoEdaMJrAAoQS2bckp78fwCwOJtxbu4nvD/+EtPpDCevJmwe3MeX9nydofJ6D8DoyHvjNq97CUDcL68AXI5zGqUhd5bYnuO1o9+kl5xgIYFTMzEqb/Lw2Jd5cuefUaJScF5usLqg061huXcAHCkOg3YKnPUGZC4jttMcPf8dzk29ShCmdLqa8VafzFWo0eAP9z3DtpHHUJ77JRDgyrEYFCs55F4CyAoAOKE8kGFVyonJH3D0zLdxQQuNotcPGJ/OyJTGuJyx+m6+sOdrjNTuR7mS3A3aosSTK1/3EoCoTYZyxtPHqT6t3nv895HnSPVplBaeG+K+4uSUxRqD1hlhUmH72kf54u6/oaQH/SagLFrotPJ1rwHkPgwkEhI7zc9OvMT5mUMEQQ7KEQR2EYDDmRIG6wGXKfH5XX/FttHPoV0FbdSH6eHmIO4lAO98sBmWHkfOvMKxS/+KM3MY2VXTJzCKuB9wcirH6TIRCqtydGAZDjfy+V1fZ/3gHpQKMbcWxXcCYCnRLM+gErcapx0uz5jpHufH73yDvppEBSmBUmjTx+iQXhxx8mqKMxGRUziTgbGU8ypbhvby1J79VM1qtAp8LClPJfGpvH90bW4XgOyyPKzIkiIWUh74jbcGpyzd7BKHPzjI5fahIhhNhjGKUOWgNZ3UcHIqQ6tKscumh9GKMA+pqDqf/Z2vsH3D72NcCeXXUSgtyhYsLbhcY+8SgFjuMnAK60THM947/wrvjr+MMx3CQLbQoY31AJTWzKeGU1MZRlXQoks6wWipjRzy9eHqDp7Y9VXW1neiVIByOUot1kY+N1yXIO4EQOFG5T1ReNXJJ5sz3TnBD9/5Bj13EWNyAmWJtBRsKaG+HoBWZQJ5jsoItCPUDq1SAldnbM0j/N7OvyVyQx68rPZhXrgrAJ4siy9JPc7nLEdOP2/xs+Pf4diVV1CRxqjcGx240BsRiAeMZr5vOD0tRoUYL5eWQEOghGE5RkWUVZMnP32AzcNPYGzgJVg2Tehb0OradbsekB2XLCsFWoCVKNMW53qcmPwv/ufoy+TBJMo4jDIE2mK8UUUMCICFRBKZ3B8uGuy88aEA8MGufdCvrX6KJ3ftpxmN+YAWAFboeK8AOBt6D1hSUtvi+69/k1byPkovYAKF0QFGa4xOC4pQAOikAadERl24CFR5+kQUyUsCXmtL2Q3wuxv+gL2f/HM0VRwBVmL+7mIArJOFxBESuEKeBd4b/wGvj/8LlDt+gQBDqDShCdBGvJQSqoBAG7qJ4dxlRWrK5LqHNjmGHE1GZOQeoVKGCTKqaoSnH/p7VlV2YXSGbJrW12Xo26WQ7HjmTXQuI3OO6c4v+bfX/pGensSYkHJYpRxUaVRWUy01CXWJSrlEOWoQhUOgQuI4oJt06eYzxGmXftwjTedJ0jmSdBbn+uRqAW1zto48xSMP/gWBavq4uWsAS8kkt6nft6OnfsJ09wj3rVpHozxCs76G0FR90hJOi2ZY2yenR2oz4jTG2RKhqWFMQDmowKJcOpeS2Q5J3mWqfYE4vkpnLmHrpscYbm5GU/5olXprHnDOjS01G85ZlLJYV9Aps4mXTG+qgzTv009m6fQv0YkvM9+7TKc/S5q1SbN55rptJltgSkM0Kw2GasPUa6tYVR9lsDpCo7qGKJRWs1wop1drg5YAdvI3KbevSekdAMiL5JRLAKs5bJ7Q7s5wuf0BrfnztNpnSPNpMlqgYpTuF5KqIpS2LCSOs5Oavgk9z421GAMREaWgRr20mmZ1Neubn2SosYHBxgYGoo2EquolVDbqtgFca+qdxeYZSodMx2cZn3yDc1PvMTt/liSb9fIaBEVi0iYkCmpUgipVExCaEjqI6Du4Ogu9TCTRkqY9ctfD0iV3/WJiIc/JHWFYY6C6mpHBbawf+jRrh3ZSMqsX6yNhk1rZA/b5vQcVbkwqK5H9zEHCDK++/gIXZ9+hXC1TLQ+yqjZCozxEozbqaVANmpTCOlFQ9aole+w7Rml0rNSnGiUUlE1xOd2kTZzN0UvmWOhcpRtfJE5b9OIrpHkblVbYsfmLbN/0Zd+5FQ2PmtD7V5hKZM/vPagFgBWeOxKd0mqf5cTpwzQHG6wZ2kStvBYj9b3Ipu+JpXZMyPOe532czNDNO+T5LLOdOeZ7hqGBUSrRIJVKjWo0QDms+YRlZEqhfEdBliUkaZtucpG59iRZv8KD9z/l++6iYzATev+bNx+r5Nc8INnTkkoJalOMkgrI4ZTxXVTqOnR7V2n3zjI9d4H5hUvE2RRJNoV181jfJiZ00pAzV1NyFRGpiGoYUStXGIgaNMtrWT/8AIP1ERoDo5SDIV8bKZWiycky45NkAUDe9coA3PO7Dzqnx5YmZ0nRtZLZLt3+FFfax7k0/Utm2qeJ+zMk2Qxasm+QY0Iw2nqu60C47ZjvRUy0UlLJ0k4TSK+jUiLJstLI2JBSGDFQGaRRXc/o6u2sro/RrIxRDe7z2R2vRr4euhUADx101oxZpOftMb1wjrNXjnHi8mFaC+OktFAuQYfKUyAyIYFyRSbWVcqm4Xc5iMqUTUiS1bjUyellfVzeJ0tinyes6oKJga4fMQa+DHFEoQCvUg3XMzy4mS1rdjNY20E5XLsYAz9dYTL33EMHrdVjVve4MP0+33vjBeJshlz1KJVCKuEg9cowQ7V1DJQHGarfR60knK5TCuRV88GLKnkPSC2YqBBF7g0Xd1rrWIhnSeyCz8Tt3jTd3ixx3CLOzpLlItcxTvWoqiqrBh5iz/b9hGbNRHDg8EoA9hx0jrHYTvGjN77L+fgE64Y3sHnNdpqlYQYH1hFIbS9qI/TSaaHTvslJwMW+7JiPeyT9Ft18gYVUebADYZVGdRCjSmhKPnvb3IKRPCPqlJHnM+S2x3ynRad3iVb7CL14im2bvsLoqn0Tev/Pbw7APicA3Jg8bKHTxlVyBoImJpchlsWZ1Je5vbxHYtssdM/T6bVY6M7Sja/QTc+Ruxm/28qmzCRweirGBEKpCo1qg5pusqa+nnplladJtTJEtTLgPRhSLoYCXnalbRVl6+NsRCmqrgwg/9bua9Np2dlM6nprvCL1s1kmpt7iyvwprs5N0E8uk9rLvk2TPteYBB0kvkwOF3uD+bTE+FTi1Ut+pPYPTU4kdZMrY2RaYSrUpdQYWMVIYytrGjtY09hKaESRhI6FBjkJ4mdW8ICM18UDi92jMMPfKRo/1Z7gFyf+nQvtX5ByiSC0vpYX1QlN5EEEJkWEtui6cmbTiImrqa9KxQxfcitp8qVPDtGBlIgJNcnceYlGtJUtI4/ywKYnqJRW+wRmbdHOKiUyulIMfOR8QG6VDCrTM+F2yjxT7dO8M/FDLrTeBaYxoei2DLIU2kmNr3x5EWCZSyuMT/VBh/45QSTGFy1jaDTaSfMTMVzazP0bH2Xr6OPUo7U+Tvze+dnpYjvubklGrz/gKPrSpYOIosMUMD03z5X2MY6Of4/p9hFUIHIIUSQpP/Fdl8jrXFZm/EoCulT0xDr3pUaoNYFTNMNNbBl9mB2bHqdRlhK67mlWGH3XcyG/BV5hiupZfmQupHHWedWwzHFx9i0+mHiV2e4pdNRBGZlKCIVc4YFFAJJUpTQPlYwXm9x/3x72bf0SjfJGwqDhJx1aL5UNsuCyqfViIruDE5pFAIuTrSIvCwDxhMyI5JxL0csmOXP5EKcu/iddLqBKie+L20nJz4U0A/5zWZVZW9/Cvm1/yrqhT1ENa4tUkSGvP5wqFEiSiXdA0XcstsYrV6O3ekZWjNRliCtzlmIsaN0cM52jHL9wiLPzbxIFLTqiQlcylNXUg9U8suOP2TH6WZrhKFoGWGKnTCeWjXeLM7SPPfG4dwCKAZegEA/ISYAmzy1K5+RujmOT/8HFyR8x1bnIxGTOJ9Z9hr0PPM2mVQ8SUkHb0BspBYvY+nEGfwyQmwLYhbNPuhcfefaWTymXgZBTFu8VJ2JpyFWHOBvnreOHsGqInQ88Tc0MEfgmYWlgpXBCQ1/phjcM1j8WwIHD/wC8feMxq9x+4PCzX3tseNe6ZjRxw9Nu+MPSBHn59G6ppy1GIZakeFkZsUQy6wW7/CTGLjseXvmA4+dnO5u//27rbf75M/+0ZM6NRFs88F4ZwK/lG9d2/v8G8Gux684XvbXDzTt//q/8zv8Frng7mv8Nz88AAAAASUVORK5CYII=",NBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAclJREFUaEPtWk1OwkAU/qYNGzdeATlBNxITN3gDewNM1Cgu7A3EG0BiilEW3gC8ARujwU3dG9IjsCedMcVU+YuvMFMs5HXbeTPve+/7pm/6RmDDH7Hh/mMewNmLg0LBySWw0SjA42Ew6ds0gKt3DzICbHtqUG7ASFUEsAu/3Ex8+gVQ68dRd+CXn3Lj8CJHLt88CKsHvzwO8iSAKiwR4m6/l2sAF68VWHYxCTQDWHu2TGSgdNrxYFvXRp2PZHPQdhvknEYAnHfqENYNudgyA5S8HTy4ddKEAQAocQYWECUvFBISz1LIIcnlmQHKRjdsuV3SLmsNWJE8+my72X0MGQAhYs4AJQKmEFOI4gjxPmsKKaUCCCz1HVBCnYT3bpgKWtYAUjkxM0gKuccAUOunPlKaLuY4A2NKmsvAh1DLiTjakcdhw00n/KxFzKUEtY1xBriUoDjyz6UEi5hKEIuYRUxxhEVMNzj+qkY3ZRfyAOEtSrYlVTX3P7Y0WaxnbmIb1fNA03qbAThQsoLWAd3m0Qyilnl88AKC+TZrPGvc6FZqCBml+8Wh5ckKxkJ83yCYCPL8VYOk4b3C/Gsw+Yl8stYWXvZYQxhNLvEFFhUhTxlKYYAAAAAASUVORK5CYII=",RBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAADDdJREFUaEPdmX1sHOWdx7+/Z2Z2195d79jEeSvEQwipSkvZ8BLRUtCmrXgRpyZGp0qthGLfXSUud706NLz1H8xJbUPbXEypKDqqwyf+6LW0Z1PuRF/E2YjS0BTkNe+5QDIh5MXxy856vd7ZnZnnd31mX2xjdGcnjgQ3srW7M888z+/ze39mCB/xgz7i8mMxwNdeSMMw0h9KMM/L4rHrsvNlWwjwd3/qgQwATVsw6EMDI9kCkMIjWx+qyzQHsOug0noaj2zt/9AI/EGC/O2LPSAxjEe2hkqeD9AFQTZ+dM3whxrgjgMZCM2qK3rlAb5+OIqHLy3j56zhERCGyUfvmQR6V8+gl3X0/vn3uRznDWDXmQRSlSi+e+EkenImAteA7s8gZiYwmXDQXloNw8nBbY5ir5nD1zmKh6m8bJYVB9hzOg4SSciYj30tE/jWzBqQ0GHM5FEOmhDoLpoFoamNccrREOUWPNj2Lu7NWdjbamP38Sbsv6i0ZJAVA1Cukki0IIi3QZQ87F1zBPdMbYAUBr5vvoN7nY2gmTyC1iiMEmG8ksOq2CaUWg+DSqvQ4kyigHYkMQ6vtR3fbjq2JIgVAbh7fD2iTRdAlh24RgkyX4TeciHI0yG0EhH9BkAEQDPAswgqwOxUM8+MzWJ2Eoiv3o/Hr/8h7sql8f3WLO6bvh5BOYvvtRf+T4hzAthzejUQWQ0NBC1C+E7iFdxXaAfPJoFICkBOCHEQ4PZQEJZgt8AoTRDPjAOlKcBzQVrkZb50++1A4j1oMxfhu8k3cM/0Z/Fgyx/OH8Dd40kguh6GTMJLHcL3qIC7nCuh+SbIKCIaGRNe8BLAF4RCqIJYKYDdPODmwUrzxXFFzhBE3LFtOx7a8Ct8K5fGrOsAMQdRdODB1tH/FeKsLHDPlNJuKgw+dXyzcBmIUyBfh6DpcNH7K/ugGXeCq9WFCMxc/RoaQ7lR9qcgIcAk1KAHsPGmEfxg1VO4e2IHgsoI9q0/hm+O7QCC6vcPOs4awHdN6MkOSH8aFFgQ7MD3gR+sG8ae8QyZFwywIDMUPJR4rkg2is2h3wGFcQXAIMpjVccWLf6xdLBvw2Ds3lOW7/vq30bfxbZxz9gV3oNrFltj2QAqpzfhCvjFPDzN1DQ2AyFteJ4DwNH1RFomIhmOt9xfU37dCHOfdavkx8BvDgHKAiQgYsk++cTNu407j3Zp0h12+z5hGz1H04TAkqTldMG2u2/jQkssF0DfczzTaJyIHARg758uHDXuei/tAdDZM4PV6/fDiKRDzX/AoSwQXiMwXh0mFCYBCCbNGI2u2bQbgB2D67hIpAU8U/qB4/7o8mGzZ8R0+rYoRc0dywEwe46aRXgWg0wCO17f5qw65wFWGSp4dfY3WMdg4GhD3bUGaz5M3YXCcyfeZjryGjGps0JFyedjazfZQsorpJR5+L7tPrrFTvS8milXfCcegb0AYjkA88GV4C78dKhF9imAdLy+T2bph5UhjhiZ0OPnS330EHDRJSBdb5wOh/ge8MdnGb5PIMEkjOfirat6GXCKD185avaMWF7FM0mQqSsBdN92+j5jN2RZDkCs582MmkTFaiClo0UqJoIYawic4sOfGtX2HN4uL9kwyBFVs8J0Uw1dBviPB4g6LPDaddVr6lxtEI78N8h+GyAtvMFoSmzxHrsua+46mPZlYEKH+qsurALt0evnOuRlAfz9SCYgIxdlr5UlHAQVNpoiKqhM34dV3mRt99rMngVRq4QdU8H6FvSNHQ8EHdb9dRM0DOR7oKH/AoRKpwK6rvXHI7F/hSZTCCqjCLgDcRp1+rYt9H9Fs1QAZUpUPNMXZCLwWI+WwwmVljzPg6E0s+2zAwDULqmq5WruJ3r5dYbj2CmD/yp/zVUDaGoyF8XEwZeBKQdMGoOEk4jJ23TfhfOTW0Jtm18bSuuqSEKHH0O2AbN0gCETXiQFo5KvCv5CGmHaCSwwOYWtV6aCRPPgoqTjloHnszBE8FCKZged9FXfCNpadywCyDmMA6OKWsUCmPQuM3n6Kd1NpAVrOSldE0zk664NF3D6O6txsFSAUAt3HLAQSBN6kAJ8aBKmkP6x8cduzGpPzA7JeFOGa6W2IeBrNnB8wjGR79bI5yDRQvnPfWbg/QDh7xdeAeUKIAhogm3TczpZr4TBGxAcjWHCB2JA1u7vrLrTUgHMrmcsGFpHmAg4ICLN8bzAcfpvsZN739pe+OTHB1UmVLEZxq1yHfU5/Ca0YnG4LTizm1ma5PuO84VtQ56ZMudbKxz7zimm1+zQAoDGzTxzZzIYHwEH6nKocdIiXAqm805/9/IA1t7xjAUfFnzX9nVYEz/pHFbnVLl3bsrc7ycTmfdlTqbT04Q/vYtmL7c7KSezgmFK8p3Cp69Mz27euL9hhXpl9nzgmVeYfaUg5UZaPx7d0q0EX9v1UytWI7b7v7L8NGp2DZgRwR1n/uW2sB9Z+zcDGZXWNOjOydt3DDDXgnfegxk6eILpZC6/uvBWZ3VtX6mQNfbyJ27/6hCUS7wv4PHGSdDrp+sZyWmvHO5uljIHLSBdBbgWkB9zs3bfMi0QxkDXgBnT/bTmsxMgMDVozqnbbsrIVMv+hiCh94BQ9IDf2GxwefeawqtZXSPyfR+6IRywME/femNXubVtp7ovjJsqOPNMhejpNxv9UZMo92+OvfuQrukmBcJhrWK+tLfz7OrA2q4nwkKmQzgwjJT92JefE78u5mSyOew668oM20+7AHppHO18tLPNz4X+qutAXiZTY9NaOvWxhD1+67Vzz5xqd4cgvzsCnCnVIZzMund3VEFJbR+c4btvnHvQttQgVhNc1jOQFvBNH7rtwnGmt9ywM/eJjX3zu87qOiB++iT0kju4RT/UxxyoDgJTpUjHkQnq8wOY0KO92HWDagwzCj2Mn1oQ0ZlZ4LfHlbxhQEuhZ7D/4ueUDDv2D5mDu+cVtOUA1N0kfddAGkYEh26+Yb+bSKi+JyxY1eoFYKwMPDsBKzrZuyl+Jlz4jTHdPDkZPA4ikzQDEAZw8QU233ppo/DVKnioD3rSZhT9MJjjUbZvsk51kxSO19xsD3bP60iXC5D59n+mIXVr8hILr16+eaCeeeouFIIcmAbeKdl/sfZwtx4RTtZr+Qf7mks78fqpFL14kljoCCE0A/zXlwFRAcjazk3FgUrB2Rww4oQ1QVnhsrVez9UXTY/2f2XLwieFywXY8eMDliGl+eTGT/WQ1bIzNHvooDUBZgLwLx20N7l9X1h3/Knf5syduW0bd3IyEkYJvXgCfHCKSdOJhcHYuopwtVnbZ841sFSRoH87CS6rmzRuT8mnvnr5RHdf5znsB+YXHuMtP+frWpgGG5sTpf23K8Dzs7j6QmfbmBZ8473rrB2IabV9ZXUGGpkC/95RGxhCU4zR3a6a04YHVn0IjOcdotdmG8EsK5GL0dd69huaBsBR7gLh8bDyVjVf74yJf1YEpv3h1rRrOtesuaKeXGrhUdvXAzRRAZ4pgIoC/KUkeH3YMDcsGY4/UQEGpkBCq/vXA3Jve+98RS65lZh/E70TjCAm5l561ANhUgK/dIFPV4BrzQX7mfr9ocfVwGlaggaL4KQAd8YX7IEasfXveeBEoKygsts/yu+0niPAk+MZ3LBqqNro1FJf/bn8sx5gVsBXxRcoqZ6c5rtJQ9l5CfqPWci/jAPRajPVONQax32IX8wo6AcWCa8GLjeIRY57mdE15wtAHJwqligfLwSp4motr4SIE1LhmHmtxQwjnySkCkBera3GlBh56TJoSoLXabWCACQEUkWJvOIR/zzdL+9LLdR8nXK5AItUWzvx+KmSBbiIaIYpiE3SIykB6ai6rWtk+oE8JjRheYGXjcV0K6br/i0G/X6gUkkjIDMa089wBVo0gpNfJFKPKZZ2rBSAWm0gxyYMz9I0I8E6mHyf2AvGI5EopIYNUscLwsNmMnCiRT1grMAKIqGWc2Vg9stEwa+Z224mmlqa9GfhQkuZ+OfMCR2IakBUByTnUX4phfzngPYvEo09zdycAOQ2Irc+Xy+z3ktn8bZmJS2wFLgVH/P/GSANlhn8+Nq+FdfaSk6462DXn5vU7OLXrGoR9aKb2YEM5rZwK7n4uc5FVC2m85S88E29ulh/4X2ui52f+xuar0+/GOD8LHzeZv3IA/wPBSBoi2AJ4GoAAAAASUVORK5CYII=",SBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACkVJREFUaEPVmnmQVNUVh7973+vpnu7p6Z5mVnEWERDBJCMuGDWRVBKtqJWksmg2jVNmK0kiJkajJhKs8p9oXGLAiMFCJWYxEpBoMEiEIAKuLIog27DMzmw90+t77574GnApREYCMrlVt/qPrn7v951z7rnnntuK//Oh/s/1cyDAd1c0Egg0Dkswx1nD/eeseae2dwNMeWFqQ5kdP6Mu0jwcAboyUr90U38fM8+8e7++twGuet63eqPMOKMBmDYcAXxNZ9+24e6Vzak5zDyz4Il3AlyBVs1yz+mThzPAJfdvbnp0TR/MPHPOMQXI5nLkMxmi8RjqPZbiwSLgmAMIsK07yQ0/vZ5zFj3E566/iTFTb0CpoSXEYw7Qn0rTdP9j6Ft/xM/rBwl2Kyp/M5fKL106JD8cc4DfLnqWB++6i0+vXsCNdxehF7vsfK2Gk5auJVAaO2TuOKYAW1tauWzWY6gZt3B5qI9vLirBWuvRcmOa0NTpjLzmpkN64ZgBuJ6h6fZ72PDyBur+MYcrRxnOe7IUq9Uj9YMB2pxqxq3aSFFJ9H29cEwA/IU7d+kK7lr4DPLYHCZ17+SKRhj/aAk6BeqqQbav9yi/YzZVX7ti+AFs2tVK031/Iteyi5K/zuJcO8dlZ9scP7vkzS1HCN6QZseSPPnGj3PyguUoSx8U4kP3QHcyyeUzHqZ1MIs88WdGbV7HpKDLNyZbJG6PIGFN+LYsrfMzdGcsRi9dS2Ts+OEBMJhK8f2Zc3itI4mdSqLm/o5GyTAxLHzlUzbRm8KYhCL0QJbev+Zo7RESV/+SkddPP9YAwu62dqbMmE1zMos4Oay1r1C2ZgUTbYePRoXPnxcg8r0A1GisBR7peVladgn5hrFMWLYebdvvCXFUQ8gY4bnVq3li1fP8e0cnmWwG09OBFYnD/D9yUj7FONvj1Ljis+faFH+1CBmpUMs93H/maHndY9DT1C9aTexjp324AOmcwy1PreKpF9cg2RRe5w7o2AWeoDMOkZeWc4p2OCEgTCxXfGKSTej8ADJSw3oPljq0rXPpzSriU66n9qZbPzyAjOPws4WrWLVxK07rZrzWN1DtrZAaRNWPR694mpHZJCdpj9qgMLECzjqtiMDZVgFAbfdgtUv3Sw5dg2/m3NETGPv0i9hFwQMgjngIGWP41X2zmb/8OaS3C3p7IJmEbBYVCqNiCYJrnudky+V4bagNwanV0PhRm8BEG6lSqD2CWuuRfDFPe7eQEc2ox1dQevqkowsgIsyaPZsZt92O8TxwXJTrguuiPEEaJ6FffpaabIrR2qXKhtpiobEGTh4fIHCKBeUaNSCYTR65l3K0tykGPCH+3aupm37HAVXqEfFA3nV5rrmFxa9u5IVVq+h8Yh6mpQ3e9Abi77sCiXJIJAhuWMcY7XKcZai0hYYwfKQGTjypiMBYCyoUpAzSLDjrcnTsEJKOwquo4ZRVm7GKi9/lhcMHEKEtnWHx5haWbd1Nb38vks2gMv1ku9poe2Ih7o6dKC9fAJBzz0evXEKV63Cidij3tQagocQwvlpTP8bCPsFGEoADqgW813N0bzP0pCAnitqHH2fEZy46fAA/RBxjWNvazdPN7Wzo6CfnOhg3j8mnED/Os368D+Ak++hctozM+vWoE8YgTpbQzu2M0g41yviRQkVI0RAVxtUojmuwsepsJC5gFHQJssUh+YbHnn5/HSiCF1/C2PseeVcYDckDAtM6BzMsb+7gPzs66EpnC1bwF6wxHuLu3ZxMJo3KDkJ+AMmmIZuia91rJF0LvWIJVRhOsDwSSkjYQqUPEBNGV2kq6zR6pA1xUKKQHoGdHtlNeTq6YNAovEiU8S82UxSLv+WFQwI4dzZOnrtu27SlzZ0F6xciWqQgXmQfQD6NcR3wRef3QkjO/0yxu72P7JPziQ4OMEq7VGhDXCvKAkJ1GOpjioYqxYiRFro6AKXiEyADQJvBeSNPV5swmFNkRKi550Gqv3LZ0AG8uydO7k1npj2wtpmXW/cUxO+fBQgvh7j5ggfIZdD5DJJLYXIZ+pMD7Fn8L4LbNlOHodpyKVOKuDbEQoqRYeH4ONRVWpRWWSh/+uW/VpA2SJfB25Kndzf0pSAjYJ81mZMfW4xWeyvUQ3qg0FYRpgnCwte387fXd5N1nL0e8Bzw8ns/HQeVy2CcNCqfYaC3j/ZX1mKvXEaVeNRqh5gSYpYiZgsVQUVNxFATVxxXaRGu0OhyG6KgtEZyBnoMptlhcIehu89nEnK6iAnPbyZ0XO0HANjX2PItv6N/kDuWr6G1P1UQbzw/z/sAOZTjr4UM2WSS1k1bkafmU+7kOF57lClDqRZKfYAAVBUL1VFFVQwqyjWhhIUaYb0N4Bikz0CLR267S1e3kMpDFsWIn0yj9tqbC8fNoXngHZ05P61nXYe5L29k0YbNiOsWpi8eN89Adw972toxj/+ZRHqgID6hDCUaokqIBqA8KFSEFRVRRWUMyhKaQJkFsX0AlkZ8gKQgnR7eNoeeLmEg44eRgtoTmbB8PVZR8IMD7F89YgzPbt3JAytfoS+ZRAoxn6K3swu1YC6Jvh6qtcsIDCWWUKIUJbZQFvTTp5CIKMpLFImYpiSusOIWlGqIgGgbM/Zi5Iwp6LIGpLON1MN/YM+cWeQ8IS9Q/7cllJ0z+fAB9oN09PfzzMZtnFFXQ7y0lKcX/J1Hrv4xZZkkcQWRgvUVURtiRUIiJIwIK8oi/oRoTBOMKpRv/YjGJOLIRb/FGv9F1L6FWkjZIgwufpKOa68kvaeL4gu+xOjZf+Frs7ce2daiv05emv93Hvn2JZQoKPHjPqCIB4REsRAPq70zApGIIhjRWFENYQuTSCCX/xGr/tz37syJkNmykV1fv5BUTxfjVr7Btx5PNc070r1RMcLCH17J9r88SGkRlIcgEYZ4GEqLNSVhCBUrAiGFFdEQUkhxGK/pYexxFxSy0MGGnw2zu3ey7dILKf3yN5gavqRp3vqj0NxNtu3mmU+Oo7woS2UpxCOK4rAiEFBYtkIFBBUECWiUpfC++mus86agh9AT9SFynR3suub7XDfh2qb5LaEj3532s9WeO68m+OzvKY4rdFAVhO7byt/q5IsH5sLrsD9/87ti/lA9RT9UvVyaSx/Y1jTvteyRB/AFeO2b4L7TUH67xwJcQeVB/Gozr5AMeI1fx/rWvWj93of2Q4F84H3gUA985/fGr5We+TKqb0mh5+/ndpUFldpb65jyT6IuexSrKPJBHnv45fThvMXpWYa97gv+iQAMmJyg+gUJX4A+fxY65B8ADn8cVQ/4ssS4mFcmY6VfLYS/kQAy4jvocdPRVtHhK9/3y6MO4L/HbX8IveUaJDoJ6n+Bip31VjX5vxJ8KADGTSFOFypYV9ighnp9NBS49wNoRMxkmTnJv770byqH5RgzfV3fls7c0gOvWX25U16YikgfxhuWF90otfcfBPeeddd+6x54NbjvwntYmh/W7Lf8wQGGqfKDyRra5ewwhvovpcUzi0Uc9PIAAAAASUVORK5CYII=",WBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAqxJREFUaEPtmkuOElEUhv97sQc6sV2BPOIcBxITB8IGBFYgPeAhDoQViCsQEoMNmMgOqnEDjQOjaQcy10C5Ahn1pFPnmKJFaahbQAhwqmNNqwr+73x1X3VLIeCHCnh+LALkP8VxcBAXCXZxMUDn0WA221WA518rIAcIha5cJAaGOAzgNpqJxjTTP4DymVv1OJqJrpjAXkGefalA6T6aiUmRZwFy0MrGmwd90QClz0noUHha6P8AO7e1iYFY3sqxVo+NoZl/DtvZmh9UOG/FtVYvTNcQ8Ue7kzW3w00AIgWrq5R+6heQHErZ77LGdhQuWUnN+tT8G9wdtjJHxvPbBmCo/qj1JGUKIB7ADe5nIRAAfhYCAeBnITAAJguBATBZCBSAl4VAAXhZkAvAGEPhcL7/n7dwr2zFHUd/kzeQMVWh9GuvYLPjQrhkhTXrkTgARXTELsASC2IB4BrQOATrl8ssRIs9FmcAoAbdRE2f69EyC9FC75fXNZdQe5rMMaE36qQz0aJVB7TndHnaFqKFExtK3fW2sC8A5sGonbnv301SY9jKVmLF3gkDaVEAYIyH7fQdN1Sk+OFUgZMLARljukURdY66eV2xJwNu2GErPVlj+1pgegW4Y4Z3l7u3NjAZdRVF7OOsvcyCYqqy1u9lPUJzAL4WHKoiJNzAMgviulE3sHYo9WNmQb984ub1EO2xEc8D+FowDsXCANa3IAxgfQsCAdazIBBgPQtCAVa3IBRgdQuCAVazsEWAWMnKEWFxlvmnT7/BqH/vZH3316KFXo1B7l6X58Eafft4S6/XzcvAHZ7Z5PX6DmOa/+o6A8TBlMTbh3URlTaFKJ/lAAwWt1ndG9yNbuYxyJksSsQdSl1+QTBT5MVPDaYb3uLSTwL9rfw03jX82ENm5Y2pfgNjgSpezjfRPQAAAABJRU5ErkJggg==",VBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABIJJREFUaEPdmr1uG0cQx/+zjACnCvUGRxmpeVdECJCGegKSUgKkE1nIopUi5BNIfILIQCA7dBELLiPpKL+A6CJI4BSkkdYQ7w1yTZxC4U6wdzySJ37t8ktStiJws7f/3+7O7MweCQ+80QPXj2GAvV9trK3Z9xLs5qaFl1+1BrXFAb77owzZARKJmNG9gZFsAfgMJ5vPIk19gIN3atZtnGy+ujeCRwl5+nsZJBo42QwmeRCgAEEefvyiMQ+AVXItdJAEIxl7zyfw8Ai+d5z353k/Sr9lIBJWNNFzA1hlN4mP4nsizhCTDbol/LZahs/ELZZ86r3Mm6/2IgGsPdcWJK6mih4z5ZJx7NWyFaMVWSTAxv5lG4AFhg+BZ5DSB8ShERDL6nUtf6QNsSgAtXXEP+KvYOABERtPXOVkP2gLYvjXtey6tv3CAEquJVioFVAAleta/lj9fLznFliIn7UFAZAkU96LvKfVZzkA8CXLSkKxCHEYbCuDdvcABmJHmd4NQNlNJv5Gbpp2ne20MoDgkDJsPT+Z0E8BtPdP1QEXHH7k1Mf7wyw+YD1xy8I0PBqAhgCvMxDUdX72IFEl52L4oDMFsEqXh4KhH6cNhEemwwDREz6m9EX8oDMBCGbeJKbPIF51GQ+gHnKFnIsgRAdNF0Dtd8HiyjQkzsIwEQDwITspcuphEqgLMMuBNIv4YAU+levt3de5vg/cepNk5Q/hNtYFSO1fNknVB0tuDHjtn7Ipbu68gsDuyOEYDbLPt7QBYnnOkgGkkHnveb7O73fCxHBck531YBvprMDnB67d6YjmMrWrmU+QLH54kW/wn9uHkDQ50knhkPNLSwvAKrmZrgNPZSDGW4asE+CRgFa19S/gRcmblvgwVG2Rc9ZYLACjel3LBjPHzZxafoOTWtggyoKQmTpLpgBaW6grnps7OQioEzReA2upMjAy2kKDxcqIMfqRY1tdBBjl/gaS46YmTqx6pvbfXBF49PJ2K7CpkWNmtUMdW5Q+d7TDqDLcKLlH4KA4GWokZfHDwWkDIhFWZMtukou9xE4njCo9wVnwUbRHFeirBVCZqdzqpdi6AMEqPH1ThuShAn21AFSh9Jl5Mhftio3S5REYsa20MgBJVXLO4gecyQpEEI9LboFDfwji/AoAfICqsZmPxMwCEPXtlZSP4Ld3T5NaTiw7KVMfX3hJOUpAcPLqRCHJxekAst7L96cZz7MCg+/WBpgmSD0PC5bVXmzNCNCC7OSBtSSEdHu504MBiDLKIPnbLkNQGKLvAkCNy+93VM2gX7UNlIb9Cow9Sl/oO/qifCAAaH5jQ0hV+Otnoox6YB+l0YNpgo6/LBIghPjWgriZ5fbCh0SRnHMFpN8WDRCNzM2vMxBcALMqVNJjFKmK7S0k16GquOiqRF++/q2EyTtv23IzlwTWLIC7W4t84MbXDpWTBp+wAjZYZvD8y37iNA/FsvoevCsAaA1/ZlUDqg/dzOomTO9QWZbIce8lCiPewCQP/9Ug+uC9anF64/VmPjL/H/7ZQ28m7o3Vf2YfA17QVu2hAAAAAElFTkSuQmCC",QBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAACb1JREFUWEftmdtvXEcdx78zcy57tdeX2HGTtE7jJukFkgZIpUpFAVU88GQQRZGQekHiASEVeOCZ9h0J8R/AOyJ5JlQJTwiBlCCVIlTUdZo0bu3Gt72cPefMBf3mslnHJl5QIlSpq4xn9+zu7Od85zu/+f0mDJ+xB/uM8eJz4Ec9Yw9U2Fy/0CqKxo+ZNMuQaEEaoDRA7lthgL4BH2hgYGzTuYaRBkYr1ysN+p7R9NwACoDR0IZuzYBzBiY4WCLAa9GKmI6uyQp+U/3ptZX9bv4/Anevf/NsrKOrUMaCMgkHS40ACZr6DGABONMwhbaQWnpQD+1gHTjon3E9mZIJBp5wiEYC0UpgJtgKYvGt5EdXbtwPvS9wdn15kTNzHdq06EcgARZgA7BVVFuFWUbg7jWBmtDoswRvxxhR2UM7YoJmYClH1EwgplOwKQFT41tKls9Xf7hb6X2B83eXfw1tXrOwNIWkcAAmG1hlDZBpsJ7rqZkAXHpo6j2sJmvQc7LGqMqWl4FFDKKZIJ6rgM1GMHUBCP2r5Pvv/GRU5f2B31vehEILmqbVA5N/CZas4AEJmnU1YKGV9a+WytrGlPdsYe2hHLyDJXCysAmuAARZIkZyuAY+H8M0ORCxleSNK8cfCGzay61igE07IA1OoH6xMauuB+57O3Q00CV1lfWvLn1PkKXxXh6BJRGU97D2PanMGUQ9QvJYHeJIBWZSABGQvHFll6h7FM7+sbzIBWsP7UDTSHaQGiyH9y2p6kDZjut1TgoTrI8OHp5uNtjBRgyCJSGGjZxsnC2qAunRBqLjNWA6AsQ4wO3lRa4IGM5zAbg0YCEyeFhsO2DTk9CkMEGTby2stragBUg3a+1gx/O+JnWDPUK0iAXSY3UkJyeAwwTMkLz2+wMUJmDD2tYSPkKgdNNrgcm/5NsdDbalgW0FTcCk7kBBk8LBGqO2CGHNRgtNoRjKGO88Fy0EZ6gt1FF9rgUspjbkJa+OA8y4AyYFrB3CgtNgfQN0lAVlGxrYlFB9p7BtOS06r7RX2YY06cKbNsYOR7AKxkO7mMzAMDVVRfP5GbBT1TGBV5cXuQzALkJYaB/OGC22bQVsKLC7CmajhMokNEFTpLAe9huItwdZQWkNaWFdc8A0vFOZNKb+UDXBoS8dAj9Tt7vKwQoTsBZtN4LbNCx07mKtVXhTAusKbE1CbxVQPaeyGUho2uksqLOGkg6wNBplALZuM3ZoZwtS3gFPxhFOnJtD9MKkvYsxgC8uMla2WbhlH/iH8Zciw10JfEythNrKobrk4xJ6IN3WTPG41JBKo/CgBFvC2cEpTFrcU9qtcYNGJHD2i/NIXpqyvh4PWMi2/TT5KsTisOA62irLbhXQdwrIzRxqu4AmW2ROVSk1Sg+beyUtsLeCS0ucJVzvZwFAnTN89dkFVL4+7RR+/aA4vHlxkWkP7KFpZFa4jQI7CuyjAuxfBeTtAeSnA6huYSOFHCgUSiM31BzgqLLBEqX3Lilsr3ngwhhMCoFvnF5A/cKMzTGSH4wDzDxwiIA2xAF2wW0qsHYOvDtAcbMHuZ5B7pTIc4m+JguYIaz1rrdBAL8H7Regh6abJMUfjxK8fOowGudn7MYRv/nOAXGYFBaqDe5Sv2FNQtC5AaPo8F4G/acu8vd30F/vo1MqCztU1XqT1qjGptRIZ+aQNuvoiQRxcwLNyQlEcWrTSiYEFDi0URBGYyqN0DqaYpVJJPUUL3zvlwcAZ2QJAmaQmmGgBPqloM0KFaExKXNEf+6huLSGj/65gRXFoReOIVlcQmXxBGpzC6g9dgyYmsH8sSfQbDYhhPifCxFGe/bIY28uQcBGtwsw9IoIm1mMT/sx1vqT2MrnMZXkePHDv2H1rwvg51/G0S+cRX32ENI0tfnAw36MBayg21kZYWsQYa2X4NbOJG52zuGDjSXcuaNxvPt3/OLNVxHH8cPm2zPeWMCFQrtTRNgYRFjtpPiw8wQ+2D6P23dbuH0zx0e3t/HSaYFvn0nx4jOnkMRN1Gq0Mz38x1jAmWTtnQEBx7jTSXG79yRWds5hdWsSO5sKg0xjalbguSPv48vNP+DkbB35ThPcLCCOF1CqSSSVWRjewuzsHCqVygN9XJYler0e1tZuIo0yGLWGPFsHsInTZ352sIe7BW/vkH/7EVZ7KT7uP47V3tO40z2CbGCLXjRqGienb+Ar83/BM4d6qBrpoghtMD73ULlGv1NifZ0S6QaqSQ3cRMNc2BiNfm8bnGWYm0tRb8QwhBcz1yKG9OnLBwN3Cm4tsZVFWO/H+KQ/g43BEu4OjqBTNmzEm66s42jzBp6duYWlqT5qXNpqZFftF+pAX7XY92yq5vMUW4ACFJEIjioMY3sPLP4L4G4RoZML3KUokaXYLhbQK2dR6Do4FBrJJzhcu4kTrS6OTuSo0jkAZXSUNxchy6M8mvZfV2nYYnZ4NuHLfIK2wIAZAUdENR2QnhpD4V7J271SoFMIdAYRtnJ6niCTE1AmAWcFGvE25ms5FiZyzFcLxEx54JEjgZCaugTYZX7UhxzFr1FD4ZCmTTC7u1mF7XOG9NSlgy1Bi25QCvRKjm4ZoVfQ5sGRKwZlGGJu0EgUWhWJ2VqJVlpCUHFpLQCwULhaYK92KLfsyY/PJUNQISQCDP0IePrUGMClRnsg3Q6XSYZMChSSo9TM/hYBV2ONZiLRqpaoRcpNtfXoCLC3gb0eSi6vsH09Cmy9HFS+p/hYwBrGAheSYSBJWW63aVKXHhE3qEQatVihmShE9Oshb7bT7qHDtVDQBujhyY8ntjmLhyQfB3AOpEtjKGxg2gRIoKVtDpZ+h8Ym4EQYVGJl8wvmzxqGPtUjwEHlIay3BBUI/qRqmGQNof1CFEB64gBguucs+67RYJAES8pqlwjZapwWNAFbaAVBpUlI8n0aOlSYru9RdwR0FDiEuBDmaPFxbKVPXnKlx8hk7NlPB9krVzX4BVslaea8O8wzDWJOa0SDMwNXSvkoYOOrt0RYZOEmQtEW7BBg76chS9jFZ9fmHytLly4cCJxl37nAwK+6ss751h/nWoVt6KRbsNPqF1RQMwAPX4cz4fA5P1g4bt218Dysz8W1Fl+rPvXbawcCe1u8xYCfB1hSOKAPA2NQK/hzWLj6WjCcbdjez0T4TKDwpz5DqFA4gL2dnvjdW/dP/wMT2Cx75XUGRtCLu74YlA0LJ4Sq/YCDZQJ0UHZ00Y34lzHcMMa8nS5dvrzHqyMF0H7vDa9l2UUCdtAUttyfe4/Rl/YcY5/3dl277/vh4xFWqscv7/tfBQ9cdA+k/z+/+fBrmkd8Q58DP2KB8W8FtFSWApzM+gAAAABJRU5ErkJggg==",yBe=""+new URL("xueks1-75c367fa.png",import.meta.url).href,CBe=""+new URL("xueks2-f93a074a.png",import.meta.url).href,wBe=""+new URL("xueks3-fefa2f69.png",import.meta.url).href,MBe=""+new URL("xueks4-e0fd8b31.png",import.meta.url).href,TBe=""+new URL("xueks5-679e1a29.png",import.meta.url).href,BBe=""+new URL("xueks6-f9095453.png",import.meta.url).href,LBe=""+new URL("xueks7-235509e2.png",import.meta.url).href,kBe=""+new URL("xueks8-0acbc94c.png",import.meta.url).href,IBe=""+new URL("xueks9-f87a6135.png",import.meta.url).href,DBe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8BJREFUaEPtmdFR20AQhj/JMJMHHkgFcSoIHcTpIFQAVBCoALsCnApwKggdABXEHcTpwI+ZgK14rRNzOu/Jd7rLAzPRm23J3n///ff+XRe88qt45fHzH4DC4HEJX4DzAobyeQVzYL6Gyeb9RU7WszIwgM8V3BZw7AlyWcFkDdNcIHIBGA7gFhg5gS3N6xagChZr+JSDjWQAJVwDl07WFwVcPMODAHgDwz/wvYATG2AFU1NWDdBoYlIAjEq4cYJaFvD1GcZaJAM430hCAG+1YfQhYCcrmEVHD726kIj0uoBL5wcfD+H89x6RChtPNcAzh41ZH5FHMeARqdB/FZtB+S7gxmZjU4rRIg8FoIpUyuUIxkvoXcMHMK7qsnq5YkS+F0CISPvUrv1Misi7AESLNBVIH5FrAJJEmgoiVuQugGEJ940FMMH0EmkqEE3koo0BnD7V1mR7tQCUMCus9pZDpKlAFJE/rOpTXAUgh8o789lFbGtMDdb3/CGcrOFH8/nKSnyLgQHcN35G6Eo5ITOCkWYiBrE5vRcreK8ycACjqgZhX3cruMphvCJBSTOZ2iWtVcZOFzJdQEC8+BV5sIKxOeoj44i/vaxtitgV28W2DKLKgP1THSfkqQwn8WEFPRF94neexLE9OShE/abtFLcJxnWxj/JeY8u1R10AowGcbVTeGv36nJARYFyRyqPLEiZP7clN2BHP9Gh3R/cc+GnNsa2a97EB9BW5T6Q7ttzVxAreCsidg8xuo0a4O6NfDpFHiFTThL+NStAe8e50oJ4iDxapBlJzBqqItSxrHj1C5DEiVbNuz9i2vjq7UCgbHpHLfCztVqaskdPTNZESmvVgAHJjKhtKN9Jm56isRwFobg5lwwCWDcNHJ3i1p/fJuheAWZNc+vY1oWw0zD0bO3IAC2VbEZV1a7Sde+305qDYWJ76EtGW1nIqwGYEe6XIrJ8YN/qyFDNudLtjbYnYUybq9iyGDQt8dNZdeyEW316cBbnRHGykZl3svNZKvW00BxvAN0OzCNpe/KrByL1m69cydV2jbYgbbc0GsWy4bbQjmJ1a92U9uo2msmF+MFvWowF0HWi+TmUGcZnqxEbM7VWIFUCvrPcCsOdAi97zx9a6b77YuxvVHvS1UB8bznckZz2JgYADzctGrqxnA9CljaL+z+DO/Ji2KPaK2lcu2vu9Skj7Ik+nkrFPbHVrRZNzZZkNgI8NB2yWrGctIY0NGXCq+p/LD8YY/pLF8RFMU/7N+aclFFO3Oe/NWkI5Awv9rlcP4C9pDvFAOSYhnAAAAABJRU5ErkJggg==";const GBe={class:"left_main"},EBe=["onDragstart"],vBe=["src"],xBe={class:"custom-text"},JBe=["onDragstart"],XBe=["src"],YBe={class:"custom-text"},zBe={__name:"Sidebar",setup(s,{expose:e}){const{onDragStart:t,onDragLeave:i,treeobj:n,onDrop:o}=ame(),l=x([{id:1,label:"工程",img:DBe,children:[{id:"1-1",label:"优化问题",img:ime,Text:"2-",children:[]},{id:"1-3",label:"学科分析",img:nme,Text:"3-",children:[]},{id:"1-2",label:"优化器",img:sme,Text:"4-",children:[]}]}]),r=x([{id:2,label:"优化问题组件",img:"",children:[{id:"2-1",label:"优化问题",img:"wen.png",name:"优化问题"}]},{id:3,label:"学科分析组件",img:"",children:[{id:"3-01",label:"优化器",img:"mob.png",name:"优化器"},{id:"3-02",label:"参数化",img:"csh.png",name:"参数化"},{id:"3-03",label:"气动分析",img:"aero.png",name:"气动分析"},{id:"3-0",label:"CST",img:"xuek0.png",name:"CST"},{id:"3-10",label:"FFD",img:"ffd.png",name:"FFD"},{id:"3-11",label:"ADflow",img:"ADflow.png",name:"ADflow"},{id:"3-12",label:"TACS",img:"TACS.png",name:"TACS"},{id:"3-1",label:"CATIA",img:"xuek1.png",name:"CATIA"},{id:"3-8",label:"Python",img:"xuek8.png",name:"Python"},{id:"3-9",label:"Xfoil",img:"xuek9.png",name:"Xfoil"},{id:"3-2",label:"Excel",img:"xuek2.png",name:"Excel"},{id:"3-3",label:"Feko",img:"xuek3.png",name:"Feko"},{id:"3-4",label:"Fluent",img:"xuek4.png"},{id:"3-5",label:"HCFD",img:"xuek5.png",name:"HCFD"},{id:"3-6",label:"Matlab",img:"xuek6.png",name:"Matlab"},{id:"3-7",label:"Nastran",img:"xuek7.png",name:"Nastran"},{id:"3-13",label:"FUM to FEM",img:"fsi.png",name:"FSI"},{id:"3-14",label:"CATIA",img:"catia.png",name:"CATIA"},{id:"3-15",label:"Flight",img:"flight.png",name:"Flight"}]},{id:4,label:"优化器组件",img:"",children:[{id:"4-1",label:"进化优化器",img:"xuek10.png",name:"进化优化器"},{id:"4-2",label:"代理优化器",img:"xuek11.png",name:"代理优化器"},{id:"4-3",label:"梯度优化器",img:"xuek12.png",name:"梯度优化器"}]}]);let a=x();na(()=>{d(),m(),cW.on("doSomethingEvent",p)});const d=()=>{let G=JSON.parse(sessionStorage.getItem("objlist"));if(G.flow!=""){let P=JSON.parse(G.flow).nodes;for(let j=0;j<P.length;j++)for(let X=0;X<l.value[0].children.length;X++)if(P[j].id.includes(l.value[0].children[X].Text)){let ie={id:P[j].id,label:P[j].data.label,img:P[j].data.image};l.value[0].children[X].children.push(ie)}}},c=G=>new URL(Object.assign({"../../assets/flowimg/111.png":PTe,"../../assets/flowimg/ADflow.png":KTe,"../../assets/flowimg/TACS.png":qTe,"../../assets/flowimg/aero.png":$Te,"../../assets/flowimg/catia.png":eBe,"../../assets/flowimg/csh.png":tBe,"../../assets/flowimg/ffd.png":iBe,"../../assets/flowimg/ffdFileSave.png":nBe,"../../assets/flowimg/flight.png":sBe,"../../assets/flowimg/fsi.png":oBe,"../../assets/flowimg/gc1.png":lBe,"../../assets/flowimg/gc2.png":rBe,"../../assets/flowimg/gc3.png":aBe,"../../assets/flowimg/mob.png":dBe,"../../assets/flowimg/r2.png":cBe,"../../assets/flowimg/wen.png":hBe,"../../assets/flowimg/wens.png":uBe,"../../assets/flowimg/x@2x.png":mBe,"../../assets/flowimg/xuek0.png":pBe,"../../assets/flowimg/xuek01.png":gBe,"../../assets/flowimg/xuek1.png":bBe,"../../assets/flowimg/xuek10.png":UBe,"../../assets/flowimg/xuek11.png":fBe,"../../assets/flowimg/xuek12.png":FBe,"../../assets/flowimg/xuek2.png":ZBe,"../../assets/flowimg/xuek3.png":ABe,"../../assets/flowimg/xuek4.png":NBe,"../../assets/flowimg/xuek5.png":RBe,"../../assets/flowimg/xuek6.png":SBe,"../../assets/flowimg/xuek7.png":WBe,"../../assets/flowimg/xuek8.png":VBe,"../../assets/flowimg/xuek9.png":QBe,"../../assets/flowimg/xueks1.png":yBe,"../../assets/flowimg/xueks2.png":CBe,"../../assets/flowimg/xueks3.png":wBe,"../../assets/flowimg/xueks4.png":MBe,"../../assets/flowimg/xueks5.png":TBe,"../../assets/flowimg/xueks6.png":BBe,"../../assets/flowimg/xueks7.png":LBe,"../../assets/flowimg/xueks8.png":kBe,"../../assets/flowimg/xueks9.png":IBe})[`../../assets/flowimg/${G}`],self.location).href,h={children:"children",label:"label"},u=G=>{},m=()=>{cW.emit("child2Data",l.value)};xO(()=>{cW.off("doSomethingEvent",p)});const p=()=>{m();for(let G=0;G<l.value[0].children.length;G++)if(n.value[0].id.includes(l.value[0].children[G].Text)){let P={id:n.value[0].id,label:n.value[0].data.label,img:n.value[0].data.image};l.value[0].children[G].children.push(P)}};e({datatree:l,getnode:p});const g=x(null),b=x(0),f=x(0),Z=x(0),A=()=>{g.value&&(b.value=g.value.clientHeight,f.value=b.value*.2,Z.value=b.value*.8)};na(()=>{ro(()=>{A(),window.addEventListener("resize",A)})}),xO(()=>{window.removeEventListener("resize",A)});const N=x(!1),W=x(0),Q=x(!1),R=G=>{const P=G.currentTarget.getBoundingClientRect(),j=5;Q.value=Math.abs(G.clientY-(P.top+P.height))<j,G.currentTarget.style.cursor=Q.value?"row-resize":"default"},M=G=>{Q.value&&(N.value=!0,W.value=G.clientY,document.addEventListener("mousemove",w),document.addEventListener("mouseup",Y))},w=G=>{if(!N.value)return;const P=G.clientY-W.value,j=f.value+P,X=Z.value-P;j>50&&X>50&&(f.value=j,Z.value=X),W.value=G.clientY},Y=()=>{N.value=!1,document.removeEventListener("mousemove",w),document.removeEventListener("mouseup",Y)};return(G,P)=>{const j=qe("el-tree");return ce(),we("div",GBe,[te("div",{class:"left_main_content el-treeicon",ref_key:"containerRef",ref:g},[te("div",{class:"tree-box top-tree",style:uE({height:f.value+"px"}),onMousemove:R,onMousedown:M},[C(j,{data:l.value,class:"custom-tree",ref_key:"cgtree",ref:a,"default-expand-all":"",props:h,onNodeClick:u},{default:T(({node:X,data:ie})=>[te("div",{onDragstart:se=>V(t)(se,"default",ie.id),draggable:!0},[te("img",{src:ie.img,class:"custom-image"},null,8,vBe),te("span",xBe,zn(X.label),1)],40,EBe)]),_:1},8,["data"])],36),te("div",{class:"tree-box bottom-tree",style:uE({height:Z.value+"px"}),onMousemove:R,onMousedown:M},[C(j,{data:r.value,class:"custom-tree1","default-expand-all":"",props:h,onNodeClick:u},{default:T(({node:X,data:ie})=>[te("div",{onDragstart:se=>V(t)(se,"default",ie.id),draggable:!0},[te("img",{src:c(ie.img),class:"custom-image"},null,8,XBe),te("span",YBe,zn(X.label),1)],40,JBe)]),_:1},8,["data"])],36)],512)])}}},_Be=im(zBe,[["__scopeId","data-v-0fee0f18"]]),OBe={style:{width:"100%",height:"100%"}},jBe={class:"echartitem",style:{width:"100%",height:"100%"}},HBe={__name:"area",props:{areashow:{type:Boolean,default:!1}},emits:[""],setup(s,{expose:e,emit:t}){const i=s;let n,o=x([]);x([]);let l=x([]),r=x([]),a=x(null);x();let d=x(null),c=x([]),h=x("");mf({instance:null}),na(()=>{ro(()=>{console.log("onMounted called");const g=document.getElementById("area");console.log("chartDom:",g),g&&(n=Vr(g),n.resize(),p())})}),Oc(()=>i.areashow,g=>{g&&ro(()=>{const b=a.value;b&&(n=Vr(b),n.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],l.value=[],r.value=[]},m=g=>{h.value=g,c.value=[],l.value=[],r.value=[];let b=JSON.parse(h.value);if(!b.length)return;let f=b[0].vars.split(",");o.value=f,b.forEach((Z,A)=>{r.value.push(A+1),c.value.push(Z.vals.split(" ").map(Number))}),l.value=f.map((Z,A)=>({name:Z,type:"line",stack:"Total",symbol:"none",areaStyle:{},emphasis:{focus:"series"},data:c.value.map(N=>N[A])})),n.setOption({legend:{data:o.value},xAxis:{data:r.value},series:l.value})},p=()=>{d.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},legend:{data:o.value,orient:"vertical",right:"4%",top:"2%"},grid:{left:"5%",right:"4%",bottom:"10%",containLabel:!0},xAxis:[{type:"category",boundaryGap:!1,name:"cd",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",data:r.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],yAxis:[{type:"value",name:"-cl",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],series:l.value},d.value&&n.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,b)=>(ce(),we("div",OBe,[te("div",jBe,[te("div",{id:"area",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},PBe={style:{width:"100%",height:"100%"}},KBe={class:"echartitem",style:{width:"100%",height:"100%"}},qBe={__name:"bargraph",props:{bargraphshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=x([]),o=x([]),l=x([]),r=x([]),a=x(null);x();let d=x(null),c=x([]),h=x("");mf({instance:null}),na(()=>{var g=document.getElementById("bargraph");i=Vr(g),p()}),Oc(()=>t.bargraphshow,g=>{g&&ro(()=>{const b=a.value;b&&(i=Vr(b),i.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],l.value=[],r.value=[]},m=g=>{h.value=g,c.value=[],l.value=[],r.value=[];let b=JSON.parse(h.value),f=0;for(let Z=0;Z<b.length;Z++){f+=1,n.value=b[Z].vars.split(","),o.value=b[Z].vals.split(" ");let A=o.value.map(N=>Number(N));c.value.push(A),r.value.push(f)}console.log(c.value);for(let Z=0;Z<n.value.length;Z++){let A=c.value.map(W=>W[Z]),N={name:n.value[Z],type:"bar",data:A};l.value.push(N)}i.setOption({legend:{data:n.value},xAxis:{data:r.value},series:l.value})},p=()=>{d.value={title:{text:"柱状图"},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},legend:{data:n.value},toolbox:{feature:{saveAsImage:{}}},xAxis:{type:"category",data:r.value},yAxis:{type:"value"},series:l.value},d.value&&i.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,b)=>(ce(),we("div",PBe,[te("div",KBe,[te("div",{id:"bargraph",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}};const $Be={style:{width:"100%",height:"100%"}},eLe={class:"echartitem",style:{width:"100%",height:"100%"}},tLe={__name:"echartLine",props:{echartdata:{type:String},curvedata:{type:String},echartLineshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i=x([]);x([]);let n=x([]),o=x([]),l=x(null),r;x();let a=x(null),d=x([]),c=x("");mf({instance:null}),na(()=>{r=Vr(l.value),m(),r.resize()}),Oc(()=>t.echartLineshow,p=>{p&&ro(()=>{const g=l.value;g&&(r=Vr(g),r.resize(),m())})},{immediate:!0});const h=()=>{d.value=[],n.value=[],o.value=[]},u=p=>{c.value=p,d.value=[],n.value=[],o.value=[];let g=JSON.parse(c.value);if(!g.length)return;let b=g[0].vars.split(",");i.value=b,g.forEach((f,Z)=>{o.value.push(Z+1),d.value.push(f.vals.split(" ").map(Number))}),n.value=b.map((f,Z)=>({name:f,type:"line",stack:"Total",symbol:"none",data:d.value.map(A=>A[Z])})),r.setOption({legend:{data:i.value},xAxis:{type:"category",data:o.value},yAxis:{type:"value"},series:n.value})},m=()=>{a.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#FFF"}},legend:{data:i.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"5%",right:"4%",bottom:"10%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,name:"cd",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",data:o.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}},yAxis:{type:"value",name:"-cl",nameGap:30,nameTextStyle:{fontsize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",axisTick:{show:!0},splitLine:{show:!0},axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}}},series:n.value},a.value&&r.setOption(a.value),window.onresize=function(){r.resize()}};return e({linechart:m,getsockechart:u,echatinit:h}),(p,g)=>(ce(),we("div",$Be,[te("div",eLe,[te("div",{id:"line2",ref_key:"chartContainer",ref:l,style:{width:"100%",height:"100%"}},null,512)])]))}},iLe=im(tLe,[["__scopeId","data-v-bccc9e76"]]),nLe={style:{width:"100%",height:"100%"}},sLe={class:"echartitem",style:{width:"100%",height:"100%"}},oLe={__name:"BarChart",props:{BarChartshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=x([]),o=x([]),l=x([]),r=x([]),a=x(null);x();let d=x(null),c=x([]),h=x("");mf({instance:null}),na(()=>{var g=document.getElementById("bargraphbar");i=Vr(g),p()}),Oc(()=>t.BarChartshow,g=>{g&&ro(()=>{const b=a.value;b&&(i=Vr(b),i.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],l.value=[],r.value=[]},m=g=>{h.value=g,c.value=[],l.value=[],r.value=[];let b=JSON.parse(h.value),f=0;for(let Z=0;Z<b.length;Z++){f+=1,n.value=b[Z].vars.split(","),o.value=b[Z].vals.split(" ");let A=o.value.map(N=>Number(N));c.value.push(A),r.value.push(f)}console.log(c.value);for(let Z=0;Z<n.value.length;Z++){let A=c.value.map(W=>W[Z]),N={name:n.value[Z],type:"bar",data:A};l.value.push(N)}i.setOption({legend:{data:n.value},xAxis:{data:r.value},series:l.value})},p=()=>{d.value={title:{text:"横条图"},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},legend:{data:n.value},toolbox:{feature:{saveAsImage:{}}},xAxis:{type:"value"},yAxis:{type:"category",data:r.value},series:l.value},d.value&&i.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,b)=>(ce(),we("div",nLe,[te("div",sLe,[te("div",{id:"bargraphbar",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},lLe={style:{width:"100%",height:"100%"}},rLe={class:"echartitem",style:{width:"100%",height:"100%"}},aLe={__name:"scatter",props:{scattershow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s,i=x({});let n,o=x(["变量1","变量2"]);x([]);let l=x([{name:"变量1",type:"scatter",data:[10,20,30,40]},{name:"变量2",type:"scatter",data:[20,10,40,30]}]),r=x(["-0.25","0.00","0.25","0.50","0.75","1.00"]),a=x(null);x();let d=x([]),c=x("");na(()=>{ro(()=>{console.log("onMounted called");const p=document.getElementById("linesan");console.log("chartDom:",p),p&&(n=Vr(p),n.resize(),m())})}),Oc(()=>t.scattershow,p=>{p&&ro(()=>{const g=a.value;g&&(n=Vr(g),n.resize(),m())})},{immediate:!0});const h=()=>{d.value=[],l.value=[],r.value=[]},u=p=>{c.value=p,d.value=[],l.value=[],r.value=[];let g=JSON.parse(c.value),b=0,f={};for(let Z=0;Z<g.length;Z++){b+=1;let A=g[Z].vars.split(","),N=g[Z].vals.split(" ").map(W=>Number(W));r.value.push(b);for(let W=0;W<A.length;W++){let Q=A[W],R=N[W];f[Q]||(f[Q]=[]),f[Q].push([b,R])}}console.log(f);for(let Z in f)l.value.push({name:Z,type:"scatter",data:f[Z],itemStyle:{}});n.setOption({legend:{data:Object.keys(f)},xAxis:{data:r.value},series:l.value})},m=async()=>{i.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},legend:{show:!0,data:o.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"5%",right:"4%",bottom:"15%",containLabel:!0},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#FFF"}},xAxis:[{type:"category",boundaryGap:!1,name:"cd",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",data:r.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],yAxis:{type:"value",name:"-cl",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",axisTick:{show:!0},splitLine:{show:!0},axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}}},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"slider",xAxisIndex:[0]}],series:l.value},i.value&&n.setOption(i.value),window.onresize=function(){n.resize()}};return e({getsockechart:u,echatinit:h}),(p,g)=>(ce(),we("div",lLe,[te("div",rLe,[te("div",{id:"linesan",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},dLe={style:{width:"100%",height:"100%"}},cLe={class:"echartitem",style:{width:"100%",height:"100%"}},hLe={__name:"radar",props:{radarshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=x([]),o=x([]),l=x([]),r=x([]),a=x(null);x();let d=x(null),c=x([]),h=x(""),u;x([]);let m=x([]);mf({instance:null}),na(()=>{var f=document.getElementById("radar");i=Vr(f),b()}),Oc(()=>t.radarshow,f=>{f&&ro(()=>{const Z=a.value;Z&&(i=Vr(Z),i.resize(),b())})},{immediate:!0});const p=()=>{c.value=[],l.value=[],r.value=[],m.value=[]},g=f=>{h.value=f,c.value=[],l.value=[],r.value=[];let Z=JSON.parse(h.value),A=0;for(let N=0;N<Z.length;N++){A+=1,n.value=Z[N].vars.split(","),o.value=Z[N].vals.split(" ");let W=o.value.map(Q=>Number(Q));c.value.push(W),r.value.push(A)}console.log(c.value);for(let N=0;N<n.value.length;N++){let W=c.value.map(R=>R[N]),Q={name:n.value[N],type:"radar",areaStyle:{},data:[{value:W,name:n.value[N]}]};l.value.push(Q)}for(let N=0;N<r.value.length;N++){let W={name:N,max:u};m.value.push(W)}i.setOption({legend:{left:"center",data:n.value},radar:{indicator:m.value},series:l.value})},b=()=>{d.value={title:{text:"雷达图"},tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},radar:{indicator:m.value},series:l.value},d.value&&i.setOption(d.value)};return e({getsockechart:g,echatinit:p}),(f,Z)=>(ce(),we("div",dLe,[te("div",cLe,[te("div",{id:"radar",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},uLe={style:{width:"100%",height:"100%"}},mLe={class:"echartitem",style:{width:"100%",height:"100%"}},pLe={__name:"pie",props:{pieshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s;let i,n=x([]),o=x([]),l=x([]),r=x([]),a=x(null);x();let d=x(null),c=x([]),h=x("");mf({instance:null}),na(()=>{ro(()=>{console.log("onMounted called");const g=document.getElementById("pie");console.log("chartDom:",g),g&&(i=Vr(g),i.resize(),p())})}),Oc(()=>t.pieshow,g=>{g&&ro(()=>{const b=a.value;b&&(i=Vr(b),i.resize(),p())})},{immediate:!0});const u=()=>{c.value=[],l.value=[],r.value=[]},m=g=>{h.value=g,c.value=[],l.value=[],r.value=[];let b=JSON.parse(h.value),f=0;for(let N=0;N<b.length;N++){f+=1,n.value=b[N].vars.split(","),o.value=b[N].vals.split(" ");let W=o.value.map(Q=>Number(Q));c.value.push(W),r.value.push(f)}let Z=[],A=[];for(let N=0;N<n.value.length;N++){let Q=c.value.map(R=>R[N]).reduce((R,M)=>R+M,0);Z.push({name:n.value[N],type:"pie",radius:"50%",data:[{value:Q,name:n.value[N]}]}),A.push(n.value[N])}i.setOption({legend:{data:A},series:Z})},p=()=>{d.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:"5%",right:"4%",bottom:"10%",containLabel:!0},legend:{data:n.value,orient:"vertical",right:"4%",top:"2%"},xAxis:{type:"category",data:r.value,axisLine:{show:!1},axisLabel:{show:!1},axisTick:{show:!1},splitLine:{show:!1}},yAxis:{type:"value"},series:l.value},d.value&&i.setOption(d.value)};return e({getsockechart:m,echatinit:u}),(g,b)=>(ce(),we("div",uLe,[te("div",mLe,[te("div",{id:"pie",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},gLe={style:{width:"100%",height:"100%"}},bLe={class:"echartitem",style:{width:"100%",height:"100%"}},ULe={__name:"pareto",props:{paretoshow:{type:Boolean,default:!1}},setup(s,{expose:e}){const t=s,i=x({});let n,o=x(["变量1","变量2"]);x([]);let l=x([{name:"变量1",type:"scatter",data:[10,20,30,40]},{name:"变量2",type:"scatter",data:[20,10,40,30]}]),r=x(["-0.25","0.00","0.25","0.50","0.75","1.00"]),a=x(null);x();let d=x([]),c=x("");na(()=>{ro(()=>{console.log("onMounted called");const p=document.getElementById("pareto");console.log("chartDom:",p),p&&(n=Vr(p),n.resize(),m())})}),Oc(()=>t.paretoshow,p=>{p&&ro(()=>{const g=a.value;g&&(n=Vr(g),n.resize(),m())})},{immediate:!0});const h=()=>{d.value=[],l.value=[],r.value=[]},u=p=>{c.value=p,d.value=[],l.value=[],r.value=[];let g=JSON.parse(c.value),b=0,f={};for(let Z=0;Z<g.length;Z++){b+=1;let A=g[Z].vars.split(","),N=g[Z].vals.split(" ").map(W=>Number(W));r.value.push(b);for(let W=0;W<A.length;W++){let Q=A[W],R=N[W];f[Q]||(f[Q]=[]),f[Q].push([b,R])}}console.log(f);for(let Z in f)l.value.push({name:Z,type:"scatter",data:f[Z],itemStyle:{}});n.setOption({legend:{data:Object.keys(f)},xAxis:{data:r.value},series:l.value})},m=async()=>{i.value={title:{text:"压力分布",left:"7%",top:"5%",textStyle:{color:"#333333",fontSize:16,fontWeight:"normal",fontFamily:"Source Sans Pro-Regular"}},legend:{show:!0,data:o.value,orient:"vertical",right:"4%",top:"2%"},grid:{show:!1,left:"5%",right:"4%",bottom:"15%",containLabel:!0},tooltip:{trigger:"axis",backgroundColor:"rgba(0,0,0,.6)",borderColor:"rgba(147, 235, 248, .8)",textStyle:{color:"#FFF"}},xAxis:[{type:"category",boundaryGap:!1,name:"cd",nameGap:30,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",data:r.value,axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}},splitLine:{show:!0}}],yAxis:{type:"value",name:"-cl",nameGap:40,nameTextStyle:{fontSize:16,color:"#333333",fontFamily:"Source Sans Pro-Regular"},nameLocation:"middle",axisTick:{show:!0},splitLine:{show:!0},axisLine:{show:!0,lineStyle:{color:"#333333",width:1,type:"solid"}}},dataZoom:[{type:"inside",xAxisIndex:[0]},{type:"slider",xAxisIndex:[0]}],series:l.value},i.value&&n.setOption(i.value),window.onresize=function(){n.resize()}};return e({getsockechart:u,echatinit:h}),(p,g)=>(ce(),we("div",gLe,[te("div",bLe,[te("div",{id:"pareto",ref_key:"chartContainer",ref:a,style:{width:"100%",height:"100%"}},null,512)])]))}},fLe={class:"XFpdding"},FLe={class:"numberinput lefttext dlheight"},ZLe={style:{display:"flex"}},ALe={style:{display:"flex"}},NLe={style:{display:"flex"}},Nse={__name:"Doptimize",setup(s,{expose:e}){x(100);let t=x(200),i=x({algorithm:"SurroOpt",iout:19,irestart:"0",ndoe:"拉丁超立方LHS",ns:10,nsmax:100,nslf:20,nsmaxlf:200,nsmk:10,nsmaxmk:100,xtol:-1e-8,feasibilitytolreal:-1e-6,feasibilitytolsurro:-1e-6,surromod:"Kriging",corr:"0",consttheta:"0",porder:"0",dcmp:"0",paraopt:"1",regular:"0",infill:"EI+MSP",nparallel:1,iopt:"当前最优+局部优化",icstr:"概率相乘法",ipopsize:50,maxgen:100,pc:.9,pm:.05}),n=x(),o=x();x("");let l=x([{label:"SurroOpt",value:"SurroOpt"}]),r=x([{label:"是",value:"1"},{label:"否",value:"0"}]),a=x([{label:"拉丁超立方LHS",value:"0"},{label:"均匀设计UD",value:"1"},{label:"蒙特卡洛MCD",value:"2"}]);x("Kriging");let d=x([{label:"Kriging",value:"Kriging"},{label:"GEK",value:"GEK"},{label:"Co-Kriging",value:"Co-Kriging"},{label:"HK",value:"HK"},{label:"MHK",value:"MHK"}]),c=x([{label:"各向异性高斯指数函数",value:"0"},{label:"各向同性高斯指数函数",value:"1"},{label:"三次样条函数",value:"2"}]),h=x([{label:"不优化",value:"0"},{label:"随机初值优化",value:"1"},{label:"上一轮建模数据作为初值优化",value:"2"}]),u=x([{label:"普通Kriging",value:"0"},{label:"泛Kriging",value:"1"}]),m=x([{label:"LU分解",value:"0"},{label:"Cholesky分解",value:"1"},{label:"第三方库并行分解",value:"2"}]),p=x([{label:"HookeJeeves",value:"1"},{label:"BFGS",value:"2"},{label:"单纯形搜索方法",value:"3"}]),g=x([{label:"不进行正则化",value:"0"},{label:"常数正则化",value:"1"},{label:"优化正则化",value:"2"}]),b=x([{label:"EI+MSP",value:"0"},{label:"局部EI",value:"1"},{label:"EI",value:"2"},{label:"MSP",value:"3"},{label:"LCB",value:"4"},{label:"PI",value:"5"},{label:"MSE",value:"6"},{label:"MSP+MSE",value:"7"}]),f=x([{label:"当前最优+局部优化",value:"0"},{label:"当前最优+局部优化+GA",value:"1"}]),Z=x([{label:"概率相乘法",value:"0"}]);const A=Q=>{n.value=Q;const R={transCode:"MDO0031",pid:n.value};rs(R).then(M=>{console.log("chushihua"),M.hasOwnProperty("suid")&&N(M)}).catch(M=>{Cn.error(M.returnMsg)})},N=Q=>{n.value=Q.pid,o.value=Q.suid,i.value.algorithm=Q.algorithm,i.value.iout=Q.iout,i.value.irestart=Q.irestart,i.value.ndoe=Q.ndoe,i.value.ns=Q.ns,i.value.nsmax=Q.nsmax,i.value.nslf=Q.nslf,i.value.nsmaxlf=Q.nsmaxlf,i.value.nsmk=Q.nsmk,i.value.nsmaxmk=Q.nsmaxmk,i.value.xtol=Q.xtol,i.value.feasibilitytolreal=Q.feasibilitytolreal,i.value.feasibilitytolsurro=Q.feasibilitytolsurro,i.value.surromod=Q.surromod,i.value.corr=Q.corr,i.value.consttheta=Q.consttheta,i.value.porder=Q.porder,i.value.dcmp=Q.dcmp,i.value.paraopt=Q.paraopt,i.value.regular=Q.regular,i.value.infill=Q.infill,i.value.nparallel=Q.nparallel,i.value.iopt=Q.iopt,i.value.icstr=Q.icstr,i.value.ipopsize=Q.ipopsize,i.value.maxgen=Q.maxgen,i.value.pc=Q.pc,i.value.pm=Q.pm};return e({getDoptimize:A,getDoptimizeAssign:N,getaddDsave:()=>{const Q={transCode:"MDO0032",pid:n.value,suid:o.value,algorithm:i.value.algorithm,iout:i.value.iout,irestart:i.value.irestart,ndoe:i.value.ndoe,ns:i.value.ns,nsmax:i.value.nsmax,nslf:i.value.nslf,nsmaxlf:i.value.nsmaxlf,nsmk:i.value.nsmk,nsmaxmk:i.value.nsmaxmk,xtol:i.value.xtol,feasibilitytolreal:i.value.feasibilitytolreal,feasibilitytolsurro:i.value.feasibilitytolsurro,surromod:i.value.surromod,corr:i.value.corr,consttheta:i.value.consttheta,porder:i.value.porder,dcmp:i.value.dcmp,paraopt:i.value.paraopt,regular:i.value.regular,infill:i.value.infill,nparallel:i.value.nparallel,iopt:i.value.iopt,icstr:i.value.icstr,ipopsize:i.value.ipopsize,maxgen:i.value.maxgen,pc:i.value.pc,pm:i.value.pm,checked:1};rs(Q).then(R=>{Cn({message:R.returnMsg,type:"success"})}).catch(R=>{Cn.error(R.returnMsg)})}}),(Q,R)=>{const M=qe("el-option"),w=qe("el-form-item"),Y=qe("el-input");return ce(),we("div",fLe,[te("div",FLe,[C(w,{label:"优化算法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).algorithm,"onUpdate:modelValue":R[0]||(R[0]=G=>V(i).algorithm=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(l),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"屏幕输出等级:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).iout,"onUpdate:modelValue":R[1]||(R[1]=G=>V(i).iout=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"续算开关:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).irestart,"onUpdate:modelValue":R[2]||(R[2]=G=>V(i).irestart=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(r),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"试验设计方法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).ndoe,"onUpdate:modelValue":R[3]||(R[3]=G=>V(i).ndoe=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(a),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"样本点数:","label-width":V(t)},{default:T(()=>[te("div",ZLe,[C(Y,{type:"text",style:{"margin-right":"10px"},modelValue:V(i).ns,"onUpdate:modelValue":R[4]||(R[4]=G=>V(i).ns=G)},{prefix:T(()=>[it("初始 ")]),_:1},8,["modelValue"]),C(Y,{type:"text",style:{"margin-right":"10px"},modelValue:V(i).nsmax,"onUpdate:modelValue":R[5]||(R[5]=G=>V(i).nsmax=G)},{prefix:T(()=>[it("最大")]),_:1},8,["modelValue"])])]),_:1},8,["label-width"]),C(w,{label:"低可信度样本点数:","label-width":V(t)},{default:T(()=>[te("div",ALe,[C(Y,{type:"text",style:{"margin-right":"10px"},modelValue:V(i).nslf,"onUpdate:modelValue":R[6]||(R[6]=G=>V(i).nslf=G)},{prefix:T(()=>[it("初始 ")]),_:1},8,["modelValue"]),C(Y,{type:"text",style:{"margin-right":"10px"},modelValue:V(i).nsmaxlf,"onUpdate:modelValue":R[7]||(R[7]=G=>V(i).nsmaxlf=G)},{prefix:T(()=>[it("最大")]),_:1},8,["modelValue"])])]),_:1},8,["label-width"]),C(w,{label:"各可信度样本点数:","label-width":V(t)},{default:T(()=>[te("div",NLe,[C(Y,{type:"text",style:{"margin-right":"10px"},modelValue:V(i).nsmk,"onUpdate:modelValue":R[8]||(R[8]=G=>V(i).nsmk=G)},{prefix:T(()=>[it("初始 ")]),_:1},8,["modelValue"]),C(Y,{type:"text",style:{"margin-right":"10px"},modelValue:V(i).nsmaxmk,"onUpdate:modelValue":R[9]||(R[9]=G=>V(i).nsmaxmk=G)},{prefix:T(()=>[it("最大")]),_:1},8,["modelValue"])])]),_:1},8,["label-width"]),C(w,{label:"最优解收敛性容差:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).xtol,"onUpdate:modelValue":R[10]||(R[10]=G=>V(i).xtol=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"真实函数约束容差:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).feasibilitytolreal,"onUpdate:modelValue":R[11]||(R[11]=G=>V(i).feasibilitytolreal=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"代理模型约束容差:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).feasibilitytolsurro,"onUpdate:modelValue":R[12]||(R[12]=G=>V(i).feasibilitytolsurro=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"选择代理模型:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).surromod,"onUpdate:modelValue":R[13]||(R[13]=G=>V(i).surromod=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(d),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"相关函数:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).corr,"onUpdate:modelValue":R[14]||(R[14]=G=>V(i).corr=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(c),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"是否优化超参数:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).consttheta,"onUpdate:modelValue":R[15]||(R[15]=G=>V(i).consttheta=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(h),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"Kriging模型阶数:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).porder,"onUpdate:modelValue":R[16]||(R[16]=G=>V(i).porder=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(u),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"相关矩阵分解法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).dcmp,"onUpdate:modelValue":R[17]||(R[17]=G=>V(i).dcmp=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(m),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"超参数优化算法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).paraopt,"onUpdate:modelValue":R[18]||(R[18]=G=>V(i).paraopt=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(p),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"正则化方法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).regular,"onUpdate:modelValue":R[19]||(R[19]=G=>V(i).regular=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(g),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"加点准则:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).infill,"onUpdate:modelValue":R[20]||(R[20]=G=>V(i).infill=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(b),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"KB加点数量:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).nparallel,"onUpdate:modelValue":R[21]||(R[21]=G=>V(i).nparallel=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"子优化方法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).iopt,"onUpdate:modelValue":R[22]||(R[22]=G=>V(i).iopt=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(f),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"约束处理方法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).icstr,"onUpdate:modelValue":R[23]||(R[23]=G=>V(i).icstr=G),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Z),G=>(ce(),ft(M,{key:G.value,label:G.label,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(w,{label:"种群规模:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).ipopsize,"onUpdate:modelValue":R[24]||(R[24]=G=>V(i).ipopsize=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"最大进化代数:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).maxgen,"onUpdate:modelValue":R[25]||(R[25]=G=>V(i).maxgen=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"交叉概率:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).pc,"onUpdate:modelValue":R[26]||(R[26]=G=>V(i).pc=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(w,{label:"变异概率:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(i).pm,"onUpdate:modelValue":R[27]||(R[27]=G=>V(i).pm=G),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])])])}}},RLe={class:"XFpdding"},SLe={class:"numberinput lefttext"},Rse={__name:"Joptimize",setup(s,{expose:e}){x(100);let t=x(170);x(200);let i=x({algorithm:"nsga2",popsize:100,epoch:100,probcrossover:.1,probmut:.1,proboperator:"SBX交叉",probscale:1,strategy:"最佳保留策略",operator:"倒位变异",gpu:"NO"}),n=x(),o=x();x("");let l=x([{label:"nsga2",value:"nsga2"},{label:"GA",value:"GA"},{label:"PSO",value:"PSO"}]),r=x([{label:"SBX交叉",value:"SBX交叉"}]);x("GA");let a=x([{label:"最佳保留策略",value:"最佳保留策略"}]),d=x([{label:"倒位变异",value:"倒位变异"}]);x([{label:"1e-7",value:"1e-7"}]);let c=x([{label:"YES",value:"YES"},{label:"NO",value:"NO"}]);const h=p=>{n.value=p;const g={transCode:"MDO0018",pid:n.value};rs(g).then(b=>{b.hasOwnProperty("eid")&&u(b)}).catch(b=>{Cn.error(b.returnMsg)})},u=p=>{n.value=p.pid,o.value=p.eid,i.value.algorithm=p.algorithm,i.value.popsize=Number(p.popsize),i.value.epoch=Number(p.epoch),i.value.probcrossover=Number(p.probcrossover),i.value.probmut=Number(p.probmut),i.value.probscale=Number(p.probscale),i.value.proboperator=p.proboperator,i.value.strategy=p.strategy,i.value.operator=p.operator,i.value.gpu=p.gpu};return e({getoptimize:h,getoptimizeAssign:u,getaddsave:()=>{const p={transCode:"MDO0019",pid:n.value,eid:o.value,algorithm:i.value.algorithm,popsize:i.value.popsize,epoch:i.value.epoch,probcrossover:i.value.probcrossover,probmut:i.value.probmut,proboperator:i.value.proboperator,probscale:i.value.probscale,strategy:i.value.strategy,operator:i.value.operator,gpu:i.value.gpu,checked:1};rs(p).then(g=>{Cn({message:g.returnMsg,type:"success"})}).catch(g=>{Cn.error(g.returnMsg)})}}),(p,g)=>{const b=qe("el-option"),f=qe("el-form-item"),Z=qe("el-input-number"),A=qe("el-form");return ce(),we("div",RLe,[te("div",SLe,[C(A,null,{default:T(()=>[C(f,{label:"优化算法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).algorithm,"onUpdate:modelValue":g[0]||(g[0]=N=>V(i).algorithm=N),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(l),N=>(ce(),ft(b,{key:N.value,label:N.label,value:N.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(f,{label:"种群规模:","label-width":V(t)},{default:T(()=>[C(Z,{modelValue:V(i).popsize,"onUpdate:modelValue":g[1]||(g[1]=N=>V(i).popsize=N),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(f,{label:"迭代次数:","label-width":V(t)},{default:T(()=>[C(Z,{modelValue:V(i).epoch,"onUpdate:modelValue":g[2]||(g[2]=N=>V(i).epoch=N),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(f,{label:"交叉概率:","label-width":V(t)},{default:T(()=>[C(Z,{modelValue:V(i).probcrossover,"onUpdate:modelValue":g[3]||(g[3]=N=>V(i).probcrossover=N),step:.1,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(f,{label:"变异概率:","label-width":V(t)},{default:T(()=>[C(Z,{modelValue:V(i).probmut,"onUpdate:modelValue":g[4]||(g[4]=N=>V(i).probmut=N),step:.1,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(f,{label:"交叉算子:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).proboperator,"onUpdate:modelValue":g[5]||(g[5]=N=>V(i).proboperator=N),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(r),N=>(ce(),ft(b,{key:N.value,label:N.label,value:N.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(f,{label:"竞赛规模:","label-width":V(t)},{default:T(()=>[C(Z,{modelValue:V(i).probscale,"onUpdate:modelValue":g[6]||(g[6]=N=>V(i).probscale=N),min:0,max:100,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(f,{label:"保留优选策略:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).strategy,"onUpdate:modelValue":g[7]||(g[7]=N=>V(i).strategy=N),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(a),N=>(ce(),ft(b,{key:N.value,label:N.label,value:N.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(f,{label:"变异算子选择:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).operator,"onUpdate:modelValue":g[8]||(g[8]=N=>V(i).operator=N),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(d),N=>(ce(),ft(b,{key:N.value,label:N.label,value:N.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(f,{label:"GPU加速:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).gpu,"onUpdate:modelValue":g[9]||(g[9]=N=>V(i).gpu=N),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(c),N=>(ce(),ft(b,{key:N.value,label:N.label,value:N.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])])}}},WLe={class:"XFpdding"},VLe={class:"numberinput lefttext"},Sse={__name:"Toptimize",setup(s,{expose:e}){x(100);let t=x(170);x(200);let i=x({algorithm:"SQP",majoriterationslimit:100,majorprintlevel:10,linearfeasibilitytolerance:1e-6,nonlinearfeasibilitytolerance:1e-6,optimalitytolerance:1e-4,verifylevel:"-1"}),n=x(),o=x();x("");let l=x([{label:"SQP",value:"SQP"}]),r=x([{label:"不验证",value:"-1"},{label:"简单验证",value:"0"},{label:"目标详细验证",value:"1"},{label:"约束详细验证",value:"2"},{label:"目标+约束详细验证",value:"3"}]);const a=h=>{n.value=h;const u={transCode:"MDO0033",pid:n.value};rs(u).then(m=>{m.hasOwnProperty("grid")&&d(m)}).catch(m=>{Cn.error(m.returnMsg)})},d=h=>{n.value=h.pid,o.value=h.grid,i.value.algorithm=h.algorithm,i.value.majoriterationslimit=h.majoriterationslimit,i.value.majorprintlevel=h.majorprintlevel,i.value.linearfeasibilitytolerance=h.linearfeasibilitytolerance,i.value.nonlinearfeasibilitytolerance=h.nonlinearfeasibilitytolerance,i.value.optimalitytolerance=h.optimalitytolerance,i.value.verifylevel=h.verifylevel};return e({getToptimize:a,getToptimizeAssign:d,getaddTsave:()=>{const h={transCode:"MDO0034",pid:n.value,grid:o.value,algorithm:i.value.algorithm,majoriterationslimit:i.value.majoriterationslimit,majorprintlevel:i.value.majorprintlevel,linearfeasibilitytolerance:i.value.linearfeasibilitytolerance,nonlinearfeasibilitytolerance:i.value.nonlinearfeasibilitytolerance,optimalitytolerance:i.value.optimalitytolerance,verifylevel:i.value.verifylevel,checked:1};rs(h).then(u=>{n.value=u.pid,Cn({message:u.returnMsg,type:"success"})}).catch(u=>{Cn.error(u.returnMsg)})}}),(h,u)=>{const m=qe("el-option"),p=qe("el-form-item"),g=qe("el-input"),b=qe("el-form");return ce(),we("div",WLe,[te("div",VLe,[C(b,null,{default:T(()=>[C(p,{label:"优化算法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).algorithm,"onUpdate:modelValue":u[0]||(u[0]=f=>V(i).algorithm=f),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(l),f=>(ce(),ft(m,{key:f.value,label:f.label,value:f.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(p,{label:"最大外迭代步数:","label-width":V(t)},{default:T(()=>[C(g,{modelValue:V(i).majoriterationslimit,"onUpdate:modelValue":u[1]||(u[1]=f=>V(i).majoriterationslimit=f),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(p,{label:"输出精度等级:","label-width":V(t)},{default:T(()=>[C(g,{modelValue:V(i).majorprintlevel,"onUpdate:modelValue":u[2]||(u[2]=f=>V(i).majorprintlevel=f),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(p,{label:"线性约束容差:","label-width":V(t)},{default:T(()=>[C(g,{modelValue:V(i).linearfeasibilitytolerance,"onUpdate:modelValue":u[3]||(u[3]=f=>V(i).linearfeasibilitytolerance=f),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(p,{label:"非线性约束容差:","label-width":V(t)},{default:T(()=>[C(g,{modelValue:V(i).nonlinearfeasibilitytolerance,"onUpdate:modelValue":u[4]||(u[4]=f=>V(i).nonlinearfeasibilitytolerance=f),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(p,{label:"最优性度量容差:","label-width":V(t)},{default:T(()=>[C(g,{modelValue:V(i).optimalitytolerance,"onUpdate:modelValue":u[5]||(u[5]=f=>V(i).optimalitytolerance=f),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(p,{label:"梯度验证级别:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).verifylevel,"onUpdate:modelValue":u[6]||(u[6]=f=>V(i).verifylevel=f),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(r),f=>(ce(),ft(m,{key:f.value,label:f.label,value:f.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])])}}};var upe={exports:{}};/*!
- * jQuery JavaScript Library v3.7.1
- * https://jquery.com/
- *
- * Copyright OpenJS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2023-08-28T13:37Z
- */(function(s){(function(e,t){s.exports=e.document?t(e,!0):function(i){if(!i.document)throw new Error("jQuery requires a window with a document");return t(i)}})(typeof window<"u"?window:hQe,function(e,t){var i=[],n=Object.getPrototypeOf,o=i.slice,l=i.flat?function(S){return i.flat.call(S)}:function(S){return i.concat.apply([],S)},r=i.push,a=i.indexOf,d={},c=d.toString,h=d.hasOwnProperty,u=h.toString,m=u.call(Object),p={},g=function(y){return typeof y=="function"&&typeof y.nodeType!="number"&&typeof y.item!="function"},b=function(y){return y!=null&&y===y.window},f=e.document,Z={type:!0,src:!0,nonce:!0,noModule:!0};function A(S,y,B){B=B||f;var I,z,_=B.createElement("script");if(_.text=S,y)for(I in Z)z=y[I]||y.getAttribute&&y.getAttribute(I),z&&_.setAttribute(I,z);B.head.appendChild(_).parentNode.removeChild(_)}function N(S){return S==null?S+"":typeof S=="object"||typeof S=="function"?d[c.call(S)]||"object":typeof S}var W="3.7.1",Q=/HTML$/i,R=function(S,y){return new R.fn.init(S,y)};R.fn=R.prototype={jquery:W,constructor:R,length:0,toArray:function(){return o.call(this)},get:function(S){return S==null?o.call(this):S<0?this[S+this.length]:this[S]},pushStack:function(S){var y=R.merge(this.constructor(),S);return y.prevObject=this,y},each:function(S){return R.each(this,S)},map:function(S){return this.pushStack(R.map(this,function(y,B){return S.call(y,B,y)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(R.grep(this,function(S,y){return(y+1)%2}))},odd:function(){return this.pushStack(R.grep(this,function(S,y){return y%2}))},eq:function(S){var y=this.length,B=+S+(S<0?y:0);return this.pushStack(B>=0&&B<y?[this[B]]:[])},end:function(){return this.prevObject||this.constructor()},push:r,sort:i.sort,splice:i.splice},R.extend=R.fn.extend=function(){var S,y,B,I,z,_,$=arguments[0]||{},me=1,he=arguments.length,Se=!1;for(typeof $=="boolean"&&(Se=$,$=arguments[me]||{},me++),typeof $!="object"&&!g($)&&($={}),me===he&&($=this,me--);me<he;me++)if((S=arguments[me])!=null)for(y in S)I=S[y],!(y==="__proto__"||$===I)&&(Se&&I&&(R.isPlainObject(I)||(z=Array.isArray(I)))?(B=$[y],z&&!Array.isArray(B)?_=[]:!z&&!R.isPlainObject(B)?_={}:_=B,z=!1,$[y]=R.extend(Se,_,I)):I!==void 0&&($[y]=I));return $},R.extend({expando:"jQuery"+(W+Math.random()).replace(/\D/g,""),isReady:!0,error:function(S){throw new Error(S)},noop:function(){},isPlainObject:function(S){var y,B;return!S||c.call(S)!=="[object Object]"?!1:(y=n(S),y?(B=h.call(y,"constructor")&&y.constructor,typeof B=="function"&&u.call(B)===m):!0)},isEmptyObject:function(S){var y;for(y in S)return!1;return!0},globalEval:function(S,y,B){A(S,{nonce:y&&y.nonce},B)},each:function(S,y){var B,I=0;if(M(S))for(B=S.length;I<B&&y.call(S[I],I,S[I])!==!1;I++);else for(I in S)if(y.call(S[I],I,S[I])===!1)break;return S},text:function(S){var y,B="",I=0,z=S.nodeType;if(!z)for(;y=S[I++];)B+=R.text(y);return z===1||z===11?S.textContent:z===9?S.documentElement.textContent:z===3||z===4?S.nodeValue:B},makeArray:function(S,y){var B=y||[];return S!=null&&(M(Object(S))?R.merge(B,typeof S=="string"?[S]:S):r.call(B,S)),B},inArray:function(S,y,B){return y==null?-1:a.call(y,S,B)},isXMLDoc:function(S){var y=S&&S.namespaceURI,B=S&&(S.ownerDocument||S).documentElement;return!Q.test(y||B&&B.nodeName||"HTML")},merge:function(S,y){for(var B=+y.length,I=0,z=S.length;I<B;I++)S[z++]=y[I];return S.length=z,S},grep:function(S,y,B){for(var I,z=[],_=0,$=S.length,me=!B;_<$;_++)I=!y(S[_],_),I!==me&&z.push(S[_]);return z},map:function(S,y,B){var I,z,_=0,$=[];if(M(S))for(I=S.length;_<I;_++)z=y(S[_],_,B),z!=null&&$.push(z);else for(_ in S)z=y(S[_],_,B),z!=null&&$.push(z);return l($)},guid:1,support:p}),typeof Symbol=="function"&&(R.fn[Symbol.iterator]=i[Symbol.iterator]),R.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(S,y){d["[object "+y+"]"]=y.toLowerCase()});function M(S){var y=!!S&&"length"in S&&S.length,B=N(S);return g(S)||b(S)?!1:B==="array"||y===0||typeof y=="number"&&y>0&&y-1 in S}function w(S,y){return S.nodeName&&S.nodeName.toLowerCase()===y.toLowerCase()}var Y=i.pop,G=i.sort,P=i.splice,j="[\\x20\\t\\r\\n\\f]",X=new RegExp("^"+j+"+|((?:^|[^\\\\])(?:\\\\.)*)"+j+"+$","g");R.contains=function(S,y){var B=y&&y.parentNode;return S===B||!!(B&&B.nodeType===1&&(S.contains?S.contains(B):S.compareDocumentPosition&&S.compareDocumentPosition(B)&16))};var ie=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function se(S,y){return y?S==="\0"?"�":S.slice(0,-1)+"\\"+S.charCodeAt(S.length-1).toString(16)+" ":"\\"+S}R.escapeSelector=function(S){return(S+"").replace(ie,se)};var pe=f,Ue=r;(function(){var S,y,B,I,z,_=Ue,$,me,he,Se,_e,tt=R.expando,Ie=0,mt=0,Hi=Mf(),Ln=Mf(),mn=Mf(),Yl=Mf(),ys=function(ae,Fe){return ae===Fe&&(z=!0),0},jo="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",Mr="(?:\\\\[\\da-fA-F]{1,6}"+j+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",yn="\\["+j+"*("+Mr+")(?:"+j+"*([*^$|!~]?=)"+j+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+Mr+"))|)"+j+"*\\]",ze=":("+Mr+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+yn+")*)|.*)\\)|)",O=new RegExp(j+"+","g"),zt=new RegExp("^"+j+"*,"+j+"*"),ri=new RegExp("^"+j+"*([>+~]|"+j+")"+j+"*"),Ri=new RegExp(j+"|>"),bi=new RegExp(ze),ni=new RegExp("^"+Mr+"$"),Wo={ID:new RegExp("^#("+Mr+")"),CLASS:new RegExp("^\\.("+Mr+")"),TAG:new RegExp("^("+Mr+"|[*])"),ATTR:new RegExp("^"+yn),PSEUDO:new RegExp("^"+ze),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+j+"*(even|odd|(([+-]|)(\\d*)n|)"+j+"*(?:([+-]|)"+j+"*(\\d+)|))"+j+"*\\)|)","i"),bool:new RegExp("^(?:"+jo+")$","i"),needsContext:new RegExp("^"+j+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+j+"*((?:-\\d)?\\d*)"+j+"*\\)|)(?=[^-]|$)","i")},zl=/^(?:input|select|textarea|button)$/i,Un=/^h\d$/i,mi=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Ha=/[+~]/,Co=new RegExp("\\\\[\\da-fA-F]{1,6}"+j+"?|\\\\([^\\r\\n\\f])","g"),Wn=function(ae,Fe){var Le="0x"+ae.slice(1)-65536;return Fe||(Le<0?String.fromCharCode(Le+65536):String.fromCharCode(Le>>10|55296,Le&1023|56320))},J0=function(){kn()},U1=iL(function(ae){return ae.disabled===!0&&w(ae,"fieldset")},{dir:"parentNode",next:"legend"});function $B(){try{return $.activeElement}catch{}}try{_.apply(i=o.call(pe.childNodes),pe.childNodes),i[pe.childNodes.length].nodeType}catch{_={apply:function(Fe,Le){Ue.apply(Fe,o.call(Le))},call:function(Fe){Ue.apply(Fe,o.call(arguments,1))}}}function As(ae,Fe,Le,Ye){var nt,Ct,xt,ai,Jt,In,Pi,on=Fe&&Fe.ownerDocument,Dn=Fe?Fe.nodeType:9;if(Le=Le||[],typeof ae!="string"||!ae||Dn!==1&&Dn!==9&&Dn!==11)return Le;if(!Ye&&(kn(Fe),Fe=Fe||$,he)){if(Dn!==11&&(Jt=mi.exec(ae)))if(nt=Jt[1]){if(Dn===9)if(xt=Fe.getElementById(nt)){if(xt.id===nt)return _.call(Le,xt),Le}else return Le;else if(on&&(xt=on.getElementById(nt))&&As.contains(Fe,xt)&&xt.id===nt)return _.call(Le,xt),Le}else{if(Jt[2])return _.apply(Le,Fe.getElementsByTagName(ae)),Le;if((nt=Jt[3])&&Fe.getElementsByClassName)return _.apply(Le,Fe.getElementsByClassName(nt)),Le}if(!Yl[ae+" "]&&(!Se||!Se.test(ae))){if(Pi=ae,on=Fe,Dn===1&&(Ri.test(ae)||ri.test(ae))){for(on=Ha.test(ae)&&Ve(Fe.parentNode)||Fe,(on!=Fe||!p.scope)&&((ai=Fe.getAttribute("id"))?ai=R.escapeSelector(ai):Fe.setAttribute("id",ai=tt)),In=f1(ae),Ct=In.length;Ct--;)In[Ct]=(ai?"#"+ai:":scope")+" "+tL(In[Ct]);Pi=In.join(",")}try{return _.apply(Le,on.querySelectorAll(Pi)),Le}catch{Yl(ae,!0)}finally{ai===tt&&Fe.removeAttribute("id")}}}return Fne(ae.replace(X,"$1"),Fe,Le,Ye)}function Mf(){var ae=[];function Fe(Le,Ye){return ae.push(Le+" ")>y.cacheLength&&delete Fe[ae.shift()],Fe[Le+" "]=Ye}return Fe}function Zc(ae){return ae[tt]=!0,ae}function X0(ae){var Fe=$.createElement("fieldset");try{return!!ae(Fe)}catch{return!1}finally{Fe.parentNode&&Fe.parentNode.removeChild(Fe),Fe=null}}function s9(ae){return function(Fe){return w(Fe,"input")&&Fe.type===ae}}function o9(ae){return function(Fe){return(w(Fe,"input")||w(Fe,"button"))&&Fe.type===ae}}function eL(ae){return function(Fe){return"form"in Fe?Fe.parentNode&&Fe.disabled===!1?"label"in Fe?"label"in Fe.parentNode?Fe.parentNode.disabled===ae:Fe.disabled===ae:Fe.isDisabled===ae||Fe.isDisabled!==!ae&&U1(Fe)===ae:Fe.disabled===ae:"label"in Fe?Fe.disabled===ae:!1}}function D(ae){return Zc(function(Fe){return Fe=+Fe,Zc(function(Le,Ye){for(var nt,Ct=ae([],Le.length,Fe),xt=Ct.length;xt--;)Le[nt=Ct[xt]]&&(Le[nt]=!(Ye[nt]=Le[nt]))})})}function Ve(ae){return ae&&typeof ae.getElementsByTagName<"u"&&ae}function kn(ae){var Fe,Le=ae?ae.ownerDocument||ae:pe;return Le==$||Le.nodeType!==9||!Le.documentElement||($=Le,me=$.documentElement,he=!R.isXMLDoc($),_e=me.matches||me.webkitMatchesSelector||me.msMatchesSelector,me.msMatchesSelector&&pe!=$&&(Fe=$.defaultView)&&Fe.top!==Fe&&Fe.addEventListener("unload",J0),p.getById=X0(function(Ye){return me.appendChild(Ye).id=R.expando,!$.getElementsByName||!$.getElementsByName(R.expando).length}),p.disconnectedMatch=X0(function(Ye){return _e.call(Ye,"*")}),p.scope=X0(function(){return $.querySelectorAll(":scope")}),p.cssHas=X0(function(){try{return $.querySelector(":has(*,:jqfake)"),!1}catch{return!0}}),p.getById?(y.filter.ID=function(Ye){var nt=Ye.replace(Co,Wn);return function(Ct){return Ct.getAttribute("id")===nt}},y.find.ID=function(Ye,nt){if(typeof nt.getElementById<"u"&&he){var Ct=nt.getElementById(Ye);return Ct?[Ct]:[]}}):(y.filter.ID=function(Ye){var nt=Ye.replace(Co,Wn);return function(Ct){var xt=typeof Ct.getAttributeNode<"u"&&Ct.getAttributeNode("id");return xt&&xt.value===nt}},y.find.ID=function(Ye,nt){if(typeof nt.getElementById<"u"&&he){var Ct,xt,ai,Jt=nt.getElementById(Ye);if(Jt){if(Ct=Jt.getAttributeNode("id"),Ct&&Ct.value===Ye)return[Jt];for(ai=nt.getElementsByName(Ye),xt=0;Jt=ai[xt++];)if(Ct=Jt.getAttributeNode("id"),Ct&&Ct.value===Ye)return[Jt]}return[]}}),y.find.TAG=function(Ye,nt){return typeof nt.getElementsByTagName<"u"?nt.getElementsByTagName(Ye):nt.querySelectorAll(Ye)},y.find.CLASS=function(Ye,nt){if(typeof nt.getElementsByClassName<"u"&&he)return nt.getElementsByClassName(Ye)},Se=[],X0(function(Ye){var nt;me.appendChild(Ye).innerHTML="<a id='"+tt+"' href='' disabled='disabled'></a><select id='"+tt+"-\r\\' disabled='disabled'><option selected=''></option></select>",Ye.querySelectorAll("[selected]").length||Se.push("\\["+j+"*(?:value|"+jo+")"),Ye.querySelectorAll("[id~="+tt+"-]").length||Se.push("~="),Ye.querySelectorAll("a#"+tt+"+*").length||Se.push(".#.+[+~]"),Ye.querySelectorAll(":checked").length||Se.push(":checked"),nt=$.createElement("input"),nt.setAttribute("type","hidden"),Ye.appendChild(nt).setAttribute("name","D"),me.appendChild(Ye).disabled=!0,Ye.querySelectorAll(":disabled").length!==2&&Se.push(":enabled",":disabled"),nt=$.createElement("input"),nt.setAttribute("name",""),Ye.appendChild(nt),Ye.querySelectorAll("[name='']").length||Se.push("\\["+j+"*name"+j+"*="+j+`*(?:''|"")`)}),p.cssHas||Se.push(":has"),Se=Se.length&&new RegExp(Se.join("|")),ys=function(Ye,nt){if(Ye===nt)return z=!0,0;var Ct=!Ye.compareDocumentPosition-!nt.compareDocumentPosition;return Ct||(Ct=(Ye.ownerDocument||Ye)==(nt.ownerDocument||nt)?Ye.compareDocumentPosition(nt):1,Ct&1||!p.sortDetached&&nt.compareDocumentPosition(Ye)===Ct?Ye===$||Ye.ownerDocument==pe&&As.contains(pe,Ye)?-1:nt===$||nt.ownerDocument==pe&&As.contains(pe,nt)?1:I?a.call(I,Ye)-a.call(I,nt):0:Ct&4?-1:1)}),$}As.matches=function(ae,Fe){return As(ae,null,null,Fe)},As.matchesSelector=function(ae,Fe){if(kn(ae),he&&!Yl[Fe+" "]&&(!Se||!Se.test(Fe)))try{var Le=_e.call(ae,Fe);if(Le||p.disconnectedMatch||ae.document&&ae.document.nodeType!==11)return Le}catch{Yl(Fe,!0)}return As(Fe,$,null,[ae]).length>0},As.contains=function(ae,Fe){return(ae.ownerDocument||ae)!=$&&kn(ae),R.contains(ae,Fe)},As.attr=function(ae,Fe){(ae.ownerDocument||ae)!=$&&kn(ae);var Le=y.attrHandle[Fe.toLowerCase()],Ye=Le&&h.call(y.attrHandle,Fe.toLowerCase())?Le(ae,Fe,!he):void 0;return Ye!==void 0?Ye:ae.getAttribute(Fe)},As.error=function(ae){throw new Error("Syntax error, unrecognized expression: "+ae)},R.uniqueSort=function(ae){var Fe,Le=[],Ye=0,nt=0;if(z=!p.sortStable,I=!p.sortStable&&o.call(ae,0),G.call(ae,ys),z){for(;Fe=ae[nt++];)Fe===ae[nt]&&(Ye=Le.push(nt));for(;Ye--;)P.call(ae,Le[Ye],1)}return I=null,ae},R.fn.uniqueSort=function(){return this.pushStack(R.uniqueSort(o.apply(this)))},y=R.expr={cacheLength:50,createPseudo:Zc,match:Wo,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(ae){return ae[1]=ae[1].replace(Co,Wn),ae[3]=(ae[3]||ae[4]||ae[5]||"").replace(Co,Wn),ae[2]==="~="&&(ae[3]=" "+ae[3]+" "),ae.slice(0,4)},CHILD:function(ae){return ae[1]=ae[1].toLowerCase(),ae[1].slice(0,3)==="nth"?(ae[3]||As.error(ae[0]),ae[4]=+(ae[4]?ae[5]+(ae[6]||1):2*(ae[3]==="even"||ae[3]==="odd")),ae[5]=+(ae[7]+ae[8]||ae[3]==="odd")):ae[3]&&As.error(ae[0]),ae},PSEUDO:function(ae){var Fe,Le=!ae[6]&&ae[2];return Wo.CHILD.test(ae[0])?null:(ae[3]?ae[2]=ae[4]||ae[5]||"":Le&&bi.test(Le)&&(Fe=f1(Le,!0))&&(Fe=Le.indexOf(")",Le.length-Fe)-Le.length)&&(ae[0]=ae[0].slice(0,Fe),ae[2]=Le.slice(0,Fe)),ae.slice(0,3))}},filter:{TAG:function(ae){var Fe=ae.replace(Co,Wn).toLowerCase();return ae==="*"?function(){return!0}:function(Le){return w(Le,Fe)}},CLASS:function(ae){var Fe=Hi[ae+" "];return Fe||(Fe=new RegExp("(^|"+j+")"+ae+"("+j+"|$)"))&&Hi(ae,function(Le){return Fe.test(typeof Le.className=="string"&&Le.className||typeof Le.getAttribute<"u"&&Le.getAttribute("class")||"")})},ATTR:function(ae,Fe,Le){return function(Ye){var nt=As.attr(Ye,ae);return nt==null?Fe==="!=":Fe?(nt+="",Fe==="="?nt===Le:Fe==="!="?nt!==Le:Fe==="^="?Le&&nt.indexOf(Le)===0:Fe==="*="?Le&&nt.indexOf(Le)>-1:Fe==="$="?Le&&nt.slice(-Le.length)===Le:Fe==="~="?(" "+nt.replace(O," ")+" ").indexOf(Le)>-1:Fe==="|="?nt===Le||nt.slice(0,Le.length+1)===Le+"-":!1):!0}},CHILD:function(ae,Fe,Le,Ye,nt){var Ct=ae.slice(0,3)!=="nth",xt=ae.slice(-4)!=="last",ai=Fe==="of-type";return Ye===1&&nt===0?function(Jt){return!!Jt.parentNode}:function(Jt,In,Pi){var on,Dn,ki,po,Md,ga=Ct!==xt?"nextSibling":"previousSibling",ah=Jt.parentNode,hm=ai&&Jt.nodeName.toLowerCase(),fN=!Pi&&!ai,Pa=!1;if(ah){if(Ct){for(;ga;){for(ki=Jt;ki=ki[ga];)if(ai?w(ki,hm):ki.nodeType===1)return!1;Md=ga=ae==="only"&&!Md&&"nextSibling"}return!0}if(Md=[xt?ah.firstChild:ah.lastChild],xt&&fN){for(Dn=ah[tt]||(ah[tt]={}),on=Dn[ae]||[],po=on[0]===Ie&&on[1],Pa=po&&on[2],ki=po&&ah.childNodes[po];ki=++po&&ki&&ki[ga]||(Pa=po=0)||Md.pop();)if(ki.nodeType===1&&++Pa&&ki===Jt){Dn[ae]=[Ie,po,Pa];break}}else if(fN&&(Dn=Jt[tt]||(Jt[tt]={}),on=Dn[ae]||[],po=on[0]===Ie&&on[1],Pa=po),Pa===!1)for(;(ki=++po&&ki&&ki[ga]||(Pa=po=0)||Md.pop())&&!((ai?w(ki,hm):ki.nodeType===1)&&++Pa&&(fN&&(Dn=ki[tt]||(ki[tt]={}),Dn[ae]=[Ie,Pa]),ki===Jt)););return Pa-=nt,Pa===Ye||Pa%Ye===0&&Pa/Ye>=0}}},PSEUDO:function(ae,Fe){var Le,Ye=y.pseudos[ae]||y.setFilters[ae.toLowerCase()]||As.error("unsupported pseudo: "+ae);return Ye[tt]?Ye(Fe):Ye.length>1?(Le=[ae,ae,"",Fe],y.setFilters.hasOwnProperty(ae.toLowerCase())?Zc(function(nt,Ct){for(var xt,ai=Ye(nt,Fe),Jt=ai.length;Jt--;)xt=a.call(nt,ai[Jt]),nt[xt]=!(Ct[xt]=ai[Jt])}):function(nt){return Ye(nt,0,Le)}):Ye}},pseudos:{not:Zc(function(ae){var Fe=[],Le=[],Ye=d9(ae.replace(X,"$1"));return Ye[tt]?Zc(function(nt,Ct,xt,ai){for(var Jt,In=Ye(nt,null,ai,[]),Pi=nt.length;Pi--;)(Jt=In[Pi])&&(nt[Pi]=!(Ct[Pi]=Jt))}):function(nt,Ct,xt){return Fe[0]=nt,Ye(Fe,null,xt,Le),Fe[0]=null,!Le.pop()}}),has:Zc(function(ae){return function(Fe){return As(ae,Fe).length>0}}),contains:Zc(function(ae){return ae=ae.replace(Co,Wn),function(Fe){return(Fe.textContent||R.text(Fe)).indexOf(ae)>-1}}),lang:Zc(function(ae){return ni.test(ae||"")||As.error("unsupported lang: "+ae),ae=ae.replace(Co,Wn).toLowerCase(),function(Fe){var Le;do if(Le=he?Fe.lang:Fe.getAttribute("xml:lang")||Fe.getAttribute("lang"))return Le=Le.toLowerCase(),Le===ae||Le.indexOf(ae+"-")===0;while((Fe=Fe.parentNode)&&Fe.nodeType===1);return!1}}),target:function(ae){var Fe=e.location&&e.location.hash;return Fe&&Fe.slice(1)===ae.id},root:function(ae){return ae===me},focus:function(ae){return ae===$B()&&$.hasFocus()&&!!(ae.type||ae.href||~ae.tabIndex)},enabled:eL(!1),disabled:eL(!0),checked:function(ae){return w(ae,"input")&&!!ae.checked||w(ae,"option")&&!!ae.selected},selected:function(ae){return ae.parentNode&&ae.parentNode.selectedIndex,ae.selected===!0},empty:function(ae){for(ae=ae.firstChild;ae;ae=ae.nextSibling)if(ae.nodeType<6)return!1;return!0},parent:function(ae){return!y.pseudos.empty(ae)},header:function(ae){return Un.test(ae.nodeName)},input:function(ae){return zl.test(ae.nodeName)},button:function(ae){return w(ae,"input")&&ae.type==="button"||w(ae,"button")},text:function(ae){var Fe;return w(ae,"input")&&ae.type==="text"&&((Fe=ae.getAttribute("type"))==null||Fe.toLowerCase()==="text")},first:D(function(){return[0]}),last:D(function(ae,Fe){return[Fe-1]}),eq:D(function(ae,Fe,Le){return[Le<0?Le+Fe:Le]}),even:D(function(ae,Fe){for(var Le=0;Le<Fe;Le+=2)ae.push(Le);return ae}),odd:D(function(ae,Fe){for(var Le=1;Le<Fe;Le+=2)ae.push(Le);return ae}),lt:D(function(ae,Fe,Le){var Ye;for(Le<0?Ye=Le+Fe:Le>Fe?Ye=Fe:Ye=Le;--Ye>=0;)ae.push(Ye);return ae}),gt:D(function(ae,Fe,Le){for(var Ye=Le<0?Le+Fe:Le;++Ye<Fe;)ae.push(Ye);return ae})}},y.pseudos.nth=y.pseudos.eq;for(S in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})y.pseudos[S]=s9(S);for(S in{submit:!0,reset:!0})y.pseudos[S]=o9(S);function fne(){}fne.prototype=y.filters=y.pseudos,y.setFilters=new fne;function f1(ae,Fe){var Le,Ye,nt,Ct,xt,ai,Jt,In=Ln[ae+" "];if(In)return Fe?0:In.slice(0);for(xt=ae,ai=[],Jt=y.preFilter;xt;){(!Le||(Ye=zt.exec(xt)))&&(Ye&&(xt=xt.slice(Ye[0].length)||xt),ai.push(nt=[])),Le=!1,(Ye=ri.exec(xt))&&(Le=Ye.shift(),nt.push({value:Le,type:Ye[0].replace(X," ")}),xt=xt.slice(Le.length));for(Ct in y.filter)(Ye=Wo[Ct].exec(xt))&&(!Jt[Ct]||(Ye=Jt[Ct](Ye)))&&(Le=Ye.shift(),nt.push({value:Le,type:Ct,matches:Ye}),xt=xt.slice(Le.length));if(!Le)break}return Fe?xt.length:xt?As.error(ae):Ln(ae,ai).slice(0)}function tL(ae){for(var Fe=0,Le=ae.length,Ye="";Fe<Le;Fe++)Ye+=ae[Fe].value;return Ye}function iL(ae,Fe,Le){var Ye=Fe.dir,nt=Fe.next,Ct=nt||Ye,xt=Le&&Ct==="parentNode",ai=mt++;return Fe.first?function(Jt,In,Pi){for(;Jt=Jt[Ye];)if(Jt.nodeType===1||xt)return ae(Jt,In,Pi);return!1}:function(Jt,In,Pi){var on,Dn,ki=[Ie,ai];if(Pi){for(;Jt=Jt[Ye];)if((Jt.nodeType===1||xt)&&ae(Jt,In,Pi))return!0}else for(;Jt=Jt[Ye];)if(Jt.nodeType===1||xt)if(Dn=Jt[tt]||(Jt[tt]={}),nt&&w(Jt,nt))Jt=Jt[Ye]||Jt;else{if((on=Dn[Ct])&&on[0]===Ie&&on[1]===ai)return ki[2]=on[2];if(Dn[Ct]=ki,ki[2]=ae(Jt,In,Pi))return!0}return!1}}function l9(ae){return ae.length>1?function(Fe,Le,Ye){for(var nt=ae.length;nt--;)if(!ae[nt](Fe,Le,Ye))return!1;return!0}:ae[0]}function QSe(ae,Fe,Le){for(var Ye=0,nt=Fe.length;Ye<nt;Ye++)As(ae,Fe[Ye],Le);return Le}function nL(ae,Fe,Le,Ye,nt){for(var Ct,xt=[],ai=0,Jt=ae.length,In=Fe!=null;ai<Jt;ai++)(Ct=ae[ai])&&(!Le||Le(Ct,Ye,nt))&&(xt.push(Ct),In&&Fe.push(ai));return xt}function r9(ae,Fe,Le,Ye,nt,Ct){return Ye&&!Ye[tt]&&(Ye=r9(Ye)),nt&&!nt[tt]&&(nt=r9(nt,Ct)),Zc(function(xt,ai,Jt,In){var Pi,on,Dn,ki,po=[],Md=[],ga=ai.length,ah=xt||QSe(Fe||"*",Jt.nodeType?[Jt]:Jt,[]),hm=ae&&(xt||!Fe)?nL(ah,po,ae,Jt,In):ah;if(Le?(ki=nt||(xt?ae:ga||Ye)?[]:ai,Le(hm,ki,Jt,In)):ki=hm,Ye)for(Pi=nL(ki,Md),Ye(Pi,[],Jt,In),on=Pi.length;on--;)(Dn=Pi[on])&&(ki[Md[on]]=!(hm[Md[on]]=Dn));if(xt){if(nt||ae){if(nt){for(Pi=[],on=ki.length;on--;)(Dn=ki[on])&&Pi.push(hm[on]=Dn);nt(null,ki=[],Pi,In)}for(on=ki.length;on--;)(Dn=ki[on])&&(Pi=nt?a.call(xt,Dn):po[on])>-1&&(xt[Pi]=!(ai[Pi]=Dn))}}else ki=nL(ki===ai?ki.splice(ga,ki.length):ki),nt?nt(null,ai,ki,In):_.apply(ai,ki)})}function a9(ae){for(var Fe,Le,Ye,nt=ae.length,Ct=y.relative[ae[0].type],xt=Ct||y.relative[" "],ai=Ct?1:0,Jt=iL(function(on){return on===Fe},xt,!0),In=iL(function(on){return a.call(Fe,on)>-1},xt,!0),Pi=[function(on,Dn,ki){var po=!Ct&&(ki||Dn!=B)||((Fe=Dn).nodeType?Jt(on,Dn,ki):In(on,Dn,ki));return Fe=null,po}];ai<nt;ai++)if(Le=y.relative[ae[ai].type])Pi=[iL(l9(Pi),Le)];else{if(Le=y.filter[ae[ai].type].apply(null,ae[ai].matches),Le[tt]){for(Ye=++ai;Ye<nt&&!y.relative[ae[Ye].type];Ye++);return r9(ai>1&&l9(Pi),ai>1&&tL(ae.slice(0,ai-1).concat({value:ae[ai-2].type===" "?"*":""})).replace(X,"$1"),Le,ai<Ye&&a9(ae.slice(ai,Ye)),Ye<nt&&a9(ae=ae.slice(Ye)),Ye<nt&&tL(ae))}Pi.push(Le)}return l9(Pi)}function ySe(ae,Fe){var Le=Fe.length>0,Ye=ae.length>0,nt=function(Ct,xt,ai,Jt,In){var Pi,on,Dn,ki=0,po="0",Md=Ct&&[],ga=[],ah=B,hm=Ct||Ye&&y.find.TAG("*",In),fN=Ie+=ah==null?1:Math.random()||.1,Pa=hm.length;for(In&&(B=xt==$||xt||In);po!==Pa&&(Pi=hm[po])!=null;po++){if(Ye&&Pi){for(on=0,!xt&&Pi.ownerDocument!=$&&(kn(Pi),ai=!he);Dn=ae[on++];)if(Dn(Pi,xt||$,ai)){_.call(Jt,Pi);break}In&&(Ie=fN)}Le&&((Pi=!Dn&&Pi)&&ki--,Ct&&Md.push(Pi))}if(ki+=po,Le&&po!==ki){for(on=0;Dn=Fe[on++];)Dn(Md,ga,xt,ai);if(Ct){if(ki>0)for(;po--;)Md[po]||ga[po]||(ga[po]=Y.call(Jt));ga=nL(ga)}_.apply(Jt,ga),In&&!Ct&&ga.length>0&&ki+Fe.length>1&&R.uniqueSort(Jt)}return In&&(Ie=fN,B=ah),Md};return Le?Zc(nt):nt}function d9(ae,Fe){var Le,Ye=[],nt=[],Ct=mn[ae+" "];if(!Ct){for(Fe||(Fe=f1(ae)),Le=Fe.length;Le--;)Ct=a9(Fe[Le]),Ct[tt]?Ye.push(Ct):nt.push(Ct);Ct=mn(ae,ySe(nt,Ye)),Ct.selector=ae}return Ct}function Fne(ae,Fe,Le,Ye){var nt,Ct,xt,ai,Jt,In=typeof ae=="function"&&ae,Pi=!Ye&&f1(ae=In.selector||ae);if(Le=Le||[],Pi.length===1){if(Ct=Pi[0]=Pi[0].slice(0),Ct.length>2&&(xt=Ct[0]).type==="ID"&&Fe.nodeType===9&&he&&y.relative[Ct[1].type]){if(Fe=(y.find.ID(xt.matches[0].replace(Co,Wn),Fe)||[])[0],Fe)In&&(Fe=Fe.parentNode);else return Le;ae=ae.slice(Ct.shift().value.length)}for(nt=Wo.needsContext.test(ae)?0:Ct.length;nt--&&(xt=Ct[nt],!y.relative[ai=xt.type]);)if((Jt=y.find[ai])&&(Ye=Jt(xt.matches[0].replace(Co,Wn),Ha.test(Ct[0].type)&&Ve(Fe.parentNode)||Fe))){if(Ct.splice(nt,1),ae=Ye.length&&tL(Ct),!ae)return _.apply(Le,Ye),Le;break}}return(In||d9(ae,Pi))(Ye,Fe,!he,Le,!Fe||Ha.test(ae)&&Ve(Fe.parentNode)||Fe),Le}p.sortStable=tt.split("").sort(ys).join("")===tt,kn(),p.sortDetached=X0(function(ae){return ae.compareDocumentPosition($.createElement("fieldset"))&1}),R.find=As,R.expr[":"]=R.expr.pseudos,R.unique=R.uniqueSort,As.compile=d9,As.select=Fne,As.setDocument=kn,As.tokenize=f1,As.escape=R.escapeSelector,As.getText=R.text,As.isXML=R.isXMLDoc,As.selectors=R.expr,As.support=R.support,As.uniqueSort=R.uniqueSort})();var Qe=function(S,y,B){for(var I=[],z=B!==void 0;(S=S[y])&&S.nodeType!==9;)if(S.nodeType===1){if(z&&R(S).is(B))break;I.push(S)}return I},He=function(S,y){for(var B=[];S;S=S.nextSibling)S.nodeType===1&&S!==y&&B.push(S);return B},Te=R.expr.match.needsContext,xe=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Je(S,y,B){return g(y)?R.grep(S,function(I,z){return!!y.call(I,z,I)!==B}):y.nodeType?R.grep(S,function(I){return I===y!==B}):typeof y!="string"?R.grep(S,function(I){return a.call(y,I)>-1!==B}):R.filter(y,S,B)}R.filter=function(S,y,B){var I=y[0];return B&&(S=":not("+S+")"),y.length===1&&I.nodeType===1?R.find.matchesSelector(I,S)?[I]:[]:R.find.matches(S,R.grep(y,function(z){return z.nodeType===1}))},R.fn.extend({find:function(S){var y,B,I=this.length,z=this;if(typeof S!="string")return this.pushStack(R(S).filter(function(){for(y=0;y<I;y++)if(R.contains(z[y],this))return!0}));for(B=this.pushStack([]),y=0;y<I;y++)R.find(S,z[y],B);return I>1?R.uniqueSort(B):B},filter:function(S){return this.pushStack(Je(this,S||[],!1))},not:function(S){return this.pushStack(Je(this,S||[],!0))},is:function(S){return!!Je(this,typeof S=="string"&&Te.test(S)?R(S):S||[],!1).length}});var Mt,St=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Pe=R.fn.init=function(S,y,B){var I,z;if(!S)return this;if(B=B||Mt,typeof S=="string")if(S[0]==="<"&&S[S.length-1]===">"&&S.length>=3?I=[null,S,null]:I=St.exec(S),I&&(I[1]||!y))if(I[1]){if(y=y instanceof R?y[0]:y,R.merge(this,R.parseHTML(I[1],y&&y.nodeType?y.ownerDocument||y:f,!0)),xe.test(I[1])&&R.isPlainObject(y))for(I in y)g(this[I])?this[I](y[I]):this.attr(I,y[I]);return this}else return z=f.getElementById(I[2]),z&&(this[0]=z,this.length=1),this;else return!y||y.jquery?(y||B).find(S):this.constructor(y).find(S);else{if(S.nodeType)return this[0]=S,this.length=1,this;if(g(S))return B.ready!==void 0?B.ready(S):S(R)}return R.makeArray(S,this)};Pe.prototype=R.fn,Mt=R(f);var Be=/^(?:parents|prev(?:Until|All))/,rt={children:!0,contents:!0,next:!0,prev:!0};R.fn.extend({has:function(S){var y=R(S,this),B=y.length;return this.filter(function(){for(var I=0;I<B;I++)if(R.contains(this,y[I]))return!0})},closest:function(S,y){var B,I=0,z=this.length,_=[],$=typeof S!="string"&&R(S);if(!Te.test(S)){for(;I<z;I++)for(B=this[I];B&&B!==y;B=B.parentNode)if(B.nodeType<11&&($?$.index(B)>-1:B.nodeType===1&&R.find.matchesSelector(B,S))){_.push(B);break}}return this.pushStack(_.length>1?R.uniqueSort(_):_)},index:function(S){return S?typeof S=="string"?a.call(R(S),this[0]):a.call(this,S.jquery?S[0]:S):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(S,y){return this.pushStack(R.uniqueSort(R.merge(this.get(),R(S,y))))},addBack:function(S){return this.add(S==null?this.prevObject:this.prevObject.filter(S))}});function Tt(S,y){for(;(S=S[y])&&S.nodeType!==1;);return S}R.each({parent:function(S){var y=S.parentNode;return y&&y.nodeType!==11?y:null},parents:function(S){return Qe(S,"parentNode")},parentsUntil:function(S,y,B){return Qe(S,"parentNode",B)},next:function(S){return Tt(S,"nextSibling")},prev:function(S){return Tt(S,"previousSibling")},nextAll:function(S){return Qe(S,"nextSibling")},prevAll:function(S){return Qe(S,"previousSibling")},nextUntil:function(S,y,B){return Qe(S,"nextSibling",B)},prevUntil:function(S,y,B){return Qe(S,"previousSibling",B)},siblings:function(S){return He((S.parentNode||{}).firstChild,S)},children:function(S){return He(S.firstChild)},contents:function(S){return S.contentDocument!=null&&n(S.contentDocument)?S.contentDocument:(w(S,"template")&&(S=S.content||S),R.merge([],S.childNodes))}},function(S,y){R.fn[S]=function(B,I){var z=R.map(this,y,B);return S.slice(-5)!=="Until"&&(I=B),I&&typeof I=="string"&&(z=R.filter(I,z)),this.length>1&&(rt[S]||R.uniqueSort(z),Be.test(S)&&z.reverse()),this.pushStack(z)}});var qt=/[^\x20\t\r\n\f]+/g;function yt(S){var y={};return R.each(S.match(qt)||[],function(B,I){y[I]=!0}),y}R.Callbacks=function(S){S=typeof S=="string"?yt(S):R.extend({},S);var y,B,I,z,_=[],$=[],me=-1,he=function(){for(z=z||S.once,I=y=!0;$.length;me=-1)for(B=$.shift();++me<_.length;)_[me].apply(B[0],B[1])===!1&&S.stopOnFalse&&(me=_.length,B=!1);S.memory||(B=!1),y=!1,z&&(B?_=[]:_="")},Se={add:function(){return _&&(B&&!y&&(me=_.length-1,$.push(B)),function _e(tt){R.each(tt,function(Ie,mt){g(mt)?(!S.unique||!Se.has(mt))&&_.push(mt):mt&&mt.length&&N(mt)!=="string"&&_e(mt)})}(arguments),B&&!y&&he()),this},remove:function(){return R.each(arguments,function(_e,tt){for(var Ie;(Ie=R.inArray(tt,_,Ie))>-1;)_.splice(Ie,1),Ie<=me&&me--}),this},has:function(_e){return _e?R.inArray(_e,_)>-1:_.length>0},empty:function(){return _&&(_=[]),this},disable:function(){return z=$=[],_=B="",this},disabled:function(){return!_},lock:function(){return z=$=[],!B&&!y&&(_=B=""),this},locked:function(){return!!z},fireWith:function(_e,tt){return z||(tt=tt||[],tt=[_e,tt.slice?tt.slice():tt],$.push(tt),y||he()),this},fire:function(){return Se.fireWith(this,arguments),this},fired:function(){return!!I}};return Se};function fe(S){return S}function Vi(S){throw S}function st(S,y,B,I){var z;try{S&&g(z=S.promise)?z.call(S).done(y).fail(B):S&&g(z=S.then)?z.call(S,y,B):y.apply(void 0,[S].slice(I))}catch(_){B.apply(void 0,[_])}}R.extend({Deferred:function(S){var y=[["notify","progress",R.Callbacks("memory"),R.Callbacks("memory"),2],["resolve","done",R.Callbacks("once memory"),R.Callbacks("once memory"),0,"resolved"],["reject","fail",R.Callbacks("once memory"),R.Callbacks("once memory"),1,"rejected"]],B="pending",I={state:function(){return B},always:function(){return z.done(arguments).fail(arguments),this},catch:function(_){return I.then(null,_)},pipe:function(){var _=arguments;return R.Deferred(function($){R.each(y,function(me,he){var Se=g(_[he[4]])&&_[he[4]];z[he[1]](function(){var _e=Se&&Se.apply(this,arguments);_e&&g(_e.promise)?_e.promise().progress($.notify).done($.resolve).fail($.reject):$[he[0]+"With"](this,Se?[_e]:arguments)})}),_=null}).promise()},then:function(_,$,me){var he=0;function Se(_e,tt,Ie,mt){return function(){var Hi=this,Ln=arguments,mn=function(){var ys,jo;if(!(_e<he)){if(ys=Ie.apply(Hi,Ln),ys===tt.promise())throw new TypeError("Thenable self-resolution");jo=ys&&(typeof ys=="object"||typeof ys=="function")&&ys.then,g(jo)?mt?jo.call(ys,Se(he,tt,fe,mt),Se(he,tt,Vi,mt)):(he++,jo.call(ys,Se(he,tt,fe,mt),Se(he,tt,Vi,mt),Se(he,tt,fe,tt.notifyWith))):(Ie!==fe&&(Hi=void 0,Ln=[ys]),(mt||tt.resolveWith)(Hi,Ln))}},Yl=mt?mn:function(){try{mn()}catch(ys){R.Deferred.exceptionHook&&R.Deferred.exceptionHook(ys,Yl.error),_e+1>=he&&(Ie!==Vi&&(Hi=void 0,Ln=[ys]),tt.rejectWith(Hi,Ln))}};_e?Yl():(R.Deferred.getErrorHook?Yl.error=R.Deferred.getErrorHook():R.Deferred.getStackHook&&(Yl.error=R.Deferred.getStackHook()),e.setTimeout(Yl))}}return R.Deferred(function(_e){y[0][3].add(Se(0,_e,g(me)?me:fe,_e.notifyWith)),y[1][3].add(Se(0,_e,g(_)?_:fe)),y[2][3].add(Se(0,_e,g($)?$:Vi))}).promise()},promise:function(_){return _!=null?R.extend(_,I):I}},z={};return R.each(y,function(_,$){var me=$[2],he=$[5];I[$[1]]=me.add,he&&me.add(function(){B=he},y[3-_][2].disable,y[3-_][3].disable,y[0][2].lock,y[0][3].lock),me.add($[3].fire),z[$[0]]=function(){return z[$[0]+"With"](this===z?void 0:this,arguments),this},z[$[0]+"With"]=me.fireWith}),I.promise(z),S&&S.call(z,z),z},when:function(S){var y=arguments.length,B=y,I=Array(B),z=o.call(arguments),_=R.Deferred(),$=function(me){return function(he){I[me]=this,z[me]=arguments.length>1?o.call(arguments):he,--y||_.resolveWith(I,z)}};if(y<=1&&(st(S,_.done($(B)).resolve,_.reject,!y),_.state()==="pending"||g(z[B]&&z[B].then)))return _.then();for(;B--;)st(z[B],$(B),_.reject);return _.promise()}});var Fn=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;R.Deferred.exceptionHook=function(S,y){e.console&&e.console.warn&&S&&Fn.test(S.name)&&e.console.warn("jQuery.Deferred exception: "+S.message,S.stack,y)},R.readyException=function(S){e.setTimeout(function(){throw S})};var qi=R.Deferred();R.fn.ready=function(S){return qi.then(S).catch(function(y){R.readyException(y)}),this},R.extend({isReady:!1,readyWait:1,ready:function(S){(S===!0?--R.readyWait:R.isReady)||(R.isReady=!0,!(S!==!0&&--R.readyWait>0)&&qi.resolveWith(f,[R]))}}),R.ready.then=qi.then;function Zo(){f.removeEventListener("DOMContentLoaded",Zo),e.removeEventListener("load",Zo),R.ready()}f.readyState==="complete"||f.readyState!=="loading"&&!f.documentElement.doScroll?e.setTimeout(R.ready):(f.addEventListener("DOMContentLoaded",Zo),e.addEventListener("load",Zo));var is=function(S,y,B,I,z,_,$){var me=0,he=S.length,Se=B==null;if(N(B)==="object"){z=!0;for(me in B)is(S,y,me,B[me],!0,_,$)}else if(I!==void 0&&(z=!0,g(I)||($=!0),Se&&($?(y.call(S,I),y=null):(Se=y,y=function(_e,tt,Ie){return Se.call(R(_e),Ie)})),y))for(;me<he;me++)y(S[me],B,$?I:I.call(S[me],me,y(S[me],B)));return z?S:Se?y.call(S):he?y(S[0],B):_},Ao=/^-ms-/,js=/-([a-z])/g;function xl(S,y){return y.toUpperCase()}function wi(S){return S.replace(Ao,"ms-").replace(js,xl)}var rl=function(S){return S.nodeType===1||S.nodeType===9||!+S.nodeType};function yo(){this.expando=R.expando+yo.uid++}yo.uid=1,yo.prototype={cache:function(S){var y=S[this.expando];return y||(y={},rl(S)&&(S.nodeType?S[this.expando]=y:Object.defineProperty(S,this.expando,{value:y,configurable:!0}))),y},set:function(S,y,B){var I,z=this.cache(S);if(typeof y=="string")z[wi(y)]=B;else for(I in y)z[wi(I)]=y[I];return z},get:function(S,y){return y===void 0?this.cache(S):S[this.expando]&&S[this.expando][wi(y)]},access:function(S,y,B){return y===void 0||y&&typeof y=="string"&&B===void 0?this.get(S,y):(this.set(S,y,B),B!==void 0?B:y)},remove:function(S,y){var B,I=S[this.expando];if(I!==void 0){if(y!==void 0)for(Array.isArray(y)?y=y.map(wi):(y=wi(y),y=y in I?[y]:y.match(qt)||[]),B=y.length;B--;)delete I[y[B]];(y===void 0||R.isEmptyObject(I))&&(S.nodeType?S[this.expando]=void 0:delete S[this.expando])}},hasData:function(S){var y=S[this.expando];return y!==void 0&&!R.isEmptyObject(y)}};var Dt=new yo,oo=new yo,oh=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ou=/[A-Z]/g;function Oa(S){return S==="true"?!0:S==="false"?!1:S==="null"?null:S===+S+""?+S:oh.test(S)?JSON.parse(S):S}function al(S,y,B){var I;if(B===void 0&&S.nodeType===1)if(I="data-"+y.replace(ou,"-$&").toLowerCase(),B=S.getAttribute(I),typeof B=="string"){try{B=Oa(B)}catch{}oo.set(S,y,B)}else B=void 0;return B}R.extend({hasData:function(S){return oo.hasData(S)||Dt.hasData(S)},data:function(S,y,B){return oo.access(S,y,B)},removeData:function(S,y){oo.remove(S,y)},_data:function(S,y,B){return Dt.access(S,y,B)},_removeData:function(S,y){Dt.remove(S,y)}}),R.fn.extend({data:function(S,y){var B,I,z,_=this[0],$=_&&_.attributes;if(S===void 0){if(this.length&&(z=oo.get(_),_.nodeType===1&&!Dt.get(_,"hasDataAttrs"))){for(B=$.length;B--;)$[B]&&(I=$[B].name,I.indexOf("data-")===0&&(I=wi(I.slice(5)),al(_,I,z[I])));Dt.set(_,"hasDataAttrs",!0)}return z}return typeof S=="object"?this.each(function(){oo.set(this,S)}):is(this,function(me){var he;if(_&&me===void 0)return he=oo.get(_,S),he!==void 0||(he=al(_,S),he!==void 0)?he:void 0;this.each(function(){oo.set(this,S,me)})},null,y,arguments.length>1,null,!0)},removeData:function(S){return this.each(function(){oo.remove(this,S)})}}),R.extend({queue:function(S,y,B){var I;if(S)return y=(y||"fx")+"queue",I=Dt.get(S,y),B&&(!I||Array.isArray(B)?I=Dt.access(S,y,R.makeArray(B)):I.push(B)),I||[]},dequeue:function(S,y){y=y||"fx";var B=R.queue(S,y),I=B.length,z=B.shift(),_=R._queueHooks(S,y),$=function(){R.dequeue(S,y)};z==="inprogress"&&(z=B.shift(),I--),z&&(y==="fx"&&B.unshift("inprogress"),delete _.stop,z.call(S,$,_)),!I&&_&&_.empty.fire()},_queueHooks:function(S,y){var B=y+"queueHooks";return Dt.get(S,B)||Dt.access(S,B,{empty:R.Callbacks("once memory").add(function(){Dt.remove(S,[y+"queue",B])})})}}),R.fn.extend({queue:function(S,y){var B=2;return typeof S!="string"&&(y=S,S="fx",B--),arguments.length<B?R.queue(this[0],S):y===void 0?this:this.each(function(){var I=R.queue(this,S,y);R._queueHooks(this,S),S==="fx"&&I[0]!=="inprogress"&&R.dequeue(this,S)})},dequeue:function(S){return this.each(function(){R.dequeue(this,S)})},clearQueue:function(S){return this.queue(S||"fx",[])},promise:function(S,y){var B,I=1,z=R.Deferred(),_=this,$=this.length,me=function(){--I||z.resolveWith(_,[_])};for(typeof S!="string"&&(y=S,S=void 0),S=S||"fx";$--;)B=Dt.get(_[$],S+"queueHooks"),B&&B.empty&&(I++,B.empty.add(me));return me(),z.promise(y)}});var je=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ut=new RegExp("^(?:([+-])=|)("+je+")([a-z%]*)$","i"),cn=["Top","Right","Bottom","Left"],$i=f.documentElement,ei=function(S){return R.contains(S.ownerDocument,S)},ja={composed:!0};$i.getRootNode&&(ei=function(S){return R.contains(S.ownerDocument,S)||S.getRootNode(ja)===S.ownerDocument});var _i=function(S,y){return S=y||S,S.style.display==="none"||S.style.display===""&&ei(S)&&R.css(S,"display")==="none"};function hn(S,y,B,I){var z,_,$=20,me=I?function(){return I.cur()}:function(){return R.css(S,y,"")},he=me(),Se=B&&B[3]||(R.cssNumber[y]?"":"px"),_e=S.nodeType&&(R.cssNumber[y]||Se!=="px"&&+he)&&ut.exec(R.css(S,y));if(_e&&_e[3]!==Se){for(he=he/2,Se=Se||_e[3],_e=+he||1;$--;)R.style(S,y,_e+Se),(1-_)*(1-(_=me()/he||.5))<=0&&($=0),_e=_e/_;_e=_e*2,R.style(S,y,_e+Se),B=B||[]}return B&&(_e=+_e||+he||0,z=B[1]?_e+(B[1]+1)*B[2]:+B[2],I&&(I.unit=Se,I.start=_e,I.end=z)),z}var yr={};function wd(S){var y,B=S.ownerDocument,I=S.nodeName,z=yr[I];return z||(y=B.body.appendChild(B.createElement(I)),z=R.css(y,"display"),y.parentNode.removeChild(y),z==="none"&&(z="block"),yr[I]=z,z)}function Ai(S,y){for(var B,I,z=[],_=0,$=S.length;_<$;_++)I=S[_],I.style&&(B=I.style.display,y?(B==="none"&&(z[_]=Dt.get(I,"display")||null,z[_]||(I.style.display="")),I.style.display===""&&_i(I)&&(z[_]=wd(I))):B!=="none"&&(z[_]="none",Dt.set(I,"display",B)));for(_=0;_<$;_++)z[_]!=null&&(S[_].style.display=z[_]);return S}R.fn.extend({show:function(){return Ai(this,!0)},hide:function(){return Ai(this)},toggle:function(S){return typeof S=="boolean"?S?this.show():this.hide():this.each(function(){_i(this)?R(this).show():R(this).hide()})}});var Li=/^(?:checkbox|radio)$/i,ma=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,lh=/^$|^module$|\/(?:java|ecma)script/i;(function(){var S=f.createDocumentFragment(),y=S.appendChild(f.createElement("div")),B=f.createElement("input");B.setAttribute("type","radio"),B.setAttribute("checked","checked"),B.setAttribute("name","t"),y.appendChild(B),p.checkClone=y.cloneNode(!0).cloneNode(!0).lastChild.checked,y.innerHTML="<textarea>x</textarea>",p.noCloneChecked=!!y.cloneNode(!0).lastChild.defaultValue,y.innerHTML="<option></option>",p.option=!!y.lastChild})();var Oi={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Oi.tbody=Oi.tfoot=Oi.colgroup=Oi.caption=Oi.thead,Oi.th=Oi.td,p.option||(Oi.optgroup=Oi.option=[1,"<select multiple='multiple'>","</select>"]);function No(S,y){var B;return typeof S.getElementsByTagName<"u"?B=S.getElementsByTagName(y||"*"):typeof S.querySelectorAll<"u"?B=S.querySelectorAll(y||"*"):B=[],y===void 0||y&&w(S,y)?R.merge([S],B):B}function hi(S,y){for(var B=0,I=S.length;B<I;B++)Dt.set(S[B],"globalEval",!y||Dt.get(y[B],"globalEval"))}var ee=/<|&#?\w+;/;function ne(S,y,B,I,z){for(var _,$,me,he,Se,_e,tt=y.createDocumentFragment(),Ie=[],mt=0,Hi=S.length;mt<Hi;mt++)if(_=S[mt],_||_===0)if(N(_)==="object")R.merge(Ie,_.nodeType?[_]:_);else if(!ee.test(_))Ie.push(y.createTextNode(_));else{for($=$||tt.appendChild(y.createElement("div")),me=(ma.exec(_)||["",""])[1].toLowerCase(),he=Oi[me]||Oi._default,$.innerHTML=he[1]+R.htmlPrefilter(_)+he[2],_e=he[0];_e--;)$=$.lastChild;R.merge(Ie,$.childNodes),$=tt.firstChild,$.textContent=""}for(tt.textContent="",mt=0;_=Ie[mt++];){if(I&&R.inArray(_,I)>-1){z&&z.push(_);continue}if(Se=ei(_),$=No(tt.appendChild(_),"script"),Se&&hi($),B)for(_e=0;_=$[_e++];)lh.test(_.type||"")&&B.push(_)}return tt}var le=/^([^.]*)(?:\.(.+)|)/;function ue(){return!0}function be(){return!1}function Ce(S,y,B,I,z,_){var $,me;if(typeof y=="object"){typeof B!="string"&&(I=I||B,B=void 0);for(me in y)Ce(S,me,B,I,y[me],_);return S}if(I==null&&z==null?(z=B,I=B=void 0):z==null&&(typeof B=="string"?(z=I,I=void 0):(z=I,I=B,B=void 0)),z===!1)z=be;else if(!z)return S;return _===1&&($=z,z=function(he){return R().off(he),$.apply(this,arguments)},z.guid=$.guid||($.guid=R.guid++)),S.each(function(){R.event.add(this,y,z,I,B)})}R.event={global:{},add:function(S,y,B,I,z){var _,$,me,he,Se,_e,tt,Ie,mt,Hi,Ln,mn=Dt.get(S);if(rl(S))for(B.handler&&(_=B,B=_.handler,z=_.selector),z&&R.find.matchesSelector($i,z),B.guid||(B.guid=R.guid++),(he=mn.events)||(he=mn.events=Object.create(null)),($=mn.handle)||($=mn.handle=function(Yl){return typeof R<"u"&&R.event.triggered!==Yl.type?R.event.dispatch.apply(S,arguments):void 0}),y=(y||"").match(qt)||[""],Se=y.length;Se--;)me=le.exec(y[Se])||[],mt=Ln=me[1],Hi=(me[2]||"").split(".").sort(),mt&&(tt=R.event.special[mt]||{},mt=(z?tt.delegateType:tt.bindType)||mt,tt=R.event.special[mt]||{},_e=R.extend({type:mt,origType:Ln,data:I,handler:B,guid:B.guid,selector:z,needsContext:z&&R.expr.match.needsContext.test(z),namespace:Hi.join(".")},_),(Ie=he[mt])||(Ie=he[mt]=[],Ie.delegateCount=0,(!tt.setup||tt.setup.call(S,I,Hi,$)===!1)&&S.addEventListener&&S.addEventListener(mt,$)),tt.add&&(tt.add.call(S,_e),_e.handler.guid||(_e.handler.guid=B.guid)),z?Ie.splice(Ie.delegateCount++,0,_e):Ie.push(_e),R.event.global[mt]=!0)},remove:function(S,y,B,I,z){var _,$,me,he,Se,_e,tt,Ie,mt,Hi,Ln,mn=Dt.hasData(S)&&Dt.get(S);if(!(!mn||!(he=mn.events))){for(y=(y||"").match(qt)||[""],Se=y.length;Se--;){if(me=le.exec(y[Se])||[],mt=Ln=me[1],Hi=(me[2]||"").split(".").sort(),!mt){for(mt in he)R.event.remove(S,mt+y[Se],B,I,!0);continue}for(tt=R.event.special[mt]||{},mt=(I?tt.delegateType:tt.bindType)||mt,Ie=he[mt]||[],me=me[2]&&new RegExp("(^|\\.)"+Hi.join("\\.(?:.*\\.|)")+"(\\.|$)"),$=_=Ie.length;_--;)_e=Ie[_],(z||Ln===_e.origType)&&(!B||B.guid===_e.guid)&&(!me||me.test(_e.namespace))&&(!I||I===_e.selector||I==="**"&&_e.selector)&&(Ie.splice(_,1),_e.selector&&Ie.delegateCount--,tt.remove&&tt.remove.call(S,_e));$&&!Ie.length&&((!tt.teardown||tt.teardown.call(S,Hi,mn.handle)===!1)&&R.removeEvent(S,mt,mn.handle),delete he[mt])}R.isEmptyObject(he)&&Dt.remove(S,"handle events")}},dispatch:function(S){var y,B,I,z,_,$,me=new Array(arguments.length),he=R.event.fix(S),Se=(Dt.get(this,"events")||Object.create(null))[he.type]||[],_e=R.event.special[he.type]||{};for(me[0]=he,y=1;y<arguments.length;y++)me[y]=arguments[y];if(he.delegateTarget=this,!(_e.preDispatch&&_e.preDispatch.call(this,he)===!1)){for($=R.event.handlers.call(this,he,Se),y=0;(z=$[y++])&&!he.isPropagationStopped();)for(he.currentTarget=z.elem,B=0;(_=z.handlers[B++])&&!he.isImmediatePropagationStopped();)(!he.rnamespace||_.namespace===!1||he.rnamespace.test(_.namespace))&&(he.handleObj=_,he.data=_.data,I=((R.event.special[_.origType]||{}).handle||_.handler).apply(z.elem,me),I!==void 0&&(he.result=I)===!1&&(he.preventDefault(),he.stopPropagation()));return _e.postDispatch&&_e.postDispatch.call(this,he),he.result}},handlers:function(S,y){var B,I,z,_,$,me=[],he=y.delegateCount,Se=S.target;if(he&&Se.nodeType&&!(S.type==="click"&&S.button>=1)){for(;Se!==this;Se=Se.parentNode||this)if(Se.nodeType===1&&!(S.type==="click"&&Se.disabled===!0)){for(_=[],$={},B=0;B<he;B++)I=y[B],z=I.selector+" ",$[z]===void 0&&($[z]=I.needsContext?R(z,this).index(Se)>-1:R.find(z,this,null,[Se]).length),$[z]&&_.push(I);_.length&&me.push({elem:Se,handlers:_})}}return Se=this,he<y.length&&me.push({elem:Se,handlers:y.slice(he)}),me},addProp:function(S,y){Object.defineProperty(R.Event.prototype,S,{enumerable:!0,configurable:!0,get:g(y)?function(){if(this.originalEvent)return y(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[S]},set:function(B){Object.defineProperty(this,S,{enumerable:!0,configurable:!0,writable:!0,value:B})}})},fix:function(S){return S[R.expando]?S:new R.Event(S)},special:{load:{noBubble:!0},click:{setup:function(S){var y=this||S;return Li.test(y.type)&&y.click&&w(y,"input")&&Xe(y,"click",!0),!1},trigger:function(S){var y=this||S;return Li.test(y.type)&&y.click&&w(y,"input")&&Xe(y,"click"),!0},_default:function(S){var y=S.target;return Li.test(y.type)&&y.click&&w(y,"input")&&Dt.get(y,"click")||w(y,"a")}},beforeunload:{postDispatch:function(S){S.result!==void 0&&S.originalEvent&&(S.originalEvent.returnValue=S.result)}}}};function Xe(S,y,B){if(!B){Dt.get(S,y)===void 0&&R.event.add(S,y,ue);return}Dt.set(S,y,!1),R.event.add(S,y,{namespace:!1,handler:function(I){var z,_=Dt.get(this,y);if(I.isTrigger&1&&this[y]){if(_)(R.event.special[y]||{}).delegateType&&I.stopPropagation();else if(_=o.call(arguments),Dt.set(this,y,_),this[y](),z=Dt.get(this,y),Dt.set(this,y,!1),_!==z)return I.stopImmediatePropagation(),I.preventDefault(),z}else _&&(Dt.set(this,y,R.event.trigger(_[0],_.slice(1),this)),I.stopPropagation(),I.isImmediatePropagationStopped=ue)}})}R.removeEvent=function(S,y,B){S.removeEventListener&&S.removeEventListener(y,B)},R.Event=function(S,y){if(!(this instanceof R.Event))return new R.Event(S,y);S&&S.type?(this.originalEvent=S,this.type=S.type,this.isDefaultPrevented=S.defaultPrevented||S.defaultPrevented===void 0&&S.returnValue===!1?ue:be,this.target=S.target&&S.target.nodeType===3?S.target.parentNode:S.target,this.currentTarget=S.currentTarget,this.relatedTarget=S.relatedTarget):this.type=S,y&&R.extend(this,y),this.timeStamp=S&&S.timeStamp||Date.now(),this[R.expando]=!0},R.Event.prototype={constructor:R.Event,isDefaultPrevented:be,isPropagationStopped:be,isImmediatePropagationStopped:be,isSimulated:!1,preventDefault:function(){var S=this.originalEvent;this.isDefaultPrevented=ue,S&&!this.isSimulated&&S.preventDefault()},stopPropagation:function(){var S=this.originalEvent;this.isPropagationStopped=ue,S&&!this.isSimulated&&S.stopPropagation()},stopImmediatePropagation:function(){var S=this.originalEvent;this.isImmediatePropagationStopped=ue,S&&!this.isSimulated&&S.stopImmediatePropagation(),this.stopPropagation()}},R.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},R.event.addProp),R.each({focus:"focusin",blur:"focusout"},function(S,y){function B(I){if(f.documentMode){var z=Dt.get(this,"handle"),_=R.event.fix(I);_.type=I.type==="focusin"?"focus":"blur",_.isSimulated=!0,z(I),_.target===_.currentTarget&&z(_)}else R.event.simulate(y,I.target,R.event.fix(I))}R.event.special[S]={setup:function(){var I;if(Xe(this,S,!0),f.documentMode)I=Dt.get(this,y),I||this.addEventListener(y,B),Dt.set(this,y,(I||0)+1);else return!1},trigger:function(){return Xe(this,S),!0},teardown:function(){var I;if(f.documentMode)I=Dt.get(this,y)-1,I?Dt.set(this,y,I):(this.removeEventListener(y,B),Dt.remove(this,y));else return!1},_default:function(I){return Dt.get(I.target,S)},delegateType:y},R.event.special[y]={setup:function(){var I=this.ownerDocument||this.document||this,z=f.documentMode?this:I,_=Dt.get(z,y);_||(f.documentMode?this.addEventListener(y,B):I.addEventListener(S,B,!0)),Dt.set(z,y,(_||0)+1)},teardown:function(){var I=this.ownerDocument||this.document||this,z=f.documentMode?this:I,_=Dt.get(z,y)-1;_?Dt.set(z,y,_):(f.documentMode?this.removeEventListener(y,B):I.removeEventListener(S,B,!0),Dt.remove(z,y))}}}),R.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(S,y){R.event.special[S]={delegateType:y,bindType:y,handle:function(B){var I,z=this,_=B.relatedTarget,$=B.handleObj;return(!_||_!==z&&!R.contains(z,_))&&(B.type=$.origType,I=$.handler.apply(this,arguments),B.type=y),I}}}),R.fn.extend({on:function(S,y,B,I){return Ce(this,S,y,B,I)},one:function(S,y,B,I){return Ce(this,S,y,B,I,1)},off:function(S,y,B){var I,z;if(S&&S.preventDefault&&S.handleObj)return I=S.handleObj,R(S.delegateTarget).off(I.namespace?I.origType+"."+I.namespace:I.origType,I.selector,I.handler),this;if(typeof S=="object"){for(z in S)this.off(z,y,S[z]);return this}return(y===!1||typeof y=="function")&&(B=y,y=void 0),B===!1&&(B=be),this.each(function(){R.event.remove(this,S,B,y)})}});var Nt=/<script|<style|<link/i,Bt=/checked\s*(?:[^=]|=\s*.checked.)/i,Ni=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function un(S,y){return w(S,"table")&&w(y.nodeType!==11?y:y.firstChild,"tr")&&R(S).children("tbody")[0]||S}function Zn(S){return S.type=(S.getAttribute("type")!==null)+"/"+S.type,S}function Vn(S){return(S.type||"").slice(0,5)==="true/"?S.type=S.type.slice(5):S.removeAttribute("type"),S}function ns(S,y){var B,I,z,_,$,me,he;if(y.nodeType===1){if(Dt.hasData(S)&&(_=Dt.get(S),he=_.events,he)){Dt.remove(y,"handle events");for(z in he)for(B=0,I=he[z].length;B<I;B++)R.event.add(y,z,he[z][B])}oo.hasData(S)&&($=oo.access(S),me=R.extend({},$),oo.set(y,me))}}function mo(S,y){var B=y.nodeName.toLowerCase();B==="input"&&Li.test(S.type)?y.checked=S.checked:(B==="input"||B==="textarea")&&(y.defaultValue=S.defaultValue)}function xs(S,y,B,I){y=l(y);var z,_,$,me,he,Se,_e=0,tt=S.length,Ie=tt-1,mt=y[0],Hi=g(mt);if(Hi||tt>1&&typeof mt=="string"&&!p.checkClone&&Bt.test(mt))return S.each(function(Ln){var mn=S.eq(Ln);Hi&&(y[0]=mt.call(this,Ln,mn.html())),xs(mn,y,B,I)});if(tt&&(z=ne(y,S[0].ownerDocument,!1,S,I),_=z.firstChild,z.childNodes.length===1&&(z=_),_||I)){for($=R.map(No(z,"script"),Zn),me=$.length;_e<tt;_e++)he=z,_e!==Ie&&(he=R.clone(he,!0,!0),me&&R.merge($,No(he,"script"))),B.call(S[_e],he,_e);if(me)for(Se=$[$.length-1].ownerDocument,R.map($,Vn),_e=0;_e<me;_e++)he=$[_e],lh.test(he.type||"")&&!Dt.access(he,"globalEval")&&R.contains(Se,he)&&(he.src&&(he.type||"").toLowerCase()!=="module"?R._evalUrl&&!he.noModule&&R._evalUrl(he.src,{nonce:he.nonce||he.getAttribute("nonce")},Se):A(he.textContent.replace(Ni,""),he,Se))}return S}function Cr(S,y,B){for(var I,z=y?R.filter(y,S):S,_=0;(I=z[_])!=null;_++)!B&&I.nodeType===1&&R.cleanData(No(I)),I.parentNode&&(B&&ei(I)&&hi(No(I,"script")),I.parentNode.removeChild(I));return S}R.extend({htmlPrefilter:function(S){return S},clone:function(S,y,B){var I,z,_,$,me=S.cloneNode(!0),he=ei(S);if(!p.noCloneChecked&&(S.nodeType===1||S.nodeType===11)&&!R.isXMLDoc(S))for($=No(me),_=No(S),I=0,z=_.length;I<z;I++)mo(_[I],$[I]);if(y)if(B)for(_=_||No(S),$=$||No(me),I=0,z=_.length;I<z;I++)ns(_[I],$[I]);else ns(S,me);return $=No(me,"script"),$.length>0&&hi($,!he&&No(S,"script")),me},cleanData:function(S){for(var y,B,I,z=R.event.special,_=0;(B=S[_])!==void 0;_++)if(rl(B)){if(y=B[Dt.expando]){if(y.events)for(I in y.events)z[I]?R.event.remove(B,I):R.removeEvent(B,I,y.handle);B[Dt.expando]=void 0}B[oo.expando]&&(B[oo.expando]=void 0)}}}),R.fn.extend({detach:function(S){return Cr(this,S,!0)},remove:function(S){return Cr(this,S)},text:function(S){return is(this,function(y){return y===void 0?R.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=y)})},null,S,arguments.length)},append:function(){return xs(this,arguments,function(S){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var y=un(this,S);y.appendChild(S)}})},prepend:function(){return xs(this,arguments,function(S){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var y=un(this,S);y.insertBefore(S,y.firstChild)}})},before:function(){return xs(this,arguments,function(S){this.parentNode&&this.parentNode.insertBefore(S,this)})},after:function(){return xs(this,arguments,function(S){this.parentNode&&this.parentNode.insertBefore(S,this.nextSibling)})},empty:function(){for(var S,y=0;(S=this[y])!=null;y++)S.nodeType===1&&(R.cleanData(No(S,!1)),S.textContent="");return this},clone:function(S,y){return S=S??!1,y=y??S,this.map(function(){return R.clone(this,S,y)})},html:function(S){return is(this,function(y){var B=this[0]||{},I=0,z=this.length;if(y===void 0&&B.nodeType===1)return B.innerHTML;if(typeof y=="string"&&!Nt.test(y)&&!Oi[(ma.exec(y)||["",""])[1].toLowerCase()]){y=R.htmlPrefilter(y);try{for(;I<z;I++)B=this[I]||{},B.nodeType===1&&(R.cleanData(No(B,!1)),B.innerHTML=y);B=0}catch{}}B&&this.empty().append(y)},null,S,arguments.length)},replaceWith:function(){var S=[];return xs(this,arguments,function(y){var B=this.parentNode;R.inArray(this,S)<0&&(R.cleanData(No(this)),B&&B.replaceChild(y,this))},S)}}),R.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(S,y){R.fn[S]=function(B){for(var I,z=[],_=R(B),$=_.length-1,me=0;me<=$;me++)I=me===$?this:this.clone(!0),R(_[me])[y](I),r.apply(z,I.get());return this.pushStack(z)}});var Ht=new RegExp("^("+je+")(?!px)[a-z%]+$","i"),Ae=/^--/,ct=function(S){var y=S.ownerDocument.defaultView;return(!y||!y.opener)&&(y=e),y.getComputedStyle(S)},Yt=function(S,y,B){var I,z,_={};for(z in y)_[z]=S.style[z],S.style[z]=y[z];I=B.call(S);for(z in y)S.style[z]=_[z];return I},Bn=new RegExp(cn.join("|"),"i");(function(){function S(){if(Se){he.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",Se.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",$i.appendChild(he).appendChild(Se);var _e=e.getComputedStyle(Se);B=_e.top!=="1%",me=y(_e.marginLeft)===12,Se.style.right="60%",_=y(_e.right)===36,I=y(_e.width)===36,Se.style.position="absolute",z=y(Se.offsetWidth/3)===12,$i.removeChild(he),Se=null}}function y(_e){return Math.round(parseFloat(_e))}var B,I,z,_,$,me,he=f.createElement("div"),Se=f.createElement("div");Se.style&&(Se.style.backgroundClip="content-box",Se.cloneNode(!0).style.backgroundClip="",p.clearCloneStyle=Se.style.backgroundClip==="content-box",R.extend(p,{boxSizingReliable:function(){return S(),I},pixelBoxStyles:function(){return S(),_},pixelPosition:function(){return S(),B},reliableMarginLeft:function(){return S(),me},scrollboxSize:function(){return S(),z},reliableTrDimensions:function(){var _e,tt,Ie,mt;return $==null&&(_e=f.createElement("table"),tt=f.createElement("tr"),Ie=f.createElement("div"),_e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",tt.style.cssText="box-sizing:content-box;border:1px solid",tt.style.height="1px",Ie.style.height="9px",Ie.style.display="block",$i.appendChild(_e).appendChild(tt).appendChild(Ie),mt=e.getComputedStyle(tt),$=parseInt(mt.height,10)+parseInt(mt.borderTopWidth,10)+parseInt(mt.borderBottomWidth,10)===tt.offsetHeight,$i.removeChild(_e)),$}}))})();function Ro(S,y,B){var I,z,_,$,me=Ae.test(y),he=S.style;return B=B||ct(S),B&&($=B.getPropertyValue(y)||B[y],me&&$&&($=$.replace(X,"$1")||void 0),$===""&&!ei(S)&&($=R.style(S,y)),!p.pixelBoxStyles()&&Ht.test($)&&Bn.test(y)&&(I=he.width,z=he.minWidth,_=he.maxWidth,he.minWidth=he.maxWidth=he.width=$,$=B.width,he.width=I,he.minWidth=z,he.maxWidth=_)),$!==void 0?$+"":$}function So(S,y){return{get:function(){if(S()){delete this.get;return}return(this.get=y).apply(this,arguments)}}}var Jl=["Webkit","Moz","ms"],dr=f.createElement("div").style,Fc={};function Xl(S){for(var y=S[0].toUpperCase()+S.slice(1),B=Jl.length;B--;)if(S=Jl[B]+y,S in dr)return S}function lu(S){var y=R.cssProps[S]||Fc[S];return y||(S in dr?S:Fc[S]=Xl(S)||S)}var mN=/^(none|table(?!-c[ea]).+)/,pN={position:"absolute",visibility:"hidden",display:"block"},JB={letterSpacing:"0",fontWeight:"400"};function Wf(S,y,B){var I=ut.exec(y);return I?Math.max(0,I[2]-(B||0))+(I[3]||"px"):y}function u1(S,y,B,I,z,_){var $=y==="width"?1:0,me=0,he=0,Se=0;if(B===(I?"border":"content"))return 0;for(;$<4;$+=2)B==="margin"&&(Se+=R.css(S,B+cn[$],!0,z)),I?(B==="content"&&(he-=R.css(S,"padding"+cn[$],!0,z)),B!=="margin"&&(he-=R.css(S,"border"+cn[$]+"Width",!0,z))):(he+=R.css(S,"padding"+cn[$],!0,z),B!=="padding"?he+=R.css(S,"border"+cn[$]+"Width",!0,z):me+=R.css(S,"border"+cn[$]+"Width",!0,z));return!I&&_>=0&&(he+=Math.max(0,Math.ceil(S["offset"+y[0].toUpperCase()+y.slice(1)]-_-he-me-.5))||0),he+Se}function ru(S,y,B){var I=ct(S),z=!p.boxSizingReliable()||B,_=z&&R.css(S,"boxSizing",!1,I)==="border-box",$=_,me=Ro(S,y,I),he="offset"+y[0].toUpperCase()+y.slice(1);if(Ht.test(me)){if(!B)return me;me="auto"}return(!p.boxSizingReliable()&&_||!p.reliableTrDimensions()&&w(S,"tr")||me==="auto"||!parseFloat(me)&&R.css(S,"display",!1,I)==="inline")&&S.getClientRects().length&&(_=R.css(S,"boxSizing",!1,I)==="border-box",$=he in S,$&&(me=S[he])),me=parseFloat(me)||0,me+u1(S,y,B||(_?"border":"content"),$,I,me)+"px"}R.extend({cssHooks:{opacity:{get:function(S,y){if(y){var B=Ro(S,"opacity");return B===""?"1":B}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(S,y,B,I){if(!(!S||S.nodeType===3||S.nodeType===8||!S.style)){var z,_,$,me=wi(y),he=Ae.test(y),Se=S.style;if(he||(y=lu(me)),$=R.cssHooks[y]||R.cssHooks[me],B!==void 0){if(_=typeof B,_==="string"&&(z=ut.exec(B))&&z[1]&&(B=hn(S,y,z),_="number"),B==null||B!==B)return;_==="number"&&!he&&(B+=z&&z[3]||(R.cssNumber[me]?"":"px")),!p.clearCloneStyle&&B===""&&y.indexOf("background")===0&&(Se[y]="inherit"),(!$||!("set"in $)||(B=$.set(S,B,I))!==void 0)&&(he?Se.setProperty(y,B):Se[y]=B)}else return $&&"get"in $&&(z=$.get(S,!1,I))!==void 0?z:Se[y]}},css:function(S,y,B,I){var z,_,$,me=wi(y),he=Ae.test(y);return he||(y=lu(me)),$=R.cssHooks[y]||R.cssHooks[me],$&&"get"in $&&(z=$.get(S,!0,B)),z===void 0&&(z=Ro(S,y,I)),z==="normal"&&y in JB&&(z=JB[y]),B===""||B?(_=parseFloat(z),B===!0||isFinite(_)?_||0:z):z}}),R.each(["height","width"],function(S,y){R.cssHooks[y]={get:function(B,I,z){if(I)return mN.test(R.css(B,"display"))&&(!B.getClientRects().length||!B.getBoundingClientRect().width)?Yt(B,pN,function(){return ru(B,y,z)}):ru(B,y,z)},set:function(B,I,z){var _,$=ct(B),me=!p.scrollboxSize()&&$.position==="absolute",he=me||z,Se=he&&R.css(B,"boxSizing",!1,$)==="border-box",_e=z?u1(B,y,z,Se,$):0;return Se&&me&&(_e-=Math.ceil(B["offset"+y[0].toUpperCase()+y.slice(1)]-parseFloat($[y])-u1(B,y,"border",!1,$)-.5)),_e&&(_=ut.exec(I))&&(_[3]||"px")!=="px"&&(B.style[y]=I,I=R.css(B,y)),Wf(B,I,_e)}}}),R.cssHooks.marginLeft=So(p.reliableMarginLeft,function(S,y){if(y)return(parseFloat(Ro(S,"marginLeft"))||S.getBoundingClientRect().left-Yt(S,{marginLeft:0},function(){return S.getBoundingClientRect().left}))+"px"}),R.each({margin:"",padding:"",border:"Width"},function(S,y){R.cssHooks[S+y]={expand:function(B){for(var I=0,z={},_=typeof B=="string"?B.split(" "):[B];I<4;I++)z[S+cn[I]+y]=_[I]||_[I-2]||_[0];return z}},S!=="margin"&&(R.cssHooks[S+y].set=Wf)}),R.fn.extend({css:function(S,y){return is(this,function(B,I,z){var _,$,me={},he=0;if(Array.isArray(I)){for(_=ct(B),$=I.length;he<$;he++)me[I[he]]=R.css(B,I[he],!1,_);return me}return z!==void 0?R.style(B,I,z):R.css(B,I)},S,y,arguments.length>1)}});function wr(S,y,B,I,z){return new wr.prototype.init(S,y,B,I,z)}R.Tween=wr,wr.prototype={constructor:wr,init:function(S,y,B,I,z,_){this.elem=S,this.prop=B,this.easing=z||R.easing._default,this.options=y,this.start=this.now=this.cur(),this.end=I,this.unit=_||(R.cssNumber[B]?"":"px")},cur:function(){var S=wr.propHooks[this.prop];return S&&S.get?S.get(this):wr.propHooks._default.get(this)},run:function(S){var y,B=wr.propHooks[this.prop];return this.options.duration?this.pos=y=R.easing[this.easing](S,this.options.duration*S,0,1,this.options.duration):this.pos=y=S,this.now=(this.end-this.start)*y+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),B&&B.set?B.set(this):wr.propHooks._default.set(this),this}},wr.prototype.init.prototype=wr.prototype,wr.propHooks={_default:{get:function(S){var y;return S.elem.nodeType!==1||S.elem[S.prop]!=null&&S.elem.style[S.prop]==null?S.elem[S.prop]:(y=R.css(S.elem,S.prop,""),!y||y==="auto"?0:y)},set:function(S){R.fx.step[S.prop]?R.fx.step[S.prop](S):S.elem.nodeType===1&&(R.cssHooks[S.prop]||S.elem.style[lu(S.prop)]!=null)?R.style(S.elem,S.prop,S.now+S.unit):S.elem[S.prop]=S.now}}},wr.propHooks.scrollTop=wr.propHooks.scrollLeft={set:function(S){S.elem.nodeType&&S.elem.parentNode&&(S.elem[S.prop]=S.now)}},R.easing={linear:function(S){return S},swing:function(S){return .5-Math.cos(S*Math.PI)/2},_default:"swing"},R.fx=wr.prototype.init,R.fx.step={};var E0,We,Jz=/^(?:toggle|show|hide)$/,v0=/queueHooks$/;function cm(){We&&(f.hidden===!1&&e.requestAnimationFrame?e.requestAnimationFrame(cm):e.setTimeout(cm,R.fx.interval),R.fx.tick())}function Jp(){return e.setTimeout(function(){E0=void 0}),E0=Date.now()}function Vf(S,y){var B,I=0,z={height:S};for(y=y?1:0;I<4;I+=2-y)B=cn[I],z["margin"+B]=z["padding"+B]=S;return y&&(z.opacity=z.width=S),z}function XB(S,y,B){for(var I,z=(Sn.tweeners[y]||[]).concat(Sn.tweeners["*"]),_=0,$=z.length;_<$;_++)if(I=z[_].call(B,y,S))return I}function tn(S,y,B){var I,z,_,$,me,he,Se,_e,tt="width"in y||"height"in y,Ie=this,mt={},Hi=S.style,Ln=S.nodeType&&_i(S),mn=Dt.get(S,"fxshow");B.queue||($=R._queueHooks(S,"fx"),$.unqueued==null&&($.unqueued=0,me=$.empty.fire,$.empty.fire=function(){$.unqueued||me()}),$.unqueued++,Ie.always(function(){Ie.always(function(){$.unqueued--,R.queue(S,"fx").length||$.empty.fire()})}));for(I in y)if(z=y[I],Jz.test(z)){if(delete y[I],_=_||z==="toggle",z===(Ln?"hide":"show"))if(z==="show"&&mn&&mn[I]!==void 0)Ln=!0;else continue;mt[I]=mn&&mn[I]||R.style(S,I)}if(he=!R.isEmptyObject(y),!(!he&&R.isEmptyObject(mt))){tt&&S.nodeType===1&&(B.overflow=[Hi.overflow,Hi.overflowX,Hi.overflowY],Se=mn&&mn.display,Se==null&&(Se=Dt.get(S,"display")),_e=R.css(S,"display"),_e==="none"&&(Se?_e=Se:(Ai([S],!0),Se=S.style.display||Se,_e=R.css(S,"display"),Ai([S]))),(_e==="inline"||_e==="inline-block"&&Se!=null)&&R.css(S,"float")==="none"&&(he||(Ie.done(function(){Hi.display=Se}),Se==null&&(_e=Hi.display,Se=_e==="none"?"":_e)),Hi.display="inline-block")),B.overflow&&(Hi.overflow="hidden",Ie.always(function(){Hi.overflow=B.overflow[0],Hi.overflowX=B.overflow[1],Hi.overflowY=B.overflow[2]})),he=!1;for(I in mt)he||(mn?"hidden"in mn&&(Ln=mn.hidden):mn=Dt.access(S,"fxshow",{display:Se}),_&&(mn.hidden=!Ln),Ln&&Ai([S],!0),Ie.done(function(){Ln||Ai([S]),Dt.remove(S,"fxshow");for(I in mt)R.style(S,I,mt[I])})),he=XB(Ln?mn[I]:0,I,Ie),I in mn||(mn[I]=he.start,Ln&&(he.end=he.start,he.start=0))}}function ui(S,y){var B,I,z,_,$;for(B in S)if(I=wi(B),z=y[I],_=S[B],Array.isArray(_)&&(z=_[1],_=S[B]=_[0]),B!==I&&(S[I]=_,delete S[B]),$=R.cssHooks[I],$&&"expand"in $){_=$.expand(_),delete S[I];for(B in _)B in S||(S[B]=_[B],y[B]=z)}else y[I]=z}function Sn(S,y,B){var I,z,_=0,$=Sn.prefilters.length,me=R.Deferred().always(function(){delete he.elem}),he=function(){if(z)return!1;for(var tt=E0||Jp(),Ie=Math.max(0,Se.startTime+Se.duration-tt),mt=Ie/Se.duration||0,Hi=1-mt,Ln=0,mn=Se.tweens.length;Ln<mn;Ln++)Se.tweens[Ln].run(Hi);return me.notifyWith(S,[Se,Hi,Ie]),Hi<1&&mn?Ie:(mn||me.notifyWith(S,[Se,1,0]),me.resolveWith(S,[Se]),!1)},Se=me.promise({elem:S,props:R.extend({},y),opts:R.extend(!0,{specialEasing:{},easing:R.easing._default},B),originalProperties:y,originalOptions:B,startTime:E0||Jp(),duration:B.duration,tweens:[],createTween:function(tt,Ie){var mt=R.Tween(S,Se.opts,tt,Ie,Se.opts.specialEasing[tt]||Se.opts.easing);return Se.tweens.push(mt),mt},stop:function(tt){var Ie=0,mt=tt?Se.tweens.length:0;if(z)return this;for(z=!0;Ie<mt;Ie++)Se.tweens[Ie].run(1);return tt?(me.notifyWith(S,[Se,1,0]),me.resolveWith(S,[Se,tt])):me.rejectWith(S,[Se,tt]),this}}),_e=Se.props;for(ui(_e,Se.opts.specialEasing);_<$;_++)if(I=Sn.prefilters[_].call(Se,S,_e,Se.opts),I)return g(I.stop)&&(R._queueHooks(Se.elem,Se.opts.queue).stop=I.stop.bind(I)),I;return R.map(_e,XB,Se),g(Se.opts.start)&&Se.opts.start.call(S,Se),Se.progress(Se.opts.progress).done(Se.opts.done,Se.opts.complete).fail(Se.opts.fail).always(Se.opts.always),R.fx.timer(R.extend(he,{elem:S,anim:Se,queue:Se.opts.queue})),Se}R.Animation=R.extend(Sn,{tweeners:{"*":[function(S,y){var B=this.createTween(S,y);return hn(B.elem,S,ut.exec(y),B),B}]},tweener:function(S,y){g(S)?(y=S,S=["*"]):S=S.match(qt);for(var B,I=0,z=S.length;I<z;I++)B=S[I],Sn.tweeners[B]=Sn.tweeners[B]||[],Sn.tweeners[B].unshift(y)},prefilters:[tn],prefilter:function(S,y){y?Sn.prefilters.unshift(S):Sn.prefilters.push(S)}}),R.speed=function(S,y,B){var I=S&&typeof S=="object"?R.extend({},S):{complete:B||!B&&y||g(S)&&S,duration:S,easing:B&&y||y&&!g(y)&&y};return R.fx.off?I.duration=0:typeof I.duration!="number"&&(I.duration in R.fx.speeds?I.duration=R.fx.speeds[I.duration]:I.duration=R.fx.speeds._default),(I.queue==null||I.queue===!0)&&(I.queue="fx"),I.old=I.complete,I.complete=function(){g(I.old)&&I.old.call(this),I.queue&&R.dequeue(this,I.queue)},I},R.fn.extend({fadeTo:function(S,y,B,I){return this.filter(_i).css("opacity",0).show().end().animate({opacity:y},S,B,I)},animate:function(S,y,B,I){var z=R.isEmptyObject(S),_=R.speed(y,B,I),$=function(){var me=Sn(this,R.extend({},S),_);(z||Dt.get(this,"finish"))&&me.stop(!0)};return $.finish=$,z||_.queue===!1?this.each($):this.queue(_.queue,$)},stop:function(S,y,B){var I=function(z){var _=z.stop;delete z.stop,_(B)};return typeof S!="string"&&(B=y,y=S,S=void 0),y&&this.queue(S||"fx",[]),this.each(function(){var z=!0,_=S!=null&&S+"queueHooks",$=R.timers,me=Dt.get(this);if(_)me[_]&&me[_].stop&&I(me[_]);else for(_ in me)me[_]&&me[_].stop&&v0.test(_)&&I(me[_]);for(_=$.length;_--;)$[_].elem===this&&(S==null||$[_].queue===S)&&($[_].anim.stop(B),z=!1,$.splice(_,1));(z||!B)&&R.dequeue(this,S)})},finish:function(S){return S!==!1&&(S=S||"fx"),this.each(function(){var y,B=Dt.get(this),I=B[S+"queue"],z=B[S+"queueHooks"],_=R.timers,$=I?I.length:0;for(B.finish=!0,R.queue(this,S,[]),z&&z.stop&&z.stop.call(this,!0),y=_.length;y--;)_[y].elem===this&&_[y].queue===S&&(_[y].anim.stop(!0),_.splice(y,1));for(y=0;y<$;y++)I[y]&&I[y].finish&&I[y].finish.call(this);delete B.finish})}}),R.each(["toggle","show","hide"],function(S,y){var B=R.fn[y];R.fn[y]=function(I,z,_){return I==null||typeof I=="boolean"?B.apply(this,arguments):this.animate(Vf(y,!0),I,z,_)}}),R.each({slideDown:Vf("show"),slideUp:Vf("hide"),slideToggle:Vf("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(S,y){R.fn[S]=function(B,I,z){return this.animate(y,B,I,z)}}),R.timers=[],R.fx.tick=function(){var S,y=0,B=R.timers;for(E0=Date.now();y<B.length;y++)S=B[y],!S()&&B[y]===S&&B.splice(y--,1);B.length||R.fx.stop(),E0=void 0},R.fx.timer=function(S){R.timers.push(S),R.fx.start()},R.fx.interval=13,R.fx.start=function(){We||(We=!0,cm())},R.fx.stop=function(){We=null},R.fx.speeds={slow:600,fast:200,_default:400},R.fn.delay=function(S,y){return S=R.fx&&R.fx.speeds[S]||S,y=y||"fx",this.queue(y,function(B,I){var z=e.setTimeout(B,S);I.stop=function(){e.clearTimeout(z)}})},function(){var S=f.createElement("input"),y=f.createElement("select"),B=y.appendChild(f.createElement("option"));S.type="checkbox",p.checkOn=S.value!=="",p.optSelected=B.selected,S=f.createElement("input"),S.value="t",S.type="radio",p.radioValue=S.value==="t"}();var YB,Qf=R.expr.attrHandle;R.fn.extend({attr:function(S,y){return is(this,R.attr,S,y,arguments.length>1)},removeAttr:function(S){return this.each(function(){R.removeAttr(this,S)})}}),R.extend({attr:function(S,y,B){var I,z,_=S.nodeType;if(!(_===3||_===8||_===2)){if(typeof S.getAttribute>"u")return R.prop(S,y,B);if((_!==1||!R.isXMLDoc(S))&&(z=R.attrHooks[y.toLowerCase()]||(R.expr.match.bool.test(y)?YB:void 0)),B!==void 0){if(B===null){R.removeAttr(S,y);return}return z&&"set"in z&&(I=z.set(S,B,y))!==void 0?I:(S.setAttribute(y,B+""),B)}return z&&"get"in z&&(I=z.get(S,y))!==null?I:(I=R.find.attr(S,y),I??void 0)}},attrHooks:{type:{set:function(S,y){if(!p.radioValue&&y==="radio"&&w(S,"input")){var B=S.value;return S.setAttribute("type",y),B&&(S.value=B),y}}}},removeAttr:function(S,y){var B,I=0,z=y&&y.match(qt);if(z&&S.nodeType===1)for(;B=z[I++];)S.removeAttribute(B)}}),YB={set:function(S,y,B){return y===!1?R.removeAttr(S,B):S.setAttribute(B,B),B}},R.each(R.expr.match.bool.source.match(/\w+/g),function(S,y){var B=Qf[y]||R.find.attr;Qf[y]=function(I,z,_){var $,me,he=z.toLowerCase();return _||(me=Qf[he],Qf[he]=$,$=B(I,z,_)!=null?he:null,Qf[he]=me),$}});var Xz=/^(?:input|select|textarea|button)$/i,Yz=/^(?:a|area)$/i;R.fn.extend({prop:function(S,y){return is(this,R.prop,S,y,arguments.length>1)},removeProp:function(S){return this.each(function(){delete this[R.propFix[S]||S]})}}),R.extend({prop:function(S,y,B){var I,z,_=S.nodeType;if(!(_===3||_===8||_===2))return(_!==1||!R.isXMLDoc(S))&&(y=R.propFix[y]||y,z=R.propHooks[y]),B!==void 0?z&&"set"in z&&(I=z.set(S,B,y))!==void 0?I:S[y]=B:z&&"get"in z&&(I=z.get(S,y))!==null?I:S[y]},propHooks:{tabIndex:{get:function(S){var y=R.find.attr(S,"tabindex");return y?parseInt(y,10):Xz.test(S.nodeName)||Yz.test(S.nodeName)&&S.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),p.optSelected||(R.propHooks.selected={get:function(S){var y=S.parentNode;return y&&y.parentNode&&y.parentNode.selectedIndex,null},set:function(S){var y=S.parentNode;y&&(y.selectedIndex,y.parentNode&&y.parentNode.selectedIndex)}}),R.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){R.propFix[this.toLowerCase()]=this});function Xp(S){var y=S.match(qt)||[];return y.join(" ")}function Nl(S){return S.getAttribute&&S.getAttribute("class")||""}function m1(S){return Array.isArray(S)?S:typeof S=="string"?S.match(qt)||[]:[]}R.fn.extend({addClass:function(S){var y,B,I,z,_,$;return g(S)?this.each(function(me){R(this).addClass(S.call(this,me,Nl(this)))}):(y=m1(S),y.length?this.each(function(){if(I=Nl(this),B=this.nodeType===1&&" "+Xp(I)+" ",B){for(_=0;_<y.length;_++)z=y[_],B.indexOf(" "+z+" ")<0&&(B+=z+" ");$=Xp(B),I!==$&&this.setAttribute("class",$)}}):this)},removeClass:function(S){var y,B,I,z,_,$;return g(S)?this.each(function(me){R(this).removeClass(S.call(this,me,Nl(this)))}):arguments.length?(y=m1(S),y.length?this.each(function(){if(I=Nl(this),B=this.nodeType===1&&" "+Xp(I)+" ",B){for(_=0;_<y.length;_++)for(z=y[_];B.indexOf(" "+z+" ")>-1;)B=B.replace(" "+z+" "," ");$=Xp(B),I!==$&&this.setAttribute("class",$)}}):this):this.attr("class","")},toggleClass:function(S,y){var B,I,z,_,$=typeof S,me=$==="string"||Array.isArray(S);return g(S)?this.each(function(he){R(this).toggleClass(S.call(this,he,Nl(this),y),y)}):typeof y=="boolean"&&me?y?this.addClass(S):this.removeClass(S):(B=m1(S),this.each(function(){if(me)for(_=R(this),z=0;z<B.length;z++)I=B[z],_.hasClass(I)?_.removeClass(I):_.addClass(I);else(S===void 0||$==="boolean")&&(I=Nl(this),I&&Dt.set(this,"__className__",I),this.setAttribute&&this.setAttribute("class",I||S===!1?"":Dt.get(this,"__className__")||""))}))},hasClass:function(S){var y,B,I=0;for(y=" "+S+" ";B=this[I++];)if(B.nodeType===1&&(" "+Xp(Nl(B))+" ").indexOf(y)>-1)return!0;return!1}});var zz=/\r/g;R.fn.extend({val:function(S){var y,B,I,z=this[0];return arguments.length?(I=g(S),this.each(function(_){var $;this.nodeType===1&&(I?$=S.call(this,_,R(this).val()):$=S,$==null?$="":typeof $=="number"?$+="":Array.isArray($)&&($=R.map($,function(me){return me==null?"":me+""})),y=R.valHooks[this.type]||R.valHooks[this.nodeName.toLowerCase()],(!y||!("set"in y)||y.set(this,$,"value")===void 0)&&(this.value=$))})):z?(y=R.valHooks[z.type]||R.valHooks[z.nodeName.toLowerCase()],y&&"get"in y&&(B=y.get(z,"value"))!==void 0?B:(B=z.value,typeof B=="string"?B.replace(zz,""):B??"")):void 0}}),R.extend({valHooks:{option:{get:function(S){var y=R.find.attr(S,"value");return y??Xp(R.text(S))}},select:{get:function(S){var y,B,I,z=S.options,_=S.selectedIndex,$=S.type==="select-one",me=$?null:[],he=$?_+1:z.length;for(_<0?I=he:I=$?_:0;I<he;I++)if(B=z[I],(B.selected||I===_)&&!B.disabled&&(!B.parentNode.disabled||!w(B.parentNode,"optgroup"))){if(y=R(B).val(),$)return y;me.push(y)}return me},set:function(S,y){for(var B,I,z=S.options,_=R.makeArray(y),$=z.length;$--;)I=z[$],(I.selected=R.inArray(R.valHooks.option.get(I),_)>-1)&&(B=!0);return B||(S.selectedIndex=-1),_}}}}),R.each(["radio","checkbox"],function(){R.valHooks[this]={set:function(S,y){if(Array.isArray(y))return S.checked=R.inArray(R(S).val(),y)>-1}},p.checkOn||(R.valHooks[this].get=function(S){return S.getAttribute("value")===null?"on":S.value})});var yf=e.location,zB={guid:Date.now()},p1=/\?/;R.parseXML=function(S){var y,B;if(!S||typeof S!="string")return null;try{y=new e.DOMParser().parseFromString(S,"text/xml")}catch{}return B=y&&y.getElementsByTagName("parsererror")[0],(!y||B)&&R.error("Invalid XML: "+(B?R.map(B.childNodes,function(I){return I.textContent}).join(`
- `):S)),y};var _B=/^(?:focusinfocus|focusoutblur)$/,OB=function(S){S.stopPropagation()};R.extend(R.event,{trigger:function(S,y,B,I){var z,_,$,me,he,Se,_e,tt,Ie=[B||f],mt=h.call(S,"type")?S.type:S,Hi=h.call(S,"namespace")?S.namespace.split("."):[];if(_=tt=$=B=B||f,!(B.nodeType===3||B.nodeType===8)&&!_B.test(mt+R.event.triggered)&&(mt.indexOf(".")>-1&&(Hi=mt.split("."),mt=Hi.shift(),Hi.sort()),he=mt.indexOf(":")<0&&"on"+mt,S=S[R.expando]?S:new R.Event(mt,typeof S=="object"&&S),S.isTrigger=I?2:3,S.namespace=Hi.join("."),S.rnamespace=S.namespace?new RegExp("(^|\\.)"+Hi.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,S.result=void 0,S.target||(S.target=B),y=y==null?[S]:R.makeArray(y,[S]),_e=R.event.special[mt]||{},!(!I&&_e.trigger&&_e.trigger.apply(B,y)===!1))){if(!I&&!_e.noBubble&&!b(B)){for(me=_e.delegateType||mt,_B.test(me+mt)||(_=_.parentNode);_;_=_.parentNode)Ie.push(_),$=_;$===(B.ownerDocument||f)&&Ie.push($.defaultView||$.parentWindow||e)}for(z=0;(_=Ie[z++])&&!S.isPropagationStopped();)tt=_,S.type=z>1?me:_e.bindType||mt,Se=(Dt.get(_,"events")||Object.create(null))[S.type]&&Dt.get(_,"handle"),Se&&Se.apply(_,y),Se=he&&_[he],Se&&Se.apply&&rl(_)&&(S.result=Se.apply(_,y),S.result===!1&&S.preventDefault());return S.type=mt,!I&&!S.isDefaultPrevented()&&(!_e._default||_e._default.apply(Ie.pop(),y)===!1)&&rl(B)&&he&&g(B[mt])&&!b(B)&&($=B[he],$&&(B[he]=null),R.event.triggered=mt,S.isPropagationStopped()&&tt.addEventListener(mt,OB),B[mt](),S.isPropagationStopped()&&tt.removeEventListener(mt,OB),R.event.triggered=void 0,$&&(B[he]=$)),S.result}},simulate:function(S,y,B){var I=R.extend(new R.Event,B,{type:S,isSimulated:!0});R.event.trigger(I,null,y)}}),R.fn.extend({trigger:function(S,y){return this.each(function(){R.event.trigger(S,y,this)})},triggerHandler:function(S,y){var B=this[0];if(B)return R.event.trigger(S,y,B,!0)}});var _z=/\[\]$/,pa=/\r?\n/g,Oz=/^(?:submit|button|image|reset|file)$/i,rh=/^(?:input|select|textarea|keygen)/i;function x0(S,y,B,I){var z;if(Array.isArray(y))R.each(y,function(_,$){B||_z.test(S)?I(S,$):x0(S+"["+(typeof $=="object"&&$!=null?_:"")+"]",$,B,I)});else if(!B&&N(y)==="object")for(z in y)x0(S+"["+z+"]",y[z],B,I);else I(S,y)}R.param=function(S,y){var B,I=[],z=function(_,$){var me=g($)?$():$;I[I.length]=encodeURIComponent(_)+"="+encodeURIComponent(me??"")};if(S==null)return"";if(Array.isArray(S)||S.jquery&&!R.isPlainObject(S))R.each(S,function(){z(this.name,this.value)});else for(B in S)x0(B,S[B],y,z);return I.join("&")},R.fn.extend({serialize:function(){return R.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var S=R.prop(this,"elements");return S?R.makeArray(S):this}).filter(function(){var S=this.type;return this.name&&!R(this).is(":disabled")&&rh.test(this.nodeName)&&!Oz.test(S)&&(this.checked||!Li.test(S))}).map(function(S,y){var B=R(this).val();return B==null?null:Array.isArray(B)?R.map(B,function(I){return{name:y.name,value:I.replace(pa,`\r
- `)}}):{name:y.name,value:B.replace(pa,`\r
- `)}}).get()}});var jz=/%20/g,jB=/#.*$/,Hz=/([?&])_=[^&]*/,Pz=/^(.*?):[ \t]*([^\r\n]*)$/mg,ps=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Kz=/^(?:GET|HEAD)$/,qz=/^\/\//,HB={},Cf={},g1="*/".concat("*"),gN=f.createElement("a");gN.href=yf.href;function bN(S){return function(y,B){typeof y!="string"&&(B=y,y="*");var I,z=0,_=y.toLowerCase().match(qt)||[];if(g(B))for(;I=_[z++];)I[0]==="+"?(I=I.slice(1)||"*",(S[I]=S[I]||[]).unshift(B)):(S[I]=S[I]||[]).push(B)}}function PB(S,y,B,I){var z={},_=S===Cf;function $(me){var he;return z[me]=!0,R.each(S[me]||[],function(Se,_e){var tt=_e(y,B,I);if(typeof tt=="string"&&!_&&!z[tt])return y.dataTypes.unshift(tt),$(tt),!1;if(_)return!(he=tt)}),he}return $(y.dataTypes[0])||!z["*"]&&$("*")}function b1(S,y){var B,I,z=R.ajaxSettings.flatOptions||{};for(B in y)y[B]!==void 0&&((z[B]?S:I||(I={}))[B]=y[B]);return I&&R.extend(!0,S,I),S}function $z(S,y,B){for(var I,z,_,$,me=S.contents,he=S.dataTypes;he[0]==="*";)he.shift(),I===void 0&&(I=S.mimeType||y.getResponseHeader("Content-Type"));if(I){for(z in me)if(me[z]&&me[z].test(I)){he.unshift(z);break}}if(he[0]in B)_=he[0];else{for(z in B){if(!he[0]||S.converters[z+" "+he[0]]){_=z;break}$||($=z)}_=_||$}if(_)return _!==he[0]&&he.unshift(_),B[_]}function e9(S,y,B,I){var z,_,$,me,he,Se={},_e=S.dataTypes.slice();if(_e[1])for($ in S.converters)Se[$.toLowerCase()]=S.converters[$];for(_=_e.shift();_;)if(S.responseFields[_]&&(B[S.responseFields[_]]=y),!he&&I&&S.dataFilter&&(y=S.dataFilter(y,S.dataType)),he=_,_=_e.shift(),_){if(_==="*")_=he;else if(he!=="*"&&he!==_){if($=Se[he+" "+_]||Se["* "+_],!$){for(z in Se)if(me=z.split(" "),me[1]===_&&($=Se[he+" "+me[0]]||Se["* "+me[0]],$)){$===!0?$=Se[z]:Se[z]!==!0&&(_=me[0],_e.unshift(me[1]));break}}if($!==!0)if($&&S.throws)y=$(y);else try{y=$(y)}catch(tt){return{state:"parsererror",error:$?tt:"No conversion from "+he+" to "+_}}}}return{state:"success",data:y}}R.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yf.href,type:"GET",isLocal:ps.test(yf.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":g1,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":R.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(S,y){return y?b1(b1(S,R.ajaxSettings),y):b1(R.ajaxSettings,S)},ajaxPrefilter:bN(HB),ajaxTransport:bN(Cf),ajax:function(S,y){typeof S=="object"&&(y=S,S=void 0),y=y||{};var B,I,z,_,$,me,he,Se,_e,tt,Ie=R.ajaxSetup({},y),mt=Ie.context||Ie,Hi=Ie.context&&(mt.nodeType||mt.jquery)?R(mt):R.event,Ln=R.Deferred(),mn=R.Callbacks("once memory"),Yl=Ie.statusCode||{},ys={},jo={},Mr="canceled",yn={readyState:0,getResponseHeader:function(O){var zt;if(he){if(!_)for(_={};zt=Pz.exec(z);)_[zt[1].toLowerCase()+" "]=(_[zt[1].toLowerCase()+" "]||[]).concat(zt[2]);zt=_[O.toLowerCase()+" "]}return zt==null?null:zt.join(", ")},getAllResponseHeaders:function(){return he?z:null},setRequestHeader:function(O,zt){return he==null&&(O=jo[O.toLowerCase()]=jo[O.toLowerCase()]||O,ys[O]=zt),this},overrideMimeType:function(O){return he==null&&(Ie.mimeType=O),this},statusCode:function(O){var zt;if(O)if(he)yn.always(O[yn.status]);else for(zt in O)Yl[zt]=[Yl[zt],O[zt]];return this},abort:function(O){var zt=O||Mr;return B&&B.abort(zt),ze(0,zt),this}};if(Ln.promise(yn),Ie.url=((S||Ie.url||yf.href)+"").replace(qz,yf.protocol+"//"),Ie.type=y.method||y.type||Ie.method||Ie.type,Ie.dataTypes=(Ie.dataType||"*").toLowerCase().match(qt)||[""],Ie.crossDomain==null){me=f.createElement("a");try{me.href=Ie.url,me.href=me.href,Ie.crossDomain=gN.protocol+"//"+gN.host!=me.protocol+"//"+me.host}catch{Ie.crossDomain=!0}}if(Ie.data&&Ie.processData&&typeof Ie.data!="string"&&(Ie.data=R.param(Ie.data,Ie.traditional)),PB(HB,Ie,y,yn),he)return yn;Se=R.event&&Ie.global,Se&&R.active++===0&&R.event.trigger("ajaxStart"),Ie.type=Ie.type.toUpperCase(),Ie.hasContent=!Kz.test(Ie.type),I=Ie.url.replace(jB,""),Ie.hasContent?Ie.data&&Ie.processData&&(Ie.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(Ie.data=Ie.data.replace(jz,"+")):(tt=Ie.url.slice(I.length),Ie.data&&(Ie.processData||typeof Ie.data=="string")&&(I+=(p1.test(I)?"&":"?")+Ie.data,delete Ie.data),Ie.cache===!1&&(I=I.replace(Hz,"$1"),tt=(p1.test(I)?"&":"?")+"_="+zB.guid+++tt),Ie.url=I+tt),Ie.ifModified&&(R.lastModified[I]&&yn.setRequestHeader("If-Modified-Since",R.lastModified[I]),R.etag[I]&&yn.setRequestHeader("If-None-Match",R.etag[I])),(Ie.data&&Ie.hasContent&&Ie.contentType!==!1||y.contentType)&&yn.setRequestHeader("Content-Type",Ie.contentType),yn.setRequestHeader("Accept",Ie.dataTypes[0]&&Ie.accepts[Ie.dataTypes[0]]?Ie.accepts[Ie.dataTypes[0]]+(Ie.dataTypes[0]!=="*"?", "+g1+"; q=0.01":""):Ie.accepts["*"]);for(_e in Ie.headers)yn.setRequestHeader(_e,Ie.headers[_e]);if(Ie.beforeSend&&(Ie.beforeSend.call(mt,yn,Ie)===!1||he))return yn.abort();if(Mr="abort",mn.add(Ie.complete),yn.done(Ie.success),yn.fail(Ie.error),B=PB(Cf,Ie,y,yn),!B)ze(-1,"No Transport");else{if(yn.readyState=1,Se&&Hi.trigger("ajaxSend",[yn,Ie]),he)return yn;Ie.async&&Ie.timeout>0&&($=e.setTimeout(function(){yn.abort("timeout")},Ie.timeout));try{he=!1,B.send(ys,ze)}catch(O){if(he)throw O;ze(-1,O)}}function ze(O,zt,ri,Ri){var bi,ni,Wo,zl,Un,mi=zt;he||(he=!0,$&&e.clearTimeout($),B=void 0,z=Ri||"",yn.readyState=O>0?4:0,bi=O>=200&&O<300||O===304,ri&&(zl=$z(Ie,yn,ri)),!bi&&R.inArray("script",Ie.dataTypes)>-1&&R.inArray("json",Ie.dataTypes)<0&&(Ie.converters["text script"]=function(){}),zl=e9(Ie,zl,yn,bi),bi?(Ie.ifModified&&(Un=yn.getResponseHeader("Last-Modified"),Un&&(R.lastModified[I]=Un),Un=yn.getResponseHeader("etag"),Un&&(R.etag[I]=Un)),O===204||Ie.type==="HEAD"?mi="nocontent":O===304?mi="notmodified":(mi=zl.state,ni=zl.data,Wo=zl.error,bi=!Wo)):(Wo=mi,(O||!mi)&&(mi="error",O<0&&(O=0))),yn.status=O,yn.statusText=(zt||mi)+"",bi?Ln.resolveWith(mt,[ni,mi,yn]):Ln.rejectWith(mt,[yn,mi,Wo]),yn.statusCode(Yl),Yl=void 0,Se&&Hi.trigger(bi?"ajaxSuccess":"ajaxError",[yn,Ie,bi?ni:Wo]),mn.fireWith(mt,[yn,mi]),Se&&(Hi.trigger("ajaxComplete",[yn,Ie]),--R.active||R.event.trigger("ajaxStop")))}return yn},getJSON:function(S,y,B){return R.get(S,y,B,"json")},getScript:function(S,y){return R.get(S,void 0,y,"script")}}),R.each(["get","post"],function(S,y){R[y]=function(B,I,z,_){return g(I)&&(_=_||z,z=I,I=void 0),R.ajax(R.extend({url:B,type:y,dataType:_,data:I,success:z},R.isPlainObject(B)&&B))}}),R.ajaxPrefilter(function(S){var y;for(y in S.headers)y.toLowerCase()==="content-type"&&(S.contentType=S.headers[y]||"")}),R._evalUrl=function(S,y,B){return R.ajax({url:S,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(I){R.globalEval(I,y,B)}})},R.fn.extend({wrapAll:function(S){var y;return this[0]&&(g(S)&&(S=S.call(this[0])),y=R(S,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&y.insertBefore(this[0]),y.map(function(){for(var B=this;B.firstElementChild;)B=B.firstElementChild;return B}).append(this)),this},wrapInner:function(S){return g(S)?this.each(function(y){R(this).wrapInner(S.call(this,y))}):this.each(function(){var y=R(this),B=y.contents();B.length?B.wrapAll(S):y.append(S)})},wrap:function(S){var y=g(S);return this.each(function(B){R(this).wrapAll(y?S.call(this,B):S)})},unwrap:function(S){return this.parent(S).not("body").each(function(){R(this).replaceWith(this.childNodes)}),this}}),R.expr.pseudos.hidden=function(S){return!R.expr.pseudos.visible(S)},R.expr.pseudos.visible=function(S){return!!(S.offsetWidth||S.offsetHeight||S.getClientRects().length)},R.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch{}};var KB={0:200,1223:204},wf=R.ajaxSettings.xhr();p.cors=!!wf&&"withCredentials"in wf,p.ajax=wf=!!wf,R.ajaxTransport(function(S){var y,B;if(p.cors||wf&&!S.crossDomain)return{send:function(I,z){var _,$=S.xhr();if($.open(S.type,S.url,S.async,S.username,S.password),S.xhrFields)for(_ in S.xhrFields)$[_]=S.xhrFields[_];S.mimeType&&$.overrideMimeType&&$.overrideMimeType(S.mimeType),!S.crossDomain&&!I["X-Requested-With"]&&(I["X-Requested-With"]="XMLHttpRequest");for(_ in I)$.setRequestHeader(_,I[_]);y=function(me){return function(){y&&(y=B=$.onload=$.onerror=$.onabort=$.ontimeout=$.onreadystatechange=null,me==="abort"?$.abort():me==="error"?typeof $.status!="number"?z(0,"error"):z($.status,$.statusText):z(KB[$.status]||$.status,$.statusText,($.responseType||"text")!=="text"||typeof $.responseText!="string"?{binary:$.response}:{text:$.responseText},$.getAllResponseHeaders()))}},$.onload=y(),B=$.onerror=$.ontimeout=y("error"),$.onabort!==void 0?$.onabort=B:$.onreadystatechange=function(){$.readyState===4&&e.setTimeout(function(){y&&B()})},y=y("abort");try{$.send(S.hasContent&&S.data||null)}catch(me){if(y)throw me}},abort:function(){y&&y()}}}),R.ajaxPrefilter(function(S){S.crossDomain&&(S.contents.script=!1)}),R.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(S){return R.globalEval(S),S}}}),R.ajaxPrefilter("script",function(S){S.cache===void 0&&(S.cache=!1),S.crossDomain&&(S.type="GET")}),R.ajaxTransport("script",function(S){if(S.crossDomain||S.scriptAttrs){var y,B;return{send:function(I,z){y=R("<script>").attr(S.scriptAttrs||{}).prop({charset:S.scriptCharset,src:S.url}).on("load error",B=function(_){y.remove(),B=null,_&&z(_.type==="error"?404:200,_.type)}),f.head.appendChild(y[0])},abort:function(){B&&B()}}}});var qB=[],UN=/(=)\?(?=&|$)|\?\?/;R.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var S=qB.pop()||R.expando+"_"+zB.guid++;return this[S]=!0,S}}),R.ajaxPrefilter("json jsonp",function(S,y,B){var I,z,_,$=S.jsonp!==!1&&(UN.test(S.url)?"url":typeof S.data=="string"&&(S.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&UN.test(S.data)&&"data");if($||S.dataTypes[0]==="jsonp")return I=S.jsonpCallback=g(S.jsonpCallback)?S.jsonpCallback():S.jsonpCallback,$?S[$]=S[$].replace(UN,"$1"+I):S.jsonp!==!1&&(S.url+=(p1.test(S.url)?"&":"?")+S.jsonp+"="+I),S.converters["script json"]=function(){return _||R.error(I+" was not called"),_[0]},S.dataTypes[0]="json",z=e[I],e[I]=function(){_=arguments},B.always(function(){z===void 0?R(e).removeProp(I):e[I]=z,S[I]&&(S.jsonpCallback=y.jsonpCallback,qB.push(I)),_&&g(z)&&z(_[0]),_=z=void 0}),"script"}),p.createHTMLDocument=function(){var S=f.implementation.createHTMLDocument("").body;return S.innerHTML="<form></form><form></form>",S.childNodes.length===2}(),R.parseHTML=function(S,y,B){if(typeof S!="string")return[];typeof y=="boolean"&&(B=y,y=!1);var I,z,_;return y||(p.createHTMLDocument?(y=f.implementation.createHTMLDocument(""),I=y.createElement("base"),I.href=f.location.href,y.head.appendChild(I)):y=f),z=xe.exec(S),_=!B&&[],z?[y.createElement(z[1])]:(z=ne([S],y,_),_&&_.length&&R(_).remove(),R.merge([],z.childNodes))},R.fn.load=function(S,y,B){var I,z,_,$=this,me=S.indexOf(" ");return me>-1&&(I=Xp(S.slice(me)),S=S.slice(0,me)),g(y)?(B=y,y=void 0):y&&typeof y=="object"&&(z="POST"),$.length>0&&R.ajax({url:S,type:z||"GET",dataType:"html",data:y}).done(function(he){_=arguments,$.html(I?R("<div>").append(R.parseHTML(he)).find(I):he)}).always(B&&function(he,Se){$.each(function(){B.apply(this,_||[he.responseText,Se,he])})}),this},R.expr.pseudos.animated=function(S){return R.grep(R.timers,function(y){return S===y.elem}).length},R.offset={setOffset:function(S,y,B){var I,z,_,$,me,he,Se,_e=R.css(S,"position"),tt=R(S),Ie={};_e==="static"&&(S.style.position="relative"),me=tt.offset(),_=R.css(S,"top"),he=R.css(S,"left"),Se=(_e==="absolute"||_e==="fixed")&&(_+he).indexOf("auto")>-1,Se?(I=tt.position(),$=I.top,z=I.left):($=parseFloat(_)||0,z=parseFloat(he)||0),g(y)&&(y=y.call(S,B,R.extend({},me))),y.top!=null&&(Ie.top=y.top-me.top+$),y.left!=null&&(Ie.left=y.left-me.left+z),"using"in y?y.using.call(S,Ie):tt.css(Ie)}},R.fn.extend({offset:function(S){if(arguments.length)return S===void 0?this:this.each(function(z){R.offset.setOffset(this,S,z)});var y,B,I=this[0];if(I)return I.getClientRects().length?(y=I.getBoundingClientRect(),B=I.ownerDocument.defaultView,{top:y.top+B.pageYOffset,left:y.left+B.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var S,y,B,I=this[0],z={top:0,left:0};if(R.css(I,"position")==="fixed")y=I.getBoundingClientRect();else{for(y=this.offset(),B=I.ownerDocument,S=I.offsetParent||B.documentElement;S&&(S===B.body||S===B.documentElement)&&R.css(S,"position")==="static";)S=S.parentNode;S&&S!==I&&S.nodeType===1&&(z=R(S).offset(),z.top+=R.css(S,"borderTopWidth",!0),z.left+=R.css(S,"borderLeftWidth",!0))}return{top:y.top-z.top-R.css(I,"marginTop",!0),left:y.left-z.left-R.css(I,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var S=this.offsetParent;S&&R.css(S,"position")==="static";)S=S.offsetParent;return S||$i})}}),R.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(S,y){var B=y==="pageYOffset";R.fn[S]=function(I){return is(this,function(z,_,$){var me;if(b(z)?me=z:z.nodeType===9&&(me=z.defaultView),$===void 0)return me?me[y]:z[_];me?me.scrollTo(B?me.pageXOffset:$,B?$:me.pageYOffset):z[_]=$},S,I,arguments.length)}}),R.each(["top","left"],function(S,y){R.cssHooks[y]=So(p.pixelPosition,function(B,I){if(I)return I=Ro(B,y),Ht.test(I)?R(B).position()[y]+"px":I})}),R.each({Height:"height",Width:"width"},function(S,y){R.each({padding:"inner"+S,content:y,"":"outer"+S},function(B,I){R.fn[I]=function(z,_){var $=arguments.length&&(B||typeof z!="boolean"),me=B||(z===!0||_===!0?"margin":"border");return is(this,function(he,Se,_e){var tt;return b(he)?I.indexOf("outer")===0?he["inner"+S]:he.document.documentElement["client"+S]:he.nodeType===9?(tt=he.documentElement,Math.max(he.body["scroll"+S],tt["scroll"+S],he.body["offset"+S],tt["offset"+S],tt["client"+S])):_e===void 0?R.css(he,Se,me):R.style(he,Se,_e,me)},y,$?z:void 0,$)}})}),R.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(S,y){R.fn[y]=function(B){return this.on(y,B)}}),R.fn.extend({bind:function(S,y,B){return this.on(S,null,y,B)},unbind:function(S,y){return this.off(S,null,y)},delegate:function(S,y,B,I){return this.on(y,S,B,I)},undelegate:function(S,y,B){return arguments.length===1?this.off(S,"**"):this.off(y,S||"**",B)},hover:function(S,y){return this.on("mouseenter",S).on("mouseleave",y||S)}}),R.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(S,y){R.fn[y]=function(B,I){return arguments.length>0?this.on(y,null,B,I):this.trigger(y)}});var t9=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;R.proxy=function(S,y){var B,I,z;if(typeof y=="string"&&(B=S[y],y=S,S=B),!!g(S))return I=o.call(arguments,2),z=function(){return S.apply(y||this,I.concat(o.call(arguments)))},z.guid=S.guid=S.guid||R.guid++,z},R.holdReady=function(S){S?R.readyWait++:R.ready(!0)},R.isArray=Array.isArray,R.parseJSON=JSON.parse,R.nodeName=w,R.isFunction=g,R.isWindow=b,R.camelCase=wi,R.type=N,R.now=Date.now,R.isNumeric=function(S){var y=R.type(S);return(y==="number"||y==="string")&&!isNaN(S-parseFloat(S))},R.trim=function(S){return S==null?"":(S+"").replace(t9,"$1")};var i9=e.jQuery,n9=e.$;return R.noConflict=function(S){return e.$===R&&(e.$=n9),S&&e.jQuery===R&&(e.jQuery=i9),R},typeof t>"u"&&(e.jQuery=e.$=R),R})})(upe);var QLe=upe.exports;const yLe=uQe(QLe);const CLe={class:"webuploader-container"},wLe=["id"],MLe=["id"],TLe=["src"],KT={__name:"fileuploads",props:{projectId:Number,solverType:String,accept:String,upId:String,name:String,namelist:Array,gfname:String,imgSrc:String},emits:["Gassaddgfid","Gassaddbfid","upload-success","update-fileName","update-percentage","upload-status"],setup(s,{expose:e,emit:t}){const i=s;let n=x(!0),o=x(void 0),l=x(void 0);x("1212");let r=x([]),a=x(""),d=x(""),c=x();x([]);let h=x("");x("");let u=x("");x(""),x([]),na(()=>{m()});const m=()=>{p(),u.value=p(),g()},p=()=>"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(b){var f=Math.random()*16|0,Z=b=="x"?f:f&3|8;return Z.toString(16)}),g=()=>{r.value=[],o.value=WebUploader.create({swf:"./js/Uploader.swf",server:"/airopt/TransServlet",formData:{},pick:{id:"#picker"+i.upId,multiple:!1},resize:!1,chunked:!0,chunkSize:2*1024*1024,threads:4}),o.value.on("fileQueued",b=>{l.value=b.name,console.log("fileName.value",l.value),t("update-fileName",l.value);const f=l.value.split(".")[1];if(i.accept.indexOf(f)<0){o.value.reset(),Cn.error("只支持"+i.accept+"格式文件!");return}o.value.md5File(b).progress(Z=>{console.log("Percentage:",Z)}).then(Z=>{Z.value=Z}),r.value.length>0&&(o.value.removeFile(r.value[0].id),r.value=[]),r.value.push({id:b.id,name:b.name,msg:"等待上传...",percentage:0}),o.value.upload()}),o.value.on("uploadBeforeSend",(b,f,Z)=>{f.chunk=b.chunk,f.chunks=b.chunks,f.bfid=u.value,f.fileName=l.value,f.channelNo="service",f.clientToken="e47b87eec69545559d1e81e56626da68",f.transCode="B00028",f.userId="5f06c8bc77234f969d13e160b54c27e3",Z.Content="multipart",Z.Type="form-data"}),o.value.on("uploadProgress",(b,f)=>{let Z=Math.floor(f*100);r.value.forEach(A=>{(A.id=b.id)&&(A.msg="上传中",t("upload-status","上传中")),c.value=A.msg,A.percentage=Z,t("update-percentage",Z)})}),o.value.on("uploadSuccess",(b,f)=>{console.log("文件信息:",b),console.log("返回值:",f),h.value=f.bfid,t("upload-success",{bfid:f.bfid,fname:b.name});let Z={transCode:"B00029",bfid:f.bfid};rs(Z).then(A=>{console.log(A),r.value.forEach(N=>{N.id===b.id&&(N.msg="已上传",t("upload-status","上传成功"),c.value=N.msg,n.value=!1),b.ext=="x"?(a.value=f.bfid,t("Gassaddgfid",a.value)):b.ext=="inp"&&(d.value=f.bfid,t("Gassaddbfid",d.value))})}).catch(A=>{})}),o.value.on("uploadAccept",(b,f)=>f.returnCode=="000000000"?!0:(Cn.error(f.returnMsg),!1)),o.value.on("uploadError",(b,f)=>{yLe("#"+b.id).text(b.name+"上传出错"),t("upload-status","上传失败"),p(),u.value=p()}),o.value.on("uploadComplete",b=>{})};return e({gfid:a,bfid:d,initWebUploader:g,files:r,msg:c}),(b,f)=>{const Z=qe("el-row");return ce(),we("div",CLe,[te("div",{id:"uploader"+s.upId},[C(Z,null,{default:T(()=>[te("div",{class:"btntext upname",id:"picker"+s.upId,style:{width:"28px",height:"24px"}},[te("img",{src:s.imgSrc,alt:"upload icon",class:"custom-icon"},null,8,TLe)],8,MLe)]),_:1})],8,wLe)])}}},BLe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAgBJREFUSEu11l1IU1EAB/D/0oc+1MwEH0RSyqIELUGJ1BdDiAI5I4UMCoJQ3+acPQhDUJA16E0d88GnK/Mj5K4XwxpsRQ/TpU+r7sNK6iobOPT6cfXOrBtHuBdHyzaPO8/n/H/3/A/33GtAmochzfnQgAsArh+CzQBQjvIwGvCS5/mmRAGSJMHhcCwFAoEuABOpIhrAq6pK/rVYURQ4nU5YrVaPLMsdAD4lCyUFaGGRSAQWi0VxuVyDAD4kU2lKgBYYDAYRCoUS5vv9ftjtdtrGKzrhSMBh9bjdbhiNxsSAIAigfbMMn88Hs9lMz2kEwJa+A1EUyeVbjThdVMmSv7/2d0zG2vz4CwDPdMDr9ZLmnknkXLvDDMSi37A8ZbYC6NcBjuNIF/cZZ0puMgPbPxYQed37lNakAzabjQzMZuBkwRVmYOPLG0TfD9EqZnTAZDIRPlqOzKx8ZmDt4xg9g6sABB140PKQzGY1wXAigxlYeTeITeHtOQCSDtTcvkfCl1qZw2lAeLpva0ecz4570S5W1hO1ynQswPJUZygW/VoaB5wtrSPn6+mFyT6+jz7x/JJXG+KAnLK7JL+2jTld3dvF4kjzKIBHcUBe9WOSe+M+M/BzPQxxvP05gO6/dnCqsIIdkJawOse1Axg+CBT/55OZKuyhF91BINWApOen/a/iD+EYwhkOX7APAAAAAElFTkSuQmCC",mpe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAA6BJREFUSEu1VUGIG2UU/t7/T5ocNiFsFlww4GgXthAJM5tCC/Yg6LHIigcpxYO0aKW9eViFFhRPYg8rUopSwUOFFvQQqGBvOVRIMZMdlw1ssUtHCbiFNaalbJMw87/6xmzIprHbRfeHucy8ed//3ve97xH2+NCY/Jbrug4RHQJgE9EEM4dE1GbmJhE1O53OrUajcXv0X8dxbN/3mwDCrW8DgEKhMJFMJt8HIMmrxhiPmSVJO5FIpIwx2SiKpgHMaK1nmTlPRBYzrwOQ+J+UUqeJyPY879gWSAxQLBZnLctaNMZ86vt+ZTddKxaLea31YSJ6iYjOABDQK/V6XUAQA8zNzR3vdrvlRqPxYDfJh2OlPVrrX6UaAHLJzz3P2xjHgVSUV0qVtNY2M2f75W4YY9aNMWtRFAWjl3EcR+Kyvu8Hw8DDAJbjOMe11vNCJoCbAG4bYzpxqURTRCQc7BceJBmAB8zsy617vZ6XSqUWJNbzvHPbSHZd9zml1HkA19Lp9LeVSmWggie1zLbt1OTkZKw4Zj4I4CgRZZn5o3q9/vGAg1KptBBF0VUp79mT3+cTynpFERwG5wFMgePbCmNtYloHYV0UxibyEN73g2/e7hQKhelUKvUHMwdEVOl2ux+srKzcHbTo+ffKs4iwSIRXRQlPSzYzOiCuqk6rlvhz+YfVa4vbVBgDSHIyXANo4mkT/1scM36MjDn7+6XXvUGLXni3fBHAqf+afPh/Zj5z56v5C3EFewAQMujUnS9f+zoGsN/57oAi6+f/pUXgCkfRh8GlN2Tg/plkOfkT5Zl9mj8D0fwuWxUy+IZ++FfVav1yfSzJruvKgFxZWlr6TWS6T6uXCaoEZpsJ2W0yBTYYCMC4RTCrpnevNipTsYowDM8tLy834wrER5RSX/w9oZdbrVY5CIJ4enc6MmiZTMaxLKsE4AgRicSnHhu0mAfbTuVyuTeNMUeVUhsy/mEYrhFRbIB9q3imbxODPQFgRay63W5Xc7ncJwA6j1nF6E2HLFi8J8fMUtE9WTbGmGa73V4drfKJZue67oler3d1z+y6VCodYGbh4Hy9Xr++U++Hv/erPURERwCclBVLRJdrtdpb22Tad8YFInKYucbMVWZek5W5ublpJZPJKa31NBHtV0rNMPOLYtcAhK+bxpgbWuvTQmc6nT625chjF47rugfFgokodlMhmpnluSs7Qp5MJhOM2rqoMZvNNoffjwXYTYt2in0E9MjDKKZCFwYAAAAASUVORK5CYII=",d$="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAnBJREFUSEu1lF9IU3EUx7/nbm2FE//UgyXBtCk+FOhu4CKCIqIXZesP0T9oEk4hX3qyyLeK6q2HQW0YTgiFiNzKl4ioB8EJ3VnUQ7TZLhlhUaawmhvbPXU3LpmW7G76e/xxzvfzO+d7foewxofWWB9FAbZ4hjaZyLI7m8lMTd85/GalR+oGWLuDBwXGfYAsqrDCfF32uy7+D5IDiKLYSkQ1hbTrm/3STZDwIjGb6ijfaHaCcdc8/ayn7MvYx8X5zDwjSdKEBhgB4CoE8F3sgwLBLfudg1b3wHrBXJ0siw7DNB9dmh6UJOmQ7hbVeUJPQGwjoj5muMBo43SqTg4cm/nXA3UDrO57NYLJdAtEbQzEshB6Pvjan67oQSGtKTZmWQVWT7BVIHIzsxFk8MZ97a+KFVfz/gJYO0eaBRLGmfCSwBZmsjF4r+x3TRQLyQFaWlp6iciRaDzVlKnYlnnvc+1Q7+u6QuPr5t5VWqLDb/UCmDk8OTl5QxvTXgCOhO14U7qycS7uc+5SBeu7gq+N81PG8uiQbgCAsCRJeYB2cv0HPQdxjEEJMJpBgqMUH5ab3DnSTETnfs95RslmBuX+I2G97Vkcr/sf6IWVBKjverSfWfESwQbmUVaoO97v/LwqFeR/tDnOhFFACQHCZTBicb/zwDKAKIoFLzstOV3RgB8NJ6CkZjfIgY4Fqyd0RoASqJKuaCF/lp3dbncUuq617IXNe2qTtfu8WQWnf86lQpZq0wCxsrNKunpejVHXdSQSCZfmgefhNRBfyEM5oRCOyrddj1fFA01k69kH2w0GsqWRHPvkP/l16ZSVVEEhI7vmgF8JTOYZEX/JBgAAAABJRU5ErkJggg==",ppe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAkRJREFUSEvtls9r02AYx58na1fBedioIDohCR52dO1keBjUP2Cmc047T1VmIiiIDG8D6223Kl5s6tgOTmFUlgw825teghF6cDjSiCAeZARFaEfyPpLQlLJ1boMMdjC3Nz++n+f5Ps/z5kU45As79GMA4EbNawNSqdRvRLxgGMbnKCFtQDqdJs/zhk3TNI8cQFS0RSDMtgNDKFgl6am/jiSDMzNvBhNcz3tAHPRFmedetF9Mftg3gFe06wCYgWbzsb107cd2CwVZu4uIT4DABSTXWjf7oVoIGuafGZycWuk7MdD7jAhziLRBgEkAnKuXLi/4H/P5xWOQGCgiQZ4QcxyDGHHsXr2UvRQGsSuAl7VRDvAlAbiu5019W7hS4++sKchoHgBqHrJCD+AcAPKu6437zwOoXBmy1avtTuwKEGR9FhHmieA5bW0+tJduNsKI+PzKKa43UQSEHAFVqbk17dsm3l6bJA436qXxT50WdgW0uqJiqdJb/+XT8qtkHI6Pfm2t/XviLX2Esc1aCBcU7R0CamH37GlRZxT8zGqG47hVS5X6d5uRAwFa/ifDDLoBREW/3/j1Z/n76xs/feiBAKKsPwKg85aanQgK1yUDUdGJMTZslyeCyf8P2FHko20RL2sKBzhkqdIDv4BnlcpInOJFS5XGwjYVZO0jgTsdTq0ga2UkrFplaXnPQTu0/wER5Rhj6xEAHNM07e276RcAOBeBuC/hGIYRTH17L8pkMjHHcfqiADiO07BtO9ggO08VUWjv0PgLzJjQKMkKkisAAAAASUVORK5CYII=",LLe={class:"XFpdding"},kLe=["onClick"],ILe=["src"],DLe={key:0,class:"eldesign classtable",style:{"margin-top":"10px",height:"400px"}},GLe={style:{display:"flex","flex-direction":"column"}},ELe={style:{"line-height":"15px"}},vLe=te("div",{style:{"flex-grow":"1"}},null,-1),xLe={class:"eldesign classtable",style:{"margin-top":"10px"}},JLe={class:"eldesign classtable dlheight",style:{"margin-top":"10px"}},XLe={style:{display:"flex"}},YLe={class:"eldesign classtable",style:{"margin-top":"10px"}},Wse={__name:"ADflow",setup(s,{expose:e}){const t=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAAAXNSR0IArs4c6QAAAptJREFUSEu91ltIFFEYB/D/mc1Md90VtotI2nZhgx6MnX3o8hAkXV6EKfAtCiJq8ymQfYh6EYJKfJDdiC6SBqEUQuhGFEEp1BYOnjO7SlAuaEYXsc2kVXd0dU6M5ODWVtYMzePM+f6/832cA0NgwePxeFa4XK7yeDw+8GMcsSAffr8/DMBNKT30z4DP59siCIKXEOLWNM3GOf9MCBkFUEwIiQDIANhEKX27GJnvQBTF416v93CublKpFEZGRh4AqOWcJwRBSOrrOOd2ABsBrFtUd5VSWvMT4Pf7O3p7e6Vfjau1tRUtLS1dqVTqpCzLxpxFUbxGCDmxqC6jaZpHUZQPC+/mO/gToK9Jp9MIBoNQFOWcIAgNqqquBtDEOXcQQooAFADQu2qilJ75a2ChIBqNIhQKjamq2pOrY1VVkUwmaxRFGda/L7mDpZ627u5uvdODlNKO/wvIsix1RiKYnJxa6mZzrhscHERn5F6zNjtzMRaLJYwRtbe3S1WnLkMt3WUK0IuF6XE4+0KNjLFaAwiHw9KxxseYcW81DSybeIeiV82nKaX1BlBXVycF2xLIOPW7Y+7JG38Ne+L2UcbYTQMIBAJSw1OOucISc+kA8j9RFA7fr6SUdhlAdXW1dCNRDi3PYRooeP8E9tEXG2RZHjKA3ZV7pbtfd5gO1wMK33QiPxm3U0qnDMBbsU3qWb7fEsAx0Jbs67qzKuuiFa8XpSF3lSWA8+WVgdizh5uzgMzKCmnCc8ASoFipf8Tk5/PjMEakrtkupcv2mQbI3Axc7MItxtiRLCC9do+kluw0DQjqGJz9l84zxs5mAdPuCmnWUWYasE1/Qf7HaIAxdt0AfD5fqc1m85pO/x7AOZf1I2oAVgXnyrHkt+V3G/wGgT4mKcVKfYkAAAAASUVORK5CYII=",self.location).href;let i=x(""),n=x(0),o=x("");x(!0);let l=x(120),r=x(170);x(200);let a=x(0),d=x();x();let c=x(1),h=x(1),u=x(1),m=x(1),p=x(1),g=x(1),b=x("RANS"),f=x([{label:"RANS",value:"RANS"},{label:"Euler",value:"Euler"}]),Z=x(1),A=x([{label:"二维",value:1},{label:"三维",value:0}]),N=x("x"),W=x([{label:"x",value:1},{label:"y",value:2},{label:"z",value:3}]),Q=x([{code:"mach",value:.734,name:"马赫数Ma",type:1,flag:1},{code:"reynolds",value:65e5,name:"雷诺数Re",type:1,flag:1},{code:"alpha",value:2.66482,name:"攻角AoA",type:1,flag:1}]),R=x([{code:"cl",value:"0.0",name:"升力系数Cl",type:2,flag:1},{code:"cd",value:"0.0",name:"阻力系数Cd",type:2,flag:1},{code:"cm",value:"0.0",name:"力矩系数Cm",type:2,flag:1},{code:" ",value:"0.0",name:"体积",type:2,flag:1}]),M=x({gridfile:"",fid:"",proname:"巡航工况",temperature:288.15,length:1,area:1,momx:.25,momy:0,momz:0,mgcycle:"sg",ncycles:500,l2convergence:1e-5,l2convergencecoarse:1e-4}),w=x([{label:"巡航工况",value:"cruise"}]),Y=x([{id:"0",name:"网格文件",imgSrc:BLe},{id:"1",name:"来流参数",imgSrc:mpe},{id:"2",name:"设置参数",imgSrc:d$},{id:"3",name:"分析参数",imgSrc:ppe}]);const G=Te=>{a.value=Te},P=(Te,xe)=>(console.log("Data:",xe),Array.isArray(xe)?(Te=xe.map(Je=>{const Mt=Je.code||" ",St=Je.name||" ",Pe=Je.value===null||Je.value===void 0||Je.value===""?" ":Je.value,Be=Je.flag||" ";return`${Mt},${St},${Pe},${Be}`}).join(";"),Te):(console.error("Data should be an array"),Te)),j=Te=>{d.value=Te;const xe={transCode:"MDO0049",pid:d.value};rs(xe).then(Je=>{Je.hasOwnProperty("adid")&&X(Je)}).catch(Je=>{Cn.error(Je.returnMsg)})},X=Te=>{d.value=Te.pid,M.value.gridfile=Te.gridfile,M.value.fid=Te.fid,M.value.proname=Te.proname,Z.value=Te.isairfoil,p.value=Te.writetecplotsurfacesolution,b.value=Te.equationtype,N.value=Te.liftindex,M.value.temperature=Te.temperature,M.value.cl=Te.cl,M.value.cd=Te.cd,M.value.cmz=Te.cmz,M.value.resrho=Te.resrho,M.value.length=Te.length,M.value.area=Te.area,M.value.momx=Te.momx,M.value.momy=Te.momy,M.value.momz=Te.momz,M.value.mgcycle=Te.mgcycle,M.value.ncycles=Te.ncycles,M.value.l2convergence=Te.l2convergence,M.value.l2convergencecoarse=Te.l2convergencecoarse,Q.value=Te.inParams,R.value=Te.outParams},ie=()=>{const Te={transCode:"MDO0050",pid:d.value,gridfile:M.value.gridfile,fid:M.value.fid,proname:M.value.proname,isairfoil:Z.value,writetecplotsurfacesolution:p.value,equationtype:b.value,liftindex:N.value,temperature:M.value.temperature,cl:h.value,resrho:c.value,cd:u.value,cmz:m.value,length:M.value.length,area:M.value.area,momx:M.value.momx,momy:M.value.momy,momz:M.value.momz,mgcycle:M.value.mgcycle,ncycles:M.value.ncycles,l2convergence:M.value.l2convergence,l2convergencecoarse:M.value.l2convergencecoarse,checked:1,inParams:P([],Q.value),outParams:P([],R.value)};rs(Te).then(xe=>{Cn({message:xe.returnMsg,type:"success"})}).catch(xe=>{Cn.error(xe.returnMsg)})},se=Te=>{i.value=Te},pe=Te=>{n.value=Te},Ue=HF(()=>n.value>0&&n.value<=100),Qe=Te=>{setTimeout(()=>{n.value=0},1e3),M.value.gridfile=Te.fname,M.value.fid=Te.bfid},He=Te=>{o.value=Te};return e({getadflow:j,getadflowAssign:X,getadflowsave:ie}),(Te,xe)=>{const Je=qe("el-input"),Mt=qe("el-col"),St=qe("el-row"),Pe=qe("el-progress"),Be=qe("el-form-item"),rt=qe("el-table-column"),Tt=qe("el-checkbox"),qt=qe("el-table"),yt=qe("el-option"),fe=qe("el-radio"),Vi=qe("el-radio-group");return ce(),we("div",LLe,[te("ul",null,[(ce(!0),we(Zt,null,Rt(V(Y),(st,Fn)=>(ce(),we("li",{class:Mi(["item",{active:V(a)===Fn}]),key:Fn,onClick:qi=>G(Fn)},[te("img",{src:st.imgSrc},null,8,ILe),it(" "+zn(st.name),1)],10,kLe))),128))]),V(a)=="0"?(ce(),we("div",DLe,[te("div",GLe,[C(Be,{label:"网格文件:","label-width":V(l),style:{width:"100%"}},{default:T(()=>[C(St,{style:{width:"100%"}},{default:T(()=>[C(Mt,{span:23},{default:T(()=>[C(Je,{modelValue:V(M).gridfile,"onUpdate:modelValue":xe[0]||(xe[0]=st=>V(M).gridfile=st),readonly:"",step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1}),C(Mt,{span:1,style:{display:"flex","align-items":"center","margin-left":"-35px"}},{default:T(()=>[C(KT,{projectId:124,solverType:"exampleSolver",accept:".cgns",upId:"uniqueId1",name:"点击选择文件",imgSrc:V(t),onUploadSuccess:Qe,onUpdateFileName:se,onUpdatePercentage:pe,onUploadStatus:He},null,8,["imgSrc"])]),_:1})]),_:1}),V(Ue)?(ce(),ft(St,{key:0,style:{width:"100%","margin-top":"10px"}},{default:T(()=>[C(Mt,{span:20},{default:T(()=>[C(Pe,{percentage:V(n)},null,8,["percentage"])]),_:1}),C(Mt,{span:4},{default:T(()=>[te("div",ELe,zn(V(o)),1)]),_:1})]),_:1})):xn("",!0)]),_:1},8,["label-width"]),vLe])])):xn("",!0),ws(te("div",null,[te("div",xLe,[C(qt,{data:V(Q),border:"",style:{width:"100%",height:"400px"}},{default:T(()=>[C(rt,{type:"index",width:"70",label:"编号"}),C(rt,{prop:"name",label:"参数名称"}),C(rt,{prop:"value",label:"参数值"},{default:T(({row:st})=>[C(Je,{modelValue:st.value,"onUpdate:modelValue":Fn=>st.value=Fn,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(rt,{prop:"flag",label:"启用",width:"100"},{default:T(st=>[C(Tt,{"false-label":0,"true-label":1,label:!1,modelValue:st.row.flag,"onUpdate:modelValue":Fn=>st.row.flag=Fn},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[ks,V(a)=="1"]]),ws(te("div",JLe,[C(Be,{label:"工况条件:","label-width":V(r)},{default:T(()=>[C(V(Ei),{modelValue:V(M).proname,"onUpdate:modelValue":xe[1]||(xe[1]=st=>V(M).proname=st),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(w),st=>(ce(),ft(yt,{key:st.value,label:st.label,value:st.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(Be,{label:"计算维数:","label-width":V(r)},{default:T(()=>[C(V(Ei),{modelValue:V(Z),"onUpdate:modelValue":xe[2]||(xe[2]=st=>Ft(Z)?Z.value=st:Z=st),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(A),st=>(ce(),ft(yt,{key:st.value,label:st.label,value:st.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(Be,{label:"控制方程:","label-width":V(r)},{default:T(()=>[C(V(Ei),{modelValue:V(b),"onUpdate:modelValue":xe[3]||(xe[3]=st=>Ft(b)?b.value=st:b=st),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(f),st=>(ce(),ft(yt,{key:st.value,label:st.label,value:st.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(Be,{label:"升力定义方向:","label-width":V(r)},{default:T(()=>[C(V(Ei),{modelValue:V(N),"onUpdate:modelValue":xe[4]||(xe[4]=st=>Ft(N)?N.value=st:N=st),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(W),st=>(ce(),ft(yt,{key:st.value,label:st.label,value:st.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(Be,{label:"特征长度:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).length,"onUpdate:modelValue":xe[5]||(xe[5]=st=>V(M).length=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"参考温度:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).temperature,"onUpdate:modelValue":xe[6]||(xe[6]=st=>V(M).temperature=st),step:1,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"参考面积:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).area,"onUpdate:modelValue":xe[7]||(xe[7]=st=>V(M).area=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"力矩中心:","label-width":V(r)},{default:T(()=>[te("div",XLe,[C(Je,{style:{"margin-right":"10px"},modelValue:V(M).momx,"onUpdate:modelValue":xe[8]||(xe[8]=st=>V(M).momx=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"]),C(Je,{style:{"margin-right":"10px"},modelValue:V(M).momy,"onUpdate:modelValue":xe[9]||(xe[9]=st=>V(M).momy=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"]),C(Je,{modelValue:V(M).momz,"onUpdate:modelValue":xe[10]||(xe[10]=st=>V(M).momz=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])])]),_:1},8,["label-width"]),C(Be,{label:"多重网格:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).mgcycle,"onUpdate:modelValue":xe[11]||(xe[11]=st=>V(M).mgcycle=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"计算步数:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).ncycles,"onUpdate:modelValue":xe[12]||(xe[12]=st=>V(M).ncycles=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"监控变量:","label-width":V(r)},{default:T(()=>[C(St,null,{default:T(()=>[C(Mt,{span:12},{default:T(()=>[C(Tt,{modelValue:V(h),"onUpdate:modelValue":xe[13]||(xe[13]=st=>Ft(h)?h.value=st:h=st),"false-label":0,"true-label":1,label:"升力系数Cl",size:"large"},null,8,["modelValue"]),C(Tt,{modelValue:V(c),"onUpdate:modelValue":xe[14]||(xe[14]=st=>Ft(c)?c.value=st:c=st),"false-label":0,"true-label":1,label:"密度残差Resrho",size:"large"},null,8,["modelValue"])]),_:1}),C(Mt,{span:12},{default:T(()=>[C(Tt,{modelValue:V(u),"onUpdate:modelValue":xe[15]||(xe[15]=st=>Ft(u)?u.value=st:u=st),"false-label":0,"true-label":1,label:"阻力系数Cd",size:"large"},null,8,["modelValue"]),C(Tt,{modelValue:V(m),"onUpdate:modelValue":xe[16]||(xe[16]=st=>Ft(m)?m.value=st:m=st),"false-label":0,"true-label":1,label:"力矩系数Cm",size:"large"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"]),C(Be,{label:"细网格收敛残差:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).l2convergence,"onUpdate:modelValue":xe[17]||(xe[17]=st=>V(M).l2convergence=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"粗网格收敛残差:","label-width":V(r)},{default:T(()=>[C(Je,{modelValue:V(M).l2convergencecoarse,"onUpdate:modelValue":xe[18]||(xe[18]=st=>V(M).l2convergencecoarse=st),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"输出物面信息:","label-width":V(r)},{default:T(()=>[C(Vi,{modelValue:V(p),"onUpdate:modelValue":xe[19]||(xe[19]=st=>Ft(p)?p.value=st:p=st)},{default:T(()=>[C(fe,{value:1,label:1},{default:T(()=>[it("是")]),_:1}),C(fe,{value:0,label:0},{default:T(()=>[it("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(Be,{label:"输出切面信息:","label-width":V(r)},{default:T(()=>[C(Vi,{modelValue:V(g),"onUpdate:modelValue":xe[20]||(xe[20]=st=>Ft(g)?g.value=st:g=st)},{default:T(()=>[C(fe,{value:1,label:1},{default:T(()=>[it("是")]),_:1}),C(fe,{value:0,label:0},{default:T(()=>[it("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"])],512),[[ks,V(a)=="2"]]),ws(te("div",null,[te("div",YLe,[C(qt,{data:V(R),border:"",style:{width:"100%",height:"400px"}},{default:T(()=>[C(rt,{type:"index",width:"70",label:"编号"}),C(rt,{prop:"name",label:"参数名称"}),C(rt,{prop:"value",label:"参数值"},{default:T(({row:st})=>[C(Je,{modelValue:st.value,"onUpdate:modelValue":Fn=>st.value=Fn,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(rt,{prop:"flag",label:"启用",width:"100"},{default:T(st=>[C(Tt,{"false-label":0,"true-label":1,label:!1,modelValue:st.row.flag,"onUpdate:modelValue":Fn=>st.row.flag=Fn},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[ks,V(a)=="3"]])])}}},zLe={class:"XFpdding"},_Le=["onClick"],OLe=["src"],jLe={class:"eldesign classtable",style:{"margin-top":"10px"}},HLe={class:"eldesign classtable",style:{"margin-top":"10px"}},PLe={class:"eldesign classtable",style:{"margin-top":"10px",height:"400px"}},KLe={class:"cheinput"},qLe={class:"cheinput"},$Le={class:"cheinput"},Vse={__name:"Xfoil",setup(s,{expose:e}){x(100);let t=x(170);x(250);let i=x(0),n=x(!0),o=x(!0),l=x(!0),r=x("1"),a=x(),d=x(),c=x({iter:100,ppar:200,cpwr:"op.dat",yxzb:"airfoil.dat",pacc:"output.dat"}),h=x([{id:"0",name:"来流参数",imgSrc:mpe},{id:"1",name:"设置参数",imgSrc:d$},{id:"2",name:"分析参数",imgSrc:ppe}]),u=x([{code:"alpha",value:.1,name:"AoA",flag:1},{code:"mach",value:.1,name:"MA",flag:1},{code:"reynolds",value:65e5,name:"Re",flag:1}]),m=x([{code:"cl",value:"0.0",name:"升力系数Cl",flag:1},{code:"cd",value:"0.00436",name:"阻力系数Cd",flag:1},{code:"cdp",value:"0.1",name:"压阻力系数Cdp",flag:1},{code:"cm",value:"0.1",name:"力矩系数Cm",flag:1},{code:"xtr_upper",value:"0.1",name:"上表面转换点位置xtr-upper",flag:1},{code:"xtr_lower",value:"0.1",name:"下表面转换点位置xtr-lower",flag:1}]);const p=A=>{i.value=A},g=(A,N)=>(console.log("Data:",N),Array.isArray(N)?(A=N.map(W=>{const Q=W.code||" ",R=W.name||" ",M=W.value===null||W.value===void 0||W.value===""?" ":W.value,w=W.flag||" ";return`${Q},${R},${M},${w}`}).join(";"),A):(console.error("Data should be an array"),A)),b=A=>{a.value=A,console.log("pid-1:",a.value);const N={transCode:"MDO0046",pid:a.value};rs(N).then(W=>{W.hasOwnProperty("xfid")&&f(W)}).catch(W=>{Cn.error(W.returnMsg)})},f=A=>{a.value=A.pid,d.value=A.xfid,c.value.iter=A.iter,c.value.ppar=A.ppar,c.value.cpwr=A.cpwr,c.value.yxzb=A.yxzb,c.value.pacc=A.pacc,r.value=String(A.analyzed),u.value=A.inParams,m.value=A.outParams};return e({getxfoil:b,getxfoilAssign:f,getxfoilsave:()=>{console.log("pid:",a.value);const A={transCode:"MDO0047",pid:a.value,iter:c.value.iter,ppar:c.value.ppar,cpwr:c.value.cpwr,yxzb:c.value.yxzb,pacc:c.value.pacc,analyzed:r.value,checked:1,inParams:g([],u.value),outParams:g([],m.value)};rs(A).then(N=>{Cn({message:N.returnMsg,type:"success"})}).catch(N=>{Cn.error(N.returnMsg)})}}),(A,N)=>{const W=qe("el-table-column"),Q=qe("el-input"),R=qe("el-checkbox"),M=qe("el-table"),w=qe("el-radio"),Y=qe("el-radio-group"),G=qe("el-form-item");return ce(),we("div",zLe,[te("ul",null,[(ce(!0),we(Zt,null,Rt(V(h),(P,j)=>(ce(),we("li",{class:Mi(["item",{active:V(i)===j}]),key:j,onClick:X=>p(j)},[te("img",{src:P.imgSrc,style:{width:"24px","margin-top":"-8px"}},null,8,OLe),it(" "+zn(P.name),1)],10,_Le))),128))]),ws(te("div",null,[te("div",jLe,[C(M,{data:V(u),border:"",style:{width:"100%",height:"400px"}},{default:T(()=>[C(W,{type:"index",width:"70",label:"编号"}),C(W,{prop:"name",label:"参数名称"}),C(W,{prop:"value",label:"参数值"},{default:T(({row:P})=>[C(Q,{modelValue:P.value,"onUpdate:modelValue":j=>P.value=j,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(W,{prop:"flag",label:"启用",width:"100"},{default:T(P=>[C(R,{"false-label":-1,"true-label":1,label:!1,modelValue:P.row.flag,"onUpdate:modelValue":j=>P.row.flag=j},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[ks,V(i)=="0"]]),ws(te("div",null,[te("div",HLe,[C(M,{data:V(m),border:"",style:{width:"100%",height:"400px"}},{default:T(()=>[C(W,{type:"index",width:"70",label:"编号"}),C(W,{prop:"name",label:"参数名称"}),C(W,{prop:"value",label:"参数值"},{default:T(({row:P})=>[C(Q,{modelValue:P.value,"onUpdate:modelValue":j=>P.value=j,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(W,{prop:"flag",label:"启用",width:"100"},{default:T(P=>[C(R,{"false-label":-1,"true-label":1,label:!1,modelValue:P.row.flag,"onUpdate:modelValue":j=>P.row.flag=j},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[ks,V(i)=="2"]]),ws(te("div",null,[te("div",PLe,[C(G,{label:"计算完成:","label-width":V(t)},{default:T(()=>[C(Y,{modelValue:V(r),"onUpdate:modelValue":N[0]||(N[0]=P=>Ft(r)?r.value=P:r=P)},{default:T(()=>[C(w,{label:"1",value:"1"},{default:T(()=>[it("是")]),_:1}),C(w,{label:"0",value:"0"},{default:T(()=>[it("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(G,{label:"迭代次数:","label-width":V(t)},{default:T(()=>[C(Q,{modelValue:V(c).iter,"onUpdate:modelValue":N[1]||(N[1]=P=>V(c).iter=P),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(G,{label:"表面求解点个数:","label-width":V(t)},{default:T(()=>[C(Q,{modelValue:V(c).ppar,"onUpdate:modelValue":N[2]||(N[2]=P=>V(c).ppar=P),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),te("div",KLe,[C(G,{label:"压力分布:","label-width":V(t)},{default:T(()=>[C(Q,{modelValue:V(c).cpwr,"onUpdate:modelValue":N[3]||(N[3]=P=>V(c).cpwr=P),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(R,{modelValue:V(n),"onUpdate:modelValue":N[4]||(N[4]=P=>Ft(n)?n.value=P:n=P),style:{width:"40px",height:"40px"}},null,8,["modelValue"])]),te("div",qLe,[C(G,{label:"翼型坐标:","label-width":V(t)},{default:T(()=>[C(Q,{modelValue:V(c).yxzb,"onUpdate:modelValue":N[5]||(N[5]=P=>V(c).yxzb=P),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(R,{modelValue:V(o),"onUpdate:modelValue":N[6]||(N[6]=P=>Ft(o)?o.value=P:o=P),style:{width:"40px",height:"40px"}},null,8,["modelValue"])]),te("div",$Le,[C(G,{label:"力和力矩:","label-width":V(t)},{default:T(()=>[C(Q,{modelValue:V(c).pacc,"onUpdate:modelValue":N[7]||(N[7]=P=>V(c).pacc=P),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(R,{modelValue:V(l),"onUpdate:modelValue":N[8]||(N[8]=P=>Ft(l)?l.value=P:l=P),style:{width:"40px",height:"40px"}},null,8,["modelValue"])])])],512),[[ks,V(i)=="1"]])])}}},eke={class:"XFpdding",style:{height:"463px"}},tke={class:"numberinput lefttext"},ike={style:{display:"flex"}},nke={class:"cstleft"},ske={class:"cstleft",style:{"margin-left":"20px"}},oke={class:"classtable"},Qse={__name:"csts",setup(s,{expose:e}){x(100);let t=x(180),i=x("8"),n=x(""),o=x(""),l=x({uppern1:"0.5",lowern1:"1",uppern2:"0.5",lowern2:"1"}),r=x(""),a=x(""),d=x([{date:"上表面CST参数",X1:"0.173482",X2:"0.151492",X3:"0.180515",X4:"0.121639",X5:"0.182491",X6:"0.118110",X7:"0.157365",X8:"0.136958",X9:"0.146738"},{date:"下表面CST参数",X1:"0.173482",X2:"0.151492",X3:"0.180515",X4:"0.121639",X5:"0.182491",X6:"0.118110",X7:"0.157365",X8:"0.136958",X9:"0.146738"}]),c=x([{prop:"X1",label:"X1"},{prop:"X2",label:"X2"},{prop:"X3",label:"X3"},{prop:"X4",label:"X4"},{prop:"X5",label:"X5"},{prop:"X6",label:"X6"},{prop:"X7",label:"X7"},{prop:"X8",label:"X8"},{prop:"X9",label:"X9"}]);const h=()=>{c.value=[];let b=[],f=[],Z=Number(i.value);if(!(Z==0||Z==null||Z==null)){for(let A=1;A<=Z+1;A++)b.push("X"+A);b.forEach(function(A,N){let W="X"+Number(N+1),Q={label:A,prop:W};console.log(Q),c.value.push(Q)}),d.value.forEach(function(A){for(let N=1;N<=Z+1;N++)A["X"+N]=null;f.push(A)}),d.value=f,console.log(d.value)}},u=()=>{const b=d.value[0],f=d.value[1];let Z=[],A=[];for(let N in b)N!=="date"&&Z.push(b[N]);r.value=Z.join(",");for(let N in f)N!=="date"&&A.push(f[N]);a.value=A.join(",")},m=b=>{n.value=b,console.log("getcst:",n.value);const f={transCode:"MDO0040",pid:n.value};rs(f).then(Z=>{Z.hasOwnProperty("cstid")&&p(Z)}).catch(Z=>{Cn.error(Z.returnMsg)})},p=b=>{n.value=b.pid,o.value=b.cstid,i.value=b.cstn,l.value.uppern1=b.uppern1,l.value.lowern1=b.lowern1,l.value.uppern2=b.uppern2,l.value.lowern2=b.lowern2,h();let f=b.upperb?b.upperb.split(","):[],Z=b.lowerb?b.lowerb.split(","):[];d.value.forEach((A,N)=>{N===0?c.value.forEach((W,Q)=>{Q<f.length&&(A[W.prop]=f[Q])}):N===1&&c.value.forEach((W,Q)=>{Q<Z.length&&(A[W.prop]=Z[Q])})})};return e({getcst:m,getcstAssign:p,getcstsave:()=>{u();const b={transCode:"MDO0041",pid:n.value,cstn:i.value,uppern1:l.value.uppern1,lowern1:l.value.lowern1,uppern2:l.value.uppern2,lowern2:l.value.lowern2,upperb:r.value,lowerb:a.value,checked:1};rs(b).then(f=>{Cn({message:f.returnMsg,type:"success"})}).catch(f=>{Cn.error(f.returnMsg)})}}),(b,f)=>{const Z=qe("el-input-number"),A=qe("el-form-item"),N=qe("el-input"),W=qe("el-table-column"),Q=qe("el-table"),R=qe("el-form");return ce(),we("div",eke,[te("div",tke,[C(R,null,{default:T(()=>[te("div",null,[C(A,{label:"CST阶数:","label-width":V(t)},{default:T(()=>[C(Z,{modelValue:V(i),"onUpdate:modelValue":f[0]||(f[0]=M=>Ft(i)?i.value=M:i=M),step:1,min:0,max:20,"controls-position":"right",onChange:h},null,8,["modelValue"])]),_:1},8,["label-width"])]),te("div",ike,[te("div",nke,[C(A,{label:"上表面类函数参数:","label-width":V(t)},{default:T(()=>[C(N,{modelValue:V(l).uppern1,"onUpdate:modelValue":f[1]||(f[1]=M=>V(l).uppern1=M),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:T(()=>[it("N1:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(A,{label:"下表面类函数参数:","label-width":V(t)},{default:T(()=>[C(N,{modelValue:V(l).lowern1,"onUpdate:modelValue":f[2]||(f[2]=M=>V(l).lowern1=M),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:T(()=>[it("N1:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),te("div",ske,[C(A,{label:"上表面类函数参数:","label-width":V(t)},{default:T(()=>[C(N,{modelValue:V(l).uppern2,"onUpdate:modelValue":f[3]||(f[3]=M=>V(l).uppern2=M),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:T(()=>[it("N2:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(A,{label:"下表面类函数参数:","label-width":V(t)},{default:T(()=>[C(N,{modelValue:V(l).lowern2,"onUpdate:modelValue":f[4]||(f[4]=M=>V(l).lowern2=M),step:100,min:0,max:1e3,"controls-position":"right"},{prefix:T(()=>[it("N2:")]),_:1},8,["modelValue"])]),_:1},8,["label-width"])])]),te("div",oke,[C(Q,{data:V(d),style:{width:"100%"},border:"true"},{default:T(()=>[C(W,{prop:"date",label:"",width:"150"}),(ce(!0),we(Zt,null,Rt(V(c),(M,w)=>(ce(),ft(W,{key:w,prop:M.prop,label:M.label},{default:T(({row:Y})=>[C(N,{modelValue:Y[M.prop],"onUpdate:modelValue":G=>Y[M.prop]=G},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop","label"]))),128))]),_:1},8,["data"])])]),_:1})])])}}},lke={class:"XFpdding",style:{height:"463px"}},rke={class:"classtable"},yse={__name:"ffds",setup(s,{expose:e}){let t=x("200"),i=x(),n=x(),o=x(),l=x({fname:"204",nx:10,ny:2,nz:2}),r=x(1),a=x(),d=x([{axis:"Z1",X1:"1",X2:"2",X3:"3",X4:"4",X5:"5",X6:"6",X7:"7",X8:"8",X9:"9"},{axis:"Z2",X1:"1",X2:"2",X3:"3",X4:"4",X5:"5",X6:"6",X7:"7",X8:"8",X9:"9"}]),c=x([{prop:"X1",label:"X1"},{prop:"X2",label:"X2"},{prop:"X3",label:"X3"},{prop:"X4",label:"X4"},{prop:"X5",label:"X5"},{prop:"X6",label:"X6"},{prop:"X7",label:"X7"},{prop:"X8",label:"X8"},{prop:"X9",label:"X9"}]);const h=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAAXNSR0IArs4c6QAABCpJREFUaEPtmUtoE0EYx7+ZVPvQ6BYPPkBsQVoQxGRTELyYnrz0oSehB2sv7U0UikeTipcqhSqCtCBWkRZPGtqLekh68AHNbLcoQkFstJK0oBjb2EbN7thvSULS3TxqmzJFB0I2yc7u/zffN99jQ2CLDyKSfofDUUMp9SiK0lGsLqEAZFmeIYTUaJpWq6pqqBgIYQBkWfYQQrwomnPeoyiKcVxoCAHgcDjcNpvNnyE2mrRCdNMBUAyl9DQh5BDn3AEAEiFESgnhnIcIIegeUc75lK7rAUrpPXSdTLHFWiHLAkkzZl2o0Aqkftc0rYdS6l4Rfq/YOQXOK8oKaQCXy3UaAB43Nzev+f7BYBAikQjOCwAArrqPc67iSlNKQzabzXAFTdMkznnq5aCUtiatZHnPYqyQBpBl+TyuHor5mzE6OgqDg4MQDofRPXATDuW7TjJk+le7zqo5Ba2wYQB443A4bECMjY3hR1XTtDO5wqHT6RyilLYXWqxCVthQgJQYBOnq6jLcasVl+nVdv5kJkrJ2IfHJ3/NaoSQAKWH53MrtdkvxeFxKJBJG0NB1Hd+N46RbGXsFvyOEXGSMPbECLimAlVuhaxW58lmnYZSzcseSA2S61cjICMRisTXrT0a5IcaYqUbaNIA1q86Y4PV6MTD8B1jPIq5r7r9pAcaYkZhEGJgYGWOBlQr1PkYxHCldlpsYhbe0tIBeni4iReAwNNCfUaypqlVVNeorS4BAIADd3d3wreGKMMJRSNliCOzTDxAg3bFZAmC8vnH7Lnw/ekEogG3Radj5/hG6U1q3JUBfXx88GHsFsfpzQgGUz7+GqtlnUcZYdd49gO7zXI1A7PBZoQAqwuNQGR5XGWPOvABYSb74XAbLB08JBVA144PtX9RxRVHceQGwK/tA6iB+4KRQAPbp+1C2+DGrpLDcAw0NDfCjthV+7TkmFMCud4NAf0SyHrmYAPx+PzQ2NsJifTsk7IeEApAmewES8Y7MdtUEMDw8DG1tbbBwpBO0qn3CABAtDtLkdWx2GoPBID48MIYJYGBgwGgHo87LwG0VwgDYlubAcCFKnRMTE7lLCY/HA95rvQaASCMjC6fLCEsLdHZ2wp2HPlg40iWSftj+dQp2zPiysrAlQFNTEzwefytcFrZKYpYALpcLXoYSsFTbKpQFKmefQvnc66wkZglQV1cHU7H9oiYxH2MMH4GmhykK2e12mJdOwM+9x4WygFUSs7QAfilwErukKEp/XguIClAdvIrSzqx+QmdyITxLtCSGbeTuN7dMWTinC22FVjJnKYGN/FZoJXMC/LbXCJfEsJWs/PQ0pChK7erQaNoDWMD9kuqFCqFly/PYB5iSWNYewA8rjYyXc/5Xf/KVmphS2p9ZhZpcqNQCSnV9If7oXg/cf4D1rN5GzN3yFvgDeHmLUMPmZkgAAAAASUVORK5CYII=",self.location).href,u=()=>{console.log("generateTable");const A=Number(l.value.nx),N=Number(l.value.ny),W=Number(l.value.nz);let Q=[],R=[];switch(r.value){case 0:Q=Array.from({length:A},(M,w)=>({label:`X${w+1}`,prop:`X${w+1}`})),R=Array.from({length:N},(M,w)=>({label:`Y${w+1}`,prop:`Y${w+1}`}));break;case 1:Q=Array.from({length:A},(M,w)=>({label:`X${w+1}`,prop:`X${w+1}`})),R=Array.from({length:W},(M,w)=>({label:`Z${w+1}`,prop:`Z${w+1}`}));break;case 2:Q=Array.from({length:N},(M,w)=>({label:`Y${w+1}`,prop:`Y${w+1}`})),R=Array.from({length:A},(M,w)=>({label:`X${w+1}`,prop:`X${w+1}`}));break;case 3:Q=Array.from({length:N},(M,w)=>({label:`Y${w+1}`,prop:`Y${w+1}`})),R=Array.from({length:W},(M,w)=>({label:`Z${w+1}`,prop:`Z${w+1}`}));break;case 4:Q=Array.from({length:W},(M,w)=>({label:`Z${w+1}`,prop:`Z${w+1}`})),R=Array.from({length:A},(M,w)=>({label:`X${w+1}`,prop:`X${w+1}`}));break;case 5:Q=Array.from({length:W},(M,w)=>({label:`Z${w+1}`,prop:`Z${w+1}`})),R=Array.from({length:N},(M,w)=>({label:`Y${w+1}`,prop:`Y${w+1}`}));break}c.value=Q,d.value=[];for(let M=1;M<=R.length;M++){let w={axis:R[M-1].label};Q.forEach(Y=>{w[Y.prop]=null}),d.value.push(w)}},m=A=>{l.value.fname=A.fname,n.value=A.bfid,console.log("文件上传成功,bfid:",A.bfid,"fname:",A.fname)},p=()=>{let A=[];d.value.forEach(N=>{c.value.forEach(W=>{let Q=N[W.prop];(Q==null||Q==="")&&(Q=" "),A.push(Q)})}),a.value=A.join(",")},g=()=>{if(!a.value)return;const A=a.value.split(",");console.log("ffdchaxun",A);let N=0;d.value.forEach(W=>{c.value.forEach(Q=>{N<A.length&&(W[Q.prop]=A[N]===" "?"":A[N],N++)})})},b=A=>{i.value=A;const N={transCode:"MDO0043",pid:i.value};rs(N).then(W=>{W.hasOwnProperty("ffdid")&&f(W)}).catch(W=>{Cn.error(W.returnMsg)})},f=A=>{i.value=A.pid,o.value=A.ffdid,l.value.fname=A.fname,l.value.nx=A.nx,l.value.ny=A.ny,l.value.nz=A.nz,r.value=Number(A.order),a.value=A.vars,u(),g()};return e({getffds:b,getffdsAssign:f,getffdsave:()=>{p();const A={transCode:"MDO0044",pid:i.value,fid:n.value,fname:l.value.fname,nx:l.value.nx,ny:l.value.ny,nz:l.value.nz,order:r.value,vars:a.value,checked:1};rs(A).then(N=>{Cn({message:N.returnMsg,type:"success"})}).catch(N=>{Cn.error(N.returnMsg)})}}),(A,N)=>{const W=qe("el-input"),Q=qe("el-form-item"),R=qe("el-radio"),M=qe("el-radio-group"),w=qe("el-input-number"),Y=qe("el-col"),G=qe("el-row"),P=qe("el-table-column"),j=qe("el-table");return ce(),we("div",lke,[te("div",null,[C(Q,{label:"FFD包围盒:","label-width":V(t)},{default:T(()=>[C(W,{modelValue:V(l).fname,"onUpdate:modelValue":N[0]||(N[0]=X=>V(l).fname=X),max:20,"controls-position":"right",onKeydown:mQe(A.keydownenter,["enter"])},{append:T(()=>[C(KT,{projectId:123,solverType:"exampleSolver",accept:".xyz",upId:"uniqueId1",name:"点击选择文件",imgSrc:V(h),onUploadSuccess:m},null,8,["imgSrc"])]),_:1},8,["modelValue","onKeydown"])]),_:1},8,["label-width"]),C(Q,{label:"参考坐标系:","label-width":V(t)},{default:T(()=>[C(M,{modelValue:V(r),"onUpdate:modelValue":N[1]||(N[1]=X=>Ft(r)?r.value=X:r=X)},{default:T(()=>[C(R,{value:0,label:0},{default:T(()=>[it("x-y-z")]),_:1}),C(R,{value:1,label:1},{default:T(()=>[it("x-z-y")]),_:1}),C(R,{value:2,label:2},{default:T(()=>[it("y-x-z")]),_:1}),C(R,{value:3,label:3},{default:T(()=>[it("y-z-x")]),_:1}),C(R,{value:4,label:4},{default:T(()=>[it("z-x-y")]),_:1}),C(R,{value:5,label:5},{default:T(()=>[it("z-y-x")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),C(Q,{label:"控制点数(X,Y,Z):","label-width":V(t)},{default:T(()=>[C(G,{style:{width:"100%"},gutter:5},{default:T(()=>[C(Y,{span:6},{default:T(()=>[C(w,{style:{width:"120px"},modelValue:V(l).nx,"onUpdate:modelValue":N[2]||(N[2]=X=>V(l).nx=X),"controls-position":"right"},null,8,["modelValue"])]),_:1}),C(Y,{span:6},{default:T(()=>[C(w,{style:{width:"120px"},modelValue:V(l).ny,"onUpdate:modelValue":N[3]||(N[3]=X=>V(l).ny=X),"controls-position":"right"},null,8,["modelValue"])]),_:1}),C(Y,{span:6},{default:T(()=>[C(w,{style:{width:"120px"},modelValue:V(l).nz,"onUpdate:modelValue":N[4]||(N[4]=X=>V(l).nz=X),"controls-position":"right"},null,8,["modelValue"])]),_:1}),C(Y,{span:6},{default:T(()=>[C(V(Lt),{onClick:u,style:{width:"100%"}},{default:T(()=>[it("应用")]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),te("div",rke,[C(j,{data:V(d),style:{width:"100%"},border:""},{default:T(()=>[C(P,{prop:"axis",label:"",width:"60"}),(ce(!0),we(Zt,null,Rt(V(c),(X,ie)=>(ce(),ft(P,{key:ie,prop:X.prop,label:X.label},{default:T(({row:se})=>[C(W,{modelValue:se[X.prop],"onUpdate:modelValue":pe=>se[X.prop]=pe},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop","label"]))),128))]),_:1},8,["data"])])])}}};const sm=s=>(OT("data-v-f55d40a4"),s=s(),jT(),s),ake={class:"cloudsecond"},dke={style:{display:"flex","flex-direction":"row",width:"100%"}},cke={style:{width:"30%","padding-left":"10px"}},hke={class:"classtable tabledomain"},uke=sm(()=>te("span",{class:"collapse-title"},"标量",-1)),mke=sm(()=>te("span",{class:"collapse-title"},"云图间隔",-1)),pke=sm(()=>te("span",{class:"collapse-title"},"数据范围",-1)),gke=sm(()=>te("span",{class:"collapse-title"},"色卡颜色范围",-1)),bke=sm(()=>te("i",{style:{"font-style":"italic","font-size":"24px"}},"I",-1)),Uke=sm(()=>te("b",{style:{"font-weight":"bold","font-size":"24px"}},"B",-1)),fke=sm(()=>te("i",{style:{"font-style":"italic","font-size":"24px"}},"I",-1)),Fke=sm(()=>te("b",{style:{"font-weight":"bold","font-size":"24px"}},"B",-1)),Zke=sm(()=>te("span",{class:"collapse-title"},"标量",-1)),Ake=sm(()=>te("span",{class:"collapse-title"},"云图间隔",-1)),Nke=sm(()=>te("span",{class:"collapse-title"},"数据范围",-1)),Rke={__name:"Cloudsecond",props:{activesd:{type:Object,required:!0}},setup(s){const e=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAAAXNSR0IArs4c6QAAAptJREFUSEu91ltIFFEYB/D/mc1Md90VtotI2nZhgx6MnX3o8hAkXV6EKfAtCiJq8ymQfYh6EYJKfJDdiC6SBqEUQuhGFEEp1BYOnjO7SlAuaEYXsc2kVXd0dU6M5ODWVtYMzePM+f6/832cA0NgwePxeFa4XK7yeDw+8GMcsSAffr8/DMBNKT30z4DP59siCIKXEOLWNM3GOf9MCBkFUEwIiQDIANhEKX27GJnvQBTF416v93CublKpFEZGRh4AqOWcJwRBSOrrOOd2ABsBrFtUd5VSWvMT4Pf7O3p7e6Vfjau1tRUtLS1dqVTqpCzLxpxFUbxGCDmxqC6jaZpHUZQPC+/mO/gToK9Jp9MIBoNQFOWcIAgNqqquBtDEOXcQQooAFADQu2qilJ75a2ChIBqNIhQKjamq2pOrY1VVkUwmaxRFGda/L7mDpZ627u5uvdODlNKO/wvIsix1RiKYnJxa6mZzrhscHERn5F6zNjtzMRaLJYwRtbe3S1WnLkMt3WUK0IuF6XE4+0KNjLFaAwiHw9KxxseYcW81DSybeIeiV82nKaX1BlBXVycF2xLIOPW7Y+7JG38Ne+L2UcbYTQMIBAJSw1OOucISc+kA8j9RFA7fr6SUdhlAdXW1dCNRDi3PYRooeP8E9tEXG2RZHjKA3ZV7pbtfd5gO1wMK33QiPxm3U0qnDMBbsU3qWb7fEsAx0Jbs67qzKuuiFa8XpSF3lSWA8+WVgdizh5uzgMzKCmnCc8ASoFipf8Tk5/PjMEakrtkupcv2mQbI3Axc7MItxtiRLCC9do+kluw0DQjqGJz9l84zxs5mAdPuCmnWUWYasE1/Qf7HaIAxdt0AfD5fqc1m85pO/x7AOZf1I2oAVgXnyrHkt+V3G/wGgT4mKcVKfYkAAAAASUVORK5CYII=",self.location).href;let t=x(140),i=x(100),n=x([]),o=x([{label:"文件1",value:"x1"},{label:"文件2",value:"x2"},{label:"文件3",value:"x3"},{label:"文件4",value:"x4"}]),l=x(["显示全部","隐藏全部","倒转互换"]),r=x(["显示","隐藏","表明绘制"]),a=x([{rowname:"Z1",state:"1",type:"2",area:"3"},{rowname:"Z2",state:"1",type:"2",area:"3"},{rowname:"Z3",state:"1",type:"2",area:"3"},{rowname:"Z4",state:"1",type:"2",area:"3"}]),d=x([{label:"状态",prop:"state"},{label:"绘制类型",prop:"type"},{label:"平面范围",prop:"area"}]);x("1");let c=x([{label:"00",value:"00"}]);x("当前时间步");let h=x([{label:"当前时间步",value:"当前时间步"},{label:"所有时间步",value:"所有时间步"},{label:"固定值",value:"固定值"}]);x("竖直");let u=x([{label:"竖直",value:"竖直"},{label:"水平",value:"水平"}]);x("微软雅黑");let m=x([{label:"微软雅黑",value:"微软雅黑"}]);x("15");let p=x([{label:"15",value:"15"}]);x("科学计数法");let g=x([{label:"整型",value:"整型"},{label:"浮点型",value:"浮点型"},{label:"科学计数法",value:"科学计数法"},{label:"(最适)浮点型",value:"(最适)浮点型"}]);x("使用变量名");let b=x([{label:"使用变量名",value:"使用变量名"},{label:"使用文本",value:"使用文本"}]);x("Arial");let f=x([{label:"Arial",value:"Arial"}]);x("1");let Z=x([{label:"00",value:"00"}]),A=x(["1","2","3","4"]),N=x(["1","2","3"]),W=x({name:"00",type:"00",scalarname:"00",jzcheck:"1",dycheck:"1",name2:"00",check3:"1",dataAreaType:"当前时间步",max:"0.00",min:"0.00",maxcv:"34, 103, 177, 1",mincv:"232, 0, 0, 1"}),Q=x("#2267B1"),R=x("#E80000");const M=(j,X=1)=>{let ie=parseInt(j.slice(1,3),16),se=parseInt(j.slice(3,5),16),pe=parseInt(j.slice(5,7),16);return`${ie}, ${se}, ${pe}, ${X}`},w=()=>{W.value.maxcv=M(Q.value)},Y=()=>{W.value.mincv=M(R.value)};let G=x({check1:"1",orientation:"竖直",X:"0.8",Y:"0.05",width:"0.8",height:"0.05",skipc:"2",font:"微软雅黑",fontsize:"15",dataformat:"科学计数法",jingdu:"2",check2:"1",texttitle:"使用变量名",titlefont:"Arial",fontsize2:"20"}),P=x({name:"00",type:"00",scalarname2:"00",cengji:"00",max:"0.00",min:"0.00"});return(j,X)=>{const ie=qe("el-input"),se=qe("el-col"),pe=qe("el-row"),Ue=qe("el-form-item"),Qe=qe("el-checkbox"),He=qe("el-checkbox-group"),Te=qe("el-card"),xe=qe("el-button"),Je=qe("el-table-column"),Mt=qe("el-table"),St=qe("el-option"),Pe=qe("el-select"),Be=qe("el-form"),rt=qe("el-collapse-item"),Tt=qe("el-color-picker"),qt=qe("el-collapse"),yt=qe("el-input-number");return ce(),we("div",ake,[ws(te("div",null,[C(Ue,{label:"添加文件:","label-width":V(t),"label-position":"left"},{default:T(()=>[C(pe,{style:{width:"100%"}},{default:T(()=>[C(se,{span:24},{default:T(()=>[C(ie,{readonly:"",step:100,min:0,max:1e3,"controls-position":"right"})]),_:1}),C(se,{span:1,style:{display:"flex","align-items":"center","margin-left":"-35px"}},{default:T(()=>[C(KT,{projectId:123,solverType:"exampleSolver",accept:".cgns",upId:"uniqueId1",name:"点击选择文件",imgSrc:V(e)},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1},8,["label-width"]),te("div",dke,[C(Te,{shadow:"hover",style:{width:"70%"}},{default:T(()=>[C(He,{modelValue:V(n),"onUpdate:modelValue":X[0]||(X[0]=fe=>Ft(n)?n.value=fe:n=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(o),fe=>(ce(),ft(Qe,{key:fe.value,label:fe.value,style:{display:"block"}},{default:T(()=>[it(zn(fe.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),te("div",cke,[C(xe,{style:{width:"100%"}},{default:T(()=>[it("删除选中文件")]),_:1}),C(xe,{style:{"background-color":"transparent","margin-left":"0",width:"100%"}},{default:T(()=>[it("删除全部文件")]),_:1})])])],512),[[ks,s.activesd.fileselect]]),ws(te("div",null,[te("div",null,[C(pe,{style:{"margin-bottom":"10px"},gutter:20},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(l),(fe,Vi)=>(ce(),ft(se,{key:Vi,span:8},{default:T(()=>[C(xe,{style:{width:"100%"}},{default:T(()=>[it(zn(fe),1)]),_:2},1024)]),_:2},1024))),128))]),_:1}),C(pe,{style:{"margin-bottom":"10px"},gutter:20},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(r),(fe,Vi)=>(ce(),ft(se,{key:Vi,span:8},{default:T(()=>[C(xe,{style:{width:"100%"}},{default:T(()=>[it(zn(fe),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),te("div",hke,[C(Mt,{data:V(a),style:{width:"100%"},border:"true"},{default:T(()=>[C(Je,{prop:"rowname",label:"域名称"}),(ce(!0),we(Zt,null,Rt(V(d),(fe,Vi)=>(ce(),ft(Je,{key:Vi,prop:fe.prop,label:fe.label},{default:T(({row:st})=>[C(ie,{modelValue:st[fe.prop],"onUpdate:modelValue":Fn=>st[fe.prop]=Fn},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["prop","label"]))),128))]),_:1},8,["data"])])],512),[[ks,s.activesd.domain]]),ws(te("div",null,[te("div",null,[C(qt,{modelValue:V(A),"onUpdate:modelValue":X[15]||(X[15]=fe=>Ft(A)?A.value=fe:A=fe)},{default:T(()=>[C(rt,{name:"1"},{title:T(()=>[uke]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"名称:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(W).name,"onUpdate:modelValue":X[1]||(X[1]=fe=>V(W).name=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"类型:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(W).type,"onUpdate:modelValue":X[2]||(X[2]=fe=>V(W).type=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"标量名:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(W).scalarname,"onUpdate:modelValue":X[3]||(X[3]=fe=>V(W).scalarname=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(c),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"","label-width":V(t)},{default:T(()=>[C(pe,null,{default:T(()=>[C(se,{span:12},{default:T(()=>[C(Qe,{label:"极值",modelValue:V(W).jzcheck,"onUpdate:modelValue":X[4]||(X[4]=fe=>V(W).jzcheck=fe)},null,8,["modelValue"])]),_:1}),C(se,{span:12},{default:T(()=>[C(Qe,{label:"单元值离散到点",modelValue:V(W).dycheck,"onUpdate:modelValue":X[5]||(X[5]=fe=>V(W).dycheck=fe)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"])]),_:1})]),_:1}),C(rt,{name:"2"},{title:T(()=>[mke]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"名称:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(W).name2,"onUpdate:modelValue":X[6]||(X[6]=fe=>V(W).name2=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:" ","label-width":V(t)},{default:T(()=>[C(pe,null,{default:T(()=>[C(se,{span:24},{default:T(()=>[C(Qe,{label:"平滑云图",modelValue:V(W).check3,"onUpdate:modelValue":X[7]||(X[7]=fe=>V(W).check3=fe)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"])]),_:1})]),_:1}),C(rt,{name:"3"},{title:T(()=>[pke]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"数据范围类型:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(W).dataAreaType,"onUpdate:modelValue":X[8]||(X[8]=fe=>V(W).dataAreaType=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(h),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"最大值:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(W).max,"onUpdate:modelValue":X[9]||(X[9]=fe=>V(W).max=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"最小值:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(W).min,"onUpdate:modelValue":X[10]||(X[10]=fe=>V(W).min=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1}),C(rt,{name:"4"},{title:T(()=>[gke]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"最大值:","label-width":V(t)},{default:T(()=>[C(pe,{style:{width:"100%"}},{default:T(()=>[C(se,{span:22},{default:T(()=>[C(ie,{modelValue:V(W).maxcv,"onUpdate:modelValue":X[11]||(X[11]=fe=>V(W).maxcv=fe)},null,8,["modelValue"])]),_:1}),C(se,{span:2},{default:T(()=>[C(Tt,{modelValue:V(Q),"onUpdate:modelValue":X[12]||(X[12]=fe=>Ft(Q)?Q.value=fe:Q=fe),onChange:w},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"]),C(Ue,{label:"最小值:","label-width":V(t)},{default:T(()=>[C(pe,{style:{width:"100%"}},{default:T(()=>[C(se,{span:22},{default:T(()=>[C(ie,{modelValue:V(W).mincv,"onUpdate:modelValue":X[13]||(X[13]=fe=>V(W).mincv=fe)},null,8,["modelValue"])]),_:1}),C(se,{span:2},{default:T(()=>[C(Tt,{modelValue:V(R),"onUpdate:modelValue":X[14]||(X[14]=fe=>Ft(R)?R.value=fe:R=fe),onChange:Y},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["label-width"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])],512),[[ks,s.activesd.cloud]]),ws(te("div",null,[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"","label-width":V(t)},{default:T(()=>[C(Qe,{label:"显示色卡",modelValue:V(G).check1,"onUpdate:modelValue":X[16]||(X[16]=fe=>V(G).check1=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"朝向:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(G).orientation,"onUpdate:modelValue":X[17]||(X[17]=fe=>V(G).orientation=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(u),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(pe,{gutter:10},{default:T(()=>[C(se,{span:10},{default:T(()=>[C(Ue,{label:"X(0-1):","label-width":V(i)},{default:T(()=>[C(ie,{modelValue:V(G).X,"onUpdate:modelValue":X[18]||(X[18]=fe=>V(G).X=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),C(se,{span:10},{default:T(()=>[C(Ue,{label:"Y(0-1):","label-width":V(i)},{default:T(()=>[C(ie,{modelValue:V(G).Y,"onUpdate:modelValue":X[19]||(X[19]=fe=>V(G).Y=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),C(se,{span:4},{default:T(()=>[C(xe,{style:{width:"100%"}},{default:T(()=>[it("更新")]),_:1})]),_:1})]),_:1}),C(pe,{gutter:10},{default:T(()=>[C(se,{span:10},{default:T(()=>[C(Ue,{label:"宽度(0-1):","label-width":V(i)},{default:T(()=>[C(ie,{modelValue:V(G).width,"onUpdate:modelValue":X[20]||(X[20]=fe=>V(G).width=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),C(se,{span:10},{default:T(()=>[C(Ue,{label:"高度(0-1):","label-width":V(i)},{default:T(()=>[C(ie,{modelValue:V(G).height,"onUpdate:modelValue":X[21]||(X[21]=fe=>V(G).height=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),C(se,{span:4},{default:T(()=>[C(xe,{style:{width:"100%"}},{default:T(()=>[it("更新")]),_:1})]),_:1})]),_:1}),C(Ue,{label:"跳过层级:","label-width":V(t)},{default:T(()=>[C(yt,{modelValue:V(G).skipc,"onUpdate:modelValue":X[22]||(X[22]=fe=>V(G).skipc=fe),"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"字体:","label-width":V(t)},{default:T(()=>[C(pe,{style:{width:"100%"},gutter:"10"},{default:T(()=>[C(se,{span:20},{default:T(()=>[C(Pe,{modelValue:V(G).font,"onUpdate:modelValue":X[23]||(X[23]=fe=>V(G).font=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(m),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),C(se,{span:2},{default:T(()=>[C(xe,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:T(()=>[bke]),_:1})]),_:1}),C(se,{span:2},{default:T(()=>[C(xe,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:T(()=>[Uke]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),C(Ue,{label:"字体大小:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(G).fontsize,"onUpdate:modelValue":X[24]||(X[24]=fe=>V(G).fontsize=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(p),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"数据格式:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(G).dataformat,"onUpdate:modelValue":X[25]||(X[25]=fe=>V(G).dataformat=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(g),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"精度:","label-width":V(t)},{default:T(()=>[C(yt,{modelValue:V(G).jingdu,"onUpdate:modelValue":X[26]||(X[26]=fe=>V(G).jingdu=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"","label-width":V(t)},{default:T(()=>[C(Qe,{label:"显示标题",modelValue:V(G).check2,"onUpdate:modelValue":X[27]||(X[27]=fe=>V(G).check2=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"标题文本:","label-width":V(t)},{default:T(()=>[C(pe,null,{default:T(()=>[C(se,{span:12},{default:T(()=>[C(Pe,{modelValue:V(G).texttitle,"onUpdate:modelValue":X[28]||(X[28]=fe=>V(G).texttitle=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(b),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),C(se,{span:12},{default:T(()=>[C(ie)]),_:1})]),_:1})]),_:1},8,["label-width"]),C(Ue,{label:"标题字体:","label-width":V(t)},{default:T(()=>[C(pe,{style:{width:"100%"},gutter:"10"},{default:T(()=>[C(se,{span:20},{default:T(()=>[C(Pe,{modelValue:V(G).titlefont,"onUpdate:modelValue":X[29]||(X[29]=fe=>V(G).titlefont=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(f),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),C(se,{span:2},{default:T(()=>[C(xe,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:T(()=>[fke]),_:1})]),_:1}),C(se,{span:2},{default:T(()=>[C(xe,{style:{width:"32px",height:"32px",padding:"0","font-size":"18px","line-height":"32px","text-align":"center"}},{default:T(()=>[Fke]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),C(Ue,{label:"字体大小:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(G).fontsize2,"onUpdate:modelValue":X[30]||(X[30]=fe=>V(G).fontsize2=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(p),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})],512),[[ks,s.activesd.colorchart]]),ws(te("div",null,[C(qt,{modelValue:V(N),"onUpdate:modelValue":X[37]||(X[37]=fe=>Ft(N)?N.value=fe:N=fe)},{default:T(()=>[C(rt,{name:"1"},{title:T(()=>[Zke]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"名称:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(P).name,"onUpdate:modelValue":X[31]||(X[31]=fe=>V(P).name=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"类型:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(P).type,"onUpdate:modelValue":X[32]||(X[32]=fe=>V(P).type=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"标量名:","label-width":V(t)},{default:T(()=>[C(Pe,{modelValue:V(P).scalarname2,"onUpdate:modelValue":X[33]||(X[33]=fe=>V(P).scalarname2=fe)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Z),fe=>(ce(),ft(St,{key:fe.value,label:fe.label,value:fe.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1}),C(rt,{name:"2"},{title:T(()=>[Ake]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"层级:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(P).cengji,"onUpdate:modelValue":X[34]||(X[34]=fe=>V(P).cengji=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1}),C(rt,{name:"3"},{title:T(()=>[Nke]),default:T(()=>[C(Be,{"label-position":"left"},{default:T(()=>[C(Ue,{label:"最大值:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(P).max,"onUpdate:modelValue":X[35]||(X[35]=fe=>V(P).max=fe)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(Ue,{label:"最小值:","label-width":V(t)},{default:T(()=>[C(ie,{modelValue:V(P).min,"onUpdate:modelValue":X[36]||(X[36]=fe=>V(P).min=fe)},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],512),[[ks,s.activesd.isoline]])])}}},Ske=im(Rke,[["__scopeId","data-v-f55d40a4"]]),Wke={class:"XFpdding"},Vke=["onClick"],Qke=["src"],yke={key:0,class:"eldesign classtable",style:{"margin-top":"10px"}},Cke={__name:"FSI",setup(s){let e=x(0),t=x(190),i=x({maxIter:2,result:1,interpolation:"MELD",aeroRegion:"wall"}),n=x([{id:"0",name:"设置参数",imgSrc:d$}]);const o=l=>{e.value=l};return(l,r)=>{const a=qe("el-input"),d=qe("el-form-item"),c=qe("el-option"),h=qe("el-checkbox"),u=qe("el-form");return ce(),we("div",Wke,[te("ul",null,[(ce(!0),we(Zt,null,Rt(V(n),(m,p)=>(ce(),we("li",{class:Mi(["item",{active:V(e)===p}]),key:p,onClick:g=>o(p)},[te("img",{src:m.imgSrc},null,8,Qke),it(" "+zn(m.name),1)],10,Vke))),128))]),V(e)=="0"?(ce(),we("div",yke,[C(u,null,{default:T(()=>[C(d,{label:"最大耦合迭代步:","label-width":V(t)},{default:T(()=>[C(a,{modelValue:V(i).maxIter,"onUpdate:modelValue":r[0]||(r[0]=m=>V(i).maxIter=m)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(d,{label:"输出每轮迭代结果:","label-width":V(t)},{default:T(()=>[C(a,{modelValue:V(i).result,"onUpdate:modelValue":r[1]||(r[1]=m=>V(i).result=m)},null,8,["modelValue"])]),_:1},8,["label-width"]),C(d,{label:"插值方法:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).interpolation,"onUpdate:modelValue":r[2]||(r[2]=m=>V(i).interpolation=m)},{default:T(()=>[C(c,{label:"MELD",value:"MELD"})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(d,{label:"耦合区域","label-width":V(t)},null,8,["label-width"]),C(d,{label:"气动区域:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(i).aeroRegion,"onUpdate:modelValue":r[3]||(r[3]=m=>V(i).aeroRegion=m)},{default:T(()=>[C(c,{label:"wall",value:"wall"})]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),C(d,{label:"结构区域","label-width":V(t)},{default:T(()=>[C(h,{label:"Skin"}),C(h,{label:"Spar"})]),_:1},8,["label-width"])]),_:1})])):xn("",!0)])}}},wke=""+new URL("flight1-a24af376.png",import.meta.url).href,Mke=""+new URL("flight2-b27bd10a.png",import.meta.url).href,Tke=""+new URL("flight3-a2c3ba85.png",import.meta.url).href,Bke=""+new URL("flight4-236fe6b6.png",import.meta.url).href;const Lke=s=>(OT("data-v-e84f4763"),s=s(),jT(),s),kke={class:"XFpdding",style:{height:"470px"}},Ike=["onClick"],Dke=["src"],Gke={class:"eldesign classtable",style:{"margin-top":"10px"}},Eke={class:"eldesign classtable",style:{"margin-top":"10px"}},vke=Lke(()=>te("span",{style:{"padding-left":"20px"}},"纵向",-1)),xke={class:"eldesign classtable",style:{"margin-top":"10px"}},Jke={class:"eldesign classtable",style:{"margin-top":"10px"}},Xke={__name:"Flight",setup(s){let e=x(0),t=x(176),i=x(["1","2"]),n=x(["1","2"]);x({maxIter:2,result:1,interpolation:"MELD",aeroRegion:"wall"});let o=x([{id:"0",name:"飞行性能",imgSrc:wke},{id:"1",name:"操稳特性",imgSrc:Mke},{id:"2",name:"重量特性",imgSrc:Tke},{id:"3",name:"推力特性",imgSrc:Bke}]);const l=u=>{console.log("dayin",u),e.value=u,console.log("currentTab1",e.value)};let r=x([{value:80,name:"最小平飞速度",flag:1},{value:270,name:"最大平飞速度",flag:1},{value:0,name:"升限",flag:1},{value:0,name:"爬升率",flag:1}]),a=x([{value:1353.5816,name:"航程",flag:1},{value:2.4344,name:"航时",flag:1},{value:2600,name:"起飞场长",flag:1},{value:2e3,name:"着陆场长",flag:1}]),d=x([{value:16700,name:"空重",flag:1},{value:18600,name:"最大起飞重量",flag:1}]),c=x([{value:1298e-9,name:"耗油率",flag:1},{value:.85,name:"螺旋桨效率",flag:1}]);const h=({column:u})=>(console.log("列:",u.property),u.property==="name"?(console.log("yanse",u.property),"header-name"):u.property==="value"?"header-age":u.property==="flag"?"header-address":"");return(u,m)=>{const p=qe("el-table-column"),g=qe("el-input"),b=qe("el-checkbox"),f=qe("el-table"),Z=qe("el-collapse-item"),A=qe("el-collapse"),N=qe("el-form-item"),W=qe("el-form");return ce(),we("div",kke,[te("ul",null,[(ce(!0),we(Zt,null,Rt(V(o),(Q,R)=>(ce(),we("li",{class:Mi(["item",{active:V(e)===R}]),key:R,onClick:M=>l(R)},[te("img",{src:Q.imgSrc,style:{width:"24px","margin-top":"-8px"}},null,8,Dke),it(" "+zn(Q.name),1)],10,Ike))),128))]),ws(te("div",Gke,[C(A,{modelValue:V(i),"onUpdate:modelValue":m[0]||(m[0]=Q=>Ft(i)?i.value=Q:i=Q)},{default:T(()=>[C(Z,{title:"飞行包线",name:"1"},{default:T(()=>[C(f,{data:V(r),border:"",style:{width:"100%"},"header-cell-class-name":h},{default:T(()=>[C(p,{type:"index",width:"70",label:"编号"}),C(p,{prop:"name",label:"参数名称"}),C(p,{prop:"value",label:"参数值"},{default:T(({row:Q})=>[C(g,{modelValue:Q.value,"onUpdate:modelValue":R=>Q.value=R,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(p,{prop:"flag",label:"启用",width:"100"},{default:T(Q=>[C(b,{"false-label":0,"true-label":1,label:!1,modelValue:Q.row.flag,"onUpdate:modelValue":R=>Q.row.flag=R},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])]),_:1}),C(Z,{title:"起飞着陆",name:"2"},{default:T(()=>[C(f,{data:V(a),border:"",style:{width:"100%"}},{default:T(()=>[C(p,{type:"index",width:"70",label:"编号"}),C(p,{prop:"name",label:"参数名称"}),C(p,{prop:"value",label:"参数值"},{default:T(({row:Q})=>[C(g,{modelValue:Q.value,"onUpdate:modelValue":R=>Q.value=R,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(p,{prop:"flag",label:"启用",width:"100"},{default:T(Q=>[C(b,{"false-label":0,"true-label":1,label:!1,modelValue:Q.row.flag,"onUpdate:modelValue":R=>Q.row.flag=R},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])]),_:1})]),_:1},8,["modelValue"])],512),[[ks,V(e)=="0"]]),ws(te("div",Eke,[C(A,{modelValue:V(n),"onUpdate:modelValue":m[1]||(m[1]=Q=>Ft(n)?n.value=Q:n=Q)},{default:T(()=>[C(Z,{title:"静稳定性",name:"1"},{default:T(()=>[C(N,{label:"纵向静稳定导数:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"航向静稳定导数:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"])]),_:1}),C(Z,{title:"动稳定性",name:"2"},{default:T(()=>[vke,C(W,null,{default:T(()=>[C(N,{label:"长周期模态","label-width":V(t)},null,8,["label-width"]),C(N,{label:"阻尼比:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"频率:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"])]),_:1}),C(W,null,{default:T(()=>[C(N,{label:"短周期模态","label-width":V(t)},null,8,["label-width"]),C(N,{label:"阻尼比:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"频率:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"])]),_:1}),C(N,{label:"横航向","label-width":V(t)},null,8,["label-width"]),C(W,null,{default:T(()=>[C(N,{label:"螺旋模态","label-width":V(t)},null,8,["label-width"]),C(N,{label:"时间常数:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"运动周期:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"滚转模态","label-width":V(t)},null,8,["label-width"]),C(N,{label:"时间常数:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"荷兰滚模态","label-width":V(t)},null,8,["label-width"]),C(N,{label:"阻尼比:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"]),C(N,{label:"固有频率:","label-width":V(t)},{default:T(()=>[C(g)]),_:1},8,["label-width"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],512),[[ks,V(e)=="1"]]),ws(te("div",xke,[C(f,{data:V(d),border:"",style:{width:"100%",height:"400px"}},{default:T(()=>[C(p,{type:"index",width:"70",label:"编号"}),C(p,{prop:"name",label:"参数名称"}),C(p,{prop:"value",label:"参数值"},{default:T(({row:Q})=>[C(g,{modelValue:Q.value,"onUpdate:modelValue":R=>Q.value=R,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(p,{prop:"flag",label:"启用",width:"100"},{default:T(Q=>[C(b,{"false-label":0,"true-label":1,label:!1,modelValue:Q.row.flag,"onUpdate:modelValue":R=>Q.row.flag=R},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])],512),[[ks,V(e)=="2"]]),ws(te("div",Jke,[C(f,{data:V(c),border:"",style:{width:"100%",height:"400px"}},{default:T(()=>[C(p,{type:"index",width:"70",label:"编号"}),C(p,{prop:"name",label:"参数名称"}),C(p,{prop:"value",label:"参数值"},{default:T(({row:Q})=>[C(g,{modelValue:Q.value,"onUpdate:modelValue":R=>Q.value=R,type:"number"},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(p,{prop:"flag",label:"启用",width:"100"},{default:T(Q=>[C(b,{"false-label":0,"true-label":1,label:!1,modelValue:Q.row.flag,"onUpdate:modelValue":R=>Q.row.flag=R},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])],512),[[ks,V(e)=="3"]])])}}},Yke=im(Xke,[["__scopeId","data-v-e84f4763"]]),B9={__name:"ListSE",setup(s){let e=x("全部设计"),t=x([{label:"全部设计",value:"全部设计"},{label:"可行设计",value:"可行设计"},{label:"不可行设计",value:"不可行设计"},{label:"非错误设计",value:"非错误设计"},{label:"最佳设计",value:"最佳设计"},{label:"改进设计",value:"改进设计"},{label:"错误设计",value:"错误设计"}]),i=x([]),n=x([{label:"x1",value:"x1"},{label:"x2",value:"x2"},{label:"x3",value:"x3"},{label:"x4",value:"x4"}]),o=x([]),l=x([{label:"y1",value:"y1"},{label:"y2",value:"y2"},{label:"y3",value:"y3"},{label:"y4",value:"y4"}]);return(r,a)=>{const d=qe("el-option"),c=qe("el-form-item"),h=qe("el-checkbox"),u=qe("el-checkbox-group"),m=qe("el-card"),p=qe("el-space"),g=qe("el-form");return ce(),ft(g,null,{default:T(()=>[C(c,{label:"设计集:"},{default:T(()=>[C(V(Ei),{modelValue:V(e),"onUpdate:modelValue":a[0]||(a[0]=b=>Ft(e)?e.value=b:e=b),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(t),b=>(ce(),ft(d,{key:b.value,label:b.label,value:b.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1}),C(c,{label:"选择要在表中显示的一个或者多个变量和响应"}),C(p,{style:{width:"100%"},fill:"","fill-ratio":40},{default:T(()=>[C(m,{shadow:"hover"},{default:T(()=>[C(u,{modelValue:V(i),"onUpdate:modelValue":a[1]||(a[1]=b=>Ft(i)?i.value=b:i=b)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(n),b=>(ce(),ft(h,{key:b.value,label:b.value,style:{display:"block"}},{default:T(()=>[it(zn(b.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),C(m,{shadow:"hover"},{default:T(()=>[C(u,{modelValue:V(o),"onUpdate:modelValue":a[2]||(a[2]=b=>Ft(o)?o.value=b:o=b)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(l),b=>(ce(),ft(h,{key:b.value,label:b.value,style:{display:"block"}},{default:T(()=>[it(zn(b.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1})}}};const c$=s=>(OT("data-v-e609c961"),s=s(),jT(),s),zke={class:"XFpdding",style:{height:"550px"}},_ke=["onClick"],Oke={key:0,class:"classtable",style:{"margin-top":"10px"}},jke=c$(()=>te("div",{style:{"flex-grow":"1"}},null,-1)),Hke={class:"classtable",style:{"margin-top":"10px"}},Pke=c$(()=>te("span",{class:"collapse-title"},"材料属性",-1)),Kke=c$(()=>te("span",{class:"collapse-title"},"收敛选项",-1)),qke={class:"eldesign classtable",style:{"margin-top":"10px"}},$ke={class:"eldesign classtable",style:{"margin-top":"10px"}},eIe={__name:"TACS",setup(s){let e=x(170),t=x(120),i=x(0),n=x([{id:"0",name:"网格文件"},{id:"1",name:"结构参数"},{id:"2",name:"设置参数"},{id:"3",name:"分析参数"}]);const o=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAAAXNSR0IArs4c6QAABCpJREFUaEPtmUtoE0EYx7+ZVPvQ6BYPPkBsQVoQxGRTELyYnrz0oSehB2sv7U0UikeTipcqhSqCtCBWkRZPGtqLekh68AHNbLcoQkFstJK0oBjb2EbN7thvSULS3TxqmzJFB0I2yc7u/zffN99jQ2CLDyKSfofDUUMp9SiK0lGsLqEAZFmeIYTUaJpWq6pqqBgIYQBkWfYQQrwomnPeoyiKcVxoCAHgcDjcNpvNnyE2mrRCdNMBUAyl9DQh5BDn3AEAEiFESgnhnIcIIegeUc75lK7rAUrpPXSdTLHFWiHLAkkzZl2o0Aqkftc0rYdS6l4Rfq/YOQXOK8oKaQCXy3UaAB43Nzev+f7BYBAikQjOCwAArrqPc67iSlNKQzabzXAFTdMkznnq5aCUtiatZHnPYqyQBpBl+TyuHor5mzE6OgqDg4MQDofRPXATDuW7TjJk+le7zqo5Ba2wYQB443A4bECMjY3hR1XTtDO5wqHT6RyilLYXWqxCVthQgJQYBOnq6jLcasVl+nVdv5kJkrJ2IfHJ3/NaoSQAKWH53MrtdkvxeFxKJBJG0NB1Hd+N46RbGXsFvyOEXGSMPbECLimAlVuhaxW58lmnYZSzcseSA2S61cjICMRisTXrT0a5IcaYqUbaNIA1q86Y4PV6MTD8B1jPIq5r7r9pAcaYkZhEGJgYGWOBlQr1PkYxHCldlpsYhbe0tIBeni4iReAwNNCfUaypqlVVNeorS4BAIADd3d3wreGKMMJRSNliCOzTDxAg3bFZAmC8vnH7Lnw/ekEogG3Radj5/hG6U1q3JUBfXx88GHsFsfpzQgGUz7+GqtlnUcZYdd49gO7zXI1A7PBZoQAqwuNQGR5XGWPOvABYSb74XAbLB08JBVA144PtX9RxRVHceQGwK/tA6iB+4KRQAPbp+1C2+DGrpLDcAw0NDfCjthV+7TkmFMCud4NAf0SyHrmYAPx+PzQ2NsJifTsk7IeEApAmewES8Y7MdtUEMDw8DG1tbbBwpBO0qn3CABAtDtLkdWx2GoPBID48MIYJYGBgwGgHo87LwG0VwgDYlubAcCFKnRMTE7lLCY/HA95rvQaASCMjC6fLCEsLdHZ2wp2HPlg40iWSftj+dQp2zPiysrAlQFNTEzwefytcFrZKYpYALpcLXoYSsFTbKpQFKmefQvnc66wkZglQV1cHU7H9oiYxH2MMH4GmhykK2e12mJdOwM+9x4WygFUSs7QAfilwErukKEp/XguIClAdvIrSzqx+QmdyITxLtCSGbeTuN7dMWTinC22FVjJnKYGN/FZoJXMC/LbXCJfEsJWs/PQ0pChK7erQaNoDWMD9kuqFCqFly/PYB5iSWNYewA8rjYyXc/5Xf/KVmphS2p9ZhZpcqNQCSnV9If7oXg/cf4D1rN5GzN3yFvgDeHmLUMPmZkgAAAAASUVORK5CYII=",self.location).href;let l=x(["1","2"]),r=x({objname:"CRM",density:"2780.0",ysml:"73.1e9",ratio:"0.33",stress:"262.0e6",radio:"1",absolute:"1e3",relative:"1e3"}),a=x("1"),d=x("UCRM_wing.xml.bdf"),c=x([{data:"0.995208",con:""},{data:"0.992144",con:""},{data:"0.988525",con:""},{data:"0.984251",con:""},{data:"0.979202",con:""},{data:"0.973236",con:""},{data:"0.966186",con:""},{data:"0.957851",con:""},{data:"",con:""},{data:"",con:""},{data:"",con:""}]),h=x([{data:13972.2123,name:"结构质量",enable:"1"},{data:.3337,name:"KS聚合应力",enable:"1"},{data:0,name:"最大变形",enable:"1"}]);const u=m=>{i.value=m};return(m,p)=>{const g=qe("el-input"),b=qe("el-form-item"),f=qe("el-form"),Z=qe("el-radio"),A=qe("el-radio-group"),N=qe("el-collapse-item"),W=qe("el-collapse"),Q=qe("el-table-column"),R=qe("el-checkbox"),M=qe("el-table");return ce(),we("div",zke,[te("ul",null,[(ce(!0),we(Zt,null,Rt(V(n),(w,Y)=>(ce(),we("li",{class:Mi(["item",{active:V(i)===Y}]),key:Y,onClick:G=>u(Y)},zn(w.name),11,_ke))),128))]),V(i)=="0"?(ce(),we("div",Oke,[C(f,{"label-position":"left"},{default:T(()=>[C(b,{label:"网格文件:","label-width":V(t)},{default:T(()=>[C(g,{modelValue:V(d),"onUpdate:modelValue":p[0]||(p[0]=w=>Ft(d)?d.value=w:d=w)},{append:T(()=>[C(KT,{projectId:125,solverType:"exampleSolver",accept:"",upId:"uniqueId1",imgSrc:V(o),name:"点击选择文件"},null,8,["imgSrc"])]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),jke])):xn("",!0),ws(te("div",Hke,[C(b,{label:"分析对象名称:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).objname,"onUpdate:modelValue":p[1]||(p[1]=w=>V(r).objname=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(W,{modelValue:V(l),"onUpdate:modelValue":p[9]||(p[9]=w=>Ft(l)?l.value=w:l=w)},{default:T(()=>[C(N,{title:"材料属性",name:"1"},{title:T(()=>[Pke]),default:T(()=>[C(b,{label:"材料密度:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).density,"onUpdate:modelValue":p[2]||(p[2]=w=>V(r).density=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(b,{label:"杨氏模量:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).ysml,"onUpdate:modelValue":p[3]||(p[3]=w=>V(r).ysml=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(b,{label:"泊松比:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).ratio,"onUpdate:modelValue":p[4]||(p[4]=w=>V(r).ratio=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(b,{label:"屈服应力:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).stress,"onUpdate:modelValue":p[5]||(p[5]=w=>V(r).stress=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(b,{label:"启用FFD参数化:","label-width":V(e)},{default:T(()=>[C(A,{modelValue:V(r).radio,"onUpdate:modelValue":p[6]||(p[6]=w=>V(r).radio=w)},{default:T(()=>[C(Z,{label:"1"},{default:T(()=>[it("是")]),_:1}),C(Z,{label:"0"},{default:T(()=>[it("否")]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1}),C(N,{title:"收敛选项",name:"2"},{title:T(()=>[Kke]),default:T(()=>[C(b,{label:"绝对收敛参数:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).absolute,"onUpdate:modelValue":p[7]||(p[7]=w=>V(r).absolute=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(b,{label:"相对收敛参数:","label-width":V(e)},{default:T(()=>[C(g,{modelValue:V(r).relative,"onUpdate:modelValue":p[8]||(p[8]=w=>V(r).relative=w),step:100,min:0,max:1e3,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),_:1},8,["modelValue"])],512),[[ks,V(i)=="2"]]),ws(te("div",null,[te("div",qke,[C(M,{data:V(c),border:"",style:{width:"100%"}},{default:T(()=>[C(Q,{label:"启用"},{default:T(()=>[C(Q,{type:"index",width:"70",label:"编号"})]),_:1}),C(Q,null,{header:T(()=>[C(R,{"false-label":"-1","true-label":"1",label:!1,modelValue:V(a),"onUpdate:modelValue":p[10]||(p[10]=w=>Ft(a)?a.value=w:a=w)},null,8,["modelValue"])]),default:T(()=>[C(Q,{prop:"data",label:"厚度分布",width:"100"},{default:T(({row:w})=>[C(g,{modelValue:w.data,"onUpdate:modelValue":Y=>w.data=Y,modelModifiers:{number:!0}},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1}),C(Q,null,{default:T(()=>[C(Q,{prop:"con",label:""})]),_:1})]),_:1},8,["data"])])],512),[[ks,V(i)=="1"]]),ws(te("div",null,[te("div",$ke,[C(M,{data:V(h),border:"",style:{width:"100%"}},{default:T(()=>[C(Q,{type:"index",width:"70",label:"编号"}),C(Q,{prop:"name",label:"参数名称"}),C(Q,{prop:"data",label:"参数值"},{default:T(({row:w})=>[C(g,{modelValue:w.data,"onUpdate:modelValue":Y=>w.data=Y,modelModifiers:{number:!0},onChange:Y=>m.handleEdit(w)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Q,{prop:"con",label:"启用",width:"100"},{default:T(w=>[C(R,{"false-label":"-1","true-label":"1",label:!1,modelValue:w.row.enable,"onUpdate:modelValue":Y=>w.row.enable=Y},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])])],512),[[ks,V(i)=="3"]])])}}},tIe=im(eIe,[["__scopeId","data-v-e609c961"]]),iIe={__name:"Exreport",setup(s){const e=new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAAAXNSR0IArs4c6QAAAptJREFUSEu91ltIFFEYB/D/mc1Md90VtotI2nZhgx6MnX3o8hAkXV6EKfAtCiJq8ymQfYh6EYJKfJDdiC6SBqEUQuhGFEEp1BYOnjO7SlAuaEYXsc2kVXd0dU6M5ODWVtYMzePM+f6/832cA0NgwePxeFa4XK7yeDw+8GMcsSAffr8/DMBNKT30z4DP59siCIKXEOLWNM3GOf9MCBkFUEwIiQDIANhEKX27GJnvQBTF416v93CublKpFEZGRh4AqOWcJwRBSOrrOOd2ABsBrFtUd5VSWvMT4Pf7O3p7e6Vfjau1tRUtLS1dqVTqpCzLxpxFUbxGCDmxqC6jaZpHUZQPC+/mO/gToK9Jp9MIBoNQFOWcIAgNqqquBtDEOXcQQooAFADQu2qilJ75a2ChIBqNIhQKjamq2pOrY1VVkUwmaxRFGda/L7mDpZ627u5uvdODlNKO/wvIsix1RiKYnJxa6mZzrhscHERn5F6zNjtzMRaLJYwRtbe3S1WnLkMt3WUK0IuF6XE4+0KNjLFaAwiHw9KxxseYcW81DSybeIeiV82nKaX1BlBXVycF2xLIOPW7Y+7JG38Ne+L2UcbYTQMIBAJSw1OOucISc+kA8j9RFA7fr6SUdhlAdXW1dCNRDi3PYRooeP8E9tEXG2RZHjKA3ZV7pbtfd5gO1wMK33QiPxm3U0qnDMBbsU3qWb7fEsAx0Jbs67qzKuuiFa8XpSF3lSWA8+WVgdizh5uzgMzKCmnCc8ASoFipf8Tk5/PjMEakrtkupcv2mQbI3Axc7MItxtiRLCC9do+kluw0DQjqGJz9l84zxs5mAdPuCmnWUWYasE1/Qf7HaIAxdt0AfD5fqc1m85pO/x7AOZf1I2oAVgXnyrHkt+V3G/wGgT4mKcVKfYkAAAAASUVORK5CYII=",self.location).href;let t=x(90),i=x("pdf");x([]);let n=x("Adobe PDF(*.pdf)");x([{key:"1",label:"表1"},{key:"2",label:"表1"},{key:"3",label:"表1"},{key:"4",label:"表1"}]);let o=x([{label:"Adobe PDF(*.pdf)",value:"pdf"},{label:"Word 97-2003 Document(*.doc)",value:"doc"},{label:"HTML(*.html)",value:"html"},{label:"All Image Files(*.png,*.jpg,*.jpeg,*.gif)",value:"img"}]);return(l,r)=>{const a=qe("el-form-item"),d=qe("el-radio"),c=qe("el-radio-group"),h=qe("el-input"),u=qe("el-col"),m=qe("el-row"),p=qe("el-option"),g=qe("el-form");return ce(),ft(g,{"label-position":"left"},{default:T(()=>[C(a,{label:"导出格式","label-width":V(t)},null,8,["label-width"]),C(c,{modelValue:V(i),"onUpdate:modelValue":r[0]||(r[0]=b=>Ft(i)?i.value=b:i=b)},{default:T(()=>[C(d,{value:l.doc},{default:T(()=>[it("doc")]),_:1},8,["value"]),C(d,{value:l.pdf},{default:T(()=>[it("pdf")]),_:1},8,["value"]),C(d,{value:l.HTML},{default:T(()=>[it("HTML")]),_:1},8,["value"]),C(d,{value:l.image},{default:T(()=>[it("image")]),_:1},8,["value"])]),_:1},8,["modelValue"]),C(a,{label:"选择文件:","label-width":V(t)},{default:T(()=>[C(m,{style:{width:"100%"}},{default:T(()=>[C(u,{span:24},{default:T(()=>[C(h,{readonly:""})]),_:1}),C(u,{span:1,style:{display:"flex","align-items":"center","margin-left":"-35px"}},{default:T(()=>[C(KT,{projectId:123,solverType:"exampleSolver",accept:"",upId:"uniqueId1",name:"点击选择文件",imgSrc:V(e)},null,8,["imgSrc"])]),_:1})]),_:1})]),_:1},8,["label-width"]),C(a,{label:"选择名称:","label-width":V(t)},{default:T(()=>[C(m,null,{default:T(()=>[C(u,{span:"20"},{default:T(()=>[C(h)]),_:1}),C(u,{span:"4"},{default:T(()=>[C(V(Lt),null,{default:T(()=>[it("打开")]),_:1})]),_:1})]),_:1})]),_:1},8,["label-width"]),C(a,{label:"文件类型:","label-width":V(t)},{default:T(()=>[C(V(Ei),{modelValue:V(n),"onUpdate:modelValue":r[1]||(r[1]=b=>Ft(n)?n.value=b:n=b)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(o),b=>(ce(),ft(p,{key:b.value,label:b.label,value:b.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])]),_:1})}}};function Ac(s,e=0){return s[s.length-(1+e)]}function nIe(s){if(s.length===0)throw new Error("Invalid tail call");return[s.slice(0,s.length-1),s[s.length-1]]}function Fs(s,e,t=(i,n)=>i===n){if(s===e)return!0;if(!s||!e||s.length!==e.length)return!1;for(let i=0,n=s.length;i<n;i++)if(!t(s[i],e[i]))return!1;return!0}function sIe(s,e){const t=s.length-1;e<t&&(s[e]=s[t]),s.pop()}function Hw(s,e,t){return oIe(s.length,i=>t(s[i],e))}function oIe(s,e){let t=0,i=s-1;for(;t<=i;){const n=(t+i)/2|0,o=e(n);if(o<0)t=n+1;else if(o>0)i=n-1;else return n}return-(t+1)}function hj(s,e,t){if(s=s|0,s>=e.length)throw new TypeError("invalid index");const i=e[Math.floor(e.length*Math.random())],n=[],o=[],l=[];for(const r of e){const a=t(r,i);a<0?n.push(r):a>0?o.push(r):l.push(r)}return s<n.length?hj(s,n,t):s<n.length+l.length?l[0]:hj(s-(n.length+l.length),o,t)}function Cse(s,e){const t=[];let i;for(const n of s.slice(0).sort(e))!i||e(i[0],n)!==0?(i=[n],t.push(i)):i.push(n);return t}function*h$(s,e){let t,i;for(const n of s)i!==void 0&&e(i,n)?t.push(n):(t&&(yield t),t=[n]),i=n;t&&(yield t)}function gpe(s,e){for(let t=0;t<=s.length;t++)e(t===0?void 0:s[t-1],t===s.length?void 0:s[t])}function lIe(s,e){for(let t=0;t<s.length;t++)e(t===0?void 0:s[t-1],s[t],t+1===s.length?void 0:s[t+1])}function Oh(s){return s.filter(e=>!!e)}function wse(s){let e=0;for(let t=0;t<s.length;t++)s[t]&&(s[e]=s[t],e+=1);s.length=e}function bpe(s){return!Array.isArray(s)||s.length===0}function Sr(s){return Array.isArray(s)&&s.length>0}function U0(s,e=t=>t){const t=new Set;return s.filter(i=>{const n=e(i);return t.has(n)?!1:(t.add(n),!0)})}function u$(s,e){return s.length>0?s[0]:e}function Ra(s,e){let t=typeof e=="number"?s:0;typeof e=="number"?t=s:(t=0,e=s);const i=[];if(t<=e)for(let n=t;n<e;n++)i.push(n);else for(let n=t;n>e;n--)i.push(n);return i}function _5(s,e,t){const i=s.slice(0,e),n=s.slice(e);return i.concat(t,n)}function L9(s,e){const t=s.indexOf(e);t>-1&&(s.splice(t,1),s.unshift(e))}function CL(s,e){const t=s.indexOf(e);t>-1&&(s.splice(t,1),s.push(e))}function uj(s,e){for(const t of e)s.push(t)}function m$(s){return Array.isArray(s)?s:[s]}function rIe(s,e,t){const i=Upe(s,e),n=s.length,o=t.length;s.length=n+o;for(let l=n-1;l>=i;l--)s[l+o]=s[l];for(let l=0;l<o;l++)s[l+i]=t[l]}function Mse(s,e,t,i){const n=Upe(s,e);let o=s.splice(n,t);return o===void 0&&(o=[]),rIe(s,n,i),o}function Upe(s,e){return e<0?Math.max(e+s.length,0):Math.min(e,s.length)}var Pw;(function(s){function e(o){return o<0}s.isLessThan=e;function t(o){return o<=0}s.isLessThanOrEqual=t;function i(o){return o>0}s.isGreaterThan=i;function n(o){return o===0}s.isNeitherLessOrGreaterThan=n,s.greaterThan=1,s.lessThan=-1,s.neitherLessOrGreaterThan=0})(Pw||(Pw={}));function ea(s,e){return(t,i)=>e(s(t),s(i))}function aIe(...s){return(e,t)=>{for(const i of s){const n=i(e,t);if(!Pw.isNeitherLessOrGreaterThan(n))return n}return Pw.neitherLessOrGreaterThan}}const zh=(s,e)=>s-e,dIe=(s,e)=>zh(s?1:0,e?1:0);function fpe(s){return(e,t)=>-s(e,t)}class f0{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t<this.items.length&&e(this.items[t]);)t++;const i=t===this.firstIdx?null:this.items.slice(this.firstIdx,t);return this.firstIdx=t,i}takeFromEndWhile(e){let t=this.lastIdx;for(;t>=0&&e(this.items[t]);)t--;const i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){const t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}const jS=class jS{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new jS(t=>this.iterate(i=>e(i)?t(i):!0))}map(e){return new jS(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t,i=!0;return this.iterate(n=>((i||Pw.isGreaterThan(e(n,t)))&&(i=!1,t=n),!0)),t}};jS.empty=new jS(e=>{});let vZ=jS;class SE{constructor(e){this._indexMap=e}static createSortPermutation(e,t){const i=Array.from(e.keys()).sort((n,o)=>t(e[n],e[o]));return new SE(i)}apply(e){return e.map((t,i)=>e[this._indexMap[i]])}inverse(){const e=this._indexMap.slice();for(let t=0;t<this._indexMap.length;t++)e[this._indexMap[t]]=t;return new SE(e)}}function Da(s){return typeof s=="string"}function il(s){return typeof s=="object"&&s!==null&&!Array.isArray(s)&&!(s instanceof RegExp)&&!(s instanceof Date)}function cIe(s){const e=Object.getPrototypeOf(Uint8Array);return typeof s=="object"&&s instanceof e}function XU(s){return typeof s=="number"&&!isNaN(s)}function Tse(s){return!!s&&typeof s[Symbol.iterator]=="function"}function Fpe(s){return s===!0||s===!1}function Rr(s){return typeof s>"u"}function fp(s){return!qd(s)}function qd(s){return Rr(s)||s===null}function Yi(s,e){if(!s)throw new Error(e?`Unexpected type, expected '${e}'`:"Unexpected type")}function rU(s){if(qd(s))throw new Error("Assertion Failed: argument is undefined or null");return s}function Kw(s){return typeof s=="function"}function hIe(s,e){const t=Math.min(s.length,e.length);for(let i=0;i<t;i++)uIe(s[i],e[i])}function uIe(s,e){if(Da(e)){if(typeof s!==e)throw new Error(`argument does not match constraint: typeof ${e}`)}else if(Kw(e)){try{if(s instanceof e)return}catch{}if(!qd(s)&&s.constructor===e||e.length===1&&e.call(void 0,s)===!0)return;throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}function wg(s){if(!s||typeof s!="object"||s instanceof RegExp)return s;const e=Array.isArray(s)?[]:{};return Object.entries(s).forEach(([t,i])=>{e[t]=i&&typeof i=="object"?wg(i):i}),e}function mIe(s){if(!s||typeof s!="object")return s;const e=[s];for(;e.length>0;){const t=e.shift();Object.freeze(t);for(const i in t)if(Zpe.call(t,i)){const n=t[i];typeof n=="object"&&!Object.isFrozen(n)&&!cIe(n)&&e.push(n)}}return s}const Zpe=Object.prototype.hasOwnProperty;function Ape(s,e){return mj(s,e,new Set)}function mj(s,e,t){if(qd(s))return s;const i=e(s);if(typeof i<"u")return i;if(Array.isArray(s)){const n=[];for(const o of s)n.push(mj(o,e,t));return n}if(il(s)){if(t.has(s))throw new Error("Cannot clone recursive data-structure");t.add(s);const n={};for(const o in s)Zpe.call(s,o)&&(n[o]=mj(s[o],e,t));return t.delete(s),n}return s}function O5(s,e,t=!0){return il(s)?(il(e)&&Object.keys(e).forEach(i=>{i in s?t&&(il(s[i])&&il(e[i])?O5(s[i],e[i],t):s[i]=e[i]):s[i]=e[i]}),s):e}function gd(s,e){if(s===e)return!0;if(s==null||e===null||e===void 0||typeof s!=typeof e||typeof s!="object"||Array.isArray(s)!==Array.isArray(e))return!1;let t,i;if(Array.isArray(s)){if(s.length!==e.length)return!1;for(t=0;t<s.length;t++)if(!gd(s[t],e[t]))return!1}else{const n=[];for(i in s)n.push(i);n.sort();const o=[];for(i in e)o.push(i);if(o.sort(),!gd(n,o))return!1;for(t=0;t<n.length;t++)if(!gd(s[n[t]],e[n[t]]))return!1}return!0}function pIe(s){let e=[];for(;Object.prototype!==s;)e=e.concat(Object.getOwnPropertyNames(s)),s=Object.getPrototypeOf(s);return e}function pj(s){const e=[];for(const t of pIe(s))typeof s[t]=="function"&&e.push(t);return e}function gIe(s,e){const t=n=>function(){const o=Array.prototype.slice.call(arguments,0);return e(n,o)},i={};for(const n of s)i[n]=t(n);return i}function Npe(){return globalThis._VSCODE_NLS_MESSAGES}function p$(){return globalThis._VSCODE_NLS_LANGUAGE}const bIe=p$()==="pseudo"||typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function WE(s,e){let t;return e.length===0?t=s:t=s.replace(/\{(\d+)\}/g,(i,n)=>{const o=n[0],l=e[o];let r=i;return typeof l=="string"?r=l:(typeof l=="number"||typeof l=="boolean"||l===void 0||l===null)&&(r=String(l)),r}),bIe&&(t="["+t.replace(/[aouei]/g,"$&$&")+"]"),t}function U(s,e,...t){return WE(typeof s=="number"?Rpe(s,e):e,t)}function Rpe(s,e){var i;const t=(i=Npe())==null?void 0:i[s];if(typeof t!="string"){if(typeof e=="string")return e;throw new Error(`!!! NLS MISSING: ${s} !!!`)}return t}function kt(s,e,...t){let i;typeof s=="number"?i=Rpe(s,e):i=e;const n=WE(i,t);return{value:n,original:e===i?n:WE(e,t)}}const sS="en";let VE=!1,QE=!1,_I=!1,Spe=!1,g$=!1,b$=!1,Wpe=!1,wL,OI=sS,Bse=sS,UIe,gu;const a0=globalThis;let Yr;var jue;typeof a0.vscode<"u"&&typeof a0.vscode.process<"u"?Yr=a0.vscode.process:typeof process<"u"&&typeof((jue=process==null?void 0:process.versions)==null?void 0:jue.node)=="string"&&(Yr=process);var Hue;const fIe=typeof((Hue=Yr==null?void 0:Yr.versions)==null?void 0:Hue.electron)=="string",FIe=fIe&&(Yr==null?void 0:Yr.type)==="renderer";var Pue;if(typeof Yr=="object"){VE=Yr.platform==="win32",QE=Yr.platform==="darwin",_I=Yr.platform==="linux",_I&&Yr.env.SNAP&&Yr.env.SNAP_REVISION,Yr.env.CI||Yr.env.BUILD_ARTIFACTSTAGINGDIRECTORY,wL=sS,OI=sS;const s=Yr.env.VSCODE_NLS_CONFIG;if(s)try{const e=JSON.parse(s);wL=e.userLocale,Bse=e.osLocale,OI=e.resolvedLanguage||sS,UIe=(Pue=e.languagePack)==null?void 0:Pue.translationsConfigFile}catch{}Spe=!0}else typeof navigator=="object"&&!FIe?(gu=navigator.userAgent,VE=gu.indexOf("Windows")>=0,QE=gu.indexOf("Macintosh")>=0,b$=(gu.indexOf("Macintosh")>=0||gu.indexOf("iPad")>=0||gu.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,_I=gu.indexOf("Linux")>=0,Wpe=(gu==null?void 0:gu.indexOf("Mobi"))>=0,g$=!0,OI=p$()||sS,wL=navigator.language.toLowerCase(),Bse=wL):console.error("Unable to resolve platform.");const Gl=VE,Fi=QE,sa=_I,vu=Spe,jA=g$,ZIe=g$&&typeof a0.importScripts=="function",AIe=ZIe?a0.origin:void 0,ju=b$,Vpe=Wpe,Np=gu,NIe=OI,RIe=typeof a0.postMessage=="function"&&!a0.importScripts,Qpe=(()=>{if(RIe){const s=[];a0.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=s.length;i<n;i++){const o=s[i];if(o.id===t.data.vscodeScheduleAsyncWork){s.splice(i,1),o.callback();return}}});let e=0;return t=>{const i=++e;s.push({id:i,callback:t}),a0.postMessage({vscodeScheduleAsyncWork:i},"*")}}return s=>setTimeout(s)})(),pd=QE||b$?2:VE?1:3;let Lse=!0,kse=!1;function ype(){if(!kse){kse=!0;const s=new Uint8Array(2);s[0]=1,s[1]=2,Lse=new Uint16Array(s.buffer)[0]===512+1}return Lse}const Cpe=!!(Np&&Np.indexOf("Chrome")>=0),SIe=!!(Np&&Np.indexOf("Firefox")>=0),WIe=!!(!Cpe&&Np&&Np.indexOf("Safari")>=0),VIe=!!(Np&&Np.indexOf("Edg/")>=0),QIe=!!(Np&&Np.indexOf("Android")>=0),er={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}};var Ti;(function(s){function e(N){return N&&typeof N=="object"&&typeof N[Symbol.iterator]=="function"}s.is=e;const t=Object.freeze([]);function i(){return t}s.empty=i;function*n(N){yield N}s.single=n;function o(N){return e(N)?N:n(N)}s.wrap=o;function l(N){return N||t}s.from=l;function*r(N){for(let W=N.length-1;W>=0;W--)yield N[W]}s.reverse=r;function a(N){return!N||N[Symbol.iterator]().next().done===!0}s.isEmpty=a;function d(N){return N[Symbol.iterator]().next().value}s.first=d;function c(N,W){let Q=0;for(const R of N)if(W(R,Q++))return!0;return!1}s.some=c;function h(N,W){for(const Q of N)if(W(Q))return Q}s.find=h;function*u(N,W){for(const Q of N)W(Q)&&(yield Q)}s.filter=u;function*m(N,W){let Q=0;for(const R of N)yield W(R,Q++)}s.map=m;function*p(N,W){let Q=0;for(const R of N)yield*W(R,Q++)}s.flatMap=p;function*g(...N){for(const W of N)yield*W}s.concat=g;function b(N,W,Q){let R=Q;for(const M of N)R=W(R,M);return R}s.reduce=b;function*f(N,W,Q=N.length){for(W<0&&(W+=N.length),Q<0?Q+=N.length:Q>N.length&&(Q=N.length);W<Q;W++)yield N[W]}s.slice=f;function Z(N,W=Number.POSITIVE_INFINITY){const Q=[];if(W===0)return[Q,N];const R=N[Symbol.iterator]();for(let M=0;M<W;M++){const w=R.next();if(w.done)return[Q,s.empty()];Q.push(w.value)}return[Q,{[Symbol.iterator](){return R}}]}s.consume=Z;async function A(N){const W=[];for await(const Q of N)W.push(Q);return Promise.resolve(W)}s.asyncToArray=A})(Ti||(Ti={}));var VU;let Go=(VU=class{constructor(e){this.element=e,this.next=VU.Undefined,this.prev=VU.Undefined}},VU.Undefined=new VU(void 0),VU);class Pr{constructor(){this._first=Go.Undefined,this._last=Go.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===Go.Undefined}clear(){let e=this._first;for(;e!==Go.Undefined;){const t=e.next;e.prev=Go.Undefined,e.next=Go.Undefined,e=t}this._first=Go.Undefined,this._last=Go.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const i=new Go(e);if(this._first===Go.Undefined)this._first=i,this._last=i;else if(t){const o=this._last;this._last=i,i.prev=o,o.next=i}else{const o=this._first;this._first=i,i.next=o,o.prev=i}this._size+=1;let n=!1;return()=>{n||(n=!0,this._remove(i))}}shift(){if(this._first!==Go.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==Go.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==Go.Undefined&&e.next!==Go.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===Go.Undefined&&e.next===Go.Undefined?(this._first=Go.Undefined,this._last=Go.Undefined):e.next===Go.Undefined?(this._last=this._last.prev,this._last.next=Go.Undefined):e.prev===Go.Undefined&&(this._first=this._first.next,this._first.prev=Go.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==Go.Undefined;)yield e.element,e=e.next}}const yE="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function yIe(s=""){let e="(-?\\d*\\.\\d\\w*)|([^";for(const t of yE)s.indexOf(t)>=0||(e+="\\"+t);return e+="\\s]+)",new RegExp(e,"g")}const U$=yIe();function f$(s){let e=U$;if(s&&s instanceof RegExp)if(s.global)e=s;else{let t="g";s.ignoreCase&&(t+="i"),s.multiline&&(t+="m"),s.unicode&&(t+="u"),e=new RegExp(s.source,t)}return e.lastIndex=0,e}const wpe=new Pr;wpe.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function qw(s,e,t,i,n){if(e=f$(e),n||(n=Ti.first(wpe)),t.length>n.maxLen){let d=s-n.maxLen/2;return d<0?d=0:i+=d,t=t.substring(d,s+n.maxLen/2),qw(s,e,t,i,n)}const o=Date.now(),l=s-1-i;let r=-1,a=null;for(let d=1;!(Date.now()-o>=n.timeBudget);d++){const c=l-n.windowSize*d;e.lastIndex=Math.max(0,c);const h=CIe(e,t,l,r);if(!h&&a||(a=h,c<=0))break;r=c}if(a){const d={word:a[0],startColumn:i+1+a.index,endColumn:i+1+a.index+a[0].length};return e.lastIndex=0,d}return null}function CIe(s,e,t,i){let n;for(;n=s.exec(e);){const o=n.index||0;if(o<=t&&s.lastIndex>=t)return n;if(i>0&&o>i)return null}return null}const Cm=8;class Mpe{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class Tpe{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class ms{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return j5(e,t)}compute(e,t,i){return i}}class rC{constructor(e,t){this.newValue=e,this.didChange=t}}function j5(s,e){if(typeof s!="object"||typeof e!="object"||!s||!e)return new rC(e,s!==e);if(Array.isArray(s)||Array.isArray(e)){const i=Array.isArray(s)&&Array.isArray(e)&&Fs(s,e);return new rC(e,!i)}let t=!1;for(const i in e)if(e.hasOwnProperty(i)){const n=j5(s[i],e[i]);n.didChange&&(s[i]=n.newValue,t=!0)}return new rC(s,t)}class qT{constructor(e){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0}applyUpdate(e,t){return j5(e,t)}validate(e){return this.defaultValue}}class DQ{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return j5(e,t)}validate(e){return typeof e>"u"?this.defaultValue:e}compute(e,t,i){return i}}function pt(s,e){return typeof s>"u"?e:s==="false"?!1:!!s}class xi extends DQ{constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="boolean",n.default=i),super(e,t,i,n)}validate(e){return pt(e,this.defaultValue)}}function uF(s,e,t,i){if(typeof s>"u")return e;let n=parseInt(s,10);return isNaN(n)?e:(n=Math.max(t,n),n=Math.min(i,n),n|0)}class vn extends DQ{static clampedInt(e,t,i,n){return uF(e,t,i,n)}constructor(e,t,i,n,o,l=void 0){typeof l<"u"&&(l.type="integer",l.default=i,l.minimum=n,l.maximum=o),super(e,t,i,l),this.minimum=n,this.maximum=o}validate(e){return vn.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}function wIe(s,e,t,i){if(typeof s>"u")return e;const n=ic.float(s,e);return ic.clamp(n,t,i)}class ic extends DQ{static clamp(e,t,i){return e<t?t:e>i?i:e}static float(e,t){if(typeof e=="number")return e;if(typeof e>"u")return t;const i=parseFloat(e);return isNaN(i)?t:i}constructor(e,t,i,n,o){typeof o<"u"&&(o.type="number",o.default=i),super(e,t,i,o),this.validationFn=n}validate(e){return this.validationFn(ic.float(e,this.defaultValue))}}class Ar extends DQ{static string(e,t){return typeof e!="string"?t:e}constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="string",n.default=i),super(e,t,i,n)}validate(e){return Ar.string(e,this.defaultValue)}}function Is(s,e,t,i){return typeof s!="string"?e:i&&s in i?i[s]:t.indexOf(s)===-1?e:s}class Ts extends DQ{constructor(e,t,i,n,o=void 0){typeof o<"u"&&(o.type="string",o.enum=n,o.default=i),super(e,t,i,o),this._allowedValues=n}validate(e){return Is(e,this.defaultValue,this._allowedValues)}}class ML extends ms{constructor(e,t,i,n,o,l,r=void 0){typeof r<"u"&&(r.type="string",r.enum=o,r.default=n),super(e,t,i,r),this._allowedValues=o,this._convert=l}validate(e){return typeof e!="string"?this.defaultValue:this._allowedValues.indexOf(e)===-1?this.defaultValue:this._convert(e)}}function MIe(s){switch(s){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class TIe extends ms{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[U("accessibilitySupport.auto","Use platform APIs to detect when a Screen Reader is attached."),U("accessibilitySupport.on","Optimize for usage with a Screen Reader."),U("accessibilitySupport.off","Assume a screen reader is not attached.")],default:"auto",tags:["accessibility"],description:U("accessibilitySupport","Controls if the UI should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return i===0?e.accessibilitySupport:i}}class BIe extends ms{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(23,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:U("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:U("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertSpace:pt(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:pt(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function LIe(s){switch(s){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var bl;(function(s){s[s.Line=1]="Line",s[s.Block=2]="Block",s[s.Underline=3]="Underline",s[s.LineThin=4]="LineThin",s[s.BlockOutline=5]="BlockOutline",s[s.UnderlineThin=6]="UnderlineThin"})(bl||(bl={}));function kIe(s){switch(s){case"line":return bl.Line;case"block":return bl.Block;case"underline":return bl.Underline;case"line-thin":return bl.LineThin;case"block-outline":return bl.BlockOutline;case"underline-thin":return bl.UnderlineThin}}class IIe extends qT{constructor(){super(143)}compute(e,t,i){const n=["monaco-editor"];return t.get(39)&&n.push(t.get(39)),e.extraEditorClassName&&n.push(e.extraEditorClassName),t.get(74)==="default"?n.push("mouse-default"):t.get(74)==="copy"&&n.push("mouse-copy"),t.get(112)&&n.push("showUnused"),t.get(141)&&n.push("showDeprecated"),n.join(" ")}}class DIe extends xi{constructor(){super(37,"emptySelectionClipboard",!0,{description:U("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}class GIe extends ms{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(41,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:U("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:e.seedSearchStringFromSelection,enumDescriptions:[U("editor.find.seedSearchStringFromSelection.never","Never seed search string from the editor selection."),U("editor.find.seedSearchStringFromSelection.always","Always seed search string from the editor selection, including word at cursor position."),U("editor.find.seedSearchStringFromSelection.selection","Only seed search string from the editor selection.")],description:U("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[U("editor.find.autoFindInSelection.never","Never turn on Find in Selection automatically (default)."),U("editor.find.autoFindInSelection.always","Always turn on Find in Selection automatically."),U("editor.find.autoFindInSelection.multiline","Turn on Find in Selection automatically when multiple lines of content are selected.")],description:U("find.autoFindInSelection","Controls the condition for turning on Find in Selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:U("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:Fi},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:U("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:U("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{cursorMoveOnType:pt(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof e.seedSearchStringFromSelection=="boolean"?e.seedSearchStringFromSelection?"always":"never":Is(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof e.autoFindInSelection=="boolean"?e.autoFindInSelection?"always":"never":Is(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:pt(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:pt(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:pt(t.loop,this.defaultValue.loop)}}}const Wg=class Wg extends ms{constructor(){super(51,"fontLigatures",Wg.OFF,{anyOf:[{type:"boolean",description:U("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:U("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:U("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"||e.length===0?Wg.OFF:e==="true"?Wg.ON:e:e?Wg.ON:Wg.OFF}};Wg.OFF='"liga" off, "calt" off',Wg.ON='"liga" on, "calt" on';let YU=Wg;const Vg=class Vg extends ms{constructor(){super(54,"fontVariations",Vg.OFF,{anyOf:[{type:"boolean",description:U("fontVariations","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.")},{type:"string",description:U("fontVariationSettings","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.")}],description:U("fontVariationsGeneral","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?Vg.OFF:e==="true"?Vg.TRANSLATE:e:e?Vg.TRANSLATE:Vg.OFF}compute(e,t,i){return e.fontInfo.fontVariationSettings}};Vg.OFF="normal",Vg.TRANSLATE="translate";let $w=Vg;class EIe extends qT{constructor(){super(50)}compute(e,t,i){return e.fontInfo}}class vIe extends DQ{constructor(){super(52,"fontSize",ta.fontSize,{type:"number",minimum:6,maximum:100,default:ta.fontSize,description:U("fontSize","Controls the font size in pixels.")})}validate(e){const t=ic.float(e,this.defaultValue);return t===0?ta.fontSize:ic.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}const Gm=class Gm extends ms{constructor(){super(53,"fontWeight",ta.fontWeight,{anyOf:[{type:"number",minimum:Gm.MINIMUM_VALUE,maximum:Gm.MAXIMUM_VALUE,errorMessage:U("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:Gm.SUGGESTION_VALUES}],default:ta.fontWeight,description:U("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return e==="normal"||e==="bold"?e:String(vn.clampedInt(e,ta.fontWeight,Gm.MINIMUM_VALUE,Gm.MAXIMUM_VALUE))}};Gm.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],Gm.MINIMUM_VALUE=1,Gm.MAXIMUM_VALUE=1e3;let gj=Gm;class xIe extends ms{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",multipleTests:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:"",alternativeTestsCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[U("editor.gotoLocation.multiple.peek","Show Peek view of the results (default)"),U("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a Peek view"),U("editor.gotoLocation.multiple.goto","Go to the primary result and enable Peek-less navigation to others")]},i=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(58,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:U("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":{description:U("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleTypeDefinitions":{description:U("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleDeclarations":{description:U("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleImplementations":{description:U("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleReferences":{description:U("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist."),...t},"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:i,description:U("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:i,description:U("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:i,description:U("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:i,description:U("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:i,description:U("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{multiple:Is(t.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:t.multipleDefinitions??Is(t.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:t.multipleTypeDefinitions??Is(t.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:t.multipleDeclarations??Is(t.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:t.multipleImplementations??Is(t.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:t.multipleReferences??Is(t.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),multipleTests:t.multipleTests??Is(t.multipleTests,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:Ar.string(t.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:Ar.string(t.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:Ar.string(t.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:Ar.string(t.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:Ar.string(t.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand),alternativeTestsCommand:Ar.string(t.alternativeTestsCommand,this.defaultValue.alternativeTestsCommand)}}}class JIe extends ms{constructor(){const e={enabled:!0,delay:300,hidingDelay:300,sticky:!0,above:!0};super(60,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:U("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,minimum:0,maximum:1e4,description:U("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:U("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")},"editor.hover.hidingDelay":{type:"integer",minimum:0,default:e.hidingDelay,description:U("hover.hidingDelay","Controls the delay in milliseconds after which the hover is hidden. Requires `editor.hover.sticky` to be enabled.")},"editor.hover.above":{type:"boolean",default:e.above,description:U("hover.above","Prefer showing hovers above the line, if there's space.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),delay:vn.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:pt(t.sticky,this.defaultValue.sticky),hidingDelay:vn.clampedInt(t.hidingDelay,this.defaultValue.hidingDelay,0,6e5),above:pt(t.above,this.defaultValue.above)}}}class uW extends qT{constructor(){super(146)}compute(e,t,i){return uW.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio,glyphMarginDecorationLaneCount:e.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=Math.floor(e.paddingTop/e.lineHeight);let n=Math.floor(e.paddingBottom/e.lineHeight);e.scrollBeyondLastLine&&(n=Math.max(n,t-1));const o=(i+e.viewLineCount+n)/(e.pixelRatio*e.height),l=Math.floor(e.viewLineCount/o);return{typicalViewportLineCount:t,extraLinesBeforeFirstLine:i,extraLinesBeyondLastLine:n,desiredRatio:o,minimapLineCount:l}}static _computeMinimapLayout(e,t){const i=e.outerWidth,n=e.outerHeight,o=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(o*n),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:n};const l=t.stableMinimapLayoutInput,r=l&&e.outerHeight===l.outerHeight&&e.lineHeight===l.lineHeight&&e.typicalHalfwidthCharacterWidth===l.typicalHalfwidthCharacterWidth&&e.pixelRatio===l.pixelRatio&&e.scrollBeyondLastLine===l.scrollBeyondLastLine&&e.paddingTop===l.paddingTop&&e.paddingBottom===l.paddingBottom&&e.minimap.enabled===l.minimap.enabled&&e.minimap.side===l.minimap.side&&e.minimap.size===l.minimap.size&&e.minimap.showSlider===l.minimap.showSlider&&e.minimap.renderCharacters===l.minimap.renderCharacters&&e.minimap.maxColumn===l.minimap.maxColumn&&e.minimap.scale===l.minimap.scale&&e.verticalScrollbarWidth===l.verticalScrollbarWidth&&e.isViewportWrapping===l.isViewportWrapping,a=e.lineHeight,d=e.typicalHalfwidthCharacterWidth,c=e.scrollBeyondLastLine,h=e.minimap.renderCharacters;let u=o>=2?Math.round(e.minimap.scale*2):e.minimap.scale;const m=e.minimap.maxColumn,p=e.minimap.size,g=e.minimap.side,b=e.verticalScrollbarWidth,f=e.viewLineCount,Z=e.remainingWidth,A=e.isViewportWrapping,N=h?2:3;let W=Math.floor(o*n);const Q=W/o;let R=!1,M=!1,w=N*u,Y=u/o,G=1;if(p==="fill"||p==="fit"){const{typicalViewportLineCount:Ue,extraLinesBeforeFirstLine:Qe,extraLinesBeyondLastLine:He,desiredRatio:Te,minimapLineCount:xe}=uW.computeContainedMinimapLineCount({viewLineCount:f,scrollBeyondLastLine:c,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:n,lineHeight:a,pixelRatio:o});if(f/xe>1)R=!0,M=!0,u=1,w=1,Y=u/o;else{let Mt=!1,St=u+1;if(p==="fit"){const Pe=Math.ceil((Qe+f+He)*w);A&&r&&Z<=t.stableFitRemainingWidth?(Mt=!0,St=t.stableFitMaxMinimapScale):Mt=Pe>W}if(p==="fill"||Mt){R=!0;const Pe=u;w=Math.min(a*o,Math.max(1,Math.floor(1/Te))),A&&r&&Z<=t.stableFitRemainingWidth&&(St=t.stableFitMaxMinimapScale),u=Math.min(St,Math.max(1,Math.floor(w/N))),u>Pe&&(G=Math.min(2,u/Pe)),Y=u/o/G,W=Math.ceil(Math.max(Ue,Qe+f+He)*w),A?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=Z,t.stableFitMaxMinimapScale=u):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0)}}}const P=Math.floor(m*Y),j=Math.min(P,Math.max(0,Math.floor((Z-b-2)*Y/(d+Y)))+Cm);let X=Math.floor(o*j);const ie=X/o;X=Math.floor(X*G);const se=h?1:2,pe=g==="left"?0:i-j-b;return{renderMinimap:se,minimapLeft:pe,minimapWidth:j,minimapHeightIsEditorHeight:R,minimapIsSampling:M,minimapScale:u,minimapLineHeight:w,minimapCanvasInnerWidth:X,minimapCanvasInnerHeight:W,minimapCanvasOuterWidth:ie,minimapCanvasOuterHeight:Q}}static computeLayout(e,t){const i=t.outerWidth|0,n=t.outerHeight|0,o=t.lineHeight|0,l=t.lineNumbersDigitCount|0,r=t.typicalHalfwidthCharacterWidth,a=t.maxDigitWidth,d=t.pixelRatio,c=t.viewLineCount,h=e.get(138),u=h==="inherit"?e.get(137):h,m=u==="inherit"?e.get(133):u,p=e.get(136),g=t.isDominatedByLongLines,b=e.get(57),f=e.get(68).renderType!==0,Z=e.get(69),A=e.get(106),N=e.get(84),W=e.get(73),Q=e.get(104),R=Q.verticalScrollbarSize,M=Q.verticalHasArrows,w=Q.arrowSize,Y=Q.horizontalScrollbarSize,G=e.get(43),P=e.get(111)!=="never";let j=e.get(66);G&&P&&(j+=16);let X=0;if(f){const rt=Math.max(l,Z);X=Math.round(rt*a)}let ie=0;b&&(ie=o*t.glyphMarginDecorationLaneCount);let se=0,pe=se+ie,Ue=pe+X,Qe=Ue+j;const He=i-ie-X-j;let Te=!1,xe=!1,Je=-1;u==="inherit"&&g?(Te=!0,xe=!0):m==="on"||m==="bounded"?xe=!0:m==="wordWrapColumn"&&(Je=p);const Mt=uW._computeMinimapLayout({outerWidth:i,outerHeight:n,lineHeight:o,typicalHalfwidthCharacterWidth:r,pixelRatio:d,scrollBeyondLastLine:A,paddingTop:N.top,paddingBottom:N.bottom,minimap:W,verticalScrollbarWidth:R,viewLineCount:c,remainingWidth:He,isViewportWrapping:xe},t.memory||new Tpe);Mt.renderMinimap!==0&&Mt.minimapLeft===0&&(se+=Mt.minimapWidth,pe+=Mt.minimapWidth,Ue+=Mt.minimapWidth,Qe+=Mt.minimapWidth);const St=He-Mt.minimapWidth,Pe=Math.max(1,Math.floor((St-R-2)/r)),Be=M?w:0;return xe&&(Je=Math.max(1,Pe),m==="bounded"&&(Je=Math.min(Je,p))),{width:i,height:n,glyphMarginLeft:se,glyphMarginWidth:ie,glyphMarginDecorationLaneCount:t.glyphMarginDecorationLaneCount,lineNumbersLeft:pe,lineNumbersWidth:X,decorationsLeft:Ue,decorationsWidth:j,contentLeft:Qe,contentWidth:St,minimap:Mt,viewportColumn:Pe,isWordWrapMinified:Te,isViewportWrapping:xe,wrappingColumn:Je,verticalScrollbarWidth:R,horizontalScrollbarHeight:Y,overviewRuler:{top:Be,width:R,height:n-2*Be,right:0}}}}class XIe extends ms{constructor(){super(140,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[U("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),U("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],type:"string",enum:["simple","advanced"],default:"simple",description:U("wrappingStrategy","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.")}})}validate(e){return Is(e,"simple",["simple","advanced"])}compute(e,t,i){return t.get(2)===2?"advanced":i}}var Mh;(function(s){s.Off="off",s.OnCode="onCode",s.On="on"})(Mh||(Mh={}));class YIe extends ms{constructor(){const e={enabled:Mh.OnCode};super(65,"lightbulb",e,{"editor.lightbulb.enabled":{type:"string",tags:["experimental"],enum:[Mh.Off,Mh.OnCode,Mh.On],default:e.enabled,enumDescriptions:[U("editor.lightbulb.enabled.off","Disable the code action menu."),U("editor.lightbulb.enabled.onCode","Show the code action menu when the cursor is on lines with code."),U("editor.lightbulb.enabled.on","Show the code action menu when the cursor is on lines with code or on empty lines.")],description:U("enabled","Enables the Code Action lightbulb in the editor.")}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{enabled:Is(e.enabled,this.defaultValue.enabled,[Mh.Off,Mh.OnCode,Mh.On])}}}class zIe extends ms{constructor(){const e={enabled:!0,maxLineCount:5,defaultModel:"outlineModel",scrollWithEditor:!0};super(116,"stickyScroll",e,{"editor.stickyScroll.enabled":{type:"boolean",default:e.enabled,description:U("editor.stickyScroll.enabled","Shows the nested current scopes during the scroll at the top of the editor."),tags:["experimental"]},"editor.stickyScroll.maxLineCount":{type:"number",default:e.maxLineCount,minimum:1,maximum:20,description:U("editor.stickyScroll.maxLineCount","Defines the maximum number of sticky lines to show.")},"editor.stickyScroll.defaultModel":{type:"string",enum:["outlineModel","foldingProviderModel","indentationModel"],default:e.defaultModel,description:U("editor.stickyScroll.defaultModel","Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.")},"editor.stickyScroll.scrollWithEditor":{type:"boolean",default:e.scrollWithEditor,description:U("editor.stickyScroll.scrollWithEditor","Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),maxLineCount:vn.clampedInt(t.maxLineCount,this.defaultValue.maxLineCount,1,20),defaultModel:Is(t.defaultModel,this.defaultValue.defaultModel,["outlineModel","foldingProviderModel","indentationModel"]),scrollWithEditor:pt(t.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}class _Ie extends ms{constructor(){const e={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(142,"inlayHints",e,{"editor.inlayHints.enabled":{type:"string",default:e.enabled,description:U("inlayHints.enable","Enables the inlay hints in the editor."),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[U("editor.inlayHints.on","Inlay hints are enabled"),U("editor.inlayHints.onUnlessPressed","Inlay hints are showing by default and hide when holding {0}",Fi?"Ctrl+Option":"Ctrl+Alt"),U("editor.inlayHints.offUnlessPressed","Inlay hints are hidden by default and show when holding {0}",Fi?"Ctrl+Option":"Ctrl+Alt"),U("editor.inlayHints.off","Inlay hints are disabled")]},"editor.inlayHints.fontSize":{type:"number",default:e.fontSize,markdownDescription:U("inlayHints.fontSize","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:e.fontFamily,markdownDescription:U("inlayHints.fontFamily","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:e.padding,description:U("inlayHints.padding","Enables the padding around the inlay hints in the editor.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return typeof t.enabled=="boolean"&&(t.enabled=t.enabled?"on":"off"),{enabled:Is(t.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:vn.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:Ar.string(t.fontFamily,this.defaultValue.fontFamily),padding:pt(t.padding,this.defaultValue.padding)}}}class OIe extends ms{constructor(){super(66,"lineDecorationsWidth",10)}validate(e){return typeof e=="string"&&/^\d+(\.\d+)?ch$/.test(e)?-parseFloat(e.substring(0,e.length-2)):vn.clampedInt(e,this.defaultValue,0,1e3)}compute(e,t,i){return i<0?vn.clampedInt(-i*e.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):i}}class jIe extends ic{constructor(){super(67,"lineHeight",ta.lineHeight,e=>ic.clamp(e,0,150),{markdownDescription:U("lineHeight",`Controls the line height.
- - Use 0 to automatically compute the line height from the font size.
- - Values between 0 and 8 will be used as a multiplier with the font size.
- - Values greater than or equal to 8 will be used as effective values.`)})}compute(e,t,i){return e.fontInfo.lineHeight}}class HIe extends ms{constructor(){const e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1,showRegionSectionHeaders:!0,showMarkSectionHeaders:!0,sectionHeaderFontSize:9,sectionHeaderLetterSpacing:1};super(73,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:U("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.autohide":{type:"boolean",default:e.autohide,description:U("minimap.autohide","Controls whether the minimap is hidden automatically.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[U("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),U("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),U("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:U("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:U("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:U("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:U("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:U("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:U("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")},"editor.minimap.showRegionSectionHeaders":{type:"boolean",default:e.showRegionSectionHeaders,description:U("minimap.showRegionSectionHeaders","Controls whether named regions are shown as section headers in the minimap.")},"editor.minimap.showMarkSectionHeaders":{type:"boolean",default:e.showMarkSectionHeaders,description:U("minimap.showMarkSectionHeaders","Controls whether MARK: comments are shown as section headers in the minimap.")},"editor.minimap.sectionHeaderFontSize":{type:"number",default:e.sectionHeaderFontSize,description:U("minimap.sectionHeaderFontSize","Controls the font size of section headers in the minimap.")},"editor.minimap.sectionHeaderLetterSpacing":{type:"number",default:e.sectionHeaderLetterSpacing,description:U("minimap.sectionHeaderLetterSpacing","Controls the amount of space (in pixels) between characters of section header. This helps the readability of the header in small font sizes.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),autohide:pt(t.autohide,this.defaultValue.autohide),size:Is(t.size,this.defaultValue.size,["proportional","fill","fit"]),side:Is(t.side,this.defaultValue.side,["right","left"]),showSlider:Is(t.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:pt(t.renderCharacters,this.defaultValue.renderCharacters),scale:vn.clampedInt(t.scale,1,1,3),maxColumn:vn.clampedInt(t.maxColumn,this.defaultValue.maxColumn,1,1e4),showRegionSectionHeaders:pt(t.showRegionSectionHeaders,this.defaultValue.showRegionSectionHeaders),showMarkSectionHeaders:pt(t.showMarkSectionHeaders,this.defaultValue.showMarkSectionHeaders),sectionHeaderFontSize:ic.clamp(t.sectionHeaderFontSize??this.defaultValue.sectionHeaderFontSize,4,32),sectionHeaderLetterSpacing:ic.clamp(t.sectionHeaderLetterSpacing??this.defaultValue.sectionHeaderLetterSpacing,0,5)}}}function PIe(s){return s==="ctrlCmd"?Fi?"metaKey":"ctrlKey":"altKey"}class KIe extends ms{constructor(){super(84,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:U("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:U("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{top:vn.clampedInt(t.top,0,0,1e3),bottom:vn.clampedInt(t.bottom,0,0,1e3)}}}class qIe extends ms{constructor(){const e={enabled:!0,cycle:!0};super(86,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:U("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:U("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),cycle:pt(t.cycle,this.defaultValue.cycle)}}}class $Ie extends qT{constructor(){super(144)}compute(e,t,i){return e.pixelRatio}}class eDe extends ms{constructor(){super(88,"placeholder",void 0)}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e:this.defaultValue}}class tDe extends ms{constructor(){const e={other:"on",comments:"off",strings:"off"},t=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[U("on","Quick suggestions show inside the suggest widget"),U("inline","Quick suggestions show as ghost text"),U("off","Quick suggestions are disabled")]}];super(90,"quickSuggestions",e,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:t,default:e.strings,description:U("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{anyOf:t,default:e.comments,description:U("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{anyOf:t,default:e.other,description:U("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}},default:e,markdownDescription:U("quickSuggestions","Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the {0}-setting which controls if suggestions are triggered by special characters.","`#editor.suggestOnTriggerCharacters#`")}),this.defaultValue=e}validate(e){if(typeof e=="boolean"){const d=e?"on":"off";return{comments:d,strings:d,other:d}}if(!e||typeof e!="object")return this.defaultValue;const{other:t,comments:i,strings:n}=e,o=["on","inline","off"];let l,r,a;return typeof t=="boolean"?l=t?"on":"off":l=Is(t,this.defaultValue.other,o),typeof i=="boolean"?r=i?"on":"off":r=Is(i,this.defaultValue.comments,o),typeof n=="boolean"?a=n?"on":"off":a=Is(n,this.defaultValue.strings,o),{other:l,comments:r,strings:a}}}class iDe extends ms{constructor(){super(68,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[U("lineNumbers.off","Line numbers are not rendered."),U("lineNumbers.on","Line numbers are rendered as absolute number."),U("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),U("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:U("lineNumbers","Controls the display of line numbers.")})}validate(e){let t=this.defaultValue.renderType,i=this.defaultValue.renderFn;return typeof e<"u"&&(typeof e=="function"?(t=4,i=e):e==="interval"?t=3:e==="relative"?t=2:e==="on"?t=1:t=0),{renderType:t,renderFn:i}}}function CE(s){const e=s.get(99);return e==="editable"?s.get(92):e!=="on"}class nDe extends ms{constructor(){const e=[],t={type:"number",description:U("rulers.size","Number of monospace characters at which this editor ruler will render.")};super(103,"rulers",e,{type:"array",items:{anyOf:[t,{type:["object"],properties:{column:t,color:{type:"string",description:U("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:U("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}validate(e){if(Array.isArray(e)){const t=[];for(const i of e)if(typeof i=="number")t.push({column:vn.clampedInt(i,0,0,1e4),color:null});else if(i&&typeof i=="object"){const n=i;t.push({column:vn.clampedInt(n.column,0,0,1e4),color:n.color})}return t.sort((i,n)=>i.column-n.column),t}return this.defaultValue}}class sDe extends ms{constructor(){super(93,"readOnlyMessage",void 0)}validate(e){return!e||typeof e!="object"?this.defaultValue:e}}function Ise(s,e){if(typeof s!="string")return e;switch(s){case"hidden":return 2;case"visible":return 3;default:return 1}}let oDe=class extends ms{constructor(){const e={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1,ignoreHorizontalScrollbarInContentHeight:!1};super(104,"scrollbar",e,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[U("scrollbar.vertical.auto","The vertical scrollbar will be visible only when necessary."),U("scrollbar.vertical.visible","The vertical scrollbar will always be visible."),U("scrollbar.vertical.fit","The vertical scrollbar will always be hidden.")],default:"auto",description:U("scrollbar.vertical","Controls the visibility of the vertical scrollbar.")},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[U("scrollbar.horizontal.auto","The horizontal scrollbar will be visible only when necessary."),U("scrollbar.horizontal.visible","The horizontal scrollbar will always be visible."),U("scrollbar.horizontal.fit","The horizontal scrollbar will always be hidden.")],default:"auto",description:U("scrollbar.horizontal","Controls the visibility of the horizontal scrollbar.")},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:e.verticalScrollbarSize,description:U("scrollbar.verticalScrollbarSize","The width of the vertical scrollbar.")},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:e.horizontalScrollbarSize,description:U("scrollbar.horizontalScrollbarSize","The height of the horizontal scrollbar.")},"editor.scrollbar.scrollByPage":{type:"boolean",default:e.scrollByPage,description:U("scrollbar.scrollByPage","Controls whether clicks scroll by page or jump to click position.")},"editor.scrollbar.ignoreHorizontalScrollbarInContentHeight":{type:"boolean",default:e.ignoreHorizontalScrollbarInContentHeight,description:U("scrollbar.ignoreHorizontalScrollbarInContentHeight","When set, the horizontal scrollbar will not increase the size of the editor's content.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e,i=vn.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),n=vn.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:vn.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:Ise(t.vertical,this.defaultValue.vertical),horizontal:Ise(t.horizontal,this.defaultValue.horizontal),useShadows:pt(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:pt(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:pt(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:pt(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:pt(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:i,horizontalSliderSize:vn.clampedInt(t.horizontalSliderSize,i,0,1e3),verticalScrollbarSize:n,verticalSliderSize:vn.clampedInt(t.verticalSliderSize,n,0,1e3),scrollByPage:pt(t.scrollByPage,this.defaultValue.scrollByPage),ignoreHorizontalScrollbarInContentHeight:pt(t.ignoreHorizontalScrollbarInContentHeight,this.defaultValue.ignoreHorizontalScrollbarInContentHeight)}}};const vd="inUntrustedWorkspace",Ca={allowedCharacters:"editor.unicodeHighlight.allowedCharacters",invisibleCharacters:"editor.unicodeHighlight.invisibleCharacters",nonBasicASCII:"editor.unicodeHighlight.nonBasicASCII",ambiguousCharacters:"editor.unicodeHighlight.ambiguousCharacters",includeComments:"editor.unicodeHighlight.includeComments",includeStrings:"editor.unicodeHighlight.includeStrings",allowedLocales:"editor.unicodeHighlight.allowedLocales"};class lDe extends ms{constructor(){const e={nonBasicASCII:vd,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:vd,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(126,"unicodeHighlight",e,{[Ca.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,vd],default:e.nonBasicASCII,description:U("unicodeHighlight.nonBasicASCII","Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.")},[Ca.invisibleCharacters]:{restricted:!0,type:"boolean",default:e.invisibleCharacters,description:U("unicodeHighlight.invisibleCharacters","Controls whether characters that just reserve space or have no width at all are highlighted.")},[Ca.ambiguousCharacters]:{restricted:!0,type:"boolean",default:e.ambiguousCharacters,description:U("unicodeHighlight.ambiguousCharacters","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.")},[Ca.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,vd],default:e.includeComments,description:U("unicodeHighlight.includeComments","Controls whether characters in comments should also be subject to Unicode highlighting.")},[Ca.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,vd],default:e.includeStrings,description:U("unicodeHighlight.includeStrings","Controls whether characters in strings should also be subject to Unicode highlighting.")},[Ca.allowedCharacters]:{restricted:!0,type:"object",default:e.allowedCharacters,description:U("unicodeHighlight.allowedCharacters","Defines allowed characters that are not being highlighted."),additionalProperties:{type:"boolean"}},[Ca.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:e.allowedLocales,description:U("unicodeHighlight.allowedLocales","Unicode characters that are common in allowed locales are not being highlighted.")}})}applyUpdate(e,t){let i=!1;t.allowedCharacters&&e&&(gd(e.allowedCharacters,t.allowedCharacters)||(e={...e,allowedCharacters:t.allowedCharacters},i=!0)),t.allowedLocales&&e&&(gd(e.allowedLocales,t.allowedLocales)||(e={...e,allowedLocales:t.allowedLocales},i=!0));const n=super.applyUpdate(e,t);return i?new rC(n.newValue,!0):n}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{nonBasicASCII:mW(t.nonBasicASCII,vd,[!0,!1,vd]),invisibleCharacters:pt(t.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:pt(t.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:mW(t.includeComments,vd,[!0,!1,vd]),includeStrings:mW(t.includeStrings,vd,[!0,!1,vd]),allowedCharacters:this.validateBooleanMap(e.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(e.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(e,t){if(typeof e!="object"||!e)return t;const i={};for(const[n,o]of Object.entries(e))o===!0&&(i[n]=!0);return i}}class rDe extends ms{constructor(){const e={enabled:!0,mode:"subwordSmart",showToolbar:"onHover",suppressSuggestions:!1,keepOnBlur:!1,fontFamily:"default"};super(62,"inlineSuggest",e,{"editor.inlineSuggest.enabled":{type:"boolean",default:e.enabled,description:U("inlineSuggest.enabled","Controls whether to automatically show inline suggestions in the editor.")},"editor.inlineSuggest.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[U("inlineSuggest.showToolbar.always","Show the inline suggestion toolbar whenever an inline suggestion is shown."),U("inlineSuggest.showToolbar.onHover","Show the inline suggestion toolbar when hovering over an inline suggestion."),U("inlineSuggest.showToolbar.never","Never show the inline suggestion toolbar.")],description:U("inlineSuggest.showToolbar","Controls when to show the inline suggestion toolbar.")},"editor.inlineSuggest.suppressSuggestions":{type:"boolean",default:e.suppressSuggestions,description:U("inlineSuggest.suppressSuggestions","Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.")},"editor.inlineSuggest.fontFamily":{type:"string",default:e.fontFamily,description:U("inlineSuggest.fontFamily","Controls the font family of the inline suggestions.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),mode:Is(t.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:Is(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),suppressSuggestions:pt(t.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:pt(t.keepOnBlur,this.defaultValue.keepOnBlur),fontFamily:Ar.string(t.fontFamily,this.defaultValue.fontFamily)}}}class aDe extends ms{constructor(){const e={enabled:!1,showToolbar:"onHover",fontFamily:"default",keepOnBlur:!1};super(63,"experimentalInlineEdit",e,{"editor.experimentalInlineEdit.enabled":{type:"boolean",default:e.enabled,description:U("inlineEdit.enabled","Controls whether to show inline edits in the editor.")},"editor.experimentalInlineEdit.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[U("inlineEdit.showToolbar.always","Show the inline edit toolbar whenever an inline suggestion is shown."),U("inlineEdit.showToolbar.onHover","Show the inline edit toolbar when hovering over an inline suggestion."),U("inlineEdit.showToolbar.never","Never show the inline edit toolbar.")],description:U("inlineEdit.showToolbar","Controls when to show the inline edit toolbar.")},"editor.experimentalInlineEdit.fontFamily":{type:"string",default:e.fontFamily,description:U("inlineEdit.fontFamily","Controls the font family of the inline edit.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),showToolbar:Is(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),fontFamily:Ar.string(t.fontFamily,this.defaultValue.fontFamily),keepOnBlur:pt(t.keepOnBlur,this.defaultValue.keepOnBlur)}}}class dDe extends ms{constructor(){const e={enabled:er.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:er.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(15,"bracketPairColorization",e,{"editor.bracketPairColorization.enabled":{type:"boolean",default:e.enabled,markdownDescription:U("bracketPairColorization.enabled","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:e.independentColorPoolPerBracketType,description:U("bracketPairColorization.independentColorPoolPerBracketType","Controls whether each bracket type has its own independent color pool.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:pt(t.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class cDe extends ms{constructor(){const e={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(16,"guides",e,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[U("editor.guides.bracketPairs.true","Enables bracket pair guides."),U("editor.guides.bracketPairs.active","Enables bracket pair guides only for the active bracket pair."),U("editor.guides.bracketPairs.false","Disables bracket pair guides.")],default:e.bracketPairs,description:U("editor.guides.bracketPairs","Controls whether bracket pair guides are enabled or not.")},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[U("editor.guides.bracketPairsHorizontal.true","Enables horizontal guides as addition to vertical bracket pair guides."),U("editor.guides.bracketPairsHorizontal.active","Enables horizontal guides only for the active bracket pair."),U("editor.guides.bracketPairsHorizontal.false","Disables horizontal bracket pair guides.")],default:e.bracketPairsHorizontal,description:U("editor.guides.bracketPairsHorizontal","Controls whether horizontal bracket pair guides are enabled or not.")},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:e.highlightActiveBracketPair,description:U("editor.guides.highlightActiveBracketPair","Controls whether the editor should highlight the active bracket pair.")},"editor.guides.indentation":{type:"boolean",default:e.indentation,description:U("editor.guides.indentation","Controls whether the editor should render indent guides.")},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[U("editor.guides.highlightActiveIndentation.true","Highlights the active indent guide."),U("editor.guides.highlightActiveIndentation.always","Highlights the active indent guide even if bracket guides are highlighted."),U("editor.guides.highlightActiveIndentation.false","Do not highlight the active indent guide.")],default:e.highlightActiveIndentation,description:U("editor.guides.highlightActiveIndentation","Controls whether the editor should highlight the active indent guide.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{bracketPairs:mW(t.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:mW(t.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:pt(t.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:pt(t.indentation,this.defaultValue.indentation),highlightActiveIndentation:mW(t.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}function mW(s,e,t){const i=t.indexOf(s);return i===-1?e:t[i]}class hDe extends ms{constructor(){const e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!1,localityBonus:!1,shareSuggestSelections:!1,selectionMode:"always",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:"subwordSmart",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(119,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[U("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),U("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:U("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:U("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:U("suggest.localityBonus","Controls whether sorting favors words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:U("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[U("suggest.insertMode.always","Always select a suggestion when automatically triggering IntelliSense."),U("suggest.insertMode.never","Never select a suggestion when automatically triggering IntelliSense."),U("suggest.insertMode.whenTriggerCharacter","Select a suggestion only when triggering IntelliSense from a trigger character."),U("suggest.insertMode.whenQuickSuggestion","Select a suggestion only when triggering IntelliSense as you type.")],default:e.selectionMode,markdownDescription:U("suggest.selectionMode","Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions ({0} and {1}) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.","`#editor.quickSuggestions#`","`#editor.suggestOnTriggerCharacters#`")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:U("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:U("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.showStatusBar":{type:"boolean",default:e.showStatusBar,description:U("suggest.showStatusBar","Controls the visibility of the status bar at the bottom of the suggest widget.")},"editor.suggest.preview":{type:"boolean",default:e.preview,description:U("suggest.preview","Controls whether to preview the suggestion outcome in the editor.")},"editor.suggest.showInlineDetails":{type:"boolean",default:e.showInlineDetails,description:U("suggest.showInlineDetails","Controls whether suggest details show inline with the label or only in the details widget.")},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:U("suggest.maxVisibleSuggestions.dep","This setting is deprecated. The suggest widget can now be resized.")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:U("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showDeprecated","When enabled IntelliSense shows `deprecated`-suggestions.")},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.matchOnWordStartOnly","When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:U("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertMode:Is(t.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:pt(t.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:pt(t.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:pt(t.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:pt(t.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:Is(t.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:pt(t.showIcons,this.defaultValue.showIcons),showStatusBar:pt(t.showStatusBar,this.defaultValue.showStatusBar),preview:pt(t.preview,this.defaultValue.preview),previewMode:Is(t.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:pt(t.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:pt(t.showMethods,this.defaultValue.showMethods),showFunctions:pt(t.showFunctions,this.defaultValue.showFunctions),showConstructors:pt(t.showConstructors,this.defaultValue.showConstructors),showDeprecated:pt(t.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:pt(t.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:pt(t.showFields,this.defaultValue.showFields),showVariables:pt(t.showVariables,this.defaultValue.showVariables),showClasses:pt(t.showClasses,this.defaultValue.showClasses),showStructs:pt(t.showStructs,this.defaultValue.showStructs),showInterfaces:pt(t.showInterfaces,this.defaultValue.showInterfaces),showModules:pt(t.showModules,this.defaultValue.showModules),showProperties:pt(t.showProperties,this.defaultValue.showProperties),showEvents:pt(t.showEvents,this.defaultValue.showEvents),showOperators:pt(t.showOperators,this.defaultValue.showOperators),showUnits:pt(t.showUnits,this.defaultValue.showUnits),showValues:pt(t.showValues,this.defaultValue.showValues),showConstants:pt(t.showConstants,this.defaultValue.showConstants),showEnums:pt(t.showEnums,this.defaultValue.showEnums),showEnumMembers:pt(t.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:pt(t.showKeywords,this.defaultValue.showKeywords),showWords:pt(t.showWords,this.defaultValue.showWords),showColors:pt(t.showColors,this.defaultValue.showColors),showFiles:pt(t.showFiles,this.defaultValue.showFiles),showReferences:pt(t.showReferences,this.defaultValue.showReferences),showFolders:pt(t.showFolders,this.defaultValue.showFolders),showTypeParameters:pt(t.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:pt(t.showSnippets,this.defaultValue.showSnippets),showUsers:pt(t.showUsers,this.defaultValue.showUsers),showIssues:pt(t.showIssues,this.defaultValue.showIssues)}}}class uDe extends ms{constructor(){super(114,"smartSelect",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:U("selectLeadingAndTrailingWhitespace","Whether leading and trailing whitespace should always be selected."),default:!0,type:"boolean"},"editor.smartSelect.selectSubwords":{description:U("selectSubwords","Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected."),default:!0,type:"boolean"}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{selectLeadingAndTrailingWhitespace:pt(e.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:pt(e.selectSubwords,this.defaultValue.selectSubwords)}}}class mDe extends ms{constructor(){const e=[];super(131,"wordSegmenterLocales",e,{anyOf:[{description:U("wordSegmenterLocales","Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.)."),type:"string"},{description:U("wordSegmenterLocales","Locales to be used for word segmentation when doing word related navigations or operations. Specify the BCP 47 language tag of the word you wish to recognize (e.g., ja, zh-CN, zh-Hant-TW, etc.)."),type:"array",items:{type:"string"}}]})}validate(e){if(typeof e=="string"&&(e=[e]),Array.isArray(e)){const t=[];for(const i of e)if(typeof i=="string")try{Intl.Segmenter.supportedLocalesOf(i).length>0&&t.push(i)}catch{}return t}return this.defaultValue}}class pDe extends ms{constructor(){super(139,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[U("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),U("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),U("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),U("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:U("wrappingIndent","Controls the indentation of wrapped lines."),default:"same"}})}validate(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(e,t,i){return t.get(2)===2?0:i}}class gDe extends qT{constructor(){super(147)}compute(e,t,i){const n=t.get(146);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:n.isWordWrapMinified,isViewportWrapping:n.isViewportWrapping,wrappingColumn:n.wrappingColumn}}}class bDe extends ms{constructor(){const e={enabled:!0,showDropSelector:"afterDrop"};super(36,"dropIntoEditor",e,{"editor.dropIntoEditor.enabled":{type:"boolean",default:e.enabled,markdownDescription:U("dropIntoEditor.enabled","Controls whether you can drag and drop a file into a text editor by holding down the `Shift` key (instead of opening the file in an editor).")},"editor.dropIntoEditor.showDropSelector":{type:"string",markdownDescription:U("dropIntoEditor.showDropSelector","Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped."),enum:["afterDrop","never"],enumDescriptions:[U("dropIntoEditor.showDropSelector.afterDrop","Show the drop selector widget after a file is dropped into the editor."),U("dropIntoEditor.showDropSelector.never","Never show the drop selector widget. Instead the default drop provider is always used.")],default:"afterDrop"}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),showDropSelector:Is(t.showDropSelector,this.defaultValue.showDropSelector,["afterDrop","never"])}}}class UDe extends ms{constructor(){const e={enabled:!0,showPasteSelector:"afterPaste"};super(85,"pasteAs",e,{"editor.pasteAs.enabled":{type:"boolean",default:e.enabled,markdownDescription:U("pasteAs.enabled","Controls whether you can paste content in different ways.")},"editor.pasteAs.showPasteSelector":{type:"string",markdownDescription:U("pasteAs.showPasteSelector","Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted."),enum:["afterPaste","never"],enumDescriptions:[U("pasteAs.showPasteSelector.afterPaste","Show the paste selector widget after content is pasted into the editor."),U("pasteAs.showPasteSelector.never","Never show the paste selector widget. Instead the default pasting behavior is always used.")],default:"afterPaste"}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:pt(t.enabled,this.defaultValue.enabled),showPasteSelector:Is(t.showPasteSelector,this.defaultValue.showPasteSelector,["afterPaste","never"])}}}const fDe="Consolas, 'Courier New', monospace",FDe="Menlo, Monaco, 'Courier New', monospace",ZDe="'Droid Sans Mono', 'monospace', monospace",ta={fontFamily:Fi?FDe:sa?ZDe:fDe,fontWeight:"normal",fontSize:Fi?12:14,lineHeight:0,letterSpacing:0},oS=[];function Ee(s){return oS[s.id]=s,s}const om={acceptSuggestionOnCommitCharacter:Ee(new xi(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:U("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:Ee(new Ts(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",U("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:U("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:Ee(new TIe),accessibilityPageSize:Ee(new vn(3,"accessibilityPageSize",10,1,1073741824,{description:U("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default."),tags:["accessibility"]})),ariaLabel:Ee(new Ar(4,"ariaLabel",U("editorViewAccessibleLabel","Editor content"))),ariaRequired:Ee(new xi(5,"ariaRequired",!1,void 0)),screenReaderAnnounceInlineSuggestion:Ee(new xi(8,"screenReaderAnnounceInlineSuggestion",!0,{description:U("screenReaderAnnounceInlineSuggestion","Control whether inline suggestions are announced by a screen reader."),tags:["accessibility"]})),autoClosingBrackets:Ee(new Ts(6,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",U("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),U("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:U("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingComments:Ee(new Ts(7,"autoClosingComments","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",U("editor.autoClosingComments.languageDefined","Use language configurations to determine when to autoclose comments."),U("editor.autoClosingComments.beforeWhitespace","Autoclose comments only when the cursor is to the left of whitespace."),""],description:U("autoClosingComments","Controls whether the editor should automatically close comments after the user adds an opening comment.")})),autoClosingDelete:Ee(new Ts(9,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",U("editor.autoClosingDelete.auto","Remove adjacent closing quotes or brackets only if they were automatically inserted."),""],description:U("autoClosingDelete","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")})),autoClosingOvertype:Ee(new Ts(10,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",U("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:U("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:Ee(new Ts(11,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",U("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),U("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:U("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:Ee(new ML(12,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],MIe,{enumDescriptions:[U("editor.autoIndent.none","The editor will not insert indentation automatically."),U("editor.autoIndent.keep","The editor will keep the current line's indentation."),U("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),U("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),U("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:U("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:Ee(new xi(13,"automaticLayout",!1)),autoSurround:Ee(new Ts(14,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[U("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),U("editor.autoSurround.quotes","Surround with quotes but not brackets."),U("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:U("autoSurround","Controls whether the editor should automatically surround selections when typing quotes or brackets.")})),bracketPairColorization:Ee(new dDe),bracketPairGuides:Ee(new cDe),stickyTabStops:Ee(new xi(117,"stickyTabStops",!1,{description:U("stickyTabStops","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")})),codeLens:Ee(new xi(17,"codeLens",!0,{description:U("codeLens","Controls whether the editor shows CodeLens.")})),codeLensFontFamily:Ee(new Ar(18,"codeLensFontFamily","",{description:U("codeLensFontFamily","Controls the font family for CodeLens.")})),codeLensFontSize:Ee(new vn(19,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:U("codeLensFontSize","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.")})),colorDecorators:Ee(new xi(20,"colorDecorators",!0,{description:U("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),colorDecoratorActivatedOn:Ee(new Ts(149,"colorDecoratorsActivatedOn","clickAndHover",["clickAndHover","hover","click"],{enumDescriptions:[U("editor.colorDecoratorActivatedOn.clickAndHover","Make the color picker appear both on click and hover of the color decorator"),U("editor.colorDecoratorActivatedOn.hover","Make the color picker appear on hover of the color decorator"),U("editor.colorDecoratorActivatedOn.click","Make the color picker appear on click of the color decorator")],description:U("colorDecoratorActivatedOn","Controls the condition to make a color picker appear from a color decorator")})),colorDecoratorsLimit:Ee(new vn(21,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:U("colorDecoratorsLimit","Controls the max number of color decorators that can be rendered in an editor at once.")})),columnSelection:Ee(new xi(22,"columnSelection",!1,{description:U("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:Ee(new BIe),contextmenu:Ee(new xi(24,"contextmenu",!0)),copyWithSyntaxHighlighting:Ee(new xi(25,"copyWithSyntaxHighlighting",!0,{description:U("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:Ee(new ML(26,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],LIe,{description:U("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:Ee(new Ts(27,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[U("cursorSmoothCaretAnimation.off","Smooth caret animation is disabled."),U("cursorSmoothCaretAnimation.explicit","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture."),U("cursorSmoothCaretAnimation.on","Smooth caret animation is always enabled.")],description:U("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:Ee(new ML(28,"cursorStyle",bl.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],kIe,{description:U("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:Ee(new vn(29,"cursorSurroundingLines",0,0,1073741824,{description:U("cursorSurroundingLines","Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")})),cursorSurroundingLinesStyle:Ee(new Ts(30,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[U("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),U("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],markdownDescription:U("cursorSurroundingLinesStyle","Controls when `#editor.cursorSurroundingLines#` should be enforced.")})),cursorWidth:Ee(new vn(31,"cursorWidth",0,0,1073741824,{markdownDescription:U("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:Ee(new xi(32,"disableLayerHinting",!1)),disableMonospaceOptimizations:Ee(new xi(33,"disableMonospaceOptimizations",!1)),domReadOnly:Ee(new xi(34,"domReadOnly",!1)),dragAndDrop:Ee(new xi(35,"dragAndDrop",!0,{description:U("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:Ee(new DIe),dropIntoEditor:Ee(new bDe),stickyScroll:Ee(new zIe),experimentalWhitespaceRendering:Ee(new Ts(38,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[U("experimentalWhitespaceRendering.svg","Use a new rendering method with svgs."),U("experimentalWhitespaceRendering.font","Use a new rendering method with font characters."),U("experimentalWhitespaceRendering.off","Use the stable rendering method.")],description:U("experimentalWhitespaceRendering","Controls whether whitespace is rendered with a new, experimental method.")})),extraEditorClassName:Ee(new Ar(39,"extraEditorClassName","")),fastScrollSensitivity:Ee(new ic(40,"fastScrollSensitivity",5,s=>s<=0?5:s,{markdownDescription:U("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:Ee(new GIe),fixedOverflowWidgets:Ee(new xi(42,"fixedOverflowWidgets",!1)),folding:Ee(new xi(43,"folding",!0,{description:U("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:Ee(new Ts(44,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[U("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),U("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:U("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:Ee(new xi(45,"foldingHighlight",!0,{description:U("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),foldingImportsByDefault:Ee(new xi(46,"foldingImportsByDefault",!1,{description:U("foldingImportsByDefault","Controls whether the editor automatically collapses import ranges.")})),foldingMaximumRegions:Ee(new vn(47,"foldingMaximumRegions",5e3,10,65e3,{description:U("foldingMaximumRegions","The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.")})),unfoldOnClickAfterEndOfLine:Ee(new xi(48,"unfoldOnClickAfterEndOfLine",!1,{description:U("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:Ee(new Ar(49,"fontFamily",ta.fontFamily,{description:U("fontFamily","Controls the font family.")})),fontInfo:Ee(new EIe),fontLigatures2:Ee(new YU),fontSize:Ee(new vIe),fontWeight:Ee(new gj),fontVariations:Ee(new $w),formatOnPaste:Ee(new xi(55,"formatOnPaste",!1,{description:U("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:Ee(new xi(56,"formatOnType",!1,{description:U("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:Ee(new xi(57,"glyphMargin",!0,{description:U("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:Ee(new xIe),hideCursorInOverviewRuler:Ee(new xi(59,"hideCursorInOverviewRuler",!1,{description:U("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),hover:Ee(new JIe),inDiffEditor:Ee(new xi(61,"inDiffEditor",!1)),letterSpacing:Ee(new ic(64,"letterSpacing",ta.letterSpacing,s=>ic.clamp(s,-5,20),{description:U("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:Ee(new YIe),lineDecorationsWidth:Ee(new OIe),lineHeight:Ee(new jIe),lineNumbers:Ee(new iDe),lineNumbersMinChars:Ee(new vn(69,"lineNumbersMinChars",5,1,300)),linkedEditing:Ee(new xi(70,"linkedEditing",!1,{description:U("linkedEditing","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.")})),links:Ee(new xi(71,"links",!0,{description:U("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:Ee(new Ts(72,"matchBrackets","always",["always","near","never"],{description:U("matchBrackets","Highlight matching brackets.")})),minimap:Ee(new HIe),mouseStyle:Ee(new Ts(74,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:Ee(new ic(75,"mouseWheelScrollSensitivity",1,s=>s===0?1:s,{markdownDescription:U("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:Ee(new xi(76,"mouseWheelZoom",!1,{markdownDescription:Fi?U("mouseWheelZoom.mac","Zoom the font of the editor when using mouse wheel and holding `Cmd`."):U("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:Ee(new xi(77,"multiCursorMergeOverlapping",!0,{description:U("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:Ee(new ML(78,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],PIe,{markdownEnumDescriptions:[U("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),U("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:U({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:Ee(new Ts(79,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[U("multiCursorPaste.spread","Each cursor pastes a single line of the text."),U("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:U("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),multiCursorLimit:Ee(new vn(80,"multiCursorLimit",1e4,1,1e5,{markdownDescription:U("multiCursorLimit","Controls the max number of cursors that can be in an active editor at once.")})),occurrencesHighlight:Ee(new Ts(81,"occurrencesHighlight","singleFile",["off","singleFile","multiFile"],{markdownEnumDescriptions:[U("occurrencesHighlight.off","Does not highlight occurrences."),U("occurrencesHighlight.singleFile","Highlights occurrences only in the current file."),U("occurrencesHighlight.multiFile","Experimental: Highlights occurrences across all valid open files.")],markdownDescription:U("occurrencesHighlight","Controls whether occurrences should be highlighted across open files.")})),overviewRulerBorder:Ee(new xi(82,"overviewRulerBorder",!0,{description:U("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:Ee(new vn(83,"overviewRulerLanes",3,0,3)),padding:Ee(new KIe),pasteAs:Ee(new UDe),parameterHints:Ee(new qIe),peekWidgetDefaultFocus:Ee(new Ts(87,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[U("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),U("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:U("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),placeholder:Ee(new eDe),definitionLinkOpensInPeek:Ee(new xi(89,"definitionLinkOpensInPeek",!1,{description:U("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:Ee(new tDe),quickSuggestionsDelay:Ee(new vn(91,"quickSuggestionsDelay",10,0,1073741824,{description:U("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:Ee(new xi(92,"readOnly",!1)),readOnlyMessage:Ee(new sDe),renameOnType:Ee(new xi(94,"renameOnType",!1,{description:U("renameOnType","Controls whether the editor auto renames on type."),markdownDeprecationMessage:U("renameOnTypeDeprecate","Deprecated, use `editor.linkedEditing` instead.")})),renderControlCharacters:Ee(new xi(95,"renderControlCharacters",!0,{description:U("renderControlCharacters","Controls whether the editor should render control characters."),restricted:!0})),renderFinalNewline:Ee(new Ts(96,"renderFinalNewline",sa?"dimmed":"on",["off","on","dimmed"],{description:U("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:Ee(new Ts(97,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",U("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:U("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:Ee(new xi(98,"renderLineHighlightOnlyWhenFocus",!1,{description:U("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused.")})),renderValidationDecorations:Ee(new Ts(99,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:Ee(new Ts(100,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",U("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),U("renderWhitespace.selection","Render whitespace characters only on selected text."),U("renderWhitespace.trailing","Render only trailing whitespace characters."),""],description:U("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:Ee(new vn(101,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:Ee(new xi(102,"roundedSelection",!0,{description:U("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:Ee(new nDe),scrollbar:Ee(new oDe),scrollBeyondLastColumn:Ee(new vn(105,"scrollBeyondLastColumn",4,0,1073741824,{description:U("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:Ee(new xi(106,"scrollBeyondLastLine",!0,{description:U("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:Ee(new xi(107,"scrollPredominantAxis",!0,{description:U("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:Ee(new xi(108,"selectionClipboard",!0,{description:U("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:sa})),selectionHighlight:Ee(new xi(109,"selectionHighlight",!0,{description:U("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:Ee(new xi(110,"selectOnLineNumbers",!0)),showFoldingControls:Ee(new Ts(111,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[U("showFoldingControls.always","Always show the folding controls."),U("showFoldingControls.never","Never show the folding controls and reduce the gutter size."),U("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:U("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:Ee(new xi(112,"showUnused",!0,{description:U("showUnused","Controls fading out of unused code.")})),showDeprecated:Ee(new xi(141,"showDeprecated",!0,{description:U("showDeprecated","Controls strikethrough deprecated variables.")})),inlayHints:Ee(new _Ie),snippetSuggestions:Ee(new Ts(113,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[U("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),U("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),U("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),U("snippetSuggestions.none","Do not show snippet suggestions.")],description:U("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smartSelect:Ee(new uDe),smoothScrolling:Ee(new xi(115,"smoothScrolling",!1,{description:U("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:Ee(new vn(118,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:Ee(new hDe),inlineSuggest:Ee(new rDe),inlineEdit:Ee(new aDe),inlineCompletionsAccessibilityVerbose:Ee(new xi(150,"inlineCompletionsAccessibilityVerbose",!1,{description:U("inlineCompletionsAccessibilityVerbose","Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.")})),suggestFontSize:Ee(new vn(120,"suggestFontSize",0,0,1e3,{markdownDescription:U("suggestFontSize","Font size for the suggest widget. When set to {0}, the value of {1} is used.","`0`","`#editor.fontSize#`")})),suggestLineHeight:Ee(new vn(121,"suggestLineHeight",0,0,1e3,{markdownDescription:U("suggestLineHeight","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:Ee(new xi(122,"suggestOnTriggerCharacters",!0,{description:U("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:Ee(new Ts(123,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[U("suggestSelection.first","Always select the first suggestion."),U("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),U("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:U("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:Ee(new Ts(124,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[U("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),U("tabCompletion.off","Disable tab completions."),U("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:U("tabCompletion","Enables tab completions.")})),tabIndex:Ee(new vn(125,"tabIndex",0,-1,1073741824)),unicodeHighlight:Ee(new lDe),unusualLineTerminators:Ee(new Ts(127,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[U("unusualLineTerminators.auto","Unusual line terminators are automatically removed."),U("unusualLineTerminators.off","Unusual line terminators are ignored."),U("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed.")],description:U("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useShadowDOM:Ee(new xi(128,"useShadowDOM",!0)),useTabStops:Ee(new xi(129,"useTabStops",!0,{description:U("useTabStops","Spaces and tabs are inserted and deleted in alignment with tab stops.")})),wordBreak:Ee(new Ts(130,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[U("wordBreak.normal","Use the default line break rule."),U("wordBreak.keepAll","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.")],description:U("wordBreak","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.")})),wordSegmenterLocales:Ee(new mDe),wordSeparators:Ee(new Ar(132,"wordSeparators",yE,{description:U("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:Ee(new Ts(133,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[U("wordWrap.off","Lines will never wrap."),U("wordWrap.on","Lines will wrap at the viewport width."),U({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),U({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:U({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:Ee(new Ar(134,"wordWrapBreakAfterCharacters"," })]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」")),wordWrapBreakBeforeCharacters:Ee(new Ar(135,"wordWrapBreakBeforeCharacters","([{‘“〈《「『【〔([{「£¥$£¥++")),wordWrapColumn:Ee(new vn(136,"wordWrapColumn",80,1,1073741824,{markdownDescription:U({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapOverride1:Ee(new Ts(137,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:Ee(new Ts(138,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:Ee(new IIe),defaultColorDecorators:Ee(new xi(148,"defaultColorDecorators",!1,{markdownDescription:U("defaultColorDecorators","Controls whether inline color decorations should be shown using the default document color provider")})),pixelRatio:Ee(new $Ie),tabFocusMode:Ee(new xi(145,"tabFocusMode",!1,{markdownDescription:U("tabFocusMode","Controls whether the editor receives tabs or defers them to the workbench for navigation.")})),layoutInfo:Ee(new uW),wrappingInfo:Ee(new gDe),wrappingIndent:Ee(new pDe),wrappingStrategy:Ee(new XIe)};class ADe{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?KW.isErrorNoTelemetry(e)?new KW(e.message+`
- `+e.stack):new Error(e.message+`
- `+e.stack):e},0)}}emit(e){this.listeners.forEach(t=>{t(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}}const Bpe=new ADe;function vt(s){th(s)||Bpe.onUnexpectedError(s)}function Os(s){th(s)||Bpe.onUnexpectedExternalError(s)}function Dse(s){if(s instanceof Error){const{name:e,message:t}=s,i=s.stacktrace||s.stack;return{$isError:!0,name:e,message:t,stack:i,noTelemetry:KW.isErrorNoTelemetry(s)}}return s}const wE="Canceled";function th(s){return s instanceof jh?!0:s instanceof Error&&s.name===wE&&s.message===wE}class jh extends Error{constructor(){super(wE),this.name=this.message}}function NDe(){const s=new Error(wE);return s.name=s.message,s}function Yc(s){return s?new Error(`Illegal argument: ${s}`):new Error("Illegal argument")}function F$(s){return s?new Error(`Illegal state: ${s}`):new Error("Illegal state")}class RDe extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class KW extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof KW)return e;const t=new KW;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}}class en extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,en.prototype)}}function zU(s,e){const t=this;let i=!1,n;return function(){if(i)return n;if(i=!0,e)try{n=s.apply(t,arguments)}finally{e()}else n=s.apply(t,arguments);return n}}function H5(s){return typeof s=="object"&&s!==null&&typeof s.dispose=="function"&&s.dispose.length===0}function Tn(s){if(Ti.is(s)){const e=[];for(const t of s)if(t)try{t.dispose()}catch(i){e.push(i)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(s)?[]:s}else if(s)return s.dispose(),s}function _h(...s){return gt(()=>Tn(s))}function gt(s){return{dispose:zU(()=>{s()})}}const tX=class tX{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{Tn(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?tX.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}deleteAndLeak(e){e&&this._toDispose.has(e)&&this._toDispose.delete(e)}};tX.DISABLE_DISPOSED_WARNING=!1;let Ze=tX;const dne=class dne{constructor(){this._store=new Ze,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}};dne.None=Object.freeze({dispose(){}});let de=dne;class _o{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||((t=this._value)==null||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,(e=this._value)==null||e.dispose(),this._value=void 0}}class SDe{constructor(e){this._disposable=e,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}class WDe{constructor(e){this.object=e}dispose(){}}class Z${constructor(){this._store=new Map,this._isDisposed=!1}dispose(){this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{Tn(this._store.values())}finally{this._store.clear()}}get(e){return this._store.get(e)}set(e,t,i=!1){var n;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),i||(n=this._store.get(e))==null||n.dispose(),this._store.set(e,t)}deleteAndDispose(e){var t;(t=this._store.get(e))==null||t.dispose(),this._store.delete(e)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}const VDe=globalThis.performance&&typeof globalThis.performance.now=="function";class ol{static create(e){return new ol(e)}constructor(e){this._now=VDe&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}reset(){this._startTime=this._now(),this._stopTime=-1}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}var ve;(function(s){s.None=()=>de.None;function e(j,X){return u(j,()=>{},0,void 0,!0,void 0,X)}s.defer=e;function t(j){return(X,ie=null,se)=>{let pe=!1,Ue;return Ue=j(Qe=>{if(!pe)return Ue?Ue.dispose():pe=!0,X.call(ie,Qe)},null,se),pe&&Ue.dispose(),Ue}}s.once=t;function i(j,X){return s.once(s.filter(j,X))}s.onceIf=i;function n(j,X,ie){return c((se,pe=null,Ue)=>j(Qe=>se.call(pe,X(Qe)),null,Ue),ie)}s.map=n;function o(j,X,ie){return c((se,pe=null,Ue)=>j(Qe=>{X(Qe),se.call(pe,Qe)},null,Ue),ie)}s.forEach=o;function l(j,X,ie){return c((se,pe=null,Ue)=>j(Qe=>X(Qe)&&se.call(pe,Qe),null,Ue),ie)}s.filter=l;function r(j){return j}s.signal=r;function a(...j){return(X,ie=null,se)=>{const pe=_h(...j.map(Ue=>Ue(Qe=>X.call(ie,Qe))));return h(pe,se)}}s.any=a;function d(j,X,ie,se){let pe=ie;return n(j,Ue=>(pe=X(pe,Ue),pe),se)}s.reduce=d;function c(j,X){let ie;const se={onWillAddFirstListener(){ie=j(pe.fire,pe)},onDidRemoveLastListener(){ie==null||ie.dispose()}},pe=new re(se);return X==null||X.add(pe),pe.event}function h(j,X){return X instanceof Array?X.push(j):X&&X.add(j),j}function u(j,X,ie=100,se=!1,pe=!1,Ue,Qe){let He,Te,xe,Je=0,Mt;const St={leakWarningThreshold:Ue,onWillAddFirstListener(){He=j(Be=>{Je++,Te=X(Te,Be),se&&!xe&&(Pe.fire(Te),Te=void 0),Mt=()=>{const rt=Te;Te=void 0,xe=void 0,(!se||Je>1)&&Pe.fire(rt),Je=0},typeof ie=="number"?(clearTimeout(xe),xe=setTimeout(Mt,ie)):xe===void 0&&(xe=0,queueMicrotask(Mt))})},onWillRemoveListener(){pe&&Je>0&&(Mt==null||Mt())},onDidRemoveLastListener(){Mt=void 0,He.dispose()}},Pe=new re(St);return Qe==null||Qe.add(Pe),Pe.event}s.debounce=u;function m(j,X=0,ie){return s.debounce(j,(se,pe)=>se?(se.push(pe),se):[pe],X,void 0,!0,void 0,ie)}s.accumulate=m;function p(j,X=(se,pe)=>se===pe,ie){let se=!0,pe;return l(j,Ue=>{const Qe=se||!X(Ue,pe);return se=!1,pe=Ue,Qe},ie)}s.latch=p;function g(j,X,ie){return[s.filter(j,X,ie),s.filter(j,se=>!X(se),ie)]}s.split=g;function b(j,X=!1,ie=[],se){let pe=ie.slice(),Ue=j(Te=>{pe?pe.push(Te):He.fire(Te)});se&&se.add(Ue);const Qe=()=>{pe==null||pe.forEach(Te=>He.fire(Te)),pe=null},He=new re({onWillAddFirstListener(){Ue||(Ue=j(Te=>He.fire(Te)),se&&se.add(Ue))},onDidAddFirstListener(){pe&&(X?setTimeout(Qe):Qe())},onDidRemoveLastListener(){Ue&&Ue.dispose(),Ue=null}});return se&&se.add(He),He.event}s.buffer=b;function f(j,X){return(se,pe,Ue)=>{const Qe=X(new A);return j(function(He){const Te=Qe.evaluate(He);Te!==Z&&se.call(pe,Te)},void 0,Ue)}}s.chain=f;const Z=Symbol("HaltChainable");class A{constructor(){this.steps=[]}map(X){return this.steps.push(X),this}forEach(X){return this.steps.push(ie=>(X(ie),ie)),this}filter(X){return this.steps.push(ie=>X(ie)?ie:Z),this}reduce(X,ie){let se=ie;return this.steps.push(pe=>(se=X(se,pe),se)),this}latch(X=(ie,se)=>ie===se){let ie=!0,se;return this.steps.push(pe=>{const Ue=ie||!X(pe,se);return ie=!1,se=pe,Ue?pe:Z}),this}evaluate(X){for(const ie of this.steps)if(X=ie(X),X===Z)break;return X}}function N(j,X,ie=se=>se){const se=(...He)=>Qe.fire(ie(...He)),pe=()=>j.on(X,se),Ue=()=>j.removeListener(X,se),Qe=new re({onWillAddFirstListener:pe,onDidRemoveLastListener:Ue});return Qe.event}s.fromNodeEventEmitter=N;function W(j,X,ie=se=>se){const se=(...He)=>Qe.fire(ie(...He)),pe=()=>j.addEventListener(X,se),Ue=()=>j.removeEventListener(X,se),Qe=new re({onWillAddFirstListener:pe,onDidRemoveLastListener:Ue});return Qe.event}s.fromDOMEventEmitter=W;function Q(j){return new Promise(X=>t(j)(X))}s.toPromise=Q;function R(j){const X=new re;return j.then(ie=>{X.fire(ie)},()=>{X.fire(void 0)}).finally(()=>{X.dispose()}),X.event}s.fromPromise=R;function M(j,X){return j(ie=>X.fire(ie))}s.forward=M;function w(j,X,ie){return X(ie),j(se=>X(se))}s.runAndSubscribe=w;class Y{constructor(X,ie){this._observable=X,this._counter=0,this._hasChanged=!1;const se={onWillAddFirstListener:()=>{X.addObserver(this),this._observable.reportChanges()},onDidRemoveLastListener:()=>{X.removeObserver(this)}};this.emitter=new re(se),ie&&ie.add(this.emitter)}beginUpdate(X){this._counter++}handlePossibleChange(X){}handleChange(X,ie){this._hasChanged=!0}endUpdate(X){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function G(j,X){return new Y(j,X).emitter.event}s.fromObservable=G;function P(j){return(X,ie,se)=>{let pe=0,Ue=!1;const Qe={beginUpdate(){pe++},endUpdate(){pe--,pe===0&&(j.reportChanges(),Ue&&(Ue=!1,X.call(ie)))},handlePossibleChange(){},handleChange(){Ue=!0}};j.addObserver(Qe),j.reportChanges();const He={dispose(){j.removeObserver(Qe)}};return se instanceof Ze?se.add(He):Array.isArray(se)&&se.push(He),He}}s.fromObservableLight=P})(ve||(ve={}));const HS=class HS{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${HS._idPool++}`,HS.all.add(this)}start(e){this._stopWatch=new ol,this.listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}};HS.all=new Set,HS._idPool=0;let bj=HS,QDe=-1;const iX=class iX{constructor(e,t,i=(iX._idPool++).toString(16).padStart(3,"0")){this._errorHandler=e,this.threshold=t,this.name=i,this._warnCountdown=0}dispose(){var e;(e=this._stacks)==null||e.clear()}check(e,t){const i=this.threshold;if(i<=0||t<i)return;this._stacks||(this._stacks=new Map);const n=this._stacks.get(e.value)||0;if(this._stacks.set(e.value,n+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=i*.5;const[o,l]=this.getMostFrequentStack(),r=`[${this.name}] potential listener LEAK detected, having ${t} listeners already. MOST frequent listener (${l}):`;console.warn(r),console.warn(o);const a=new yDe(r,o);this._errorHandler(a)}return()=>{const o=this._stacks.get(e.value)||0;this._stacks.set(e.value,o-1)}}getMostFrequentStack(){if(!this._stacks)return;let e,t=0;for(const[i,n]of this._stacks)(!e||t<n)&&(e=[i,n],t=n);return e}};iX._idPool=1;let Uj=iX;class A${static create(){const e=new Error;return new A$(e.stack??"")}constructor(e){this.value=e}print(){console.warn(this.value.split(`
- `).slice(2).join(`
- `))}}class yDe extends Error{constructor(e,t){super(e),this.name="ListenerLeakError",this.stack=t}}class CDe extends Error{constructor(e,t){super(e),this.name="ListenerRefusalError",this.stack=t}}class k9{constructor(e){this.value=e}}const wDe=2;let re=class{constructor(e){var t,i,n,o;this._size=0,this._options=e,this._leakageMon=(t=this._options)!=null&&t.leakWarningThreshold?new Uj((e==null?void 0:e.onListenerError)??vt,((i=this._options)==null?void 0:i.leakWarningThreshold)??QDe):void 0,this._perfMon=(n=this._options)!=null&&n._profName?new bj(this._options._profName):void 0,this._deliveryQueue=(o=this._options)==null?void 0:o.deliveryQueue}dispose(){var e,t,i,n;this._disposed||(this._disposed=!0,((e=this._deliveryQueue)==null?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),(i=(t=this._options)==null?void 0:t.onDidRemoveLastListener)==null||i.call(t),(n=this._leakageMon)==null||n.dispose())}get event(){return this._event??(this._event=(e,t,i)=>{var r,a,d,c,h;if(this._leakageMon&&this._size>this._leakageMon.threshold**2){const u=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(u);const m=this._leakageMon.getMostFrequentStack()??["UNKNOWN stack",-1],p=new CDe(`${u}. HINT: Stack shows most frequent listener (${m[1]}-times)`,m[0]);return(((r=this._options)==null?void 0:r.onListenerError)||vt)(p),de.None}if(this._disposed)return de.None;t&&(e=e.bind(t));const n=new k9(e);let o;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(n.stack=A$.create(),o=this._leakageMon.check(n.stack,this._size+1)),this._listeners?this._listeners instanceof k9?(this._deliveryQueue??(this._deliveryQueue=new Lpe),this._listeners=[this._listeners,n]):this._listeners.push(n):((d=(a=this._options)==null?void 0:a.onWillAddFirstListener)==null||d.call(a,this),this._listeners=n,(h=(c=this._options)==null?void 0:c.onDidAddFirstListener)==null||h.call(c,this)),this._size++;const l=gt(()=>{o==null||o(),this._removeListener(n)});return i instanceof Ze?i.add(l):Array.isArray(i)&&i.push(l),l}),this._event}_removeListener(e){var o,l,r,a;if((l=(o=this._options)==null?void 0:o.onWillRemoveListener)==null||l.call(o,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(a=(r=this._options)==null?void 0:r.onDidRemoveLastListener)==null||a.call(r,this),this._size=0;return}const t=this._listeners,i=t.indexOf(e);if(i===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,t[i]=void 0;const n=this._deliveryQueue.current===this;if(this._size*wDe<=t.length){let d=0;for(let c=0;c<t.length;c++)t[c]?t[d++]=t[c]:n&&(this._deliveryQueue.end--,d<this._deliveryQueue.i&&this._deliveryQueue.i--);t.length=d}}_deliver(e,t){var n;if(!e)return;const i=((n=this._options)==null?void 0:n.onListenerError)||vt;if(!i){e.value(t);return}try{e.value(t)}catch(o){i(o)}}_deliverQueue(e){const t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){var t,i,n,o;if((t=this._deliveryQueue)!=null&&t.current&&(this._deliverQueue(this._deliveryQueue),(i=this._perfMon)==null||i.stop()),(n=this._perfMon)==null||n.start(this._size),this._listeners)if(this._listeners instanceof k9)this._deliver(this._listeners,e);else{const l=this._deliveryQueue;l.enqueue(this,e,this._listeners.length),this._deliverQueue(l)}(o=this._perfMon)==null||o.stop()}hasListeners(){return this._size>0}};const MDe=()=>new Lpe;class Lpe{constructor(){this.i=-1,this.end=0}enqueue(e,t,i){this.i=0,this.end=i,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class fA extends re{constructor(e){super(e),this._isPaused=0,this._eventQueue=new Pr,this._mergeFn=e==null?void 0:e.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(e){this._size&&(this._isPaused!==0?this._eventQueue.push(e):super.fire(e))}}class kpe extends fA{constructor(e){super(e),this._delay=e.delay??100}fire(e){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(e)}}class TDe extends re{constructor(e){super(e),this._queuedEvents=[],this._mergeFn=e==null?void 0:e.merge}fire(e){this.hasListeners()&&(this._queuedEvents.push(e),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(t=>super.fire(t)),this._queuedEvents=[]}))}}class BDe{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new re({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(e){const t={event:e,listener:null};return this.events.push(t),this.hasListeners&&this.hook(t),gt(zU(()=>{this.hasListeners&&this.unhook(t);const n=this.events.indexOf(t);this.events.splice(n,1)}))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(e=>this.hook(e))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(e=>this.unhook(e))}hook(e){e.listener=e.event(t=>this.emitter.fire(t))}unhook(e){var t;(t=e.listener)==null||t.dispose(),e.listener=null}dispose(){var e;this.emitter.dispose();for(const t of this.events)(e=t.listener)==null||e.dispose();this.events=[]}}class $T{constructor(){this.data=[]}wrapEvent(e,t,i){return(n,o,l)=>e(r=>{const a=this.data[this.data.length-1];if(!t){a?a.buffers.push(()=>n.call(o,r)):n.call(o,r);return}const d=a;if(!d){n.call(o,t(i,r));return}d.items??(d.items=[]),d.items.push(r),d.buffers.length===0&&a.buffers.push(()=>{d.reducedResult??(d.reducedResult=i?d.items.reduce(t,i):d.items.reduce(t)),n.call(o,d.reducedResult)})},void 0,l)}bufferEvents(e){const t={buffers:new Array};this.data.push(t);const i=e();return this.data.pop(),t.buffers.forEach(n=>n()),i}}class Gse{constructor(){this.listening=!1,this.inputEvent=ve.None,this.inputEventListener=de.None,this.emitter=new re({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}const Ipe=Object.freeze(function(s,e){const t=setTimeout(s.bind(e),0);return{dispose(){clearTimeout(t)}}});var $t;(function(s){function e(t){return t===s.None||t===s.Cancelled||t instanceof jI?!0:!t||typeof t!="object"?!1:typeof t.isCancellationRequested=="boolean"&&typeof t.onCancellationRequested=="function"}s.isCancellationToken=e,s.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:ve.None}),s.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Ipe})})($t||($t={}));class jI{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?Ipe:(this._emitter||(this._emitter=new re),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}let Ws=class{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new jI),this._token}cancel(){this._token?this._token instanceof jI&&this._token.cancel():this._token=$t.Cancelled}dispose(e=!1){var t;e&&this.cancel(),(t=this._parentListener)==null||t.dispose(),this._token?this._token instanceof jI&&this._token.dispose():this._token=$t.None}};function fj(s){const e=new Ws;return s.add({dispose(){e.cancel()}}),e.token}class N${constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const HI=new N$,Fj=new N$,Zj=new N$,Dpe=new Array(230),LDe=Object.create(null),kDe=Object.create(null),R$=[];for(let s=0;s<=193;s++)R$[s]=-1;(function(){const s="",e=[[1,0,"None",0,"unknown",0,"VK_UNKNOWN",s,s],[1,1,"Hyper",0,s,0,s,s,s],[1,2,"Super",0,s,0,s,s,s],[1,3,"Fn",0,s,0,s,s,s],[1,4,"FnLock",0,s,0,s,s,s],[1,5,"Suspend",0,s,0,s,s,s],[1,6,"Resume",0,s,0,s,s,s],[1,7,"Turbo",0,s,0,s,s,s],[1,8,"Sleep",0,s,0,"VK_SLEEP",s,s],[1,9,"WakeUp",0,s,0,s,s,s],[0,10,"KeyA",31,"A",65,"VK_A",s,s],[0,11,"KeyB",32,"B",66,"VK_B",s,s],[0,12,"KeyC",33,"C",67,"VK_C",s,s],[0,13,"KeyD",34,"D",68,"VK_D",s,s],[0,14,"KeyE",35,"E",69,"VK_E",s,s],[0,15,"KeyF",36,"F",70,"VK_F",s,s],[0,16,"KeyG",37,"G",71,"VK_G",s,s],[0,17,"KeyH",38,"H",72,"VK_H",s,s],[0,18,"KeyI",39,"I",73,"VK_I",s,s],[0,19,"KeyJ",40,"J",74,"VK_J",s,s],[0,20,"KeyK",41,"K",75,"VK_K",s,s],[0,21,"KeyL",42,"L",76,"VK_L",s,s],[0,22,"KeyM",43,"M",77,"VK_M",s,s],[0,23,"KeyN",44,"N",78,"VK_N",s,s],[0,24,"KeyO",45,"O",79,"VK_O",s,s],[0,25,"KeyP",46,"P",80,"VK_P",s,s],[0,26,"KeyQ",47,"Q",81,"VK_Q",s,s],[0,27,"KeyR",48,"R",82,"VK_R",s,s],[0,28,"KeyS",49,"S",83,"VK_S",s,s],[0,29,"KeyT",50,"T",84,"VK_T",s,s],[0,30,"KeyU",51,"U",85,"VK_U",s,s],[0,31,"KeyV",52,"V",86,"VK_V",s,s],[0,32,"KeyW",53,"W",87,"VK_W",s,s],[0,33,"KeyX",54,"X",88,"VK_X",s,s],[0,34,"KeyY",55,"Y",89,"VK_Y",s,s],[0,35,"KeyZ",56,"Z",90,"VK_Z",s,s],[0,36,"Digit1",22,"1",49,"VK_1",s,s],[0,37,"Digit2",23,"2",50,"VK_2",s,s],[0,38,"Digit3",24,"3",51,"VK_3",s,s],[0,39,"Digit4",25,"4",52,"VK_4",s,s],[0,40,"Digit5",26,"5",53,"VK_5",s,s],[0,41,"Digit6",27,"6",54,"VK_6",s,s],[0,42,"Digit7",28,"7",55,"VK_7",s,s],[0,43,"Digit8",29,"8",56,"VK_8",s,s],[0,44,"Digit9",30,"9",57,"VK_9",s,s],[0,45,"Digit0",21,"0",48,"VK_0",s,s],[1,46,"Enter",3,"Enter",13,"VK_RETURN",s,s],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE",s,s],[1,48,"Backspace",1,"Backspace",8,"VK_BACK",s,s],[1,49,"Tab",2,"Tab",9,"VK_TAB",s,s],[1,50,"Space",10,"Space",32,"VK_SPACE",s,s],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,s,0,s,s,s],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",s,s],[1,64,"F1",59,"F1",112,"VK_F1",s,s],[1,65,"F2",60,"F2",113,"VK_F2",s,s],[1,66,"F3",61,"F3",114,"VK_F3",s,s],[1,67,"F4",62,"F4",115,"VK_F4",s,s],[1,68,"F5",63,"F5",116,"VK_F5",s,s],[1,69,"F6",64,"F6",117,"VK_F6",s,s],[1,70,"F7",65,"F7",118,"VK_F7",s,s],[1,71,"F8",66,"F8",119,"VK_F8",s,s],[1,72,"F9",67,"F9",120,"VK_F9",s,s],[1,73,"F10",68,"F10",121,"VK_F10",s,s],[1,74,"F11",69,"F11",122,"VK_F11",s,s],[1,75,"F12",70,"F12",123,"VK_F12",s,s],[1,76,"PrintScreen",0,s,0,s,s,s],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL",s,s],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",s,s],[1,79,"Insert",19,"Insert",45,"VK_INSERT",s,s],[1,80,"Home",14,"Home",36,"VK_HOME",s,s],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",s,s],[1,82,"Delete",20,"Delete",46,"VK_DELETE",s,s],[1,83,"End",13,"End",35,"VK_END",s,s],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT",s,s],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",s],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",s],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",s],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",s],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK",s,s],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE",s,s],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY",s,s],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT",s,s],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD",s,s],[1,94,"NumpadEnter",3,s,0,s,s,s],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1",s,s],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2",s,s],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3",s,s],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4",s,s],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5",s,s],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6",s,s],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7",s,s],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8",s,s],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9",s,s],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0",s,s],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL",s,s],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102",s,s],[1,107,"ContextMenu",58,"ContextMenu",93,s,s,s],[1,108,"Power",0,s,0,s,s,s],[1,109,"NumpadEqual",0,s,0,s,s,s],[1,110,"F13",71,"F13",124,"VK_F13",s,s],[1,111,"F14",72,"F14",125,"VK_F14",s,s],[1,112,"F15",73,"F15",126,"VK_F15",s,s],[1,113,"F16",74,"F16",127,"VK_F16",s,s],[1,114,"F17",75,"F17",128,"VK_F17",s,s],[1,115,"F18",76,"F18",129,"VK_F18",s,s],[1,116,"F19",77,"F19",130,"VK_F19",s,s],[1,117,"F20",78,"F20",131,"VK_F20",s,s],[1,118,"F21",79,"F21",132,"VK_F21",s,s],[1,119,"F22",80,"F22",133,"VK_F22",s,s],[1,120,"F23",81,"F23",134,"VK_F23",s,s],[1,121,"F24",82,"F24",135,"VK_F24",s,s],[1,122,"Open",0,s,0,s,s,s],[1,123,"Help",0,s,0,s,s,s],[1,124,"Select",0,s,0,s,s,s],[1,125,"Again",0,s,0,s,s,s],[1,126,"Undo",0,s,0,s,s,s],[1,127,"Cut",0,s,0,s,s,s],[1,128,"Copy",0,s,0,s,s,s],[1,129,"Paste",0,s,0,s,s,s],[1,130,"Find",0,s,0,s,s,s],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE",s,s],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP",s,s],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN",s,s],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR",s,s],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1",s,s],[1,136,"KanaMode",0,s,0,s,s,s],[0,137,"IntlYen",0,s,0,s,s,s],[1,138,"Convert",0,s,0,s,s,s],[1,139,"NonConvert",0,s,0,s,s,s],[1,140,"Lang1",0,s,0,s,s,s],[1,141,"Lang2",0,s,0,s,s,s],[1,142,"Lang3",0,s,0,s,s,s],[1,143,"Lang4",0,s,0,s,s,s],[1,144,"Lang5",0,s,0,s,s,s],[1,145,"Abort",0,s,0,s,s,s],[1,146,"Props",0,s,0,s,s,s],[1,147,"NumpadParenLeft",0,s,0,s,s,s],[1,148,"NumpadParenRight",0,s,0,s,s,s],[1,149,"NumpadBackspace",0,s,0,s,s,s],[1,150,"NumpadMemoryStore",0,s,0,s,s,s],[1,151,"NumpadMemoryRecall",0,s,0,s,s,s],[1,152,"NumpadMemoryClear",0,s,0,s,s,s],[1,153,"NumpadMemoryAdd",0,s,0,s,s,s],[1,154,"NumpadMemorySubtract",0,s,0,s,s,s],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR",s,s],[1,156,"NumpadClearEntry",0,s,0,s,s,s],[1,0,s,5,"Ctrl",17,"VK_CONTROL",s,s],[1,0,s,4,"Shift",16,"VK_SHIFT",s,s],[1,0,s,6,"Alt",18,"VK_MENU",s,s],[1,0,s,57,"Meta",91,"VK_COMMAND",s,s],[1,157,"ControlLeft",5,s,0,"VK_LCONTROL",s,s],[1,158,"ShiftLeft",4,s,0,"VK_LSHIFT",s,s],[1,159,"AltLeft",6,s,0,"VK_LMENU",s,s],[1,160,"MetaLeft",57,s,0,"VK_LWIN",s,s],[1,161,"ControlRight",5,s,0,"VK_RCONTROL",s,s],[1,162,"ShiftRight",4,s,0,"VK_RSHIFT",s,s],[1,163,"AltRight",6,s,0,"VK_RMENU",s,s],[1,164,"MetaRight",57,s,0,"VK_RWIN",s,s],[1,165,"BrightnessUp",0,s,0,s,s,s],[1,166,"BrightnessDown",0,s,0,s,s,s],[1,167,"MediaPlay",0,s,0,s,s,s],[1,168,"MediaRecord",0,s,0,s,s,s],[1,169,"MediaFastForward",0,s,0,s,s,s],[1,170,"MediaRewind",0,s,0,s,s,s],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",s,s],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",s,s],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP",s,s],[1,174,"Eject",0,s,0,s,s,s],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",s,s],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",s,s],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",s,s],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",s,s],[1,179,"LaunchApp1",0,s,0,"VK_MEDIA_LAUNCH_APP1",s,s],[1,180,"SelectTask",0,s,0,s,s,s],[1,181,"LaunchScreenSaver",0,s,0,s,s,s],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH",s,s],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME",s,s],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK",s,s],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD",s,s],[1,186,"BrowserStop",0,s,0,"VK_BROWSER_STOP",s,s],[1,187,"BrowserRefresh",0,s,0,"VK_BROWSER_REFRESH",s,s],[1,188,"BrowserFavorites",0,s,0,"VK_BROWSER_FAVORITES",s,s],[1,189,"ZoomToggle",0,s,0,s,s,s],[1,190,"MailReply",0,s,0,s,s,s],[1,191,"MailForward",0,s,0,s,s,s],[1,192,"MailSend",0,s,0,s,s,s],[1,0,s,114,"KeyInComposition",229,s,s,s],[1,0,s,116,"ABNT_C2",194,"VK_ABNT_C2",s,s],[1,0,s,96,"OEM_8",223,"VK_OEM_8",s,s],[1,0,s,0,s,0,"VK_KANA",s,s],[1,0,s,0,s,0,"VK_HANGUL",s,s],[1,0,s,0,s,0,"VK_JUNJA",s,s],[1,0,s,0,s,0,"VK_FINAL",s,s],[1,0,s,0,s,0,"VK_HANJA",s,s],[1,0,s,0,s,0,"VK_KANJI",s,s],[1,0,s,0,s,0,"VK_CONVERT",s,s],[1,0,s,0,s,0,"VK_NONCONVERT",s,s],[1,0,s,0,s,0,"VK_ACCEPT",s,s],[1,0,s,0,s,0,"VK_MODECHANGE",s,s],[1,0,s,0,s,0,"VK_SELECT",s,s],[1,0,s,0,s,0,"VK_PRINT",s,s],[1,0,s,0,s,0,"VK_EXECUTE",s,s],[1,0,s,0,s,0,"VK_SNAPSHOT",s,s],[1,0,s,0,s,0,"VK_HELP",s,s],[1,0,s,0,s,0,"VK_APPS",s,s],[1,0,s,0,s,0,"VK_PROCESSKEY",s,s],[1,0,s,0,s,0,"VK_PACKET",s,s],[1,0,s,0,s,0,"VK_DBE_SBCSCHAR",s,s],[1,0,s,0,s,0,"VK_DBE_DBCSCHAR",s,s],[1,0,s,0,s,0,"VK_ATTN",s,s],[1,0,s,0,s,0,"VK_CRSEL",s,s],[1,0,s,0,s,0,"VK_EXSEL",s,s],[1,0,s,0,s,0,"VK_EREOF",s,s],[1,0,s,0,s,0,"VK_PLAY",s,s],[1,0,s,0,s,0,"VK_ZOOM",s,s],[1,0,s,0,s,0,"VK_NONAME",s,s],[1,0,s,0,s,0,"VK_PA1",s,s],[1,0,s,0,s,0,"VK_OEM_CLEAR",s,s]],t=[],i=[];for(const n of e){const[o,l,r,a,d,c,h,u,m]=n;if(i[l]||(i[l]=!0,LDe[r]=l,kDe[r.toLowerCase()]=l,o&&(R$[l]=a)),!t[a]){if(t[a]=!0,!d)throw new Error(`String representation missing for key code ${a} around scan code ${r}`);HI.define(a,d),Fj.define(a,u||d),Zj.define(a,m||u||d)}c&&(Dpe[c]=a)}})();var Eg;(function(s){function e(r){return HI.keyCodeToStr(r)}s.toString=e;function t(r){return HI.strToKeyCode(r)}s.fromString=t;function i(r){return Fj.keyCodeToStr(r)}s.toUserSettingsUS=i;function n(r){return Zj.keyCodeToStr(r)}s.toUserSettingsGeneral=n;function o(r){return Fj.strToKeyCode(r)||Zj.strToKeyCode(r)}s.fromUserSettings=o;function l(r){if(r>=98&&r<=113)return null;switch(r){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return HI.keyCodeToStr(r)}s.toElectronAccelerator=l})(Eg||(Eg={}));function Fo(s,e){const t=(e&65535)<<16>>>0;return(s|t)>>>0}let pW;const I9=globalThis.vscode;var Kue;if(typeof I9<"u"&&typeof I9.process<"u"){const s=I9.process;pW={get platform(){return s.platform},get arch(){return s.arch},get env(){return s.env},cwd(){return s.cwd()}}}else typeof process<"u"&&typeof((Kue=process==null?void 0:process.versions)==null?void 0:Kue.node)=="string"?pW={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:pW={get platform(){return Gl?"win32":Fi?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};const ME=pW.cwd,Aj=pW.env,IDe=pW.platform,DDe=65,GDe=97,EDe=90,vDe=122,LU=46,gr=47,kd=92,Y0=58,xDe=63;class Gpe extends Error{constructor(e,t,i){let n;typeof t=="string"&&t.indexOf("not ")===0?(n="must not be",t=t.replace(/^not /,"")):n="must be";const o=e.indexOf(".")!==-1?"property":"argument";let l=`The "${e}" ${o} ${n} of type ${t}`;l+=`. Received type ${typeof i}`,super(l),this.code="ERR_INVALID_ARG_TYPE"}}function JDe(s,e){if(s===null||typeof s!="object")throw new Gpe(e,"Object",s)}function el(s,e){if(typeof s!="string")throw new Gpe(e,"string",s)}const T0=IDe==="win32";function An(s){return s===gr||s===kd}function Nj(s){return s===gr}function z0(s){return s>=DDe&&s<=EDe||s>=GDe&&s<=vDe}function TE(s,e,t,i){let n="",o=0,l=-1,r=0,a=0;for(let d=0;d<=s.length;++d){if(d<s.length)a=s.charCodeAt(d);else{if(i(a))break;a=gr}if(i(a)){if(!(l===d-1||r===1))if(r===2){if(n.length<2||o!==2||n.charCodeAt(n.length-1)!==LU||n.charCodeAt(n.length-2)!==LU){if(n.length>2){const c=n.lastIndexOf(t);c===-1?(n="",o=0):(n=n.slice(0,c),o=n.length-1-n.lastIndexOf(t)),l=d,r=0;continue}else if(n.length!==0){n="",o=0,l=d,r=0;continue}}e&&(n+=n.length>0?`${t}..`:"..",o=2)}else n.length>0?n+=`${t}${s.slice(l+1,d)}`:n=s.slice(l+1,d),o=d-l-1;l=d,r=0}else a===LU&&r!==-1?++r:r=-1}return n}function XDe(s){return s?`${s[0]==="."?"":"."}${s}`:""}function Epe(s,e){JDe(e,"pathObject");const t=e.dir||e.root,i=e.base||`${e.name||""}${XDe(e.ext)}`;return t?t===e.root?`${t}${i}`:`${t}${s}${i}`:i}const Ia={resolve(...s){let e="",t="",i=!1;for(let n=s.length-1;n>=-1;n--){let o;if(n>=0){if(o=s[n],el(o,`paths[${n}]`),o.length===0)continue}else e.length===0?o=ME():(o=Aj[`=${e}`]||ME(),(o===void 0||o.slice(0,2).toLowerCase()!==e.toLowerCase()&&o.charCodeAt(2)===kd)&&(o=`${e}\\`));const l=o.length;let r=0,a="",d=!1;const c=o.charCodeAt(0);if(l===1)An(c)&&(r=1,d=!0);else if(An(c))if(d=!0,An(o.charCodeAt(1))){let h=2,u=h;for(;h<l&&!An(o.charCodeAt(h));)h++;if(h<l&&h!==u){const m=o.slice(u,h);for(u=h;h<l&&An(o.charCodeAt(h));)h++;if(h<l&&h!==u){for(u=h;h<l&&!An(o.charCodeAt(h));)h++;(h===l||h!==u)&&(a=`\\\\${m}\\${o.slice(u,h)}`,r=h)}}}else r=1;else z0(c)&&o.charCodeAt(1)===Y0&&(a=o.slice(0,2),r=2,l>2&&An(o.charCodeAt(2))&&(d=!0,r=3));if(a.length>0)if(e.length>0){if(a.toLowerCase()!==e.toLowerCase())continue}else e=a;if(i){if(e.length>0)break}else if(t=`${o.slice(r)}\\${t}`,i=d,d&&e.length>0)break}return t=TE(t,!i,"\\",An),i?`${e}\\${t}`:`${e}${t}`||"."},normalize(s){el(s,"path");const e=s.length;if(e===0)return".";let t=0,i,n=!1;const o=s.charCodeAt(0);if(e===1)return Nj(o)?"\\":s;if(An(o))if(n=!0,An(s.charCodeAt(1))){let r=2,a=r;for(;r<e&&!An(s.charCodeAt(r));)r++;if(r<e&&r!==a){const d=s.slice(a,r);for(a=r;r<e&&An(s.charCodeAt(r));)r++;if(r<e&&r!==a){for(a=r;r<e&&!An(s.charCodeAt(r));)r++;if(r===e)return`\\\\${d}\\${s.slice(a)}\\`;r!==a&&(i=`\\\\${d}\\${s.slice(a,r)}`,t=r)}}}else t=1;else z0(o)&&s.charCodeAt(1)===Y0&&(i=s.slice(0,2),t=2,e>2&&An(s.charCodeAt(2))&&(n=!0,t=3));let l=t<e?TE(s.slice(t),!n,"\\",An):"";return l.length===0&&!n&&(l="."),l.length>0&&An(s.charCodeAt(e-1))&&(l+="\\"),i===void 0?n?`\\${l}`:l:n?`${i}\\${l}`:`${i}${l}`},isAbsolute(s){el(s,"path");const e=s.length;if(e===0)return!1;const t=s.charCodeAt(0);return An(t)||e>2&&z0(t)&&s.charCodeAt(1)===Y0&&An(s.charCodeAt(2))},join(...s){if(s.length===0)return".";let e,t;for(let o=0;o<s.length;++o){const l=s[o];el(l,"path"),l.length>0&&(e===void 0?e=t=l:e+=`\\${l}`)}if(e===void 0)return".";let i=!0,n=0;if(typeof t=="string"&&An(t.charCodeAt(0))){++n;const o=t.length;o>1&&An(t.charCodeAt(1))&&(++n,o>2&&(An(t.charCodeAt(2))?++n:i=!1))}if(i){for(;n<e.length&&An(e.charCodeAt(n));)n++;n>=2&&(e=`\\${e.slice(n)}`)}return Ia.normalize(e)},relative(s,e){if(el(s,"from"),el(e,"to"),s===e)return"";const t=Ia.resolve(s),i=Ia.resolve(e);if(t===i||(s=t.toLowerCase(),e=i.toLowerCase(),s===e))return"";let n=0;for(;n<s.length&&s.charCodeAt(n)===kd;)n++;let o=s.length;for(;o-1>n&&s.charCodeAt(o-1)===kd;)o--;const l=o-n;let r=0;for(;r<e.length&&e.charCodeAt(r)===kd;)r++;let a=e.length;for(;a-1>r&&e.charCodeAt(a-1)===kd;)a--;const d=a-r,c=l<d?l:d;let h=-1,u=0;for(;u<c;u++){const p=s.charCodeAt(n+u);if(p!==e.charCodeAt(r+u))break;p===kd&&(h=u)}if(u!==c){if(h===-1)return i}else{if(d>c){if(e.charCodeAt(r+u)===kd)return i.slice(r+u+1);if(u===2)return i.slice(r+u)}l>c&&(s.charCodeAt(n+u)===kd?h=u:u===2&&(h=3)),h===-1&&(h=0)}let m="";for(u=n+h+1;u<=o;++u)(u===o||s.charCodeAt(u)===kd)&&(m+=m.length===0?"..":"\\..");return r+=h,m.length>0?`${m}${i.slice(r,a)}`:(i.charCodeAt(r)===kd&&++r,i.slice(r,a))},toNamespacedPath(s){if(typeof s!="string"||s.length===0)return s;const e=Ia.resolve(s);if(e.length<=2)return s;if(e.charCodeAt(0)===kd){if(e.charCodeAt(1)===kd){const t=e.charCodeAt(2);if(t!==xDe&&t!==LU)return`\\\\?\\UNC\\${e.slice(2)}`}}else if(z0(e.charCodeAt(0))&&e.charCodeAt(1)===Y0&&e.charCodeAt(2)===kd)return`\\\\?\\${e}`;return s},dirname(s){el(s,"path");const e=s.length;if(e===0)return".";let t=-1,i=0;const n=s.charCodeAt(0);if(e===1)return An(n)?s:".";if(An(n)){if(t=i=1,An(s.charCodeAt(1))){let r=2,a=r;for(;r<e&&!An(s.charCodeAt(r));)r++;if(r<e&&r!==a){for(a=r;r<e&&An(s.charCodeAt(r));)r++;if(r<e&&r!==a){for(a=r;r<e&&!An(s.charCodeAt(r));)r++;if(r===e)return s;r!==a&&(t=i=r+1)}}}}else z0(n)&&s.charCodeAt(1)===Y0&&(t=e>2&&An(s.charCodeAt(2))?3:2,i=t);let o=-1,l=!0;for(let r=e-1;r>=i;--r)if(An(s.charCodeAt(r))){if(!l){o=r;break}}else l=!1;if(o===-1){if(t===-1)return".";o=t}return s.slice(0,o)},basename(s,e){e!==void 0&&el(e,"suffix"),el(s,"path");let t=0,i=-1,n=!0,o;if(s.length>=2&&z0(s.charCodeAt(0))&&s.charCodeAt(1)===Y0&&(t=2),e!==void 0&&e.length>0&&e.length<=s.length){if(e===s)return"";let l=e.length-1,r=-1;for(o=s.length-1;o>=t;--o){const a=s.charCodeAt(o);if(An(a)){if(!n){t=o+1;break}}else r===-1&&(n=!1,r=o+1),l>=0&&(a===e.charCodeAt(l)?--l===-1&&(i=o):(l=-1,i=r))}return t===i?i=r:i===-1&&(i=s.length),s.slice(t,i)}for(o=s.length-1;o>=t;--o)if(An(s.charCodeAt(o))){if(!n){t=o+1;break}}else i===-1&&(n=!1,i=o+1);return i===-1?"":s.slice(t,i)},extname(s){el(s,"path");let e=0,t=-1,i=0,n=-1,o=!0,l=0;s.length>=2&&s.charCodeAt(1)===Y0&&z0(s.charCodeAt(0))&&(e=i=2);for(let r=s.length-1;r>=e;--r){const a=s.charCodeAt(r);if(An(a)){if(!o){i=r+1;break}continue}n===-1&&(o=!1,n=r+1),a===LU?t===-1?t=r:l!==1&&(l=1):t!==-1&&(l=-1)}return t===-1||n===-1||l===0||l===1&&t===n-1&&t===i+1?"":s.slice(t,n)},format:Epe.bind(null,"\\"),parse(s){el(s,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;const t=s.length;let i=0,n=s.charCodeAt(0);if(t===1)return An(n)?(e.root=e.dir=s,e):(e.base=e.name=s,e);if(An(n)){if(i=1,An(s.charCodeAt(1))){let h=2,u=h;for(;h<t&&!An(s.charCodeAt(h));)h++;if(h<t&&h!==u){for(u=h;h<t&&An(s.charCodeAt(h));)h++;if(h<t&&h!==u){for(u=h;h<t&&!An(s.charCodeAt(h));)h++;h===t?i=h:h!==u&&(i=h+1)}}}}else if(z0(n)&&s.charCodeAt(1)===Y0){if(t<=2)return e.root=e.dir=s,e;if(i=2,An(s.charCodeAt(2))){if(t===3)return e.root=e.dir=s,e;i=3}}i>0&&(e.root=s.slice(0,i));let o=-1,l=i,r=-1,a=!0,d=s.length-1,c=0;for(;d>=i;--d){if(n=s.charCodeAt(d),An(n)){if(!a){l=d+1;break}continue}r===-1&&(a=!1,r=d+1),n===LU?o===-1?o=d:c!==1&&(c=1):o!==-1&&(c=-1)}return r!==-1&&(o===-1||c===0||c===1&&o===r-1&&o===l+1?e.base=e.name=s.slice(l,r):(e.name=s.slice(l,o),e.base=s.slice(l,r),e.ext=s.slice(o,r))),l>0&&l!==i?e.dir=s.slice(0,l-1):e.dir=e.root,e},sep:"\\",delimiter:";",win32:null,posix:null},YDe=(()=>{if(T0){const s=/\\/g;return()=>{const e=ME().replace(s,"/");return e.slice(e.indexOf("/"))}}return()=>ME()})(),co={resolve(...s){let e="",t=!1;for(let i=s.length-1;i>=-1&&!t;i--){const n=i>=0?s[i]:YDe();el(n,`paths[${i}]`),n.length!==0&&(e=`${n}/${e}`,t=n.charCodeAt(0)===gr)}return e=TE(e,!t,"/",Nj),t?`/${e}`:e.length>0?e:"."},normalize(s){if(el(s,"path"),s.length===0)return".";const e=s.charCodeAt(0)===gr,t=s.charCodeAt(s.length-1)===gr;return s=TE(s,!e,"/",Nj),s.length===0?e?"/":t?"./":".":(t&&(s+="/"),e?`/${s}`:s)},isAbsolute(s){return el(s,"path"),s.length>0&&s.charCodeAt(0)===gr},join(...s){if(s.length===0)return".";let e;for(let t=0;t<s.length;++t){const i=s[t];el(i,"path"),i.length>0&&(e===void 0?e=i:e+=`/${i}`)}return e===void 0?".":co.normalize(e)},relative(s,e){if(el(s,"from"),el(e,"to"),s===e||(s=co.resolve(s),e=co.resolve(e),s===e))return"";const t=1,i=s.length,n=i-t,o=1,l=e.length-o,r=n<l?n:l;let a=-1,d=0;for(;d<r;d++){const h=s.charCodeAt(t+d);if(h!==e.charCodeAt(o+d))break;h===gr&&(a=d)}if(d===r)if(l>r){if(e.charCodeAt(o+d)===gr)return e.slice(o+d+1);if(d===0)return e.slice(o+d)}else n>r&&(s.charCodeAt(t+d)===gr?a=d:d===0&&(a=0));let c="";for(d=t+a+1;d<=i;++d)(d===i||s.charCodeAt(d)===gr)&&(c+=c.length===0?"..":"/..");return`${c}${e.slice(o+a)}`},toNamespacedPath(s){return s},dirname(s){if(el(s,"path"),s.length===0)return".";const e=s.charCodeAt(0)===gr;let t=-1,i=!0;for(let n=s.length-1;n>=1;--n)if(s.charCodeAt(n)===gr){if(!i){t=n;break}}else i=!1;return t===-1?e?"/":".":e&&t===1?"//":s.slice(0,t)},basename(s,e){e!==void 0&&el(e,"ext"),el(s,"path");let t=0,i=-1,n=!0,o;if(e!==void 0&&e.length>0&&e.length<=s.length){if(e===s)return"";let l=e.length-1,r=-1;for(o=s.length-1;o>=0;--o){const a=s.charCodeAt(o);if(a===gr){if(!n){t=o+1;break}}else r===-1&&(n=!1,r=o+1),l>=0&&(a===e.charCodeAt(l)?--l===-1&&(i=o):(l=-1,i=r))}return t===i?i=r:i===-1&&(i=s.length),s.slice(t,i)}for(o=s.length-1;o>=0;--o)if(s.charCodeAt(o)===gr){if(!n){t=o+1;break}}else i===-1&&(n=!1,i=o+1);return i===-1?"":s.slice(t,i)},extname(s){el(s,"path");let e=-1,t=0,i=-1,n=!0,o=0;for(let l=s.length-1;l>=0;--l){const r=s.charCodeAt(l);if(r===gr){if(!n){t=l+1;break}continue}i===-1&&(n=!1,i=l+1),r===LU?e===-1?e=l:o!==1&&(o=1):e!==-1&&(o=-1)}return e===-1||i===-1||o===0||o===1&&e===i-1&&e===t+1?"":s.slice(e,i)},format:Epe.bind(null,"/"),parse(s){el(s,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;const t=s.charCodeAt(0)===gr;let i;t?(e.root="/",i=1):i=0;let n=-1,o=0,l=-1,r=!0,a=s.length-1,d=0;for(;a>=i;--a){const c=s.charCodeAt(a);if(c===gr){if(!r){o=a+1;break}continue}l===-1&&(r=!1,l=a+1),c===LU?n===-1?n=a:d!==1&&(d=1):n!==-1&&(d=-1)}if(l!==-1){const c=o===0&&t?1:o;n===-1||d===0||d===1&&n===l-1&&n===o+1?e.base=e.name=s.slice(c,l):(e.name=s.slice(c,n),e.base=s.slice(c,l),e.ext=s.slice(n,l))}return o>0?e.dir=s.slice(0,o-1):t&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};co.win32=Ia.win32=Ia;co.posix=Ia.posix=co;const vpe=T0?Ia.normalize:co.normalize,zDe=T0?Ia.join:co.join,_De=T0?Ia.resolve:co.resolve,ODe=T0?Ia.relative:co.relative,xpe=T0?Ia.dirname:co.dirname,kU=T0?Ia.basename:co.basename,jDe=T0?Ia.extname:co.extname,xu=T0?Ia.sep:co.sep,HDe=/^\w[\w\d+.-]*$/,PDe=/^\//,KDe=/^\/\//;function qDe(s,e){if(!s.scheme&&e)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${s.authority}", path: "${s.path}", query: "${s.query}", fragment: "${s.fragment}"}`);if(s.scheme&&!HDe.test(s.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(s.path){if(s.authority){if(!PDe.test(s.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(KDe.test(s.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function $De(s,e){return!s&&!e?"file":s}function eGe(s,e){switch(s){case"https":case"http":case"file":e?e[0]!==Lu&&(e=Lu+e):e=Lu;break}return e}const lo="",Lu="/",tGe=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class At{static isUri(e){return e instanceof At?!0:e?typeof e.authority=="string"&&typeof e.fragment=="string"&&typeof e.path=="string"&&typeof e.query=="string"&&typeof e.scheme=="string"&&typeof e.fsPath=="string"&&typeof e.with=="function"&&typeof e.toString=="function":!1}constructor(e,t,i,n,o,l=!1){typeof e=="object"?(this.scheme=e.scheme||lo,this.authority=e.authority||lo,this.path=e.path||lo,this.query=e.query||lo,this.fragment=e.fragment||lo):(this.scheme=$De(e,l),this.authority=t||lo,this.path=eGe(this.scheme,i||lo),this.query=n||lo,this.fragment=o||lo,qDe(this,l))}get fsPath(){return BE(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:n,query:o,fragment:l}=e;return t===void 0?t=this.scheme:t===null&&(t=lo),i===void 0?i=this.authority:i===null&&(i=lo),n===void 0?n=this.path:n===null&&(n=lo),o===void 0?o=this.query:o===null&&(o=lo),l===void 0?l=this.fragment:l===null&&(l=lo),t===this.scheme&&i===this.authority&&n===this.path&&o===this.query&&l===this.fragment?this:new WN(t,i,n,o,l)}static parse(e,t=!1){const i=tGe.exec(e);return i?new WN(i[2]||lo,TL(i[4]||lo),TL(i[5]||lo),TL(i[7]||lo),TL(i[9]||lo),t):new WN(lo,lo,lo,lo,lo)}static file(e){let t=lo;if(Gl&&(e=e.replace(/\\/g,Lu)),e[0]===Lu&&e[1]===Lu){const i=e.indexOf(Lu,2);i===-1?(t=e.substring(2),e=Lu):(t=e.substring(2,i),e=e.substring(i)||Lu)}return new WN("file",t,e,lo,lo)}static from(e,t){return new WN(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let i;return Gl&&e.scheme==="file"?i=At.file(Ia.join(BE(e,!0),...t)).path:i=co.join(e.path,...t),e.with({path:i})}toString(e=!1){return Rj(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof At)return e;{const t=new WN(e);return t._formatted=e.external??null,t._fsPath=e._sep===Jpe?e.fsPath??null:null,t}}else return e}}const Jpe=Gl?1:void 0;let WN=class extends At{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=BE(this,!1)),this._fsPath}toString(e=!1){return e?Rj(this,!0):(this._formatted||(this._formatted=Rj(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Jpe),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}};const Xpe={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function Ese(s,e,t){let i,n=-1;for(let o=0;o<s.length;o++){const l=s.charCodeAt(o);if(l>=97&&l<=122||l>=65&&l<=90||l>=48&&l<=57||l===45||l===46||l===95||l===126||e&&l===47||t&&l===91||t&&l===93||t&&l===58)n!==-1&&(i+=encodeURIComponent(s.substring(n,o)),n=-1),i!==void 0&&(i+=s.charAt(o));else{i===void 0&&(i=s.substr(0,o));const r=Xpe[l];r!==void 0?(n!==-1&&(i+=encodeURIComponent(s.substring(n,o)),n=-1),i+=r):n===-1&&(n=o)}}return n!==-1&&(i+=encodeURIComponent(s.substring(n))),i!==void 0?i:s}function iGe(s){let e;for(let t=0;t<s.length;t++){const i=s.charCodeAt(t);i===35||i===63?(e===void 0&&(e=s.substr(0,t)),e+=Xpe[i]):e!==void 0&&(e+=s[t])}return e!==void 0?e:s}function BE(s,e){let t;return s.authority&&s.path.length>1&&s.scheme==="file"?t=`//${s.authority}${s.path}`:s.path.charCodeAt(0)===47&&(s.path.charCodeAt(1)>=65&&s.path.charCodeAt(1)<=90||s.path.charCodeAt(1)>=97&&s.path.charCodeAt(1)<=122)&&s.path.charCodeAt(2)===58?e?t=s.path.substr(1):t=s.path[1].toLowerCase()+s.path.substr(2):t=s.path,Gl&&(t=t.replace(/\//g,"\\")),t}function Rj(s,e){const t=e?iGe:Ese;let i="",{scheme:n,authority:o,path:l,query:r,fragment:a}=s;if(n&&(i+=n,i+=":"),(o||n==="file")&&(i+=Lu,i+=Lu),o){let d=o.indexOf("@");if(d!==-1){const c=o.substr(0,d);o=o.substr(d+1),d=c.lastIndexOf(":"),d===-1?i+=t(c,!1,!1):(i+=t(c.substr(0,d),!1,!1),i+=":",i+=t(c.substr(d+1),!1,!0)),i+="@"}o=o.toLowerCase(),d=o.lastIndexOf(":"),d===-1?i+=t(o,!1,!0):(i+=t(o.substr(0,d),!1,!0),i+=o.substr(d))}if(l){if(l.length>=3&&l.charCodeAt(0)===47&&l.charCodeAt(2)===58){const d=l.charCodeAt(1);d>=65&&d<=90&&(l=`/${String.fromCharCode(d+32)}:${l.substr(3)}`)}else if(l.length>=2&&l.charCodeAt(1)===58){const d=l.charCodeAt(0);d>=65&&d<=90&&(l=`${String.fromCharCode(d+32)}:${l.substr(2)}`)}i+=t(l,!0,!1)}return r&&(i+="?",i+=t(r,!1,!1)),a&&(i+="#",i+=e?a:Ese(a,!1,!1)),i}function Ype(s){try{return decodeURIComponent(s)}catch{return s.length>3?s.substr(0,3)+Ype(s.substr(3)):s}}const vse=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function TL(s){return s.match(vse)?s.replace(vse,e=>Ype(e)):s}let oe=class mF{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new mF(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return mF.equals(this,e)}static equals(e,t){return!e&&!t?!0:!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return mF.isBefore(this,e)}static isBefore(e,t){return e.lineNumber<t.lineNumber?!0:t.lineNumber<e.lineNumber?!1:e.column<t.column}isBeforeOrEqual(e){return mF.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,t){return e.lineNumber<t.lineNumber?!0:t.lineNumber<e.lineNumber?!1:e.column<=t.column}static compare(e,t){const i=e.lineNumber|0,n=t.lineNumber|0;if(i===n){const o=e.column|0,l=t.column|0;return o-l}return i-n}clone(){return new mF(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new mF(e.lineNumber,e.column)}static isIPosition(e){return e&&typeof e.lineNumber=="number"&&typeof e.column=="number"}toJSON(){return{lineNumber:this.lineNumber,column:this.column}}},v=class cl{constructor(e,t,i,n){e>i||e===i&&t>n?(this.startLineNumber=i,this.startColumn=n,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=n)}isEmpty(){return cl.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return cl.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<e.startColumn||t.lineNumber===e.endLineNumber&&t.column>e.endColumn)}static strictContainsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<=e.startColumn||t.lineNumber===e.endLineNumber&&t.column>=e.endColumn)}containsRange(e){return cl.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)}strictContainsRange(e){return cl.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)}plusRange(e){return cl.plusRange(this,e)}static plusRange(e,t){let i,n,o,l;return t.startLineNumber<e.startLineNumber?(i=t.startLineNumber,n=t.startColumn):t.startLineNumber===e.startLineNumber?(i=t.startLineNumber,n=Math.min(t.startColumn,e.startColumn)):(i=e.startLineNumber,n=e.startColumn),t.endLineNumber>e.endLineNumber?(o=t.endLineNumber,l=t.endColumn):t.endLineNumber===e.endLineNumber?(o=t.endLineNumber,l=Math.max(t.endColumn,e.endColumn)):(o=e.endLineNumber,l=e.endColumn),new cl(i,n,o,l)}intersectRanges(e){return cl.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,l=e.endColumn;const r=t.startLineNumber,a=t.startColumn,d=t.endLineNumber,c=t.endColumn;return i<r?(i=r,n=a):i===r&&(n=Math.max(n,a)),o>d?(o=d,l=c):o===d&&(l=Math.min(l,c)),i>o||i===o&&n>l?null:new cl(i,n,o,l)}equalsRange(e){return cl.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t?!0:!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return cl.getEndPosition(this)}static getEndPosition(e){return new oe(e.endLineNumber,e.endColumn)}getStartPosition(){return cl.getStartPosition(this)}static getStartPosition(e){return new oe(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new cl(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new cl(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return cl.collapseToStart(this)}static collapseToStart(e){return new cl(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return cl.collapseToEnd(this)}static collapseToEnd(e){return new cl(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new cl(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e,t=e){return new cl(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new cl(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&typeof e.startLineNumber=="number"&&typeof e.startColumn=="number"&&typeof e.endLineNumber=="number"&&typeof e.endColumn=="number"}static areIntersectingOrTouching(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}static areIntersecting(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,t){if(e&&t){const o=e.startLineNumber|0,l=t.startLineNumber|0;if(o===l){const r=e.startColumn|0,a=t.startColumn|0;if(r===a){const d=e.endLineNumber|0,c=t.endLineNumber|0;if(d===c){const h=e.endColumn|0,u=t.endColumn|0;return h-u}return d-c}return r-a}return o-l}return(e?1:0)-(t?1:0)}static compareRangesUsingEnds(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}toJSON(){return this}},dt=class uh extends v{constructor(e,t,i,n){super(e,t,i,n),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=n}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return uh.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return this.getDirection()===0?new uh(this.startLineNumber,this.startColumn,e,t):new uh(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new oe(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new oe(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return this.getDirection()===0?new uh(e,t,this.endLineNumber,this.endColumn):new uh(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new uh(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return t===0?new uh(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new uh(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new uh(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;i++)if(!this.selectionsEqual(e[i],t[i]))return!1;return!0}static isISelection(e){return e&&typeof e.selectionStartLineNumber=="number"&&typeof e.selectionStartColumn=="number"&&typeof e.positionLineNumber=="number"&&typeof e.positionColumn=="number"}static createWithDirection(e,t,i,n,o){return o===0?new uh(e,t,i,n):new uh(i,n,e,t)}};const Sj=Object.create(null);function k(s,e){if(Da(e)){const t=Sj[e];if(t===void 0)throw new Error(`${s} references an unknown codicon: ${e}`);e=t}return Sj[s]=e,{id:s}}function zpe(){return Sj}const nGe={add:k("add",6e4),plus:k("plus",6e4),gistNew:k("gist-new",6e4),repoCreate:k("repo-create",6e4),lightbulb:k("lightbulb",60001),lightBulb:k("light-bulb",60001),repo:k("repo",60002),repoDelete:k("repo-delete",60002),gistFork:k("gist-fork",60003),repoForked:k("repo-forked",60003),gitPullRequest:k("git-pull-request",60004),gitPullRequestAbandoned:k("git-pull-request-abandoned",60004),recordKeys:k("record-keys",60005),keyboard:k("keyboard",60005),tag:k("tag",60006),gitPullRequestLabel:k("git-pull-request-label",60006),tagAdd:k("tag-add",60006),tagRemove:k("tag-remove",60006),person:k("person",60007),personFollow:k("person-follow",60007),personOutline:k("person-outline",60007),personFilled:k("person-filled",60007),gitBranch:k("git-branch",60008),gitBranchCreate:k("git-branch-create",60008),gitBranchDelete:k("git-branch-delete",60008),sourceControl:k("source-control",60008),mirror:k("mirror",60009),mirrorPublic:k("mirror-public",60009),star:k("star",60010),starAdd:k("star-add",60010),starDelete:k("star-delete",60010),starEmpty:k("star-empty",60010),comment:k("comment",60011),commentAdd:k("comment-add",60011),alert:k("alert",60012),warning:k("warning",60012),search:k("search",60013),searchSave:k("search-save",60013),logOut:k("log-out",60014),signOut:k("sign-out",60014),logIn:k("log-in",60015),signIn:k("sign-in",60015),eye:k("eye",60016),eyeUnwatch:k("eye-unwatch",60016),eyeWatch:k("eye-watch",60016),circleFilled:k("circle-filled",60017),primitiveDot:k("primitive-dot",60017),closeDirty:k("close-dirty",60017),debugBreakpoint:k("debug-breakpoint",60017),debugBreakpointDisabled:k("debug-breakpoint-disabled",60017),debugHint:k("debug-hint",60017),terminalDecorationSuccess:k("terminal-decoration-success",60017),primitiveSquare:k("primitive-square",60018),edit:k("edit",60019),pencil:k("pencil",60019),info:k("info",60020),issueOpened:k("issue-opened",60020),gistPrivate:k("gist-private",60021),gitForkPrivate:k("git-fork-private",60021),lock:k("lock",60021),mirrorPrivate:k("mirror-private",60021),close:k("close",60022),removeClose:k("remove-close",60022),x:k("x",60022),repoSync:k("repo-sync",60023),sync:k("sync",60023),clone:k("clone",60024),desktopDownload:k("desktop-download",60024),beaker:k("beaker",60025),microscope:k("microscope",60025),vm:k("vm",60026),deviceDesktop:k("device-desktop",60026),file:k("file",60027),fileText:k("file-text",60027),more:k("more",60028),ellipsis:k("ellipsis",60028),kebabHorizontal:k("kebab-horizontal",60028),mailReply:k("mail-reply",60029),reply:k("reply",60029),organization:k("organization",60030),organizationFilled:k("organization-filled",60030),organizationOutline:k("organization-outline",60030),newFile:k("new-file",60031),fileAdd:k("file-add",60031),newFolder:k("new-folder",60032),fileDirectoryCreate:k("file-directory-create",60032),trash:k("trash",60033),trashcan:k("trashcan",60033),history:k("history",60034),clock:k("clock",60034),folder:k("folder",60035),fileDirectory:k("file-directory",60035),symbolFolder:k("symbol-folder",60035),logoGithub:k("logo-github",60036),markGithub:k("mark-github",60036),github:k("github",60036),terminal:k("terminal",60037),console:k("console",60037),repl:k("repl",60037),zap:k("zap",60038),symbolEvent:k("symbol-event",60038),error:k("error",60039),stop:k("stop",60039),variable:k("variable",60040),symbolVariable:k("symbol-variable",60040),array:k("array",60042),symbolArray:k("symbol-array",60042),symbolModule:k("symbol-module",60043),symbolPackage:k("symbol-package",60043),symbolNamespace:k("symbol-namespace",60043),symbolObject:k("symbol-object",60043),symbolMethod:k("symbol-method",60044),symbolFunction:k("symbol-function",60044),symbolConstructor:k("symbol-constructor",60044),symbolBoolean:k("symbol-boolean",60047),symbolNull:k("symbol-null",60047),symbolNumeric:k("symbol-numeric",60048),symbolNumber:k("symbol-number",60048),symbolStructure:k("symbol-structure",60049),symbolStruct:k("symbol-struct",60049),symbolParameter:k("symbol-parameter",60050),symbolTypeParameter:k("symbol-type-parameter",60050),symbolKey:k("symbol-key",60051),symbolText:k("symbol-text",60051),symbolReference:k("symbol-reference",60052),goToFile:k("go-to-file",60052),symbolEnum:k("symbol-enum",60053),symbolValue:k("symbol-value",60053),symbolRuler:k("symbol-ruler",60054),symbolUnit:k("symbol-unit",60054),activateBreakpoints:k("activate-breakpoints",60055),archive:k("archive",60056),arrowBoth:k("arrow-both",60057),arrowDown:k("arrow-down",60058),arrowLeft:k("arrow-left",60059),arrowRight:k("arrow-right",60060),arrowSmallDown:k("arrow-small-down",60061),arrowSmallLeft:k("arrow-small-left",60062),arrowSmallRight:k("arrow-small-right",60063),arrowSmallUp:k("arrow-small-up",60064),arrowUp:k("arrow-up",60065),bell:k("bell",60066),bold:k("bold",60067),book:k("book",60068),bookmark:k("bookmark",60069),debugBreakpointConditionalUnverified:k("debug-breakpoint-conditional-unverified",60070),debugBreakpointConditional:k("debug-breakpoint-conditional",60071),debugBreakpointConditionalDisabled:k("debug-breakpoint-conditional-disabled",60071),debugBreakpointDataUnverified:k("debug-breakpoint-data-unverified",60072),debugBreakpointData:k("debug-breakpoint-data",60073),debugBreakpointDataDisabled:k("debug-breakpoint-data-disabled",60073),debugBreakpointLogUnverified:k("debug-breakpoint-log-unverified",60074),debugBreakpointLog:k("debug-breakpoint-log",60075),debugBreakpointLogDisabled:k("debug-breakpoint-log-disabled",60075),briefcase:k("briefcase",60076),broadcast:k("broadcast",60077),browser:k("browser",60078),bug:k("bug",60079),calendar:k("calendar",60080),caseSensitive:k("case-sensitive",60081),check:k("check",60082),checklist:k("checklist",60083),chevronDown:k("chevron-down",60084),chevronLeft:k("chevron-left",60085),chevronRight:k("chevron-right",60086),chevronUp:k("chevron-up",60087),chromeClose:k("chrome-close",60088),chromeMaximize:k("chrome-maximize",60089),chromeMinimize:k("chrome-minimize",60090),chromeRestore:k("chrome-restore",60091),circleOutline:k("circle-outline",60092),circle:k("circle",60092),debugBreakpointUnverified:k("debug-breakpoint-unverified",60092),terminalDecorationIncomplete:k("terminal-decoration-incomplete",60092),circleSlash:k("circle-slash",60093),circuitBoard:k("circuit-board",60094),clearAll:k("clear-all",60095),clippy:k("clippy",60096),closeAll:k("close-all",60097),cloudDownload:k("cloud-download",60098),cloudUpload:k("cloud-upload",60099),code:k("code",60100),collapseAll:k("collapse-all",60101),colorMode:k("color-mode",60102),commentDiscussion:k("comment-discussion",60103),creditCard:k("credit-card",60105),dash:k("dash",60108),dashboard:k("dashboard",60109),database:k("database",60110),debugContinue:k("debug-continue",60111),debugDisconnect:k("debug-disconnect",60112),debugPause:k("debug-pause",60113),debugRestart:k("debug-restart",60114),debugStart:k("debug-start",60115),debugStepInto:k("debug-step-into",60116),debugStepOut:k("debug-step-out",60117),debugStepOver:k("debug-step-over",60118),debugStop:k("debug-stop",60119),debug:k("debug",60120),deviceCameraVideo:k("device-camera-video",60121),deviceCamera:k("device-camera",60122),deviceMobile:k("device-mobile",60123),diffAdded:k("diff-added",60124),diffIgnored:k("diff-ignored",60125),diffModified:k("diff-modified",60126),diffRemoved:k("diff-removed",60127),diffRenamed:k("diff-renamed",60128),diff:k("diff",60129),diffSidebyside:k("diff-sidebyside",60129),discard:k("discard",60130),editorLayout:k("editor-layout",60131),emptyWindow:k("empty-window",60132),exclude:k("exclude",60133),extensions:k("extensions",60134),eyeClosed:k("eye-closed",60135),fileBinary:k("file-binary",60136),fileCode:k("file-code",60137),fileMedia:k("file-media",60138),filePdf:k("file-pdf",60139),fileSubmodule:k("file-submodule",60140),fileSymlinkDirectory:k("file-symlink-directory",60141),fileSymlinkFile:k("file-symlink-file",60142),fileZip:k("file-zip",60143),files:k("files",60144),filter:k("filter",60145),flame:k("flame",60146),foldDown:k("fold-down",60147),foldUp:k("fold-up",60148),fold:k("fold",60149),folderActive:k("folder-active",60150),folderOpened:k("folder-opened",60151),gear:k("gear",60152),gift:k("gift",60153),gistSecret:k("gist-secret",60154),gist:k("gist",60155),gitCommit:k("git-commit",60156),gitCompare:k("git-compare",60157),compareChanges:k("compare-changes",60157),gitMerge:k("git-merge",60158),githubAction:k("github-action",60159),githubAlt:k("github-alt",60160),globe:k("globe",60161),grabber:k("grabber",60162),graph:k("graph",60163),gripper:k("gripper",60164),heart:k("heart",60165),home:k("home",60166),horizontalRule:k("horizontal-rule",60167),hubot:k("hubot",60168),inbox:k("inbox",60169),issueReopened:k("issue-reopened",60171),issues:k("issues",60172),italic:k("italic",60173),jersey:k("jersey",60174),json:k("json",60175),kebabVertical:k("kebab-vertical",60176),key:k("key",60177),law:k("law",60178),lightbulbAutofix:k("lightbulb-autofix",60179),linkExternal:k("link-external",60180),link:k("link",60181),listOrdered:k("list-ordered",60182),listUnordered:k("list-unordered",60183),liveShare:k("live-share",60184),loading:k("loading",60185),location:k("location",60186),mailRead:k("mail-read",60187),mail:k("mail",60188),markdown:k("markdown",60189),megaphone:k("megaphone",60190),mention:k("mention",60191),milestone:k("milestone",60192),gitPullRequestMilestone:k("git-pull-request-milestone",60192),mortarBoard:k("mortar-board",60193),move:k("move",60194),multipleWindows:k("multiple-windows",60195),mute:k("mute",60196),noNewline:k("no-newline",60197),note:k("note",60198),octoface:k("octoface",60199),openPreview:k("open-preview",60200),package:k("package",60201),paintcan:k("paintcan",60202),pin:k("pin",60203),play:k("play",60204),run:k("run",60204),plug:k("plug",60205),preserveCase:k("preserve-case",60206),preview:k("preview",60207),project:k("project",60208),pulse:k("pulse",60209),question:k("question",60210),quote:k("quote",60211),radioTower:k("radio-tower",60212),reactions:k("reactions",60213),references:k("references",60214),refresh:k("refresh",60215),regex:k("regex",60216),remoteExplorer:k("remote-explorer",60217),remote:k("remote",60218),remove:k("remove",60219),replaceAll:k("replace-all",60220),replace:k("replace",60221),repoClone:k("repo-clone",60222),repoForcePush:k("repo-force-push",60223),repoPull:k("repo-pull",60224),repoPush:k("repo-push",60225),report:k("report",60226),requestChanges:k("request-changes",60227),rocket:k("rocket",60228),rootFolderOpened:k("root-folder-opened",60229),rootFolder:k("root-folder",60230),rss:k("rss",60231),ruby:k("ruby",60232),saveAll:k("save-all",60233),saveAs:k("save-as",60234),save:k("save",60235),screenFull:k("screen-full",60236),screenNormal:k("screen-normal",60237),searchStop:k("search-stop",60238),server:k("server",60240),settingsGear:k("settings-gear",60241),settings:k("settings",60242),shield:k("shield",60243),smiley:k("smiley",60244),sortPrecedence:k("sort-precedence",60245),splitHorizontal:k("split-horizontal",60246),splitVertical:k("split-vertical",60247),squirrel:k("squirrel",60248),starFull:k("star-full",60249),starHalf:k("star-half",60250),symbolClass:k("symbol-class",60251),symbolColor:k("symbol-color",60252),symbolConstant:k("symbol-constant",60253),symbolEnumMember:k("symbol-enum-member",60254),symbolField:k("symbol-field",60255),symbolFile:k("symbol-file",60256),symbolInterface:k("symbol-interface",60257),symbolKeyword:k("symbol-keyword",60258),symbolMisc:k("symbol-misc",60259),symbolOperator:k("symbol-operator",60260),symbolProperty:k("symbol-property",60261),wrench:k("wrench",60261),wrenchSubaction:k("wrench-subaction",60261),symbolSnippet:k("symbol-snippet",60262),tasklist:k("tasklist",60263),telescope:k("telescope",60264),textSize:k("text-size",60265),threeBars:k("three-bars",60266),thumbsdown:k("thumbsdown",60267),thumbsup:k("thumbsup",60268),tools:k("tools",60269),triangleDown:k("triangle-down",60270),triangleLeft:k("triangle-left",60271),triangleRight:k("triangle-right",60272),triangleUp:k("triangle-up",60273),twitter:k("twitter",60274),unfold:k("unfold",60275),unlock:k("unlock",60276),unmute:k("unmute",60277),unverified:k("unverified",60278),verified:k("verified",60279),versions:k("versions",60280),vmActive:k("vm-active",60281),vmOutline:k("vm-outline",60282),vmRunning:k("vm-running",60283),watch:k("watch",60284),whitespace:k("whitespace",60285),wholeWord:k("whole-word",60286),window:k("window",60287),wordWrap:k("word-wrap",60288),zoomIn:k("zoom-in",60289),zoomOut:k("zoom-out",60290),listFilter:k("list-filter",60291),listFlat:k("list-flat",60292),listSelection:k("list-selection",60293),selection:k("selection",60293),listTree:k("list-tree",60294),debugBreakpointFunctionUnverified:k("debug-breakpoint-function-unverified",60295),debugBreakpointFunction:k("debug-breakpoint-function",60296),debugBreakpointFunctionDisabled:k("debug-breakpoint-function-disabled",60296),debugStackframeActive:k("debug-stackframe-active",60297),circleSmallFilled:k("circle-small-filled",60298),debugStackframeDot:k("debug-stackframe-dot",60298),terminalDecorationMark:k("terminal-decoration-mark",60298),debugStackframe:k("debug-stackframe",60299),debugStackframeFocused:k("debug-stackframe-focused",60299),debugBreakpointUnsupported:k("debug-breakpoint-unsupported",60300),symbolString:k("symbol-string",60301),debugReverseContinue:k("debug-reverse-continue",60302),debugStepBack:k("debug-step-back",60303),debugRestartFrame:k("debug-restart-frame",60304),debugAlt:k("debug-alt",60305),callIncoming:k("call-incoming",60306),callOutgoing:k("call-outgoing",60307),menu:k("menu",60308),expandAll:k("expand-all",60309),feedback:k("feedback",60310),gitPullRequestReviewer:k("git-pull-request-reviewer",60310),groupByRefType:k("group-by-ref-type",60311),ungroupByRefType:k("ungroup-by-ref-type",60312),account:k("account",60313),gitPullRequestAssignee:k("git-pull-request-assignee",60313),bellDot:k("bell-dot",60314),debugConsole:k("debug-console",60315),library:k("library",60316),output:k("output",60317),runAll:k("run-all",60318),syncIgnored:k("sync-ignored",60319),pinned:k("pinned",60320),githubInverted:k("github-inverted",60321),serverProcess:k("server-process",60322),serverEnvironment:k("server-environment",60323),pass:k("pass",60324),issueClosed:k("issue-closed",60324),stopCircle:k("stop-circle",60325),playCircle:k("play-circle",60326),record:k("record",60327),debugAltSmall:k("debug-alt-small",60328),vmConnect:k("vm-connect",60329),cloud:k("cloud",60330),merge:k("merge",60331),export:k("export",60332),graphLeft:k("graph-left",60333),magnet:k("magnet",60334),notebook:k("notebook",60335),redo:k("redo",60336),checkAll:k("check-all",60337),pinnedDirty:k("pinned-dirty",60338),passFilled:k("pass-filled",60339),circleLargeFilled:k("circle-large-filled",60340),circleLarge:k("circle-large",60341),circleLargeOutline:k("circle-large-outline",60341),combine:k("combine",60342),gather:k("gather",60342),table:k("table",60343),variableGroup:k("variable-group",60344),typeHierarchy:k("type-hierarchy",60345),typeHierarchySub:k("type-hierarchy-sub",60346),typeHierarchySuper:k("type-hierarchy-super",60347),gitPullRequestCreate:k("git-pull-request-create",60348),runAbove:k("run-above",60349),runBelow:k("run-below",60350),notebookTemplate:k("notebook-template",60351),debugRerun:k("debug-rerun",60352),workspaceTrusted:k("workspace-trusted",60353),workspaceUntrusted:k("workspace-untrusted",60354),workspaceUnknown:k("workspace-unknown",60355),terminalCmd:k("terminal-cmd",60356),terminalDebian:k("terminal-debian",60357),terminalLinux:k("terminal-linux",60358),terminalPowershell:k("terminal-powershell",60359),terminalTmux:k("terminal-tmux",60360),terminalUbuntu:k("terminal-ubuntu",60361),terminalBash:k("terminal-bash",60362),arrowSwap:k("arrow-swap",60363),copy:k("copy",60364),personAdd:k("person-add",60365),filterFilled:k("filter-filled",60366),wand:k("wand",60367),debugLineByLine:k("debug-line-by-line",60368),inspect:k("inspect",60369),layers:k("layers",60370),layersDot:k("layers-dot",60371),layersActive:k("layers-active",60372),compass:k("compass",60373),compassDot:k("compass-dot",60374),compassActive:k("compass-active",60375),azure:k("azure",60376),issueDraft:k("issue-draft",60377),gitPullRequestClosed:k("git-pull-request-closed",60378),gitPullRequestDraft:k("git-pull-request-draft",60379),debugAll:k("debug-all",60380),debugCoverage:k("debug-coverage",60381),runErrors:k("run-errors",60382),folderLibrary:k("folder-library",60383),debugContinueSmall:k("debug-continue-small",60384),beakerStop:k("beaker-stop",60385),graphLine:k("graph-line",60386),graphScatter:k("graph-scatter",60387),pieChart:k("pie-chart",60388),bracket:k("bracket",60175),bracketDot:k("bracket-dot",60389),bracketError:k("bracket-error",60390),lockSmall:k("lock-small",60391),azureDevops:k("azure-devops",60392),verifiedFilled:k("verified-filled",60393),newline:k("newline",60394),layout:k("layout",60395),layoutActivitybarLeft:k("layout-activitybar-left",60396),layoutActivitybarRight:k("layout-activitybar-right",60397),layoutPanelLeft:k("layout-panel-left",60398),layoutPanelCenter:k("layout-panel-center",60399),layoutPanelJustify:k("layout-panel-justify",60400),layoutPanelRight:k("layout-panel-right",60401),layoutPanel:k("layout-panel",60402),layoutSidebarLeft:k("layout-sidebar-left",60403),layoutSidebarRight:k("layout-sidebar-right",60404),layoutStatusbar:k("layout-statusbar",60405),layoutMenubar:k("layout-menubar",60406),layoutCentered:k("layout-centered",60407),target:k("target",60408),indent:k("indent",60409),recordSmall:k("record-small",60410),errorSmall:k("error-small",60411),terminalDecorationError:k("terminal-decoration-error",60411),arrowCircleDown:k("arrow-circle-down",60412),arrowCircleLeft:k("arrow-circle-left",60413),arrowCircleRight:k("arrow-circle-right",60414),arrowCircleUp:k("arrow-circle-up",60415),layoutSidebarRightOff:k("layout-sidebar-right-off",60416),layoutPanelOff:k("layout-panel-off",60417),layoutSidebarLeftOff:k("layout-sidebar-left-off",60418),blank:k("blank",60419),heartFilled:k("heart-filled",60420),map:k("map",60421),mapHorizontal:k("map-horizontal",60421),foldHorizontal:k("fold-horizontal",60421),mapFilled:k("map-filled",60422),mapHorizontalFilled:k("map-horizontal-filled",60422),foldHorizontalFilled:k("fold-horizontal-filled",60422),circleSmall:k("circle-small",60423),bellSlash:k("bell-slash",60424),bellSlashDot:k("bell-slash-dot",60425),commentUnresolved:k("comment-unresolved",60426),gitPullRequestGoToChanges:k("git-pull-request-go-to-changes",60427),gitPullRequestNewChanges:k("git-pull-request-new-changes",60428),searchFuzzy:k("search-fuzzy",60429),commentDraft:k("comment-draft",60430),send:k("send",60431),sparkle:k("sparkle",60432),insert:k("insert",60433),mic:k("mic",60434),thumbsdownFilled:k("thumbsdown-filled",60435),thumbsupFilled:k("thumbsup-filled",60436),coffee:k("coffee",60437),snake:k("snake",60438),game:k("game",60439),vr:k("vr",60440),chip:k("chip",60441),piano:k("piano",60442),music:k("music",60443),micFilled:k("mic-filled",60444),repoFetch:k("repo-fetch",60445),copilot:k("copilot",60446),lightbulbSparkle:k("lightbulb-sparkle",60447),robot:k("robot",60448),sparkleFilled:k("sparkle-filled",60449),diffSingle:k("diff-single",60450),diffMultiple:k("diff-multiple",60451),surroundWith:k("surround-with",60452),share:k("share",60453),gitStash:k("git-stash",60454),gitStashApply:k("git-stash-apply",60455),gitStashPop:k("git-stash-pop",60456),vscode:k("vscode",60457),vscodeInsiders:k("vscode-insiders",60458),codeOss:k("code-oss",60459),runCoverage:k("run-coverage",60460),runAllCoverage:k("run-all-coverage",60461),coverage:k("coverage",60462),githubProject:k("github-project",60463),mapVertical:k("map-vertical",60464),foldVertical:k("fold-vertical",60464),mapVerticalFilled:k("map-vertical-filled",60465),foldVerticalFilled:k("fold-vertical-filled",60465),goToSearch:k("go-to-search",60466),percentage:k("percentage",60467),sortPercentage:k("sort-percentage",60467),attach:k("attach",60468)},sGe={dialogError:k("dialog-error","error"),dialogWarning:k("dialog-warning","warning"),dialogInfo:k("dialog-info","info"),dialogClose:k("dialog-close","close"),treeItemExpanded:k("tree-item-expanded","chevron-down"),treeFilterOnTypeOn:k("tree-filter-on-type-on","list-filter"),treeFilterOnTypeOff:k("tree-filter-on-type-off","list-selection"),treeFilterClear:k("tree-filter-clear","close"),treeItemLoading:k("tree-item-loading","loading"),menuSelection:k("menu-selection","check"),menuSubmenu:k("menu-submenu","chevron-right"),menuBarMore:k("menubar-more","more"),scrollbarButtonLeft:k("scrollbar-button-left","triangle-left"),scrollbarButtonRight:k("scrollbar-button-right","triangle-right"),scrollbarButtonUp:k("scrollbar-button-up","triangle-up"),scrollbarButtonDown:k("scrollbar-button-down","triangle-down"),toolBarMore:k("toolbar-more","more"),quickInputBack:k("quick-input-back","arrow-left"),dropDownButton:k("drop-down-button",60084),symbolCustomColor:k("symbol-customcolor",60252),exportIcon:k("export",60332),workspaceUnspecified:k("workspace-unspecified",60355),newLine:k("newline",60394),thumbsDownFilled:k("thumbsdown-filled",60435),thumbsUpFilled:k("thumbsup-filled",60436),gitFetch:k("git-fetch",60445),lightbulbSparkleAutofix:k("lightbulb-sparkle-autofix",60447),debugBreakpointPending:k("debug-breakpoint-pending",60377)},ke={...nGe,...sGe};let _pe=class{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._tokenizationSupports.set(e,t),this.handleChange([e]),gt(()=>{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))})}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var n;(n=this._factories.get(e))==null||n.dispose();const i=new oGe(this,e,t);return this._factories.set(e,i),gt(()=>{const o=this._factories.get(e);!o||o!==i||(this._factories.delete(e),o.dispose())})}async getOrCreate(e){const t=this.get(e);if(t)return t;const i=this._factories.get(e);return!i||i.isResolved?null:(await i.resolve(),this.get(e))}isResolved(e){if(this.get(e))return!0;const i=this._factories.get(e);return!!(!i||i.isResolved)}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}};class oGe extends de{get isResolved(){return this._isResolved}constructor(e,t,i){super(),this._registry=e,this._languageId=t,this._factory=i,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}async resolve(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise}async _create(){const e=await this._factory.tokenizationSupport;this._isResolved=!0,e&&!this._isDisposed&&this._register(this._registry.register(this._languageId,e))}}let eM=class{constructor(e,t,i){this.offset=e,this.type=t,this.language=i,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}};class S${constructor(e,t){this.tokens=e,this.endState=t,this._tokenizationResultBrand=void 0}}class P5{constructor(e,t){this.tokens=e,this.endState=t,this._encodedTokenizationResultBrand=void 0}}var cd;(function(s){s[s.Increase=0]="Increase",s[s.Decrease=1]="Decrease"})(cd||(cd={}));var tM;(function(s){const e=new Map;e.set(0,ke.symbolMethod),e.set(1,ke.symbolFunction),e.set(2,ke.symbolConstructor),e.set(3,ke.symbolField),e.set(4,ke.symbolVariable),e.set(5,ke.symbolClass),e.set(6,ke.symbolStruct),e.set(7,ke.symbolInterface),e.set(8,ke.symbolModule),e.set(9,ke.symbolProperty),e.set(10,ke.symbolEvent),e.set(11,ke.symbolOperator),e.set(12,ke.symbolUnit),e.set(13,ke.symbolValue),e.set(15,ke.symbolEnum),e.set(14,ke.symbolConstant),e.set(15,ke.symbolEnum),e.set(16,ke.symbolEnumMember),e.set(17,ke.symbolKeyword),e.set(27,ke.symbolSnippet),e.set(18,ke.symbolText),e.set(19,ke.symbolColor),e.set(20,ke.symbolFile),e.set(21,ke.symbolReference),e.set(22,ke.symbolCustomColor),e.set(23,ke.symbolFolder),e.set(24,ke.symbolTypeParameter),e.set(25,ke.account),e.set(26,ke.issues);function t(o){let l=e.get(o);return l||(console.info("No codicon found for CompletionItemKind "+o),l=ke.symbolProperty),l}s.toIcon=t;const i=new Map;i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",27),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26);function n(o,l){let r=i.get(o);return typeof r>"u"&&!l&&(r=9),r}s.fromString=n})(tM||(tM={}));var Ju;(function(s){s[s.Automatic=0]="Automatic",s[s.Explicit=1]="Explicit"})(Ju||(Ju={}));class Ope{constructor(e,t,i,n){this.range=e,this.text=t,this.completionKind=i,this.isSnippetText=n}equals(e){return v.lift(this.range).equalsRange(e.range)&&this.text===e.text&&this.completionKind===e.completionKind&&this.isSnippetText===e.isSnippetText}}var iM;(function(s){s[s.Automatic=0]="Automatic",s[s.PasteAs=1]="PasteAs"})(iM||(iM={}));var Fp;(function(s){s[s.Invoke=1]="Invoke",s[s.TriggerCharacter=2]="TriggerCharacter",s[s.ContentChange=3]="ContentChange"})(Fp||(Fp={}));var qW;(function(s){s[s.Text=0]="Text",s[s.Read=1]="Read",s[s.Write=2]="Write"})(qW||(qW={}));function lGe(s){return s&&At.isUri(s.uri)&&v.isIRange(s.range)&&(v.isIRange(s.originSelectionRange)||v.isIRange(s.targetSelectionRange))}const rGe={17:U("Array","array"),16:U("Boolean","boolean"),4:U("Class","class"),13:U("Constant","constant"),8:U("Constructor","constructor"),9:U("Enum","enumeration"),21:U("EnumMember","enumeration member"),23:U("Event","event"),7:U("Field","field"),0:U("File","file"),11:U("Function","function"),10:U("Interface","interface"),19:U("Key","key"),5:U("Method","method"),1:U("Module","module"),2:U("Namespace","namespace"),20:U("Null","null"),15:U("Number","number"),18:U("Object","object"),24:U("Operator","operator"),3:U("Package","package"),6:U("Property","property"),14:U("String","string"),22:U("Struct","struct"),25:U("TypeParameter","type parameter"),12:U("Variable","variable")};function aGe(s,e){return U("symbolAriaLabel","{0} ({1})",s,rGe[e])}var LE;(function(s){const e=new Map;e.set(0,ke.symbolFile),e.set(1,ke.symbolModule),e.set(2,ke.symbolNamespace),e.set(3,ke.symbolPackage),e.set(4,ke.symbolClass),e.set(5,ke.symbolMethod),e.set(6,ke.symbolProperty),e.set(7,ke.symbolField),e.set(8,ke.symbolConstructor),e.set(9,ke.symbolEnum),e.set(10,ke.symbolInterface),e.set(11,ke.symbolFunction),e.set(12,ke.symbolVariable),e.set(13,ke.symbolConstant),e.set(14,ke.symbolString),e.set(15,ke.symbolNumber),e.set(16,ke.symbolBoolean),e.set(17,ke.symbolArray),e.set(18,ke.symbolObject),e.set(19,ke.symbolKey),e.set(20,ke.symbolNull),e.set(21,ke.symbolEnumMember),e.set(22,ke.symbolStruct),e.set(23,ke.symbolEvent),e.set(24,ke.symbolOperator),e.set(25,ke.symbolTypeParameter);function t(i){let n=e.get(i);return n||(console.info("No codicon found for SymbolKind "+i),n=ke.symbolProperty),n}s.toIcon=t})(LE||(LE={}));const Zh=class Zh{static fromValue(e){switch(e){case"comment":return Zh.Comment;case"imports":return Zh.Imports;case"region":return Zh.Region}return new Zh(e)}constructor(e){this.value=e}};Zh.Comment=new Zh("comment"),Zh.Imports=new Zh("imports"),Zh.Region=new Zh("region");let _U=Zh;var Wj;(function(s){s[s.AIGenerated=1]="AIGenerated"})(Wj||(Wj={}));var nM;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(nM||(nM={}));var Vj;(function(s){function e(t){return!t||typeof t!="object"?!1:typeof t.id=="string"&&typeof t.title=="string"}s.is=e})(Vj||(Vj={}));var kE;(function(s){s[s.Type=1]="Type",s[s.Parameter=2]="Parameter"})(kE||(kE={}));class dGe{constructor(e){this.createSupport=e,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(e=>{e&&e.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}const Ds=new _pe,Qj=new _pe;var IE;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(IE||(IE={}));var yj;(function(s){s[s.Unknown=0]="Unknown",s[s.Disabled=1]="Disabled",s[s.Enabled=2]="Enabled"})(yj||(yj={}));var Cj;(function(s){s[s.Invoke=1]="Invoke",s[s.Auto=2]="Auto"})(Cj||(Cj={}));var wj;(function(s){s[s.None=0]="None",s[s.KeepWhitespace=1]="KeepWhitespace",s[s.InsertAsSnippet=4]="InsertAsSnippet"})(wj||(wj={}));var Mj;(function(s){s[s.Method=0]="Method",s[s.Function=1]="Function",s[s.Constructor=2]="Constructor",s[s.Field=3]="Field",s[s.Variable=4]="Variable",s[s.Class=5]="Class",s[s.Struct=6]="Struct",s[s.Interface=7]="Interface",s[s.Module=8]="Module",s[s.Property=9]="Property",s[s.Event=10]="Event",s[s.Operator=11]="Operator",s[s.Unit=12]="Unit",s[s.Value=13]="Value",s[s.Constant=14]="Constant",s[s.Enum=15]="Enum",s[s.EnumMember=16]="EnumMember",s[s.Keyword=17]="Keyword",s[s.Text=18]="Text",s[s.Color=19]="Color",s[s.File=20]="File",s[s.Reference=21]="Reference",s[s.Customcolor=22]="Customcolor",s[s.Folder=23]="Folder",s[s.TypeParameter=24]="TypeParameter",s[s.User=25]="User",s[s.Issue=26]="Issue",s[s.Snippet=27]="Snippet"})(Mj||(Mj={}));var Tj;(function(s){s[s.Deprecated=1]="Deprecated"})(Tj||(Tj={}));var Bj;(function(s){s[s.Invoke=0]="Invoke",s[s.TriggerCharacter=1]="TriggerCharacter",s[s.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(Bj||(Bj={}));var Lj;(function(s){s[s.EXACT=0]="EXACT",s[s.ABOVE=1]="ABOVE",s[s.BELOW=2]="BELOW"})(Lj||(Lj={}));var kj;(function(s){s[s.NotSet=0]="NotSet",s[s.ContentFlush=1]="ContentFlush",s[s.RecoverFromMarkers=2]="RecoverFromMarkers",s[s.Explicit=3]="Explicit",s[s.Paste=4]="Paste",s[s.Undo=5]="Undo",s[s.Redo=6]="Redo"})(kj||(kj={}));var Ij;(function(s){s[s.LF=1]="LF",s[s.CRLF=2]="CRLF"})(Ij||(Ij={}));var Dj;(function(s){s[s.Text=0]="Text",s[s.Read=1]="Read",s[s.Write=2]="Write"})(Dj||(Dj={}));var Gj;(function(s){s[s.None=0]="None",s[s.Keep=1]="Keep",s[s.Brackets=2]="Brackets",s[s.Advanced=3]="Advanced",s[s.Full=4]="Full"})(Gj||(Gj={}));var Ej;(function(s){s[s.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",s[s.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",s[s.accessibilitySupport=2]="accessibilitySupport",s[s.accessibilityPageSize=3]="accessibilityPageSize",s[s.ariaLabel=4]="ariaLabel",s[s.ariaRequired=5]="ariaRequired",s[s.autoClosingBrackets=6]="autoClosingBrackets",s[s.autoClosingComments=7]="autoClosingComments",s[s.screenReaderAnnounceInlineSuggestion=8]="screenReaderAnnounceInlineSuggestion",s[s.autoClosingDelete=9]="autoClosingDelete",s[s.autoClosingOvertype=10]="autoClosingOvertype",s[s.autoClosingQuotes=11]="autoClosingQuotes",s[s.autoIndent=12]="autoIndent",s[s.automaticLayout=13]="automaticLayout",s[s.autoSurround=14]="autoSurround",s[s.bracketPairColorization=15]="bracketPairColorization",s[s.guides=16]="guides",s[s.codeLens=17]="codeLens",s[s.codeLensFontFamily=18]="codeLensFontFamily",s[s.codeLensFontSize=19]="codeLensFontSize",s[s.colorDecorators=20]="colorDecorators",s[s.colorDecoratorsLimit=21]="colorDecoratorsLimit",s[s.columnSelection=22]="columnSelection",s[s.comments=23]="comments",s[s.contextmenu=24]="contextmenu",s[s.copyWithSyntaxHighlighting=25]="copyWithSyntaxHighlighting",s[s.cursorBlinking=26]="cursorBlinking",s[s.cursorSmoothCaretAnimation=27]="cursorSmoothCaretAnimation",s[s.cursorStyle=28]="cursorStyle",s[s.cursorSurroundingLines=29]="cursorSurroundingLines",s[s.cursorSurroundingLinesStyle=30]="cursorSurroundingLinesStyle",s[s.cursorWidth=31]="cursorWidth",s[s.disableLayerHinting=32]="disableLayerHinting",s[s.disableMonospaceOptimizations=33]="disableMonospaceOptimizations",s[s.domReadOnly=34]="domReadOnly",s[s.dragAndDrop=35]="dragAndDrop",s[s.dropIntoEditor=36]="dropIntoEditor",s[s.emptySelectionClipboard=37]="emptySelectionClipboard",s[s.experimentalWhitespaceRendering=38]="experimentalWhitespaceRendering",s[s.extraEditorClassName=39]="extraEditorClassName",s[s.fastScrollSensitivity=40]="fastScrollSensitivity",s[s.find=41]="find",s[s.fixedOverflowWidgets=42]="fixedOverflowWidgets",s[s.folding=43]="folding",s[s.foldingStrategy=44]="foldingStrategy",s[s.foldingHighlight=45]="foldingHighlight",s[s.foldingImportsByDefault=46]="foldingImportsByDefault",s[s.foldingMaximumRegions=47]="foldingMaximumRegions",s[s.unfoldOnClickAfterEndOfLine=48]="unfoldOnClickAfterEndOfLine",s[s.fontFamily=49]="fontFamily",s[s.fontInfo=50]="fontInfo",s[s.fontLigatures=51]="fontLigatures",s[s.fontSize=52]="fontSize",s[s.fontWeight=53]="fontWeight",s[s.fontVariations=54]="fontVariations",s[s.formatOnPaste=55]="formatOnPaste",s[s.formatOnType=56]="formatOnType",s[s.glyphMargin=57]="glyphMargin",s[s.gotoLocation=58]="gotoLocation",s[s.hideCursorInOverviewRuler=59]="hideCursorInOverviewRuler",s[s.hover=60]="hover",s[s.inDiffEditor=61]="inDiffEditor",s[s.inlineSuggest=62]="inlineSuggest",s[s.inlineEdit=63]="inlineEdit",s[s.letterSpacing=64]="letterSpacing",s[s.lightbulb=65]="lightbulb",s[s.lineDecorationsWidth=66]="lineDecorationsWidth",s[s.lineHeight=67]="lineHeight",s[s.lineNumbers=68]="lineNumbers",s[s.lineNumbersMinChars=69]="lineNumbersMinChars",s[s.linkedEditing=70]="linkedEditing",s[s.links=71]="links",s[s.matchBrackets=72]="matchBrackets",s[s.minimap=73]="minimap",s[s.mouseStyle=74]="mouseStyle",s[s.mouseWheelScrollSensitivity=75]="mouseWheelScrollSensitivity",s[s.mouseWheelZoom=76]="mouseWheelZoom",s[s.multiCursorMergeOverlapping=77]="multiCursorMergeOverlapping",s[s.multiCursorModifier=78]="multiCursorModifier",s[s.multiCursorPaste=79]="multiCursorPaste",s[s.multiCursorLimit=80]="multiCursorLimit",s[s.occurrencesHighlight=81]="occurrencesHighlight",s[s.overviewRulerBorder=82]="overviewRulerBorder",s[s.overviewRulerLanes=83]="overviewRulerLanes",s[s.padding=84]="padding",s[s.pasteAs=85]="pasteAs",s[s.parameterHints=86]="parameterHints",s[s.peekWidgetDefaultFocus=87]="peekWidgetDefaultFocus",s[s.placeholder=88]="placeholder",s[s.definitionLinkOpensInPeek=89]="definitionLinkOpensInPeek",s[s.quickSuggestions=90]="quickSuggestions",s[s.quickSuggestionsDelay=91]="quickSuggestionsDelay",s[s.readOnly=92]="readOnly",s[s.readOnlyMessage=93]="readOnlyMessage",s[s.renameOnType=94]="renameOnType",s[s.renderControlCharacters=95]="renderControlCharacters",s[s.renderFinalNewline=96]="renderFinalNewline",s[s.renderLineHighlight=97]="renderLineHighlight",s[s.renderLineHighlightOnlyWhenFocus=98]="renderLineHighlightOnlyWhenFocus",s[s.renderValidationDecorations=99]="renderValidationDecorations",s[s.renderWhitespace=100]="renderWhitespace",s[s.revealHorizontalRightPadding=101]="revealHorizontalRightPadding",s[s.roundedSelection=102]="roundedSelection",s[s.rulers=103]="rulers",s[s.scrollbar=104]="scrollbar",s[s.scrollBeyondLastColumn=105]="scrollBeyondLastColumn",s[s.scrollBeyondLastLine=106]="scrollBeyondLastLine",s[s.scrollPredominantAxis=107]="scrollPredominantAxis",s[s.selectionClipboard=108]="selectionClipboard",s[s.selectionHighlight=109]="selectionHighlight",s[s.selectOnLineNumbers=110]="selectOnLineNumbers",s[s.showFoldingControls=111]="showFoldingControls",s[s.showUnused=112]="showUnused",s[s.snippetSuggestions=113]="snippetSuggestions",s[s.smartSelect=114]="smartSelect",s[s.smoothScrolling=115]="smoothScrolling",s[s.stickyScroll=116]="stickyScroll",s[s.stickyTabStops=117]="stickyTabStops",s[s.stopRenderingLineAfter=118]="stopRenderingLineAfter",s[s.suggest=119]="suggest",s[s.suggestFontSize=120]="suggestFontSize",s[s.suggestLineHeight=121]="suggestLineHeight",s[s.suggestOnTriggerCharacters=122]="suggestOnTriggerCharacters",s[s.suggestSelection=123]="suggestSelection",s[s.tabCompletion=124]="tabCompletion",s[s.tabIndex=125]="tabIndex",s[s.unicodeHighlighting=126]="unicodeHighlighting",s[s.unusualLineTerminators=127]="unusualLineTerminators",s[s.useShadowDOM=128]="useShadowDOM",s[s.useTabStops=129]="useTabStops",s[s.wordBreak=130]="wordBreak",s[s.wordSegmenterLocales=131]="wordSegmenterLocales",s[s.wordSeparators=132]="wordSeparators",s[s.wordWrap=133]="wordWrap",s[s.wordWrapBreakAfterCharacters=134]="wordWrapBreakAfterCharacters",s[s.wordWrapBreakBeforeCharacters=135]="wordWrapBreakBeforeCharacters",s[s.wordWrapColumn=136]="wordWrapColumn",s[s.wordWrapOverride1=137]="wordWrapOverride1",s[s.wordWrapOverride2=138]="wordWrapOverride2",s[s.wrappingIndent=139]="wrappingIndent",s[s.wrappingStrategy=140]="wrappingStrategy",s[s.showDeprecated=141]="showDeprecated",s[s.inlayHints=142]="inlayHints",s[s.editorClassName=143]="editorClassName",s[s.pixelRatio=144]="pixelRatio",s[s.tabFocusMode=145]="tabFocusMode",s[s.layoutInfo=146]="layoutInfo",s[s.wrappingInfo=147]="wrappingInfo",s[s.defaultColorDecorators=148]="defaultColorDecorators",s[s.colorDecoratorsActivatedOn=149]="colorDecoratorsActivatedOn",s[s.inlineCompletionsAccessibilityVerbose=150]="inlineCompletionsAccessibilityVerbose"})(Ej||(Ej={}));var vj;(function(s){s[s.TextDefined=0]="TextDefined",s[s.LF=1]="LF",s[s.CRLF=2]="CRLF"})(vj||(vj={}));var xj;(function(s){s[s.LF=0]="LF",s[s.CRLF=1]="CRLF"})(xj||(xj={}));var Jj;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=3]="Right"})(Jj||(Jj={}));var Xj;(function(s){s[s.Increase=0]="Increase",s[s.Decrease=1]="Decrease"})(Xj||(Xj={}));var Yj;(function(s){s[s.None=0]="None",s[s.Indent=1]="Indent",s[s.IndentOutdent=2]="IndentOutdent",s[s.Outdent=3]="Outdent"})(Yj||(Yj={}));var zj;(function(s){s[s.Both=0]="Both",s[s.Right=1]="Right",s[s.Left=2]="Left",s[s.None=3]="None"})(zj||(zj={}));var _j;(function(s){s[s.Type=1]="Type",s[s.Parameter=2]="Parameter"})(_j||(_j={}));var Oj;(function(s){s[s.Automatic=0]="Automatic",s[s.Explicit=1]="Explicit"})(Oj||(Oj={}));var jj;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(jj||(jj={}));var Hj;(function(s){s[s.DependsOnKbLayout=-1]="DependsOnKbLayout",s[s.Unknown=0]="Unknown",s[s.Backspace=1]="Backspace",s[s.Tab=2]="Tab",s[s.Enter=3]="Enter",s[s.Shift=4]="Shift",s[s.Ctrl=5]="Ctrl",s[s.Alt=6]="Alt",s[s.PauseBreak=7]="PauseBreak",s[s.CapsLock=8]="CapsLock",s[s.Escape=9]="Escape",s[s.Space=10]="Space",s[s.PageUp=11]="PageUp",s[s.PageDown=12]="PageDown",s[s.End=13]="End",s[s.Home=14]="Home",s[s.LeftArrow=15]="LeftArrow",s[s.UpArrow=16]="UpArrow",s[s.RightArrow=17]="RightArrow",s[s.DownArrow=18]="DownArrow",s[s.Insert=19]="Insert",s[s.Delete=20]="Delete",s[s.Digit0=21]="Digit0",s[s.Digit1=22]="Digit1",s[s.Digit2=23]="Digit2",s[s.Digit3=24]="Digit3",s[s.Digit4=25]="Digit4",s[s.Digit5=26]="Digit5",s[s.Digit6=27]="Digit6",s[s.Digit7=28]="Digit7",s[s.Digit8=29]="Digit8",s[s.Digit9=30]="Digit9",s[s.KeyA=31]="KeyA",s[s.KeyB=32]="KeyB",s[s.KeyC=33]="KeyC",s[s.KeyD=34]="KeyD",s[s.KeyE=35]="KeyE",s[s.KeyF=36]="KeyF",s[s.KeyG=37]="KeyG",s[s.KeyH=38]="KeyH",s[s.KeyI=39]="KeyI",s[s.KeyJ=40]="KeyJ",s[s.KeyK=41]="KeyK",s[s.KeyL=42]="KeyL",s[s.KeyM=43]="KeyM",s[s.KeyN=44]="KeyN",s[s.KeyO=45]="KeyO",s[s.KeyP=46]="KeyP",s[s.KeyQ=47]="KeyQ",s[s.KeyR=48]="KeyR",s[s.KeyS=49]="KeyS",s[s.KeyT=50]="KeyT",s[s.KeyU=51]="KeyU",s[s.KeyV=52]="KeyV",s[s.KeyW=53]="KeyW",s[s.KeyX=54]="KeyX",s[s.KeyY=55]="KeyY",s[s.KeyZ=56]="KeyZ",s[s.Meta=57]="Meta",s[s.ContextMenu=58]="ContextMenu",s[s.F1=59]="F1",s[s.F2=60]="F2",s[s.F3=61]="F3",s[s.F4=62]="F4",s[s.F5=63]="F5",s[s.F6=64]="F6",s[s.F7=65]="F7",s[s.F8=66]="F8",s[s.F9=67]="F9",s[s.F10=68]="F10",s[s.F11=69]="F11",s[s.F12=70]="F12",s[s.F13=71]="F13",s[s.F14=72]="F14",s[s.F15=73]="F15",s[s.F16=74]="F16",s[s.F17=75]="F17",s[s.F18=76]="F18",s[s.F19=77]="F19",s[s.F20=78]="F20",s[s.F21=79]="F21",s[s.F22=80]="F22",s[s.F23=81]="F23",s[s.F24=82]="F24",s[s.NumLock=83]="NumLock",s[s.ScrollLock=84]="ScrollLock",s[s.Semicolon=85]="Semicolon",s[s.Equal=86]="Equal",s[s.Comma=87]="Comma",s[s.Minus=88]="Minus",s[s.Period=89]="Period",s[s.Slash=90]="Slash",s[s.Backquote=91]="Backquote",s[s.BracketLeft=92]="BracketLeft",s[s.Backslash=93]="Backslash",s[s.BracketRight=94]="BracketRight",s[s.Quote=95]="Quote",s[s.OEM_8=96]="OEM_8",s[s.IntlBackslash=97]="IntlBackslash",s[s.Numpad0=98]="Numpad0",s[s.Numpad1=99]="Numpad1",s[s.Numpad2=100]="Numpad2",s[s.Numpad3=101]="Numpad3",s[s.Numpad4=102]="Numpad4",s[s.Numpad5=103]="Numpad5",s[s.Numpad6=104]="Numpad6",s[s.Numpad7=105]="Numpad7",s[s.Numpad8=106]="Numpad8",s[s.Numpad9=107]="Numpad9",s[s.NumpadMultiply=108]="NumpadMultiply",s[s.NumpadAdd=109]="NumpadAdd",s[s.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",s[s.NumpadSubtract=111]="NumpadSubtract",s[s.NumpadDecimal=112]="NumpadDecimal",s[s.NumpadDivide=113]="NumpadDivide",s[s.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",s[s.ABNT_C1=115]="ABNT_C1",s[s.ABNT_C2=116]="ABNT_C2",s[s.AudioVolumeMute=117]="AudioVolumeMute",s[s.AudioVolumeUp=118]="AudioVolumeUp",s[s.AudioVolumeDown=119]="AudioVolumeDown",s[s.BrowserSearch=120]="BrowserSearch",s[s.BrowserHome=121]="BrowserHome",s[s.BrowserBack=122]="BrowserBack",s[s.BrowserForward=123]="BrowserForward",s[s.MediaTrackNext=124]="MediaTrackNext",s[s.MediaTrackPrevious=125]="MediaTrackPrevious",s[s.MediaStop=126]="MediaStop",s[s.MediaPlayPause=127]="MediaPlayPause",s[s.LaunchMediaPlayer=128]="LaunchMediaPlayer",s[s.LaunchMail=129]="LaunchMail",s[s.LaunchApp2=130]="LaunchApp2",s[s.Clear=131]="Clear",s[s.MAX_VALUE=132]="MAX_VALUE"})(Hj||(Hj={}));var Pj;(function(s){s[s.Hint=1]="Hint",s[s.Info=2]="Info",s[s.Warning=4]="Warning",s[s.Error=8]="Error"})(Pj||(Pj={}));var Kj;(function(s){s[s.Unnecessary=1]="Unnecessary",s[s.Deprecated=2]="Deprecated"})(Kj||(Kj={}));var qj;(function(s){s[s.Inline=1]="Inline",s[s.Gutter=2]="Gutter"})(qj||(qj={}));var $j;(function(s){s[s.Normal=1]="Normal",s[s.Underlined=2]="Underlined"})($j||($j={}));var eH;(function(s){s[s.UNKNOWN=0]="UNKNOWN",s[s.TEXTAREA=1]="TEXTAREA",s[s.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",s[s.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",s[s.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",s[s.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",s[s.CONTENT_TEXT=6]="CONTENT_TEXT",s[s.CONTENT_EMPTY=7]="CONTENT_EMPTY",s[s.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",s[s.CONTENT_WIDGET=9]="CONTENT_WIDGET",s[s.OVERVIEW_RULER=10]="OVERVIEW_RULER",s[s.SCROLLBAR=11]="SCROLLBAR",s[s.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",s[s.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(eH||(eH={}));var tH;(function(s){s[s.AIGenerated=1]="AIGenerated"})(tH||(tH={}));var iH;(function(s){s[s.Invoke=0]="Invoke",s[s.Automatic=1]="Automatic"})(iH||(iH={}));var nH;(function(s){s[s.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",s[s.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",s[s.TOP_CENTER=2]="TOP_CENTER"})(nH||(nH={}));var sH;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=4]="Right",s[s.Full=7]="Full"})(sH||(sH={}));var oH;(function(s){s[s.Word=0]="Word",s[s.Line=1]="Line",s[s.Suggest=2]="Suggest"})(oH||(oH={}));var lH;(function(s){s[s.Left=0]="Left",s[s.Right=1]="Right",s[s.None=2]="None",s[s.LeftOfInjectedText=3]="LeftOfInjectedText",s[s.RightOfInjectedText=4]="RightOfInjectedText"})(lH||(lH={}));var rH;(function(s){s[s.Off=0]="Off",s[s.On=1]="On",s[s.Relative=2]="Relative",s[s.Interval=3]="Interval",s[s.Custom=4]="Custom"})(rH||(rH={}));var aH;(function(s){s[s.None=0]="None",s[s.Text=1]="Text",s[s.Blocks=2]="Blocks"})(aH||(aH={}));var dH;(function(s){s[s.Smooth=0]="Smooth",s[s.Immediate=1]="Immediate"})(dH||(dH={}));var cH;(function(s){s[s.Auto=1]="Auto",s[s.Hidden=2]="Hidden",s[s.Visible=3]="Visible"})(cH||(cH={}));var hH;(function(s){s[s.LTR=0]="LTR",s[s.RTL=1]="RTL"})(hH||(hH={}));var uH;(function(s){s.Off="off",s.OnCode="onCode",s.On="on"})(uH||(uH={}));var mH;(function(s){s[s.Invoke=1]="Invoke",s[s.TriggerCharacter=2]="TriggerCharacter",s[s.ContentChange=3]="ContentChange"})(mH||(mH={}));var pH;(function(s){s[s.File=0]="File",s[s.Module=1]="Module",s[s.Namespace=2]="Namespace",s[s.Package=3]="Package",s[s.Class=4]="Class",s[s.Method=5]="Method",s[s.Property=6]="Property",s[s.Field=7]="Field",s[s.Constructor=8]="Constructor",s[s.Enum=9]="Enum",s[s.Interface=10]="Interface",s[s.Function=11]="Function",s[s.Variable=12]="Variable",s[s.Constant=13]="Constant",s[s.String=14]="String",s[s.Number=15]="Number",s[s.Boolean=16]="Boolean",s[s.Array=17]="Array",s[s.Object=18]="Object",s[s.Key=19]="Key",s[s.Null=20]="Null",s[s.EnumMember=21]="EnumMember",s[s.Struct=22]="Struct",s[s.Event=23]="Event",s[s.Operator=24]="Operator",s[s.TypeParameter=25]="TypeParameter"})(pH||(pH={}));var gH;(function(s){s[s.Deprecated=1]="Deprecated"})(gH||(gH={}));var bH;(function(s){s[s.Hidden=0]="Hidden",s[s.Blink=1]="Blink",s[s.Smooth=2]="Smooth",s[s.Phase=3]="Phase",s[s.Expand=4]="Expand",s[s.Solid=5]="Solid"})(bH||(bH={}));var UH;(function(s){s[s.Line=1]="Line",s[s.Block=2]="Block",s[s.Underline=3]="Underline",s[s.LineThin=4]="LineThin",s[s.BlockOutline=5]="BlockOutline",s[s.UnderlineThin=6]="UnderlineThin"})(UH||(UH={}));var fH;(function(s){s[s.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",s[s.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",s[s.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",s[s.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(fH||(fH={}));var FH;(function(s){s[s.None=0]="None",s[s.Same=1]="Same",s[s.Indent=2]="Indent",s[s.DeepIndent=3]="DeepIndent"})(FH||(FH={}));var QU;let cGe=(QU=class{static chord(e,t){return Fo(e,t)}},QU.CtrlCmd=2048,QU.Shift=1024,QU.Alt=512,QU.WinCtrl=256,QU);function jpe(){return{editor:void 0,languages:void 0,CancellationTokenSource:Ws,Emitter:re,KeyCode:Hj,KeyMod:cGe,Position:oe,Range:v,Selection:dt,SelectionDirection:hH,MarkerSeverity:Pj,MarkerTag:Kj,Uri:At,Token:eM}}function hGe(s,e){const t=s;typeof t.vscodeWindowId!="number"&&Object.defineProperty(t,"vscodeWindowId",{get:()=>e})}const Qn=window;function Hpe(s){return s}class uGe{constructor(e,t){this.lastCache=void 0,this.lastArgKey=void 0,typeof e=="function"?(this._fn=e,this._computeKey=Hpe):(this._fn=t,this._computeKey=e.getCacheKey)}get(e){const t=this._computeKey(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this._fn(e)),this.lastCache}}class xse{get cachedValues(){return this._map}constructor(e,t){this._map=new Map,this._map2=new Map,typeof e=="function"?(this._fn=e,this._computeKey=Hpe):(this._fn=t,this._computeKey=e.getCacheKey)}get(e){const t=this._computeKey(e);if(this._map2.has(t))return this._map2.get(t);const i=this._fn(e);return this._map.set(e,i),this._map2.set(t,i),i}}class Hh{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}function Ppe(s){return!s||typeof s!="string"?!0:s.trim().length===0}const mGe=/{(\d+)}/g;function FA(s,...e){return e.length===0?s:s.replace(mGe,function(t,i){const n=parseInt(i,10);return isNaN(n)||n<0||n>=e.length?t:e[n]})}function pGe(s){return s.replace(/[<>"'&]/g,e=>{switch(e){case"<":return"<";case">":return">";case'"':return""";case"'":return"'";case"&":return"&"}return e})}function aC(s){return s.replace(/[<>&]/g,function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}})}function dc(s){return s.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function gGe(s,e=" "){const t=eB(s,e);return Kpe(t,e)}function eB(s,e){if(!s||!e)return s;const t=e.length;if(t===0||s.length===0)return s;let i=0;for(;s.indexOf(e,i)===i;)i=i+t;return s.substring(i)}function Kpe(s,e){if(!s||!e)return s;const t=e.length,i=s.length;if(t===0||i===0)return s;let n=i,o=-1;for(;o=s.lastIndexOf(e,n-1),!(o===-1||o+t!==n);){if(o===0)return"";n=o}return s.substring(0,n)}function bGe(s){return s.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function UGe(s){return s.replace(/\*/g,"")}function qpe(s,e,t={}){if(!s)throw new Error("Cannot create regex from empty string");e||(s=dc(s)),t.wholeWord&&(/\B/.test(s.charAt(0))||(s="\\b"+s),/\B/.test(s.charAt(s.length-1))||(s=s+"\\b"));let i="";return t.global&&(i+="g"),t.matchCase||(i+="i"),t.multiline&&(i+="m"),t.unicode&&(i+="u"),new RegExp(s,i)}function fGe(s){return s.source==="^"||s.source==="^$"||s.source==="$"||s.source==="^\\s*$"?!1:!!(s.exec("")&&s.lastIndex===0)}function Lp(s){return s.split(/\r\n|\r|\n/)}function FGe(s){const e=[],t=s.split(/(\r\n|\r|\n)/);for(let i=0;i<Math.ceil(t.length/2);i++)e.push(t[2*i]+(t[2*i+1]??""));return e}function Wr(s){for(let e=0,t=s.length;e<t;e++){const i=s.charCodeAt(e);if(i!==32&&i!==9)return e}return-1}function wn(s,e=0,t=s.length){for(let i=e;i<t;i++){const n=s.charCodeAt(i);if(n!==32&&n!==9)return s.substring(e,i)}return s.substring(e,t)}function Xu(s,e=s.length-1){for(let t=e;t>=0;t--){const i=s.charCodeAt(t);if(i!==32&&i!==9)return t}return-1}function sM(s,e){return s<e?-1:s>e?1:0}function W$(s,e,t=0,i=s.length,n=0,o=e.length){for(;t<i&&n<o;t++,n++){const a=s.charCodeAt(t),d=e.charCodeAt(n);if(a<d)return-1;if(a>d)return 1}const l=i-t,r=o-n;return l<r?-1:l>r?1:0}function ZH(s,e){return tB(s,e,0,s.length,0,e.length)}function tB(s,e,t=0,i=s.length,n=0,o=e.length){for(;t<i&&n<o;t++,n++){let a=s.charCodeAt(t),d=e.charCodeAt(n);if(a===d)continue;if(a>=128||d>=128)return W$(s.toLowerCase(),e.toLowerCase(),t,i,n,o);aU(a)&&(a-=32),aU(d)&&(d-=32);const c=a-d;if(c!==0)return c}const l=i-t,r=o-n;return l<r?-1:l>r?1:0}function BL(s){return s>=48&&s<=57}function aU(s){return s>=97&&s<=122}function $m(s){return s>=65&&s<=90}function lS(s,e){return s.length===e.length&&tB(s,e)===0}function V$(s,e){const t=e.length;return e.length>s.length?!1:tB(s,e,0,t)===0}function OU(s,e){const t=Math.min(s.length,e.length);let i;for(i=0;i<t;i++)if(s.charCodeAt(i)!==e.charCodeAt(i))return i;return t}function DE(s,e){const t=Math.min(s.length,e.length);let i;const n=s.length-1,o=e.length-1;for(i=0;i<t;i++)if(s.charCodeAt(n-i)!==e.charCodeAt(o-i))return i;return t}function xo(s){return 55296<=s&&s<=56319}function ZA(s){return 56320<=s&&s<=57343}function Q$(s,e){return(s-55296<<10)+(e-56320)+65536}function GE(s,e,t){const i=s.charCodeAt(t);if(xo(i)&&t+1<e){const n=s.charCodeAt(t+1);if(ZA(n))return Q$(i,n)}return i}function ZGe(s,e){const t=s.charCodeAt(e-1);if(ZA(t)&&e>1){const i=s.charCodeAt(e-2);if(xo(i))return Q$(i,t)}return t}class y${get offset(){return this._offset}constructor(e,t=0){this._str=e,this._len=e.length,this._offset=t}setOffset(e){this._offset=e}prevCodePoint(){const e=ZGe(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){const e=GE(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class EE{get offset(){return this._iterator.offset}constructor(e,t=0){this._iterator=new y$(e,t)}nextGraphemeLength(){const e=vE.getInstance(),t=this._iterator,i=t.offset;let n=e.getGraphemeBreakType(t.nextCodePoint());for(;!t.eol();){const o=t.offset,l=e.getGraphemeBreakType(t.nextCodePoint());if(Jse(n,l)){t.setOffset(o);break}n=l}return t.offset-i}prevGraphemeLength(){const e=vE.getInstance(),t=this._iterator,i=t.offset;let n=e.getGraphemeBreakType(t.prevCodePoint());for(;t.offset>0;){const o=t.offset,l=e.getGraphemeBreakType(t.prevCodePoint());if(Jse(l,n)){t.setOffset(o);break}n=l}return i-t.offset}eol(){return this._iterator.eol()}}function C$(s,e){return new EE(s,e).nextGraphemeLength()}function $pe(s,e){return new EE(s,e).prevGraphemeLength()}function AGe(s,e){e>0&&ZA(s.charCodeAt(e))&&e--;const t=e+C$(s,e);return[t-$pe(s,t),t]}let D9;function NGe(){return/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/}function $W(s){return D9||(D9=NGe()),D9.test(s)}const RGe=/^[\t\n\r\x20-\x7E]*$/;function iB(s){return RGe.test(s)}const ege=/[\u2028\u2029]/;function tge(s){return ege.test(s)}function jU(s){return s>=11904&&s<=55215||s>=63744&&s<=64255||s>=65281&&s<=65374}function w$(s){return s>=127462&&s<=127487||s===8986||s===8987||s===9200||s===9203||s>=9728&&s<=10175||s===11088||s===11093||s>=127744&&s<=128591||s>=128640&&s<=128764||s>=128992&&s<=129008||s>=129280&&s<=129535||s>=129648&&s<=129782}const SGe=String.fromCharCode(65279);function M$(s){return!!(s&&s.length>0&&s.charCodeAt(0)===65279)}function WGe(s,e=!1){return s?(e&&(s=s.replace(/\\./g,"")),s.toLowerCase()!==s):!1}function ige(s){return s=s%(2*26),s<26?String.fromCharCode(97+s):String.fromCharCode(65+s-26)}function Jse(s,e){return s===0?e!==5&&e!==7:s===2&&e===3?!1:s===4||s===2||s===3||e===4||e===2||e===3?!0:!(s===8&&(e===8||e===9||e===11||e===12)||(s===11||s===9)&&(e===9||e===10)||(s===12||s===10)&&e===10||e===5||e===13||e===7||s===1||s===13&&e===14||s===6&&e===6)}const gZ=class gZ{static getInstance(){return gZ._INSTANCE||(gZ._INSTANCE=new gZ),gZ._INSTANCE}constructor(){this._data=VGe()}getGraphemeBreakType(e){if(e<32)return e===10?3:e===13?2:4;if(e<127)return 0;const t=this._data,i=t.length/3;let n=1;for(;n<=i;)if(e<t[3*n])n=2*n;else if(e>t[3*n+1])n=2*n+1;else return t[3*n+2];return 0}};gZ._INSTANCE=null;let vE=gZ;function VGe(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}function QGe(s,e){if(s===0)return 0;const t=yGe(s,e);if(t!==void 0)return t;const i=new y$(e,s);return i.prevCodePoint(),i.offset}function yGe(s,e){const t=new y$(e,s);let i=t.prevCodePoint();for(;CGe(i)||i===65039||i===8419;){if(t.offset===0)return;i=t.prevCodePoint()}if(!w$(i))return;let n=t.offset;return n>0&&t.prevCodePoint()===8205&&(n=t.offset),n}function CGe(s){return 127995<=s&&s<=127999}const nge=" ",Em=class Em{static getInstance(e){return Em.cache.get(Array.from(e))}static getLocales(){return Em._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}};Em.ambiguousCharacterData=new Hh(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}')),Em.cache=new uGe({getCacheKey:JSON.stringify},e=>{function t(c){const h=new Map;for(let u=0;u<c.length;u+=2)h.set(c[u],c[u+1]);return h}function i(c,h){const u=new Map(c);for(const[m,p]of h)u.set(m,p);return u}function n(c,h){if(!c)return h;const u=new Map;for(const[m,p]of c)h.has(m)&&u.set(m,p);return u}const o=Em.ambiguousCharacterData.value;let l=e.filter(c=>!c.startsWith("_")&&c in o);l.length===0&&(l=["_default"]);let r;for(const c of l){const h=t(o[c]);r=n(r,h)}const a=t(o._common),d=i(a,r);return new Em(d)}),Em._locales=new Hh(()=>Object.keys(Em.ambiguousCharacterData.value).filter(e=>!e.startsWith("_")));let oM=Em;const PS=class PS{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(PS.getRawData())),this._data}static isInvisibleCharacter(e){return PS.getData().has(e)}static get codePoints(){return PS.getData()}};PS._data=void 0;let xZ=PS;const nX=class nX{constructor(){this.mapWindowIdToZoomFactor=new Map}getZoomFactor(e){return this.mapWindowIdToZoomFactor.get(this.getWindowId(e))??1}getWindowId(e){return e.vscodeWindowId}};nX.INSTANCE=new nX;let AH=nX;function sge(s,e,t){typeof e=="string"&&(e=s.matchMedia(e)),e.addEventListener("change",t)}function wGe(s){return AH.INSTANCE.getZoomFactor(s)}const GQ=navigator.userAgent,jc=GQ.indexOf("Firefox")>=0,JZ=GQ.indexOf("AppleWebKit")>=0,nB=GQ.indexOf("Chrome")>=0,F0=!nB&&GQ.indexOf("Safari")>=0,oge=!nB&&!F0&&JZ;GQ.indexOf("Electron/")>=0;const Xse=GQ.indexOf("Android")>=0;let PI=!1;if(typeof Qn.matchMedia=="function"){const s=Qn.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=Qn.matchMedia("(display-mode: fullscreen)");PI=s.matches,sge(Qn,s,({matches:t})=>{PI&&e.matches||(PI=t)})}function MGe(){return PI}const T$={clipboard:{writeText:vu||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:vu||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:(()=>vu||MGe()?0:navigator.keyboard||F0?1:2)(),touch:"ontouchstart"in Qn||navigator.maxTouchPoints>0,pointerEvents:Qn.PointerEvent&&("ontouchstart"in Qn||navigator.maxTouchPoints>0)};function NH(s,e){if(typeof s=="number"){if(s===0)return null;const t=(s&65535)>>>0,i=(s&4294901760)>>>16;return i!==0?new G9([LL(t,e),LL(i,e)]):new G9([LL(t,e)])}else{const t=[];for(let i=0;i<s.length;i++)t.push(LL(s[i],e));return new G9(t)}}function LL(s,e){const t=!!(s&2048),i=!!(s&256),n=e===2?i:t,o=!!(s&1024),l=!!(s&512),r=e===2?t:i,a=s&255;return new Z0(n,o,l,r,a)}class Z0{constructor(e,t,i,n,o){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyCode=o}equals(e){return e instanceof Z0&&this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}}class G9{constructor(e){if(e.length===0)throw Yc("chords");this.chords=e}}class TGe{constructor(e,t,i,n,o,l){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyLabel=o,this.keyAriaLabel=l}}class BGe{}function LGe(s){if(s.charCode){const t=String.fromCharCode(s.charCode).toUpperCase();return Eg.fromString(t)}const e=s.keyCode;if(e===3)return 7;if(jc)switch(e){case 59:return 85;case 60:if(sa)return 97;break;case 61:return 86;case 107:return 109;case 109:return 111;case 173:return 88;case 224:if(Fi)return 57;break}else if(JZ){if(Fi&&e===93)return 57;if(!Fi&&e===92)return 57}return Dpe[e]||0}const kGe=Fi?256:2048,IGe=512,DGe=1024,GGe=Fi?2048:256;class Jn{constructor(e){var i;this._standardKeyboardEventBrand=!0;const t=e;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.altGraphKey=(i=t.getModifierState)==null?void 0:i.call(t,"AltGraph"),this.keyCode=LGe(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asKeyCodeChord=this._computeKeyCodeChord()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeyCodeChord(){return this._asKeyCodeChord}equals(e){return this._asKeybinding===e}_computeKeybinding(){let e=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode);let t=0;return this.ctrlKey&&(t|=kGe),this.altKey&&(t|=IGe),this.shiftKey&&(t|=DGe),this.metaKey&&(t|=GGe),t|=e,t}_computeKeyCodeChord(){let e=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode),new Z0(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,e)}}const Yse=new WeakMap;function EGe(s){if(!s.parent||s.parent===s)return null;try{const e=s.location,t=s.parent.location;if(e.origin!=="null"&&t.origin!=="null"&&e.origin!==t.origin)return null}catch{return null}return s.parent}class vGe{static getSameOriginWindowChain(e){let t=Yse.get(e);if(!t){t=[],Yse.set(e,t);let i=e,n;do n=EGe(i),n?t.push({window:new WeakRef(i),iframeElement:i.frameElement||null}):t.push({window:new WeakRef(i),iframeElement:null}),i=n;while(i)}return t.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(e,t){if(!t||e===t)return{top:0,left:0};let i=0,n=0;const o=this.getSameOriginWindowChain(e);for(const l of o){const r=l.window.deref();if(i+=(r==null?void 0:r.scrollY)??0,n+=(r==null?void 0:r.scrollX)??0,r===t||!l.iframeElement)break;const a=l.iframeElement.getBoundingClientRect();i+=a.top,n+=a.left}return{top:i,left:n}}}class Jh{constructor(e,t){this.timestamp=Date.now(),this.browserEvent=t,this.leftButton=t.button===0,this.middleButton=t.button===1,this.rightButton=t.button===2,this.buttons=t.buttons,this.target=t.target,this.detail=t.detail||1,t.type==="dblclick"&&(this.detail=2),this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,typeof t.pageX=="number"?(this.posx=t.pageX,this.posy=t.pageY):(this.posx=t.clientX+this.target.ownerDocument.body.scrollLeft+this.target.ownerDocument.documentElement.scrollLeft,this.posy=t.clientY+this.target.ownerDocument.body.scrollTop+this.target.ownerDocument.documentElement.scrollTop);const i=vGe.getPositionOfChildWindowRelativeToAncestorWindow(e,t.view);this.posx-=i.left,this.posy-=i.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}class AA{constructor(e,t=0,i=0){var o;this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=i,this.deltaX=t;let n=!1;if(nB){const l=navigator.userAgent.match(/Chrome\/(\d+)/);n=(l?parseInt(l[1]):123)<=122}if(e){const l=e,r=e,a=((o=e.view)==null?void 0:o.devicePixelRatio)||1;if(typeof l.wheelDeltaY<"u")n?this.deltaY=l.wheelDeltaY/(120*a):this.deltaY=l.wheelDeltaY/120;else if(typeof r.VERTICAL_AXIS<"u"&&r.axis===r.VERTICAL_AXIS)this.deltaY=-r.detail/3;else if(e.type==="wheel"){const d=e;d.deltaMode===d.DOM_DELTA_LINE?jc&&!Fi?this.deltaY=-e.deltaY/3:this.deltaY=-e.deltaY:this.deltaY=-e.deltaY/40}if(typeof l.wheelDeltaX<"u")F0&&Gl?this.deltaX=-(l.wheelDeltaX/120):n?this.deltaX=l.wheelDeltaX/(120*a):this.deltaX=l.wheelDeltaX/120;else if(typeof r.HORIZONTAL_AXIS<"u"&&r.axis===r.HORIZONTAL_AXIS)this.deltaX=-e.detail/3;else if(e.type==="wheel"){const d=e;d.deltaMode===d.DOM_DELTA_LINE?jc&&!Fi?this.deltaX=-e.deltaX/3:this.deltaX=-e.deltaX:this.deltaX=-e.deltaX/40}this.deltaY===0&&this.deltaX===0&&e.wheelDelta&&(n?this.deltaY=e.wheelDelta/(120*a):this.deltaY=e.wheelDelta/120)}}preventDefault(){var e;(e=this.browserEvent)==null||e.preventDefault()}stopPropagation(){var e;(e=this.browserEvent)==null||e.stopPropagation()}}const lge=Symbol("MicrotaskDelay");function RH(s){return!!s&&typeof s.then=="function"}function Xo(s){const e=new Ws,t=s(e.token),i=new Promise((n,o)=>{const l=e.token.onCancellationRequested(()=>{l.dispose(),o(new jh)});Promise.resolve(t).then(r=>{l.dispose(),e.dispose(),n(r)},r=>{l.dispose(),e.dispose(),o(r)})});return new class{cancel(){e.cancel(),e.dispose()}then(n,o){return i.then(n,o)}catch(n){return this.then(void 0,n)}finally(n){return i.finally(n)}}}function sB(s,e,t){return new Promise((i,n)=>{const o=e.onCancellationRequested(()=>{o.dispose(),i(t)});s.then(i,n).finally(()=>o.dispose())})}class xGe{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(e){if(this.isDisposed)return Promise.reject(new Error("Throttler is disposed"));if(this.activePromise){if(this.queuedPromiseFactory=e,!this.queuedPromise){const t=()=>{if(this.queuedPromise=null,this.isDisposed)return;const i=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,i};this.queuedPromise=new Promise(i=>{this.activePromise.then(t,t).then(i)})}return new Promise((t,i)=>{this.queuedPromise.then(t,i)})}return this.activePromise=e(),new Promise((t,i)=>{this.activePromise.then(n=>{this.activePromise=null,t(n)},n=>{this.activePromise=null,i(n)})})}dispose(){this.isDisposed=!0}}const JGe=(s,e)=>{let t=!0;const i=setTimeout(()=>{t=!1,e()},s);return{isTriggered:()=>t,dispose:()=>{clearTimeout(i),t=!1}}},XGe=s=>{let e=!0;return queueMicrotask(()=>{e&&(e=!1,s())}),{isTriggered:()=>e,dispose:()=>{e=!1}}};class Hc{constructor(e){this.defaultDelay=e,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(e,t=this.defaultDelay){this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((n,o)=>{this.doResolve=n,this.doReject=o}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const n=this.task;return this.task=null,n()}}));const i=()=>{var n;this.deferred=null,(n=this.doResolve)==null||n.call(this,null)};return this.deferred=t===lge?XGe(i):JGe(t,i),this.completionPromise}isTriggered(){var e;return!!((e=this.deferred)!=null&&e.isTriggered())}cancel(){var e;this.cancelTimeout(),this.completionPromise&&((e=this.doReject)==null||e.call(this,new jh),this.completionPromise=null)}cancelTimeout(){var e;(e=this.deferred)==null||e.dispose(),this.deferred=null}dispose(){this.cancel()}}class rge{constructor(e){this.delayer=new Hc(e),this.throttler=new xGe}trigger(e,t){return this.delayer.trigger(()=>this.throttler.queue(e),t)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}function A0(s,e){return e?new Promise((t,i)=>{const n=setTimeout(()=>{o.dispose(),t()},s),o=e.onCancellationRequested(()=>{clearTimeout(n),o.dispose(),i(new jh)})}):Xo(t=>A0(s,t))}function HU(s,e=0,t){const i=setTimeout(()=>{s(),t&&n.dispose()},e),n=gt(()=>{clearTimeout(i),t==null||t.deleteAndLeak(n)});return t==null||t.add(n),n}function B$(s,e=i=>!!i,t=null){let i=0;const n=s.length,o=()=>{if(i>=n)return Promise.resolve(t);const l=s[i++];return Promise.resolve(l()).then(a=>e(a)?Promise.resolve(a):o())};return o()}class iu{constructor(e,t){this._isDisposed=!1,this._token=-1,typeof e=="function"&&typeof t=="number"&&this.setIfNotSet(e,t)}dispose(){this.cancel(),this._isDisposed=!0}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,t){if(this._isDisposed)throw new en("Calling 'cancelAndSet' on a disposed TimeoutTimer");this.cancel(),this._token=setTimeout(()=>{this._token=-1,e()},t)}setIfNotSet(e,t){if(this._isDisposed)throw new en("Calling 'setIfNotSet' on a disposed TimeoutTimer");this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,e()},t))}}class L${constructor(){this.disposable=void 0,this.isDisposed=!1}cancel(){var e;(e=this.disposable)==null||e.dispose(),this.disposable=void 0}cancelAndSet(e,t,i=globalThis){if(this.isDisposed)throw new en("Calling 'cancelAndSet' on a disposed IntervalTimer");this.cancel();const n=i.setInterval(()=>{e()},t);this.disposable=gt(()=>{i.clearInterval(n),this.disposable=void 0})}dispose(){this.cancel(),this.isDisposed=!0}}class Rn{constructor(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(e=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}get delay(){return this.timeout}set delay(e){this.timeout=e}isScheduled(){return this.timeoutToken!==-1}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var e;(e=this.runner)==null||e.call(this)}}let age,dC;(function(){typeof globalThis.requestIdleCallback!="function"||typeof globalThis.cancelIdleCallback!="function"?dC=(s,e)=>{Qpe(()=>{if(t)return;const i=Date.now()+15;e(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,i-Date.now())}}))});let t=!1;return{dispose(){t||(t=!0)}}}:dC=(s,e,t)=>{const i=s.requestIdleCallback(e,typeof t=="number"?{timeout:t}:void 0);let n=!1;return{dispose(){n||(n=!0,s.cancelIdleCallback(i))}}},age=s=>dC(globalThis,s)})();class dge{constructor(e,t){this._didRun=!1,this._executor=()=>{try{this._value=t()}catch(i){this._error=i}finally{this._didRun=!0}},this._handle=dC(e,()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}class YGe extends dge{constructor(e){super(globalThis,e)}}class EQ{get isRejected(){var e;return((e=this.outcome)==null?void 0:e.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((e,t)=>{this.completeCallback=e,this.errorCallback=t})}complete(e){return new Promise(t=>{this.completeCallback(e),this.outcome={outcome:0,value:e},t()})}error(e){return new Promise(t=>{this.errorCallback(e),this.outcome={outcome:1,value:e},t()})}cancel(){return this.error(new jh)}}var SH;(function(s){async function e(i){let n;const o=await Promise.all(i.map(l=>l.then(r=>r,r=>{n||(n=r)})));if(typeof n<"u")throw n;return o}s.settled=e;function t(i){return new Promise(async(n,o)=>{try{await i(n,o)}catch(l){o(l)}})}s.withAsyncBody=t})(SH||(SH={}));const nd=class nd{static fromArray(e){return new nd(t=>{t.emitMany(e)})}static fromPromise(e){return new nd(async t=>{t.emitMany(await e)})}static fromPromises(e){return new nd(async t=>{await Promise.all(e.map(async i=>t.emitOne(await i)))})}static merge(e){return new nd(async t=>{await Promise.all(e.map(async i=>{for await(const n of i)t.emitOne(n)}))})}constructor(e,t){this._state=0,this._results=[],this._error=null,this._onReturn=t,this._onStateChanged=new re,queueMicrotask(async()=>{const i={emitOne:n=>this.emitOne(n),emitMany:n=>this.emitMany(n),reject:n=>this.reject(n)};try{await Promise.resolve(e(i)),this.resolve()}catch(n){this.reject(n)}finally{i.emitOne=void 0,i.emitMany=void 0,i.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e<this._results.length)return{done:!1,value:this._results[e++]};if(this._state===1)return{done:!0,value:void 0};await ve.toPromise(this._onStateChanged.event)}while(!0)},return:async()=>{var t;return(t=this._onReturn)==null||t.call(this),{done:!0,value:void 0}}}}static map(e,t){return new nd(async i=>{for await(const n of e)i.emitOne(t(n))})}map(e){return nd.map(this,e)}static filter(e,t){return new nd(async i=>{for await(const n of e)t(n)&&i.emitOne(n)})}filter(e){return nd.filter(this,e)}static coalesce(e){return nd.filter(e,t=>!!t)}coalesce(){return nd.coalesce(this)}static async toPromise(e){const t=[];for await(const i of e)t.push(i);return t}toPromise(){return nd.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}};nd.EMPTY=nd.fromArray([]);let nc=nd;class zGe extends nc{constructor(e,t){super(t),this._source=e}cancel(){this._source.cancel()}}function _Ge(s){const e=new Ws,t=s(e.token);return new zGe(e,async i=>{const n=e.token.onCancellationRequested(()=>{n.dispose(),e.dispose(),i.reject(new jh)});try{for await(const o of t){if(e.token.isCancellationRequested)return;i.emitOne(o)}n.dispose(),e.dispose()}catch(o){n.dispose(),e.dispose(),i.reject(o)}})}/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */const{entries:cge,setPrototypeOf:zse,isFrozen:OGe,getPrototypeOf:jGe,getOwnPropertyDescriptor:HGe}=Object;let{freeze:Rd,seal:Ph,create:hge}=Object,{apply:WH,construct:VH}=typeof Reflect<"u"&&Reflect;Rd||(Rd=function(e){return e});Ph||(Ph=function(e){return e});WH||(WH=function(e,t,i){return e.apply(t,i)});VH||(VH=function(e,t){return new e(...t)});const kL=Pc(Array.prototype.forEach),_se=Pc(Array.prototype.pop),S1=Pc(Array.prototype.push),KI=Pc(String.prototype.toLowerCase),E9=Pc(String.prototype.toString),Ose=Pc(String.prototype.match),W1=Pc(String.prototype.replace),PGe=Pc(String.prototype.indexOf),KGe=Pc(String.prototype.trim),Nu=Pc(Object.prototype.hasOwnProperty),Ka=Pc(RegExp.prototype.test),V1=qGe(TypeError);function Pc(s){return function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return WH(s,e,i)}}function qGe(s){return function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return VH(s,t)}}function Gn(s,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:KI;zse&&zse(s,null);let i=e.length;for(;i--;){let n=e[i];if(typeof n=="string"){const o=t(n);o!==n&&(OGe(e)||(e[i]=o),n=o)}s[n]=!0}return s}function $Ge(s){for(let e=0;e<s.length;e++)Nu(s,e)||(s[e]=null);return s}function pF(s){const e=hge(null);for(const[t,i]of cge(s))Nu(s,t)&&(Array.isArray(i)?e[t]=$Ge(i):i&&typeof i=="object"&&i.constructor===Object?e[t]=pF(i):e[t]=i);return e}function Q1(s,e){for(;s!==null;){const i=HGe(s,e);if(i){if(i.get)return Pc(i.get);if(typeof i.value=="function")return Pc(i.value)}s=jGe(s)}function t(){return null}return t}const jse=Rd(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),v9=Rd(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),x9=Rd(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),eEe=Rd(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),J9=Rd(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),tEe=Rd(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Hse=Rd(["#text"]),Pse=Rd(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),X9=Rd(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Kse=Rd(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),IL=Rd(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),iEe=Ph(/\{\{[\w\W]*|[\w\W]*\}\}/gm),nEe=Ph(/<%[\w\W]*|[\w\W]*%>/gm),sEe=Ph(/\${[\w\W]*}/gm),oEe=Ph(/^data-[\-\w.\u00B7-\uFFFF]/),lEe=Ph(/^aria-[\-\w]+$/),uge=Ph(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),rEe=Ph(/^(?:\w+script|data):/i),aEe=Ph(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),mge=Ph(/^html$/i),dEe=Ph(/^[a-z][.\w]*(-[.\w]+)+$/i);var qse=Object.freeze({__proto__:null,MUSTACHE_EXPR:iEe,ERB_EXPR:nEe,TMPLIT_EXPR:sEe,DATA_ATTR:oEe,ARIA_ATTR:lEe,IS_ALLOWED_URI:uge,IS_SCRIPT_OR_DATA:rEe,ATTR_WHITESPACE:aEe,DOCTYPE_NAME:mge,CUSTOM_ELEMENT:dEe});const y1={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},cEe=function(){return typeof window>"u"?null:window},hEe=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let i=null;const n="data-tt-policy-suffix";t&&t.hasAttribute(n)&&(i=t.getAttribute(n));const o="dompurify"+(i?"#"+i:"");try{return e.createPolicy(o,{createHTML(l){return l},createScriptURL(l){return l}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function pge(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:cEe();const e=Ht=>pge(Ht);if(e.version="3.1.7",e.removed=[],!s||!s.document||s.document.nodeType!==y1.document)return e.isSupported=!1,e;let{document:t}=s;const i=t,n=i.currentScript,{DocumentFragment:o,HTMLTemplateElement:l,Node:r,Element:a,NodeFilter:d,NamedNodeMap:c=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:h,DOMParser:u,trustedTypes:m}=s,p=a.prototype,g=Q1(p,"cloneNode"),b=Q1(p,"remove"),f=Q1(p,"nextSibling"),Z=Q1(p,"childNodes"),A=Q1(p,"parentNode");if(typeof l=="function"){const Ht=t.createElement("template");Ht.content&&Ht.content.ownerDocument&&(t=Ht.content.ownerDocument)}let N,W="";const{implementation:Q,createNodeIterator:R,createDocumentFragment:M,getElementsByTagName:w}=t,{importNode:Y}=i;let G={};e.isSupported=typeof cge=="function"&&typeof A=="function"&&Q&&Q.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:P,ERB_EXPR:j,TMPLIT_EXPR:X,DATA_ATTR:ie,ARIA_ATTR:se,IS_SCRIPT_OR_DATA:pe,ATTR_WHITESPACE:Ue,CUSTOM_ELEMENT:Qe}=qse;let{IS_ALLOWED_URI:He}=qse,Te=null;const xe=Gn({},[...jse,...v9,...x9,...J9,...Hse]);let Je=null;const Mt=Gn({},[...Pse,...X9,...Kse,...IL]);let St=Object.seal(hge(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Pe=null,Be=null,rt=!0,Tt=!0,qt=!1,yt=!0,fe=!1,Vi=!0,st=!1,Fn=!1,qi=!1,Zo=!1,is=!1,Ao=!1,js=!0,xl=!1;const wi="user-content-";let rl=!0,yo=!1,Dt={},oo=null;const oh=Gn({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let ou=null;const Oa=Gn({},["audio","video","img","source","image","track"]);let al=null;const je=Gn({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ut="http://www.w3.org/1998/Math/MathML",cn="http://www.w3.org/2000/svg",$i="http://www.w3.org/1999/xhtml";let ei=$i,ja=!1,_i=null;const hn=Gn({},[ut,cn,$i],E9);let yr=null;const wd=["application/xhtml+xml","text/html"],Ai="text/html";let Li=null,ma=null;const lh=t.createElement("form"),Oi=function(Ae){return Ae instanceof RegExp||Ae instanceof Function},No=function(){let Ae=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ma&&ma===Ae)){if((!Ae||typeof Ae!="object")&&(Ae={}),Ae=pF(Ae),yr=wd.indexOf(Ae.PARSER_MEDIA_TYPE)===-1?Ai:Ae.PARSER_MEDIA_TYPE,Li=yr==="application/xhtml+xml"?E9:KI,Te=Nu(Ae,"ALLOWED_TAGS")?Gn({},Ae.ALLOWED_TAGS,Li):xe,Je=Nu(Ae,"ALLOWED_ATTR")?Gn({},Ae.ALLOWED_ATTR,Li):Mt,_i=Nu(Ae,"ALLOWED_NAMESPACES")?Gn({},Ae.ALLOWED_NAMESPACES,E9):hn,al=Nu(Ae,"ADD_URI_SAFE_ATTR")?Gn(pF(je),Ae.ADD_URI_SAFE_ATTR,Li):je,ou=Nu(Ae,"ADD_DATA_URI_TAGS")?Gn(pF(Oa),Ae.ADD_DATA_URI_TAGS,Li):Oa,oo=Nu(Ae,"FORBID_CONTENTS")?Gn({},Ae.FORBID_CONTENTS,Li):oh,Pe=Nu(Ae,"FORBID_TAGS")?Gn({},Ae.FORBID_TAGS,Li):{},Be=Nu(Ae,"FORBID_ATTR")?Gn({},Ae.FORBID_ATTR,Li):{},Dt=Nu(Ae,"USE_PROFILES")?Ae.USE_PROFILES:!1,rt=Ae.ALLOW_ARIA_ATTR!==!1,Tt=Ae.ALLOW_DATA_ATTR!==!1,qt=Ae.ALLOW_UNKNOWN_PROTOCOLS||!1,yt=Ae.ALLOW_SELF_CLOSE_IN_ATTR!==!1,fe=Ae.SAFE_FOR_TEMPLATES||!1,Vi=Ae.SAFE_FOR_XML!==!1,st=Ae.WHOLE_DOCUMENT||!1,Zo=Ae.RETURN_DOM||!1,is=Ae.RETURN_DOM_FRAGMENT||!1,Ao=Ae.RETURN_TRUSTED_TYPE||!1,qi=Ae.FORCE_BODY||!1,js=Ae.SANITIZE_DOM!==!1,xl=Ae.SANITIZE_NAMED_PROPS||!1,rl=Ae.KEEP_CONTENT!==!1,yo=Ae.IN_PLACE||!1,He=Ae.ALLOWED_URI_REGEXP||uge,ei=Ae.NAMESPACE||$i,St=Ae.CUSTOM_ELEMENT_HANDLING||{},Ae.CUSTOM_ELEMENT_HANDLING&&Oi(Ae.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(St.tagNameCheck=Ae.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Ae.CUSTOM_ELEMENT_HANDLING&&Oi(Ae.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(St.attributeNameCheck=Ae.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Ae.CUSTOM_ELEMENT_HANDLING&&typeof Ae.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(St.allowCustomizedBuiltInElements=Ae.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),fe&&(Tt=!1),is&&(Zo=!0),Dt&&(Te=Gn({},Hse),Je=[],Dt.html===!0&&(Gn(Te,jse),Gn(Je,Pse)),Dt.svg===!0&&(Gn(Te,v9),Gn(Je,X9),Gn(Je,IL)),Dt.svgFilters===!0&&(Gn(Te,x9),Gn(Je,X9),Gn(Je,IL)),Dt.mathMl===!0&&(Gn(Te,J9),Gn(Je,Kse),Gn(Je,IL))),Ae.ADD_TAGS&&(Te===xe&&(Te=pF(Te)),Gn(Te,Ae.ADD_TAGS,Li)),Ae.ADD_ATTR&&(Je===Mt&&(Je=pF(Je)),Gn(Je,Ae.ADD_ATTR,Li)),Ae.ADD_URI_SAFE_ATTR&&Gn(al,Ae.ADD_URI_SAFE_ATTR,Li),Ae.FORBID_CONTENTS&&(oo===oh&&(oo=pF(oo)),Gn(oo,Ae.FORBID_CONTENTS,Li)),rl&&(Te["#text"]=!0),st&&Gn(Te,["html","head","body"]),Te.table&&(Gn(Te,["tbody"]),delete Pe.tbody),Ae.TRUSTED_TYPES_POLICY){if(typeof Ae.TRUSTED_TYPES_POLICY.createHTML!="function")throw V1('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Ae.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw V1('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');N=Ae.TRUSTED_TYPES_POLICY,W=N.createHTML("")}else N===void 0&&(N=hEe(m,n)),N!==null&&typeof W=="string"&&(W=N.createHTML(""));Rd&&Rd(Ae),ma=Ae}},hi=Gn({},["mi","mo","mn","ms","mtext"]),ee=Gn({},["annotation-xml"]),ne=Gn({},["title","style","font","a","script"]),le=Gn({},[...v9,...x9,...eEe]),ue=Gn({},[...J9,...tEe]),be=function(Ae){let ct=A(Ae);(!ct||!ct.tagName)&&(ct={namespaceURI:ei,tagName:"template"});const Yt=KI(Ae.tagName),Bn=KI(ct.tagName);return _i[Ae.namespaceURI]?Ae.namespaceURI===cn?ct.namespaceURI===$i?Yt==="svg":ct.namespaceURI===ut?Yt==="svg"&&(Bn==="annotation-xml"||hi[Bn]):!!le[Yt]:Ae.namespaceURI===ut?ct.namespaceURI===$i?Yt==="math":ct.namespaceURI===cn?Yt==="math"&&ee[Bn]:!!ue[Yt]:Ae.namespaceURI===$i?ct.namespaceURI===cn&&!ee[Bn]||ct.namespaceURI===ut&&!hi[Bn]?!1:!ue[Yt]&&(ne[Yt]||!le[Yt]):!!(yr==="application/xhtml+xml"&&_i[Ae.namespaceURI]):!1},Ce=function(Ae){S1(e.removed,{element:Ae});try{A(Ae).removeChild(Ae)}catch{b(Ae)}},Xe=function(Ae,ct){try{S1(e.removed,{attribute:ct.getAttributeNode(Ae),from:ct})}catch{S1(e.removed,{attribute:null,from:ct})}if(ct.removeAttribute(Ae),Ae==="is"&&!Je[Ae])if(Zo||is)try{Ce(ct)}catch{}else try{ct.setAttribute(Ae,"")}catch{}},Nt=function(Ae){let ct=null,Yt=null;if(qi)Ae="<remove></remove>"+Ae;else{const So=Ose(Ae,/^[\r\n\t ]+/);Yt=So&&So[0]}yr==="application/xhtml+xml"&&ei===$i&&(Ae='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Ae+"</body></html>");const Bn=N?N.createHTML(Ae):Ae;if(ei===$i)try{ct=new u().parseFromString(Bn,yr)}catch{}if(!ct||!ct.documentElement){ct=Q.createDocument(ei,"template",null);try{ct.documentElement.innerHTML=ja?W:Bn}catch{}}const Ro=ct.body||ct.documentElement;return Ae&&Yt&&Ro.insertBefore(t.createTextNode(Yt),Ro.childNodes[0]||null),ei===$i?w.call(ct,st?"html":"body")[0]:st?ct.documentElement:Ro},Bt=function(Ae){return R.call(Ae.ownerDocument||Ae,Ae,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT|d.SHOW_PROCESSING_INSTRUCTION|d.SHOW_CDATA_SECTION,null)},Ni=function(Ae){return Ae instanceof h&&(typeof Ae.nodeName!="string"||typeof Ae.textContent!="string"||typeof Ae.removeChild!="function"||!(Ae.attributes instanceof c)||typeof Ae.removeAttribute!="function"||typeof Ae.setAttribute!="function"||typeof Ae.namespaceURI!="string"||typeof Ae.insertBefore!="function"||typeof Ae.hasChildNodes!="function")},un=function(Ae){return typeof r=="function"&&Ae instanceof r},Zn=function(Ae,ct,Yt){G[Ae]&&kL(G[Ae],Bn=>{Bn.call(e,ct,Yt,ma)})},Vn=function(Ae){let ct=null;if(Zn("beforeSanitizeElements",Ae,null),Ni(Ae))return Ce(Ae),!0;const Yt=Li(Ae.nodeName);if(Zn("uponSanitizeElement",Ae,{tagName:Yt,allowedTags:Te}),Ae.hasChildNodes()&&!un(Ae.firstElementChild)&&Ka(/<[/\w]/g,Ae.innerHTML)&&Ka(/<[/\w]/g,Ae.textContent)||Ae.nodeType===y1.progressingInstruction||Vi&&Ae.nodeType===y1.comment&&Ka(/<[/\w]/g,Ae.data))return Ce(Ae),!0;if(!Te[Yt]||Pe[Yt]){if(!Pe[Yt]&&mo(Yt)&&(St.tagNameCheck instanceof RegExp&&Ka(St.tagNameCheck,Yt)||St.tagNameCheck instanceof Function&&St.tagNameCheck(Yt)))return!1;if(rl&&!oo[Yt]){const Bn=A(Ae)||Ae.parentNode,Ro=Z(Ae)||Ae.childNodes;if(Ro&&Bn){const So=Ro.length;for(let Jl=So-1;Jl>=0;--Jl){const dr=g(Ro[Jl],!0);dr.__removalCount=(Ae.__removalCount||0)+1,Bn.insertBefore(dr,f(Ae))}}}return Ce(Ae),!0}return Ae instanceof a&&!be(Ae)||(Yt==="noscript"||Yt==="noembed"||Yt==="noframes")&&Ka(/<\/no(script|embed|frames)/i,Ae.innerHTML)?(Ce(Ae),!0):(fe&&Ae.nodeType===y1.text&&(ct=Ae.textContent,kL([P,j,X],Bn=>{ct=W1(ct,Bn," ")}),Ae.textContent!==ct&&(S1(e.removed,{element:Ae.cloneNode()}),Ae.textContent=ct)),Zn("afterSanitizeElements",Ae,null),!1)},ns=function(Ae,ct,Yt){if(js&&(ct==="id"||ct==="name")&&(Yt in t||Yt in lh))return!1;if(!(Tt&&!Be[ct]&&Ka(ie,ct))){if(!(rt&&Ka(se,ct))){if(!Je[ct]||Be[ct]){if(!(mo(Ae)&&(St.tagNameCheck instanceof RegExp&&Ka(St.tagNameCheck,Ae)||St.tagNameCheck instanceof Function&&St.tagNameCheck(Ae))&&(St.attributeNameCheck instanceof RegExp&&Ka(St.attributeNameCheck,ct)||St.attributeNameCheck instanceof Function&&St.attributeNameCheck(ct))||ct==="is"&&St.allowCustomizedBuiltInElements&&(St.tagNameCheck instanceof RegExp&&Ka(St.tagNameCheck,Yt)||St.tagNameCheck instanceof Function&&St.tagNameCheck(Yt))))return!1}else if(!al[ct]){if(!Ka(He,W1(Yt,Ue,""))){if(!((ct==="src"||ct==="xlink:href"||ct==="href")&&Ae!=="script"&&PGe(Yt,"data:")===0&&ou[Ae])){if(!(qt&&!Ka(pe,W1(Yt,Ue,"")))){if(Yt)return!1}}}}}}return!0},mo=function(Ae){return Ae!=="annotation-xml"&&Ose(Ae,Qe)},xs=function(Ae){Zn("beforeSanitizeAttributes",Ae,null);const{attributes:ct}=Ae;if(!ct)return;const Yt={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Je};let Bn=ct.length;for(;Bn--;){const Ro=ct[Bn],{name:So,namespaceURI:Jl,value:dr}=Ro,Fc=Li(So);let Xl=So==="value"?dr:KGe(dr);if(Yt.attrName=Fc,Yt.attrValue=Xl,Yt.keepAttr=!0,Yt.forceKeepAttr=void 0,Zn("uponSanitizeAttribute",Ae,Yt),Xl=Yt.attrValue,Yt.forceKeepAttr||(Xe(So,Ae),!Yt.keepAttr))continue;if(!yt&&Ka(/\/>/i,Xl)){Xe(So,Ae);continue}fe&&kL([P,j,X],mN=>{Xl=W1(Xl,mN," ")});const lu=Li(Ae.nodeName);if(ns(lu,Fc,Xl)){if(xl&&(Fc==="id"||Fc==="name")&&(Xe(So,Ae),Xl=wi+Xl),Vi&&Ka(/((--!?|])>)|<\/(style|title)/i,Xl)){Xe(So,Ae);continue}if(N&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Jl)switch(m.getAttributeType(lu,Fc)){case"TrustedHTML":{Xl=N.createHTML(Xl);break}case"TrustedScriptURL":{Xl=N.createScriptURL(Xl);break}}try{Jl?Ae.setAttributeNS(Jl,So,Xl):Ae.setAttribute(So,Xl),Ni(Ae)?Ce(Ae):_se(e.removed)}catch{}}}Zn("afterSanitizeAttributes",Ae,null)},Cr=function Ht(Ae){let ct=null;const Yt=Bt(Ae);for(Zn("beforeSanitizeShadowDOM",Ae,null);ct=Yt.nextNode();)Zn("uponSanitizeShadowNode",ct,null),!Vn(ct)&&(ct.content instanceof o&&Ht(ct.content),xs(ct));Zn("afterSanitizeShadowDOM",Ae,null)};return e.sanitize=function(Ht){let Ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ct=null,Yt=null,Bn=null,Ro=null;if(ja=!Ht,ja&&(Ht="<!-->"),typeof Ht!="string"&&!un(Ht))if(typeof Ht.toString=="function"){if(Ht=Ht.toString(),typeof Ht!="string")throw V1("dirty is not a string, aborting")}else throw V1("toString is not a function");if(!e.isSupported)return Ht;if(Fn||No(Ae),e.removed=[],typeof Ht=="string"&&(yo=!1),yo){if(Ht.nodeName){const dr=Li(Ht.nodeName);if(!Te[dr]||Pe[dr])throw V1("root node is forbidden and cannot be sanitized in-place")}}else if(Ht instanceof r)ct=Nt("<!---->"),Yt=ct.ownerDocument.importNode(Ht,!0),Yt.nodeType===y1.element&&Yt.nodeName==="BODY"||Yt.nodeName==="HTML"?ct=Yt:ct.appendChild(Yt);else{if(!Zo&&!fe&&!st&&Ht.indexOf("<")===-1)return N&&Ao?N.createHTML(Ht):Ht;if(ct=Nt(Ht),!ct)return Zo?null:Ao?W:""}ct&&qi&&Ce(ct.firstChild);const So=Bt(yo?Ht:ct);for(;Bn=So.nextNode();)Vn(Bn)||(Bn.content instanceof o&&Cr(Bn.content),xs(Bn));if(yo)return Ht;if(Zo){if(is)for(Ro=M.call(ct.ownerDocument);ct.firstChild;)Ro.appendChild(ct.firstChild);else Ro=ct;return(Je.shadowroot||Je.shadowrootmode)&&(Ro=Y.call(i,Ro,!0)),Ro}let Jl=st?ct.outerHTML:ct.innerHTML;return st&&Te["!doctype"]&&ct.ownerDocument&&ct.ownerDocument.doctype&&ct.ownerDocument.doctype.name&&Ka(mge,ct.ownerDocument.doctype.name)&&(Jl="<!DOCTYPE "+ct.ownerDocument.doctype.name+`>
- `+Jl),fe&&kL([P,j,X],dr=>{Jl=W1(Jl,dr," ")}),N&&Ao?N.createHTML(Jl):Jl},e.setConfig=function(){let Ht=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};No(Ht),Fn=!0},e.clearConfig=function(){ma=null,Fn=!1},e.isValidAttribute=function(Ht,Ae,ct){ma||No({});const Yt=Li(Ht),Bn=Li(Ae);return ns(Yt,Bn,ct)},e.addHook=function(Ht,Ae){typeof Ae=="function"&&(G[Ht]=G[Ht]||[],S1(G[Ht],Ae))},e.removeHook=function(Ht){if(G[Ht])return _se(G[Ht])},e.removeHooks=function(Ht){G[Ht]&&(G[Ht]=[])},e.removeAllHooks=function(){G={}},e}var kp=pge();kp.version;kp.isSupported;const gge=kp.sanitize;kp.setConfig;kp.clearConfig;kp.isValidAttribute;const bge=kp.addHook,Uge=kp.removeHook;kp.removeHooks;kp.removeAllHooks;var Xt;(function(s){s.inMemory="inmemory",s.vscode="vscode",s.internal="private",s.walkThrough="walkThrough",s.walkThroughSnippet="walkThroughSnippet",s.http="http",s.https="https",s.file="file",s.mailto="mailto",s.untitled="untitled",s.data="data",s.command="command",s.vscodeRemote="vscode-remote",s.vscodeRemoteResource="vscode-remote-resource",s.vscodeManagedRemoteResource="vscode-managed-remote-resource",s.vscodeUserData="vscode-userdata",s.vscodeCustomEditor="vscode-custom-editor",s.vscodeNotebookCell="vscode-notebook-cell",s.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",s.vscodeNotebookCellMetadataDiff="vscode-notebook-cell-metadata-diff",s.vscodeNotebookCellOutput="vscode-notebook-cell-output",s.vscodeNotebookCellOutputDiff="vscode-notebook-cell-output-diff",s.vscodeNotebookMetadata="vscode-notebook-metadata",s.vscodeInteractiveInput="vscode-interactive-input",s.vscodeSettings="vscode-settings",s.vscodeWorkspaceTrust="vscode-workspace-trust",s.vscodeTerminal="vscode-terminal",s.vscodeChatCodeBlock="vscode-chat-code-block",s.vscodeChatCodeCompareBlock="vscode-chat-code-compare-block",s.vscodeChatSesssion="vscode-chat-editor",s.webviewPanel="webview-panel",s.vscodeWebview="vscode-webview",s.extension="extension",s.vscodeFileResource="vscode-file",s.tmp="tmp",s.vsls="vsls",s.vscodeSourceControl="vscode-scm",s.commentsInput="comment",s.codeSetting="code-setting",s.outputChannel="output"})(Xt||(Xt={}));function K5(s,e){return At.isUri(s)?lS(s.scheme,e):V$(s,e+":")}function QH(s,...e){return e.some(t=>K5(s,t))}const uEe="tkn";class mEe{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._serverRootPath="/"}setPreferredWebSchema(e){this._preferredWebSchema=e}get _remoteResourcesPath(){return co.join(this._serverRootPath,Xt.vscodeRemoteResource)}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(r){return vt(r),e}const t=e.authority;let i=this._hosts[t];i&&i.indexOf(":")!==-1&&i.indexOf("[")===-1&&(i=`[${i}]`);const n=this._ports[t],o=this._connectionTokens[t];let l=`path=${encodeURIComponent(e.path)}`;return typeof o=="string"&&(l+=`&${uEe}=${encodeURIComponent(o)}`),At.from({scheme:jA?this._preferredWebSchema:Xt.vscodeRemoteResource,authority:`${i}:${n}`,path:this._remoteResourcesPath,query:l})}}const fge=new mEe,pEe="vscode-app",yw=class yw{asBrowserUri(e){const t=this.toUri(e);return this.uriToBrowserUri(t)}uriToBrowserUri(e){return e.scheme===Xt.vscodeRemote?fge.rewrite(e):e.scheme===Xt.file&&(vu||AIe===`${Xt.vscodeFileResource}://${yw.FALLBACK_AUTHORITY}`)?e.with({scheme:Xt.vscodeFileResource,authority:e.authority||yw.FALLBACK_AUTHORITY,query:null,fragment:null}):e}toUri(e,t){if(At.isUri(e))return e;if(globalThis._VSCODE_FILE_ROOT){const i=globalThis._VSCODE_FILE_ROOT;if(/^\w[\w\d+.-]*:\/\//.test(i))return At.joinPath(At.parse(i,!0),e);const n=zDe(i,e);return At.file(n)}return At.parse(t.toUrl(e))}};yw.FALLBACK_AUTHORITY=pEe;let yH=yw;const q5=new yH;var CH;(function(s){const e=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);s.CoopAndCoep=Object.freeze(e.get("3"));const t="vscode-coi";function i(o){let l;typeof o=="string"?l=new URL(o).searchParams:o instanceof URL?l=o.searchParams:At.isUri(o)&&(l=new URL(o.toString(!0)).searchParams);const r=l==null?void 0:l.get(t);if(r)return e.get(r)}s.getHeadersFromQuery=i;function n(o,l,r){if(!globalThis.crossOriginIsolated)return;const a=l&&r?"3":r?"2":"1";o instanceof URLSearchParams?o.set(t,a):o[t]=a}s.addSearchParam=n})(CH||(CH={}));function $5(s){return eY(s,0)}function eY(s,e){switch(typeof s){case"object":return s===null?qg(349,e):Array.isArray(s)?bEe(s,e):UEe(s,e);case"string":return k$(s,e);case"boolean":return gEe(s,e);case"number":return qg(s,e);case"undefined":return qg(937,e);default:return qg(617,e)}}function qg(s,e){return(e<<5)-e+s|0}function gEe(s,e){return qg(s?433:863,e)}function k$(s,e){e=qg(149417,e);for(let t=0,i=s.length;t<i;t++)e=qg(s.charCodeAt(t),e);return e}function bEe(s,e){return e=qg(104579,e),s.reduce((t,i)=>eY(i,t),e)}function UEe(s,e){return e=qg(181387,e),Object.keys(s).sort().reduce((t,i)=>(t=k$(i,t),eY(s[i],t)),e)}function Y9(s,e,t=32){const i=t-e,n=~((1<<i)-1);return(s<<e|(n&s)>>>i)>>>0}function $se(s,e=0,t=s.byteLength,i=0){for(let n=0;n<t;n++)s[e+n]=i}function fEe(s,e,t="0"){for(;s.length<e;)s=t+s;return s}function C1(s,e=32){return s instanceof ArrayBuffer?Array.from(new Uint8Array(s)).map(t=>t.toString(16).padStart(2,"0")).join(""):fEe((s>>>0).toString(16),e/4)}const sX=class sX{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(64+3),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(t===0)return;const i=this._buff;let n=this._buffLen,o=this._leftoverHighSurrogate,l,r;for(o!==0?(l=o,r=-1,o=0):(l=e.charCodeAt(0),r=0);;){let a=l;if(xo(l))if(r+1<t){const d=e.charCodeAt(r+1);ZA(d)?(r++,a=Q$(l,d)):a=65533}else{o=l;break}else ZA(l)&&(a=65533);if(n=this._push(i,n,a),r++,r<t)l=e.charCodeAt(r);else break}this._buffLen=n,this._leftoverHighSurrogate=o}_push(e,t,i){return i<128?e[t++]=i:i<2048?(e[t++]=192|(i&1984)>>>6,e[t++]=128|(i&63)>>>0):i<65536?(e[t++]=224|(i&61440)>>>12,e[t++]=128|(i&4032)>>>6,e[t++]=128|(i&63)>>>0):(e[t++]=240|(i&1835008)>>>18,e[t++]=128|(i&258048)>>>12,e[t++]=128|(i&4032)>>>6,e[t++]=128|(i&63)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64+0],e[1]=e[64+1],e[2]=e[64+2]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),C1(this._h0)+C1(this._h1)+C1(this._h2)+C1(this._h3)+C1(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,$se(this._buff,this._buffLen),this._buffLen>56&&(this._step(),$se(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=sX._bigBlock32,t=this._buffDV;for(let h=0;h<64;h+=4)e.setUint32(h,t.getUint32(h,!1),!1);for(let h=64;h<320;h+=4)e.setUint32(h,Y9(e.getUint32(h-12,!1)^e.getUint32(h-32,!1)^e.getUint32(h-56,!1)^e.getUint32(h-64,!1),1),!1);let i=this._h0,n=this._h1,o=this._h2,l=this._h3,r=this._h4,a,d,c;for(let h=0;h<80;h++)h<20?(a=n&o|~n&l,d=1518500249):h<40?(a=n^o^l,d=1859775393):h<60?(a=n&o|n&l|o&l,d=2400959708):(a=n^o^l,d=3395469782),c=Y9(i,5)+a+r+d+e.getUint32(h*4,!1)&4294967295,r=l,l=o,o=Y9(n,30),n=i,i=c;this._h0=this._h0+i&4294967295,this._h1=this._h1+n&4294967295,this._h2=this._h2+o&4294967295,this._h3=this._h3+l&4294967295,this._h4=this._h4+r&4294967295}};sX._bigBlock32=new DataView(new ArrayBuffer(320));let wH=sX;const{registerWindow:Jft,getWindow:Wt,getDocument:Xft,getWindows:Fge,getWindowsCount:FEe,getWindowId:xE,getWindowById:eoe,hasWindow:Yft,onDidRegisterWindow:tY,onWillUnregisterWindow:ZEe,onDidUnregisterWindow:AEe}=function(){const s=new Map;hGe(Qn,1);const e={window:Qn,disposables:new Ze};s.set(Qn.vscodeWindowId,e);const t=new re,i=new re,n=new re;function o(l,r){return(typeof l=="number"?s.get(l):void 0)??(r?e:void 0)}return{onDidRegisterWindow:t.event,onWillUnregisterWindow:n.event,onDidUnregisterWindow:i.event,registerWindow(l){if(s.has(l.vscodeWindowId))return de.None;const r=new Ze,a={window:l,disposables:r.add(new Ze)};return s.set(l.vscodeWindowId,a),r.add(gt(()=>{s.delete(l.vscodeWindowId),i.fire(l)})),r.add(ge(l,De.BEFORE_UNLOAD,()=>{n.fire(l)})),t.fire(a),r},getWindows(){return s.values()},getWindowsCount(){return s.size},getWindowId(l){return l.vscodeWindowId},hasWindow(l){return s.has(l)},getWindowById:o,getWindow(l){var d;const r=l;if((d=r==null?void 0:r.ownerDocument)!=null&&d.defaultView)return r.ownerDocument.defaultView.window;const a=l;return a!=null&&a.view?a.view.window:Qn},getDocument(l){return Wt(l).document}}}();function Fl(s){for(;s.firstChild;)s.firstChild.remove()}class NEe{constructor(e,t,i,n){this._node=e,this._type=t,this._handler=i,this._options=n||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function ge(s,e,t,i){return new NEe(s,e,t,i)}function Zge(s,e){return function(t){return e(new Jh(s,t))}}function REe(s){return function(e){return s(new Jn(e))}}const Ms=function(e,t,i,n){let o=i;return t==="click"||t==="mousedown"||t==="contextmenu"?o=Zge(Wt(e),i):(t==="keydown"||t==="keypress"||t==="keyup")&&(o=REe(i)),ge(e,t,o,n)},SEe=function(e,t,i){const n=Zge(Wt(e),t);return WEe(e,n,i)};function WEe(s,e,t){return ge(s,ju&&T$.pointerEvents?De.POINTER_DOWN:De.MOUSE_DOWN,e,t)}function xy(s,e,t){return dC(s,e,t)}class z9 extends dge{constructor(e,t){super(e,t)}}let JE,Sd;class I$ extends L${constructor(e){super(),this.defaultTarget=e&&Wt(e)}cancelAndSet(e,t,i){return super.cancelAndSet(e,t,i??this.defaultTarget)}}class _9{constructor(e,t=0){this._runner=e,this.priority=t,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(e){vt(e)}}static sort(e,t){return t.priority-e.priority}}(function(){const s=new Map,e=new Map,t=new Map,i=new Map,n=o=>{t.set(o,!1);const l=s.get(o)??[];for(e.set(o,l),s.set(o,[]),i.set(o,!0);l.length>0;)l.sort(_9.sort),l.shift().execute();i.set(o,!1)};Sd=(o,l,r=0)=>{const a=xE(o),d=new _9(l,r);let c=s.get(a);return c||(c=[],s.set(a,c)),c.push(d),t.get(a)||(t.set(a,!0),o.requestAnimationFrame(()=>n(a))),d},JE=(o,l,r)=>{const a=xE(o);if(i.get(a)){const d=new _9(l,r);let c=e.get(a);return c||(c=[],e.set(a,c)),c.push(d),d}else return Sd(o,l,r)}})();function iY(s){return Wt(s).getComputedStyle(s,null)}function N0(s,e){const t=Wt(s),i=t.document;if(s!==i.body)return new bn(s.clientWidth,s.clientHeight);if(ju&&(t!=null&&t.visualViewport))return new bn(t.visualViewport.width,t.visualViewport.height);if(t!=null&&t.innerWidth&&t.innerHeight)return new bn(t.innerWidth,t.innerHeight);if(i.body&&i.body.clientWidth&&i.body.clientHeight)return new bn(i.body.clientWidth,i.body.clientHeight);if(i.documentElement&&i.documentElement.clientWidth&&i.documentElement.clientHeight)return new bn(i.documentElement.clientWidth,i.documentElement.clientHeight);if(e)return N0(e);throw new Error("Unable to figure out browser width and height")}class eo{static convertToPixels(e,t){return parseFloat(t)||0}static getDimension(e,t,i){const n=iY(e),o=n?n.getPropertyValue(t):"0";return eo.convertToPixels(e,o)}static getBorderLeftWidth(e){return eo.getDimension(e,"border-left-width","borderLeftWidth")}static getBorderRightWidth(e){return eo.getDimension(e,"border-right-width","borderRightWidth")}static getBorderTopWidth(e){return eo.getDimension(e,"border-top-width","borderTopWidth")}static getBorderBottomWidth(e){return eo.getDimension(e,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(e){return eo.getDimension(e,"padding-left","paddingLeft")}static getPaddingRight(e){return eo.getDimension(e,"padding-right","paddingRight")}static getPaddingTop(e){return eo.getDimension(e,"padding-top","paddingTop")}static getPaddingBottom(e){return eo.getDimension(e,"padding-bottom","paddingBottom")}static getMarginLeft(e){return eo.getDimension(e,"margin-left","marginLeft")}static getMarginTop(e){return eo.getDimension(e,"margin-top","marginTop")}static getMarginRight(e){return eo.getDimension(e,"margin-right","marginRight")}static getMarginBottom(e){return eo.getDimension(e,"margin-bottom","marginBottom")}}const bZ=class bZ{constructor(e,t){this.width=e,this.height=t}with(e=this.width,t=this.height){return e!==this.width||t!==this.height?new bZ(e,t):this}static is(e){return typeof e=="object"&&typeof e.height=="number"&&typeof e.width=="number"}static lift(e){return e instanceof bZ?e:new bZ(e.width,e.height)}static equals(e,t){return e===t?!0:!e||!t?!1:e.width===t.width&&e.height===t.height}};bZ.None=new bZ(0,0);let bn=bZ;function Age(s){let e=s.offsetParent,t=s.offsetTop,i=s.offsetLeft;for(;(s=s.parentNode)!==null&&s!==s.ownerDocument.body&&s!==s.ownerDocument.documentElement;){t-=s.scrollTop;const n=Rge(s)?null:iY(s);n&&(i-=n.direction!=="rtl"?s.scrollLeft:-s.scrollLeft),s===e&&(i+=eo.getBorderLeftWidth(s),t+=eo.getBorderTopWidth(s),t+=s.offsetTop,i+=s.offsetLeft,e=s.offsetParent)}return{left:i,top:t}}function VEe(s,e,t){typeof e=="number"&&(s.style.width=`${e}px`),typeof t=="number"&&(s.style.height=`${t}px`)}function _s(s){const e=s.getBoundingClientRect(),t=Wt(s);return{left:e.left+t.scrollX,top:e.top+t.scrollY,width:e.width,height:e.height}}function Nge(s){let e=s,t=1;do{const i=iY(e).zoom;i!=null&&i!=="1"&&(t*=i),e=e.parentElement}while(e!==null&&e!==e.ownerDocument.documentElement);return t}function ld(s){const e=eo.getMarginLeft(s)+eo.getMarginRight(s);return s.offsetWidth+e}function O9(s){const e=eo.getBorderLeftWidth(s)+eo.getBorderRightWidth(s),t=eo.getPaddingLeft(s)+eo.getPaddingRight(s);return s.offsetWidth-e-t}function QEe(s){const e=eo.getBorderTopWidth(s)+eo.getBorderBottomWidth(s),t=eo.getPaddingTop(s)+eo.getPaddingBottom(s);return s.offsetHeight-e-t}function $g(s){const e=eo.getMarginTop(s)+eo.getMarginBottom(s);return s.offsetHeight+e}function Jo(s,e){return!!(e!=null&&e.contains(s))}function yEe(s,e,t){for(;s&&s.nodeType===s.ELEMENT_NODE;){if(s.classList.contains(e))return s;if(t){if(typeof t=="string"){if(s.classList.contains(t))return null}else if(s===t)return null}s=s.parentNode}return null}function j9(s,e,t){return!!yEe(s,e,t)}function Rge(s){return s&&!!s.host&&!!s.mode}function XE(s){return!!NA(s)}function NA(s){var e;for(;s.parentNode;){if(s===((e=s.ownerDocument)==null?void 0:e.body))return null;s=s.parentNode}return Rge(s)?s:null}function kl(){let s=vQ().activeElement;for(;s!=null&&s.shadowRoot;)s=s.shadowRoot.activeElement;return s}function nY(s){return kl()===s}function Sge(s){return Jo(kl(),s)}function vQ(){return FEe()<=1?Qn.document:Array.from(Fge()).map(({window:e})=>e.document).find(e=>e.hasFocus())??Qn.document}function Jy(){var e;return((e=vQ().defaultView)==null?void 0:e.window)??Qn}const D$=new Map;function Wge(){return new CEe}class CEe{constructor(){this._currentCssStyle="",this._styleSheet=void 0}setStyle(e){e!==this._currentCssStyle&&(this._currentCssStyle=e,this._styleSheet?this._styleSheet.innerText=e:this._styleSheet=cc(Qn.document.head,t=>t.innerText=e))}dispose(){this._styleSheet&&(this._styleSheet.remove(),this._styleSheet=void 0)}}function cc(s=Qn.document.head,e,t){const i=document.createElement("style");if(i.type="text/css",i.media="screen",e==null||e(i),s.appendChild(i),t&&t.add(gt(()=>i.remove())),s===Qn.document.head){const n=new Set;D$.set(i,n);for(const{window:o,disposables:l}of Fge()){if(o===Qn)continue;const r=l.add(wEe(i,n,o));t==null||t.add(r)}}return i}function wEe(s,e,t){var o,l;const i=new Ze,n=s.cloneNode(!0);t.document.head.appendChild(n),i.add(gt(()=>n.remove()));for(const r of Qge(s))(l=n.sheet)==null||l.insertRule(r.cssText,(o=n.sheet)==null?void 0:o.cssRules.length);return i.add(MEe.observe(s,i,{childList:!0})(()=>{n.textContent=s.textContent})),e.add(n),i.add(gt(()=>e.delete(n))),i}const MEe=new class{constructor(){this.mutationObservers=new Map}observe(s,e,t){let i=this.mutationObservers.get(s);i||(i=new Map,this.mutationObservers.set(s,i));const n=$5(t);let o=i.get(n);if(o)o.users+=1;else{const l=new re,r=new MutationObserver(d=>l.fire(d));r.observe(s,t);const a=o={users:1,observer:r,onDidMutate:l.event};e.add(gt(()=>{a.users-=1,a.users===0&&(l.dispose(),r.disconnect(),i==null||i.delete(n),(i==null?void 0:i.size)===0&&this.mutationObservers.delete(s))})),i.set(n,o)}return o.onDidMutate}};let H9=null;function Vge(){return H9||(H9=cc()),H9}function Qge(s){var e,t;return(e=s==null?void 0:s.sheet)!=null&&e.rules?s.sheet.rules:(t=s==null?void 0:s.sheet)!=null&&t.cssRules?s.sheet.cssRules:[]}function YE(s,e,t=Vge()){var i;if(!(!t||!e)){(i=t.sheet)==null||i.insertRule(`${s} {${e}}`,0);for(const n of D$.get(t)??[])YE(s,e,n)}}function MH(s,e=Vge()){var n;if(!e)return;const t=Qge(e),i=[];for(let o=0;o<t.length;o++){const l=t[o];TEe(l)&&l.selectorText.indexOf(s)!==-1&&i.push(o)}for(let o=i.length-1;o>=0;o--)(n=e.sheet)==null||n.deleteRule(i[o]);for(const o of D$.get(e)??[])MH(s,o)}function TEe(s){return typeof s.selectorText=="string"}function Yo(s){return s instanceof HTMLElement||s instanceof Wt(s).HTMLElement}function toe(s){return s instanceof HTMLAnchorElement||s instanceof Wt(s).HTMLAnchorElement}function BEe(s){return s instanceof SVGElement||s instanceof Wt(s).SVGElement}function G$(s){return s instanceof MouseEvent||s instanceof Wt(s).MouseEvent}function Mg(s){return s instanceof KeyboardEvent||s instanceof Wt(s).KeyboardEvent}const De={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_LEAVE:"pointerleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",PAGE_SHOW:"pageshow",PAGE_HIDE:"pagehide",PASTE:"paste",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:JZ?"webkitAnimationStart":"animationstart",ANIMATION_END:JZ?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:JZ?"webkitAnimationIteration":"animationiteration"};function LEe(s){const e=s;return!!(e&&typeof e.preventDefault=="function"&&typeof e.stopPropagation=="function")}const yi={stop:(s,e)=>(s.preventDefault(),e&&s.stopPropagation(),s)};function kEe(s){const e=[];for(let t=0;s&&s.nodeType===s.ELEMENT_NODE;t++)e[t]=s.scrollTop,s=s.parentNode;return e}function IEe(s,e){for(let t=0;s&&s.nodeType===s.ELEMENT_NODE;t++)s.scrollTop!==e[t]&&(s.scrollTop=e[t]),s=s.parentNode}class zE extends de{static hasFocusWithin(e){if(Yo(e)){const t=NA(e),i=t?t.activeElement:e.ownerDocument.activeElement;return Jo(i,e)}else{const t=e;return Jo(t.document.activeElement,t.document)}}constructor(e){super(),this._onDidFocus=this._register(new re),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new re),this.onDidBlur=this._onDidBlur.event;let t=zE.hasFocusWithin(e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},o=()=>{t&&(i=!0,(Yo(e)?Wt(e):e).setTimeout(()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{zE.hasFocusWithin(e)!==t&&(t?o():n())},this._register(ge(e,De.FOCUS,n,!0)),this._register(ge(e,De.BLUR,o,!0)),Yo(e)&&(this._register(ge(e,De.FOCUS_IN,()=>this._refreshStateHandler())),this._register(ge(e,De.FOCUS_OUT,()=>this._refreshStateHandler())))}}function Hu(s){return new zE(s)}function DEe(s,e){return s.after(e),e}function ye(s,...e){if(s.append(...e),e.length===1&&typeof e[0]!="string")return e[0]}function E$(s,e){return s.insertBefore(e,s.firstChild),e}function Zl(s,...e){s.innerText="",ye(s,...e)}const GEe=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var lM;(function(s){s.HTML="http://www.w3.org/1999/xhtml",s.SVG="http://www.w3.org/2000/svg"})(lM||(lM={}));function yge(s,e,t,...i){const n=GEe.exec(e);if(!n)throw new Error("Bad use of emmet");const o=n[1]||"div";let l;return s!==lM.HTML?l=document.createElementNS(s,o):l=document.createElement(o),n[3]&&(l.id=n[3]),n[4]&&(l.className=n[4].replace(/\./g," ").trim()),t&&Object.entries(t).forEach(([r,a])=>{typeof a>"u"||(/^on\w+$/.test(r)?l[r]=a:r==="selected"?a&&l.setAttribute(r,"true"):l.setAttribute(r,a))}),l.append(...i),l}function Ge(s,e,...t){return yge(lM.HTML,s,e,...t)}Ge.SVG=function(s,e,...t){return yge(lM.SVG,s,e,...t)};function EEe(s,...e){s?hd(...e):_r(...e)}function hd(...s){for(const e of s)e.style.display="",e.removeAttribute("aria-hidden")}function _r(...s){for(const e of s)e.style.display="none",e.setAttribute("aria-hidden","true")}function ioe(s,e){const t=s.devicePixelRatio*e;return Math.max(1,Math.floor(t))/s.devicePixelRatio}function Cge(s){Qn.open(s,"_blank","noopener")}function vEe(s,e){const t=()=>{e(),i=Sd(s,t)};let i=Sd(s,t);return gt(()=>i.dispose())}fge.setPreferredWebSchema(/^https:/.test(Qn.location.href)?"https":"http");function R0(s){return s?`url('${q5.uriToBrowserUri(s).toString(!0).replace(/'/g,"%27")}')`:"url('')"}function P9(s){return`'${s.replace(/'/g,"%27")}'`}function d0(s,e){if(s!==void 0){const t=s.match(/^\s*var\((.+)\)$/);if(t){const i=t[1].split(",",2);return i.length===2&&(e=d0(i[1].trim(),e)),`var(${i[0]}, ${e})`}return s}return e}function xEe(s,e=!1){const t=document.createElement("a");return bge("afterSanitizeAttributes",i=>{for(const n of["href","src"])if(i.hasAttribute(n)){const o=i.getAttribute(n);if(n==="href"&&o.startsWith("#"))continue;if(t.href=o,!s.includes(t.protocol.replace(/:$/,""))){if(e&&n==="src"&&t.href.startsWith("data:"))continue;i.removeAttribute(n)}}}),gt(()=>{Uge("afterSanitizeAttributes")})}const JEe=Object.freeze(["a","abbr","b","bdo","blockquote","br","caption","cite","code","col","colgroup","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","img","input","ins","kbd","label","li","mark","ol","p","pre","q","rp","rt","ruby","samp","small","small","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","tt","u","ul","var","video","wbr"]);class e0 extends re{constructor(){super(),this._subscriptions=new Ze,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(ve.runAndSubscribe(tY,({window:e,disposables:t})=>this.registerListeners(e,t),{window:Qn,disposables:this._subscriptions}))}registerListeners(e,t){t.add(ge(e,"keydown",i=>{if(i.defaultPrevented)return;const n=new Jn(i);if(!(n.keyCode===6&&i.repeat)){if(i.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(i.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(i.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(i.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(n.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=i.altKey,this._keyStatus.ctrlKey=i.ctrlKey,this._keyStatus.metaKey=i.metaKey,this._keyStatus.shiftKey=i.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=i,this.fire(this._keyStatus))}},!0)),t.add(ge(e,"keyup",i=>{i.defaultPrevented||(!i.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!i.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!i.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!i.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased="shift":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=i.altKey,this._keyStatus.ctrlKey=i.ctrlKey,this._keyStatus.metaKey=i.metaKey,this._keyStatus.shiftKey=i.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=i,this.fire(this._keyStatus)))},!0)),t.add(ge(e.document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),t.add(ge(e.document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),t.add(ge(e.document.body,"mousemove",i=>{i.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),t.add(ge(e,"blur",()=>{this.resetKeyStatus()}))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return e0.instance||(e0.instance=new e0),e0.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}class XEe extends de{constructor(e,t){super(),this.element=e,this.callbacks=t,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this.callbacks.onDragStart&&this._register(ge(this.element,De.DRAG_START,e=>{var t,i;(i=(t=this.callbacks).onDragStart)==null||i.call(t,e)})),this.callbacks.onDrag&&this._register(ge(this.element,De.DRAG,e=>{var t,i;(i=(t=this.callbacks).onDrag)==null||i.call(t,e)})),this._register(ge(this.element,De.DRAG_ENTER,e=>{var t,i;this.counter++,this.dragStartTime=e.timeStamp,(i=(t=this.callbacks).onDragEnter)==null||i.call(t,e)})),this._register(ge(this.element,De.DRAG_OVER,e=>{var t,i;e.preventDefault(),(i=(t=this.callbacks).onDragOver)==null||i.call(t,e,e.timeStamp-this.dragStartTime)})),this._register(ge(this.element,De.DRAG_LEAVE,e=>{var t,i;this.counter--,this.counter===0&&(this.dragStartTime=0,(i=(t=this.callbacks).onDragLeave)==null||i.call(t,e))})),this._register(ge(this.element,De.DRAG_END,e=>{var t,i;this.counter=0,this.dragStartTime=0,(i=(t=this.callbacks).onDragEnd)==null||i.call(t,e)})),this._register(ge(this.element,De.DROP,e=>{var t,i;this.counter=0,this.dragStartTime=0,(i=(t=this.callbacks).onDrop)==null||i.call(t,e)}))}}const wge=/(?<tag>[\w\-]+)?(?:#(?<id>[\w\-]+))?(?<class>(?:\.(?:[\w\-]+))*)(?:@(?<name>(?:[\w\_])+))?/;function gi(s,...e){let t,i;Array.isArray(e[0])?(t={},i=e[0]):(t=e[0]||{},i=e[1]);const n=wge.exec(s);if(!n||!n.groups)throw new Error("Bad use of h");const o=n.groups.tag||"div",l=document.createElement(o);n.groups.id&&(l.id=n.groups.id);const r=[];if(n.groups.class)for(const d of n.groups.class.split("."))d!==""&&r.push(d);if(t.className!==void 0)for(const d of t.className.split("."))d!==""&&r.push(d);r.length>0&&(l.className=r.join(" "));const a={};if(n.groups.name&&(a[n.groups.name]=l),i)for(const d of i)Yo(d)?l.appendChild(d):typeof d=="string"?l.append(d):"root"in d&&(Object.assign(a,d),l.appendChild(d.root));for(const[d,c]of Object.entries(t))if(d!=="className")if(d==="style")for(const[h,u]of Object.entries(c))l.style.setProperty(_E(h),typeof u=="number"?u+"px":""+u);else d==="tabIndex"?l.tabIndex=c:l.setAttribute(_E(d),c.toString());return a.root=l,a}function VN(s,...e){let t,i;Array.isArray(e[0])?(t={},i=e[0]):(t=e[0]||{},i=e[1]);const n=wge.exec(s);if(!n||!n.groups)throw new Error("Bad use of h");const o=n.groups.tag||"div",l=document.createElementNS("http://www.w3.org/2000/svg",o);n.groups.id&&(l.id=n.groups.id);const r=[];if(n.groups.class)for(const d of n.groups.class.split("."))d!==""&&r.push(d);if(t.className!==void 0)for(const d of t.className.split("."))d!==""&&r.push(d);r.length>0&&(l.className=r.join(" "));const a={};if(n.groups.name&&(a[n.groups.name]=l),i)for(const d of i)Yo(d)?l.appendChild(d):typeof d=="string"?l.append(d):"root"in d&&(Object.assign(a,d),l.appendChild(d.root));for(const[d,c]of Object.entries(t))if(d!=="className")if(d==="style")for(const[h,u]of Object.entries(c))l.style.setProperty(_E(h),typeof u=="number"?u+"px":""+u);else d==="tabIndex"?l.tabIndex=c:l.setAttribute(_E(d),c.toString());return a.root=l,a}function _E(s){return s.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}class YEe extends de{constructor(e){super(),this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(e,!0),this._mediaQueryList=null,this._handleChange(e,!1)}_handleChange(e,t){var i;(i=this._mediaQueryList)==null||i.removeEventListener("change",this._listener),this._mediaQueryList=e.matchMedia(`(resolution: ${e.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),t&&this._onDidChange.fire()}}class zEe extends de{get value(){return this._value}constructor(e){super(),this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio(e);const t=this._register(new YEe(e));this._register(t.onDidChange(()=>{this._value=this._getPixelRatio(e),this._onDidChange.fire(this._value)}))}_getPixelRatio(e){const t=document.createElement("canvas").getContext("2d"),i=e.devicePixelRatio||1,n=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return i/n}}class _Ee{constructor(){this.mapWindowIdToPixelRatioMonitor=new Map}_getOrCreatePixelRatioMonitor(e){const t=xE(e);let i=this.mapWindowIdToPixelRatioMonitor.get(t);return i||(i=new zEe(e),this.mapWindowIdToPixelRatioMonitor.set(t,i),ve.once(AEe)(({vscodeWindowId:n})=>{n===t&&(i==null||i.dispose(),this.mapWindowIdToPixelRatioMonitor.delete(t))})),i}getInstance(e){return this._getOrCreatePixelRatioMonitor(e)}}const rM=new _Ee;class Mge{constructor(e){this.domNode=e,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(e){const t=au(e);this._maxWidth!==t&&(this._maxWidth=t,this.domNode.style.maxWidth=this._maxWidth)}setWidth(e){const t=au(e);this._width!==t&&(this._width=t,this.domNode.style.width=this._width)}setHeight(e){const t=au(e);this._height!==t&&(this._height=t,this.domNode.style.height=this._height)}setTop(e){const t=au(e);this._top!==t&&(this._top=t,this.domNode.style.top=this._top)}setLeft(e){const t=au(e);this._left!==t&&(this._left=t,this.domNode.style.left=this._left)}setBottom(e){const t=au(e);this._bottom!==t&&(this._bottom=t,this.domNode.style.bottom=this._bottom)}setRight(e){const t=au(e);this._right!==t&&(this._right=t,this.domNode.style.right=this._right)}setPaddingLeft(e){const t=au(e);this._paddingLeft!==t&&(this._paddingLeft=t,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(e){const t=au(e);this._fontSize!==t&&(this._fontSize=t,this.domNode.style.fontSize=this._fontSize)}setFontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(e){this._fontVariationSettings!==e&&(this._fontVariationSettings=e,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(e){this._textDecoration!==e&&(this._textDecoration=e,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(e){const t=au(e);this._lineHeight!==t&&(this._lineHeight=t,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(e){const t=au(e);this._letterSpacing!==t&&(this._letterSpacing=t,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}toggleClassName(e,t){this.domNode.classList.toggle(e,t),this._className=this.domNode.className}setDisplay(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}setPosition(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}setColor(e){this._color!==e&&(this._color=e,this.domNode.style.color=this._color)}setBackgroundColor(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}setContain(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}setAttribute(e,t){this.domNode.setAttribute(e,t)}removeAttribute(e){this.domNode.removeAttribute(e)}appendChild(e){this.domNode.appendChild(e.domNode)}removeChild(e){this.domNode.removeChild(e.domNode)}}function au(s){return typeof s=="number"?`${s}px`:s}function an(s){return new Mge(s)}function Al(s,e){s instanceof Mge?(s.setFontFamily(e.getMassagedFontFamily()),s.setFontWeight(e.fontWeight),s.setFontSize(e.fontSize),s.setFontFeatureSettings(e.fontFeatureSettings),s.setFontVariationSettings(e.fontVariationSettings),s.setLineHeight(e.lineHeight),s.setLetterSpacing(e.letterSpacing)):(s.style.fontFamily=e.getMassagedFontFamily(),s.style.fontWeight=e.fontWeight,s.style.fontSize=e.fontSize+"px",s.style.fontFeatureSettings=e.fontFeatureSettings,s.style.fontVariationSettings=e.fontVariationSettings,s.style.lineHeight=e.lineHeight+"px",s.style.letterSpacing=e.letterSpacing+"px")}class OEe{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class v${constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(e){var t;this._createDomElements(),e.document.body.appendChild(this._container),this._readFromDomElements(),(t=this._container)==null||t.remove(),this._container=null,this._testElements=null}_createDomElements(){const e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";const t=document.createElement("div");Al(t,this._bareFontInfo),e.appendChild(t);const i=document.createElement("div");Al(i,this._bareFontInfo),i.style.fontWeight="bold",e.appendChild(i);const n=document.createElement("div");Al(n,this._bareFontInfo),n.style.fontStyle="italic",e.appendChild(n);const o=[];for(const l of this._requests){let r;l.type===0&&(r=t),l.type===2&&(r=i),l.type===1&&(r=n),r.appendChild(document.createElement("br"));const a=document.createElement("span");v$._render(a,l),r.appendChild(a),o.push(a)}this._container=e,this._testElements=o}static _render(e,t){if(t.chr===" "){let i=" ";for(let n=0;n<8;n++)i+=i;e.innerText=i}else{let i=t.chr;for(let n=0;n<8;n++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;e<t;e++){const i=this._requests[e],n=this._testElements[e];i.fulfill(n.offsetWidth/256)}}}function jEe(s,e,t){new v$(e,t).read(s)}const Gc=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new re,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(s){s=Math.min(Math.max(-5,s),20),this._zoomLevel!==s&&(this._zoomLevel=s,this._onDidChangeZoomLevel.fire(this._zoomLevel))}},HEe=Fi?1.5:1.35,K9=8;class XZ{static createFromValidatedSettings(e,t,i){const n=e.get(49),o=e.get(53),l=e.get(52),r=e.get(51),a=e.get(54),d=e.get(67),c=e.get(64);return XZ._create(n,o,l,r,a,d,c,t,i)}static _create(e,t,i,n,o,l,r,a,d){l===0?l=HEe*i:l<K9&&(l=l*i),l=Math.round(l),l<K9&&(l=K9);const c=1+(d?0:Gc.getZoomLevel()*.1);return i*=c,l*=c,o===$w.TRANSLATE&&(t==="normal"||t==="bold"?o=$w.OFF:(o=`'wght' ${parseInt(t,10)}`,t="normal")),new XZ({pixelRatio:a,fontFamily:e,fontWeight:t,fontSize:i,fontFeatureSettings:n,fontVariationSettings:o,lineHeight:l,letterSpacing:r})}constructor(e){this._bareFontInfoBrand=void 0,this.pixelRatio=e.pixelRatio,this.fontFamily=String(e.fontFamily),this.fontWeight=String(e.fontWeight),this.fontSize=e.fontSize,this.fontFeatureSettings=e.fontFeatureSettings,this.fontVariationSettings=e.fontVariationSettings,this.lineHeight=e.lineHeight|0,this.letterSpacing=e.letterSpacing}getId(){return`${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`}getMassagedFontFamily(){const e=ta.fontFamily,t=XZ._wrapInQuotes(this.fontFamily);return e&&this.fontFamily!==e?`${t}, ${e}`:t}static _wrapInQuotes(e){return/[,"']/.test(e)?e:/[+ ]/.test(e)?`"${e}"`:e}}const PEe=2;class TH extends XZ{constructor(e,t){super(e),this._editorStylingBrand=void 0,this.version=PEe,this.isTrusted=t,this.isMonospace=e.isMonospace,this.typicalHalfwidthCharacterWidth=e.typicalHalfwidthCharacterWidth,this.typicalFullwidthCharacterWidth=e.typicalFullwidthCharacterWidth,this.canUseHalfwidthRightwardsArrow=e.canUseHalfwidthRightwardsArrow,this.spaceWidth=e.spaceWidth,this.middotWidth=e.middotWidth,this.wsmiddotWidth=e.wsmiddotWidth,this.maxDigitWidth=e.maxDigitWidth}equals(e){return this.fontFamily===e.fontFamily&&this.fontWeight===e.fontWeight&&this.fontSize===e.fontSize&&this.fontFeatureSettings===e.fontFeatureSettings&&this.fontVariationSettings===e.fontVariationSettings&&this.lineHeight===e.lineHeight&&this.letterSpacing===e.letterSpacing&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===e.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.maxDigitWidth===e.maxDigitWidth}}class KEe extends de{constructor(){super(...arguments),this._cache=new Map,this._evictUntrustedReadingsTimeout=-1,this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event}dispose(){this._evictUntrustedReadingsTimeout!==-1&&(clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearAllFontInfos(){this._cache.clear(),this._onDidChange.fire()}_ensureCache(e){const t=xE(e);let i=this._cache.get(t);return i||(i=new qEe,this._cache.set(t,i)),i}_writeToCache(e,t,i){this._ensureCache(e).put(t,i),!i.isTrusted&&this._evictUntrustedReadingsTimeout===-1&&(this._evictUntrustedReadingsTimeout=e.setTimeout(()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings(e)},5e3))}_evictUntrustedReadings(e){const t=this._ensureCache(e),i=t.getValues();let n=!1;for(const o of i)o.isTrusted||(n=!0,t.remove(o));n&&this._onDidChange.fire()}readFontInfo(e,t){const i=this._ensureCache(e);if(!i.has(t)){let n=this._actualReadFontInfo(e,t);(n.typicalHalfwidthCharacterWidth<=2||n.typicalFullwidthCharacterWidth<=2||n.spaceWidth<=2||n.maxDigitWidth<=2)&&(n=new TH({pixelRatio:rM.getInstance(e).value,fontFamily:n.fontFamily,fontWeight:n.fontWeight,fontSize:n.fontSize,fontFeatureSettings:n.fontFeatureSettings,fontVariationSettings:n.fontVariationSettings,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,isMonospace:n.isMonospace,typicalHalfwidthCharacterWidth:Math.max(n.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(n.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:n.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(n.spaceWidth,5),middotWidth:Math.max(n.middotWidth,5),wsmiddotWidth:Math.max(n.wsmiddotWidth,5),maxDigitWidth:Math.max(n.maxDigitWidth,5)},!1)),this._writeToCache(e,t,n)}return i.get(t)}_createRequest(e,t,i,n){const o=new OEe(e,t);return i.push(o),n==null||n.push(o),o}_actualReadFontInfo(e,t){const i=[],n=[],o=this._createRequest("n",0,i,n),l=this._createRequest("m",0,i,null),r=this._createRequest(" ",0,i,n),a=this._createRequest("0",0,i,n),d=this._createRequest("1",0,i,n),c=this._createRequest("2",0,i,n),h=this._createRequest("3",0,i,n),u=this._createRequest("4",0,i,n),m=this._createRequest("5",0,i,n),p=this._createRequest("6",0,i,n),g=this._createRequest("7",0,i,n),b=this._createRequest("8",0,i,n),f=this._createRequest("9",0,i,n),Z=this._createRequest("→",0,i,n),A=this._createRequest("→",0,i,null),N=this._createRequest("·",0,i,n),W=this._createRequest(String.fromCharCode(11825),0,i,null),Q="|/-_ilm%";for(let G=0,P=Q.length;G<P;G++)this._createRequest(Q.charAt(G),0,i,n),this._createRequest(Q.charAt(G),1,i,n),this._createRequest(Q.charAt(G),2,i,n);jEe(e,t,i);const R=Math.max(a.width,d.width,c.width,h.width,u.width,m.width,p.width,g.width,b.width,f.width);let M=t.fontFeatureSettings===YU.OFF;const w=n[0].width;for(let G=1,P=n.length;M&&G<P;G++){const j=w-n[G].width;if(j<-.001||j>.001){M=!1;break}}let Y=!0;return M&&A.width!==w&&(Y=!1),A.width>Z.width&&(Y=!1),new TH({pixelRatio:rM.getInstance(e).value,fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,fontVariationSettings:t.fontVariationSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:M,typicalHalfwidthCharacterWidth:o.width,typicalFullwidthCharacterWidth:l.width,canUseHalfwidthRightwardsArrow:Y,spaceWidth:r.width,middotWidth:N.width,wsmiddotWidth:W.width,maxDigitWidth:R},!0)}}class qEe{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(e){const t=e.getId();return!!this._values[t]}get(e){const t=e.getId();return this._values[t]}put(e,t){const i=e.getId();this._keys[i]=e,this._values[i]=t}remove(e){const t=e.getId();delete this._keys[t],delete this._values[t]}getValues(){return Object.keys(this._keys).map(e=>this._values[e])}}const BH=new KEe;var Du;(function(s){s.serviceIds=new Map,s.DI_TARGET="$di$target",s.DI_DEPENDENCIES="$di$dependencies";function e(t){return t[s.DI_DEPENDENCIES]||[]}s.getServiceDependencies=e})(Du||(Du={}));const bt=Zi("instantiationService");function $Ee(s,e,t){e[Du.DI_TARGET]===e?e[Du.DI_DEPENDENCIES].push({id:s,index:t}):(e[Du.DI_DEPENDENCIES]=[{id:s,index:t}],e[Du.DI_TARGET]=e)}function Zi(s){if(Du.serviceIds.has(s))return Du.serviceIds.get(s);const e=function(t,i,n){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");$Ee(e,t,n)};return e.toString=()=>s,Du.serviceIds.set(s,e),e}const zi=Zi("codeEditorService"),es=Zi("modelService"),Xa=Zi("textModelService");class bd extends de{constructor(e,t="",i="",n=!0,o){super(),this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=e,this._label=t,this._cssClass=i,this._enabled=n,this._actionCallback=o}get id(){return this._id}get label(){return this._label}set label(e){this._setLabel(e)}_setLabel(e){this._label!==e&&(this._label=e,this._onDidChange.fire({label:e}))}get tooltip(){return this._tooltip||""}set tooltip(e){this._setTooltip(e)}_setTooltip(e){this._tooltip!==e&&(this._tooltip=e,this._onDidChange.fire({tooltip:e}))}get class(){return this._cssClass}set class(e){this._setClass(e)}_setClass(e){this._cssClass!==e&&(this._cssClass=e,this._onDidChange.fire({class:e}))}get enabled(){return this._enabled}set enabled(e){this._setEnabled(e)}_setEnabled(e){this._enabled!==e&&(this._enabled=e,this._onDidChange.fire({enabled:e}))}get checked(){return this._checked}set checked(e){this._setChecked(e)}_setChecked(e){this._checked!==e&&(this._checked=e,this._onDidChange.fire({checked:e}))}async run(e,t){this._actionCallback&&await this._actionCallback(e)}}class RA extends de{constructor(){super(...arguments),this._onWillRun=this._register(new re),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new re),this.onDidRun=this._onDidRun.event}async run(e,t){if(!e.enabled)return;this._onWillRun.fire({action:e});let i;try{await this.runAction(e,t)}catch(n){i=n}this._onDidRun.fire({action:e,error:i})}async runAction(e,t){await e.run(t)}}const Cw=class Cw{constructor(){this.id=Cw.ID,this.label="",this.tooltip="",this.class="separator",this.enabled=!1,this.checked=!1}static join(...e){let t=[];for(const i of e)i.length&&(t.length?t=[...t,new Cw,...i]:t=i);return t}async run(){}};Cw.ID="vs.actions.separator";let zo=Cw;class eV{get actions(){return this._actions}constructor(e,t,i,n){this.tooltip="",this.enabled=!0,this.checked=void 0,this.id=e,this.label=t,this.class=n,this._actions=i}async run(){}}const oX=class oX extends bd{constructor(){super(oX.ID,U("submenu.empty","(empty)"),void 0,!1)}};oX.ID="vs.actions.empty";let LH=oX;function YZ(s){return{id:s.id,label:s.label,tooltip:s.tooltip??s.label,class:s.class,enabled:s.enabled??!0,checked:s.checked,run:async(...e)=>s.run(...e)}}var kH;(function(s){function e(t){return t&&typeof t=="object"&&typeof t.id=="string"}s.isThemeColor=e})(kH||(kH={}));var Qt;(function(s){s.iconNameSegment="[A-Za-z0-9]+",s.iconNameExpression="[A-Za-z0-9-]+",s.iconModifierExpression="~[A-Za-z]+",s.iconNameCharacter="[A-Za-z0-9~-]";const e=new RegExp(`^(${s.iconNameExpression})(${s.iconModifierExpression})?$`);function t(u){const m=e.exec(u.id);if(!m)return t(ke.error);const[,p,g]=m,b=["codicon","codicon-"+p];return g&&b.push("codicon-modifier-"+g.substring(1)),b}s.asClassNameArray=t;function i(u){return t(u).join(" ")}s.asClassName=i;function n(u){return"."+t(u).join(".")}s.asCSSSelector=n;function o(u){return u&&typeof u=="object"&&typeof u.id=="string"&&(typeof u.color>"u"||kH.isThemeColor(u.color))}s.isThemeIcon=o;const l=new RegExp(`^\\$\\((${s.iconNameExpression}(?:${s.iconModifierExpression})?)\\)$`);function r(u){const m=l.exec(u);if(!m)return;const[,p]=m;return{id:p}}s.fromString=r;function a(u){return{id:u}}s.fromId=a;function d(u,m){let p=u.id;const g=p.lastIndexOf("~");return g!==-1&&(p=p.substring(0,g)),m&&(p=`${p}~${m}`),{id:p}}s.modify=d;function c(u){const m=u.id.lastIndexOf("~");if(m!==-1)return u.id.substring(m+1)}s.getModifier=c;function h(u,m){var p,g;return u.id===m.id&&((p=u.color)==null?void 0:p.id)===((g=m.color)==null?void 0:g.id)}s.isEqual=h})(Qt||(Qt={}));const On=Zi("commandService"),Bi=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new re,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(s,e){if(!s)throw new Error("invalid command");if(typeof s=="string"){if(!e)throw new Error("invalid command");return this.registerCommand({id:s,handler:e})}if(s.metadata&&Array.isArray(s.metadata.args)){const l=[];for(const a of s.metadata.args)l.push(a.constraint);const r=s.handler;s.handler=function(a,...d){return hIe(d,l),r(a,...d)}}const{id:t}=s;let i=this._commands.get(t);i||(i=new Pr,this._commands.set(t,i));const n=i.unshift(s),o=gt(()=>{n();const l=this._commands.get(t);l!=null&&l.isEmpty()&&this._commands.delete(t)});return this._onDidRegisterCommand.fire(t),o}registerCommandAlias(s,e){return Bi.registerCommand(s,(t,...i)=>t.get(On).executeCommand(e,...i))}getCommand(s){const e=this._commands.get(s);if(!(!e||e.isEmpty()))return Ti.first(e)}getCommands(){const s=new Map;for(const e of this._commands.keys()){const t=this.getCommand(e);t&&s.set(e,t)}return s}};Bi.registerCommand("noop",()=>{});function q9(...s){switch(s.length){case 1:return U("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",s[0]);case 2:return U("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",s[0],s[1]);case 3:return U("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",s[0],s[1],s[2]);default:return}}const eve=U("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),tve=U("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");var yU;let w1=(yU=class{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return e.lexeme;case 18:return e.lexeme;case 19:return e.lexeme;case 20:return"EOF";default:throw F$(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const t=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:t})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const t=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:t})}else this._match(126)?this._addToken(9):this._error(q9("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(q9("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(q9("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return this._isAtEnd()||this._input.charCodeAt(this._current)!==e?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){const t=this._start,i=this._input.substring(this._start,this._current),n={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(n)}_string(){this.stringRe.lastIndex=this._start;const e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;const t=this._input.substring(this._start,this._current),i=yU._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(eve);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,t=!1,i=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(tve);return}const o=this._input.charCodeAt(e);if(t)t=!1;else if(o===47&&!i){e++;break}else o===91?i=!0:o===92?t=!0:o===93&&(i=!1);e++}for(;e<this._input.length&&yU._regexFlags.has(this._input.charCodeAt(e));)e++;this._current=e;const n=this._input.substring(this._start,this._current);this._tokens.push({type:10,lexeme:n,offset:this._start})}_isAtEnd(){return this._current>=this._input.length}},yU._regexFlags=new Set(["i","g","s","m","y","u"].map(e=>e.charCodeAt(0))),yU._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]),yU);const ir=new Map;ir.set("false",!1);ir.set("true",!0);ir.set("isMac",Fi);ir.set("isLinux",sa);ir.set("isWindows",Gl);ir.set("isWeb",jA);ir.set("isMacNative",Fi&&!jA);ir.set("isEdge",VIe);ir.set("isFirefox",SIe);ir.set("isChrome",Cpe);ir.set("isSafari",WIe);const ive=Object.prototype.hasOwnProperty,nve={regexParsingWithErrorRecovery:!0},sve=U("contextkey.parser.error.emptyString","Empty context key expression"),ove=U("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),lve=U("contextkey.parser.error.noInAfterNot","'in' after 'not'."),noe=U("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),rve=U("contextkey.parser.error.unexpectedToken","Unexpected token"),ave=U("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),dve=U("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),cve=U("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");var Hg;let hve=(Hg=class{constructor(e=nve){this._config=e,this._scanner=new w1,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(e===""){this._parsingErrors.push({message:sve,offset:0,lexeme:"",additionalInfo:ove});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{const t=this._expr();if(!this._isAtEnd()){const i=this._peek(),n=i.type===17?ave:void 0;throw this._parsingErrors.push({message:rve,offset:i.offset,lexeme:w1.getLexeme(i),additionalInfo:n}),Hg._parseError}return t}catch(t){if(t!==Hg._parseError)throw t;return}}_expr(){return this._or()}_or(){const e=[this._and()];for(;this._matchOne(16);){const t=this._and();e.push(t)}return e.length===1?e[0]:Ne.or(...e)}_and(){const e=[this._term()];for(;this._matchOne(15);){const t=this._term();e.push(t)}return e.length===1?e[0]:Ne.and(...e)}_term(){if(this._matchOne(2)){const e=this._peek();switch(e.type){case 11:return this._advance(),oa.INSTANCE;case 12:return this._advance(),Ea.INSTANCE;case 0:{this._advance();const t=this._expr();return this._consume(1,noe),t==null?void 0:t.negate()}case 17:return this._advance(),PA.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){const e=this._peek();switch(e.type){case 11:return this._advance(),Ne.true();case 12:return this._advance(),Ne.false();case 0:{this._advance();const t=this._expr();return this._consume(1,noe),t}case 17:{const t=e.lexeme;if(this._advance(),this._matchOne(9)){const n=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),n.type!==10)throw this._errExpectedButGot("REGEX",n);const o=n.lexeme,l=o.lastIndexOf("/"),r=l===o.length-1?void 0:this._removeFlagsGY(o.substring(l+1));let a;try{a=new RegExp(o.substring(1,l),r)}catch{throw this._errExpectedButGot("REGEX",n)}return aM.create(t,a)}switch(n.type){case 10:case 19:{const o=[n.lexeme];this._advance();let l=this._peek(),r=0;for(let u=0;u<n.lexeme.length;u++)n.lexeme.charCodeAt(u)===40?r++:n.lexeme.charCodeAt(u)===41&&r--;for(;!this._isAtEnd()&&l.type!==15&&l.type!==16;){switch(l.type){case 0:r++;break;case 1:r--;break;case 10:case 18:for(let u=0;u<l.lexeme.length;u++)l.lexeme.charCodeAt(u)===40?r++:n.lexeme.charCodeAt(u)===41&&r--}if(r<0)break;o.push(w1.getLexeme(l)),this._advance(),l=this._peek()}const a=o.join(""),d=a.lastIndexOf("/"),c=d===a.length-1?void 0:this._removeFlagsGY(a.substring(d+1));let h;try{h=new RegExp(a.substring(1,d),c)}catch{throw this._errExpectedButGot("REGEX",n)}return Ne.regex(t,h)}case 18:{const o=n.lexeme;this._advance();let l=null;if(!Ppe(o)){const r=o.indexOf("/"),a=o.lastIndexOf("/");if(r!==a&&r>=0){const d=o.slice(r+1,a),c=o[a+1]==="i"?"i":"";try{l=new RegExp(d,c)}catch{throw this._errExpectedButGot("REGEX",n)}}}if(l===null)throw this._errExpectedButGot("REGEX",n);return aM.create(t,l)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,lve);const n=this._value();return Ne.notIn(t,n)}switch(this._peek().type){case 3:{this._advance();const n=this._value();if(this._previous().type===18)return Ne.equals(t,n);switch(n){case"true":return Ne.has(t);case"false":return Ne.not(t);default:return Ne.equals(t,n)}}case 4:{this._advance();const n=this._value();if(this._previous().type===18)return Ne.notEquals(t,n);switch(n){case"true":return Ne.not(t);case"false":return Ne.has(t);default:return Ne.notEquals(t,n)}}case 5:return this._advance(),cY.create(t,this._value());case 6:return this._advance(),hY.create(t,this._value());case 7:return this._advance(),aY.create(t,this._value());case 8:return this._advance(),dY.create(t,this._value());case 13:return this._advance(),Ne.in(t,this._value());default:return Ne.has(t)}}case 20:throw this._parsingErrors.push({message:dve,offset:e.offset,lexeme:"",additionalInfo:cve}),Hg._parseError;default:throw this._errExpectedButGot(`true | false | KEY
- | KEY '=~' REGEX
- | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return this._check(e)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(e,t){if(this._check(e))return this._advance();throw this._errExpectedButGot(t,this._peek())}_errExpectedButGot(e,t,i){const n=U("contextkey.parser.error.expectedButGot",`Expected: {0}
- Received: '{1}'.`,e,w1.getLexeme(t)),o=t.offset,l=w1.getLexeme(t);return this._parsingErrors.push({message:n,offset:o,lexeme:l,additionalInfo:i}),Hg._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}},Hg._parseError=new Error,Hg);const cne=class cne{static false(){return oa.INSTANCE}static true(){return Ea.INSTANCE}static has(e){return HA.create(e)}static equals(e,t){return xQ.create(e,t)}static notEquals(e,t){return lY.create(e,t)}static regex(e,t){return aM.create(e,t)}static in(e,t){return sY.create(e,t)}static notIn(e,t){return oY.create(e,t)}static not(e){return PA.create(e)}static and(...e){return RZ.create(e,null,!0)}static or(...e){return vg.create(e,null,!0)}static deserialize(e){return e==null?void 0:this._parser.parse(e)}};cne._parser=new hve({regexParsingWithErrorRecovery:!1});let Ne=cne;function uve(s,e){const t=s?s.substituteConstants():void 0,i=e?e.substituteConstants():void 0;return!t&&!i?!0:!t||!i?!1:t.equals(i)}function cC(s,e){return s.cmp(e)}const lX=class lX{constructor(){this.type=0}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}negate(){return Ea.INSTANCE}};lX.INSTANCE=new lX;let oa=lX;const rX=class rX{constructor(){this.type=1}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}negate(){return oa.INSTANCE}};rX.INSTANCE=new rX;let Ea=rX;class HA{static create(e,t=null){const i=ir.get(e);return typeof i=="boolean"?i?Ea.INSTANCE:oa.INSTANCE:new HA(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=2}cmp(e){return e.type!==this.type?this.type-e.type:Bge(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){const e=ir.get(this.key);return typeof e=="boolean"?e?Ea.INSTANCE:oa.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=PA.create(this.key,this)),this.negated}}class xQ{static create(e,t,i=null){if(typeof t=="boolean")return t?HA.create(e,i):PA.create(e,i);const n=ir.get(e);return typeof n=="boolean"?t===(n?"true":"false")?Ea.INSTANCE:oa.INSTANCE:new xQ(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=4}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){const e=ir.get(this.key);if(typeof e=="boolean"){const t=e?"true":"false";return this.value===t?Ea.INSTANCE:oa.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=lY.create(this.key,this.value,this)),this.negated}}class sY{static create(e,t){return new sY(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=10,this.negated=null}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type?this.key===e.key&&this.valueKey===e.valueKey:!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.includes(i):typeof i=="string"&&typeof t=="object"&&t!==null?ive.call(t,i):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=oY.create(this.key,this.valueKey)),this.negated}}class oY{static create(e,t){return new oY(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=11,this._negated=sY.create(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type?this._negated.equals(e._negated):!1}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class lY{static create(e,t,i=null){if(typeof t=="boolean")return t?PA.create(e,i):HA.create(e,i);const n=ir.get(e);return typeof n=="boolean"?t===(n?"true":"false")?oa.INSTANCE:Ea.INSTANCE:new lY(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=5}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){const e=ir.get(this.key);if(typeof e=="boolean"){const t=e?"true":"false";return this.value===t?oa.INSTANCE:Ea.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=xQ.create(this.key,this.value,this)),this.negated}}class PA{static create(e,t=null){const i=ir.get(e);return typeof i=="boolean"?i?oa.INSTANCE:Ea.INSTANCE:new PA(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=3}cmp(e){return e.type!==this.type?this.type-e.type:Bge(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){const e=ir.get(this.key);return typeof e=="boolean"?e?oa.INSTANCE:Ea.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=HA.create(this.key,this)),this.negated}}function rY(s,e){if(typeof s=="string"){const t=parseFloat(s);isNaN(t)||(s=t)}return typeof s=="string"||typeof s=="number"?e(s):oa.INSTANCE}class aY{static create(e,t,i=null){return rY(t,n=>new aY(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=12}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=hY.create(this.key,this.value,this)),this.negated}}class dY{static create(e,t,i=null){return rY(t,n=>new dY(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=13}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=cY.create(this.key,this.value,this)),this.negated}}class cY{static create(e,t,i=null){return rY(t,n=>new cY(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=14}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<this.value}serialize(){return`${this.key} < ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=dY.create(this.key,this.value,this)),this.negated}}class hY{static create(e,t,i=null){return rY(t,n=>new hY(e,n,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=15}cmp(e){return e.type!==this.type?this.type-e.type:KA(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=aY.create(this.key,this.value,this)),this.negated}}class aM{static create(e,t){return new aM(e,t)}constructor(e,t){this.key=e,this.regexp=t,this.type=7,this.negated=null}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return t<i?-1:t>i?1:0}equals(e){if(e.type===this.type){const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.key);return this.regexp?this.regexp.test(t):!1}serialize(){const e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=x$.create(this)),this.negated}}class x${static create(e){return new x$(e)}constructor(e){this._actual=e,this.type=8}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type?this._actual.equals(e._actual):!1}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function Tge(s){let e=null;for(let t=0,i=s.length;t<i;t++){const n=s[t].substituteConstants();if(s[t]!==n&&e===null){e=[];for(let o=0;o<t;o++)e[o]=s[o]}e!==null&&(e[t]=n)}return e===null?s:e}class RZ{static create(e,t,i){return RZ._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=6}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const n=cC(this.expr[t],e.expr[t]);if(n!==0)return n}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}substituteConstants(){const e=Tge(this.expr);return e===this.expr?this:RZ.create(e,this.negated,!1)}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].evaluate(e))return!1;return!0}static _normalizeArr(e,t,i){const n=[];let o=!1;for(const l of e)if(l){if(l.type===1){o=!0;continue}if(l.type===0)return oa.INSTANCE;if(l.type===6){n.push(...l.expr);continue}n.push(l)}if(n.length===0&&o)return Ea.INSTANCE;if(n.length!==0){if(n.length===1)return n[0];n.sort(cC);for(let l=1;l<n.length;l++)n[l-1].equals(n[l])&&(n.splice(l,1),l--);if(n.length===1)return n[0];for(;n.length>1;){const l=n[n.length-1];if(l.type!==9)break;n.pop();const r=n.pop(),a=n.length===0,d=vg.create(l.expr.map(c=>RZ.create([c,r],null,i)),null,a);d&&(n.push(d),n.sort(cC))}if(n.length===1)return n[0];if(i){for(let l=0;l<n.length;l++)for(let r=l+1;r<n.length;r++)if(n[l].negate().equals(n[r]))return oa.INSTANCE;if(n.length===1)return n[0]}return new RZ(n,t)}}serialize(){return this.expr.map(e=>e.serialize()).join(" && ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());this.negated=vg.create(e,this,!0)}return this.negated}}class vg{static create(e,t,i){return vg._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=9}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const n=cC(this.expr[t],e.expr[t]);if(n!==0)return n}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}substituteConstants(){const e=Tge(this.expr);return e===this.expr?this:vg.create(e,this.negated,!1)}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(this.expr[t].evaluate(e))return!0;return!1}static _normalizeArr(e,t,i){let n=[],o=!1;if(e){for(let l=0,r=e.length;l<r;l++){const a=e[l];if(a){if(a.type===0){o=!0;continue}if(a.type===1)return Ea.INSTANCE;if(a.type===9){n=n.concat(a.expr);continue}n.push(a)}}if(n.length===0&&o)return oa.INSTANCE;n.sort(cC)}if(n.length!==0){if(n.length===1)return n[0];for(let l=1;l<n.length;l++)n[l-1].equals(n[l])&&(n.splice(l,1),l--);if(n.length===1)return n[0];if(i){for(let l=0;l<n.length;l++)for(let r=l+1;r<n.length;r++)if(n[l].negate().equals(n[r]))return Ea.INSTANCE;if(n.length===1)return n[0]}return new vg(n,t)}}serialize(){return this.expr.map(e=>e.serialize()).join(" || ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());for(;e.length>1;){const t=e.shift(),i=e.shift(),n=[];for(const o of ooe(t))for(const l of ooe(i))n.push(RZ.create([o,l],null,!1));e.unshift(vg.create(n,null,!1))}this.negated=vg.create(e,this,!0)}return this.negated}}const KS=class KS extends HA{static all(){return KS._info.values()}constructor(e,t,i){super(e,null),this._defaultValue=t,typeof i=="object"?KS._info.push({...i,key:e}):i!==!0&&KS._info.push({key:e,description:i,type:t!=null?typeof t:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return xQ.create(this.key,e)}};KS._info=[];let Ke=KS;const wt=Zi("contextKeyService");function Bge(s,e){return s<e?-1:s>e?1:0}function KA(s,e,t,i){return s<t?-1:s>t?1:e<i?-1:e>i?1:0}function IH(s,e){if(s.type===0||e.type===1)return!0;if(s.type===9)return e.type===9?soe(s.expr,e.expr):!1;if(e.type===9){for(const t of e.expr)if(IH(s,t))return!0;return!1}if(s.type===6){if(e.type===6)return soe(e.expr,s.expr);for(const t of s.expr)if(IH(t,e))return!0;return!1}return s.equals(e)}function soe(s,e){let t=0,i=0;for(;t<s.length&&i<e.length;){const n=s[t].cmp(e[i]);if(n<0)return!1;n===0&&t++,i++}return t===s.length}function ooe(s){return s.type===9?s.expr:[s]}function $9(s,e){if(!s)throw new Error(e?`Assertion failed (${e})`:"Assertion Failed")}function uY(s,e="Unreachable"){throw new Error(e)}function loe(s){s||vt(new en("Soft Assertion Failed"))}function SA(s){if(!s()){debugger;s(),vt(new en("Assertion Failed"))}}function J$(s,e){let t=0;for(;t<s.length-1;){const i=s[t],n=s[t+1];if(!e(i,n))return!1;t++}return!0}class mve{constructor(){this.data=new Map}add(e,t){$9(Da(e)),$9(il(t)),$9(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)}as(e){return this.data.get(e)||null}}const Vs=new mve;class X${constructor(){this._coreKeybindings=new Pr,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(e){if(pd===1){if(e&&e.win)return e.win}else if(pd===2){if(e&&e.mac)return e.mac}else if(e&&e.linux)return e.linux;return e}registerKeybindingRule(e){const t=X$.bindToCurrentPlatform(e),i=new Ze;if(t&&t.primary){const n=NH(t.primary,pd);n&&i.add(this._registerDefaultKeybinding(n,e.id,e.args,e.weight,0,e.when))}if(t&&Array.isArray(t.secondary))for(let n=0,o=t.secondary.length;n<o;n++){const l=t.secondary[n],r=NH(l,pd);r&&i.add(this._registerDefaultKeybinding(r,e.id,e.args,e.weight,-n-1,e.when))}return i}registerCommandAndKeybindingRule(e){return _h(this.registerKeybindingRule(e),Bi.registerCommand(e))}_registerDefaultKeybinding(e,t,i,n,o,l){const r=this._coreKeybindings.push({keybinding:e,command:t,commandArgs:i,when:l,weight1:n,weight2:o,extensionId:null,isBuiltinExtension:!1});return this._cachedMergedKeybindings=null,gt(()=>{r(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(gve)),this._cachedMergedKeybindings.slice(0)}}const la=new X$,pve={EditorModes:"platform.keybindingsRegistry"};Vs.add(pve.EditorModes,la);function gve(s,e){if(s.weight1!==e.weight1)return s.weight1-e.weight1;if(s.command&&e.command){if(s.command<e.command)return-1;if(s.command>e.command)return 1}return s.weight2-e.weight2}var bve=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},roe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},qI;function gW(s){return s.command!==void 0}function Uve(s){return s.submenu!==void 0}const q=class q{constructor(e){if(q._instances.has(e))throw new TypeError(`MenuId with identifier '${e}' already exists. Use MenuId.for(ident) or a unique identifier`);q._instances.set(e,this),this.id=e}};q._instances=new Map,q.CommandPalette=new q("CommandPalette"),q.DebugBreakpointsContext=new q("DebugBreakpointsContext"),q.DebugCallStackContext=new q("DebugCallStackContext"),q.DebugConsoleContext=new q("DebugConsoleContext"),q.DebugVariablesContext=new q("DebugVariablesContext"),q.NotebookVariablesContext=new q("NotebookVariablesContext"),q.DebugHoverContext=new q("DebugHoverContext"),q.DebugWatchContext=new q("DebugWatchContext"),q.DebugToolBar=new q("DebugToolBar"),q.DebugToolBarStop=new q("DebugToolBarStop"),q.DebugCallStackToolbar=new q("DebugCallStackToolbar"),q.DebugCreateConfiguration=new q("DebugCreateConfiguration"),q.EditorContext=new q("EditorContext"),q.SimpleEditorContext=new q("SimpleEditorContext"),q.EditorContent=new q("EditorContent"),q.EditorLineNumberContext=new q("EditorLineNumberContext"),q.EditorContextCopy=new q("EditorContextCopy"),q.EditorContextPeek=new q("EditorContextPeek"),q.EditorContextShare=new q("EditorContextShare"),q.EditorTitle=new q("EditorTitle"),q.EditorTitleRun=new q("EditorTitleRun"),q.EditorTitleContext=new q("EditorTitleContext"),q.EditorTitleContextShare=new q("EditorTitleContextShare"),q.EmptyEditorGroup=new q("EmptyEditorGroup"),q.EmptyEditorGroupContext=new q("EmptyEditorGroupContext"),q.EditorTabsBarContext=new q("EditorTabsBarContext"),q.EditorTabsBarShowTabsSubmenu=new q("EditorTabsBarShowTabsSubmenu"),q.EditorTabsBarShowTabsZenModeSubmenu=new q("EditorTabsBarShowTabsZenModeSubmenu"),q.EditorActionsPositionSubmenu=new q("EditorActionsPositionSubmenu"),q.ExplorerContext=new q("ExplorerContext"),q.ExplorerContextShare=new q("ExplorerContextShare"),q.ExtensionContext=new q("ExtensionContext"),q.GlobalActivity=new q("GlobalActivity"),q.CommandCenter=new q("CommandCenter"),q.CommandCenterCenter=new q("CommandCenterCenter"),q.LayoutControlMenuSubmenu=new q("LayoutControlMenuSubmenu"),q.LayoutControlMenu=new q("LayoutControlMenu"),q.MenubarMainMenu=new q("MenubarMainMenu"),q.MenubarAppearanceMenu=new q("MenubarAppearanceMenu"),q.MenubarDebugMenu=new q("MenubarDebugMenu"),q.MenubarEditMenu=new q("MenubarEditMenu"),q.MenubarCopy=new q("MenubarCopy"),q.MenubarFileMenu=new q("MenubarFileMenu"),q.MenubarGoMenu=new q("MenubarGoMenu"),q.MenubarHelpMenu=new q("MenubarHelpMenu"),q.MenubarLayoutMenu=new q("MenubarLayoutMenu"),q.MenubarNewBreakpointMenu=new q("MenubarNewBreakpointMenu"),q.PanelAlignmentMenu=new q("PanelAlignmentMenu"),q.PanelPositionMenu=new q("PanelPositionMenu"),q.ActivityBarPositionMenu=new q("ActivityBarPositionMenu"),q.MenubarPreferencesMenu=new q("MenubarPreferencesMenu"),q.MenubarRecentMenu=new q("MenubarRecentMenu"),q.MenubarSelectionMenu=new q("MenubarSelectionMenu"),q.MenubarShare=new q("MenubarShare"),q.MenubarSwitchEditorMenu=new q("MenubarSwitchEditorMenu"),q.MenubarSwitchGroupMenu=new q("MenubarSwitchGroupMenu"),q.MenubarTerminalMenu=new q("MenubarTerminalMenu"),q.MenubarViewMenu=new q("MenubarViewMenu"),q.MenubarHomeMenu=new q("MenubarHomeMenu"),q.OpenEditorsContext=new q("OpenEditorsContext"),q.OpenEditorsContextShare=new q("OpenEditorsContextShare"),q.ProblemsPanelContext=new q("ProblemsPanelContext"),q.SCMInputBox=new q("SCMInputBox"),q.SCMChangesSeparator=new q("SCMChangesSeparator"),q.SCMChangesContext=new q("SCMChangesContext"),q.SCMIncomingChanges=new q("SCMIncomingChanges"),q.SCMIncomingChangesContext=new q("SCMIncomingChangesContext"),q.SCMIncomingChangesSetting=new q("SCMIncomingChangesSetting"),q.SCMOutgoingChanges=new q("SCMOutgoingChanges"),q.SCMOutgoingChangesContext=new q("SCMOutgoingChangesContext"),q.SCMOutgoingChangesSetting=new q("SCMOutgoingChangesSetting"),q.SCMIncomingChangesAllChangesContext=new q("SCMIncomingChangesAllChangesContext"),q.SCMIncomingChangesHistoryItemContext=new q("SCMIncomingChangesHistoryItemContext"),q.SCMOutgoingChangesAllChangesContext=new q("SCMOutgoingChangesAllChangesContext"),q.SCMOutgoingChangesHistoryItemContext=new q("SCMOutgoingChangesHistoryItemContext"),q.SCMChangeContext=new q("SCMChangeContext"),q.SCMResourceContext=new q("SCMResourceContext"),q.SCMResourceContextShare=new q("SCMResourceContextShare"),q.SCMResourceFolderContext=new q("SCMResourceFolderContext"),q.SCMResourceGroupContext=new q("SCMResourceGroupContext"),q.SCMSourceControl=new q("SCMSourceControl"),q.SCMSourceControlInline=new q("SCMSourceControlInline"),q.SCMSourceControlTitle=new q("SCMSourceControlTitle"),q.SCMHistoryTitle=new q("SCMHistoryTitle"),q.SCMTitle=new q("SCMTitle"),q.SearchContext=new q("SearchContext"),q.SearchActionMenu=new q("SearchActionContext"),q.StatusBarWindowIndicatorMenu=new q("StatusBarWindowIndicatorMenu"),q.StatusBarRemoteIndicatorMenu=new q("StatusBarRemoteIndicatorMenu"),q.StickyScrollContext=new q("StickyScrollContext"),q.TestItem=new q("TestItem"),q.TestItemGutter=new q("TestItemGutter"),q.TestProfilesContext=new q("TestProfilesContext"),q.TestMessageContext=new q("TestMessageContext"),q.TestMessageContent=new q("TestMessageContent"),q.TestPeekElement=new q("TestPeekElement"),q.TestPeekTitle=new q("TestPeekTitle"),q.TestCallStack=new q("TestCallStack"),q.TouchBarContext=new q("TouchBarContext"),q.TitleBarContext=new q("TitleBarContext"),q.TitleBarTitleContext=new q("TitleBarTitleContext"),q.TunnelContext=new q("TunnelContext"),q.TunnelPrivacy=new q("TunnelPrivacy"),q.TunnelProtocol=new q("TunnelProtocol"),q.TunnelPortInline=new q("TunnelInline"),q.TunnelTitle=new q("TunnelTitle"),q.TunnelLocalAddressInline=new q("TunnelLocalAddressInline"),q.TunnelOriginInline=new q("TunnelOriginInline"),q.ViewItemContext=new q("ViewItemContext"),q.ViewContainerTitle=new q("ViewContainerTitle"),q.ViewContainerTitleContext=new q("ViewContainerTitleContext"),q.ViewTitle=new q("ViewTitle"),q.ViewTitleContext=new q("ViewTitleContext"),q.CommentEditorActions=new q("CommentEditorActions"),q.CommentThreadTitle=new q("CommentThreadTitle"),q.CommentThreadActions=new q("CommentThreadActions"),q.CommentThreadAdditionalActions=new q("CommentThreadAdditionalActions"),q.CommentThreadTitleContext=new q("CommentThreadTitleContext"),q.CommentThreadCommentContext=new q("CommentThreadCommentContext"),q.CommentTitle=new q("CommentTitle"),q.CommentActions=new q("CommentActions"),q.CommentsViewThreadActions=new q("CommentsViewThreadActions"),q.InteractiveToolbar=new q("InteractiveToolbar"),q.InteractiveCellTitle=new q("InteractiveCellTitle"),q.InteractiveCellDelete=new q("InteractiveCellDelete"),q.InteractiveCellExecute=new q("InteractiveCellExecute"),q.InteractiveInputExecute=new q("InteractiveInputExecute"),q.InteractiveInputConfig=new q("InteractiveInputConfig"),q.ReplInputExecute=new q("ReplInputExecute"),q.IssueReporter=new q("IssueReporter"),q.NotebookToolbar=new q("NotebookToolbar"),q.NotebookStickyScrollContext=new q("NotebookStickyScrollContext"),q.NotebookCellTitle=new q("NotebookCellTitle"),q.NotebookCellDelete=new q("NotebookCellDelete"),q.NotebookCellInsert=new q("NotebookCellInsert"),q.NotebookCellBetween=new q("NotebookCellBetween"),q.NotebookCellListTop=new q("NotebookCellTop"),q.NotebookCellExecute=new q("NotebookCellExecute"),q.NotebookCellExecuteGoTo=new q("NotebookCellExecuteGoTo"),q.NotebookCellExecutePrimary=new q("NotebookCellExecutePrimary"),q.NotebookDiffCellInputTitle=new q("NotebookDiffCellInputTitle"),q.NotebookDiffCellMetadataTitle=new q("NotebookDiffCellMetadataTitle"),q.NotebookDiffCellOutputsTitle=new q("NotebookDiffCellOutputsTitle"),q.NotebookOutputToolbar=new q("NotebookOutputToolbar"),q.NotebookOutlineFilter=new q("NotebookOutlineFilter"),q.NotebookOutlineActionMenu=new q("NotebookOutlineActionMenu"),q.NotebookEditorLayoutConfigure=new q("NotebookEditorLayoutConfigure"),q.NotebookKernelSource=new q("NotebookKernelSource"),q.BulkEditTitle=new q("BulkEditTitle"),q.BulkEditContext=new q("BulkEditContext"),q.TimelineItemContext=new q("TimelineItemContext"),q.TimelineTitle=new q("TimelineTitle"),q.TimelineTitleContext=new q("TimelineTitleContext"),q.TimelineFilterSubMenu=new q("TimelineFilterSubMenu"),q.AccountsContext=new q("AccountsContext"),q.SidebarTitle=new q("SidebarTitle"),q.PanelTitle=new q("PanelTitle"),q.AuxiliaryBarTitle=new q("AuxiliaryBarTitle"),q.AuxiliaryBarHeader=new q("AuxiliaryBarHeader"),q.TerminalInstanceContext=new q("TerminalInstanceContext"),q.TerminalEditorInstanceContext=new q("TerminalEditorInstanceContext"),q.TerminalNewDropdownContext=new q("TerminalNewDropdownContext"),q.TerminalTabContext=new q("TerminalTabContext"),q.TerminalTabEmptyAreaContext=new q("TerminalTabEmptyAreaContext"),q.TerminalStickyScrollContext=new q("TerminalStickyScrollContext"),q.WebviewContext=new q("WebviewContext"),q.InlineCompletionsActions=new q("InlineCompletionsActions"),q.InlineEditsActions=new q("InlineEditsActions"),q.InlineEditActions=new q("InlineEditActions"),q.NewFile=new q("NewFile"),q.MergeInput1Toolbar=new q("MergeToolbar1Toolbar"),q.MergeInput2Toolbar=new q("MergeToolbar2Toolbar"),q.MergeBaseToolbar=new q("MergeBaseToolbar"),q.MergeInputResultToolbar=new q("MergeToolbarResultToolbar"),q.InlineSuggestionToolbar=new q("InlineSuggestionToolbar"),q.InlineEditToolbar=new q("InlineEditToolbar"),q.ChatContext=new q("ChatContext"),q.ChatCodeBlock=new q("ChatCodeblock"),q.ChatCompareBlock=new q("ChatCompareBlock"),q.ChatMessageTitle=new q("ChatMessageTitle"),q.ChatExecute=new q("ChatExecute"),q.ChatExecuteSecondary=new q("ChatExecuteSecondary"),q.ChatInputSide=new q("ChatInputSide"),q.AccessibleView=new q("AccessibleView"),q.MultiDiffEditorFileToolbar=new q("MultiDiffEditorFileToolbar"),q.DiffEditorHunkToolbar=new q("DiffEditorHunkToolbar"),q.DiffEditorSelectionToolbar=new q("DiffEditorSelectionToolbar");let at=q;const pc=Zi("menuService"),ww=class ww{static for(e){let t=this._all.get(e);return t||(t=new ww(e),this._all.set(e,t)),t}static merge(e){const t=new Set;for(const i of e)i instanceof ww&&t.add(i.id);return t}constructor(e){this.id=e,this.has=t=>t===e}};ww._all=new Map;let KF=ww;const nl=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new TDe({merge:KF.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(s){return this._commands.set(s.id,s),this._onDidChangeMenu.fire(KF.for(at.CommandPalette)),gt(()=>{this._commands.delete(s.id)&&this._onDidChangeMenu.fire(KF.for(at.CommandPalette))})}getCommand(s){return this._commands.get(s)}getCommands(){const s=new Map;return this._commands.forEach((e,t)=>s.set(t,e)),s}appendMenuItem(s,e){let t=this._menuItems.get(s);t||(t=new Pr,this._menuItems.set(s,t));const i=t.push(e);return this._onDidChangeMenu.fire(KF.for(s)),gt(()=>{i(),this._onDidChangeMenu.fire(KF.for(s))})}appendMenuItems(s){const e=new Ze;for(const{id:t,item:i}of s)e.add(this.appendMenuItem(t,i));return e}getMenuItems(s){let e;return this._menuItems.has(s)?e=[...this._menuItems.get(s)]:e=[],s===at.CommandPalette&&this._appendImplicitItems(e),e}_appendImplicitItems(s){const e=new Set;for(const t of s)gW(t)&&(e.add(t.command.id),t.alt&&e.add(t.alt.id));this._commands.forEach((t,i)=>{e.has(i)||s.push({command:t})})}};class bW extends eV{constructor(e,t,i){super(`submenuitem.${e.submenu.id}`,typeof e.title=="string"?e.title:e.title.value,i,"submenu"),this.item=e,this.hideActions=t}}let Ud=qI=class{static label(e,t){return t!=null&&t.renderShortTitle&&e.shortTitle?typeof e.shortTitle=="string"?e.shortTitle:e.shortTitle.value:typeof e.title=="string"?e.title:e.title.value}constructor(e,t,i,n,o,l,r){var d;this.hideActions=n,this.menuKeybinding=o,this._commandService=r,this.id=e.id,this.label=qI.label(e,i),this.tooltip=(typeof e.tooltip=="string"?e.tooltip:(d=e.tooltip)==null?void 0:d.value)??"",this.enabled=!e.precondition||l.contextMatchesRules(e.precondition),this.checked=void 0;let a;if(e.toggled){const c=e.toggled.condition?e.toggled:{condition:e.toggled};this.checked=l.contextMatchesRules(c.condition),this.checked&&c.tooltip&&(this.tooltip=typeof c.tooltip=="string"?c.tooltip:c.tooltip.value),this.checked&&Qt.isThemeIcon(c.icon)&&(a=c.icon),this.checked&&c.title&&(this.label=typeof c.title=="string"?c.title:c.title.value)}a||(a=Qt.isThemeIcon(e.icon)?e.icon:void 0),this.item=e,this.alt=t?new qI(t,void 0,i,n,void 0,l,r):void 0,this._options=i,this.class=a&&Qt.asClassName(a)}run(...e){var i,n;let t=[];return(i=this._options)!=null&&i.arg&&(t=[...t,this._options.arg]),(n=this._options)!=null&&n.shouldForwardArgs&&(t=[...t,...e]),this._commandService.executeCommand(this.id,...t)}};Ud=qI=bve([roe(5,wt),roe(6,On)],Ud);class da{constructor(e){this.desc=e}}function Xn(s){const e=[],t=new s,{f1:i,menu:n,keybinding:o,...l}=t.desc;if(Bi.getCommand(l.id))throw new Error(`Cannot register two commands with the same id: ${l.id}`);if(e.push(Bi.registerCommand({id:l.id,handler:(r,...a)=>t.run(r,...a),metadata:l.metadata})),Array.isArray(n))for(const r of n)e.push(nl.appendMenuItem(r.id,{command:{...l,precondition:r.precondition===null?void 0:l.precondition},...r}));else n&&e.push(nl.appendMenuItem(n.id,{command:{...l,precondition:n.precondition===null?void 0:l.precondition},...n}));if(i&&(e.push(nl.appendMenuItem(at.CommandPalette,{command:l,when:l.precondition})),e.push(nl.addCommand(l))),Array.isArray(o))for(const r of o)e.push(la.registerKeybindingRule({...r,id:l.id,when:l.precondition?Ne.and(l.precondition,r.when):r.when}));else o&&e.push(la.registerKeybindingRule({...o,id:l.id,when:l.precondition?Ne.and(l.precondition,o.when):o.when}));return{dispose(){Tn(e)}}}const lr=Zi("telemetryService"),El=Zi("logService");var Ma;(function(s){s[s.Off=0]="Off",s[s.Trace=1]="Trace",s[s.Debug=2]="Debug",s[s.Info=3]="Info",s[s.Warning=4]="Warning",s[s.Error=5]="Error"})(Ma||(Ma={}));const Lge=Ma.Info;class kge extends de{constructor(){super(...arguments),this.level=Lge,this._onDidChangeLogLevel=this._register(new re),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(e){return this.level!==Ma.Off&&this.level<=e}}class fve extends kge{constructor(e=Lge,t=!0){super(),this.useColors=t,this.setLevel(e)}trace(e,...t){this.checkLogLevel(Ma.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",e,...t):console.log(e,...t))}debug(e,...t){this.checkLogLevel(Ma.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",e,...t):console.log(e,...t))}info(e,...t){this.checkLogLevel(Ma.Info)&&(this.useColors?console.log("%c INFO","color: #33f",e,...t):console.log(e,...t))}warn(e,...t){this.checkLogLevel(Ma.Warning)&&(this.useColors?console.log("%c WARN","color: #993",e,...t):console.log(e,...t))}error(e,...t){this.checkLogLevel(Ma.Error)&&(this.useColors?console.log("%c ERR","color: #f33",e,...t):console.error(e,...t))}}class Fve extends kge{constructor(e){super(),this.loggers=e,e.length&&this.setLevel(e[0].getLevel())}setLevel(e){for(const t of this.loggers)t.setLevel(e);super.setLevel(e)}trace(e,...t){for(const i of this.loggers)i.trace(e,...t)}debug(e,...t){for(const i of this.loggers)i.debug(e,...t)}info(e,...t){for(const i of this.loggers)i.info(e,...t)}warn(e,...t){for(const i of this.loggers)i.warn(e,...t)}error(e,...t){for(const i of this.loggers)i.error(e,...t)}dispose(){for(const e of this.loggers)e.dispose();super.dispose()}}function Zve(s){switch(s){case Ma.Trace:return"trace";case Ma.Debug:return"debug";case Ma.Info:return"info";case Ma.Warning:return"warn";case Ma.Error:return"error";case Ma.Off:return"off"}}new Ke("logLevel",Zve(Ma.Info));class mY{constructor(e){this.id=e.id,this.precondition=e.precondition,this._kbOpts=e.kbOpts,this._menuOpts=e.menuOpts,this.metadata=e.metadata}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const e=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const t of e){let i=t.kbExpr;this.precondition&&(i?i=Ne.and(i,this.precondition):i=this.precondition);const n={id:this.id,weight:t.weight,args:t.args,when:i,primary:t.primary,secondary:t.secondary,win:t.win,linux:t.linux,mac:t.mac};la.registerKeybindingRule(n)}}Bi.registerCommand({id:this.id,handler:(e,t)=>this.runCommand(e,t),metadata:this.metadata})}_registerMenuItem(e){nl.appendMenuItem(e.menuId,{group:e.group,command:{id:this.id,title:e.title,icon:e.icon,precondition:this.precondition},when:e.when,order:e.order})}}class JQ extends mY{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t,i,n){return this._implementations.push({priority:e,name:t,implementation:i,when:n}),this._implementations.sort((o,l)=>l.priority-o.priority),{dispose:()=>{for(let o=0;o<this._implementations.length;o++)if(this._implementations[o].implementation===i){this._implementations.splice(o,1);return}}}}runCommand(e,t){const i=e.get(El),n=e.get(wt);i.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);for(const o of this._implementations){if(o.when){const r=n.getContext(kl());if(!o.when.evaluate(r))continue}const l=o.implementation(e,t);if(l)return i.trace(`Command '${this.id}' was handled by '${o.name}'.`),typeof l=="boolean"?void 0:l}i.trace(`The Command '${this.id}' was not handled by any implementation.`)}}class Ige extends mY{constructor(e,t){super(t),this.command=e}runCommand(e,t){return this.command.runCommand(e,t)}}class Io extends mY{static bindToContribution(e){return class extends Io{constructor(i){super(i),this._callback=i.handler}runEditorCommand(i,n,o){const l=e(n);l&&this._callback(l,o)}}}static runEditorCommand(e,t,i,n){const o=e.get(zi),l=o.getFocusedCodeEditor()||o.getActiveCodeEditor();if(l)return l.invokeWithinContext(r=>{if(r.get(wt).contextMatchesRules(i??void 0))return n(r,l,t)})}runCommand(e,t){return Io.runEditorCommand(e,t,this.precondition,(i,n,o)=>this.runEditorCommand(i,n,o))}}class et extends Io{static convertOptions(e){let t;Array.isArray(e.menuOpts)?t=e.menuOpts:e.menuOpts?t=[e.menuOpts]:t=[];function i(n){return n.menuId||(n.menuId=at.EditorContext),n.title||(n.title=e.label),n.when=Ne.and(e.precondition,n.when),n}return Array.isArray(e.contextMenuOpts)?t.push(...e.contextMenuOpts.map(i)):e.contextMenuOpts&&t.push(i(e.contextMenuOpts)),e.menuOpts=t,e}constructor(e){super(et.convertOptions(e)),this.label=e.label,this.alias=e.alias}runEditorCommand(e,t,i){return this.reportTelemetry(e,t),this.run(e,t,i||{})}reportTelemetry(e,t){e.get(lr).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class Dge extends et{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t){return this._implementations.push([e,t]),this._implementations.sort((i,n)=>n[0]-i[0]),{dispose:()=>{for(let i=0;i<this._implementations.length;i++)if(this._implementations[i][1]===t){this._implementations.splice(i,1);return}}}}run(e,t,i){for(const n of this._implementations){const o=n[1](e,t,i);if(o)return typeof o=="boolean"?void 0:o}}}class lm extends da{run(e,...t){const i=e.get(zi),n=i.getFocusedCodeEditor()||i.getActiveCodeEditor();if(n)return n.invokeWithinContext(o=>{var d;const l=o.get(wt),r=o.get(El);if(!l.contextMatchesRules(this.desc.precondition??void 0)){r.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(d=this.desc.precondition)==null?void 0:d.serialize());return}return this.runEditorCommand(o,n,...t)})}}function Ya(s,e){Bi.registerCommand(s,function(t,...i){const n=t.get(bt),[o,l]=i;Yi(At.isUri(o)),Yi(oe.isIPosition(l));const r=t.get(es).getModel(o);if(r){const a=oe.lift(l);return n.invokeFunction(e,r,a,...i.slice(2))}return t.get(Xa).createModelReference(o).then(a=>new Promise((d,c)=>{try{const h=n.invokeFunction(e,a.object.textEditorModel,oe.lift(l),i.slice(2));d(h)}catch(h){c(h)}}).finally(()=>{a.dispose()}))})}function Oe(s){return Ec.INSTANCE.registerEditorCommand(s),s}function Me(s){const e=new s;return Ec.INSTANCE.registerEditorAction(e),e}function Gge(s){return Ec.INSTANCE.registerEditorAction(s),s}function Ave(s){Ec.INSTANCE.registerEditorAction(s)}function Gi(s,e,t){Ec.INSTANCE.registerEditorContribution(s,e,t)}var zZ;(function(s){function e(l){return Ec.INSTANCE.getEditorCommand(l)}s.getEditorCommand=e;function t(){return Ec.INSTANCE.getEditorActions()}s.getEditorActions=t;function i(){return Ec.INSTANCE.getEditorContributions()}s.getEditorContributions=i;function n(l){return Ec.INSTANCE.getEditorContributions().filter(r=>l.indexOf(r.id)>=0)}s.getSomeEditorContributions=n;function o(){return Ec.INSTANCE.getDiffEditorContributions()}s.getDiffEditorContributions=o})(zZ||(zZ={}));const Nve={EditorCommonContributions:"editor.contributions"},aX=class aX{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(e,t,i){this.editorContributions.push({id:e,ctor:t,instantiation:i})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(e){e.register(),this.editorActions.push(e)}getEditorActions(){return this.editorActions}registerEditorCommand(e){e.register(),this.editorCommands[e.id]=e}getEditorCommand(e){return this.editorCommands[e]||null}};aX.INSTANCE=new aX;let Ec=aX;Vs.add(Nve.EditorCommonContributions,Ec.INSTANCE);function oB(s){return s.register(),s}const Ege=oB(new JQ({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:at.MenubarEditMenu,group:"1_do",title:U({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1},{menuId:at.CommandPalette,group:"",title:U("undo","Undo"),order:1}]}));oB(new Ige(Ege,{id:"default:undo",precondition:void 0}));const vge=oB(new JQ({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:at.MenubarEditMenu,group:"1_do",title:U({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2},{menuId:at.CommandPalette,group:"",title:U("redo","Redo"),order:1}]}));oB(new Ige(vge,{id:"default:redo",precondition:void 0}));const Rve=oB(new JQ({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:at.MenubarSelectionMenu,group:"1_basic",title:U({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1},{menuId:at.CommandPalette,group:"",title:U("selectAll","Select All"),order:1}]})),aoe="default",Sve="$initialize";let doe=!1;function DH(s){jA&&(doe||(doe=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(s.message))}class Wve{constructor(e,t,i,n,o){this.vsWorker=e,this.req=t,this.channel=i,this.method=n,this.args=o,this.type=0}}class coe{constructor(e,t,i,n){this.vsWorker=e,this.seq=t,this.res=i,this.err=n,this.type=1}}class Vve{constructor(e,t,i,n,o){this.vsWorker=e,this.req=t,this.channel=i,this.eventName=n,this.arg=o,this.type=2}}class Qve{constructor(e,t,i){this.vsWorker=e,this.req=t,this.event=i,this.type=3}}class yve{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class Cve{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t,i){const n=String(++this._lastSentReq);return new Promise((o,l)=>{this._pendingReplies[n]={resolve:o,reject:l},this._send(new Wve(this._workerId,n,e,t,i))})}listen(e,t,i){let n=null;const o=new re({onWillAddFirstListener:()=>{n=String(++this._lastSentReq),this._pendingEmitters.set(n,o),this._send(new Vve(this._workerId,n,e,t,i))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(n),this._send(new yve(this._workerId,n)),n=null}});return o.event}handleMessage(e){!e||!e.vsWorker||this._workerId!==-1&&e.vsWorker!==this._workerId||this._handleMessage(e)}createProxyToRemoteChannel(e,t){const i={get:(n,o)=>(typeof o=="string"&&!n[o]&&(Jge(o)?n[o]=l=>this.listen(e,o,l):xge(o)?n[o]=this.listen(e,o,void 0):o.charCodeAt(0)===36&&(n[o]=async(...l)=>(await(t==null?void 0:t()),this.sendMessage(e,o,l)))),n[o])};return new Proxy(Object.create(null),i)}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq]){console.warn("Got reply to unknown seq");return}const t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let i=e.err;e.err.$isError&&(i=new Error,i.name=e.err.name,i.message=e.err.message,i.stack=e.err.stack),t.reject(i);return}t.resolve(e.res)}_handleRequestMessage(e){const t=e.req;this._handler.handleMessage(e.channel,e.method,e.args).then(n=>{this._send(new coe(this._workerId,t,n,void 0))},n=>{n.detail instanceof Error&&(n.detail=Dse(n.detail)),this._send(new coe(this._workerId,t,void 0,Dse(n)))})}_handleSubscribeEventMessage(e){const t=e.req,i=this._handler.handleEvent(e.channel,e.eventName,e.arg)(n=>{this._send(new Qve(this._workerId,t,n))});this._pendingEvents.set(t,i)}_handleEventMessage(e){if(!this._pendingEmitters.has(e.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(e.req).fire(e.event)}_handleUnsubscribeEventMessage(e){if(!this._pendingEvents.has(e.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)}_send(e){const t=[];if(e.type===0)for(let i=0;i<e.args.length;i++)e.args[i]instanceof ArrayBuffer&&t.push(e.args[i]);else e.type===1&&e.res instanceof ArrayBuffer&&t.push(e.res);this._handler.sendMessage(e,t)}}class wve extends de{constructor(e,t){super(),this._localChannels=new Map,this._worker=this._register(e.create({amdModuleId:"vs/base/common/worker/simpleWorker",esmModuleLocation:t.esmModuleLocation,label:t.label},o=>{this._protocol.handleMessage(o)},o=>{vt(o)})),this._protocol=new Cve({sendMessage:(o,l)=>{this._worker.postMessage(o,l)},handleMessage:(o,l,r)=>this._handleMessage(o,l,r),handleEvent:(o,l,r)=>this._handleEvent(o,l,r)}),this._protocol.setWorkerId(this._worker.getId());let i=null;const n=globalThis.require;typeof n<"u"&&typeof n.getConfig=="function"?i=n.getConfig():typeof globalThis.requirejs<"u"&&(i=globalThis.requirejs.s.contexts._.config),this._onModuleLoaded=this._protocol.sendMessage(aoe,Sve,[this._worker.getId(),JSON.parse(JSON.stringify(i)),t.amdModuleId]),this.proxy=this._protocol.createProxyToRemoteChannel(aoe,async()=>{await this._onModuleLoaded}),this._onModuleLoaded.catch(o=>{this._onError("Worker failed to load "+t.amdModuleId,o)})}_handleMessage(e,t,i){const n=this._localChannels.get(e);if(!n)return Promise.reject(new Error(`Missing channel ${e} on main thread`));if(typeof n[t]!="function")return Promise.reject(new Error(`Missing method ${t} on main thread channel ${e}`));try{return Promise.resolve(n[t].apply(n,i))}catch(o){return Promise.reject(o)}}_handleEvent(e,t,i){const n=this._localChannels.get(e);if(!n)throw new Error(`Missing channel ${e} on main thread`);if(Jge(t)){const o=n[t].call(n,i);if(typeof o!="function")throw new Error(`Missing dynamic event ${t} on main thread channel ${e}.`);return o}if(xge(t)){const o=n[t];if(typeof o!="function")throw new Error(`Missing event ${t} on main thread channel ${e}.`);return o}throw new Error(`Malformed event name ${t}`)}setChannel(e,t){this._localChannels.set(e,t)}_onError(e,t){console.error(e),console.info(t)}}function xge(s){return s[0]==="o"&&s[1]==="n"&&$m(s.charCodeAt(2))}function Jge(s){return/^onDynamic/.test(s)&&$m(s.charCodeAt(9))}function B0(s,e){var i;const t=globalThis.MonacoEnvironment;if(t!=null&&t.createTrustedTypesPolicy)try{return t.createTrustedTypesPolicy(s,e)}catch(n){vt(n);return}try{return(i=globalThis.trustedTypes)==null?void 0:i.createPolicy(s,e)}catch(n){vt(n);return}}let rS;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?rS=globalThis.workerttPolicy:rS=B0("defaultWorkerFactory",{createScriptURL:s=>s});function Mve(s,e){const t=globalThis.MonacoEnvironment;if(t){if(typeof t.getWorker=="function")return t.getWorker("workerMain.js",e);if(typeof t.getWorkerUrl=="function"){const i=t.getWorkerUrl("workerMain.js",e);return new Worker(rS?rS.createScriptURL(i):i,{name:e,type:"module"})}}if(s){const i=Tve(e,s.toString(!0)),n=new Worker(rS?rS.createScriptURL(i):i,{name:e,type:"module"});return Bve(n)}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function Tve(s,e,t){if(!(/^((http:)|(https:)|(file:)|(vscode-file:))/.test(e)&&e.substring(0,globalThis.origin.length)!==globalThis.origin)){const o=e.lastIndexOf("?"),l=e.lastIndexOf("#",o),r=o>0?new URLSearchParams(e.substring(o+1,~l?l:void 0)):new URLSearchParams;CH.addSearchParam(r,!0,!0),r.toString()?e=`${e}?${r.toString()}#${s}`:e=`${e}#${s}`}const n=new Blob([Oh([`/*${s}*/`,t?`globalThis.MonacoEnvironment = { baseUrl: '${t}' };`:void 0,`globalThis._VSCODE_NLS_MESSAGES = ${JSON.stringify(Npe())};`,`globalThis._VSCODE_NLS_LANGUAGE = ${JSON.stringify(p$())};`,`globalThis._VSCODE_FILE_ROOT = '${globalThis._VSCODE_FILE_ROOT}';`,"const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });","globalThis.workerttPolicy = ttPolicy;",`await import(ttPolicy?.createScriptURL('${e}') ?? '${e}');`,"globalThis.postMessage({ type: 'vscode-worker-ready' });",`/*${s}*/`]).join("")],{type:"application/javascript"});return URL.createObjectURL(n)}function Bve(s){return new Promise((e,t)=>{s.onmessage=function(i){i.data.type==="vscode-worker-ready"&&(s.onmessage=null,e(s))},s.onerror=t})}function Lve(s){return typeof s.then=="function"}class kve extends de{constructor(e,t,i,n,o,l){super(),this.id=i,this.label=n;const r=Mve(e,n);Lve(r)?this.worker=r:this.worker=Promise.resolve(r),this.postMessage(t,[]),this.worker.then(a=>{a.onmessage=function(d){o(d.data)},a.onmessageerror=l,typeof a.addEventListener=="function"&&a.addEventListener("error",l)}),this._register(gt(()=>{var a;(a=this.worker)==null||a.then(d=>{d.onmessage=null,d.onmessageerror=null,d.removeEventListener("error",l),d.terminate()}),this.worker=null}))}getId(){return this.id}postMessage(e,t){var i;(i=this.worker)==null||i.then(n=>{try{n.postMessage(e,t)}catch(o){vt(o),vt(new Error(`FAILED to post message to '${this.label}'-worker`,{cause:o}))}})}}class Ive{constructor(e,t){this.amdModuleId=e,this.label=t,this.esmModuleLocation=q5.asBrowserUri(`${e}.esm.js`)}}const dX=class dX{constructor(){this._webWorkerFailedBeforeError=!1}create(e,t,i){const n=++dX.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new kve(e.esmModuleLocation,e.amdModuleId,n,e.label||"anonymous"+n,t,o=>{DH(o),this._webWorkerFailedBeforeError=o,i(o)})}};dX.LAST_WORKER_ID=0;let GH=dX;function Dve(s,e){const t=typeof s=="string"?new Ive(s,e):s;return new wve(new GH,t)}var fo;(function(s){s[s.None=0]="None",s[s.Indent=1]="Indent",s[s.IndentOutdent=2]="IndentOutdent",s[s.Outdent=3]="Outdent"})(fo||(fo={}));class e3{constructor(e){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=e.open,this.close=e.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(e.notIn))for(let t=0,i=e.notIn.length;t<i;t++)switch(e.notIn[t]){case"string":this._inString=!1;break;case"comment":this._inComment=!1;break;case"regex":this._inRegEx=!1;break}}isOK(e){switch(e){case 0:return!0;case 1:return this._inComment;case 2:return this._inString;case 3:return this._inRegEx}}shouldAutoClose(e,t){if(e.getTokenCount()===0)return!0;const i=e.findTokenIndexAtOffset(t-2),n=e.getStandardTokenType(i);return this.isOK(n)}_findNeutralCharacterInRange(e,t){for(let i=e;i<=t;i++){const n=String.fromCharCode(i);if(!this.open.includes(n)&&!this.close.includes(n))return n}return null}findNeutralCharacter(){return this._neutralCharacterSearched||(this._neutralCharacterSearched=!0,this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(48,57)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(97,122)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(65,90))),this._neutralCharacter}}class Gve{constructor(e){this.autoClosingPairsOpenByStart=new Map,this.autoClosingPairsOpenByEnd=new Map,this.autoClosingPairsCloseByStart=new Map,this.autoClosingPairsCloseByEnd=new Map,this.autoClosingPairsCloseSingleChar=new Map;for(const t of e)M1(this.autoClosingPairsOpenByStart,t.open.charAt(0),t),M1(this.autoClosingPairsOpenByEnd,t.open.charAt(t.open.length-1),t),M1(this.autoClosingPairsCloseByStart,t.close.charAt(0),t),M1(this.autoClosingPairsCloseByEnd,t.close.charAt(t.close.length-1),t),t.close.length===1&&t.open.length===1&&M1(this.autoClosingPairsCloseSingleChar,t.close,t)}}function M1(s,e,t){s.has(e)?s.get(e).push(t):s.set(e,[t])}const qS=class qS{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map(t=>new e3(t)):e.brackets?this._autoClosingPairs=e.brackets.map(t=>new e3({open:t[0],close:t[1]})):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){const t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new e3({open:t.open,close:t.close||""}))}this._autoCloseBeforeForQuotes=typeof e.autoCloseBefore=="string"?e.autoCloseBefore:qS.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets=typeof e.autoCloseBefore=="string"?e.autoCloseBefore:qS.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(e){return e?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}};qS.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=`;:.,=}])>
- `,qS.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS=`'"\`;:.,=}])>
- `;let EH=qS;function SZ(s,e){const t=s.getCount(),i=s.findTokenIndexAtOffset(e),n=s.getLanguageId(i);let o=i;for(;o+1<t&&s.getLanguageId(o+1)===n;)o++;let l=i;for(;l>0&&s.getLanguageId(l-1)===n;)l--;return new Eve(s,n,l,o+1,s.getStartOffset(l),s.getEndOffset(o))}class Eve{constructor(e,t,i,n,o,l){this._scopedLineTokensBrand=void 0,this._actual=e,this.languageId=t,this._firstTokenIndex=i,this._lastTokenIndex=n,this.firstCharOffset=o,this._lastCharOffset=l,this.languageIdCodec=e.languageIdCodec}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getLineLength(){return this._lastCharOffset-this.firstCharOffset}getActualLineContentBefore(e){return this._actual.getLineContent().substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}toIViewLineTokens(){return this._actual.sliceAndInflate(this.firstCharOffset,this._lastCharOffset,0)}}function wm(s){return(s&3)!==0}const hoe=typeof Buffer<"u";let t3;class pY{static wrap(e){return hoe&&!Buffer.isBuffer(e)&&(e=Buffer.from(e.buffer,e.byteOffset,e.byteLength)),new pY(e)}constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}toString(){return hoe?this.buffer.toString():(t3||(t3=new TextDecoder),t3.decode(this.buffer))}}function vve(s,e){return s[e+0]<<0>>>0|s[e+1]<<8>>>0}function xve(s,e,t){s[t+0]=e&255,e=e>>>8,s[t+1]=e&255}function Qu(s,e){return s[e]*2**24+s[e+1]*2**16+s[e+2]*2**8+s[e+3]}function yu(s,e,t){s[t+3]=e,e=e>>>8,s[t+2]=e,e=e>>>8,s[t+1]=e,e=e>>>8,s[t]=e}function uoe(s,e){return s[e]}function moe(s,e,t){s[t]=e}let i3;function Xge(){return i3||(i3=new TextDecoder("UTF-16LE")),i3}let n3;function Jve(){return n3||(n3=new TextDecoder("UTF-16BE")),n3}let s3;function Yge(){return s3||(s3=ype()?Xge():Jve()),s3}function Xve(s,e,t){const i=new Uint16Array(s.buffer,e,t);return t>0&&(i[0]===65279||i[0]===65534)?Yve(s,e,t):Xge().decode(i)}function Yve(s,e,t){const i=[];let n=0;for(let o=0;o<t;o++){const l=vve(s,e);e+=2,i[n++]=String.fromCharCode(l)}return i.join("")}class XQ{constructor(e){this._capacity=e|0,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}reset(){this._completedStrings=null,this._bufferLength=0}build(){return this._completedStrings!==null?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()}_buildBuffer(){if(this._bufferLength===0)return"";const e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return Yge().decode(e)}_flushBuffer(){const e=this._buildBuffer();this._bufferLength=0,this._completedStrings===null?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e}appendCharCode(e){const t=this._capacity-this._bufferLength;t<=1&&(t===0||xo(e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendASCIICharCode(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendString(e){const t=e.length;if(this._bufferLength+t>=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=e;return}for(let i=0;i<t;i++)this._buffer[this._bufferLength++]=e.charCodeAt(i)}}class OE{constructor(e,t,i,n,o,l){this._richEditBracketBrand=void 0,this.languageId=e,this.index=t,this.open=i,this.close=n,this.forwardRegex=o,this.reversedRegex=l,this._openSet=OE._toSet(this.open),this._closeSet=OE._toSet(this.close)}isOpen(e){return this._openSet.has(e)}isClose(e){return this._closeSet.has(e)}static _toSet(e){const t=new Set;for(const i of e)t.add(i);return t}}function zve(s){const e=s.length;s=s.map(l=>[l[0].toLowerCase(),l[1].toLowerCase()]);const t=[];for(let l=0;l<e;l++)t[l]=l;const i=(l,r)=>{const[a,d]=l,[c,h]=r;return a===c||a===h||d===c||d===h},n=(l,r)=>{const a=Math.min(l,r),d=Math.max(l,r);for(let c=0;c<e;c++)t[c]===d&&(t[c]=a)};for(let l=0;l<e;l++){const r=s[l];for(let a=l+1;a<e;a++){const d=s[a];i(r,d)&&n(t[l],t[a])}}const o=[];for(let l=0;l<e;l++){const r=[],a=[];for(let d=0;d<e;d++)if(t[d]===l){const[c,h]=s[d];r.push(c),a.push(h)}r.length>0&&o.push({open:r,close:a})}return o}class _ve{constructor(e,t){this._richEditBracketsBrand=void 0;const i=zve(t);this.brackets=i.map((n,o)=>new OE(e,o,n.open,n.close,Ove(n.open,n.close,i,o),jve(n.open,n.close,i,o))),this.forwardRegex=Hve(this.brackets),this.reversedRegex=Pve(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const n of this.brackets){for(const o of n.open)this.textIsBracket[o]=n,this.textIsOpenBracket[o]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,o.length);for(const o of n.close)this.textIsBracket[o]=n,this.textIsOpenBracket[o]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,o.length)}}}function zge(s,e,t,i){for(let n=0,o=e.length;n<o;n++){if(n===t)continue;const l=e[n];for(const r of l.open)r.indexOf(s)>=0&&i.push(r);for(const r of l.close)r.indexOf(s)>=0&&i.push(r)}}function _ge(s,e){return s.length-e.length}function gY(s){if(s.length<=1)return s;const e=[],t=new Set;for(const i of s)t.has(i)||(e.push(i),t.add(i));return e}function Ove(s,e,t,i){let n=[];n=n.concat(s),n=n.concat(e);for(let o=0,l=n.length;o<l;o++)zge(n[o],t,i,n);return n=gY(n),n.sort(_ge),n.reverse(),lB(n)}function jve(s,e,t,i){let n=[];n=n.concat(s),n=n.concat(e);for(let o=0,l=n.length;o<l;o++)zge(n[o],t,i,n);return n=gY(n),n.sort(_ge),n.reverse(),lB(n.map(Y$))}function Hve(s){let e=[];for(const t of s){for(const i of t.open)e.push(i);for(const i of t.close)e.push(i)}return e=gY(e),lB(e)}function Pve(s){let e=[];for(const t of s){for(const i of t.open)e.push(i);for(const i of t.close)e.push(i)}return e=gY(e),lB(e.map(Y$))}function Kve(s){const e=/^[\w ]+$/.test(s);return s=dc(s),e?`\\b${s}\\b`:s}function lB(s,e){const t=`(${s.map(Kve).join(")|(")})`;return qpe(t,!0,e)}const Y$=function(){function s(i){const n=new Uint16Array(i.length);let o=0;for(let l=i.length-1;l>=0;l--)n[o++]=i.charCodeAt(l);return Yge().decode(n)}let e=null,t=null;return function(n){return e!==n&&(e=n,t=s(e)),t}}();class mh{static _findPrevBracketInText(e,t,i,n){const o=i.match(e);if(!o)return null;const l=i.length-(o.index||0),r=o[0].length,a=n+l;return new v(t,a-r+1,t,a+1)}static findPrevBracketInRange(e,t,i,n,o){const r=Y$(i).substring(i.length-o,i.length-n);return this._findPrevBracketInText(e,t,r,n)}static findNextBracketInText(e,t,i,n){const o=i.match(e);if(!o)return null;const l=o.index||0,r=o[0].length;if(r===0)return null;const a=n+l;return new v(t,a+1,t,a+1+r)}static findNextBracketInRange(e,t,i,n,o){const l=i.substring(n,o);return this.findNextBracketInText(e,t,l,n)}}class qve{constructor(e){this._richEditBrackets=e}getElectricCharacters(){const e=[];if(this._richEditBrackets)for(const t of this._richEditBrackets.brackets)for(const i of t.close){const n=i.charAt(i.length-1);e.push(n)}return U0(e)}onElectricCharacter(e,t,i){if(!this._richEditBrackets||this._richEditBrackets.brackets.length===0)return null;const n=t.findTokenIndexAtOffset(i-1);if(wm(t.getStandardTokenType(n)))return null;const o=this._richEditBrackets.reversedRegex,l=t.getLineContent().substring(0,i-1)+e,r=mh.findPrevBracketInRange(o,1,l,0,l.length);if(!r)return null;const a=l.substring(r.startColumn-1,r.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[a])return null;const c=t.getActualLineContentBefore(r.startColumn-1);return/^\s*$/.test(c)?{matchOpenBracket:a}:null}}function DL(s){return s.global&&(s.lastIndex=0),!0}class $ve{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&DL(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&DL(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&DL(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&DL(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}class aS{constructor(e){e=e||{},e.brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach(t=>{const i=aS._createOpenBracketRegExp(t[0]),n=aS._createCloseBracketRegExp(t[1]);i&&n&&this._brackets.push({open:t[0],openRegExp:i,close:t[1],closeRegExp:n})}),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,i,n){if(e>=3)for(let o=0,l=this._regExpRules.length;o<l;o++){const r=this._regExpRules[o];if([{reg:r.beforeText,text:i},{reg:r.afterText,text:n},{reg:r.previousLineText,text:t}].every(d=>d.reg?(d.reg.lastIndex=0,d.reg.test(d.text)):!0))return r.action}if(e>=2&&i.length>0&&n.length>0)for(let o=0,l=this._brackets.length;o<l;o++){const r=this._brackets[o];if(r.openRegExp.test(i)&&r.closeRegExp.test(n))return{indentAction:fo.IndentOutdent}}if(e>=2&&i.length>0){for(let o=0,l=this._brackets.length;o<l;o++)if(this._brackets[o].openRegExp.test(i))return{indentAction:fo.Indent}}return null}static _createOpenBracketRegExp(e){let t=dc(e);return/\B/.test(t.charAt(0))||(t="\\b"+t),t+="\\s*$",aS._safeRegExp(t)}static _createCloseBracketRegExp(e){let t=dc(e);return/\B/.test(t.charAt(t.length-1))||(t=t+"\\b"),t="^\\s*"+t,aS._safeRegExp(t)}static _safeRegExp(e){try{return new RegExp(e)}catch(t){return vt(t),null}}}const li=Zi("configurationService");function vH(s,e){const t=Object.create(null);for(const i in s)Oge(t,i,s[i],e);return t}function Oge(s,e,t,i){const n=e.split("."),o=n.pop();let l=s;for(let r=0;r<n.length;r++){const a=n[r];let d=l[a];switch(typeof d){case"undefined":d=l[a]=Object.create(null);break;case"object":if(d===null){i(`Ignoring ${e} as ${n.slice(0,r+1).join(".")} is null`);return}break;default:i(`Ignoring ${e} as ${n.slice(0,r+1).join(".")} is ${JSON.stringify(d)}`);return}l=d}if(typeof l=="object"&&l!==null)try{l[o]=t}catch{i(`Ignoring ${e} as ${n.join(".")} is ${JSON.stringify(l)}`)}else i(`Ignoring ${e} as ${n.join(".")} is ${JSON.stringify(l)}`)}function exe(s,e){const t=e.split(".");jge(s,t)}function jge(s,e){const t=e.shift();if(e.length===0){delete s[t];return}if(Object.keys(s).indexOf(t)!==-1){const i=s[t];typeof i=="object"&&!Array.isArray(i)&&(jge(i,e),Object.keys(i).length===0&&delete s[t])}}function poe(s,e,t){function i(l,r){let a=l;for(const d of r){if(typeof a!="object"||a===null)return;a=a[d]}return a}const n=e.split("."),o=i(s,n);return typeof o>"u"?t:o}function txe(s){return s.replace(/[\[\]]/g,"")}const Zs=Zi("languageService");class ep{constructor(e,t=[],i=!1){this.ctor=e,this.staticArguments=t,this.supportsDelayedInstantiation=i}}const Hge=[];function Ci(s,e,t){e instanceof ep||(e=new ep(e,[],!!t)),Hge.push([s,e])}function goe(){return Hge}const zs=Object.freeze({text:"text/plain",binary:"application/octet-stream",unknown:"application/unknown",markdown:"text/markdown",latex:"text/latex",uriList:"text/uri-list"}),bY={JSONContribution:"base.contributions.json"};function ixe(s){return s.length>0&&s.charAt(s.length-1)==="#"?s.substring(0,s.length-1):s}class nxe{constructor(){this._onDidChangeSchema=new re,this.schemasById={}}registerSchema(e,t){this.schemasById[ixe(e)]=t,this._onDidChangeSchema.fire(e)}notifySchemaChanged(e){this._onDidChangeSchema.fire(e)}}const sxe=new nxe;Vs.add(bY.JSONContribution,sxe);const nu={Configuration:"base.contributions.configuration"},T1="vscode://schemas/settings/resourceLanguage",boe=Vs.as(bY.JSONContribution);class oxe{constructor(){this.registeredConfigurationDefaults=[],this.overrideIdentifiers=new Set,this._onDidSchemaChange=new re,this._onDidUpdateConfiguration=new re,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:U("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},boe.registerSchema(T1,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(e,t=!0){this.registerConfigurations([e],t)}registerConfigurations(e,t=!0){const i=new Set;this.doRegisterConfigurations(e,t,i),boe.registerSchema(T1,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:i})}registerDefaultConfigurations(e){const t=new Set;this.doRegisterDefaultConfigurations(e,t),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:t,defaultsOverrides:!0})}doRegisterDefaultConfigurations(e,t){this.registeredConfigurationDefaults.push(...e);const i=[];for(const{overrides:n,source:o}of e)for(const l in n){t.add(l);const r=this.configurationDefaultsOverrides.get(l)??this.configurationDefaultsOverrides.set(l,{configurationDefaultOverrides:[]}).get(l),a=n[l];if(r.configurationDefaultOverrides.push({value:a,source:o}),PU.test(l)){const d=this.mergeDefaultConfigurationsForOverrideIdentifier(l,a,o,r.configurationDefaultOverrideValue);if(!d)continue;r.configurationDefaultOverrideValue=d,this.updateDefaultOverrideProperty(l,d,o),i.push(...jE(l))}else{const d=this.mergeDefaultConfigurationsForConfigurationProperty(l,a,o,r.configurationDefaultOverrideValue);if(!d)continue;r.configurationDefaultOverrideValue=d;const c=this.configurationProperties[l];c&&(this.updatePropertyDefaultValue(l,c),this.updateSchema(l,c))}}this.doRegisterOverrideIdentifiers(i)}updateDefaultOverrideProperty(e,t,i){const n={type:"object",default:t.value,description:U("defaultLanguageConfiguration.description","Configure settings to be overridden for the {0} language.",txe(e)),$ref:T1,defaultDefaultValue:t.value,source:i,defaultValueSource:i};this.configurationProperties[e]=n,this.defaultLanguageConfigurationOverridesNode.properties[e]=n}mergeDefaultConfigurationsForOverrideIdentifier(e,t,i,n){const o=(n==null?void 0:n.value)||{},l=(n==null?void 0:n.source)??new Map;if(!(l instanceof Map)){console.error("objectConfigurationSources is not a Map");return}for(const r of Object.keys(t)){const a=t[r];if(il(a)&&(Rr(o[r])||il(o[r]))){if(o[r]={...o[r]??{},...a},i)for(const c in a)l.set(`${r}.${c}`,i)}else o[r]=a,i?l.set(r,i):l.delete(r)}return{value:o,source:l}}mergeDefaultConfigurationsForConfigurationProperty(e,t,i,n){const o=this.configurationProperties[e],l=(n==null?void 0:n.value)??(o==null?void 0:o.defaultDefaultValue);let r=i;if(il(t)&&(o!==void 0&&o.type==="object"||o===void 0&&(Rr(l)||il(l)))){if(r=(n==null?void 0:n.source)??new Map,!(r instanceof Map)){console.error("defaultValueSource is not a Map");return}for(const d in t)i&&r.set(`${e}.${d}`,i);t={...il(l)?l:{},...t}}return{value:t,source:r}}registerOverrideIdentifiers(e){this.doRegisterOverrideIdentifiers(e),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(e){for(const t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(e,t,i){e.forEach(n=>{this.validateAndRegisterProperties(n,t,n.extensionInfo,n.restrictedProperties,void 0,i),this.configurationContributors.push(n),this.registerJSONConfiguration(n)})}validateAndRegisterProperties(e,t=!0,i,n,o=3,l){var d;o=qd(e.scope)?o:e.scope;const r=e.properties;if(r)for(const c in r){const h=r[c];if(t&&axe(c,h)){delete r[c];continue}if(h.source=i,h.defaultDefaultValue=r[c].default,this.updatePropertyDefaultValue(c,h),PU.test(c)?h.scope=void 0:(h.scope=qd(h.scope)?o:h.scope,h.restricted=qd(h.restricted)?!!(n!=null&&n.includes(c)):h.restricted),r[c].hasOwnProperty("included")&&!r[c].included){this.excludedConfigurationProperties[c]=r[c],delete r[c];continue}else this.configurationProperties[c]=r[c],(d=r[c].policy)!=null&&d.name&&this.policyConfigurations.set(r[c].policy.name,c);!r[c].deprecationMessage&&r[c].markdownDeprecationMessage&&(r[c].deprecationMessage=r[c].markdownDeprecationMessage),l.add(c)}const a=e.allOf;if(a)for(const c of a)this.validateAndRegisterProperties(c,t,i,n,o,l)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(e){const t=i=>{const n=i.properties;if(n)for(const l in n)this.updateSchema(l,n[l]);const o=i.allOf;o==null||o.forEach(t)};t(e)}updateSchema(e,t){switch(t.scope){case 1:break;case 2:break;case 6:break;case 3:break;case 4:break;case 5:this.resourceLanguageSettingsSchema.properties[e]=t;break}}updateOverridePropertyPatternKey(){for(const e of this.overrideIdentifiers.values()){const t=`[${e}]`,i={type:"object",description:U("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:U("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:T1};this.updatePropertyDefaultValue(t,i)}}registerOverridePropertyPatternKey(){U("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),U("overrideSettings.errorMessage","This setting does not support per-language configuration."),this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){var l;const i=(l=this.configurationDefaultsOverrides.get(e))==null?void 0:l.configurationDefaultOverrideValue;let n,o;i&&(!t.disallowConfigurationDefault||!i.source)&&(n=i.value,o=i.source),Rr(n)&&(n=t.defaultDefaultValue,o=void 0),Rr(n)&&(n=rxe(t.type)),t.default=n,t.defaultValueSource=o}}const Pge="\\[([^\\]]+)\\]",Uoe=new RegExp(Pge,"g"),lxe=`^(${Pge})+$`,PU=new RegExp(lxe);function jE(s){const e=[];if(PU.test(s)){let t=Uoe.exec(s);for(;t!=null&&t.length;){const i=t[1].trim();i&&e.push(i),t=Uoe.exec(s)}}return U0(e)}function rxe(s){switch(Array.isArray(s)?s[0]:s){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}const $I=new oxe;Vs.add(nu.Configuration,$I);function axe(s,e){var t,i,n,o;return s.trim()?PU.test(s)?U("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",s):$I.getConfigurationProperties()[s]!==void 0?U("config.property.duplicate","Cannot register '{0}'. This property is already registered.",s):(t=e.policy)!=null&&t.name&&$I.getPolicyConfigurations().get((i=e.policy)==null?void 0:i.name)!==void 0?U("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",s,(n=e.policy)==null?void 0:n.name,$I.getPolicyConfigurations().get((o=e.policy)==null?void 0:o.name)):null:U("config.property.empty","Cannot register an empty property")}const dxe={ModesRegistry:"editor.modesRegistry"};class cxe{constructor(){this._onDidChangeLanguages=new re,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,i=this._languages.length;t<i;t++)if(this._languages[t]===e){this._languages.splice(t,1);return}}}}getLanguages(){return this._languages}}const tV=new cxe;Vs.add(dxe.ModesRegistry,tV);const ia="plaintext",hxe=".txt";tV.registerLanguage({id:ia,extensions:[hxe],aliases:[U("plainText.alias","Plain Text"),"text"],mimetypes:[zs.text]});Vs.as(nu.Configuration).registerDefaultConfigurations([{overrides:{"[plaintext]":{"editor.unicodeHighlight.ambiguousCharacters":!1,"editor.unicodeHighlight.invisibleCharacters":!1}}}]);class uxe{constructor(e,t){this.languageId=e;const i=t.brackets?foe(t.brackets):[],n=new xse(r=>{const a=new Set;return{info:new mxe(this,r,a),closing:a}}),o=new xse(r=>{const a=new Set,d=new Set;return{info:new pxe(this,r,a,d),opening:a,openingColorized:d}});for(const[r,a]of i){const d=n.get(r),c=o.get(a);d.closing.add(c.info),c.opening.add(d.info)}const l=t.colorizedBracketPairs?foe(t.colorizedBracketPairs):i.filter(r=>!(r[0]==="<"&&r[1]===">"));for(const[r,a]of l){const d=n.get(r),c=o.get(a);d.closing.add(c.info),c.openingColorized.add(d.info),c.opening.add(d.info)}this._openingBrackets=new Map([...n.cachedValues].map(([r,a])=>[r,a.info])),this._closingBrackets=new Map([...o.cachedValues].map(([r,a])=>[r,a.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(e){return this._openingBrackets.get(e)}getClosingBracketInfo(e){return this._closingBrackets.get(e)}getBracketInfo(e){return this.getOpeningBracketInfo(e)||this.getClosingBracketInfo(e)}getBracketRegExp(e){const t=Array.from([...this._openingBrackets.keys(),...this._closingBrackets.keys()]);return lB(t,e)}}function foe(s){return s.filter(([e,t])=>e!==""&&t!=="")}class Kge{constructor(e,t){this.config=e,this.bracketText=t}get languageId(){return this.config.languageId}}class mxe extends Kge{constructor(e,t,i){super(e,t),this.openedBrackets=i,this.isOpeningBracket=!0}}class pxe extends Kge{constructor(e,t,i,n){super(e,t),this.openingBrackets=i,this.openingColorizedBrackets=n,this.isOpeningBracket=!1}closes(e){return e.config!==this.config?!1:this.openingBrackets.has(e)}closesColorized(e){return e.config!==this.config?!1:this.openingColorizedBrackets.has(e)}getOpeningBrackets(){return[...this.openingBrackets]}}var gxe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Foe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class o3{constructor(e){this.languageId=e}affects(e){return this.languageId?this.languageId===e:!0}}const Qs=Zi("languageConfigurationService");let xH=class extends de{constructor(e,t){super(),this.configurationService=e,this.languageService=t,this._registry=this._register(new Fxe),this.onDidChangeEmitter=this._register(new re),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const i=new Set(Object.values(JH));this._register(this.configurationService.onDidChangeConfiguration(n=>{const o=n.change.keys.some(r=>i.has(r)),l=n.change.overrides.filter(([r,a])=>a.some(d=>i.has(d))).map(([r])=>r);if(o)this.configurations.clear(),this.onDidChangeEmitter.fire(new o3(void 0));else for(const r of l)this.languageService.isRegisteredLanguageId(r)&&(this.configurations.delete(r),this.onDidChangeEmitter.fire(new o3(r)))})),this._register(this._registry.onDidChange(n=>{this.configurations.delete(n.languageId),this.onDidChangeEmitter.fire(new o3(n.languageId))}))}register(e,t,i){return this._registry.register(e,t,i)}getLanguageConfiguration(e){let t=this.configurations.get(e);return t||(t=bxe(e,this._registry,this.configurationService,this.languageService),this.configurations.set(e,t)),t}};xH=gxe([Foe(0,li),Foe(1,Zs)],xH);function bxe(s,e,t,i){let n=e.getLanguageConfiguration(s);if(!n){if(!i.isRegisteredLanguageId(s))return new UW(s,{});n=new UW(s,{})}const o=Uxe(n.languageId,t),l=$ge([n.underlyingConfig,o]);return new UW(n.languageId,l)}const JH={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function Uxe(s,e){const t=e.getValue(JH.brackets,{overrideIdentifier:s}),i=e.getValue(JH.colorizedBracketPairs,{overrideIdentifier:s});return{brackets:Zoe(t),colorizedBracketPairs:Zoe(i)}}function Zoe(s){if(Array.isArray(s))return s.map(e=>{if(!(!Array.isArray(e)||e.length!==2))return[e[0],e[1]]}).filter(e=>!!e)}function qge(s,e,t){const i=s.getLineContent(e);let n=wn(i);return n.length>t-1&&(n=n.substring(0,t-1)),n}class fxe{constructor(e){this.languageId=e,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(e,t){const i=new Aoe(e,t,++this._order);return this._entries.push(i),this._resolved=null,gt(()=>{for(let n=0;n<this._entries.length;n++)if(this._entries[n]===i){this._entries.splice(n,1),this._resolved=null;break}})}getResolvedConfiguration(){if(!this._resolved){const e=this._resolve();e&&(this._resolved=new UW(this.languageId,e))}return this._resolved}_resolve(){return this._entries.length===0?null:(this._entries.sort(Aoe.cmp),$ge(this._entries.map(e=>e.configuration)))}}function $ge(s){let e={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const t of s)e={comments:t.comments||e.comments,brackets:t.brackets||e.brackets,wordPattern:t.wordPattern||e.wordPattern,indentationRules:t.indentationRules||e.indentationRules,onEnterRules:t.onEnterRules||e.onEnterRules,autoClosingPairs:t.autoClosingPairs||e.autoClosingPairs,surroundingPairs:t.surroundingPairs||e.surroundingPairs,autoCloseBefore:t.autoCloseBefore||e.autoCloseBefore,folding:t.folding||e.folding,colorizedBracketPairs:t.colorizedBracketPairs||e.colorizedBracketPairs,__electricCharacterSupport:t.__electricCharacterSupport||e.__electricCharacterSupport};return e}class Aoe{constructor(e,t,i){this.configuration=e,this.priority=t,this.order=i}static cmp(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}class Noe{constructor(e){this.languageId=e}}class Fxe extends de{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._register(this.register(ia,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(e,t,i=0){let n=this._entries.get(e);n||(n=new fxe(e),this._entries.set(e,n));const o=n.register(t,i);return this._onDidChange.fire(new Noe(e)),gt(()=>{o.dispose(),this._onDidChange.fire(new Noe(e))})}getLanguageConfiguration(e){const t=this._entries.get(e);return(t==null?void 0:t.getResolvedConfiguration())||null}}class UW{constructor(e,t){this.languageId=e,this.underlyingConfig=t,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new aS(this.underlyingConfig):null,this.comments=UW._handleComments(this.underlyingConfig),this.characterPair=new EH(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||U$,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new $ve(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new uxe(e,this.underlyingConfig)}getWordDefinition(){return f$(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new _ve(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new qve(this.brackets)),this._electricCharacter}onEnter(e,t,i,n){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,i,n):null}getAutoClosingPairs(){return new Gve(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(e){return this.characterPair.getAutoCloseBeforeSet(e)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(e){const t=e.comments;if(!t)return null;const i={};if(t.lineComment&&(i.lineCommentToken=t.lineComment),t.blockComment){const[n,o]=t.blockComment;i.blockCommentStartToken=n,i.blockCommentEndToken=o}return i}}Ci(Qs,xH,1);class rb{constructor(e,t,i,n){this.originalStart=e,this.originalLength=t,this.modifiedStart=i,this.modifiedLength=n}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}class Roe{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let i=0,n=e.length;i<n;i++)t[i]=e.charCodeAt(i);return t}}function Zxe(s,e,t){return new cp(new Roe(s),new Roe(e)).ComputeDiff(t).changes}class QN{static Assert(e,t){if(!e)throw new Error(t)}}class yN{static Copy(e,t,i,n,o){for(let l=0;l<o;l++)i[n+l]=e[t+l]}static Copy2(e,t,i,n,o){for(let l=0;l<o;l++)i[n+l]=e[t+l]}}class Soe{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new rb(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class cp{constructor(e,t,i=null){this.ContinueProcessingPredicate=i,this._originalSequence=e,this._modifiedSequence=t;const[n,o,l]=cp._getElements(e),[r,a,d]=cp._getElements(t);this._hasStrings=l&&d,this._originalStringElements=n,this._originalElementsOrHash=o,this._modifiedStringElements=r,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&typeof e[0]=="string"}static _getElements(e){const t=e.getElements();if(cp._isStringArray(t)){const i=new Int32Array(t.length);for(let n=0,o=t.length;n<o;n++)i[n]=k$(t[n],0);return[t,i,!0]}return t instanceof Int32Array?[[],t,!1]:[[],new Int32Array(t),!1]}ElementsAreEqual(e,t){return this._originalElementsOrHash[e]!==this._modifiedElementsOrHash[t]?!1:this._hasStrings?this._originalStringElements[e]===this._modifiedStringElements[t]:!0}ElementsAreStrictEqual(e,t){if(!this.ElementsAreEqual(e,t))return!1;const i=cp._getStrictElement(this._originalSequence,e),n=cp._getStrictElement(this._modifiedSequence,t);return i===n}static _getStrictElement(e,t){return typeof e.getStrictElement=="function"?e.getStrictElement(t):null}OriginalElementsAreEqual(e,t){return this._originalElementsOrHash[e]!==this._originalElementsOrHash[t]?!1:this._hasStrings?this._originalStringElements[e]===this._originalStringElements[t]:!0}ModifiedElementsAreEqual(e,t){return this._modifiedElementsOrHash[e]!==this._modifiedElementsOrHash[t]?!1:this._hasStrings?this._modifiedStringElements[e]===this._modifiedStringElements[t]:!0}ComputeDiff(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}_ComputeDiff(e,t,i,n,o){const l=[!1];let r=this.ComputeDiffRecursive(e,t,i,n,l);return o&&(r=this.PrettifyChanges(r)),{quitEarly:l[0],changes:r}}ComputeDiffRecursive(e,t,i,n,o){for(o[0]=!1;e<=t&&i<=n&&this.ElementsAreEqual(e,i);)e++,i++;for(;t>=e&&n>=i&&this.ElementsAreEqual(t,n);)t--,n--;if(e>t||i>n){let h;return i<=n?(QN.Assert(e===t+1,"originalStart should only be one more than originalEnd"),h=[new rb(e,0,i,n-i+1)]):e<=t?(QN.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),h=[new rb(e,t-e+1,i,0)]):(QN.Assert(e===t+1,"originalStart should only be one more than originalEnd"),QN.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),h=[]),h}const l=[0],r=[0],a=this.ComputeRecursionPoint(e,t,i,n,l,r,o),d=l[0],c=r[0];if(a!==null)return a;if(!o[0]){const h=this.ComputeDiffRecursive(e,d,i,c,o);let u=[];return o[0]?u=[new rb(d+1,t-(d+1)+1,c+1,n-(c+1)+1)]:u=this.ComputeDiffRecursive(d+1,t,c+1,n,o),this.ConcatenateChanges(h,u)}return[new rb(e,t-e+1,i,n-i+1)]}WALKTRACE(e,t,i,n,o,l,r,a,d,c,h,u,m,p,g,b,f,Z){let A=null,N=null,W=new Soe,Q=t,R=i,M=m[0]-b[0]-n,w=-1073741824,Y=this.m_forwardHistory.length-1;do{const G=M+e;G===Q||G<R&&d[G-1]<d[G+1]?(h=d[G+1],p=h-M-n,h<w&&W.MarkNextChange(),w=h,W.AddModifiedElement(h+1,p),M=G+1-e):(h=d[G-1]+1,p=h-M-n,h<w&&W.MarkNextChange(),w=h-1,W.AddOriginalElement(h,p+1),M=G-1-e),Y>=0&&(d=this.m_forwardHistory[Y],e=d[0],Q=1,R=d.length-1)}while(--Y>=-1);if(A=W.getReverseChanges(),Z[0]){let G=m[0]+1,P=b[0]+1;if(A!==null&&A.length>0){const j=A[A.length-1];G=Math.max(G,j.getOriginalEnd()),P=Math.max(P,j.getModifiedEnd())}N=[new rb(G,u-G+1,P,g-P+1)]}else{W=new Soe,Q=l,R=r,M=m[0]-b[0]-a,w=1073741824,Y=f?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const G=M+o;G===Q||G<R&&c[G-1]>=c[G+1]?(h=c[G+1]-1,p=h-M-a,h>w&&W.MarkNextChange(),w=h+1,W.AddOriginalElement(h+1,p+1),M=G+1-o):(h=c[G-1],p=h-M-a,h>w&&W.MarkNextChange(),w=h,W.AddModifiedElement(h+1,p+1),M=G-1-o),Y>=0&&(c=this.m_reverseHistory[Y],o=c[0],Q=1,R=c.length-1)}while(--Y>=-1);N=W.getChanges()}return this.ConcatenateChanges(A,N)}ComputeRecursionPoint(e,t,i,n,o,l,r){let a=0,d=0,c=0,h=0,u=0,m=0;e--,i--,o[0]=0,l[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const p=t-e+(n-i),g=p+1,b=new Int32Array(g),f=new Int32Array(g),Z=n-i,A=t-e,N=e-i,W=t-n,R=(A-Z)%2===0;b[Z]=e,f[A]=t,r[0]=!1;for(let M=1;M<=p/2+1;M++){let w=0,Y=0;c=this.ClipDiagonalBound(Z-M,M,Z,g),h=this.ClipDiagonalBound(Z+M,M,Z,g);for(let P=c;P<=h;P+=2){P===c||P<h&&b[P-1]<b[P+1]?a=b[P+1]:a=b[P-1]+1,d=a-(P-Z)-N;const j=a;for(;a<t&&d<n&&this.ElementsAreEqual(a+1,d+1);)a++,d++;if(b[P]=a,a+d>w+Y&&(w=a,Y=d),!R&&Math.abs(P-A)<=M-1&&a>=f[P])return o[0]=a,l[0]=d,j<=f[P]&&1447>0&&M<=1447+1?this.WALKTRACE(Z,c,h,N,A,u,m,W,b,f,a,t,o,d,n,l,R,r):null}const G=(w-e+(Y-i)-M)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(w,G))return r[0]=!0,o[0]=w,l[0]=Y,G>0&&1447>0&&M<=1447+1?this.WALKTRACE(Z,c,h,N,A,u,m,W,b,f,a,t,o,d,n,l,R,r):(e++,i++,[new rb(e,t-e+1,i,n-i+1)]);u=this.ClipDiagonalBound(A-M,M,A,g),m=this.ClipDiagonalBound(A+M,M,A,g);for(let P=u;P<=m;P+=2){P===u||P<m&&f[P-1]>=f[P+1]?a=f[P+1]-1:a=f[P-1],d=a-(P-A)-W;const j=a;for(;a>e&&d>i&&this.ElementsAreEqual(a,d);)a--,d--;if(f[P]=a,R&&Math.abs(P-Z)<=M&&a<=b[P])return o[0]=a,l[0]=d,j>=b[P]&&1447>0&&M<=1447+1?this.WALKTRACE(Z,c,h,N,A,u,m,W,b,f,a,t,o,d,n,l,R,r):null}if(M<=1447){let P=new Int32Array(h-c+2);P[0]=Z-c+1,yN.Copy2(b,c,P,1,h-c+1),this.m_forwardHistory.push(P),P=new Int32Array(m-u+2),P[0]=A-u+1,yN.Copy2(f,u,P,1,m-u+1),this.m_reverseHistory.push(P)}}return this.WALKTRACE(Z,c,h,N,A,u,m,W,b,f,a,t,o,d,n,l,R,r)}PrettifyChanges(e){for(let t=0;t<e.length;t++){const i=e[t],n=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,o=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,l=i.originalLength>0,r=i.modifiedLength>0;for(;i.originalStart+i.originalLength<n&&i.modifiedStart+i.modifiedLength<o&&(!l||this.OriginalElementsAreEqual(i.originalStart,i.originalStart+i.originalLength))&&(!r||this.ModifiedElementsAreEqual(i.modifiedStart,i.modifiedStart+i.modifiedLength));){const d=this.ElementsAreStrictEqual(i.originalStart,i.modifiedStart);if(this.ElementsAreStrictEqual(i.originalStart+i.originalLength,i.modifiedStart+i.modifiedLength)&&!d)break;i.originalStart++,i.modifiedStart++}const a=[null];if(t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],a)){e[t]=a[0],e.splice(t+1,1),t--;continue}}for(let t=e.length-1;t>=0;t--){const i=e[t];let n=0,o=0;if(t>0){const h=e[t-1];n=h.originalStart+h.originalLength,o=h.modifiedStart+h.modifiedLength}const l=i.originalLength>0,r=i.modifiedLength>0;let a=0,d=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let h=1;;h++){const u=i.originalStart-h,m=i.modifiedStart-h;if(u<n||m<o||l&&!this.OriginalElementsAreEqual(u,u+i.originalLength)||r&&!this.ModifiedElementsAreEqual(m,m+i.modifiedLength))break;const g=(u===n&&m===o?5:0)+this._boundaryScore(u,i.originalLength,m,i.modifiedLength);g>d&&(d=g,a=h)}i.originalStart-=a,i.modifiedStart-=a;const c=[null];if(t>0&&this.ChangesOverlap(e[t-1],e[t],c)){e[t-1]=c[0],e.splice(t,1),t++;continue}}if(this._hasStrings)for(let t=1,i=e.length;t<i;t++){const n=e[t-1],o=e[t],l=o.originalStart-n.originalStart-n.originalLength,r=n.originalStart,a=o.originalStart+o.originalLength,d=a-r,c=n.modifiedStart,h=o.modifiedStart+o.modifiedLength,u=h-c;if(l<5&&d<20&&u<20){const m=this._findBetterContiguousSequence(r,d,c,u,l);if(m){const[p,g]=m;(p!==n.originalStart+n.originalLength||g!==n.modifiedStart+n.modifiedLength)&&(n.originalLength=p-n.originalStart,n.modifiedLength=g-n.modifiedStart,o.originalStart=p+l,o.modifiedStart=g+l,o.originalLength=a-o.originalStart,o.modifiedLength=h-o.modifiedStart)}}}return e}_findBetterContiguousSequence(e,t,i,n,o){if(t<o||n<o)return null;const l=e+t-o+1,r=i+n-o+1;let a=0,d=0,c=0;for(let h=e;h<l;h++)for(let u=i;u<r;u++){const m=this._contiguousSequenceScore(h,u,o);m>0&&m>a&&(a=m,d=h,c=u)}return a>0?[d,c]:null}_contiguousSequenceScore(e,t,i){let n=0;for(let o=0;o<i;o++){if(!this.ElementsAreEqual(e+o,t+o))return 0;n+=this._originalStringElements[e+o].length}return n}_OriginalIsBoundary(e){return e<=0||e>=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(e,t,i,n){const o=this._OriginalRegionIsBoundary(e,t)?1:0,l=this._ModifiedRegionIsBoundary(i,n)?1:0;return o+l}ConcatenateChanges(e,t){const i=[];if(e.length===0||t.length===0)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],i)){const n=new Array(e.length+t.length-1);return yN.Copy(e,0,n,0,e.length-1),n[e.length-1]=i[0],yN.Copy(t,1,n,e.length,t.length-1),n}else{const n=new Array(e.length+t.length);return yN.Copy(e,0,n,0,e.length),yN.Copy(t,0,n,e.length,t.length),n}}ChangesOverlap(e,t,i){if(QN.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),QN.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const n=e.originalStart;let o=e.originalLength;const l=e.modifiedStart;let r=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(o=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(r=t.modifiedStart+t.modifiedLength-e.modifiedStart),i[0]=new rb(n,o,l,r),!0}else return i[0]=null,!1}ClipDiagonalBound(e,t,i,n){if(e>=0&&e<n)return e;const o=i,l=n-i-1,r=t%2===0;if(e<0){const a=o%2===0;return r===a?0:1}else{const a=l%2===0;return r===a?n-1:n-2}}}function HE(s){return s<0?0:s>255?255:s|0}function CN(s){return s<0?0:s>4294967295?4294967295:s|0}class YQ{constructor(e){const t=HE(e);this._defaultValue=t,this._asciiMap=YQ._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){const t=new Uint8Array(256);return t.fill(e),t}set(e,t){const i=HE(t);e>=0&&e<256?this._asciiMap[e]=i:this._map.set(e,i)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class PE{constructor(){this._actual=new YQ(0)}add(e){this._actual.set(e,1)}has(e){return this._actual.get(e)===1}clear(){return this._actual.clear()}}class Axe{constructor(e,t,i){const n=new Uint8Array(e*t);for(let o=0,l=e*t;o<l;o++)n[o]=i;this._data=n,this.rows=e,this.cols=t}get(e,t){return this._data[e*this.cols+t]}set(e,t,i){this._data[e*this.cols+t]=i}}class Nxe{constructor(e){let t=0,i=0;for(let o=0,l=e.length;o<l;o++){const[r,a,d]=e[o];a>t&&(t=a),r>i&&(i=r),d>i&&(i=d)}t++,i++;const n=new Axe(i,t,0);for(let o=0,l=e.length;o<l;o++){const[r,a,d]=e[o];n.set(r,a,d)}this._states=n,this._maxCharCode=t}nextState(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}let l3=null;function Rxe(){return l3===null&&(l3=new Nxe([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),l3}let B1=null;function Sxe(){if(B1===null){B1=new YQ(0);const s=` <>'"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…`;for(let t=0;t<s.length;t++)B1.set(s.charCodeAt(t),1);const e=".,;:";for(let t=0;t<e.length;t++)B1.set(e.charCodeAt(t),2)}return B1}class KE{static _createLink(e,t,i,n,o){let l=o-1;do{const r=t.charCodeAt(l);if(e.get(r)!==2)break;l--}while(l>n);if(n>0){const r=t.charCodeAt(n-1),a=t.charCodeAt(l);(r===40&&a===41||r===91&&a===93||r===123&&a===125)&&l--}return{range:{startLineNumber:i,startColumn:n+1,endLineNumber:i,endColumn:l+2},url:t.substring(n,l+1)}}static computeLinks(e,t=Rxe()){const i=Sxe(),n=[];for(let o=1,l=e.getLineCount();o<=l;o++){const r=e.getLineContent(o),a=r.length;let d=0,c=0,h=0,u=1,m=!1,p=!1,g=!1,b=!1;for(;d<a;){let f=!1;const Z=r.charCodeAt(d);if(u===13){let A;switch(Z){case 40:m=!0,A=0;break;case 41:A=m?0:1;break;case 91:g=!0,p=!0,A=0;break;case 93:g=!1,A=p?0:1;break;case 123:b=!0,A=0;break;case 125:A=b?0:1;break;case 39:case 34:case 96:h===Z?A=1:h===39||h===34||h===96?A=0:A=1;break;case 42:A=h===42?1:0;break;case 124:A=h===124?1:0;break;case 32:A=g?0:1;break;default:A=i.get(Z)}A===1&&(n.push(KE._createLink(i,r,o,c,d)),f=!0)}else if(u===12){let A;Z===91?(p=!0,A=0):A=i.get(Z),A===1?f=!0:u=13}else u=t.nextState(u,Z),u===0&&(f=!0);f&&(u=1,m=!1,p=!1,b=!1,c=d+1,h=Z),d++}u===13&&n.push(KE._createLink(i,r,o,c,a))}return n}}function Wxe(s){return!s||typeof s.getLineCount!="function"||typeof s.getLineContent!="function"?[]:KE.computeLinks(s)}const cX=class cX{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,i,n,o){if(e&&t){const l=this.doNavigateValueSet(t,o);if(l)return{range:e,value:l}}if(i&&n){const l=this.doNavigateValueSet(n,o);if(l)return{range:i,value:l}}return null}doNavigateValueSet(e,t){const i=this.numberReplace(e,t);return i!==null?i:this.textReplace(e,t)}numberReplace(e,t){const i=Math.pow(10,e.length-(e.lastIndexOf(".")+1));let n=Number(e);const o=parseFloat(e);return!isNaN(n)&&!isNaN(o)&&n===o?n===0&&!t?null:(n=Math.floor(n*i),n+=t?i:-i,String(n/i)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,i){let n=null;for(let o=0,l=e.length;n===null&&o<l;o++)n=this.valueSetReplace(e[o],t,i);return n}valueSetReplace(e,t,i){let n=e.indexOf(t);return n>=0?(n+=i?1:-1,n<0?n=e.length-1:n%=e.length,e[n]):null}};cX.INSTANCE=new cX;let XH=cX;const Mw=class Mw{static getChannel(e){return e.getChannel(Mw.CHANNEL_NAME)}static setChannel(e,t){e.setChannel(Mw.CHANNEL_NAME,t)}};Mw.CHANNEL_NAME="editorWorkerHost";let YH=Mw;var Woe,Voe;class Vxe{constructor(e,t){this.uri=e,this.value=t}}function Qxe(s){return Array.isArray(s)}const UZ=class UZ{constructor(e,t){if(this[Woe]="ResourceMap",e instanceof UZ)this.map=new Map(e.map),this.toKey=t??UZ.defaultToKey;else if(Qxe(e)){this.map=new Map,this.toKey=t??UZ.defaultToKey;for(const[i,n]of e)this.set(i,n)}else this.map=new Map,this.toKey=e??UZ.defaultToKey}set(e,t){return this.map.set(this.toKey(e),new Vxe(e,t)),this}get(e){var t;return(t=this.map.get(this.toKey(e)))==null?void 0:t.value}has(e){return this.map.has(this.toKey(e))}get size(){return this.map.size}clear(){this.map.clear()}delete(e){return this.map.delete(this.toKey(e))}forEach(e,t){typeof t<"u"&&(e=e.bind(t));for(const[i,n]of this.map)e(n.value,n.uri,this)}*values(){for(const e of this.map.values())yield e.value}*keys(){for(const e of this.map.values())yield e.uri}*entries(){for(const e of this.map.values())yield[e.uri,e.value]}*[(Woe=Symbol.toStringTag,Symbol.iterator)](){for(const[,e]of this.map)yield[e.uri,e.value]}};UZ.defaultToKey=e=>e.toString();let sl=UZ;class yxe{constructor(){this[Voe]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return(e=this._head)==null?void 0:e.value}get last(){var e;return(e=this._tail)==null?void 0:e.value}has(e){return this._map.has(e)}get(e,t=0){const i=this._map.get(e);if(i)return t!==0&&this.touch(i,t),i.value}set(e,t,i=0){let n=this._map.get(e);if(n)n.value=t,i!==0&&this.touch(n,i);else{switch(n={key:e,value:t,next:void 0,previous:void 0},i){case 0:this.addItemLast(n);break;case 1:this.addItemFirst(n);break;case 2:this.addItemLast(n);break;default:this.addItemLast(n);break}this._map.set(e,n),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const i=this._state;let n=this._head;for(;n;){if(t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),this._state!==i)throw new Error("LinkedMap got modified during iteration.");n=n.next}}keys(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator](){return n},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const o={value:i.key,done:!1};return i=i.next,o}else return{value:void 0,done:!0}}};return n}values(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator](){return n},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const o={value:i.value,done:!1};return i=i.next,o}else return{value:void 0,done:!0}}};return n}entries(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator](){return n},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const o={value:[i.key,i.value],done:!1};return i=i.next,o}else return{value:void 0,done:!0}}};return n}[(Voe=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.next,i--;this._head=t,this._size=i,t&&(t.previous=void 0),this._state++}trimNew(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._tail,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.previous,i--;this._tail=t,this._size=i,t&&(t.next=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,i=e.previous;if(!t||!i)throw new Error("Invalid list");t.previous=i,i.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(t!==1&&t!==2)){if(t===1){if(e===this._head)return;const i=e.next,n=e.previous;e===this._tail?(n.next=void 0,this._tail=n):(i.previous=n,n.next=i),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===2){if(e===this._tail)return;const i=e.next,n=e.previous;e===this._head?(i.previous=void 0,this._head=i):(i.previous=n,n.next=i),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){const e=[];return this.forEach((t,i)=>{e.push([i,t])}),e}fromJSON(e){this.clear();for(const[t,i]of e)this.set(t,i)}}class Cxe extends yxe{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get(e,t=2){return super.get(e,t)}peek(e){return super.get(e,0)}set(e,t){return super.set(e,t,2),this}checkTrim(){this.size>this._limit&&this.trim(Math.round(this._limit*this._ratio))}}class Ip extends Cxe{constructor(e,t=1){super(e,t)}trim(e){this.trimOld(e)}set(e,t){return super.set(e,t),this.checkTrim(),this}}class wxe{constructor(e){if(this._m1=new Map,this._m2=new Map,e)for(const[t,i]of e)this.set(t,i)}clear(){this._m1.clear(),this._m2.clear()}set(e,t){this._m1.set(e,t),this._m2.set(t,e)}get(e){return this._m1.get(e)}getKey(e){return this._m2.get(e)}delete(e){const t=this._m1.get(e);return t===void 0?!1:(this._m1.delete(e),this._m2.delete(t),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}class z${constructor(){this.map=new Map}add(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}delete(e,t){const i=this.map.get(e);i&&(i.delete(t),i.size===0&&this.map.delete(e))}forEach(e,t){const i=this.map.get(e);i&&i.forEach(t)}get(e){const t=this.map.get(e);return t||new Set}}class Mxe extends YQ{constructor(e,t){super(0),this._segmenter=null,this._cachedLine=null,this._cachedSegments=[],this.intlSegmenterLocales=t,this.intlSegmenterLocales.length>0?this._segmenter=new Intl.Segmenter(this.intlSegmenterLocales,{granularity:"word"}):this._segmenter=null;for(let i=0,n=e.length;i<n;i++)this.set(e.charCodeAt(i),2);this.set(32,1),this.set(9,1)}findPrevIntlWordBeforeOrAtOffset(e,t){let i=null;for(const n of this._getIntlSegmenterWordsOnLine(e)){if(n.index>t)break;i=n}return i}findNextIntlWordAtOrAfterOffset(e,t){for(const i of this._getIntlSegmenterWordsOnLine(e))if(!(i.index<t))return i;return null}_getIntlSegmenterWordsOnLine(e){return this._segmenter?this._cachedLine===e?this._cachedSegments:(this._cachedLine=e,this._cachedSegments=this._filterWordSegments(this._segmenter.segment(e)),this._cachedSegments):[]}_filterWordSegments(e){const t=[];for(const i of e)this._isWordLike(i)&&t.push(i);return t}_isWordLike(e){return!!e.isWordLike}}const Qoe=new Ip(10);function Kc(s,e){const t=`${s}/${e.join(",")}`;let i=Qoe.get(t);return i||(i=new Mxe(s,e),Qoe.set(t,i)),i}var lc;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=4]="Right",s[s.Full=7]="Full"})(lc||(lc={}));var Kh;(function(s){s[s.Left=1]="Left",s[s.Center=2]="Center",s[s.Right=3]="Right"})(Kh||(Kh={}));var Xh;(function(s){s[s.Both=0]="Both",s[s.Right=1]="Right",s[s.Left=2]="Left",s[s.None=3]="None"})(Xh||(Xh={}));class eD{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(e){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,e.tabSize|0),e.indentSize==="tabSize"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,e.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!e.insertSpaces,this.defaultEOL=e.defaultEOL|0,this.trimAutoWhitespace=!!e.trimAutoWhitespace,this.bracketPairColorizationOptions=e.bracketPairColorizationOptions}equals(e){return this.tabSize===e.tabSize&&this._indentSizeIsTabSize===e._indentSizeIsTabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace&&gd(this.bracketPairColorizationOptions,e.bracketPairColorizationOptions)}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class dM{constructor(e,t){this._findMatchBrand=void 0,this.range=e,this.matches=t}}function Txe(s){return s&&typeof s.read=="function"}class r3{constructor(e,t,i,n,o,l){this.identifier=e,this.range=t,this.text=i,this.forceMoveMarkers=n,this.isAutoWhitespaceEdit=o,this._isTracked=l}}class Bxe{constructor(e,t,i){this.regex=e,this.wordSeparators=t,this.simpleSearch=i}}class Lxe{constructor(e,t,i){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=i}}function e0e(s){return!s.isTooLargeForSyncing()&&!s.isForSimpleWidget}const kxe=999;class gF{constructor(e,t,i,n){this.searchString=e,this.isRegex=t,this.matchCase=i,this.wordSeparators=n}parseSearchRequest(){if(this.searchString==="")return null;let e;this.isRegex?e=Ixe(this.searchString):e=this.searchString.indexOf(`
- `)>=0;let t=null;try{t=qpe(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch{return null}if(!t)return null;let i=!this.isRegex&&!e;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new Bxe(t,this.wordSeparators?Kc(this.wordSeparators,[]):null,i?this.searchString:null)}}function Ixe(s){if(!s||s.length===0)return!1;for(let e=0,t=s.length;e<t;e++){const i=s.charCodeAt(e);if(i===10)return!0;if(i===92){if(e++,e>=t)break;const n=s.charCodeAt(e);if(n===110||n===114||n===87)return!0}}return!1}function qF(s,e,t){if(!t)return new dM(s,null);const i=[];for(let n=0,o=e.length;n<o;n++)i[n]=e[n];return new dM(s,i)}class yoe{constructor(e){const t=[];let i=0;for(let n=0,o=e.length;n<o;n++)e.charCodeAt(n)===10&&(t[i++]=n);this._lineFeedsOffsets=t}findLineFeedCountBeforeOffset(e){const t=this._lineFeedsOffsets;let i=0,n=t.length-1;if(n===-1||e<=t[0])return 0;for(;i<n;){const o=i+((n-i)/2>>0);t[o]>=e?n=o-1:t[o+1]>=e?(i=o,n=o):i=o+1}return i+1}}class GL{static findMatches(e,t,i,n,o){const l=t.parseSearchRequest();return l?l.regex.multiline?this._doFindMatchesMultiline(e,i,new dS(l.wordSeparators,l.regex),n,o):this._doFindMatchesLineByLine(e,i,l,n,o):[]}static _getMultilineMatchRange(e,t,i,n,o,l){let r,a=0;n?(a=n.findLineFeedCountBeforeOffset(o),r=t+o+a):r=t+o;let d;if(n){const m=n.findLineFeedCountBeforeOffset(o+l.length)-a;d=r+l.length+m}else d=r+l.length;const c=e.getPositionAt(r),h=e.getPositionAt(d);return new v(c.lineNumber,c.column,h.lineNumber,h.column)}static _doFindMatchesMultiline(e,t,i,n,o){const l=e.getOffsetAt(t.getStartPosition()),r=e.getValueInRange(t,1),a=e.getEOL()===`\r
- `?new yoe(r):null,d=[];let c=0,h;for(i.reset(0);h=i.next(r);)if(d[c++]=qF(this._getMultilineMatchRange(e,l,r,a,h.index,h[0]),h,n),c>=o)return d;return d}static _doFindMatchesLineByLine(e,t,i,n,o){const l=[];let r=0;if(t.startLineNumber===t.endLineNumber){const d=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return r=this._findMatchesInLine(i,d,t.startLineNumber,t.startColumn-1,r,l,n,o),l}const a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);r=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,r,l,n,o);for(let d=t.startLineNumber+1;d<t.endLineNumber&&r<o;d++)r=this._findMatchesInLine(i,e.getLineContent(d),d,0,r,l,n,o);if(r<o){const d=e.getLineContent(t.endLineNumber).substring(0,t.endColumn-1);r=this._findMatchesInLine(i,d,t.endLineNumber,0,r,l,n,o)}return l}static _findMatchesInLine(e,t,i,n,o,l,r,a){const d=e.wordSeparators;if(!r&&e.simpleSearch){const u=e.simpleSearch,m=u.length,p=t.length;let g=-m;for(;(g=t.indexOf(u,g+m))!==-1;)if((!d||_$(d,t,p,g,m))&&(l[o++]=new dM(new v(i,g+1+n,i,g+1+m+n),null),o>=a))return o;return o}const c=new dS(e.wordSeparators,e.regex);let h;c.reset(0);do if(h=c.next(t),h&&(l[o++]=qF(new v(i,h.index+1+n,i,h.index+1+h[0].length+n),h,r),o>=a))return o;while(h);return o}static findNextMatch(e,t,i,n){const o=t.parseSearchRequest();if(!o)return null;const l=new dS(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindNextMatchMultiline(e,i,l,n):this._doFindNextMatchLineByLine(e,i,l,n)}static _doFindNextMatchMultiline(e,t,i,n){const o=new oe(t.lineNumber,1),l=e.getOffsetAt(o),r=e.getLineCount(),a=e.getValueInRange(new v(o.lineNumber,o.column,r,e.getLineMaxColumn(r)),1),d=e.getEOL()===`\r
- `?new yoe(a):null;i.reset(t.column-1);const c=i.next(a);return c?qF(this._getMultilineMatchRange(e,l,a,d,c.index,c[0]),c,n):t.lineNumber!==1||t.column!==1?this._doFindNextMatchMultiline(e,new oe(1,1),i,n):null}static _doFindNextMatchLineByLine(e,t,i,n){const o=e.getLineCount(),l=t.lineNumber,r=e.getLineContent(l),a=this._findFirstMatchInLine(i,r,l,t.column,n);if(a)return a;for(let d=1;d<=o;d++){const c=(l+d-1)%o,h=e.getLineContent(c+1),u=this._findFirstMatchInLine(i,h,c+1,1,n);if(u)return u}return null}static _findFirstMatchInLine(e,t,i,n,o){e.reset(n-1);const l=e.next(t);return l?qF(new v(i,l.index+1,i,l.index+1+l[0].length),l,o):null}static findPreviousMatch(e,t,i,n){const o=t.parseSearchRequest();if(!o)return null;const l=new dS(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindPreviousMatchMultiline(e,i,l,n):this._doFindPreviousMatchLineByLine(e,i,l,n)}static _doFindPreviousMatchMultiline(e,t,i,n){const o=this._doFindMatchesMultiline(e,new v(1,1,t.lineNumber,t.column),i,n,10*kxe);if(o.length>0)return o[o.length-1];const l=e.getLineCount();return t.lineNumber!==l||t.column!==e.getLineMaxColumn(l)?this._doFindPreviousMatchMultiline(e,new oe(l,e.getLineMaxColumn(l)),i,n):null}static _doFindPreviousMatchLineByLine(e,t,i,n){const o=e.getLineCount(),l=t.lineNumber,r=e.getLineContent(l).substring(0,t.column-1),a=this._findLastMatchInLine(i,r,l,n);if(a)return a;for(let d=1;d<=o;d++){const c=(o+l-d-1)%o,h=e.getLineContent(c+1),u=this._findLastMatchInLine(i,h,c+1,n);if(u)return u}return null}static _findLastMatchInLine(e,t,i,n){let o=null,l;for(e.reset(0);l=e.next(t);)o=qF(new v(i,l.index+1,i,l.index+1+l[0].length),l,n);return o}}function Dxe(s,e,t,i,n){if(i===0)return!0;const o=e.charCodeAt(i-1);if(s.get(o)!==0||o===13||o===10)return!0;if(n>0){const l=e.charCodeAt(i);if(s.get(l)!==0)return!0}return!1}function Gxe(s,e,t,i,n){if(i+n===t)return!0;const o=e.charCodeAt(i+n);if(s.get(o)!==0||o===13||o===10)return!0;if(n>0){const l=e.charCodeAt(i+n-1);if(s.get(l)!==0)return!0}return!1}function _$(s,e,t,i,n){return Dxe(s,e,t,i,n)&&Gxe(s,e,t,i,n)}class dS{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const t=e.length;let i;do{if(this._prevMatchStartIndex+this._prevMatchLength===t||(i=this._searchRegex.exec(e),!i))return null;const n=i.index,o=i[0].length;if(n===this._prevMatchStartIndex&&o===this._prevMatchLength){if(o===0){GE(e,t,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=n,this._prevMatchLength=o,!this._wordSeparators||_$(this._wordSeparators,e,t,n,o))return i}while(i);return null}}class O${static computeUnicodeHighlights(e,t,i){const n=i?i.startLineNumber:1,o=i?i.endLineNumber:e.getLineCount(),l=new Coe(t),r=l.getCandidateCodePoints();let a;r==="allNonBasicAscii"?a=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):a=new RegExp(`${Exe(Array.from(r))}`,"g");const d=new dS(null,a),c=[];let h=!1,u,m=0,p=0,g=0;e:for(let b=n,f=o;b<=f;b++){const Z=e.getLineContent(b),A=Z.length;d.reset(0);do if(u=d.next(Z),u){let N=u.index,W=u.index+u[0].length;if(N>0){const w=Z.charCodeAt(N-1);xo(w)&&N--}if(W+1<A){const w=Z.charCodeAt(W-1);xo(w)&&W++}const Q=Z.substring(N,W);let R=qw(N+1,U$,Z,0);R&&R.endColumn<=N+1&&(R=null);const M=l.shouldHighlightNonBasicASCII(Q,R?R.word:null);if(M!==0){M===3?m++:M===2?p++:M===1?g++:uY();const w=1e3;if(c.length>=w){h=!0;break e}c.push(new v(b,N+1,b,W+1))}}while(u)}return{ranges:c,hasMore:h,ambiguousCharacterCount:m,invisibleCharacterCount:p,nonBasicAsciiCharacterCount:g}}static computeUnicodeHighlightReason(e,t){const i=new Coe(t);switch(i.shouldHighlightNonBasicASCII(e,null)){case 0:return null;case 2:return{kind:1};case 3:{const o=e.codePointAt(0),l=i.ambiguousCharacters.getPrimaryConfusable(o),r=oM.getLocales().filter(a=>!oM.getInstance(new Set([...t.allowedLocales,a])).isAmbiguous(o));return{kind:0,confusableWith:String.fromCodePoint(l),notAmbiguousInLocales:r}}case 1:return{kind:2}}}}function Exe(s,e){return`[${dc(s.map(i=>String.fromCodePoint(i)).join(""))}]`}class Coe{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=oM.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const e=new Set;if(this.options.invisibleCharacters)for(const t of xZ.codePoints)woe(String.fromCodePoint(t))||e.add(t);if(this.options.ambiguousCharacters)for(const t of this.ambiguousCharacters.getConfusableCodePoints())e.add(t);for(const t of this.allowedCodePoints)e.delete(t);return e}shouldHighlightNonBasicASCII(e,t){const i=e.codePointAt(0);if(this.allowedCodePoints.has(i))return 0;if(this.options.nonBasicASCII)return 1;let n=!1,o=!1;if(t)for(const l of t){const r=l.codePointAt(0),a=iB(l);n=n||a,!a&&!this.ambiguousCharacters.isAmbiguous(r)&&!xZ.isInvisibleCharacter(r)&&(o=!0)}return!n&&o?0:this.options.invisibleCharacters&&!woe(e)&&xZ.isInvisibleCharacter(i)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(i)?3:0}}function woe(s){return s===" "||s===`
- `||s===" "}class tD{constructor(e,t,i){this.changes=e,this.moves=t,this.hitTimeout=i}}class t0e{constructor(e,t){this.lineRangeMapping=e,this.changes=t}}class di{static addRange(e,t){let i=0;for(;i<t.length&&t[i].endExclusive<e.start;)i++;let n=i;for(;n<t.length&&t[n].start<=e.endExclusive;)n++;if(i===n)t.splice(i,0,e);else{const o=Math.min(e.start,t[i].start),l=Math.max(e.endExclusive,t[n-1].endExclusive);t.splice(i,n-i,new di(o,l))}}static tryCreate(e,t){if(!(e>t))return new di(e,t)}static ofLength(e){return new di(0,e)}static ofStartAndLength(e,t){return new di(e,e+t)}constructor(e,t){if(this.start=e,this.endExclusive=t,e>t)throw new en(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(e){return new di(this.start+e,this.endExclusive+e)}deltaStart(e){return new di(this.start+e,this.endExclusive)}deltaEnd(e){return new di(this.start,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}contains(e){return this.start<=e&&e<this.endExclusive}join(e){return new di(Math.min(this.start,e.start),Math.max(this.endExclusive,e.endExclusive))}intersect(e){const t=Math.max(this.start,e.start),i=Math.min(this.endExclusive,e.endExclusive);if(t<=i)return new di(t,i)}intersects(e){const t=Math.max(this.start,e.start),i=Math.min(this.endExclusive,e.endExclusive);return t<i}isBefore(e){return this.endExclusive<=e.start}isAfter(e){return this.start>=e.endExclusive}slice(e){return e.slice(this.start,this.endExclusive)}substring(e){return e.substring(this.start,this.endExclusive)}clip(e){if(this.isEmpty)throw new en(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,e))}clipCyclic(e){if(this.isEmpty)throw new en(`Invalid clipping range: ${this.toString()}`);return e<this.start?this.endExclusive-(this.start-e)%this.length:e>=this.endExclusive?this.start+(e-this.start)%this.length:e}forEach(e){for(let t=this.start;t<this.endExclusive;t++)e(t)}}class j${constructor(){this._sortedRanges=[]}addRange(e){let t=0;for(;t<this._sortedRanges.length&&this._sortedRanges[t].endExclusive<e.start;)t++;let i=t;for(;i<this._sortedRanges.length&&this._sortedRanges[i].start<=e.endExclusive;)i++;if(t===i)this._sortedRanges.splice(t,0,e);else{const n=Math.min(e.start,this._sortedRanges[t].start),o=Math.max(e.endExclusive,this._sortedRanges[i-1].endExclusive);this._sortedRanges.splice(t,i-t,new di(n,o))}}toString(){return this._sortedRanges.map(e=>e.toString()).join(", ")}intersectsStrict(e){let t=0;for(;t<this._sortedRanges.length&&this._sortedRanges[t].endExclusive<=e.start;)t++;return t<this._sortedRanges.length&&this._sortedRanges[t].start<e.endExclusive}intersectWithRange(e){const t=new j$;for(const i of this._sortedRanges){const n=i.intersect(e);n&&t.addRange(n)}return t}intersectWithRangeLength(e){return this.intersectWithRange(e).length}get length(){return this._sortedRanges.reduce((e,t)=>e+t.length,0)}}function cM(s,e){const t=vxe(s,e);if(t!==-1)return s[t]}function vxe(s,e,t=s.length-1){for(let i=t;i>=0;i--){const n=s[i];if(e(n))return i}return-1}function iV(s,e){const t=hM(s,e);return t===-1?void 0:s[t]}function hM(s,e,t=0,i=s.length){let n=t,o=i;for(;n<o;){const l=Math.floor((n+o)/2);e(s[l])?n=l+1:o=l}return n-1}function xxe(s,e){const t=uM(s,e);return t===s.length?void 0:s[t]}function uM(s,e,t=0,i=s.length){let n=t,o=i;for(;n<o;){const l=Math.floor((n+o)/2);e(s[l])?o=l:n=l+1}return n}const hX=class hX{constructor(e){this._array=e,this._findLastMonotonousLastIdx=0}findLastMonotonous(e){if(hX.assertInvariants){if(this._prevFindLastPredicate){for(const i of this._array)if(this._prevFindLastPredicate(i)&&!e(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=e}const t=hM(this._array,e,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=t+1,t===-1?void 0:this._array[t]}};hX.assertInvariants=!1;let qE=hX;function H$(s,e){if(s.length===0)return;let t=s[0];for(let i=1;i<s.length;i++){const n=s[i];e(n,t)>0&&(t=n)}return t}function Jxe(s,e){if(s.length===0)return;let t=s[0];for(let i=1;i<s.length;i++){const n=s[i];e(n,t)>=0&&(t=n)}return t}function Xxe(s,e){return H$(s,(t,i)=>-e(t,i))}function Yxe(s,e){if(s.length===0)return-1;let t=0;for(let i=1;i<s.length;i++){const n=s[i];e(n,s[t])>0&&(t=i)}return t}function zxe(s,e){for(const t of s){const i=e(t);if(i!==void 0)return i}}let jt=class ng{static fromRangeInclusive(e){return new ng(e.startLineNumber,e.endLineNumber+1)}static joinMany(e){if(e.length===0)return[];let t=new vc(e[0].slice());for(let i=1;i<e.length;i++)t=t.getUnion(new vc(e[i].slice()));return t.ranges}static join(e){if(e.length===0)throw new en("lineRanges cannot be empty");let t=e[0].startLineNumber,i=e[0].endLineNumberExclusive;for(let n=1;n<e.length;n++)t=Math.min(t,e[n].startLineNumber),i=Math.max(i,e[n].endLineNumberExclusive);return new ng(t,i)}static ofLength(e,t){return new ng(e,e+t)}static deserialize(e){return new ng(e[0],e[1])}constructor(e,t){if(e>t)throw new en(`startLineNumber ${e} cannot be after endLineNumberExclusive ${t}`);this.startLineNumber=e,this.endLineNumberExclusive=t}contains(e){return this.startLineNumber<=e&&e<this.endLineNumberExclusive}get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}delta(e){return new ng(this.startLineNumber+e,this.endLineNumberExclusive+e)}deltaLength(e){return new ng(this.startLineNumber,this.endLineNumberExclusive+e)}get length(){return this.endLineNumberExclusive-this.startLineNumber}join(e){return new ng(Math.min(this.startLineNumber,e.startLineNumber),Math.max(this.endLineNumberExclusive,e.endLineNumberExclusive))}toString(){return`[${this.startLineNumber},${this.endLineNumberExclusive})`}intersect(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumberExclusive,e.endLineNumberExclusive);if(t<=i)return new ng(t,i)}intersectsStrict(e){return this.startLineNumber<e.endLineNumberExclusive&&e.startLineNumber<this.endLineNumberExclusive}overlapOrTouch(e){return this.startLineNumber<=e.endLineNumberExclusive&&e.startLineNumber<=this.endLineNumberExclusive}equals(e){return this.startLineNumber===e.startLineNumber&&this.endLineNumberExclusive===e.endLineNumberExclusive}toInclusiveRange(){return this.isEmpty?null:new v(this.startLineNumber,1,this.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER)}toExclusiveRange(){return new v(this.startLineNumber,1,this.endLineNumberExclusive,1)}mapToLineArray(e){const t=[];for(let i=this.startLineNumber;i<this.endLineNumberExclusive;i++)t.push(e(i));return t}forEach(e){for(let t=this.startLineNumber;t<this.endLineNumberExclusive;t++)e(t)}serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}includes(e){return this.startLineNumber<=e&&e<this.endLineNumberExclusive}toOffsetRange(){return new di(this.startLineNumber-1,this.endLineNumberExclusive-1)}};class vc{constructor(e=[]){this._normalizedRanges=e}get ranges(){return this._normalizedRanges}addRange(e){if(e.length===0)return;const t=uM(this._normalizedRanges,n=>n.endLineNumberExclusive>=e.startLineNumber),i=hM(this._normalizedRanges,n=>n.startLineNumber<=e.endLineNumberExclusive)+1;if(t===i)this._normalizedRanges.splice(t,0,e);else if(t===i-1){const n=this._normalizedRanges[t];this._normalizedRanges[t]=n.join(e)}else{const n=this._normalizedRanges[t].join(this._normalizedRanges[i-1]).join(e);this._normalizedRanges.splice(t,i-t,n)}}contains(e){const t=iV(this._normalizedRanges,i=>i.startLineNumber<=e);return!!t&&t.endLineNumberExclusive>e}intersects(e){const t=iV(this._normalizedRanges,i=>i.startLineNumber<e.endLineNumberExclusive);return!!t&&t.endLineNumberExclusive>e.startLineNumber}getUnion(e){if(this._normalizedRanges.length===0)return e;if(e._normalizedRanges.length===0)return this;const t=[];let i=0,n=0,o=null;for(;i<this._normalizedRanges.length||n<e._normalizedRanges.length;){let l=null;if(i<this._normalizedRanges.length&&n<e._normalizedRanges.length){const r=this._normalizedRanges[i],a=e._normalizedRanges[n];r.startLineNumber<a.startLineNumber?(l=r,i++):(l=a,n++)}else i<this._normalizedRanges.length?(l=this._normalizedRanges[i],i++):(l=e._normalizedRanges[n],n++);o===null?o=l:o.endLineNumberExclusive>=l.startLineNumber?o=new jt(o.startLineNumber,Math.max(o.endLineNumberExclusive,l.endLineNumberExclusive)):(t.push(o),o=l)}return o!==null&&t.push(o),new vc(t)}subtractFrom(e){const t=uM(this._normalizedRanges,l=>l.endLineNumberExclusive>=e.startLineNumber),i=hM(this._normalizedRanges,l=>l.startLineNumber<=e.endLineNumberExclusive)+1;if(t===i)return new vc([e]);const n=[];let o=e.startLineNumber;for(let l=t;l<i;l++){const r=this._normalizedRanges[l];r.startLineNumber>o&&n.push(new jt(o,r.startLineNumber)),o=r.endLineNumberExclusive}return o<e.endLineNumberExclusive&&n.push(new jt(o,e.endLineNumberExclusive)),new vc(n)}toString(){return this._normalizedRanges.map(e=>e.toString()).join(", ")}getIntersection(e){const t=[];let i=0,n=0;for(;i<this._normalizedRanges.length&&n<e._normalizedRanges.length;){const o=this._normalizedRanges[i],l=e._normalizedRanges[n],r=o.intersect(l);r&&!r.isEmpty&&t.push(r),o.endLineNumberExclusive<l.endLineNumberExclusive?i++:n++}return new vc(t)}getWithDelta(e){return new vc(this._normalizedRanges.map(t=>t.delta(e)))}}const Lb=class Lb{static betweenPositions(e,t){return e.lineNumber===t.lineNumber?new Lb(0,t.column-e.column):new Lb(t.lineNumber-e.lineNumber,t.column-1)}static ofRange(e){return Lb.betweenPositions(e.getStartPosition(),e.getEndPosition())}static ofText(e){let t=0,i=0;for(const n of e)n===`
- `?(t++,i=0):i++;return new Lb(t,i)}constructor(e,t){this.lineCount=e,this.columnCount=t}isGreaterThanOrEqualTo(e){return this.lineCount!==e.lineCount?this.lineCount>e.lineCount:this.columnCount>=e.columnCount}createRange(e){return this.lineCount===0?new v(e.lineNumber,e.column,e.lineNumber,e.column+this.columnCount):new v(e.lineNumber,e.column,e.lineNumber+this.lineCount,this.columnCount+1)}addToPosition(e){return this.lineCount===0?new oe(e.lineNumber,e.column+this.columnCount):new oe(e.lineNumber+this.lineCount,this.columnCount+1)}toString(){return`${this.lineCount},${this.columnCount}`}};Lb.zero=new Lb(0,0);let qh=Lb;class _xe{constructor(e){this.text=e,this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let t=0;t<e.length;t++)e.charAt(t)===`
- `&&this.lineStartOffsetByLineIdx.push(t+1)}getOffset(e){return this.lineStartOffsetByLineIdx[e.lineNumber-1]+e.column-1}getOffsetRange(e){return new di(this.getOffset(e.getStartPosition()),this.getOffset(e.getEndPosition()))}get textLength(){const e=this.lineStartOffsetByLineIdx.length-1;return new qh(e,this.text.length-this.lineStartOffsetByLineIdx[e])}}class P${constructor(e){this.edits=e,SA(()=>J$(e,(t,i)=>t.range.getEndPosition().isBeforeOrEqual(i.range.getStartPosition())))}apply(e){let t="",i=new oe(1,1);for(const o of this.edits){const l=o.range,r=l.getStartPosition(),a=l.getEndPosition(),d=Moe(i,r);d.isEmpty()||(t+=e.getValueOfRange(d)),t+=o.text,i=a}const n=Moe(i,e.endPositionExclusive);return n.isEmpty()||(t+=e.getValueOfRange(n)),t}applyToString(e){const t=new Oxe(e);return this.apply(t)}getNewRanges(){const e=[];let t=0,i=0,n=0;for(const o of this.edits){const l=qh.ofText(o.text),r=oe.lift({lineNumber:o.range.startLineNumber+i,column:o.range.startColumn+(o.range.startLineNumber===t?n:0)}),a=l.createRange(r);e.push(a),i=a.endLineNumber-o.range.endLineNumber,n=a.endColumn-o.range.endColumn,t=o.range.endLineNumber}return e}}class Rp{constructor(e,t){this.range=e,this.text=t}toSingleEditOperation(){return{range:this.range,text:this.text}}}function Moe(s,e){if(s.lineNumber===e.lineNumber&&s.column===Number.MAX_SAFE_INTEGER)return v.fromPositions(e,e);if(!s.isBeforeOrEqual(e))throw new en("start must be before end");return new v(s.lineNumber,s.column,e.lineNumber,e.column)}class i0e{get endPositionExclusive(){return this.length.addToPosition(new oe(1,1))}}class Oxe extends i0e{constructor(e){super(),this.value=e,this._t=new _xe(this.value)}getValueOfRange(e){return this._t.getOffsetRange(e).substring(this.value)}get length(){return this._t.textLength}}class Nr{static inverse(e,t,i){const n=[];let o=1,l=1;for(const a of e){const d=new Nr(new jt(o,a.original.startLineNumber),new jt(l,a.modified.startLineNumber));d.modified.isEmpty||n.push(d),o=a.original.endLineNumberExclusive,l=a.modified.endLineNumberExclusive}const r=new Nr(new jt(o,t+1),new jt(l,i+1));return r.modified.isEmpty||n.push(r),n}static clip(e,t,i){const n=[];for(const o of e){const l=o.original.intersect(t),r=o.modified.intersect(i);l&&!l.isEmpty&&r&&!r.isEmpty&&n.push(new Nr(l,r))}return n}constructor(e,t){this.original=e,this.modified=t}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new Nr(this.modified,this.original)}join(e){return new Nr(this.original.join(e.original),this.modified.join(e.modified))}toRangeMapping(){const e=this.original.toInclusiveRange(),t=this.modified.toInclusiveRange();if(e&&t)return new Hd(e,t);if(this.original.startLineNumber===1||this.modified.startLineNumber===1){if(!(this.modified.startLineNumber===1&&this.original.startLineNumber===1))throw new en("not a valid diff");return new Hd(new v(this.original.startLineNumber,1,this.original.endLineNumberExclusive,1),new v(this.modified.startLineNumber,1,this.modified.endLineNumberExclusive,1))}else return new Hd(new v(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER,this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),new v(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER,this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER))}toRangeMapping2(e,t){if(Toe(this.original.endLineNumberExclusive,e)&&Toe(this.modified.endLineNumberExclusive,t))return new Hd(new v(this.original.startLineNumber,1,this.original.endLineNumberExclusive,1),new v(this.modified.startLineNumber,1,this.modified.endLineNumberExclusive,1));if(!this.original.isEmpty&&!this.modified.isEmpty)return new Hd(v.fromPositions(new oe(this.original.startLineNumber,1),wN(new oe(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),v.fromPositions(new oe(this.modified.startLineNumber,1),wN(new oe(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),t)));if(this.original.startLineNumber>1&&this.modified.startLineNumber>1)return new Hd(v.fromPositions(wN(new oe(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER),e),wN(new oe(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),v.fromPositions(wN(new oe(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER),t),wN(new oe(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),t)));throw new en}}function wN(s,e){if(s.lineNumber<1)return new oe(1,1);if(s.lineNumber>e.length)return new oe(e.length,e[e.length-1].length+1);const t=e[s.lineNumber-1];return s.column>t.length+1?new oe(s.lineNumber,t.length+1):s}function Toe(s,e){return s>=1&&s<=e.length}class rc extends Nr{static fromRangeMappings(e){const t=jt.join(e.map(n=>jt.fromRangeInclusive(n.originalRange))),i=jt.join(e.map(n=>jt.fromRangeInclusive(n.modifiedRange)));return new rc(t,i,e)}constructor(e,t,i){super(e,t),this.innerChanges=i}flip(){var e;return new rc(this.modified,this.original,(e=this.innerChanges)==null?void 0:e.map(t=>t.flip()))}withInnerChangesFromLineRanges(){return new rc(this.original,this.modified,[this.toRangeMapping()])}}class Hd{static assertSorted(e){for(let t=1;t<e.length;t++){const i=e[t-1],n=e[t];if(!(i.originalRange.getEndPosition().isBeforeOrEqual(n.originalRange.getStartPosition())&&i.modifiedRange.getEndPosition().isBeforeOrEqual(n.modifiedRange.getStartPosition())))throw new en("Range mappings must be sorted")}}constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new Hd(this.modifiedRange,this.originalRange)}toTextEdit(e){const t=e.getValueOfRange(this.modifiedRange);return new Rp(this.originalRange,t)}}const jxe=3;class Hxe{computeDiff(e,t,i){var a;const o=new qxe(e,t,{maxComputationTime:i.maxComputationTimeMs,shouldIgnoreTrimWhitespace:i.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),l=[];let r=null;for(const d of o.changes){let c;d.originalEndLineNumber===0?c=new jt(d.originalStartLineNumber+1,d.originalStartLineNumber+1):c=new jt(d.originalStartLineNumber,d.originalEndLineNumber+1);let h;d.modifiedEndLineNumber===0?h=new jt(d.modifiedStartLineNumber+1,d.modifiedStartLineNumber+1):h=new jt(d.modifiedStartLineNumber,d.modifiedEndLineNumber+1);let u=new rc(c,h,(a=d.charChanges)==null?void 0:a.map(m=>new Hd(new v(m.originalStartLineNumber,m.originalStartColumn,m.originalEndLineNumber,m.originalEndColumn),new v(m.modifiedStartLineNumber,m.modifiedStartColumn,m.modifiedEndLineNumber,m.modifiedEndColumn))));r&&(r.modified.endLineNumberExclusive===u.modified.startLineNumber||r.original.endLineNumberExclusive===u.original.startLineNumber)&&(u=new rc(r.original.join(u.original),r.modified.join(u.modified),r.innerChanges&&u.innerChanges?r.innerChanges.concat(u.innerChanges):void 0),l.pop()),l.push(u),r=u}return SA(()=>J$(l,(d,c)=>c.original.startLineNumber-d.original.endLineNumberExclusive===c.modified.startLineNumber-d.modified.endLineNumberExclusive&&d.original.endLineNumberExclusive<c.original.startLineNumber&&d.modified.endLineNumberExclusive<c.modified.startLineNumber)),new tD(l,[],o.quitEarly)}}function n0e(s,e,t,i){return new cp(s,e,t).ComputeDiff(i)}let Boe=class{constructor(e){const t=[],i=[];for(let n=0,o=e.length;n<o;n++)t[n]=zH(e[n],1),i[n]=_H(e[n],1);this.lines=e,this._startColumns=t,this._endColumns=i}getElements(){const e=[];for(let t=0,i=this.lines.length;t<i;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}getStrictElement(e){return this.lines[e]}getStartLineNumber(e){return e+1}getEndLineNumber(e){return e+1}createCharSequence(e,t,i){const n=[],o=[],l=[];let r=0;for(let a=t;a<=i;a++){const d=this.lines[a],c=e?this._startColumns[a]:1,h=e?this._endColumns[a]:d.length+1;for(let u=c;u<h;u++)n[r]=d.charCodeAt(u-1),o[r]=a+1,l[r]=u,r++;!e&&a<i&&(n[r]=10,o[r]=a+1,l[r]=d.length+1,r++)}return new Pxe(n,o,l)}};class Pxe{constructor(e,t,i){this._charCodes=e,this._lineNumbers=t,this._columns=i}toString(){return"["+this._charCodes.map((e,t)=>(e===10?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[t]},${this._columns[t]})`).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return e===-1?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),this._charCodes[e]===10?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return e===-1?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),this._charCodes[e]===10?1:this._columns[e]+1)}}class fW{constructor(e,t,i,n,o,l,r,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=i,this.originalEndColumn=n,this.modifiedStartLineNumber=o,this.modifiedStartColumn=l,this.modifiedEndLineNumber=r,this.modifiedEndColumn=a}static createFromDiffChange(e,t,i){const n=t.getStartLineNumber(e.originalStart),o=t.getStartColumn(e.originalStart),l=t.getEndLineNumber(e.originalStart+e.originalLength-1),r=t.getEndColumn(e.originalStart+e.originalLength-1),a=i.getStartLineNumber(e.modifiedStart),d=i.getStartColumn(e.modifiedStart),c=i.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),h=i.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new fW(n,o,l,r,a,d,c,h)}}function Kxe(s){if(s.length<=1)return s;const e=[s[0]];let t=e[0];for(let i=1,n=s.length;i<n;i++){const o=s[i],l=o.originalStart-(t.originalStart+t.originalLength),r=o.modifiedStart-(t.modifiedStart+t.modifiedLength);Math.min(l,r)<jxe?(t.originalLength=o.originalStart+o.originalLength-t.originalStart,t.modifiedLength=o.modifiedStart+o.modifiedLength-t.modifiedStart):(e.push(o),t=o)}return e}class hC{constructor(e,t,i,n,o){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=n,this.charChanges=o}static createFromDiffResult(e,t,i,n,o,l,r){let a,d,c,h,u;if(t.originalLength===0?(a=i.getStartLineNumber(t.originalStart)-1,d=0):(a=i.getStartLineNumber(t.originalStart),d=i.getEndLineNumber(t.originalStart+t.originalLength-1)),t.modifiedLength===0?(c=n.getStartLineNumber(t.modifiedStart)-1,h=0):(c=n.getStartLineNumber(t.modifiedStart),h=n.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),l&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&o()){const m=i.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),p=n.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(m.getElements().length>0&&p.getElements().length>0){let g=n0e(m,p,o,!0).changes;r&&(g=Kxe(g)),u=[];for(let b=0,f=g.length;b<f;b++)u.push(fW.createFromDiffChange(g[b],m,p))}}return new hC(a,d,c,h,u)}}class qxe{constructor(e,t,i){this.shouldComputeCharChanges=i.shouldComputeCharChanges,this.shouldPostProcessCharChanges=i.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=i.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=i.shouldMakePrettyDiff,this.originalLines=e,this.modifiedLines=t,this.original=new Boe(e),this.modified=new Boe(t),this.continueLineDiff=Loe(i.maxComputationTime),this.continueCharDiff=Loe(i.maxComputationTime===0?0:Math.min(i.maxComputationTime,5e3))}computeDiff(){if(this.original.lines.length===1&&this.original.lines[0].length===0)return this.modified.lines.length===1&&this.modified.lines[0].length===0?{quitEarly:!1,changes:[]}:{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:void 0}]};if(this.modified.lines.length===1&&this.modified.lines[0].length===0)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:void 0}]};const e=n0e(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,i=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){const r=[];for(let a=0,d=t.length;a<d;a++)r.push(hC.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[a],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:i,changes:r}}const n=[];let o=0,l=0;for(let r=-1,a=t.length;r<a;r++){const d=r+1<a?t[r+1]:null,c=d?d.originalStart:this.originalLines.length,h=d?d.modifiedStart:this.modifiedLines.length;for(;o<c&&l<h;){const u=this.originalLines[o],m=this.modifiedLines[l];if(u!==m){{let p=zH(u,1),g=zH(m,1);for(;p>1&&g>1;){const b=u.charCodeAt(p-2),f=m.charCodeAt(g-2);if(b!==f)break;p--,g--}(p>1||g>1)&&this._pushTrimWhitespaceCharChange(n,o+1,1,p,l+1,1,g)}{let p=_H(u,1),g=_H(m,1);const b=u.length+1,f=m.length+1;for(;p<b&&g<f;){const Z=u.charCodeAt(p-1),A=u.charCodeAt(g-1);if(Z!==A)break;p++,g++}(p<b||g<f)&&this._pushTrimWhitespaceCharChange(n,o+1,p,b,l+1,g,f)}}o++,l++}d&&(n.push(hC.createFromDiffResult(this.shouldIgnoreTrimWhitespace,d,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),o+=d.originalLength,l+=d.modifiedLength)}return{quitEarly:i,changes:n}}_pushTrimWhitespaceCharChange(e,t,i,n,o,l,r){if(this._mergeTrimWhitespaceCharChange(e,t,i,n,o,l,r))return;let a;this.shouldComputeCharChanges&&(a=[new fW(t,i,t,n,o,l,o,r)]),e.push(new hC(t,t,o,o,a))}_mergeTrimWhitespaceCharChange(e,t,i,n,o,l,r){const a=e.length;if(a===0)return!1;const d=e[a-1];return d.originalEndLineNumber===0||d.modifiedEndLineNumber===0?!1:d.originalEndLineNumber===t&&d.modifiedEndLineNumber===o?(this.shouldComputeCharChanges&&d.charChanges&&d.charChanges.push(new fW(t,i,t,n,o,l,o,r)),!0):d.originalEndLineNumber+1===t&&d.modifiedEndLineNumber+1===o?(d.originalEndLineNumber=t,d.modifiedEndLineNumber=o,this.shouldComputeCharChanges&&d.charChanges&&d.charChanges.push(new fW(t,i,t,n,o,l,o,r)),!0):!1}}function zH(s,e){const t=Wr(s);return t===-1?e:t+1}function _H(s,e){const t=Xu(s);return t===-1?e:t+2}function Loe(s){if(s===0)return()=>!0;const e=Date.now();return()=>Date.now()-e<s}class c0{static trivial(e,t){return new c0([new vo(di.ofLength(e.length),di.ofLength(t.length))],!1)}static trivialTimedOut(e,t){return new c0([new vo(di.ofLength(e.length),di.ofLength(t.length))],!0)}constructor(e,t){this.diffs=e,this.hitTimeout=t}}class vo{static invert(e,t){const i=[];return gpe(e,(n,o)=>{i.push(vo.fromOffsetPairs(n?n.getEndExclusives():t0.zero,o?o.getStarts():new t0(t,(n?n.seq2Range.endExclusive-n.seq1Range.endExclusive:0)+t)))}),i}static fromOffsetPairs(e,t){return new vo(new di(e.offset1,t.offset1),new di(e.offset2,t.offset2))}static assertSorted(e){let t;for(const i of e){if(t&&!(t.seq1Range.endExclusive<=i.seq1Range.start&&t.seq2Range.endExclusive<=i.seq2Range.start))throw new en("Sequence diffs must be sorted");t=i}}constructor(e,t){this.seq1Range=e,this.seq2Range=t}swap(){return new vo(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(e){return new vo(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return e===0?this:new vo(this.seq1Range.delta(e),this.seq2Range.delta(e))}deltaStart(e){return e===0?this:new vo(this.seq1Range.deltaStart(e),this.seq2Range.deltaStart(e))}deltaEnd(e){return e===0?this:new vo(this.seq1Range.deltaEnd(e),this.seq2Range.deltaEnd(e))}intersect(e){const t=this.seq1Range.intersect(e.seq1Range),i=this.seq2Range.intersect(e.seq2Range);if(!(!t||!i))return new vo(t,i)}getStarts(){return new t0(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new t0(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}const fZ=class fZ{constructor(e,t){this.offset1=e,this.offset2=t}toString(){return`${this.offset1} <-> ${this.offset2}`}delta(e){return e===0?this:new fZ(this.offset1+e,this.offset2+e)}equals(e){return this.offset1===e.offset1&&this.offset2===e.offset2}};fZ.zero=new fZ(0,0),fZ.max=new fZ(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);let t0=fZ;const uX=class uX{isValid(){return!0}};uX.instance=new uX;let mM=uX;class $xe{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new en("timeout must be positive")}isValid(){if(!(Date.now()-this.startTime<this.timeout)&&this.valid){this.valid=!1;debugger}return this.valid}}class a3{constructor(e,t){this.width=e,this.height=t,this.array=[],this.array=new Array(e*t)}get(e,t){return this.array[e+t*this.width]}set(e,t,i){this.array[e+t*this.width]=i}}function OH(s){return s===32||s===9}const Tw=class Tw{static getKey(e){let t=this.chrKeys.get(e);return t===void 0&&(t=this.chrKeys.size,this.chrKeys.set(e,t)),t}constructor(e,t,i){this.range=e,this.lines=t,this.source=i,this.histogram=[];let n=0;for(let o=e.startLineNumber-1;o<e.endLineNumberExclusive-1;o++){const l=t[o];for(let a=0;a<l.length;a++){n++;const d=l[a],c=Tw.getKey(d);this.histogram[c]=(this.histogram[c]||0)+1}n++;const r=Tw.getKey(`
- `);this.histogram[r]=(this.histogram[r]||0)+1}this.totalCount=n}computeSimilarity(e){let t=0;const i=Math.max(this.histogram.length,e.histogram.length);for(let n=0;n<i;n++)t+=Math.abs((this.histogram[n]??0)-(e.histogram[n]??0));return 1-t/(this.totalCount+e.totalCount)}};Tw.chrKeys=new Map;let $E=Tw;class eJe{compute(e,t,i=mM.instance,n){if(e.length===0||t.length===0)return c0.trivial(e,t);const o=new a3(e.length,t.length),l=new a3(e.length,t.length),r=new a3(e.length,t.length);for(let p=0;p<e.length;p++)for(let g=0;g<t.length;g++){if(!i.isValid())return c0.trivialTimedOut(e,t);const b=p===0?0:o.get(p-1,g),f=g===0?0:o.get(p,g-1);let Z;e.getElement(p)===t.getElement(g)?(p===0||g===0?Z=0:Z=o.get(p-1,g-1),p>0&&g>0&&l.get(p-1,g-1)===3&&(Z+=r.get(p-1,g-1)),Z+=n?n(p,g):1):Z=-1;const A=Math.max(b,f,Z);if(A===Z){const N=p>0&&g>0?r.get(p-1,g-1):0;r.set(p,g,N+1),l.set(p,g,3)}else A===b?(r.set(p,g,0),l.set(p,g,1)):A===f&&(r.set(p,g,0),l.set(p,g,2));o.set(p,g,A)}const a=[];let d=e.length,c=t.length;function h(p,g){(p+1!==d||g+1!==c)&&a.push(new vo(new di(p+1,d),new di(g+1,c))),d=p,c=g}let u=e.length-1,m=t.length-1;for(;u>=0&&m>=0;)l.get(u,m)===3?(h(u,m),u--,m--):l.get(u,m)===1?u--:m--;return h(-1,-1),a.reverse(),new c0(a,!1)}}class s0e{compute(e,t,i=mM.instance){if(e.length===0||t.length===0)return c0.trivial(e,t);const n=e,o=t;function l(g,b){for(;g<n.length&&b<o.length&&n.getElement(g)===o.getElement(b);)g++,b++;return g}let r=0;const a=new tJe;a.set(0,l(0,0));const d=new iJe;d.set(0,a.get(0)===0?null:new koe(null,0,0,a.get(0)));let c=0;e:for(;;){if(r++,!i.isValid())return c0.trivialTimedOut(n,o);const g=-Math.min(r,o.length+r%2),b=Math.min(r,n.length+r%2);for(c=g;c<=b;c+=2){const f=c===b?-1:a.get(c+1),Z=c===g?-1:a.get(c-1)+1,A=Math.min(Math.max(f,Z),n.length),N=A-c;if(A>n.length||N>o.length)continue;const W=l(A,N);a.set(c,W);const Q=A===f?d.get(c+1):d.get(c-1);if(d.set(c,W!==A?new koe(Q,A,N,W-A):Q),a.get(c)===n.length&&a.get(c)-c===o.length)break e}}let h=d.get(c);const u=[];let m=n.length,p=o.length;for(;;){const g=h?h.x+h.length:0,b=h?h.y+h.length:0;if((g!==m||b!==p)&&u.push(new vo(new di(g,m),new di(b,p))),!h)break;m=h.x,p=h.y,h=h.prev}return u.reverse(),new c0(u,!1)}}class koe{constructor(e,t,i,n){this.prev=e,this.x=t,this.y=i,this.length=n}}class tJe{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if(e=-e-1,e>=this.negativeArr.length){const i=this.negativeArr;this.negativeArr=new Int32Array(i.length*2),this.negativeArr.set(i)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){const i=this.positiveArr;this.positiveArr=new Int32Array(i.length*2),this.positiveArr.set(i)}this.positiveArr[e]=t}}}class iJe{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}class ev{constructor(e,t,i){this.lines=e,this.range=t,this.considerWhitespaceChanges=i,this.elements=[],this.firstElementOffsetByLineIdx=[],this.lineStartOffsets=[],this.trimmedWsLengthsByLineIdx=[],this.firstElementOffsetByLineIdx.push(0);for(let n=this.range.startLineNumber;n<=this.range.endLineNumber;n++){let o=e[n-1],l=0;n===this.range.startLineNumber&&this.range.startColumn>1&&(l=this.range.startColumn-1,o=o.substring(l)),this.lineStartOffsets.push(l);let r=0;if(!i){const d=o.trimStart();r=o.length-d.length,o=d.trimEnd()}this.trimmedWsLengthsByLineIdx.push(r);const a=n===this.range.endLineNumber?Math.min(this.range.endColumn-1-l-r,o.length):o.length;for(let d=0;d<a;d++)this.elements.push(o.charCodeAt(d));n<this.range.endLineNumber&&(this.elements.push(`
- `.charCodeAt(0)),this.firstElementOffsetByLineIdx.push(this.elements.length))}}toString(){return`Slice: "${this.text}"`}get text(){return this.getText(new di(0,this.length))}getText(e){return this.elements.slice(e.start,e.endExclusive).map(t=>String.fromCharCode(t)).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const t=Doe(e>0?this.elements[e-1]:-1),i=Doe(e<this.elements.length?this.elements[e]:-1);if(t===7&&i===8)return 0;if(t===8)return 150;let n=0;return t!==i&&(n+=10,t===0&&i===1&&(n+=1)),n+=Ioe(t),n+=Ioe(i),n}translateOffset(e,t="right"){const i=hM(this.firstElementOffsetByLineIdx,o=>o<=e),n=e-this.firstElementOffsetByLineIdx[i];return new oe(this.range.startLineNumber+i,1+this.lineStartOffsets[i]+n+(n===0&&t==="left"?0:this.trimmedWsLengthsByLineIdx[i]))}translateRange(e){const t=this.translateOffset(e.start,"right"),i=this.translateOffset(e.endExclusive,"left");return i.isBefore(t)?v.fromPositions(i,i):v.fromPositions(t,i)}findWordContaining(e){if(e<0||e>=this.elements.length||!d3(this.elements[e]))return;let t=e;for(;t>0&&d3(this.elements[t-1]);)t--;let i=e;for(;i<this.elements.length&&d3(this.elements[i]);)i++;return new di(t,i)}countLinesIn(e){return this.translateOffset(e.endExclusive).lineNumber-this.translateOffset(e.start).lineNumber}isStronglyEqual(e,t){return this.elements[e]===this.elements[t]}extendToFullLines(e){const t=iV(this.firstElementOffsetByLineIdx,n=>n<=e.start)??0,i=xxe(this.firstElementOffsetByLineIdx,n=>e.endExclusive<=n)??this.elements.length;return new di(t,i)}}function d3(s){return s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57}const nJe={0:0,1:0,2:0,3:10,4:2,5:30,6:3,7:10,8:10};function Ioe(s){return nJe[s]}function Doe(s){return s===10?8:s===13?7:OH(s)?6:s>=97&&s<=122?0:s>=65&&s<=90?1:s>=48&&s<=57?2:s===-1?3:s===44||s===59?5:4}function sJe(s,e,t,i,n,o){let{moves:l,excludedChanges:r}=lJe(s,e,t,o);if(!o.isValid())return[];const a=s.filter(c=>!r.has(c)),d=rJe(a,i,n,e,t,o);return uj(l,d),l=aJe(l),l=l.filter(c=>{const h=c.original.toOffsetRange().slice(e).map(m=>m.trim());return h.join(`
- `).length>=15&&oJe(h,m=>m.length>=2)>=2}),l=dJe(s,l),l}function oJe(s,e){let t=0;for(const i of s)e(i)&&t++;return t}function lJe(s,e,t,i){const n=[],o=s.filter(a=>a.modified.isEmpty&&a.original.length>=3).map(a=>new $E(a.original,e,a)),l=new Set(s.filter(a=>a.original.isEmpty&&a.modified.length>=3).map(a=>new $E(a.modified,t,a))),r=new Set;for(const a of o){let d=-1,c;for(const h of l){const u=a.computeSimilarity(h);u>d&&(d=u,c=h)}if(d>.9&&c&&(l.delete(c),n.push(new Nr(a.range,c.range)),r.add(a.source),r.add(c.source)),!i.isValid())return{moves:n,excludedChanges:r}}return{moves:n,excludedChanges:r}}function rJe(s,e,t,i,n,o){const l=[],r=new z$;for(const u of s)for(let m=u.original.startLineNumber;m<u.original.endLineNumberExclusive-2;m++){const p=`${e[m-1]}:${e[m+1-1]}:${e[m+2-1]}`;r.add(p,{range:new jt(m,m+3)})}const a=[];s.sort(ea(u=>u.modified.startLineNumber,zh));for(const u of s){let m=[];for(let p=u.modified.startLineNumber;p<u.modified.endLineNumberExclusive-2;p++){const g=`${t[p-1]}:${t[p+1-1]}:${t[p+2-1]}`,b=new jt(p,p+3),f=[];r.forEach(g,({range:Z})=>{for(const N of m)if(N.originalLineRange.endLineNumberExclusive+1===Z.endLineNumberExclusive&&N.modifiedLineRange.endLineNumberExclusive+1===b.endLineNumberExclusive){N.originalLineRange=new jt(N.originalLineRange.startLineNumber,Z.endLineNumberExclusive),N.modifiedLineRange=new jt(N.modifiedLineRange.startLineNumber,b.endLineNumberExclusive),f.push(N);return}const A={modifiedLineRange:b,originalLineRange:Z};a.push(A),f.push(A)}),m=f}if(!o.isValid())return[]}a.sort(fpe(ea(u=>u.modifiedLineRange.length,zh)));const d=new vc,c=new vc;for(const u of a){const m=u.modifiedLineRange.startLineNumber-u.originalLineRange.startLineNumber,p=d.subtractFrom(u.modifiedLineRange),g=c.subtractFrom(u.originalLineRange).getWithDelta(m),b=p.getIntersection(g);for(const f of b.ranges){if(f.length<3)continue;const Z=f,A=f.delta(-m);l.push(new Nr(A,Z)),d.addRange(Z),c.addRange(A)}}l.sort(ea(u=>u.original.startLineNumber,zh));const h=new qE(s);for(let u=0;u<l.length;u++){const m=l[u],p=h.findLastMonotonous(Q=>Q.original.startLineNumber<=m.original.startLineNumber),g=iV(s,Q=>Q.modified.startLineNumber<=m.modified.startLineNumber),b=Math.max(m.original.startLineNumber-p.original.startLineNumber,m.modified.startLineNumber-g.modified.startLineNumber),f=h.findLastMonotonous(Q=>Q.original.startLineNumber<m.original.endLineNumberExclusive),Z=iV(s,Q=>Q.modified.startLineNumber<m.modified.endLineNumberExclusive),A=Math.max(f.original.endLineNumberExclusive-m.original.endLineNumberExclusive,Z.modified.endLineNumberExclusive-m.modified.endLineNumberExclusive);let N;for(N=0;N<b;N++){const Q=m.original.startLineNumber-N-1,R=m.modified.startLineNumber-N-1;if(Q>i.length||R>n.length||d.contains(R)||c.contains(Q)||!Goe(i[Q-1],n[R-1],o))break}N>0&&(c.addRange(new jt(m.original.startLineNumber-N,m.original.startLineNumber)),d.addRange(new jt(m.modified.startLineNumber-N,m.modified.startLineNumber)));let W;for(W=0;W<A;W++){const Q=m.original.endLineNumberExclusive+W,R=m.modified.endLineNumberExclusive+W;if(Q>i.length||R>n.length||d.contains(R)||c.contains(Q)||!Goe(i[Q-1],n[R-1],o))break}W>0&&(c.addRange(new jt(m.original.endLineNumberExclusive,m.original.endLineNumberExclusive+W)),d.addRange(new jt(m.modified.endLineNumberExclusive,m.modified.endLineNumberExclusive+W))),(N>0||W>0)&&(l[u]=new Nr(new jt(m.original.startLineNumber-N,m.original.endLineNumberExclusive+W),new jt(m.modified.startLineNumber-N,m.modified.endLineNumberExclusive+W)))}return l}function Goe(s,e,t){if(s.trim()===e.trim())return!0;if(s.length>300&&e.length>300)return!1;const n=new s0e().compute(new ev([s],new v(1,1,1,s.length),!1),new ev([e],new v(1,1,1,e.length),!1),t);let o=0;const l=vo.invert(n.diffs,s.length);for(const c of l)c.seq1Range.forEach(h=>{OH(s.charCodeAt(h))||o++});function r(c){let h=0;for(let u=0;u<s.length;u++)OH(c.charCodeAt(u))||h++;return h}const a=r(s.length>e.length?s:e);return o/a>.6&&a>10}function aJe(s){if(s.length===0)return s;s.sort(ea(t=>t.original.startLineNumber,zh));const e=[s[0]];for(let t=1;t<s.length;t++){const i=e[e.length-1],n=s[t],o=n.original.startLineNumber-i.original.endLineNumberExclusive,l=n.modified.startLineNumber-i.modified.endLineNumberExclusive;if(o>=0&&l>=0&&o+l<=2){e[e.length-1]=i.join(n);continue}e.push(n)}return e}function dJe(s,e){const t=new qE(s);return e=e.filter(i=>{const n=t.findLastMonotonous(r=>r.original.startLineNumber<i.original.endLineNumberExclusive)||new Nr(new jt(1,1),new jt(1,1)),o=iV(s,r=>r.modified.startLineNumber<i.modified.endLineNumberExclusive);return n!==o}),e}function jH(s,e,t){let i=t;return i=Eoe(s,e,i),i=Eoe(s,e,i),i=cJe(s,e,i),i}function Eoe(s,e,t){if(t.length===0)return t;const i=[];i.push(t[0]);for(let o=1;o<t.length;o++){const l=i[i.length-1];let r=t[o];if(r.seq1Range.isEmpty||r.seq2Range.isEmpty){const a=r.seq1Range.start-l.seq1Range.endExclusive;let d;for(d=1;d<=a&&!(s.getElement(r.seq1Range.start-d)!==s.getElement(r.seq1Range.endExclusive-d)||e.getElement(r.seq2Range.start-d)!==e.getElement(r.seq2Range.endExclusive-d));d++);if(d--,d===a){i[i.length-1]=new vo(new di(l.seq1Range.start,r.seq1Range.endExclusive-a),new di(l.seq2Range.start,r.seq2Range.endExclusive-a));continue}r=r.delta(-d)}i.push(r)}const n=[];for(let o=0;o<i.length-1;o++){const l=i[o+1];let r=i[o];if(r.seq1Range.isEmpty||r.seq2Range.isEmpty){const a=l.seq1Range.start-r.seq1Range.endExclusive;let d;for(d=0;d<a&&!(!s.isStronglyEqual(r.seq1Range.start+d,r.seq1Range.endExclusive+d)||!e.isStronglyEqual(r.seq2Range.start+d,r.seq2Range.endExclusive+d));d++);if(d===a){i[o+1]=new vo(new di(r.seq1Range.start+a,l.seq1Range.endExclusive),new di(r.seq2Range.start+a,l.seq2Range.endExclusive));continue}d>0&&(r=r.delta(d))}n.push(r)}return i.length>0&&n.push(i[i.length-1]),n}function cJe(s,e,t){if(!s.getBoundaryScore||!e.getBoundaryScore)return t;for(let i=0;i<t.length;i++){const n=i>0?t[i-1]:void 0,o=t[i],l=i+1<t.length?t[i+1]:void 0,r=new di(n?n.seq1Range.endExclusive+1:0,l?l.seq1Range.start-1:s.length),a=new di(n?n.seq2Range.endExclusive+1:0,l?l.seq2Range.start-1:e.length);o.seq1Range.isEmpty?t[i]=voe(o,s,e,r,a):o.seq2Range.isEmpty&&(t[i]=voe(o.swap(),e,s,a,r).swap())}return t}function voe(s,e,t,i,n){let l=1;for(;s.seq1Range.start-l>=i.start&&s.seq2Range.start-l>=n.start&&t.isStronglyEqual(s.seq2Range.start-l,s.seq2Range.endExclusive-l)&&l<100;)l++;l--;let r=0;for(;s.seq1Range.start+r<i.endExclusive&&s.seq2Range.endExclusive+r<n.endExclusive&&t.isStronglyEqual(s.seq2Range.start+r,s.seq2Range.endExclusive+r)&&r<100;)r++;if(l===0&&r===0)return s;let a=0,d=-1;for(let c=-l;c<=r;c++){const h=s.seq2Range.start+c,u=s.seq2Range.endExclusive+c,m=s.seq1Range.start+c,p=e.getBoundaryScore(m)+t.getBoundaryScore(h)+t.getBoundaryScore(u);p>d&&(d=p,a=c)}return s.delta(a)}function hJe(s,e,t){const i=[];for(const n of t){const o=i[i.length-1];if(!o){i.push(n);continue}n.seq1Range.start-o.seq1Range.endExclusive<=2||n.seq2Range.start-o.seq2Range.endExclusive<=2?i[i.length-1]=new vo(o.seq1Range.join(n.seq1Range),o.seq2Range.join(n.seq2Range)):i.push(n)}return i}function uJe(s,e,t){const i=vo.invert(t,s.length),n=[];let o=new t0(0,0);function l(a,d){if(a.offset1<o.offset1||a.offset2<o.offset2)return;const c=s.findWordContaining(a.offset1),h=e.findWordContaining(a.offset2);if(!c||!h)return;let u=new vo(c,h);const m=u.intersect(d);let p=m.seq1Range.length,g=m.seq2Range.length;for(;i.length>0;){const b=i[0];if(!(b.seq1Range.intersects(u.seq1Range)||b.seq2Range.intersects(u.seq2Range)))break;const Z=s.findWordContaining(b.seq1Range.start),A=e.findWordContaining(b.seq2Range.start),N=new vo(Z,A),W=N.intersect(b);if(p+=W.seq1Range.length,g+=W.seq2Range.length,u=u.join(N),u.seq1Range.endExclusive>=b.seq1Range.endExclusive)i.shift();else break}p+g<(u.seq1Range.length+u.seq2Range.length)*2/3&&n.push(u),o=u.getEndExclusives()}for(;i.length>0;){const a=i.shift();a.seq1Range.isEmpty||(l(a.getStarts(),a),l(a.getEndExclusives().delta(-1),a))}return mJe(t,n)}function mJe(s,e){const t=[];for(;s.length>0||e.length>0;){const i=s[0],n=e[0];let o;i&&(!n||i.seq1Range.start<n.seq1Range.start)?o=s.shift():o=e.shift(),t.length>0&&t[t.length-1].seq1Range.endExclusive>=o.seq1Range.start?t[t.length-1]=t[t.length-1].join(o):t.push(o)}return t}function pJe(s,e,t){let i=t;if(i.length===0)return i;let n=0,o;do{o=!1;const l=[i[0]];for(let r=1;r<i.length;r++){let c=function(u,m){const p=new di(d.seq1Range.endExclusive,a.seq1Range.start);return s.getText(p).replace(/\s/g,"").length<=4&&(u.seq1Range.length+u.seq2Range.length>5||m.seq1Range.length+m.seq2Range.length>5)};const a=i[r],d=l[l.length-1];c(d,a)?(o=!0,l[l.length-1]=l[l.length-1].join(a)):l.push(a)}i=l}while(n++<10&&o);return i}function gJe(s,e,t){let i=t;if(i.length===0)return i;let n=0,o;do{o=!1;const r=[i[0]];for(let a=1;a<i.length;a++){let h=function(m,p){const g=new di(c.seq1Range.endExclusive,d.seq1Range.start);if(s.countLinesIn(g)>5||g.length>500)return!1;const f=s.getText(g).trim();if(f.length>20||f.split(/\r\n|\r|\n/).length>1)return!1;const Z=s.countLinesIn(m.seq1Range),A=m.seq1Range.length,N=e.countLinesIn(m.seq2Range),W=m.seq2Range.length,Q=s.countLinesIn(p.seq1Range),R=p.seq1Range.length,M=e.countLinesIn(p.seq2Range),w=p.seq2Range.length,Y=2*40+50;function G(P){return Math.min(P,Y)}return Math.pow(Math.pow(G(Z*40+A),1.5)+Math.pow(G(N*40+W),1.5),1.5)+Math.pow(Math.pow(G(Q*40+R),1.5)+Math.pow(G(M*40+w),1.5),1.5)>(Y**1.5)**1.5*1.3};const d=i[a],c=r[r.length-1];h(c,d)?(o=!0,r[r.length-1]=r[r.length-1].join(d)):r.push(d)}i=r}while(n++<10&&o);const l=[];return lIe(i,(r,a,d)=>{let c=a;function h(f){return f.length>0&&f.trim().length<=3&&a.seq1Range.length+a.seq2Range.length>100}const u=s.extendToFullLines(a.seq1Range),m=s.getText(new di(u.start,a.seq1Range.start));h(m)&&(c=c.deltaStart(-m.length));const p=s.getText(new di(a.seq1Range.endExclusive,u.endExclusive));h(p)&&(c=c.deltaEnd(p.length));const g=vo.fromOffsetPairs(r?r.getEndExclusives():t0.zero,d?d.getStarts():t0.max),b=c.intersect(g);l.length>0&&b.getStarts().equals(l[l.length-1].getEndExclusives())?l[l.length-1]=l[l.length-1].join(b):l.push(b)}),l}class xoe{constructor(e,t){this.trimmedHash=e,this.lines=t}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const t=e===0?0:Joe(this.lines[e-1]),i=e===this.lines.length?0:Joe(this.lines[e]);return 1e3-(t+i)}getText(e){return this.lines.slice(e.start,e.endExclusive).join(`
- `)}isStronglyEqual(e,t){return this.lines[e]===this.lines[t]}}function Joe(s){let e=0;for(;e<s.length&&(s.charCodeAt(e)===32||s.charCodeAt(e)===9);)e++;return e}class o0e{constructor(){this.dynamicProgrammingDiffing=new eJe,this.myersDiffingAlgorithm=new s0e}computeDiff(e,t,i){if(e.length<=1&&Fs(e,t,(W,Q)=>W===Q))return new tD([],[],!1);if(e.length===1&&e[0].length===0||t.length===1&&t[0].length===0)return new tD([new rc(new jt(1,e.length+1),new jt(1,t.length+1),[new Hd(new v(1,1,e.length,e[e.length-1].length+1),new v(1,1,t.length,t[t.length-1].length+1))])],[],!1);const n=i.maxComputationTimeMs===0?mM.instance:new $xe(i.maxComputationTimeMs),o=!i.ignoreTrimWhitespace,l=new Map;function r(W){let Q=l.get(W);return Q===void 0&&(Q=l.size,l.set(W,Q)),Q}const a=e.map(W=>r(W.trim())),d=t.map(W=>r(W.trim())),c=new xoe(a,e),h=new xoe(d,t),u=(()=>c.length+h.length<1700?this.dynamicProgrammingDiffing.compute(c,h,n,(W,Q)=>e[W]===t[Q]?t[Q].length===0?.1:1+Math.log(1+t[Q].length):.99):this.myersDiffingAlgorithm.compute(c,h,n))();let m=u.diffs,p=u.hitTimeout;m=jH(c,h,m),m=pJe(c,h,m);const g=[],b=W=>{if(o)for(let Q=0;Q<W;Q++){const R=f+Q,M=Z+Q;if(e[R]!==t[M]){const w=this.refineDiff(e,t,new vo(new di(R,R+1),new di(M,M+1)),n,o);for(const Y of w.mappings)g.push(Y);w.hitTimeout&&(p=!0)}}};let f=0,Z=0;for(const W of m){SA(()=>W.seq1Range.start-f===W.seq2Range.start-Z);const Q=W.seq1Range.start-f;b(Q),f=W.seq1Range.endExclusive,Z=W.seq2Range.endExclusive;const R=this.refineDiff(e,t,W,n,o);R.hitTimeout&&(p=!0);for(const M of R.mappings)g.push(M)}b(e.length-f);const A=Xoe(g,e,t);let N=[];return i.computeMoves&&(N=this.computeMoves(A,e,t,a,d,n,o)),SA(()=>{function W(R,M){if(R.lineNumber<1||R.lineNumber>M.length)return!1;const w=M[R.lineNumber-1];return!(R.column<1||R.column>w.length+1)}function Q(R,M){return!(R.startLineNumber<1||R.startLineNumber>M.length+1||R.endLineNumberExclusive<1||R.endLineNumberExclusive>M.length+1)}for(const R of A){if(!R.innerChanges)return!1;for(const M of R.innerChanges)if(!(W(M.modifiedRange.getStartPosition(),t)&&W(M.modifiedRange.getEndPosition(),t)&&W(M.originalRange.getStartPosition(),e)&&W(M.originalRange.getEndPosition(),e)))return!1;if(!Q(R.modified,t)||!Q(R.original,e))return!1}return!0}),new tD(A,N,p)}computeMoves(e,t,i,n,o,l,r){return sJe(e,t,i,n,o,l).map(c=>{const h=this.refineDiff(t,i,new vo(c.original.toOffsetRange(),c.modified.toOffsetRange()),l,r),u=Xoe(h.mappings,t,i,!0);return new t0e(c,u)})}refineDiff(e,t,i,n,o){const r=UJe(i).toRangeMapping2(e,t),a=new ev(e,r.originalRange,o),d=new ev(t,r.modifiedRange,o),c=a.length+d.length<500?this.dynamicProgrammingDiffing.compute(a,d,n):this.myersDiffingAlgorithm.compute(a,d,n);let h=c.diffs;return h=jH(a,d,h),h=uJe(a,d,h),h=hJe(a,d,h),h=gJe(a,d,h),{mappings:h.map(m=>new Hd(a.translateRange(m.seq1Range),d.translateRange(m.seq2Range))),hitTimeout:c.hitTimeout}}}function Xoe(s,e,t,i=!1){const n=[];for(const o of h$(s.map(l=>bJe(l,e,t)),(l,r)=>l.original.overlapOrTouch(r.original)||l.modified.overlapOrTouch(r.modified))){const l=o[0],r=o[o.length-1];n.push(new rc(l.original.join(r.original),l.modified.join(r.modified),o.map(a=>a.innerChanges[0])))}return SA(()=>!i&&n.length>0&&(n[0].modified.startLineNumber!==n[0].original.startLineNumber||t.length-n[n.length-1].modified.endLineNumberExclusive!==e.length-n[n.length-1].original.endLineNumberExclusive)?!1:J$(n,(o,l)=>l.original.startLineNumber-o.original.endLineNumberExclusive===l.modified.startLineNumber-o.modified.endLineNumberExclusive&&o.original.endLineNumberExclusive<l.original.startLineNumber&&o.modified.endLineNumberExclusive<l.modified.startLineNumber)),n}function bJe(s,e,t){let i=0,n=0;s.modifiedRange.endColumn===1&&s.originalRange.endColumn===1&&s.originalRange.startLineNumber+i<=s.originalRange.endLineNumber&&s.modifiedRange.startLineNumber+i<=s.modifiedRange.endLineNumber&&(n=-1),s.modifiedRange.startColumn-1>=t[s.modifiedRange.startLineNumber-1].length&&s.originalRange.startColumn-1>=e[s.originalRange.startLineNumber-1].length&&s.originalRange.startLineNumber<=s.originalRange.endLineNumber+n&&s.modifiedRange.startLineNumber<=s.modifiedRange.endLineNumber+n&&(i=1);const o=new jt(s.originalRange.startLineNumber+i,s.originalRange.endLineNumber+1+n),l=new jt(s.modifiedRange.startLineNumber+i,s.modifiedRange.endLineNumber+1+n);return new rc(o,l,[s])}function UJe(s){return new Nr(new jt(s.seq1Range.start+1,s.seq1Range.endExclusive+1),new jt(s.seq2Range.start+1,s.seq2Range.endExclusive+1))}const Yoe={getLegacy:()=>new Hxe,getDefault:()=>new o0e};function IU(s,e){const t=Math.pow(10,e);return Math.round(s*t)/t}class vi{constructor(e,t,i,n=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,e))|0,this.g=Math.min(255,Math.max(0,t))|0,this.b=Math.min(255,Math.max(0,i))|0,this.a=IU(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class Ih{constructor(e,t,i,n){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=IU(Math.max(Math.min(1,t),0),3),this.l=IU(Math.max(Math.min(1,i),0),3),this.a=IU(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,o=e.a,l=Math.max(t,i,n),r=Math.min(t,i,n);let a=0,d=0;const c=(r+l)/2,h=l-r;if(h>0){switch(d=Math.min(c<=.5?h/(2*c):h/(2-2*c),1),l){case t:a=(i-n)/h+(i<n?6:0);break;case i:a=(n-t)/h+2;break;case n:a=(t-i)/h+4;break}a*=60,a=Math.round(a)}return new Ih(a,d,c,o)}static _hue2rgb(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}static toRGBA(e){const t=e.h/360,{s:i,l:n,a:o}=e;let l,r,a;if(i===0)l=r=a=n;else{const d=n<.5?n*(1+i):n+i-n*i,c=2*n-d;l=Ih._hue2rgb(c,d,t+1/3),r=Ih._hue2rgb(c,d,t),a=Ih._hue2rgb(c,d,t-1/3)}return new vi(Math.round(l*255),Math.round(r*255),Math.round(a*255),o)}}class pp{constructor(e,t,i,n){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=IU(Math.max(Math.min(1,t),0),3),this.v=IU(Math.max(Math.min(1,i),0),3),this.a=IU(Math.max(Math.min(1,n),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,o=Math.max(t,i,n),l=Math.min(t,i,n),r=o-l,a=o===0?0:r/o;let d;return r===0?d=0:o===t?d=((i-n)/r%6+6)%6:o===i?d=(n-t)/r+2:d=(t-i)/r+4,new pp(Math.round(d*60),a,o,e.a)}static toRGBA(e){const{h:t,s:i,v:n,a:o}=e,l=n*i,r=l*(1-Math.abs(t/60%2-1)),a=n-l;let[d,c,h]=[0,0,0];return t<60?(d=l,c=r):t<120?(d=r,c=l):t<180?(c=l,h=r):t<240?(c=r,h=l):t<300?(d=r,h=l):t<=360&&(d=l,h=r),d=Math.round((d+a)*255),c=Math.round((c+a)*255),h=Math.round((h+a)*255),new vi(d,c,h,o)}}const Xs=class Xs{static fromHex(e){return Xs.Format.CSS.parseHex(e)||Xs.red}static equals(e,t){return!e&&!t?!0:!e||!t?!1:e.equals(t)}get hsla(){return this._hsla?this._hsla:Ih.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:pp.fromRGBA(this.rgba)}constructor(e){if(e)if(e instanceof vi)this.rgba=e;else if(e instanceof Ih)this._hsla=e,this.rgba=Ih.toRGBA(e);else if(e instanceof pp)this._hsva=e,this.rgba=pp.toRGBA(e);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(e){return!!e&&vi.equals(this.rgba,e.rgba)&&Ih.equals(this.hsla,e.hsla)&&pp.equals(this.hsva,e.hsva)}getRelativeLuminance(){const e=Xs._relativeLuminanceForComponent(this.rgba.r),t=Xs._relativeLuminanceForComponent(this.rgba.g),i=Xs._relativeLuminanceForComponent(this.rgba.b),n=.2126*e+.7152*t+.0722*i;return IU(n,4)}static _relativeLuminanceForComponent(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(e){const t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t>i}isDarkerThan(e){const t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t<i}lighten(e){return new Xs(new Ih(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*e,this.hsla.a))}darken(e){return new Xs(new Ih(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*e,this.hsla.a))}transparent(e){const{r:t,g:i,b:n,a:o}=this.rgba;return new Xs(new vi(t,i,n,o*e))}isTransparent(){return this.rgba.a===0}isOpaque(){return this.rgba.a===1}opposite(){return new Xs(new vi(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}makeOpaque(e){if(this.isOpaque()||e.rgba.a!==1)return this;const{r:t,g:i,b:n,a:o}=this.rgba;return new Xs(new vi(e.rgba.r-o*(e.rgba.r-t),e.rgba.g-o*(e.rgba.g-i),e.rgba.b-o*(e.rgba.b-n),1))}toString(){return this._toString||(this._toString=Xs.Format.CSS.format(this)),this._toString}static getLighterColor(e,t,i){if(e.isLighterThan(t))return e;i=i||.5;const n=e.getRelativeLuminance(),o=t.getRelativeLuminance();return i=i*(o-n)/o,e.lighten(i)}static getDarkerColor(e,t,i){if(e.isDarkerThan(t))return e;i=i||.5;const n=e.getRelativeLuminance(),o=t.getRelativeLuminance();return i=i*(n-o)/n,e.darken(i)}};Xs.white=new Xs(new vi(255,255,255,1)),Xs.black=new Xs(new vi(0,0,0,1)),Xs.red=new Xs(new vi(255,0,0,1)),Xs.blue=new Xs(new vi(0,0,255,1)),Xs.green=new Xs(new vi(0,255,0,1)),Xs.cyan=new Xs(new vi(0,255,255,1)),Xs.lightgrey=new Xs(new vi(211,211,211,1)),Xs.transparent=new Xs(new vi(0,0,0,0));let Re=Xs;(function(s){(function(e){(function(t){function i(m){return m.rgba.a===1?`rgb(${m.rgba.r}, ${m.rgba.g}, ${m.rgba.b})`:s.Format.CSS.formatRGBA(m)}t.formatRGB=i;function n(m){return`rgba(${m.rgba.r}, ${m.rgba.g}, ${m.rgba.b}, ${+m.rgba.a.toFixed(2)})`}t.formatRGBA=n;function o(m){return m.hsla.a===1?`hsl(${m.hsla.h}, ${(m.hsla.s*100).toFixed(2)}%, ${(m.hsla.l*100).toFixed(2)}%)`:s.Format.CSS.formatHSLA(m)}t.formatHSL=o;function l(m){return`hsla(${m.hsla.h}, ${(m.hsla.s*100).toFixed(2)}%, ${(m.hsla.l*100).toFixed(2)}%, ${m.hsla.a.toFixed(2)})`}t.formatHSLA=l;function r(m){const p=m.toString(16);return p.length!==2?"0"+p:p}function a(m){return`#${r(m.rgba.r)}${r(m.rgba.g)}${r(m.rgba.b)}`}t.formatHex=a;function d(m,p=!1){return p&&m.rgba.a===1?s.Format.CSS.formatHex(m):`#${r(m.rgba.r)}${r(m.rgba.g)}${r(m.rgba.b)}${r(Math.round(m.rgba.a*255))}`}t.formatHexA=d;function c(m){return m.isOpaque()?s.Format.CSS.formatHex(m):s.Format.CSS.formatRGBA(m)}t.format=c;function h(m){const p=m.length;if(p===0||m.charCodeAt(0)!==35)return null;if(p===7){const g=16*u(m.charCodeAt(1))+u(m.charCodeAt(2)),b=16*u(m.charCodeAt(3))+u(m.charCodeAt(4)),f=16*u(m.charCodeAt(5))+u(m.charCodeAt(6));return new s(new vi(g,b,f,1))}if(p===9){const g=16*u(m.charCodeAt(1))+u(m.charCodeAt(2)),b=16*u(m.charCodeAt(3))+u(m.charCodeAt(4)),f=16*u(m.charCodeAt(5))+u(m.charCodeAt(6)),Z=16*u(m.charCodeAt(7))+u(m.charCodeAt(8));return new s(new vi(g,b,f,Z/255))}if(p===4){const g=u(m.charCodeAt(1)),b=u(m.charCodeAt(2)),f=u(m.charCodeAt(3));return new s(new vi(16*g+g,16*b+b,16*f+f))}if(p===5){const g=u(m.charCodeAt(1)),b=u(m.charCodeAt(2)),f=u(m.charCodeAt(3)),Z=u(m.charCodeAt(4));return new s(new vi(16*g+g,16*b+b,16*f+f,(16*Z+Z)/255))}return null}t.parseHex=h;function u(m){switch(m){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(e.CSS||(e.CSS={}))})(s.Format||(s.Format={}))})(Re||(Re={}));function l0e(s){const e=[];for(const t of s){const i=Number(t);(i||i===0&&t.replace(/\s/g,"")!=="")&&e.push(i)}return e}function K$(s,e,t,i){return{red:s/255,blue:t/255,green:e/255,alpha:i}}function L1(s,e){const t=e.index,i=e[0].length;if(!t)return;const n=s.positionAt(t);return{startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:n.lineNumber,endColumn:n.column+i}}function fJe(s,e){if(!s)return;const t=Re.Format.CSS.parseHex(e);if(t)return{range:s,color:K$(t.rgba.r,t.rgba.g,t.rgba.b,t.rgba.a)}}function zoe(s,e,t){if(!s||e.length!==1)return;const n=e[0].values(),o=l0e(n);return{range:s,color:K$(o[0],o[1],o[2],t?o[3]:1)}}function _oe(s,e,t){if(!s||e.length!==1)return;const n=e[0].values(),o=l0e(n),l=new Re(new Ih(o[0],o[1]/100,o[2]/100,t?o[3]:1));return{range:s,color:K$(l.rgba.r,l.rgba.g,l.rgba.b,l.rgba.a)}}function k1(s,e){return typeof s=="string"?[...s.matchAll(e)]:s.findMatches(e)}function FJe(s){const e=[],i=k1(s,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(i.length>0)for(const n of i){const o=n.filter(d=>d!==void 0),l=o[1],r=o[2];if(!r)continue;let a;if(l==="rgb"){const d=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;a=zoe(L1(s,n),k1(r,d),!1)}else if(l==="rgba"){const d=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;a=zoe(L1(s,n),k1(r,d),!0)}else if(l==="hsl"){const d=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;a=_oe(L1(s,n),k1(r,d),!1)}else if(l==="hsla"){const d=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;a=_oe(L1(s,n),k1(r,d),!0)}else l==="#"&&(a=fJe(L1(s,n),l+r));a&&e.push(a)}return e}function ZJe(s){return!s||typeof s.getValue!="function"||typeof s.positionAt!="function"?[]:FJe(s)}const Ooe=new RegExp("\\bMARK:\\s*(.*)$","d"),AJe=/^-+|-+$/g;function NJe(s,e){var i;let t=[];if(e.findRegionSectionHeaders&&((i=e.foldingRules)!=null&&i.markers)){const n=RJe(s,e);t=t.concat(n)}if(e.findMarkSectionHeaders){const n=SJe(s);t=t.concat(n)}return t}function RJe(s,e){const t=[],i=s.getLineCount();for(let n=1;n<=i;n++){const o=s.getLineContent(n),l=o.match(e.foldingRules.markers.start);if(l){const r={startLineNumber:n,startColumn:l[0].length+1,endLineNumber:n,endColumn:o.length+1};if(r.endColumn>r.startColumn){const a={range:r,...r0e(o.substring(l[0].length)),shouldBeInComments:!1};(a.text||a.hasSeparatorLine)&&t.push(a)}}}return t}function SJe(s){const e=[],t=s.getLineCount();for(let i=1;i<=t;i++){const n=s.getLineContent(i);WJe(n,i,e)}return e}function WJe(s,e,t){Ooe.lastIndex=0;const i=Ooe.exec(s);if(i){const n=i.indices[1][0]+1,o=i.indices[1][1]+1,l={startLineNumber:e,startColumn:n,endLineNumber:e,endColumn:o};if(l.endColumn>l.startColumn){const r={range:l,...r0e(i[1]),shouldBeInComments:!0};(r.text||r.hasSeparatorLine)&&t.push(r)}}}function r0e(s){s=s.trim();const e=s.startsWith("-");return s=s.replace(AJe,""),{text:s,hasSeparatorLine:e}}class VJe{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=CN(e);const i=this.values,n=this.prefixSum,o=t.length;return o===0?!1:(this.values=new Uint32Array(i.length+o),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e),e+o),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,t){return e=CN(e),t=CN(t),this.values[e]===t?!1:(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}removeValues(e,t){e=CN(e),t=CN(t);const i=this.values,n=this.prefixSum;if(e>=i.length)return!1;const o=i.length-e;return t>=o&&(t=o),t===0?!1:(this.values=new Uint32Array(i.length-t),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(n.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=CN(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;t===0&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let i=t;i<=e;i++)this.prefixSum[i]=this.prefixSum[i-1]+this.values[i];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let t=0,i=this.values.length-1,n=0,o=0,l=0;for(;t<=i;)if(n=t+(i-t)/2|0,o=this.prefixSum[n],l=o-this.values[n],e<l)i=n-1;else if(e>=o)t=n+1;else break;return new a0e(n,e-l)}}class QJe{constructor(e){this._values=e,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(e){return this._ensureValid(),e===0?0:this._prefixSum[e-1]}getIndexOf(e){this._ensureValid();const t=this._indexBySum[e],i=t>0?this._prefixSum[t-1]:0;return new a0e(t,e-i)}removeValues(e,t){this._values.splice(e,t),this._invalidate(e)}insertValues(e,t){this._values=_5(this._values,e,t),this._invalidate(e)}_invalidate(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}_ensureValid(){if(!this._isValid){for(let e=this._validEndIndex+1,t=this._values.length;e<t;e++){const i=this._values[e],n=e>0?this._prefixSum[e-1]:0;this._prefixSum[e]=n+i;for(let o=0;o<i;o++)this._indexBySum[n+o]=e}this._prefixSum.length=this._values.length,this._indexBySum.length=this._prefixSum[this._prefixSum.length-1],this._isValid=!0,this._validEndIndex=this._values.length-1}}setValue(e,t){this._values[e]!==t&&(this._values[e]=t,this._invalidate(e))}}class a0e{constructor(e,t){this.index=e,this.remainder=t,this._prefixSumIndexOfResultBrand=void 0,this.index=e,this.remainder=t}}class yJe{constructor(e,t,i,n){this._uri=e,this._lines=t,this._eol=i,this._versionId=n,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const i of t)this._acceptDeleteRange(i.range),this._acceptInsertText(new oe(i.range.startLineNumber,i.range.startColumn),i.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,i=new Uint32Array(t);for(let n=0;n<t;n++)i[n]=this._lines[n].length+e;this._lineStarts=new VJe(i)}}_setLineText(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.setValue(e,this._lines[e].length+this._eol.length)}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1));return}this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t){if(t.length===0)return;const i=Lp(t);if(i.length===1){this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]+this._lines[e.lineNumber-1].substring(e.column-1));return}i[i.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]);const n=new Uint32Array(i.length-1);for(let o=1;o<i.length;o++)this._lines.splice(e.lineNumber+o-1,0,i[o]),n[o-1]=i[o].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,n)}}const joe=60*1e3;class CJe extends de{constructor(e,t,i=!1){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=e,this._modelService=t,!i){const n=new L$;n.cancelAndSet(()=>this._checkStopModelSync(),Math.round(joe/2)),this._register(n)}}dispose(){for(const e in this._syncedModels)Tn(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(e,t=!1){for(const i of e){const n=i.toString();this._syncedModels[n]||this._beginModelSync(i,t),this._syncedModels[n]&&(this._syncedModelsLastUsedTime[n]=new Date().getTime())}}_checkStopModelSync(){const e=new Date().getTime(),t=[];for(const i in this._syncedModelsLastUsedTime)e-this._syncedModelsLastUsedTime[i]>joe&&t.push(i);for(const i of t)this._stopModelSync(i)}_beginModelSync(e,t){const i=this._modelService.getModel(e);if(!i||!t&&i.isTooLargeForSyncing())return;const n=e.toString();this._proxy.$acceptNewModel({url:i.uri.toString(),lines:i.getLinesContent(),EOL:i.getEOL(),versionId:i.getVersionId()});const o=new Ze;o.add(i.onDidChangeContent(l=>{this._proxy.$acceptModelChanged(n.toString(),l)})),o.add(i.onWillDispose(()=>{this._stopModelSync(n)})),o.add(gt(()=>{this._proxy.$acceptRemovedModel(n)})),this._syncedModels[n]=o}_stopModelSync(e){const t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],Tn(t)}}class wJe{constructor(){this._models=Object.create(null)}getModel(e){return this._models[e]}getModels(){const e=[];return Object.keys(this._models).forEach(t=>e.push(this._models[t])),e}$acceptNewModel(e){this._models[e.url]=new MJe(At.parse(e.url),e.lines,e.EOL,e.versionId)}$acceptModelChanged(e,t){if(!this._models[e])return;this._models[e].onEvents(t)}$acceptRemovedModel(e){this._models[e]&&delete this._models[e]}}class MJe extends yJe{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(e){const t=[];for(let i=0;i<this._lines.length;i++){const n=this._lines[i],o=this.offsetAt(new oe(i+1,1)),l=n.matchAll(e);for(const r of l)(r.index||r.index===0)&&(r.index=r.index+o),t.push(r)}return t}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(e){return this._lines[e-1]}getWordAtPosition(e,t){const i=qw(e.column,f$(t),this._lines[e.lineNumber-1],0);return i?new v(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn):null}words(e){const t=this._lines,i=this._wordenize.bind(this);let n=0,o="",l=0,r=[];return{*[Symbol.iterator](){for(;;)if(l<r.length){const a=o.substring(r[l].start,r[l].end);l+=1,yield a}else if(n<t.length)o=t[n],r=i(o,e),l=0,n+=1;else break}}}getLineWords(e,t){const i=this._lines[e-1],n=this._wordenize(i,t),o=[];for(const l of n)o.push({word:i.substring(l.start,l.end),startColumn:l.start+1,endColumn:l.end+1});return o}_wordenize(e,t){const i=[];let n;for(t.lastIndex=0;(n=t.exec(e))&&n[0].length!==0;)i.push({start:n.index,end:n.index+n[0].length});return i}getValueInRange(e){if(e=this._validateRange(e),e.startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);const t=this._eol,i=e.startLineNumber-1,n=e.endLineNumber-1,o=[];o.push(this._lines[i].substring(e.startColumn-1));for(let l=i+1;l<n;l++)o.push(this._lines[l]);return o.push(this._lines[n].substring(0,e.endColumn-1)),o.join(t)}offsetAt(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getPrefixSum(e.lineNumber-2)+(e.column-1)}positionAt(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();const t=this._lineStarts.getIndexOf(e),i=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,i)}}_validateRange(e){const t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),i=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||i.lineNumber!==e.endLineNumber||i.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:i.lineNumber,endColumn:i.column}:e}_validatePosition(e){if(!oe.isIPosition(e))throw new Error("bad position");let{lineNumber:t,column:i}=e,n=!1;if(t<1)t=1,i=1,n=!0;else if(t>this._lines.length)t=this._lines.length,i=this._lines[t-1].length+1,n=!0;else{const o=this._lines[t-1].length+1;i<1?(i=1,n=!0):i>o&&(i=o,n=!0)}return n?{lineNumber:t,column:i}:e}}const mX=class mX{constructor(){this._workerTextModelSyncServer=new wJe}dispose(){}_getModel(e){return this._workerTextModelSyncServer.getModel(e)}_getModels(){return this._workerTextModelSyncServer.getModels()}$acceptNewModel(e){this._workerTextModelSyncServer.$acceptNewModel(e)}$acceptModelChanged(e,t){this._workerTextModelSyncServer.$acceptModelChanged(e,t)}$acceptRemovedModel(e){this._workerTextModelSyncServer.$acceptRemovedModel(e)}async $computeUnicodeHighlights(e,t,i){const n=this._getModel(e);return n?O$.computeUnicodeHighlights(n,t,i):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async $findSectionHeaders(e,t){const i=this._getModel(e);return i?NJe(i,t):[]}async $computeDiff(e,t,i,n){const o=this._getModel(e),l=this._getModel(t);return!o||!l?null:iD.computeDiff(o,l,i,n)}static computeDiff(e,t,i,n){const o=n==="advanced"?Yoe.getDefault():Yoe.getLegacy(),l=e.getLinesContent(),r=t.getLinesContent(),a=o.computeDiff(l,r,i),d=a.changes.length>0?!1:this._modelsAreIdentical(e,t);function c(h){return h.map(u=>{var m;return[u.original.startLineNumber,u.original.endLineNumberExclusive,u.modified.startLineNumber,u.modified.endLineNumberExclusive,(m=u.innerChanges)==null?void 0:m.map(p=>[p.originalRange.startLineNumber,p.originalRange.startColumn,p.originalRange.endLineNumber,p.originalRange.endColumn,p.modifiedRange.startLineNumber,p.modifiedRange.startColumn,p.modifiedRange.endLineNumber,p.modifiedRange.endColumn])]})}return{identical:d,quitEarly:a.hitTimeout,changes:c(a.changes),moves:a.moves.map(h=>[h.lineRangeMapping.original.startLineNumber,h.lineRangeMapping.original.endLineNumberExclusive,h.lineRangeMapping.modified.startLineNumber,h.lineRangeMapping.modified.endLineNumberExclusive,c(h.changes)])}}static _modelsAreIdentical(e,t){const i=e.getLineCount(),n=t.getLineCount();if(i!==n)return!1;for(let o=1;o<=i;o++){const l=e.getLineContent(o),r=t.getLineContent(o);if(l!==r)return!1}return!0}async $computeMoreMinimalEdits(e,t,i){const n=this._getModel(e);if(!n)return t;const o=[];let l;t=t.slice(0).sort((a,d)=>{if(a.range&&d.range)return v.compareRangesUsingStarts(a.range,d.range);const c=a.range?0:1,h=d.range?0:1;return c-h});let r=0;for(let a=1;a<t.length;a++)v.getEndPosition(t[r].range).equals(v.getStartPosition(t[a].range))?(t[r].range=v.fromPositions(v.getStartPosition(t[r].range),v.getEndPosition(t[a].range)),t[r].text+=t[a].text):(r++,t[r]=t[a]);t.length=r+1;for(let{range:a,text:d,eol:c}of t){if(typeof c=="number"&&(l=c),v.isEmpty(a)&&!d)continue;const h=n.getValueInRange(a);if(d=d.replace(/\r\n|\n|\r/g,n.eol),h===d)continue;if(Math.max(d.length,h.length)>iD._diffLimit){o.push({range:a,text:d});continue}const u=Zxe(h,d,i),m=n.offsetAt(v.lift(a).getStartPosition());for(const p of u){const g=n.positionAt(m+p.originalStart),b=n.positionAt(m+p.originalStart+p.originalLength),f={text:d.substr(p.modifiedStart,p.modifiedLength),range:{startLineNumber:g.lineNumber,startColumn:g.column,endLineNumber:b.lineNumber,endColumn:b.column}};n.getValueInRange(f.range)!==f.text&&o.push(f)}}return typeof l=="number"&&o.push({eol:l,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),o}async $computeLinks(e){const t=this._getModel(e);return t?Wxe(t):null}async $computeDefaultDocumentColors(e){const t=this._getModel(e);return t?ZJe(t):null}async $textualSuggest(e,t,i,n){const o=new ol,l=new RegExp(i,n),r=new Set;e:for(const a of e){const d=this._getModel(a);if(d){for(const c of d.words(l))if(!(c===t||!isNaN(Number(c)))&&(r.add(c),r.size>iD._suggestionsLimit))break e}}return{words:Array.from(r),duration:o.elapsed()}}async $computeWordRanges(e,t,i,n){const o=this._getModel(e);if(!o)return Object.create(null);const l=new RegExp(i,n),r=Object.create(null);for(let a=t.startLineNumber;a<t.endLineNumber;a++){const d=o.getLineWords(a,l);for(const c of d){if(!isNaN(Number(c.word)))continue;let h=r[c.word];h||(h=[],r[c.word]=h),h.push({startLineNumber:a,startColumn:c.startColumn,endLineNumber:a,endColumn:c.endColumn})}}return r}async $navigateValueSet(e,t,i,n,o){const l=this._getModel(e);if(!l)return null;const r=new RegExp(n,o);t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1});const a=l.getValueInRange(t),d=l.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},r);if(!d)return null;const c=l.getValueInRange(d);return XH.INSTANCE.navigateValueSet(t,a,d,c,i)}};mX._diffLimit=1e5,mX._suggestionsLimit=1e4;let HH=mX;class iD extends HH{constructor(e,t){super(),this._host=e,this._foreignModuleFactory=t,this._foreignModule=null}async $ping(){return"pong"}$loadForeignModule(e,t,i){const l={host:gIe(i,(r,a)=>this._host.$fhr(r,a)),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(l,t),Promise.resolve(pj(this._foreignModule))):new Promise((r,a)=>{const d=c=>{this._foreignModule=c.create(l,t),r(pj(this._foreignModule))};{const c=q5.asBrowserUri(`${e}.js`).toString(!0);Ut(()=>import(`${c}`),[],import.meta.url).then(d).catch(a)}})}$fmr(e,t){if(!this._foreignModule||typeof this._foreignModule[e]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(i){return Promise.reject(i)}}}typeof importScripts=="function"&&(globalThis.monaco=jpe());const UY=Zi("textResourceConfigurationService"),d0e=Zi("textResourcePropertiesService"),lt=Zi("ILanguageFeaturesService");var q$=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$F=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Hoe=5*60*1e3;function eZ(s,e){const t=s.getModel(e);return!(!t||t.isTooLargeForSyncing())}let PH=class extends de{constructor(e,t,i,n,o,l){super(),this._languageConfigurationService=o,this._modelService=t,this._workerManager=this._register(new KH(e,this._modelService)),this._logService=n,this._register(l.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:async(r,a)=>{if(!eZ(this._modelService,r.uri))return Promise.resolve({links:[]});const c=await(await this._workerWithResources([r.uri])).$computeLinks(r.uri.toString());return c&&{links:c}}})),this._register(l.completionProvider.register("*",new TJe(this._workerManager,i,this._modelService,this._languageConfigurationService)))}dispose(){super.dispose()}canComputeUnicodeHighlights(e){return eZ(this._modelService,e)}async computedUnicodeHighlights(e,t,i){return(await this._workerWithResources([e])).$computeUnicodeHighlights(e.toString(),t,i)}async computeDiff(e,t,i,n){const l=await(await this._workerWithResources([e,t],!0)).$computeDiff(e.toString(),t.toString(),i,n);if(!l)return null;return{identical:l.identical,quitEarly:l.quitEarly,changes:a(l.changes),moves:l.moves.map(d=>new t0e(new Nr(new jt(d[0],d[1]),new jt(d[2],d[3])),a(d[4])))};function a(d){return d.map(c=>{var h;return new rc(new jt(c[0],c[1]),new jt(c[2],c[3]),(h=c[4])==null?void 0:h.map(u=>new Hd(new v(u[0],u[1],u[2],u[3]),new v(u[4],u[5],u[6],u[7]))))})}}async computeMoreMinimalEdits(e,t,i=!1){if(Sr(t)){if(!eZ(this._modelService,e))return Promise.resolve(t);const n=ol.create(),o=this._workerWithResources([e]).then(l=>l.$computeMoreMinimalEdits(e.toString(),t,i));return o.finally(()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),n.elapsed())),Promise.race([o,A0(1e3).then(()=>t)])}else return Promise.resolve(void 0)}canNavigateValueSet(e){return eZ(this._modelService,e)}async navigateValueSet(e,t,i){const n=this._modelService.getModel(e);if(!n)return null;const o=this._languageConfigurationService.getLanguageConfiguration(n.getLanguageId()).getWordDefinition(),l=o.source,r=o.flags;return(await this._workerWithResources([e])).$navigateValueSet(e.toString(),t,i,l,r)}canComputeWordRanges(e){return eZ(this._modelService,e)}async computeWordRanges(e,t){const i=this._modelService.getModel(e);if(!i)return Promise.resolve(null);const n=this._languageConfigurationService.getLanguageConfiguration(i.getLanguageId()).getWordDefinition(),o=n.source,l=n.flags;return(await this._workerWithResources([e])).$computeWordRanges(e.toString(),t,o,l)}async findSectionHeaders(e,t){return(await this._workerWithResources([e])).$findSectionHeaders(e.toString(),t)}async computeDefaultDocumentColors(e){return(await this._workerWithResources([e])).$computeDefaultDocumentColors(e.toString())}async _workerWithResources(e,t=!1){return await(await this._workerManager.withWorker()).workerWithSyncedResources(e,t)}};PH=q$([$F(1,es),$F(2,UY),$F(3,El),$F(4,Qs),$F(5,lt)],PH);class TJe{constructor(e,t,i,n){this.languageConfigurationService=n,this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=i}async provideCompletionItems(e,t){const i=this._configurationService.getValue(e.uri,t,"editor");if(i.wordBasedSuggestions==="off")return;const n=[];if(i.wordBasedSuggestions==="currentDocument")eZ(this._modelService,e.uri)&&n.push(e.uri);else for(const h of this._modelService.getModels())eZ(this._modelService,h.uri)&&(h===e?n.unshift(h.uri):(i.wordBasedSuggestions==="allDocuments"||h.getLanguageId()===e.getLanguageId())&&n.push(h.uri));if(n.length===0)return;const o=this.languageConfigurationService.getLanguageConfiguration(e.getLanguageId()).getWordDefinition(),l=e.getWordAtPosition(t),r=l?new v(t.lineNumber,l.startColumn,t.lineNumber,l.endColumn):v.fromPositions(t),a=r.setEndPosition(t.lineNumber,t.column),c=await(await this._workerManager.withWorker()).textualSuggest(n,l==null?void 0:l.word,o);if(c)return{duration:c.duration,suggestions:c.words.map(h=>({kind:18,label:h,insertText:h,range:{insert:a,replace:r}}))}}}let KH=class extends de{constructor(e,t){super(),this._workerDescriptor=e,this._modelService=t,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime(),this._register(new I$).cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(Hoe/2),Qn),this._register(this._modelService.onModelRemoved(n=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;this._modelService.getModels().length===0&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;new Date().getTime()-this._lastWorkerUsedTime>Hoe&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new tv(this._workerDescriptor,!1,this._modelService)),Promise.resolve(this._editorWorkerClient)}};KH=q$([$F(1,es)],KH);class BJe{constructor(e){this._instance=e,this.proxy=this._instance}dispose(){this._instance.dispose()}setChannel(e,t){throw new Error("Not supported")}}let tv=class extends de{constructor(e,t,i){super(),this._workerDescriptor=e,this._disposed=!1,this._modelService=i,this._keepIdleModels=t,this._worker=null,this._modelManager=null}fhr(e,t){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(Dve(this._workerDescriptor)),YH.setChannel(this._worker,this._createEditorWorkerHost())}catch(e){DH(e),this._worker=this._createFallbackLocalWorker()}return this._worker}async _getProxy(){try{const e=this._getOrCreateWorker().proxy;return await e.$ping(),e}catch(e){return DH(e),this._worker=this._createFallbackLocalWorker(),this._worker.proxy}}_createFallbackLocalWorker(){return new BJe(new iD(this._createEditorWorkerHost(),null))}_createEditorWorkerHost(){return{$fhr:(e,t)=>this.fhr(e,t)}}_getOrCreateModelManager(e){return this._modelManager||(this._modelManager=this._register(new CJe(e,this._modelService,this._keepIdleModels))),this._modelManager}async workerWithSyncedResources(e,t=!1){if(this._disposed)return Promise.reject(NDe());const i=await this._getProxy();return this._getOrCreateModelManager(i).ensureSyncedResources(e,t),i}async textualSuggest(e,t,i){const n=await this.workerWithSyncedResources(e),o=i.source,l=i.flags;return n.$textualSuggest(e.map(r=>r.toString()),t,o,l)}dispose(){super.dispose(),this._disposed=!0}};tv=q$([$F(2,es)],tv);var Jc;(function(s){s.DARK="dark",s.LIGHT="light",s.HIGH_CONTRAST_DARK="hcDark",s.HIGH_CONTRAST_LIGHT="hcLight"})(Jc||(Jc={}));function Yu(s){return s===Jc.HIGH_CONTRAST_DARK||s===Jc.HIGH_CONTRAST_LIGHT}function nV(s){return s===Jc.DARK||s===Jc.HIGH_CONTRAST_DARK}const Do=Zi("themeService");function Gs(s){return{id:s}}function qH(s){switch(s){case Jc.DARK:return"vs-dark";case Jc.HIGH_CONTRAST_DARK:return"hc-black";case Jc.HIGH_CONTRAST_LIGHT:return"hc-light";default:return"vs"}}const c0e={ThemingContribution:"base.contributions.theming"};class LJe{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new re}onColorThemeChange(e){return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),gt(()=>{const t=this.themingParticipants.indexOf(e);this.themingParticipants.splice(t,1)})}getThemingParticipants(){return this.themingParticipants}}const h0e=new LJe;Vs.add(c0e.ThemingContribution,h0e);function ih(s){return h0e.onColorThemeChange(s)}class kJe extends de{constructor(e){super(),this.themeService=e,this.theme=e.getColorTheme(),this._register(this.themeService.onDidColorThemeChange(t=>this.onThemeChange(t)))}onThemeChange(e){this.theme=e,this.updateStyles()}updateStyles(){}}var IJe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},DJe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let $H=class extends de{constructor(e){super(),this._themeService=e,this._onWillCreateCodeEditor=this._register(new re),this._onCodeEditorAdd=this._register(new re),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new re),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new re),this._onDiffEditorAdd=this._register(new re),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new re),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new Pr,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(e){this._codeEditors[e.getId()]=e,this._onCodeEditorAdd.fire(e)}removeCodeEditor(e){delete this._codeEditors[e.getId()]&&this._onCodeEditorRemove.fire(e)}listCodeEditors(){return Object.keys(this._codeEditors).map(e=>this._codeEditors[e])}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(e){this._diffEditors[e.getId()]=e,this._onDiffEditorAdd.fire(e)}listDiffEditors(){return Object.keys(this._diffEditors).map(e=>this._diffEditors[e])}getFocusedCodeEditor(){let e=null;const t=this.listCodeEditors();for(const i of t){if(i.hasTextFocus())return i;i.hasWidgetFocus()&&(e=i)}return e}removeDecorationType(e){const t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach(i=>i.removeDecorationsByType(e))))}setModelProperty(e,t,i){const n=e.toString();let o;this._modelProperties.has(n)?o=this._modelProperties.get(n):(o=new Map,this._modelProperties.set(n,o)),o.set(t,i)}getModelProperty(e,t){const i=e.toString();if(this._modelProperties.has(i))return this._modelProperties.get(i).get(t)}async openCodeEditor(e,t,i){for(const n of this._codeEditorOpenHandlers){const o=await n(e,t,i);if(o!==null)return o}return null}registerCodeEditorOpenHandler(e){const t=this._codeEditorOpenHandlers.unshift(e);return gt(t)}};$H=IJe([DJe(0,Do)],$H);var GJe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Poe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let iv=class extends $H{constructor(e,t){super(t),this._register(this.onCodeEditorAdd(()=>this._checkContextKey())),this._register(this.onCodeEditorRemove(()=>this._checkContextKey())),this._editorIsOpen=e.createKey("editorIsOpen",!1),this._activeCodeEditor=null,this._register(this.registerCodeEditorOpenHandler(async(i,n,o)=>n?this.doOpenEditor(n,i):null))}_checkContextKey(){let e=!1;for(const t of this.listCodeEditors())if(!t.isSimpleWidget){e=!0;break}this._editorIsOpen.set(e)}setActiveCodeEditor(e){this._activeCodeEditor=e}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(e,t){if(!this.findModel(e,t.resource)){if(t.resource){const o=t.resource.scheme;if(o===Xt.http||o===Xt.https)return Cge(t.resource.toString()),e}return null}const n=t.options?t.options.selection:null;if(n)if(typeof n.endLineNumber=="number"&&typeof n.endColumn=="number")e.setSelection(n),e.revealRangeInCenter(n,1);else{const o={lineNumber:n.startLineNumber,column:n.startColumn};e.setPosition(o),e.revealPositionInCenter(o,1)}return e}findModel(e,t){const i=e.getModel();return i&&i.uri.toString()!==t.toString()?null:i}};iv=GJe([Poe(0,wt),Poe(1,Do)],iv);Ci(zi,iv,0);const pf=Zi("layoutService");var u0e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},m0e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let nv=class{get mainContainer(){var e;return((e=u$(this._codeEditorService.listCodeEditors()))==null?void 0:e.getContainerDomNode())??Qn.document.body}get activeContainer(){const e=this._codeEditorService.getFocusedCodeEditor()??this._codeEditorService.getActiveCodeEditor();return(e==null?void 0:e.getContainerDomNode())??this.mainContainer}get mainContainerDimension(){return N0(this.mainContainer)}get activeContainerDimension(){return N0(this.activeContainer)}get containers(){return Oh(this._codeEditorService.listCodeEditors().map(e=>e.getContainerDomNode()))}getContainer(){return this.activeContainer}whenContainerStylesLoaded(){}focus(){var e;(e=this._codeEditorService.getFocusedCodeEditor())==null||e.focus()}constructor(e){this._codeEditorService=e,this.onDidLayoutMainContainer=ve.None,this.onDidLayoutActiveContainer=ve.None,this.onDidLayoutContainer=ve.None,this.onDidChangeActiveContainer=ve.None,this.onDidAddContainer=ve.None,this.mainContainerOffset={top:0,quickPickTop:0},this.activeContainerOffset={top:0,quickPickTop:0}}};nv=u0e([m0e(0,zi)],nv);let eP=class extends nv{get mainContainer(){return this._container}constructor(e,t){super(t),this._container=e}};eP=u0e([m0e(1,zi)],eP);Ci(pf,nv,1);var pM;(function(s){s[s.Ignore=0]="Ignore",s[s.Info=1]="Info",s[s.Warning=2]="Warning",s[s.Error=3]="Error"})(pM||(pM={}));(function(s){const e="error",t="warning",i="warn",n="info",o="ignore";function l(a){return a?lS(e,a)?s.Error:lS(t,a)||lS(i,a)?s.Warning:lS(n,a)?s.Info:s.Ignore:s.Ignore}s.fromValue=l;function r(a){switch(a){case s.Error:return e;case s.Warning:return t;case s.Info:return n;default:return o}}s.toString=r})(pM||(pM={}));const to=pM,rB=Zi("dialogService");var fY=to;const no=Zi("notificationService");class EJe{}const $$=Zi("undoRedoService");class p0e{constructor(e,t){this.resource=e,this.elements=t}}const $S=class $S{constructor(){this.id=$S._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}};$S._ID=0,$S.None=new $S;let tP=$S;const eW=class eW{constructor(){this.id=eW._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}};eW._ID=0,eW.None=new eW;let tZ=eW;var vJe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Koe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function EL(s){return s.scheme===Xt.file?s.fsPath:s.path}let g0e=0;class vL{constructor(e,t,i,n,o,l,r){this.id=++g0e,this.type=0,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabel=t,this.strResource=i,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=n,this.groupOrder=o,this.sourceId=l,this.sourceOrder=r,this.isValid=!0}setValid(e){this.isValid=e}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.isValid?" VALID":"INVALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class qoe{constructor(e,t){this.resourceLabel=e,this.reason=t}}class $oe{constructor(){this.elements=new Map}createMessage(){const e=[],t=[];for(const[,n]of this.elements)(n.reason===0?e:t).push(n.resourceLabel);const i=[];return e.length>0&&i.push(U({key:"externalRemoval",comment:["{0} is a list of filenames"]},"The following files have been closed and modified on disk: {0}.",e.join(", "))),t.length>0&&i.push(U({key:"noParallelUniverses",comment:["{0} is a list of filenames"]},"The following files have been modified in an incompatible way: {0}.",t.join(", "))),i.join(`
- `)}get size(){return this.elements.size}has(e){return this.elements.has(e)}set(e,t){this.elements.set(e,t)}delete(e){return this.elements.delete(e)}}class xJe{constructor(e,t,i,n,o,l,r){this.id=++g0e,this.type=1,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabels=t,this.strResources=i,this.groupId=n,this.groupOrder=o,this.sourceId=l,this.sourceOrder=r,this.removedResources=null,this.invalidatedResources=null}canSplit(){return typeof this.actual.split=="function"}removeResource(e,t,i){this.removedResources||(this.removedResources=new $oe),this.removedResources.has(t)||this.removedResources.set(t,new qoe(e,i))}setValid(e,t,i){i?this.invalidatedResources&&(this.invalidatedResources.delete(t),this.invalidatedResources.size===0&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new $oe),this.invalidatedResources.has(t)||this.invalidatedResources.set(t,new qoe(e,0)))}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?"INVALID":" VALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class b0e{constructor(e,t){this.resourceLabel=e,this.strResource=t,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const e of this._past)e.type===1&&e.removeResource(this.resourceLabel,this.strResource,0);for(const e of this._future)e.type===1&&e.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const e=[];e.push(`* ${this.strResource}:`);for(let t=0;t<this._past.length;t++)e.push(` * [UNDO] ${this._past[t]}`);for(let t=this._future.length-1;t>=0;t--)e.push(` * [REDO] ${this._future[t]}`);return e.join(`
- `)}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(e,t){e.type===1?e.setValid(this.resourceLabel,this.strResource,t):e.setValid(t)}setElementsValidFlag(e,t){for(const i of this._past)t(i.actual)&&this._setElementValidFlag(i,e);for(const i of this._future)t(i.actual)&&this._setElementValidFlag(i,e)}pushElement(e){for(const t of this._future)t.type===1&&t.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(e),this.versionId++}createSnapshot(e){const t=[];for(let i=0,n=this._past.length;i<n;i++)t.push(this._past[i].id);for(let i=this._future.length-1;i>=0;i--)t.push(this._future[i].id);return new p0e(e,t)}restoreSnapshot(e){const t=e.elements.length;let i=!0,n=0,o=-1;for(let r=0,a=this._past.length;r<a;r++,n++){const d=this._past[r];i&&(n>=t||d.id!==e.elements[n])&&(i=!1,o=0),!i&&d.type===1&&d.removeResource(this.resourceLabel,this.strResource,0)}let l=-1;for(let r=this._future.length-1;r>=0;r--,n++){const a=this._future[r];i&&(n>=t||a.id!==e.elements[n])&&(i=!1,l=r),!i&&a.type===1&&a.removeResource(this.resourceLabel,this.strResource,0)}o!==-1&&(this._past=this._past.slice(0,o)),l!==-1&&(this._future=this._future.slice(l+1)),this.versionId++}getElements(){const e=[],t=[];for(const i of this._past)e.push(i.actual);for(const i of this._future)t.push(i.actual);return{past:e,future:t}}getClosestPastElement(){return this._past.length===0?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return this._future.length===0?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(e,t){for(let i=this._past.length-1;i>=0;i--)if(this._past[i]===e){t.has(this.strResource)?this._past[i]=t.get(this.strResource):this._past.splice(i,1);break}this.versionId++}splitFutureWorkspaceElement(e,t){for(let i=this._future.length-1;i>=0;i--)if(this._future[i]===e){t.has(this.strResource)?this._future[i]=t.get(this.strResource):this._future.splice(i,1);break}this.versionId++}moveBackward(e){this._past.pop(),this._future.push(e),this.versionId++}moveForward(e){this._future.pop(),this._past.push(e),this.versionId++}}class c3{constructor(e){this.editStacks=e,this._versionIds=[];for(let t=0,i=this.editStacks.length;t<i;t++)this._versionIds[t]=this.editStacks[t].versionId}isValid(){for(let e=0,t=this.editStacks.length;e<t;e++)if(this._versionIds[e]!==this.editStacks[e].versionId)return!1;return!0}}const U0e=new b0e("","");U0e.locked=!0;let iP=class{constructor(e,t){this._dialogService=e,this._notificationService=t,this._editStacks=new Map,this._uriComparisonKeyComputers=[]}getUriComparisonKey(e){for(const t of this._uriComparisonKeyComputers)if(t[0]===e.scheme)return t[1].getComparisonKey(e);return e.toString()}_print(e){console.log("------------------------------------"),console.log(`AFTER ${e}: `);const t=[];for(const i of this._editStacks)t.push(i[1].toString());console.log(t.join(`
- `))}pushElement(e,t=tP.None,i=tZ.None){if(e.type===0){const n=EL(e.resource),o=this.getUriComparisonKey(e.resource);this._pushElement(new vL(e,n,o,t.id,t.nextOrder(),i.id,i.nextOrder()))}else{const n=new Set,o=[],l=[];for(const r of e.resources){const a=EL(r),d=this.getUriComparisonKey(r);n.has(d)||(n.add(d),o.push(a),l.push(d))}o.length===1?this._pushElement(new vL(e,o[0],l[0],t.id,t.nextOrder(),i.id,i.nextOrder())):this._pushElement(new xJe(e,o,l,t.id,t.nextOrder(),i.id,i.nextOrder()))}}_pushElement(e){for(let t=0,i=e.strResources.length;t<i;t++){const n=e.resourceLabels[t],o=e.strResources[t];let l;this._editStacks.has(o)?l=this._editStacks.get(o):(l=new b0e(n,o),this._editStacks.set(o,l)),l.pushElement(e)}}getLastElement(e){const t=this.getUriComparisonKey(e);if(this._editStacks.has(t)){const i=this._editStacks.get(t);if(i.hasFutureElements())return null;const n=i.getClosestPastElement();return n?n.actual:null}return null}_splitPastWorkspaceElement(e,t){const i=e.actual.split(),n=new Map;for(const o of i){const l=EL(o.resource),r=this.getUriComparisonKey(o.resource),a=new vL(o,l,r,0,0,0,0);n.set(a.strResource,a)}for(const o of e.strResources){if(t&&t.has(o))continue;this._editStacks.get(o).splitPastWorkspaceElement(e,n)}}_splitFutureWorkspaceElement(e,t){const i=e.actual.split(),n=new Map;for(const o of i){const l=EL(o.resource),r=this.getUriComparisonKey(o.resource),a=new vL(o,l,r,0,0,0,0);n.set(a.strResource,a)}for(const o of e.strResources){if(t&&t.has(o))continue;this._editStacks.get(o).splitFutureWorkspaceElement(e,n)}}removeElements(e){const t=typeof e=="string"?e:this.getUriComparisonKey(e);this._editStacks.has(t)&&(this._editStacks.get(t).dispose(),this._editStacks.delete(t))}setElementsValidFlag(e,t,i){const n=this.getUriComparisonKey(e);this._editStacks.has(n)&&this._editStacks.get(n).setElementsValidFlag(t,i)}createSnapshot(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).createSnapshot(e):new p0e(e,[])}restoreSnapshot(e){const t=this.getUriComparisonKey(e.resource);if(this._editStacks.has(t)){const i=this._editStacks.get(t);i.restoreSnapshot(e),!i.hasPastElements()&&!i.hasFutureElements()&&(i.dispose(),this._editStacks.delete(t))}}getElements(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).getElements():{past:[],future:[]}}_findClosestUndoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const l=o.getClosestPastElement();l&&l.sourceId===e&&(!t||l.sourceOrder>t.sourceOrder)&&(t=l,i=n)}return[t,i]}canUndo(e){if(e instanceof tZ){const[,i]=this._findClosestUndoElementWithSource(e.id);return!!i}const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).hasPastElements():!1}_onError(e,t){vt(e);for(const i of t.strResources)this.removeElements(i);this._notificationService.error(e)}_acquireLocks(e){for(const t of e.editStacks)if(t.locked)throw new Error("Cannot acquire edit stack lock");for(const t of e.editStacks)t.locked=!0;return()=>{for(const t of e.editStacks)t.locked=!1}}_safeInvokeWithLocks(e,t,i,n,o){const l=this._acquireLocks(i);let r;try{r=t()}catch(a){return l(),n.dispose(),this._onError(a,e)}return r?r.then(()=>(l(),n.dispose(),o()),a=>(l(),n.dispose(),this._onError(a,e))):(l(),n.dispose(),o())}async _invokeWorkspacePrepare(e){if(typeof e.actual.prepareUndoRedo>"u")return de.None;const t=e.actual.prepareUndoRedo();return typeof t>"u"?de.None:t}_invokeResourcePrepare(e,t){if(e.actual.type!==1||typeof e.actual.prepareUndoRedo>"u")return t(de.None);const i=e.actual.prepareUndoRedo();return i?H5(i)?t(i):i.then(n=>t(n)):t(de.None)}_getAffectedEditStacks(e){const t=[];for(const i of e.strResources)t.push(this._editStacks.get(i)||U0e);return new c3(t)}_tryToSplitAndUndo(e,t,i,n){if(t.canSplit())return this._splitPastWorkspaceElement(t,i),this._notificationService.warn(n),new xL(this._undo(e,0,!0));for(const o of t.strResources)this.removeElements(o);return this._notificationService.warn(n),new xL}_checkWorkspaceUndo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndUndo(e,t,t.removedResources,U({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndUndo(e,t,t.invalidatedResources,U({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const o=[];for(const r of i.editStacks)r.getClosestPastElement()!==t&&o.push(r.resourceLabel);if(o.length>0)return this._tryToSplitAndUndo(e,t,null,U({key:"cannotWorkspaceUndoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));const l=[];for(const r of i.editStacks)r.locked&&l.push(r.resourceLabel);return l.length>0?this._tryToSplitAndUndo(e,t,null,U({key:"cannotWorkspaceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,l.join(", "))):i.isValid()?null:this._tryToSplitAndUndo(e,t,null,U({key:"cannotWorkspaceUndoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceUndo(e,t,i){const n=this._getAffectedEditStacks(t),o=this._checkWorkspaceUndo(e,t,n,!1);return o?o.returnValue:this._confirmAndExecuteWorkspaceUndo(e,t,n,i)}_isPartOfUndoGroup(e){if(!e.groupId)return!1;for(const[,t]of this._editStacks){const i=t.getClosestPastElement();if(i){if(i===e){const n=t.getSecondClosestPastElement();if(n&&n.groupId===e.groupId)return!0}if(i.groupId===e.groupId)return!0}}return!1}async _confirmAndExecuteWorkspaceUndo(e,t,i,n){if(t.canSplit()&&!this._isPartOfUndoGroup(t)){let r;(function(c){c[c.All=0]="All",c[c.This=1]="This",c[c.Cancel=2]="Cancel"})(r||(r={}));const{result:a}=await this._dialogService.prompt({type:to.Info,message:U("confirmWorkspace","Would you like to undo '{0}' across all files?",t.label),buttons:[{label:U({key:"ok",comment:["{0} denotes a number that is > 1, && denotes a mnemonic"]},"&&Undo in {0} Files",i.editStacks.length),run:()=>r.All},{label:U({key:"nok",comment:["&& denotes a mnemonic"]},"Undo this &&File"),run:()=>r.This}],cancelButton:{run:()=>r.Cancel}});if(a===r.Cancel)return;if(a===r.This)return this._splitPastWorkspaceElement(t,null),this._undo(e,0,!0);const d=this._checkWorkspaceUndo(e,t,i,!1);if(d)return d.returnValue;n=!0}let o;try{o=await this._invokeWorkspacePrepare(t)}catch(r){return this._onError(r,t)}const l=this._checkWorkspaceUndo(e,t,i,!0);if(l)return o.dispose(),l.returnValue;for(const r of i.editStacks)r.moveBackward(t);return this._safeInvokeWithLocks(t,()=>t.actual.undo(),i,o,()=>this._continueUndoInGroup(t.groupId,n))}_resourceUndo(e,t,i){if(!t.isValid){e.flushAllElements();return}if(e.locked){const n=U({key:"cannotResourceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not undo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(n);return}return this._invokeResourcePrepare(t,n=>(e.moveBackward(t),this._safeInvokeWithLocks(t,()=>t.actual.undo(),new c3([e]),n,()=>this._continueUndoInGroup(t.groupId,i))))}_findClosestUndoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const l=o.getClosestPastElement();l&&l.groupId===e&&(!t||l.groupOrder>t.groupOrder)&&(t=l,i=n)}return[t,i]}_continueUndoInGroup(e,t){if(!e)return;const[,i]=this._findClosestUndoElementInGroup(e);if(i)return this._undo(i,0,t)}undo(e){if(e instanceof tZ){const[,t]=this._findClosestUndoElementWithSource(e.id);return t?this._undo(t,e.id,!1):void 0}return typeof e=="string"?this._undo(e,0,!1):this._undo(this.getUriComparisonKey(e),0,!1)}_undo(e,t=0,i){if(!this._editStacks.has(e))return;const n=this._editStacks.get(e),o=n.getClosestPastElement();if(!o)return;if(o.groupId){const[r,a]=this._findClosestUndoElementInGroup(o.groupId);if(o!==r&&a)return this._undo(a,t,i)}if((o.sourceId!==t||o.confirmBeforeUndo)&&!i)return this._confirmAndContinueUndo(e,t,o);try{return o.type===1?this._workspaceUndo(e,o,i):this._resourceUndo(n,o,i)}finally{}}async _confirmAndContinueUndo(e,t,i){if((await this._dialogService.confirm({message:U("confirmDifferentSource","Would you like to undo '{0}'?",i.label),primaryButton:U({key:"confirmDifferentSource.yes",comment:["&& denotes a mnemonic"]},"&&Yes"),cancelButton:U("confirmDifferentSource.no","No")})).confirmed)return this._undo(e,t,!0)}_findClosestRedoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const l=o.getClosestFutureElement();l&&l.sourceId===e&&(!t||l.sourceOrder<t.sourceOrder)&&(t=l,i=n)}return[t,i]}canRedo(e){if(e instanceof tZ){const[,i]=this._findClosestRedoElementWithSource(e.id);return!!i}const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).hasFutureElements():!1}_tryToSplitAndRedo(e,t,i,n){if(t.canSplit())return this._splitFutureWorkspaceElement(t,i),this._notificationService.warn(n),new xL(this._redo(e));for(const o of t.strResources)this.removeElements(o);return this._notificationService.warn(n),new xL}_checkWorkspaceRedo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndRedo(e,t,t.removedResources,U({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndRedo(e,t,t.invalidatedResources,U({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const o=[];for(const r of i.editStacks)r.getClosestFutureElement()!==t&&o.push(r.resourceLabel);if(o.length>0)return this._tryToSplitAndRedo(e,t,null,U({key:"cannotWorkspaceRedoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because changes were made to {1}",t.label,o.join(", ")));const l=[];for(const r of i.editStacks)r.locked&&l.push(r.resourceLabel);return l.length>0?this._tryToSplitAndRedo(e,t,null,U({key:"cannotWorkspaceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,l.join(", "))):i.isValid()?null:this._tryToSplitAndRedo(e,t,null,U({key:"cannotWorkspaceRedoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceRedo(e,t){const i=this._getAffectedEditStacks(t),n=this._checkWorkspaceRedo(e,t,i,!1);return n?n.returnValue:this._executeWorkspaceRedo(e,t,i)}async _executeWorkspaceRedo(e,t,i){let n;try{n=await this._invokeWorkspacePrepare(t)}catch(l){return this._onError(l,t)}const o=this._checkWorkspaceRedo(e,t,i,!0);if(o)return n.dispose(),o.returnValue;for(const l of i.editStacks)l.moveForward(t);return this._safeInvokeWithLocks(t,()=>t.actual.redo(),i,n,()=>this._continueRedoInGroup(t.groupId))}_resourceRedo(e,t){if(!t.isValid){e.flushAllElements();return}if(e.locked){const i=U({key:"cannotResourceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not redo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(i);return}return this._invokeResourcePrepare(t,i=>(e.moveForward(t),this._safeInvokeWithLocks(t,()=>t.actual.redo(),new c3([e]),i,()=>this._continueRedoInGroup(t.groupId))))}_findClosestRedoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[n,o]of this._editStacks){const l=o.getClosestFutureElement();l&&l.groupId===e&&(!t||l.groupOrder<t.groupOrder)&&(t=l,i=n)}return[t,i]}_continueRedoInGroup(e){if(!e)return;const[,t]=this._findClosestRedoElementInGroup(e);if(t)return this._redo(t)}redo(e){if(e instanceof tZ){const[,t]=this._findClosestRedoElementWithSource(e.id);return t?this._redo(t):void 0}return typeof e=="string"?this._redo(e):this._redo(this.getUriComparisonKey(e))}_redo(e){if(!this._editStacks.has(e))return;const t=this._editStacks.get(e),i=t.getClosestFutureElement();if(i){if(i.groupId){const[n,o]=this._findClosestRedoElementInGroup(i.groupId);if(i!==n&&o)return this._redo(o)}try{return i.type===1?this._workspaceRedo(e,i):this._resourceRedo(t,i)}finally{}}}};iP=vJe([Koe(0,rB),Koe(1,no)],iP);class xL{constructor(e){this.returnValue=e}}Ci($$,iP,1);function zr(s,e,t){return Math.min(Math.max(s,e),t)}class f0e{constructor(){this._n=1,this._val=0}update(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}class JJe{constructor(e){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(e),this._values.fill(0,0,e)}update(e){const t=this._values[this._index];return this._values[this._index]=e,this._index=(this._index+1)%this._values.length,this._sum-=t,this._sum+=e,this._n<this._values.length&&(this._n+=1),this._val=this._sum/this._n,this._val}get value(){return this._val}}const eee=Zi("environmentService");var XJe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ele=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const gc=Zi("ILanguageFeatureDebounceService");var sv;(function(s){const e=new WeakMap;let t=0;function i(n){let o=e.get(n);return o===void 0&&(o=++t,e.set(n,o)),o}s.of=i})(sv||(sv={}));class YJe{constructor(e){this._default=e}get(e){return this._default}update(e,t){return this._default}default(){return this._default}}class zJe{constructor(e,t,i,n,o,l){this._logService=e,this._name=t,this._registry=i,this._default=n,this._min=o,this._max=l,this._cache=new Ip(50,.7)}_key(e){return e.id+this._registry.all(e).reduce((t,i)=>eY(sv.of(i),t),0)}get(e){const t=this._key(e),i=this._cache.get(t);return i?zr(i.value,this._min,this._max):this.default()}update(e,t){const i=this._key(e);let n=this._cache.get(i);n||(n=new JJe(6),this._cache.set(i,n));const o=zr(n.update(t),this._min,this._max);return K5(e.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${e.uri.toString()} is ${o}ms`),o}_overall(){const e=new f0e;for(const[,t]of this._cache)e.update(t.value);return e.value}default(){const e=this._overall()|0||this._default;return zr(e,this._min,this._max)}}let nP=class{constructor(e,t){this._logService=e,this._data=new Map,this._isDev=t.isExtensionDevelopment||!t.isBuilt}for(e,t,i){const n=(i==null?void 0:i.min)??50,o=(i==null?void 0:i.max)??n**2,l=(i==null?void 0:i.key)??void 0,r=`${sv.of(e)},${n}${l?","+l:""}`;let a=this._data.get(r);return a||(this._isDev?(this._logService.debug(`[DEBOUNCE: ${t}] is disabled in developed mode`),a=new YJe(n*1.5)):a=new zJe(this._logService,t,e,this._overallAverage()|0||n*1.5,n,o),this._data.set(r,a)),a}_overallAverage(){const e=new f0e;for(const t of this._data.values())e.update(t.default());return e.value}};nP=XJe([ele(0,El),ele(1,eee)],nP);Ci(gc,nP,1);class Ta{static getLanguageId(e){return(e&255)>>>0}static getTokenType(e){return(e&768)>>>8}static containsBalancedBrackets(e){return(e&1024)!==0}static getFontStyle(e){return(e&30720)>>>11}static getForeground(e){return(e&16744448)>>>15}static getBackground(e){return(e&4278190080)>>>24}static getClassNameFromMetadata(e){let i="mtk"+this.getForeground(e);const n=this.getFontStyle(e);return n&1&&(i+=" mtki"),n&2&&(i+=" mtkb"),n&4&&(i+=" mtku"),n&8&&(i+=" mtks"),i}static getInlineStyleFromMetadata(e,t){const i=this.getForeground(e),n=this.getFontStyle(e);let o=`color: ${t[i]};`;n&1&&(o+="font-style: italic;"),n&2&&(o+="font-weight: bold;");let l="";return n&4&&(l+=" underline"),n&8&&(l+=" line-through"),l&&(o+=`text-decoration:${l};`),o}static getPresentationFromMetadata(e){const t=this.getForeground(e),i=this.getFontStyle(e);return{foreground:t,italic:!!(i&1),bold:!!(i&2),underline:!!(i&4),strikethrough:!!(i&8)}}}function KU(s){let e=0,t=0,i=0,n=0;for(let o=0,l=s.length;o<l;o++){const r=s.charCodeAt(o);r===13?(e===0&&(t=o),e++,o+1<l&&s.charCodeAt(o+1)===10?(n|=2,o++):n|=3,i=o+1):r===10&&(n|=1,e===0&&(t=o),e++,i=o+1)}return e===0&&(t=s.length),[e,t,s.length-i,n]}class uC{static create(e,t){return new uC(e,new ov(t))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(e,t){this._startLineNumber=e,this._tokens=t,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(e){return this._startLineNumber<=e&&e<=this._endLineNumber?this._tokens.getLineTokens(e-this._startLineNumber):null}getRange(){const e=this._tokens.getRange();return e&&new v(this._startLineNumber+e.startLineNumber,e.startColumn,this._startLineNumber+e.endLineNumber,e.endColumn)}removeTokens(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(t,e.startColumn-1,i,e.endColumn-1),this._updateEndLineNumber()}split(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber,[n,o,l]=this._tokens.split(t,e.startColumn-1,i,e.endColumn-1);return[new uC(this._startLineNumber,n),new uC(this._startLineNumber+l,o)]}applyEdit(e,t){const[i,n,o]=KU(t);this.acceptEdit(e,i,n,o,t.length>0?t.charCodeAt(0):0)}acceptEdit(e,t,i,n,o){this._acceptDeleteRange(e),this._acceptInsertText(new oe(e.startLineNumber,e.startColumn),t,i,n,o),this._updateEndLineNumber()}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return;const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;if(i<0){const o=i-t;this._startLineNumber-=o;return}const n=this._tokens.getMaxDeltaLine();if(!(t>=n+1)){if(t<0&&i>=n+1){this._startLineNumber=0,this._tokens.clear();return}if(t<0){const o=-t;this._startLineNumber-=o,this._tokens.acceptDeleteRange(e.startColumn-1,0,0,i,e.endColumn-1)}else this._tokens.acceptDeleteRange(0,t,e.startColumn-1,i,e.endColumn-1)}}_acceptInsertText(e,t,i,n,o){if(t===0&&i===0)return;const l=e.lineNumber-this._startLineNumber;if(l<0){this._startLineNumber+=t;return}const r=this._tokens.getMaxDeltaLine();l>=r+1||this._tokens.acceptInsertText(l,e.column-1,t,i,n,o)}}class ov{constructor(e){this._tokens=e,this._tokenCount=e.length/4}toString(e){const t=[];for(let i=0;i<this._tokenCount;i++)t.push(`(${this._getDeltaLine(i)+e},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);return`[${t.join(",")}]`}getMaxDeltaLine(){const e=this._getTokenCount();return e===0?-1:this._getDeltaLine(e-1)}getRange(){const e=this._getTokenCount();if(e===0)return null;const t=this._getStartCharacter(0),i=this._getDeltaLine(e-1),n=this._getEndCharacter(e-1);return new v(0,t+1,i,n+1)}_getTokenCount(){return this._tokenCount}_getDeltaLine(e){return this._tokens[4*e]}_getStartCharacter(e){return this._tokens[4*e+1]}_getEndCharacter(e){return this._tokens[4*e+2]}isEmpty(){return this._getTokenCount()===0}getLineTokens(e){let t=0,i=this._getTokenCount()-1;for(;t<i;){const n=t+Math.floor((i-t)/2),o=this._getDeltaLine(n);if(o<e)t=n+1;else if(o>e)i=n-1;else{let l=n;for(;l>t&&this._getDeltaLine(l-1)===e;)l--;let r=n;for(;r<i&&this._getDeltaLine(r+1)===e;)r++;return new tle(this._tokens.subarray(4*l,4*r+4))}}return this._getDeltaLine(t)===e?new tle(this._tokens.subarray(4*t,4*t+4)):null}clear(){this._tokenCount=0}removeTokens(e,t,i,n){const o=this._tokens,l=this._tokenCount;let r=0,a=!1,d=0;for(let c=0;c<l;c++){const h=4*c,u=o[h],m=o[h+1],p=o[h+2],g=o[h+3];if((u>e||u===e&&p>=t)&&(u<i||u===i&&m<=n))a=!0;else{if(r===0&&(d=u),a){const b=4*r;o[b]=u-d,o[b+1]=m,o[b+2]=p,o[b+3]=g}r++}}return this._tokenCount=r,d}split(e,t,i,n){const o=this._tokens,l=this._tokenCount,r=[],a=[];let d=r,c=0,h=0;for(let u=0;u<l;u++){const m=4*u,p=o[m],g=o[m+1],b=o[m+2],f=o[m+3];if(p>e||p===e&&b>=t){if(p<i||p===i&&g<=n)continue;d!==a&&(d=a,c=0,h=p)}d[c++]=p-h,d[c++]=g,d[c++]=b,d[c++]=f}return[new ov(new Uint32Array(r)),new ov(new Uint32Array(a)),h]}acceptDeleteRange(e,t,i,n,o){const l=this._tokens,r=this._tokenCount,a=n-t;let d=0,c=!1;for(let h=0;h<r;h++){const u=4*h;let m=l[u],p=l[u+1],g=l[u+2];const b=l[u+3];if(m<t||m===t&&g<=i){d++;continue}else if(m===t&&p<i)m===n&&g>o?g-=o-i:g=i;else if(m===t&&p===i)if(m===n&&g>o)g-=o-i;else{c=!0;continue}else if(m<n||m===n&&p<o)if(m===n&&g>o)m=t,p=i,g=p+(g-o);else{c=!0;continue}else if(m>n){if(a===0&&!c){d=r;break}m-=a}else if(m===n&&p>=o)e&&m===0&&(p+=e,g+=e),m-=a,p-=o-i,g-=o-i;else throw new Error("Not possible!");const f=4*d;l[f]=m,l[f+1]=p,l[f+2]=g,l[f+3]=b,d++}this._tokenCount=d}acceptInsertText(e,t,i,n,o,l){const r=i===0&&n===1&&(l>=48&&l<=57||l>=65&&l<=90||l>=97&&l<=122),a=this._tokens,d=this._tokenCount;for(let c=0;c<d;c++){const h=4*c;let u=a[h],m=a[h+1],p=a[h+2];if(!(u<e||u===e&&p<t)){if(u===e&&p===t)if(r)p+=1;else continue;else if(u===e&&m<t&&t<p)i===0?p+=n:p=t;else{if(u===e&&m===t&&r)continue;if(u===e)if(u+=i,i===0)m+=n,p+=n;else{const g=p-m;m=o+(m-t),p=m+g}else u+=i}a[h]=u,a[h+1]=m,a[h+2]=p}}}}class tle{constructor(e){this._tokens=e}getCount(){return this._tokens.length/4}getStartCharacter(e){return this._tokens[4*e+1]}getEndCharacter(e){return this._tokens[4*e+2]}getMetadata(e){return this._tokens[4*e+3]}}var _Je=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},h3=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let sP=class{constructor(e,t,i,n){this._legend=e,this._themeService=t,this._languageService=i,this._logService=n,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new oP}getMetadata(e,t,i){const n=this._languageService.languageIdCodec.encodeLanguageId(i),o=this._hashTable.get(e,t,n);let l;if(o)l=o.metadata;else{let r=this._legend.tokenTypes[e];const a=[];if(r){let d=t;for(let h=0;d>0&&h<this._legend.tokenModifiers.length;h++)d&1&&a.push(this._legend.tokenModifiers[h]),d=d>>1;const c=this._themeService.getColorTheme().getTokenStyleMetadata(r,a,i);if(typeof c>"u")l=2147483647;else{if(l=0,typeof c.italic<"u"){const h=(c.italic?1:0)<<11;l|=h|1}if(typeof c.bold<"u"){const h=(c.bold?2:0)<<11;l|=h|2}if(typeof c.underline<"u"){const h=(c.underline?4:0)<<11;l|=h|4}if(typeof c.strikethrough<"u"){const h=(c.strikethrough?8:0)<<11;l|=h|8}if(c.foreground){const h=c.foreground<<15;l|=h|16}l===0&&(l=2147483647)}}else l=2147483647,r="not-in-legend";this._hashTable.add(e,t,n,l)}return l}warnOverlappingSemanticTokens(e,t){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,this._logService.warn(`Overlapping semantic tokens detected at lineNumber ${e}, column ${t}`))}warnInvalidLengthSemanticTokens(e,t){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,this._logService.warn(`Semantic token with invalid length detected at lineNumber ${e}, column ${t}`))}warnInvalidEditStart(e,t,i,n,o){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,this._logService.warn(`Invalid semantic tokens edit detected (previousResultId: ${e}, resultId: ${t}) at edit #${i}: The provided start offset ${n} is outside the previous data (length ${o}).`))}};sP=_Je([h3(1,Do),h3(2,Zs),h3(3,El)],sP);function F0e(s,e,t){const i=s.data,n=s.data.length/5|0,o=Math.max(Math.ceil(n/1024),400),l=[];let r=0,a=1,d=0;for(;r<n;){const c=r;let h=Math.min(c+o,n);if(h<n){let Z=h;for(;Z-1>c&&i[5*Z]===0;)Z--;if(Z-1===c){let A=h;for(;A+1<n&&i[5*A]===0;)A++;h=A}else h=Z}let u=new Uint32Array((h-c)*4),m=0,p=0,g=0,b=0;for(;r<h;){const Z=5*r,A=i[Z],N=i[Z+1],W=a+A|0,Q=A===0?d+N|0:N,R=i[Z+2],M=Q+R|0,w=i[Z+3],Y=i[Z+4];if(M<=Q)e.warnInvalidLengthSemanticTokens(W,Q+1);else if(g===W&&b>Q)e.warnOverlappingSemanticTokens(W,Q+1);else{const G=e.getMetadata(w,Y,t);G!==2147483647&&(p===0&&(p=W),u[m]=W-p,u[m+1]=Q,u[m+2]=M,u[m+3]=G,m+=4,g=W,b=M)}a=W,d=Q,r++}m!==u.length&&(u=u.subarray(0,m));const f=uC.create(p,u);l.push(f)}return l}class OJe{constructor(e,t,i,n){this.tokenTypeIndex=e,this.tokenModifierSet=t,this.languageId=i,this.metadata=n,this.next=null}}const Qg=class Qg{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=Qg._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<Qg._SIZES.length?2/3*this._currentLength:0),this._elements=[],Qg._nullOutEntries(this._elements,this._currentLength)}static _nullOutEntries(e,t){for(let i=0;i<t;i++)e[i]=null}_hash2(e,t){return(e<<5)-e+t|0}_hashFunc(e,t,i){return this._hash2(this._hash2(e,t),i)%this._currentLength}get(e,t,i){const n=this._hashFunc(e,t,i);let o=this._elements[n];for(;o;){if(o.tokenTypeIndex===e&&o.tokenModifierSet===t&&o.languageId===i)return o;o=o.next}return null}add(e,t,i,n){if(this._elementsCount++,this._growCount!==0&&this._elementsCount>=this._growCount){const o=this._elements;this._currentLengthIndex++,this._currentLength=Qg._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<Qg._SIZES.length?2/3*this._currentLength:0),this._elements=[],Qg._nullOutEntries(this._elements,this._currentLength);for(const l of o){let r=l;for(;r;){const a=r.next;r.next=null,this._add(r),r=a}}}this._add(new OJe(e,t,i,n))}_add(e){const t=this._hashFunc(e.tokenTypeIndex,e.tokenModifierSet,e.languageId);e.next=this._elements[t],this._elements[t]=e}};Qg._SIZES=[3,7,13,31,61,127,251,509,1021,2039,4093,8191,16381,32749,65521,131071,262139,524287,1048573,2097143];let oP=Qg;const FY=Zi("semanticTokensStylingService");var jJe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},u3=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let lP=class extends de{constructor(e,t,i){super(),this._themeService=e,this._logService=t,this._languageService=i,this._caches=new WeakMap,this._register(this._themeService.onDidColorThemeChange(()=>{this._caches=new WeakMap}))}getStyling(e){return this._caches.has(e)||this._caches.set(e,new sP(e.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(e)}};lP=jJe([u3(0,Do),u3(1,El),u3(2,Zs)],lP);Ci(FY,lP,1);function _0(s){return s===47||s===92}function Z0e(s){return s.replace(/[\\/]/g,co.sep)}function HJe(s){return s.indexOf("/")===-1&&(s=Z0e(s)),/^[a-zA-Z]:(\/|$)/.test(s)&&(s="/"+s),s}function ile(s,e=co.sep){if(!s)return"";const t=s.length,i=s.charCodeAt(0);if(_0(i)){if(_0(s.charCodeAt(1))&&!_0(s.charCodeAt(2))){let o=3;const l=o;for(;o<t&&!_0(s.charCodeAt(o));o++);if(l!==o&&!_0(s.charCodeAt(o+1))){for(o+=1;o<t;o++)if(_0(s.charCodeAt(o)))return s.slice(0,o+1).replace(/[\\/]/g,e)}}return e}else if(A0e(i)&&s.charCodeAt(1)===58)return _0(s.charCodeAt(2))?s.slice(0,2)+e:s.slice(0,2);let n=s.indexOf("://");if(n!==-1){for(n+=3;n<t;n++)if(_0(s.charCodeAt(n)))return s.slice(0,n+1)}return""}function rP(s,e,t,i=xu){if(s===e)return!0;if(!s||!e||e.length>s.length)return!1;if(t){if(!V$(s,e))return!1;if(e.length===s.length)return!0;let o=e.length;return e.charAt(e.length-1)===i&&o--,s.charAt(o)===i}return e.charAt(e.length-1)!==i&&(e+=i),s.indexOf(e)===0}function A0e(s){return s>=65&&s<=90||s>=97&&s<=122}function PJe(s,e=Gl){return e?A0e(s.charCodeAt(0))&&s.charCodeAt(1)===58:!1}const JL="**",nle="/",nD="[/\\\\]",sD="[^/\\\\]",KJe=/\//g;function sle(s,e){switch(s){case 0:return"";case 1:return`${sD}*?`;default:return`(?:${nD}|${sD}+${nD}${e?`|${nD}${sD}+`:""})*?`}}function ole(s,e){if(!s)return[];const t=[];let i=!1,n=!1,o="";for(const l of s){switch(l){case e:if(!i&&!n){t.push(o),o="";continue}break;case"{":i=!0;break;case"}":i=!1;break;case"[":n=!0;break;case"]":n=!1;break}o+=l}return o&&t.push(o),t}function N0e(s){if(!s)return"";let e="";const t=ole(s,nle);if(t.every(i=>i===JL))e=".*";else{let i=!1;t.forEach((n,o)=>{if(n===JL){if(i)return;e+=sle(2,o===t.length-1)}else{let l=!1,r="",a=!1,d="";for(const c of n){if(c!=="}"&&l){r+=c;continue}if(a&&(c!=="]"||!d)){let h;c==="-"?h=c:(c==="^"||c==="!")&&!d?h="^":c===nle?h="":h=dc(c),d+=h;continue}switch(c){case"{":l=!0;continue;case"[":a=!0;continue;case"}":{const u=`(?:${ole(r,",").map(m=>N0e(m)).join("|")})`;e+=u,l=!1,r="";break}case"]":{e+="["+d+"]",a=!1,d="";break}case"?":e+=sD;continue;case"*":e+=sle(1);continue;default:e+=dc(c)}}o<t.length-1&&(t[o+1]!==JL||o+2<t.length)&&(e+=nD)}i=n===JL})}return e}const qJe=/^\*\*\/\*\.[\w\.-]+$/,$Je=/^\*\*\/([\w\.-]+)\/?$/,eXe=/^{\*\*\/\*?[\w\.-]+\/?(,\*\*\/\*?[\w\.-]+\/?)*}$/,tXe=/^{\*\*\/\*?[\w\.-]+(\/(\*\*)?)?(,\*\*\/\*?[\w\.-]+(\/(\*\*)?)?)*}$/,iXe=/^\*\*((\/[\w\.-]+)+)\/?$/,nXe=/^([\w\.-]+(\/[\w\.-]+)*)\/?$/,lle=new Ip(1e4),rle=function(){return!1},Zp=function(){return null};function tee(s,e){if(!s)return Zp;let t;typeof s!="string"?t=s.pattern:t=s,t=t.trim();const i=`${t}_${!!e.trimForExclusions}`;let n=lle.get(i);if(n)return ale(n,s);let o;return qJe.test(t)?n=sXe(t.substr(4),t):(o=$Je.exec(m3(t,e)))?n=oXe(o[1],t):(e.trimForExclusions?tXe:eXe).test(t)?n=lXe(t,e):(o=iXe.exec(m3(t,e)))?n=dle(o[1].substr(1),t,!0):(o=nXe.exec(m3(t,e)))?n=dle(o[1],t,!1):n=rXe(t),lle.set(i,n),ale(n,s)}function ale(s,e){if(typeof e=="string")return s;const t=function(i,n){return rP(i,e.base,!sa)?s(eB(i.substr(e.base.length),xu),n):null};return t.allBasenames=s.allBasenames,t.allPaths=s.allPaths,t.basenames=s.basenames,t.patterns=s.patterns,t}function m3(s,e){return e.trimForExclusions&&s.endsWith("/**")?s.substr(0,s.length-2):s}function sXe(s,e){return function(t,i){return typeof t=="string"&&t.endsWith(s)?e:null}}function oXe(s,e){const t=`/${s}`,i=`\\${s}`,n=function(l,r){return typeof l!="string"?null:r?r===s?e:null:l===s||l.endsWith(t)||l.endsWith(i)?e:null},o=[s];return n.basenames=o,n.patterns=[e],n.allBasenames=o,n}function lXe(s,e){const t=S0e(s.slice(1,-1).split(",").map(r=>tee(r,e)).filter(r=>r!==Zp),s),i=t.length;if(!i)return Zp;if(i===1)return t[0];const n=function(r,a){for(let d=0,c=t.length;d<c;d++)if(t[d](r,a))return s;return null},o=t.find(r=>!!r.allBasenames);o&&(n.allBasenames=o.allBasenames);const l=t.reduce((r,a)=>a.allPaths?r.concat(a.allPaths):r,[]);return l.length&&(n.allPaths=l),n}function dle(s,e,t){const i=xu===co.sep,n=i?s:s.replace(KJe,xu),o=xu+n,l=co.sep+s;let r;return t?r=function(a,d){return typeof a=="string"&&(a===n||a.endsWith(o)||!i&&(a===s||a.endsWith(l)))?e:null}:r=function(a,d){return typeof a=="string"&&(a===n||!i&&a===s)?e:null},r.allPaths=[(t?"*/":"./")+s],r}function rXe(s){try{const e=new RegExp(`^${N0e(s)}$`);return function(t){return e.lastIndex=0,typeof t=="string"&&e.test(t)?s:null}}catch{return Zp}}function aXe(s,e,t){return!s||typeof e!="string"?!1:R0e(s)(e,void 0,t)}function R0e(s,e={}){if(!s)return rle;if(typeof s=="string"||dXe(s)){const t=tee(s,e);if(t===Zp)return rle;const i=function(n,o){return!!t(n,o)};return t.allBasenames&&(i.allBasenames=t.allBasenames),t.allPaths&&(i.allPaths=t.allPaths),i}return cXe(s,e)}function dXe(s){const e=s;return e?typeof e.base=="string"&&typeof e.pattern=="string":!1}function cXe(s,e){const t=S0e(Object.getOwnPropertyNames(s).map(r=>hXe(r,s[r],e)).filter(r=>r!==Zp)),i=t.length;if(!i)return Zp;if(!t.some(r=>!!r.requiresSiblings)){if(i===1)return t[0];const r=function(c,h){let u;for(let m=0,p=t.length;m<p;m++){const g=t[m](c,h);if(typeof g=="string")return g;RH(g)&&(u||(u=[]),u.push(g))}return u?(async()=>{for(const m of u){const p=await m;if(typeof p=="string")return p}return null})():null},a=t.find(c=>!!c.allBasenames);a&&(r.allBasenames=a.allBasenames);const d=t.reduce((c,h)=>h.allPaths?c.concat(h.allPaths):c,[]);return d.length&&(r.allPaths=d),r}const n=function(r,a,d){let c,h;for(let u=0,m=t.length;u<m;u++){const p=t[u];p.requiresSiblings&&d&&(a||(a=kU(r)),c||(c=a.substr(0,a.length-jDe(r).length)));const g=p(r,a,c,d);if(typeof g=="string")return g;RH(g)&&(h||(h=[]),h.push(g))}return h?(async()=>{for(const u of h){const m=await u;if(typeof m=="string")return m}return null})():null},o=t.find(r=>!!r.allBasenames);o&&(n.allBasenames=o.allBasenames);const l=t.reduce((r,a)=>a.allPaths?r.concat(a.allPaths):r,[]);return l.length&&(n.allPaths=l),n}function hXe(s,e,t){if(e===!1)return Zp;const i=tee(s,t);if(i===Zp)return Zp;if(typeof e=="boolean")return i;if(e){const n=e.when;if(typeof n=="string"){const o=(l,r,a,d)=>{if(!d||!i(l,r))return null;const c=n.replace("$(basename)",()=>a),h=d(c);return RH(h)?h.then(u=>u?s:null):h?s:null};return o.requiresSiblings=!0,o}}return i}function S0e(s,e){const t=s.filter(r=>!!r.basenames);if(t.length<2)return s;const i=t.reduce((r,a)=>{const d=a.basenames;return d?r.concat(d):r},[]);let n;if(e){n=[];for(let r=0,a=i.length;r<a;r++)n.push(e)}else n=t.reduce((r,a)=>{const d=a.patterns;return d?r.concat(d):r},[]);const o=function(r,a){if(typeof r!="string")return null;if(!a){let c;for(c=r.length;c>0;c--){const h=r.charCodeAt(c-1);if(h===47||h===92)break}a=r.substr(c)}const d=i.indexOf(a);return d!==-1?n[d]:null};o.basenames=i,o.patterns=n,o.allBasenames=i;const l=s.filter(r=>!r.basenames);return l.push(o),l}function iee(s,e,t,i,n,o){if(Array.isArray(s)){let l=0;for(const r of s){const a=iee(r,e,t,i,n,o);if(a===10)return a;a>l&&(l=a)}return l}else{if(typeof s=="string")return i?s==="*"?5:s===t?10:0:0;if(s){const{language:l,pattern:r,scheme:a,hasAccessToAllModels:d,notebookType:c}=s;if(!i&&!d)return 0;c&&n&&(e=n);let h=0;if(a)if(a===e.scheme)h=10;else if(a==="*")h=5;else return 0;if(l)if(l===t)h=10;else if(l==="*")h=Math.max(h,5);else return 0;if(c)if(c===o)h=10;else if(c==="*"&&o!==void 0)h=Math.max(h,5);else return 0;if(r){let u;if(typeof r=="string"?u=r:u={...r,base:vpe(r.base)},u===e.fsPath||aXe(u,e.fsPath))h=10;else return 0}return h}else return 0}}function W0e(s){return typeof s=="string"?!1:Array.isArray(s)?s.every(W0e):!!s.exclusive}class cle{constructor(e,t,i,n,o){this.uri=e,this.languageId=t,this.notebookUri=i,this.notebookType=n,this.recursive=o}equals(e){var t,i;return this.notebookType===e.notebookType&&this.languageId===e.languageId&&this.uri.toString()===e.uri.toString()&&((t=this.notebookUri)==null?void 0:t.toString())===((i=e.notebookUri)==null?void 0:i.toString())&&this.recursive===e.recursive}}class Ns{constructor(e){this._notebookInfoResolver=e,this._clock=0,this._entries=[],this._onDidChange=new re,this.onDidChange=this._onDidChange.event}register(e,t){let i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),gt(()=>{if(i){const n=this._entries.indexOf(i);n>=0&&(this._entries.splice(n,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),i=void 0)}})}has(e){return this.all(e).length>0}all(e){if(!e)return[];this._updateScores(e,!1);const t=[];for(const i of this._entries)i._score>0&&t.push(i.provider);return t}ordered(e,t=!1){const i=[];return this._orderedForEach(e,t,n=>i.push(n.provider)),i}orderedGroups(e){const t=[];let i,n;return this._orderedForEach(e,!1,o=>{i&&n===o._score?i.push(o.provider):(n=o._score,i=[o.provider],t.push(i))}),t}_orderedForEach(e,t,i){this._updateScores(e,t);for(const n of this._entries)n._score>0&&i(n)}_updateScores(e,t){var o,l;const i=(o=this._notebookInfoResolver)==null?void 0:o.call(this,e.uri),n=i?new cle(e.uri,e.getLanguageId(),i.uri,i.type,t):new cle(e.uri,e.getLanguageId(),void 0,void 0,t);if(!((l=this._lastCandidate)!=null&&l.equals(n))){this._lastCandidate=n;for(const r of this._entries)if(r._score=iee(r.selector,n.uri,n.languageId,e0e(e),n.notebookUri,n.notebookType),W0e(r.selector)&&r._score>0)if(t)r._score=0;else{for(const a of this._entries)a._score=0;r._score=1e3;break}this._entries.sort(Ns._compareByScoreAndTime)}}static _compareByScoreAndTime(e,t){return e._score<t._score?1:e._score>t._score?-1:Xy(e.selector)&&!Xy(t.selector)?1:!Xy(e.selector)&&Xy(t.selector)?-1:e._time<t._time?1:e._time>t._time?-1:0}}function Xy(s){return typeof s=="string"?!1:Array.isArray(s)?s.some(Xy):!!s.isBuiltin}class uXe{constructor(){this.referenceProvider=new Ns(this._score.bind(this)),this.renameProvider=new Ns(this._score.bind(this)),this.newSymbolNamesProvider=new Ns(this._score.bind(this)),this.codeActionProvider=new Ns(this._score.bind(this)),this.definitionProvider=new Ns(this._score.bind(this)),this.typeDefinitionProvider=new Ns(this._score.bind(this)),this.declarationProvider=new Ns(this._score.bind(this)),this.implementationProvider=new Ns(this._score.bind(this)),this.documentSymbolProvider=new Ns(this._score.bind(this)),this.inlayHintsProvider=new Ns(this._score.bind(this)),this.colorProvider=new Ns(this._score.bind(this)),this.codeLensProvider=new Ns(this._score.bind(this)),this.documentFormattingEditProvider=new Ns(this._score.bind(this)),this.documentRangeFormattingEditProvider=new Ns(this._score.bind(this)),this.onTypeFormattingEditProvider=new Ns(this._score.bind(this)),this.signatureHelpProvider=new Ns(this._score.bind(this)),this.hoverProvider=new Ns(this._score.bind(this)),this.documentHighlightProvider=new Ns(this._score.bind(this)),this.multiDocumentHighlightProvider=new Ns(this._score.bind(this)),this.selectionRangeProvider=new Ns(this._score.bind(this)),this.foldingRangeProvider=new Ns(this._score.bind(this)),this.linkProvider=new Ns(this._score.bind(this)),this.inlineCompletionsProvider=new Ns(this._score.bind(this)),this.inlineEditProvider=new Ns(this._score.bind(this)),this.completionProvider=new Ns(this._score.bind(this)),this.linkedEditingRangeProvider=new Ns(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new Ns(this._score.bind(this)),this.documentSemanticTokensProvider=new Ns(this._score.bind(this)),this.documentDropEditProvider=new Ns(this._score.bind(this)),this.documentPasteEditProvider=new Ns(this._score.bind(this))}_score(e){var t;return(t=this._notebookTypeResolver)==null?void 0:t.call(this,e)}}Ci(lt,uXe,1);function nee(s){return`--vscode-${s.replace(/\./g,"-")}`}function $e(s){return`var(${nee(s)})`}function mXe(s,e){return`var(${nee(s)}, ${e})`}function pXe(s){return s!==null&&typeof s=="object"&&"light"in s&&"dark"in s}const V0e={ColorContribution:"base.contributions.colors"},gXe="default";class bXe{constructor(){this._onDidChangeSchema=new re,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(e,t,i,n=!1,o){const l={id:e,description:i,defaults:t,needsTransparency:n,deprecationMessage:o};this.colorsById[e]=l;const r={type:"string",format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return o&&(r.deprecationMessage=o),n&&(r.pattern="^#(?:(?<rgba>[0-9a-fA-f]{3}[0-9a-eA-E])|(?:[0-9a-fA-F]{6}(?:(?![fF]{2})(?:[0-9a-fA-F]{2}))))?$",r.patternErrorMessage=U("transparecyRequired","This color must be transparent or it will obscure content")),this.colorSchema.properties[e]={description:i,oneOf:[r,{type:"string",const:gXe,description:U("useDefault","Use the default color.")}]},this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(i),this._onDidChangeSchema.fire(),e}getColors(){return Object.keys(this.colorsById).map(e=>this.colorsById[e])}resolveDefaultColor(e,t){const i=this.colorsById[e];if(i!=null&&i.defaults){const n=pXe(i.defaults)?i.defaults[t.type]:i.defaults;return bu(n,t)}}getColorSchema(){return this.colorSchema}toString(){const e=(t,i)=>{const n=t.indexOf(".")===-1?0:1,o=i.indexOf(".")===-1?0:1;return n!==o?n-o:t.localeCompare(i)};return Object.keys(this.colorsById).sort(e).map(t=>`- \`${t}\`: ${this.colorsById[t].description}`).join(`
- `)}}const ZY=new bXe;Vs.add(V0e.ColorContribution,ZY);function K(s,e,t,i,n){return ZY.registerColor(s,e,t,i,n)}function UXe(s,e){var t,i,n,o;switch(s.op){case 0:return(t=bu(s.value,e))==null?void 0:t.darken(s.factor);case 1:return(i=bu(s.value,e))==null?void 0:i.lighten(s.factor);case 2:return(n=bu(s.value,e))==null?void 0:n.transparent(s.factor);case 3:{const l=bu(s.background,e);return l?(o=bu(s.value,e))==null?void 0:o.makeOpaque(l):bu(s.value,e)}case 4:for(const l of s.values){const r=bu(l,e);if(r)return r}return;case 6:return bu(e.defines(s.if)?s.then:s.else,e);case 5:{const l=bu(s.value,e);if(!l)return;const r=bu(s.background,e);return r?l.isDarkerThan(r)?Re.getLighterColor(l,r,s.factor).transparent(s.transparency):Re.getDarkerColor(l,r,s.factor).transparent(s.transparency):l.transparent(s.factor*s.transparency)}default:throw uY()}}function qA(s,e){return{op:0,value:s,factor:e}}function zu(s,e){return{op:1,value:s,factor:e}}function ii(s,e){return{op:2,value:s,factor:e}}function gM(...s){return{op:4,values:s}}function fXe(s,e,t){return{op:6,if:s,then:e,else:t}}function hle(s,e,t,i){return{op:5,value:s,background:e,factor:t,transparency:i}}function bu(s,e){if(s!==null){if(typeof s=="string")return s[0]==="#"?Re.fromHex(s):e.getColor(s);if(s instanceof Re)return s;if(typeof s=="object")return UXe(s,e)}}const Q0e="vscode://schemas/workbench-colors",y0e=Vs.as(bY.JSONContribution);y0e.registerSchema(Q0e,ZY.getColorSchema());const ule=new Rn(()=>y0e.notifySchemaChanged(Q0e),200);ZY.onDidChangeSchema(()=>{ule.isScheduled()||ule.schedule()});const ci=K("foreground",{dark:"#CCCCCC",light:"#616161",hcDark:"#FFFFFF",hcLight:"#292929"},U("foreground","Overall foreground color. This color is only used if not overridden by a component."));K("disabledForeground",{dark:"#CCCCCC80",light:"#61616180",hcDark:"#A5A5A5",hcLight:"#7F7F7F"},U("disabledForeground","Overall foreground for disabled elements. This color is only used if not overridden by a component."));K("errorForeground",{dark:"#F48771",light:"#A1260D",hcDark:"#F48771",hcLight:"#B5200D"},U("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component."));K("descriptionForeground",{light:"#717171",dark:ii(ci,.7),hcDark:ii(ci,.7),hcLight:ii(ci,.7)},U("descriptionForeground","Foreground color for description text providing additional information, for example for a label."));const lv=K("icon.foreground",{dark:"#C5C5C5",light:"#424242",hcDark:"#FFFFFF",hcLight:"#292929"},U("iconForeground","The default color for icons in the workbench.")),Sp=K("focusBorder",{dark:"#007FD4",light:"#0090F1",hcDark:"#F38518",hcLight:"#006BBD"},U("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),Di=K("contrastBorder",{light:null,dark:null,hcDark:"#6FC3DF",hcLight:"#0F4A85"},U("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),hs=K("contrastActiveBorder",{light:null,dark:null,hcDark:Sp,hcLight:Sp},U("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast."));K("selection.background",null,U("selectionBackground","The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor."));const FXe=K("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},U("textLinkForeground","Foreground color for links in text."));K("textLink.activeForeground",{light:"#006AB1",dark:"#3794FF",hcDark:"#21A6FF",hcLight:"#0F4A85"},U("textLinkActiveForeground","Foreground color for links in text when clicked on and on mouse hover."));K("textSeparator.foreground",{light:"#0000002e",dark:"#ffffff2e",hcDark:Re.black,hcLight:"#292929"},U("textSeparatorForeground","Color for text separators."));K("textPreformat.foreground",{light:"#A31515",dark:"#D7BA7D",hcDark:"#000000",hcLight:"#FFFFFF"},U("textPreformatForeground","Foreground color for preformatted text segments."));K("textPreformat.background",{light:"#0000001A",dark:"#FFFFFF1A",hcDark:"#FFFFFF",hcLight:"#09345f"},U("textPreformatBackground","Background color for preformatted text segments."));K("textBlockQuote.background",{light:"#f2f2f2",dark:"#222222",hcDark:null,hcLight:"#F2F2F2"},U("textBlockQuoteBackground","Background color for block quotes in text."));K("textBlockQuote.border",{light:"#007acc80",dark:"#007acc80",hcDark:Re.white,hcLight:"#292929"},U("textBlockQuoteBorder","Border color for block quotes in text."));K("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hcDark:Re.black,hcLight:"#F2F2F2"},U("textCodeBlockBackground","Background color for code blocks in text."));K("sash.hoverBorder",Sp,U("sashActiveBorder","Border color of active sashes."));const oD=K("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hcDark:Re.black,hcLight:"#0F4A85"},U("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count.")),ZXe=K("badge.foreground",{dark:Re.white,light:"#333",hcDark:Re.white,hcLight:Re.white},U("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),see=K("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hcDark:null,hcLight:null},U("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),C0e=K("scrollbarSlider.background",{dark:Re.fromHex("#797979").transparent(.4),light:Re.fromHex("#646464").transparent(.4),hcDark:ii(Di,.6),hcLight:ii(Di,.4)},U("scrollbarSliderBackground","Scrollbar slider background color.")),w0e=K("scrollbarSlider.hoverBackground",{dark:Re.fromHex("#646464").transparent(.7),light:Re.fromHex("#646464").transparent(.7),hcDark:ii(Di,.8),hcLight:ii(Di,.8)},U("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),M0e=K("scrollbarSlider.activeBackground",{dark:Re.fromHex("#BFBFBF").transparent(.4),light:Re.fromHex("#000000").transparent(.6),hcDark:Di,hcLight:Di},U("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),AXe=K("progressBar.background",{dark:Re.fromHex("#0E70C0"),light:Re.fromHex("#0E70C0"),hcDark:Di,hcLight:Di},U("progressBarBackground","Background color of the progress bar that can show for long running operations.")),$h=K("editor.background",{light:"#ffffff",dark:"#1E1E1E",hcDark:Re.black,hcLight:Re.white},U("editorBackground","Editor background color.")),Dp=K("editor.foreground",{light:"#333333",dark:"#BBBBBB",hcDark:Re.white,hcLight:ci},U("editorForeground","Editor default foreground color."));K("editorStickyScroll.background",$h,U("editorStickyScrollBackground","Background color of sticky scroll in the editor"));K("editorStickyScrollHover.background",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:null,hcLight:Re.fromHex("#0F4A85").transparent(.1)},U("editorStickyScrollHoverBackground","Background color of sticky scroll on hover in the editor"));K("editorStickyScroll.border",{dark:null,light:null,hcDark:Di,hcLight:Di},U("editorStickyScrollBorder","Border color of sticky scroll in the editor"));K("editorStickyScroll.shadow",see,U("editorStickyScrollShadow"," Shadow color of sticky scroll in the editor"));const sc=K("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hcDark:"#0C141F",hcLight:Re.white},U("editorWidgetBackground","Background color of editor widgets, such as find/replace.")),AY=K("editorWidget.foreground",ci,U("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),oee=K("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hcDark:Di,hcLight:Di},U("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget."));K("editorWidget.resizeBorder",null,U("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget."));K("editorError.background",null,U("editorError.background","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const NY=K("editorError.foreground",{dark:"#F14C4C",light:"#E51400",hcDark:"#F48771",hcLight:"#B5200D"},U("editorError.foreground","Foreground color of error squigglies in the editor.")),NXe=K("editorError.border",{dark:null,light:null,hcDark:Re.fromHex("#E47777").transparent(.8),hcLight:"#B5200D"},U("errorBorder","If set, color of double underlines for errors in the editor.")),RXe=K("editorWarning.background",null,U("editorWarning.background","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0),S0=K("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hcDark:"#FFD370",hcLight:"#895503"},U("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),bM=K("editorWarning.border",{dark:null,light:null,hcDark:Re.fromHex("#FFCC00").transparent(.8),hcLight:Re.fromHex("#FFCC00").transparent(.8)},U("warningBorder","If set, color of double underlines for warnings in the editor."));K("editorInfo.background",null,U("editorInfo.background","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const Wp=K("editorInfo.foreground",{dark:"#3794FF",light:"#1a85ff",hcDark:"#3794FF",hcLight:"#1a85ff"},U("editorInfo.foreground","Foreground color of info squigglies in the editor.")),UM=K("editorInfo.border",{dark:null,light:null,hcDark:Re.fromHex("#3794FF").transparent(.8),hcLight:"#292929"},U("infoBorder","If set, color of double underlines for infos in the editor.")),SXe=K("editorHint.foreground",{dark:Re.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hcDark:null,hcLight:null},U("editorHint.foreground","Foreground color of hint squigglies in the editor."));K("editorHint.border",{dark:null,light:null,hcDark:Re.fromHex("#eeeeee").transparent(.8),hcLight:"#292929"},U("hintBorder","If set, color of double underlines for hints in the editor."));const WXe=K("editorLink.activeForeground",{dark:"#4E94CE",light:Re.blue,hcDark:Re.cyan,hcLight:"#292929"},U("activeLinkForeground","Color of active links.")),dU=K("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hcDark:"#f3f518",hcLight:"#0F4A85"},U("editorSelectionBackground","Color of the editor selection.")),VXe=K("editor.selectionForeground",{light:null,dark:null,hcDark:"#000000",hcLight:Re.white},U("editorSelectionForeground","Color of the selected text for high contrast.")),T0e=K("editor.inactiveSelectionBackground",{light:ii(dU,.5),dark:ii(dU,.5),hcDark:ii(dU,.7),hcLight:ii(dU,.5)},U("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),lee=K("editor.selectionHighlightBackground",{light:hle(dU,$h,.3,.6),dark:hle(dU,$h,.3,.6),hcDark:null,hcLight:null},U("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.selectionHighlightBorder",{light:null,dark:null,hcDark:hs,hcLight:hs},U("editorSelectionHighlightBorder","Border color for regions with the same content as the selection."));K("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hcDark:null,hcLight:null},U("editorFindMatch","Color of the current search match."));const QXe=K("editor.findMatchForeground",null,U("editorFindMatchForeground","Text color of the current search match.")),i0=K("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hcDark:null,hcLight:null},U("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0),yXe=K("editor.findMatchHighlightForeground",null,U("findMatchHighlightForeground","Foreground color of the other search matches."),!0);K("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hcDark:null,hcLight:null},U("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.findMatchBorder",{light:null,dark:null,hcDark:hs,hcLight:hs},U("editorFindMatchBorder","Border color of the current search match."));const cU=K("editor.findMatchHighlightBorder",{light:null,dark:null,hcDark:hs,hcLight:hs},U("findMatchHighlightBorder","Border color of the other search matches.")),CXe=K("editor.findRangeHighlightBorder",{dark:null,light:null,hcDark:ii(hs,.4),hcLight:ii(hs,.4)},U("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hcDark:"#ADD6FF26",hcLight:null},U("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0);const rv=K("editorHoverWidget.background",sc,U("hoverBackground","Background color of the editor hover."));K("editorHoverWidget.foreground",AY,U("hoverForeground","Foreground color of the editor hover."));const B0e=K("editorHoverWidget.border",oee,U("hoverBorder","Border color of the editor hover."));K("editorHoverWidget.statusBarBackground",{dark:zu(rv,.2),light:qA(rv,.05),hcDark:sc,hcLight:sc},U("statusBarBackground","Background color of the editor hover status bar."));const ree=K("editorInlayHint.foreground",{dark:"#969696",light:"#969696",hcDark:Re.white,hcLight:Re.black},U("editorInlayHintForeground","Foreground color of inline hints")),aee=K("editorInlayHint.background",{dark:ii(oD,.1),light:ii(oD,.1),hcDark:ii(Re.white,.1),hcLight:ii(oD,.1)},U("editorInlayHintBackground","Background color of inline hints")),wXe=K("editorInlayHint.typeForeground",ree,U("editorInlayHintForegroundTypes","Foreground color of inline hints for types")),MXe=K("editorInlayHint.typeBackground",aee,U("editorInlayHintBackgroundTypes","Background color of inline hints for types")),TXe=K("editorInlayHint.parameterForeground",ree,U("editorInlayHintForegroundParameter","Foreground color of inline hints for parameters")),BXe=K("editorInlayHint.parameterBackground",aee,U("editorInlayHintBackgroundParameter","Background color of inline hints for parameters")),LXe=K("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hcDark:"#FFCC00",hcLight:"#007ACC"},U("editorLightBulbForeground","The color used for the lightbulb actions icon."));K("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U("editorLightBulbAutoFixForeground","The color used for the lightbulb auto fix actions icon."));K("editorLightBulbAi.foreground",LXe,U("editorLightBulbAiForeground","The color used for the lightbulb AI icon."));K("editor.snippetTabstopHighlightBackground",{dark:new Re(new vi(124,124,124,.3)),light:new Re(new vi(10,50,100,.2)),hcDark:new Re(new vi(124,124,124,.3)),hcLight:new Re(new vi(10,50,100,.2))},U("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop."));K("editor.snippetTabstopHighlightBorder",null,U("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop."));K("editor.snippetFinalTabstopHighlightBackground",null,U("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet."));K("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new Re(new vi(10,50,100,.5)),hcDark:"#525252",hcLight:"#292929"},U("snippetFinalTabstopHighlightBorder","Highlight border color of the final tabstop of a snippet."));const aP=new Re(new vi(155,185,85,.2)),dP=new Re(new vi(255,0,0,.2)),kXe=K("diffEditor.insertedTextBackground",{dark:"#9ccc2c33",light:"#9ccc2c40",hcDark:null,hcLight:null},U("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),IXe=K("diffEditor.removedTextBackground",{dark:"#ff000033",light:"#ff000033",hcDark:null,hcLight:null},U("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0);K("diffEditor.insertedLineBackground",{dark:aP,light:aP,hcDark:null,hcLight:null},U("diffEditorInsertedLines","Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0);K("diffEditor.removedLineBackground",{dark:dP,light:dP,hcDark:null,hcLight:null},U("diffEditorRemovedLines","Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations."),!0);K("diffEditorGutter.insertedLineBackground",null,U("diffEditorInsertedLineGutter","Background color for the margin where lines got inserted."));K("diffEditorGutter.removedLineBackground",null,U("diffEditorRemovedLineGutter","Background color for the margin where lines got removed."));const DXe=K("diffEditorOverview.insertedForeground",null,U("diffEditorOverviewInserted","Diff overview ruler foreground for inserted content.")),GXe=K("diffEditorOverview.removedForeground",null,U("diffEditorOverviewRemoved","Diff overview ruler foreground for removed content."));K("diffEditor.insertedTextBorder",{dark:null,light:null,hcDark:"#33ff2eff",hcLight:"#374E06"},U("diffEditorInsertedOutline","Outline color for the text that got inserted."));K("diffEditor.removedTextBorder",{dark:null,light:null,hcDark:"#FF008F",hcLight:"#AD0707"},U("diffEditorRemovedOutline","Outline color for text that got removed."));K("diffEditor.border",{dark:null,light:null,hcDark:Di,hcLight:Di},U("diffEditorBorder","Border color between the two text editors."));K("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hcDark:null,hcLight:null},U("diffDiagonalFill","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views."));K("diffEditor.unchangedRegionBackground","sideBar.background",U("diffEditor.unchangedRegionBackground","The background color of unchanged blocks in the diff editor."));K("diffEditor.unchangedRegionForeground","foreground",U("diffEditor.unchangedRegionForeground","The foreground color of unchanged blocks in the diff editor."));K("diffEditor.unchangedCodeBackground",{dark:"#74747429",light:"#b8b8b829",hcDark:null,hcLight:null},U("diffEditor.unchangedCodeBackground","The background color of unchanged code in the diff editor."));const zQ=K("widget.shadow",{dark:ii(Re.black,.36),light:ii(Re.black,.16),hcDark:null,hcLight:null},U("widgetShadow","Shadow color of widgets such as find/replace inside the editor.")),L0e=K("widget.border",{dark:null,light:null,hcDark:Di,hcLight:Di},U("widgetBorder","Border color of widgets such as find/replace inside the editor.")),mle=K("toolbar.hoverBackground",{dark:"#5a5d5e50",light:"#b8b8b850",hcDark:null,hcLight:null},U("toolbarHoverBackground","Toolbar background when hovering over actions using the mouse"));K("toolbar.hoverOutline",{dark:null,light:null,hcDark:hs,hcLight:hs},U("toolbarHoverOutline","Toolbar outline when hovering over actions using the mouse"));K("toolbar.activeBackground",{dark:zu(mle,.1),light:qA(mle,.1),hcDark:null,hcLight:null},U("toolbarActiveBackground","Toolbar background when holding the mouse over actions"));const EXe=K("breadcrumb.foreground",ii(ci,.8),U("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),vXe=K("breadcrumb.background",$h,U("breadcrumbsBackground","Background color of breadcrumb items.")),ple=K("breadcrumb.focusForeground",{light:qA(ci,.2),dark:zu(ci,.1),hcDark:zu(ci,.1),hcLight:zu(ci,.1)},U("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),xXe=K("breadcrumb.activeSelectionForeground",{light:qA(ci,.2),dark:zu(ci,.1),hcDark:zu(ci,.1),hcLight:zu(ci,.1)},U("breadcrumbsSelectedForeground","Color of selected breadcrumb items."));K("breadcrumbPicker.background",sc,U("breadcrumbsSelectedBackground","Background color of breadcrumb item picker."));const k0e=.5,gle=Re.fromHex("#40C8AE").transparent(k0e),ble=Re.fromHex("#40A6FF").transparent(k0e),Ule=Re.fromHex("#606060").transparent(.4),dee=.4,sV=1,cP=K("merge.currentHeaderBackground",{dark:gle,light:gle,hcDark:null,hcLight:null},U("mergeCurrentHeaderBackground","Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);K("merge.currentContentBackground",ii(cP,dee),U("mergeCurrentContentBackground","Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const hP=K("merge.incomingHeaderBackground",{dark:ble,light:ble,hcDark:null,hcLight:null},U("mergeIncomingHeaderBackground","Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);K("merge.incomingContentBackground",ii(hP,dee),U("mergeIncomingContentBackground","Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const uP=K("merge.commonHeaderBackground",{dark:Ule,light:Ule,hcDark:null,hcLight:null},U("mergeCommonHeaderBackground","Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);K("merge.commonContentBackground",ii(uP,dee),U("mergeCommonContentBackground","Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const oV=K("merge.border",{dark:null,light:null,hcDark:"#C3DF6F",hcLight:"#007ACC"},U("mergeBorder","Border color on headers and the splitter in inline merge-conflicts."));K("editorOverviewRuler.currentContentForeground",{dark:ii(cP,sV),light:ii(cP,sV),hcDark:oV,hcLight:oV},U("overviewRulerCurrentContentForeground","Current overview ruler foreground for inline merge-conflicts."));K("editorOverviewRuler.incomingContentForeground",{dark:ii(hP,sV),light:ii(hP,sV),hcDark:oV,hcLight:oV},U("overviewRulerIncomingContentForeground","Incoming overview ruler foreground for inline merge-conflicts."));K("editorOverviewRuler.commonContentForeground",{dark:ii(uP,sV),light:ii(uP,sV),hcDark:oV,hcLight:oV},U("overviewRulerCommonContentForeground","Common ancestor overview ruler foreground for inline merge-conflicts."));const p3=K("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hcDark:"#AB5A00",hcLight:"#AB5A00"},U("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0),I0e=K("editorOverviewRuler.selectionHighlightForeground","#A0A0A0CC",U("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),JXe=K("problemsErrorIcon.foreground",NY,U("problemsErrorIconForeground","The color used for the problems error icon.")),XXe=K("problemsWarningIcon.foreground",S0,U("problemsWarningIconForeground","The color used for the problems warning icon.")),YXe=K("problemsInfoIcon.foreground",Wp,U("problemsInfoIconForeground","The color used for the problems info icon.")),mP=K("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hcDark:"#AB5A00",hcLight:"#0F4A85"},U("minimapFindMatchHighlight","Minimap marker color for find matches."),!0),RY=K("minimap.selectionOccurrenceHighlight",{light:"#c9c9c9",dark:"#676767",hcDark:"#ffffff",hcLight:"#0F4A85"},U("minimapSelectionOccurrenceHighlight","Minimap marker color for repeating editor selections."),!0),fle=K("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hcDark:"#ffffff",hcLight:"#0F4A85"},U("minimapSelectionHighlight","Minimap marker color for the editor selection."),!0),zXe=K("minimap.infoHighlight",{dark:Wp,light:Wp,hcDark:UM,hcLight:UM},U("minimapInfo","Minimap marker color for infos.")),_Xe=K("minimap.warningHighlight",{dark:S0,light:S0,hcDark:bM,hcLight:bM},U("overviewRuleWarning","Minimap marker color for warnings.")),OXe=K("minimap.errorHighlight",{dark:new Re(new vi(255,18,18,.7)),light:new Re(new vi(255,18,18,.7)),hcDark:new Re(new vi(255,50,50,1)),hcLight:"#B5200D"},U("minimapError","Minimap marker color for errors.")),jXe=K("minimap.background",null,U("minimapBackground","Minimap background color.")),HXe=K("minimap.foregroundOpacity",Re.fromHex("#000f"),U("minimapForegroundOpacity",'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.'));K("minimapSlider.background",ii(C0e,.5),U("minimapSliderBackground","Minimap slider background color."));K("minimapSlider.hoverBackground",ii(w0e,.5),U("minimapSliderHoverBackground","Minimap slider background color when hovering."));K("minimapSlider.activeBackground",ii(M0e,.5),U("minimapSliderActiveBackground","Minimap slider background color when clicked on."));K("charts.foreground",ci,U("chartsForeground","The foreground color used in charts."));K("charts.lines",ii(ci,.5),U("chartsLines","The color used for horizontal lines in charts."));K("charts.red",NY,U("chartsRed","The red color used in chart visualizations."));K("charts.blue",Wp,U("chartsBlue","The blue color used in chart visualizations."));K("charts.yellow",S0,U("chartsYellow","The yellow color used in chart visualizations."));K("charts.orange",mP,U("chartsOrange","The orange color used in chart visualizations."));K("charts.green",{dark:"#89D185",light:"#388A34",hcDark:"#89D185",hcLight:"#374e06"},U("chartsGreen","The green color used in chart visualizations."));K("charts.purple",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U("chartsPurple","The purple color used in chart visualizations."));const pP=K("input.background",{dark:"#3C3C3C",light:Re.white,hcDark:Re.black,hcLight:Re.white},U("inputBoxBackground","Input box background.")),D0e=K("input.foreground",ci,U("inputBoxForeground","Input box foreground.")),G0e=K("input.border",{dark:null,light:null,hcDark:Di,hcLight:Di},U("inputBoxBorder","Input box border.")),SY=K("inputOption.activeBorder",{dark:"#007ACC",light:"#007ACC",hcDark:Di,hcLight:Di},U("inputBoxActiveOptionBorder","Border color of activated options in input fields.")),PXe=K("inputOption.hoverBackground",{dark:"#5a5d5e80",light:"#b8b8b850",hcDark:null,hcLight:null},U("inputOption.hoverBackground","Background color of activated options in input fields.")),aB=K("inputOption.activeBackground",{dark:ii(Sp,.4),light:ii(Sp,.2),hcDark:Re.transparent,hcLight:Re.transparent},U("inputOption.activeBackground","Background hover color of options in input fields.")),WY=K("inputOption.activeForeground",{dark:Re.white,light:Re.black,hcDark:ci,hcLight:ci},U("inputOption.activeForeground","Foreground color of activated options in input fields."));K("input.placeholderForeground",{light:ii(ci,.5),dark:ii(ci,.5),hcDark:ii(ci,.7),hcLight:ii(ci,.7)},U("inputPlaceholderForeground","Input box foreground color for placeholder text."));const KXe=K("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hcDark:Re.black,hcLight:Re.white},U("inputValidationInfoBackground","Input validation background color for information severity.")),qXe=K("inputValidation.infoForeground",{dark:null,light:null,hcDark:null,hcLight:ci},U("inputValidationInfoForeground","Input validation foreground color for information severity.")),$Xe=K("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hcDark:Di,hcLight:Di},U("inputValidationInfoBorder","Input validation border color for information severity.")),e5e=K("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hcDark:Re.black,hcLight:Re.white},U("inputValidationWarningBackground","Input validation background color for warning severity.")),t5e=K("inputValidation.warningForeground",{dark:null,light:null,hcDark:null,hcLight:ci},U("inputValidationWarningForeground","Input validation foreground color for warning severity.")),i5e=K("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hcDark:Di,hcLight:Di},U("inputValidationWarningBorder","Input validation border color for warning severity.")),n5e=K("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hcDark:Re.black,hcLight:Re.white},U("inputValidationErrorBackground","Input validation background color for error severity.")),s5e=K("inputValidation.errorForeground",{dark:null,light:null,hcDark:null,hcLight:ci},U("inputValidationErrorForeground","Input validation foreground color for error severity.")),o5e=K("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hcDark:Di,hcLight:Di},U("inputValidationErrorBorder","Input validation border color for error severity.")),VY=K("dropdown.background",{dark:"#3C3C3C",light:Re.white,hcDark:Re.black,hcLight:Re.white},U("dropdownBackground","Dropdown background.")),l5e=K("dropdown.listBackground",{dark:null,light:null,hcDark:Re.black,hcLight:Re.white},U("dropdownListBackground","Dropdown list background.")),cee=K("dropdown.foreground",{dark:"#F0F0F0",light:ci,hcDark:Re.white,hcLight:ci},U("dropdownForeground","Dropdown foreground.")),hee=K("dropdown.border",{dark:VY,light:"#CECECE",hcDark:Di,hcLight:Di},U("dropdownBorder","Dropdown border.")),E0e=K("button.foreground",Re.white,U("buttonForeground","Button foreground color.")),r5e=K("button.separator",ii(E0e,.4),U("buttonSeparator","Button separator color.")),Yy=K("button.background",{dark:"#0E639C",light:"#007ACC",hcDark:null,hcLight:"#0F4A85"},U("buttonBackground","Button background color.")),a5e=K("button.hoverBackground",{dark:zu(Yy,.2),light:qA(Yy,.2),hcDark:Yy,hcLight:Yy},U("buttonHoverBackground","Button background color when hovering.")),d5e=K("button.border",Di,U("buttonBorder","Button border color.")),c5e=K("button.secondaryForeground",{dark:Re.white,light:Re.white,hcDark:Re.white,hcLight:ci},U("buttonSecondaryForeground","Secondary button foreground color.")),gP=K("button.secondaryBackground",{dark:"#3A3D41",light:"#5F6A79",hcDark:null,hcLight:Re.white},U("buttonSecondaryBackground","Secondary button background color.")),h5e=K("button.secondaryHoverBackground",{dark:zu(gP,.2),light:qA(gP,.2),hcDark:null,hcLight:null},U("buttonSecondaryHoverBackground","Secondary button background color when hovering.")),zy=K("radio.activeForeground",WY,U("radioActiveForeground","Foreground color of active radio option.")),u5e=K("radio.activeBackground",aB,U("radioBackground","Background color of active radio option.")),m5e=K("radio.activeBorder",SY,U("radioActiveBorder","Border color of the active radio option.")),p5e=K("radio.inactiveForeground",null,U("radioInactiveForeground","Foreground color of inactive radio option.")),g5e=K("radio.inactiveBackground",null,U("radioInactiveBackground","Background color of inactive radio option.")),b5e=K("radio.inactiveBorder",{light:ii(zy,.2),dark:ii(zy,.2),hcDark:ii(zy,.4),hcLight:ii(zy,.2)},U("radioInactiveBorder","Border color of the inactive radio option.")),U5e=K("radio.inactiveHoverBackground",PXe,U("radioHoverBackground","Background color of inactive active radio option when hovering.")),f5e=K("checkbox.background",VY,U("checkbox.background","Background color of checkbox widget."));K("checkbox.selectBackground",sc,U("checkbox.select.background","Background color of checkbox widget when the element it's in is selected."));const F5e=K("checkbox.foreground",cee,U("checkbox.foreground","Foreground color of checkbox widget.")),Z5e=K("checkbox.border",hee,U("checkbox.border","Border color of checkbox widget."));K("checkbox.selectBorder",lv,U("checkbox.select.border","Border color of checkbox widget when the element it's in is selected."));const A5e=K("keybindingLabel.background",{dark:new Re(new vi(128,128,128,.17)),light:new Re(new vi(221,221,221,.4)),hcDark:Re.transparent,hcLight:Re.transparent},U("keybindingLabelBackground","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.")),N5e=K("keybindingLabel.foreground",{dark:Re.fromHex("#CCCCCC"),light:Re.fromHex("#555555"),hcDark:Re.white,hcLight:ci},U("keybindingLabelForeground","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.")),R5e=K("keybindingLabel.border",{dark:new Re(new vi(51,51,51,.6)),light:new Re(new vi(204,204,204,.4)),hcDark:new Re(new vi(111,195,223)),hcLight:Di},U("keybindingLabelBorder","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.")),S5e=K("keybindingLabel.bottomBorder",{dark:new Re(new vi(68,68,68,.6)),light:new Re(new vi(187,187,187,.4)),hcDark:new Re(new vi(111,195,223)),hcLight:ci},U("keybindingLabelBottomBorder","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.")),W5e=K("list.focusBackground",null,U("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),V5e=K("list.focusForeground",null,U("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Q5e=K("list.focusOutline",{dark:Sp,light:Sp,hcDark:hs,hcLight:hs},U("listFocusOutline","List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),y5e=K("list.focusAndSelectionOutline",null,U("listFocusAndSelectionOutline","List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.")),WA=K("list.activeSelectionBackground",{dark:"#04395E",light:"#0060C0",hcDark:null,hcLight:Re.fromHex("#0F4A85").transparent(.1)},U("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),fM=K("list.activeSelectionForeground",{dark:Re.white,light:Re.white,hcDark:null,hcLight:null},U("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),v0e=K("list.activeSelectionIconForeground",null,U("listActiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),C5e=K("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hcDark:null,hcLight:Re.fromHex("#0F4A85").transparent(.1)},U("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),w5e=K("list.inactiveSelectionForeground",null,U("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),M5e=K("list.inactiveSelectionIconForeground",null,U("listInactiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),T5e=K("list.inactiveFocusBackground",null,U("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),B5e=K("list.inactiveFocusOutline",null,U("listInactiveFocusOutline","List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),x0e=K("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:Re.white.transparent(.1),hcLight:Re.fromHex("#0F4A85").transparent(.1)},U("listHoverBackground","List/Tree background when hovering over items using the mouse.")),J0e=K("list.hoverForeground",null,U("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),L5e=K("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hcDark:null,hcLight:null},U("listDropBackground","List/Tree drag and drop background when moving items over other items when using the mouse.")),k5e=K("list.dropBetweenBackground",{dark:lv,light:lv,hcDark:null,hcLight:null},U("listDropBetweenBackground","List/Tree drag and drop border color when moving items between items when using the mouse.")),cS=K("list.highlightForeground",{dark:"#2AAAFF",light:"#0066BF",hcDark:Sp,hcLight:Sp},U("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),I5e=K("list.focusHighlightForeground",{dark:cS,light:fXe(WA,cS,"#BBE7FF"),hcDark:cS,hcLight:cS},U("listFocusHighlightForeground","List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree."));K("list.invalidItemForeground",{dark:"#B89500",light:"#B89500",hcDark:"#B89500",hcLight:"#B5200D"},U("invalidItemForeground","List/Tree foreground color for invalid items, for example an unresolved root in explorer."));K("list.errorForeground",{dark:"#F88070",light:"#B01011",hcDark:null,hcLight:null},U("listErrorForeground","Foreground color of list items containing errors."));K("list.warningForeground",{dark:"#CCA700",light:"#855F00",hcDark:null,hcLight:null},U("listWarningForeground","Foreground color of list items containing warnings."));const D5e=K("listFilterWidget.background",{light:qA(sc,0),dark:zu(sc,0),hcDark:sc,hcLight:sc},U("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),G5e=K("listFilterWidget.outline",{dark:Re.transparent,light:Re.transparent,hcDark:"#f38518",hcLight:"#007ACC"},U("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),E5e=K("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hcDark:Di,hcLight:Di},U("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),v5e=K("listFilterWidget.shadow",zQ,U("listFilterWidgetShadow","Shadow color of the type filter widget in lists and trees."));K("list.filterMatchBackground",{dark:i0,light:i0,hcDark:null,hcLight:null},U("listFilterMatchHighlight","Background color of the filtered match."));K("list.filterMatchBorder",{dark:cU,light:cU,hcDark:Di,hcLight:hs},U("listFilterMatchHighlightBorder","Border color of the filtered match."));K("list.deemphasizedForeground",{dark:"#8C8C8C",light:"#8E8E90",hcDark:"#A7A8A9",hcLight:"#666666"},U("listDeemphasizedForeground","List/Tree foreground color for items that are deemphasized."));const X0e=K("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hcDark:"#a9a9a9",hcLight:"#a5a5a5"},U("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),x5e=K("tree.inactiveIndentGuidesStroke",ii(X0e,.4),U("treeInactiveIndentGuidesStroke","Tree stroke color for the indentation guides that are not active.")),J5e=K("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hcDark:null,hcLight:null},U("tableColumnsBorder","Table border color between columns.")),X5e=K("tree.tableOddRowsBackground",{dark:ii(ci,.04),light:ii(ci,.04),hcDark:null,hcLight:null},U("tableOddRowsBackgroundColor","Background color for odd table rows."));K("editorActionList.background",sc,U("editorActionListBackground","Action List background color."));K("editorActionList.foreground",AY,U("editorActionListForeground","Action List foreground color."));K("editorActionList.focusForeground",fM,U("editorActionListFocusForeground","Action List foreground color for the focused item."));K("editorActionList.focusBackground",WA,U("editorActionListFocusBackground","Action List background color for the focused item."));const Y5e=K("menu.border",{dark:null,light:null,hcDark:Di,hcLight:Di},U("menuBorder","Border color of menus.")),z5e=K("menu.foreground",cee,U("menuForeground","Foreground color of menu items.")),_5e=K("menu.background",VY,U("menuBackground","Background color of menu items.")),O5e=K("menu.selectionForeground",fM,U("menuSelectionForeground","Foreground color of the selected menu item in menus.")),j5e=K("menu.selectionBackground",WA,U("menuSelectionBackground","Background color of the selected menu item in menus.")),H5e=K("menu.selectionBorder",{dark:null,light:null,hcDark:hs,hcLight:hs},U("menuSelectionBorder","Border color of the selected menu item in menus.")),P5e=K("menu.separatorBackground",{dark:"#606060",light:"#D4D4D4",hcDark:Di,hcLight:Di},U("menuSeparatorBackground","Color of a separator menu item in menus.")),Fle=K("quickInput.background",sc,U("pickerBackground","Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),K5e=K("quickInput.foreground",AY,U("pickerForeground","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),q5e=K("quickInputTitle.background",{dark:new Re(new vi(255,255,255,.105)),light:new Re(new vi(0,0,0,.06)),hcDark:"#000000",hcLight:Re.white},U("pickerTitleBackground","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),Y0e=K("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hcDark:Re.white,hcLight:"#0F4A85"},U("pickerGroupForeground","Quick picker color for grouping labels.")),$5e=K("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hcDark:Re.white,hcLight:"#0F4A85"},U("pickerGroupBorder","Quick picker color for grouping borders.")),Zle=K("quickInput.list.focusBackground",null,"",void 0,U("quickInput.list.focusBackground deprecation","Please use quickInputList.focusBackground instead")),FM=K("quickInputList.focusForeground",fM,U("quickInput.listFocusForeground","Quick picker foreground color for the focused item.")),uee=K("quickInputList.focusIconForeground",v0e,U("quickInput.listFocusIconForeground","Quick picker icon foreground color for the focused item.")),ZM=K("quickInputList.focusBackground",{dark:gM(Zle,WA),light:gM(Zle,WA),hcDark:null,hcLight:null},U("quickInput.listFocusBackground","Quick picker background color for the focused item."));K("search.resultsInfoForeground",{light:ci,dark:ii(ci,.65),hcDark:ci,hcLight:ci},U("search.resultsInfoForeground","Color of the text in the search viewlet's completion message."));K("searchEditor.findMatchBackground",{light:ii(i0,.66),dark:ii(i0,.66),hcDark:i0,hcLight:i0},U("searchEditor.queryMatch","Color of the Search Editor query matches."));K("searchEditor.findMatchBorder",{light:ii(cU,.66),dark:ii(cU,.66),hcDark:cU,hcLight:cU},U("searchEditor.editorFindMatchBorder","Border color of the Search Editor query matches."));var eYe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ale=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Gp=Zi("hoverService");let lV=class extends de{get delay(){return this.isInstantlyHovering()?0:this._delay}constructor(e,t,i={},n,o){super(),this.placement=e,this.instantHover=t,this.overrideOptions=i,this.configurationService=n,this.hoverService=o,this.lastHoverHideTime=0,this.timeLimit=200,this.hoverDisposables=this._register(new Ze),this._delay=this.configurationService.getValue("workbench.hover.delay"),this._register(this.configurationService.onDidChangeConfiguration(l=>{l.affectsConfiguration("workbench.hover.delay")&&(this._delay=this.configurationService.getValue("workbench.hover.delay"))}))}showHover(e,t){const i=typeof this.overrideOptions=="function"?this.overrideOptions(e,t):this.overrideOptions;this.hoverDisposables.clear();const n=Yo(e.target)?[e.target]:e.target.targetElements;for(const l of n)this.hoverDisposables.add(Ms(l,"keydown",r=>{r.equals(9)&&this.hoverService.hideHover()}));const o=Yo(e.content)?void 0:e.content.toString();return this.hoverService.showHover({...e,...i,persistence:{hideOnKeyDown:!0,...i.persistence},id:o,appearance:{...e.appearance,compact:!0,skipFadeInAnimation:this.isInstantlyHovering(),...i.appearance}},t)}isInstantlyHovering(){return this.instantHover&&Date.now()-this.lastHoverHideTime<this.timeLimit}onDidHideHover(){this.hoverDisposables.clear(),this.instantHover&&(this.lastHoverHideTime=Date.now())}};lV=eYe([Ale(3,li),Ale(4,Gp)],lV);const L0=Zi("contextViewService"),Vd=Zi("contextMenuService");const dn=Zi("keybindingService");class _Q{constructor(){this._hooks=new Ze,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(e,t){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;const i=this._onStopCallback;this._onStopCallback=null,e&&i&&i(t)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(e,t,i,n,o){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=n,this._onStopCallback=o;let l=e;try{e.setPointerCapture(t),this._hooks.add(gt(()=>{try{e.releasePointerCapture(t)}catch{}}))}catch{l=Wt(e)}this._hooks.add(ge(l,De.POINTER_MOVE,r=>{if(r.buttons!==i){this.stopMonitoring(!0);return}r.preventDefault(),this._pointerMoveCallback(r)})),this._hooks.add(ge(l,De.POINTER_UP,r=>this.stopMonitoring(!0)))}}function so(s,e,t){let i=null,n=null;if(typeof t.value=="function"?(i="value",n=t.value,n.length!==0&&console.warn("Memoize should only be used in functions with zero parameters")):typeof t.get=="function"&&(i="get",n=t.get),!n)throw new Error("not supported");const o=`$memoize$${e}`;t[i]=function(...l){return this.hasOwnProperty(o)||Object.defineProperty(this,o,{configurable:!1,enumerable:!1,writable:!1,value:n.apply(this,l)}),this[o]}}var tYe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_n;(function(s){s.Tap="-monaco-gesturetap",s.Change="-monaco-gesturechange",s.Start="-monaco-gesturestart",s.End="-monaco-gesturesend",s.Contextmenu="-monaco-gesturecontextmenu"})(_n||(_n={}));const Cl=class Cl extends de{constructor(){super(),this.dispatched=!1,this.targets=new Pr,this.ignoreTargets=new Pr,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(ve.runAndSubscribe(tY,({window:e,disposables:t})=>{t.add(ge(e.document,"touchstart",i=>this.onTouchStart(i),{passive:!1})),t.add(ge(e.document,"touchend",i=>this.onTouchEnd(e,i))),t.add(ge(e.document,"touchmove",i=>this.onTouchMove(i),{passive:!1}))},{window:Qn,disposables:this._store}))}static addTarget(e){if(!Cl.isTouchDevice())return de.None;Cl.INSTANCE||(Cl.INSTANCE=new Cl);const t=Cl.INSTANCE.targets.push(e);return gt(t)}static ignoreTarget(e){if(!Cl.isTouchDevice())return de.None;Cl.INSTANCE||(Cl.INSTANCE=new Cl);const t=Cl.INSTANCE.ignoreTargets.push(e);return gt(t)}static isTouchDevice(){return"ontouchstart"in Qn||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){const t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,n=e.targetTouches.length;i<n;i++){const o=e.targetTouches.item(i);this.activeTouches[o.identifier]={id:o.identifier,initialTarget:o.target,initialTimeStamp:t,initialPageX:o.pageX,initialPageY:o.pageY,rollingTimestamps:[t],rollingPageX:[o.pageX],rollingPageY:[o.pageY]};const l=this.newGestureEvent(_n.Start,o.target);l.pageX=o.pageX,l.pageY=o.pageY,this.dispatchEvent(l)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}onTouchEnd(e,t){const i=Date.now(),n=Object.keys(this.activeTouches).length;for(let o=0,l=t.changedTouches.length;o<l;o++){const r=t.changedTouches.item(o);if(!this.activeTouches.hasOwnProperty(String(r.identifier))){console.warn("move of an UNKNOWN touch",r);continue}const a=this.activeTouches[r.identifier],d=Date.now()-a.initialTimeStamp;if(d<Cl.HOLD_DELAY&&Math.abs(a.initialPageX-Ac(a.rollingPageX))<30&&Math.abs(a.initialPageY-Ac(a.rollingPageY))<30){const c=this.newGestureEvent(_n.Tap,a.initialTarget);c.pageX=Ac(a.rollingPageX),c.pageY=Ac(a.rollingPageY),this.dispatchEvent(c)}else if(d>=Cl.HOLD_DELAY&&Math.abs(a.initialPageX-Ac(a.rollingPageX))<30&&Math.abs(a.initialPageY-Ac(a.rollingPageY))<30){const c=this.newGestureEvent(_n.Contextmenu,a.initialTarget);c.pageX=Ac(a.rollingPageX),c.pageY=Ac(a.rollingPageY),this.dispatchEvent(c)}else if(n===1){const c=Ac(a.rollingPageX),h=Ac(a.rollingPageY),u=Ac(a.rollingTimestamps)-a.rollingTimestamps[0],m=c-a.rollingPageX[0],p=h-a.rollingPageY[0],g=[...this.targets].filter(b=>a.initialTarget instanceof Node&&b.contains(a.initialTarget));this.inertia(e,g,i,Math.abs(m)/u,m>0?1:-1,c,Math.abs(p)/u,p>0?1:-1,h)}this.dispatchEvent(this.newGestureEvent(_n.End,a.initialTarget)),delete this.activeTouches[r.identifier]}this.dispatched&&(t.preventDefault(),t.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,t){const i=document.createEvent("CustomEvent");return i.initEvent(e,!1,!0),i.initialTarget=t,i.tapCount=0,i}dispatchEvent(e){if(e.type===_n.Tap){const t=new Date().getTime();let i=0;t-this._lastSetTapCountTime>Cl.CLEAR_TAP_COUNT_TIME?i=1:i=2,this._lastSetTapCountTime=t,e.tapCount=i}else(e.type===_n.Change||e.type===_n.Contextmenu)&&(this._lastSetTapCountTime=0);if(e.initialTarget instanceof Node){for(const i of this.ignoreTargets)if(i.contains(e.initialTarget))return;const t=[];for(const i of this.targets)if(i.contains(e.initialTarget)){let n=0,o=e.initialTarget;for(;o&&o!==i;)n++,o=o.parentElement;t.push([n,i])}t.sort((i,n)=>i[0]-n[0]);for(const[i,n]of t)n.dispatchEvent(e),this.dispatched=!0}}inertia(e,t,i,n,o,l,r,a,d){this.handle=Sd(e,()=>{const c=Date.now(),h=c-i;let u=0,m=0,p=!0;n+=Cl.SCROLL_FRICTION*h,r+=Cl.SCROLL_FRICTION*h,n>0&&(p=!1,u=o*n*h),r>0&&(p=!1,m=a*r*h);const g=this.newGestureEvent(_n.Change);g.translationX=u,g.translationY=m,t.forEach(b=>b.dispatchEvent(g)),p||this.inertia(e,t,c,n,o,l+u,r,a,d+m)})}onTouchMove(e){const t=Date.now();for(let i=0,n=e.changedTouches.length;i<n;i++){const o=e.changedTouches.item(i);if(!this.activeTouches.hasOwnProperty(String(o.identifier))){console.warn("end of an UNKNOWN touch",o);continue}const l=this.activeTouches[o.identifier],r=this.newGestureEvent(_n.Change,l.initialTarget);r.translationX=o.pageX-Ac(l.rollingPageX),r.translationY=o.pageY-Ac(l.rollingPageY),r.pageX=o.pageX,r.pageY=o.pageY,this.dispatchEvent(r),l.rollingPageX.length>3&&(l.rollingPageX.shift(),l.rollingPageY.shift(),l.rollingTimestamps.shift()),l.rollingPageX.push(o.pageX),l.rollingPageY.push(o.pageY),l.rollingTimestamps.push(t)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}};Cl.SCROLL_FRICTION=-.005,Cl.HOLD_DELAY=700,Cl.CLEAR_TAP_COUNT_TIME=400;let nr=Cl;tYe([so],nr,"isTouchDevice",null);let bc=class extends de{onclick(e,t){this._register(ge(e,De.CLICK,i=>t(new Jh(Wt(e),i))))}onmousedown(e,t){this._register(ge(e,De.MOUSE_DOWN,i=>t(new Jh(Wt(e),i))))}onmouseover(e,t){this._register(ge(e,De.MOUSE_OVER,i=>t(new Jh(Wt(e),i))))}onmouseleave(e,t){this._register(ge(e,De.MOUSE_LEAVE,i=>t(new Jh(Wt(e),i))))}onkeydown(e,t){this._register(ge(e,De.KEY_DOWN,i=>t(new Jn(i))))}onkeyup(e,t){this._register(ge(e,De.KEY_UP,i=>t(new Jn(i))))}oninput(e,t){this._register(ge(e,De.INPUT,t))}onblur(e,t){this._register(ge(e,De.BLUR,t))}onfocus(e,t){this._register(ge(e,De.FOCUS,t))}ignoreGesture(e){return nr.ignoreTarget(e)}};const rV=11;class iYe extends bc{constructor(e){super(),this._onActivate=e.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=e.bgWidth+"px",this.bgDomNode.style.height=e.bgHeight+"px",typeof e.top<"u"&&(this.bgDomNode.style.top="0px"),typeof e.left<"u"&&(this.bgDomNode.style.left="0px"),typeof e.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof e.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=e.className,this.domNode.classList.add(...Qt.asClassNameArray(e.icon)),this.domNode.style.position="absolute",this.domNode.style.width=rV+"px",this.domNode.style.height=rV+"px",typeof e.top<"u"&&(this.domNode.style.top=e.top+"px"),typeof e.left<"u"&&(this.domNode.style.left=e.left+"px"),typeof e.bottom<"u"&&(this.domNode.style.bottom=e.bottom+"px"),typeof e.right<"u"&&(this.domNode.style.right=e.right+"px"),this._pointerMoveMonitor=this._register(new _Q),this._register(Ms(this.bgDomNode,De.POINTER_DOWN,t=>this._arrowPointerDown(t))),this._register(Ms(this.domNode,De.POINTER_DOWN,t=>this._arrowPointerDown(t))),this._pointerdownRepeatTimer=this._register(new I$),this._pointerdownScheduleRepeatTimer=this._register(new iu)}_arrowPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24,Wt(e))};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(t,200),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,i=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),e.preventDefault()}}class nYe extends de{constructor(e,t,i){super(),this._visibility=e,this._visibleClassName=t,this._invisibleClassName=i,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new iu)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this._updateShouldBeVisible())}setShouldBeVisible(e){this._rawShouldBeVisible=e,this._updateShouldBeVisible()}_applyVisibilitySetting(){return this._visibility===2?!1:this._visibility===3?!0:this._rawShouldBeVisible}_updateShouldBeVisible(){const e=this._applyVisibilitySetting();this._shouldBeVisible!==e&&(this._shouldBeVisible=e,this.ensureVisibility())}setIsNeeded(e){this._isNeeded!==e&&(this._isNeeded=e,this.ensureVisibility())}setDomNode(e){this._domNode=e,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){if(!this._isNeeded){this._hide(!1);return}this._shouldBeVisible?this._reveal():this._hide(!0)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet(()=>{var e;(e=this._domNode)==null||e.setClassName(this._visibleClassName)},0))}_hide(e){var t;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(t=this._domNode)==null||t.setClassName(this._invisibleClassName+(e?" fade":"")))}}const sYe=140;class z0e extends bc{constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollByPage=e.scrollByPage,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new nYe(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new _Q),this._shouldRender=!0,this.domNode=an(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(ge(this.domNode.domNode,De.POINTER_DOWN,t=>this._domNodePointerDown(t)))}_createArrow(e){const t=this._register(new iYe(e));this.domNode.domNode.appendChild(t.bgDomNode),this.domNode.domNode.appendChild(t.domNode)}_createSlider(e,t,i,n){this.slider=an(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(t),typeof i=="number"&&this.slider.setWidth(i),typeof n=="number"&&this.slider.setHeight(n),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(ge(this.slider.domNode,De.POINTER_DOWN,o=>{o.button===0&&(o.preventDefault(),this._sliderPointerDown(o))})),this.onclick(this.slider.domNode,o=>{o.leftButton&&o.stopPropagation()})}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(e){e.target===this.domNode.domNode&&this._onPointerDown(e)}delegatePointerDown(e){const t=this.domNode.domNode.getClientRects()[0].top,i=t+this._scrollbarState.getSliderPosition(),n=t+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),o=this._sliderPointerPosition(e);i<=o&&o<=n?e.button===0&&(e.preventDefault(),this._sliderPointerDown(e)):this._onPointerDown(e)}_onPointerDown(e){let t,i;if(e.target===this.domNode.domNode&&typeof e.offsetX=="number"&&typeof e.offsetY=="number")t=e.offsetX,i=e.offsetY;else{const o=_s(this.domNode.domNode);t=e.pageX-o.left,i=e.pageY-o.top}const n=this._pointerDownRelativePosition(t,i);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(n):this._scrollbarState.getDesiredScrollPositionFromOffset(n)),e.button===0&&(e.preventDefault(),this._sliderPointerDown(e))}_sliderPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._sliderPointerPosition(e),i=this._sliderOrthogonalPointerPosition(e),n=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,o=>{const l=this._sliderOrthogonalPointerPosition(o),r=Math.abs(l-i);if(Gl&&r>sYe){this._setDesiredScrollPositionNow(n.getScrollPosition());return}const d=this._sliderPointerPosition(o)-t;this._setDesiredScrollPositionNow(n.getDesiredScrollPositionFromDelta(d))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(e){const t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}const oYe=20;class aV{constructor(e,t,i,n,o,l){this._scrollbarSize=Math.round(t),this._oppositeScrollbarSize=Math.round(i),this._arrowSize=Math.round(e),this._visibleSize=n,this._scrollSize=o,this._scrollPosition=l,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new aV(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){const t=Math.round(e);return this._visibleSize!==t?(this._visibleSize=t,this._refreshComputedValues(),!0):!1}setScrollSize(e){const t=Math.round(e);return this._scrollSize!==t?(this._scrollSize=t,this._refreshComputedValues(),!0):!1}setScrollPosition(e){const t=Math.round(e);return this._scrollPosition!==t?(this._scrollPosition=t,this._refreshComputedValues(),!0):!1}setScrollbarSize(e){this._scrollbarSize=Math.round(e)}setOppositeScrollbarSize(e){this._oppositeScrollbarSize=Math.round(e)}static _computeValues(e,t,i,n,o){const l=Math.max(0,i-e),r=Math.max(0,l-2*t),a=n>0&&n>i;if(!a)return{computedAvailableSize:Math.round(l),computedIsNeeded:a,computedSliderSize:Math.round(r),computedSliderRatio:0,computedSliderPosition:0};const d=Math.round(Math.max(oYe,Math.floor(i*r/n))),c=(r-d)/(n-i),h=o*c;return{computedAvailableSize:Math.round(l),computedIsNeeded:a,computedSliderSize:Math.round(d),computedSliderRatio:c,computedSliderPosition:Math.round(h)}}_refreshComputedValues(){const e=aV._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize;let i=this._scrollPosition;return t<this._computedSliderPosition?i-=this._visibleSize:i+=this._visibleSize,i}getDesiredScrollPositionFromDelta(e){if(!this._computedIsNeeded)return 0;const t=this._computedSliderPosition+e;return Math.round(t/this._computedSliderRatio)}}class lYe extends z0e{constructor(e,t,i){const n=e.getScrollDimensions(),o=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new aV(t.horizontalHasArrows?t.arrowSize:0,t.horizontal===2?0:t.horizontalScrollbarSize,t.vertical===2?0:t.verticalScrollbarSize,n.width,n.scrollWidth,o.scrollLeft),visibility:t.horizontal,extraScrollbarClassName:"horizontal",scrollable:e,scrollByPage:t.scrollByPage}),t.horizontalHasArrows){const l=(t.arrowSize-rV)/2,r=(t.horizontalScrollbarSize-rV)/2;this._createArrow({className:"scra",icon:ke.scrollbarButtonLeft,top:r,left:l,bottom:void 0,right:void 0,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new AA(null,1,0))}),this._createArrow({className:"scra",icon:ke.scrollbarButtonRight,top:r,left:void 0,bottom:void 0,right:l,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new AA(null,-1,0))})}this._createSlider(Math.floor((t.horizontalScrollbarSize-t.horizontalSliderSize)/2),0,void 0,t.horizontalSliderSize)}_updateSlider(e,t){this.slider.setWidth(e),this.slider.setLeft(t)}_renderDomNode(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return e}_sliderPointerPosition(e){return e.pageX}_sliderOrthogonalPointerPosition(e){return e.pageY}_updateScrollbarSize(e){this.slider.setHeight(e)}writeScrollPosition(e,t){e.scrollLeft=t}updateOptions(e){this.updateScrollbarSize(e.horizontal===2?0:e.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(e.vertical===2?0:e.verticalScrollbarSize),this._visibilityController.setVisibility(e.horizontal),this._scrollByPage=e.scrollByPage}}class rYe extends z0e{constructor(e,t,i){const n=e.getScrollDimensions(),o=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new aV(t.verticalHasArrows?t.arrowSize:0,t.vertical===2?0:t.verticalScrollbarSize,0,n.height,n.scrollHeight,o.scrollTop),visibility:t.vertical,extraScrollbarClassName:"vertical",scrollable:e,scrollByPage:t.scrollByPage}),t.verticalHasArrows){const l=(t.arrowSize-rV)/2,r=(t.verticalScrollbarSize-rV)/2;this._createArrow({className:"scra",icon:ke.scrollbarButtonUp,top:l,left:r,bottom:void 0,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new AA(null,0,1))}),this._createArrow({className:"scra",icon:ke.scrollbarButtonDown,top:void 0,left:r,bottom:l,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new AA(null,0,-1))})}this._createSlider(0,Math.floor((t.verticalScrollbarSize-t.verticalSliderSize)/2),t.verticalSliderSize,void 0)}_updateSlider(e,t){this.slider.setHeight(e),this.slider.setTop(t)}_renderDomNode(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return t}_sliderPointerPosition(e){return e.pageY}_sliderOrthogonalPointerPosition(e){return e.pageX}_updateScrollbarSize(e){this.slider.setWidth(e)}writeScrollPosition(e,t){e.scrollTop=t}updateOptions(e){this.updateScrollbarSize(e.vertical===2?0:e.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(e.vertical),this._scrollByPage=e.scrollByPage}}class av{constructor(e,t,i,n,o,l,r){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t=t|0,i=i|0,n=n|0,o=o|0,l=l|0,r=r|0),this.rawScrollLeft=n,this.rawScrollTop=r,t<0&&(t=0),n+t>i&&(n=i-t),n<0&&(n=0),o<0&&(o=0),r+o>l&&(r=l-o),r<0&&(r=0),this.width=t,this.scrollWidth=i,this.scrollLeft=n,this.height=o,this.scrollHeight=l,this.scrollTop=r}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,t){return new av(this._forceIntegerValues,typeof e.width<"u"?e.width:this.width,typeof e.scrollWidth<"u"?e.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,typeof e.height<"u"?e.height:this.height,typeof e.scrollHeight<"u"?e.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new av(this._forceIntegerValues,this.width,this.scrollWidth,typeof e.scrollLeft<"u"?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof e.scrollTop<"u"?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,t){const i=this.width!==e.width,n=this.scrollWidth!==e.scrollWidth,o=this.scrollLeft!==e.scrollLeft,l=this.height!==e.height,r=this.scrollHeight!==e.scrollHeight,a=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:t,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:i,scrollWidthChanged:n,scrollLeftChanged:o,heightChanged:l,scrollHeightChanged:r,scrollTopChanged:a}}}class OQ extends de{constructor(e){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new re),this.onScroll=this._onScroll.event,this._smoothScrollDuration=e.smoothScrollDuration,this._scheduleAtNextAnimationFrame=e.scheduleAtNextAnimationFrame,this._state=new av(e.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(e){this._smoothScrollDuration=e}validateScrollPosition(e){return this._state.withScrollPosition(e)}getScrollDimensions(){return this._state}setScrollDimensions(e,t){var n;const i=this._state.withScrollDimensions(e,t);this._setState(i,!!this._smoothScrolling),(n=this._smoothScrolling)==null||n.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(e){const t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(e,t){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:typeof e.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:typeof e.scrollTop>"u"?this._smoothScrolling.to.scrollTop:e.scrollTop};const i=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===i.scrollLeft&&this._smoothScrolling.to.scrollTop===i.scrollTop)return;let n;t?n=new AM(this._smoothScrolling.from,i,this._smoothScrolling.startTime,this._smoothScrolling.duration):n=this._smoothScrolling.combine(this._state,i,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=n}else{const i=this._state.withScrollPosition(e);this._smoothScrolling=AM.start(this._state,i,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;const e=this._smoothScrolling.tick(),t=this._state.withScrollPosition(e);if(this._setState(t,!0),!!this._smoothScrolling){if(e.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(e,t){const i=this._state;i.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(i,t)))}}class Nle{constructor(e,t,i){this.scrollLeft=e,this.scrollTop=t,this.isDone=i}}function g3(s,e){const t=e-s;return function(i){return s+t*cYe(i)}}function aYe(s,e,t){return function(i){return i<t?s(i/t):e((i-t)/(1-t))}}class AM{constructor(e,t,i,n){this.from=e,this.to=t,this.duration=n,this.startTime=i,this.animationFrameDisposable=null,this._initAnimations()}_initAnimations(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}_initAnimation(e,t,i){if(Math.abs(e-t)>2.5*i){let o,l;return e<t?(o=e+.75*i,l=t-.75*i):(o=e-.75*i,l=t+.75*i),aYe(g3(e,o),g3(l,t),.33)}return g3(e,t)}dispose(){this.animationFrameDisposable!==null&&(this.animationFrameDisposable.dispose(),this.animationFrameDisposable=null)}acceptScrollDimensions(e){this.to=e.withScrollPosition(this.to),this._initAnimations()}tick(){return this._tick(Date.now())}_tick(e){const t=(e-this.startTime)/this.duration;if(t<1){const i=this.scrollLeft(t),n=this.scrollTop(t);return new Nle(i,n,!1)}return new Nle(this.to.scrollLeft,this.to.scrollTop,!0)}combine(e,t,i){return AM.start(e,t,i)}static start(e,t,i){i=i+10;const n=Date.now()-10;return new AM(e,t,n,i)}}function dYe(s){return Math.pow(s,3)}function cYe(s){return 1-dYe(1-s)}const hYe=500,Rle=50;class uYe{constructor(e,t,i){this.timestamp=e,this.deltaX=t,this.deltaY=i,this.score=0}}const pX=class pX{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(this._front===-1&&this._rear===-1)return!1;let e=1,t=0,i=1,n=this._rear;do{const o=n===this._front?e:Math.pow(2,-i);if(e-=o,t+=this._memory[n].score*o,n===this._front)break;n=(this._capacity+n-1)%this._capacity,i++}while(!0);return t<=.5}acceptStandardWheelEvent(e){if(nB){const t=Wt(e.browserEvent),i=wGe(t);this.accept(Date.now(),e.deltaX*i,e.deltaY*i)}else this.accept(Date.now(),e.deltaX,e.deltaY)}accept(e,t,i){let n=null;const o=new uYe(e,t,i);this._front===-1&&this._rear===-1?(this._memory[0]=o,this._front=0,this._rear=0):(n=this._memory[this._rear],this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=o),o.score=this._computeScore(o,n)}_computeScore(e,t){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;let i=.5;if((!this._isAlmostInt(e.deltaX)||!this._isAlmostInt(e.deltaY))&&(i+=.25),t){const n=Math.abs(e.deltaX),o=Math.abs(e.deltaY),l=Math.abs(t.deltaX),r=Math.abs(t.deltaY),a=Math.max(Math.min(n,l),1),d=Math.max(Math.min(o,r),1),c=Math.max(n,l),h=Math.max(o,r);c%a===0&&h%d===0&&(i-=.5)}return Math.min(Math.max(i,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}};pX.INSTANCE=new pX;let dv=pX;class mee extends bc{get options(){return this._options}constructor(e,t,i){super(),this._onScroll=this._register(new re),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new re),e.style.overflow="hidden",this._options=mYe(t),this._scrollable=i,this._register(this._scrollable.onScroll(o=>{this._onWillScroll.fire(o),this._onDidScroll(o),this._onScroll.fire(o)}));const n={onMouseWheel:o=>this._onMouseWheel(o),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new rYe(this._scrollable,this._options,n)),this._horizontalScrollbar=this._register(new lYe(this._scrollable,this._options,n)),this._domNode=document.createElement("div"),this._domNode.className="monaco-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.style.overflow="hidden",this._domNode.appendChild(e),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=an(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=an(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=an(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,o=>this._onMouseOver(o)),this.onmouseleave(this._listenOnDomNode,o=>this._onMouseLeave(o)),this._hideTimeout=this._register(new iu),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=Tn(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(e){this._verticalScrollbar.delegatePointerDown(e)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(e){this._scrollable.setScrollDimensions(e,!1)}updateClassName(e){this._options.className=e,Fi&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(e){typeof e.handleMouseWheel<"u"&&(this._options.handleMouseWheel=e.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof e.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=e.mouseWheelScrollSensitivity),typeof e.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=e.fastScrollSensitivity),typeof e.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=e.scrollPredominantAxis),typeof e.horizontal<"u"&&(this._options.horizontal=e.horizontal),typeof e.vertical<"u"&&(this._options.vertical=e.vertical),typeof e.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=e.horizontalScrollbarSize),typeof e.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=e.verticalScrollbarSize),typeof e.scrollByPage<"u"&&(this._options.scrollByPage=e.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(e){this._onMouseWheel(new AA(e))}_setListeningToMouseWheel(e){if(this._mouseWheelToDispose.length>0!==e&&(this._mouseWheelToDispose=Tn(this._mouseWheelToDispose),e)){const i=n=>{this._onMouseWheel(new AA(n))};this._mouseWheelToDispose.push(ge(this._listenOnDomNode,De.MOUSE_WHEEL,i,{passive:!1}))}}_onMouseWheel(e){var o;if((o=e.browserEvent)!=null&&o.defaultPrevented)return;const t=dv.INSTANCE;t.acceptStandardWheelEvent(e);let i=!1;if(e.deltaY||e.deltaX){let l=e.deltaY*this._options.mouseWheelScrollSensitivity,r=e.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&r+l===0?r=l=0:Math.abs(l)>=Math.abs(r)?r=0:l=0),this._options.flipAxes&&([l,r]=[r,l]);const a=!Fi&&e.browserEvent&&e.browserEvent.shiftKey;(this._options.scrollYToX||a)&&!r&&(r=l,l=0),e.browserEvent&&e.browserEvent.altKey&&(r=r*this._options.fastScrollSensitivity,l=l*this._options.fastScrollSensitivity);const d=this._scrollable.getFutureScrollPosition();let c={};if(l){const h=Rle*l,u=d.scrollTop-(h<0?Math.floor(h):Math.ceil(h));this._verticalScrollbar.writeScrollPosition(c,u)}if(r){const h=Rle*r,u=d.scrollLeft-(h<0?Math.floor(h):Math.ceil(h));this._horizontalScrollbar.writeScrollPosition(c,u)}c=this._scrollable.validateScrollPosition(c),(d.scrollLeft!==c.scrollLeft||d.scrollTop!==c.scrollTop)&&(this._options.mouseWheelSmoothScroll&&t.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(c):this._scrollable.setScrollPositionNow(c),i=!0)}let n=i;!n&&this._options.alwaysConsumeMouseWheel&&(n=!0),!n&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(n=!0),n&&(e.preventDefault(),e.stopPropagation())}_onDidScroll(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const e=this._scrollable.getCurrentScrollPosition(),t=e.scrollTop>0,i=e.scrollLeft>0,n=i?" left":"",o=t?" top":"",l=i||t?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${n}`),this._topShadowDomNode.setClassName(`shadow${o}`),this._topLeftShadowDomNode.setClassName(`shadow${l}${o}${n}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(e){this._mouseIsOver=!1,this._hide()}_onMouseOver(e){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),hYe)}}class _0e extends mee{constructor(e,t){t=t||{},t.mouseWheelSmoothScroll=!1;const i=new OQ({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:n=>Sd(Wt(e),n)});super(e,t,i),this._register(i)}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}}class QY extends mee{constructor(e,t,i){super(e,t,i)}setScrollPosition(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}class dB extends mee{constructor(e,t){t=t||{},t.mouseWheelSmoothScroll=!1;const i=new OQ({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:n=>Sd(Wt(e),n)});super(e,t,i),this._register(i),this._element=e,this._register(this.onScroll(n=>{n.scrollTopChanged&&(this._element.scrollTop=n.scrollTop),n.scrollLeftChanged&&(this._element.scrollLeft=n.scrollLeft)})),this.scanDomNode()}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}function mYe(s){const e={lazyRender:typeof s.lazyRender<"u"?s.lazyRender:!1,className:typeof s.className<"u"?s.className:"",useShadows:typeof s.useShadows<"u"?s.useShadows:!0,handleMouseWheel:typeof s.handleMouseWheel<"u"?s.handleMouseWheel:!0,flipAxes:typeof s.flipAxes<"u"?s.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof s.consumeMouseWheelIfScrollbarIsNeeded<"u"?s.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof s.alwaysConsumeMouseWheel<"u"?s.alwaysConsumeMouseWheel:!1,scrollYToX:typeof s.scrollYToX<"u"?s.scrollYToX:!1,mouseWheelScrollSensitivity:typeof s.mouseWheelScrollSensitivity<"u"?s.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof s.fastScrollSensitivity<"u"?s.fastScrollSensitivity:5,scrollPredominantAxis:typeof s.scrollPredominantAxis<"u"?s.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof s.mouseWheelSmoothScroll<"u"?s.mouseWheelSmoothScroll:!0,arrowSize:typeof s.arrowSize<"u"?s.arrowSize:11,listenOnDomNode:typeof s.listenOnDomNode<"u"?s.listenOnDomNode:null,horizontal:typeof s.horizontal<"u"?s.horizontal:1,horizontalScrollbarSize:typeof s.horizontalScrollbarSize<"u"?s.horizontalScrollbarSize:10,horizontalSliderSize:typeof s.horizontalSliderSize<"u"?s.horizontalSliderSize:0,horizontalHasArrows:typeof s.horizontalHasArrows<"u"?s.horizontalHasArrows:!1,vertical:typeof s.vertical<"u"?s.vertical:1,verticalScrollbarSize:typeof s.verticalScrollbarSize<"u"?s.verticalScrollbarSize:10,verticalHasArrows:typeof s.verticalHasArrows<"u"?s.verticalHasArrows:!1,verticalSliderSize:typeof s.verticalSliderSize<"u"?s.verticalSliderSize:0,scrollByPage:typeof s.scrollByPage<"u"?s.scrollByPage:!1};return e.horizontalSliderSize=typeof s.horizontalSliderSize<"u"?s.horizontalSliderSize:e.horizontalScrollbarSize,e.verticalSliderSize=typeof s.verticalSliderSize<"u"?s.verticalSliderSize:e.verticalScrollbarSize,Fi&&(e.className+=" mac"),e}const XL=Ge;let pee=class extends de{constructor(){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new dB(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}};class yY extends de{static render(e,t,i){return new yY(e,t,i)}constructor(e,t,i){super(),this.actionLabel=t.label,this.actionKeybindingLabel=i,this.actionContainer=ye(e,XL("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=ye(this.actionContainer,XL("a.action")),this.action.setAttribute("role","button"),t.iconClass&&ye(this.action,XL(`span.icon.${t.iconClass}`));const n=ye(this.action,XL("span"));n.textContent=i?`${t.label} (${i})`:t.label,this._store.add(new j0e(this.actionContainer,t.run)),this._store.add(new H0e(this.actionContainer,t.run,[3,10])),this.setEnabled(!0)}setEnabled(e){e?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}function O0e(s,e){return s&&e?U("acessibleViewHint","Inspect this in the accessible view with {0}.",e):s?U("acessibleViewHintNoKbOpen","Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."):""}class j0e extends de{constructor(e,t){super(),this._register(ge(e,De.CLICK,i=>{i.stopPropagation(),i.preventDefault(),t(e)}))}}class H0e extends de{constructor(e,t,i){super(),this._register(ge(e,De.KEY_DOWN,n=>{const o=new Jn(n);i.some(l=>o.equals(l))&&(n.stopPropagation(),n.preventDefault(),t(e))}))}}const za=Zi("openerService");function pYe(s){let e;const t=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(s.fragment);return t&&(e={startLineNumber:parseInt(t[1]),startColumn:t[2]?parseInt(t[2]):1,endLineNumber:t[4]?parseInt(t[4]):void 0,endColumn:t[4]?t[5]?parseInt(t[5]):1:void 0},s=s.with({fragment:""})),{selection:e,uri:s}}class Qi{get event(){return this.emitter.event}constructor(e,t,i){const n=o=>this.emitter.fire(o);this.emitter=new re({onWillAddFirstListener:()=>e.addEventListener(t,n,i),onDidRemoveLastListener:()=>e.removeEventListener(t,n,i)})}dispose(){this.emitter.dispose()}}function gYe(s,e={}){const t=gee(e);return t.textContent=s,t}function bYe(s,e={}){const t=gee(e);return P0e(t,fYe(s,!!e.renderCodeSegments),e.actionHandler,e.renderCodeSegments),t}function gee(s){const e=s.inline?"span":"div",t=document.createElement(e);return s.className&&(t.className=s.className),t}class UYe{constructor(e){this.source=e,this.index=0}eos(){return this.index>=this.source.length}next(){const e=this.peek();return this.advance(),e}peek(){return this.source[this.index]}advance(){this.index++}}function P0e(s,e,t,i){let n;if(e.type===2)n=document.createTextNode(e.content||"");else if(e.type===3)n=document.createElement("b");else if(e.type===4)n=document.createElement("i");else if(e.type===7&&i)n=document.createElement("code");else if(e.type===5&&t){const o=document.createElement("a");t.disposables.add(Ms(o,"click",l=>{t.callback(String(e.index),l)})),n=o}else e.type===8?n=document.createElement("br"):e.type===1&&(n=s);n&&s!==n&&s.appendChild(n),n&&Array.isArray(e.children)&&e.children.forEach(o=>{P0e(n,o,t,i)})}function fYe(s,e){const t={type:1,children:[]};let i=0,n=t;const o=[],l=new UYe(s);for(;!l.eos();){let r=l.next();const a=r==="\\"&&bP(l.peek(),e)!==0;if(a&&(r=l.next()),!a&&FYe(r,e)&&r===l.peek()){l.advance(),n.type===2&&(n=o.pop());const d=bP(r,e);if(n.type===d||n.type===5&&d===6)n=o.pop();else{const c={type:d,children:[]};d===5&&(c.index=i,i++),n.children.push(c),o.push(n),n=c}}else if(r===`
- `)n.type===2&&(n=o.pop()),n.children.push({type:8});else if(n.type!==2){const d={type:2,content:r};n.children.push(d),o.push(n),n=d}else n.content+=r}return n.type===2&&(n=o.pop()),t}function FYe(s,e){return bP(s,e)!==0}function bP(s,e){switch(s){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return e?7:0;default:return 0}}const ZYe=new RegExp(`(\\\\)?\\$\\((${Qt.iconNameExpression}(?:${Qt.iconModifierExpression})?)\\)`,"g");function DU(s){const e=new Array;let t,i=0,n=0;for(;(t=ZYe.exec(s))!==null;){n=t.index||0,i<n&&e.push(s.substring(i,n)),i=(t.index||0)+t[0].length;const[,o,l]=t;e.push(o?`$(${l})`:VA({id:l}))}return i<s.length&&e.push(s.substring(i)),e}function VA(s){const e=Ge("span");return e.classList.add(...Qt.asClassNameArray(s)),e}function AYe(s){const e=NYe(s);if(e&&e.length>0)return new Uint32Array(e)}let xd=0;const vb=new Uint32Array(10);function NYe(s){if(xd=0,mm(s,b3,4352),xd>0||(mm(s,U3,4449),xd>0)||(mm(s,f3,4520),xd>0)||(mm(s,Bf,12593),xd))return vb.subarray(0,xd);if(s>=44032&&s<=55203){const e=s-44032,t=e%588,i=Math.floor(e/588),n=Math.floor(t/28),o=t%28-1;if(i<b3.length?mm(i,b3,0):4352+i-12593<Bf.length&&mm(4352+i,Bf,12593),n<U3.length?mm(n,U3,0):4449+n-12593<Bf.length&&mm(4449+n-12593,Bf,12593),o>=0&&(o<f3.length?mm(o,f3,0):4520+o-12593<Bf.length&&mm(4520+o-12593,Bf,12593)),xd>0)return vb.subarray(0,xd)}}function mm(s,e,t){s>=t&&s<t+e.length&&RYe(e[s-t])}function RYe(s){s!==0&&(vb[xd++]=s&255,s>>8&&(vb[xd++]=s>>8&255),s>>16&&(vb[xd++]=s>>16&255))}const b3=new Uint8Array([114,82,115,101,69,102,97,113,81,116,84,100,119,87,99,122,120,118,103]),U3=new Uint16Array([107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]),f3=new Uint16Array([114,82,29810,115,30579,26483,101,102,29286,24934,29030,29798,30822,30310,26470,97,113,29809,116,84,100,119,99,122,120,118,103]),Bf=new Uint16Array([114,82,29810,115,30579,26483,101,69,102,29286,24934,29030,29798,30822,30310,26470,97,113,81,29809,116,84,100,119,87,99,122,120,118,103,107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]);function bee(...s){return function(e,t){for(let i=0,n=s.length;i<n;i++){const o=s[i](e,t);if(o)return o}return null}}K0e.bind(void 0,!1);const NM=K0e.bind(void 0,!0);function K0e(s,e,t){if(!t||t.length<e.length)return null;let i;return s?i=V$(t,e):i=t.indexOf(e)===0,i?e.length>0?[{start:0,end:e.length}]:[]:null}function q0e(s,e){const t=e.toLowerCase().indexOf(s.toLowerCase());return t===-1?null:[{start:t,end:t+s.length}]}function $0e(s,e){return UP(s.toLowerCase(),e.toLowerCase(),0,0)}function UP(s,e,t,i){if(t===s.length)return[];if(i===e.length)return null;if(s[t]===e[i]){let n=null;return(n=UP(s,e,t+1,i+1))?Fee({start:i,end:i+1},n):null}return UP(s,e,t,i+1)}function Uee(s){return 97<=s&&s<=122}function CY(s){return 65<=s&&s<=90}function fee(s){return 48<=s&&s<=57}function ebe(s){return s===32||s===9||s===10||s===13}const tbe=new Set;"()[]{}<>`'\"-/;:,.?!".split("").forEach(s=>tbe.add(s.charCodeAt(0)));function cv(s){return ebe(s)||tbe.has(s)}function Sle(s,e){return s===e||cv(s)&&cv(e)}const F3=new Map;function Wle(s){if(F3.has(s))return F3.get(s);let e;const t=AYe(s);return t&&(e=t),F3.set(s,e),e}function ibe(s){return Uee(s)||CY(s)||fee(s)}function Fee(s,e){return e.length===0?e=[s]:s.end===e[0].start?e[0].start=s.start:e.unshift(s),e}function nbe(s,e){for(let t=e;t<s.length;t++){const i=s.charCodeAt(t);if(CY(i)||fee(i)||t>0&&!ibe(s.charCodeAt(t-1)))return t}return s.length}function fP(s,e,t,i){if(t===s.length)return[];if(i===e.length)return null;if(s[t]!==e[i].toLowerCase())return null;{let n=null,o=i+1;for(n=fP(s,e,t+1,i+1);!n&&(o=nbe(e,o))<e.length;)n=fP(s,e,t+1,o),o++;return n===null?null:Fee({start:i,end:i+1},n)}}function SYe(s){let e=0,t=0,i=0,n=0,o=0;for(let c=0;c<s.length;c++)o=s.charCodeAt(c),CY(o)&&e++,Uee(o)&&t++,ibe(o)&&i++,fee(o)&&n++;const l=e/s.length,r=t/s.length,a=i/s.length,d=n/s.length;return{upperPercent:l,lowerPercent:r,alphaPercent:a,numericPercent:d}}function WYe(s){const{upperPercent:e,lowerPercent:t}=s;return t===0&&e>.6}function VYe(s){const{upperPercent:e,lowerPercent:t,alphaPercent:i,numericPercent:n}=s;return t>.2&&e<.8&&i>.6&&n<.2}function QYe(s){let e=0,t=0,i=0,n=0;for(let o=0;o<s.length;o++)i=s.charCodeAt(o),CY(i)&&e++,Uee(i)&&t++,ebe(i)&&n++;return(e===0||t===0)&&n===0?s.length<=30:e<=5}function sbe(s,e){if(!e||(e=e.trim(),e.length===0)||!QYe(s))return null;e.length>60&&(e=e.substring(0,60));const t=SYe(e);if(!VYe(t)){if(!WYe(t))return null;e=e.toLowerCase()}let i=null,n=0;for(s=s.toLowerCase();n<e.length&&(i=fP(s,e,0,n))===null;)n=nbe(e,n+1);return i}function yYe(s,e,t=!1){if(!e||e.length===0)return null;let i=null,n=0;for(s=s.toLowerCase(),e=e.toLowerCase();n<e.length&&(i=FP(s,e,0,n,t),i===null);)n=obe(e,n+1);return i}function FP(s,e,t,i,n){let o=0;if(t===s.length)return[];if(i===e.length)return null;if(!Sle(s.charCodeAt(t),e.charCodeAt(i))){const a=Wle(s.charCodeAt(t));if(!a)return null;for(let d=0;d<a.length;d++)if(!Sle(a[d],e.charCodeAt(i+d)))return null;o+=a.length-1}let l=null,r=i+o+1;if(l=FP(s,e,t+1,r,n),!n)for(;!l&&(r=obe(e,r))<e.length;)l=FP(s,e,t+1,r,n),r++;if(!l)return null;if(s.charCodeAt(t)!==e.charCodeAt(i)){const a=Wle(s.charCodeAt(t));if(!a)return l;for(let d=0;d<a.length;d++)if(a[d]!==e.charCodeAt(i+d))return l}return Fee({start:i,end:i+o+1},l)}function obe(s,e){for(let t=e;t<s.length;t++)if(cv(s.charCodeAt(t))||t>0&&cv(s.charCodeAt(t-1)))return t;return s.length}const CYe=bee(NM,sbe,q0e),wYe=bee(NM,sbe,$0e),Vle=new Ip(1e4);function Qle(s,e,t=!1){if(typeof s!="string"||typeof e!="string")return null;let i=Vle.get(s);i||(i=new RegExp(bGe(s),"i"),Vle.set(s,i));const n=i.exec(e);return n?[{start:n.index,end:n.index+n[0].length}]:t?wYe(s,e):CYe(s,e)}function MYe(s,e){const t=QA(s,s.toLowerCase(),0,e,e.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return t?cB(t):null}function TYe(s,e,t,i,n,o){const l=Math.min(13,s.length);for(;t<l;t++){const r=QA(s,e,t,i,n,o,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(r)return r}return[0,o]}function cB(s){if(typeof s>"u")return[];const e=[],t=s[1];for(let i=s.length-1;i>1;i--){const n=s[i]+t,o=e[e.length-1];o&&o.end===n?o.end=n+1:e.push({start:n,end:n+1})}return e}const hU=128;function Zee(){const s=[],e=[];for(let t=0;t<=hU;t++)e[t]=0;for(let t=0;t<=hU;t++)s.push(e.slice(0));return s}function lbe(s){const e=[];for(let t=0;t<=s;t++)e[t]=0;return e}const rbe=lbe(2*hU),ZP=lbe(2*hU),_p=Zee(),Lf=Zee(),YL=Zee();function zL(s,e){if(e<0||e>=s.length)return!1;const t=s.codePointAt(e);switch(t){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 62:case 40:case 41:case 91:case 93:case 123:case 125:return!0;case void 0:return!1;default:return!!w$(t)}}function yle(s,e){if(e<0||e>=s.length)return!1;switch(s.charCodeAt(e)){case 32:case 9:return!0;default:return!1}}function lD(s,e,t){return e[s]!==t[s]}function BYe(s,e,t,i,n,o,l=!1){for(;e<t&&n<o;)s[e]===i[n]&&(l&&(rbe[e]=n),e+=1),n+=1;return e===t}var _u;(function(s){s.Default=[-100,0];function e(t){return!t||t.length===2&&t[0]===-100&&t[1]===0}s.isDefault=e})(_u||(_u={}));const hne=class hne{constructor(e,t){this.firstMatchCanBeWeak=e,this.boostFullMatch=t}};hne.default={boostFullMatch:!0,firstMatchCanBeWeak:!1};let RM=hne;function QA(s,e,t,i,n,o,l=RM.default){const r=s.length>hU?hU:s.length,a=i.length>hU?hU:i.length;if(t>=r||o>=a||r-t>a-o||!BYe(e,t,r,n,o,a,!0))return;LYe(r,a,t,o,e,n);let d=1,c=1,h=t,u=o;const m=[!1];for(d=1,h=t;h<r;d++,h++){const Z=rbe[h],A=ZP[h],N=h+1<r?ZP[h+1]:a;for(c=Z-o+1,u=Z;u<N;c++,u++){let W=Number.MIN_SAFE_INTEGER,Q=!1;u<=A&&(W=kYe(s,e,h,t,i,n,u,a,o,_p[d-1][c-1]===0,m));let R=0;W!==Number.MAX_SAFE_INTEGER&&(Q=!0,R=W+Lf[d-1][c-1]);const M=u>Z,w=M?Lf[d][c-1]+(_p[d][c-1]>0?-5:0):0,Y=u>Z+1&&_p[d][c-1]>0,G=Y?Lf[d][c-2]+(_p[d][c-2]>0?-5:0):0;if(Y&&(!M||G>=w)&&(!Q||G>=R))Lf[d][c]=G,YL[d][c]=3,_p[d][c]=0;else if(M&&(!Q||w>=R))Lf[d][c]=w,YL[d][c]=2,_p[d][c]=0;else if(Q)Lf[d][c]=R,YL[d][c]=1,_p[d][c]=_p[d-1][c-1]+1;else throw new Error("not possible")}}if(!m[0]&&!l.firstMatchCanBeWeak)return;d--,c--;const p=[Lf[d][c],o];let g=0,b=0;for(;d>=1;){let Z=c;do{const A=YL[d][Z];if(A===3)Z=Z-2;else if(A===2)Z=Z-1;else break}while(Z>=1);g>1&&e[t+d-1]===n[o+c-1]&&!lD(Z+o-1,i,n)&&g+1>_p[d][Z]&&(Z=c),Z===c?g++:g=1,b||(b=Z),d--,c=Z-1,p.push(c)}a-o===r&&l.boostFullMatch&&(p[0]+=2);const f=b-r;return p[0]-=f,p}function LYe(s,e,t,i,n,o){let l=s-1,r=e-1;for(;l>=t&&r>=i;)n[l]===o[r]&&(ZP[l]=r,l--),r--}function kYe(s,e,t,i,n,o,l,r,a,d,c){if(e[t]!==o[l])return Number.MIN_SAFE_INTEGER;let h=1,u=!1;return l===t-i?h=s[t]===n[l]?7:5:lD(l,n,o)&&(l===0||!lD(l-1,n,o))?(h=s[t]===n[l]?7:5,u=!0):zL(o,l)&&(l===0||!zL(o,l-1))?h=5:(zL(o,l-1)||yle(o,l-1))&&(h=5,u=!0),h>1&&t===i&&(c[0]=!0),u||(u=lD(l,n,o)||zL(o,l-1)||yle(o,l-1)),t===i?l>a&&(h-=u?3:5):d?h+=u?2:0:h+=u?0:1,l+1===r&&(h-=u?3:5),h}function IYe(s,e,t,i,n,o,l){return DYe(s,e,t,i,n,o,!0,l)}function DYe(s,e,t,i,n,o,l,r){let a=QA(s,e,t,i,n,o,r);if(a&&!l)return a;if(s.length>=3){const d=Math.min(7,s.length-1);for(let c=t+1;c<d;c++){const h=GYe(s,c);if(h){const u=QA(h,h.toLowerCase(),t,i,n,o,r);u&&(u[0]-=3,(!a||u[0]>a[0])&&(a=u))}}}return a}function GYe(s,e){if(e+1>=s.length)return;const t=s[e],i=s[e+1];if(t!==i)return s.slice(0,e)+i+t+s.slice(e+2)}const EYe="$(",Aee=new RegExp(`\\$\\(${Qt.iconNameExpression}(?:${Qt.iconModifierExpression})?\\)`,"g"),vYe=new RegExp(`(\\\\)?${Aee.source}`,"g");function xYe(s){return s.replace(vYe,(e,t)=>t?e:`\\${e}`)}const JYe=new RegExp(`\\\\${Aee.source}`,"g");function XYe(s){return s.replace(JYe,e=>`\\${e}`)}const YYe=new RegExp(`(\\s)?(\\\\)?${Aee.source}(\\s)?`,"g");function Nee(s){return s.indexOf(EYe)===-1?s:s.replace(YYe,(e,t,i,n)=>i?e:t||n||"")}function zYe(s){return s?s.replace(/\$\((.*?)\)/g,(e,t)=>` ${t} `).trim():""}const Z3=new RegExp(`\\$\\(${Qt.iconNameCharacter}+\\)`,"g");function _y(s){Z3.lastIndex=0;let e="";const t=[];let i=0;for(;;){const n=Z3.lastIndex,o=Z3.exec(s),l=s.substring(n,o==null?void 0:o.index);if(l.length>0){e+=l;for(let r=0;r<l.length;r++)t.push(i)}if(!o)break;i+=o[0].length}return{text:e,iconOffsets:t}}function A3(s,e,t=!1){const{text:i,iconOffsets:n}=e;if(!n||n.length===0)return Qle(s,i,t);const o=eB(i," "),l=i.length-o.length,r=Qle(s,o,t);if(r)for(const a of r){const d=n[a.start+l]+l;a.start+=d,a.end+=d}return r}function Mm(s){return BE(s,!0)}class _Ye{constructor(e){this._ignorePathCasing=e}compare(e,t,i=!1){return e===t?0:sM(this.getComparisonKey(e,i),this.getComparisonKey(t,i))}isEqual(e,t,i=!1){return e===t?!0:!e||!t?!1:this.getComparisonKey(e,i)===this.getComparisonKey(t,i)}getComparisonKey(e,t=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}isEqualOrParent(e,t,i=!1){if(e.scheme===t.scheme){if(e.scheme===Xt.file)return rP(Mm(e),Mm(t),this._ignorePathCasing(e))&&e.query===t.query&&(i||e.fragment===t.fragment);if(wle(e.authority,t.authority))return rP(e.path,t.path,this._ignorePathCasing(e),"/")&&e.query===t.query&&(i||e.fragment===t.fragment)}return!1}joinPath(e,...t){return At.joinPath(e,...t)}basenameOrAuthority(e){return qc(e)||e.authority}basename(e){return co.basename(e.path)}extname(e){return co.extname(e.path)}dirname(e){if(e.path.length===0)return e;let t;return e.scheme===Xt.file?t=At.file(xpe(Mm(e))).path:(t=co.dirname(e.path),e.authority&&t.length&&t.charCodeAt(0)!==47&&(console.error(`dirname("${e.toString})) resulted in a relative path`),t="/")),e.with({path:t})}normalizePath(e){if(!e.path.length)return e;let t;return e.scheme===Xt.file?t=At.file(vpe(Mm(e))).path:t=co.normalize(e.path),e.with({path:t})}relativePath(e,t){if(e.scheme!==t.scheme||!wle(e.authority,t.authority))return;if(e.scheme===Xt.file){const o=ODe(Mm(e),Mm(t));return Gl?Z0e(o):o}let i=e.path||"/";const n=t.path||"/";if(this._ignorePathCasing(e)){let o=0;for(const l=Math.min(i.length,n.length);o<l&&!(i.charCodeAt(o)!==n.charCodeAt(o)&&i.charAt(o).toLowerCase()!==n.charAt(o).toLowerCase());o++);i=n.substr(0,o)+i.substr(o)}return co.relative(i,n)}resolvePath(e,t){if(e.scheme===Xt.file){const i=At.file(_De(Mm(e),t));return e.with({authority:i.authority,path:i.path})}return t=HJe(t),e.with({path:co.resolve(e.path,t)})}isAbsolutePath(e){return!!e.path&&e.path[0]==="/"}isEqualAuthority(e,t){return e===t||e!==void 0&&t!==void 0&&lS(e,t)}hasTrailingPathSeparator(e,t=xu){if(e.scheme===Xt.file){const i=Mm(e);return i.length>ile(i).length&&i[i.length-1]===t}else{const i=e.path;return i.length>1&&i.charCodeAt(i.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e,t=xu){return Mle(e,t)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e,t=xu){let i=!1;if(e.scheme===Xt.file){const n=Mm(e);i=n!==void 0&&n.length===ile(n).length&&n[n.length-1]===t}else{t="/";const n=e.path;i=n.length===1&&n.charCodeAt(n.length-1)===47}return!i&&!Mle(e,t)?e.with({path:e.path+"/"}):e}}const us=new _Ye(()=>!1),SM=us.isEqual.bind(us);us.isEqualOrParent.bind(us);us.getComparisonKey.bind(us);const OYe=us.basenameOrAuthority.bind(us),qc=us.basename.bind(us),jYe=us.extname.bind(us),wY=us.dirname.bind(us),HYe=us.joinPath.bind(us),PYe=us.normalizePath.bind(us),KYe=us.relativePath.bind(us),Cle=us.resolvePath.bind(us);us.isAbsolutePath.bind(us);const wle=us.isEqualAuthority.bind(us),Mle=us.hasTrailingPathSeparator.bind(us);us.removeTrailingPathSeparator.bind(us);us.addTrailingPathSeparator.bind(us);var qU;(function(s){s.META_DATA_LABEL="label",s.META_DATA_DESCRIPTION="description",s.META_DATA_SIZE="size",s.META_DATA_MIME="mime";function e(t){const i=new Map;t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";")).split(";").forEach(l=>{const[r,a]=l.split(":");r&&a&&i.set(r,a)});const o=t.path.substring(0,t.path.indexOf(";"));return o&&i.set(s.META_DATA_MIME,o),i}s.parseMetaData=e})(qU||(qU={}));class tr{constructor(e="",t=!1){if(this.value=e,typeof this.value!="string")throw Yc("value");typeof t=="boolean"?(this.isTrusted=t,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=t.isTrusted??void 0,this.supportThemeIcons=t.supportThemeIcons??!1,this.supportHtml=t.supportHtml??!1)}appendText(e,t=0){return this.value+=$Ye(this.supportThemeIcons?xYe(e):e).replace(/([ \t]+)/g,(i,n)=>" ".repeat(n.length)).replace(/\>/gm,"\\>").replace(/\n/g,t===1?`\\
- `:`
- `),this}appendMarkdown(e){return this.value+=e,this}appendCodeblock(e,t){return this.value+=`
- ${eze(t,e)}
- `,this}appendLink(e,t,i){return this.value+="[",this.value+=this._escape(t,"]"),this.value+="](",this.value+=this._escape(String(e),")"),i&&(this.value+=` "${this._escape(this._escape(i,'"'),")")}"`),this.value+=")",this}_escape(e,t){const i=new RegExp(dc(t),"g");return e.replace(i,(n,o)=>e.charAt(o-1)!=="\\"?`\\${n}`:n)}}function dV(s){return Ou(s)?!s.value:Array.isArray(s)?s.every(dV):!0}function Ou(s){return s instanceof tr?!0:s&&typeof s=="object"?typeof s.value=="string"&&(typeof s.isTrusted=="boolean"||typeof s.isTrusted=="object"||s.isTrusted===void 0)&&(typeof s.supportThemeIcons=="boolean"||s.supportThemeIcons===void 0):!1}function qYe(s,e){return s===e?!0:!s||!e?!1:s.value===e.value&&s.isTrusted===e.isTrusted&&s.supportThemeIcons===e.supportThemeIcons&&s.supportHtml===e.supportHtml&&(s.baseUri===e.baseUri||!!s.baseUri&&!!e.baseUri&&SM(At.from(s.baseUri),At.from(e.baseUri)))}function $Ye(s){return s.replace(/[\\`*_{}[\]()#+\-!~]/g,"\\$&")}function eze(s,e){var n;const t=((n=s.match(/^`+/gm))==null?void 0:n.reduce((o,l)=>o.length>l.length?o:l).length)??0,i=t>=3?t+1:3;return[`${"`".repeat(i)}${e}`,s,`${"`".repeat(i)}`].join(`
- `)}function _L(s){return s.replace(/"/g,""")}function N3(s){return s&&s.replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")}function tze(s){const e=[],t=s.split("|").map(n=>n.trim());s=t[0];const i=t[1];if(i){const n=/height=(\d+)/.exec(i),o=/width=(\d+)/.exec(i),l=n?n[1]:"",r=o?o[1]:"",a=isFinite(parseInt(r)),d=isFinite(parseInt(l));a&&e.push(`width="${r}"`),d&&e.push(`height="${l}"`)}return{href:s,dimensions:e}}class Ree{constructor(e){this._prefix=e,this._lastId=0}nextId(){return this._prefix+ ++this._lastId}}const AP=new Ree("id#");let rr={};(function(){function s(e,t){t(rr)}s.amd=!0,function(e,t){typeof s=="function"&&s.amd?s(["exports"],t):typeof exports=="object"&&typeof module<"u"?t(exports):(e=typeof globalThis<"u"?globalThis:e||self,t(e.marked={}))}(this,function(e){function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}e.defaults=t();function i(hi){e.defaults=hi}const n=/[&<>"']/,o=new RegExp(n.source,"g"),l=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,r=new RegExp(l.source,"g"),a={"&":"&","<":"<",">":">",'"':""","'":"'"},d=hi=>a[hi];function c(hi,ee){if(ee){if(n.test(hi))return hi.replace(o,d)}else if(l.test(hi))return hi.replace(r,d);return hi}const h=/(^|[^\[])\^/g;function u(hi,ee){let ne=typeof hi=="string"?hi:hi.source;ee=ee||"";const le={replace:(ue,be)=>{let Ce=typeof be=="string"?be:be.source;return Ce=Ce.replace(h,"$1"),ne=ne.replace(ue,Ce),le},getRegex:()=>new RegExp(ne,ee)};return le}function m(hi){try{hi=encodeURI(hi).replace(/%25/g,"%")}catch{return null}return hi}const p={exec:()=>null};function g(hi,ee){const ne=hi.replace(/\|/g,(be,Ce,Xe)=>{let Nt=!1,Bt=Ce;for(;--Bt>=0&&Xe[Bt]==="\\";)Nt=!Nt;return Nt?"|":" |"}),le=ne.split(/ \|/);let ue=0;if(le[0].trim()||le.shift(),le.length>0&&!le[le.length-1].trim()&&le.pop(),ee)if(le.length>ee)le.splice(ee);else for(;le.length<ee;)le.push("");for(;ue<le.length;ue++)le[ue]=le[ue].trim().replace(/\\\|/g,"|");return le}function b(hi,ee,ne){const le=hi.length;if(le===0)return"";let ue=0;for(;ue<le;){const be=hi.charAt(le-ue-1);if(be===ee&&!ne)ue++;else if(be!==ee&&ne)ue++;else break}return hi.slice(0,le-ue)}function f(hi,ee){if(hi.indexOf(ee[1])===-1)return-1;let ne=0;for(let le=0;le<hi.length;le++)if(hi[le]==="\\")le++;else if(hi[le]===ee[0])ne++;else if(hi[le]===ee[1]&&(ne--,ne<0))return le;return-1}function Z(hi,ee,ne,le){const ue=ee.href,be=ee.title?c(ee.title):null,Ce=hi[1].replace(/\\([\[\]])/g,"$1");if(hi[0].charAt(0)!=="!"){le.state.inLink=!0;const Xe={type:"link",raw:ne,href:ue,title:be,text:Ce,tokens:le.inlineTokens(Ce)};return le.state.inLink=!1,Xe}return{type:"image",raw:ne,href:ue,title:be,text:c(Ce)}}function A(hi,ee){const ne=hi.match(/^(\s+)(?:```)/);if(ne===null)return ee;const le=ne[1];return ee.split(`
- `).map(ue=>{const be=ue.match(/^\s+/);if(be===null)return ue;const[Ce]=be;return Ce.length>=le.length?ue.slice(le.length):ue}).join(`
- `)}class N{constructor(ee){go(this,"options");go(this,"rules");go(this,"lexer");this.options=ee||e.defaults}space(ee){const ne=this.rules.block.newline.exec(ee);if(ne&&ne[0].length>0)return{type:"space",raw:ne[0]}}code(ee){const ne=this.rules.block.code.exec(ee);if(ne){const le=ne[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:ne[0],codeBlockStyle:"indented",text:this.options.pedantic?le:b(le,`
- `)}}}fences(ee){const ne=this.rules.block.fences.exec(ee);if(ne){const le=ne[0],ue=A(le,ne[3]||"");return{type:"code",raw:le,lang:ne[2]?ne[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):ne[2],text:ue}}}heading(ee){const ne=this.rules.block.heading.exec(ee);if(ne){let le=ne[2].trim();if(/#$/.test(le)){const ue=b(le,"#");(this.options.pedantic||!ue||/ $/.test(ue))&&(le=ue.trim())}return{type:"heading",raw:ne[0],depth:ne[1].length,text:le,tokens:this.lexer.inline(le)}}}hr(ee){const ne=this.rules.block.hr.exec(ee);if(ne)return{type:"hr",raw:b(ne[0],`
- `)}}blockquote(ee){const ne=this.rules.block.blockquote.exec(ee);if(ne){let le=b(ne[0],`
- `).split(`
- `),ue="",be="";const Ce=[];for(;le.length>0;){let Xe=!1;const Nt=[];let Bt;for(Bt=0;Bt<le.length;Bt++)if(/^ {0,3}>/.test(le[Bt]))Nt.push(le[Bt]),Xe=!0;else if(!Xe)Nt.push(le[Bt]);else break;le=le.slice(Bt);const Ni=Nt.join(`
- `),un=Ni.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,`
- $1`).replace(/^ {0,3}>[ \t]?/gm,"");ue=ue?`${ue}
- ${Ni}`:Ni,be=be?`${be}
- ${un}`:un;const Zn=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(un,Ce,!0),this.lexer.state.top=Zn,le.length===0)break;const Vn=Ce[Ce.length-1];if((Vn==null?void 0:Vn.type)==="code")break;if((Vn==null?void 0:Vn.type)==="blockquote"){const ns=Vn,mo=ns.raw+`
- `+le.join(`
- `),xs=this.blockquote(mo);Ce[Ce.length-1]=xs,ue=ue.substring(0,ue.length-ns.raw.length)+xs.raw,be=be.substring(0,be.length-ns.text.length)+xs.text;break}else if((Vn==null?void 0:Vn.type)==="list"){const ns=Vn,mo=ns.raw+`
- `+le.join(`
- `),xs=this.list(mo);Ce[Ce.length-1]=xs,ue=ue.substring(0,ue.length-Vn.raw.length)+xs.raw,be=be.substring(0,be.length-ns.raw.length)+xs.raw,le=mo.substring(Ce[Ce.length-1].raw.length).split(`
- `);continue}}return{type:"blockquote",raw:ue,tokens:Ce,text:be}}}list(ee){let ne=this.rules.block.list.exec(ee);if(ne){let le=ne[1].trim();const ue=le.length>1,be={type:"list",raw:"",ordered:ue,start:ue?+le.slice(0,-1):"",loose:!1,items:[]};le=ue?`\\d{1,9}\\${le.slice(-1)}`:`\\${le}`,this.options.pedantic&&(le=ue?le:"[*+-]");const Ce=new RegExp(`^( {0,3}${le})((?:[ ][^\\n]*)?(?:\\n|$))`);let Xe=!1;for(;ee;){let Nt=!1,Bt="",Ni="";if(!(ne=Ce.exec(ee))||this.rules.block.hr.test(ee))break;Bt=ne[0],ee=ee.substring(Bt.length);let un=ne[2].split(`
- `,1)[0].replace(/^\t+/,Cr=>" ".repeat(3*Cr.length)),Zn=ee.split(`
- `,1)[0],Vn=!un.trim(),ns=0;if(this.options.pedantic?(ns=2,Ni=un.trimStart()):Vn?ns=ne[1].length+1:(ns=ne[2].search(/[^ ]/),ns=ns>4?1:ns,Ni=un.slice(ns),ns+=ne[1].length),Vn&&/^ *$/.test(Zn)&&(Bt+=Zn+`
- `,ee=ee.substring(Zn.length+1),Nt=!0),!Nt){const Cr=new RegExp(`^ {0,${Math.min(3,ns-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),Ht=new RegExp(`^ {0,${Math.min(3,ns-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),Ae=new RegExp(`^ {0,${Math.min(3,ns-1)}}(?:\`\`\`|~~~)`),ct=new RegExp(`^ {0,${Math.min(3,ns-1)}}#`);for(;ee;){const Yt=ee.split(`
- `,1)[0];if(Zn=Yt,this.options.pedantic&&(Zn=Zn.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),Ae.test(Zn)||ct.test(Zn)||Cr.test(Zn)||Ht.test(ee))break;if(Zn.search(/[^ ]/)>=ns||!Zn.trim())Ni+=`
- `+Zn.slice(ns);else{if(Vn||un.search(/[^ ]/)>=4||Ae.test(un)||ct.test(un)||Ht.test(un))break;Ni+=`
- `+Zn}!Vn&&!Zn.trim()&&(Vn=!0),Bt+=Yt+`
- `,ee=ee.substring(Yt.length+1),un=Zn.slice(ns)}}be.loose||(Xe?be.loose=!0:/\n *\n *$/.test(Bt)&&(Xe=!0));let mo=null,xs;this.options.gfm&&(mo=/^\[[ xX]\] /.exec(Ni),mo&&(xs=mo[0]!=="[ ] ",Ni=Ni.replace(/^\[[ xX]\] +/,""))),be.items.push({type:"list_item",raw:Bt,task:!!mo,checked:xs,loose:!1,text:Ni,tokens:[]}),be.raw+=Bt}be.items[be.items.length-1].raw=be.items[be.items.length-1].raw.trimEnd(),be.items[be.items.length-1].text=be.items[be.items.length-1].text.trimEnd(),be.raw=be.raw.trimEnd();for(let Nt=0;Nt<be.items.length;Nt++)if(this.lexer.state.top=!1,be.items[Nt].tokens=this.lexer.blockTokens(be.items[Nt].text,[]),!be.loose){const Bt=be.items[Nt].tokens.filter(un=>un.type==="space"),Ni=Bt.length>0&&Bt.some(un=>/\n.*\n/.test(un.raw));be.loose=Ni}if(be.loose)for(let Nt=0;Nt<be.items.length;Nt++)be.items[Nt].loose=!0;return be}}html(ee){const ne=this.rules.block.html.exec(ee);if(ne)return{type:"html",block:!0,raw:ne[0],pre:ne[1]==="pre"||ne[1]==="script"||ne[1]==="style",text:ne[0]}}def(ee){const ne=this.rules.block.def.exec(ee);if(ne){const le=ne[1].toLowerCase().replace(/\s+/g," "),ue=ne[2]?ne[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",be=ne[3]?ne[3].substring(1,ne[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):ne[3];return{type:"def",tag:le,raw:ne[0],href:ue,title:be}}}table(ee){const ne=this.rules.block.table.exec(ee);if(!ne||!/[:|]/.test(ne[2]))return;const le=g(ne[1]),ue=ne[2].replace(/^\||\| *$/g,"").split("|"),be=ne[3]&&ne[3].trim()?ne[3].replace(/\n[ \t]*$/,"").split(`
- `):[],Ce={type:"table",raw:ne[0],header:[],align:[],rows:[]};if(le.length===ue.length){for(const Xe of ue)/^ *-+: *$/.test(Xe)?Ce.align.push("right"):/^ *:-+: *$/.test(Xe)?Ce.align.push("center"):/^ *:-+ *$/.test(Xe)?Ce.align.push("left"):Ce.align.push(null);for(let Xe=0;Xe<le.length;Xe++)Ce.header.push({text:le[Xe],tokens:this.lexer.inline(le[Xe]),header:!0,align:Ce.align[Xe]});for(const Xe of be)Ce.rows.push(g(Xe,Ce.header.length).map((Nt,Bt)=>({text:Nt,tokens:this.lexer.inline(Nt),header:!1,align:Ce.align[Bt]})));return Ce}}lheading(ee){const ne=this.rules.block.lheading.exec(ee);if(ne)return{type:"heading",raw:ne[0],depth:ne[2].charAt(0)==="="?1:2,text:ne[1],tokens:this.lexer.inline(ne[1])}}paragraph(ee){const ne=this.rules.block.paragraph.exec(ee);if(ne){const le=ne[1].charAt(ne[1].length-1)===`
- `?ne[1].slice(0,-1):ne[1];return{type:"paragraph",raw:ne[0],text:le,tokens:this.lexer.inline(le)}}}text(ee){const ne=this.rules.block.text.exec(ee);if(ne)return{type:"text",raw:ne[0],text:ne[0],tokens:this.lexer.inline(ne[0])}}escape(ee){const ne=this.rules.inline.escape.exec(ee);if(ne)return{type:"escape",raw:ne[0],text:c(ne[1])}}tag(ee){const ne=this.rules.inline.tag.exec(ee);if(ne)return!this.lexer.state.inLink&&/^<a /i.test(ne[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(ne[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(ne[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(ne[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:ne[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:ne[0]}}link(ee){const ne=this.rules.inline.link.exec(ee);if(ne){const le=ne[2].trim();if(!this.options.pedantic&&/^</.test(le)){if(!/>$/.test(le))return;const Ce=b(le.slice(0,-1),"\\");if((le.length-Ce.length)%2===0)return}else{const Ce=f(ne[2],"()");if(Ce>-1){const Nt=(ne[0].indexOf("!")===0?5:4)+ne[1].length+Ce;ne[2]=ne[2].substring(0,Ce),ne[0]=ne[0].substring(0,Nt).trim(),ne[3]=""}}let ue=ne[2],be="";if(this.options.pedantic){const Ce=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(ue);Ce&&(ue=Ce[1],be=Ce[3])}else be=ne[3]?ne[3].slice(1,-1):"";return ue=ue.trim(),/^</.test(ue)&&(this.options.pedantic&&!/>$/.test(le)?ue=ue.slice(1):ue=ue.slice(1,-1)),Z(ne,{href:ue&&ue.replace(this.rules.inline.anyPunctuation,"$1"),title:be&&be.replace(this.rules.inline.anyPunctuation,"$1")},ne[0],this.lexer)}}reflink(ee,ne){let le;if((le=this.rules.inline.reflink.exec(ee))||(le=this.rules.inline.nolink.exec(ee))){const ue=(le[2]||le[1]).replace(/\s+/g," "),be=ne[ue.toLowerCase()];if(!be){const Ce=le[0].charAt(0);return{type:"text",raw:Ce,text:Ce}}return Z(le,be,le[0],this.lexer)}}emStrong(ee,ne,le=""){let ue=this.rules.inline.emStrongLDelim.exec(ee);if(!ue||ue[3]&&le.match(/[\p{L}\p{N}]/u))return;if(!(ue[1]||ue[2]||"")||!le||this.rules.inline.punctuation.exec(le)){const Ce=[...ue[0]].length-1;let Xe,Nt,Bt=Ce,Ni=0;const un=ue[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(un.lastIndex=0,ne=ne.slice(-1*ee.length+Ce);(ue=un.exec(ne))!=null;){if(Xe=ue[1]||ue[2]||ue[3]||ue[4]||ue[5]||ue[6],!Xe)continue;if(Nt=[...Xe].length,ue[3]||ue[4]){Bt+=Nt;continue}else if((ue[5]||ue[6])&&Ce%3&&!((Ce+Nt)%3)){Ni+=Nt;continue}if(Bt-=Nt,Bt>0)continue;Nt=Math.min(Nt,Nt+Bt+Ni);const Zn=[...ue[0]][0].length,Vn=ee.slice(0,Ce+ue.index+Zn+Nt);if(Math.min(Ce,Nt)%2){const mo=Vn.slice(1,-1);return{type:"em",raw:Vn,text:mo,tokens:this.lexer.inlineTokens(mo)}}const ns=Vn.slice(2,-2);return{type:"strong",raw:Vn,text:ns,tokens:this.lexer.inlineTokens(ns)}}}}codespan(ee){const ne=this.rules.inline.code.exec(ee);if(ne){let le=ne[2].replace(/\n/g," ");const ue=/[^ ]/.test(le),be=/^ /.test(le)&&/ $/.test(le);return ue&&be&&(le=le.substring(1,le.length-1)),le=c(le,!0),{type:"codespan",raw:ne[0],text:le}}}br(ee){const ne=this.rules.inline.br.exec(ee);if(ne)return{type:"br",raw:ne[0]}}del(ee){const ne=this.rules.inline.del.exec(ee);if(ne)return{type:"del",raw:ne[0],text:ne[2],tokens:this.lexer.inlineTokens(ne[2])}}autolink(ee){const ne=this.rules.inline.autolink.exec(ee);if(ne){let le,ue;return ne[2]==="@"?(le=c(ne[1]),ue="mailto:"+le):(le=c(ne[1]),ue=le),{type:"link",raw:ne[0],text:le,href:ue,tokens:[{type:"text",raw:le,text:le}]}}}url(ee){var le;let ne;if(ne=this.rules.inline.url.exec(ee)){let ue,be;if(ne[2]==="@")ue=c(ne[0]),be="mailto:"+ue;else{let Ce;do Ce=ne[0],ne[0]=((le=this.rules.inline._backpedal.exec(ne[0]))==null?void 0:le[0])??"";while(Ce!==ne[0]);ue=c(ne[0]),ne[1]==="www."?be="http://"+ne[0]:be=ne[0]}return{type:"link",raw:ne[0],text:ue,href:be,tokens:[{type:"text",raw:ue,text:ue}]}}}inlineText(ee){const ne=this.rules.inline.text.exec(ee);if(ne){let le;return this.lexer.state.inRawBlock?le=ne[0]:le=c(ne[0]),{type:"text",raw:ne[0],text:le}}}}const W=/^(?: *(?:\n|$))+/,Q=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,R=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,M=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,w=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Y=/(?:[*+-]|\d{1,9}[.)])/,G=u(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,Y).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),P=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,j=/^[^\n]+/,X=/(?!\s*\])(?:\\.|[^\[\]\\])+/,ie=u(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",X).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),se=u(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Y).getRegex(),pe="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ue=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Qe=u("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",Ue).replace("tag",pe).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),He=u(P).replace("hr",M).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",pe).getRegex(),xe={blockquote:u(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",He).getRegex(),code:Q,def:ie,fences:R,heading:w,hr:M,html:Qe,lheading:G,list:se,newline:W,paragraph:He,table:p,text:j},Je=u("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",M).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",pe).getRegex(),Mt={...xe,table:Je,paragraph:u(P).replace("hr",M).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Je).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",pe).getRegex()},St={...xe,html:u(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ue).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:p,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:u(P).replace("hr",M).replace("heading",` *#{1,6} *[^
- ]`).replace("lheading",G).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Pe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Be=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,rt=/^( {2,}|\\)\n(?!\s*$)/,Tt=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,qt="\\p{P}\\p{S}",yt=u(/^((?![*_])[\spunctuation])/,"u").replace(/punctuation/g,qt).getRegex(),fe=/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,Vi=u(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,qt).getRegex(),st=u("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,qt).getRegex(),Fn=u("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,qt).getRegex(),qi=u(/\\([punct])/,"gu").replace(/punct/g,qt).getRegex(),Zo=u(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),is=u(Ue).replace("(?:-->|$)","-->").getRegex(),Ao=u("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",is).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),js=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,xl=u(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",js).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),wi=u(/^!?\[(label)\]\[(ref)\]/).replace("label",js).replace("ref",X).getRegex(),rl=u(/^!?\[(ref)\](?:\[\])?/).replace("ref",X).getRegex(),yo=u("reflink|nolink(?!\\()","g").replace("reflink",wi).replace("nolink",rl).getRegex(),Dt={_backpedal:p,anyPunctuation:qi,autolink:Zo,blockSkip:fe,br:rt,code:Be,del:p,emStrongLDelim:Vi,emStrongRDelimAst:st,emStrongRDelimUnd:Fn,escape:Pe,link:xl,nolink:rl,punctuation:yt,reflink:wi,reflinkSearch:yo,tag:Ao,text:Tt,url:p},oo={...Dt,link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",js).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",js).getRegex()},oh={...Dt,escape:u(Pe).replace("])","~|])").getRegex(),url:u(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},ou={...oh,br:u(rt).replace("{2,}","*").getRegex(),text:u(oh.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Oa={normal:xe,gfm:Mt,pedantic:St},al={normal:Dt,gfm:oh,breaks:ou,pedantic:oo};class je{constructor(ee){go(this,"tokens");go(this,"options");go(this,"state");go(this,"tokenizer");go(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=ee||e.defaults,this.options.tokenizer=this.options.tokenizer||new N,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const ne={block:Oa.normal,inline:al.normal};this.options.pedantic?(ne.block=Oa.pedantic,ne.inline=al.pedantic):this.options.gfm&&(ne.block=Oa.gfm,this.options.breaks?ne.inline=al.breaks:ne.inline=al.gfm),this.tokenizer.rules=ne}static get rules(){return{block:Oa,inline:al}}static lex(ee,ne){return new je(ne).lex(ee)}static lexInline(ee,ne){return new je(ne).inlineTokens(ee)}lex(ee){ee=ee.replace(/\r\n|\r/g,`
- `),this.blockTokens(ee,this.tokens);for(let ne=0;ne<this.inlineQueue.length;ne++){const le=this.inlineQueue[ne];this.inlineTokens(le.src,le.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(ee,ne=[],le=!1){this.options.pedantic?ee=ee.replace(/\t/g," ").replace(/^ +$/gm,""):ee=ee.replace(/^( *)(\t+)/gm,(Xe,Nt,Bt)=>Nt+" ".repeat(Bt.length));let ue,be,Ce;for(;ee;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(Xe=>(ue=Xe.call({lexer:this},ee,ne))?(ee=ee.substring(ue.raw.length),ne.push(ue),!0):!1))){if(ue=this.tokenizer.space(ee)){ee=ee.substring(ue.raw.length),ue.raw.length===1&&ne.length>0?ne[ne.length-1].raw+=`
- `:ne.push(ue);continue}if(ue=this.tokenizer.code(ee)){ee=ee.substring(ue.raw.length),be=ne[ne.length-1],be&&(be.type==="paragraph"||be.type==="text")?(be.raw+=`
- `+ue.raw,be.text+=`
- `+ue.text,this.inlineQueue[this.inlineQueue.length-1].src=be.text):ne.push(ue);continue}if(ue=this.tokenizer.fences(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.heading(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.hr(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.blockquote(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.list(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.html(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.def(ee)){ee=ee.substring(ue.raw.length),be=ne[ne.length-1],be&&(be.type==="paragraph"||be.type==="text")?(be.raw+=`
- `+ue.raw,be.text+=`
- `+ue.raw,this.inlineQueue[this.inlineQueue.length-1].src=be.text):this.tokens.links[ue.tag]||(this.tokens.links[ue.tag]={href:ue.href,title:ue.title});continue}if(ue=this.tokenizer.table(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(ue=this.tokenizer.lheading(ee)){ee=ee.substring(ue.raw.length),ne.push(ue);continue}if(Ce=ee,this.options.extensions&&this.options.extensions.startBlock){let Xe=1/0;const Nt=ee.slice(1);let Bt;this.options.extensions.startBlock.forEach(Ni=>{Bt=Ni.call({lexer:this},Nt),typeof Bt=="number"&&Bt>=0&&(Xe=Math.min(Xe,Bt))}),Xe<1/0&&Xe>=0&&(Ce=ee.substring(0,Xe+1))}if(this.state.top&&(ue=this.tokenizer.paragraph(Ce))){be=ne[ne.length-1],le&&(be==null?void 0:be.type)==="paragraph"?(be.raw+=`
- `+ue.raw,be.text+=`
- `+ue.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=be.text):ne.push(ue),le=Ce.length!==ee.length,ee=ee.substring(ue.raw.length);continue}if(ue=this.tokenizer.text(ee)){ee=ee.substring(ue.raw.length),be=ne[ne.length-1],be&&be.type==="text"?(be.raw+=`
- `+ue.raw,be.text+=`
- `+ue.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=be.text):ne.push(ue);continue}if(ee){const Xe="Infinite loop on byte: "+ee.charCodeAt(0);if(this.options.silent){console.error(Xe);break}else throw new Error(Xe)}}return this.state.top=!0,ne}inline(ee,ne=[]){return this.inlineQueue.push({src:ee,tokens:ne}),ne}inlineTokens(ee,ne=[]){let le,ue,be,Ce=ee,Xe,Nt,Bt;if(this.tokens.links){const Ni=Object.keys(this.tokens.links);if(Ni.length>0)for(;(Xe=this.tokenizer.rules.inline.reflinkSearch.exec(Ce))!=null;)Ni.includes(Xe[0].slice(Xe[0].lastIndexOf("[")+1,-1))&&(Ce=Ce.slice(0,Xe.index)+"["+"a".repeat(Xe[0].length-2)+"]"+Ce.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(Xe=this.tokenizer.rules.inline.blockSkip.exec(Ce))!=null;)Ce=Ce.slice(0,Xe.index)+"["+"a".repeat(Xe[0].length-2)+"]"+Ce.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(Xe=this.tokenizer.rules.inline.anyPunctuation.exec(Ce))!=null;)Ce=Ce.slice(0,Xe.index)+"++"+Ce.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;ee;)if(Nt||(Bt=""),Nt=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(Ni=>(le=Ni.call({lexer:this},ee,ne))?(ee=ee.substring(le.raw.length),ne.push(le),!0):!1))){if(le=this.tokenizer.escape(ee)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(le=this.tokenizer.tag(ee)){ee=ee.substring(le.raw.length),ue=ne[ne.length-1],ue&&le.type==="text"&&ue.type==="text"?(ue.raw+=le.raw,ue.text+=le.text):ne.push(le);continue}if(le=this.tokenizer.link(ee)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(le=this.tokenizer.reflink(ee,this.tokens.links)){ee=ee.substring(le.raw.length),ue=ne[ne.length-1],ue&&le.type==="text"&&ue.type==="text"?(ue.raw+=le.raw,ue.text+=le.text):ne.push(le);continue}if(le=this.tokenizer.emStrong(ee,Ce,Bt)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(le=this.tokenizer.codespan(ee)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(le=this.tokenizer.br(ee)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(le=this.tokenizer.del(ee)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(le=this.tokenizer.autolink(ee)){ee=ee.substring(le.raw.length),ne.push(le);continue}if(!this.state.inLink&&(le=this.tokenizer.url(ee))){ee=ee.substring(le.raw.length),ne.push(le);continue}if(be=ee,this.options.extensions&&this.options.extensions.startInline){let Ni=1/0;const un=ee.slice(1);let Zn;this.options.extensions.startInline.forEach(Vn=>{Zn=Vn.call({lexer:this},un),typeof Zn=="number"&&Zn>=0&&(Ni=Math.min(Ni,Zn))}),Ni<1/0&&Ni>=0&&(be=ee.substring(0,Ni+1))}if(le=this.tokenizer.inlineText(be)){ee=ee.substring(le.raw.length),le.raw.slice(-1)!=="_"&&(Bt=le.raw.slice(-1)),Nt=!0,ue=ne[ne.length-1],ue&&ue.type==="text"?(ue.raw+=le.raw,ue.text+=le.text):ne.push(le);continue}if(ee){const Ni="Infinite loop on byte: "+ee.charCodeAt(0);if(this.options.silent){console.error(Ni);break}else throw new Error(Ni)}}return ne}}class ut{constructor(ee){go(this,"options");go(this,"parser");this.options=ee||e.defaults}space(ee){return""}code({text:ee,lang:ne,escaped:le}){var Ce;const ue=(Ce=(ne||"").match(/^\S*/))==null?void 0:Ce[0],be=ee.replace(/\n$/,"")+`
- `;return ue?'<pre><code class="language-'+c(ue)+'">'+(le?be:c(be,!0))+`</code></pre>
- `:"<pre><code>"+(le?be:c(be,!0))+`</code></pre>
- `}blockquote({tokens:ee}){return`<blockquote>
- ${this.parser.parse(ee)}</blockquote>
- `}html({text:ee}){return ee}heading({tokens:ee,depth:ne}){return`<h${ne}>${this.parser.parseInline(ee)}</h${ne}>
- `}hr(ee){return`<hr>
- `}list(ee){const ne=ee.ordered,le=ee.start;let ue="";for(let Xe=0;Xe<ee.items.length;Xe++){const Nt=ee.items[Xe];ue+=this.listitem(Nt)}const be=ne?"ol":"ul",Ce=ne&&le!==1?' start="'+le+'"':"";return"<"+be+Ce+`>
- `+ue+"</"+be+`>
- `}listitem(ee){let ne="";if(ee.task){const le=this.checkbox({checked:!!ee.checked});ee.loose?ee.tokens.length>0&&ee.tokens[0].type==="paragraph"?(ee.tokens[0].text=le+" "+ee.tokens[0].text,ee.tokens[0].tokens&&ee.tokens[0].tokens.length>0&&ee.tokens[0].tokens[0].type==="text"&&(ee.tokens[0].tokens[0].text=le+" "+ee.tokens[0].tokens[0].text)):ee.tokens.unshift({type:"text",raw:le+" ",text:le+" "}):ne+=le+" "}return ne+=this.parser.parse(ee.tokens,!!ee.loose),`<li>${ne}</li>
- `}checkbox({checked:ee}){return"<input "+(ee?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:ee}){return`<p>${this.parser.parseInline(ee)}</p>
- `}table(ee){let ne="",le="";for(let be=0;be<ee.header.length;be++)le+=this.tablecell(ee.header[be]);ne+=this.tablerow({text:le});let ue="";for(let be=0;be<ee.rows.length;be++){const Ce=ee.rows[be];le="";for(let Xe=0;Xe<Ce.length;Xe++)le+=this.tablecell(Ce[Xe]);ue+=this.tablerow({text:le})}return ue&&(ue=`<tbody>${ue}</tbody>`),`<table>
- <thead>
- `+ne+`</thead>
- `+ue+`</table>
- `}tablerow({text:ee}){return`<tr>
- ${ee}</tr>
- `}tablecell(ee){const ne=this.parser.parseInline(ee.tokens),le=ee.header?"th":"td";return(ee.align?`<${le} align="${ee.align}">`:`<${le}>`)+ne+`</${le}>
- `}strong({tokens:ee}){return`<strong>${this.parser.parseInline(ee)}</strong>`}em({tokens:ee}){return`<em>${this.parser.parseInline(ee)}</em>`}codespan({text:ee}){return`<code>${ee}</code>`}br(ee){return"<br>"}del({tokens:ee}){return`<del>${this.parser.parseInline(ee)}</del>`}link({href:ee,title:ne,tokens:le}){const ue=this.parser.parseInline(le),be=m(ee);if(be===null)return ue;ee=be;let Ce='<a href="'+ee+'"';return ne&&(Ce+=' title="'+ne+'"'),Ce+=">"+ue+"</a>",Ce}image({href:ee,title:ne,text:le}){const ue=m(ee);if(ue===null)return le;ee=ue;let be=`<img src="${ee}" alt="${le}"`;return ne&&(be+=` title="${ne}"`),be+=">",be}text(ee){return"tokens"in ee&&ee.tokens?this.parser.parseInline(ee.tokens):ee.text}}class cn{strong({text:ee}){return ee}em({text:ee}){return ee}codespan({text:ee}){return ee}del({text:ee}){return ee}html({text:ee}){return ee}text({text:ee}){return ee}link({text:ee}){return""+ee}image({text:ee}){return""+ee}br(){return""}}class $i{constructor(ee){go(this,"options");go(this,"renderer");go(this,"textRenderer");this.options=ee||e.defaults,this.options.renderer=this.options.renderer||new ut,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new cn}static parse(ee,ne){return new $i(ne).parse(ee)}static parseInline(ee,ne){return new $i(ne).parseInline(ee)}parse(ee,ne=!0){let le="";for(let ue=0;ue<ee.length;ue++){const be=ee[ue];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[be.type]){const Xe=be,Nt=this.options.extensions.renderers[Xe.type].call({parser:this},Xe);if(Nt!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(Xe.type)){le+=Nt||"";continue}}const Ce=be;switch(Ce.type){case"space":{le+=this.renderer.space(Ce);continue}case"hr":{le+=this.renderer.hr(Ce);continue}case"heading":{le+=this.renderer.heading(Ce);continue}case"code":{le+=this.renderer.code(Ce);continue}case"table":{le+=this.renderer.table(Ce);continue}case"blockquote":{le+=this.renderer.blockquote(Ce);continue}case"list":{le+=this.renderer.list(Ce);continue}case"html":{le+=this.renderer.html(Ce);continue}case"paragraph":{le+=this.renderer.paragraph(Ce);continue}case"text":{let Xe=Ce,Nt=this.renderer.text(Xe);for(;ue+1<ee.length&&ee[ue+1].type==="text";)Xe=ee[++ue],Nt+=`
- `+this.renderer.text(Xe);ne?le+=this.renderer.paragraph({type:"paragraph",raw:Nt,text:Nt,tokens:[{type:"text",raw:Nt,text:Nt}]}):le+=Nt;continue}default:{const Xe='Token with "'+Ce.type+'" type was not found.';if(this.options.silent)return console.error(Xe),"";throw new Error(Xe)}}}return le}parseInline(ee,ne){ne=ne||this.renderer;let le="";for(let ue=0;ue<ee.length;ue++){const be=ee[ue];if(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[be.type]){const Xe=this.options.extensions.renderers[be.type].call({parser:this},be);if(Xe!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(be.type)){le+=Xe||"";continue}}const Ce=be;switch(Ce.type){case"escape":{le+=ne.text(Ce);break}case"html":{le+=ne.html(Ce);break}case"link":{le+=ne.link(Ce);break}case"image":{le+=ne.image(Ce);break}case"strong":{le+=ne.strong(Ce);break}case"em":{le+=ne.em(Ce);break}case"codespan":{le+=ne.codespan(Ce);break}case"br":{le+=ne.br(Ce);break}case"del":{le+=ne.del(Ce);break}case"text":{le+=ne.text(Ce);break}default:{const Xe='Token with "'+Ce.type+'" type was not found.';if(this.options.silent)return console.error(Xe),"";throw new Error(Xe)}}}return le}}class ei{constructor(ee){go(this,"options");this.options=ee||e.defaults}preprocess(ee){return ee}postprocess(ee){return ee}processAllTokens(ee){return ee}}go(ei,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"]));class ja{constructor(...ee){go(this,"defaults",t());go(this,"options",this.setOptions);go(this,"parse",this.parseMarkdown(je.lex,$i.parse));go(this,"parseInline",this.parseMarkdown(je.lexInline,$i.parseInline));go(this,"Parser",$i);go(this,"Renderer",ut);go(this,"TextRenderer",cn);go(this,"Lexer",je);go(this,"Tokenizer",N);go(this,"Hooks",ei);this.use(...ee)}walkTokens(ee,ne){var ue,be;let le=[];for(const Ce of ee)switch(le=le.concat(ne.call(this,Ce)),Ce.type){case"table":{const Xe=Ce;for(const Nt of Xe.header)le=le.concat(this.walkTokens(Nt.tokens,ne));for(const Nt of Xe.rows)for(const Bt of Nt)le=le.concat(this.walkTokens(Bt.tokens,ne));break}case"list":{const Xe=Ce;le=le.concat(this.walkTokens(Xe.items,ne));break}default:{const Xe=Ce;(be=(ue=this.defaults.extensions)==null?void 0:ue.childTokens)!=null&&be[Xe.type]?this.defaults.extensions.childTokens[Xe.type].forEach(Nt=>{const Bt=Xe[Nt].flat(1/0);le=le.concat(this.walkTokens(Bt,ne))}):Xe.tokens&&(le=le.concat(this.walkTokens(Xe.tokens,ne)))}}return le}use(...ee){const ne=this.defaults.extensions||{renderers:{},childTokens:{}};return ee.forEach(le=>{const ue={...le};if(ue.async=this.defaults.async||ue.async||!1,le.extensions&&(le.extensions.forEach(be=>{if(!be.name)throw new Error("extension name required");if("renderer"in be){const Ce=ne.renderers[be.name];Ce?ne.renderers[be.name]=function(...Xe){let Nt=be.renderer.apply(this,Xe);return Nt===!1&&(Nt=Ce.apply(this,Xe)),Nt}:ne.renderers[be.name]=be.renderer}if("tokenizer"in be){if(!be.level||be.level!=="block"&&be.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const Ce=ne[be.level];Ce?Ce.unshift(be.tokenizer):ne[be.level]=[be.tokenizer],be.start&&(be.level==="block"?ne.startBlock?ne.startBlock.push(be.start):ne.startBlock=[be.start]:be.level==="inline"&&(ne.startInline?ne.startInline.push(be.start):ne.startInline=[be.start]))}"childTokens"in be&&be.childTokens&&(ne.childTokens[be.name]=be.childTokens)}),ue.extensions=ne),le.renderer){const be=this.defaults.renderer||new ut(this.defaults);for(const Ce in le.renderer){if(!(Ce in be))throw new Error(`renderer '${Ce}' does not exist`);if(["options","parser"].includes(Ce))continue;const Xe=Ce,Nt=le.renderer[Xe],Bt=be[Xe];be[Xe]=(...Ni)=>{let un=Nt.apply(be,Ni);return un===!1&&(un=Bt.apply(be,Ni)),un||""}}ue.renderer=be}if(le.tokenizer){const be=this.defaults.tokenizer||new N(this.defaults);for(const Ce in le.tokenizer){if(!(Ce in be))throw new Error(`tokenizer '${Ce}' does not exist`);if(["options","rules","lexer"].includes(Ce))continue;const Xe=Ce,Nt=le.tokenizer[Xe],Bt=be[Xe];be[Xe]=(...Ni)=>{let un=Nt.apply(be,Ni);return un===!1&&(un=Bt.apply(be,Ni)),un}}ue.tokenizer=be}if(le.hooks){const be=this.defaults.hooks||new ei;for(const Ce in le.hooks){if(!(Ce in be))throw new Error(`hook '${Ce}' does not exist`);if(Ce==="options")continue;const Xe=Ce,Nt=le.hooks[Xe],Bt=be[Xe];ei.passThroughHooks.has(Ce)?be[Xe]=Ni=>{if(this.defaults.async)return Promise.resolve(Nt.call(be,Ni)).then(Zn=>Bt.call(be,Zn));const un=Nt.call(be,Ni);return Bt.call(be,un)}:be[Xe]=(...Ni)=>{let un=Nt.apply(be,Ni);return un===!1&&(un=Bt.apply(be,Ni)),un}}ue.hooks=be}if(le.walkTokens){const be=this.defaults.walkTokens,Ce=le.walkTokens;ue.walkTokens=function(Xe){let Nt=[];return Nt.push(Ce.call(this,Xe)),be&&(Nt=Nt.concat(be.call(this,Xe))),Nt}}this.defaults={...this.defaults,...ue}}),this}setOptions(ee){return this.defaults={...this.defaults,...ee},this}lexer(ee,ne){return je.lex(ee,ne??this.defaults)}parser(ee,ne){return $i.parse(ee,ne??this.defaults)}parseMarkdown(ee,ne){return(ue,be)=>{const Ce={...be},Xe={...this.defaults,...Ce},Nt=this.onError(!!Xe.silent,!!Xe.async);if(this.defaults.async===!0&&Ce.async===!1)return Nt(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof ue>"u"||ue===null)return Nt(new Error("marked(): input parameter is undefined or null"));if(typeof ue!="string")return Nt(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(ue)+", string expected"));if(Xe.hooks&&(Xe.hooks.options=Xe),Xe.async)return Promise.resolve(Xe.hooks?Xe.hooks.preprocess(ue):ue).then(Bt=>ee(Bt,Xe)).then(Bt=>Xe.hooks?Xe.hooks.processAllTokens(Bt):Bt).then(Bt=>Xe.walkTokens?Promise.all(this.walkTokens(Bt,Xe.walkTokens)).then(()=>Bt):Bt).then(Bt=>ne(Bt,Xe)).then(Bt=>Xe.hooks?Xe.hooks.postprocess(Bt):Bt).catch(Nt);try{Xe.hooks&&(ue=Xe.hooks.preprocess(ue));let Bt=ee(ue,Xe);Xe.hooks&&(Bt=Xe.hooks.processAllTokens(Bt)),Xe.walkTokens&&this.walkTokens(Bt,Xe.walkTokens);let Ni=ne(Bt,Xe);return Xe.hooks&&(Ni=Xe.hooks.postprocess(Ni)),Ni}catch(Bt){return Nt(Bt)}}}onError(ee,ne){return le=>{if(le.message+=`
- Please report this to https://github.com/markedjs/marked.`,ee){const ue="<p>An error occurred:</p><pre>"+c(le.message+"",!0)+"</pre>";return ne?Promise.resolve(ue):ue}if(ne)return Promise.reject(le);throw le}}}const _i=new ja;function hn(hi,ee){return _i.parse(hi,ee)}hn.options=hn.setOptions=function(hi){return _i.setOptions(hi),hn.defaults=_i.defaults,i(hn.defaults),hn},hn.getDefaults=t,hn.defaults=e.defaults,hn.use=function(...hi){return _i.use(...hi),hn.defaults=_i.defaults,i(hn.defaults),hn},hn.walkTokens=function(hi,ee){return _i.walkTokens(hi,ee)},hn.parseInline=_i.parseInline,hn.Parser=$i,hn.parser=$i.parse,hn.Renderer=ut,hn.TextRenderer=cn,hn.Lexer=je,hn.lexer=je.lex,hn.Tokenizer=N,hn.Hooks=ei,hn.parse=hn;const yr=hn.options,wd=hn.setOptions,Ai=hn.use,Li=hn.walkTokens,ma=hn.parseInline,lh=hn,Oi=$i.parse,No=je.lex;e.Hooks=ei,e.Lexer=je,e.Marked=ja,e.Parser=$i,e.Renderer=ut,e.TextRenderer=cn,e.Tokenizer=N,e.getDefaults=t,e.lexer=No,e.marked=hn,e.options=yr,e.parse=lh,e.parseInline=ma,e.parser=Oi,e.setOptions=wd,e.use=Ai,e.walkTokens=Li})})();rr.Hooks||exports.Hooks;rr.Lexer||exports.Lexer;rr.Marked||exports.Marked;rr.Parser||exports.Parser;var abe=rr.Renderer||exports.Renderer;rr.TextRenderer||exports.TextRenderer;rr.Tokenizer||exports.Tokenizer;var ize=rr.defaults||exports.defaults;rr.getDefaults||exports.getDefaults;var MY=rr.lexer||exports.lexer;rr.marked||exports.marked;rr.options||exports.options;var dbe=rr.parse||exports.parse;rr.parseInline||exports.parseInline;var nze=rr.parser||exports.parser;rr.setOptions||exports.setOptions;rr.use||exports.use;rr.walkTokens||exports.walkTokens;function sze(s){return JSON.stringify(s,oze)}function NP(s){let e=JSON.parse(s);return e=RP(e),e}function oze(s,e){return e instanceof RegExp?{$mid:2,source:e.source,flags:e.flags}:e}function RP(s,e=0){if(!s||e>200)return s;if(typeof s=="object"){switch(s.$mid){case 1:return At.revive(s);case 2:return new RegExp(s.source,s.flags);case 17:return new Date(s.source)}if(s instanceof pY||s instanceof Uint8Array)return s;if(Array.isArray(s))for(let t=0;t<s.length;++t)s[t]=RP(s[t],e+1);else for(const t in s)Object.hasOwnProperty.call(s,t)&&(s[t]=RP(s[t],e+1))}return s}const R3=Object.freeze({image:({href:s,title:e,text:t})=>{let i=[],n=[];return s&&({href:s,dimensions:i}=tze(s),n.push(`src="${_L(s)}"`)),t&&n.push(`alt="${_L(t)}"`),e&&n.push(`title="${_L(e)}"`),i.length&&(n=n.concat(i)),"<img "+n.join(" ")+">"},paragraph({tokens:s}){return`<p>${this.parser.parseInline(s)}</p>`},link({href:s,title:e,tokens:t}){let i=this.parser.parseInline(t);return typeof s!="string"?"":(s===i&&(i=N3(i)),e=typeof e=="string"?_L(N3(e)):"",s=N3(s),s=s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),`<a href="${s}" title="${e||s}" draggable="false">${i}</a>`)}});function TY(s,e={},t={}){const i=new Ze;let n=!1;const o=gee(e),l=function(g){let b;try{b=NP(decodeURIComponent(g))}catch{}return b?(b=Ape(b,f=>{if(s.uris&&s.uris[f])return At.revive(s.uris[f])}),encodeURIComponent(JSON.stringify(b))):g},r=function(g,b){const f=s.uris&&s.uris[g];let Z=At.revive(f);return b?g.startsWith(Xt.data+":")?g:(Z||(Z=At.parse(g)),q5.uriToBrowserUri(Z).toString(!0)):!Z||At.parse(g).toString()===Z.toString()?g:(Z.query&&(Z=Z.with({query:l(Z.query)})),Z.toString())},a=new abe;a.image=R3.image,a.link=R3.link,a.paragraph=R3.paragraph;const d=[],c=[];if(e.codeBlockRendererSync?a.code=({text:g,lang:b})=>{const f=AP.nextId(),Z=e.codeBlockRendererSync(Tle(b),g);return c.push([f,Z]),`<div class="code" data-code="${f}">${aC(g)}</div>`}:e.codeBlockRenderer&&(a.code=({text:g,lang:b})=>{const f=AP.nextId(),Z=e.codeBlockRenderer(Tle(b),g);return d.push(Z.then(A=>[f,A])),`<div class="code" data-code="${f}">${aC(g)}</div>`}),e.actionHandler){const g=function(Z){let A=Z.target;if(!(A.tagName!=="A"&&(A=A.parentElement,!A||A.tagName!=="A")))try{let N=A.dataset.href;N&&(s.baseUri&&(N=S3(At.from(s.baseUri),N)),e.actionHandler.callback(N,Z))}catch(N){vt(N)}finally{Z.preventDefault()}},b=e.actionHandler.disposables.add(new Qi(o,"click")),f=e.actionHandler.disposables.add(new Qi(o,"auxclick"));e.actionHandler.disposables.add(ve.any(b.event,f.event)(Z=>{const A=new Jh(Wt(o),Z);!A.leftButton&&!A.middleButton||g(A)})),e.actionHandler.disposables.add(ge(o,"keydown",Z=>{const A=new Jn(Z);!A.equals(10)&&!A.equals(3)||g(A)}))}s.supportHtml||(a.html=({text:g})=>{var f;return(f=e.sanitizerOptions)!=null&&f.replaceWithPlaintext?aC(g):(s.isTrusted?g.match(/^(<span[^>]+>)|(<\/\s*span>)$/):void 0)?g:""}),t.renderer=a;let h=s.value??"";h.length>1e5&&(h=`${h.substr(0,1e5)}…`),s.supportThemeIcons&&(h=XYe(h));let u;if(e.fillInIncompleteTokens){const g={...ize,...t},b=MY(h,g),f=fze(b);u=nze(f,g)}else u=dbe(h,{...t,async:!1});s.supportThemeIcons&&(u=DU(u).map(b=>typeof b=="string"?b:b.outerHTML).join(""));const p=new DOMParser().parseFromString(SP({isTrusted:s.isTrusted,...e.sanitizerOptions},u),"text/html");if(p.body.querySelectorAll("img, audio, video, source").forEach(g=>{const b=g.getAttribute("src");if(b){let f=b;try{s.baseUri&&(f=S3(At.from(s.baseUri),f))}catch{}if(g.setAttribute("src",r(f,!0)),e.remoteImageIsAllowed){const Z=At.parse(f);Z.scheme!==Xt.file&&Z.scheme!==Xt.data&&!e.remoteImageIsAllowed(Z)&&g.replaceWith(Ge("",void 0,g.outerHTML))}}}),p.body.querySelectorAll("a").forEach(g=>{const b=g.getAttribute("href");if(g.setAttribute("href",""),!b||/^data:|javascript:/i.test(b)||/^command:/i.test(b)&&!s.isTrusted||/^command:(\/\/\/)?_workbench\.downloadResource/i.test(b))g.replaceWith(...g.childNodes);else{let f=r(b,!1);s.baseUri&&(f=S3(At.from(s.baseUri),b)),g.dataset.href=f}}),o.innerHTML=SP({isTrusted:s.isTrusted,...e.sanitizerOptions},p.body.innerHTML),d.length>0)Promise.all(d).then(g=>{var Z;if(n)return;const b=new Map(g),f=o.querySelectorAll("div[data-code]");for(const A of f){const N=b.get(A.dataset.code??"");N&&Zl(A,N)}(Z=e.asyncRenderCallback)==null||Z.call(e)});else if(c.length>0){const g=new Map(c),b=o.querySelectorAll("div[data-code]");for(const f of b){const Z=g.get(f.dataset.code??"");Z&&Zl(f,Z)}}if(e.asyncRenderCallback)for(const g of o.getElementsByTagName("img")){const b=i.add(ge(g,"load",()=>{b.dispose(),e.asyncRenderCallback()}))}return{element:o,dispose:()=>{n=!0,i.dispose()}}}function Tle(s){if(!s)return"";const e=s.split(/[\s+|:|,|\{|\?]/,1);return e.length?e[0]:s}function S3(s,e){return/^\w[\w\d+.-]*:/.test(e)?e:s.path.endsWith("/")?Cle(s,e).toString():Cle(wY(s),e).toString()}const lze=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];function SP(s,e){const{config:t,allowedSchemes:i}=aze(s),n=new Ze;n.add(Ble("uponSanitizeAttribute",(o,l)=>{var r;if(l.attrName==="style"||l.attrName==="class"){if(o.tagName==="SPAN"){if(l.attrName==="style"){l.keepAttr=/^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(border-radius:[0-9]+px;)?$/.test(l.attrValue);return}else if(l.attrName==="class"){l.keepAttr=/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(l.attrValue);return}}l.keepAttr=!1;return}else if(o.tagName==="INPUT"&&((r=o.attributes.getNamedItem("type"))==null?void 0:r.value)==="checkbox"){if(l.attrName==="type"&&l.attrValue==="checkbox"||l.attrName==="disabled"||l.attrName==="checked"){l.keepAttr=!0;return}l.keepAttr=!1}})),n.add(Ble("uponSanitizeElement",(o,l)=>{var r;if(l.tagName==="input"&&(((r=o.attributes.getNamedItem("type"))==null?void 0:r.value)==="checkbox"?o.setAttribute("disabled",""):s.replaceWithPlaintext||o.remove()),s.replaceWithPlaintext&&!l.allowedTags[l.tagName]&&l.tagName!=="body"&&o.parentElement){let a,d;if(l.tagName==="#comment")a=`<!--${o.textContent}-->`;else{const m=lze.includes(l.tagName),p=o.attributes.length?" "+Array.from(o.attributes).map(g=>`${g.name}="${g.value}"`).join(" "):"";a=`<${l.tagName}${p}>`,m||(d=`</${l.tagName}>`)}const c=document.createDocumentFragment(),h=o.parentElement.ownerDocument.createTextNode(a);c.appendChild(h);const u=d?o.parentElement.ownerDocument.createTextNode(d):void 0;for(;o.firstChild;)c.appendChild(o.firstChild);u&&c.appendChild(u),o.nodeType===Node.COMMENT_NODE?o.parentElement.insertBefore(c,o):o.parentElement.replaceChild(c,o)}})),n.add(xEe(i));try{return gge(e,{...t,RETURN_TRUSTED_TYPE:!0})}finally{n.dispose()}}const rze=["align","autoplay","alt","checked","class","colspan","controls","data-code","data-href","disabled","draggable","height","href","loop","muted","playsinline","poster","rowspan","src","style","target","title","type","width","start"];function aze(s){const e=[Xt.http,Xt.https,Xt.mailto,Xt.data,Xt.file,Xt.vscodeFileResource,Xt.vscodeRemote,Xt.vscodeRemoteResource];return s.isTrusted&&e.push(Xt.command),{config:{ALLOWED_TAGS:s.allowedTags??[...JEe],ALLOWED_ATTR:rze,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:e}}function dze(s){return typeof s=="string"?s:cze(s)}function cze(s,e){let t=s.value??"";t.length>1e5&&(t=`${t.substr(0,1e5)}…`);const i=dbe(t,{async:!1,renderer:e?mze.value:uze.value}).replace(/&(#\d+|[a-zA-Z]+);/g,n=>hze.get(n)??n);return SP({isTrusted:!1},i).toString()}const hze=new Map([[""",'"'],[" "," "],["&","&"],["'","'"],["<","<"],[">",">"]]);function cbe(){const s=new abe;return s.code=({text:e})=>e,s.blockquote=({text:e})=>e+`
- `,s.html=e=>"",s.heading=function({tokens:e}){return this.parser.parseInline(e)+`
- `},s.hr=()=>"",s.list=function({items:e}){return e.map(t=>this.listitem(t)).join(`
- `)+`
- `},s.listitem=({text:e})=>e+`
- `,s.paragraph=function({tokens:e}){return this.parser.parseInline(e)+`
- `},s.table=function({header:e,rows:t}){return e.map(i=>this.tablecell(i)).join(" ")+`
- `+t.map(i=>i.map(n=>this.tablecell(n)).join(" ")).join(`
- `)+`
- `},s.tablerow=({text:e})=>e,s.tablecell=function({tokens:e}){return this.parser.parseInline(e)},s.strong=({text:e})=>e,s.em=({text:e})=>e,s.codespan=({text:e})=>e,s.br=e=>`
- `,s.del=({text:e})=>e,s.image=e=>"",s.text=({text:e})=>e,s.link=({text:e})=>e,s}const uze=new Hh(s=>cbe()),mze=new Hh(()=>{const s=cbe();return s.code=({text:e})=>`
- \`\`\`
- ${e}
- \`\`\`
- `,s});function hv(s){let e="";return s.forEach(t=>{e+=t.raw}),e}function hbe(s){var e,t;if(s.tokens)for(let i=s.tokens.length-1;i>=0;i--){const n=s.tokens[i];if(n.type==="text"){const o=n.raw.split(`
- `),l=o[o.length-1];if(l.includes("`"))return Zze(s);if(l.includes("**"))return Vze(s);if(l.match(/\*\w/))return Aze(s);if(l.match(/(^|\s)__\w/))return Qze(s);if(l.match(/(^|\s)_\w/))return Nze(s);if(pze(l)||gze(l)&&s.tokens.slice(0,i).some(r=>r.type==="text"&&r.raw.match(/\[[^\]]*$/))){const r=s.tokens.slice(i+1);return((e=r[0])==null?void 0:e.type)==="link"&&((t=r[1])==null?void 0:t.type)==="text"&&r[1].raw.match(/^ *"[^"]*$/)||l.match(/^[^"]* +"[^"]*$/)?Sze(s):Rze(s)}else if(l.match(/(^|\s)\[\w*/))return Wze(s)}}}function pze(s){return!!s.match(/(^|\s)\[.*\]\(\w*/)}function gze(s){return!!s.match(/^[^\[]*\]\([^\)]*$/)}function bze(s){var a;const e=s.items[s.items.length-1],t=e.tokens?e.tokens[e.tokens.length-1]:void 0;let i;if((t==null?void 0:t.type)==="text"&&!("inRawBlock"in e)&&(i=hbe(t)),!i||i.type!=="paragraph")return;const n=hv(s.items.slice(0,-1)),o=(a=e.raw.match(/^(\s*(-|\d+\.|\*) +)/))==null?void 0:a[0];if(!o)return;const l=o+hv(e.tokens.slice(0,-1))+i.raw,r=MY(n+l)[0];if(r.type==="list")return r}const Uze=3;function fze(s){for(let e=0;e<Uze;e++){const t=Fze(s);if(t)s=t;else break}return s}function Fze(s){let e,t;for(e=0;e<s.length;e++){const i=s[e];if(i.type==="paragraph"&&i.raw.match(/(\n|^)\|/)){t=yze(s.slice(e));break}if(e===s.length-1&&i.type==="list"){const n=bze(i);if(n){t=[n];break}}if(e===s.length-1&&i.type==="paragraph"){const n=hbe(i);if(n){t=[n];break}}}if(t){const i=[...s.slice(0,e),...t];return i.links=s.links,i}return null}function Zze(s){return gf(s,"`")}function Aze(s){return gf(s,"*")}function Nze(s){return gf(s,"_")}function Rze(s){return gf(s,")")}function Sze(s){return gf(s,'")')}function Wze(s){return gf(s,"](https://microsoft.com)")}function Vze(s){return gf(s,"**")}function Qze(s){return gf(s,"__")}function gf(s,e){const t=hv(Array.isArray(s)?s:[s]);return MY(t+e)[0]}function yze(s){const e=hv(s),t=e.split(`
- `);let i,n=!1;for(let o=0;o<t.length;o++){const l=t[o].trim();if(typeof i>"u"&&l.match(/^\s*\|/)){const r=l.match(/(\|[^\|]+)(?=\||$)/g);r&&(i=r.length)}else if(typeof i=="number")if(l.match(/^\s*\|/)){if(o!==t.length-1)return;n=!0}else return}if(typeof i=="number"&&i>0){const o=n?t.slice(0,-1).join(`
- `):e,l=!!o.match(/\|\s*$/),r=o+(l?"":"|")+`
- |${" --- |".repeat(i)}`;return MY(r)}}function Ble(s,e){return bge(s,e),gt(()=>Uge(s))}const yg=class yg{static createEmpty(e,t){const i=yg.defaultTokenMetadata,n=new Uint32Array(2);return n[0]=e.length,n[1]=i,new yg(n,e,t)}static createFromTextAndMetadata(e,t){let i=0,n="";const o=new Array;for(const{text:l,metadata:r}of e)o.push(i+l.length,r),i+=l.length,n+=l;return new yg(new Uint32Array(o),n,t)}constructor(e,t,i){this._lineTokensBrand=void 0,this._tokens=e,this._tokensCount=this._tokens.length>>>1,this._text=t,this.languageIdCodec=i}equals(e){return e instanceof yg?this.slicedEquals(e,0,this._tokensCount):!1}slicedEquals(e,t,i){if(this._text!==e._text||this._tokensCount!==e._tokensCount)return!1;const n=t<<1,o=n+(i<<1);for(let l=n;l<o;l++)if(this._tokens[l]!==e._tokens[l])return!1;return!0}getLineContent(){return this._text}getCount(){return this._tokensCount}getStartOffset(e){return e>0?this._tokens[e-1<<1]:0}getMetadata(e){return this._tokens[(e<<1)+1]}getLanguageId(e){const t=this._tokens[(e<<1)+1],i=Ta.getLanguageId(t);return this.languageIdCodec.decodeLanguageId(i)}getStandardTokenType(e){const t=this._tokens[(e<<1)+1];return Ta.getTokenType(t)}getForeground(e){const t=this._tokens[(e<<1)+1];return Ta.getForeground(t)}getClassName(e){const t=this._tokens[(e<<1)+1];return Ta.getClassNameFromMetadata(t)}getInlineStyle(e,t){const i=this._tokens[(e<<1)+1];return Ta.getInlineStyleFromMetadata(i,t)}getPresentation(e){const t=this._tokens[(e<<1)+1];return Ta.getPresentationFromMetadata(t)}getEndOffset(e){return this._tokens[e<<1]}findTokenIndexAtOffset(e){return yg.findIndexInTokensArray(this._tokens,e)}inflate(){return this}sliceAndInflate(e,t,i){return new See(this,e,t,i)}static convertToEndOffset(e,t){const n=(e.length>>>1)-1;for(let o=0;o<n;o++)e[o<<1]=e[o+1<<1];e[n<<1]=t}static findIndexInTokensArray(e,t){if(e.length<=2)return 0;let i=0,n=(e.length>>>1)-1;for(;i<n;){const o=i+Math.floor((n-i)/2),l=e[o<<1];if(l===t)return o+1;l<t?i=o+1:l>t&&(n=o)}return i}withInserted(e){if(e.length===0)return this;let t=0,i=0,n="";const o=new Array;let l=0;for(;;){const r=t<this._tokensCount?this._tokens[t<<1]:-1,a=i<e.length?e[i]:null;if(r!==-1&&(a===null||r<=a.offset)){n+=this._text.substring(l,r);const d=this._tokens[(t<<1)+1];o.push(n.length,d),t++,l=r}else if(a){if(a.offset>l){n+=this._text.substring(l,a.offset);const d=this._tokens[(t<<1)+1];o.push(n.length,d),l=a.offset}n+=a.text,o.push(n.length,a.tokenMetadata),i++}else break}return new yg(new Uint32Array(o),n,this.languageIdCodec)}getTokenText(e){const t=this.getStartOffset(e),i=this.getEndOffset(e);return this._text.substring(t,i)}forEach(e){const t=this.getCount();for(let i=0;i<t;i++)e(i)}};yg.defaultTokenMetadata=(32768|2<<24)>>>0;let ll=yg;class See{constructor(e,t,i,n){this._source=e,this._startOffset=t,this._endOffset=i,this._deltaOffset=n,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this.languageIdCodec=e.languageIdCodec,this._tokensCount=0;for(let o=this._firstTokenIndex,l=e.getCount();o<l&&!(e.getStartOffset(o)>=i);o++)this._tokensCount++}getMetadata(e){return this._source.getMetadata(this._firstTokenIndex+e)}getLanguageId(e){return this._source.getLanguageId(this._firstTokenIndex+e)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(e){return e instanceof See?this._startOffset===e._startOffset&&this._endOffset===e._endOffset&&this._deltaOffset===e._deltaOffset&&this._source.slicedEquals(e._source,this._firstTokenIndex,this._tokensCount):!1}getCount(){return this._tokensCount}getStandardTokenType(e){return this._source.getStandardTokenType(this._firstTokenIndex+e)}getForeground(e){return this._source.getForeground(this._firstTokenIndex+e)}getEndOffset(e){const t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}getClassName(e){return this._source.getClassName(this._firstTokenIndex+e)}getInlineStyle(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}getPresentation(e){return this._source.getPresentation(this._firstTokenIndex+e)}findTokenIndexAtOffset(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}getTokenText(e){const t=this._firstTokenIndex+e,i=this._source.getStartOffset(t),n=this._source.getEndOffset(t);let o=this._source.getTokenText(t);return i<this._startOffset&&(o=o.substring(this._startOffset-i)),n>this._endOffset&&(o=o.substring(0,o.length-(n-this._endOffset))),o}forEach(e){for(let t=0;t<this.getCount();t++)e(t)}}function Cze(s,e){const t=e.lineNumber;if(!s.tokenization.isCheapToTokenize(t))return;s.tokenization.forceTokenization(t);const i=s.tokenization.getLineTokens(t),n=i.findTokenIndexAtOffset(e.column-1);return i.getStandardTokenType(n)}const cV=new class{clone(){return this}equals(s){return this===s}};function Wee(s,e){return new S$([new eM(0,"",s)],e)}function BY(s,e){const t=new Uint32Array(2);return t[0]=0,t[1]=(s<<0|0|0|32768|2<<24)>>>0,new P5(t,e===null?cV:e)}const Lle={getInitialState:()=>cV,tokenizeEncoded:(s,e,t)=>BY(0,t)};async function wze(s,e,t){if(!t)return kle(e,s.languageIdCodec,Lle);const i=await Ds.getOrCreate(t);return kle(e,s.languageIdCodec,i||Lle)}function Mze(s,e,t,i,n,o,l){let r="<div>",a=i,d=0,c=!0;for(let h=0,u=e.getCount();h<u;h++){const m=e.getEndOffset(h);if(m<=i)continue;let p="";for(;a<m&&a<n;a++){const g=s.charCodeAt(a);switch(g){case 9:{let b=o-(a+d)%o;for(d+=b-1;b>0;)l&&c?(p+=" ",c=!1):(p+=" ",c=!0),b--;break}case 60:p+="<",c=!1;break;case 62:p+=">",c=!1;break;case 38:p+="&",c=!1;break;case 0:p+="�",c=!1;break;case 65279:case 8232:case 8233:case 133:p+="�",c=!1;break;case 13:p+="​",c=!1;break;case 32:l&&c?(p+=" ",c=!1):(p+=" ",c=!0);break;default:p+=String.fromCharCode(g),c=!1}}if(r+=`<span style="${e.getInlineStyle(h,t)}">${p}</span>`,m>n||a>=n)break}return r+="</div>",r}function kle(s,e,t){let i='<div class="monaco-tokenized-source">';const n=Lp(s);let o=t.getInitialState();for(let l=0,r=n.length;l<r;l++){const a=n[l];l>0&&(i+="<br/>");const d=t.tokenizeEncoded(a,!0,o);ll.convertToEndOffset(d.tokens,a.length);const h=new ll(d.tokens,a,e).inflate();let u=0;for(let m=0,p=h.getCount();m<p;m++){const g=h.getClassName(m),b=h.getEndOffset(m);i+=`<span class="${g}">${aC(a.substring(u,b))}</span>`,u=b}o=d.endState}return i+="</div>",i}var Tze=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ile=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},WP,vV;let W0=(vV=class{constructor(e,t,i){this._options=e,this._languageService=t,this._openerService=i,this._onDidRenderAsync=new re,this.onDidRenderAsync=this._onDidRenderAsync.event}dispose(){this._onDidRenderAsync.dispose()}render(e,t,i){if(!e)return{element:document.createElement("span"),dispose:()=>{}};const n=new Ze,o=n.add(TY(e,{...this._getRenderOptions(e,n),...t},i));return o.element.classList.add("rendered-markdown"),{element:o.element,dispose:()=>n.dispose()}}_getRenderOptions(e,t){return{codeBlockRenderer:async(i,n)=>{var a,d;let o;i?o=this._languageService.getLanguageIdByLanguageName(i):this._options.editor&&(o=(a=this._options.editor.getModel())==null?void 0:a.getLanguageId()),o||(o=ia);const l=await wze(this._languageService,n,o),r=document.createElement("span");if(r.innerHTML=((d=WP._ttpTokenizer)==null?void 0:d.createHTML(l))??l,this._options.editor){const c=this._options.editor.getOption(50);Al(r,c)}else this._options.codeBlockFontFamily&&(r.style.fontFamily=this._options.codeBlockFontFamily);return this._options.codeBlockFontSize!==void 0&&(r.style.fontSize=this._options.codeBlockFontSize),r},asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:i=>Vee(this._openerService,i,e.isTrusted),disposables:t}}}},WP=vV,vV._ttpTokenizer=B0("tokenizeToString",{createHTML(e){return e}}),vV);W0=WP=Tze([Ile(1,Zs),Ile(2,za)],W0);async function Vee(s,e,t){try{return await s.open(e,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:Bze(t)})}catch(i){return vt(i),!1}}function Bze(s){return s===!0?!0:s&&Array.isArray(s.enabledCommands)?s.enabledCommands:!1}const Qd=Zi("accessibilityService"),hB=new Ke("accessibilityModeEnabled",!1);const Dle=2e4;let iZ,rD,VP,aD,QP;function Lze(s){iZ=document.createElement("div"),iZ.className="monaco-aria-container";const e=()=>{const i=document.createElement("div");return i.className="monaco-alert",i.setAttribute("role","alert"),i.setAttribute("aria-atomic","true"),iZ.appendChild(i),i};rD=e(),VP=e();const t=()=>{const i=document.createElement("div");return i.className="monaco-status",i.setAttribute("aria-live","polite"),i.setAttribute("aria-atomic","true"),iZ.appendChild(i),i};aD=t(),QP=t(),s.appendChild(iZ)}function ra(s){iZ&&(rD.textContent!==s?(Fl(VP),uv(rD,s)):(Fl(rD),uv(VP,s)))}function Vp(s){iZ&&(aD.textContent!==s?(Fl(QP),uv(aD,s)):(Fl(aD),uv(QP,s)))}function uv(s,e){Fl(s),e.length>Dle&&(e=e.substr(0,Dle)),s.textContent=e,s.style.visibility="hidden",s.style.visibility="visible"}var kze=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},I1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const pm=Ge;let yP=class extends bc{get _targetWindow(){return Wt(this._target.targetElements[0])}get _targetDocumentElement(){return Wt(this._target.targetElements[0]).document.documentElement}get isDisposed(){return this._isDisposed}get isMouseIn(){return this._lockMouseTracker.isMouseIn}get domNode(){return this._hover.containerDomNode}get onDispose(){return this._onDispose.event}get onRequestLayout(){return this._onRequestLayout.event}get anchor(){return this._hoverPosition===2?0:1}get x(){return this._x}get y(){return this._y}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked!==e&&(this._isLocked=e,this._hoverContainer.classList.toggle("locked",this._isLocked))}constructor(e,t,i,n,o,l){var u,m,p,g,b,f,Z;super(),this._keybindingService=t,this._configurationService=i,this._openerService=n,this._instantiationService=o,this._accessibilityService=l,this._messageListeners=new Ze,this._isDisposed=!1,this._forcePosition=!1,this._x=0,this._y=0,this._isLocked=!1,this._enableFocusTraps=!1,this._addedFocusTrap=!1,this._onDispose=this._register(new re),this._onRequestLayout=this._register(new re),this._linkHandler=e.linkHandler||(A=>Vee(this._openerService,A,Ou(e.content)?e.content.isTrusted:void 0)),this._target="targetElements"in e.target?e.target:new Ize(e.target),this._hoverPointer=(u=e.appearance)!=null&&u.showPointer?pm("div.workbench-hover-pointer"):void 0,this._hover=this._register(new pee),this._hover.containerDomNode.classList.add("workbench-hover","fadeIn"),(m=e.appearance)!=null&&m.compact&&this._hover.containerDomNode.classList.add("workbench-hover","compact"),(p=e.appearance)!=null&&p.skipFadeInAnimation&&this._hover.containerDomNode.classList.add("skip-fade-in"),e.additionalClasses&&this._hover.containerDomNode.classList.add(...e.additionalClasses),(g=e.position)!=null&&g.forcePosition&&(this._forcePosition=!0),e.trapFocus&&(this._enableFocusTraps=!0),this._hoverPosition=((b=e.position)==null?void 0:b.hoverPosition)??3,this.onmousedown(this._hover.containerDomNode,A=>A.stopPropagation()),this.onkeydown(this._hover.containerDomNode,A=>{A.equals(9)&&this.dispose()}),this._register(ge(this._targetWindow,"blur",()=>this.dispose()));const r=pm("div.hover-row.markdown-hover"),a=pm("div.hover-contents");if(typeof e.content=="string")a.textContent=e.content,a.style.whiteSpace="pre-wrap";else if(Yo(e.content))a.appendChild(e.content),a.classList.add("html-hover-contents");else{const A=e.content,N=this._instantiationService.createInstance(W0,{codeBlockFontFamily:this._configurationService.getValue("editor").fontFamily||ta.fontFamily}),{element:W}=N.render(A,{actionHandler:{callback:Q=>this._linkHandler(Q),disposables:this._messageListeners},asyncRenderCallback:()=>{a.classList.add("code-hover-contents"),this.layout(),this._onRequestLayout.fire()}});a.appendChild(W)}if(r.appendChild(a),this._hover.contentsDomNode.appendChild(r),e.actions&&e.actions.length>0){const A=pm("div.hover-row.status-bar"),N=pm("div.actions");e.actions.forEach(W=>{const Q=this._keybindingService.lookupKeybinding(W.commandId),R=Q?Q.getLabel():null;yY.render(N,{label:W.label,commandId:W.commandId,run:M=>{W.run(M),this.dispose()},iconClass:W.iconClass},R)}),A.appendChild(N),this._hover.containerDomNode.appendChild(A)}this._hoverContainer=pm("div.workbench-hover-container"),this._hoverPointer&&this._hoverContainer.appendChild(this._hoverPointer),this._hoverContainer.appendChild(this._hover.containerDomNode);let d;if(e.actions&&e.actions.length>0?d=!1:((f=e.persistence)==null?void 0:f.hideOnHover)===void 0?d=typeof e.content=="string"||Ou(e.content)&&!e.content.value.includes("](")&&!e.content.value.includes("</a>"):d=e.persistence.hideOnHover,(Z=e.appearance)!=null&&Z.showHoverHint){const A=pm("div.hover-row.status-bar"),N=pm("div.info");N.textContent=U("hoverhint","Hold {0} key to mouse over",Fi?"Option":"Alt"),A.appendChild(N),this._hover.containerDomNode.appendChild(A)}const c=[...this._target.targetElements];d||c.push(this._hoverContainer);const h=this._register(new Gle(c));if(this._register(h.onMouseOut(()=>{this._isLocked||this.dispose()})),d){const A=[...this._target.targetElements,this._hoverContainer];this._lockMouseTracker=this._register(new Gle(A)),this._register(this._lockMouseTracker.onMouseOut(()=>{this._isLocked||this.dispose()}))}else this._lockMouseTracker=h}addFocusTrap(){if(!this._enableFocusTraps||this._addedFocusTrap)return;this._addedFocusTrap=!0;const e=this._hover.containerDomNode,t=this.findLastFocusableChild(this._hover.containerDomNode);if(t){const i=E$(this._hoverContainer,pm("div")),n=ye(this._hoverContainer,pm("div"));i.tabIndex=0,n.tabIndex=0,this._register(ge(n,"focus",o=>{e.focus(),o.preventDefault()})),this._register(ge(i,"focus",o=>{t.focus(),o.preventDefault()}))}}findLastFocusableChild(e){if(e.hasChildNodes())for(let t=0;t<e.childNodes.length;t++){const i=e.childNodes.item(e.childNodes.length-t-1);if(i.nodeType===i.ELEMENT_NODE){const o=i;if(typeof o.tabIndex=="number"&&o.tabIndex>=0)return o}const n=this.findLastFocusableChild(i);if(n)return n}}render(e){var n;e.appendChild(this._hoverContainer);const i=this._hoverContainer.contains(this._hoverContainer.ownerDocument.activeElement)&&O0e(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),(n=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))==null?void 0:n.getAriaLabel());i&&Vp(i),this.layout(),this.addFocusTrap()}layout(){this._hover.containerDomNode.classList.remove("right-aligned"),this._hover.contentsDomNode.style.maxHeight="";const e=c=>{const h=Nge(c),u=c.getBoundingClientRect();return{top:u.top*h,bottom:u.bottom*h,right:u.right*h,left:u.left*h}},t=this._target.targetElements.map(c=>e(c)),{top:i,right:n,bottom:o,left:l}=t[0],r=n-l,a=o-i,d={top:i,right:n,bottom:o,left:l,width:r,height:a,center:{x:l+r/2,y:i+a/2}};if(this.adjustHorizontalHoverPosition(d),this.adjustVerticalHoverPosition(d),this.adjustHoverMaxHeight(d),this._hoverContainer.style.padding="",this._hoverContainer.style.margin="",this._hoverPointer){switch(this._hoverPosition){case 1:d.left+=3,d.right+=3,this._hoverContainer.style.paddingLeft="3px",this._hoverContainer.style.marginLeft="-3px";break;case 0:d.left-=3,d.right-=3,this._hoverContainer.style.paddingRight="3px",this._hoverContainer.style.marginRight="-3px";break;case 2:d.top+=3,d.bottom+=3,this._hoverContainer.style.paddingTop="3px",this._hoverContainer.style.marginTop="-3px";break;case 3:d.top-=3,d.bottom-=3,this._hoverContainer.style.paddingBottom="3px",this._hoverContainer.style.marginBottom="-3px";break}d.center.x=d.left+r/2,d.center.y=d.top+a/2}this.computeXCordinate(d),this.computeYCordinate(d),this._hoverPointer&&(this._hoverPointer.classList.remove("top"),this._hoverPointer.classList.remove("left"),this._hoverPointer.classList.remove("right"),this._hoverPointer.classList.remove("bottom"),this.setHoverPointerPosition(d)),this._hover.onContentsChanged()}computeXCordinate(e){const t=this._hover.containerDomNode.clientWidth+2;this._target.x!==void 0?this._x=this._target.x:this._hoverPosition===1?this._x=e.right:this._hoverPosition===0?this._x=e.left-t:(this._hoverPointer?this._x=e.center.x-this._hover.containerDomNode.clientWidth/2:this._x=e.left,this._x+t>=this._targetDocumentElement.clientWidth&&(this._hover.containerDomNode.classList.add("right-aligned"),this._x=Math.max(this._targetDocumentElement.clientWidth-t-2,this._targetDocumentElement.clientLeft))),this._x<this._targetDocumentElement.clientLeft&&(this._x=e.left+2)}computeYCordinate(e){this._target.y!==void 0?this._y=this._target.y:this._hoverPosition===3?this._y=e.top:this._hoverPosition===2?this._y=e.bottom-2:this._hoverPointer?this._y=e.center.y+this._hover.containerDomNode.clientHeight/2:this._y=e.bottom,this._y>this._targetWindow.innerHeight&&(this._y=e.bottom)}adjustHorizontalHoverPosition(e){if(this._target.x!==void 0)return;const t=this._hoverPointer?3:0;if(this._forcePosition){const i=t+2;this._hoverPosition===1?this._hover.containerDomNode.style.maxWidth=`${this._targetDocumentElement.clientWidth-e.right-i}px`:this._hoverPosition===0&&(this._hover.containerDomNode.style.maxWidth=`${e.left-i}px`);return}this._hoverPosition===1?this._targetDocumentElement.clientWidth-e.right<this._hover.containerDomNode.clientWidth+t&&(e.left>=this._hover.containerDomNode.clientWidth+t?this._hoverPosition=0:this._hoverPosition=2):this._hoverPosition===0&&(e.left<this._hover.containerDomNode.clientWidth+t&&(this._targetDocumentElement.clientWidth-e.right>=this._hover.containerDomNode.clientWidth+t?this._hoverPosition=1:this._hoverPosition=2),e.left-this._hover.containerDomNode.clientWidth-t<=this._targetDocumentElement.clientLeft&&(this._hoverPosition=1))}adjustVerticalHoverPosition(e){if(this._target.y!==void 0||this._forcePosition)return;const t=this._hoverPointer?3:0;this._hoverPosition===3?e.top-this._hover.containerDomNode.clientHeight-t<0&&(this._hoverPosition=2):this._hoverPosition===2&&e.bottom+this._hover.containerDomNode.clientHeight+t>this._targetWindow.innerHeight&&(this._hoverPosition=3)}adjustHoverMaxHeight(e){let t=this._targetWindow.innerHeight/2;if(this._forcePosition){const i=(this._hoverPointer?3:0)+2;this._hoverPosition===3?t=Math.min(t,e.top-i):this._hoverPosition===2&&(t=Math.min(t,this._targetWindow.innerHeight-e.bottom-i))}if(this._hover.containerDomNode.style.maxHeight=`${t}px`,this._hover.contentsDomNode.clientHeight<this._hover.contentsDomNode.scrollHeight){const i=`${this._hover.scrollbar.options.verticalScrollbarSize}px`;this._hover.contentsDomNode.style.paddingRight!==i&&(this._hover.contentsDomNode.style.paddingRight=i)}}setHoverPointerPosition(e){if(this._hoverPointer)switch(this._hoverPosition){case 0:case 1:{this._hoverPointer.classList.add(this._hoverPosition===0?"right":"left");const t=this._hover.containerDomNode.clientHeight;t>e.height?this._hoverPointer.style.top=`${e.center.y-(this._y-t)-3}px`:this._hoverPointer.style.top=`${Math.round(t/2)-3}px`;break}case 3:case 2:{this._hoverPointer.classList.add(this._hoverPosition===3?"bottom":"top");const t=this._hover.containerDomNode.clientWidth;let i=Math.round(t/2)-3;const n=this._x+i;(n<e.left||n>e.right)&&(i=e.center.x-this._x-3),this._hoverPointer.style.left=`${i}px`;break}}}focus(){this._hover.containerDomNode.focus()}dispose(){this._isDisposed||(this._onDispose.fire(),this._hoverContainer.remove(),this._messageListeners.dispose(),this._target.dispose(),super.dispose()),this._isDisposed=!0}};yP=kze([I1(1,dn),I1(2,li),I1(3,za),I1(4,bt),I1(5,Qd)],yP);class Gle extends bc{get onMouseOut(){return this._onMouseOut.event}get isMouseIn(){return this._isMouseIn}constructor(e){super(),this._elements=e,this._isMouseIn=!0,this._onMouseOut=this._register(new re),this._elements.forEach(t=>this.onmouseover(t,()=>this._onTargetMouseOver(t))),this._elements.forEach(t=>this.onmouseleave(t,()=>this._onTargetMouseLeave(t)))}_onTargetMouseOver(e){this._isMouseIn=!0,this._clearEvaluateMouseStateTimeout(e)}_onTargetMouseLeave(e){this._isMouseIn=!1,this._evaluateMouseState(e)}_evaluateMouseState(e){this._clearEvaluateMouseStateTimeout(e),this._mouseTimeout=Wt(e).setTimeout(()=>this._fireIfMouseOutside(),0)}_clearEvaluateMouseStateTimeout(e){this._mouseTimeout&&(Wt(e).clearTimeout(this._mouseTimeout),this._mouseTimeout=void 0)}_fireIfMouseOutside(){this._isMouseIn||this._onMouseOut.fire()}}class Ize{constructor(e){this._element=e,this.targetElements=[this._element]}dispose(){}}var Pl;(function(s){function e(o,l){if(o.start>=l.end||l.start>=o.end)return{start:0,end:0};const r=Math.max(o.start,l.start),a=Math.min(o.end,l.end);return a-r<=0?{start:0,end:0}:{start:r,end:a}}s.intersect=e;function t(o){return o.end-o.start<=0}s.isEmpty=t;function i(o,l){return!t(e(o,l))}s.intersects=i;function n(o,l){const r=[],a={start:o.start,end:Math.min(l.start,o.end)},d={start:Math.max(l.end,o.start),end:o.end};return t(a)||r.push(a),t(d)||r.push(d),r}s.relativeComplement=n})(Pl||(Pl={}));function Dze(s){const e=s;return!!e&&typeof e.x=="number"&&typeof e.y=="number"}var uU;(function(s){s[s.AVOID=0]="AVOID",s[s.ALIGN=1]="ALIGN"})(uU||(uU={}));function hS(s,e,t){const i=t.mode===uU.ALIGN?t.offset:t.offset+t.size,n=t.mode===uU.ALIGN?t.offset+t.size:t.offset;return t.position===0?e<=s-i?i:e<=n?n-e:Math.max(s-e,0):e<=n?n-e:e<=s-i?i:0}const tW=class tW extends de{constructor(e,t){super(),this.container=null,this.useFixedPosition=!1,this.useShadowDOM=!1,this.delegate=null,this.toDisposeOnClean=de.None,this.toDisposeOnSetContainer=de.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=Ge(".context-view"),_r(this.view),this.setContainer(e,t),this._register(gt(()=>this.setContainer(null,1)))}setContainer(e,t){var n;this.useFixedPosition=t!==1;const i=this.useShadowDOM;if(this.useShadowDOM=t===3,!(e===this.container&&i===this.useShadowDOM)&&(this.container&&(this.toDisposeOnSetContainer.dispose(),this.view.remove(),this.shadowRoot&&(this.shadowRoot=null,(n=this.shadowRootHostElement)==null||n.remove(),this.shadowRootHostElement=null),this.container=null),e)){if(this.container=e,this.useShadowDOM){this.shadowRootHostElement=Ge(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});const l=document.createElement("style");l.textContent=Gze,this.shadowRoot.appendChild(l),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(Ge("slot"))}else this.container.appendChild(this.view);const o=new Ze;tW.BUBBLE_UP_EVENTS.forEach(l=>{o.add(Ms(this.container,l,r=>{this.onDOMEvent(r,!1)}))}),tW.BUBBLE_DOWN_EVENTS.forEach(l=>{o.add(Ms(this.container,l,r=>{this.onDOMEvent(r,!0)},!0))}),this.toDisposeOnSetContainer=o}}show(e){var t,i;this.isVisible()&&this.hide(),Fl(this.view),this.view.className="context-view monaco-component",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex=`${2575+(e.layer??0)}`,this.view.style.position=this.useFixedPosition?"fixed":"absolute",hd(this.view),this.toDisposeOnClean=e.render(this.view)||de.None,this.delegate=e,this.doLayout(),(i=(t=this.delegate).focus)==null||i.call(t)}getViewElement(){return this.view}layout(){var e,t;if(this.isVisible()){if(this.delegate.canRelayout===!1&&!(ju&&T$.pointerEvents)){this.hide();return}(t=(e=this.delegate)==null?void 0:e.layout)==null||t.call(e),this.doLayout()}}doLayout(){if(!this.isVisible())return;const e=this.delegate.getAnchor();let t;if(Yo(e)){const u=_s(e),m=Nge(e);t={top:u.top*m,left:u.left*m,width:u.width*m,height:u.height*m}}else Dze(e)?t={top:e.y,left:e.x,width:e.width||1,height:e.height||2}:t={top:e.posy,left:e.posx,width:2,height:2};const i=ld(this.view),n=$g(this.view),o=this.delegate.anchorPosition||0,l=this.delegate.anchorAlignment||0,r=this.delegate.anchorAxisAlignment||0;let a,d;const c=Jy();if(r===0){const u={offset:t.top-c.pageYOffset,size:t.height,position:o===0?0:1},m={offset:t.left,size:t.width,position:l===0?0:1,mode:uU.ALIGN};a=hS(c.innerHeight,n,u)+c.pageYOffset,Pl.intersects({start:a,end:a+n},{start:u.offset,end:u.offset+u.size})&&(m.mode=uU.AVOID),d=hS(c.innerWidth,i,m)}else{const u={offset:t.left,size:t.width,position:l===0?0:1},m={offset:t.top,size:t.height,position:o===0?0:1,mode:uU.ALIGN};d=hS(c.innerWidth,i,u),Pl.intersects({start:d,end:d+i},{start:u.offset,end:u.offset+u.size})&&(m.mode=uU.AVOID),a=hS(c.innerHeight,n,m)+c.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(o===0?"bottom":"top"),this.view.classList.add(l===0?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);const h=_s(this.container);this.view.style.top=`${a-(this.useFixedPosition?_s(this.view).top:h.top)}px`,this.view.style.left=`${d-(this.useFixedPosition?_s(this.view).left:h.left)}px`,this.view.style.width="initial"}hide(e){const t=this.delegate;this.delegate=null,t!=null&&t.onHide&&t.onHide(e),this.toDisposeOnClean.dispose(),_r(this.view)}isVisible(){return!!this.delegate}onDOMEvent(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,Wt(e).document.activeElement):t&&!Jo(e.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}};tW.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],tW.BUBBLE_DOWN_EVENTS=["click"];let CP=tW;const Gze=`
- :host {
- all: initial; /* 1st rule so subsequent properties are reset. */
- }
- .codicon[class*='codicon-'] {
- font: normal normal normal 16px/1 codicon;
- display: inline-block;
- text-decoration: none;
- text-rendering: auto;
- text-align: center;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- user-select: none;
- -webkit-user-select: none;
- -ms-user-select: none;
- }
- :host {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif;
- }
- :host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }
- :host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; }
- :host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; }
- :host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; }
- :host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; }
- :host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; }
- :host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; }
- :host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; }
- :host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; }
- :host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; }
- :host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; }
- :host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; }
- :host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; }
- :host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; }
- :host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; }
- `;var Eze=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vze=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let mv=class extends de{constructor(e){super(),this.layoutService=e,this.contextView=this._register(new CP(this.layoutService.mainContainer,1)),this.layout(),this._register(e.onDidLayoutContainer(()=>this.layout()))}showContextView(e,t,i){let n;t?t===this.layoutService.getContainer(Wt(t))?n=1:i?n=3:n=2:n=1,this.contextView.setContainer(t??this.layoutService.activeContainer,n),this.contextView.show(e);const o={close:()=>{this.openContextView===o&&this.hideContextView()}};return this.openContextView=o,o}layout(){this.contextView.layout()}hideContextView(e){this.contextView.hide(e),this.openContextView=void 0}};mv=Eze([vze(0,pf)],mv);class xze extends mv{getContextViewElement(){return this.contextView.getViewElement()}}class Jze{constructor(e,t,i){this.hoverDelegate=e,this.target=t,this.fadeInAnimation=i}async update(e,t,i){if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let n;if(e===void 0||Da(e)||Yo(e))n=e;else if(!Kw(e.markdown))n=e.markdown??e.markdownNotSupportedFallback;else{this._hoverWidget||this.show(U("iconLabel.loading","Loading..."),t,i),this._cancellationTokenSource=new Ws;const o=this._cancellationTokenSource.token;if(n=await e.markdown(o),n===void 0&&(n=e.markdownNotSupportedFallback),this.isDisposed||o.isCancellationRequested)return}this.show(n,t,i)}show(e,t,i){var o;const n=this._hoverWidget;if(this.hasContent(e)){const l={content:e,target:this.target,actions:i==null?void 0:i.actions,linkHandler:i==null?void 0:i.linkHandler,trapFocus:i==null?void 0:i.trapFocus,appearance:{showPointer:this.hoverDelegate.placement==="element",skipFadeInAnimation:!this.fadeInAnimation||!!n,showHoverHint:(o=i==null?void 0:i.appearance)==null?void 0:o.showHoverHint},position:{hoverPosition:2}};this._hoverWidget=this.hoverDelegate.showHover(l,t)}n==null||n.dispose()}hasContent(e){return e?Ou(e)?!!e.value:!0:!1}get isDisposed(){var e;return(e=this._hoverWidget)==null?void 0:e.isDisposed}dispose(){var e,t;(e=this._hoverWidget)==null||e.dispose(),(t=this._cancellationTokenSource)==null||t.dispose(!0),this._cancellationTokenSource=void 0}}var Xze=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},D1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let wP=class extends de{constructor(e,t,i,n,o){super(),this._instantiationService=e,this._keybindingService=i,this._layoutService=n,this._accessibilityService=o,this._managedHovers=new Map,t.onDidShowContextMenu(()=>this.hideHover()),this._contextViewHandler=this._register(new mv(this._layoutService))}showHover(e,t,i){var a,d,c,h;if(Ele(this._currentHoverOptions)===Ele(e)||this._currentHover&&((d=(a=this._currentHoverOptions)==null?void 0:a.persistence)!=null&&d.sticky))return;this._currentHoverOptions=e,this._lastHoverOptions=e;const n=e.trapFocus||this._accessibilityService.isScreenReaderOptimized(),o=kl();i||(n&&o?o.classList.contains("monaco-hover")||(this._lastFocusedElementBeforeOpen=o):this._lastFocusedElementBeforeOpen=void 0);const l=new Ze,r=this._instantiationService.createInstance(yP,e);if((c=e.persistence)!=null&&c.sticky&&(r.isLocked=!0),r.onDispose(()=>{var m,p;((m=this._currentHover)==null?void 0:m.domNode)&&Sge(this._currentHover.domNode)&&((p=this._lastFocusedElementBeforeOpen)==null||p.focus()),this._currentHoverOptions===e&&(this._currentHoverOptions=void 0),l.dispose()},void 0,l),!e.container){const u=Yo(e.target)?e.target:e.target.targetElements[0];e.container=this._layoutService.getContainer(Wt(u))}if(this._contextViewHandler.showContextView(new Yze(r,t),e.container),r.onRequestLayout(()=>this._contextViewHandler.layout(),void 0,l),(h=e.persistence)!=null&&h.sticky)l.add(ge(Wt(e.container).document,De.MOUSE_DOWN,u=>{Jo(u.target,r.domNode)||this.doHideHover()}));else{if("targetElements"in e.target)for(const m of e.target.targetElements)l.add(ge(m,De.CLICK,()=>this.hideHover()));else l.add(ge(e.target,De.CLICK,()=>this.hideHover()));const u=kl();if(u){const m=Wt(u).document;l.add(ge(u,De.KEY_DOWN,p=>{var g;return this._keyDown(p,r,!!((g=e.persistence)!=null&&g.hideOnKeyDown))})),l.add(ge(m,De.KEY_DOWN,p=>{var g;return this._keyDown(p,r,!!((g=e.persistence)!=null&&g.hideOnKeyDown))})),l.add(ge(u,De.KEY_UP,p=>this._keyUp(p,r))),l.add(ge(m,De.KEY_UP,p=>this._keyUp(p,r)))}}if("IntersectionObserver"in Qn){const u=new IntersectionObserver(p=>this._intersectionChange(p,r),{threshold:0}),m="targetElements"in e.target?e.target.targetElements[0]:e.target;u.observe(m),l.add(gt(()=>u.disconnect()))}return this._currentHover=r,r}hideHover(){var e;(e=this._currentHover)!=null&&e.isLocked||!this._currentHoverOptions||this.doHideHover()}doHideHover(){this._currentHover=void 0,this._currentHoverOptions=void 0,this._contextViewHandler.hideContextView()}_intersectionChange(e,t){e[e.length-1].isIntersecting||t.dispose()}showAndFocusLastHover(){this._lastHoverOptions&&this.showHover(this._lastHoverOptions,!0,!0)}_keyDown(e,t,i){var l,r;if(e.key==="Alt"){t.isLocked=!0;return}const n=new Jn(e);this._keybindingService.resolveKeyboardEvent(n).getSingleModifierDispatchChords().some(a=>!!a)||this._keybindingService.softDispatch(n,n.target).kind!==0||i&&(!((l=this._currentHoverOptions)!=null&&l.trapFocus)||e.key!=="Tab")&&(this.hideHover(),(r=this._lastFocusedElementBeforeOpen)==null||r.focus())}_keyUp(e,t){var i;e.key==="Alt"&&(t.isLocked=!1,t.isMouseIn||(this.hideHover(),(i=this._lastFocusedElementBeforeOpen)==null||i.focus()))}setupManagedHover(e,t,i,n){t.setAttribute("custom-hover","true"),t.title!==""&&(console.warn("HTML element already has a title attribute, which will conflict with the custom hover. Please remove the title attribute."),console.trace("Stack trace:",t.title),t.title="");let o,l;const r=(A,N)=>{var Q;const W=l!==void 0;A&&(l==null||l.dispose(),l=void 0),N&&(o==null||o.dispose(),o=void 0),W&&((Q=e.onDidHideHover)==null||Q.call(e),l=void 0)},a=(A,N,W,Q)=>new iu(async()=>{(!l||l.isDisposed)&&(l=new Jze(e,W||t,A>0),await l.update(typeof i=="function"?i():i,N,{...n,trapFocus:Q}))},A);let d=!1;const c=ge(t,De.MOUSE_DOWN,()=>{d=!0,r(!0,!0)},!0),h=ge(t,De.MOUSE_UP,()=>{d=!1},!0),u=ge(t,De.MOUSE_LEAVE,A=>{d=!1,r(!1,A.fromElement===t)},!0),m=A=>{if(o)return;const N=new Ze,W={targetElements:[t],dispose:()=>{}};if(e.placement===void 0||e.placement==="mouse"){const Q=R=>{W.x=R.x+10,Yo(R.target)&&vle(R.target,t)!==t&&r(!0,!0)};N.add(ge(t,De.MOUSE_MOVE,Q,!0))}o=N,!(Yo(A.target)&&vle(A.target,t)!==t)&&N.add(a(e.delay,!1,W))},p=ge(t,De.MOUSE_OVER,m,!0),g=()=>{if(d||o)return;const A={targetElements:[t],dispose:()=>{}},N=new Ze,W=()=>r(!0,!0);N.add(ge(t,De.BLUR,W,!0)),N.add(a(e.delay,!1,A)),o=N};let b;const f=t.tagName.toLowerCase();f!=="input"&&f!=="textarea"&&(b=ge(t,De.FOCUS,g,!0));const Z={show:A=>{r(!1,!0),a(0,A,void 0,A)},hide:()=>{r(!0,!0)},update:async(A,N)=>{i=A,await(l==null?void 0:l.update(i,void 0,N))},dispose:()=>{this._managedHovers.delete(t),p.dispose(),u.dispose(),c.dispose(),h.dispose(),b==null||b.dispose(),r(!0,!0)}};return this._managedHovers.set(t,Z),Z}showManagedHover(e){const t=this._managedHovers.get(e);t&&t.show(!0)}dispose(){this._managedHovers.forEach(e=>e.dispose()),super.dispose()}};wP=Xze([D1(0,bt),D1(1,Vd),D1(2,dn),D1(3,pf),D1(4,Qd)],wP);function Ele(s){if(s!==void 0)return(s==null?void 0:s.id)??s}class Yze{get anchorPosition(){return this._hover.anchor}constructor(e,t=!1){this._hover=e,this._focus=t,this.layer=1}render(e){return this._hover.render(e),this._focus&&this._hover.focus(),this._hover}getAnchor(){return{x:this._hover.x,y:this._hover.y}}layout(){this._hover.layout()}}function vle(s,e){for(e=e??Wt(s).document.body;!s.hasAttribute("custom-hover")&&s!==e;)s=s.parentElement;return s}Ci(Gp,wP,1);ih((s,e)=>{const t=s.getColor(B0e);t&&(e.addRule(`.monaco-workbench .workbench-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-workbench .workbench-hover hr { border-top: 1px solid ${t.transparent(.5)}; }`))});const uB=Zi("IWorkspaceEditService");class Qee{constructor(e){this.metadata=e}static convert(e){return e.edits.map(t=>{if(GU.is(t))return GU.lift(t);if(FW.is(t))return FW.lift(t);throw new Error("Unsupported edit")})}}class GU extends Qee{static is(e){return e instanceof GU?!0:il(e)&&At.isUri(e.resource)&&il(e.textEdit)}static lift(e){return e instanceof GU?e:new GU(e.resource,e.textEdit,e.versionId,e.metadata)}constructor(e,t,i=void 0,n){super(n),this.resource=e,this.textEdit=t,this.versionId=i}}class FW extends Qee{static is(e){return e instanceof FW?!0:il(e)&&(!!e.newResource||!!e.oldResource)}static lift(e){return e instanceof FW?e:new FW(e.oldResource,e.newResource,e.options,e.metadata)}constructor(e,t,i={},n){super(n),this.oldResource=e,this.newResource=t,this.options=i}}const Rl={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,renderGutterMenu:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0,useTrueInlineView:!1},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0,compactMode:!1},mB=Object.freeze({id:"editor",order:5,type:"object",title:U("editorConfigurationTitle","Editor"),scope:5}),pv={...mB,properties:{"editor.tabSize":{type:"number",default:er.tabSize,minimum:1,markdownDescription:U("tabSize","The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:U("indentSize",'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.')},"editor.insertSpaces":{type:"boolean",default:er.insertSpaces,markdownDescription:U("insertSpaces","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:er.detectIndentation,markdownDescription:U("detectIndentation","Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:er.trimAutoWhitespace,description:U("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:er.largeFileOptimizations,description:U("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[U("wordBasedSuggestions.off","Turn off Word Based Suggestions."),U("wordBasedSuggestions.currentDocument","Only suggest words from the active document."),U("wordBasedSuggestions.matchingDocuments","Suggest words from all open documents of the same language."),U("wordBasedSuggestions.allDocuments","Suggest words from all open documents.")],description:U("wordBasedSuggestions","Controls whether completions should be computed based on words in the document and from which documents they are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[U("semanticHighlighting.true","Semantic highlighting enabled for all color themes."),U("semanticHighlighting.false","Semantic highlighting disabled for all color themes."),U("semanticHighlighting.configuredByTheme","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:U("semanticHighlighting.enabled","Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:U("stablePeek","Keep peek editors open even when double-clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:U("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"editor.experimental.asyncTokenization":{type:"boolean",default:!0,description:U("editor.experimental.asyncTokenization","Controls whether the tokenization should happen asynchronously on a web worker."),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:U("editor.experimental.asyncTokenizationLogging","Controls whether async tokenization should be logged. For debugging only.")},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:U("editor.experimental.asyncTokenizationVerification","Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only."),tags:["experimental"]},"editor.experimental.treeSitterTelemetry":{type:"boolean",default:!1,markdownDescription:U("editor.experimental.treeSitterTelemetry","Controls whether tree sitter parsing should be turned on and telemetry collected. Setting `editor.experimental.preferTreeSitter` for specific languages will take precedence."),tags:["experimental"]},"editor.language.brackets":{type:["array","null"],default:null,description:U("schema.brackets","Defines the bracket symbols that increase or decrease the indentation."),items:{type:"array",items:[{type:"string",description:U("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:U("schema.closeBracket","The closing bracket character or string sequence.")}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:U("schema.colorizedBracketPairs","Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),items:{type:"array",items:[{type:"string",description:U("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:U("schema.closeBracket","The closing bracket character or string sequence.")}]}},"diffEditor.maxComputationTime":{type:"number",default:Rl.maxComputationTime,description:U("maxComputationTime","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.maxFileSize":{type:"number",default:Rl.maxFileSize,description:U("maxFileSize","Maximum file size in MB for which to compute diffs. Use 0 for no limit.")},"diffEditor.renderSideBySide":{type:"boolean",default:Rl.renderSideBySide,description:U("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:Rl.renderSideBySideInlineBreakpoint,description:U("renderSideBySideInlineBreakpoint","If the diff editor width is smaller than this value, the inline view is used.")},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:Rl.useInlineViewWhenSpaceIsLimited,description:U("useInlineViewWhenSpaceIsLimited","If enabled and the editor width is too small, the inline view is used.")},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:Rl.renderMarginRevertIcon,description:U("renderMarginRevertIcon","When enabled, the diff editor shows arrows in its glyph margin to revert changes.")},"diffEditor.renderGutterMenu":{type:"boolean",default:Rl.renderGutterMenu,description:U("renderGutterMenu","When enabled, the diff editor shows a special gutter for revert and stage actions.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:Rl.ignoreTrimWhitespace,description:U("ignoreTrimWhitespace","When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:Rl.renderIndicators,description:U("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:Rl.diffCodeLens,description:U("codeLens","Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:Rl.diffWordWrap,markdownEnumDescriptions:[U("wordWrap.off","Lines will never wrap."),U("wordWrap.on","Lines will wrap at the viewport width."),U("wordWrap.inherit","Lines will wrap according to the {0} setting.","`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:Rl.diffAlgorithm,markdownEnumDescriptions:[U("diffAlgorithm.legacy","Uses the legacy diffing algorithm."),U("diffAlgorithm.advanced","Uses the advanced diffing algorithm.")],tags:["experimental"]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:Rl.hideUnchangedRegions.enabled,markdownDescription:U("hideUnchangedRegions.enabled","Controls whether the diff editor shows unchanged regions.")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:Rl.hideUnchangedRegions.revealLineCount,markdownDescription:U("hideUnchangedRegions.revealLineCount","Controls how many lines are used for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:Rl.hideUnchangedRegions.minimumLineCount,markdownDescription:U("hideUnchangedRegions.minimumLineCount","Controls how many lines are used as a minimum for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:Rl.hideUnchangedRegions.contextLineCount,markdownDescription:U("hideUnchangedRegions.contextLineCount","Controls how many lines are used as context when comparing unchanged regions."),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:Rl.experimental.showMoves,markdownDescription:U("showMoves","Controls whether the diff editor should show detected code moves.")},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:Rl.experimental.showEmptyDecorations,description:U("showEmptyDecorations","Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.")},"diffEditor.experimental.useTrueInlineView":{type:"boolean",default:Rl.experimental.useTrueInlineView,description:U("useTrueInlineView","If enabled and the editor uses the inline view, word changes are rendered inline.")}}};function zze(s){return typeof s.type<"u"||typeof s.anyOf<"u"}for(const s of oS){const e=s.schema;if(typeof e<"u")if(zze(e))pv.properties[`editor.${s.name}`]=e;else for(const t in e)Object.hasOwnProperty.call(e,t)&&(pv.properties[t]=e[t])}let OL=null;function ube(){return OL===null&&(OL=Object.create(null),Object.keys(pv.properties).forEach(s=>{OL[s]=!0})),OL}function _ze(s){return ube()[`editor.${s}`]||!1}function Oze(s){return ube()[`diffEditor.${s}`]||!1}const jze=Vs.as(nu.Configuration);jze.registerConfiguration(pv);class Rs{static insert(e,t){return{range:new v(e.lineNumber,e.column,e.lineNumber,e.column),text:t,forceMoveMarkers:!0}}static delete(e){return{range:e,text:null}}static replace(e,t){return{range:e,text:t}}static replaceMove(e,t){return{range:e,text:t,forceMoveMarkers:!0}}}function jL(s){return Object.isFrozen(s)?s:mIe(s)}class Ul{static createEmptyModel(e){return new Ul({},[],[],void 0,e)}constructor(e,t,i,n,o){this._contents=e,this._keys=t,this._overrides=i,this.raw=n,this.logService=o,this.overrideConfigurations=new Map}get rawConfiguration(){var e;if(!this._rawConfiguration)if((e=this.raw)!=null&&e.length){const t=this.raw.map(i=>{if(i instanceof Ul)return i;const n=new Hze("",this.logService);return n.parseRaw(i),n.configurationModel});this._rawConfiguration=t.reduce((i,n)=>n===i?n:i.merge(n),t[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return this._keys.length===0&&Object.keys(this._contents).length===0&&this._overrides.length===0}getValue(e){return e?poe(this.contents,e):this.contents}inspect(e,t){const i=this;return{get value(){return jL(i.rawConfiguration.getValue(e))},get override(){return t?jL(i.rawConfiguration.getOverrideValue(e,t)):void 0},get merged(){return jL(t?i.rawConfiguration.override(t).getValue(e):i.rawConfiguration.getValue(e))},get overrides(){const n=[];for(const{contents:o,identifiers:l,keys:r}of i.rawConfiguration.overrides){const a=new Ul(o,r,[],void 0,i.logService).getValue(e);a!==void 0&&n.push({identifiers:l,value:a})}return n.length?jL(n):void 0}}}getOverrideValue(e,t){const i=this.getContentsForOverrideIdentifer(t);return i?e?poe(i,e):i:void 0}override(e){let t=this.overrideConfigurations.get(e);return t||(t=this.createOverrideConfigurationModel(e),this.overrideConfigurations.set(e,t)),t}merge(...e){var l,r;const t=wg(this.contents),i=wg(this.overrides),n=[...this.keys],o=(l=this.raw)!=null&&l.length?[...this.raw]:[this];for(const a of e)if(o.push(...(r=a.raw)!=null&&r.length?a.raw:[a]),!a.isEmpty()){this.mergeContents(t,a.contents);for(const d of a.overrides){const[c]=i.filter(h=>Fs(h.identifiers,d.identifiers));c?(this.mergeContents(c.contents,d.contents),c.keys.push(...d.keys),c.keys=U0(c.keys)):i.push(wg(d))}for(const d of a.keys)n.indexOf(d)===-1&&n.push(d)}return new Ul(t,n,i,o.every(a=>a instanceof Ul)?void 0:o,this.logService)}createOverrideConfigurationModel(e){const t=this.getContentsForOverrideIdentifer(e);if(!t||typeof t!="object"||!Object.keys(t).length)return this;const i={};for(const n of U0([...Object.keys(this.contents),...Object.keys(t)])){let o=this.contents[n];const l=t[n];l&&(typeof o=="object"&&typeof l=="object"?(o=wg(o),this.mergeContents(o,l)):o=l),i[n]=o}return new Ul(i,this.keys,this.overrides,void 0,this.logService)}mergeContents(e,t){for(const i of Object.keys(t)){if(i in e&&il(e[i])&&il(t[i])){this.mergeContents(e[i],t[i]);continue}e[i]=wg(t[i])}}getContentsForOverrideIdentifer(e){let t=null,i=null;const n=o=>{o&&(i?this.mergeContents(i,o):i=wg(o))};for(const o of this.overrides)o.identifiers.length===1&&o.identifiers[0]===e?t=o.contents:o.identifiers.includes(e)&&n(o.contents);return n(t),i}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}setValue(e,t){this.updateValue(e,t,!1)}removeValue(e){const t=this.keys.indexOf(e);t!==-1&&(this.keys.splice(t,1),exe(this.contents,e),PU.test(e)&&this.overrides.splice(this.overrides.findIndex(i=>Fs(i.identifiers,jE(e))),1))}updateValue(e,t,i){if(Oge(this.contents,e,t,n=>this.logService.error(n)),i=i||this.keys.indexOf(e)===-1,i&&this.keys.push(e),PU.test(e)){const n=jE(e),o={identifiers:n,keys:Object.keys(this.contents[e]),contents:vH(this.contents[e],r=>this.logService.error(r))},l=this.overrides.findIndex(r=>Fs(r.identifiers,n));l!==-1?this.overrides[l]=o:this.overrides.push(o)}}}class Hze{constructor(e,t){this._name=e,this.logService=t,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||Ul.createEmptyModel(this.logService)}parseRaw(e,t){this._raw=e;const{contents:i,keys:n,overrides:o,restricted:l,hasExcludedProperties:r}=this.doParseRaw(e,t);this._configurationModel=new Ul(i,n,o,r?[e]:void 0,this.logService),this._restrictedConfigurations=l||[]}doParseRaw(e,t){const i=Vs.as(nu.Configuration).getConfigurationProperties(),n=this.filter(e,i,!0,t);e=n.raw;const o=vH(e,a=>this.logService.error(`Conflict in settings file ${this._name}: ${a}`)),l=Object.keys(e),r=this.toOverrides(e,a=>this.logService.error(`Conflict in settings file ${this._name}: ${a}`));return{contents:o,keys:l,overrides:r,restricted:n.restricted,hasExcludedProperties:n.hasExcludedProperties}}filter(e,t,i,n){var a,d,c;let o=!1;if(!(n!=null&&n.scopes)&&!(n!=null&&n.skipRestricted)&&!((a=n==null?void 0:n.exclude)!=null&&a.length))return{raw:e,restricted:[],hasExcludedProperties:o};const l={},r=[];for(const h in e)if(PU.test(h)&&i){const u=this.filter(e[h],t,!1,n);l[h]=u.raw,o=o||u.hasExcludedProperties,r.push(...u.restricted)}else{const u=t[h],m=u?typeof u.scope<"u"?u.scope:3:void 0;u!=null&&u.restricted&&r.push(h),!((d=n.exclude)!=null&&d.includes(h))&&((c=n.include)!=null&&c.includes(h)||(m===void 0||n.scopes===void 0||n.scopes.includes(m))&&!(n.skipRestricted&&(u!=null&&u.restricted)))?l[h]=e[h]:o=!0}return{raw:l,restricted:r,hasExcludedProperties:o}}toOverrides(e,t){const i=[];for(const n of Object.keys(e))if(PU.test(n)){const o={};for(const l in e[n])o[l]=e[n][l];i.push({identifiers:jE(n),keys:Object.keys(o),contents:vH(o,t)})}return i}}class Pze{constructor(e,t,i,n,o,l,r,a,d,c,h,u,m){this.key=e,this.overrides=t,this._value=i,this.overrideIdentifiers=n,this.defaultConfiguration=o,this.policyConfiguration=l,this.applicationConfiguration=r,this.userConfiguration=a,this.localUserConfiguration=d,this.remoteUserConfiguration=c,this.workspaceConfiguration=h,this.folderConfigurationModel=u,this.memoryConfigurationModel=m}toInspectValue(e){return(e==null?void 0:e.value)!==void 0||(e==null?void 0:e.override)!==void 0||(e==null?void 0:e.overrides)!==void 0?e:void 0}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.userConfiguration.inspect(this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return this.toInspectValue(this.userInspectValue)}}class LY{constructor(e,t,i,n,o,l,r,a,d,c){this._defaultConfiguration=e,this._policyConfiguration=t,this._applicationConfiguration=i,this._localUserConfiguration=n,this._remoteUserConfiguration=o,this._workspaceConfiguration=l,this._folderConfigurations=r,this._memoryConfiguration=a,this._memoryConfigurationByResource=d,this.logService=c,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new sl,this._userConfiguration=null}getValue(e,t,i){return this.getConsolidatedConfigurationModel(e,t,i).getValue(e)}updateValue(e,t,i={}){let n;i.resource?(n=this._memoryConfigurationByResource.get(i.resource),n||(n=Ul.createEmptyModel(this.logService),this._memoryConfigurationByResource.set(i.resource,n))):n=this._memoryConfiguration,t===void 0?n.removeValue(e):n.setValue(e,t),i.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(e,t,i){const n=this.getConsolidatedConfigurationModel(e,t,i),o=this.getFolderConfigurationModelForResource(t.resource,i),l=t.resource?this._memoryConfigurationByResource.get(t.resource)||this._memoryConfiguration:this._memoryConfiguration,r=new Set;for(const a of n.overrides)for(const d of a.identifiers)n.getOverrideValue(e,d)!==void 0&&r.add(d);return new Pze(e,t,n.getValue(e),r.size?[...r]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,i?this._workspaceConfiguration:void 0,o||void 0,l)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(e,t,i){let n=this.getConsolidatedConfigurationModelForResource(t,i);return t.overrideIdentifier&&(n=n.override(t.overrideIdentifier)),!this._policyConfiguration.isEmpty()&&this._policyConfiguration.getValue(e)!==void 0&&(n=n.merge(this._policyConfiguration)),n}getConsolidatedConfigurationModelForResource({resource:e},t){let i=this.getWorkspaceConsolidatedConfiguration();if(t&&e){const n=t.getFolder(e);n&&(i=this.getFolderConsolidatedConfiguration(n.uri)||i);const o=this._memoryConfigurationByResource.get(e);o&&(i=i.merge(o))}return i}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(e){let t=this._foldersConsolidatedConfigurations.get(e);if(!t){const i=this.getWorkspaceConsolidatedConfiguration(),n=this._folderConfigurations.get(e);n?(t=i.merge(n),this._foldersConsolidatedConfigurations.set(e,t)):t=i}return t}getFolderConfigurationModelForResource(e,t){if(t&&e){const i=t.getFolder(e);if(i)return this._folderConfigurations.get(i.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce((e,t)=>{const{contents:i,overrides:n,keys:o}=this._folderConfigurations.get(t);return e.push([t,{contents:i,overrides:n,keys:o}]),e},[])}}static parse(e,t){const i=this.parseConfigurationModel(e.defaults,t),n=this.parseConfigurationModel(e.policy,t),o=this.parseConfigurationModel(e.application,t),l=this.parseConfigurationModel(e.user,t),r=this.parseConfigurationModel(e.workspace,t),a=e.folders.reduce((d,c)=>(d.set(At.revive(c[0]),this.parseConfigurationModel(c[1],t)),d),new sl);return new LY(i,n,o,l,Ul.createEmptyModel(t),r,a,Ul.createEmptyModel(t),new sl,t)}static parseConfigurationModel(e,t){return new Ul(e.contents,e.keys,e.overrides,void 0,t)}}class Kze{constructor(e,t,i,n,o){this.change=e,this.previous=t,this.currentConfiguraiton=i,this.currentWorkspace=n,this.logService=o,this._marker=`
- `,this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=".".charCodeAt(0),this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const l of e.keys)this.affectedKeys.add(l);for(const[,l]of e.overrides)for(const r of l)this.affectedKeys.add(r);this._affectsConfigStr=this._marker;for(const l of this.affectedKeys)this._affectsConfigStr+=l+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=LY.parse(this.previous.data,this.logService)),this._previousConfiguration}affectsConfiguration(e,t){var r;const i=this._marker+e,n=this._affectsConfigStr.indexOf(i);if(n<0)return!1;const o=n+i.length;if(o>=this._affectsConfigStr.length)return!1;const l=this._affectsConfigStr.charCodeAt(o);if(l!==this._markerCode1&&l!==this._markerCode2)return!1;if(t){const a=this.previousConfiguration?this.previousConfiguration.getValue(e,t,(r=this.previous)==null?void 0:r.workspace):void 0,d=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!gd(a,d)}return!0}}class qze{constructor(){this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._enabled=!0}get enabled(){return this._enabled}enable(){this._enabled=!0,this._onDidChange.fire()}disable(){this._enabled=!1,this._onDidChange.fire()}}const mC=new qze,gv={kind:0},$ze={kind:1};function e9e(s,e,t){return{kind:2,commandId:s,commandArgs:e,isBubble:t}}class pC{constructor(e,t,i){var n;this._log=i,this._defaultKeybindings=e,this._defaultBoundCommands=new Map;for(const o of e){const l=o.command;l&&l.charAt(0)!=="-"&&this._defaultBoundCommands.set(l,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=pC.handleRemovals([].concat(e).concat(t));for(let o=0,l=this._keybindings.length;o<l;o++){const r=this._keybindings[o];if(r.chords.length===0)continue;const a=(n=r.when)==null?void 0:n.substituteConstants();a&&a.type===0||this._addKeyPress(r.chords[0],r)}}static _isTargetedForRemoval(e,t,i){if(t){for(let n=0;n<t.length;n++)if(t[n]!==e.chords[n])return!1}return!(i&&i.type!==1&&(!e.when||!uve(i,e.when)))}static handleRemovals(e){const t=new Map;for(let n=0,o=e.length;n<o;n++){const l=e[n];if(l.command&&l.command.charAt(0)==="-"){const r=l.command.substring(1);t.has(r)?t.get(r).push(l):t.set(r,[l])}}if(t.size===0)return e;const i=[];for(let n=0,o=e.length;n<o;n++){const l=e[n];if(!l.command||l.command.length===0){i.push(l);continue}if(l.command.charAt(0)==="-")continue;const r=t.get(l.command);if(!r||!l.isDefault){i.push(l);continue}let a=!1;for(const d of r){const c=d.when;if(this._isTargetedForRemoval(l,d.chords,c)){a=!0;break}}if(!a){i.push(l);continue}}return i}_addKeyPress(e,t){const i=this._map.get(e);if(typeof i>"u"){this._map.set(e,[t]),this._addToLookupMap(t);return}for(let n=i.length-1;n>=0;n--){const o=i[n];if(o.command===t.command)continue;let l=!0;for(let r=1;r<o.chords.length&&r<t.chords.length;r++)if(o.chords[r]!==t.chords[r]){l=!1;break}l&&pC.whenIsEntirelyIncluded(o.when,t.when)&&this._removeFromLookupMap(o)}i.push(t),this._addToLookupMap(t)}_addToLookupMap(e){if(!e.command)return;let t=this._lookupMap.get(e.command);typeof t>"u"?(t=[e],this._lookupMap.set(e.command,t)):t.push(e)}_removeFromLookupMap(e){if(!e.command)return;const t=this._lookupMap.get(e.command);if(!(typeof t>"u")){for(let i=0,n=t.length;i<n;i++)if(t[i]===e){t.splice(i,1);return}}}static whenIsEntirelyIncluded(e,t){return!t||t.type===1?!0:!e||e.type===1?!1:IH(e,t)}getKeybindings(){return this._keybindings}lookupPrimaryKeybinding(e,t){const i=this._lookupMap.get(e);if(typeof i>"u"||i.length===0)return null;if(i.length===1)return i[0];for(let n=i.length-1;n>=0;n--){const o=i[n];if(t.contextMatchesRules(o.when))return o}return i[i.length-1]}resolve(e,t,i){const n=[...t,i];this._log(`| Resolving ${n}`);const o=this._map.get(n[0]);if(o===void 0)return this._log("\\ No keybinding entries."),gv;let l=null;if(n.length<2)l=o;else{l=[];for(let a=0,d=o.length;a<d;a++){const c=o[a];if(n.length>c.chords.length)continue;let h=!0;for(let u=1;u<n.length;u++)if(c.chords[u]!==n[u]){h=!1;break}h&&l.push(c)}}const r=this._findCommand(e,l);return r?n.length<r.chords.length?(this._log(`\\ From ${l.length} keybinding entries, awaiting ${r.chords.length-n.length} more chord(s), when: ${xle(r.when)}, source: ${Jle(r)}.`),$ze):(this._log(`\\ From ${l.length} keybinding entries, matched ${r.command}, when: ${xle(r.when)}, source: ${Jle(r)}.`),e9e(r.command,r.commandArgs,r.bubble)):(this._log(`\\ From ${l.length} keybinding entries, no when clauses matched the context.`),gv)}_findCommand(e,t){for(let i=t.length-1;i>=0;i--){const n=t[i];if(pC._contextMatchesRules(e,n.when))return n}return null}static _contextMatchesRules(e,t){return t?t.evaluate(e):!0}}function xle(s){return s?`${s.serialize()}`:"no when condition"}function Jle(s){return s.extensionId?s.isBuiltinExtension?`built-in extension ${s.extensionId}`:`user extension ${s.extensionId}`:s.isDefault?"built-in":"user"}const t9e=/^(cursor|delete|undo|redo|tab|editor\.action\.clipboard)/;class i9e extends de{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:ve.None}get inChordMode(){return this._currentChords.length>0}constructor(e,t,i,n,o){super(),this._contextKeyService=e,this._commandService=t,this._telemetryService=i,this._notificationService=n,this._logService=o,this._onDidUpdateKeybindings=this._register(new re),this._currentChords=[],this._currentChordChecker=new L$,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=uS.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new iu,this._currentlyDispatchingCommandId=null,this._logging=!1}dispose(){super.dispose()}_log(e){this._logging&&this._logService.info(`[KeybindingService]: ${e}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(e,t){const i=this._getResolver().lookupPrimaryKeybinding(e,t||this._contextKeyService);if(i)return i.resolvedKeybinding}dispatchEvent(e,t){return this._dispatch(e,t)}softDispatch(e,t){this._log("/ Soft dispatching keyboard event");const i=this.resolveKeyboardEvent(e);if(i.hasMultipleChords())return console.warn("keyboard event should not be mapped to multiple chords"),gv;const[n]=i.getDispatchChords();if(n===null)return this._log("\\ Keyboard event cannot be dispatched"),gv;const o=this._contextKeyService.getContext(t),l=this._currentChords.map(({keypress:r})=>r);return this._getResolver().resolve(o,l,n)}_scheduleLeaveChordMode(){const e=Date.now();this._currentChordChecker.cancelAndSet(()=>{if(!this._documentHasFocus()){this._leaveChordMode();return}Date.now()-e>5e3&&this._leaveChordMode()},500)}_expectAnotherChord(e,t){switch(this._currentChords.push({keypress:e,label:t}),this._currentChords.length){case 0:throw F$("impossible");case 1:this._currentChordStatusMessage=this._notificationService.status(U("first.chord","({0}) was pressed. Waiting for second key of chord...",t));break;default:{const i=this._currentChords.map(({label:n})=>n).join(", ");this._currentChordStatusMessage=this._notificationService.status(U("next.chord","({0}) was pressed. Waiting for next key of chord...",i))}}this._scheduleLeaveChordMode(),mC.enabled&&mC.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],mC.enable()}_dispatch(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t,!1)}_singleModifierDispatch(e,t){const i=this.resolveKeyboardEvent(e),[n]=i.getSingleModifierDispatchChords();if(n)return this._ignoreSingleModifiers.has(n)?(this._log(`+ Ignoring single modifier ${n} due to it being pressed together with other keys.`),this._ignoreSingleModifiers=uS.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=uS.EMPTY,this._currentSingleModifier===null?(this._log(`+ Storing single modifier for possible chord ${n}.`),this._currentSingleModifier=n,this._currentSingleModifierClearTimeout.cancelAndSet(()=>{this._log("+ Clearing single modifier due to 300ms elapsed."),this._currentSingleModifier=null},300),!1):n===this._currentSingleModifier?(this._log(`/ Dispatching single modifier chord ${n} ${n}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(i,t,!0)):(this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${n}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[o]=i.getChords();return this._ignoreSingleModifiers=new uS(o),this._currentSingleModifier!==null&&this._log("+ Clearing single modifier due to other key up."),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(e,t,i=!1){let n=!1;if(e.hasMultipleChords())return console.warn("Unexpected keyboard event mapped to multiple chords"),!1;let o=null,l=null;if(i){const[c]=e.getSingleModifierDispatchChords();o=c,l=c?[c]:[]}else[o]=e.getDispatchChords(),l=this._currentChords.map(({keypress:c})=>c);if(o===null)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),n;const r=this._contextKeyService.getContext(t),a=e.getLabel(),d=this._getResolver().resolve(r,l,o);switch(d.kind){case 0:{if(this._logService.trace("KeybindingService#dispatch",a,"[ No matching keybinding ]"),this.inChordMode){const c=this._currentChords.map(({label:h})=>h).join(", ");this._log(`+ Leaving multi-chord mode: Nothing bound to "${c}, ${a}".`),this._notificationService.status(U("missing.chord","The key combination ({0}, {1}) is not a command.",c,a),{hideAfter:10*1e3}),this._leaveChordMode(),n=!0}return n}case 1:return this._logService.trace("KeybindingService#dispatch",a,"[ Several keybindings match - more chords needed ]"),n=!0,this._expectAnotherChord(o,a),this._log(this._currentChords.length===1?"+ Entering multi-chord mode...":"+ Continuing multi-chord mode..."),n;case 2:{if(this._logService.trace("KeybindingService#dispatch",a,`[ Will dispatch command ${d.commandId} ]`),d.commandId===null||d.commandId===""){if(this.inChordMode){const c=this._currentChords.map(({label:h})=>h).join(", ");this._log(`+ Leaving chord mode: Nothing bound to "${c}, ${a}".`),this._notificationService.status(U("missing.chord","The key combination ({0}, {1}) is not a command.",c,a),{hideAfter:10*1e3}),this._leaveChordMode(),n=!0}}else{this.inChordMode&&this._leaveChordMode(),d.isBubble||(n=!0),this._log(`+ Invoking command ${d.commandId}.`),this._currentlyDispatchingCommandId=d.commandId;try{typeof d.commandArgs>"u"?this._commandService.executeCommand(d.commandId).then(void 0,c=>this._notificationService.warn(c)):this._commandService.executeCommand(d.commandId,d.commandArgs).then(void 0,c=>this._notificationService.warn(c))}finally{this._currentlyDispatchingCommandId=null}t9e.test(d.commandId)||this._telemetryService.publicLog2("workbenchActionExecuted",{id:d.commandId,from:"keybinding",detail:e.getUserSettingsLabel()??void 0})}return n}}}mightProducePrintableCharacter(e){return e.ctrlKey||e.metaKey?!1:e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30}}const gX=class gX{constructor(e){this._ctrlKey=e?e.ctrlKey:!1,this._shiftKey=e?e.shiftKey:!1,this._altKey=e?e.altKey:!1,this._metaKey=e?e.metaKey:!1}has(e){switch(e){case"ctrl":return this._ctrlKey;case"shift":return this._shiftKey;case"alt":return this._altKey;case"meta":return this._metaKey}}};gX.EMPTY=new gX(null);let uS=gX;class Xle{constructor(e,t,i,n,o,l,r){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=e,this.chords=e?MP(e.getDispatchChords()):[],e&&this.chords.length===0&&(this.chords=MP(e.getSingleModifierDispatchChords())),this.bubble=t?t.charCodeAt(0)===94:!1,this.command=this.bubble?t.substr(1):t,this.commandArgs=i,this.when=n,this.isDefault=o,this.extensionId=l,this.isBuiltinExtension=r}}function MP(s){const e=[];for(let t=0,i=s.length;t<i;t++){const n=s[t];if(!n)return[];e.push(n)}return e}class kY{constructor(e,t,i=t){this.modifierLabels=[null],this.modifierLabels[2]=e,this.modifierLabels[1]=t,this.modifierLabels[3]=i}toLabel(e,t,i){if(t.length===0)return null;const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=i(r);if(a===null)return null;n[o]=l9e(r,a,this.modifierLabels[e])}return n.join(" ")}}const yee=new kY({ctrlKey:"⌃",shiftKey:"⇧",altKey:"⌥",metaKey:"⌘",separator:""},{ctrlKey:U({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:U({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:U({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:U({key:"windowsKey",comment:["This is the short form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:U({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:U({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:U({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:U({key:"superKey",comment:["This is the short form for the Super key on the keyboard"]},"Super"),separator:"+"}),n9e=new kY({ctrlKey:U({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:U({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:U({key:"optKey.long",comment:["This is the long form for the Alt/Option key on the keyboard"]},"Option"),metaKey:U({key:"cmdKey.long",comment:["This is the long form for the Command key on the keyboard"]},"Command"),separator:"+"},{ctrlKey:U({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:U({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:U({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:U({key:"windowsKey.long",comment:["This is the long form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:U({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:U({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:U({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:U({key:"superKey.long",comment:["This is the long form for the Super key on the keyboard"]},"Super"),separator:"+"}),s9e=new kY({ctrlKey:"Ctrl",shiftKey:"Shift",altKey:"Alt",metaKey:"Cmd",separator:"+"},{ctrlKey:"Ctrl",shiftKey:"Shift",altKey:"Alt",metaKey:"Super",separator:"+"}),o9e=new kY({ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"cmd",separator:"+"},{ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"win",separator:"+"},{ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"meta",separator:"+"});function l9e(s,e,t){if(e===null)return"";const i=[];return s.ctrlKey&&i.push(t.ctrlKey),s.shiftKey&&i.push(t.shiftKey),s.altKey&&i.push(t.altKey),s.metaKey&&i.push(t.metaKey),e!==""&&i.push(e),i.join(t.separator)}class r9e extends BGe{constructor(e,t){if(super(),t.length===0)throw Yc("chords");this._os=e,this._chords=t}getLabel(){return yee.toLabel(this._os,this._chords,e=>this._getLabel(e))}getAriaLabel(){return n9e.toLabel(this._os,this._chords,e=>this._getAriaLabel(e))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:s9e.toLabel(this._os,this._chords,e=>this._getElectronAccelerator(e))}getUserSettingsLabel(){return o9e.toLabel(this._os,this._chords,e=>this._getUserSettingsLabel(e))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map(e=>this._getChord(e))}_getChord(e){return new TGe(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))}getDispatchChords(){return this._chords.map(e=>this._getChordDispatch(e))}getSingleModifierDispatchChords(){return this._chords.map(e=>this._getSingleModifierChordDispatch(e))}}class WM extends r9e{constructor(e,t){super(t,e)}_keyCodeToUILabel(e){if(this._os===2)switch(e){case 15:return"←";case 16:return"↑";case 17:return"→";case 18:return"↓"}return Eg.toString(e)}_getLabel(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)}_getAriaLabel(e){return e.isDuplicateModifierCase()?"":Eg.toString(e.keyCode)}_getElectronAccelerator(e){return Eg.toElectronAccelerator(e.keyCode)}_getUserSettingsLabel(e){if(e.isDuplicateModifierCase())return"";const t=Eg.toUserSettingsUS(e.keyCode);return t&&t.toLowerCase()}_getChordDispatch(e){return WM.getDispatchStr(e)}static getDispatchStr(e){if(e.isModifierKey())return null;let t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=Eg.toString(e.keyCode),t}_getSingleModifierChordDispatch(e){return e.keyCode===5&&!e.shiftKey&&!e.altKey&&!e.metaKey?"ctrl":e.keyCode===4&&!e.ctrlKey&&!e.altKey&&!e.metaKey?"shift":e.keyCode===6&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey?"alt":e.keyCode===57&&!e.ctrlKey&&!e.shiftKey&&!e.altKey?"meta":null}static _scanCodeToKeyCode(e){const t=R$[e];if(t!==-1)return t;switch(e){case 10:return 31;case 11:return 32;case 12:return 33;case 13:return 34;case 14:return 35;case 15:return 36;case 16:return 37;case 17:return 38;case 18:return 39;case 19:return 40;case 20:return 41;case 21:return 42;case 22:return 43;case 23:return 44;case 24:return 45;case 25:return 46;case 26:return 47;case 27:return 48;case 28:return 49;case 29:return 50;case 30:return 51;case 31:return 52;case 32:return 53;case 33:return 54;case 34:return 55;case 35:return 56;case 36:return 22;case 37:return 23;case 38:return 24;case 39:return 25;case 40:return 26;case 41:return 27;case 42:return 28;case 43:return 29;case 44:return 30;case 45:return 21;case 51:return 88;case 52:return 86;case 53:return 92;case 54:return 94;case 55:return 93;case 56:return 0;case 57:return 85;case 58:return 95;case 59:return 91;case 60:return 87;case 61:return 89;case 62:return 90;case 106:return 97}return 0}static _toKeyCodeChord(e){if(!e)return null;if(e instanceof Z0)return e;const t=this._scanCodeToKeyCode(e.scanCode);return t===0?null:new Z0(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,t)}static resolveKeybinding(e,t){const i=MP(e.chords.map(n=>this._toKeyCodeChord(n)));return i.length>0?[new WM(i,t)]:[]}}const hV=Zi("labelService"),mbe=Zi("progressService"),une=class une{constructor(e){this.callback=e}report(e){this._value=e,this.callback(this._value)}};une.None=Object.freeze({report(){}});let Gu=une;const bf=Zi("editorProgressService");class a9e{constructor(){this._value="",this._pos=0}reset(e){return this._value=e,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos<this._value.length-1}cmp(e){const t=e.charCodeAt(0),i=this._value.charCodeAt(this._pos);return t-i}value(){return this._value[this._pos]}}class d9e{constructor(e=!0){this._caseSensitive=e}reset(e){return this._value=e,this._from=0,this._to=0,this.next()}hasNext(){return this._to<this._value.length}next(){this._from=this._to;let e=!0;for(;this._to<this._value.length;this._to++)if(this._value.charCodeAt(this._to)===46)if(e)this._from++;else break;else e=!1;return this}cmp(e){return this._caseSensitive?W$(e,this._value,0,e.length,this._from,this._to):tB(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class c9e{constructor(e=!0,t=!0){this._splitOnBackslash=e,this._caseSensitive=t}reset(e){this._from=0,this._to=0,this._value=e,this._valueLen=e.length;for(let t=e.length-1;t>=0;t--,this._valueLen--){const i=this._value.charCodeAt(t);if(!(i===47||this._splitOnBackslash&&i===92))break}return this.next()}hasNext(){return this._to<this._valueLen}next(){this._from=this._to;let e=!0;for(;this._to<this._valueLen;this._to++){const t=this._value.charCodeAt(this._to);if(t===47||this._splitOnBackslash&&t===92)if(e)this._from++;else break;else e=!1}return this}cmp(e){return this._caseSensitive?W$(e,this._value,0,e.length,this._from,this._to):tB(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class h9e{constructor(e,t){this._ignorePathCasing=e,this._ignoreQueryAndFragment=t,this._states=[],this._stateIdx=0}reset(e){return this._value=e,this._states=[],this._value.scheme&&this._states.push(1),this._value.authority&&this._states.push(2),this._value.path&&(this._pathIterator=new c9e(!1,!this._ignorePathCasing(e)),this._pathIterator.reset(e.path),this._pathIterator.value()&&this._states.push(3)),this._ignoreQueryAndFragment(e)||(this._value.query&&this._states.push(4),this._value.fragment&&this._states.push(5)),this._stateIdx=0,this}next(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()?this._pathIterator.next():this._stateIdx+=1,this}hasNext(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()||this._stateIdx<this._states.length-1}cmp(e){if(this._states[this._stateIdx]===1)return ZH(e,this._value.scheme);if(this._states[this._stateIdx]===2)return ZH(e,this._value.authority);if(this._states[this._stateIdx]===3)return this._pathIterator.cmp(e);if(this._states[this._stateIdx]===4)return sM(e,this._value.query);if(this._states[this._stateIdx]===5)return sM(e,this._value.fragment);throw new Error}value(){if(this._states[this._stateIdx]===1)return this._value.scheme;if(this._states[this._stateIdx]===2)return this._value.authority;if(this._states[this._stateIdx]===3)return this._pathIterator.value();if(this._states[this._stateIdx]===4)return this._value.query;if(this._states[this._stateIdx]===5)return this._value.fragment;throw new Error}}class HL{constructor(){this.height=1}rotateLeft(){const e=this.right;return this.right=e.left,e.left=this,this.updateHeight(),e.updateHeight(),e}rotateRight(){const e=this.left;return this.left=e.right,e.right=this,this.updateHeight(),e.updateHeight(),e}updateHeight(){this.height=1+Math.max(this.heightLeft,this.heightRight)}balanceFactor(){return this.heightRight-this.heightLeft}get heightLeft(){var e;return((e=this.left)==null?void 0:e.height)??0}get heightRight(){var e;return((e=this.right)==null?void 0:e.height)??0}}class ZW{static forUris(e=()=>!1,t=()=>!1){return new ZW(new h9e(e,t))}static forStrings(){return new ZW(new a9e)}static forConfigKeys(){return new ZW(new d9e)}constructor(e){this._iter=e}clear(){this._root=void 0}set(e,t){const i=this._iter.reset(e);let n;this._root||(this._root=new HL,this._root.segment=i.value());const o=[];for(n=this._root;;){const r=i.cmp(n.segment);if(r>0)n.left||(n.left=new HL,n.left.segment=i.value()),o.push([-1,n]),n=n.left;else if(r<0)n.right||(n.right=new HL,n.right.segment=i.value()),o.push([1,n]),n=n.right;else if(i.hasNext())i.next(),n.mid||(n.mid=new HL,n.mid.segment=i.value()),o.push([0,n]),n=n.mid;else break}const l=n.value;n.value=t,n.key=e;for(let r=o.length-1;r>=0;r--){const a=o[r][1];a.updateHeight();const d=a.balanceFactor();if(d<-1||d>1){const c=o[r][0],h=o[r+1][0];if(c===1&&h===1)o[r][1]=a.rotateLeft();else if(c===-1&&h===-1)o[r][1]=a.rotateRight();else if(c===1&&h===-1)a.right=o[r+1][1]=o[r+1][1].rotateRight(),o[r][1]=a.rotateLeft();else if(c===-1&&h===1)a.left=o[r+1][1]=o[r+1][1].rotateLeft(),o[r][1]=a.rotateRight();else throw new Error;if(r>0)switch(o[r-1][0]){case-1:o[r-1][1].left=o[r][1];break;case 1:o[r-1][1].right=o[r][1];break;case 0:o[r-1][1].mid=o[r][1];break}else this._root=o[0][1]}}return l}get(e){var t;return(t=this._getNode(e))==null?void 0:t.value}_getNode(e){const t=this._iter.reset(e);let i=this._root;for(;i;){const n=t.cmp(i.segment);if(n>0)i=i.left;else if(n<0)i=i.right;else if(t.hasNext())t.next(),i=i.mid;else break}return i}has(e){const t=this._getNode(e);return!((t==null?void 0:t.value)===void 0&&(t==null?void 0:t.mid)===void 0)}delete(e){return this._delete(e,!1)}deleteSuperstr(e){return this._delete(e,!0)}_delete(e,t){const i=this._iter.reset(e),n=[];let o=this._root;for(;o;){const l=i.cmp(o.segment);if(l>0)n.push([-1,o]),o=o.left;else if(l<0)n.push([1,o]),o=o.right;else if(i.hasNext())i.next(),n.push([0,o]),o=o.mid;else break}if(o){if(t?(o.left=void 0,o.mid=void 0,o.right=void 0,o.height=1):(o.key=void 0,o.value=void 0),!o.mid&&!o.value)if(o.left&&o.right){const l=this._min(o.right);if(l.key){const{key:r,value:a,segment:d}=l;this._delete(l.key,!1),o.key=r,o.value=a,o.segment=d}}else{const l=o.left??o.right;if(n.length>0){const[r,a]=n[n.length-1];switch(r){case-1:a.left=l;break;case 0:a.mid=l;break;case 1:a.right=l;break}}else this._root=l}for(let l=n.length-1;l>=0;l--){const r=n[l][1];r.updateHeight();const a=r.balanceFactor();if(a>1?(r.right.balanceFactor()>=0||(r.right=r.right.rotateRight()),n[l][1]=r.rotateLeft()):a<-1&&(r.left.balanceFactor()<=0||(r.left=r.left.rotateLeft()),n[l][1]=r.rotateRight()),l>0)switch(n[l-1][0]){case-1:n[l-1][1].left=n[l][1];break;case 1:n[l-1][1].right=n[l][1];break;case 0:n[l-1][1].mid=n[l][1];break}else this._root=n[0][1]}}}_min(e){for(;e.left;)e=e.left;return e}findSubstr(e){const t=this._iter.reset(e);let i=this._root,n;for(;i;){const o=t.cmp(i.segment);if(o>0)i=i.left;else if(o<0)i=i.right;else if(t.hasNext())t.next(),n=i.value||n,i=i.mid;else break}return i&&i.value||n}findSuperstr(e){return this._findSuperstrOrElement(e,!1)}_findSuperstrOrElement(e,t){const i=this._iter.reset(e);let n=this._root;for(;n;){const o=i.cmp(n.segment);if(o>0)n=n.left;else if(o<0)n=n.right;else if(i.hasNext())i.next(),n=n.mid;else return n.mid?this._entries(n.mid):t?n.value:void 0}}forEach(e){for(const[t,i]of this)e(i,t)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(e){const t=[];return this._dfsEntries(e,t),t[Symbol.iterator]()}_dfsEntries(e,t){e&&(e.left&&this._dfsEntries(e.left,t),e.value&&t.push([e.key,e.value]),e.mid&&this._dfsEntries(e.mid,t),e.right&&this._dfsEntries(e.right,t))}}const yA=Zi("contextService");function TP(s){const e=s;return typeof(e==null?void 0:e.id)=="string"&&At.isUri(e.uri)}function u9e(s){const e=s;return typeof(e==null?void 0:e.id)=="string"&&!TP(s)&&!b9e(s)}const m9e={id:"ext-dev"},p9e={id:"empty-window"};function g9e(s,e){if(typeof s=="string"||typeof s>"u")return typeof s=="string"?{id:kU(s)}:e?m9e:p9e;const t=s;return t.configuration?{id:t.id,configPath:t.configuration}:t.folders.length===1?{id:t.id,uri:t.folders[0].uri}:{id:t.id}}function b9e(s){const e=s;return typeof(e==null?void 0:e.id)=="string"&&At.isUri(e.configPath)}class U9e{constructor(e,t){this.raw=t,this.uri=e.uri,this.index=e.index,this.name=e.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}const BP="code-workspace";U("codeWorkspace","Code Workspace");const pbe="4064f6ec-cb38-4ad0-af64-ee6467e63c82";function f9e(s){return s.id===pbe}var LP;(function(s){s.inspectTokensAction=U("inspectTokens","Developer: Inspect Tokens")})(LP||(LP={}));var bv;(function(s){s.gotoLineActionLabel=U("gotoLineActionLabel","Go to Line/Column...")})(bv||(bv={}));var kP;(function(s){s.helpQuickAccessActionLabel=U("helpQuickAccess","Show all Quick Access Providers")})(kP||(kP={}));var Uv;(function(s){s.quickCommandActionLabel=U("quickCommandActionLabel","Command Palette"),s.quickCommandHelp=U("quickCommandActionHelp","Show And Run Commands")})(Uv||(Uv={}));var VM;(function(s){s.quickOutlineActionLabel=U("quickOutlineActionLabel","Go to Symbol..."),s.quickOutlineByCategoryActionLabel=U("quickOutlineByCategoryActionLabel","Go to Symbol by Category...")})(VM||(VM={}));var IP;(function(s){s.editorViewAccessibleLabel=U("editorViewAccessibleLabel","Editor content")})(IP||(IP={}));var DP;(function(s){s.toggleHighContrast=U("toggleHighContrast","Toggle High Contrast Theme")})(DP||(DP={}));var GP;(function(s){s.bulkEditServiceSummary=U("bulkEditServiceSummary","Made {0} edits in {1} files")})(GP||(GP={}));const gbe=Zi("workspaceTrustManagementService");let uV=[],Cee=[],bbe=[];function PL(s,e=!1){F9e(s,!1,e)}function F9e(s,e,t){const i=Z9e(s,e);uV.push(i),i.userConfigured?bbe.push(i):Cee.push(i),t&&!i.userConfigured&&uV.forEach(n=>{n.mime===i.mime||n.userConfigured||(i.extension&&n.extension===i.extension&&console.warn(`Overwriting extension <<${i.extension}>> to now point to mime <<${i.mime}>>`),i.filename&&n.filename===i.filename&&console.warn(`Overwriting filename <<${i.filename}>> to now point to mime <<${i.mime}>>`),i.filepattern&&n.filepattern===i.filepattern&&console.warn(`Overwriting filepattern <<${i.filepattern}>> to now point to mime <<${i.mime}>>`),i.firstline&&n.firstline===i.firstline&&console.warn(`Overwriting firstline <<${i.firstline}>> to now point to mime <<${i.mime}>>`))})}function Z9e(s,e){return{id:s.id,mime:s.mime,filename:s.filename,extension:s.extension,filepattern:s.filepattern,firstline:s.firstline,userConfigured:e,filenameLowercase:s.filename?s.filename.toLowerCase():void 0,extensionLowercase:s.extension?s.extension.toLowerCase():void 0,filepatternLowercase:s.filepattern?R0e(s.filepattern.toLowerCase()):void 0,filepatternOnPath:s.filepattern?s.filepattern.indexOf(co.sep)>=0:!1}}function A9e(){uV=uV.filter(s=>s.userConfigured),Cee=[]}function N9e(s,e){return R9e(s,e).map(t=>t.id)}function R9e(s,e){let t;if(s)switch(s.scheme){case Xt.file:t=s.fsPath;break;case Xt.data:{t=qU.parseMetaData(s).get(qU.META_DATA_LABEL);break}case Xt.vscodeNotebookCell:t=void 0;break;default:t=s.path}if(!t)return[{id:"unknown",mime:zs.unknown}];t=t.toLowerCase();const i=kU(t),n=Yle(t,i,bbe);if(n)return[n,{id:ia,mime:zs.text}];const o=Yle(t,i,Cee);if(o)return[o,{id:ia,mime:zs.text}];if(e){const l=S9e(e);if(l)return[l,{id:ia,mime:zs.text}]}return[{id:"unknown",mime:zs.unknown}]}function Yle(s,e,t){var l;let i,n,o;for(let r=t.length-1;r>=0;r--){const a=t[r];if(e===a.filenameLowercase){i=a;break}if(a.filepattern&&(!n||a.filepattern.length>n.filepattern.length)){const d=a.filepatternOnPath?s:e;(l=a.filepatternLowercase)!=null&&l.call(a,d)&&(n=a)}a.extension&&(!o||a.extension.length>o.extension.length)&&e.endsWith(a.extensionLowercase)&&(o=a)}if(i)return i;if(n)return n;if(o)return o}function S9e(s){if(M$(s)&&(s=s.substr(1)),s.length>0)for(let e=uV.length-1;e>=0;e--){const t=uV[e];if(!t.firstline)continue;const i=s.match(t.firstline);if(i&&i.length>0)return t}}const KL=Object.prototype.hasOwnProperty,zle="vs.editor.nullLanguage";class W9e{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(zle,0),this._register(ia,1),this._nextLanguageId=2}_register(e,t){this._languageIdToLanguage[t]=e,this._languageToLanguageId.set(e,t)}register(e){if(this._languageToLanguageId.has(e))return;const t=this._nextLanguageId++;this._register(e,t)}encodeLanguageId(e){return this._languageToLanguageId.get(e)||0}decodeLanguageId(e){return this._languageIdToLanguage[e]||zle}}const Bw=class Bw extends de{constructor(e=!0,t=!1){super(),this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,Bw.instanceCount++,this._warnOnOverwrite=t,this.languageIdCodec=new W9e,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},e&&(this._initializeFromRegistry(),this._register(tV.onDidChangeLanguages(i=>{this._initializeFromRegistry()})))}dispose(){Bw.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},A9e();const e=[].concat(tV.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(e)}_registerLanguages(e){for(const t of e)this._registerLanguage(t);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach(t=>{const i=this._languages[t];i.name&&(this._nameMap[i.name]=i.identifier),i.aliases.forEach(n=>{this._lowercaseNameMap[n.toLowerCase()]=i.identifier}),i.mimetypes.forEach(n=>{this._mimeTypesMap[n]=i.identifier})}),Vs.as(nu.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(e){const t=e.id;let i;KL.call(this._languages,t)?i=this._languages[t]:(this.languageIdCodec.register(t),i={identifier:t,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[t]=i),this._mergeLanguage(i,e)}_mergeLanguage(e,t){const i=t.id;let n=null;if(Array.isArray(t.mimetypes)&&t.mimetypes.length>0&&(e.mimetypes.push(...t.mimetypes),n=t.mimetypes[0]),n||(n=`text/x-${i}`,e.mimetypes.push(n)),Array.isArray(t.extensions)){t.configuration?e.extensions=t.extensions.concat(e.extensions):e.extensions=e.extensions.concat(t.extensions);for(const r of t.extensions)PL({id:i,mime:n,extension:r},this._warnOnOverwrite)}if(Array.isArray(t.filenames))for(const r of t.filenames)PL({id:i,mime:n,filename:r},this._warnOnOverwrite),e.filenames.push(r);if(Array.isArray(t.filenamePatterns))for(const r of t.filenamePatterns)PL({id:i,mime:n,filepattern:r},this._warnOnOverwrite);if(typeof t.firstLine=="string"&&t.firstLine.length>0){let r=t.firstLine;r.charAt(0)!=="^"&&(r="^"+r);try{const a=new RegExp(r);fGe(a)||PL({id:i,mime:n,firstline:a},this._warnOnOverwrite)}catch(a){console.warn(`[${t.id}]: Invalid regular expression \`${r}\`: `,a)}}e.aliases.push(i);let o=null;if(typeof t.aliases<"u"&&Array.isArray(t.aliases)&&(t.aliases.length===0?o=[null]:o=t.aliases),o!==null)for(const r of o)!r||r.length===0||e.aliases.push(r);const l=o!==null&&o.length>0;if(!(l&&o[0]===null)){const r=(l?o[0]:null)||i;(l||!e.name)&&(e.name=r)}t.configuration&&e.configurationFiles.push(t.configuration),t.icon&&e.icons.push(t.icon)}isRegisteredLanguageId(e){return e?KL.call(this._languages,e):!1}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(e){const t=e.toLowerCase();return KL.call(this._lowercaseNameMap,t)?this._lowercaseNameMap[t]:null}getLanguageIdByMimeType(e){return e&&KL.call(this._mimeTypesMap,e)?this._mimeTypesMap[e]:null}guessLanguageIdByFilepathOrFirstLine(e,t){return!e&&!t?[]:N9e(e,t)}};Bw.instanceCount=0;let EP=Bw;const hc=(s,e)=>s===e;function fv(s=hc){return(e,t)=>Fs(e,t,s)}function V9e(){return(s,e)=>s.equals(e)}function vP(s,e,t){if(t!==void 0){const i=s;return i==null||e===void 0||e===null?e===i:t(i,e)}else{const i=s;return(n,o)=>n==null||o===void 0||o===null?o===n:i(n,o)}}function Fv(s,e){if(s===e)return!0;if(Array.isArray(s)&&Array.isArray(e)){if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(!Fv(s[t],e[t]))return!1;return!0}if(s&&typeof s=="object"&&e&&typeof e=="object"&&Object.getPrototypeOf(s)===Object.prototype&&Object.getPrototypeOf(e)===Object.prototype){const t=s,i=e,n=Object.keys(t),o=Object.keys(i),l=new Set(o);if(n.length!==o.length)return!1;for(const r of n)if(!l.has(r)||!Fv(t[r],i[r]))return!1;return!0}return!1}class sr{constructor(e,t,i){this.owner=e,this.debugNameSource=t,this.referenceFn=i}getDebugName(e){return Q9e(e,this)}}const _le=new Map,xP=new WeakMap;function Q9e(s,e){const t=xP.get(s);if(t)return t;const i=y9e(s,e);if(i){let n=_le.get(i)??0;n++,_le.set(i,n);const o=n===1?i:`${i}#${n}`;return xP.set(s,o),o}}function y9e(s,e){const t=xP.get(s);if(t)return t;const i=e.owner?w9e(e.owner)+".":"";let n;const o=e.debugNameSource;if(o!==void 0)if(typeof o=="function"){if(n=o(),n!==void 0)return i+n}else return i+o;const l=e.referenceFn;if(l!==void 0&&(n=wee(l),n!==void 0))return i+n;if(e.owner!==void 0){const r=C9e(e.owner,s);if(r!==void 0)return i+r}}function C9e(s,e){for(const t in s)if(s[t]===e)return t}const Ole=new Map,jle=new WeakMap;function w9e(s){const e=jle.get(s);if(e)return e;const t=M9e(s);let i=Ole.get(t)??0;i++,Ole.set(t,i);const n=i===1?t:`${t}#${i}`;return jle.set(s,n),n}function M9e(s){const e=s.constructor;return e?e.name:"Object"}function wee(s){const e=s.toString(),i=/\/\*\*\s*@description\s*([^*]*)\*\//.exec(e),n=i?i[1]:void 0;return n==null?void 0:n.trim()}let T9e;function Ube(){return T9e}let fbe;function B9e(s){fbe=s}let Fbe;function L9e(s){Fbe=s}let JP;function k9e(s){JP=s}class Zbe{get TChange(){return null}reportChanges(){this.get()}read(e){return e?e.readObservable(this):this.get()}map(e,t){const i=t===void 0?void 0:e,n=t===void 0?e:t;return JP({owner:i,debugName:()=>{const o=wee(n);if(o!==void 0)return o;const r=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(n.toString());if(r)return`${this.debugName}.${r[2]}`;if(!i)return`${this.debugName} (mapped)`},debugReferenceFn:n},o=>n(this.read(o),o))}flatten(){return JP({owner:void 0,debugName:()=>`${this.debugName} (flattened)`},e=>this.read(e).read(e))}recomputeInitiallyAndOnChange(e,t){return e.add(fbe(this,t)),this}keepObserved(e){return e.add(Fbe(this)),this}}class jQ extends Zbe{constructor(){super(...arguments),this.observers=new Set}addObserver(e){const t=this.observers.size;this.observers.add(e),t===0&&this.onFirstObserverAdded()}removeObserver(e){this.observers.delete(e)&&this.observers.size===0&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}function Ss(s,e){const t=new HQ(s,e);try{s(t)}finally{t.finish()}}let qL;function Oy(s){if(qL)s(qL);else{const e=new HQ(s,void 0);qL=e;try{s(e)}finally{e.finish(),qL=void 0}}}async function Abe(s,e){const t=new HQ(s,e);try{await s(t)}finally{t.finish()}}function CA(s,e,t){s?e(s):Ss(e,t)}class HQ{constructor(e,t){this._fn=e,this._getDebugName=t,this.updatingObservers=[]}getDebugName(){return this._getDebugName?this._getDebugName():wee(this._fn)}updateObserver(e,t){this.updatingObservers.push({observer:e,observable:t}),e.beginUpdate(t)}finish(){const e=this.updatingObservers;for(let t=0;t<e.length;t++){const{observer:i,observable:n}=e[t];i.endUpdate(n)}this.updatingObservers=null}}function oi(s,e){let t;return typeof s=="string"?t=new sr(void 0,s,void 0):t=new sr(s,void 0,void 0),new Mee(t,e,hc)}class Mee extends jQ{get debugName(){return this._debugNameData.getDebugName(this)??"ObservableValue"}constructor(e,t,i){super(),this._debugNameData=e,this._equalityComparator=i,this._value=t}get(){return this._value}set(e,t,i){var o;if(i===void 0&&this._equalityComparator(this._value,e))return;let n;t||(t=n=new HQ(()=>{},()=>`Setting ${this.debugName}`));try{const l=this._value;this._setValue(e),(o=Ube())==null||o.handleObservableChanged(this,{oldValue:l,newValue:e,change:i,didChange:!0,hadValue:!0});for(const r of this.observers)t.updateObserver(r,this),r.handleChange(this,i)}finally{n&&n.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(e){this._value=e}}function QM(s,e){let t;return typeof s=="string"?t=new sr(void 0,s,void 0):t=new sr(s,void 0,void 0),new I9e(t,e,hc)}class I9e extends Mee{_setValue(e){this._value!==e&&(this._value&&this._value.dispose(),this._value=e)}dispose(){var e;(e=this._value)==null||e.dispose()}}function ht(s,e){return e!==void 0?new wA(new sr(s,void 0,e),e,void 0,void 0,void 0,hc):new wA(new sr(void 0,void 0,s),s,void 0,void 0,void 0,hc)}function pB(s,e,t){return new D9e(new sr(s,void 0,e),e,void 0,void 0,void 0,hc,t)}function $d(s,e){return new wA(new sr(s.owner,s.debugName,s.debugReferenceFn),e,void 0,void 0,s.onLastObserverRemoved,s.equalsFn??hc)}k9e($d);function Nbe(s,e){return new wA(new sr(s.owner,s.debugName,void 0),e,s.createEmptyChangeSummary,s.handleChange,void 0,s.equalityComparer??hc)}function Uf(s,e){let t,i;e===void 0?(t=s,i=void 0):(i=s,t=e);const n=new Ze;return new wA(new sr(i,void 0,t),o=>(n.clear(),t(o,n)),void 0,void 0,()=>n.dispose(),hc)}function Zr(s,e){let t,i;e===void 0?(t=s,i=void 0):(i=s,t=e);let n;return new wA(new sr(i,void 0,t),o=>{n?n.clear():n=new Ze;const l=t(o);return l&&n.add(l),l},void 0,void 0,()=>{n&&(n.dispose(),n=void 0)},hc)}class wA extends jQ{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(e,t,i,n,o=void 0,l){var r;super(),this._debugNameData=e,this._computeFn=t,this.createChangeSummary=i,this._handleChange=n,this._handleLastObserverRemoved=o,this._equalityComparator=l,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=(r=this.createChangeSummary)==null?void 0:r.call(this)}onLastObserverRemoved(){var e;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),(e=this._handleLastObserverRemoved)==null||e.call(this)}get(){var e;if(this.observers.size===0){const t=this._computeFn(this,(e=this.createChangeSummary)==null?void 0:e.call(this));return this.onLastObserverRemoved(),t}else{do{if(this.state===1){for(const t of this.dependencies)if(t.reportChanges(),this.state===2)break}this.state===1&&(this.state=3),this._recomputeIfNeeded()}while(this.state!==3);return this.value}}_recomputeIfNeeded(){var l;if(this.state===3)return;const e=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=e;const t=this.state!==0,i=this.value;this.state=3;const n=this.changeSummary;this.changeSummary=(l=this.createChangeSummary)==null?void 0:l.call(this);try{this.value=this._computeFn(this,n)}finally{for(const r of this.dependenciesToBeRemoved)r.removeObserver(this);this.dependenciesToBeRemoved.clear()}if(t&&!this._equalityComparator(i,this.value))for(const r of this.observers)r.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(e){this.updateCount++;const t=this.updateCount===1;if(this.state===3&&(this.state=1,!t))for(const i of this.observers)i.handlePossibleChange(this);if(t)for(const i of this.observers)i.beginUpdate(this)}endUpdate(e){if(this.updateCount--,this.updateCount===0){const t=[...this.observers];for(const i of t)i.endUpdate(this)}SA(()=>this.updateCount>=0)}handlePossibleChange(e){if(this.state===3&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){this.state=1;for(const t of this.observers)t.handlePossibleChange(this)}}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){const i=this._handleChange?this._handleChange({changedObservable:e,change:t,didChange:o=>o===e},this.changeSummary):!0,n=this.state===3;if(i&&(this.state===1||n)&&(this.state=2,n))for(const o of this.observers)o.handlePossibleChange(this)}}readObservable(e){e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}addObserver(e){const t=!this.observers.has(e)&&this.updateCount>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this.updateCount>0;super.removeObserver(e),t&&e.endUpdate(this)}}class D9e extends wA{constructor(e,t,i,n,o=void 0,l,r){super(e,t,i,n,o,l),this.set=r}}function Gt(s){return new IY(new sr(void 0,void 0,s),s,void 0,void 0)}function gB(s,e){return new IY(new sr(s.owner,s.debugName,s.debugReferenceFn??e),e,void 0,void 0)}function bB(s,e){return new IY(new sr(s.owner,s.debugName,s.debugReferenceFn??e),e,s.createEmptyChangeSummary,s.handleChange)}function G9e(s,e){const t=new Ze,i=bB({owner:s.owner,debugName:s.debugName,debugReferenceFn:s.debugReferenceFn??e,createEmptyChangeSummary:s.createEmptyChangeSummary,handleChange:s.handleChange},(n,o)=>{t.clear(),e(n,o,t)});return gt(()=>{i.dispose(),t.dispose()})}function Ga(s){const e=new Ze,t=gB({owner:void 0,debugName:void 0,debugReferenceFn:s},i=>{e.clear(),s(i,e)});return gt(()=>{t.dispose(),e.dispose()})}class IY{get debugName(){return this._debugNameData.getDebugName(this)??"(anonymous)"}constructor(e,t,i,n){var o;this._debugNameData=e,this._runFn=t,this.createChangeSummary=i,this._handleChange=n,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=(o=this.createChangeSummary)==null?void 0:o.call(this),this._runIfNeeded()}dispose(){this.disposed=!0;for(const e of this.dependencies)e.removeObserver(this);this.dependencies.clear()}_runIfNeeded(){var i,n;if(this.state===3)return;const e=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=e,this.state=3;const t=this.disposed;try{if(!t){(i=Ube())==null||i.handleAutorunTriggered(this);const o=this.changeSummary;this.changeSummary=(n=this.createChangeSummary)==null?void 0:n.call(this),this._runFn(this,o)}}finally{for(const o of this.dependenciesToBeRemoved)o.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){this.state===3&&(this.state=1),this.updateCount++}endUpdate(){if(this.updateCount===1)do{if(this.state===1){this.state=3;for(const e of this.dependencies)if(e.reportChanges(),this.state===2)break}this._runIfNeeded()}while(this.state!==3);this.updateCount--,SA(()=>this.updateCount>=0)}handlePossibleChange(e){this.state===3&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(this.state=1)}handleChange(e,t){this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:n=>n===e},this.changeSummary))&&(this.state=2)}readObservable(e){if(this.disposed)return e.get();e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}}(function(s){s.Observer=IY})(Gt||(Gt={}));function Xc(s){return new E9e(s)}class E9e extends Zbe{constructor(e){super(),this.value=e}get debugName(){return this.toString()}get(){return this.value}addObserver(e){}removeObserver(e){}toString(){return`Const: ${this.value}`}}function gn(...s){let e,t,i;return s.length===3?[e,t,i]=s:[t,i]=s,new mU(new sr(e,void 0,i),t,i,()=>mU.globalTransaction,hc)}function v9e(s,e,t){return new mU(new sr(s.owner,s.debugName,s.debugReferenceFn??t),e,t,()=>mU.globalTransaction,s.equalsFn??hc)}class mU extends jQ{constructor(e,t,i,n,o){super(),this._debugNameData=e,this.event=t,this._getValue=i,this._getTransaction=n,this._equalityComparator=o,this.hasValue=!1,this.handleEvent=l=>{const r=this._getValue(l),a=this.value;(!this.hasValue||!this._equalityComparator(a,r))&&(this.value=r,this.hasValue&&CA(this._getTransaction(),c=>{for(const h of this.observers)c.updateObserver(h,this),h.handleChange(this,void 0)},()=>{const c=this.getDebugName();return"Event fired"+(c?`: ${c}`:"")}),this.hasValue=!0)}}getDebugName(){return this._debugNameData.getDebugName(this)}get debugName(){const e=this.getDebugName();return"From Event"+(e?`: ${e}`:"")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this._getValue(void 0)}}(function(s){s.Observer=mU;function e(t,i){let n=!1;mU.globalTransaction===void 0&&(mU.globalTransaction=t,n=!0);try{i()}finally{n&&(mU.globalTransaction=void 0)}}s.batchEventsGlobally=e})(gn||(gn={}));function Tl(s,e){return new x9e(s,e)}class x9e extends jQ{constructor(e,t){super(),this.debugName=e,this.event=t,this.handleEvent=()=>{Ss(i=>{for(const n of this.observers)i.updateObserver(n,this),n.handleChange(this,void 0)},()=>this.debugName)}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function PQ(s){return typeof s=="string"?new Hle(s):new Hle(void 0,s)}class Hle extends jQ{get debugName(){return new sr(this._owner,this._debugName,void 0).getDebugName(this)??"Observable Signal"}toString(){return this.debugName}constructor(e,t){super(),this._debugName=e,this._owner=t}trigger(e,t){if(!e){Ss(i=>{this.trigger(i,t)},()=>`Trigger signal ${this.debugName}`);return}for(const i of this.observers)e.updateObserver(i,this),i.handleChange(this,t)}get(){}}function J9e(s){const e=new Rbe(!1,void 0);return s.addObserver(e),gt(()=>{s.removeObserver(e)})}L9e(J9e);function KQ(s,e){const t=new Rbe(!0,e);return s.addObserver(t),e?e(s.get()):s.reportChanges(),gt(()=>{s.removeObserver(t)})}B9e(KQ);class Rbe{constructor(e,t){this._forceRecompute=e,this._handleValue=t,this._counter=0}beginUpdate(e){this._counter++}endUpdate(e){this._counter--,this._counter===0&&this._forceRecompute&&(this._handleValue?this._handleValue(e.get()):e.reportChanges())}handlePossibleChange(e){}handleChange(e,t){}}function UB(s,e){let t;return $d({owner:s,debugReferenceFn:e},n=>(t=e(n,t),t))}function X9e(s,e,t,i){let n=new Ple(t,i);return $d({debugReferenceFn:t,owner:s,onLastObserverRemoved:()=>{n.dispose(),n=new Ple(t)}},l=>(n.setItems(e.read(l)),n.getItems()))}class Ple{constructor(e,t){this._map=e,this._keySelector=t,this._cache=new Map,this._items=[]}dispose(){this._cache.forEach(e=>e.store.dispose()),this._cache.clear()}setItems(e){const t=[],i=new Set(this._cache.keys());for(const n of e){const o=this._keySelector?this._keySelector(n):n;let l=this._cache.get(o);if(l)i.delete(o);else{const r=new Ze;l={out:this._map(n,r),store:r},this._cache.set(o,l)}t.push(l.out)}for(const n of i)this._cache.get(n).store.dispose(),this._cache.delete(n);this._items=t}getItems(){return this._items}}function Y9e(s,e){return UB(s,(t,i)=>i??e(t))}class DY{static fromFn(e){return new DY(e())}constructor(e){this._value=oi(this,void 0),this.promiseResult=this._value,this.promise=e.then(t=>(Ss(i=>{this._value.set(new Kle(t,void 0),i)}),t),t=>{throw Ss(i=>{this._value.set(new Kle(void 0,t),i)}),t})}}class Kle{constructor(e,t){this.data=e,this.error=t}}function Sbe(s,e,t,i){return e||(e=n=>n!=null),new Promise((n,o)=>{let l=!0,r=!1;const a=s.map(c=>({isFinished:e(c),error:t?t(c):!1,state:c})),d=Gt(c=>{const{isFinished:h,error:u,state:m}=a.read(c);(h||u)&&(l?r=!0:d.dispose(),u?o(u===!0?m:u):n(m))});if(i){const c=i.onCancellationRequested(()=>{d.dispose(),c.dispose(),o(new jh)});if(i.isCancellationRequested){d.dispose(),c.dispose(),o(new jh);return}}l=!1,r&&d.dispose()})}class z9e extends jQ{get debugName(){return this._debugNameData.getDebugName(this)??"LazyObservableValue"}constructor(e,t,i){super(),this._debugNameData=e,this._equalityComparator=i,this._isUpToDate=!0,this._deltas=[],this._updateCounter=0,this._value=t}get(){return this._update(),this._value}_update(){if(!this._isUpToDate)if(this._isUpToDate=!0,this._deltas.length>0){for(const e of this.observers)for(const t of this._deltas)e.handleChange(this,t);this._deltas.length=0}else for(const e of this.observers)e.handleChange(this,void 0)}_beginUpdate(){if(this._updateCounter++,this._updateCounter===1)for(const e of this.observers)e.beginUpdate(this)}_endUpdate(){if(this._updateCounter--,this._updateCounter===0){this._update();const e=[...this.observers];for(const t of e)t.endUpdate(this)}}addObserver(e){const t=!this.observers.has(e)&&this._updateCounter>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this._updateCounter>0;super.removeObserver(e),t&&e.endUpdate(this)}set(e,t,i){if(i===void 0&&this._equalityComparator(this._value,e))return;let n;t||(t=n=new HQ(()=>{},()=>`Setting ${this.debugName}`));try{if(this._isUpToDate=!1,this._setValue(e),i!==void 0&&this._deltas.push(i),t.updateObserver({beginUpdate:()=>this._beginUpdate(),endUpdate:()=>this._endUpdate(),handleChange:(o,l)=>{},handlePossibleChange:o=>{}},this),this._updateCounter>1)for(const o of this.observers)o.handlePossibleChange(this)}finally{n&&n.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(e){this._value=e}}function XP(s,e){return s.lazy?new z9e(new sr(s.owner,s.debugName,void 0),e,s.equalsFn??hc):new Mee(new sr(s.owner,s.debugName,void 0),e,s.equalsFn??hc)}const Lw=class Lw extends de{constructor(e=!1){super(),this._onDidRequestBasicLanguageFeatures=this._register(new re),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new re),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new re({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,Lw.instanceCount++,this._registry=this._register(new EP(!0,e)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange(()=>this._onDidChange.fire()))}dispose(){Lw.instanceCount--,super.dispose()}isRegisteredLanguageId(e){return this._registry.isRegisteredLanguageId(e)}getLanguageIdByLanguageName(e){return this._registry.getLanguageIdByLanguageName(e)}getLanguageIdByMimeType(e){return this._registry.getLanguageIdByMimeType(e)}guessLanguageIdByFilepathOrFirstLine(e,t){const i=this._registry.guessLanguageIdByFilepathOrFirstLine(e,t);return u$(i,null)}createById(e){return new qle(this.onDidChange,()=>this._createAndGetLanguageIdentifier(e))}createByFilepathOrFirstLine(e,t){return new qle(this.onDidChange,()=>{const i=this.guessLanguageIdByFilepathOrFirstLine(e,t);return this._createAndGetLanguageIdentifier(i)})}_createAndGetLanguageIdentifier(e){return(!e||!this.isRegisteredLanguageId(e))&&(e=ia),e}requestBasicLanguageFeatures(e){this._requestedBasicLanguages.has(e)||(this._requestedBasicLanguages.add(e),this._onDidRequestBasicLanguageFeatures.fire(e))}requestRichLanguageFeatures(e){this._requestedRichLanguages.has(e)||(this._requestedRichLanguages.add(e),this.requestBasicLanguageFeatures(e),Ds.getOrCreate(e),this._onDidRequestRichLanguageFeatures.fire(e))}};Lw.instanceCount=0;let YP=Lw;class qle{constructor(e,t){this._value=gn(this,e,()=>t()),this.onDidChange=ve.fromObservable(this._value)}get languageId(){return this._value.get()}}const yM={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:zs.text,INTERNAL_URI_LIST:"application/vnd.code.uri-list"},_9e=()=>({get delay(){return-1},dispose:()=>{},showHover:()=>{}});let GY=_9e;const O9e=new Hh(()=>GY("mouse",!1)),j9e=new Hh(()=>GY("element",!1));function H9e(s){GY=s}function ca(s){return s==="element"?j9e.value:O9e.value}function mV(){return GY("element",!0)}let Wbe={showHover:()=>{},hideHover:()=>{},showAndFocusLastHover:()=>{},setupManagedHover:()=>null,showManagedHover:()=>{}};function P9e(s){Wbe=s}function rm(){return Wbe}class K9e{constructor(e){this.spliceables=e}splice(e,t,i){this.spliceables.forEach(n=>n.splice(e,t,i))}}class kf extends Error{constructor(e,t){super(`ListError [${e}] ${t}`)}}function $le(s,e){const t=[];for(const i of e){if(s.start>=i.range.end)continue;if(s.end<i.range.start)break;const n=Pl.intersect(s,i.range);Pl.isEmpty(n)||t.push({range:n,size:i.size})}return t}function zP({start:s,end:e},t){return{start:s+t,end:e+t}}function q9e(s){const e=[];let t=null;for(const i of s){const n=i.range.start,o=i.range.end,l=i.size;if(t&&l===t.size){t.range.end=o;continue}t={range:{start:n,end:o},size:l},e.push(t)}return e}function $9e(...s){return q9e(s.reduce((e,t)=>e.concat(t),[]))}class e3e{get paddingTop(){return this._paddingTop}set paddingTop(e){this._size=this._size+e-this._paddingTop,this._paddingTop=e}constructor(e){this.groups=[],this._size=0,this._paddingTop=0,this._paddingTop=e??0,this._size=this._paddingTop}splice(e,t,i=[]){const n=i.length-t,o=$le({start:0,end:e},this.groups),l=$le({start:e+t,end:Number.POSITIVE_INFINITY},this.groups).map(a=>({range:zP(a.range,n),size:a.size})),r=i.map((a,d)=>({range:{start:e+d,end:e+d+1},size:a.size}));this.groups=$9e(o,r,l),this._size=this._paddingTop+this.groups.reduce((a,d)=>a+d.size*(d.range.end-d.range.start),0)}get count(){const e=this.groups.length;return e?this.groups[e-1].range.end:0}get size(){return this._size}indexAt(e){if(e<0)return-1;if(e<this._paddingTop)return 0;let t=0,i=this._paddingTop;for(const n of this.groups){const o=n.range.end-n.range.start,l=i+o*n.size;if(e<l)return t+Math.floor((e-i)/n.size);t+=o,i=l}return t}indexAfter(e){return Math.min(this.indexAt(e)+1,this.count)}positionAt(e){if(e<0)return-1;let t=0,i=0;for(const n of this.groups){const o=n.range.end-n.range.start,l=i+o;if(e<l)return this._paddingTop+t+(e-i)*n.size;t+=o*n.size,i=l}return-1}}class t3e{constructor(e){this.renderers=e,this.cache=new Map,this.transactionNodesPendingRemoval=new Set,this.inTransaction=!1}alloc(e){let t=this.getTemplateCache(e).pop(),i=!1;if(t)i=this.transactionNodesPendingRemoval.has(t.domNode),i&&this.transactionNodesPendingRemoval.delete(t.domNode);else{const n=Ge(".monaco-list-row"),l=this.getRenderer(e).renderTemplate(n);t={domNode:n,templateId:e,templateData:l}}return{row:t,isReusingConnectedDomNode:i}}release(e){e&&this.releaseRow(e)}transact(e){if(this.inTransaction)throw new Error("Already in transaction");this.inTransaction=!0;try{e()}finally{for(const t of this.transactionNodesPendingRemoval)this.doRemoveNode(t);this.transactionNodesPendingRemoval.clear(),this.inTransaction=!1}}releaseRow(e){const{domNode:t,templateId:i}=e;t&&(this.inTransaction?this.transactionNodesPendingRemoval.add(t):this.doRemoveNode(t)),this.getTemplateCache(i).push(e)}doRemoveNode(e){e.classList.remove("scrolling"),e.remove()}getTemplateCache(e){let t=this.cache.get(e);return t||(t=[],this.cache.set(e,t)),t}dispose(){this.cache.forEach((e,t)=>{for(const i of e)this.getRenderer(t).disposeTemplate(i.templateData),i.templateData=null}),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(e){const t=this.renderers.get(e);if(!t)throw new Error(`No renderer found for ${e}`);return t}}var k0=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};const If={CurrentDragAndDropData:void 0},gm={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements(s){return[s]},getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class fB{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class i3e{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class n3e{constructor(){this.types=[],this.files=[]}update(e){if(e.types&&this.types.splice(0,this.types.length,...e.types),e.files){this.files.splice(0,this.files.length);for(let t=0;t<e.files.length;t++){const i=e.files.item(t);i&&(i.size||i.type)&&this.files.push(i)}}}getData(){return{types:this.types,files:this.files}}}function s3e(s,e){return Array.isArray(s)&&Array.isArray(e)?Fs(s,e):s===e}class o3e{constructor(e){e!=null&&e.getSetSize?this.getSetSize=e.getSetSize.bind(e):this.getSetSize=(t,i,n)=>n,e!=null&&e.getPosInSet?this.getPosInSet=e.getPosInSet.bind(e):this.getPosInSet=(t,i)=>i+1,e!=null&&e.getRole?this.getRole=e.getRole.bind(e):this.getRole=t=>"listitem",e!=null&&e.isChecked?this.isChecked=e.isChecked.bind(e):this.isChecked=t=>{}}}const bX=class bX{get contentHeight(){return this.rangeMap.size}get onDidScroll(){return this.scrollableElement.onScroll}get scrollableElementDomNode(){return this.scrollableElement.getDomNode()}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(e){if(e!==this._horizontalScrolling){if(e&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=e,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){for(const t of this.items)this.measureItemWidth(t);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:O9(this.domNode)}),this.rowsContainer.style.width=`${Math.max(this.scrollWidth||0,this.renderWidth)}px`}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}constructor(e,t,i,n=gm){var l,r;if(this.virtualDelegate=t,this.domId=`list_id_${++bX.InstanceCount}`,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new Hc(50),this.splicing=!1,this.dragOverAnimationStopDisposable=de.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=de.None,this.onDragLeaveTimeout=de.None,this.disposables=new Ze,this._onDidChangeContentHeight=new re,this._onDidChangeContentWidth=new re,this.onDidChangeContentHeight=ve.latch(this._onDidChangeContentHeight.event,void 0,this.disposables),this._horizontalScrolling=!1,n.horizontalScrolling&&n.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=this.createRangeMap(n.paddingTop??0);for(const a of i)this.renderers.set(a.templateId,a);this.cache=this.disposables.add(new t3e(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle("mouse-support",typeof n.mouseSupport=="boolean"?n.mouseSupport:!0),this._horizontalScrolling=n.horizontalScrolling??gm.horizontalScrolling,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.paddingBottom=typeof n.paddingBottom>"u"?0:n.paddingBottom,this.accessibilityProvider=new o3e(n.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",(n.transformOptimization??gm.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)",this.rowsContainer.style.overflow="hidden",this.rowsContainer.style.contain="strict"),this.disposables.add(nr.addTarget(this.rowsContainer)),this.scrollable=this.disposables.add(new OQ({forceIntegerValues:!0,smoothScrollDuration:n.smoothScrolling??!1?125:0,scheduleAtNextAnimationFrame:a=>Sd(Wt(this.domNode),a)})),this.scrollableElement=this.disposables.add(new QY(this.rowsContainer,{alwaysConsumeMouseWheel:n.alwaysConsumeMouseWheel??gm.alwaysConsumeMouseWheel,horizontal:1,vertical:n.verticalScrollMode??gm.verticalScrollMode,useShadows:n.useShadows??gm.useShadows,mouseWheelScrollSensitivity:n.mouseWheelScrollSensitivity,fastScrollSensitivity:n.fastScrollSensitivity,scrollByPage:n.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),e.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add(ge(this.rowsContainer,_n.Change,a=>this.onTouchChange(a))),this.disposables.add(ge(this.scrollableElement.getDomNode(),"scroll",a=>a.target.scrollTop=0)),this.disposables.add(ge(this.domNode,"dragover",a=>this.onDragOver(this.toDragEvent(a)))),this.disposables.add(ge(this.domNode,"drop",a=>this.onDrop(this.toDragEvent(a)))),this.disposables.add(ge(this.domNode,"dragleave",a=>this.onDragLeave(this.toDragEvent(a)))),this.disposables.add(ge(this.domNode,"dragend",a=>this.onDragEnd(a))),this.setRowLineHeight=n.setRowLineHeight??gm.setRowLineHeight,this.setRowHeight=n.setRowHeight??gm.setRowHeight,this.supportDynamicHeights=n.supportDynamicHeights??gm.supportDynamicHeights,this.dnd=n.dnd??this.disposables.add(gm.dnd),this.layout((l=n.initialSize)==null?void 0:l.height,(r=n.initialSize)==null?void 0:r.width)}updateOptions(e){e.paddingBottom!==void 0&&(this.paddingBottom=e.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),e.smoothScrolling!==void 0&&this.scrollable.setSmoothScrollDuration(e.smoothScrolling?125:0),e.horizontalScrolling!==void 0&&(this.horizontalScrolling=e.horizontalScrolling);let t;if(e.scrollByPage!==void 0&&(t={...t??{},scrollByPage:e.scrollByPage}),e.mouseWheelScrollSensitivity!==void 0&&(t={...t??{},mouseWheelScrollSensitivity:e.mouseWheelScrollSensitivity}),e.fastScrollSensitivity!==void 0&&(t={...t??{},fastScrollSensitivity:e.fastScrollSensitivity}),t&&this.scrollableElement.updateOptions(t),e.paddingTop!==void 0&&e.paddingTop!==this.rangeMap.paddingTop){const i=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),n=e.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=e.paddingTop,this.render(i,Math.max(0,this.lastRenderTop+n),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}createRangeMap(e){return new e3e(e)}splice(e,t,i=[]){if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(e,t,i)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(e,t,i=[]){const n=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),o={start:e,end:e+t},l=Pl.intersect(n,o),r=new Map;for(let W=l.end-1;W>=l.start;W--){const Q=this.items[W];if(Q.dragStartDisposable.dispose(),Q.checkedDisposable.dispose(),Q.row){let R=r.get(Q.templateId);R||(R=[],r.set(Q.templateId,R));const M=this.renderers.get(Q.templateId);M&&M.disposeElement&&M.disposeElement(Q.element,W,Q.row.templateData,Q.size),R.unshift(Q.row)}Q.row=null,Q.stale=!0}const a={start:e+t,end:this.items.length},d=Pl.intersect(a,n),c=Pl.relativeComplement(a,n),h=i.map(W=>({id:String(this.itemId++),element:W,templateId:this.virtualDelegate.getTemplateId(W),size:this.virtualDelegate.getHeight(W),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(W),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:de.None,checkedDisposable:de.None,stale:!1}));let u;e===0&&t>=this.items.length?(this.rangeMap=this.createRangeMap(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,h),u=this.items,this.items=h):(this.rangeMap.splice(e,t,h),u=this.items.splice(e,t,...h));const m=i.length-t,p=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),g=zP(d,m),b=Pl.intersect(p,g);for(let W=b.start;W<b.end;W++)this.updateItemInDOM(this.items[W],W);const f=Pl.relativeComplement(g,p);for(const W of f)for(let Q=W.start;Q<W.end;Q++)this.removeItemFromDOM(Q);const Z=c.map(W=>zP(W,m)),N=[{start:e,end:e+i.length},...Z].map(W=>Pl.intersect(p,W)).reverse();for(const W of N)for(let Q=W.end-1;Q>=W.start;Q--){const R=this.items[Q],M=r.get(R.templateId),w=M==null?void 0:M.pop();this.insertItemInDOM(Q,w)}for(const W of r.values())for(const Q of W)this.cache.release(Q);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),u.map(W=>W.element)}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=Sd(Wt(this.domNode),()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null}))}eventuallyUpdateScrollWidth(){if(!this.horizontalScrolling){this.scrollableElementWidthDelayer.cancel();return}this.scrollableElementWidthDelayer.trigger(()=>this.updateScrollWidth())}updateScrollWidth(){if(!this.horizontalScrolling)return;let e=0;for(const t of this.items)typeof t.width<"u"&&(e=Math.max(e,t.width));this.scrollWidth=e,this.scrollableElement.setScrollDimensions({scrollWidth:e===0?0:e+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const e of this.items)e.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}get firstVisibleIndex(){return this.getRenderRange(this.lastRenderTop,this.lastRenderHeight).start}element(e){return this.items[e].element}indexOf(e){return this.items.findIndex(t=>t.element===e)}domElement(e){const t=this.items[e].row;return t&&t.domNode}elementHeight(e){return this.items[e].size}elementTop(e){return this.rangeMap.positionAt(e)}indexAt(e){return this.rangeMap.indexAt(e)}indexAfter(e){return this.rangeMap.indexAfter(e)}layout(e,t){const i={height:typeof e=="number"?e:QEe(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,i.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(i),typeof t<"u"&&(this.renderWidth=t,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:typeof t=="number"?t:O9(this.domNode)})}render(e,t,i,n,o,l=!1){const r=this.getRenderRange(t,i),a=Pl.relativeComplement(r,e).reverse(),d=Pl.relativeComplement(e,r);if(l){const c=Pl.intersect(e,r);for(let h=c.start;h<c.end;h++)this.updateItemInDOM(this.items[h],h)}this.cache.transact(()=>{for(const c of d)for(let h=c.start;h<c.end;h++)this.removeItemFromDOM(h);for(const c of a)for(let h=c.end-1;h>=c.start;h--)this.insertItemInDOM(h)}),n!==void 0&&(this.rowsContainer.style.left=`-${n}px`),this.rowsContainer.style.top=`-${t}px`,this.horizontalScrolling&&o!==void 0&&(this.rowsContainer.style.width=`${Math.max(o,this.renderWidth)}px`),this.lastRenderTop=t,this.lastRenderHeight=i}insertItemInDOM(e,t){var a,d;const i=this.items[e];if(!i.row)if(t)i.row=t,i.stale=!0;else{const c=this.cache.alloc(i.templateId);i.row=c.row,i.stale||(i.stale=c.isReusingConnectedDomNode)}const n=this.accessibilityProvider.getRole(i.element)||"listitem";i.row.domNode.setAttribute("role",n);const o=this.accessibilityProvider.isChecked(i.element);if(typeof o=="boolean")i.row.domNode.setAttribute("aria-checked",String(!!o));else if(o){const c=h=>i.row.domNode.setAttribute("aria-checked",String(!!h));c(o.value),i.checkedDisposable=o.onDidChange(()=>c(o.value))}if(i.stale||!i.row.domNode.parentElement){const c=((d=(a=this.items.at(e+1))==null?void 0:a.row)==null?void 0:d.domNode)??null;(i.row.domNode.parentElement!==this.rowsContainer||i.row.domNode.nextElementSibling!==c)&&this.rowsContainer.insertBefore(i.row.domNode,c),i.stale=!1}this.updateItemInDOM(i,e);const l=this.renderers.get(i.templateId);if(!l)throw new Error(`No renderer found for template id ${i.templateId}`);l==null||l.renderElement(i.element,e,i.row.templateData,i.size);const r=this.dnd.getDragURI(i.element);i.dragStartDisposable.dispose(),i.row.domNode.draggable=!!r,r&&(i.dragStartDisposable=ge(i.row.domNode,"dragstart",c=>this.onDragStart(i.element,r,c))),this.horizontalScrolling&&(this.measureItemWidth(i),this.eventuallyUpdateScrollWidth())}measureItemWidth(e){if(!e.row||!e.row.domNode)return;e.row.domNode.style.width="fit-content",e.width=O9(e.row.domNode);const t=Wt(e.row.domNode).getComputedStyle(e.row.domNode);t.paddingLeft&&(e.width+=parseFloat(t.paddingLeft)),t.paddingRight&&(e.width+=parseFloat(t.paddingRight)),e.row.domNode.style.width=""}updateItemInDOM(e,t){e.row.domNode.style.top=`${this.elementTop(t)}px`,this.setRowHeight&&(e.row.domNode.style.height=`${e.size}px`),this.setRowLineHeight&&(e.row.domNode.style.lineHeight=`${e.size}px`),e.row.domNode.setAttribute("data-index",`${t}`),e.row.domNode.setAttribute("data-last-element",t===this.length-1?"true":"false"),e.row.domNode.setAttribute("data-parity",t%2===0?"even":"odd"),e.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(e.element,t,this.length))),e.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(e.element,t))),e.row.domNode.setAttribute("id",this.getElementDomId(t)),e.row.domNode.classList.toggle("drop-target",e.dropTarget)}removeItemFromDOM(e){const t=this.items[e];if(t.dragStartDisposable.dispose(),t.checkedDisposable.dispose(),t.row){const i=this.renderers.get(t.templateId);i&&i.disposeElement&&i.disposeElement(t.element,e,t.row.templateData,t.size),this.cache.release(t.row),t.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(e,t){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:e,reuseAnimation:t})}get scrollTop(){return this.getScrollTop()}set scrollTop(e){this.setScrollTop(e)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return ve.map(this.disposables.add(new Qi(this.domNode,"click")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseDblClick(){return ve.map(this.disposables.add(new Qi(this.domNode,"dblclick")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseMiddleClick(){return ve.filter(ve.map(this.disposables.add(new Qi(this.domNode,"auxclick")).event,e=>this.toMouseEvent(e),this.disposables),e=>e.browserEvent.button===1,this.disposables)}get onMouseDown(){return ve.map(this.disposables.add(new Qi(this.domNode,"mousedown")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseOver(){return ve.map(this.disposables.add(new Qi(this.domNode,"mouseover")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseOut(){return ve.map(this.disposables.add(new Qi(this.domNode,"mouseout")).event,e=>this.toMouseEvent(e),this.disposables)}get onContextMenu(){return ve.any(ve.map(this.disposables.add(new Qi(this.domNode,"contextmenu")).event,e=>this.toMouseEvent(e),this.disposables),ve.map(this.disposables.add(new Qi(this.domNode,_n.Contextmenu)).event,e=>this.toGestureEvent(e),this.disposables))}get onTouchStart(){return ve.map(this.disposables.add(new Qi(this.domNode,"touchstart")).event,e=>this.toTouchEvent(e),this.disposables)}get onTap(){return ve.map(this.disposables.add(new Qi(this.rowsContainer,_n.Tap)).event,e=>this.toGestureEvent(e),this.disposables)}toMouseEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element;return{browserEvent:e,index:t,element:n}}toTouchEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element;return{browserEvent:e,index:t,element:n}}toGestureEvent(e){const t=this.getItemIndexFromEventTarget(e.initialTarget||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element;return{browserEvent:e,index:t,element:n}}toDragEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],n=i&&i.element,o=this.getTargetSector(e,t);return{browserEvent:e,index:t,element:n,sector:o}}onScroll(e){try{const t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(t,e.scrollTop,e.height,e.scrollLeft,e.scrollWidth),this.supportDynamicHeights&&this._rerender(e.scrollTop,e.height,e.inSmoothScrolling)}catch(t){throw console.error("Got bad scroll event:",e),t}}onTouchChange(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY}onDragStart(e,t,i){var o,l;if(!i.dataTransfer)return;const n=this.dnd.getDragElements(e);if(i.dataTransfer.effectAllowed="copyMove",i.dataTransfer.setData(yM.TEXT,t),i.dataTransfer.setDragImage){let r;this.dnd.getDragLabel&&(r=this.dnd.getDragLabel(n,i)),typeof r>"u"&&(r=String(n.length));const a=Ge(".monaco-drag-image");a.textContent=r,(h=>{for(;h&&!h.classList.contains("monaco-workbench");)h=h.parentElement;return h||this.domNode.ownerDocument})(this.domNode).appendChild(a),i.dataTransfer.setDragImage(a,-10,-10),setTimeout(()=>a.remove(),0)}this.domNode.classList.add("dragging"),this.currentDragData=new fB(n),If.CurrentDragAndDropData=new i3e(n),(l=(o=this.dnd).onDragStart)==null||l.call(o,this.currentDragData,i)}onDragOver(e){var o,l;if(e.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),If.CurrentDragAndDropData&&If.CurrentDragAndDropData.getData()==="vscode-ui"||(this.setupDragAndDropScrollTopAnimation(e.browserEvent),!e.browserEvent.dataTransfer))return!1;if(!this.currentDragData)if(If.CurrentDragAndDropData)this.currentDragData=If.CurrentDragAndDropData;else{if(!e.browserEvent.dataTransfer.types)return!1;this.currentDragData=new n3e}const t=this.dnd.onDragOver(this.currentDragData,e.element,e.index,e.sector,e.browserEvent);if(this.canDrop=typeof t=="boolean"?t:t.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;e.browserEvent.dataTransfer.dropEffect=typeof t!="boolean"&&((o=t.effect)==null?void 0:o.type)===0?"copy":"move";let i;typeof t!="boolean"&&t.feedback?i=t.feedback:typeof e.index>"u"?i=[-1]:i=[e.index],i=U0(i).filter(r=>r>=-1&&r<this.length).sort((r,a)=>r-a),i=i[0]===-1?[-1]:i;let n=typeof t!="boolean"&&t.effect&&t.effect.position?t.effect.position:"drop-target";if(s3e(this.currentDragFeedback,i)&&this.currentDragFeedbackPosition===n)return!0;if(this.currentDragFeedback=i,this.currentDragFeedbackPosition=n,this.currentDragFeedbackDisposable.dispose(),i[0]===-1)this.domNode.classList.add(n),this.rowsContainer.classList.add(n),this.currentDragFeedbackDisposable=gt(()=>{this.domNode.classList.remove(n),this.rowsContainer.classList.remove(n)});else{if(i.length>1&&n!=="drop-target")throw new Error("Can't use multiple feedbacks with position different than 'over'");n==="drop-target-after"&&i[0]<this.length-1&&(i[0]+=1,n="drop-target-before");for(const r of i){const a=this.items[r];a.dropTarget=!0,(l=a.row)==null||l.domNode.classList.add(n)}this.currentDragFeedbackDisposable=gt(()=>{var r;for(const a of i){const d=this.items[a];d.dropTarget=!1,(r=d.row)==null||r.domNode.classList.remove(n)}})}return!0}onDragLeave(e){var t,i;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=HU(()=>this.clearDragOverFeedback(),100,this.disposables),this.currentDragData&&((i=(t=this.dnd).onDragLeave)==null||i.call(t,this.currentDragData,e.element,e.index,e.browserEvent))}onDrop(e){if(!this.canDrop)return;const t=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,If.CurrentDragAndDropData=void 0,!(!t||!e.browserEvent.dataTransfer)&&(e.browserEvent.preventDefault(),t.update(e.browserEvent.dataTransfer),this.dnd.drop(t,e.element,e.index,e.sector,e.browserEvent))}onDragEnd(e){var t,i;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,If.CurrentDragAndDropData=void 0,(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackPosition=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=de.None}setupDragAndDropScrollTopAnimation(e){if(!this.dragOverAnimationDisposable){const t=Age(this.domNode).top;this.dragOverAnimationDisposable=vEe(Wt(this.domNode),this.animateDragAndDropScrollTop.bind(this,t))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=HU(()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},1e3,this.disposables),this.dragOverMouseY=e.pageY}animateDragAndDropScrollTop(e){if(this.dragOverMouseY===void 0)return;const t=this.dragOverMouseY-e,i=this.renderHeight-35;t<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(t-35))):t>i&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-i))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getTargetSector(e,t){if(t===void 0)return;const i=e.offsetY/this.items[t].size,n=Math.floor(i/.25);return zr(n,0,3)}getItemIndexFromEventTarget(e){const t=this.scrollableElement.getDomNode();let i=e;for(;(Yo(i)||BEe(i))&&i!==this.rowsContainer&&t.contains(i);){const n=i.getAttribute("data-index");if(n){const o=Number(n);if(!isNaN(o))return o}i=i.parentElement}}getRenderRange(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}}_rerender(e,t,i){const n=this.getRenderRange(e,t);let o,l;e===this.elementTop(n.start)?(o=n.start,l=0):n.end-n.start>1&&(o=n.start+1,l=this.elementTop(o)-e);let r=0;for(;;){const a=this.getRenderRange(e,t);let d=!1;for(let c=a.start;c<a.end;c++){const h=this.probeDynamicHeight(c);h!==0&&this.rangeMap.splice(c,1,[this.items[c]]),r+=h,d=d||h!==0}if(!d){r!==0&&this.eventuallyUpdateScrollDimensions();const c=Pl.relativeComplement(n,a);for(const u of c)for(let m=u.start;m<u.end;m++)this.items[m].row&&this.removeItemFromDOM(m);const h=Pl.relativeComplement(a,n).reverse();for(const u of h)for(let m=u.end-1;m>=u.start;m--)this.insertItemInDOM(m);for(let u=a.start;u<a.end;u++)this.items[u].row&&this.updateItemInDOM(this.items[u],u);if(typeof o=="number"){const u=this.scrollable.getFutureScrollPosition().scrollTop-e,m=this.elementTop(o)-l+u;this.setScrollTop(m,i)}this._onDidChangeContentHeight.fire(this.contentHeight);return}}}probeDynamicHeight(e){var l,r,a;const t=this.items[e];if(this.virtualDelegate.getDynamicHeight){const d=this.virtualDelegate.getDynamicHeight(t.element);if(d!==null){const c=t.size;return t.size=d,t.lastDynamicHeightWidth=this.renderWidth,d-c}}if(!t.hasDynamicHeight||t.lastDynamicHeightWidth===this.renderWidth||this.virtualDelegate.hasDynamicHeight&&!this.virtualDelegate.hasDynamicHeight(t.element))return 0;const i=t.size;if(t.row)return t.row.domNode.style.height="",t.size=t.row.domNode.offsetHeight,t.size===0&&!Jo(t.row.domNode,Wt(t.row.domNode).document.body)&&console.warn("Measuring item node that is not in DOM! Add ListView to the DOM before measuring row height!",new Error().stack),t.lastDynamicHeightWidth=this.renderWidth,t.size-i;const{row:n}=this.cache.alloc(t.templateId);n.domNode.style.height="",this.rowsContainer.appendChild(n.domNode);const o=this.renderers.get(t.templateId);if(!o)throw new en("Missing renderer for templateId: "+t.templateId);return o.renderElement(t.element,e,n.templateData,void 0),t.size=n.domNode.offsetHeight,(l=o.disposeElement)==null||l.call(o,t.element,e,n.templateData,void 0),(a=(r=this.virtualDelegate).setDynamicHeight)==null||a.call(r,t.element,t.size),t.lastDynamicHeightWidth=this.renderWidth,n.domNode.remove(),this.cache.release(n),t.size-i}getElementDomId(e){return`${this.domId}_${e}`}dispose(){var e,t,i;for(const n of this.items)if(n.dragStartDisposable.dispose(),n.checkedDisposable.dispose(),n.row){const o=this.renderers.get(n.row.templateId);o&&((e=o.disposeElement)==null||e.call(o,n.element,-1,n.row.templateData,void 0),o.disposeTemplate(n.row.templateData))}this.items=[],(t=this.domNode)==null||t.remove(),(i=this.dragOverAnimationDisposable)==null||i.dispose(),this.disposables.dispose()}};bX.InstanceCount=0;let eu=bX;k0([so],eu.prototype,"onMouseClick",null);k0([so],eu.prototype,"onMouseDblClick",null);k0([so],eu.prototype,"onMouseMiddleClick",null);k0([so],eu.prototype,"onMouseDown",null);k0([so],eu.prototype,"onMouseOver",null);k0([so],eu.prototype,"onMouseOut",null);k0([so],eu.prototype,"onContextMenu",null);k0([so],eu.prototype,"onTouchStart",null);k0([so],eu.prototype,"onTap",null);var ff=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};class l3e{constructor(e){this.trait=e,this.renderedElements=[]}get templateId(){return`template:${this.trait.name}`}renderTemplate(e){return e}renderElement(e,t,i){const n=this.renderedElements.findIndex(o=>o.templateData===i);if(n>=0){const o=this.renderedElements[n];this.trait.unrender(i),o.index=t}else{const o={index:t,templateData:i};this.renderedElements.push(o)}this.trait.renderIndex(t,i)}splice(e,t,i){const n=[];for(const o of this.renderedElements)o.index<e?n.push(o):o.index>=e+t&&n.push({index:o.index+i-t,templateData:o.templateData});this.renderedElements=n}renderIndexes(e){for(const{index:t,templateData:i}of this.renderedElements)e.indexOf(t)>-1&&this.trait.renderIndex(t,i)}disposeTemplate(e){const t=this.renderedElements.findIndex(i=>i.templateData===e);t<0||this.renderedElements.splice(t,1)}}let Zv=class{get name(){return this._trait}get renderer(){return new l3e(this)}constructor(e){this._trait=e,this.indexes=[],this.sortedIndexes=[],this._onChange=new re,this.onChange=this._onChange.event}splice(e,t,i){const n=i.length-t,o=e+t,l=[];let r=0;for(;r<this.sortedIndexes.length&&this.sortedIndexes[r]<e;)l.push(this.sortedIndexes[r++]);for(let a=0;a<i.length;a++)i[a]&&l.push(a+e);for(;r<this.sortedIndexes.length&&this.sortedIndexes[r]>=o;)l.push(this.sortedIndexes[r++]+n);this.renderer.splice(e,t,i.length),this._set(l,l)}renderIndex(e,t){t.classList.toggle(this._trait,this.contains(e))}unrender(e){e.classList.remove(this._trait)}set(e,t){return this._set(e,[...e].sort(tre),t)}_set(e,t,i){const n=this.indexes,o=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;const l=_P(o,e);return this.renderer.renderIndexes(l),this._onChange.fire({indexes:e,browserEvent:i}),n}get(){return this.indexes}contains(e){return Hw(this.sortedIndexes,e,tre)>=0}dispose(){Tn(this._onChange)}};ff([so],Zv.prototype,"renderer",null);class r3e extends Zv{constructor(e){super("selected"),this.setAriaSelected=e}renderIndex(e,t){super.renderIndex(e,t),this.setAriaSelected&&(this.contains(e)?t.setAttribute("aria-selected","true"):t.setAttribute("aria-selected","false"))}}class W3{constructor(e,t,i){this.trait=e,this.view=t,this.identityProvider=i}splice(e,t,i){if(!this.identityProvider)return this.trait.splice(e,t,new Array(i.length).fill(!1));const n=this.trait.get().map(r=>this.identityProvider.getId(this.view.element(r)).toString());if(n.length===0)return this.trait.splice(e,t,new Array(i.length).fill(!1));const o=new Set(n),l=i.map(r=>o.has(this.identityProvider.getId(r).toString()));this.trait.splice(e,t,l)}}function EU(s){return s.tagName==="INPUT"||s.tagName==="TEXTAREA"}function FB(s,e){return s.classList.contains(e)?!0:s.classList.contains("monaco-list")||!s.parentElement?!1:FB(s.parentElement,e)}function jy(s){return FB(s,"monaco-editor")}function a3e(s){return FB(s,"monaco-custom-toggle")}function d3e(s){return FB(s,"action-item")}function gC(s){return FB(s,"monaco-tree-sticky-row")}function CM(s){return s.classList.contains("monaco-tree-sticky-container")}function Vbe(s){return s.tagName==="A"&&s.classList.contains("monaco-button")||s.tagName==="DIV"&&s.classList.contains("monaco-button-dropdown")?!0:s.classList.contains("monaco-list")||!s.parentElement?!1:Vbe(s.parentElement)}class Qbe{get onKeyDown(){return ve.chain(this.disposables.add(new Qi(this.view.domNode,"keydown")).event,e=>e.filter(t=>!EU(t.target)).map(t=>new Jn(t)))}constructor(e,t,i){this.list=e,this.view=t,this.disposables=new Ze,this.multipleSelectionDisposables=new Ze,this.multipleSelectionSupport=i.multipleSelectionSupport,this.disposables.add(this.onKeyDown(n=>{switch(n.keyCode){case 3:return this.onEnter(n);case 16:return this.onUpArrow(n);case 18:return this.onDownArrow(n);case 11:return this.onPageUpArrow(n);case 12:return this.onPageDownArrow(n);case 9:return this.onEscape(n);case 31:this.multipleSelectionSupport&&(Fi?n.metaKey:n.ctrlKey)&&this.onCtrlA(n)}}))}updateOptions(e){e.multipleSelectionSupport!==void 0&&(this.multipleSelectionSupport=e.multipleSelectionSupport)}onEnter(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent)}onUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onCtrlA(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(Ra(this.list.length),e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(e){this.list.getSelection().length&&(e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}ff([so],Qbe.prototype,"onKeyDown",null);var hp;(function(s){s[s.Automatic=0]="Automatic",s[s.Trigger=1]="Trigger"})(hp||(hp={}));var mS;(function(s){s[s.Idle=0]="Idle",s[s.Typing=1]="Typing"})(mS||(mS={}));const c3e=new class{mightProducePrintableCharacter(s){return s.ctrlKey||s.metaKey||s.altKey?!1:s.keyCode>=31&&s.keyCode<=56||s.keyCode>=21&&s.keyCode<=30||s.keyCode>=98&&s.keyCode<=107||s.keyCode>=85&&s.keyCode<=95}};class h3e{constructor(e,t,i,n,o){this.list=e,this.view=t,this.keyboardNavigationLabelProvider=i,this.keyboardNavigationEventFilter=n,this.delegate=o,this.enabled=!1,this.state=mS.Idle,this.mode=hp.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new Ze,this.disposables=new Ze,this.updateOptions(e.options)}updateOptions(e){e.typeNavigationEnabled??!0?this.enable():this.disable(),this.mode=e.typeNavigationMode??hp.Automatic}enable(){if(this.enabled)return;let e=!1;const t=ve.chain(this.enabledDisposables.add(new Qi(this.view.domNode,"keydown")).event,o=>o.filter(l=>!EU(l.target)).filter(()=>this.mode===hp.Automatic||this.triggered).map(l=>new Jn(l)).filter(l=>e||this.keyboardNavigationEventFilter(l)).filter(l=>this.delegate.mightProducePrintableCharacter(l)).forEach(l=>yi.stop(l,!0)).map(l=>l.browserEvent.key)),i=ve.debounce(t,()=>null,800,void 0,void 0,void 0,this.enabledDisposables);ve.reduce(ve.any(t,i),(o,l)=>l===null?null:(o||"")+l,void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),i(this.onClear,this,this.enabledDisposables),t(()=>e=!0,void 0,this.enabledDisposables),i(()=>e=!1,void 0,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var t;const e=this.list.getFocus();if(e.length>0&&e[0]===this.previouslyFocused){const i=(t=this.list.options.accessibilityProvider)==null?void 0:t.getAriaLabel(this.list.element(e[0]));typeof i=="string"?ra(i):i&&ra(i.get())}this.previouslyFocused=-1}onInput(e){if(!e){this.state=mS.Idle,this.triggered=!1;return}const t=this.list.getFocus(),i=t.length>0?t[0]:0,n=this.state===mS.Idle?1:0;this.state=mS.Typing;for(let o=0;o<this.list.length;o++){const l=(i+o+n)%this.list.length,r=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(l)),a=r&&r.toString();if(this.list.options.typeNavigationEnabled){if(typeof a<"u"){if(NM(e,a)){this.previouslyFocused=i,this.list.setFocus([l]),this.list.reveal(l);return}const d=MYe(e,a);if(d&&d[0].end-d[0].start>1&&d.length===1){this.previouslyFocused=i,this.list.setFocus([l]),this.list.reveal(l);return}}}else if(typeof a>"u"||NM(e,a)){this.previouslyFocused=i,this.list.setFocus([l]),this.list.reveal(l);return}}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class u3e{constructor(e,t){this.list=e,this.view=t,this.disposables=new Ze;const i=ve.chain(this.disposables.add(new Qi(t.domNode,"keydown")).event,o=>o.filter(l=>!EU(l.target)).map(l=>new Jn(l)));ve.chain(i,o=>o.filter(l=>l.keyCode===2&&!l.ctrlKey&&!l.metaKey&&!l.shiftKey&&!l.altKey))(this.onTab,this,this.disposables)}onTab(e){if(e.target!==this.view.domNode)return;const t=this.list.getFocus();if(t.length===0)return;const i=this.view.domElement(t[0]);if(!i)return;const n=i.querySelector("[tabIndex]");if(!n||!Yo(n)||n.tabIndex===-1)return;const o=Wt(n).getComputedStyle(n);o.visibility==="hidden"||o.display==="none"||(e.preventDefault(),e.stopPropagation(),n.focus())}dispose(){this.disposables.dispose()}}function ybe(s){return Fi?s.browserEvent.metaKey:s.browserEvent.ctrlKey}function Cbe(s){return s.browserEvent.shiftKey}function m3e(s){return G$(s)&&s.button===2}const ere={isSelectionSingleChangeEvent:ybe,isSelectionRangeChangeEvent:Cbe};class wbe{constructor(e){this.list=e,this.disposables=new Ze,this._onPointer=new re,this.onPointer=this._onPointer.event,e.options.multipleSelectionSupport!==!1&&(this.multipleSelectionController=this.list.options.multipleSelectionController||ere),this.mouseSupport=typeof e.options.mouseSupport>"u"||!!e.options.mouseSupport,this.mouseSupport&&(e.onMouseDown(this.onMouseDown,this,this.disposables),e.onContextMenu(this.onContextMenu,this,this.disposables),e.onMouseDblClick(this.onDoubleClick,this,this.disposables),e.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(nr.addTarget(e.getHTMLElement()))),ve.any(e.onMouseClick,e.onMouseMiddleClick,e.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(e){e.multipleSelectionSupport!==void 0&&(this.multipleSelectionController=void 0,e.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||ere))}isSelectionSingleChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(e):!1}isSelectionRangeChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(e):!1}isSelectionChangeEvent(e){return this.isSelectionSingleChangeEvent(e)||this.isSelectionRangeChangeEvent(e)}onMouseDown(e){jy(e.browserEvent.target)||kl()!==e.browserEvent.target&&this.list.domFocus()}onContextMenu(e){if(EU(e.browserEvent.target)||jy(e.browserEvent.target))return;const t=typeof e.index>"u"?[]:[e.index];this.list.setFocus(t,e.browserEvent)}onViewPointer(e){if(!this.mouseSupport||EU(e.browserEvent.target)||jy(e.browserEvent.target)||e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=e.index;if(typeof t>"u"){this.list.setFocus([],e.browserEvent),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0);return}if(this.isSelectionChangeEvent(e))return this.changeSelection(e);this.list.setFocus([t],e.browserEvent),this.list.setAnchor(t),m3e(e.browserEvent)||this.list.setSelection([t],e.browserEvent),this._onPointer.fire(e)}onDoubleClick(e){if(EU(e.browserEvent.target)||jy(e.browserEvent.target)||this.isSelectionChangeEvent(e)||e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=this.list.getFocus();this.list.setSelection(t,e.browserEvent)}changeSelection(e){const t=e.index;let i=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(e)){typeof i>"u"&&(i=this.list.getFocus()[0]??t,this.list.setAnchor(i));const n=Math.min(i,t),o=Math.max(i,t),l=Ra(n,o+1),r=this.list.getSelection(),a=b3e(_P(r,[i]),i);if(a.length===0)return;const d=_P(l,U3e(r,a));this.list.setSelection(d,e.browserEvent),this.list.setFocus([t],e.browserEvent)}else if(this.isSelectionSingleChangeEvent(e)){const n=this.list.getSelection(),o=n.filter(l=>l!==t);this.list.setFocus([t]),this.list.setAnchor(t),n.length===o.length?this.list.setSelection([...o,t],e.browserEvent):this.list.setSelection(o,e.browserEvent)}}dispose(){this.disposables.dispose()}}class Mbe{constructor(e,t){this.styleElement=e,this.selectorSuffix=t}style(e){const t=this.selectorSuffix&&`.${this.selectorSuffix}`,i=[];e.listBackground&&i.push(`.monaco-list${t} .monaco-list-rows { background: ${e.listBackground}; }`),e.listFocusBackground&&(i.push(`.monaco-list${t}:focus .monaco-list-row.focused { background-color: ${e.listFocusBackground}; }`),i.push(`.monaco-list${t}:focus .monaco-list-row.focused:hover { background-color: ${e.listFocusBackground}; }`)),e.listFocusForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`),e.listActiveSelectionBackground&&(i.push(`.monaco-list${t}:focus .monaco-list-row.selected { background-color: ${e.listActiveSelectionBackground}; }`),i.push(`.monaco-list${t}:focus .monaco-list-row.selected:hover { background-color: ${e.listActiveSelectionBackground}; }`)),e.listActiveSelectionForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.selected { color: ${e.listActiveSelectionForeground}; }`),e.listActiveSelectionIconForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.selected .codicon { color: ${e.listActiveSelectionIconForeground}; }`),e.listFocusAndSelectionBackground&&i.push(`
- .monaco-drag-image,
- .monaco-list${t}:focus .monaco-list-row.selected.focused { background-color: ${e.listFocusAndSelectionBackground}; }
- `),e.listFocusAndSelectionForeground&&i.push(`
- .monaco-drag-image,
- .monaco-list${t}:focus .monaco-list-row.selected.focused { color: ${e.listFocusAndSelectionForeground}; }
- `),e.listInactiveFocusForeground&&(i.push(`.monaco-list${t} .monaco-list-row.focused { color: ${e.listInactiveFocusForeground}; }`),i.push(`.monaco-list${t} .monaco-list-row.focused:hover { color: ${e.listInactiveFocusForeground}; }`)),e.listInactiveSelectionIconForeground&&i.push(`.monaco-list${t} .monaco-list-row.focused .codicon { color: ${e.listInactiveSelectionIconForeground}; }`),e.listInactiveFocusBackground&&(i.push(`.monaco-list${t} .monaco-list-row.focused { background-color: ${e.listInactiveFocusBackground}; }`),i.push(`.monaco-list${t} .monaco-list-row.focused:hover { background-color: ${e.listInactiveFocusBackground}; }`)),e.listInactiveSelectionBackground&&(i.push(`.monaco-list${t} .monaco-list-row.selected { background-color: ${e.listInactiveSelectionBackground}; }`),i.push(`.monaco-list${t} .monaco-list-row.selected:hover { background-color: ${e.listInactiveSelectionBackground}; }`)),e.listInactiveSelectionForeground&&i.push(`.monaco-list${t} .monaco-list-row.selected { color: ${e.listInactiveSelectionForeground}; }`),e.listHoverBackground&&i.push(`.monaco-list${t}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${e.listHoverBackground}; }`),e.listHoverForeground&&i.push(`.monaco-list${t}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${e.listHoverForeground}; }`);const n=d0(e.listFocusAndSelectionOutline,d0(e.listSelectionOutline,e.listFocusOutline??""));n&&i.push(`.monaco-list${t}:focus .monaco-list-row.focused.selected { outline: 1px solid ${n}; outline-offset: -1px;}`),e.listFocusOutline&&i.push(`
- .monaco-drag-image,
- .monaco-list${t}:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }
- .monaco-workbench.context-menu-visible .monaco-list${t}.last-focused .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }
- `);const o=d0(e.listSelectionOutline,e.listInactiveFocusOutline??"");o&&i.push(`.monaco-list${t} .monaco-list-row.focused.selected { outline: 1px dotted ${o}; outline-offset: -1px; }`),e.listSelectionOutline&&i.push(`.monaco-list${t} .monaco-list-row.selected { outline: 1px dotted ${e.listSelectionOutline}; outline-offset: -1px; }`),e.listInactiveFocusOutline&&i.push(`.monaco-list${t} .monaco-list-row.focused { outline: 1px dotted ${e.listInactiveFocusOutline}; outline-offset: -1px; }`),e.listHoverOutline&&i.push(`.monaco-list${t} .monaco-list-row:hover { outline: 1px dashed ${e.listHoverOutline}; outline-offset: -1px; }`),e.listDropOverBackground&&i.push(`
- .monaco-list${t}.drop-target,
- .monaco-list${t} .monaco-list-rows.drop-target,
- .monaco-list${t} .monaco-list-row.drop-target { background-color: ${e.listDropOverBackground} !important; color: inherit !important; }
- `),e.listDropBetweenBackground&&(i.push(`
- .monaco-list${t} .monaco-list-rows.drop-target-before .monaco-list-row:first-child::before,
- .monaco-list${t} .monaco-list-row.drop-target-before::before {
- content: ""; position: absolute; top: 0px; left: 0px; width: 100%; height: 1px;
- background-color: ${e.listDropBetweenBackground};
- }`),i.push(`
- .monaco-list${t} .monaco-list-rows.drop-target-after .monaco-list-row:last-child::after,
- .monaco-list${t} .monaco-list-row.drop-target-after::after {
- content: ""; position: absolute; bottom: 0px; left: 0px; width: 100%; height: 1px;
- background-color: ${e.listDropBetweenBackground};
- }`)),e.tableColumnsBorder&&i.push(`
- .monaco-table > .monaco-split-view2,
- .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before,
- .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2,
- .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {
- border-color: ${e.tableColumnsBorder};
- }
- .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2,
- .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {
- border-color: transparent;
- }
- `),e.tableOddRowsBackgroundColor&&i.push(`
- .monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr,
- .monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr,
- .monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr {
- background-color: ${e.tableOddRowsBackgroundColor};
- }
- `),this.styleElement.textContent=i.join(`
- `)}}const p3e={listFocusBackground:"#7FB0D0",listActiveSelectionBackground:"#0E639C",listActiveSelectionForeground:"#FFFFFF",listActiveSelectionIconForeground:"#FFFFFF",listFocusAndSelectionOutline:"#90C2F9",listFocusAndSelectionBackground:"#094771",listFocusAndSelectionForeground:"#FFFFFF",listInactiveSelectionBackground:"#3F3F46",listInactiveSelectionIconForeground:"#FFFFFF",listHoverBackground:"#2A2D2E",listDropOverBackground:"#383B3D",listDropBetweenBackground:"#EEEEEE",treeIndentGuidesStroke:"#a9a9a9",treeInactiveIndentGuidesStroke:Re.fromHex("#a9a9a9").transparent(.4).toString(),tableColumnsBorder:Re.fromHex("#cccccc").transparent(.2).toString(),tableOddRowsBackgroundColor:Re.fromHex("#cccccc").transparent(.04).toString(),listBackground:void 0,listFocusForeground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusForeground:void 0,listInactiveFocusBackground:void 0,listHoverForeground:void 0,listFocusOutline:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listHoverOutline:void 0,treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:void 0},g3e={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}}};function b3e(s,e){const t=s.indexOf(e);if(t===-1)return[];const i=[];let n=t-1;for(;n>=0&&s[n]===e-(t-n);)i.push(s[n--]);for(i.reverse(),n=t;n<s.length&&s[n]===e+(n-t);)i.push(s[n++]);return i}function _P(s,e){const t=[];let i=0,n=0;for(;i<s.length||n<e.length;)if(i>=s.length)t.push(e[n++]);else if(n>=e.length)t.push(s[i++]);else if(s[i]===e[n]){t.push(s[i]),i++,n++;continue}else s[i]<e[n]?t.push(s[i++]):t.push(e[n++]);return t}function U3e(s,e){const t=[];let i=0,n=0;for(;i<s.length||n<e.length;)if(i>=s.length)t.push(e[n++]);else if(n>=e.length)t.push(s[i++]);else if(s[i]===e[n]){i++,n++;continue}else s[i]<e[n]?t.push(s[i++]):n++;return t}const tre=(s,e)=>s-e;class f3e{constructor(e,t){this._templateId=e,this.renderers=t}get templateId(){return this._templateId}renderTemplate(e){return this.renderers.map(t=>t.renderTemplate(e))}renderElement(e,t,i,n){let o=0;for(const l of this.renderers)l.renderElement(e,t,i[o++],n)}disposeElement(e,t,i,n){var l;let o=0;for(const r of this.renderers)(l=r.disposeElement)==null||l.call(r,e,t,i[o],n),o+=1}disposeTemplate(e){let t=0;for(const i of this.renderers)i.disposeTemplate(e[t++])}}class F3e{constructor(e){this.accessibilityProvider=e,this.templateId="a18n"}renderTemplate(e){return{container:e,disposables:new Ze}}renderElement(e,t,i){const n=this.accessibilityProvider.getAriaLabel(e),o=n&&typeof n!="string"?n:Xc(n);i.disposables.add(Gt(r=>{this.setAriaLabel(r.readObservable(o),i.container)}));const l=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(e);typeof l=="number"?i.container.setAttribute("aria-level",`${l}`):i.container.removeAttribute("aria-level")}setAriaLabel(e,t){e?t.setAttribute("aria-label",e):t.removeAttribute("aria-label")}disposeElement(e,t,i,n){i.disposables.clear()}disposeTemplate(e){e.disposables.dispose()}}class Z3e{constructor(e,t){this.list=e,this.dnd=t}getDragElements(e){const t=this.list.getSelectedElements();return t.indexOf(e)>-1?t:[e]}getDragURI(e){return this.dnd.getDragURI(e)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e,t)}onDragStart(e,t){var i,n;(n=(i=this.dnd).onDragStart)==null||n.call(i,e,t)}onDragOver(e,t,i,n,o){return this.dnd.onDragOver(e,t,i,n,o)}onDragLeave(e,t,i,n){var o,l;(l=(o=this.dnd).onDragLeave)==null||l.call(o,e,t,i,n)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}drop(e,t,i,n,o){this.dnd.drop(e,t,i,n,o)}dispose(){this.dnd.dispose()}}class Uc{get onDidChangeFocus(){return ve.map(this.eventBufferer.wrapEvent(this.focus.onChange),e=>this.toListEvent(e),this.disposables)}get onDidChangeSelection(){return ve.map(this.eventBufferer.wrapEvent(this.selection.onChange),e=>this.toListEvent(e),this.disposables)}get domId(){return this.view.domId}get onDidScroll(){return this.view.onDidScroll}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onMouseOver(){return this.view.onMouseOver}get onMouseOut(){return this.view.onMouseOut}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){let e=!1;const t=ve.chain(this.disposables.add(new Qi(this.view.domNode,"keydown")).event,o=>o.map(l=>new Jn(l)).filter(l=>e=l.keyCode===58||l.shiftKey&&l.keyCode===68).map(l=>yi.stop(l,!0)).filter(()=>!1)),i=ve.chain(this.disposables.add(new Qi(this.view.domNode,"keyup")).event,o=>o.forEach(()=>e=!1).map(l=>new Jn(l)).filter(l=>l.keyCode===58||l.shiftKey&&l.keyCode===68).map(l=>yi.stop(l,!0)).map(({browserEvent:l})=>{const r=this.getFocus(),a=r.length?r[0]:void 0,d=typeof a<"u"?this.view.element(a):void 0,c=typeof a<"u"?this.view.domElement(a):this.view.domNode;return{index:a,element:d,anchor:c,browserEvent:l}})),n=ve.chain(this.view.onContextMenu,o=>o.filter(l=>!e).map(({element:l,index:r,browserEvent:a})=>({element:l,index:r,anchor:new Jh(Wt(this.view.domNode),a),browserEvent:a})));return ve.any(t,i,n)}get onKeyDown(){return this.disposables.add(new Qi(this.view.domNode,"keydown")).event}get onDidFocus(){return ve.signal(this.disposables.add(new Qi(this.view.domNode,"focus",!0)).event)}get onDidBlur(){return ve.signal(this.disposables.add(new Qi(this.view.domNode,"blur",!0)).event)}constructor(e,t,i,n,o=g3e){var d,c,h;this.user=e,this._options=o,this.focus=new Zv("focused"),this.anchor=new Zv("anchor"),this.eventBufferer=new $T,this._ariaLabel="",this.disposables=new Ze,this._onDidDispose=new re,this.onDidDispose=this._onDidDispose.event;const l=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?(d=this._options.accessibilityProvider)==null?void 0:d.getWidgetRole():"list";this.selection=new r3e(l!=="listbox");const r=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=o.accessibilityProvider,this.accessibilityProvider&&(r.push(new F3e(this.accessibilityProvider)),(h=(c=this.accessibilityProvider).onDidChangeActiveDescendant)==null||h.call(c,this.onDidChangeActiveDescendant,this,this.disposables)),n=n.map(u=>new f3e(u.templateId,[...r,u]));const a={...o,dnd:o.dnd&&new Z3e(this,o.dnd)};if(this.view=this.createListView(t,i,n,a),this.view.domNode.setAttribute("role",l),o.styleController)this.styleController=o.styleController(this.view.domId);else{const u=cc(this.view.domNode);this.styleController=new Mbe(u,this.view.domId)}if(this.spliceable=new K9e([new W3(this.focus,this.view,o.identityProvider),new W3(this.selection,this.view,o.identityProvider),new W3(this.anchor,this.view,o.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.disposables.add(new u3e(this,this.view)),(typeof o.keyboardSupport!="boolean"||o.keyboardSupport)&&(this.keyboardController=new Qbe(this,this.view,o),this.disposables.add(this.keyboardController)),o.keyboardNavigationLabelProvider){const u=o.keyboardNavigationDelegate||c3e;this.typeNavigationController=new h3e(this,this.view,o.keyboardNavigationLabelProvider,o.keyboardNavigationEventFilter??(()=>!0),u),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(o),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),this._options.multipleSelectionSupport!==!1&&this.view.domNode.setAttribute("aria-multiselectable","true")}createListView(e,t,i,n){return new eu(e,t,i,n)}createMouseController(e){return new wbe(this)}updateOptions(e={}){var t,i;this._options={...this._options,...e},(t=this.typeNavigationController)==null||t.updateOptions(this._options),this._options.multipleSelectionController!==void 0&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute("aria-multiselectable","true"):this.view.domNode.removeAttribute("aria-multiselectable")),this.mouseController.updateOptions(e),(i=this.keyboardController)==null||i.updateOptions(e),this.view.updateOptions(e)}get options(){return this._options}splice(e,t,i=[]){if(e<0||e>this.view.length)throw new kf(this.user,`Invalid start index: ${e}`);if(t<0)throw new kf(this.user,`Invalid delete count: ${t}`);t===0&&i.length===0||this.eventBufferer.bufferEvents(()=>this.spliceable.splice(e,t,i))}rerender(){this.view.rerender()}element(e){return this.view.element(e)}indexOf(e){return this.view.indexOf(e)}indexAt(e){return this.view.indexAt(e)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get onDidChangeContentHeight(){return this.view.onDidChangeContentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(e){this.view.setScrollTop(e)}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get firstVisibleIndex(){return this.view.firstVisibleIndex}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){this._ariaLabel=e,this.view.domNode.setAttribute("aria-label",e)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(e,t){this.view.layout(e,t)}setSelection(e,t){for(const i of e)if(i<0||i>=this.length)throw new kf(this.user,`Invalid index ${i}`);this.selection.set(e,t)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map(e=>this.view.element(e))}setAnchor(e){if(typeof e>"u"){this.anchor.set([]);return}if(e<0||e>=this.length)throw new kf(this.user,`Invalid index ${e}`);this.anchor.set([e])}getAnchor(){return u$(this.anchor.get(),void 0)}getAnchorElement(){const e=this.getAnchor();return typeof e>"u"?void 0:this.element(e)}setFocus(e,t){for(const i of e)if(i<0||i>=this.length)throw new kf(this.user,`Invalid index ${i}`);this.focus.set(e,t)}focusNext(e=1,t=!1,i,n){if(this.length===0)return;const o=this.focus.get(),l=this.findNextIndex(o.length>0?o[0]+e:0,t,n);l>-1&&this.setFocus([l],i)}focusPrevious(e=1,t=!1,i,n){if(this.length===0)return;const o=this.focus.get(),l=this.findPreviousIndex(o.length>0?o[0]-e:0,t,n);l>-1&&this.setFocus([l],i)}async focusNextPage(e,t){let i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);i=i===0?0:i-1;const n=this.getFocus()[0];if(n!==i&&(n===void 0||i>n)){const o=this.findPreviousIndex(i,!1,t);o>-1&&n!==o?this.setFocus([o],e):this.setFocus([i],e)}else{const o=this.view.getScrollTop();let l=o+this.view.renderHeight;i>n&&(l-=this.view.elementHeight(i)),this.view.setScrollTop(l),this.view.getScrollTop()!==o&&(this.setFocus([]),await A0(0),await this.focusNextPage(e,t))}}async focusPreviousPage(e,t,i=()=>0){let n;const o=i(),l=this.view.getScrollTop()+o;l===0?n=this.view.indexAt(l):n=this.view.indexAfter(l-1);const r=this.getFocus()[0];if(r!==n&&(r===void 0||r>=n)){const a=this.findNextIndex(n,!1,t);a>-1&&r!==a?this.setFocus([a],e):this.setFocus([n],e)}else{const a=l;this.view.setScrollTop(l-this.view.renderHeight-o),this.view.getScrollTop()+i()!==a&&(this.setFocus([]),await A0(0),await this.focusPreviousPage(e,t,i))}}focusLast(e,t){if(this.length===0)return;const i=this.findPreviousIndex(this.length-1,!1,t);i>-1&&this.setFocus([i],e)}focusFirst(e,t){this.focusNth(0,e,t)}focusNth(e,t,i){if(this.length===0)return;const n=this.findNextIndex(e,!1,i);n>-1&&this.setFocus([n],t)}findNextIndex(e,t=!1,i){for(let n=0;n<this.length;n++){if(e>=this.length&&!t)return-1;if(e=e%this.length,!i||i(this.element(e)))return e;e++}return-1}findPreviousIndex(e,t=!1,i){for(let n=0;n<this.length;n++){if(e<0&&!t)return-1;if(e=(this.length+e%this.length)%this.length,!i||i(this.element(e)))return e;e--}return-1}getFocus(){return this.focus.get()}getFocusedElements(){return this.getFocus().map(e=>this.view.element(e))}reveal(e,t,i=0){if(e<0||e>=this.length)throw new kf(this.user,`Invalid index ${e}`);const n=this.view.getScrollTop(),o=this.view.elementTop(e),l=this.view.elementHeight(e);if(XU(t)){const r=l-this.view.renderHeight+i;this.view.setScrollTop(r*zr(t,0,1)+o-i)}else{const r=o+l,a=n+this.view.renderHeight;o<n+i&&r>=a||(o<n+i||r>=a&&l>=this.view.renderHeight?this.view.setScrollTop(o-i):r>=a&&this.view.setScrollTop(r-this.view.renderHeight))}}getRelativeTop(e,t=0){if(e<0||e>=this.length)throw new kf(this.user,`Invalid index ${e}`);const i=this.view.getScrollTop(),n=this.view.elementTop(e),o=this.view.elementHeight(e);if(n<i+t||n+o>i+this.view.renderHeight)return null;const l=o-this.view.renderHeight+t;return Math.abs((i+t-n)/l)}getHTMLElement(){return this.view.domNode}getScrollableElement(){return this.view.scrollableElementDomNode}getElementID(e){return this.view.getElementDomId(e)}getElementTop(e){return this.view.elementTop(e)}style(e){this.styleController.style(e)}toListEvent({indexes:e,browserEvent:t}){return{indexes:e,elements:e.map(i=>this.view.element(i)),browserEvent:t}}_onFocusChange(){const e=this.focus.get();this.view.domNode.classList.toggle("element-focused",e.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var t;const e=this.focus.get();if(e.length>0){let i;(t=this.accessibilityProvider)!=null&&t.getActiveDescendantId&&(i=this.accessibilityProvider.getActiveDescendantId(this.view.element(e[0]))),this.view.domNode.setAttribute("aria-activedescendant",i||this.view.getElementDomId(e[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const e=this.selection.get();this.view.domNode.classList.toggle("selection-none",e.length===0),this.view.domNode.classList.toggle("selection-single",e.length===1),this.view.domNode.classList.toggle("selection-multiple",e.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}ff([so],Uc.prototype,"onDidChangeFocus",null);ff([so],Uc.prototype,"onDidChangeSelection",null);ff([so],Uc.prototype,"onContextMenu",null);ff([so],Uc.prototype,"onKeyDown",null);ff([so],Uc.prototype,"onDidFocus",null);ff([so],Uc.prototype,"onDidBlur",null);const WZ=Ge,Tbe="selectOption.entry.template";class A3e{get templateId(){return Tbe}renderTemplate(e){const t=Object.create(null);return t.root=e,t.text=ye(e,WZ(".option-text")),t.detail=ye(e,WZ(".option-detail")),t.decoratorRight=ye(e,WZ(".option-decorator-right")),t}renderElement(e,t,i){const n=i,o=e.text,l=e.detail,r=e.decoratorRight,a=e.isDisabled;n.text.textContent=o,n.detail.textContent=l||"",n.decoratorRight.innerText=r||"",a?n.root.classList.add("option-disabled"):n.root.classList.remove("option-disabled")}disposeTemplate(e){}}const vm=class vm extends de{constructor(e,t,i,n,o){super(),this.options=[],this._currentSelection=0,this._hasDetails=!1,this._skipLayout=!1,this._sticky=!1,this._isVisible=!1,this.styles=n,this.selectBoxOptions=o||Object.create(null),typeof this.selectBoxOptions.minBottomMargin!="number"?this.selectBoxOptions.minBottomMargin=vm.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN:this.selectBoxOptions.minBottomMargin<0&&(this.selectBoxOptions.minBottomMargin=0),this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box monaco-select-box-dropdown-padding",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=new re,this._register(this._onDidSelect),this.registerListeners(),this.constructSelectDropDown(i),this.selected=t||0,e&&this.setOptions(e,t),this.initStyleSheet()}setTitle(e){!this._hover&&e?this._hover=this._register(rm().setupManagedHover(ca("mouse"),this.selectElement,e)):this._hover&&this._hover.update(e)}getHeight(){return 22}getTemplateId(){return Tbe}constructSelectDropDown(e){this.contextViewProvider=e,this.selectDropDownContainer=Ge(".monaco-select-box-dropdown-container"),this.selectDropDownContainer.classList.add("monaco-select-box-dropdown-padding"),this.selectionDetailsPane=ye(this.selectDropDownContainer,WZ(".select-box-details-pane"));const t=ye(this.selectDropDownContainer,WZ(".select-box-dropdown-container-width-control")),i=ye(t,WZ(".width-control-div"));this.widthControlElement=document.createElement("span"),this.widthControlElement.className="option-text-width-control",ye(i,this.widthControlElement),this._dropDownPosition=0,this.styleElement=cc(this.selectDropDownContainer),this.selectDropDownContainer.setAttribute("draggable","true"),this._register(ge(this.selectDropDownContainer,De.DRAG_START,n=>{yi.stop(n,!0)}))}registerListeners(){this._register(Ms(this.selectElement,"change",t=>{this.selected=t.target.selectedIndex,this._onDidSelect.fire({index:t.target.selectedIndex,selected:t.target.value}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)})),this._register(ge(this.selectElement,De.CLICK,t=>{yi.stop(t),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(ge(this.selectElement,De.MOUSE_DOWN,t=>{yi.stop(t)}));let e;this._register(ge(this.selectElement,"touchstart",t=>{e=this._isVisible})),this._register(ge(this.selectElement,"touchend",t=>{yi.stop(t),e?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(ge(this.selectElement,De.KEY_DOWN,t=>{const i=new Jn(t);let n=!1;Fi?(i.keyCode===18||i.keyCode===16||i.keyCode===10||i.keyCode===3)&&(n=!0):(i.keyCode===18&&i.altKey||i.keyCode===16&&i.altKey||i.keyCode===10||i.keyCode===3)&&(n=!0),n&&(this.showSelectDropDown(),yi.stop(t,!0))}))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){Fs(this.options,e)||(this.options=e,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach((i,n)=>{this.selectElement.add(this.createOption(i.text,n,i.isDisabled)),typeof i.description=="string"&&(this._hasDetails=!0)})),t!==void 0&&(this.select(t),this._currentSelection=this.selected)}setOptionsList(){var e;(e=this.selectList)==null||e.splice(0,this.selectList.length,this.options)}select(e){e>=0&&e<this.options.length?this.selected=e:e>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){this.container=e,e.classList.add("select-container"),e.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const e=[];this.styles.listFocusBackground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`),this.styles.listFocusForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`),this.styles.decoratorRightForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(e.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `)):this.styles.selectListBorder&&(e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `)),this.styles.listHoverForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`),this.styles.listHoverBackground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`),this.styles.listFocusOutline&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`),this.styles.listHoverOutline&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }"),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }"),this.styleElement.textContent=e.join(`
- `)}styleSelectElement(){const e=this.styles.selectBackground??"",t=this.styles.selectForeground??"",i=this.styles.selectBorder??"";this.selectElement.style.backgroundColor=e,this.selectElement.style.color=t,this.selectElement.style.borderColor=i}styleList(){const e=this.styles.selectBackground??"",t=d0(this.styles.selectListBackground,e);this.selectDropDownListContainer.style.backgroundColor=t,this.selectionDetailsPane.style.backgroundColor=t;const i=this.styles.focusBorder??"";this.selectDropDownContainer.style.outlineColor=i,this.selectDropDownContainer.style.outlineOffset="-1px",this.selectList.style(this.styles)}createOption(e,t,i){const n=document.createElement("option");return n.value=e,n.text=e,n.disabled=!!i,n}showSelectDropDown(){this.selectionDetailsPane.innerText="",!(!this.contextViewProvider||this._isVisible)&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e,!0),layout:()=>{this.layoutSelectDropDown()},onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._isVisible=!0,this.hideSelectDropDown(!1),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e),layout:()=>this.layoutSelectDropDown(),onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._currentSelection=this.selected,this._isVisible=!0,this.selectElement.setAttribute("aria-expanded","true"))}hideSelectDropDown(e){!this.contextViewProvider||!this._isVisible||(this._isVisible=!1,this.selectElement.setAttribute("aria-expanded","false"),e&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(e,t){return e.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(t),{dispose:()=>{this.selectDropDownContainer.remove()}}}measureMaxDetailsHeight(){let e=0;return this.options.forEach((t,i)=>{this.updateDetail(i),this.selectionDetailsPane.offsetHeight>e&&(e=this.selectionDetailsPane.offsetHeight)}),e}layoutSelectDropDown(e){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add("visible");const t=Wt(this.selectElement),i=_s(this.selectElement),n=Wt(this.selectElement).getComputedStyle(this.selectElement),o=parseFloat(n.getPropertyValue("--dropdown-padding-top"))+parseFloat(n.getPropertyValue("--dropdown-padding-bottom")),l=t.innerHeight-i.top-i.height-(this.selectBoxOptions.minBottomMargin||0),r=i.top-vm.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,a=this.selectElement.offsetWidth,d=this.setWidthControlElement(this.widthControlElement),c=Math.max(d,Math.round(a)).toString()+"px";this.selectDropDownContainer.style.width=c,this.selectList.getHTMLElement().style.height="",this.selectList.layout();let h=this.selectList.contentHeight;this._hasDetails&&this._cachedMaxDetailsHeight===void 0&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const u=this._hasDetails?this._cachedMaxDetailsHeight:0,m=h+o+u,p=Math.floor((l-o-u)/this.getHeight()),g=Math.floor((r-o-u)/this.getHeight());if(e)return i.top+i.height>t.innerHeight-22||i.top<vm.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||p<1&&g<1?!1:(p<vm.DEFAULT_MINIMUM_VISIBLE_OPTIONS&&g>p&&this.options.length>p?(this._dropDownPosition=1,this.selectDropDownListContainer.remove(),this.selectionDetailsPane.remove(),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectionDetailsPane.classList.remove("border-top"),this.selectionDetailsPane.classList.add("border-bottom")):(this._dropDownPosition=0,this.selectDropDownListContainer.remove(),this.selectionDetailsPane.remove(),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectionDetailsPane.classList.remove("border-bottom"),this.selectionDetailsPane.classList.add("border-top")),!0);if(i.top+i.height>t.innerHeight-22||i.top<vm.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||this._dropDownPosition===0&&p<1||this._dropDownPosition===1&&g<1)return this.hideSelectDropDown(!0),!1;if(this._dropDownPosition===0){if(this._isVisible&&p+g<1)return this.hideSelectDropDown(!0),!1;m>l&&(h=p*this.getHeight())}else m>r&&(h=g*this.getHeight());return this.selectList.layout(h),this.selectList.domFocus(),this.selectList.length>0&&(this.selectList.setFocus([this.selected||0]),this.selectList.reveal(this.selectList.getFocus()[0]||0)),this._hasDetails?(this.selectList.getHTMLElement().style.height=h+o+"px",this.selectDropDownContainer.style.height=""):this.selectDropDownContainer.style.height=h+o+"px",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=c,this.selectDropDownListContainer.setAttribute("tabindex","0"),this.selectElement.classList.add("synthetic-focus"),this.selectDropDownContainer.classList.add("synthetic-focus"),!0}else return!1}setWidthControlElement(e){let t=0;if(e){let i=0,n=0;this.options.forEach((o,l)=>{const r=o.detail?o.detail.length:0,a=o.decoratorRight?o.decoratorRight.length:0,d=o.text.length+r+a;d>n&&(i=l,n=d)}),e.textContent=this.options[i].text+(this.options[i].decoratorRight?this.options[i].decoratorRight+" ":""),t=ld(e)}return t}createSelectList(e){if(this.selectList)return;this.selectDropDownListContainer=ye(e,WZ(".select-box-dropdown-list-container")),this.listRenderer=new A3e,this.selectList=this._register(new Uc("SelectBoxCustom",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:n=>{let o=n.text;return n.detail&&(o+=`. ${n.detail}`),n.decoratorRight&&(o+=`. ${n.decoratorRight}`),n.description&&(o+=`. ${n.description}`),o},getWidgetAriaLabel:()=>U({key:"selectBox",comment:["Behave like native select dropdown element."]},"Select Box"),getRole:()=>Fi?"":"option",getWidgetRole:()=>"listbox"}})),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const t=this._register(new Qi(this.selectDropDownListContainer,"keydown")),i=ve.chain(t.event,n=>n.filter(()=>this.selectList.length>0).map(o=>new Jn(o)));this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===3))(this.onEnter,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===2))(this.onEnter,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===9))(this.onEscape,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===16))(this.onUpArrow,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===18))(this.onDownArrow,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===12))(this.onPageDown,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===11))(this.onPageUp,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===14))(this.onHome,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode===13))(this.onEnd,this)),this._register(ve.chain(i,n=>n.filter(o=>o.keyCode>=21&&o.keyCode<=56||o.keyCode>=85&&o.keyCode<=113))(this.onCharacter,this)),this._register(ge(this.selectList.getHTMLElement(),De.POINTER_UP,n=>this.onPointerUp(n))),this._register(this.selectList.onMouseOver(n=>typeof n.index<"u"&&this.selectList.setFocus([n.index]))),this._register(this.selectList.onDidChangeFocus(n=>this.onListFocus(n))),this._register(ge(this.selectDropDownContainer,De.FOCUS_OUT,n=>{!this._isVisible||Jo(n.relatedTarget,this.selectDropDownContainer)||this.onListBlur()})),this.selectList.getHTMLElement().setAttribute("aria-label",this.selectBoxOptions.ariaLabel||""),this.selectList.getHTMLElement().setAttribute("aria-expanded","true"),this.styleList()}onPointerUp(e){if(!this.selectList.length)return;yi.stop(e);const t=e.target;if(!t||t.classList.contains("slider"))return;const i=t.closest(".monaco-list-row");if(!i)return;const n=Number(i.getAttribute("data-index")),o=i.classList.contains("option-disabled");n>=0&&n<this.options.length&&!o&&(this.selected=n,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)),this.hideSelectDropDown(!0))}onListBlur(){this._sticky||(this.selected!==this._currentSelection&&this.select(this._currentSelection),this.hideSelectDropDown(!1))}renderDescriptionMarkdown(e,t){const i=o=>{for(let l=0;l<o.childNodes.length;l++){const r=o.childNodes.item(l);(r.tagName&&r.tagName.toLowerCase())==="img"?r.remove():i(r)}},n=TY({value:e,supportThemeIcons:!0},{actionHandler:t});return n.element.classList.add("select-box-description-markdown"),i(n.element),n.element}onListFocus(e){!this._isVisible||!this._hasDetails||this.updateDetail(e.indexes[0])}updateDetail(e){this.selectionDetailsPane.innerText="";const t=this.options[e],i=(t==null?void 0:t.description)??"",n=(t==null?void 0:t.descriptionIsMarkdown)??!1;if(i){if(n){const o=t.descriptionMarkdownActionHandler;this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(i,o))}else this.selectionDetailsPane.innerText=i;this.selectionDetailsPane.style.display="block"}else this.selectionDetailsPane.style.display="none";this._skipLayout=!0,this.contextViewProvider.layout(),this._skipLayout=!1}onEscape(e){yi.stop(e),this.select(this._currentSelection),this.hideSelectDropDown(!0)}onEnter(e){yi.stop(e),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&this.setTitle(this.options[this.selected].text)),this.hideSelectDropDown(!0)}onDownArrow(e){if(this.selected<this.options.length-1){yi.stop(e,!0);const t=this.options[this.selected+1].isDisabled;if(t&&this.options.length>this.selected+2)this.selected+=2;else{if(t)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(e){this.selected>0&&(yi.stop(e,!0),this.options[this.selected-1].isDisabled&&this.selected>1?this.selected-=2:this.selected--,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]))}onPageUp(e){yi.stop(e),this.selectList.focusPreviousPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected<this.options.length-1&&(this.selected++,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onPageDown(e){yi.stop(e),this.selectList.focusNextPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected>0&&(this.selected--,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onHome(e){yi.stop(e),!(this.options.length<2)&&(this.selected=0,this.options[this.selected].isDisabled&&this.selected>1&&this.selected++,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onEnd(e){yi.stop(e),!(this.options.length<2)&&(this.selected=this.options.length-1,this.options[this.selected].isDisabled&&this.selected>1&&this.selected--,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onCharacter(e){const t=Eg.toString(e.keyCode);let i=-1;for(let n=0;n<this.options.length-1;n++)if(i=(n+this.selected+1)%this.options.length,this.options[i].text.charAt(0).toUpperCase()===t&&!this.options[i].isDisabled){this.select(i),this.selectList.setFocus([i]),this.selectList.reveal(this.selectList.getFocus()[0]),yi.stop(e);break}}dispose(){this.hideSelectDropDown(!1),super.dispose()}};vm.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN=32,vm.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN=2,vm.DEFAULT_MINIMUM_VISIBLE_OPTIONS=3;let OP=vm;class N3e extends de{constructor(e,t,i,n){super(),this.selected=0,this.selectBoxOptions=n||Object.create(null),this.options=[],this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=this._register(new re),this.styles=i,this.registerListeners(),this.setOptions(e,t)}registerListeners(){this._register(nr.addTarget(this.selectElement)),[_n.Tap].forEach(e=>{this._register(ge(this.selectElement,e,t=>{this.selectElement.focus()}))}),this._register(Ms(this.selectElement,"click",e=>{yi.stop(e,!0)})),this._register(Ms(this.selectElement,"change",e=>{this.selectElement.title=e.target.value,this._onDidSelect.fire({index:e.target.selectedIndex,selected:e.target.value})})),this._register(Ms(this.selectElement,"keydown",e=>{let t=!1;Fi?(e.keyCode===18||e.keyCode===16||e.keyCode===10)&&(t=!0):(e.keyCode===18&&e.altKey||e.keyCode===10||e.keyCode===3)&&(t=!0),t&&e.stopPropagation()}))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){(!this.options||!Fs(this.options,e))&&(this.options=e,this.selectElement.options.length=0,this.options.forEach((i,n)=>{this.selectElement.add(this.createOption(i.text,n,i.isDisabled))})),t!==void 0&&this.select(t)}select(e){this.options.length===0?this.selected=0:e>=0&&e<this.options.length?this.selected=e:e>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selected<this.options.length&&typeof this.options[this.selected].text=="string"?this.selectElement.title=this.options[this.selected].text:this.selectElement.title=""}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){e.classList.add("select-container"),e.appendChild(this.selectElement),this.setOptions(this.options,this.selected),this.applyStyles()}applyStyles(){this.selectElement&&(this.selectElement.style.backgroundColor=this.styles.selectBackground??"",this.selectElement.style.color=this.styles.selectForeground??"",this.selectElement.style.borderColor=this.styles.selectBorder??"")}createOption(e,t,i){const n=document.createElement("option");return n.value=e,n.text=e,n.disabled=!!i,n}}class R3e extends bc{constructor(e,t,i,n,o){super(),Fi&&!(o!=null&&o.useCustomDrawn)?this.selectBoxDelegate=new N3e(e,t,n,o):this.selectBoxDelegate=new OP(e,t,i,n,o),this._register(this.selectBoxDelegate)}get onDidSelect(){return this.selectBoxDelegate.onDidSelect}setOptions(e,t){this.selectBoxDelegate.setOptions(e,t)}select(e){this.selectBoxDelegate.select(e)}focus(){this.selectBoxDelegate.focus()}blur(){this.selectBoxDelegate.blur()}setFocusable(e){this.selectBoxDelegate.setFocusable(e)}render(e){this.selectBoxDelegate.render(e)}}class ku extends de{get action(){return this._action}constructor(e,t,i={}){super(),this.options=i,this._context=e||this,this._action=t,t instanceof bd&&this._register(t.onDidChange(n=>{this.element&&this.handleActionChangeEvent(n)}))}handleActionChangeEvent(e){e.enabled!==void 0&&this.updateEnabled(),e.checked!==void 0&&this.updateChecked(),e.class!==void 0&&this.updateClass(),e.label!==void 0&&(this.updateLabel(),this.updateTooltip()),e.tooltip!==void 0&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new RA)),this._actionRunner}set actionRunner(e){this._actionRunner=e}isEnabled(){return this._action.enabled}setActionContext(e){this._context=e}render(e){const t=this.element=e;this._register(nr.addTarget(e));const i=this.options&&this.options.draggable;i&&(e.draggable=!0,jc&&this._register(ge(e,De.DRAG_START,n=>{var o;return(o=n.dataTransfer)==null?void 0:o.setData(yM.TEXT,this._action.label)}))),this._register(ge(t,_n.Tap,n=>this.onClick(n,!0))),this._register(ge(t,De.MOUSE_DOWN,n=>{i||yi.stop(n,!0),this._action.enabled&&n.button===0&&t.classList.add("active")})),Fi&&this._register(ge(t,De.CONTEXT_MENU,n=>{n.button===0&&n.ctrlKey===!0&&this.onClick(n)})),this._register(ge(t,De.CLICK,n=>{yi.stop(n,!0),this.options&&this.options.isMenu||this.onClick(n)})),this._register(ge(t,De.DBLCLICK,n=>{yi.stop(n,!0)})),[De.MOUSE_UP,De.MOUSE_OUT].forEach(n=>{this._register(ge(t,n,o=>{yi.stop(o),t.classList.remove("active")}))})}onClick(e,t=!1){var n;yi.stop(e,!0);const i=qd(this._context)?(n=this.options)!=null&&n.useEventAsContext?e:{preserveFocus:t}:this._context;this.actionRunner.run(this._action,i)}focus(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add("focused"))}blur(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove("focused"))}setFocusable(e){this.element&&(this.element.tabIndex=e?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getClass(){return this.action.class}getTooltip(){return this.action.tooltip}updateTooltip(){var t;if(!this.element)return;const e=this.getTooltip()??"";if(this.updateAriaLabel(),(t=this.options.hoverDelegate)!=null&&t.showNativeHover)this.element.title=e;else if(!this.customHover&&e!==""){const i=this.options.hoverDelegate??ca("element");this.customHover=this._store.add(rm().setupManagedHover(i,this.element,e))}else this.customHover&&this.customHover.update(e)}updateAriaLabel(){if(this.element){const e=this.getTooltip()??"";this.element.setAttribute("aria-label",e)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}class pV extends ku{constructor(e,t,i){super(e,t,i),this.options=i,this.options.icon=i.icon!==void 0?i.icon:!1,this.options.label=i.label!==void 0?i.label:!0,this.cssClass=""}render(e){super.render(e),Yi(this.element);const t=document.createElement("a");if(t.classList.add("action-label"),t.setAttribute("role",this.getDefaultAriaRole()),this.label=t,this.element.appendChild(t),this.options.label&&this.options.keybinding){const i=document.createElement("span");i.classList.add("keybinding"),i.textContent=this.options.keybinding,this.element.appendChild(i)}this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===zo.ID?"presentation":this.options.isMenu?"menuitem":this.options.isTabList?"tab":"button"}focus(){this.label&&(this.label.tabIndex=0,this.label.focus())}blur(){this.label&&(this.label.tabIndex=-1)}setFocusable(e){this.label&&(this.label.tabIndex=e?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(e=this.action.label,this.options.keybinding&&(e=U({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e??void 0}updateClass(){var e;this.cssClass&&this.label&&this.label.classList.remove(...this.cssClass.split(" ")),this.options.icon?(this.cssClass=this.getClass(),this.label&&(this.label.classList.add("codicon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" "))),this.updateEnabled()):(e=this.label)==null||e.classList.remove("codicon")}updateEnabled(){var e,t;this.action.enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),(e=this.element)==null||e.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),(t=this.element)==null||t.classList.add("disabled"))}updateAriaLabel(){if(this.label){const e=this.getTooltip()??"";this.label.setAttribute("aria-label",e)}}updateChecked(){this.label&&(this.action.checked!==void 0?(this.label.classList.toggle("checked",this.action.checked),this.options.isTabList?this.label.setAttribute("aria-selected",this.action.checked?"true":"false"):(this.label.setAttribute("aria-checked",this.action.checked?"true":"false"),this.label.setAttribute("role","checkbox"))):(this.label.classList.remove("checked"),this.label.removeAttribute(this.options.isTabList?"aria-selected":"aria-checked"),this.label.setAttribute("role",this.getDefaultAriaRole())))}}class S3e extends ku{constructor(e,t,i,n,o,l,r){super(e,t),this.selectBox=new R3e(i,n,o,l,r),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(e){this.selectBox.select(e)}registerListeners(){this._register(this.selectBox.onDidSelect(e=>this.runAction(e.selected,e.index)))}runAction(e,t){this.actionRunner.run(this._action,this.getActionContext(e,t))}getActionContext(e,t){return e}setFocusable(e){this.selectBox.setFocusable(e)}focus(){var e;(e=this.selectBox)==null||e.focus()}blur(){var e;(e=this.selectBox)==null||e.blur()}render(e){this.selectBox.render(e)}}class W3e extends RA{constructor(e,t){super(),this._onDidChangeVisibility=this._register(new re),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=ye(e,Ge(".monaco-dropdown")),this._label=ye(this._element,Ge(".dropdown-label"));let i=t.labelRenderer;i||(i=o=>(o.textContent=t.label||"",null));for(const o of[De.CLICK,De.MOUSE_DOWN,_n.Tap])this._register(ge(this.element,o,l=>yi.stop(l,!0)));for(const o of[De.MOUSE_DOWN,_n.Tap])this._register(ge(this._label,o,l=>{G$(l)&&(l.detail>1||l.button!==0)||(this.visible?this.hide():this.show())}));this._register(ge(this._label,De.KEY_UP,o=>{const l=new Jn(o);(l.equals(3)||l.equals(10))&&(yi.stop(o,!0),this.visible?this.hide():this.show())}));const n=i(this._label);n&&this._register(n),this._register(nr.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class V3e extends W3e{constructor(e,t){super(e,t),this._options=t,this._actions=[],this.actions=t.actions||[]}set menuOptions(e){this._menuOptions=e}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(e){this._actions=e}show(){super.show(),this.element.classList.add("active"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(e,t)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(e,t):void 0,getKeyBinding:e=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(e):void 0,getMenuClassName:()=>this._options.menuClassName||"",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove("active")}}class Av extends ku{constructor(e,t,i,n=Object.create(null)){super(null,e,n),this.actionItem=null,this._onDidChangeVisibility=this._register(new re),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=t,this.contextMenuProvider=i,this.options=n,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(e){this.actionItem=e;const t=o=>{this.element=ye(o,Ge("a.action-label"));let l=[];return typeof this.options.classNames=="string"?l=this.options.classNames.split(/\s+/g).filter(r=>!!r):this.options.classNames&&(l=this.options.classNames),l.find(r=>r==="icon")||l.push("codicon"),this.element.classList.add(...l),this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this._action.label&&this._register(rm().setupManagedHover(this.options.hoverDelegate??ca("mouse"),this.element,this._action.label)),this.element.ariaLabel=this._action.label||"",null},i=Array.isArray(this.menuActionsOrProvider),n={contextMenuProvider:this.contextMenuProvider,labelRenderer:t,menuAsChild:this.options.menuAsChild,actions:i?this.menuActionsOrProvider:void 0,actionProvider:i?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new V3e(e,n)),this._register(this.dropdownMenu.onDidChangeVisibility(o=>{var l;(l=this.element)==null||l.setAttribute("aria-expanded",`${o}`),this._onDidChangeVisibility.fire(o)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const o=this;this.dropdownMenu.menuOptions={...this.dropdownMenu.menuOptions,get anchorAlignment(){return o.options.anchorAlignmentProvider()}}}this.updateTooltip(),this.updateEnabled()}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:this.action.label&&(e=this.action.label),e??void 0}setActionContext(e){super.setActionContext(e),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=e:this.dropdownMenu.menuOptions={context:e})}show(){var e;(e=this.dropdownMenu)==null||e.show()}updateEnabled(){var t,i;const e=!this.action.enabled;(t=this.actionItem)==null||t.classList.toggle("disabled",e),(i=this.element)==null||i.classList.toggle("disabled",e)}}function Q3e(s){return s&&typeof s=="object"&&typeof s.original=="string"&&typeof s.value=="string"}function y3e(s){return s?s.condition!==void 0:!1}var AW;(function(s){s[s.STORAGE_DOES_NOT_EXIST=0]="STORAGE_DOES_NOT_EXIST",s[s.STORAGE_IN_MEMORY=1]="STORAGE_IN_MEMORY"})(AW||(AW={}));var pS;(function(s){s[s.None=0]="None",s[s.Initialized=1]="Initialized",s[s.Closed=2]="Closed"})(pS||(pS={}));const UX=class UX extends de{constructor(e,t=Object.create(null)){super(),this.database=e,this.options=t,this._onDidChangeStorage=this._register(new fA),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=pS.None,this.cache=new Map,this.flushDelayer=this._register(new rge(UX.DEFAULT_FLUSH_DELAY)),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal(e=>this.onDidChangeItemsExternal(e)))}onDidChangeItemsExternal(e){var t,i;this._onDidChangeStorage.pause();try{(t=e.changed)==null||t.forEach((n,o)=>this.acceptExternal(o,n)),(i=e.deleted)==null||i.forEach(n=>this.acceptExternal(n,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(e,t){if(this.state===pS.Closed)return;let i=!1;qd(t)?i=this.cache.delete(e):this.cache.get(e)!==t&&(this.cache.set(e,t),i=!0),i&&this._onDidChangeStorage.fire({key:e,external:!0})}get(e,t){const i=this.cache.get(e);return qd(i)?t:i}getBoolean(e,t){const i=this.get(e);return qd(i)?t:i==="true"}getNumber(e,t){const i=this.get(e);return qd(i)?t:parseInt(i,10)}async set(e,t,i=!1){if(this.state===pS.Closed)return;if(qd(t))return this.delete(e,i);const n=il(t)||Array.isArray(t)?sze(t):String(t);if(this.cache.get(e)!==n)return this.cache.set(e,n),this.pendingInserts.set(e,n),this.pendingDeletes.delete(e),this._onDidChangeStorage.fire({key:e,external:i}),this.doFlush()}async delete(e,t=!1){if(!(this.state===pS.Closed||!this.cache.delete(e)))return this.pendingDeletes.has(e)||this.pendingDeletes.add(e),this.pendingInserts.delete(e),this._onDidChangeStorage.fire({key:e,external:t}),this.doFlush()}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}async flushPending(){if(!this.hasPending)return;const e={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(e).finally(()=>{var t;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(t=this.whenFlushedCallbacks.pop())==null||t()})}async doFlush(e){return this.options.hint===AW.STORAGE_IN_MEMORY?this.flushPending():this.flushDelayer.trigger(()=>this.flushPending(),e)}};UX.DEFAULT_FLUSH_DELAY=100;let bC=UX;class V3{constructor(){this.onDidChangeItemsExternal=ve.None,this.items=new Map}async updateItems(e){var t,i;(t=e.insert)==null||t.forEach((n,o)=>this.items.set(o,n)),(i=e.delete)==null||i.forEach(n=>this.items.delete(n))}}const dD="__$__targetStorageMarker",su=Zi("storageService");var wM;(function(s){s[s.NONE=0]="NONE",s[s.SHUTDOWN=1]="SHUTDOWN"})(wM||(wM={}));function C3e(s){const e=s.get(dD);if(e)try{return JSON.parse(e)}catch{}return Object.create(null)}const fX=class fX extends de{constructor(e={flushInterval:fX.DEFAULT_FLUSH_INTERVAL}){super(),this.options=e,this._onDidChangeValue=this._register(new fA),this._onDidChangeTarget=this._register(new fA),this._onWillSaveState=this._register(new re),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(e,t,i){return ve.filter(this._onDidChangeValue.event,n=>n.scope===e&&(t===void 0||n.key===t),i)}emitDidChangeValue(e,t){const{key:i,external:n}=t;if(i===dD){switch(e){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:e})}else this._onDidChangeValue.fire({scope:e,key:i,target:this.getKeyTargets(e)[i],external:n})}get(e,t,i){var n;return(n=this.getStorage(t))==null?void 0:n.get(e,i)}getBoolean(e,t,i){var n;return(n=this.getStorage(t))==null?void 0:n.getBoolean(e,i)}getNumber(e,t,i){var n;return(n=this.getStorage(t))==null?void 0:n.getNumber(e,i)}store(e,t,i,n,o=!1){if(qd(t)){this.remove(e,i,o);return}this.withPausedEmitters(()=>{var l;this.updateKeyTarget(e,i,n),(l=this.getStorage(i))==null||l.set(e,t,o)})}remove(e,t,i=!1){this.withPausedEmitters(()=>{var n;this.updateKeyTarget(e,t,void 0),(n=this.getStorage(t))==null||n.delete(e,i)})}withPausedEmitters(e){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{e()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(e,t,i,n=!1){var l,r;const o=this.getKeyTargets(t);typeof i=="number"?o[e]!==i&&(o[e]=i,(l=this.getStorage(t))==null||l.set(dD,JSON.stringify(o),n)):typeof o[e]=="number"&&(delete o[e],(r=this.getStorage(t))==null||r.set(dD,JSON.stringify(o),n))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(e){switch(e){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(e){const t=this.getStorage(e);return t?C3e(t):Object.create(null)}};fX.DEFAULT_FLUSH_INTERVAL=60*1e3;let jP=fX;class w3e extends jP{constructor(){super(),this.applicationStorage=this._register(new bC(new V3,{hint:AW.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new bC(new V3,{hint:AW.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new bC(new V3,{hint:AW.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(e=>this.emitDidChangeValue(1,e))),this._register(this.profileStorage.onDidChangeStorage(e=>this.emitDidChangeValue(0,e))),this._register(this.applicationStorage.onDidChangeStorage(e=>this.emitDidChangeValue(-1,e)))}getStorage(e){switch(e){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}function M3e(s,e){const t={...e};for(const i in s){const n=s[i];t[i]=n!==void 0?$e(n):void 0}return t}const T3e={keybindingLabelBackground:$e(A5e),keybindingLabelForeground:$e(N5e),keybindingLabelBorder:$e(R5e),keybindingLabelBottomBorder:$e(S5e),keybindingLabelShadow:$e(zQ)},B3e={buttonForeground:$e(E0e),buttonSeparator:$e(r5e),buttonBackground:$e(Yy),buttonHoverBackground:$e(a5e),buttonSecondaryForeground:$e(c5e),buttonSecondaryBackground:$e(gP),buttonSecondaryHoverBackground:$e(h5e),buttonBorder:$e(d5e)},L3e={progressBarBackground:$e(AXe)},Nv={inputActiveOptionBorder:$e(SY),inputActiveOptionForeground:$e(WY),inputActiveOptionBackground:$e(aB)};$e(zy),$e(u5e),$e(m5e),$e(p5e),$e(g5e),$e(b5e),$e(U5e);$e(f5e),$e(Z5e),$e(F5e);$e(sc),$e(AY),$e(zQ),$e(Di),$e(JXe),$e(XXe),$e(YXe),$e(FXe);const Rv={inputBackground:$e(pP),inputForeground:$e(D0e),inputBorder:$e(G0e),inputValidationInfoBorder:$e($Xe),inputValidationInfoBackground:$e(KXe),inputValidationInfoForeground:$e(qXe),inputValidationWarningBorder:$e(i5e),inputValidationWarningBackground:$e(e5e),inputValidationWarningForeground:$e(t5e),inputValidationErrorBorder:$e(o5e),inputValidationErrorBackground:$e(n5e),inputValidationErrorForeground:$e(s5e)},k3e={listFilterWidgetBackground:$e(D5e),listFilterWidgetOutline:$e(G5e),listFilterWidgetNoMatchesOutline:$e(E5e),listFilterWidgetShadow:$e(v5e),inputBoxStyles:Rv,toggleStyles:Nv},Bbe={badgeBackground:$e(oD),badgeForeground:$e(ZXe),badgeBorder:$e(Di)};$e(vXe),$e(EXe),$e(ple),$e(ple),$e(xXe);const $A={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:$e(W5e),listFocusForeground:$e(V5e),listFocusOutline:$e(Q5e),listActiveSelectionBackground:$e(WA),listActiveSelectionForeground:$e(fM),listActiveSelectionIconForeground:$e(v0e),listFocusAndSelectionOutline:$e(y5e),listFocusAndSelectionBackground:$e(WA),listFocusAndSelectionForeground:$e(fM),listInactiveSelectionBackground:$e(C5e),listInactiveSelectionIconForeground:$e(M5e),listInactiveSelectionForeground:$e(w5e),listInactiveFocusBackground:$e(T5e),listInactiveFocusOutline:$e(B5e),listHoverBackground:$e(x0e),listHoverForeground:$e(J0e),listDropOverBackground:$e(L5e),listDropBetweenBackground:$e(k5e),listSelectionOutline:$e(hs),listHoverOutline:$e(hs),treeIndentGuidesStroke:$e(X0e),treeInactiveIndentGuidesStroke:$e(x5e),treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:$e(see),tableColumnsBorder:$e(J5e),tableOddRowsBackgroundColor:$e(X5e)};function eN(s){return M3e(s,$A)}const I3e={selectBackground:$e(VY),selectListBackground:$e(l5e),selectForeground:$e(cee),decoratorRightForeground:$e(Y0e),selectBorder:$e(hee),focusBorder:$e(Sp),listFocusBackground:$e(ZM),listInactiveSelectionIconForeground:$e(uee),listFocusForeground:$e(FM),listFocusOutline:mXe(hs,Re.transparent.toString()),listHoverBackground:$e(x0e),listHoverForeground:$e(J0e),listHoverOutline:$e(hs),selectListBorder:$e(oee),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropOverBackground:void 0,listDropBetweenBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0,treeStickyScrollBackground:void 0,treeStickyScrollBorder:void 0,treeStickyScrollShadow:void 0},D3e={shadowColor:$e(zQ),borderColor:$e(Y5e),foregroundColor:$e(z5e),backgroundColor:$e(_5e),selectionForegroundColor:$e(O5e),selectionBackgroundColor:$e(j5e),selectionBorderColor:$e(H5e),separatorColor:$e(P5e),scrollbarShadow:$e(see),scrollbarSliderBackground:$e(C0e),scrollbarSliderHoverBackground:$e(w0e),scrollbarSliderActiveBackground:$e(M0e)};var EY=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ba=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function G3e(s,e,t,i){let n,o,l;if(Array.isArray(s))l=s,n=e,o=t;else{const d=e;l=s.getActions(d),n=t,o=i}const r=e0.getInstance(),a=r.keyStatus.altKey||(Gl||sa)&&r.keyStatus.shiftKey;Lbe(l,n,a,o?d=>d===o:d=>d==="navigation")}function vY(s,e,t,i,n,o){let l,r,a,d,c;if(Array.isArray(s))c=s,l=e,r=t,a=i,d=n;else{const u=e;c=s.getActions(u),l=t,r=i,a=n,d=o}Lbe(c,l,!1,typeof r=="string"?u=>u===r:r,a,d)}function Lbe(s,e,t,i=l=>l==="navigation",n=()=>!1,o=!1){let l,r;Array.isArray(e)?(l=e,r=e):(l=e.primary,r=e.secondary);const a=new Set;for(const[d,c]of s){let h;i(d)?(h=l,h.length>0&&o&&h.push(new zo)):(h=r,h.length>0&&h.push(new zo));for(let u of c){t&&(u=u instanceof Ud&&u.alt?u.alt:u);const m=h.push(u);u instanceof eV&&a.add({group:d,action:u,index:m-1})}}for(const{group:d,action:c,index:h}of a){const u=i(d)?l:r,m=c.actions;n(c,d,u.length)&&u.splice(h,1,...m)}}let $U=class extends pV{constructor(e,t,i,n,o,l,r,a){super(void 0,e,{icon:!!(e.class||e.item.icon),label:!e.class&&!e.item.icon,draggable:t==null?void 0:t.draggable,keybinding:t==null?void 0:t.keybinding,hoverDelegate:t==null?void 0:t.hoverDelegate}),this._options=t,this._keybindingService=i,this._notificationService=n,this._contextKeyService=o,this._themeService=l,this._contextMenuService=r,this._accessibilityService=a,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new _o),this._altKey=e0.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}async onClick(e){e.preventDefault(),e.stopPropagation();try{await this.actionRunner.run(this._commandAction,this._context)}catch(t){this._notificationService.error(t)}}render(e){if(super.render(e),e.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let t=!1;const i=()=>{var o;const n=!!((o=this._menuItemAction.alt)!=null&&o.enabled)&&(!this._accessibilityService.isMotionReduced()||t)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&t);n!==this._wantsAltCommand&&(this._wantsAltCommand=n,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(i)),this._register(ge(e,"mouseleave",n=>{t=!1,i()})),this._register(ge(e,"mouseenter",n=>{t=!0,i()})),i()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var o;const e=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),t=e&&e.getLabel(),i=this._commandAction.tooltip||this._commandAction.label;let n=t?U("titleAndKb","{0} ({1})",i,t):i;if(!this._wantsAltCommand&&((o=this._menuItemAction.alt)!=null&&o.enabled)){const l=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,r=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),a=r&&r.getLabel(),d=a?U("titleAndKb","{0} ({1})",l,a):l;n=U("titleAndKbAndAlt",`{0}
- [{1}] {2}`,n,yee.modifierLabels[pd].altKey,d)}return n}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(e){this._itemClassDispose.value=void 0;const{element:t,label:i}=this;if(!t||!i)return;const n=this._commandAction.checked&&y3e(e.toggled)&&e.toggled.icon?e.toggled.icon:e.icon;if(n)if(Qt.isThemeIcon(n)){const o=Qt.asClassNameArray(n);i.classList.add(...o),this._itemClassDispose.value=gt(()=>{i.classList.remove(...o)})}else i.style.backgroundImage=nV(this._themeService.getColorTheme().type)?R0(n.dark):R0(n.light),i.classList.add("icon"),this._itemClassDispose.value=_h(gt(()=>{i.style.backgroundImage="",i.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};$U=EY([Ba(2,dn),Ba(3,no),Ba(4,wt),Ba(5,Do),Ba(6,Vd),Ba(7,Qd)],$U);class Tee extends $U{render(e){var t;this.options.label=!0,this.options.icon=!1,super.render(e),e.classList.add("text-only"),e.classList.toggle("use-comma",((t=this._options)==null?void 0:t.useComma)??!1)}updateLabel(){var t;const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const i=Tee._symbolPrintEnter(e);(t=this._options)!=null&&t.conversational?this.label.textContent=U({key:"content2",comment:['A label with keybindg like "ESC to dismiss"']},"{1} to {0}",this._action.label,i):this.label.textContent=U({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",this._action.label,i)}}static _symbolPrintEnter(e){var t;return(t=e.getLabel())==null?void 0:t.replace(/\benter\b/gi,"⏎").replace(/\bEscape\b/gi,"Esc")}}let HP=class extends Av{constructor(e,t,i,n,o){const l={...t,menuAsChild:(t==null?void 0:t.menuAsChild)??!1,classNames:(t==null?void 0:t.classNames)??(Qt.isThemeIcon(e.item.icon)?Qt.asClassName(e.item.icon):void 0),keybindingProvider:(t==null?void 0:t.keybindingProvider)??(r=>i.lookupKeybinding(r.id))};super(e,{getActions:()=>e.actions},n,l),this._keybindingService=i,this._contextMenuService=n,this._themeService=o}render(e){super.render(e),Yi(this.element),e.classList.add("menu-entry");const t=this._action,{icon:i}=t.item;if(i&&!Qt.isThemeIcon(i)){this.element.classList.add("icon");const n=()=>{this.element&&(this.element.style.backgroundImage=nV(this._themeService.getColorTheme().type)?R0(i.dark):R0(i.light))};n(),this._register(this._themeService.onDidColorThemeChange(()=>{n()}))}}};HP=EY([Ba(2,dn),Ba(3,Vd),Ba(4,Do)],HP);let PP=class extends ku{constructor(e,t,i,n,o,l,r,a){super(null,e),this._keybindingService=i,this._notificationService=n,this._contextMenuService=o,this._menuService=l,this._instaService=r,this._storageService=a,this._container=null,this._options=t,this._storageKey=`${e.item.submenu.id}_lastActionId`;let d;const c=t!=null&&t.persistLastActionId?a.get(this._storageKey,1):void 0;c&&(d=e.actions.find(u=>c===u.id)),d||(d=e.actions[0]),this._defaultAction=this._instaService.createInstance($U,d,{keybinding:this._getDefaultActionKeybindingLabel(d)});const h={keybindingProvider:u=>this._keybindingService.lookupKeybinding(u.id),...t,menuAsChild:(t==null?void 0:t.menuAsChild)??!0,classNames:(t==null?void 0:t.classNames)??["codicon","codicon-chevron-down"],actionRunner:(t==null?void 0:t.actionRunner)??new RA};this._dropdown=new Av(e,e.actions,this._contextMenuService,h),this._register(this._dropdown.actionRunner.onDidRun(u=>{u.action instanceof Ud&&this.update(u.action)}))}update(e){var t;(t=this._options)!=null&&t.persistLastActionId&&this._storageService.store(this._storageKey,e.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance($U,e,{keybinding:this._getDefaultActionKeybindingLabel(e)}),this._defaultAction.actionRunner=new class extends RA{async runAction(i,n){await i.run(void 0)}},this._container&&this._defaultAction.render(E$(this._container,Ge(".action-container")))}_getDefaultActionKeybindingLabel(e){var i;let t;if((i=this._options)!=null&&i.renderKeybindingWithDefaultActionLabel){const n=this._keybindingService.lookupKeybinding(e.id);n&&(t=`(${n.getLabel()})`)}return t}setActionContext(e){super.setActionContext(e),this._defaultAction.setActionContext(e),this._dropdown.setActionContext(e)}render(e){this._container=e,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const t=Ge(".action-container");this._defaultAction.render(ye(this._container,t)),this._register(ge(t,De.KEY_DOWN,n=>{const o=new Jn(n);o.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),o.stopPropagation())}));const i=Ge(".dropdown-action-container");this._dropdown.render(ye(this._container,i)),this._register(ge(i,De.KEY_DOWN,n=>{var l;const o=new Jn(n);o.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(l=this._defaultAction.element)==null||l.focus(),o.stopPropagation())}))}focus(e){e?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(e){e?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};PP=EY([Ba(2,dn),Ba(3,no),Ba(4,Vd),Ba(5,pc),Ba(6,bt),Ba(7,su)],PP);let KP=class extends S3e{constructor(e,t){super(null,e,e.actions.map(i=>({text:i.id===zo.ID?"─────────":i.label,isDisabled:!i.enabled})),0,t,I3e,{ariaLabel:e.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,e.actions.findIndex(i=>i.checked)))}render(e){super.render(e),e.style.borderColor=$e(hee)}runAction(e,t){const i=this.action.actions[t];i&&this.actionRunner.run(i)}};KP=EY([Ba(1,L0)],KP);function kbe(s,e,t){return e instanceof Ud?s.createInstance($U,e,t):e instanceof bW?e.item.isSelection?s.createInstance(KP,e):e.item.rememberDefaultAction?s.createInstance(PP,e,{...t,persistLastActionId:!0}):s.createInstance(HP,e,t):void 0}class ac extends de{constructor(e,t={}){var o,l;super(),this._actionRunnerDisposables=this._register(new Ze),this.viewItemDisposables=this._register(new Z$),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new re),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new re({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new re),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new re),this.onWillRun=this._onWillRun.event,this.options=t,this._context=t.context??null,this._orientation=this.options.orientation??0,this._triggerKeys={keyDown:((o=this.options.triggerKeys)==null?void 0:o.keyDown)??!1,keys:((l=this.options.triggerKeys)==null?void 0:l.keys)??[3,10]},this._hoverDelegate=t.hoverDelegate??this._register(mV()),this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new RA,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(r=>this._onDidRun.fire(r))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(r=>this._onWillRun.fire(r))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar";let i,n;switch(this._orientation){case 0:i=[15],n=[17];break;case 1:i=[16],n=[18],this.domNode.className+=" vertical";break}this._register(ge(this.domNode,De.KEY_DOWN,r=>{const a=new Jn(r);let d=!0;const c=typeof this.focusedItem=="number"?this.viewItems[this.focusedItem]:void 0;i&&(a.equals(i[0])||a.equals(i[1]))?d=this.focusPrevious():n&&(a.equals(n[0])||a.equals(n[1]))?d=this.focusNext():a.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():a.equals(14)?d=this.focusFirst():a.equals(13)?d=this.focusLast():a.equals(2)&&c instanceof ku&&c.trapsArrowNavigation?d=this.focusNext(void 0,!0):this.isTriggerKeyEvent(a)?this._triggerKeys.keyDown?this.doTrigger(a):this.triggerKeyDown=!0:d=!1,d&&(a.preventDefault(),a.stopPropagation())})),this._register(ge(this.domNode,De.KEY_UP,r=>{const a=new Jn(r);this.isTriggerKeyEvent(a)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(a)),a.preventDefault(),a.stopPropagation()):(a.equals(2)||a.equals(1026)||a.equals(16)||a.equals(18)||a.equals(15)||a.equals(17))&&this.updateFocusedItem()})),this.focusTracker=this._register(Hu(this.domNode)),this._register(this.focusTracker.onDidBlur(()=>{(kl()===this.domNode||!Jo(kl(),this.domNode))&&(this._onDidBlur.fire(),this.previouslyFocusedItem=this.focusedItem,this.focusedItem=void 0,this.triggerKeyDown=!1)})),this._register(this.focusTracker.onDidFocus(()=>this.updateFocusedItem())),this.actionsList=document.createElement("ul"),this.actionsList.className="actions-container",this.options.highlightToggledItems&&this.actionsList.classList.add("highlight-toggled"),this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"),this.options.ariaLabel&&this.actionsList.setAttribute("aria-label",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),e.appendChild(this.domNode)}refreshRole(){this.length()>=1?this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"):this.actionsList.setAttribute("role","presentation")}setFocusable(e){if(this.focusable=e,this.focusable){const t=this.viewItems.find(i=>i instanceof ku&&i.isEnabled());t instanceof ku&&t.setFocusable(!0)}else this.viewItems.forEach(t=>{t instanceof ku&&t.setFocusable(!1)})}isTriggerKeyEvent(e){let t=!1;return this._triggerKeys.keys.forEach(i=>{t=t||e.equals(i)}),t}updateFocusedItem(){var e,t;for(let i=0;i<this.actionsList.children.length;i++){const n=this.actionsList.children[i];if(Jo(kl(),n)){this.focusedItem=i,(t=(e=this.viewItems[this.focusedItem])==null?void 0:e.showHover)==null||t.call(e);break}}}get context(){return this._context}set context(e){this._context=e,this.viewItems.forEach(t=>t.setActionContext(e))}get actionRunner(){return this._actionRunner}set actionRunner(e){this._actionRunner=e,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(t=>this._onDidRun.fire(t))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(t=>this._onWillRun.fire(t))),this.viewItems.forEach(t=>t.actionRunner=e)}getContainer(){return this.domNode}getAction(e){var t;if(typeof e=="number")return(t=this.viewItems[e])==null?void 0:t.action;if(Yo(e)){for(;e.parentElement!==this.actionsList;){if(!e.parentElement)return;e=e.parentElement}for(let i=0;i<this.actionsList.childNodes.length;i++)if(this.actionsList.childNodes[i]===e)return this.viewItems[i].action}}push(e,t={}){const i=Array.isArray(e)?e:[e];let n=XU(t.index)?t.index:null;i.forEach(o=>{const l=document.createElement("li");l.className="action-item",l.setAttribute("role","presentation");let r;const a={hoverDelegate:this._hoverDelegate,...t,isTabList:this.options.ariaRole==="tablist"};this.options.actionViewItemProvider&&(r=this.options.actionViewItemProvider(o,a)),r||(r=new pV(this.context,o,a)),this.options.allowContextMenu||this.viewItemDisposables.set(r,ge(l,De.CONTEXT_MENU,d=>{yi.stop(d,!0)})),r.actionRunner=this._actionRunner,r.setActionContext(this.context),r.render(l),this.focusable&&r instanceof ku&&this.viewItems.length===0&&r.setFocusable(!0),n===null||n<0||n>=this.actionsList.children.length?(this.actionsList.appendChild(l),this.viewItems.push(r)):(this.actionsList.insertBefore(l,this.actionsList.children[n]),this.viewItems.splice(n,0,r),n++)}),typeof this.focusedItem=="number"&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=Tn(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),Fl(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return this.viewItems.length===0}focus(e){let t=!1,i;if(e===void 0?t=!0:typeof e=="number"?i=e:typeof e=="boolean"&&(t=e),t&&typeof this.focusedItem>"u"){const n=this.viewItems.findIndex(o=>o.isEnabled());this.focusedItem=n===-1?void 0:n,this.updateFocus(void 0,void 0,!0)}else i!==void 0&&(this.focusedItem=i),this.updateFocus(void 0,void 0,!0)}focusFirst(){return this.focusedItem=this.length()-1,this.focusNext(!0)}focusLast(){return this.focusedItem=0,this.focusPrevious(!0)}focusNext(e,t){if(typeof this.focusedItem>"u")this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const i=this.focusedItem;let n;do{if(!e&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=i,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,n=this.viewItems[this.focusedItem]}while(this.focusedItem!==i&&(this.options.focusOnlyEnabledItems&&!n.isEnabled()||n.action.id===zo.ID));return this.updateFocus(void 0,void 0,t),!0}focusPrevious(e){if(typeof this.focusedItem>"u")this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const t=this.focusedItem;let i;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!e&&this.options.preventLoopNavigation)return this.focusedItem=t,!1;this.focusedItem=this.viewItems.length-1}i=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&(this.options.focusOnlyEnabledItems&&!i.isEnabled()||i.action.id===zo.ID));return this.updateFocus(!0),!0}updateFocus(e,t,i=!1){var o,l;typeof this.focusedItem>"u"&&this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem!==void 0&&this.previouslyFocusedItem!==this.focusedItem&&((o=this.viewItems[this.previouslyFocusedItem])==null||o.blur());const n=this.focusedItem!==void 0?this.viewItems[this.focusedItem]:void 0;if(n){let r=!0;Kw(n.focus)||(r=!1),this.options.focusOnlyEnabledItems&&Kw(n.isEnabled)&&!n.isEnabled()&&(r=!1),n.action.id===zo.ID&&(r=!1),r?(i||this.previouslyFocusedItem!==this.focusedItem)&&(n.focus(e),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem=void 0),r&&((l=n.showHover)==null||l.call(n))}}doTrigger(e){if(typeof this.focusedItem>"u")return;const t=this.viewItems[this.focusedItem];if(t instanceof ku){const i=t._context===null||t._context===void 0?e:t._context;this.run(t._action,i)}}async run(e,t){await this._actionRunner.run(e,t)}dispose(){this._context=void 0,this.viewItems=Tn(this.viewItems),this.getContainer().remove(),super.dispose()}}const qP=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,Q3=/(&)?(&)([^\s&])/g;var Sv;(function(s){s[s.Right=0]="Right",s[s.Left=1]="Left"})(Sv||(Sv={}));var $P;(function(s){s[s.Above=0]="Above",s[s.Below=1]="Below"})($P||($P={}));class NW extends ac{constructor(e,t,i,n){e.classList.add("monaco-menu-container"),e.setAttribute("role","presentation");const o=document.createElement("div");o.classList.add("monaco-menu"),o.setAttribute("role","presentation"),super(o,{orientation:1,actionViewItemProvider:d=>this.doGetActionViewItem(d,i,l),context:i.context,actionRunner:i.actionRunner,ariaLabel:i.ariaLabel,ariaRole:"menu",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...Fi||sa?[10]:[]],keyDown:!0}}),this.menuStyles=n,this.menuElement=o,this.actionsList.tabIndex=0,this.initializeOrUpdateStyleSheet(e,n),this._register(nr.addTarget(o)),this._register(ge(o,De.KEY_DOWN,d=>{new Jn(d).equals(2)&&d.preventDefault()})),i.enableMnemonics&&this._register(ge(o,De.KEY_DOWN,d=>{const c=d.key.toLocaleLowerCase();if(this.mnemonics.has(c)){yi.stop(d,!0);const h=this.mnemonics.get(c);if(h.length===1&&(h[0]instanceof ire&&h[0].container&&this.focusItemByElement(h[0].container),h[0].onClick(d)),h.length>1){const u=h.shift();u&&u.container&&(this.focusItemByElement(u.container),h.push(u)),this.mnemonics.set(c,h)}}})),sa&&this._register(ge(o,De.KEY_DOWN,d=>{const c=new Jn(d);c.equals(14)||c.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),yi.stop(d,!0)):(c.equals(13)||c.equals(12))&&(this.focusedItem=0,this.focusPrevious(),yi.stop(d,!0))})),this._register(ge(this.domNode,De.MOUSE_OUT,d=>{const c=d.relatedTarget;Jo(c,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),d.stopPropagation())})),this._register(ge(this.actionsList,De.MOUSE_OVER,d=>{let c=d.target;if(!(!c||!Jo(c,this.actionsList)||c===this.actionsList)){for(;c.parentElement!==this.actionsList&&c.parentElement!==null;)c=c.parentElement;if(c.classList.contains("action-item")){const h=this.focusedItem;this.setFocusedItem(c),h!==this.focusedItem&&this.updateFocus()}}})),this._register(nr.addTarget(this.actionsList)),this._register(ge(this.actionsList,_n.Tap,d=>{let c=d.initialTarget;if(!(!c||!Jo(c,this.actionsList)||c===this.actionsList)){for(;c.parentElement!==this.actionsList&&c.parentElement!==null;)c=c.parentElement;if(c.classList.contains("action-item")){const h=this.focusedItem;this.setFocusedItem(c),h!==this.focusedItem&&this.updateFocus()}}}));const l={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new dB(o,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const r=this.scrollableElement.getDomNode();r.style.position="",this.styleScrollElement(r,n),this._register(ge(o,_n.Change,d=>{yi.stop(d,!0);const c=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:c-d.translationY})})),this._register(ge(r,De.MOUSE_UP,d=>{d.preventDefault()}));const a=Wt(e);o.style.maxHeight=`${Math.max(10,a.innerHeight-e.getBoundingClientRect().top-35)}px`,t=t.filter((d,c)=>{var h;return(h=i.submenuIds)!=null&&h.has(d.id)?(console.warn(`Found submenu cycle: ${d.id}`),!1):!(d instanceof zo&&(c===t.length-1||c===0||t[c-1]instanceof zo))}),this.push(t,{icon:!0,label:!0,isMenu:!0}),e.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter(d=>!(d instanceof nre)).forEach((d,c,h)=>{d.updatePositionInSet(c+1,h.length)})}initializeOrUpdateStyleSheet(e,t){this.styleSheet||(XE(e)?this.styleSheet=cc(e):(NW.globalStyleSheet||(NW.globalStyleSheet=cc()),this.styleSheet=NW.globalStyleSheet)),this.styleSheet.textContent=v3e(t,XE(e))}styleScrollElement(e,t){const i=t.foregroundColor??"",n=t.backgroundColor??"",o=t.borderColor?`1px solid ${t.borderColor}`:"",l="5px",r=t.shadowColor?`0 2px 8px ${t.shadowColor}`:"";e.style.outline=o,e.style.borderRadius=l,e.style.color=i,e.style.backgroundColor=n,e.style.boxShadow=r}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(e){const t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()}setFocusedItem(e){for(let t=0;t<this.actionsList.children.length;t++){const i=this.actionsList.children[t];if(e===i){this.focusedItem=t;break}}}updateFocus(e){super.updateFocus(e,!0,!0),typeof this.focusedItem<"u"&&this.scrollableElement.setScrollPosition({scrollTop:Math.round(this.menuElement.scrollTop)})}doGetActionViewItem(e,t,i){if(e instanceof zo)return new nre(t.context,e,{icon:!0},this.menuStyles);if(e instanceof eV){const n=new ire(e,e.actions,i,{...t,submenuIds:new Set([...t.submenuIds||[],e.id])},this.menuStyles);if(t.enableMnemonics){const o=n.getMnemonic();if(o&&n.isEnabled()){let l=[];this.mnemonics.has(o)&&(l=this.mnemonics.get(o)),l.push(n),this.mnemonics.set(o,l)}}return n}else{const n={enableMnemonics:t.enableMnemonics,useEventAsContext:t.useEventAsContext};if(t.getKeyBinding){const l=t.getKeyBinding(e);if(l){const r=l.getLabel();r&&(n.keybinding=r)}}const o=new Ibe(t.context,e,n,this.menuStyles);if(t.enableMnemonics){const l=o.getMnemonic();if(l&&o.isEnabled()){let r=[];this.mnemonics.has(l)&&(r=this.mnemonics.get(l)),r.push(o),this.mnemonics.set(l,r)}}return o}}}class Ibe extends ku{constructor(e,t,i,n){if(i.isMenu=!0,super(t,t,i),this.menuStyle=n,this.options=i,this.options.icon=i.icon!==void 0?i.icon:!1,this.options.label=i.label!==void 0?i.label:!0,this.cssClass="",this.options.label&&i.enableMnemonics){const o=this.action.label;if(o){const l=qP.exec(o);l&&(this.mnemonic=(l[1]?l[1]:l[3]).toLocaleLowerCase())}}this.runOnceToEnableMouseUp=new Rn(()=>{this.element&&(this._register(ge(this.element,De.MOUSE_UP,o=>{if(yi.stop(o,!0),jc){if(new Jh(Wt(this.element),o).rightButton)return;this.onClick(o)}else setTimeout(()=>{this.onClick(o)},0)})),this._register(ge(this.element,De.CONTEXT_MENU,o=>{yi.stop(o,!0)})))},100),this._register(this.runOnceToEnableMouseUp)}render(e){super.render(e),this.element&&(this.container=e,this.item=ye(this.element,Ge("a.action-menu-item")),this._action.id===zo.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts",`${this.mnemonic}`)),this.check=ye(this.item,Ge("span.menu-item-check"+Qt.asCSSSelector(ke.menuSelection))),this.check.setAttribute("role","none"),this.label=ye(this.item,Ge("span.action-label")),this.options.label&&this.options.keybinding&&(ye(this.item,Ge("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked(),this.applyStyle())}blur(){super.blur(),this.applyStyle()}focus(){var e;super.focus(),(e=this.item)==null||e.focus(),this.applyStyle()}updatePositionInSet(e,t){this.item&&(this.item.setAttribute("aria-posinset",`${e}`),this.item.setAttribute("aria-setsize",`${t}`))}updateLabel(){var e;if(this.label&&this.options.label){Fl(this.label);let t=Nee(this.action.label);if(t){const i=E3e(t);this.options.enableMnemonics||(t=i),this.label.setAttribute("aria-label",i.replace(/&&/g,"&"));const n=qP.exec(t);if(n){t=aC(t),Q3.lastIndex=0;let o=Q3.exec(t);for(;o&&o[1];)o=Q3.exec(t);const l=r=>r.replace(/&&/g,"&");o?this.label.append(eB(l(t.substr(0,o.index))," "),Ge("u",{"aria-hidden":"true"},o[3]),Kpe(l(t.substr(o.index+o[0].length))," ")):this.label.innerText=l(t).trim(),(e=this.item)==null||e.setAttribute("aria-keyshortcuts",(n[1]?n[1]:n[3]).toLocaleLowerCase())}else this.label.innerText=t.replace(/&&/g,"&").trim()}}}updateTooltip(){}updateClass(){this.cssClass&&this.item&&this.item.classList.remove(...this.cssClass.split(" ")),this.options.icon&&this.label?(this.cssClass=this.action.class||"",this.label.classList.add("icon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" ")),this.updateEnabled()):this.label&&this.label.classList.remove("icon")}updateEnabled(){this.action.enabled?(this.element&&(this.element.classList.remove("disabled"),this.element.removeAttribute("aria-disabled")),this.item&&(this.item.classList.remove("disabled"),this.item.removeAttribute("aria-disabled"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add("disabled"),this.element.setAttribute("aria-disabled","true")),this.item&&(this.item.classList.add("disabled"),this.item.setAttribute("aria-disabled","true")))}updateChecked(){if(!this.item)return;const e=this.action.checked;this.item.classList.toggle("checked",!!e),e!==void 0?(this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked",e?"true":"false")):(this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked",""))}getMnemonic(){return this.mnemonic}applyStyle(){const e=this.element&&this.element.classList.contains("focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,i=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,n=e&&this.menuStyle.selectionBorderColor?`1px solid ${this.menuStyle.selectionBorderColor}`:"",o=e&&this.menuStyle.selectionBorderColor?"-1px":"";this.item&&(this.item.style.color=t??"",this.item.style.backgroundColor=i??"",this.item.style.outline=n,this.item.style.outlineOffset=o),this.check&&(this.check.style.color=t??"")}}class ire extends Ibe{constructor(e,t,i,n,o){super(e,e,n,o),this.submenuActions=t,this.parentData=i,this.submenuOptions=n,this.mysubmenu=null,this.submenuDisposables=this._register(new Ze),this.mouseOver=!1,this.expandDirection=n&&n.expandDirection!==void 0?n.expandDirection:{horizontal:Sv.Right,vertical:$P.Below},this.showScheduler=new Rn(()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))},250),this.hideScheduler=new Rn(()=>{this.element&&!Jo(kl(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))},750)}render(e){super.render(e),this.element&&(this.item&&(this.item.classList.add("monaco-submenu-item"),this.item.tabIndex=0,this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=ye(this.item,Ge("span.submenu-indicator"+Qt.asCSSSelector(ke.menuSubmenu))),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register(ge(this.element,De.KEY_UP,t=>{const i=new Jn(t);(i.equals(17)||i.equals(3))&&(yi.stop(t,!0),this.createSubmenu(!0))})),this._register(ge(this.element,De.KEY_DOWN,t=>{const i=new Jn(t);kl()===this.item&&(i.equals(17)||i.equals(3))&&yi.stop(t,!0)})),this._register(ge(this.element,De.MOUSE_OVER,t=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())})),this._register(ge(this.element,De.MOUSE_LEAVE,t=>{this.mouseOver=!1})),this._register(ge(this.element,De.FOCUS_OUT,t=>{this.element&&!Jo(kl(),this.element)&&this.hideScheduler.schedule()})),this._register(this.parentData.parent.onScroll(()=>{this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))})))}updateEnabled(){}onClick(e){yi.stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(e){if(this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch{}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(e,t,i,n){const o={top:0,left:0};return o.left=hS(e.width,t.width,{position:n.horizontal===Sv.Right?0:1,offset:i.left,size:i.width}),o.left>=i.left&&o.left<i.left+i.width&&(i.left+10+t.width<=e.width&&(o.left=i.left+10),i.top+=10,i.height=0),o.top=hS(e.height,t.height,{position:0,offset:i.top,size:0}),o.top+t.height===i.top&&o.top+i.height+t.height<=e.height&&(o.top+=i.height),o}createSubmenu(e=!0){if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded("true"),this.submenuContainer=ye(this.element,Ge("div.monaco-submenu")),this.submenuContainer.classList.add("menubar-menu-items-holder","context-view");const t=Wt(this.parentData.parent.domNode).getComputedStyle(this.parentData.parent.domNode),i=parseFloat(t.paddingTop||"0")||0;this.submenuContainer.style.zIndex="1",this.submenuContainer.style.position="fixed",this.submenuContainer.style.top="0",this.submenuContainer.style.left="0",this.parentData.submenu=new NW(this.submenuContainer,this.submenuActions.length?this.submenuActions:[new LH],this.submenuOptions,this.menuStyle);const n=this.element.getBoundingClientRect(),o={top:n.top-i,left:n.left,height:n.height+2*i,width:n.width},l=this.submenuContainer.getBoundingClientRect(),r=Wt(this.element),{top:a,left:d}=this.calculateSubmenuMenuLayout(new bn(r.innerWidth,r.innerHeight),bn.lift(l),o,this.expandDirection);this.submenuContainer.style.left=`${d-l.left}px`,this.submenuContainer.style.top=`${a-l.top}px`,this.submenuDisposables.add(ge(this.submenuContainer,De.KEY_UP,c=>{new Jn(c).equals(15)&&(yi.stop(c,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))})),this.submenuDisposables.add(ge(this.submenuContainer,De.KEY_DOWN,c=>{new Jn(c).equals(15)&&yi.stop(c,!0)})),this.submenuDisposables.add(this.parentData.submenu.onDidCancel(()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)})),this.parentData.submenu.focus(e),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(e){var t;this.item&&((t=this.item)==null||t.setAttribute("aria-expanded",e))}applyStyle(){super.applyStyle();const t=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=t??"")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class nre extends pV{constructor(e,t,i,n){super(e,t,i),this.menuStyles=n}render(e){super.render(e),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?`${this.menuStyles.separatorColor}`:"")}}function E3e(s){const e=qP,t=e.exec(s);if(!t)return s;const i=!t[1];return s.replace(e,i?"$2$3":"").trim()}function sre(s){const e=zpe()[s.id];return`.codicon-${s.id}:before { content: '\\${e.toString(16)}'; }`}function v3e(s,e){let t=`
- .monaco-menu {
- font-size: 13px;
- border-radius: 5px;
- min-width: 160px;
- }
- ${sre(ke.menuSelection)}
- ${sre(ke.menuSubmenu)}
- .monaco-menu .monaco-action-bar {
- text-align: right;
- overflow: hidden;
- white-space: nowrap;
- }
- .monaco-menu .monaco-action-bar .actions-container {
- display: flex;
- margin: 0 auto;
- padding: 0;
- width: 100%;
- justify-content: flex-end;
- }
- .monaco-menu .monaco-action-bar.vertical .actions-container {
- display: inline-block;
- }
- .monaco-menu .monaco-action-bar.reverse .actions-container {
- flex-direction: row-reverse;
- }
- .monaco-menu .monaco-action-bar .action-item {
- cursor: pointer;
- display: inline-block;
- transition: transform 50ms ease;
- position: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */
- }
- .monaco-menu .monaco-action-bar .action-item.disabled {
- cursor: default;
- }
- .monaco-menu .monaco-action-bar .action-item .icon,
- .monaco-menu .monaco-action-bar .action-item .codicon {
- display: inline-block;
- }
- .monaco-menu .monaco-action-bar .action-item .codicon {
- display: flex;
- align-items: center;
- }
- .monaco-menu .monaco-action-bar .action-label {
- font-size: 11px;
- margin-right: 4px;
- }
- .monaco-menu .monaco-action-bar .action-item.disabled .action-label,
- .monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {
- color: var(--vscode-disabledForeground);
- }
- /* Vertical actions */
- .monaco-menu .monaco-action-bar.vertical {
- text-align: left;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item {
- display: block;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- display: block;
- border-bottom: 1px solid var(--vscode-menu-separatorBackground);
- padding-top: 1px;
- padding: 30px;
- }
- .monaco-menu .secondary-actions .monaco-action-bar .action-label {
- margin-left: 6px;
- }
- /* Action Items */
- .monaco-menu .monaco-action-bar .action-item.select-container {
- overflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */
- flex: 1;
- max-width: 170px;
- min-width: 60px;
- display: flex;
- align-items: center;
- justify-content: center;
- margin-right: 10px;
- }
- .monaco-menu .monaco-action-bar.vertical {
- margin-left: 0;
- overflow: visible;
- }
- .monaco-menu .monaco-action-bar.vertical .actions-container {
- display: block;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item {
- padding: 0;
- transform: none;
- display: flex;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item.active {
- transform: none;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item {
- flex: 1 1 auto;
- display: flex;
- height: 2em;
- align-items: center;
- position: relative;
- margin: 0 4px;
- border-radius: 4px;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding,
- .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding {
- opacity: unset;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label {
- flex: 1 1 auto;
- text-decoration: none;
- padding: 0 1em;
- background: none;
- font-size: 12px;
- line-height: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .keybinding,
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- display: inline-block;
- flex: 2 1 auto;
- padding: 0 1em;
- text-align: right;
- font-size: 12px;
- line-height: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- height: 100%;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {
- font-size: 16px !important;
- display: flex;
- align-items: center;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {
- margin-left: auto;
- margin-right: -20px;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,
- .monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {
- opacity: 0.4;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {
- display: inline-block;
- box-sizing: border-box;
- margin: 0;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item {
- position: static;
- overflow: visible;
- }
- .monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {
- position: absolute;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- width: 100%;
- height: 0px !important;
- opacity: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator.text {
- padding: 0.7em 1em 0.1em 1em;
- font-weight: bold;
- opacity: 1;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label:hover {
- color: inherit;
- }
- .monaco-menu .monaco-action-bar.vertical .menu-item-check {
- position: absolute;
- visibility: hidden;
- width: 1em;
- height: 100%;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {
- visibility: visible;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- /* Context Menu */
- .context-view.monaco-menu-container {
- outline: 0;
- border: none;
- animation: fadeIn 0.083s linear;
- -webkit-app-region: no-drag;
- }
- .context-view.monaco-menu-container :focus,
- .context-view.monaco-menu-container .monaco-action-bar.vertical:focus,
- .context-view.monaco-menu-container .monaco-action-bar.vertical :focus {
- outline: 0;
- }
- .hc-black .context-view.monaco-menu-container,
- .hc-light .context-view.monaco-menu-container,
- :host-context(.hc-black) .context-view.monaco-menu-container,
- :host-context(.hc-light) .context-view.monaco-menu-container {
- box-shadow: none;
- }
- .hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused,
- .hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused,
- :host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused,
- :host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused {
- background: none;
- }
- /* Vertical Action Bar Styles */
- .monaco-menu .monaco-action-bar.vertical {
- padding: 4px 0;
- }
- .monaco-menu .monaco-action-bar.vertical .action-menu-item {
- height: 2em;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),
- .monaco-menu .monaco-action-bar.vertical .keybinding {
- font-size: inherit;
- padding: 0 2em;
- max-height: 100%;
- }
- .monaco-menu .monaco-action-bar.vertical .menu-item-check {
- font-size: inherit;
- width: 2em;
- }
- .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- font-size: inherit;
- margin: 5px 0 !important;
- padding: 0;
- border-radius: 0;
- }
- .linux .monaco-menu .monaco-action-bar.vertical .action-label.separator,
- :host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {
- margin-left: 0;
- margin-right: 0;
- }
- .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- font-size: 60%;
- padding: 0 1.8em;
- }
- .linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator,
- :host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {
- height: 100%;
- mask-size: 10px 10px;
- -webkit-mask-size: 10px 10px;
- }
- .monaco-menu .action-item {
- cursor: default;
- }`;if(e){t+=`
- /* Arrows */
- .monaco-scrollable-element > .scrollbar > .scra {
- cursor: pointer;
- font-size: 11px !important;
- }
- .monaco-scrollable-element > .visible {
- opacity: 1;
- /* Background rule added for IE9 - to allow clicks on dom node */
- background:rgba(0,0,0,0);
- transition: opacity 100ms linear;
- }
- .monaco-scrollable-element > .invisible {
- opacity: 0;
- pointer-events: none;
- }
- .monaco-scrollable-element > .invisible.fade {
- transition: opacity 800ms linear;
- }
- /* Scrollable Content Inset Shadow */
- .monaco-scrollable-element > .shadow {
- position: absolute;
- display: none;
- }
- .monaco-scrollable-element > .shadow.top {
- display: block;
- top: 0;
- left: 3px;
- height: 3px;
- width: 100%;
- }
- .monaco-scrollable-element > .shadow.left {
- display: block;
- top: 3px;
- left: 0;
- height: 100%;
- width: 3px;
- }
- .monaco-scrollable-element > .shadow.top-left-corner {
- display: block;
- top: 0;
- left: 0;
- height: 3px;
- width: 3px;
- }
- `;const i=s.scrollbarShadow;i&&(t+=`
- .monaco-scrollable-element > .shadow.top {
- box-shadow: ${i} 0 6px 6px -6px inset;
- }
- .monaco-scrollable-element > .shadow.left {
- box-shadow: ${i} 6px 0 6px -6px inset;
- }
- .monaco-scrollable-element > .shadow.top.left {
- box-shadow: ${i} 6px 6px 6px -6px inset;
- }
- `);const n=s.scrollbarSliderBackground;n&&(t+=`
- .monaco-scrollable-element > .scrollbar > .slider {
- background: ${n};
- }
- `);const o=s.scrollbarSliderHoverBackground;o&&(t+=`
- .monaco-scrollable-element > .scrollbar > .slider:hover {
- background: ${o};
- }
- `);const l=s.scrollbarSliderActiveBackground;l&&(t+=`
- .monaco-scrollable-element > .scrollbar > .slider.active {
- background: ${l};
- }
- `)}return t}class x3e{constructor(e,t,i,n){this.contextViewService=e,this.telemetryService=t,this.notificationService=i,this.keybindingService=n,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(e){this.options=e}showContextMenu(e){const t=e.getActions();if(!t.length)return;this.focusToReturn=kl();let i;const n=Yo(e.domForShadowRoot)?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>e.getAnchor(),canRelayout:!1,anchorAlignment:e.anchorAlignment,anchorAxisAlignment:e.anchorAxisAlignment,render:o=>{var c;this.lastContainer=o;const l=e.getMenuClassName?e.getMenuClassName():"";l&&(o.className+=" "+l),this.options.blockMouse&&(this.block=o.appendChild(Ge(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",(c=this.blockDisposable)==null||c.dispose(),this.blockDisposable=ge(this.block,De.MOUSE_DOWN,h=>h.stopPropagation()));const r=new Ze,a=e.actionRunner||new RA;a.onWillRun(h=>this.onActionRun(h,!e.skipTelemetry),this,r),a.onDidRun(this.onDidActionRun,this,r),i=new NW(o,t,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:a,getKeyBinding:e.getKeyBinding?e.getKeyBinding:h=>this.keybindingService.lookupKeybinding(h.id)},D3e),i.onDidCancel(()=>this.contextViewService.hideContextView(!0),null,r),i.onDidBlur(()=>this.contextViewService.hideContextView(!0),null,r);const d=Wt(o);return r.add(ge(d,De.BLUR,()=>this.contextViewService.hideContextView(!0))),r.add(ge(d,De.MOUSE_DOWN,h=>{if(h.defaultPrevented)return;const u=new Jh(d,h);let m=u.target;if(!u.rightButton){for(;m;){if(m===o)return;m=m.parentElement}this.contextViewService.hideContextView(!0)}})),_h(r,i)},focus:()=>{i==null||i.focus(!!e.autoSelectFirstItem)},onHide:o=>{var l,r,a;(l=e.onHide)==null||l.call(e,!!o),this.block&&(this.block.remove(),this.block=null),(r=this.blockDisposable)==null||r.dispose(),this.blockDisposable=null,this.lastContainer&&(kl()===this.lastContainer||Jo(kl(),this.lastContainer))&&((a=this.focusToReturn)==null||a.focus()),this.lastContainer=null}},n,!!n)}onActionRun(e,t){t&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(e){e.error&&!th(e.error)&&this.notificationService.error(e.error)}}var J3e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},MN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let eK=class extends de{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new x3e(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(e,t,i,n,o,l){super(),this.telemetryService=e,this.notificationService=t,this.contextViewService=i,this.keybindingService=n,this.menuService=o,this.contextKeyService=l,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new re),this.onDidShowContextMenu=this._onDidShowContextMenu.event,this._onDidHideContextMenu=this._store.add(new re)}configure(e){this.contextMenuHandler.configure(e)}showContextMenu(e){e=tK.transform(e,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu({...e,onHide:t=>{var i;(i=e.onHide)==null||i.call(e,t),this._onDidHideContextMenu.fire()}}),e0.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};eK=J3e([MN(0,lr),MN(1,no),MN(2,L0),MN(3,dn),MN(4,pc),MN(5,wt)],eK);var tK;(function(s){function e(i){return i&&i.menuId instanceof at}function t(i,n,o){if(!e(i))return i;const{menuId:l,menuActionOptions:r,contextKeyService:a}=i;return{...i,getActions:()=>{const d=[];if(l){const c=n.getMenuActions(l,a??o,r);G3e(c,d)}return i.getActions?zo.join(i.getActions(),d):d}}}s.transform=t})(tK||(tK={}));var Wv;(function(s){s[s.API=0]="API",s[s.USER=1]="USER"})(Wv||(Wv={}));var Bee=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Vv=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let iK=class{constructor(e){this._commandService=e}async open(e,t){if(!K5(e,Xt.command))return!1;if(!(t!=null&&t.allowCommands)||(typeof e=="string"&&(e=At.parse(e)),Array.isArray(t.allowCommands)&&!t.allowCommands.includes(e.path)))return!0;let i=[];try{i=NP(decodeURIComponent(e.query))}catch{try{i=NP(e.query)}catch{}}return Array.isArray(i)||(i=[i]),await this._commandService.executeCommand(e.path,...i),!0}};iK=Bee([Vv(0,On)],iK);let nK=class{constructor(e){this._editorService=e}async open(e,t){typeof e=="string"&&(e=At.parse(e));const{selection:i,uri:n}=pYe(e);return e=n,e.scheme===Xt.file&&(e=PYe(e)),await this._editorService.openCodeEditor({resource:e,options:{selection:i,source:t!=null&&t.fromUserGesture?Wv.USER:Wv.API,...t==null?void 0:t.editorOptions}},this._editorService.getFocusedCodeEditor(),t==null?void 0:t.openToSide),!0}};nK=Bee([Vv(0,zi)],nK);let sK=class{constructor(e,t){this._openers=new Pr,this._validators=new Pr,this._resolvers=new Pr,this._resolvedUriTargets=new sl(i=>i.with({path:null,fragment:null,query:null}).toString()),this._externalOpeners=new Pr,this._defaultExternalOpener={openExternal:async i=>(QH(i,Xt.http,Xt.https)?Cge(i):Qn.location.href=i,!0)},this._openers.push({open:async(i,n)=>n!=null&&n.openExternal||QH(i,Xt.mailto,Xt.http,Xt.https,Xt.vsls)?(await this._doOpenExternal(i,n),!0):!1}),this._openers.push(new iK(t)),this._openers.push(new nK(e))}registerOpener(e){return{dispose:this._openers.unshift(e)}}async open(e,t){const i=typeof e=="string"?At.parse(e):e,n=this._resolvedUriTargets.get(i)??e;for(const o of this._validators)if(!await o.shouldOpen(n,t))return!1;for(const o of this._openers)if(await o.open(e,t))return!0;return!1}async resolveExternalUri(e,t){for(const i of this._resolvers)try{const n=await i.resolveExternalUri(e,t);if(n)return this._resolvedUriTargets.has(n.resolved)||this._resolvedUriTargets.set(n.resolved,e),n}catch{}throw new Error("Could not resolve external URI: "+e.toString())}async _doOpenExternal(e,t){const i=typeof e=="string"?At.parse(e):e;let n;try{n=(await this.resolveExternalUri(i,t)).resolved}catch{n=i}let o;if(typeof e=="string"&&i.toString()===n.toString()?o=e:o=encodeURI(n.toString(!0)),t!=null&&t.allowContributedOpeners){const l=typeof(t==null?void 0:t.allowContributedOpeners)=="string"?t==null?void 0:t.allowContributedOpeners:void 0;for(const r of this._externalOpeners)if(await r.openExternal(o,{sourceUri:i,preferredOpenerId:l},$t.None))return!0}return this._defaultExternalOpener.openExternal(o,{sourceUri:i},$t.None)}dispose(){this._validators.clear()}};sK=Bee([Vv(0,zi),Vv(1,On)],sK);const _a=Zi("editorWorkerService");var Es;(function(s){s[s.Hint=1]="Hint",s[s.Info=2]="Info",s[s.Warning=4]="Warning",s[s.Error=8]="Error"})(Es||(Es={}));(function(s){function e(l,r){return r-l}s.compare=e;const t=Object.create(null);t[s.Error]=U("sev.error","Error"),t[s.Warning]=U("sev.warning","Warning"),t[s.Info]=U("sev.info","Info");function i(l){return t[l]||""}s.toString=i;function n(l){switch(l){case to.Error:return s.Error;case to.Warning:return s.Warning;case to.Info:return s.Info;case to.Ignore:return s.Hint}}s.fromSeverity=n;function o(l){switch(l){case s.Error:return to.Error;case s.Warning:return to.Warning;case s.Info:return to.Info;case s.Hint:return to.Ignore}}s.toSeverity=o})(Es||(Es={}));var Qv;(function(s){const e="";function t(n){return i(n,!0)}s.makeKey=t;function i(n,o){const l=[e];return n.source?l.push(n.source.replace("¦","\\¦")):l.push(e),n.code?typeof n.code=="string"?l.push(n.code.replace("¦","\\¦")):l.push(n.code.value.replace("¦","\\¦")):l.push(e),n.severity!==void 0&&n.severity!==null?l.push(Es.toString(n.severity)):l.push(e),n.message&&o?l.push(n.message.replace("¦","\\¦")):l.push(e),n.startLineNumber!==void 0&&n.startLineNumber!==null?l.push(n.startLineNumber.toString()):l.push(e),n.startColumn!==void 0&&n.startColumn!==null?l.push(n.startColumn.toString()):l.push(e),n.endLineNumber!==void 0&&n.endLineNumber!==null?l.push(n.endLineNumber.toString()):l.push(e),n.endColumn!==void 0&&n.endColumn!==null?l.push(n.endColumn.toString()):l.push(e),l.push(e),l.join("¦")}s.makeKeyOptionalMessage=i})(Qv||(Qv={}));const Ep=Zi("markerService"),Dbe=K("editor.lineHighlightBackground",null,U("lineHighlight","Background color for the highlight of line at the cursor position.")),ore=K("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hcDark:"#f38518",hcLight:Di},U("lineHighlightBorderBox","Background color for the border around the line at the cursor position."));K("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hcDark:null,hcLight:null},U("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.rangeHighlightBorder",{dark:null,light:null,hcDark:hs,hcLight:hs},U("rangeHighlightBorder","Background color of the border around highlighted ranges."));K("editor.symbolHighlightBackground",{dark:i0,light:i0,hcDark:null,hcLight:null},U("symbolHighlight","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.symbolHighlightBorder",{dark:null,light:null,hcDark:hs,hcLight:hs},U("symbolHighlightBorder","Background color of the border around highlighted symbols."));const xY=K("editorCursor.foreground",{dark:"#AEAFAD",light:Re.black,hcDark:Re.white,hcLight:"#0F4A85"},U("caret","Color of the editor cursor.")),Lee=K("editorCursor.background",null,U("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),Gbe=K("editorMultiCursor.primary.foreground",xY,U("editorMultiCursorPrimaryForeground","Color of the primary editor cursor when multiple cursors are present.")),X3e=K("editorMultiCursor.primary.background",Lee,U("editorMultiCursorPrimaryBackground","The background color of the primary editor cursor when multiple cursors are present. Allows customizing the color of a character overlapped by a block cursor.")),Ebe=K("editorMultiCursor.secondary.foreground",xY,U("editorMultiCursorSecondaryForeground","Color of secondary editor cursors when multiple cursors are present.")),Y3e=K("editorMultiCursor.secondary.background",Lee,U("editorMultiCursorSecondaryBackground","The background color of secondary editor cursors when multiple cursors are present. Allows customizing the color of a character overlapped by a block cursor.")),kee=K("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hcDark:"#e3e4e229",hcLight:"#CCCCCC"},U("editorWhitespaces","Color of whitespace characters in the editor.")),z3e=K("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hcDark:Re.white,hcLight:"#292929"},U("editorLineNumbers","Color of editor line numbers.")),_3e=K("editorIndentGuide.background",kee,U("editorIndentGuides","Color of the editor indentation guides."),!1,U("deprecatedEditorIndentGuides","'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.")),O3e=K("editorIndentGuide.activeBackground",kee,U("editorActiveIndentGuide","Color of the active editor indentation guides."),!1,U("deprecatedEditorActiveIndentGuide","'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.")),ZB=K("editorIndentGuide.background1",_3e,U("editorIndentGuides1","Color of the editor indentation guides (1).")),j3e=K("editorIndentGuide.background2","#00000000",U("editorIndentGuides2","Color of the editor indentation guides (2).")),H3e=K("editorIndentGuide.background3","#00000000",U("editorIndentGuides3","Color of the editor indentation guides (3).")),P3e=K("editorIndentGuide.background4","#00000000",U("editorIndentGuides4","Color of the editor indentation guides (4).")),K3e=K("editorIndentGuide.background5","#00000000",U("editorIndentGuides5","Color of the editor indentation guides (5).")),q3e=K("editorIndentGuide.background6","#00000000",U("editorIndentGuides6","Color of the editor indentation guides (6).")),AB=K("editorIndentGuide.activeBackground1",O3e,U("editorActiveIndentGuide1","Color of the active editor indentation guides (1).")),$3e=K("editorIndentGuide.activeBackground2","#00000000",U("editorActiveIndentGuide2","Color of the active editor indentation guides (2).")),e_e=K("editorIndentGuide.activeBackground3","#00000000",U("editorActiveIndentGuide3","Color of the active editor indentation guides (3).")),t_e=K("editorIndentGuide.activeBackground4","#00000000",U("editorActiveIndentGuide4","Color of the active editor indentation guides (4).")),i_e=K("editorIndentGuide.activeBackground5","#00000000",U("editorActiveIndentGuide5","Color of the active editor indentation guides (5).")),n_e=K("editorIndentGuide.activeBackground6","#00000000",U("editorActiveIndentGuide6","Color of the active editor indentation guides (6).")),s_e=K("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hcDark:hs,hcLight:hs},U("editorActiveLineNumber","Color of editor active line number"),!1,U("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead."));K("editorLineNumber.activeForeground",s_e,U("editorActiveLineNumber","Color of editor active line number"));const o_e=K("editorLineNumber.dimmedForeground",null,U("editorDimmedLineNumber","Color of the final editor line when editor.renderFinalNewline is set to dimmed."));K("editorRuler.foreground",{dark:"#5A5A5A",light:Re.lightgrey,hcDark:Re.white,hcLight:"#292929"},U("editorRuler","Color of the editor rulers."));K("editorCodeLens.foreground",{dark:"#999999",light:"#919191",hcDark:"#999999",hcLight:"#292929"},U("editorCodeLensForeground","Foreground color of editor CodeLens"));K("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hcDark:"#0064001a",hcLight:"#0000"},U("editorBracketMatchBackground","Background color behind matching brackets"));K("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hcDark:Di,hcLight:Di},U("editorBracketMatchBorder","Color for matching brackets boxes"));const l_e=K("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hcDark:"#7f7f7f4d",hcLight:"#666666"},U("editorOverviewRulerBorder","Color of the overview ruler border.")),r_e=K("editorOverviewRuler.background",null,U("editorOverviewRulerBackground","Background color of the editor overview ruler."));K("editorGutter.background",$h,U("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers."));K("editorUnnecessaryCode.border",{dark:null,light:null,hcDark:Re.fromHex("#fff").transparent(.8),hcLight:Di},U("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor."));const a_e=K("editorUnnecessaryCode.opacity",{dark:Re.fromHex("#000a"),light:Re.fromHex("#0007"),hcDark:null,hcLight:null},U("unnecessaryCodeOpacity",`Opacity of unnecessary (unused) source code in the editor. For example, "#000000c0" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.`));K("editorGhostText.border",{dark:null,light:null,hcDark:Re.fromHex("#fff").transparent(.8),hcLight:Re.fromHex("#292929").transparent(.8)},U("editorGhostTextBorder","Border color of ghost text in the editor."));const d_e=K("editorGhostText.foreground",{dark:Re.fromHex("#ffffff56"),light:Re.fromHex("#0007"),hcDark:null,hcLight:null},U("editorGhostTextForeground","Foreground color of the ghost text in the editor."));K("editorGhostText.background",null,U("editorGhostTextBackground","Background color of the ghost text in the editor."));const c_e=new Re(new vi(0,122,204,.6)),vbe=K("editorOverviewRuler.rangeHighlightForeground",c_e,U("overviewRulerRangeHighlight","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."),!0),h_e=K("editorOverviewRuler.errorForeground",{dark:new Re(new vi(255,18,18,.7)),light:new Re(new vi(255,18,18,.7)),hcDark:new Re(new vi(255,50,50,1)),hcLight:"#B5200D"},U("overviewRuleError","Overview ruler marker color for errors.")),u_e=K("editorOverviewRuler.warningForeground",{dark:S0,light:S0,hcDark:bM,hcLight:bM},U("overviewRuleWarning","Overview ruler marker color for warnings.")),m_e=K("editorOverviewRuler.infoForeground",{dark:Wp,light:Wp,hcDark:UM,hcLight:UM},U("overviewRuleInfo","Overview ruler marker color for infos.")),xbe=K("editorBracketHighlight.foreground1",{dark:"#FFD700",light:"#0431FAFF",hcDark:"#FFD700",hcLight:"#0431FAFF"},U("editorBracketHighlightForeground1","Foreground color of brackets (1). Requires enabling bracket pair colorization.")),Jbe=K("editorBracketHighlight.foreground2",{dark:"#DA70D6",light:"#319331FF",hcDark:"#DA70D6",hcLight:"#319331FF"},U("editorBracketHighlightForeground2","Foreground color of brackets (2). Requires enabling bracket pair colorization.")),Xbe=K("editorBracketHighlight.foreground3",{dark:"#179FFF",light:"#7B3814FF",hcDark:"#87CEFA",hcLight:"#7B3814FF"},U("editorBracketHighlightForeground3","Foreground color of brackets (3). Requires enabling bracket pair colorization.")),Ybe=K("editorBracketHighlight.foreground4","#00000000",U("editorBracketHighlightForeground4","Foreground color of brackets (4). Requires enabling bracket pair colorization.")),zbe=K("editorBracketHighlight.foreground5","#00000000",U("editorBracketHighlightForeground5","Foreground color of brackets (5). Requires enabling bracket pair colorization.")),_be=K("editorBracketHighlight.foreground6","#00000000",U("editorBracketHighlightForeground6","Foreground color of brackets (6). Requires enabling bracket pair colorization.")),p_e=K("editorBracketHighlight.unexpectedBracket.foreground",{dark:new Re(new vi(255,18,18,.8)),light:new Re(new vi(255,18,18,.8)),hcDark:"new Color(new RGBA(255, 50, 50, 1))",hcLight:"#B5200D"},U("editorBracketHighlightUnexpectedBracketForeground","Foreground color of unexpected brackets.")),g_e=K("editorBracketPairGuide.background1","#00000000",U("editorBracketPairGuide.background1","Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.")),b_e=K("editorBracketPairGuide.background2","#00000000",U("editorBracketPairGuide.background2","Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.")),U_e=K("editorBracketPairGuide.background3","#00000000",U("editorBracketPairGuide.background3","Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.")),f_e=K("editorBracketPairGuide.background4","#00000000",U("editorBracketPairGuide.background4","Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.")),F_e=K("editorBracketPairGuide.background5","#00000000",U("editorBracketPairGuide.background5","Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.")),Z_e=K("editorBracketPairGuide.background6","#00000000",U("editorBracketPairGuide.background6","Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.")),A_e=K("editorBracketPairGuide.activeBackground1","#00000000",U("editorBracketPairGuide.activeBackground1","Background color of active bracket pair guides (1). Requires enabling bracket pair guides.")),N_e=K("editorBracketPairGuide.activeBackground2","#00000000",U("editorBracketPairGuide.activeBackground2","Background color of active bracket pair guides (2). Requires enabling bracket pair guides.")),R_e=K("editorBracketPairGuide.activeBackground3","#00000000",U("editorBracketPairGuide.activeBackground3","Background color of active bracket pair guides (3). Requires enabling bracket pair guides.")),S_e=K("editorBracketPairGuide.activeBackground4","#00000000",U("editorBracketPairGuide.activeBackground4","Background color of active bracket pair guides (4). Requires enabling bracket pair guides.")),W_e=K("editorBracketPairGuide.activeBackground5","#00000000",U("editorBracketPairGuide.activeBackground5","Background color of active bracket pair guides (5). Requires enabling bracket pair guides.")),V_e=K("editorBracketPairGuide.activeBackground6","#00000000",U("editorBracketPairGuide.activeBackground6","Background color of active bracket pair guides (6). Requires enabling bracket pair guides."));K("editorUnicodeHighlight.border",S0,U("editorUnicodeHighlight.border","Border color used to highlight unicode characters."));K("editorUnicodeHighlight.background",RXe,U("editorUnicodeHighlight.background","Background color used to highlight unicode characters."));ih((s,e)=>{const t=s.getColor($h),i=s.getColor(Dbe),n=i&&!i.isTransparent()?i:t;n&&e.addRule(`.monaco-editor .inputarea.ime-input { background-color: ${n}; }`)});function Q_e(s,e){const t=[],i=[];for(const n of s)e.has(n)||t.push(n);for(const n of e)s.has(n)||i.push(n);return{removed:t,added:i}}function y_e(s,e){const t=new Set;for(const i of e)s.has(i)&&t.add(i);return t}var C_e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},lre=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let oK=class extends de{constructor(e,t){super(),this._markerService=t,this._onDidChangeMarker=this._register(new re),this._markerDecorations=new sl,e.getModels().forEach(i=>this._onModelAdded(i)),this._register(e.onModelAdded(this._onModelAdded,this)),this._register(e.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach(e=>e.dispose()),this._markerDecorations.clear()}getMarker(e,t){const i=this._markerDecorations.get(e);return i&&i.getMarker(t)||null}_handleMarkerChange(e){e.forEach(t=>{const i=this._markerDecorations.get(t);i&&this._updateDecorations(i)})}_onModelAdded(e){const t=new w_e(e);this._markerDecorations.set(e.uri,t),this._updateDecorations(t)}_onModelRemoved(e){var i;const t=this._markerDecorations.get(e.uri);t&&(t.dispose(),this._markerDecorations.delete(e.uri)),(e.uri.scheme===Xt.inMemory||e.uri.scheme===Xt.internal||e.uri.scheme===Xt.vscode)&&((i=this._markerService)==null||i.read({resource:e.uri}).map(n=>n.owner).forEach(n=>this._markerService.remove(n,[e.uri])))}_updateDecorations(e){const t=this._markerService.read({resource:e.model.uri,take:500});e.update(t)&&this._onDidChangeMarker.fire(e.model)}};oK=C_e([lre(0,es),lre(1,Ep)],oK);class w_e extends de{constructor(e){super(),this.model=e,this._map=new wxe,this._register(gt(()=>{this.model.deltaDecorations([...this._map.values()],[]),this._map.clear()}))}update(e){const{added:t,removed:i}=Q_e(new Set(this._map.keys()),new Set(e));if(t.length===0&&i.length===0)return!1;const n=i.map(r=>this._map.get(r)),o=t.map(r=>({range:this._createDecorationRange(this.model,r),options:this._createDecorationOption(r)})),l=this.model.deltaDecorations(n,o);for(const r of i)this._map.delete(r);for(let r=0;r<l.length;r++)this._map.set(t[r],l[r]);return!0}getMarker(e){return this._map.getKey(e.id)}_createDecorationRange(e,t){let i=v.lift(t);if(t.severity===Es.Hint&&!this._hasMarkerTag(t,1)&&!this._hasMarkerTag(t,2)&&(i=i.setEndPosition(i.startLineNumber,i.startColumn+2)),i=e.validateRange(i),i.isEmpty()){const n=e.getLineLastNonWhitespaceColumn(i.startLineNumber)||e.getLineMaxColumn(i.startLineNumber);if(n===1||i.endColumn>=n)return i;const o=e.getWordAtPosition(i.getStartPosition());o&&(i=new v(i.startLineNumber,o.startColumn,i.endLineNumber,o.endColumn))}else if(t.endColumn===Number.MAX_VALUE&&t.startColumn===1&&i.startLineNumber===i.endLineNumber){const n=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);n<i.endColumn&&(i=new v(i.startLineNumber,n,i.endLineNumber,i.endColumn),t.startColumn=n)}return i}_createDecorationOption(e){let t,i,n,o,l;switch(e.severity){case Es.Hint:this._hasMarkerTag(e,2)?t=void 0:this._hasMarkerTag(e,1)?t="squiggly-unnecessary":t="squiggly-hint",n=0;break;case Es.Info:t="squiggly-info",i=Gs(m_e),n=10,l={color:Gs(zXe),position:1};break;case Es.Warning:t="squiggly-warning",i=Gs(u_e),n=20,l={color:Gs(_Xe),position:1};break;case Es.Error:default:t="squiggly-error",i=Gs(h_e),n=30,l={color:Gs(OXe),position:1};break}return e.tags&&(e.tags.indexOf(1)!==-1&&(o="squiggly-inline-unnecessary"),e.tags.indexOf(2)!==-1&&(o="squiggly-inline-deprecated")),{description:"marker-decoration",stickiness:1,className:t,showIfCollapsed:!0,overviewRuler:{color:i,position:lc.Right},minimap:l,zIndex:n,inlineClassName:o}}_hasMarkerTag(e,t){return e.tags?e.tags.indexOf(t)>=0:!1}}const Iee=Zi("markerDecorationsService");class ko{static _nextVisibleColumn(e,t,i){return e===9?ko.nextRenderTabStop(t,i):jU(e)||w$(e)?t+2:t+1}static visibleColumnFromColumn(e,t,i){const n=Math.min(t-1,e.length),o=e.substring(0,n),l=new EE(o);let r=0;for(;!l.eol();){const a=GE(o,n,l.offset);l.nextGraphemeLength(),r=this._nextVisibleColumn(a,r,i)}return r}static columnFromVisibleColumn(e,t,i){if(t<=0)return 1;const n=e.length,o=new EE(e);let l=0,r=1;for(;!o.eol();){const a=GE(e,n,o.offset);o.nextGraphemeLength();const d=this._nextVisibleColumn(a,l,i),c=o.offset+1;if(d>=t){const h=t-l;return d-t<h?c:r}l=d,r=c}return n+1}static nextRenderTabStop(e,t){return e+t-e%t}static nextIndentTabStop(e,t){return e+t-e%t}static prevRenderTabStop(e,t){return Math.max(0,e-1-(e-1)%t)}static prevIndentTabStop(e,t){return Math.max(0,e-1-(e-1)%t)}}function M_e(s,e,t){let i=0;for(let o=0;o<s.length;o++)s.charAt(o)===" "?i=ko.nextIndentTabStop(i,e):i++;let n="";if(!t){const o=Math.floor(i/e);i=i%e;for(let l=0;l<o;l++)n+=" "}for(let o=0;o<i;o++)n+=" ";return n}function Dee(s,e,t){let i=Wr(s);return i===-1&&(i=s.length),M_e(s.substring(0,i),e,t)+s.substring(i)}class rre{constructor(e,t,i,n){this.range=e,this.nestingLevel=t,this.nestingLevelOfEqualBracketType=i,this.isInvalid=n}}class T_e{constructor(e,t,i,n,o,l){this.range=e,this.openingBracketRange=t,this.closingBracketRange=i,this.nestingLevel=n,this.nestingLevelOfEqualBracketType=o,this.bracketPairNode=l}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}class B_e extends T_e{constructor(e,t,i,n,o,l,r){super(e,t,i,n,o,l),this.minVisibleColumnIndentation=r}}function L_e(s,e,t,i){return s!==t?ao(t-s,i):ao(0,i-e)}const Kr=0;function yv(s){return s===0}const oc=2**26;function ao(s,e){return s*oc+e}function zc(s){const e=s,t=Math.floor(e/oc),i=e-t*oc;return new qh(t,i)}function k_e(s){return Math.floor(s/oc)}function vs(s,e){let t=s+e;return e>=oc&&(t=t-s%oc),t}function I_e(s,e){return s.reduce((t,i)=>vs(t,e(i)),Kr)}function Obe(s,e){return s===e}function MM(s,e){const t=s,i=e;if(i-t<=0)return Kr;const o=Math.floor(t/oc),l=Math.floor(i/oc),r=i-l*oc;if(o===l){const a=t-o*oc;return ao(0,r-a)}else return ao(l-o,r)}function RW(s,e){return s<e}function SW(s,e){return s<=e}function Hy(s,e){return s>=e}function gS(s){return ao(s.lineNumber-1,s.column-1)}function _Z(s,e){const t=s,i=Math.floor(t/oc),n=t-i*oc,o=e,l=Math.floor(o/oc),r=o-l*oc;return new v(i+1,n+1,l+1,r+1)}function D_e(s){const e=Lp(s);return ao(e.length-1,e[e.length-1].length)}class n0{static fromModelContentChanges(e){return e.map(i=>{const n=v.lift(i.range);return new n0(gS(n.getStartPosition()),gS(n.getEndPosition()),D_e(i.text))}).reverse()}constructor(e,t,i){this.startOffset=e,this.endOffset=t,this.newLength=i}toString(){return`[${zc(this.startOffset)}...${zc(this.endOffset)}) -> ${zc(this.newLength)}`}}class G_e{constructor(e){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=e.map(t=>Gee.from(t))}getOffsetBeforeChange(e){return this.adjustNextEdit(e),this.translateCurToOld(e)}getDistanceToNextChange(e){this.adjustNextEdit(e);const t=this.edits[this.nextEditIdx],i=t?this.translateOldToCur(t.offsetObj):null;return i===null?null:MM(e,i)}translateOldToCur(e){return e.lineCount===this.deltaLineIdxInOld?ao(e.lineCount+this.deltaOldToNewLineCount,e.columnCount+this.deltaOldToNewColumnCount):ao(e.lineCount+this.deltaOldToNewLineCount,e.columnCount)}translateCurToOld(e){const t=zc(e);return t.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?ao(t.lineCount-this.deltaOldToNewLineCount,t.columnCount-this.deltaOldToNewColumnCount):ao(t.lineCount-this.deltaOldToNewLineCount,t.columnCount)}adjustNextEdit(e){for(;this.nextEditIdx<this.edits.length;){const t=this.edits[this.nextEditIdx],i=this.translateOldToCur(t.endOffsetAfterObj);if(SW(i,e)){this.nextEditIdx++;const n=zc(i),o=zc(this.translateOldToCur(t.endOffsetBeforeObj)),l=n.lineCount-o.lineCount;this.deltaOldToNewLineCount+=l;const r=this.deltaLineIdxInOld===t.endOffsetBeforeObj.lineCount?this.deltaOldToNewColumnCount:0,a=n.columnCount-o.columnCount;this.deltaOldToNewColumnCount=r+a,this.deltaLineIdxInOld=t.endOffsetBeforeObj.lineCount}else break}}}class Gee{static from(e){return new Gee(e.startOffset,e.endOffset,e.newLength)}constructor(e,t,i){this.endOffsetBeforeObj=zc(t),this.endOffsetAfterObj=zc(vs(e,i)),this.offsetObj=zc(e)}}const $L=[],wc=class wc{static create(e,t){if(e<=128&&t.length===0){let i=wc.cache[e];return i||(i=new wc(e,t),wc.cache[e]=i),i}return new wc(e,t)}static getEmpty(){return this.empty}constructor(e,t){this.items=e,this.additionalItems=t}add(e,t){const i=t.getKey(e);let n=i>>5;if(n===0){const l=1<<i|this.items;return l===this.items?this:wc.create(l,this.additionalItems)}n--;const o=this.additionalItems.slice(0);for(;o.length<n;)o.push(0);return o[n]|=1<<(i&31),wc.create(this.items,o)}merge(e){const t=this.items|e.items;if(this.additionalItems===$L&&e.additionalItems===$L)return t===this.items?this:t===e.items?e:wc.create(t,$L);const i=[];for(let n=0;n<Math.max(this.additionalItems.length,e.additionalItems.length);n++){const o=this.additionalItems[n]||0,l=e.additionalItems[n]||0;i.push(o|l)}return wc.create(t,i)}intersects(e){if(this.items&e.items)return!0;for(let t=0;t<Math.min(this.additionalItems.length,e.additionalItems.length);t++)if(this.additionalItems[t]&e.additionalItems[t])return!0;return!1}};wc.cache=new Array(129),wc.empty=wc.create(0,$L);let ud=wc;const are={getKey(s){return s}};class jbe{constructor(){this.items=new Map}getKey(e){let t=this.items.get(e);return t===void 0&&(t=this.items.size,this.items.set(e,t)),t}}class Eee{get length(){return this._length}constructor(e){this._length=e}}class TM extends Eee{static create(e,t,i){let n=e.length;return t&&(n=vs(n,t.length)),i&&(n=vs(n,i.length)),new TM(n,e,t,i,t?t.missingOpeningBracketIds:ud.getEmpty())}get kind(){return 2}get listHeight(){return 0}get childrenLength(){return 3}getChild(e){switch(e){case 0:return this.openingBracket;case 1:return this.child;case 2:return this.closingBracket}throw new Error("Invalid child index")}get children(){const e=[];return e.push(this.openingBracket),this.child&&e.push(this.child),this.closingBracket&&e.push(this.closingBracket),e}constructor(e,t,i,n,o){super(e),this.openingBracket=t,this.child=i,this.closingBracket=n,this.missingOpeningBracketIds=o}canBeReused(e){return!(this.closingBracket===null||e.intersects(this.missingOpeningBracketIds))}deepClone(){return new TM(this.length,this.openingBracket.deepClone(),this.child&&this.child.deepClone(),this.closingBracket&&this.closingBracket.deepClone(),this.missingOpeningBracketIds)}computeMinIndentation(e,t){return this.child?this.child.computeMinIndentation(vs(e,this.openingBracket.length),t):Number.MAX_SAFE_INTEGER}}class Qp extends Eee{static create23(e,t,i,n=!1){let o=e.length,l=e.missingOpeningBracketIds;if(e.listHeight!==t.listHeight)throw new Error("Invalid list heights");if(o=vs(o,t.length),l=l.merge(t.missingOpeningBracketIds),i){if(e.listHeight!==i.listHeight)throw new Error("Invalid list heights");o=vs(o,i.length),l=l.merge(i.missingOpeningBracketIds)}return n?new E_e(o,e.listHeight+1,e,t,i,l):new BM(o,e.listHeight+1,e,t,i,l)}static getEmpty(){return new v_e(Kr,0,[],ud.getEmpty())}get kind(){return 4}get missingOpeningBracketIds(){return this._missingOpeningBracketIds}constructor(e,t,i){super(e),this.listHeight=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}throwIfImmutable(){}makeLastElementMutable(){this.throwIfImmutable();const e=this.childrenLength;if(e===0)return;const t=this.getChild(e-1),i=t.kind===4?t.toMutable():t;return t!==i&&this.setChild(e-1,i),i}makeFirstElementMutable(){if(this.throwIfImmutable(),this.childrenLength===0)return;const t=this.getChild(0),i=t.kind===4?t.toMutable():t;return t!==i&&this.setChild(0,i),i}canBeReused(e){if(e.intersects(this.missingOpeningBracketIds)||this.childrenLength===0)return!1;let t=this;for(;t.kind===4;){const i=t.childrenLength;if(i===0)throw new en;t=t.getChild(i-1)}return t.canBeReused(e)}handleChildrenChanged(){this.throwIfImmutable();const e=this.childrenLength;let t=this.getChild(0).length,i=this.getChild(0).missingOpeningBracketIds;for(let n=1;n<e;n++){const o=this.getChild(n);t=vs(t,o.length),i=i.merge(o.missingOpeningBracketIds)}this._length=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}computeMinIndentation(e,t){if(this.cachedMinIndentation!==-1)return this.cachedMinIndentation;let i=Number.MAX_SAFE_INTEGER,n=e;for(let o=0;o<this.childrenLength;o++){const l=this.getChild(o);l&&(i=Math.min(i,l.computeMinIndentation(n,t)),n=vs(n,l.length))}return this.cachedMinIndentation=i,i}}class BM extends Qp{get childrenLength(){return this._item3!==null?3:2}getChild(e){switch(e){case 0:return this._item1;case 1:return this._item2;case 2:return this._item3}throw new Error("Invalid child index")}setChild(e,t){switch(e){case 0:this._item1=t;return;case 1:this._item2=t;return;case 2:this._item3=t;return}throw new Error("Invalid child index")}get children(){return this._item3?[this._item1,this._item2,this._item3]:[this._item1,this._item2]}get item1(){return this._item1}get item2(){return this._item2}get item3(){return this._item3}constructor(e,t,i,n,o,l){super(e,t,l),this._item1=i,this._item2=n,this._item3=o}deepClone(){return new BM(this.length,this.listHeight,this._item1.deepClone(),this._item2.deepClone(),this._item3?this._item3.deepClone():null,this.missingOpeningBracketIds)}appendChildOfSameHeight(e){if(this._item3)throw new Error("Cannot append to a full (2,3) tree node");this.throwIfImmutable(),this._item3=e,this.handleChildrenChanged()}unappendChild(){if(!this._item3)throw new Error("Cannot remove from a non-full (2,3) tree node");this.throwIfImmutable();const e=this._item3;return this._item3=null,this.handleChildrenChanged(),e}prependChildOfSameHeight(e){if(this._item3)throw new Error("Cannot prepend to a full (2,3) tree node");this.throwIfImmutable(),this._item3=this._item2,this._item2=this._item1,this._item1=e,this.handleChildrenChanged()}unprependChild(){if(!this._item3)throw new Error("Cannot remove from a non-full (2,3) tree node");this.throwIfImmutable();const e=this._item1;return this._item1=this._item2,this._item2=this._item3,this._item3=null,this.handleChildrenChanged(),e}toMutable(){return this}}class E_e extends BM{toMutable(){return new BM(this.length,this.listHeight,this.item1,this.item2,this.item3,this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error("this instance is immutable")}}class Cv extends Qp{get childrenLength(){return this._children.length}getChild(e){return this._children[e]}setChild(e,t){this._children[e]=t}get children(){return this._children}constructor(e,t,i,n){super(e,t,n),this._children=i}deepClone(){const e=new Array(this._children.length);for(let t=0;t<this._children.length;t++)e[t]=this._children[t].deepClone();return new Cv(this.length,this.listHeight,e,this.missingOpeningBracketIds)}appendChildOfSameHeight(e){this.throwIfImmutable(),this._children.push(e),this.handleChildrenChanged()}unappendChild(){this.throwIfImmutable();const e=this._children.pop();return this.handleChildrenChanged(),e}prependChildOfSameHeight(e){this.throwIfImmutable(),this._children.unshift(e),this.handleChildrenChanged()}unprependChild(){this.throwIfImmutable();const e=this._children.shift();return this.handleChildrenChanged(),e}toMutable(){return this}}class v_e extends Cv{toMutable(){return new Cv(this.length,this.listHeight,[...this.children],this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error("this instance is immutable")}}const x_e=[];class vee extends Eee{get listHeight(){return 0}get childrenLength(){return 0}getChild(e){return null}get children(){return x_e}deepClone(){return this}}class nZ extends vee{get kind(){return 0}get missingOpeningBracketIds(){return ud.getEmpty()}canBeReused(e){return!0}computeMinIndentation(e,t){const i=zc(e),n=(i.columnCount===0?i.lineCount:i.lineCount+1)+1,o=k_e(vs(e,this.length))+1;let l=Number.MAX_SAFE_INTEGER;for(let r=n;r<=o;r++){const a=t.getLineFirstNonWhitespaceColumn(r),d=t.getLineContent(r);if(a===0)continue;const c=ko.visibleColumnFromColumn(d,a,t.getOptions().tabSize);l=Math.min(l,c)}return l}}class wv extends vee{static create(e,t,i){return new wv(e,t,i)}get kind(){return 1}get missingOpeningBracketIds(){return ud.getEmpty()}constructor(e,t,i){super(e),this.bracketInfo=t,this.bracketIds=i}get text(){return this.bracketInfo.bracketText}get languageId(){return this.bracketInfo.languageId}canBeReused(e){return!1}computeMinIndentation(e,t){return Number.MAX_SAFE_INTEGER}}class J_e extends vee{get kind(){return 3}constructor(e,t){super(t),this.missingOpeningBracketIds=e}canBeReused(e){return!e.intersects(this.missingOpeningBracketIds)}computeMinIndentation(e,t){return Number.MAX_SAFE_INTEGER}}let xb=class{constructor(e,t,i,n,o){this.length=e,this.kind=t,this.bracketId=i,this.bracketIds=n,this.astNode=o}};class Hbe{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.reader=new X_e(this.textModel,this.bracketTokens),this._offset=Kr,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return ao(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(e){this.didPeek=!1,this._offset=vs(this._offset,e);const t=zc(this._offset);this.reader.setPosition(t.lineCount,t.columnCount)}read(){let e;return this.peeked?(this.didPeek=!1,e=this.peeked):e=this.reader.read(),e&&(this._offset=vs(this._offset,e.length)),e}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}class X_e{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}setPosition(e,t){e===this.lineIdx?(this.lineCharOffset=t,this.line!==null&&(this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=e,this.lineCharOffset=t,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const o=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=o.length,o}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;this.line===null&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const e=this.lineIdx,t=this.lineCharOffset;let i=0;for(;;){const o=this.lineTokens,l=o.getCount();let r=null;if(this.lineTokenOffset<l){const a=o.getMetadata(this.lineTokenOffset);for(;this.lineTokenOffset+1<l&&a===o.getMetadata(this.lineTokenOffset+1);)this.lineTokenOffset++;const d=Ta.getTokenType(a)===0,c=Ta.containsBalancedBrackets(a),h=o.getEndOffset(this.lineTokenOffset);if(c&&d&&this.lineCharOffset<h){const u=o.getLanguageId(this.lineTokenOffset),m=this.line.substring(this.lineCharOffset,h),p=this.bracketTokens.getSingleLanguageBracketTokens(u),g=p.regExpGlobal;if(g){g.lastIndex=0;const b=g.exec(m);b&&(r=p.getToken(b[0]),r&&(this.lineCharOffset+=b.index))}}if(i+=h-this.lineCharOffset,r)if(e!==this.lineIdx||t!==this.lineCharOffset){this.peekedToken=r;break}else return this.lineCharOffset+=r.length,r;else this.lineTokenOffset++,this.lineCharOffset=h}else if(this.lineIdx===this.textBufferLineCount-1||(this.lineIdx++,this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.lineTokenOffset=0,this.line=this.lineTokens.getLineContent(),this.lineCharOffset=0,i+=33,i>1e3))break;if(i>1500)break}const n=L_e(e,t,this.lineIdx,this.lineCharOffset);return new xb(n,0,-1,ud.getEmpty(),new nZ(n))}}class Y_e{constructor(e,t){this.text=e,this._offset=Kr,this.idx=0;const i=t.getRegExpStr(),n=i?new RegExp(i+`|
- `,"gi"):null,o=[];let l,r=0,a=0,d=0,c=0;const h=[];for(let p=0;p<60;p++)h.push(new xb(ao(0,p),0,-1,ud.getEmpty(),new nZ(ao(0,p))));const u=[];for(let p=0;p<60;p++)u.push(new xb(ao(1,p),0,-1,ud.getEmpty(),new nZ(ao(1,p))));if(n)for(n.lastIndex=0;(l=n.exec(e))!==null;){const p=l.index,g=l[0];if(g===`
- `)r++,a=p+1;else{if(d!==p){let b;if(c===r){const f=p-d;if(f<h.length)b=h[f];else{const Z=ao(0,f);b=new xb(Z,0,-1,ud.getEmpty(),new nZ(Z))}}else{const f=r-c,Z=p-a;if(f===1&&Z<u.length)b=u[Z];else{const A=ao(f,Z);b=new xb(A,0,-1,ud.getEmpty(),new nZ(A))}}o.push(b)}o.push(t.getToken(g)),d=p+g.length,c=r}}const m=e.length;if(d!==m){const p=c===r?ao(0,m-d):ao(r-c,m-a);o.push(new xb(p,0,-1,ud.getEmpty(),new nZ(p)))}this.length=ao(r,m-a),this.tokens=o}get offset(){return this._offset}read(){return this.tokens[this.idx++]||null}peek(){return this.tokens[this.idx]||null}skip(e){throw new RDe}}class xee{static createFromLanguage(e,t){function i(o){return t.getKey(`${o.languageId}:::${o.bracketText}`)}const n=new Map;for(const o of e.bracketsNew.openingBrackets){const l=ao(0,o.bracketText.length),r=i(o),a=ud.getEmpty().add(r,are);n.set(o.bracketText,new xb(l,1,r,a,wv.create(l,o,a)))}for(const o of e.bracketsNew.closingBrackets){const l=ao(0,o.bracketText.length);let r=ud.getEmpty();const a=o.getOpeningBrackets();for(const d of a)r=r.add(i(d),are);n.set(o.bracketText,new xb(l,2,i(a[0]),r,wv.create(l,o,r)))}return new xee(n)}constructor(e){this.map=e,this.hasRegExp=!1,this._regExpGlobal=null}getRegExpStr(){if(this.isEmpty)return null;{const e=[...this.map.keys()];return e.sort(),e.reverse(),e.map(t=>z_e(t)).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const e=this.getRegExpStr();this._regExpGlobal=e?new RegExp(e,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(e){return this.map.get(e.toLowerCase())}findClosingTokenText(e){for(const[t,i]of this.map)if(i.kind===2&&i.bracketIds.intersects(e))return t}get isEmpty(){return this.map.size===0}}function z_e(s){let e=dc(s);return/^[\w ]+/.test(s)&&(e=`\\b${e}`),/[\w ]+$/.test(s)&&(e=`${e}\\b`),e}class Pbe{constructor(e,t){this.denseKeyProvider=e,this.getLanguageConfiguration=t,this.languageIdToBracketTokens=new Map}didLanguageChange(e){return this.languageIdToBracketTokens.has(e)}getSingleLanguageBracketTokens(e){let t=this.languageIdToBracketTokens.get(e);return t||(t=xee.createFromLanguage(this.getLanguageConfiguration(e),this.denseKeyProvider),this.languageIdToBracketTokens.set(e,t)),t}}function __e(s){if(s.length===0)return null;if(s.length===1)return s[0];let e=0;function t(){if(e>=s.length)return null;const l=e,r=s[l].listHeight;for(e++;e<s.length&&s[e].listHeight===r;)e++;return e-l>=2?Kbe(l===0&&e===s.length?s:s.slice(l,e),!1):s[l]}let i=t(),n=t();if(!n)return i;for(let l=t();l;l=t())dre(i,n)<=dre(n,l)?(i=y3(i,n),n=l):n=y3(n,l);return y3(i,n)}function Kbe(s,e=!1){if(s.length===0)return null;if(s.length===1)return s[0];let t=s.length;for(;t>3;){const i=t>>1;for(let n=0;n<i;n++){const o=n<<1;s[n]=Qp.create23(s[o],s[o+1],o+3===t?s[o+2]:null,e)}t=i}return Qp.create23(s[0],s[1],t>=3?s[2]:null,e)}function dre(s,e){return Math.abs(s.listHeight-e.listHeight)}function y3(s,e){return s.listHeight===e.listHeight?Qp.create23(s,e,null,!1):s.listHeight>e.listHeight?O_e(s,e):j_e(e,s)}function O_e(s,e){s=s.toMutable();let t=s;const i=[];let n;for(;;){if(e.listHeight===t.listHeight){n=e;break}if(t.kind!==4)throw new Error("unexpected");i.push(t),t=t.makeLastElementMutable()}for(let o=i.length-1;o>=0;o--){const l=i[o];n?l.childrenLength>=3?n=Qp.create23(l.unappendChild(),n,null,!1):(l.appendChildOfSameHeight(n),n=void 0):l.handleChildrenChanged()}return n?Qp.create23(s,n,null,!1):s}function j_e(s,e){s=s.toMutable();let t=s;const i=[];for(;e.listHeight!==t.listHeight;){if(t.kind!==4)throw new Error("unexpected");i.push(t),t=t.makeFirstElementMutable()}let n=e;for(let o=i.length-1;o>=0;o--){const l=i[o];n?l.childrenLength>=3?n=Qp.create23(n,l.unprependChild(),null,!1):(l.prependChildOfSameHeight(n),n=void 0):l.handleChildrenChanged()}return n?Qp.create23(n,s,null,!1):s}class H_e{constructor(e){this.lastOffset=Kr,this.nextNodes=[e],this.offsets=[Kr],this.idxs=[]}readLongestNodeAt(e,t){if(RW(e,this.lastOffset))throw new Error("Invalid offset");for(this.lastOffset=e;;){const i=G1(this.nextNodes);if(!i)return;const n=G1(this.offsets);if(RW(e,n))return;if(RW(n,e))if(vs(n,i.length)<=e)this.nextNodeAfterCurrent();else{const o=C3(i);o!==-1?(this.nextNodes.push(i.getChild(o)),this.offsets.push(n),this.idxs.push(o)):this.nextNodeAfterCurrent()}else{if(t(i))return this.nextNodeAfterCurrent(),i;{const o=C3(i);if(o===-1){this.nextNodeAfterCurrent();return}else this.nextNodes.push(i.getChild(o)),this.offsets.push(n),this.idxs.push(o)}}}}nextNodeAfterCurrent(){for(;;){const e=G1(this.offsets),t=G1(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),this.idxs.length===0)break;const i=G1(this.nextNodes),n=C3(i,this.idxs[this.idxs.length-1]);if(n!==-1){this.nextNodes.push(i.getChild(n)),this.offsets.push(vs(e,t.length)),this.idxs[this.idxs.length-1]=n;break}else this.idxs.pop()}}}function C3(s,e=-1){for(;;){if(e++,e>=s.childrenLength)return-1;if(s.getChild(e))return e}}function G1(s){return s.length>0?s[s.length-1]:void 0}function lK(s,e,t,i){return new P_e(s,e,t,i).parseDocument()}class P_e{constructor(e,t,i,n){if(this.tokenizer=e,this.createImmutableLists=n,this._itemsConstructed=0,this._itemsFromCache=0,i&&n)throw new Error("Not supported");this.oldNodeReader=i?new H_e(i):void 0,this.positionMapper=new G_e(t)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let e=this.parseList(ud.getEmpty(),0);return e||(e=Qp.getEmpty()),e}parseList(e,t){const i=[];for(;;){let o=this.tryReadChildFromCache(e);if(!o){const l=this.tokenizer.peek();if(!l||l.kind===2&&l.bracketIds.intersects(e))break;o=this.parseChild(e,t+1)}o.kind===4&&o.childrenLength===0||i.push(o)}return this.oldNodeReader?__e(i):Kbe(i,this.createImmutableLists)}tryReadChildFromCache(e){if(this.oldNodeReader){const t=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(t===null||!yv(t)){const i=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),n=>t!==null&&!RW(n.length,t)?!1:n.canBeReused(e));if(i)return this._itemsFromCache++,this.tokenizer.skip(i.length),i}}}parseChild(e,t){this._itemsConstructed++;const i=this.tokenizer.read();switch(i.kind){case 2:return new J_e(i.bracketIds,i.length);case 0:return i.astNode;case 1:{if(t>300)return new nZ(i.length);const n=e.merge(i.bracketIds),o=this.parseList(n,t+1),l=this.tokenizer.peek();return l&&l.kind===2&&(l.bracketId===i.bracketId||l.bracketIds.intersects(i.bracketIds))?(this.tokenizer.read(),TM.create(i.astNode,o,l.astNode)):TM.create(i.astNode,o,null)}default:throw new Error("unexpected")}}}function Mv(s,e){if(s.length===0)return e;if(e.length===0)return s;const t=new f0(cre(s)),i=cre(e);i.push({modified:!1,lengthBefore:void 0,lengthAfter:void 0});let n=t.dequeue();function o(d){if(d===void 0){const h=t.takeWhile(u=>!0)||[];return n&&h.unshift(n),h}const c=[];for(;n&&!yv(d);){const[h,u]=n.splitAt(d);c.push(h),d=MM(h.lengthAfter,d),n=u??t.dequeue()}return yv(d)||c.push(new pU(!1,d,d)),c}const l=[];function r(d,c,h){if(l.length>0&&Obe(l[l.length-1].endOffset,d)){const u=l[l.length-1];l[l.length-1]=new n0(u.startOffset,c,vs(u.newLength,h))}else l.push({startOffset:d,endOffset:c,newLength:h})}let a=Kr;for(const d of i){const c=o(d.lengthBefore);if(d.modified){const h=I_e(c,m=>m.lengthBefore),u=vs(a,h);r(a,u,d.lengthAfter),a=u}else for(const h of c){const u=a;a=vs(a,h.lengthBefore),h.modified&&r(u,a,h.lengthAfter)}}return l}class pU{constructor(e,t,i){this.modified=e,this.lengthBefore=t,this.lengthAfter=i}splitAt(e){const t=MM(e,this.lengthAfter);return Obe(t,Kr)?[this,void 0]:this.modified?[new pU(this.modified,this.lengthBefore,e),new pU(this.modified,Kr,t)]:[new pU(this.modified,e,e),new pU(this.modified,t,t)]}toString(){return`${this.modified?"M":"U"}:${zc(this.lengthBefore)} -> ${zc(this.lengthAfter)}`}}function cre(s){const e=[];let t=Kr;for(const i of s){const n=MM(t,i.startOffset);yv(n)||e.push(new pU(!1,n,n));const o=MM(i.startOffset,i.endOffset);e.push(new pU(!0,o,i.newLength)),t=i.endOffset}return e}class K_e extends de{didLanguageChange(e){return this.brackets.didLanguageChange(e)}constructor(e,t){if(super(),this.textModel=e,this.getLanguageConfiguration=t,this.didChangeEmitter=new re,this.denseKeyProvider=new jbe,this.brackets=new Pbe(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],e.tokenization.hasTokens)e.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const i=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),n=new Y_e(this.textModel.getValue(),i);this.initialAstWithoutTokens=lK(n,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const e=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,e||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:e}){const t=e.map(i=>new n0(ao(i.fromLineNumber-1,0),ao(i.toLineNumber,0),ao(i.toLineNumber-i.fromLineNumber+1,0)));this.handleEdits(t,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(e){const t=n0.fromModelContentChanges(e.changes);this.handleEdits(t,!1)}handleEdits(e,t){const i=Mv(this.queuedTextEdits,e);this.queuedTextEdits=i,this.initialAstWithoutTokens&&!t&&(this.queuedTextEditsForInitialAstWithoutTokens=Mv(this.queuedTextEditsForInitialAstWithoutTokens,e))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(e,t,i){const n=t,o=new Hbe(this.textModel,this.brackets);return lK(o,e,n,i)}getBracketsInRange(e,t){this.flushQueue();const i=ao(e.startLineNumber-1,e.startColumn-1),n=ao(e.endLineNumber-1,e.endColumn-1);return new vZ(o=>{const l=this.initialAstWithoutTokens||this.astWithTokens;rK(l,Kr,l.length,i,n,o,0,0,new Map,t)})}getBracketPairsInRange(e,t){this.flushQueue();const i=gS(e.getStartPosition()),n=gS(e.getEndPosition());return new vZ(o=>{const l=this.initialAstWithoutTokens||this.astWithTokens,r=new q_e(o,t,this.textModel);aK(l,Kr,l.length,i,n,r,0,new Map)})}getFirstBracketAfter(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return $be(t,Kr,t.length,gS(e))}getFirstBracketBefore(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return qbe(t,Kr,t.length,gS(e))}}function qbe(s,e,t,i){if(s.kind===4||s.kind===2){const n=[];for(const o of s.children)t=vs(e,o.length),n.push({nodeOffsetStart:e,nodeOffsetEnd:t}),e=t;for(let o=n.length-1;o>=0;o--){const{nodeOffsetStart:l,nodeOffsetEnd:r}=n[o];if(RW(l,i)){const a=qbe(s.children[o],l,r,i);if(a)return a}}return null}else{if(s.kind===3)return null;if(s.kind===1){const n=_Z(e,t);return{bracketInfo:s.bracketInfo,range:n}}}return null}function $be(s,e,t,i){if(s.kind===4||s.kind===2){for(const n of s.children){if(t=vs(e,n.length),RW(i,t)){const o=$be(n,e,t,i);if(o)return o}e=t}return null}else{if(s.kind===3)return null;if(s.kind===1){const n=_Z(e,t);return{bracketInfo:s.bracketInfo,range:n}}}return null}function rK(s,e,t,i,n,o,l,r,a,d,c=!1){if(l>200)return!0;e:for(;;)switch(s.kind){case 4:{const h=s.childrenLength;for(let u=0;u<h;u++){const m=s.getChild(u);if(m){if(t=vs(e,m.length),SW(e,n)&&Hy(t,i)){if(Hy(t,n)){s=m;continue e}if(!rK(m,e,t,i,n,o,l,0,a,d))return!1}e=t}}return!0}case 2:{const h=!d||!s.closingBracket||s.closingBracket.bracketInfo.closesColorized(s.openingBracket.bracketInfo);let u=0;if(a){let p=a.get(s.openingBracket.text);p===void 0&&(p=0),u=p,h&&(p++,a.set(s.openingBracket.text,p))}const m=s.childrenLength;for(let p=0;p<m;p++){const g=s.getChild(p);if(g){if(t=vs(e,g.length),SW(e,n)&&Hy(t,i)){if(Hy(t,n)&&g.kind!==1){s=g,h?(l++,r=u+1):r=u;continue e}if((h||g.kind!==1||!s.closingBracket)&&!rK(g,e,t,i,n,o,h?l+1:l,h?u+1:u,a,d,!s.closingBracket))return!1}e=t}}return a==null||a.set(s.openingBracket.text,u),!0}case 3:{const h=_Z(e,t);return o(new rre(h,l-1,0,!0))}case 1:{const h=_Z(e,t);return o(new rre(h,l-1,r-1,c))}case 0:return!0}}class q_e{constructor(e,t,i){this.push=e,this.includeMinIndentation=t,this.textModel=i}}function aK(s,e,t,i,n,o,l,r){var d;if(l>200)return!0;let a=!0;if(s.kind===2){let c=0;if(r){let m=r.get(s.openingBracket.text);m===void 0&&(m=0),c=m,m++,r.set(s.openingBracket.text,m)}const h=vs(e,s.openingBracket.length);let u=-1;if(o.includeMinIndentation&&(u=s.computeMinIndentation(e,o.textModel)),a=o.push(new B_e(_Z(e,t),_Z(e,h),s.closingBracket?_Z(vs(h,((d=s.child)==null?void 0:d.length)||Kr),t):void 0,l,c,s,u)),e=h,a&&s.child){const m=s.child;if(t=vs(e,m.length),SW(e,n)&&Hy(t,i)&&(a=aK(m,e,t,i,n,o,l+1,r),!a))return!1}r==null||r.set(s.openingBracket.text,c)}else{let c=e;for(const h of s.children){const u=c;if(c=vs(c,h.length),SW(u,n)&&SW(i,c)&&(a=aK(h,u,c,i,n,o,l,r),!a))return!1}}return a}class $_e extends de{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t,this.bracketPairsTree=this._register(new _o),this.onDidChangeEmitter=new re,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1}handleLanguageConfigurationServiceChange(e){var t;(!e.languageId||(t=this.bracketPairsTree.value)!=null&&t.object.didLanguageChange(e.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}handleDidChangeOptions(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(e){var t;(t=this.bracketPairsTree.value)==null||t.object.handleContentChanged(e)}handleDidChangeBackgroundTokenizationState(){var e;(e=this.bracketPairsTree.value)==null||e.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(e){var t;(t=this.bracketPairsTree.value)==null||t.object.handleDidChangeTokens(e)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const e=new Ze;this.bracketPairsTree.value=eOe(e.add(new K_e(this.textModel,t=>this.languageConfigurationService.getLanguageConfiguration(t))),e),e.add(this.bracketPairsTree.value.object.onDidChange(t=>this.onDidChangeEmitter.fire(t))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)==null?void 0:t.object.getBracketPairsInRange(e,!1))||vZ.empty}getBracketPairsInRangeWithMinIndentation(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)==null?void 0:t.object.getBracketPairsInRange(e,!0))||vZ.empty}getBracketsInRange(e,t=!1){var i;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((i=this.bracketPairsTree.value)==null?void 0:i.object.getBracketsInRange(e,t))||vZ.empty}findMatchingBracketUp(e,t,i){const n=this.textModel.validatePosition(t),o=this.textModel.getLanguageIdAtPosition(n.lineNumber,n.column);if(this.canBuildAST){const l=this.languageConfigurationService.getLanguageConfiguration(o).bracketsNew.getClosingBracketInfo(e);if(!l)return null;const r=this.getBracketPairsInRange(v.fromPositions(t,t)).findLast(a=>l.closes(a.openingBracketInfo));return r?r.openingBracketRange:null}else{const l=e.toLowerCase(),r=this.languageConfigurationService.getLanguageConfiguration(o).brackets;if(!r)return null;const a=r.textIsBracket[l];return a?ek(this._findMatchingBracketUp(a,n,w3(i))):null}}matchBracket(e,t){if(this.canBuildAST){const i=this.getBracketPairsInRange(v.fromPositions(e,e)).filter(n=>n.closingBracketRange!==void 0&&(n.openingBracketRange.containsPosition(e)||n.closingBracketRange.containsPosition(e))).findLastMaxBy(ea(n=>n.openingBracketRange.containsPosition(e)?n.openingBracketRange:n.closingBracketRange,v.compareRangesUsingStarts));return i?[i.openingBracketRange,i.closingBracketRange]:null}else{const i=w3(t);return this._matchBracket(this.textModel.validatePosition(e),i)}}_establishBracketSearchOffsets(e,t,i,n){const o=t.getCount(),l=t.getLanguageId(n);let r=Math.max(0,e.column-1-i.maxBracketLength);for(let d=n-1;d>=0;d--){const c=t.getEndOffset(d);if(c<=r)break;if(wm(t.getStandardTokenType(d))||t.getLanguageId(d)!==l){r=c;break}}let a=Math.min(t.getLineContent().length,e.column-1+i.maxBracketLength);for(let d=n+1;d<o;d++){const c=t.getStartOffset(d);if(c>=a)break;if(wm(t.getStandardTokenType(d))||t.getLanguageId(d)!==l){a=c;break}}return{searchStartOffset:r,searchEndOffset:a}}_matchBracket(e,t){const i=e.lineNumber,n=this.textModel.tokenization.getLineTokens(i),o=this.textModel.getLineContent(i),l=n.findTokenIndexAtOffset(e.column-1);if(l<0)return null;const r=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId(l)).brackets;if(r&&!wm(n.getStandardTokenType(l))){let{searchStartOffset:a,searchEndOffset:d}=this._establishBracketSearchOffsets(e,n,r,l),c=null;for(;;){const h=mh.findNextBracketInRange(r.forwardRegex,i,o,a,d);if(!h)break;if(h.startColumn<=e.column&&e.column<=h.endColumn){const u=o.substring(h.startColumn-1,h.endColumn-1).toLowerCase(),m=this._matchFoundBracket(h,r.textIsBracket[u],r.textIsOpenBracket[u],t);if(m){if(m instanceof Tg)return null;c=m}}a=h.endColumn-1}if(c)return c}if(l>0&&n.getStartOffset(l)===e.column-1){const a=l-1,d=this.languageConfigurationService.getLanguageConfiguration(n.getLanguageId(a)).brackets;if(d&&!wm(n.getStandardTokenType(a))){const{searchStartOffset:c,searchEndOffset:h}=this._establishBracketSearchOffsets(e,n,d,a),u=mh.findPrevBracketInRange(d.reversedRegex,i,o,c,h);if(u&&u.startColumn<=e.column&&e.column<=u.endColumn){const m=o.substring(u.startColumn-1,u.endColumn-1).toLowerCase(),p=this._matchFoundBracket(u,d.textIsBracket[m],d.textIsOpenBracket[m],t);if(p)return p instanceof Tg?null:p}}}return null}_matchFoundBracket(e,t,i,n){if(!t)return null;const o=i?this._findMatchingBracketDown(t,e.getEndPosition(),n):this._findMatchingBracketUp(t,e.getStartPosition(),n);return o?o instanceof Tg?o:[e,o]:null}_findMatchingBracketUp(e,t,i){const n=e.languageId,o=e.reversedRegex;let l=-1,r=0;const a=(d,c,h,u)=>{for(;;){if(i&&++r%100===0&&!i())return Tg.INSTANCE;const m=mh.findPrevBracketInRange(o,d,c,h,u);if(!m)break;const p=c.substring(m.startColumn-1,m.endColumn-1).toLowerCase();if(e.isOpen(p)?l++:e.isClose(p)&&l--,l===0)return m;u=m.startColumn-1}return null};for(let d=t.lineNumber;d>=1;d--){const c=this.textModel.tokenization.getLineTokens(d),h=c.getCount(),u=this.textModel.getLineContent(d);let m=h-1,p=u.length,g=u.length;d===t.lineNumber&&(m=c.findTokenIndexAtOffset(t.column-1),p=t.column-1,g=t.column-1);let b=!0;for(;m>=0;m--){const f=c.getLanguageId(m)===n&&!wm(c.getStandardTokenType(m));if(f)b?p=c.getStartOffset(m):(p=c.getStartOffset(m),g=c.getEndOffset(m));else if(b&&p!==g){const Z=a(d,u,p,g);if(Z)return Z}b=f}if(b&&p!==g){const f=a(d,u,p,g);if(f)return f}}return null}_findMatchingBracketDown(e,t,i){const n=e.languageId,o=e.forwardRegex;let l=1,r=0;const a=(c,h,u,m)=>{for(;;){if(i&&++r%100===0&&!i())return Tg.INSTANCE;const p=mh.findNextBracketInRange(o,c,h,u,m);if(!p)break;const g=h.substring(p.startColumn-1,p.endColumn-1).toLowerCase();if(e.isOpen(g)?l++:e.isClose(g)&&l--,l===0)return p;u=p.endColumn-1}return null},d=this.textModel.getLineCount();for(let c=t.lineNumber;c<=d;c++){const h=this.textModel.tokenization.getLineTokens(c),u=h.getCount(),m=this.textModel.getLineContent(c);let p=0,g=0,b=0;c===t.lineNumber&&(p=h.findTokenIndexAtOffset(t.column-1),g=t.column-1,b=t.column-1);let f=!0;for(;p<u;p++){const Z=h.getLanguageId(p)===n&&!wm(h.getStandardTokenType(p));if(Z)f||(g=h.getStartOffset(p)),b=h.getEndOffset(p);else if(f&&g!==b){const A=a(c,m,g,b);if(A)return A}f=Z}if(f&&g!==b){const Z=a(c,m,g,b);if(Z)return Z}}return null}findPrevBracket(e){var l;const t=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((l=this.bracketPairsTree.value)==null?void 0:l.object.getFirstBracketBefore(t))||null;let i=null,n=null,o=null;for(let r=t.lineNumber;r>=1;r--){const a=this.textModel.tokenization.getLineTokens(r),d=a.getCount(),c=this.textModel.getLineContent(r);let h=d-1,u=c.length,m=c.length;if(r===t.lineNumber){h=a.findTokenIndexAtOffset(t.column-1),u=t.column-1,m=t.column-1;const g=a.getLanguageId(h);i!==g&&(i=g,n=this.languageConfigurationService.getLanguageConfiguration(i).brackets,o=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew)}let p=!0;for(;h>=0;h--){const g=a.getLanguageId(h);if(i!==g){if(n&&o&&p&&u!==m){const f=mh.findPrevBracketInRange(n.reversedRegex,r,c,u,m);if(f)return this._toFoundBracket(o,f);p=!1}i=g,n=this.languageConfigurationService.getLanguageConfiguration(i).brackets,o=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew}const b=!!n&&!wm(a.getStandardTokenType(h));if(b)p?u=a.getStartOffset(h):(u=a.getStartOffset(h),m=a.getEndOffset(h));else if(o&&n&&p&&u!==m){const f=mh.findPrevBracketInRange(n.reversedRegex,r,c,u,m);if(f)return this._toFoundBracket(o,f)}p=b}if(o&&n&&p&&u!==m){const g=mh.findPrevBracketInRange(n.reversedRegex,r,c,u,m);if(g)return this._toFoundBracket(o,g)}}return null}findNextBracket(e){var r;const t=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((r=this.bracketPairsTree.value)==null?void 0:r.object.getFirstBracketAfter(t))||null;const i=this.textModel.getLineCount();let n=null,o=null,l=null;for(let a=t.lineNumber;a<=i;a++){const d=this.textModel.tokenization.getLineTokens(a),c=d.getCount(),h=this.textModel.getLineContent(a);let u=0,m=0,p=0;if(a===t.lineNumber){u=d.findTokenIndexAtOffset(t.column-1),m=t.column-1,p=t.column-1;const b=d.getLanguageId(u);n!==b&&(n=b,o=this.languageConfigurationService.getLanguageConfiguration(n).brackets,l=this.languageConfigurationService.getLanguageConfiguration(n).bracketsNew)}let g=!0;for(;u<c;u++){const b=d.getLanguageId(u);if(n!==b){if(l&&o&&g&&m!==p){const Z=mh.findNextBracketInRange(o.forwardRegex,a,h,m,p);if(Z)return this._toFoundBracket(l,Z);g=!1}n=b,o=this.languageConfigurationService.getLanguageConfiguration(n).brackets,l=this.languageConfigurationService.getLanguageConfiguration(n).bracketsNew}const f=!!o&&!wm(d.getStandardTokenType(u));if(f)g||(m=d.getStartOffset(u)),p=d.getEndOffset(u);else if(l&&o&&g&&m!==p){const Z=mh.findNextBracketInRange(o.forwardRegex,a,h,m,p);if(Z)return this._toFoundBracket(l,Z)}g=f}if(l&&o&&g&&m!==p){const b=mh.findNextBracketInRange(o.forwardRegex,a,h,m,p);if(b)return this._toFoundBracket(l,b)}}return null}findEnclosingBrackets(e,t){const i=this.textModel.validatePosition(e);if(this.canBuildAST){const m=v.fromPositions(i),p=this.getBracketPairsInRange(v.fromPositions(i,i)).findLast(g=>g.closingBracketRange!==void 0&&g.range.strictContainsRange(m));return p?[p.openingBracketRange,p.closingBracketRange]:null}const n=w3(t),o=this.textModel.getLineCount(),l=new Map;let r=[];const a=(m,p)=>{if(!l.has(m)){const g=[];for(let b=0,f=p?p.brackets.length:0;b<f;b++)g[b]=0;l.set(m,g)}r=l.get(m)};let d=0;const c=(m,p,g,b,f)=>{for(;;){if(n&&++d%100===0&&!n())return Tg.INSTANCE;const Z=mh.findNextBracketInRange(m.forwardRegex,p,g,b,f);if(!Z)break;const A=g.substring(Z.startColumn-1,Z.endColumn-1).toLowerCase(),N=m.textIsBracket[A];if(N&&(N.isOpen(A)?r[N.index]++:N.isClose(A)&&r[N.index]--,r[N.index]===-1))return this._matchFoundBracket(Z,N,!1,n);b=Z.endColumn-1}return null};let h=null,u=null;for(let m=i.lineNumber;m<=o;m++){const p=this.textModel.tokenization.getLineTokens(m),g=p.getCount(),b=this.textModel.getLineContent(m);let f=0,Z=0,A=0;if(m===i.lineNumber){f=p.findTokenIndexAtOffset(i.column-1),Z=i.column-1,A=i.column-1;const W=p.getLanguageId(f);h!==W&&(h=W,u=this.languageConfigurationService.getLanguageConfiguration(h).brackets,a(h,u))}let N=!0;for(;f<g;f++){const W=p.getLanguageId(f);if(h!==W){if(u&&N&&Z!==A){const R=c(u,m,b,Z,A);if(R)return ek(R);N=!1}h=W,u=this.languageConfigurationService.getLanguageConfiguration(h).brackets,a(h,u)}const Q=!!u&&!wm(p.getStandardTokenType(f));if(Q)N||(Z=p.getStartOffset(f)),A=p.getEndOffset(f);else if(u&&N&&Z!==A){const R=c(u,m,b,Z,A);if(R)return ek(R)}N=Q}if(u&&N&&Z!==A){const W=c(u,m,b,Z,A);if(W)return ek(W)}}return null}_toFoundBracket(e,t){if(!t)return null;let i=this.textModel.getValueInRange(t);i=i.toLowerCase();const n=e.getBracketInfo(i);return n?{range:t,bracketInfo:n}:null}}function eOe(s,e){return{object:s,dispose:()=>e==null?void 0:e.dispose()}}function w3(s){if(typeof s>"u")return()=>!0;{const e=Date.now();return()=>Date.now()-e<=s}}const FX=class FX{constructor(){this._searchCanceledBrand=void 0}};FX.INSTANCE=new FX;let Tg=FX;function ek(s){return s instanceof Tg?null:s}class tOe extends de{constructor(e){super(),this.textModel=e,this.colorProvider=new eUe,this.onDidChangeEmitter=new re,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=e.getOptions().bracketPairColorizationOptions,this._register(e.bracketPairs.onDidChange(t=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(e){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(e,t,i,n){return n?[]:t===void 0?[]:this.colorizationOptions.enabled?this.textModel.bracketPairs.getBracketsInRange(e,!0).map(l=>({id:`bracket${l.range.toString()}-${l.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(l,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:l.range})).toArray():[]}getAllDecorations(e,t){return e===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new v(1,1,this.textModel.getLineCount(),1),e,t):[]}}class eUe{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(e,t){return e.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(t?e.nestingLevelOfEqualBracketType:e.nestingLevel)}getInlineClassNameOfLevel(e){return`bracket-highlighting-${e%30}`}}ih((s,e)=>{const t=[xbe,Jbe,Xbe,Ybe,zbe,_be],i=new eUe;e.addRule(`.monaco-editor .${i.unexpectedClosingBracketClassName} { color: ${s.getColor(p_e)}; }`);const n=t.map(o=>s.getColor(o)).filter(o=>!!o).filter(o=>!o.isTransparent());for(let o=0;o<30;o++){const l=n[o%n.length];e.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(o)} { color: ${l}; }`)}});function tk(s){return s.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}class wl{get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}constructor(e,t,i,n){this.oldPosition=e,this.oldText=t,this.newPosition=i,this.newText=n}toString(){return this.oldText.length===0?`(insert@${this.oldPosition} "${tk(this.newText)}")`:this.newText.length===0?`(delete@${this.oldPosition} "${tk(this.oldText)}")`:`(replace@${this.oldPosition} "${tk(this.oldText)}" with "${tk(this.newText)}")`}static _writeStringSize(e){return 4+2*e.length}static _writeString(e,t,i){const n=t.length;yu(e,n,i),i+=4;for(let o=0;o<n;o++)xve(e,t.charCodeAt(o),i),i+=2;return i}static _readString(e,t){const i=Qu(e,t);return t+=4,Xve(e,t,i)}writeSize(){return 4+4+wl._writeStringSize(this.oldText)+wl._writeStringSize(this.newText)}write(e,t){return yu(e,this.oldPosition,t),t+=4,yu(e,this.newPosition,t),t+=4,t=wl._writeString(e,this.oldText,t),t=wl._writeString(e,this.newText,t),t}static read(e,t,i){const n=Qu(e,t);t+=4;const o=Qu(e,t);t+=4;const l=wl._readString(e,t);t+=wl._writeStringSize(l);const r=wl._readString(e,t);return t+=wl._writeStringSize(r),i.push(new wl(n,l,o,r)),t}}function iOe(s,e){return s===null||s.length===0?e:new km(s,e).compress()}class km{constructor(e,t){this._prevEdits=e,this._currEdits=t,this._result=[],this._resultLen=0,this._prevLen=this._prevEdits.length,this._prevDeltaOffset=0,this._currLen=this._currEdits.length,this._currDeltaOffset=0}compress(){let e=0,t=0,i=this._getPrev(e),n=this._getCurr(t);for(;e<this._prevLen||t<this._currLen;){if(i===null){this._acceptCurr(n),n=this._getCurr(++t);continue}if(n===null){this._acceptPrev(i),i=this._getPrev(++e);continue}if(n.oldEnd<=i.newPosition){this._acceptCurr(n),n=this._getCurr(++t);continue}if(i.newEnd<=n.oldPosition){this._acceptPrev(i),i=this._getPrev(++e);continue}if(n.oldPosition<i.newPosition){const[d,c]=km._splitCurr(n,i.newPosition-n.oldPosition);this._acceptCurr(d),n=c;continue}if(i.newPosition<n.oldPosition){const[d,c]=km._splitPrev(i,n.oldPosition-i.newPosition);this._acceptPrev(d),i=c;continue}let r,a;if(n.oldEnd===i.newEnd)r=i,a=n,i=this._getPrev(++e),n=this._getCurr(++t);else if(n.oldEnd<i.newEnd){const[d,c]=km._splitPrev(i,n.oldLength);r=d,a=n,i=c,n=this._getCurr(++t)}else{const[d,c]=km._splitCurr(n,i.newLength);r=i,a=d,i=this._getPrev(++e),n=c}this._result[this._resultLen++]=new wl(r.oldPosition,r.oldText,a.newPosition,a.newText),this._prevDeltaOffset+=r.newLength-r.oldLength,this._currDeltaOffset+=a.newLength-a.oldLength}const o=km._merge(this._result);return km._removeNoOps(o)}_acceptCurr(e){this._result[this._resultLen++]=km._rebaseCurr(this._prevDeltaOffset,e),this._currDeltaOffset+=e.newLength-e.oldLength}_getCurr(e){return e<this._currLen?this._currEdits[e]:null}_acceptPrev(e){this._result[this._resultLen++]=km._rebasePrev(this._currDeltaOffset,e),this._prevDeltaOffset+=e.newLength-e.oldLength}_getPrev(e){return e<this._prevLen?this._prevEdits[e]:null}static _rebaseCurr(e,t){return new wl(t.oldPosition-e,t.oldText,t.newPosition,t.newText)}static _rebasePrev(e,t){return new wl(t.oldPosition,t.oldText,t.newPosition+e,t.newText)}static _splitPrev(e,t){const i=e.newText.substr(0,t),n=e.newText.substr(t);return[new wl(e.oldPosition,e.oldText,e.newPosition,i),new wl(e.oldEnd,"",e.newPosition+t,n)]}static _splitCurr(e,t){const i=e.oldText.substr(0,t),n=e.oldText.substr(t);return[new wl(e.oldPosition,i,e.newPosition,e.newText),new wl(e.oldPosition+t,n,e.newEnd,"")]}static _merge(e){if(e.length===0)return e;const t=[];let i=0,n=e[0];for(let o=1;o<e.length;o++){const l=e[o];n.oldEnd===l.oldPosition?n=new wl(n.oldPosition,n.oldText+l.oldText,n.newPosition,n.newText+l.newText):(t[i++]=n,n=l)}return t[i++]=n,t}static _removeNoOps(e){if(e.length===0)return e;const t=[];let i=0;for(let n=0;n<e.length;n++){const o=e[n];o.oldText!==o.newText&&(t[i++]=o)}return t}}function TN(s){return s.toString()}class qo{static create(e,t){const i=e.getAlternativeVersionId(),n=dK(e);return new qo(i,i,n,n,t,t,[])}constructor(e,t,i,n,o,l,r){this.beforeVersionId=e,this.afterVersionId=t,this.beforeEOL=i,this.afterEOL=n,this.beforeCursorState=o,this.afterCursorState=l,this.changes=r}append(e,t,i,n,o){t.length>0&&(this.changes=iOe(this.changes,t)),this.afterEOL=i,this.afterVersionId=n,this.afterCursorState=o}static _writeSelectionsSize(e){return 4+4*4*(e?e.length:0)}static _writeSelections(e,t,i){if(yu(e,t?t.length:0,i),i+=4,t)for(const n of t)yu(e,n.selectionStartLineNumber,i),i+=4,yu(e,n.selectionStartColumn,i),i+=4,yu(e,n.positionLineNumber,i),i+=4,yu(e,n.positionColumn,i),i+=4;return i}static _readSelections(e,t,i){const n=Qu(e,t);t+=4;for(let o=0;o<n;o++){const l=Qu(e,t);t+=4;const r=Qu(e,t);t+=4;const a=Qu(e,t);t+=4;const d=Qu(e,t);t+=4,i.push(new dt(l,r,a,d))}return t}serialize(){let e=10+qo._writeSelectionsSize(this.beforeCursorState)+qo._writeSelectionsSize(this.afterCursorState)+4;for(const n of this.changes)e+=n.writeSize();const t=new Uint8Array(e);let i=0;yu(t,this.beforeVersionId,i),i+=4,yu(t,this.afterVersionId,i),i+=4,moe(t,this.beforeEOL,i),i+=1,moe(t,this.afterEOL,i),i+=1,i=qo._writeSelections(t,this.beforeCursorState,i),i=qo._writeSelections(t,this.afterCursorState,i),yu(t,this.changes.length,i),i+=4;for(const n of this.changes)i=n.write(t,i);return t.buffer}static deserialize(e){const t=new Uint8Array(e);let i=0;const n=Qu(t,i);i+=4;const o=Qu(t,i);i+=4;const l=uoe(t,i);i+=1;const r=uoe(t,i);i+=1;const a=[];i=qo._readSelections(t,i,a);const d=[];i=qo._readSelections(t,i,d);const c=Qu(t,i);i+=4;const h=[];for(let u=0;u<c;u++)i=wl.read(t,i,h);return new qo(n,o,l,r,a,d,h)}}class tUe{get type(){return 0}get resource(){return At.isUri(this.model)?this.model:this.model.uri}constructor(e,t,i,n){this.label=e,this.code=t,this.model=i,this._data=qo.create(i,n)}toString(){return(this._data instanceof qo?this._data:qo.deserialize(this._data)).changes.map(t=>t.toString()).join(", ")}matchesResource(e){return(At.isUri(this.model)?this.model:this.model.uri).toString()===e.toString()}setModel(e){this.model=e}canAppend(e){return this.model===e&&this._data instanceof qo}append(e,t,i,n,o){this._data instanceof qo&&this._data.append(e,t,i,n,o)}close(){this._data instanceof qo&&(this._data=this._data.serialize())}open(){this._data instanceof qo||(this._data=qo.deserialize(this._data))}undo(){if(At.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof qo&&(this._data=this._data.serialize());const e=qo.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}redo(){if(At.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof qo&&(this._data=this._data.serialize());const e=qo.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}heapSize(){return this._data instanceof qo&&(this._data=this._data.serialize()),this._data.byteLength+168}}class nOe{get resources(){return this._editStackElementsArr.map(e=>e.resource)}constructor(e,t,i){this.label=e,this.code=t,this.type=1,this._isOpen=!0,this._editStackElementsArr=i.slice(0),this._editStackElementsMap=new Map;for(const n of this._editStackElementsArr){const o=TN(n.resource);this._editStackElementsMap.set(o,n)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(e){const t=TN(e);return this._editStackElementsMap.has(t)}setModel(e){const t=TN(At.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}canAppend(e){if(!this._isOpen)return!1;const t=TN(e.uri);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).canAppend(e):!1}append(e,t,i,n,o){const l=TN(e.uri);this._editStackElementsMap.get(l).append(e,t,i,n,o)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const e of this._editStackElementsArr)e.undo()}redo(){for(const e of this._editStackElementsArr)e.redo()}heapSize(e){const t=TN(e);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).heapSize():0}split(){return this._editStackElementsArr}toString(){const e=[];for(const t of this._editStackElementsArr)e.push(`${qc(t.resource)}: ${t}`);return`{${e.join(", ")}}`}}function dK(s){return s.getEOL()===`
- `?0:1}function Bg(s){return s?s instanceof tUe||s instanceof nOe:!1}class Jee{constructor(e,t){this._model=e,this._undoRedoService=t}pushStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);Bg(e)&&e.close()}popStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);Bg(e)&&e.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(e,t){const i=this._undoRedoService.getLastElement(this._model.uri);if(Bg(i)&&i.canAppend(this._model))return i;const n=new tUe(U("edit","Typing"),"undoredo.textBufferEdit",this._model,e);return this._undoRedoService.pushElement(n,t),n}pushEOL(e){const t=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(e),t.append(this._model,[],dK(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(e,t,i,n){const o=this._getOrCreateEditStackElement(e,n),l=this._model.applyEdits(t,!0),r=Jee._computeCursorState(i,l),a=l.map((d,c)=>({index:c,textChange:d.textChange}));return a.sort((d,c)=>d.textChange.oldPosition===c.textChange.oldPosition?d.index-c.index:d.textChange.oldPosition-c.textChange.oldPosition),o.append(this._model,a.map(d=>d.textChange),dK(this._model),this._model.getAlternativeVersionId(),r),r}static _computeCursorState(e,t){try{return e?e(t):null}catch(i){return vt(i),null}}}class iUe extends de{constructor(){super(...arguments),this._isDisposed=!1}dispose(){super.dispose(),this._isDisposed=!0}assertNotDisposed(){if(this._isDisposed)throw new Error("TextModelPart is disposed!")}}function JY(s,e){let t=0,i=0;const n=s.length;for(;i<n;){const o=s.charCodeAt(i);if(o===32)t++;else if(o===9)t=t-t%e+e;else break;i++}return i===n?-1:t}var OZ;(function(s){s[s.Disabled=0]="Disabled",s[s.EnabledForActive=1]="EnabledForActive",s[s.Enabled=2]="Enabled"})(OZ||(OZ={}));class VZ{constructor(e,t,i,n,o,l){if(this.visibleColumn=e,this.column=t,this.className=i,this.horizontalLine=n,this.forWrappedLinesAfterColumn=o,this.forWrappedLinesBeforeOrAtColumn=l,e!==-1==(t!==-1))throw new Error}}class UC{constructor(e,t){this.top=e,this.endColumn=t}}class sOe extends iUe{constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t}getLanguageConfiguration(e){return this.languageConfigurationService.getLanguageConfiguration(e)}_computeIndentLevel(e){return JY(this.textModel.getLineContent(e+1),this.textModel.getOptions().tabSize)}getActiveIndentGuide(e,t,i){this.assertNotDisposed();const n=this.textModel.getLineCount();if(e<1||e>n)throw new en("Illegal value for lineNumber");const o=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,l=!!(o&&o.offSide);let r=-2,a=-1,d=-2,c=-1;const h=R=>{if(r!==-1&&(r===-2||r>R-1)){r=-1,a=-1;for(let M=R-2;M>=0;M--){const w=this._computeIndentLevel(M);if(w>=0){r=M,a=w;break}}}if(d===-2){d=-1,c=-1;for(let M=R;M<n;M++){const w=this._computeIndentLevel(M);if(w>=0){d=M,c=w;break}}}};let u=-2,m=-1,p=-2,g=-1;const b=R=>{if(u===-2){u=-1,m=-1;for(let M=R-2;M>=0;M--){const w=this._computeIndentLevel(M);if(w>=0){u=M,m=w;break}}}if(p!==-1&&(p===-2||p<R-1)){p=-1,g=-1;for(let M=R;M<n;M++){const w=this._computeIndentLevel(M);if(w>=0){p=M,g=w;break}}}};let f=0,Z=!0,A=0,N=!0,W=0,Q=0;for(let R=0;Z||N;R++){const M=e-R,w=e+R;R>1&&(M<1||M<t)&&(Z=!1),R>1&&(w>n||w>i)&&(N=!1),R>5e4&&(Z=!1,N=!1);let Y=-1;if(Z&&M>=1){const P=this._computeIndentLevel(M-1);P>=0?(d=M-1,c=P,Y=Math.ceil(P/this.textModel.getOptions().indentSize)):(h(M),Y=this._getIndentLevelForWhitespaceLine(l,a,c))}let G=-1;if(N&&w<=n){const P=this._computeIndentLevel(w-1);P>=0?(u=w-1,m=P,G=Math.ceil(P/this.textModel.getOptions().indentSize)):(b(w),G=this._getIndentLevelForWhitespaceLine(l,m,g))}if(R===0){Q=Y;continue}if(R===1){if(w<=n&&G>=0&&Q+1===G){Z=!1,f=w,A=w,W=G;continue}if(M>=1&&Y>=0&&Y-1===Q){N=!1,f=M,A=M,W=Y;continue}if(f=e,A=e,W=Q,W===0)return{startLineNumber:f,endLineNumber:A,indent:W}}Z&&(Y>=W?f=M:Z=!1),N&&(G>=W?A=w:N=!1)}return{startLineNumber:f,endLineNumber:A,indent:W}}getLinesBracketGuides(e,t,i,n){var h;const o=[];for(let u=e;u<=t;u++)o.push([]);const l=!0,r=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new v(e,1,t,this.textModel.getLineMaxColumn(t))).toArray();let a;if(i&&r.length>0){const u=(e<=i.lineNumber&&i.lineNumber<=t?r:this.textModel.bracketPairs.getBracketPairsInRange(v.fromPositions(i)).toArray()).filter(m=>v.strictContainsPosition(m.range,i));a=(h=cM(u,m=>l))==null?void 0:h.range}const d=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,c=new nUe;for(const u of r){if(!u.closingBracketRange)continue;const m=a&&u.range.equalsRange(a);if(!m&&!n.includeInactive)continue;const p=c.getInlineClassName(u.nestingLevel,u.nestingLevelOfEqualBracketType,d)+(n.highlightActive&&m?" "+c.activeClassName:""),g=u.openingBracketRange.getStartPosition(),b=u.closingBracketRange.getStartPosition(),f=n.horizontalGuides===OZ.Enabled||n.horizontalGuides===OZ.EnabledForActive&&m;if(u.range.startLineNumber===u.range.endLineNumber){f&&o[u.range.startLineNumber-e].push(new VZ(-1,u.openingBracketRange.getEndPosition().column,p,new UC(!1,b.column),-1,-1));continue}const Z=this.getVisibleColumnFromPosition(b),A=this.getVisibleColumnFromPosition(u.openingBracketRange.getStartPosition()),N=Math.min(A,Z,u.minVisibleColumnIndentation+1);let W=!1;Wr(this.textModel.getLineContent(u.closingBracketRange.startLineNumber))<u.closingBracketRange.startColumn-1&&(W=!0);const M=Math.max(g.lineNumber,e),w=Math.min(b.lineNumber,t),Y=W?1:0;for(let G=M;G<w+Y;G++)o[G-e].push(new VZ(N,-1,p,null,G===g.lineNumber?g.column:-1,G===b.lineNumber?b.column:-1));f&&(g.lineNumber>=e&&A>N&&o[g.lineNumber-e].push(new VZ(N,-1,p,new UC(!1,g.column),-1,-1)),b.lineNumber<=t&&Z>N&&o[b.lineNumber-e].push(new VZ(N,-1,p,new UC(!W,b.column),-1,-1)))}for(const u of o)u.sort((m,p)=>m.visibleColumn-p.visibleColumn);return o}getVisibleColumnFromPosition(e){return ko.visibleColumnFromColumn(this.textModel.getLineContent(e.lineNumber),e.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(e,t){this.assertNotDisposed();const i=this.textModel.getLineCount();if(e<1||e>i)throw new Error("Illegal value for startLineNumber");if(t<1||t>i)throw new Error("Illegal value for endLineNumber");const n=this.textModel.getOptions(),o=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,l=!!(o&&o.offSide),r=new Array(t-e+1);let a=-2,d=-1,c=-2,h=-1;for(let u=e;u<=t;u++){const m=u-e,p=this._computeIndentLevel(u-1);if(p>=0){a=u-1,d=p,r[m]=Math.ceil(p/n.indentSize);continue}if(a===-2){a=-1,d=-1;for(let g=u-2;g>=0;g--){const b=this._computeIndentLevel(g);if(b>=0){a=g,d=b;break}}}if(c!==-1&&(c===-2||c<u-1)){c=-1,h=-1;for(let g=u;g<i;g++){const b=this._computeIndentLevel(g);if(b>=0){c=g,h=b;break}}}r[m]=this._getIndentLevelForWhitespaceLine(l,d,h)}return r}_getIndentLevelForWhitespaceLine(e,t,i){const n=this.textModel.getOptions();return t===-1||i===-1?0:t<i?1+Math.floor(t/n.indentSize):t===i||e?Math.ceil(i/n.indentSize):1+Math.floor(i/n.indentSize)}}class nUe{constructor(){this.activeClassName="indent-active"}getInlineClassName(e,t,i){return this.getInlineClassNameOfLevel(i?t:e)}getInlineClassNameOfLevel(e){return`bracket-indent-guide lvl-${e%30}`}}class oOe{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function lOe(s,e,t,i,n){n.spacesDiff=0,n.looksLikeAlignment=!1;let o;for(o=0;o<e&&o<i;o++){const u=s.charCodeAt(o),m=t.charCodeAt(o);if(u!==m)break}let l=0,r=0;for(let u=o;u<e;u++)s.charCodeAt(u)===32?l++:r++;let a=0,d=0;for(let u=o;u<i;u++)t.charCodeAt(u)===32?a++:d++;if(l>0&&r>0||a>0&&d>0)return;const c=Math.abs(r-d),h=Math.abs(l-a);if(c===0){n.spacesDiff=h,h>0&&0<=a-1&&a-1<s.length&&a<t.length&&t.charCodeAt(a)!==32&&s.charCodeAt(a-1)===32&&s.charCodeAt(s.length-1)===44&&(n.looksLikeAlignment=!0);return}if(h%c===0){n.spacesDiff=h/c;return}}function hre(s,e,t){const i=Math.min(s.getLineCount(),1e4);let n=0,o=0,l="",r=0;const a=[2,4,6,8,3,5,7],d=8,c=[0,0,0,0,0,0,0,0,0],h=new oOe;for(let p=1;p<=i;p++){const g=s.getLineLength(p),b=s.getLineContent(p),f=g<=65536;let Z=!1,A=0,N=0,W=0;for(let R=0,M=g;R<M;R++){const w=f?b.charCodeAt(R):s.getLineCharCode(p,R);if(w===9)W++;else if(w===32)N++;else{Z=!0,A=R;break}}if(!Z||(W>0?n++:N>1&&o++,lOe(l,r,b,A,h),h.looksLikeAlignment&&!(t&&e===h.spacesDiff)))continue;const Q=h.spacesDiff;Q<=d&&c[Q]++,l=b,r=A}let u=t;n!==o&&(u=n<o);let m=e;if(u){let p=u?0:.1*i;a.forEach(g=>{const b=c[g];b>p&&(p=b,m=g)}),m===4&&c[4]>0&&c[2]>0&&c[2]>=c[4]/2&&(m=2)}return{insertSpaces:u,tabSize:m}}function Aa(s){return(s.metadata&1)>>>0}function os(s,e){s.metadata=s.metadata&254|e<<0}function Il(s){return(s.metadata&2)>>>1===1}function qn(s,e){s.metadata=s.metadata&253|(e?1:0)<<1}function sUe(s){return(s.metadata&4)>>>2===1}function ure(s,e){s.metadata=s.metadata&251|(e?1:0)<<2}function oUe(s){return(s.metadata&64)>>>6===1}function mre(s,e){s.metadata=s.metadata&191|(e?1:0)<<6}function rOe(s){return(s.metadata&24)>>>3}function pre(s,e){s.metadata=s.metadata&231|e<<3}function aOe(s){return(s.metadata&32)>>>5===1}function gre(s,e){s.metadata=s.metadata&223|(e?1:0)<<5}class lUe{constructor(e,t,i){this.metadata=0,this.parent=this,this.left=this,this.right=this,os(this,1),this.start=t,this.end=i,this.delta=0,this.maxEnd=i,this.id=e,this.ownerId=0,this.options=null,ure(this,!1),mre(this,!1),pre(this,1),gre(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=null,qn(this,!1)}reset(e,t,i,n){this.start=t,this.end=i,this.maxEnd=i,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=n}setOptions(e){this.options=e;const t=this.options.className;ure(this,t==="squiggly-error"||t==="squiggly-warning"||t==="squiggly-info"),mre(this,this.options.glyphMarginClassName!==null),pre(this,this.options.stickiness),gre(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(e,t,i){this.cachedVersionId!==i&&(this.range=null),this.cachedVersionId=i,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}detach(){this.parent=null,this.left=null,this.right=null}}const fi=new lUe(null,0,0);fi.parent=fi;fi.left=fi;fi.right=fi;os(fi,0);class M3{constructor(){this.root=fi,this.requestNormalizeDelta=!1}intervalSearch(e,t,i,n,o,l){return this.root===fi?[]:bOe(this,e,t,i,n,o,l)}search(e,t,i,n){return this.root===fi?[]:gOe(this,e,t,i,n)}collectNodesFromOwner(e){return mOe(this,e)}collectNodesPostOrder(){return pOe(this)}insert(e){bre(this,e),this._normalizeDeltaIfNecessary()}delete(e){Ure(this,e),this._normalizeDeltaIfNecessary()}resolveNode(e,t){const i=e;let n=0;for(;e!==this.root;)e===e.parent.right&&(n+=e.parent.delta),e=e.parent;const o=i.start+n,l=i.end+n;i.setCachedOffsets(o,l,t)}acceptReplace(e,t,i,n){const o=hOe(this,e,e+t);for(let l=0,r=o.length;l<r;l++){const a=o[l];Ure(this,a)}this._normalizeDeltaIfNecessary(),uOe(this,e,e+t,i),this._normalizeDeltaIfNecessary();for(let l=0,r=o.length;l<r;l++){const a=o[l];a.start=a.cachedAbsoluteStart,a.end=a.cachedAbsoluteEnd,cOe(a,e,e+t,i,n),a.maxEnd=a.end,bre(this,a)}this._normalizeDeltaIfNecessary()}_normalizeDeltaIfNecessary(){this.requestNormalizeDelta&&(this.requestNormalizeDelta=!1,dOe(this))}}function dOe(s){let e=s.root,t=0;for(;e!==fi;){if(e.left!==fi&&!Il(e.left)){e=e.left;continue}if(e.right!==fi&&!Il(e.right)){t+=e.delta,e=e.right;continue}e.start=t+e.start,e.end=t+e.end,e.delta=0,ef(e),qn(e,!0),qn(e.left,!1),qn(e.right,!1),e===e.parent.right&&(t-=e.parent.delta),e=e.parent}qn(s.root,!1)}function BN(s,e,t,i){return s<t?!0:s>t||i===1?!1:i===2?!0:e}function cOe(s,e,t,i,n){const o=rOe(s),l=o===0||o===2,r=o===1||o===2,a=t-e,d=i,c=Math.min(a,d),h=s.start;let u=!1;const m=s.end;let p=!1;e<=h&&m<=t&&aOe(s)&&(s.start=e,u=!0,s.end=e,p=!0);{const b=n?1:a>0?2:0;!u&&BN(h,l,e,b)&&(u=!0),!p&&BN(m,r,e,b)&&(p=!0)}if(c>0&&!n){const b=a>d?2:0;!u&&BN(h,l,e+c,b)&&(u=!0),!p&&BN(m,r,e+c,b)&&(p=!0)}{const b=n?1:0;!u&&BN(h,l,t,b)&&(s.start=e+d,u=!0),!p&&BN(m,r,t,b)&&(s.end=e+d,p=!0)}const g=d-a;u||(s.start=Math.max(0,h+g)),p||(s.end=Math.max(0,m+g)),s.start>s.end&&(s.end=s.start)}function hOe(s,e,t){let i=s.root,n=0,o=0,l=0,r=0;const a=[];let d=0;for(;i!==fi;){if(Il(i)){qn(i.left,!1),qn(i.right,!1),i===i.parent.right&&(n-=i.parent.delta),i=i.parent;continue}if(!Il(i.left)){if(o=n+i.maxEnd,o<e){qn(i,!0);continue}if(i.left!==fi){i=i.left;continue}}if(l=n+i.start,l>t){qn(i,!0);continue}if(r=n+i.end,r>=e&&(i.setCachedOffsets(l,r,0),a[d++]=i),qn(i,!0),i.right!==fi&&!Il(i.right)){n+=i.delta,i=i.right;continue}}return qn(s.root,!1),a}function uOe(s,e,t,i){let n=s.root,o=0,l=0,r=0;const a=i-(t-e);for(;n!==fi;){if(Il(n)){qn(n.left,!1),qn(n.right,!1),n===n.parent.right&&(o-=n.parent.delta),ef(n),n=n.parent;continue}if(!Il(n.left)){if(l=o+n.maxEnd,l<e){qn(n,!0);continue}if(n.left!==fi){n=n.left;continue}}if(r=o+n.start,r>t){n.start+=a,n.end+=a,n.delta+=a,(n.delta<-1073741824||n.delta>1073741824)&&(s.requestNormalizeDelta=!0),qn(n,!0);continue}if(qn(n,!0),n.right!==fi&&!Il(n.right)){o+=n.delta,n=n.right;continue}}qn(s.root,!1)}function mOe(s,e){let t=s.root;const i=[];let n=0;for(;t!==fi;){if(Il(t)){qn(t.left,!1),qn(t.right,!1),t=t.parent;continue}if(t.left!==fi&&!Il(t.left)){t=t.left;continue}if(t.ownerId===e&&(i[n++]=t),qn(t,!0),t.right!==fi&&!Il(t.right)){t=t.right;continue}}return qn(s.root,!1),i}function pOe(s){let e=s.root;const t=[];let i=0;for(;e!==fi;){if(Il(e)){qn(e.left,!1),qn(e.right,!1),e=e.parent;continue}if(e.left!==fi&&!Il(e.left)){e=e.left;continue}if(e.right!==fi&&!Il(e.right)){e=e.right;continue}t[i++]=e,qn(e,!0)}return qn(s.root,!1),t}function gOe(s,e,t,i,n){let o=s.root,l=0,r=0,a=0;const d=[];let c=0;for(;o!==fi;){if(Il(o)){qn(o.left,!1),qn(o.right,!1),o===o.parent.right&&(l-=o.parent.delta),o=o.parent;continue}if(o.left!==fi&&!Il(o.left)){o=o.left;continue}r=l+o.start,a=l+o.end,o.setCachedOffsets(r,a,i);let h=!0;if(e&&o.ownerId&&o.ownerId!==e&&(h=!1),t&&sUe(o)&&(h=!1),n&&!oUe(o)&&(h=!1),h&&(d[c++]=o),qn(o,!0),o.right!==fi&&!Il(o.right)){l+=o.delta,o=o.right;continue}}return qn(s.root,!1),d}function bOe(s,e,t,i,n,o,l){let r=s.root,a=0,d=0,c=0,h=0;const u=[];let m=0;for(;r!==fi;){if(Il(r)){qn(r.left,!1),qn(r.right,!1),r===r.parent.right&&(a-=r.parent.delta),r=r.parent;continue}if(!Il(r.left)){if(d=a+r.maxEnd,d<e){qn(r,!0);continue}if(r.left!==fi){r=r.left;continue}}if(c=a+r.start,c>t){qn(r,!0);continue}if(h=a+r.end,h>=e){r.setCachedOffsets(c,h,o);let p=!0;i&&r.ownerId&&r.ownerId!==i&&(p=!1),n&&sUe(r)&&(p=!1),l&&!oUe(r)&&(p=!1),p&&(u[m++]=r)}if(qn(r,!0),r.right!==fi&&!Il(r.right)){a+=r.delta,r=r.right;continue}}return qn(s.root,!1),u}function bre(s,e){if(s.root===fi)return e.parent=fi,e.left=fi,e.right=fi,os(e,0),s.root=e,s.root;UOe(s,e),ab(e.parent);let t=e;for(;t!==s.root&&Aa(t.parent)===1;)if(t.parent===t.parent.parent.left){const i=t.parent.parent.right;Aa(i)===1?(os(t.parent,0),os(i,0),os(t.parent.parent,1),t=t.parent.parent):(t===t.parent.right&&(t=t.parent,fC(s,t)),os(t.parent,0),os(t.parent.parent,1),FC(s,t.parent.parent))}else{const i=t.parent.parent.left;Aa(i)===1?(os(t.parent,0),os(i,0),os(t.parent.parent,1),t=t.parent.parent):(t===t.parent.left&&(t=t.parent,FC(s,t)),os(t.parent,0),os(t.parent.parent,1),fC(s,t.parent.parent))}return os(s.root,0),e}function UOe(s,e){let t=0,i=s.root;const n=e.start,o=e.end;for(;;)if(FOe(n,o,i.start+t,i.end+t)<0)if(i.left===fi){e.start-=t,e.end-=t,e.maxEnd-=t,i.left=e;break}else i=i.left;else if(i.right===fi){e.start-=t+i.delta,e.end-=t+i.delta,e.maxEnd-=t+i.delta,i.right=e;break}else t+=i.delta,i=i.right;e.parent=i,e.left=fi,e.right=fi,os(e,1)}function Ure(s,e){let t,i;if(e.left===fi?(t=e.right,i=e,t.delta+=e.delta,(t.delta<-1073741824||t.delta>1073741824)&&(s.requestNormalizeDelta=!0),t.start+=e.delta,t.end+=e.delta):e.right===fi?(t=e.left,i=e):(i=fOe(e.right),t=i.right,t.start+=i.delta,t.end+=i.delta,t.delta+=i.delta,(t.delta<-1073741824||t.delta>1073741824)&&(s.requestNormalizeDelta=!0),i.start+=e.delta,i.end+=e.delta,i.delta=e.delta,(i.delta<-1073741824||i.delta>1073741824)&&(s.requestNormalizeDelta=!0)),i===s.root){s.root=t,os(t,0),e.detach(),T3(),ef(t),s.root.parent=fi;return}const n=Aa(i)===1;if(i===i.parent.left?i.parent.left=t:i.parent.right=t,i===e?t.parent=i.parent:(i.parent===e?t.parent=i:t.parent=i.parent,i.left=e.left,i.right=e.right,i.parent=e.parent,os(i,Aa(e)),e===s.root?s.root=i:e===e.parent.left?e.parent.left=i:e.parent.right=i,i.left!==fi&&(i.left.parent=i),i.right!==fi&&(i.right.parent=i)),e.detach(),n){ab(t.parent),i!==e&&(ab(i),ab(i.parent)),T3();return}ab(t),ab(t.parent),i!==e&&(ab(i),ab(i.parent));let o;for(;t!==s.root&&Aa(t)===0;)t===t.parent.left?(o=t.parent.right,Aa(o)===1&&(os(o,0),os(t.parent,1),fC(s,t.parent),o=t.parent.right),Aa(o.left)===0&&Aa(o.right)===0?(os(o,1),t=t.parent):(Aa(o.right)===0&&(os(o.left,0),os(o,1),FC(s,o),o=t.parent.right),os(o,Aa(t.parent)),os(t.parent,0),os(o.right,0),fC(s,t.parent),t=s.root)):(o=t.parent.left,Aa(o)===1&&(os(o,0),os(t.parent,1),FC(s,t.parent),o=t.parent.left),Aa(o.left)===0&&Aa(o.right)===0?(os(o,1),t=t.parent):(Aa(o.left)===0&&(os(o.right,0),os(o,1),fC(s,o),o=t.parent.left),os(o,Aa(t.parent)),os(t.parent,0),os(o.left,0),FC(s,t.parent),t=s.root));os(t,0),T3()}function fOe(s){for(;s.left!==fi;)s=s.left;return s}function T3(){fi.parent=fi,fi.delta=0,fi.start=0,fi.end=0}function fC(s,e){const t=e.right;t.delta+=e.delta,(t.delta<-1073741824||t.delta>1073741824)&&(s.requestNormalizeDelta=!0),t.start+=e.delta,t.end+=e.delta,e.right=t.left,t.left!==fi&&(t.left.parent=e),t.parent=e.parent,e.parent===fi?s.root=t:e===e.parent.left?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t,ef(e),ef(t)}function FC(s,e){const t=e.left;e.delta-=t.delta,(e.delta<-1073741824||e.delta>1073741824)&&(s.requestNormalizeDelta=!0),e.start-=t.delta,e.end-=t.delta,e.left=t.right,t.right!==fi&&(t.right.parent=e),t.parent=e.parent,e.parent===fi?s.root=t:e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t,ef(e),ef(t)}function rUe(s){let e=s.end;if(s.left!==fi){const t=s.left.maxEnd;t>e&&(e=t)}if(s.right!==fi){const t=s.right.maxEnd+s.delta;t>e&&(e=t)}return e}function ef(s){s.maxEnd=rUe(s)}function ab(s){for(;s!==fi;){const e=rUe(s);if(s.maxEnd===e)return;s.maxEnd=e,s=s.parent}}function FOe(s,e,t,i){return s===t?e-i:s-t}class cK{constructor(e,t){this.piece=e,this.color=t,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==Kt)return Xee(this.right);let e=this;for(;e.parent!==Kt&&e.parent.left!==e;)e=e.parent;return e.parent===Kt?Kt:e.parent}prev(){if(this.left!==Kt)return aUe(this.left);let e=this;for(;e.parent!==Kt&&e.parent.right!==e;)e=e.parent;return e.parent===Kt?Kt:e.parent}detach(){this.parent=null,this.left=null,this.right=null}}const Kt=new cK(null,0);Kt.parent=Kt;Kt.left=Kt;Kt.right=Kt;Kt.color=0;function Xee(s){for(;s.left!==Kt;)s=s.left;return s}function aUe(s){for(;s.right!==Kt;)s=s.right;return s}function Yee(s){return s===Kt?0:s.size_left+s.piece.length+Yee(s.right)}function zee(s){return s===Kt?0:s.lf_left+s.piece.lineFeedCnt+zee(s.right)}function B3(){Kt.parent=Kt}function ZC(s,e){const t=e.right;t.size_left+=e.size_left+(e.piece?e.piece.length:0),t.lf_left+=e.lf_left+(e.piece?e.piece.lineFeedCnt:0),e.right=t.left,t.left!==Kt&&(t.left.parent=e),t.parent=e.parent,e.parent===Kt?s.root=t:e.parent.left===e?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t}function AC(s,e){const t=e.left;e.left=t.right,t.right!==Kt&&(t.right.parent=e),t.parent=e.parent,e.size_left-=t.size_left+(t.piece?t.piece.length:0),e.lf_left-=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),e.parent===Kt?s.root=t:e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t}function ik(s,e){let t,i;if(e.left===Kt?(i=e,t=i.right):e.right===Kt?(i=e,t=i.left):(i=Xee(e.right),t=i.right),i===s.root){s.root=t,t.color=0,e.detach(),B3(),s.root.parent=Kt;return}const n=i.color===1;if(i===i.parent.left?i.parent.left=t:i.parent.right=t,i===e?(t.parent=i.parent,Py(s,t)):(i.parent===e?t.parent=i:t.parent=i.parent,Py(s,t),i.left=e.left,i.right=e.right,i.parent=e.parent,i.color=e.color,e===s.root?s.root=i:e===e.parent.left?e.parent.left=i:e.parent.right=i,i.left!==Kt&&(i.left.parent=i),i.right!==Kt&&(i.right.parent=i),i.size_left=e.size_left,i.lf_left=e.lf_left,Py(s,i)),e.detach(),t.parent.left===t){const l=Yee(t),r=zee(t);if(l!==t.parent.size_left||r!==t.parent.lf_left){const a=l-t.parent.size_left,d=r-t.parent.lf_left;t.parent.size_left=l,t.parent.lf_left=r,sg(s,t.parent,a,d)}}if(Py(s,t.parent),n){B3();return}let o;for(;t!==s.root&&t.color===0;)t===t.parent.left?(o=t.parent.right,o.color===1&&(o.color=0,t.parent.color=1,ZC(s,t.parent),o=t.parent.right),o.left.color===0&&o.right.color===0?(o.color=1,t=t.parent):(o.right.color===0&&(o.left.color=0,o.color=1,AC(s,o),o=t.parent.right),o.color=t.parent.color,t.parent.color=0,o.right.color=0,ZC(s,t.parent),t=s.root)):(o=t.parent.left,o.color===1&&(o.color=0,t.parent.color=1,AC(s,t.parent),o=t.parent.left),o.left.color===0&&o.right.color===0?(o.color=1,t=t.parent):(o.left.color===0&&(o.right.color=0,o.color=1,ZC(s,o),o=t.parent.left),o.color=t.parent.color,t.parent.color=0,o.left.color=0,AC(s,t.parent),t=s.root));t.color=0,B3()}function fre(s,e){for(Py(s,e);e!==s.root&&e.parent.color===1;)if(e.parent===e.parent.parent.left){const t=e.parent.parent.right;t.color===1?(e.parent.color=0,t.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,ZC(s,e)),e.parent.color=0,e.parent.parent.color=1,AC(s,e.parent.parent))}else{const t=e.parent.parent.left;t.color===1?(e.parent.color=0,t.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,AC(s,e)),e.parent.color=0,e.parent.parent.color=1,ZC(s,e.parent.parent))}s.root.color=0}function sg(s,e,t,i){for(;e!==s.root&&e!==Kt;)e.parent.left===e&&(e.parent.size_left+=t,e.parent.lf_left+=i),e=e.parent}function Py(s,e){let t=0,i=0;if(e!==s.root){for(;e!==s.root&&e===e.parent.right;)e=e.parent;if(e!==s.root)for(e=e.parent,t=Yee(e.left)-e.size_left,i=zee(e.left)-e.lf_left,e.size_left+=t,e.lf_left+=i;e!==s.root&&(t!==0||i!==0);)e.parent.left===e&&(e.parent.size_left+=t,e.parent.lf_left+=i),e=e.parent}}const Op=65535;function dUe(s){let e;return s[s.length-1]<65536?e=new Uint16Array(s.length):e=new Uint32Array(s.length),e.set(s,0),e}class ZOe{constructor(e,t,i,n,o){this.lineStarts=e,this.cr=t,this.lf=i,this.crlf=n,this.isBasicASCII=o}}function bg(s,e=!0){const t=[0];let i=1;for(let n=0,o=s.length;n<o;n++){const l=s.charCodeAt(n);l===13?n+1<o&&s.charCodeAt(n+1)===10?(t[i++]=n+2,n++):t[i++]=n+1:l===10&&(t[i++]=n+1)}return e?dUe(t):t}function AOe(s,e){s.length=0,s[0]=0;let t=1,i=0,n=0,o=0,l=!0;for(let a=0,d=e.length;a<d;a++){const c=e.charCodeAt(a);c===13?a+1<d&&e.charCodeAt(a+1)===10?(o++,s[t++]=a+2,a++):(i++,s[t++]=a+1):c===10?(n++,s[t++]=a+1):l&&c!==9&&(c<32||c>126)&&(l=!1)}const r=new ZOe(dUe(s),i,n,o,l);return s.length=0,r}class qa{constructor(e,t,i,n,o){this.bufferIndex=e,this.start=t,this.end=i,this.lineFeedCnt=n,this.length=o}}class sZ{constructor(e,t){this.buffer=e,this.lineStarts=t}}class NOe{constructor(e,t){this._pieces=[],this._tree=e,this._BOM=t,this._index=0,e.root!==Kt&&e.iterate(e.root,i=>(i!==Kt&&this._pieces.push(i.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class ROe{constructor(e){this._limit=e,this._cache=[]}get(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartOffset<=e&&i.nodeStartOffset+i.node.piece.length>=e)return i}return null}get2(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartLineNumber&&i.nodeStartLineNumber<e&&i.nodeStartLineNumber+i.node.piece.lineFeedCnt>=e)return i}return null}set(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)}validate(e){let t=!1;const i=this._cache;for(let n=0;n<i.length;n++){const o=i[n];if(o.node.parent===null||o.nodeStartOffset>=e){i[n]=null,t=!0;continue}}if(t){const n=[];for(const o of i)o!==null&&n.push(o);this._cache=n}}}class SOe{constructor(e,t,i){this.create(e,t,i)}create(e,t,i){this._buffers=[new sZ("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=Kt,this._lineCnt=1,this._length=0,this._EOL=t,this._EOLLength=t.length,this._EOLNormalized=i;let n=null;for(let o=0,l=e.length;o<l;o++)if(e[o].buffer.length>0){e[o].lineStarts||(e[o].lineStarts=bg(e[o].buffer));const r=new qa(o+1,{line:0,column:0},{line:e[o].lineStarts.length-1,column:e[o].buffer.length-e[o].lineStarts[e[o].lineStarts.length-1]},e[o].lineStarts.length-1,e[o].buffer.length);this._buffers.push(e[o]),n=this.rbInsertRight(n,r)}this._searchCache=new ROe(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(e){const t=Op,i=t-Math.floor(t/3),n=i*2;let o="",l=0;const r=[];if(this.iterate(this.root,a=>{const d=this.getNodeContent(a),c=d.length;if(l<=i||l+c<n)return o+=d,l+=c,!0;const h=o.replace(/\r\n|\r|\n/g,e);return r.push(new sZ(h,bg(h))),o=d,l=c,!0}),l>0){const a=o.replace(/\r\n|\r|\n/g,e);r.push(new sZ(a,bg(a)))}this.create(r,e,!0)}getEOL(){return this._EOL}setEOL(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)}createSnapshot(e){return new NOe(this,e)}getOffsetAt(e,t){let i=0,n=this.root;for(;n!==Kt;)if(n.left!==Kt&&n.lf_left+1>=e)n=n.left;else if(n.lf_left+n.piece.lineFeedCnt+1>=e){i+=n.size_left;const o=this.getAccumulatedValue(n,e-n.lf_left-2);return i+=o+t-1}else e-=n.lf_left+n.piece.lineFeedCnt,i+=n.size_left+n.piece.length,n=n.right;return i}getPositionAt(e){e=Math.floor(e),e=Math.max(0,e);let t=this.root,i=0;const n=e;for(;t!==Kt;)if(t.size_left!==0&&t.size_left>=e)t=t.left;else if(t.size_left+t.piece.length>=e){const o=this.getIndexOf(t,e-t.size_left);if(i+=t.lf_left+o.index,o.index===0){const l=this.getOffsetAt(i+1,1),r=n-l;return new oe(i+1,r+1)}return new oe(i+1,o.remainder+1)}else if(e-=t.size_left+t.piece.length,i+=t.lf_left+t.piece.lineFeedCnt,t.right===Kt){const o=this.getOffsetAt(i+1,1),l=n-e-o;return new oe(i+1,l+1)}else t=t.right;return new oe(1,1)}getValueInRange(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";const i=this.nodeAt2(e.startLineNumber,e.startColumn),n=this.nodeAt2(e.endLineNumber,e.endColumn),o=this.getValueInRange2(i,n);return t?t!==this._EOL||!this._EOLNormalized?o.replace(/\r\n|\r|\n/g,t):t===this.getEOL()&&this._EOLNormalized?o:o.replace(/\r\n|\r|\n/g,t):o}getValueInRange2(e,t){if(e.node===t.node){const r=e.node,a=this._buffers[r.piece.bufferIndex].buffer,d=this.offsetInBuffer(r.piece.bufferIndex,r.piece.start);return a.substring(d+e.remainder,d+t.remainder)}let i=e.node;const n=this._buffers[i.piece.bufferIndex].buffer,o=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);let l=n.substring(o+e.remainder,o+i.piece.length);for(i=i.next();i!==Kt;){const r=this._buffers[i.piece.bufferIndex].buffer,a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(i===t.node){l+=r.substring(a,a+t.remainder);break}else l+=r.substr(a,i.piece.length);i=i.next()}return l}getLinesContent(){const e=[];let t=0,i="",n=!1;return this.iterate(this.root,o=>{if(o===Kt)return!0;const l=o.piece;let r=l.length;if(r===0)return!0;const a=this._buffers[l.bufferIndex].buffer,d=this._buffers[l.bufferIndex].lineStarts,c=l.start.line,h=l.end.line;let u=d[c]+l.start.column;if(n&&(a.charCodeAt(u)===10&&(u++,r--),e[t++]=i,i="",n=!1,r===0))return!0;if(c===h)return!this._EOLNormalized&&a.charCodeAt(u+r-1)===13?(n=!0,i+=a.substr(u,r-1)):i+=a.substr(u,r),!0;i+=this._EOLNormalized?a.substring(u,Math.max(u,d[c+1]-this._EOLLength)):a.substring(u,d[c+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;for(let m=c+1;m<h;m++)i=this._EOLNormalized?a.substring(d[m],d[m+1]-this._EOLLength):a.substring(d[m],d[m+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;return!this._EOLNormalized&&a.charCodeAt(d[h]+l.end.column-1)===13?(n=!0,l.end.column===0?t--:i=a.substr(d[h],l.end.column-1)):i=a.substr(d[h],l.end.column),!0}),n&&(e[t++]=i,i=""),e[t++]=i,e}getLength(){return this._length}getLineCount(){return this._lineCnt}getLineContent(e){return this._lastVisitedLine.lineNumber===e?this._lastVisitedLine.value:(this._lastVisitedLine.lineNumber=e,e===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(e):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(e,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/,""),this._lastVisitedLine.value)}_getCharCode(e){if(e.remainder===e.node.piece.length){const t=e.node.next();if(!t)return 0;const i=this._buffers[t.piece.bufferIndex],n=this.offsetInBuffer(t.piece.bufferIndex,t.piece.start);return i.buffer.charCodeAt(n)}else{const t=this._buffers[e.node.piece.bufferIndex],n=this.offsetInBuffer(e.node.piece.bufferIndex,e.node.piece.start)+e.remainder;return t.buffer.charCodeAt(n)}}getLineCharCode(e,t){const i=this.nodeAt2(e,t+1);return this._getCharCode(i)}getLineLength(e){if(e===this.getLineCount()){const t=this.getOffsetAt(e,1);return this.getLength()-t}return this.getOffsetAt(e+1,1)-this.getOffsetAt(e,1)-this._EOLLength}findMatchesInNode(e,t,i,n,o,l,r,a,d,c,h){const u=this._buffers[e.piece.bufferIndex],m=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start),p=this.offsetInBuffer(e.piece.bufferIndex,o),g=this.offsetInBuffer(e.piece.bufferIndex,l);let b;const f={line:0,column:0};let Z,A;t._wordSeparators?(Z=u.buffer.substring(p,g),A=N=>N+p,t.reset(0)):(Z=u.buffer,A=N=>N,t.reset(p));do if(b=t.next(Z),b){if(A(b.index)>=g)return c;this.positionInBuffer(e,A(b.index)-m,f);const N=this.getLineFeedCnt(e.piece.bufferIndex,o,f),W=f.line===o.line?f.column-o.column+n:f.column+1,Q=W+b[0].length;if(h[c++]=qF(new v(i+N,W,i+N,Q),b,a),A(b.index)+b[0].length>=g||c>=d)return c}while(b);return c}findMatchesLineByLine(e,t,i,n){const o=[];let l=0;const r=new dS(t.wordSeparators,t.regex);let a=this.nodeAt2(e.startLineNumber,e.startColumn);if(a===null)return[];const d=this.nodeAt2(e.endLineNumber,e.endColumn);if(d===null)return[];let c=this.positionInBuffer(a.node,a.remainder);const h=this.positionInBuffer(d.node,d.remainder);if(a.node===d.node)return this.findMatchesInNode(a.node,r,e.startLineNumber,e.startColumn,c,h,t,i,n,l,o),o;let u=e.startLineNumber,m=a.node;for(;m!==d.node;){const g=this.getLineFeedCnt(m.piece.bufferIndex,c,m.piece.end);if(g>=1){const f=this._buffers[m.piece.bufferIndex].lineStarts,Z=this.offsetInBuffer(m.piece.bufferIndex,m.piece.start),A=f[c.line+g],N=u===e.startLineNumber?e.startColumn:1;if(l=this.findMatchesInNode(m,r,u,N,c,this.positionInBuffer(m,A-Z),t,i,n,l,o),l>=n)return o;u+=g}const b=u===e.startLineNumber?e.startColumn-1:0;if(u===e.endLineNumber){const f=this.getLineContent(u).substring(b,e.endColumn-1);return l=this._findMatchesInLine(t,r,f,e.endLineNumber,b,l,o,i,n),o}if(l=this._findMatchesInLine(t,r,this.getLineContent(u).substr(b),u,b,l,o,i,n),l>=n)return o;u++,a=this.nodeAt2(u,1),m=a.node,c=this.positionInBuffer(a.node,a.remainder)}if(u===e.endLineNumber){const g=u===e.startLineNumber?e.startColumn-1:0,b=this.getLineContent(u).substring(g,e.endColumn-1);return l=this._findMatchesInLine(t,r,b,e.endLineNumber,g,l,o,i,n),o}const p=u===e.startLineNumber?e.startColumn:1;return l=this.findMatchesInNode(d.node,r,u,p,c,h,t,i,n,l,o),o}_findMatchesInLine(e,t,i,n,o,l,r,a,d){const c=e.wordSeparators;if(!a&&e.simpleSearch){const u=e.simpleSearch,m=u.length,p=i.length;let g=-m;for(;(g=i.indexOf(u,g+m))!==-1;)if((!c||_$(c,i,p,g,m))&&(r[l++]=new dM(new v(n,g+1+o,n,g+1+m+o),null),l>=d))return l;return l}let h;t.reset(0);do if(h=t.next(i),h&&(r[l++]=qF(new v(n,h.index+1+o,n,h.index+1+h[0].length+o),h,a),l>=d))return l;while(h);return l}insert(e,t,i=!1){if(this._EOLNormalized=this._EOLNormalized&&i,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==Kt){const{node:n,remainder:o,nodeStartOffset:l}=this.nodeAt(e),r=n.piece,a=r.bufferIndex,d=this.positionInBuffer(n,o);if(n.piece.bufferIndex===0&&r.end.line===this._lastChangeBufferPos.line&&r.end.column===this._lastChangeBufferPos.column&&l+r.length===e&&t.length<Op){this.appendToNode(n,t),this.computeBufferMetadata();return}if(l===e)this.insertContentToNodeLeft(t,n),this._searchCache.validate(e);else if(l+n.piece.length>e){const c=[];let h=new qa(r.bufferIndex,d,r.end,this.getLineFeedCnt(r.bufferIndex,d,r.end),this.offsetInBuffer(a,r.end)-this.offsetInBuffer(a,d));if(this.shouldCheckCRLF()&&this.endWithCR(t)&&this.nodeCharCodeAt(n,o)===10){const g={line:h.start.line+1,column:0};h=new qa(h.bufferIndex,g,h.end,this.getLineFeedCnt(h.bufferIndex,g,h.end),h.length-1),t+=`
- `}if(this.shouldCheckCRLF()&&this.startWithLF(t))if(this.nodeCharCodeAt(n,o-1)===13){const g=this.positionInBuffer(n,o-1);this.deleteNodeTail(n,g),t="\r"+t,n.piece.length===0&&c.push(n)}else this.deleteNodeTail(n,d);else this.deleteNodeTail(n,d);const u=this.createNewPieces(t);h.length>0&&this.rbInsertRight(n,h);let m=n;for(let p=0;p<u.length;p++)m=this.rbInsertRight(m,u[p]);this.deleteNodes(c)}else this.insertContentToNodeRight(t,n)}else{const n=this.createNewPieces(t);let o=this.rbInsertLeft(null,n[0]);for(let l=1;l<n.length;l++)o=this.rbInsertRight(o,n[l])}this.computeBufferMetadata()}delete(e,t){if(this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",t<=0||this.root===Kt)return;const i=this.nodeAt(e),n=this.nodeAt(e+t),o=i.node,l=n.node;if(o===l){const u=this.positionInBuffer(o,i.remainder),m=this.positionInBuffer(o,n.remainder);if(i.nodeStartOffset===e){if(t===o.piece.length){const p=o.next();ik(this,o),this.validateCRLFWithPrevNode(p),this.computeBufferMetadata();return}this.deleteNodeHead(o,m),this._searchCache.validate(e),this.validateCRLFWithPrevNode(o),this.computeBufferMetadata();return}if(i.nodeStartOffset+o.piece.length===e+t){this.deleteNodeTail(o,u),this.validateCRLFWithNextNode(o),this.computeBufferMetadata();return}this.shrinkNode(o,u,m),this.computeBufferMetadata();return}const r=[],a=this.positionInBuffer(o,i.remainder);this.deleteNodeTail(o,a),this._searchCache.validate(e),o.piece.length===0&&r.push(o);const d=this.positionInBuffer(l,n.remainder);this.deleteNodeHead(l,d),l.piece.length===0&&r.push(l);const c=o.next();for(let u=c;u!==Kt&&u!==l;u=u.next())r.push(u);const h=o.piece.length===0?o.prev():o;this.deleteNodes(r),this.validateCRLFWithNextNode(h),this.computeBufferMetadata()}insertContentToNodeLeft(e,t){const i=[];if(this.shouldCheckCRLF()&&this.endWithCR(e)&&this.startWithLF(t)){const l=t.piece,r={line:l.start.line+1,column:0},a=new qa(l.bufferIndex,r,l.end,this.getLineFeedCnt(l.bufferIndex,r,l.end),l.length-1);t.piece=a,e+=`
- `,sg(this,t,-1,-1),t.piece.length===0&&i.push(t)}const n=this.createNewPieces(e);let o=this.rbInsertLeft(t,n[n.length-1]);for(let l=n.length-2;l>=0;l--)o=this.rbInsertLeft(o,n[l]);this.validateCRLFWithPrevNode(o),this.deleteNodes(i)}insertContentToNodeRight(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+=`
- `);const i=this.createNewPieces(e),n=this.rbInsertRight(t,i[0]);let o=n;for(let l=1;l<i.length;l++)o=this.rbInsertRight(o,i[l]);this.validateCRLFWithPrevNode(n)}positionInBuffer(e,t,i){const n=e.piece,o=e.piece.bufferIndex,l=this._buffers[o].lineStarts,a=l[n.start.line]+n.start.column+t;let d=n.start.line,c=n.end.line,h=0,u=0,m=0;for(;d<=c&&(h=d+(c-d)/2|0,m=l[h],h!==c);)if(u=l[h+1],a<m)c=h-1;else if(a>=u)d=h+1;else break;return i?(i.line=h,i.column=a-m,null):{line:h,column:a-m}}getLineFeedCnt(e,t,i){if(i.column===0)return i.line-t.line;const n=this._buffers[e].lineStarts;if(i.line===n.length-1)return i.line-t.line;const o=n[i.line+1],l=n[i.line]+i.column;if(o>l+1)return i.line-t.line;const r=l-1;return this._buffers[e].buffer.charCodeAt(r)===13?i.line-t.line+1:i.line-t.line}offsetInBuffer(e,t){return this._buffers[e].lineStarts[t.line]+t.column}deleteNodes(e){for(let t=0;t<e.length;t++)ik(this,e[t])}createNewPieces(e){if(e.length>Op){const c=[];for(;e.length>Op;){const u=e.charCodeAt(Op-1);let m;u===13||u>=55296&&u<=56319?(m=e.substring(0,Op-1),e=e.substring(Op-1)):(m=e.substring(0,Op),e=e.substring(Op));const p=bg(m);c.push(new qa(this._buffers.length,{line:0,column:0},{line:p.length-1,column:m.length-p[p.length-1]},p.length-1,m.length)),this._buffers.push(new sZ(m,p))}const h=bg(e);return c.push(new qa(this._buffers.length,{line:0,column:0},{line:h.length-1,column:e.length-h[h.length-1]},h.length-1,e.length)),this._buffers.push(new sZ(e,h)),c}let t=this._buffers[0].buffer.length;const i=bg(e,!1);let n=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===t&&t!==0&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},n=this._lastChangeBufferPos;for(let c=0;c<i.length;c++)i[c]+=t+1;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+="_"+e,t+=1}else{if(t!==0)for(let c=0;c<i.length;c++)i[c]+=t;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+=e}const o=this._buffers[0].buffer.length,l=this._buffers[0].lineStarts.length-1,r=o-this._buffers[0].lineStarts[l],a={line:l,column:r},d=new qa(0,n,a,this.getLineFeedCnt(0,n,a),o-t);return this._lastChangeBufferPos=a,[d]}getLineRawContent(e,t=0){let i=this.root,n="";const o=this._searchCache.get2(e);if(o){i=o.node;const l=this.getAccumulatedValue(i,e-o.nodeStartLineNumber-1),r=this._buffers[i.piece.bufferIndex].buffer,a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(o.nodeStartLineNumber+i.piece.lineFeedCnt===e)n=r.substring(a+l,a+i.piece.length);else{const d=this.getAccumulatedValue(i,e-o.nodeStartLineNumber);return r.substring(a+l,a+d-t)}}else{let l=0;const r=e;for(;i!==Kt;)if(i.left!==Kt&&i.lf_left>=e-1)i=i.left;else if(i.lf_left+i.piece.lineFeedCnt>e-1){const a=this.getAccumulatedValue(i,e-i.lf_left-2),d=this.getAccumulatedValue(i,e-i.lf_left-1),c=this._buffers[i.piece.bufferIndex].buffer,h=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return l+=i.size_left,this._searchCache.set({node:i,nodeStartOffset:l,nodeStartLineNumber:r-(e-1-i.lf_left)}),c.substring(h+a,h+d-t)}else if(i.lf_left+i.piece.lineFeedCnt===e-1){const a=this.getAccumulatedValue(i,e-i.lf_left-2),d=this._buffers[i.piece.bufferIndex].buffer,c=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n=d.substring(c+a,c+i.piece.length);break}else e-=i.lf_left+i.piece.lineFeedCnt,l+=i.size_left+i.piece.length,i=i.right}for(i=i.next();i!==Kt;){const l=this._buffers[i.piece.bufferIndex].buffer;if(i.piece.lineFeedCnt>0){const r=this.getAccumulatedValue(i,0),a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return n+=l.substring(a,a+r-t),n}else{const r=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n+=l.substr(r,i.piece.length)}i=i.next()}return n}computeBufferMetadata(){let e=this.root,t=1,i=0;for(;e!==Kt;)t+=e.lf_left+e.piece.lineFeedCnt,i+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=i,this._searchCache.validate(this._length)}getIndexOf(e,t){const i=e.piece,n=this.positionInBuffer(e,t),o=n.line-i.start.line;if(this.offsetInBuffer(i.bufferIndex,i.end)-this.offsetInBuffer(i.bufferIndex,i.start)===t){const l=this.getLineFeedCnt(e.piece.bufferIndex,i.start,n);if(l!==o)return{index:l,remainder:0}}return{index:o,remainder:n.column}}getAccumulatedValue(e,t){if(t<0)return 0;const i=e.piece,n=this._buffers[i.bufferIndex].lineStarts,o=i.start.line+t+1;return o>i.end.line?n[i.end.line]+i.end.column-n[i.start.line]-i.start.column:n[o]-n[i.start.line]-i.start.column}deleteNodeTail(e,t){const i=e.piece,n=i.lineFeedCnt,o=this.offsetInBuffer(i.bufferIndex,i.end),l=t,r=this.offsetInBuffer(i.bufferIndex,l),a=this.getLineFeedCnt(i.bufferIndex,i.start,l),d=a-n,c=r-o,h=i.length+c;e.piece=new qa(i.bufferIndex,i.start,l,a,h),sg(this,e,c,d)}deleteNodeHead(e,t){const i=e.piece,n=i.lineFeedCnt,o=this.offsetInBuffer(i.bufferIndex,i.start),l=t,r=this.getLineFeedCnt(i.bufferIndex,l,i.end),a=this.offsetInBuffer(i.bufferIndex,l),d=r-n,c=o-a,h=i.length+c;e.piece=new qa(i.bufferIndex,l,i.end,r,h),sg(this,e,c,d)}shrinkNode(e,t,i){const n=e.piece,o=n.start,l=n.end,r=n.length,a=n.lineFeedCnt,d=t,c=this.getLineFeedCnt(n.bufferIndex,n.start,d),h=this.offsetInBuffer(n.bufferIndex,t)-this.offsetInBuffer(n.bufferIndex,o);e.piece=new qa(n.bufferIndex,n.start,d,c,h),sg(this,e,h-r,c-a);const u=new qa(n.bufferIndex,i,l,this.getLineFeedCnt(n.bufferIndex,i,l),this.offsetInBuffer(n.bufferIndex,l)-this.offsetInBuffer(n.bufferIndex,i)),m=this.rbInsertRight(e,u);this.validateCRLFWithPrevNode(m)}appendToNode(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+=`
- `);const i=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),n=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;const o=bg(t,!1);for(let m=0;m<o.length;m++)o[m]+=n;if(i){const m=this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-2];this._buffers[0].lineStarts.pop(),this._lastChangeBufferPos={line:this._lastChangeBufferPos.line-1,column:n-m}}this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(o.slice(1));const l=this._buffers[0].lineStarts.length-1,r=this._buffers[0].buffer.length-this._buffers[0].lineStarts[l],a={line:l,column:r},d=e.piece.length+t.length,c=e.piece.lineFeedCnt,h=this.getLineFeedCnt(0,e.piece.start,a),u=h-c;e.piece=new qa(e.piece.bufferIndex,e.piece.start,a,h,d),this._lastChangeBufferPos=a,sg(this,e,t.length,u)}nodeAt(e){let t=this.root;const i=this._searchCache.get(e);if(i)return{node:i.node,nodeStartOffset:i.nodeStartOffset,remainder:e-i.nodeStartOffset};let n=0;for(;t!==Kt;)if(t.size_left>e)t=t.left;else if(t.size_left+t.piece.length>=e){n+=t.size_left;const o={node:t,remainder:e-t.size_left,nodeStartOffset:n};return this._searchCache.set(o),o}else e-=t.size_left+t.piece.length,n+=t.size_left+t.piece.length,t=t.right;return null}nodeAt2(e,t){let i=this.root,n=0;for(;i!==Kt;)if(i.left!==Kt&&i.lf_left>=e-1)i=i.left;else if(i.lf_left+i.piece.lineFeedCnt>e-1){const o=this.getAccumulatedValue(i,e-i.lf_left-2),l=this.getAccumulatedValue(i,e-i.lf_left-1);return n+=i.size_left,{node:i,remainder:Math.min(o+t-1,l),nodeStartOffset:n}}else if(i.lf_left+i.piece.lineFeedCnt===e-1){const o=this.getAccumulatedValue(i,e-i.lf_left-2);if(o+t-1<=i.piece.length)return{node:i,remainder:o+t-1,nodeStartOffset:n};t-=i.piece.length-o;break}else e-=i.lf_left+i.piece.lineFeedCnt,n+=i.size_left+i.piece.length,i=i.right;for(i=i.next();i!==Kt;){if(i.piece.lineFeedCnt>0){const o=this.getAccumulatedValue(i,0),l=this.offsetOfNode(i);return{node:i,remainder:Math.min(t-1,o),nodeStartOffset:l}}else if(i.piece.length>=t-1){const o=this.offsetOfNode(i);return{node:i,remainder:t-1,nodeStartOffset:o}}else t-=i.piece.length;i=i.next()}return null}nodeCharCodeAt(e,t){if(e.piece.lineFeedCnt<1)return-1;const i=this._buffers[e.piece.bufferIndex],n=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return i.buffer.charCodeAt(n)}offsetOfNode(e){if(!e)return 0;let t=e.size_left;for(;e!==this.root;)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===`
- `)}startWithLF(e){if(typeof e=="string")return e.charCodeAt(0)===10;if(e===Kt||e.piece.lineFeedCnt===0)return!1;const t=e.piece,i=this._buffers[t.bufferIndex].lineStarts,n=t.start.line,o=i[n]+t.start.column;return n===i.length-1||i[n+1]>o+1?!1:this._buffers[t.bufferIndex].buffer.charCodeAt(o)===10}endWithCR(e){return typeof e=="string"?e.charCodeAt(e.length-1)===13:e===Kt||e.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(e,e.piece.length-1)===13}validateCRLFWithPrevNode(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){const t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}}validateCRLFWithNextNode(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}}fixCRLF(e,t){const i=[],n=this._buffers[e.piece.bufferIndex].lineStarts;let o;e.piece.end.column===0?o={line:e.piece.end.line-1,column:n[e.piece.end.line]-n[e.piece.end.line-1]-1}:o={line:e.piece.end.line,column:e.piece.end.column-1};const l=e.piece.length-1,r=e.piece.lineFeedCnt-1;e.piece=new qa(e.piece.bufferIndex,e.piece.start,o,r,l),sg(this,e,-1,-1),e.piece.length===0&&i.push(e);const a={line:t.piece.start.line+1,column:0},d=t.piece.length-1,c=this.getLineFeedCnt(t.piece.bufferIndex,a,t.piece.end);t.piece=new qa(t.piece.bufferIndex,a,t.piece.end,c,d),sg(this,t,-1,-1),t.piece.length===0&&i.push(t);const h=this.createNewPieces(`\r
- `);this.rbInsertRight(e,h[0]);for(let u=0;u<i.length;u++)ik(this,i[u])}adjustCarriageReturnFromNext(e,t){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const i=t.next();if(this.startWithLF(i)){if(e+=`
- `,i.piece.length===1)ik(this,i);else{const n=i.piece,o={line:n.start.line+1,column:0},l=n.length-1,r=this.getLineFeedCnt(n.bufferIndex,o,n.end);i.piece=new qa(n.bufferIndex,o,n.end,r,l),sg(this,i,-1,-1)}return!0}}return!1}iterate(e,t){if(e===Kt)return t(Kt);const i=this.iterate(e.left,t);return i&&t(e)&&this.iterate(e.right,t)}getNodeContent(e){if(e===Kt)return"";const t=this._buffers[e.piece.bufferIndex],i=e.piece,n=this.offsetInBuffer(i.bufferIndex,i.start),o=this.offsetInBuffer(i.bufferIndex,i.end);return t.buffer.substring(n,o)}getPieceContent(e){const t=this._buffers[e.bufferIndex],i=this.offsetInBuffer(e.bufferIndex,e.start),n=this.offsetInBuffer(e.bufferIndex,e.end);return t.buffer.substring(i,n)}rbInsertRight(e,t){const i=new cK(t,1);if(i.left=Kt,i.right=Kt,i.parent=Kt,i.size_left=0,i.lf_left=0,this.root===Kt)this.root=i,i.color=0;else if(e.right===Kt)e.right=i,i.parent=e;else{const o=Xee(e.right);o.left=i,i.parent=o}return fre(this,i),i}rbInsertLeft(e,t){const i=new cK(t,1);if(i.left=Kt,i.right=Kt,i.parent=Kt,i.size_left=0,i.lf_left=0,this.root===Kt)this.root=i,i.color=0;else if(e.left===Kt)e.left=i,i.parent=e;else{const n=aUe(e.left);n.right=i,i.parent=n}return fre(this,i),i}}class WW extends de{constructor(e,t,i,n,o,l,r){super(),this._onDidChangeContent=this._register(new re),this._BOM=t,this._mightContainNonBasicASCII=!l,this._mightContainRTL=n,this._mightContainUnusualLineTerminators=o,this._pieceTree=new SOe(e,i,r)}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(e){return this._pieceTree.createSnapshot(e?this._BOM:"")}getOffsetAt(e,t){return this._pieceTree.getOffsetAt(e,t)}getPositionAt(e){return this._pieceTree.getPositionAt(e)}getRangeAt(e,t){const i=e+t,n=this.getPositionAt(e),o=this.getPositionAt(i);return new v(n.lineNumber,n.column,o.lineNumber,o.column)}getValueInRange(e,t=0){if(e.isEmpty())return"";const i=this._getEndOfLine(t);return this._pieceTree.getValueInRange(e,i)}getValueLengthInRange(e,t=0){if(e.isEmpty())return 0;if(e.startLineNumber===e.endLineNumber)return e.endColumn-e.startColumn;const i=this.getOffsetAt(e.startLineNumber,e.startColumn),n=this.getOffsetAt(e.endLineNumber,e.endColumn);let o=0;const l=this._getEndOfLine(t),r=this.getEOL();if(l.length!==r.length){const a=l.length-r.length,d=e.endLineNumber-e.startLineNumber;o=a*d}return n-i+o}getCharacterCountInRange(e,t=0){if(this._mightContainNonBasicASCII){let i=0;const n=e.startLineNumber,o=e.endLineNumber;for(let l=n;l<=o;l++){const r=this.getLineContent(l),a=l===n?e.startColumn-1:0,d=l===o?e.endColumn-1:r.length;for(let c=a;c<d;c++)xo(r.charCodeAt(c))?(i=i+1,c=c+1):i=i+1}return i+=this._getEndOfLine(t).length*(o-n),i}return this.getValueLengthInRange(e,t)}getLength(){return this._pieceTree.getLength()}getLineCount(){return this._pieceTree.getLineCount()}getLinesContent(){return this._pieceTree.getLinesContent()}getLineContent(e){return this._pieceTree.getLineContent(e)}getLineCharCode(e,t){return this._pieceTree.getLineCharCode(e,t)}getLineLength(e){return this._pieceTree.getLineLength(e)}getLineFirstNonWhitespaceColumn(e){const t=Wr(this.getLineContent(e));return t===-1?0:t+1}getLineLastNonWhitespaceColumn(e){const t=Xu(this.getLineContent(e));return t===-1?0:t+2}_getEndOfLine(e){switch(e){case 1:return`
- `;case 2:return`\r
- `;case 0:return this.getEOL();default:throw new Error("Unknown EOL preference")}}setEOL(e){this._pieceTree.setEOL(e)}applyEdits(e,t,i){let n=this._mightContainRTL,o=this._mightContainUnusualLineTerminators,l=this._mightContainNonBasicASCII,r=!0,a=[];for(let g=0;g<e.length;g++){const b=e[g];r&&b._isTracked&&(r=!1);const f=b.range;if(b.text){let Q=!0;l||(Q=!iB(b.text),l=Q),!n&&Q&&(n=$W(b.text)),!o&&Q&&(o=tge(b.text))}let Z="",A=0,N=0,W=0;if(b.text){let Q;[A,N,W,Q]=KU(b.text);const R=this.getEOL();Q===0||Q===(R===`\r
- `?2:1)?Z=b.text:Z=b.text.replace(/\r\n|\r|\n/g,R)}a[g]={sortIndex:g,identifier:b.identifier||null,range:f,rangeOffset:this.getOffsetAt(f.startLineNumber,f.startColumn),rangeLength:this.getValueLengthInRange(f),text:Z,eolCount:A,firstLineLength:N,lastLineLength:W,forceMoveMarkers:!!b.forceMoveMarkers,isAutoWhitespaceEdit:b.isAutoWhitespaceEdit||!1}}a.sort(WW._sortOpsAscending);let d=!1;for(let g=0,b=a.length-1;g<b;g++){const f=a[g].range.getEndPosition(),Z=a[g+1].range.getStartPosition();if(Z.isBeforeOrEqual(f)){if(Z.isBefore(f))throw new Error("Overlapping ranges are not allowed!");d=!0}}r&&(a=this._reduceOperations(a));const c=i||t?WW._getInverseEditRanges(a):[],h=[];if(t)for(let g=0;g<a.length;g++){const b=a[g],f=c[g];if(b.isAutoWhitespaceEdit&&b.range.isEmpty())for(let Z=f.startLineNumber;Z<=f.endLineNumber;Z++){let A="";Z===f.startLineNumber&&(A=this.getLineContent(b.range.startLineNumber),Wr(A)!==-1)||h.push({lineNumber:Z,oldContent:A})}}let u=null;if(i){let g=0;u=[];for(let b=0;b<a.length;b++){const f=a[b],Z=c[b],A=this.getValueInRange(f.range),N=f.rangeOffset+g;g+=f.text.length-A.length,u[b]={sortIndex:f.sortIndex,identifier:f.identifier,range:Z,text:A,textChange:new wl(f.rangeOffset,A,N,f.text)}}d||u.sort((b,f)=>b.sortIndex-f.sortIndex)}this._mightContainRTL=n,this._mightContainUnusualLineTerminators=o,this._mightContainNonBasicASCII=l;const m=this._doApplyEdits(a);let p=null;if(t&&h.length>0){h.sort((g,b)=>b.lineNumber-g.lineNumber),p=[];for(let g=0,b=h.length;g<b;g++){const f=h[g].lineNumber;if(g>0&&h[g-1].lineNumber===f)continue;const Z=h[g].oldContent,A=this.getLineContent(f);A.length===0||A===Z||Wr(A)!==-1||p.push(f)}}return this._onDidChangeContent.fire(),new Lxe(u,m,p)}_reduceOperations(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]}_toSingleEditOperation(e){let t=!1;const i=e[0].range,n=e[e.length-1].range,o=new v(i.startLineNumber,i.startColumn,n.endLineNumber,n.endColumn);let l=i.startLineNumber,r=i.startColumn;const a=[];for(let m=0,p=e.length;m<p;m++){const g=e[m],b=g.range;t=t||g.forceMoveMarkers,a.push(this.getValueInRange(new v(l,r,b.startLineNumber,b.startColumn))),g.text.length>0&&a.push(g.text),l=b.endLineNumber,r=b.endColumn}const d=a.join(""),[c,h,u]=KU(d);return{sortIndex:0,identifier:e[0].identifier,range:o,rangeOffset:this.getOffsetAt(o.startLineNumber,o.startColumn),rangeLength:this.getValueLengthInRange(o,0),text:d,eolCount:c,firstLineLength:h,lastLineLength:u,forceMoveMarkers:t,isAutoWhitespaceEdit:!1}}_doApplyEdits(e){e.sort(WW._sortOpsDescending);const t=[];for(let i=0;i<e.length;i++){const n=e[i],o=n.range.startLineNumber,l=n.range.startColumn,r=n.range.endLineNumber,a=n.range.endColumn;if(o===r&&l===a&&n.text.length===0)continue;n.text?(this._pieceTree.delete(n.rangeOffset,n.rangeLength),this._pieceTree.insert(n.rangeOffset,n.text,!0)):this._pieceTree.delete(n.rangeOffset,n.rangeLength);const d=new v(o,l,r,a);t.push({range:d,rangeLength:n.rangeLength,text:n.text,rangeOffset:n.rangeOffset,forceMoveMarkers:n.forceMoveMarkers})}return t}findMatchesLineByLine(e,t,i,n){return this._pieceTree.findMatchesLineByLine(e,t,i,n)}static _getInverseEditRanges(e){const t=[];let i=0,n=0,o=null;for(let l=0,r=e.length;l<r;l++){const a=e[l];let d,c;o?o.range.endLineNumber===a.range.startLineNumber?(d=i,c=n+(a.range.startColumn-o.range.endColumn)):(d=i+(a.range.startLineNumber-o.range.endLineNumber),c=a.range.startColumn):(d=a.range.startLineNumber,c=a.range.startColumn);let h;if(a.text.length>0){const u=a.eolCount+1;u===1?h=new v(d,c,d,c+a.firstLineLength):h=new v(d,c,d+u-1,a.lastLineLength+1)}else h=new v(d,c,d,c);i=h.endLineNumber,n=h.endColumn,t.push(h),o=a}return t}static _sortOpsAscending(e,t){const i=v.compareRangesUsingEnds(e.range,t.range);return i===0?e.sortIndex-t.sortIndex:i}static _sortOpsDescending(e,t){const i=v.compareRangesUsingEnds(e.range,t.range);return i===0?t.sortIndex-e.sortIndex:-i}}class WOe{constructor(e,t,i,n,o,l,r,a,d){this._chunks=e,this._bom=t,this._cr=i,this._lf=n,this._crlf=o,this._containsRTL=l,this._containsUnusualLineTerminators=r,this._isBasicASCII=a,this._normalizeEOL=d}_getEOL(e){const t=this._cr+this._lf+this._crlf,i=this._cr+this._crlf;return t===0?e===1?`
- `:`\r
- `:i>t/2?`\r
- `:`
- `}create(e){const t=this._getEOL(e),i=this._chunks;if(this._normalizeEOL&&(t===`\r
- `&&(this._cr>0||this._lf>0)||t===`
- `&&(this._cr>0||this._crlf>0)))for(let o=0,l=i.length;o<l;o++){const r=i[o].buffer.replace(/\r\n|\r|\n/g,t),a=bg(r);i[o]=new sZ(r,a)}const n=new WW(i,this._bom,t,this._containsRTL,this._containsUnusualLineTerminators,this._isBasicASCII,this._normalizeEOL);return{textBuffer:n,disposable:n}}}class cUe{constructor(){this.chunks=[],this.BOM="",this._hasPreviousChar=!1,this._previousChar=0,this._tmpLineStarts=[],this.cr=0,this.lf=0,this.crlf=0,this.containsRTL=!1,this.containsUnusualLineTerminators=!1,this.isBasicASCII=!0}acceptChunk(e){if(e.length===0)return;this.chunks.length===0&&M$(e)&&(this.BOM=SGe,e=e.substr(1));const t=e.charCodeAt(e.length-1);t===13||t>=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}_acceptChunk1(e,t){!t&&e.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))}_acceptChunk2(e){const t=AOe(this._tmpLineStarts,e);this.chunks.push(new sZ(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,t.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=$W(e)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=tge(e)))}finish(e=!0){return this._finish(),new WOe(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,e)}_finish(){if(this.chunks.length===0&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);const t=bg(e.buffer);e.lineStarts=t,this._previousChar===13&&this.cr++}}}class VOe{constructor(e){this._default=e,this._store=[]}get(e){return e<this._store.length?this._store[e]:this._default}set(e,t){for(;e>=this._store.length;)this._store[this._store.length]=this._default;this._store[e]=t}replace(e,t,i){if(e>=this._store.length)return;if(t===0){this.insert(e,i);return}else if(i===0){this.delete(e,t);return}const n=this._store.slice(0,e),o=this._store.slice(e+t),l=QOe(i,this._default);this._store=n.concat(l,o)}delete(e,t){t===0||e>=this._store.length||this._store.splice(e,t)}insert(e,t){if(t===0||e>=this._store.length)return;const i=[];for(let n=0;n<t;n++)i[n]=this._default;this._store=_5(this._store,e,i)}}function QOe(s,e){const t=[];for(let i=0;i<s;i++)t[i]=e;return t}class yOe{get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}constructor(e,t){this._startLineNumber=e,this._tokens=t}getLineTokens(e){return this._tokens[e-this._startLineNumber]}appendLineTokens(e){this._tokens.push(e)}}class hK{constructor(){this._tokens=[]}add(e,t){if(this._tokens.length>0){const i=this._tokens[this._tokens.length-1];if(i.endLineNumber+1===e){i.appendLineTokens(t);return}}this._tokens.push(new yOe(e,[t]))}finalize(){return this._tokens}}class COe{constructor(e,t){this.tokenizationSupport=t,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new uK(e)}getStartState(e){return this.store.getStartState(e,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}class wOe extends COe{constructor(e,t,i,n){super(e,t),this._textModel=i,this._languageIdCodec=n}updateTokensUntilLine(e,t){const i=this._textModel.getLanguageId();for(;;){const n=this.getFirstInvalidLine();if(!n||n.lineNumber>t)break;const o=this._textModel.getLineContent(n.lineNumber),l=E1(this._languageIdCodec,i,this.tokenizationSupport,o,!0,n.startState);e.add(n.lineNumber,l.tokens),this.store.setEndState(n.lineNumber,l.endState)}}getTokenTypeIfInsertingCharacter(e,t){const i=this.getStartState(e.lineNumber);if(!i)return 0;const n=this._textModel.getLanguageId(),o=this._textModel.getLineContent(e.lineNumber),l=o.substring(0,e.column-1)+t+o.substring(e.column-1),r=E1(this._languageIdCodec,n,this.tokenizationSupport,l,!0,i),a=new ll(r.tokens,l,this._languageIdCodec);if(a.getCount()===0)return 0;const d=a.findTokenIndexAtOffset(e.column-1);return a.getStandardTokenType(d)}tokenizeLineWithEdit(e,t,i){const n=e.lineNumber,o=e.column,l=this.getStartState(n);if(!l)return null;const r=this._textModel.getLineContent(n),a=r.substring(0,o-1)+i+r.substring(o-1+t),d=this._textModel.getLanguageIdAtPosition(n,0),c=E1(this._languageIdCodec,d,this.tokenizationSupport,a,!0,l);return new ll(c.tokens,a,this._languageIdCodec)}hasAccurateTokensForLine(e){const t=this.store.getFirstInvalidEndStateLineNumberOrMax();return e<t}isCheapToTokenize(e){const t=this.store.getFirstInvalidEndStateLineNumberOrMax();return e<t||e===t&&this._textModel.getLineLength(e)<2048}tokenizeHeuristically(e,t,i){if(i<=this.store.getFirstInvalidEndStateLineNumberOrMax())return{heuristicTokens:!1};if(t<=this.store.getFirstInvalidEndStateLineNumberOrMax())return this.updateTokensUntilLine(e,i),{heuristicTokens:!1};let n=this.guessStartState(t);const o=this._textModel.getLanguageId();for(let l=t;l<=i;l++){const r=this._textModel.getLineContent(l),a=E1(this._languageIdCodec,o,this.tokenizationSupport,r,!0,n);e.add(l,a.tokens),n=a.endState}return{heuristicTokens:!0}}guessStartState(e){let t=this._textModel.getLineFirstNonWhitespaceColumn(e);const i=[];let n=null;for(let r=e-1;t>1&&r>=1;r--){const a=this._textModel.getLineFirstNonWhitespaceColumn(r);if(a!==0&&a<t&&(i.push(this._textModel.getLineContent(r)),t=a,n=this.getStartState(r),n))break}n||(n=this.tokenizationSupport.getInitialState()),i.reverse();const o=this._textModel.getLanguageId();let l=n;for(const r of i)l=E1(this._languageIdCodec,o,this.tokenizationSupport,r,!1,l).endState;return l}}class uK{constructor(e){this.lineCount=e,this._tokenizationStateStore=new MOe,this._invalidEndStatesLineNumbers=new TOe,this._invalidEndStatesLineNumbers.addRange(new di(1,e+1))}getEndState(e){return this._tokenizationStateStore.getEndState(e)}setEndState(e,t){if(!t)throw new en("Cannot set null/undefined state");this._invalidEndStatesLineNumbers.delete(e);const i=this._tokenizationStateStore.setEndState(e,t);return i&&e<this.lineCount&&this._invalidEndStatesLineNumbers.addRange(new di(e+1,e+2)),i}acceptChange(e,t){this.lineCount+=t-e.length,this._tokenizationStateStore.acceptChange(e,t),this._invalidEndStatesLineNumbers.addRangeAndResize(new di(e.startLineNumber,e.endLineNumberExclusive),t)}acceptChanges(e){for(const t of e){const[i]=KU(t.text);this.acceptChange(new jt(t.range.startLineNumber,t.range.endLineNumber+1),i+1)}}invalidateEndStateRange(e){this._invalidEndStatesLineNumbers.addRange(new di(e.startLineNumber,e.endLineNumberExclusive))}getFirstInvalidEndStateLineNumber(){return this._invalidEndStatesLineNumbers.min}getFirstInvalidEndStateLineNumberOrMax(){return this.getFirstInvalidEndStateLineNumber()||Number.MAX_SAFE_INTEGER}allStatesValid(){return this._invalidEndStatesLineNumbers.min===null}getStartState(e,t){return e===1?t:this.getEndState(e-1)}getFirstInvalidLine(e){const t=this.getFirstInvalidEndStateLineNumber();if(t===null)return null;const i=this.getStartState(t,e);if(!i)throw new en("Start state must be defined");return{lineNumber:t,startState:i}}}class MOe{constructor(){this._lineEndStates=new VOe(null)}getEndState(e){return this._lineEndStates.get(e)}setEndState(e,t){const i=this._lineEndStates.get(e);return i&&i.equals(t)?!1:(this._lineEndStates.set(e,t),!0)}acceptChange(e,t){let i=e.length;t>0&&i>0&&(i--,t--),this._lineEndStates.replace(e.startLineNumber,i,t)}}class TOe{constructor(){this._ranges=[]}get min(){return this._ranges.length===0?null:this._ranges[0].start}delete(e){const t=this._ranges.findIndex(i=>i.contains(e));if(t!==-1){const i=this._ranges[t];i.start===e?i.endExclusive===e+1?this._ranges.splice(t,1):this._ranges[t]=new di(e+1,i.endExclusive):i.endExclusive===e+1?this._ranges[t]=new di(i.start,e):this._ranges.splice(t,1,new di(i.start,e),new di(e+1,i.endExclusive))}}addRange(e){di.addRange(e,this._ranges)}addRangeAndResize(e,t){let i=0;for(;!(i>=this._ranges.length||e.start<=this._ranges[i].endExclusive);)i++;let n=i;for(;!(n>=this._ranges.length||e.endExclusive<this._ranges[n].start);)n++;const o=t-e.length;for(let l=n;l<this._ranges.length;l++)this._ranges[l]=this._ranges[l].delta(o);if(i===n){const l=new di(e.start,e.start+t);l.isEmpty||this._ranges.splice(i,0,l)}else{const l=Math.min(e.start,this._ranges[i].start),r=Math.max(e.endExclusive,this._ranges[n-1].endExclusive),a=new di(l,r+o);a.isEmpty?this._ranges.splice(i,n-i):this._ranges.splice(i,n-i,a)}}toString(){return this._ranges.map(e=>e.toString()).join(" + ")}}function E1(s,e,t,i,n,o){let l=null;if(t)try{l=t.tokenizeEncoded(i,n,o.clone())}catch(r){vt(r)}return l||(l=BY(s.encodeLanguageId(e),o)),ll.convertToEndOffset(l.tokens,i.length),l}class BOe{constructor(e,t){this._tokenizerWithStateStore=e,this._backgroundTokenStore=t,this._isDisposed=!1,this._isScheduled=!1}dispose(){this._isDisposed=!0}handleChanges(){this._beginBackgroundTokenization()}_beginBackgroundTokenization(){this._isScheduled||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._isScheduled=!0,age(e=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(e)}))}_backgroundTokenizeWithDeadline(e){const t=Date.now()+e.timeRemaining(),i=()=>{this._isDisposed||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()<t?Qpe(i):this._beginBackgroundTokenization())};i()}_backgroundTokenizeForAtLeast1ms(){const e=this._tokenizerWithStateStore._textModel.getLineCount(),t=new hK,i=ol.create(!1);do if(i.elapsed()>1||this._tokenizeOneInvalidLine(t)>=e)break;while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(t.finalize()),this.checkFinished()}_hasLinesToTokenize(){return this._tokenizerWithStateStore?!this._tokenizerWithStateStore.store.allStatesValid():!1}_tokenizeOneInvalidLine(e){var i;const t=(i=this._tokenizerWithStateStore)==null?void 0:i.getFirstInvalidLine();return t?(this._tokenizerWithStateStore.updateTokensUntilLine(e,t.lineNumber),t.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(e,t){this._tokenizerWithStateStore.store.invalidateEndStateRange(new jt(e,t))}}class LOe{constructor(){this._onDidChangeVisibleRanges=new re,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const e=new kOe(t=>{this._onDidChangeVisibleRanges.fire({view:e,state:t})});return this._views.add(e),e}detachView(e){this._views.delete(e),this._onDidChangeVisibleRanges.fire({view:e,state:void 0})}}class kOe{constructor(e){this.handleStateChange=e}setVisibleLines(e,t){const i=e.map(n=>new jt(n.startLineNumber,n.endLineNumber+1));this.handleStateChange({visibleLineRanges:i,stabilized:t})}}class IOe extends de{get lineRanges(){return this._lineRanges}constructor(e){super(),this._refreshTokens=e,this.runner=this._register(new Rn(()=>this.update(),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){Fs(this._computedLineRanges,this._lineRanges,(e,t)=>e.equals(t))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(e){this._lineRanges=e.visibleLineRanges,e.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}class hUe extends de{get backgroundTokenizationState(){return this._backgroundTokenizationState}constructor(e,t,i){super(),this._languageIdCodec=e,this._textModel=t,this.getLanguageId=i,this._backgroundTokenizationState=1,this._onDidChangeBackgroundTokenizationState=this._register(new re),this.onDidChangeBackgroundTokenizationState=this._onDidChangeBackgroundTokenizationState.event,this._onDidChangeTokens=this._register(new re),this.onDidChangeTokens=this._onDidChangeTokens.event}tokenizeIfCheap(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)}}class Fre extends hUe{constructor(e,t,i,n){super(t,i,n),this._treeSitterService=e,this._tokenizationSupport=null,this._initialize()}_initialize(){const e=this.getLanguageId();(!this._tokenizationSupport||this._lastLanguageId!==e)&&(this._lastLanguageId=e,this._tokenizationSupport=Qj.get(e))}getLineTokens(e){const t=this._textModel.getLineContent(e);if(this._tokenizationSupport){const i=this._tokenizationSupport.tokenizeEncoded(e,this._textModel);if(i)return new ll(i,t,this._languageIdCodec)}return ll.createEmpty(t,this._languageIdCodec)}resetTokenization(e=!0){e&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]}),this._initialize()}handleDidChangeAttached(){}handleDidChangeContent(e){e.isFlush&&this.resetTokenization(!1)}forceTokenization(e){}hasAccurateTokensForLine(e){return!0}isCheapToTokenize(e){return!0}getTokenTypeIfInsertingCharacter(e,t,i){return 0}tokenizeLineWithEdit(e,t,i){return null}get hasTokens(){return this._treeSitterService.getParseResult(this._textModel)!==void 0}}const uUe=Zi("treeSitterParserService"),Ug=new Uint32Array(0).buffer;class zm{static deleteBeginning(e,t){return e===null||e===Ug?e:zm.delete(e,0,t)}static deleteEnding(e,t){if(e===null||e===Ug)return e;const i=xg(e),n=i[i.length-2];return zm.delete(e,t,n)}static delete(e,t,i){if(e===null||e===Ug||t===i)return e;const n=xg(e),o=n.length>>>1;if(t===0&&n[n.length-2]===i)return Ug;const l=ll.findIndexInTokensArray(n,t),r=l>0?n[l-1<<1]:0,a=n[l<<1];if(i<a){const m=i-t;for(let p=l;p<o;p++)n[p<<1]-=m;return e}let d,c;r!==t?(n[l<<1]=t,d=l+1<<1,c=t):(d=l<<1,c=r);const h=i-t;for(let m=l+1;m<o;m++){const p=n[m<<1]-h;p>c&&(n[d++]=p,n[d++]=n[(m<<1)+1],c=p)}if(d===n.length)return e;const u=new Uint32Array(d);return u.set(n.subarray(0,d),0),u.buffer}static append(e,t){if(t===Ug)return e;if(e===Ug)return t;if(e===null)return e;if(t===null)return null;const i=xg(e),n=xg(t),o=n.length>>>1,l=new Uint32Array(i.length+n.length);l.set(i,0);let r=i.length;const a=i[i.length-2];for(let d=0;d<o;d++)l[r++]=n[d<<1]+a,l[r++]=n[(d<<1)+1];return l.buffer}static insert(e,t,i){if(e===null||e===Ug)return e;const n=xg(e),o=n.length>>>1;let l=ll.findIndexInTokensArray(n,t);l>0&&n[l-1<<1]===t&&l--;for(let r=l;r<o;r++)n[r<<1]+=i;return e}}function xg(s){return s instanceof Uint32Array?s:new Uint32Array(s)}class LM{constructor(e){this._lineTokens=[],this._len=0,this._languageIdCodec=e}flush(){this._lineTokens=[],this._len=0}get hasTokens(){return this._lineTokens.length>0}getTokens(e,t,i){let n=null;if(t<this._len&&(n=this._lineTokens[t]),n!==null&&n!==Ug)return new ll(xg(n),i,this._languageIdCodec);const o=new Uint32Array(2);return o[0]=i.length,o[1]=Zre(this._languageIdCodec.encodeLanguageId(e)),new ll(o,i,this._languageIdCodec)}static _massageTokens(e,t,i){const n=i?xg(i):null;if(t===0){let o=!1;if(n&&n.length>1&&(o=Ta.getLanguageId(n[1])!==e),!o)return Ug}if(!n||n.length===0){const o=new Uint32Array(2);return o[0]=t,o[1]=Zre(e),o.buffer}return n[n.length-2]=t,n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n}_ensureLine(e){for(;e>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(e,t){t!==0&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)}_insertLines(e,t){if(t===0)return;const i=[];for(let n=0;n<t;n++)i[n]=null;this._lineTokens=_5(this._lineTokens,e,i),this._len+=t}setTokens(e,t,i,n,o){const l=LM._massageTokens(this._languageIdCodec.encodeLanguageId(e),i,n);this._ensureLine(t);const r=this._lineTokens[t];return this._lineTokens[t]=l,o?!LM._equals(r,l):!1}static _equals(e,t){if(!e||!t)return!e&&!t;const i=xg(e),n=xg(t);if(i.length!==n.length)return!1;for(let o=0,l=i.length;o<l;o++)if(i[o]!==n[o])return!1;return!0}acceptEdit(e,t,i){this._acceptDeleteRange(e),this._acceptInsertText(new oe(e.startLineNumber,e.startColumn),t,i)}_acceptDeleteRange(e){const t=e.startLineNumber-1;if(t>=this._len)return;if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;this._lineTokens[t]=zm.delete(this._lineTokens[t],e.startColumn-1,e.endColumn-1);return}this._lineTokens[t]=zm.deleteEnding(this._lineTokens[t],e.startColumn-1);const i=e.endLineNumber-1;let n=null;i<this._len&&(n=zm.deleteBeginning(this._lineTokens[i],e.endColumn-1)),this._lineTokens[t]=zm.append(this._lineTokens[t],n),this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t,i){if(t===0&&i===0)return;const n=e.lineNumber-1;if(!(n>=this._len)){if(t===0){this._lineTokens[n]=zm.insert(this._lineTokens[n],e.column-1,i);return}this._lineTokens[n]=zm.deleteEnding(this._lineTokens[n],e.column-1),this._lineTokens[n]=zm.insert(this._lineTokens[n],e.column-1,i),this._insertLines(e.lineNumber,t)}}setMultilineTokens(e,t){if(e.length===0)return{changes:[]};const i=[];for(let n=0,o=e.length;n<o;n++){const l=e[n];let r=0,a=0,d=!1;for(let c=l.startLineNumber;c<=l.endLineNumber;c++)d?(this.setTokens(t.getLanguageId(),c-1,t.getLineLength(c),l.getLineTokens(c),!1),a=c):this.setTokens(t.getLanguageId(),c-1,t.getLineLength(c),l.getLineTokens(c),!0)&&(d=!0,r=c,a=c);d&&i.push({fromLineNumber:r,toLineNumber:a})}return{changes:i}}}function Zre(s){return(s<<0|0|0|32768|2<<24|1024)>>>0}class _ee{constructor(e){this._pieces=[],this._isComplete=!1,this._languageIdCodec=e}flush(){this._pieces=[],this._isComplete=!1}isEmpty(){return this._pieces.length===0}set(e,t){this._pieces=e||[],this._isComplete=t}setPartial(e,t){let i=e;if(t.length>0){const o=t[0].getRange(),l=t[t.length-1].getRange();if(!o||!l)return e;i=e.plusRange(o).plusRange(l)}let n=null;for(let o=0,l=this._pieces.length;o<l;o++){const r=this._pieces[o];if(r.endLineNumber<i.startLineNumber)continue;if(r.startLineNumber>i.endLineNumber){n=n||{index:o};break}if(r.removeTokens(i),r.isEmpty()){this._pieces.splice(o,1),o--,l--;continue}if(r.endLineNumber<i.startLineNumber)continue;if(r.startLineNumber>i.endLineNumber){n=n||{index:o};continue}const[a,d]=r.split(i);if(a.isEmpty()){n=n||{index:o};continue}d.isEmpty()||(this._pieces.splice(o,1,a,d),o++,l++,n=n||{index:o})}return n=n||{index:this._pieces.length},t.length>0&&(this._pieces=_5(this._pieces,n.index,t)),i}isComplete(){return this._isComplete}addSparseTokens(e,t){if(t.getLineContent().length===0)return t;const i=this._pieces;if(i.length===0)return t;const n=_ee._findFirstPieceWithLine(i,e),o=i[n].getLineTokens(e);if(!o)return t;const l=t.getCount(),r=o.getCount();let a=0;const d=[];let c=0,h=0;const u=(m,p)=>{m!==h&&(h=m,d[c++]=m,d[c++]=p)};for(let m=0;m<r;m++){const p=o.getStartCharacter(m),g=o.getEndCharacter(m),b=o.getMetadata(m),f=((b&1?2048:0)|(b&2?4096:0)|(b&4?8192:0)|(b&8?16384:0)|(b&16?16744448:0)|(b&32?4278190080:0))>>>0,Z=~f>>>0;for(;a<l&&t.getEndOffset(a)<=p;)u(t.getEndOffset(a),t.getMetadata(a)),a++;for(a<l&&t.getStartOffset(a)<p&&u(p,t.getMetadata(a));a<l&&t.getEndOffset(a)<g;)u(t.getEndOffset(a),t.getMetadata(a)&Z|b&f),a++;if(a<l)u(g,t.getMetadata(a)&Z|b&f),t.getEndOffset(a)===g&&a++;else{const A=Math.min(Math.max(0,a-1),l-1);u(g,t.getMetadata(A)&Z|b&f)}}for(;a<l;)u(t.getEndOffset(a),t.getMetadata(a)),a++;return new ll(new Uint32Array(d),t.getLineContent(),this._languageIdCodec)}static _findFirstPieceWithLine(e,t){let i=0,n=e.length-1;for(;i<n;){let o=i+Math.floor((n-i)/2);if(e[o].endLineNumber<t)i=o+1;else if(e[o].startLineNumber>t)n=o-1;else{for(;o>i&&e[o-1].startLineNumber<=t&&t<=e[o-1].endLineNumber;)o--;return o}}return i}acceptEdit(e,t,i,n,o){for(const l of this._pieces)l.acceptEdit(e,t,i,n,o)}}var DOe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},L3=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},cD;let mK=cD=class extends iUe{constructor(e,t,i,n,o,l,r){super(),this._textModel=e,this._bracketPairsTextModelPart=t,this._languageId=i,this._attachedViews=n,this._languageService=o,this._languageConfigurationService=l,this._treeSitterService=r,this._semanticTokens=new _ee(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new re),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new re),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new re),this.onDidChangeTokens=this._onDidChangeTokens.event,this._tokensDisposables=this._register(new Ze),this._register(this._languageConfigurationService.onDidChange(a=>{a.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})),this._register(ve.filter(Qj.onDidChange,a=>a.changedLanguages.includes(this._languageId))(()=>{this.createPreferredTokenProvider()})),this.createPreferredTokenProvider()}createGrammarTokens(){return this._register(new Are(this._languageService.languageIdCodec,this._textModel,()=>this._languageId,this._attachedViews))}createTreeSitterTokens(){return this._register(new Fre(this._treeSitterService,this._languageService.languageIdCodec,this._textModel,()=>this._languageId))}createTokens(e){var i;const t=this._tokens!==void 0;(i=this._tokens)==null||i.dispose(),this._tokens=e?this.createTreeSitterTokens():this.createGrammarTokens(),this._tokensDisposables.clear(),this._tokensDisposables.add(this._tokens.onDidChangeTokens(n=>{this._emitModelTokensChangedEvent(n)})),this._tokensDisposables.add(this._tokens.onDidChangeBackgroundTokenizationState(n=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()})),t&&this._tokens.resetTokenization()}createPreferredTokenProvider(){Qj.get(this._languageId)?this._tokens instanceof Fre||this.createTokens(!0):this._tokens instanceof Are||this.createTokens(!1)}handleLanguageConfigurationServiceChange(e){e.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})}handleDidChangeContent(e){if(e.isFlush)this._semanticTokens.flush();else if(!e.isEolChange)for(const t of e.changes){const[i,n,o]=KU(t.text);this._semanticTokens.acceptEdit(t.range,i,n,o,t.text.length>0?t.text.charCodeAt(0):0)}this._tokens.handleDidChangeContent(e)}handleDidChangeAttached(){this._tokens.handleDidChangeAttached()}getLineTokens(e){this.validateLineNumber(e);const t=this._tokens.getLineTokens(e);return this._semanticTokens.addSparseTokens(e,t)}_emitModelTokensChangedEvent(e){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(e),this._onDidChangeTokens.fire(e))}validateLineNumber(e){if(e<1||e>this._textModel.getLineCount())throw new en("Illegal value for lineNumber")}get hasTokens(){return this._tokens.hasTokens}resetTokenization(){this._tokens.resetTokenization()}get backgroundTokenizationState(){return this._tokens.backgroundTokenizationState}forceTokenization(e){this.validateLineNumber(e),this._tokens.forceTokenization(e)}hasAccurateTokensForLine(e){return this.validateLineNumber(e),this._tokens.hasAccurateTokensForLine(e)}isCheapToTokenize(e){return this.validateLineNumber(e),this._tokens.isCheapToTokenize(e)}tokenizeIfCheap(e){this.validateLineNumber(e),this._tokens.tokenizeIfCheap(e)}getTokenTypeIfInsertingCharacter(e,t,i){return this._tokens.getTokenTypeIfInsertingCharacter(e,t,i)}tokenizeLineWithEdit(e,t,i){return this._tokens.tokenizeLineWithEdit(e,t,i)}setSemanticTokens(e,t){this._semanticTokens.set(e,t),this._emitModelTokensChangedEvent({semanticTokensApplied:e!==null,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(e,t){if(this.hasCompleteSemanticTokens())return;const i=this._textModel.validateRange(this._semanticTokens.setPartial(e,t));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:i.startLineNumber,toLineNumber:i.endLineNumber}]})}getWordAtPosition(e){this.assertNotDisposed();const t=this._textModel.validatePosition(e),i=this._textModel.getLineContent(t.lineNumber),n=this.getLineTokens(t.lineNumber),o=n.findTokenIndexAtOffset(t.column-1),[l,r]=cD._findLanguageBoundaries(n,o),a=qw(t.column,this.getLanguageConfiguration(n.getLanguageId(o)).getWordDefinition(),i.substring(l,r),l);if(a&&a.startColumn<=e.column&&e.column<=a.endColumn)return a;if(o>0&&l===t.column-1){const[d,c]=cD._findLanguageBoundaries(n,o-1),h=qw(t.column,this.getLanguageConfiguration(n.getLanguageId(o-1)).getWordDefinition(),i.substring(d,c),d);if(h&&h.startColumn<=e.column&&e.column<=h.endColumn)return h}return null}getLanguageConfiguration(e){return this._languageConfigurationService.getLanguageConfiguration(e)}static _findLanguageBoundaries(e,t){const i=e.getLanguageId(t);let n=0;for(let l=t;l>=0&&e.getLanguageId(l)===i;l--)n=e.getStartOffset(l);let o=e.getLineContent().length;for(let l=t,r=e.getCount();l<r&&e.getLanguageId(l)===i;l++)o=e.getEndOffset(l);return[n,o]}getWordUntilPosition(e){const t=this.getWordAtPosition(e);return t?{word:t.word.substr(0,e.column-t.startColumn),startColumn:t.startColumn,endColumn:e.column}:{word:"",startColumn:e.column,endColumn:e.column}}getLanguageId(){return this._languageId}getLanguageIdAtPosition(e,t){const i=this._textModel.validatePosition(new oe(e,t)),n=this.getLineTokens(i.lineNumber);return n.getLanguageId(n.findTokenIndexAtOffset(i.column-1))}setLanguageId(e,t="api"){if(this._languageId===e)return;const i={oldLanguage:this._languageId,newLanguage:e,source:t};this._languageId=e,this._bracketPairsTextModelPart.handleDidChangeLanguage(i),this._tokens.resetTokenization(),this.createPreferredTokenProvider(),this._onDidChangeLanguage.fire(i),this._onDidChangeLanguageConfiguration.fire({})}};mK=cD=DOe([L3(4,Zs),L3(5,Qs),L3(6,uUe)],mK);class Are extends hUe{constructor(e,t,i,n){super(e,t,i),this._tokenizer=null,this._defaultBackgroundTokenizer=null,this._backgroundTokenizer=this._register(new _o),this._tokens=new LM(this._languageIdCodec),this._debugBackgroundTokenizer=this._register(new _o),this._attachedViewStates=this._register(new Z$),this._register(Ds.onDidChange(o=>{const l=this.getLanguageId();o.changedLanguages.indexOf(l)!==-1&&this.resetTokenization()})),this.resetTokenization(),this._register(n.onDidChangeVisibleRanges(({view:o,state:l})=>{if(l){let r=this._attachedViewStates.get(o);r||(r=new IOe(()=>this.refreshRanges(r.lineRanges)),this._attachedViewStates.set(o,r)),r.handleStateChange(l)}else this._attachedViewStates.deleteAndDispose(o)}))}resetTokenization(e=!0){var o;this._tokens.flush(),(o=this._debugBackgroundTokens)==null||o.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new uK(this._textModel.getLineCount())),e&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const t=()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const l=Ds.get(this.getLanguageId());if(!l)return[null,null];let r;try{r=l.getInitialState()}catch(a){return vt(a),[null,null]}return[l,r]},[i,n]=t();if(i&&n?this._tokenizer=new wOe(this._textModel.getLineCount(),i,this._textModel,this._languageIdCodec):this._tokenizer=null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const l={setTokens:r=>{this.setTokens(r)},backgroundTokenizationFinished:()=>{if(this._backgroundTokenizationState===2)return;const r=2;this._backgroundTokenizationState=r,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(r,a)=>{var c;if(!this._tokenizer)return;const d=this._tokenizer.store.getFirstInvalidEndStateLineNumber();d!==null&&r>=d&&((c=this._tokenizer)==null||c.store.setEndState(r,a))}};i&&i.createBackgroundTokenizer&&!i.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=i.createBackgroundTokenizer(this._textModel,l)),!this._backgroundTokenizer.value&&!this._textModel.isTooLargeForTokenization()&&(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new BOe(this._tokenizer,l),this._defaultBackgroundTokenizer.handleChanges()),i!=null&&i.backgroundTokenizerShouldOnlyVerifyTokens&&i.createBackgroundTokenizer?(this._debugBackgroundTokens=new LM(this._languageIdCodec),this._debugBackgroundStates=new uK(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=i.createBackgroundTokenizer(this._textModel,{setTokens:r=>{var a;(a=this._debugBackgroundTokens)==null||a.setMultilineTokens(r,this._textModel)},backgroundTokenizationFinished(){},setEndState:(r,a)=>{var d;(d=this._debugBackgroundStates)==null||d.setEndState(r,a)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var e;(e=this._defaultBackgroundTokenizer)==null||e.handleChanges()}handleDidChangeContent(e){var t,i,n;if(e.isFlush)this.resetTokenization(!1);else if(!e.isEolChange){for(const o of e.changes){const[l,r]=KU(o.text);this._tokens.acceptEdit(o.range,l,r),(t=this._debugBackgroundTokens)==null||t.acceptEdit(o.range,l,r)}(i=this._debugBackgroundStates)==null||i.acceptChanges(e.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(e.changes),(n=this._defaultBackgroundTokenizer)==null||n.handleChanges()}}setTokens(e){const{changes:t}=this._tokens.setMultilineTokens(e,this._textModel);return t.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:t}),{changes:t}}refreshAllVisibleLineTokens(){const e=jt.joinMany([...this._attachedViewStates].map(([t,i])=>i.lineRanges));this.refreshRanges(e)}refreshRanges(e){for(const t of e)this.refreshRange(t.startLineNumber,t.endLineNumberExclusive-1)}refreshRange(e,t){var l,r;if(!this._tokenizer)return;e=Math.max(1,Math.min(this._textModel.getLineCount(),e)),t=Math.min(this._textModel.getLineCount(),t);const i=new hK,{heuristicTokens:n}=this._tokenizer.tokenizeHeuristically(i,e,t),o=this.setTokens(i.finalize());if(n)for(const a of o.changes)(l=this._backgroundTokenizer.value)==null||l.requestTokens(a.fromLineNumber,a.toLineNumber+1);(r=this._defaultBackgroundTokenizer)==null||r.checkFinished()}forceTokenization(e){var i,n;const t=new hK;(i=this._tokenizer)==null||i.updateTokensUntilLine(t,e),this.setTokens(t.finalize()),(n=this._defaultBackgroundTokenizer)==null||n.checkFinished()}hasAccurateTokensForLine(e){return this._tokenizer?this._tokenizer.hasAccurateTokensForLine(e):!0}isCheapToTokenize(e){return this._tokenizer?this._tokenizer.isCheapToTokenize(e):!0}getLineTokens(e){var n;const t=this._textModel.getLineContent(e),i=this._tokens.getTokens(this._textModel.getLanguageId(),e-1,t);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>e&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>e){const o=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),e-1,t);!i.equals(o)&&((n=this._debugBackgroundTokenizer.value)!=null&&n.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(e)}return i}getTokenTypeIfInsertingCharacter(e,t,i){if(!this._tokenizer)return 0;const n=this._textModel.validatePosition(new oe(e,t));return this.forceTokenization(n.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(n,i)}tokenizeLineWithEdit(e,t,i){if(!this._tokenizer)return null;const n=this._textModel.validatePosition(e);return this.forceTokenization(n.lineNumber),this._tokenizer.tokenizeLineWithEdit(n,t,i)}get hasTokens(){return this._tokens.hasTokens}}class GOe{constructor(){this.changeType=1}}class Pu{static applyInjectedText(e,t){if(!t||t.length===0)return e;let i="",n=0;for(const o of t)i+=e.substring(n,o.column-1),n=o.column-1,i+=o.options.content;return i+=e.substring(n),i}static fromDecorations(e){const t=[];for(const i of e)i.options.before&&i.options.before.content.length>0&&t.push(new Pu(i.ownerId,i.range.startLineNumber,i.range.startColumn,i.options.before,0)),i.options.after&&i.options.after.content.length>0&&t.push(new Pu(i.ownerId,i.range.endLineNumber,i.range.endColumn,i.options.after,1));return t.sort((i,n)=>i.lineNumber===n.lineNumber?i.column===n.column?i.order-n.order:i.column-n.column:i.lineNumber-n.lineNumber),t}constructor(e,t,i,n,o){this.ownerId=e,this.lineNumber=t,this.column=i,this.options=n,this.order=o}}class Nre{constructor(e,t,i){this.changeType=2,this.lineNumber=e,this.detail=t,this.injectedText=i}}class EOe{constructor(e,t){this.changeType=3,this.fromLineNumber=e,this.toLineNumber=t}}class vOe{constructor(e,t,i,n){this.changeType=4,this.injectedTexts=n,this.fromLineNumber=e,this.toLineNumber=t,this.detail=i}}class xOe{constructor(){this.changeType=5}}class VW{constructor(e,t,i,n){this.changes=e,this.versionId=t,this.isUndoing=i,this.isRedoing=n,this.resultingSelection=null}containsEvent(e){for(let t=0,i=this.changes.length;t<i;t++)if(this.changes[t].changeType===e)return!0;return!1}static merge(e,t){const i=[].concat(e.changes).concat(t.changes),n=t.versionId,o=e.isUndoing||t.isUndoing,l=e.isRedoing||t.isRedoing;return new VW(i,n,o,l)}}class mUe{constructor(e){this.changes=e}}class jZ{constructor(e,t){this.rawContentChangedEvent=e,this.contentChangedEvent=t}merge(e){const t=VW.merge(this.rawContentChangedEvent,e.rawContentChangedEvent),i=jZ._mergeChangeEvents(this.contentChangedEvent,e.contentChangedEvent);return new jZ(t,i)}static _mergeChangeEvents(e,t){const i=[].concat(e.changes).concat(t.changes),n=t.eol,o=t.versionId,l=e.isUndoing||t.isUndoing,r=e.isRedoing||t.isRedoing,a=e.isFlush||t.isFlush,d=e.isEolChange&&t.isEolChange;return{changes:i,eol:n,isEolChange:d,versionId:o,isUndoing:l,isRedoing:r,isFlush:a}}}var JOe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},nk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},bF;function XOe(s){const e=new cUe;return e.acceptChunk(s),e.finish()}function YOe(s){const e=new cUe;let t;for(;typeof(t=s.read())=="string";)e.acceptChunk(t);return e.finish()}function Rre(s,e){let t;return typeof s=="string"?t=XOe(s):Txe(s)?t=YOe(s):t=s,t.create(e)}let sk=0;const zOe=999,_Oe=1e4;class OOe{constructor(e){this._source=e,this._eos=!1}read(){if(this._eos)return null;const e=[];let t=0,i=0;do{const n=this._source.read();if(n===null)return this._eos=!0,t===0?null:e.join("");if(n.length>0&&(e[t++]=n,i+=n.length),i>=64*1024)return e.join("")}while(!0)}}const v1=()=>{throw new Error("Invalid change accessor")};var lp;let Eu=(lp=class extends de{static resolveOptions(e,t){if(t.detectIndentation){const i=hre(e,t.tabSize,t.insertSpaces);return new eD({tabSize:i.tabSize,indentSize:"tabSize",insertSpaces:i.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL,bracketPairColorizationOptions:t.bracketPairColorizationOptions})}return new eD(t)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(e){return this._eventEmitter.slowEvent(t=>e(t.contentChangedEvent))}onDidChangeContentOrInjectedText(e){return _h(this._eventEmitter.fastEvent(t=>e(t)),this._onDidChangeInjectedText.event(t=>e(t)))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(e,t,i,n=null,o,l,r,a){super(),this._undoRedoService=o,this._languageService=l,this._languageConfigurationService=r,this.instantiationService=a,this._onWillDispose=this._register(new re),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new $Oe(p=>this.handleBeforeFireDecorationsChangedEvent(p))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new re),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new re),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new re),this._eventEmitter=this._register(new eje),this._languageSelectionListener=this._register(new _o),this._deltaDecorationCallCnt=0,this._attachedViews=new LOe,sk++,this.id="$model"+sk,this.isForSimpleWidget=i.isForSimpleWidget,typeof n>"u"||n===null?this._associatedResource=At.parse("inmemory://model/"+sk):this._associatedResource=n,this._attachedEditorCount=0;const{textBuffer:d,disposable:c}=Rre(e,i.defaultEOL);this._buffer=d,this._bufferDisposable=c,this._options=bF.resolveOptions(this._buffer,i);const h=typeof t=="string"?t:t.languageId;typeof t!="string"&&(this._languageSelectionListener.value=t.onDidChange(()=>this._setLanguage(t.languageId))),this._bracketPairs=this._register(new $_e(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new sOe(this,this._languageConfigurationService)),this._decorationProvider=this._register(new tOe(this)),this._tokenizationTextModelPart=this.instantiationService.createInstance(mK,this,this._bracketPairs,h,this._attachedViews);const u=this._buffer.getLineCount(),m=this._buffer.getValueLengthInRange(new v(1,1,u,this._buffer.getLineLength(u)+1),0);i.largeFileOptimizations?(this._isTooLargeForTokenization=m>bF.LARGE_FILE_SIZE_THRESHOLD||u>bF.LARGE_FILE_LINE_COUNT_THRESHOLD,this._isTooLargeForHeapOperation=m>bF.LARGE_FILE_HEAP_OPERATION_THRESHOLD):(this._isTooLargeForTokenization=!1,this._isTooLargeForHeapOperation=!1),this._isTooLargeForSyncing=m>bF._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=ige(sk),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new Sre,this._commandManager=new Jee(this,this._undoRedoService),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._register(this._decorationProvider.onDidChange(()=>{this._onDidChangeDecorations.beginDeferredEmit(),this._onDidChangeDecorations.fire(),this._onDidChangeDecorations.endDeferredEmit()})),this._languageService.requestRichLanguageFeatures(h),this._register(this._languageConfigurationService.onDidChange(p=>{this._bracketPairs.handleLanguageConfigurationServiceChange(p),this._tokenizationTextModelPart.handleLanguageConfigurationServiceChange(p)}))}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const e=new WW([],"",`
- `,!1,!1,!0,!0);e.dispose(),this._buffer=e,this._bufferDisposable=de.None}_assertNotDisposed(){if(this._isDisposed)throw new en("Model is disposed!")}_emitContentChangedEvent(e,t){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent(t),this._bracketPairs.handleDidChangeContent(t),this._eventEmitter.fire(new jZ(e,t)))}setValue(e){if(this._assertNotDisposed(),e==null)throw Yc();const{textBuffer:t,disposable:i}=Rre(e,this._options.defaultEOL);this._setValueFromTextBuffer(t,i)}_createContentChanged2(e,t,i,n,o,l,r,a){return{changes:[{range:e,rangeOffset:t,rangeLength:i,text:n}],eol:this._buffer.getEOL(),isEolChange:a,versionId:this.getVersionId(),isUndoing:o,isRedoing:l,isFlush:r}}_setValueFromTextBuffer(e,t){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),o=this.getLineCount(),l=this.getLineMaxColumn(o);this._buffer=e,this._bufferDisposable.dispose(),this._bufferDisposable=t,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new Sre,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new VW([new GOe],this._versionId,!1,!1),this._createContentChanged2(new v(1,1,o,l),0,n,this.getValue(),!1,!1,!0,!1))}setEOL(e){this._assertNotDisposed();const t=e===1?`\r
- `:`
- `;if(this._buffer.getEOL()===t)return;const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),o=this.getLineCount(),l=this.getLineMaxColumn(o);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new VW([new xOe],this._versionId,!1,!1),this._createContentChanged2(new v(1,1,o,l),0,n,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder();for(let i=0,n=t.length;i<n;i++){const o=t[i],l=o.range,r=o.cachedAbsoluteStart-o.start,a=this._buffer.getOffsetAt(l.startLineNumber,l.startColumn),d=this._buffer.getOffsetAt(l.endLineNumber,l.endColumn);o.cachedAbsoluteStart=a,o.cachedAbsoluteEnd=d,o.cachedVersionId=e,o.start=a-r,o.end=d-r,ef(o)}}onBeforeAttached(){return this._attachedEditorCount++,this._attachedEditorCount===1&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.attachView()}onBeforeDetached(e){this._attachedEditorCount--,this._attachedEditorCount===0&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.detachView(e)}isAttachedToEditor(){return this._attachedEditorCount>0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isTooLargeForHeapOperation(){return this._isTooLargeForHeapOperation}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let e=0,t=0;const i=this._buffer.getLineCount();for(let n=1;n<=i;n++){const o=this._buffer.getLineLength(n);o>=_Oe?t+=o:e+=o}return t>e}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(e){this._assertNotDisposed();const t=typeof e.tabSize<"u"?e.tabSize:this._options.tabSize,i=typeof e.indentSize<"u"?e.indentSize:this._options.originalIndentSize,n=typeof e.insertSpaces<"u"?e.insertSpaces:this._options.insertSpaces,o=typeof e.trimAutoWhitespace<"u"?e.trimAutoWhitespace:this._options.trimAutoWhitespace,l=typeof e.bracketColorizationOptions<"u"?e.bracketColorizationOptions:this._options.bracketPairColorizationOptions,r=new eD({tabSize:t,indentSize:i,insertSpaces:n,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:o,bracketPairColorizationOptions:l});if(this._options.equals(r))return;const a=this._options.createChangeEvent(r);this._options=r,this._bracketPairs.handleDidChangeOptions(a),this._decorationProvider.handleDidChangeOptions(a),this._onDidChangeOptions.fire(a)}detectIndentation(e,t){this._assertNotDisposed();const i=hre(this._buffer,t,e);this.updateOptions({insertSpaces:i.insertSpaces,tabSize:i.tabSize,indentSize:i.tabSize})}normalizeIndentation(e){return this._assertNotDisposed(),Dee(e,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(e=null){const t=this.findMatches(ege.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(e,t.map(i=>({range:i.range,text:null})),()=>null)}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(e){this._assertNotDisposed();const t=this._validatePosition(e.lineNumber,e.column,0);return this._buffer.getOffsetAt(t.lineNumber,t.column)}getPositionAt(e){this._assertNotDisposed();const t=Math.min(this._buffer.getLength(),Math.max(0,e));return this._buffer.getPositionAt(t)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(e){this._versionId=e}_overwriteAlternativeVersionId(e){this._alternativeVersionId=e}_overwriteInitialUndoRedoSnapshot(e){this._initialUndoRedoSnapshot=e}getValue(e,t=!1){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new en("Operation would exceed heap memory limits");const i=this.getFullModelRange(),n=this.getValueInRange(i,e);return t?this._buffer.getBOM()+n:n}createSnapshot(e=!1){return new OOe(this._buffer.createSnapshot(e))}getValueLength(e,t=!1){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i,e);return t?this._buffer.getBOM().length+n:n}getValueInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(e),t)}getValueLengthInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(e),t)}getCharacterCountInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(e),t)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new en("Illegal value for lineNumber");return this._buffer.getLineContent(e)}getLineLength(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new en("Illegal value for lineNumber");return this._buffer.getLineLength(e)}getLinesContent(){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new en("Operation would exceed heap memory limits");return this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),this._buffer.getEOL()===`
- `?0:1}getLineMinColumn(e){return this._assertNotDisposed(),1}getLineMaxColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new en("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1}getLineFirstNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new en("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)}getLineLastNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new en("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)}_validateRangeRelaxedNoAllocations(e){const t=this._buffer.getLineCount(),i=e.startLineNumber,n=e.startColumn;let o=Math.floor(typeof i=="number"&&!isNaN(i)?i:1),l=Math.floor(typeof n=="number"&&!isNaN(n)?n:1);if(o<1)o=1,l=1;else if(o>t)o=t,l=this.getLineMaxColumn(o);else if(l<=1)l=1;else{const h=this.getLineMaxColumn(o);l>=h&&(l=h)}const r=e.endLineNumber,a=e.endColumn;let d=Math.floor(typeof r=="number"&&!isNaN(r)?r:1),c=Math.floor(typeof a=="number"&&!isNaN(a)?a:1);if(d<1)d=1,c=1;else if(d>t)d=t,c=this.getLineMaxColumn(d);else if(c<=1)c=1;else{const h=this.getLineMaxColumn(d);c>=h&&(c=h)}return i===o&&n===l&&r===d&&a===c&&e instanceof v&&!(e instanceof dt)?e:new v(o,l,d,c)}_isValidPosition(e,t,i){if(typeof e!="number"||typeof t!="number"||isNaN(e)||isNaN(t)||e<1||t<1||(e|0)!==e||(t|0)!==t)return!1;const n=this._buffer.getLineCount();if(e>n)return!1;if(t===1)return!0;const o=this.getLineMaxColumn(e);if(t>o)return!1;if(i===1){const l=this._buffer.getLineCharCode(e,t-2);if(xo(l))return!1}return!0}_validatePosition(e,t,i){const n=Math.floor(typeof e=="number"&&!isNaN(e)?e:1),o=Math.floor(typeof t=="number"&&!isNaN(t)?t:1),l=this._buffer.getLineCount();if(n<1)return new oe(1,1);if(n>l)return new oe(l,this.getLineMaxColumn(l));if(o<=1)return new oe(n,1);const r=this.getLineMaxColumn(n);if(o>=r)return new oe(n,r);if(i===1){const a=this._buffer.getLineCharCode(n,o-2);if(xo(a))return new oe(n,o-1)}return new oe(n,o)}validatePosition(e){return this._assertNotDisposed(),e instanceof oe&&this._isValidPosition(e.lineNumber,e.column,1)?e:this._validatePosition(e.lineNumber,e.column,1)}_isValidRange(e,t){const i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,l=e.endColumn;if(!this._isValidPosition(i,n,0)||!this._isValidPosition(o,l,0))return!1;if(t===1){const r=n>1?this._buffer.getLineCharCode(i,n-2):0,a=l>1&&l<=this._buffer.getLineLength(o)?this._buffer.getLineCharCode(o,l-2):0,d=xo(r),c=xo(a);return!d&&!c}return!0}validateRange(e){if(this._assertNotDisposed(),e instanceof v&&!(e instanceof dt)&&this._isValidRange(e,1))return e;const i=this._validatePosition(e.startLineNumber,e.startColumn,0),n=this._validatePosition(e.endLineNumber,e.endColumn,0),o=i.lineNumber,l=i.column,r=n.lineNumber,a=n.column;{const d=l>1?this._buffer.getLineCharCode(o,l-2):0,c=a>1&&a<=this._buffer.getLineLength(r)?this._buffer.getLineCharCode(r,a-2):0,h=xo(d),u=xo(c);return!h&&!u?new v(o,l,r,a):o===r&&l===a?new v(o,l-1,r,a-1):h&&u?new v(o,l-1,r,a+1):h?new v(o,l-1,r,a):new v(o,l,r,a+1)}}modifyPosition(e,t){this._assertNotDisposed();const i=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,i)))}getFullModelRange(){this._assertNotDisposed();const e=this.getLineCount();return new v(1,1,e,this.getLineMaxColumn(e))}findMatchesLineByLine(e,t,i,n){return this._buffer.findMatchesLineByLine(e,t,i,n)}findMatches(e,t,i,n,o,l,r=zOe){this._assertNotDisposed();let a=null;t!==null&&(Array.isArray(t)||(t=[t]),t.every(h=>v.isIRange(h))&&(a=t.map(h=>this.validateRange(h)))),a===null&&(a=[this.getFullModelRange()]),a=a.sort((h,u)=>h.startLineNumber-u.startLineNumber||h.startColumn-u.startColumn);const d=[];d.push(a.reduce((h,u)=>v.areIntersecting(h,u)?h.plusRange(u):(d.push(h),u)));let c;if(!i&&e.indexOf(`
- `)<0){const u=new gF(e,i,n,o).parseSearchRequest();if(!u)return[];c=m=>this.findMatchesLineByLine(m,u,l,r)}else c=h=>GL.findMatches(this,new gF(e,i,n,o),h,l,r);return d.map(c).reduce((h,u)=>h.concat(u),[])}findNextMatch(e,t,i,n,o,l){this._assertNotDisposed();const r=this.validatePosition(t);if(!i&&e.indexOf(`
- `)<0){const d=new gF(e,i,n,o).parseSearchRequest();if(!d)return null;const c=this.getLineCount();let h=new v(r.lineNumber,r.column,c,this.getLineMaxColumn(c)),u=this.findMatchesLineByLine(h,d,l,1);return GL.findNextMatch(this,new gF(e,i,n,o),r,l),u.length>0||(h=new v(1,1,r.lineNumber,this.getLineMaxColumn(r.lineNumber)),u=this.findMatchesLineByLine(h,d,l,1),u.length>0)?u[0]:null}return GL.findNextMatch(this,new gF(e,i,n,o),r,l)}findPreviousMatch(e,t,i,n,o,l){this._assertNotDisposed();const r=this.validatePosition(t);return GL.findPreviousMatch(this,new gF(e,i,n,o),r,l)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(e){if((this.getEOL()===`
- `?0:1)!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(e){return e instanceof r3?e:new r3(e.identifier||null,this.validateRange(e.range),e.text,e.forceMoveMarkers||!1,e.isAutoWhitespaceEdit||!1,e._isTracked||!1)}_validateEditOperations(e){const t=[];for(let i=0,n=e.length;i<n;i++)t[i]=this._validateEditOperation(e[i]);return t}pushEditOperations(e,t,i,n){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(e,this._validateEditOperations(t),i,n)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_pushEditOperations(e,t,i,n){if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){const o=t.map(r=>({range:this.validateRange(r.range),text:r.text}));let l=!0;if(e)for(let r=0,a=e.length;r<a;r++){const d=e[r];let c=!1;for(let h=0,u=o.length;h<u;h++){const m=o[h].range,p=m.startLineNumber>d.endLineNumber,g=d.startLineNumber>m.endLineNumber;if(!p&&!g){c=!0;break}}if(!c){l=!1;break}}if(l)for(let r=0,a=this._trimAutoWhitespaceLines.length;r<a;r++){const d=this._trimAutoWhitespaceLines[r],c=this.getLineMaxColumn(d);let h=!0;for(let u=0,m=o.length;u<m;u++){const p=o[u].range,g=o[u].text;if(!(d<p.startLineNumber||d>p.endLineNumber)&&!(d===p.startLineNumber&&p.startColumn===c&&p.isEmpty()&&g&&g.length>0&&g.charAt(0)===`
- `)&&!(d===p.startLineNumber&&p.startColumn===1&&p.isEmpty()&&g&&g.length>0&&g.charAt(g.length-1)===`
- `)){h=!1;break}}if(h){const u=new v(d,1,d,c);t.push(new r3(null,u,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(e,t,i,n)}_applyUndo(e,t,i,n){const o=e.map(l=>{const r=this.getPositionAt(l.newPosition),a=this.getPositionAt(l.newEnd);return{range:new v(r.lineNumber,r.column,a.lineNumber,a.column),text:l.oldText}});this._applyUndoRedoEdits(o,t,!0,!1,i,n)}_applyRedo(e,t,i,n){const o=e.map(l=>{const r=this.getPositionAt(l.oldPosition),a=this.getPositionAt(l.oldEnd);return{range:new v(r.lineNumber,r.column,a.lineNumber,a.column),text:l.newText}});this._applyUndoRedoEdits(o,t,!1,!0,i,n)}_applyUndoRedoEdits(e,t,i,n,o,l){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=i,this._isRedoing=n,this.applyEdits(e,!1),this.setEOL(t),this._overwriteAlternativeVersionId(o)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(l),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(e,t=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const i=this._validateEditOperations(e);return this._doApplyEdits(i,t)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(e,t){const i=this._buffer.getLineCount(),n=this._buffer.applyEdits(e,this._options.trimAutoWhitespace,t),o=this._buffer.getLineCount(),l=n.changes;if(this._trimAutoWhitespaceLines=n.trimAutoWhitespaceLineNumbers,l.length!==0){for(let d=0,c=l.length;d<c;d++){const h=l[d];this._decorationsTree.acceptReplace(h.rangeOffset,h.rangeLength,h.text.length,h.forceMoveMarkers)}const r=[];this._increaseVersionId();let a=i;for(let d=0,c=l.length;d<c;d++){const h=l[d],[u]=KU(h.text);this._onDidChangeDecorations.fire();const m=h.range.startLineNumber,p=h.range.endLineNumber,g=p-m,b=u,f=Math.min(g,b),Z=b-g,A=o-a-Z+m,N=A,W=A+b,Q=this._decorationsTree.getInjectedTextInInterval(this,this.getOffsetAt(new oe(N,1)),this.getOffsetAt(new oe(W,this.getLineMaxColumn(W))),0),R=Pu.fromDecorations(Q),M=new f0(R);for(let w=f;w>=0;w--){const Y=m+w,G=A+w;M.takeFromEndWhile(j=>j.lineNumber>G);const P=M.takeFromEndWhile(j=>j.lineNumber===G);r.push(new Nre(Y,this.getLineContent(G),P))}if(f<g){const w=m+f;r.push(new EOe(w+1,p))}if(f<b){const w=new f0(R),Y=m+f,G=b-f,P=o-a-G+Y+1,j=[],X=[];for(let ie=0;ie<G;ie++){const se=P+ie;X[ie]=this.getLineContent(se),w.takeWhile(pe=>pe.lineNumber<se),j[ie]=w.takeWhile(pe=>pe.lineNumber===se)}r.push(new vOe(Y+1,m+b,X,j))}a+=Z}this._emitContentChangedEvent(new VW(r,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:l,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return n.reverseEdits===null?void 0:n.reverseEdits}undo(){return this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){return this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}handleBeforeFireDecorationsChangedEvent(e){if(e===null||e.size===0)return;const i=Array.from(e).map(n=>new Nre(n,this.getLineContent(n),this._getInjectedTextInLine(n)));this._onDidChangeInjectedText.fire(new mUe(i))}changeDecorations(e,t=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(t,e)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(e,t){const i={addDecoration:(o,l)=>this._deltaDecorationsImpl(e,[],[{range:o,options:l}])[0],changeDecoration:(o,l)=>{this._changeDecorationImpl(o,l)},changeDecorationOptions:(o,l)=>{this._changeDecorationOptionsImpl(o,Vre(l))},removeDecoration:o=>{this._deltaDecorationsImpl(e,[o],[])},deltaDecorations:(o,l)=>o.length===0&&l.length===0?[]:this._deltaDecorationsImpl(e,o,l)};let n=null;try{n=t(i)}catch(o){vt(o)}return i.addDecoration=v1,i.changeDecoration=v1,i.changeDecorationOptions=v1,i.removeDecoration=v1,i.deltaDecorations=v1,n}deltaDecorations(e,t,i=0){if(this._assertNotDisposed(),e||(e=[]),e.length===0&&t.length===0)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn("Invoking deltaDecorations recursively could lead to leaking decorations."),vt(new Error("Invoking deltaDecorations recursively could lead to leaking decorations."))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(i,e,t)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(e){return this.getDecorationRange(e)}_setTrackedRange(e,t,i){const n=e?this._decorations[e]:null;if(!n)return t?this._deltaDecorationsImpl(0,[],[{range:t,options:Wre[i]}],!0)[0]:null;if(!t)return this._decorationsTree.delete(n),delete this._decorations[n.id],null;const o=this._validateRangeRelaxedNoAllocations(t),l=this._buffer.getOffsetAt(o.startLineNumber,o.startColumn),r=this._buffer.getOffsetAt(o.endLineNumber,o.endColumn);return this._decorationsTree.delete(n),n.reset(this.getVersionId(),l,r,o),n.setOptions(Wre[i]),this._decorationsTree.insert(n),n.id}removeAllDecorationsWithOwnerId(e){if(this._isDisposed)return;const t=this._decorationsTree.collectNodesFromOwner(e);for(let i=0,n=t.length;i<n;i++){const o=t[i];this._decorationsTree.delete(o),delete this._decorations[o.id]}}getDecorationOptions(e){const t=this._decorations[e];return t?t.options:null}getDecorationRange(e){const t=this._decorations[e];return t?this._decorationsTree.getNodeRange(this,t):null}getLineDecorations(e,t=0,i=!1){return e<1||e>this.getLineCount()?[]:this.getLinesDecorations(e,e,t,i)}getLinesDecorations(e,t,i=0,n=!1,o=!1){const l=this.getLineCount(),r=Math.min(l,Math.max(1,e)),a=Math.min(l,Math.max(1,t)),d=this.getLineMaxColumn(a),c=new v(r,1,a,d),h=this._getDecorationsInRange(c,i,n,o);return uj(h,this._decorationProvider.getDecorationsInRange(c,i,n)),h}getDecorationsInRange(e,t=0,i=!1,n=!1,o=!1){const l=this.validateRange(e),r=this._getDecorationsInRange(l,t,i,o);return uj(r,this._decorationProvider.getDecorationsInRange(l,t,i,n)),r}getOverviewRulerDecorations(e=0,t=!1){return this._decorationsTree.getAll(this,e,t,!0,!1)}getInjectedTextDecorations(e=0){return this._decorationsTree.getAllInjectedText(this,e)}_getInjectedTextInLine(e){const t=this._buffer.getOffsetAt(e,1),i=t+this._buffer.getLineLength(e),n=this._decorationsTree.getInjectedTextInInterval(this,t,i,0);return Pu.fromDecorations(n).filter(o=>o.lineNumber===e)}getAllDecorations(e=0,t=!1){let i=this._decorationsTree.getAll(this,e,t,!1,!1);return i=i.concat(this._decorationProvider.getAllDecorations(e,t)),i}getAllMarginDecorations(e=0){return this._decorationsTree.getAll(this,e,!1,!1,!0)}_getDecorationsInRange(e,t,i,n){const o=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),l=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn);return this._decorationsTree.getAllInInterval(this,o,l,t,i,n)}getRangeAt(e,t){return this._buffer.getRangeAt(e,t-e)}_changeDecorationImpl(e,t){const i=this._decorations[e];if(!i)return;if(i.options.after){const r=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(r.endLineNumber)}if(i.options.before){const r=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(r.startLineNumber)}const n=this._validateRangeRelaxedNoAllocations(t),o=this._buffer.getOffsetAt(n.startLineNumber,n.startColumn),l=this._buffer.getOffsetAt(n.endLineNumber,n.endColumn);this._decorationsTree.delete(i),i.reset(this.getVersionId(),o,l,n),this._decorationsTree.insert(i),this._onDidChangeDecorations.checkAffectedAndFire(i.options),i.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.endLineNumber),i.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(n.startLineNumber)}_changeDecorationOptionsImpl(e,t){const i=this._decorations[e];if(!i)return;const n=!!(i.options.overviewRuler&&i.options.overviewRuler.color),o=!!(t.overviewRuler&&t.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire(i.options),this._onDidChangeDecorations.checkAffectedAndFire(t),i.options.after||t.after){const a=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(a.endLineNumber)}if(i.options.before||t.before){const a=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(a.startLineNumber)}const l=n!==o,r=HOe(t)!==hD(i);l||r?(this._decorationsTree.delete(i),i.setOptions(t),this._decorationsTree.insert(i)):i.setOptions(t)}_deltaDecorationsImpl(e,t,i,n=!1){const o=this.getVersionId(),l=t.length;let r=0;const a=i.length;let d=0;this._onDidChangeDecorations.beginDeferredEmit();try{const c=new Array(a);for(;r<l||d<a;){let h=null;if(r<l){do h=this._decorations[t[r++]];while(!h&&r<l);if(h){if(h.options.after){const u=this._decorationsTree.getNodeRange(this,h);this._onDidChangeDecorations.recordLineAffectedByInjectedText(u.endLineNumber)}if(h.options.before){const u=this._decorationsTree.getNodeRange(this,h);this._onDidChangeDecorations.recordLineAffectedByInjectedText(u.startLineNumber)}this._decorationsTree.delete(h),n||this._onDidChangeDecorations.checkAffectedAndFire(h.options)}}if(d<a){if(!h){const f=++this._lastDecorationId,Z=`${this._instanceId};${f}`;h=new lUe(Z,0,0),this._decorations[Z]=h}const u=i[d],m=this._validateRangeRelaxedNoAllocations(u.range),p=Vre(u.options),g=this._buffer.getOffsetAt(m.startLineNumber,m.startColumn),b=this._buffer.getOffsetAt(m.endLineNumber,m.endColumn);h.ownerId=e,h.reset(o,g,b,m),h.setOptions(p),h.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(m.endLineNumber),h.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(m.startLineNumber),n||this._onDidChangeDecorations.checkAffectedAndFire(p),this._decorationsTree.insert(h),c[d]=h.id,d++}else h&&delete this._decorations[h.id]}return c}finally{this._onDidChangeDecorations.endDeferredEmit()}}getLanguageId(){return this.tokenization.getLanguageId()}setLanguage(e,t){typeof e=="string"?(this._languageSelectionListener.clear(),this._setLanguage(e,t)):(this._languageSelectionListener.value=e.onDidChange(()=>this._setLanguage(e.languageId,t)),this._setLanguage(e.languageId,t))}_setLanguage(e,t){this.tokenization.setLanguageId(e,t),this._languageService.requestRichLanguageFeatures(e)}getLanguageIdAtPosition(e,t){return this.tokenization.getLanguageIdAtPosition(e,t)}getWordAtPosition(e){return this._tokenizationTextModelPart.getWordAtPosition(e)}getWordUntilPosition(e){return this._tokenizationTextModelPart.getWordUntilPosition(e)}normalizePosition(e,t){return e}getLineIndentColumn(e){return jOe(this.getLineContent(e))+1}},bF=lp,lp._MODEL_SYNC_LIMIT=50*1024*1024,lp.LARGE_FILE_SIZE_THRESHOLD=20*1024*1024,lp.LARGE_FILE_LINE_COUNT_THRESHOLD=300*1e3,lp.LARGE_FILE_HEAP_OPERATION_THRESHOLD=256*1024*1024,lp.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:er.tabSize,indentSize:er.indentSize,insertSpaces:er.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:er.trimAutoWhitespace,largeFileOptimizations:er.largeFileOptimizations,bracketPairColorizationOptions:er.bracketPairColorizationOptions},lp);Eu=bF=JOe([nk(4,$$),nk(5,Zs),nk(6,Qs),nk(7,bt)],Eu);function jOe(s){let e=0;for(const t of s)if(t===" "||t===" ")e++;else break;return e}function k3(s){return!!(s.options.overviewRuler&&s.options.overviewRuler.color)}function HOe(s){return!!s.after||!!s.before}function hD(s){return!!s.options.after||!!s.options.before}class Sre{constructor(){this._decorationsTree0=new M3,this._decorationsTree1=new M3,this._injectedTextDecorationsTree=new M3}ensureAllNodesHaveRanges(e){this.getAll(e,0,!1,!1,!1)}_ensureNodesHaveRanges(e,t){for(const i of t)i.range===null&&(i.range=e.getRangeAt(i.cachedAbsoluteStart,i.cachedAbsoluteEnd));return t}getAllInInterval(e,t,i,n,o,l){const r=e.getVersionId(),a=this._intervalSearch(t,i,n,o,r,l);return this._ensureNodesHaveRanges(e,a)}_intervalSearch(e,t,i,n,o,l){const r=this._decorationsTree0.intervalSearch(e,t,i,n,o,l),a=this._decorationsTree1.intervalSearch(e,t,i,n,o,l),d=this._injectedTextDecorationsTree.intervalSearch(e,t,i,n,o,l);return r.concat(a).concat(d)}getInjectedTextInInterval(e,t,i,n){const o=e.getVersionId(),l=this._injectedTextDecorationsTree.intervalSearch(t,i,n,!1,o,!1);return this._ensureNodesHaveRanges(e,l).filter(r=>r.options.showIfCollapsed||!r.range.isEmpty())}getAllInjectedText(e,t){const i=e.getVersionId(),n=this._injectedTextDecorationsTree.search(t,!1,i,!1);return this._ensureNodesHaveRanges(e,n).filter(o=>o.options.showIfCollapsed||!o.range.isEmpty())}getAll(e,t,i,n,o){const l=e.getVersionId(),r=this._search(t,i,n,l,o);return this._ensureNodesHaveRanges(e,r)}_search(e,t,i,n,o){if(i)return this._decorationsTree1.search(e,t,n,o);{const l=this._decorationsTree0.search(e,t,n,o),r=this._decorationsTree1.search(e,t,n,o),a=this._injectedTextDecorationsTree.search(e,t,n,o);return l.concat(r).concat(a)}}collectNodesFromOwner(e){const t=this._decorationsTree0.collectNodesFromOwner(e),i=this._decorationsTree1.collectNodesFromOwner(e),n=this._injectedTextDecorationsTree.collectNodesFromOwner(e);return t.concat(i).concat(n)}collectNodesPostOrder(){const e=this._decorationsTree0.collectNodesPostOrder(),t=this._decorationsTree1.collectNodesPostOrder(),i=this._injectedTextDecorationsTree.collectNodesPostOrder();return e.concat(t).concat(i)}insert(e){hD(e)?this._injectedTextDecorationsTree.insert(e):k3(e)?this._decorationsTree1.insert(e):this._decorationsTree0.insert(e)}delete(e){hD(e)?this._injectedTextDecorationsTree.delete(e):k3(e)?this._decorationsTree1.delete(e):this._decorationsTree0.delete(e)}getNodeRange(e,t){const i=e.getVersionId();return t.cachedVersionId!==i&&this._resolveNode(t,i),t.range===null&&(t.range=e.getRangeAt(t.cachedAbsoluteStart,t.cachedAbsoluteEnd)),t.range}_resolveNode(e,t){hD(e)?this._injectedTextDecorationsTree.resolveNode(e,t):k3(e)?this._decorationsTree1.resolveNode(e,t):this._decorationsTree0.resolveNode(e,t)}acceptReplace(e,t,i,n){this._decorationsTree0.acceptReplace(e,t,i,n),this._decorationsTree1.acceptReplace(e,t,i,n),this._injectedTextDecorationsTree.acceptReplace(e,t,i,n)}}function bm(s){return s.replace(/[^a-z0-9\-_]/gi," ")}class pUe{constructor(e){this.color=e.color||"",this.darkColor=e.darkColor||""}}class POe extends pUe{constructor(e){super(e),this._resolvedColor=null,this.position=typeof e.position=="number"?e.position:lc.Center}getColor(e){return this._resolvedColor||(e.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(e,t){if(typeof e=="string")return e;const i=e?t.getColor(e.id):null;return i?i.toString():""}}class KOe{constructor(e){this.position=(e==null?void 0:e.position)??Kh.Center,this.persistLane=e==null?void 0:e.persistLane}}class qOe extends pUe{constructor(e){super(e),this.position=e.position,this.sectionHeaderStyle=e.sectionHeaderStyle??null,this.sectionHeaderText=e.sectionHeaderText??null}getColor(e){return this._resolvedColor||(e.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(e,t){return typeof e=="string"?Re.fromHex(e):t.getColor(e.id)}}class tf{static from(e){return e instanceof tf?e:new tf(e)}constructor(e){this.content=e.content||"",this.inlineClassName=e.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=e.attachedData||null,this.cursorStops=e.cursorStops||null}}class Ot{static register(e){return new Ot(e)}static createDynamic(e){return new Ot(e)}constructor(e){this.description=e.description,this.blockClassName=e.blockClassName?bm(e.blockClassName):null,this.blockDoesNotCollapse=e.blockDoesNotCollapse??null,this.blockIsAfterEnd=e.blockIsAfterEnd??null,this.blockPadding=e.blockPadding??null,this.stickiness=e.stickiness||0,this.zIndex=e.zIndex||0,this.className=e.className?bm(e.className):null,this.shouldFillLineOnLineBreak=e.shouldFillLineOnLineBreak??null,this.hoverMessage=e.hoverMessage||null,this.glyphMarginHoverMessage=e.glyphMarginHoverMessage||null,this.lineNumberHoverMessage=e.lineNumberHoverMessage||null,this.isWholeLine=e.isWholeLine||!1,this.showIfCollapsed=e.showIfCollapsed||!1,this.collapseOnReplaceEdit=e.collapseOnReplaceEdit||!1,this.overviewRuler=e.overviewRuler?new POe(e.overviewRuler):null,this.minimap=e.minimap?new qOe(e.minimap):null,this.glyphMargin=e.glyphMarginClassName?new KOe(e.glyphMargin):null,this.glyphMarginClassName=e.glyphMarginClassName?bm(e.glyphMarginClassName):null,this.linesDecorationsClassName=e.linesDecorationsClassName?bm(e.linesDecorationsClassName):null,this.lineNumberClassName=e.lineNumberClassName?bm(e.lineNumberClassName):null,this.linesDecorationsTooltip=e.linesDecorationsTooltip?pGe(e.linesDecorationsTooltip):null,this.firstLineDecorationClassName=e.firstLineDecorationClassName?bm(e.firstLineDecorationClassName):null,this.marginClassName=e.marginClassName?bm(e.marginClassName):null,this.inlineClassName=e.inlineClassName?bm(e.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=e.beforeContentClassName?bm(e.beforeContentClassName):null,this.afterContentClassName=e.afterContentClassName?bm(e.afterContentClassName):null,this.after=e.after?tf.from(e.after):null,this.before=e.before?tf.from(e.before):null,this.hideInCommentTokens=e.hideInCommentTokens??!1,this.hideInStringTokens=e.hideInStringTokens??!1}}Ot.EMPTY=Ot.register({description:"empty"});const Wre=[Ot.register({description:"tracked-range-always-grows-when-typing-at-edges",stickiness:0}),Ot.register({description:"tracked-range-never-grows-when-typing-at-edges",stickiness:1}),Ot.register({description:"tracked-range-grows-only-when-typing-before",stickiness:2}),Ot.register({description:"tracked-range-grows-only-when-typing-after",stickiness:3})];function Vre(s){return s instanceof Ot?s:Ot.createDynamic(s)}class $Oe extends de{constructor(e){super(),this.handleBeforeFire=e,this._actual=this._register(new re),this.event=this._actual.event,this._affectedInjectedTextLines=null,this._deferredCnt=0,this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._affectsLineNumber=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){var e;this._deferredCnt--,this._deferredCnt===0&&(this._shouldFireDeferred&&this.doFire(),(e=this._affectedInjectedTextLines)==null||e.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(e){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(e)}checkAffectedAndFire(e){var t,i;this._affectsMinimap||(this._affectsMinimap=!!((t=e.minimap)!=null&&t.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!((i=e.overviewRuler)!=null&&i.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!e.glyphMarginClassName),this._affectsLineNumber||(this._affectsLineNumber=!!e.lineNumberClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){this._deferredCnt===0?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const e={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler,affectsGlyphMargin:this._affectsGlyphMargin,affectsLineNumber:this._affectsLineNumber};this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._actual.fire(e)}}class eje extends de{constructor(){super(),this._fastEmitter=this._register(new re),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new re),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(e=null){if(this._deferredCnt--,this._deferredCnt===0&&this._deferredEvent!==null){this._deferredEvent.rawContentChangedEvent.resultingSelection=e;const t=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(t),this._slowEmitter.fire(t)}}fire(e){if(this._deferredCnt>0){this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e;return}this._fastEmitter.fire(e),this._slowEmitter.fire(e)}}var tje=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ok=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},FR;function Df(s){return s.toString()}let ije=class{constructor(e,t,i){this.model=e,this._modelEventListeners=new Ze,this.model=e,this._modelEventListeners.add(e.onWillDispose(()=>t(e))),this._modelEventListeners.add(e.onDidChangeLanguage(n=>i(e,n)))}dispose(){this._modelEventListeners.dispose()}};const nje=sa||Fi?1:2;class sje{constructor(e,t,i,n,o,l,r,a){this.uri=e,this.initialUndoRedoSnapshot=t,this.time=i,this.sharesUndoRedoStack=n,this.heapSize=o,this.sha1=l,this.versionId=r,this.alternativeVersionId=a}}var xV;let pK=(xV=class extends de{constructor(e,t,i,n){super(),this._configurationService=e,this._resourcePropertiesService=t,this._undoRedoService=i,this._instantiationService=n,this._onModelAdded=this._register(new re),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new re),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new re),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration(o=>this._updateModelOptions(o))),this._updateModelOptions(void 0)}static _readModelOptions(e,t){var u;let i=er.tabSize;if(e.editor&&typeof e.editor.tabSize<"u"){const m=parseInt(e.editor.tabSize,10);isNaN(m)||(i=m),i<1&&(i=1)}let n="tabSize";if(e.editor&&typeof e.editor.indentSize<"u"&&e.editor.indentSize!=="tabSize"){const m=parseInt(e.editor.indentSize,10);isNaN(m)||(n=Math.max(m,1))}let o=er.insertSpaces;e.editor&&typeof e.editor.insertSpaces<"u"&&(o=e.editor.insertSpaces==="false"?!1:!!e.editor.insertSpaces);let l=nje;const r=e.eol;r===`\r
- `?l=2:r===`
- `&&(l=1);let a=er.trimAutoWhitespace;e.editor&&typeof e.editor.trimAutoWhitespace<"u"&&(a=e.editor.trimAutoWhitespace==="false"?!1:!!e.editor.trimAutoWhitespace);let d=er.detectIndentation;e.editor&&typeof e.editor.detectIndentation<"u"&&(d=e.editor.detectIndentation==="false"?!1:!!e.editor.detectIndentation);let c=er.largeFileOptimizations;e.editor&&typeof e.editor.largeFileOptimizations<"u"&&(c=e.editor.largeFileOptimizations==="false"?!1:!!e.editor.largeFileOptimizations);let h=er.bracketPairColorizationOptions;return(u=e.editor)!=null&&u.bracketPairColorization&&typeof e.editor.bracketPairColorization=="object"&&(h={enabled:!!e.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!e.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:t,tabSize:i,indentSize:n,insertSpaces:o,detectIndentation:d,defaultEOL:l,trimAutoWhitespace:a,largeFileOptimizations:c,bracketPairColorizationOptions:h}}_getEOL(e,t){if(e)return this._resourcePropertiesService.getEOL(e,t);const i=this._configurationService.getValue("files.eol",{overrideIdentifier:t});return i&&typeof i=="string"&&i!=="auto"?i:pd===3||pd===2?`
- `:`\r
- `}_shouldRestoreUndoStack(){const e=this._configurationService.getValue("files.restoreUndoStack");return typeof e=="boolean"?e:!0}getCreationOptions(e,t,i){const n=typeof e=="string"?e:e.languageId;let o=this._modelCreationOptionsByLanguageAndResource[n+t];if(!o){const l=this._configurationService.getValue("editor",{overrideIdentifier:n,resource:t}),r=this._getEOL(t,n);o=FR._readModelOptions({editor:l,eol:r},i),this._modelCreationOptionsByLanguageAndResource[n+t]=o}return o}_updateModelOptions(e){const t=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const i=Object.keys(this._models);for(let n=0,o=i.length;n<o;n++){const l=i[n],r=this._models[l],a=r.model.getLanguageId(),d=r.model.uri;if(e&&!e.affectsConfiguration("editor",{overrideIdentifier:a,resource:d})&&!e.affectsConfiguration("files.eol",{overrideIdentifier:a,resource:d}))continue;const c=t[a+d],h=this.getCreationOptions(a,d,r.model.isForSimpleWidget);FR._setModelOptionsForModel(r.model,h,c)}}static _setModelOptionsForModel(e,t,i){i&&i.defaultEOL!==t.defaultEOL&&e.getLineCount()===1&&e.setEOL(t.defaultEOL===1?0:1),!(i&&i.detectIndentation===t.detectIndentation&&i.insertSpaces===t.insertSpaces&&i.tabSize===t.tabSize&&i.indentSize===t.indentSize&&i.trimAutoWhitespace===t.trimAutoWhitespace&&gd(i.bracketPairColorizationOptions,t.bracketPairColorizationOptions))&&(t.detectIndentation?(e.detectIndentation(t.insertSpaces,t.tabSize),e.updateOptions({trimAutoWhitespace:t.trimAutoWhitespace,bracketColorizationOptions:t.bracketPairColorizationOptions})):e.updateOptions({insertSpaces:t.insertSpaces,tabSize:t.tabSize,indentSize:t.indentSize,trimAutoWhitespace:t.trimAutoWhitespace,bracketColorizationOptions:t.bracketPairColorizationOptions}))}_insertDisposedModel(e){this._disposedModels.set(Df(e.uri),e),this._disposedModelsHeapSize+=e.heapSize}_removeDisposedModel(e){const t=this._disposedModels.get(Df(e));return t&&(this._disposedModelsHeapSize-=t.heapSize),this._disposedModels.delete(Df(e)),t}_ensureDisposedModelsHeapSize(e){if(this._disposedModelsHeapSize>e){const t=[];for(this._disposedModels.forEach(i=>{i.sharesUndoRedoStack||t.push(i)}),t.sort((i,n)=>i.time-n.time);t.length>0&&this._disposedModelsHeapSize>e;){const i=t.shift();this._removeDisposedModel(i.uri),i.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(i.initialUndoRedoSnapshot)}}}_createModelData(e,t,i,n){const o=this.getCreationOptions(t,i,n),l=this._instantiationService.createInstance(Eu,e,t,o,i);if(i&&this._disposedModels.has(Df(i))){const d=this._removeDisposedModel(i),c=this._undoRedoService.getElements(i),h=this._getSHA1Computer(),u=h.canComputeSHA1(l)?h.computeSHA1(l)===d.sha1:!1;if(u||d.sharesUndoRedoStack){for(const m of c.past)Bg(m)&&m.matchesResource(i)&&m.setModel(l);for(const m of c.future)Bg(m)&&m.matchesResource(i)&&m.setModel(l);this._undoRedoService.setElementsValidFlag(i,!0,m=>Bg(m)&&m.matchesResource(i)),u&&(l._overwriteVersionId(d.versionId),l._overwriteAlternativeVersionId(d.alternativeVersionId),l._overwriteInitialUndoRedoSnapshot(d.initialUndoRedoSnapshot))}else d.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(d.initialUndoRedoSnapshot)}const r=Df(l.uri);if(this._models[r])throw new Error("ModelService: Cannot add model because it already exists!");const a=new ije(l,d=>this._onWillDispose(d),(d,c)=>this._onDidChangeLanguage(d,c));return this._models[r]=a,a}createModel(e,t,i,n=!1){let o;return t?o=this._createModelData(e,t,i,n):o=this._createModelData(e,ia,i,n),this._onModelAdded.fire(o.model),o.model}getModels(){const e=[],t=Object.keys(this._models);for(let i=0,n=t.length;i<n;i++){const o=t[i];e.push(this._models[o].model)}return e}getModel(e){const t=Df(e),i=this._models[t];return i?i.model:null}_schemaShouldMaintainUndoRedoElements(e){return e.scheme===Xt.file||e.scheme===Xt.vscodeRemote||e.scheme===Xt.vscodeUserData||e.scheme===Xt.vscodeNotebookCell||e.scheme==="fake-fs"}_onWillDispose(e){const t=Df(e.uri),i=this._models[t],n=this._undoRedoService.getUriComparisonKey(e.uri)!==e.uri.toString();let o=!1,l=0;if(n||this._shouldRestoreUndoStack()&&this._schemaShouldMaintainUndoRedoElements(e.uri)){const d=this._undoRedoService.getElements(e.uri);if(d.past.length>0||d.future.length>0){for(const c of d.past)Bg(c)&&c.matchesResource(e.uri)&&(o=!0,l+=c.heapSize(e.uri),c.setModel(e.uri));for(const c of d.future)Bg(c)&&c.matchesResource(e.uri)&&(o=!0,l+=c.heapSize(e.uri),c.setModel(e.uri))}}const r=FR.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK,a=this._getSHA1Computer();if(o)if(!n&&(l>r||!a.canComputeSHA1(e))){const d=i.model.getInitialUndoRedoSnapshot();d!==null&&this._undoRedoService.restoreSnapshot(d)}else this._ensureDisposedModelsHeapSize(r-l),this._undoRedoService.setElementsValidFlag(e.uri,!1,d=>Bg(d)&&d.matchesResource(e.uri)),this._insertDisposedModel(new sje(e.uri,i.model.getInitialUndoRedoSnapshot(),Date.now(),n,l,a.computeSHA1(e),e.getVersionId(),e.getAlternativeVersionId()));else if(!n){const d=i.model.getInitialUndoRedoSnapshot();d!==null&&this._undoRedoService.restoreSnapshot(d)}delete this._models[t],i.dispose(),delete this._modelCreationOptionsByLanguageAndResource[e.getLanguageId()+e.uri],this._onModelRemoved.fire(e)}_onDidChangeLanguage(e,t){const i=t.oldLanguage,n=e.getLanguageId(),o=this.getCreationOptions(i,e.uri,e.isForSimpleWidget),l=this.getCreationOptions(n,e.uri,e.isForSimpleWidget);FR._setModelOptionsForModel(e,l,o),this._onModelModeChanged.fire({model:e,oldLanguageId:i})}_getSHA1Computer(){return new gK}},FR=xV,xV.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024,xV);pK=FR=tje([ok(0,li),ok(1,d0e),ok(2,$$),ok(3,bt)],pK);const ZX=class ZX{canComputeSHA1(e){return e.getValueLength()<=ZX.MAX_MODEL_SIZE}computeSHA1(e){const t=new wH,i=e.createSnapshot();let n;for(;n=i.read();)t.update(n);return t.digest()}};ZX.MAX_MODEL_SIZE=10*1024*1024;let gK=ZX;var bK;(function(s){s[s.PRESERVE=0]="PRESERVE",s[s.LAST=1]="LAST"})(bK||(bK={}));const tN={Quickaccess:"workbench.contributions.quickaccess"};class oje{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(e){return e.prefix.length===0?this.defaultProvider=e:this.providers.push(e),this.providers.sort((t,i)=>i.prefix.length-t.prefix.length),gt(()=>{this.providers.splice(this.providers.indexOf(e),1),this.defaultProvider===e&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return Oh([this.defaultProvider,...this.providers])}getQuickAccessProvider(e){return e&&this.providers.find(i=>e.startsWith(i.prefix))||void 0||this.defaultProvider}}Vs.add(tN.Quickaccess,new oje);const lje={ctrlCmd:!1,alt:!1};var gV;(function(s){s[s.Blur=1]="Blur",s[s.Gesture=2]="Gesture",s[s.Other=3]="Other"})(gV||(gV={}));var wu;(function(s){s[s.NONE=0]="NONE",s[s.FIRST=1]="FIRST",s[s.SECOND=2]="SECOND",s[s.LAST=3]="LAST"})(wu||(wu={}));var Hn;(function(s){s[s.First=1]="First",s[s.Second=2]="Second",s[s.Last=3]="Last",s[s.Next=4]="Next",s[s.Previous=5]="Previous",s[s.NextPage=6]="NextPage",s[s.PreviousPage=7]="PreviousPage",s[s.NextSeparator=8]="NextSeparator",s[s.PreviousSeparator=9]="PreviousSeparator"})(Hn||(Hn={}));var Tv;(function(s){s[s.Title=1]="Title",s[s.Inline=2]="Inline"})(Tv||(Tv={}));const nh=Zi("quickInputService");var rje=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Qre=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let UK=class extends de{constructor(e,t){super(),this.quickInputService=e,this.instantiationService=t,this.registry=Vs.as(tN.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(e="",t){this.doShowOrPick(e,!1,t)}doShowOrPick(e,t,i){var p,g;const[n,o]=this.getOrInstantiateProvider(e,i==null?void 0:i.enabledProviderPrefixes),l=this.visibleQuickAccess,r=l==null?void 0:l.descriptor;if(l&&o&&r===o){e!==o.prefix&&!(i!=null&&i.preserveValue)&&(l.picker.value=e),this.adjustValueSelection(l.picker,o,i);return}if(o&&!(i!=null&&i.preserveValue)){let b;if(l&&r&&r!==o){const f=l.value.substr(r.prefix.length);f&&(b=`${o.prefix}${f}`)}if(!b){const f=n==null?void 0:n.defaultFilterValue;f===bK.LAST?b=this.lastAcceptedPickerValues.get(o):typeof f=="string"&&(b=`${o.prefix}${f}`)}typeof b=="string"&&(e=b)}const a=(p=l==null?void 0:l.picker)==null?void 0:p.valueSelection,d=(g=l==null?void 0:l.picker)==null?void 0:g.value,c=new Ze,h=c.add(this.quickInputService.createQuickPick({useSeparators:!0}));h.value=e,this.adjustValueSelection(h,o,i),h.placeholder=(i==null?void 0:i.placeholder)??(o==null?void 0:o.placeholder),h.quickNavigate=i==null?void 0:i.quickNavigateConfiguration,h.hideInput=!!h.quickNavigate&&!l,(typeof(i==null?void 0:i.itemActivation)=="number"||i!=null&&i.quickNavigateConfiguration)&&(h.itemActivation=(i==null?void 0:i.itemActivation)??wu.SECOND),h.contextKey=o==null?void 0:o.contextKey,h.filterValue=b=>b.substring(o?o.prefix.length:0);let u;t&&(u=new EQ,c.add(ve.once(h.onWillAccept)(b=>{b.veto(),h.hide()}))),c.add(this.registerPickerListeners(h,n,o,e,i));const m=c.add(new Ws);if(n&&c.add(n.provide(h,m.token,i==null?void 0:i.providerOptions)),ve.once(h.onDidHide)(()=>{h.selectedItems.length===0&&m.cancel(),c.dispose(),u==null||u.complete(h.selectedItems.slice(0))}),h.show(),a&&d===e&&(h.valueSelection=a),t)return u==null?void 0:u.p}adjustValueSelection(e,t,i){let n;i!=null&&i.preserveValue?n=[e.value.length,e.value.length]:n=[(t==null?void 0:t.prefix.length)??0,e.value.length],e.valueSelection=n}registerPickerListeners(e,t,i,n,o){const l=new Ze,r=this.visibleQuickAccess={picker:e,descriptor:i,value:n};return l.add(gt(()=>{r===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),l.add(e.onDidChangeValue(a=>{const[d]=this.getOrInstantiateProvider(a,o==null?void 0:o.enabledProviderPrefixes);d!==t?this.show(a,{enabledProviderPrefixes:o==null?void 0:o.enabledProviderPrefixes,preserveValue:!0,providerOptions:o==null?void 0:o.providerOptions}):r.value=a})),i&&l.add(e.onDidAccept(()=>{this.lastAcceptedPickerValues.set(i,e.value)})),l}getOrInstantiateProvider(e,t){const i=this.registry.getQuickAccessProvider(e);if(!i||t&&!(t!=null&&t.includes(i.prefix)))return[void 0,void 0];let n=this.mapProviderToDescriptor.get(i);return n||(n=this.instantiationService.createInstance(i.ctor),this.mapProviderToDescriptor.set(i,n)),[n,i]}};UK=rje([Qre(0,nh),Qre(1,bt)],UK);class qQ extends bc{constructor(e){super(),this._onChange=this._register(new re),this.onChange=this._onChange.event,this._onKeyDown=this._register(new re),this.onKeyDown=this._onKeyDown.event,this._opts=e,this._checked=this._opts.isChecked;const t=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,t.push(...Qt.asClassNameArray(this._icon))),this._opts.actionClassName&&t.push(...this._opts.actionClassName.split(" ")),this._checked&&t.push("checked"),this.domNode=document.createElement("div"),this._hover=this._register(rm().setupManagedHover(e.hoverDelegate??ca("mouse"),this.domNode,this._opts.title)),this.domNode.classList.add(...t),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.setAttribute("aria-label",this._opts.title),this.applyStyles(),this.onclick(this.domNode,i=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),i.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,i=>{if(i.keyCode===10||i.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),i.preventDefault(),i.stopPropagation();return}this._onKeyDown.fire(i)})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(e){this._checked=e,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}width(){return 2+2+2+16}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1))}disable(){this.domNode.setAttribute("aria-disabled",String(!0))}}var aje=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};class gUe{constructor(e){this.nodes=e}toString(){return this.nodes.map(e=>typeof e=="string"?e:e.label).join("")}}aje([so],gUe.prototype,"toString",null);const dje=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;function cje(s){const e=[];let t=0,i;for(;i=dje.exec(s);){i.index-t>0&&e.push(s.substring(t,i.index));const[,n,o,,l]=i;l?e.push({label:n,href:o,title:l}):e.push({label:n,href:o}),t=i.index+i[0].length}return t<s.length&&e.push(s.substring(t)),new gUe(e)}const I3={},hje=new Ree("quick-input-button-icon-");function uje(s){if(!s)return;let e;const t=s.dark.toString();return I3[t]?e=I3[t]:(e=hje.nextId(),YE(`.${e}, .hc-light .${e}`,`background-image: ${R0(s.light||s.dark)}`),YE(`.vs-dark .${e}, .hc-black .${e}`,`background-image: ${R0(s.dark)}`),I3[t]=e),e}function NC(s,e,t){let i=s.iconClass||uje(s.iconPath);return s.alwaysVisible&&(i=i?`${i} always-visible`:"always-visible"),{id:e,label:"",tooltip:s.tooltip||"",class:i,enabled:!0,run:t}}function mje(s,e,t){Zl(e);const i=cje(s);let n=0;for(const o of i.nodes)if(typeof o=="string")e.append(...DU(o));else{let l=o.title;!l&&o.href.startsWith("command:")?l=U("executeCommand","Click to execute command '{0}'",o.href.substring(8)):l||(l=o.href);const r=Ge("a",{href:o.href,title:l,tabIndex:n++},o.label);r.style.textDecoration="underline";const a=m=>{LEe(m)&&yi.stop(m,!0),t.callback(o.href)},d=t.disposables.add(new Qi(r,De.CLICK)).event,c=t.disposables.add(new Qi(r,De.KEY_DOWN)).event,h=ve.chain(c,m=>m.filter(p=>{const g=new Jn(p);return g.equals(10)||g.equals(3)}));t.disposables.add(nr.addTarget(r));const u=t.disposables.add(new Qi(r,_n.Tap)).event;ve.any(d,u,h)(a,null,t.disposables),e.appendChild(r)}}var pje=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},yre=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const bUe="inQuickInput",gje=new Ke(bUe,!1,U("inQuickInput","Whether keyboard focus is inside the quick input control")),bje=Ne.has(bUe),UUe="quickInputType",Uje=new Ke(UUe,void 0,U("quickInputType","The type of the currently visible quick input")),fUe="cursorAtEndOfQuickInputBox",fje=new Ke(fUe,!1,U("cursorAtEndOfQuickInputBox","Whether the cursor in the quick input is at the end of the input box")),Fje=Ne.has(fUe),fK={iconClass:Qt.asClassName(ke.quickInputBack),tooltip:U("quickInput.back","Back"),handle:-1},AX=class AX extends de{constructor(e){super(),this.ui=e,this._widgetUpdated=!1,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._leftButtons=[],this._rightButtons=[],this._inlineButtons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=AX.noPromptMessage,this._severity=to.Ignore,this.onDidTriggerButtonEmitter=this._register(new re),this.onDidHideEmitter=this._register(new re),this.onWillHideEmitter=this._register(new re),this.onDisposeEmitter=this._register(new re),this.visibleDisposables=this._register(new Ze),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(e){this._title=e,this.update()}get description(){return this._description}set description(e){this._description=e,this.update()}get step(){return this._steps}set step(e){this._steps=e,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(e){this._totalSteps=e,this.update()}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this.update()}get contextKey(){return this._contextKey}set contextKey(e){this._contextKey=e,this.update()}get busy(){return this._busy}set busy(e){this._busy=e,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(e){const t=this._ignoreFocusOut!==e&&!ju;this._ignoreFocusOut=e&&!ju,t&&this.update()}get titleButtons(){return this._leftButtons.length?[...this._leftButtons,this._rightButtons]:this._rightButtons}get buttons(){return[...this._leftButtons,...this._rightButtons,...this._inlineButtons]}set buttons(e){this._leftButtons=e.filter(t=>t===fK),this._rightButtons=e.filter(t=>t!==fK&&t.location!==Tv.Inline),this._inlineButtons=e.filter(t=>t.location===Tv.Inline),this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(e){this._toggles=e??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(e){this._validationMessage=e,this.update()}get severity(){return this._severity}set severity(e){this._severity=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(e=>{this.buttons.indexOf(e)!==-1&&this.onDidTriggerButtonEmitter.fire(e)})),this.ui.show(this),this.visible=!0,this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(e=gV.Other){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:e})}willHide(e=gV.Other){this.onWillHideEmitter.fire({reason:e})}update(){var n;if(!this.visible)return;const e=this.getTitle();e&&this.ui.title.textContent!==e?this.ui.title.textContent=e:!e&&this.ui.title.innerHTML!==" "&&(this.ui.title.innerText=" ");const t=this.getDescription();if(this.ui.description1.textContent!==t&&(this.ui.description1.textContent=t),this.ui.description2.textContent!==t&&(this.ui.description2.textContent=t),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?Zl(this.ui.widget,this._widget):Zl(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new iu,this.busyDelay.setIfNotSet(()=>{this.visible&&this.ui.progressBar.infinite()},800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const o=this._leftButtons.map((a,d)=>NC(a,`id-${d}`,async()=>this.onDidTriggerButtonEmitter.fire(a)));this.ui.leftActionBar.push(o,{icon:!0,label:!1}),this.ui.rightActionBar.clear();const l=this._rightButtons.map((a,d)=>NC(a,`id-${d}`,async()=>this.onDidTriggerButtonEmitter.fire(a)));this.ui.rightActionBar.push(l,{icon:!0,label:!1}),this.ui.inlineActionBar.clear();const r=this._inlineButtons.map((a,d)=>NC(a,`id-${d}`,async()=>this.onDidTriggerButtonEmitter.fire(a)));this.ui.inlineActionBar.push(r,{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const o=((n=this.toggles)==null?void 0:n.filter(l=>l instanceof qQ))??[];this.ui.inputBox.toggles=o}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const i=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==i&&(this._lastValidationMessage=i,Zl(this.ui.message),mje(i,this.ui.message,{callback:o=>{this.ui.linkOpenerDelegate(o)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?U("quickInput.steps","{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(e){if(this.ui.inputBox.showDecoration(e),e!==to.Ignore){const t=this.ui.inputBox.stylesForType(e);this.ui.message.style.color=t.foreground?`${t.foreground}`:"",this.ui.message.style.backgroundColor=t.background?`${t.background}`:"",this.ui.message.style.border=t.border?`1px solid ${t.border}`:"",this.ui.message.style.marginBottom="-2px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.marginBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}};AX.noPromptMessage=U("inputModeEntry","Press 'Enter' to confirm your input or 'Escape' to cancel");let Bv=AX;const NX=class NX extends Bv{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new re),this.onWillAcceptEmitter=this._register(new re),this.onDidAcceptEmitter=this._register(new re),this.onDidCustomEmitter=this._register(new re),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._keepScrollPosition=!1,this._itemActivation=wu.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new re),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new re),this.onDidTriggerItemButtonEmitter=this._register(new re),this.onDidTriggerSeparatorButtonEmitter=this._register(new re),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this._focusEventBufferer=new $T,this.type="quickPick",this.filterValue=e=>e,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(e){this._quickNavigate=e,this.update()}get value(){return this._value}set value(e){this.doSetValue(e)}doSetValue(e,t){this._value!==e&&(this._value=e,t||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(e){this._ariaLabel=e,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(e){this.ui.list.scrollTop=e}set items(e){this._items=e,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(e){this._canSelectMany=e,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(e){this._canAcceptInBackground=e}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(e){this._keepScrollPosition=e}get itemActivation(){return this._itemActivation}set itemActivation(e){this._itemActivation=e}get activeItems(){return this._activeItems}set activeItems(e){this._activeItems=e,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems=e,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?lje:this.ui.keyMods}get valueSelection(){const e=this.ui.inputBox.getSelection();if(e)return[e.start,e.end]}set valueSelection(e){this._valueSelection=e,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(e){this._customButton=e,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(e){this._customButtonLabel=e,this.update()}get customHover(){return this._customButtonHover}set customHover(e){this._customButtonHover=e,this.update()}get ok(){return this._ok}set ok(e){this._ok=e,this.update()}get hideInput(){return!!this._hideInput}set hideInput(e){this._hideInput=e,this.update()}trySelectFirst(){this.canSelectMany||this.ui.list.focus(Hn.First)}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(e=>{this.doSetValue(e,!0)})),this.visibleDisposables.add(this.ui.onDidAccept(()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)})),this.visibleDisposables.add(this.ui.onDidCustom(()=>{this.onDidCustomEmitter.fire()})),this.visibleDisposables.add(this._focusEventBufferer.wrapEvent(this.ui.list.onDidChangeFocus,(e,t)=>t)(e=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&Fs(e,this._activeItems,(t,i)=>t===i)||(this._activeItems=e,this.onDidChangeActiveEmitter.fire(e))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:e,event:t})=>{if(this.canSelectMany){e.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&Fs(e,this._selectedItems,(i,n)=>i===n)||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e),e.length&&this.handleAccept(G$(t)&&t.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(e=>{!this.canSelectMany||!this.visible||this.selectedItemsToConfirm!==this._selectedItems&&Fs(e,this._selectedItems,(t,i)=>t===i)||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(e=>this.onDidTriggerItemButtonEmitter.fire(e))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(e=>this.onDidTriggerSeparatorButtonEmitter.fire(e))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(e){let t=!1;this.onWillAcceptEmitter.fire({veto:()=>t=!0}),t||this.onDidAcceptEmitter.fire({inBackground:e})}registerQuickNavigation(){return ge(this.ui.container,De.KEY_UP,e=>{if(this.canSelectMany||!this._quickNavigate)return;const t=new Jn(e),i=t.keyCode;this._quickNavigate.keybindings.some(l=>{const r=l.getChords();return r.length>1?!1:r[0].shiftKey&&i===4?!(t.ctrlKey||t.altKey||t.metaKey):!!(r[0].altKey&&i===6||r[0].ctrlKey&&i===5||r[0].metaKey&&i===57)})&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)})}update(){if(!this.visible)return;const e=this.keepScrollPosition?this.scrollTop:0,t=!!this.description,i={title:!!this.title||!!this.step||!!this.titleButtons.length,description:t,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||t,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok==="default"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(i),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");let n=this.ariaLabel;!n&&i.inputBox&&(n=this.placeholder||NX.DEFAULT_ARIA_LABEL,this.title&&(n+=` - ${this.title}`)),this.ui.list.ariaLabel!==n&&(this.ui.list.ariaLabel=n??null),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated&&(this.itemsUpdated=!1,this._focusEventBufferer.bufferEvents(()=>{switch(this.ui.list.setElements(this.items),this.ui.list.shouldLoop=!this.canSelectMany,this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this._itemActivation){case wu.NONE:this._itemActivation=wu.FIRST;break;case wu.SECOND:this.ui.list.focus(Hn.Second),this._itemActivation=wu.FIRST;break;case wu.LAST:this.ui.list.focus(Hn.Last),this._itemActivation=wu.FIRST;break;default:this.trySelectFirst();break}})),this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",i.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(Hn.First)),this.keepScrollPosition&&(this.scrollTop=e)}focus(e){this.ui.list.focus(e),this.canSelectMany&&this.ui.list.domFocus()}accept(e){e&&!this._canAcceptInBackground||this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(e??!1))}};NX.DEFAULT_ARIA_LABEL=U("quickInputBox.ariaLabel","Type to narrow down results.");let Lv=NX,Zje=class extends Bv{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new re),this.onDidAcceptEmitter=this._register(new re),this.type="inputBox",this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(e){this._value=e||"",this.update()}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get password(){return this._password}set password(e){this._password=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(e=>{e!==this.value&&(this._value=e,this.onDidValueChangeEmitter.fire(e))})),this.visibleDisposables.add(this.ui.onDidAccept(()=>this.onDidAcceptEmitter.fire())),this.valueSelectionUpdated=!0),super.show()}update(){if(!this.visible)return;this.ui.container.classList.remove("hidden-input");const e={title:!!this.title||!!this.step||!!this.titleButtons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(e),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password)}},FK=class extends lV{constructor(e,t){super("element",!1,i=>this.getOverrideOptions(i),e,t)}getOverrideOptions(e){const t=(Yo(e.content)?e.content.textContent??"":typeof e.content=="string"?e.content:e.content.value).includes(`
- `);return{persistence:{hideOnKeyDown:!1},appearance:{showHoverHint:t,skipFadeInAnimation:!0}}}};FK=pje([yre(0,li),yre(1,Gp)],FK);Re.white.toString(),Re.white.toString();class kv extends de{get onDidClick(){return this._onDidClick.event}constructor(e,t){super(),this._label="",this._onDidClick=this._register(new re),this._onDidEscape=this._register(new re),this.options=t,this._element=document.createElement("a"),this._element.classList.add("monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),this._element.classList.toggle("secondary",!!t.secondary);const i=t.secondary?t.buttonSecondaryBackground:t.buttonBackground,n=t.secondary?t.buttonSecondaryForeground:t.buttonForeground;this._element.style.color=n||"",this._element.style.backgroundColor=i||"",t.supportShortLabel&&(this._labelShortElement=document.createElement("div"),this._labelShortElement.classList.add("monaco-button-label-short"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement("div"),this._labelElement.classList.add("monaco-button-label"),this._element.appendChild(this._labelElement),this._element.classList.add("monaco-text-button-with-short-label")),typeof t.title=="string"&&this.setTitle(t.title),typeof t.ariaLabel=="string"&&this._element.setAttribute("aria-label",t.ariaLabel),e.appendChild(this._element),this._register(nr.addTarget(this._element)),[De.CLICK,_n.Tap].forEach(o=>{this._register(ge(this._element,o,l=>{if(!this.enabled){yi.stop(l);return}this._onDidClick.fire(l)}))}),this._register(ge(this._element,De.KEY_DOWN,o=>{const l=new Jn(o);let r=!1;this.enabled&&(l.equals(3)||l.equals(10))?(this._onDidClick.fire(o),r=!0):l.equals(9)&&(this._onDidEscape.fire(o),this._element.blur(),r=!0),r&&yi.stop(l,!0)})),this._register(ge(this._element,De.MOUSE_OVER,o=>{this._element.classList.contains("disabled")||this.updateBackground(!0)})),this._register(ge(this._element,De.MOUSE_OUT,o=>{this.updateBackground(!1)})),this.focusTracker=this._register(Hu(this._element)),this._register(this.focusTracker.onDidFocus(()=>{this.enabled&&this.updateBackground(!0)})),this._register(this.focusTracker.onDidBlur(()=>{this.enabled&&this.updateBackground(!1)}))}dispose(){super.dispose(),this._element.remove()}getContentElements(e){const t=[];for(let i of DU(e))if(typeof i=="string"){if(i=i.trim(),i==="")continue;const n=document.createElement("span");n.textContent=i,t.push(n)}else t.push(i);return t}updateBackground(e){let t;this.options.secondary?t=e?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:t=e?this.options.buttonHoverBackground:this.options.buttonBackground,t&&(this._element.style.backgroundColor=t)}get element(){return this._element}set label(e){var n;if(this._label===e||Ou(this._label)&&Ou(e)&&qYe(this._label,e))return;this._element.classList.add("monaco-text-button");const t=this.options.supportShortLabel?this._labelElement:this._element;if(Ou(e)){const o=TY(e,{inline:!0});o.dispose();const l=(n=o.element.querySelector("p"))==null?void 0:n.innerHTML;if(l){const r=gge(l,{ADD_TAGS:["b","i","u","code","span"],ALLOWED_ATTR:["class"],RETURN_TRUSTED_TYPE:!0});t.innerHTML=r}else Zl(t)}else this.options.supportIcons?Zl(t,...this.getContentElements(e)):t.textContent=e;let i="";typeof this.options.title=="string"?i=this.options.title:this.options.title&&(i=dze(e)),this.setTitle(i),typeof this.options.ariaLabel=="string"?this._element.setAttribute("aria-label",this.options.ariaLabel):this.options.ariaLabel&&this._element.setAttribute("aria-label",i),this._label=e}get label(){return this._label}set icon(e){this._element.classList.add(...Qt.asClassNameArray(e))}set enabled(e){e?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}get enabled(){return!this._element.classList.contains("disabled")}setTitle(e){!this._hover&&e!==""?this._hover=this._register(rm().setupManagedHover(this.options.hoverDelegate??ca("mouse"),this._element,e)):this._hover&&this._hover.update(e)}}class ZK{constructor(e,t,i){this.options=t,this.styles=i,this.count=0,this.element=ye(e,Ge(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(e){this.count=e,this.render()}setTitleFormat(e){this.titleFormat=e,this.render()}render(){this.element.textContent=FA(this.countFormat,this.count),this.element.title=FA(this.titleFormat,this.count),this.element.style.backgroundColor=this.styles.badgeBackground??"",this.element.style.color=this.styles.badgeForeground??"",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}const Cre="done",wre="active",D3="infinite",G3="infinite-long-running",Mre="discrete",RX=class RX extends de{constructor(e,t){super(),this.progressSignal=this._register(new _o),this.workedVal=0,this.showDelayedScheduler=this._register(new Rn(()=>hd(this.element),0)),this.longRunningScheduler=this._register(new Rn(()=>this.infiniteLongRunning(),RX.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(e,t)}create(e,t){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),e.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=(t==null?void 0:t.progressBarBackground)||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(wre,D3,G3,Mre),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel(),this.progressSignal.clear()}stop(){return this.doDone(!1)}doDone(e){return this.element.classList.add(Cre),this.element.classList.contains(D3)?(this.bit.style.opacity="0",e?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width="inherit",e?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(Mre,Cre,G3),this.element.classList.add(wre,D3),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(G3)}getContainer(){return this.element}};RX.LONG_RUNNING_INFINITE_THRESHOLD=1e4;let AK=RX;const Aje=U("caseDescription","Match Case"),Nje=U("wordsDescription","Match Whole Word"),Rje=U("regexDescription","Use Regular Expression");class FUe extends qQ{constructor(e){super({icon:ke.caseSensitive,title:Aje+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??ca("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class ZUe extends qQ{constructor(e){super({icon:ke.wholeWord,title:Nje+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??ca("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class AUe extends qQ{constructor(e){super({icon:ke.regex,title:Rje+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??ca("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class Sje{constructor(e,t=0,i=e.length,n=t-1){this.items=e,this.start=t,this.end=i,this.index=n}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}class Wje{constructor(e=[],t=10){this._initialize(e),this._limit=t,this._onChange()}getHistory(){return this._elements}add(e){this._history.delete(e),this._history.add(e),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return this._navigator.current()===null}has(e){return this._history.has(e)}_onChange(){this._reduceToLimit();const e=this._elements;this._navigator=new Sje(e,0,e.length,e.length)}_reduceToLimit(){const e=this._elements;e.length>this._limit&&this._initialize(e.slice(e.length-this._limit))}_currentPosition(){const e=this._navigator.current();return e?this._elements.indexOf(e):-1}_initialize(e){this._history=new Set;for(const t of e)this._history.add(t)}get _elements(){const e=[];return this._history.forEach(t=>e.push(t)),e}}const x1=Ge;class Vje extends bc{constructor(e,t,i){super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new re),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=t,this.options=i,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=this.options.tooltip??(this.placeholder||""),this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=ye(e,x1(".monaco-inputbox.idle"));const n=this.options.flexibleHeight?"textarea":"input",o=ye(this.element,x1(".ibwrapper"));if(this.input=ye(o,x1(n+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,()=>this.element.classList.add("synthetic-focus")),this.onblur(this.input,()=>this.element.classList.remove("synthetic-focus")),this.options.flexibleHeight){this.maxHeight=typeof this.options.flexibleMaxHeight=="number"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=ye(o,x1("div.mirror")),this.mirror.innerText=" ",this.scrollableElement=new _0e(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),ye(e,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(a=>this.input.scrollTop=a.scrollTop));const l=this._register(new Qi(e.ownerDocument,"selectionchange")),r=ve.filter(l.event,()=>{const a=e.ownerDocument.getSelection();return(a==null?void 0:a.anchorNode)===o});this._register(r(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,()=>this.onValueChange()),this.onblur(this.input,()=>this.onBlur()),this.onfocus(this.input,()=>this.onFocus()),this._register(this.ignoreGesture(this.input)),setTimeout(()=>this.updateMirror(),0),this.options.actions&&(this.actionbar=this._register(new ac(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder","")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder",this.placeholder||"")}setPlaceHolder(e){this.placeholder=e,this.input.setAttribute("placeholder",e)}setTooltip(e){this.tooltip=e,this.hover?this.hover.update(e):this.hover=this._register(rm().setupManagedHover(ca("mouse"),this.input,e))}get inputElement(){return this.input}get value(){return this.input.value}set value(e){this.input.value!==e&&(this.input.value=e,this.onValueChange())}get height(){return typeof this.cachedHeight=="number"?this.cachedHeight:$g(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return nY(this.input)}select(e=null){this.input.select(),e&&(this.input.setSelectionRange(e.start,e.end),e.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}getSelection(){const e=this.input.selectionStart;if(e===null)return null;const t=this.input.selectionEnd??e;return{start:e,end:t}}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(e){this.input.style.width=`calc(100% - ${e}px)`,this.mirror&&(this.mirror.style.paddingRight=e+"px")}updateScrollDimensions(){if(typeof this.cachedContentHeight!="number"||typeof this.cachedHeight!="number"||!this.scrollableElement)return;const e=this.cachedContentHeight,t=this.cachedHeight,i=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:e,height:t}),this.scrollableElement.setScrollPosition({scrollTop:i})}showMessage(e,t){if(this.state==="open"&&gd(this.message,e))return;this.message=e,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(e.type));const i=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${d0(i.border,"transparent")}`,this.message.content&&(this.hasFocus()||t)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let e=null;return this.validation&&(e=this.validation(this.value),e?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(e)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),e==null?void 0:e.type}stylesForType(e){const t=this.options.inputBoxStyles;switch(e){case 1:return{border:t.inputValidationInfoBorder,background:t.inputValidationInfoBackground,foreground:t.inputValidationInfoForeground};case 2:return{border:t.inputValidationWarningBorder,background:t.inputValidationWarningBackground,foreground:t.inputValidationWarningForeground};default:return{border:t.inputValidationErrorBorder,background:t.inputValidationErrorBackground,foreground:t.inputValidationErrorForeground}}}classForType(e){switch(e){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let e;const t=()=>e.style.width=ld(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:n=>{if(!this.message)return null;e=ye(n,x1(".monaco-inputbox-container")),t();const o={inline:!0,className:"monaco-inputbox-message"},l=this.message.formatContent?bYe(this.message.content,o):gYe(this.message.content,o);l.classList.add(this.classForType(this.message.type));const r=this.stylesForType(this.message.type);return l.style.backgroundColor=r.background??"",l.style.color=r.foreground??"",l.style.border=r.border?`1px solid ${r.border}`:"",ye(e,l),null},onHide:()=>{this.state="closed"},layout:t});let i;this.message.type===3?i=U("alertErrorMessage","Error: {0}",this.message.content):this.message.type===2?i=U("alertWarningMessage","Warning: {0}",this.message.content):i=U("alertInfoMessage","Info: {0}",this.message.content),ra(i),this.state="open"}_hideMessage(){this.contextViewProvider&&(this.state==="open"&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),this.state==="open"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const e=this.value,i=e.charCodeAt(e.length-1)===10?" ":"";(e+i).replace(/\u000c/g,"")?this.mirror.textContent=e+i:this.mirror.innerText=" ",this.layout()}applyStyles(){const e=this.options.inputBoxStyles,t=e.inputBackground??"",i=e.inputForeground??"",n=e.inputBorder??"";this.element.style.backgroundColor=t,this.element.style.color=i,this.input.style.backgroundColor="inherit",this.input.style.color=i,this.element.style.border=`1px solid ${d0(n,"transparent")}`}layout(){if(!this.mirror)return;const e=this.cachedContentHeight;this.cachedContentHeight=$g(this.mirror),e!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(e){const t=this.inputElement,i=t.selectionStart,n=t.selectionEnd,o=t.value;i!==null&&n!==null&&(this.value=o.substr(0,i)+e+o.substr(n),t.setSelectionRange(i+1,i+1),this.layout())}dispose(){var e;this._hideMessage(),this.message=null,(e=this.actionbar)==null||e.dispose(),super.dispose()}}class NUe extends Vje{constructor(e,t,i){const n=U({key:"history.inputbox.hint.suffix.noparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field ends in a closing parenthesis ")", for example "Filter (e.g. text, !exclude)". The character inserted into the final string is ⇅ to represent the up and down arrow keys.']}," or {0} for history","⇅"),o=U({key:"history.inputbox.hint.suffix.inparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field does NOT end in a closing parenthesis (eg. "Find"). The character inserted into the final string is ⇅ to represent the up and down arrow keys.']}," ({0} for history)","⇅");super(e,t,i),this._onDidFocus=this._register(new re),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new re),this.onDidBlur=this._onDidBlur.event,this.history=new Wje(i.history,100);const l=()=>{if(i.showHistoryHint&&i.showHistoryHint()&&!this.placeholder.endsWith(n)&&!this.placeholder.endsWith(o)&&this.history.getHistory().length){const r=this.placeholder.endsWith(")")?n:o,a=this.placeholder+r;i.showPlaceholderOnFocus&&!nY(this.input)?this.placeholder=a:this.setPlaceHolder(a)}};this.observer=new MutationObserver((r,a)=>{r.forEach(d=>{d.target.textContent||l()})}),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,()=>l()),this.onblur(this.input,()=>{const r=a=>{if(this.placeholder.endsWith(a)){const d=this.placeholder.slice(0,this.placeholder.length-a.length);return i.showPlaceholderOnFocus?this.placeholder=d:this.setPlaceHolder(d),!0}else return!1};r(o)||r(n)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(e){this.value&&(e||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let e=this.getNextValue();e&&(e=e===this.value?this.getNextValue():e),this.value=e??"",Vp(this.value?this.value:U("clearedInput","Cleared Input"))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let e=this.getPreviousValue();e&&(e=e===this.value?this.getPreviousValue():e),e&&(this.value=e,Vp(this.value))}setPlaceHolder(e){super.setPlaceHolder(e),this.setTooltip(e)}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let e=this.history.current();return e||(e=this.history.last(),this.history.next()),e}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}const Qje=U("defaultLabel","input");class RUe extends bc{constructor(e,t,i){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=this._register(new _o),this.additionalToggles=[],this._onDidOptionChange=this._register(new re),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new re),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new re),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new re),this._onKeyUp=this._register(new re),this._onCaseSensitiveKeyDown=this._register(new re),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new re),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=i.placeholder||"",this.validation=i.validation,this.label=i.label||Qje,this.showCommonFindToggles=!!i.showCommonFindToggles;const n=i.appendCaseSensitiveLabel||"",o=i.appendWholeWordsLabel||"",l=i.appendRegexLabel||"",r=i.history||[],a=!!i.flexibleHeight,d=!!i.flexibleWidth,c=i.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new NUe(this.domNode,t,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},history:r,showHistoryHint:i.showHistoryHint,flexibleHeight:a,flexibleWidth:d,flexibleMaxHeight:c,inputBoxStyles:i.inputBoxStyles}));const h=this._register(mV());if(this.showCommonFindToggles){this.regex=this._register(new AUe({appendTitle:l,isChecked:!1,hoverDelegate:h,...i.toggleStyles})),this._register(this.regex.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(m=>{this._onRegexKeyDown.fire(m)})),this.wholeWords=this._register(new ZUe({appendTitle:o,isChecked:!1,hoverDelegate:h,...i.toggleStyles})),this._register(this.wholeWords.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new FUe({appendTitle:n,isChecked:!1,hoverDelegate:h,...i.toggleStyles})),this._register(this.caseSensitive.onChange(m=>{this._onDidOptionChange.fire(m),!m&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(m=>{this._onCaseSensitiveKeyDown.fire(m)}));const u=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,m=>{if(m.equals(15)||m.equals(17)||m.equals(9)){const p=u.indexOf(this.domNode.ownerDocument.activeElement);if(p>=0){let g=-1;m.equals(17)?g=(p+1)%u.length:m.equals(15)&&(p===0?g=u.length-1:g=p-1),m.equals(9)?(u[p].blur(),this.inputBox.focus()):g>=0&&u[g].focus(),yi.stop(m,!0)}}})}this.controls=document.createElement("div"),this.controls.className="controls",this.controls.style.display=this.showCommonFindToggles?"":"none",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(i==null?void 0:i.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),e==null||e.appendChild(this.domNode),this._register(ge(this.inputBox.inputElement,"compositionstart",u=>{this.imeSessionInProgress=!0})),this._register(ge(this.inputBox.inputElement,"compositionend",u=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,u=>this._onKeyDown.fire(u)),this.onkeyup(this.inputBox.inputElement,u=>this._onKeyUp.fire(u)),this.oninput(this.inputBox.inputElement,u=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,u=>this._onMouseDown.fire(u))}get onDidChange(){return this.inputBox.onDidChange}layout(e){this.inputBox.layout(),this.updateInputBoxPadding(e.collapsedFindWidget)}enable(){var e,t,i;this.domNode.classList.remove("disabled"),this.inputBox.enable(),(e=this.regex)==null||e.enable(),(t=this.wholeWords)==null||t.enable(),(i=this.caseSensitive)==null||i.enable();for(const n of this.additionalToggles)n.enable()}disable(){var e,t,i;this.domNode.classList.add("disabled"),this.inputBox.disable(),(e=this.regex)==null||e.disable(),(t=this.wholeWords)==null||t.disable(),(i=this.caseSensitive)==null||i.disable();for(const n of this.additionalToggles)n.disable()}setFocusInputOnOptionClick(e){this.fixFocusOnOptionClickEnabled=e}setEnabled(e){e?this.enable():this.disable()}setAdditionalToggles(e){for(const t of this.additionalToggles)t.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.value=new Ze;for(const t of e??[])this.additionalTogglesDisposables.value.add(t),this.controls.appendChild(t.domNode),this.additionalTogglesDisposables.value.add(t.onChange(i=>{this._onDidOptionChange.fire(i),!i&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(t);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(e=!1){var t,i,n;e?this.inputBox.paddingRight=0:this.inputBox.paddingRight=(((t=this.caseSensitive)==null?void 0:t.width())??0)+(((i=this.wholeWords)==null?void 0:i.width())??0)+(((n=this.regex)==null?void 0:n.width())??0)+this.additionalToggles.reduce((o,l)=>o+l.width(),0)}getValue(){return this.inputBox.value}setValue(e){this.inputBox.value!==e&&(this.inputBox.value=e)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var e;return((e=this.caseSensitive)==null?void 0:e.checked)??!1}setCaseSensitive(e){this.caseSensitive&&(this.caseSensitive.checked=e)}getWholeWords(){var e;return((e=this.wholeWords)==null?void 0:e.checked)??!1}setWholeWords(e){this.wholeWords&&(this.wholeWords.checked=e)}getRegex(){var e;return((e=this.regex)==null?void 0:e.checked)??!1}setRegex(e){this.regex&&(this.regex.checked=e,this.validate())}focusOnCaseSensitive(){var e;(e=this.caseSensitive)==null||e.focus()}highlightFindOptions(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(e){this.inputBox.showMessage(e)}clearMessage(){this.inputBox.hideMessage()}}const yje=Ge;class Cje extends de{constructor(e,t,i){super(),this.parent=e,this.onKeyDown=o=>Ms(this.findInput.inputBox.inputElement,De.KEY_DOWN,o),this.onDidChange=o=>this.findInput.onDidChange(o),this.container=ye(this.parent,yje(".quick-input-box")),this.findInput=this._register(new RUe(this.container,void 0,{label:"",inputBoxStyles:t,toggleStyles:i}));const n=this.findInput.inputBox.inputElement;n.role="combobox",n.ariaHasPopup="menu",n.ariaAutoComplete="list",n.ariaExpanded="true"}get value(){return this.findInput.getValue()}set value(e){this.findInput.setValue(e)}select(e=null){this.findInput.inputBox.select(e)}getSelection(){return this.findInput.inputBox.getSelection()}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(e){this.findInput.inputBox.setPlaceHolder(e)}get password(){return this.findInput.inputBox.inputElement.type==="password"}set password(e){this.findInput.inputBox.inputElement.type=e?"password":"text"}set enabled(e){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!e)}set toggles(e){this.findInput.setAdditionalToggles(e)}setAttribute(e,t){this.findInput.inputBox.inputElement.setAttribute(e,t)}showDecoration(e){e===to.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:e===to.Info?1:e===to.Warning?2:3,content:""})}stylesForType(e){return this.findInput.inputBox.stylesForType(e===to.Info?1:e===to.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}class wje{get templateId(){return this.renderer.templateId}constructor(e,t){this.renderer=e,this.modelProvider=t}renderTemplate(e){return{data:this.renderer.renderTemplate(e),disposable:de.None}}renderElement(e,t,i,n){var a;if((a=i.disposable)==null||a.dispose(),!i.data)return;const o=this.modelProvider();if(o.isResolved(e))return this.renderer.renderElement(o.get(e),e,i.data,n);const l=new Ws,r=o.resolve(e,l.token);i.disposable={dispose:()=>l.cancel()},this.renderer.renderPlaceholder(e,i.data),r.then(d=>this.renderer.renderElement(d,e,i.data,n))}disposeTemplate(e){e.disposable&&(e.disposable.dispose(),e.disposable=void 0),e.data&&(this.renderer.disposeTemplate(e.data),e.data=void 0)}}class Mje{constructor(e,t){this.modelProvider=e,this.accessibilityProvider=t}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(e){const t=this.modelProvider();return t.isResolved(e)?this.accessibilityProvider.getAriaLabel(t.get(e)):null}}function Tje(s,e){return{...e,accessibilityProvider:e.accessibilityProvider&&new Mje(s,e.accessibilityProvider)}}class Bje{constructor(e,t,i,n,o={}){const l=()=>this.model,r=n.map(a=>new wje(a,l));this.list=new Uc(e,t,i,r,Tje(l,o))}updateOptions(e){this.list.updateOptions(e)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get widget(){return this.list}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return ve.map(this.list.onMouseDblClick,({element:e,index:t,browserEvent:i})=>({element:e===void 0?void 0:this._model.get(e),index:t,browserEvent:i}))}get onPointer(){return ve.map(this.list.onPointer,({element:e,index:t,browserEvent:i})=>({element:e===void 0?void 0:this._model.get(e),index:t,browserEvent:i}))}get onDidChangeSelection(){return ve.map(this.list.onDidChangeSelection,({elements:e,indexes:t,browserEvent:i})=>({elements:e.map(n=>this._model.get(n)),indexes:t,browserEvent:i}))}get model(){return this._model}set model(e){this._model=e,this.list.splice(0,this.list.length,Ra(e.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map(e=>this.model.get(e))}style(e){this.list.style(e)}dispose(){this.list.dispose()}}var $Q=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};const Lje=!1;var Iv;(function(s){s.North="north",s.South="south",s.East="east",s.West="west"})(Iv||(Iv={}));let kje=4;const Ije=new re;let Dje=300;const Gje=new re;class Oee{constructor(e){this.el=e,this.disposables=new Ze}get onPointerMove(){return this.disposables.add(new Qi(Wt(this.el),"mousemove")).event}get onPointerUp(){return this.disposables.add(new Qi(Wt(this.el),"mouseup")).event}dispose(){this.disposables.dispose()}}$Q([so],Oee.prototype,"onPointerMove",null);$Q([so],Oee.prototype,"onPointerUp",null);class jee{get onPointerMove(){return this.disposables.add(new Qi(this.el,_n.Change)).event}get onPointerUp(){return this.disposables.add(new Qi(this.el,_n.End)).event}constructor(e){this.el=e,this.disposables=new Ze}dispose(){this.disposables.dispose()}}$Q([so],jee.prototype,"onPointerMove",null);$Q([so],jee.prototype,"onPointerUp",null);class Dv{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(e){this.factory=e}dispose(){}}$Q([so],Dv.prototype,"onPointerMove",null);$Q([so],Dv.prototype,"onPointerUp",null);const Tre="pointer-events-disabled";class ql extends de{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(e){this._state!==e&&(this.el.classList.toggle("disabled",e===0),this.el.classList.toggle("minimum",e===1),this.el.classList.toggle("maximum",e===2),this._state=e,this.onDidEnablementChange.fire(e))}set orthogonalStartSash(e){if(this._orthogonalStartSash!==e){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),e){const t=i=>{this.orthogonalStartDragHandleDisposables.clear(),i!==0&&(this._orthogonalStartDragHandle=ye(this.el,Ge(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add(gt(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(new Qi(this._orthogonalStartDragHandle,"mouseenter")).event(()=>ql.onMouseEnter(e),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new Qi(this._orthogonalStartDragHandle,"mouseleave")).event(()=>ql.onMouseLeave(e),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalStartSash=e}}set orthogonalEndSash(e){if(this._orthogonalEndSash!==e){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),e){const t=i=>{this.orthogonalEndDragHandleDisposables.clear(),i!==0&&(this._orthogonalEndDragHandle=ye(this.el,Ge(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add(gt(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(new Qi(this._orthogonalEndDragHandle,"mouseenter")).event(()=>ql.onMouseEnter(e),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new Qi(this._orthogonalEndDragHandle,"mouseleave")).event(()=>ql.onMouseLeave(e),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalEndSash=e}}constructor(e,t,i){super(),this.hoverDelay=Dje,this.hoverDelayer=this._register(new Hc(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new re),this._onDidStart=this._register(new re),this._onDidChange=this._register(new re),this._onDidReset=this._register(new re),this._onDidEnd=this._register(new re),this.orthogonalStartSashDisposables=this._register(new Ze),this.orthogonalStartDragHandleDisposables=this._register(new Ze),this.orthogonalEndSashDisposables=this._register(new Ze),this.orthogonalEndDragHandleDisposables=this._register(new Ze),this.onDidStart=this._onDidStart.event,this.onDidChange=this._onDidChange.event,this.onDidReset=this._onDidReset.event,this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.el=ye(e,Ge(".monaco-sash")),i.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${i.orthogonalEdge}`),Fi&&this.el.classList.add("mac");const n=this._register(new Qi(this.el,"mousedown")).event;this._register(n(h=>this.onPointerStart(h,new Oee(e)),this));const o=this._register(new Qi(this.el,"dblclick")).event;this._register(o(this.onPointerDoublePress,this));const l=this._register(new Qi(this.el,"mouseenter")).event;this._register(l(()=>ql.onMouseEnter(this)));const r=this._register(new Qi(this.el,"mouseleave")).event;this._register(r(()=>ql.onMouseLeave(this))),this._register(nr.addTarget(this.el));const a=this._register(new Qi(this.el,_n.Start)).event;this._register(a(h=>this.onPointerStart(h,new jee(this.el)),this));const d=this._register(new Qi(this.el,_n.Tap)).event;let c;this._register(d(h=>{if(c){clearTimeout(c),c=void 0,this.onPointerDoublePress(h);return}clearTimeout(c),c=setTimeout(()=>c=void 0,250)},this)),typeof i.size=="number"?(this.size=i.size,i.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=kje,this._register(Ije.event(h=>{this.size=h,this.layout()}))),this._register(Gje.event(h=>this.hoverDelay=h)),this.layoutProvider=t,this.orthogonalStartSash=i.orthogonalStartSash,this.orthogonalEndSash=i.orthogonalEndSash,this.orientation=i.orientation||0,this.orientation===1?(this.el.classList.add("horizontal"),this.el.classList.remove("vertical")):(this.el.classList.remove("horizontal"),this.el.classList.add("vertical")),this.el.classList.toggle("debug",Lje),this.layout()}onPointerStart(e,t){yi.stop(e);let i=!1;if(!e.__orthogonalSashEvent){const p=this.getOrthogonalSash(e);p&&(i=!0,e.__orthogonalSashEvent=!0,p.onPointerStart(e,new Dv(t)))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onPointerStart(e,new Dv(t))),!this.state)return;const n=this.el.ownerDocument.getElementsByTagName("iframe");for(const p of n)p.classList.add(Tre);const o=e.pageX,l=e.pageY,r=e.altKey,a={startX:o,currentX:o,startY:l,currentY:l,altKey:r};this.el.classList.add("active"),this._onDidStart.fire(a);const d=cc(this.el),c=()=>{let p="";i?p="all-scroll":this.orientation===1?this.state===1?p="s-resize":this.state===2?p="n-resize":p=Fi?"row-resize":"ns-resize":this.state===1?p="e-resize":this.state===2?p="w-resize":p=Fi?"col-resize":"ew-resize",d.textContent=`* { cursor: ${p} !important; }`},h=new Ze;c(),i||this.onDidEnablementChange.event(c,null,h);const u=p=>{yi.stop(p,!1);const g={startX:o,currentX:p.pageX,startY:l,currentY:p.pageY,altKey:r};this._onDidChange.fire(g)},m=p=>{yi.stop(p,!1),d.remove(),this.el.classList.remove("active"),this._onDidEnd.fire(),h.dispose();for(const g of n)g.classList.remove(Tre)};t.onPointerMove(u,null,h),t.onPointerUp(m,null,h),h.add(t)}onPointerDoublePress(e){const t=this.getOrthogonalSash(e);t&&t._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(e,t=!1){e.el.classList.contains("active")?(e.hoverDelayer.cancel(),e.el.classList.add("hover")):e.hoverDelayer.trigger(()=>e.el.classList.add("hover"),e.hoverDelay).then(void 0,()=>{}),!t&&e.linkedSash&&ql.onMouseEnter(e.linkedSash,!0)}static onMouseLeave(e,t=!1){e.hoverDelayer.cancel(),e.el.classList.remove("hover"),!t&&e.linkedSash&&ql.onMouseLeave(e.linkedSash,!0)}clearSashHoverState(){ql.onMouseLeave(this)}layout(){if(this.orientation===0){const e=this.layoutProvider;this.el.style.left=e.getVerticalSashLeft(this)-this.size/2+"px",e.getVerticalSashTop&&(this.el.style.top=e.getVerticalSashTop(this)+"px"),e.getVerticalSashHeight&&(this.el.style.height=e.getVerticalSashHeight(this)+"px")}else{const e=this.layoutProvider;this.el.style.top=e.getHorizontalSashTop(this)-this.size/2+"px",e.getHorizontalSashLeft&&(this.el.style.left=e.getHorizontalSashLeft(this)+"px"),e.getHorizontalSashWidth&&(this.el.style.width=e.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(e){const t=e.initialTarget??e.target;if(!(!t||!Yo(t))&&t.classList.contains("orthogonal-drag-handle"))return t.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}const Eje={separatorBorder:Re.transparent};class SUe{set size(e){this._size=e}get size(){return this._size}get visible(){return typeof this._cachedVisibleSize>"u"}setVisible(e,t){var i,n;if(e!==this.visible){e?(this.size=zr(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof t=="number"?t:this.size,this.size=0),this.container.classList.toggle("visible",e);try{(n=(i=this.view).setVisible)==null||n.call(i,e)}catch(o){console.error("Splitview: Failed to set visible view"),console.error(o)}}}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get proportionalLayout(){return this.view.proportionalLayout??!0}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,typeof i=="number"?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}layout(e,t){this.layoutContainer(e);try{this.view.layout(this.size,e,t)}catch(i){console.error("Splitview: Failed to layout view"),console.error(i)}}dispose(){this.disposable.dispose()}}class vje extends SUe{layoutContainer(e){this.container.style.top=`${e}px`,this.container.style.height=`${this.size}px`}}class xje extends SUe{layoutContainer(e){this.container.style.left=`${e}px`,this.container.style.width=`${this.size}px`}}var fg;(function(s){s[s.Idle=0]="Idle",s[s.Busy=1]="Busy"})(fg||(fg={}));var Gv;(function(s){s.Distribute={type:"distribute"};function e(n){return{type:"split",index:n}}s.Split=e;function t(n){return{type:"auto",index:n}}s.Auto=t;function i(n){return{type:"invisible",cachedVisibleSize:n}}s.Invisible=i})(Gv||(Gv={}));class WUe extends de{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(e){for(const t of this.sashItems)t.sash.orthogonalStartSash=e;this._orthogonalStartSash=e}set orthogonalEndSash(e){for(const t of this.sashItems)t.sash.orthogonalEndSash=e;this._orthogonalEndSash=e}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}constructor(e,t={}){super(),this.size=0,this._contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=fg.Idle,this._onDidSashChange=this._register(new re),this._onDidSashReset=this._register(new re),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=t.orientation??0,this.inverseAltBehavior=t.inverseAltBehavior??!1,this.proportionalLayout=t.proportionalLayout??!0,this.getSashOrthogonalSize=t.getSashOrthogonalSize,this.el=document.createElement("div"),this.el.classList.add("monaco-split-view2"),this.el.classList.add(this.orientation===0?"vertical":"horizontal"),e.appendChild(this.el),this.sashContainer=ye(this.el,Ge(".sash-container")),this.viewContainer=Ge(".split-view-container"),this.scrollable=this._register(new OQ({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:n=>Sd(Wt(this.el),n)})),this.scrollableElement=this._register(new QY(this.viewContainer,{vertical:this.orientation===0?t.scrollbarVisibility??1:2,horizontal:this.orientation===1?t.scrollbarVisibility??1:2},this.scrollable));const i=this._register(new Qi(this.viewContainer,"scroll")).event;this._register(i(n=>{const o=this.scrollableElement.getScrollPosition(),l=Math.abs(this.viewContainer.scrollLeft-o.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,r=Math.abs(this.viewContainer.scrollTop-o.scrollTop)<=1?void 0:this.viewContainer.scrollTop;(l!==void 0||r!==void 0)&&this.scrollableElement.setScrollPosition({scrollLeft:l,scrollTop:r})})),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll(n=>{n.scrollTopChanged&&(this.viewContainer.scrollTop=n.scrollTop),n.scrollLeftChanged&&(this.viewContainer.scrollLeft=n.scrollLeft)})),ye(this.el,this.scrollableElement.getDomNode()),this.style(t.styles||Eje),t.descriptor&&(this.size=t.descriptor.size,t.descriptor.views.forEach((n,o)=>{const l=Rr(n.visible)||n.visible?n.size:{type:"invisible",cachedVisibleSize:n.size},r=n.view;this.doAddView(r,l,o,!0)}),this._contentSize=this.viewItems.reduce((n,o)=>n+o.size,0),this.saveProportions())}style(e){e.separatorBorder.isTransparent()?(this.el.classList.remove("separator-border"),this.el.style.removeProperty("--separator-border")):(this.el.classList.add("separator-border"),this.el.style.setProperty("--separator-border",e.separatorBorder.toString()))}addView(e,t,i=this.viewItems.length,n){this.doAddView(e,t,i,n)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.layoutContext=t,this.proportions){let n=0;for(let o=0;o<this.viewItems.length;o++){const l=this.viewItems[o],r=this.proportions[o];typeof r=="number"?n+=r:e-=l.size}for(let o=0;o<this.viewItems.length;o++){const l=this.viewItems[o],r=this.proportions[o];typeof r=="number"&&n>0&&(l.size=zr(Math.round(r*e/n),l.minimumSize,l.maximumSize))}}else{const n=Ra(this.viewItems.length),o=n.filter(r=>this.viewItems[r].priority===1),l=n.filter(r=>this.viewItems[r].priority===2);this.resize(this.viewItems.length-1,e-i,void 0,o,l)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this.proportions=this.viewItems.map(e=>e.proportionalLayout&&e.visible?e.size/this._contentSize:void 0))}onSashStart({sash:e,start:t,alt:i}){for(const r of this.viewItems)r.enabled=!1;const n=this.sashItems.findIndex(r=>r.sash===e),o=_h(ge(this.el.ownerDocument.body,"keydown",r=>l(this.sashDragState.current,r.altKey)),ge(this.el.ownerDocument.body,"keyup",()=>l(this.sashDragState.current,!1))),l=(r,a)=>{const d=this.viewItems.map(p=>p.size);let c=Number.NEGATIVE_INFINITY,h=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(a=!a),a)if(n===this.sashItems.length-1){const g=this.viewItems[n];c=(g.minimumSize-g.size)/2,h=(g.maximumSize-g.size)/2}else{const g=this.viewItems[n+1];c=(g.size-g.maximumSize)/2,h=(g.size-g.minimumSize)/2}let u,m;if(!a){const p=Ra(n,-1),g=Ra(n+1,this.viewItems.length),b=p.reduce((M,w)=>M+(this.viewItems[w].minimumSize-d[w]),0),f=p.reduce((M,w)=>M+(this.viewItems[w].viewMaximumSize-d[w]),0),Z=g.length===0?Number.POSITIVE_INFINITY:g.reduce((M,w)=>M+(d[w]-this.viewItems[w].minimumSize),0),A=g.length===0?Number.NEGATIVE_INFINITY:g.reduce((M,w)=>M+(d[w]-this.viewItems[w].viewMaximumSize),0),N=Math.max(b,A),W=Math.min(Z,f),Q=this.findFirstSnapIndex(p),R=this.findFirstSnapIndex(g);if(typeof Q=="number"){const M=this.viewItems[Q],w=Math.floor(M.viewMinimumSize/2);u={index:Q,limitDelta:M.visible?N-w:N+w,size:M.size}}if(typeof R=="number"){const M=this.viewItems[R],w=Math.floor(M.viewMinimumSize/2);m={index:R,limitDelta:M.visible?W+w:W-w,size:M.size}}}this.sashDragState={start:r,current:r,index:n,sizes:d,minDelta:c,maxDelta:h,alt:a,snapBefore:u,snapAfter:m,disposable:o}};l(t,i)}onSashChange({current:e}){const{index:t,start:i,sizes:n,alt:o,minDelta:l,maxDelta:r,snapBefore:a,snapAfter:d}=this.sashDragState;this.sashDragState.current=e;const c=e-i,h=this.resize(t,c,n,void 0,void 0,l,r,a,d);if(o){const u=t===this.sashItems.length-1,m=this.viewItems.map(A=>A.size),p=u?t:t+1,g=this.viewItems[p],b=g.size-g.maximumSize,f=g.size-g.minimumSize,Z=u?t-1:t+1;this.resize(Z,-h,m,void 0,void 0,b,f)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions();for(const t of this.viewItems)t.enabled=!0}onViewChange(e,t){const i=this.viewItems.indexOf(e);i<0||i>=this.viewItems.length||(t=typeof t=="number"?t:e.size,t=zr(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&i>0?(this.resize(i-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([i],void 0)))}resizeView(e,t){if(!(e<0||e>=this.viewItems.length)){if(this.state!==fg.Idle)throw new Error("Cant modify splitview");this.state=fg.Busy;try{const i=Ra(this.viewItems.length).filter(r=>r!==e),n=[...i.filter(r=>this.viewItems[r].priority===1),e],o=i.filter(r=>this.viewItems[r].priority===2),l=this.viewItems[e];t=Math.round(t),t=zr(t,l.minimumSize,Math.min(l.maximumSize,this.size)),l.size=t,this.relayout(n,o)}finally{this.state=fg.Idle}}}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=zr(i,r.minimumSize,r.maximumSize);const n=Ra(this.viewItems.length),o=n.filter(r=>this.viewItems[r].priority===1),l=n.filter(r=>this.viewItems[r].priority===2);this.relayout(o,l)}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}doAddView(e,t,i=this.viewItems.length,n){if(this.state!==fg.Idle)throw new Error("Cant modify splitview");this.state=fg.Busy;try{const o=Ge(".split-view-view");i===this.viewItems.length?this.viewContainer.appendChild(o):this.viewContainer.insertBefore(o,this.viewContainer.children.item(i));const l=e.onDidChange(u=>this.onViewChange(c,u)),r=gt(()=>o.remove()),a=_h(l,r);let d;typeof t=="number"?d=t:(t.type==="auto"&&(this.areViewsDistributed()?t={type:"distribute"}:t={type:"split",index:t.index}),t.type==="split"?d=this.getViewSize(t.index)/2:t.type==="invisible"?d={cachedVisibleSize:t.cachedVisibleSize}:d=e.minimumSize);const c=this.orientation===0?new vje(o,e,d,a):new xje(o,e,d,a);if(this.viewItems.splice(i,0,c),this.viewItems.length>1){const u={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},m=this.orientation===0?new ql(this.sashContainer,{getHorizontalSashTop:M=>this.getSashPosition(M),getHorizontalSashWidth:this.getSashOrthogonalSize},{...u,orientation:1}):new ql(this.sashContainer,{getVerticalSashLeft:M=>this.getSashPosition(M),getVerticalSashHeight:this.getSashOrthogonalSize},{...u,orientation:0}),p=this.orientation===0?M=>({sash:m,start:M.startY,current:M.currentY,alt:M.altKey}):M=>({sash:m,start:M.startX,current:M.currentX,alt:M.altKey}),b=ve.map(m.onDidStart,p)(this.onSashStart,this),Z=ve.map(m.onDidChange,p)(this.onSashChange,this),N=ve.map(m.onDidEnd,()=>this.sashItems.findIndex(M=>M.sash===m))(this.onSashEnd,this),W=m.onDidReset(()=>{const M=this.sashItems.findIndex(j=>j.sash===m),w=Ra(M,-1),Y=Ra(M+1,this.viewItems.length),G=this.findFirstSnapIndex(w),P=this.findFirstSnapIndex(Y);typeof G=="number"&&!this.viewItems[G].visible||typeof P=="number"&&!this.viewItems[P].visible||this._onDidSashReset.fire(M)}),Q=_h(b,Z,N,W,m),R={sash:m,disposable:Q};this.sashItems.splice(i-1,0,R)}o.appendChild(e.element);let h;typeof t!="number"&&t.type==="split"&&(h=[t.index]),n||this.relayout([i],h),!n&&typeof t!="number"&&t.type==="distribute"&&this.distributeViewSizes()}finally{this.state=fg.Idle}}relayout(e,t){const i=this.viewItems.reduce((n,o)=>n+o.size,0);this.resize(this.viewItems.length-1,this.size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(e,t,i=this.viewItems.map(c=>c.size),n,o,l=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,a,d){if(e<0||e>=this.viewItems.length)return 0;const c=Ra(e,-1),h=Ra(e+1,this.viewItems.length);if(o)for(const R of o)L9(c,R),L9(h,R);if(n)for(const R of n)CL(c,R),CL(h,R);const u=c.map(R=>this.viewItems[R]),m=c.map(R=>i[R]),p=h.map(R=>this.viewItems[R]),g=h.map(R=>i[R]),b=c.reduce((R,M)=>R+(this.viewItems[M].minimumSize-i[M]),0),f=c.reduce((R,M)=>R+(this.viewItems[M].maximumSize-i[M]),0),Z=h.length===0?Number.POSITIVE_INFINITY:h.reduce((R,M)=>R+(i[M]-this.viewItems[M].minimumSize),0),A=h.length===0?Number.NEGATIVE_INFINITY:h.reduce((R,M)=>R+(i[M]-this.viewItems[M].maximumSize),0),N=Math.max(b,A,l),W=Math.min(Z,f,r);let Q=!1;if(a){const R=this.viewItems[a.index],M=t>=a.limitDelta;Q=M!==R.visible,R.setVisible(M,a.size)}if(!Q&&d){const R=this.viewItems[d.index],M=t<d.limitDelta;Q=M!==R.visible,R.setVisible(M,d.size)}if(Q)return this.resize(e,t,i,n,o,l,r);t=zr(t,N,W);for(let R=0,M=t;R<u.length;R++){const w=u[R],Y=zr(m[R]+M,w.minimumSize,w.maximumSize),G=Y-m[R];M-=G,w.size=Y}for(let R=0,M=t;R<p.length;R++){const w=p[R],Y=zr(g[R]-M,w.minimumSize,w.maximumSize),G=Y-g[R];M+=G,w.size=Y}return t}distributeEmptySpace(e){const t=this.viewItems.reduce((r,a)=>r+a.size,0);let i=this.size-t;const n=Ra(this.viewItems.length-1,-1),o=n.filter(r=>this.viewItems[r].priority===1),l=n.filter(r=>this.viewItems[r].priority===2);for(const r of l)L9(n,r);for(const r of o)CL(n,r);typeof e=="number"&&CL(n,e);for(let r=0;i!==0&&r<n.length;r++){const a=this.viewItems[n[r]],d=zr(a.size+i,a.minimumSize,a.maximumSize),c=d-a.size;i-=c,a.size=d}}layoutViews(){this._contentSize=this.viewItems.reduce((t,i)=>t+i.size,0);let e=0;for(const t of this.viewItems)t.layout(e,this.layoutContext),e+=t.size;this.sashItems.forEach(t=>t.sash.layout()),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){this.orientation===0?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this._contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this._contentSize})}updateSashEnablement(){let e=!1;const t=this.viewItems.map(a=>e=a.size-a.minimumSize>0||e);e=!1;const i=this.viewItems.map(a=>e=a.maximumSize-a.size>0||e),n=[...this.viewItems].reverse();e=!1;const o=n.map(a=>e=a.size-a.minimumSize>0||e).reverse();e=!1;const l=n.map(a=>e=a.maximumSize-a.size>0||e).reverse();let r=0;for(let a=0;a<this.sashItems.length;a++){const{sash:d}=this.sashItems[a],c=this.viewItems[a];r+=c.size;const h=!(t[a]&&l[a+1]),u=!(i[a]&&o[a+1]);if(h&&u){const m=Ra(a,-1),p=Ra(a+1,this.viewItems.length),g=this.findFirstSnapIndex(m),b=this.findFirstSnapIndex(p),f=typeof g=="number"&&!this.viewItems[g].visible,Z=typeof b=="number"&&!this.viewItems[b].visible;f&&o[a]&&(r>0||this.startSnappingEnabled)?d.state=1:Z&&t[a]&&(r<this._contentSize||this.endSnappingEnabled)?d.state=2:d.state=0}else h&&!u?d.state=1:!h&&u?d.state=2:d.state=3}}getSashPosition(e){let t=0;for(let i=0;i<this.sashItems.length;i++)if(t+=this.viewItems[i].size,this.sashItems[i].sash===e)return t;return 0}findFirstSnapIndex(e){for(const t of e){const i=this.viewItems[t];if(i.visible&&i.snap)return t}for(const t of e){const i=this.viewItems[t];if(i.visible&&i.maximumSize-i.minimumSize>0)return;if(!i.visible&&i.snap)return t}}areViewsDistributed(){let e,t;for(const i of this.viewItems)if(e=e===void 0?i.size:Math.min(e,i.size),t=t===void 0?i.size:Math.max(t,i.size),t-e>2)return!1;return!0}dispose(){var e;(e=this.sashDragState)==null||e.disposable.dispose(),Tn(this.viewItems),this.viewItems=[],this.sashItems.forEach(t=>t.disposable.dispose()),this.sashItems=[],super.dispose()}}const SX=class SX{constructor(e,t,i){this.columns=e,this.getColumnSize=i,this.templateId=SX.TemplateId,this.renderedTemplates=new Set;const n=new Map(t.map(o=>[o.templateId,o]));this.renderers=[];for(const o of e){const l=n.get(o.templateId);if(!l)throw new Error(`Table cell renderer for template id ${o.templateId} not found.`);this.renderers.push(l)}}renderTemplate(e){const t=ye(e,Ge(".monaco-table-tr")),i=[],n=[];for(let l=0;l<this.columns.length;l++){const r=this.renderers[l],a=ye(t,Ge(".monaco-table-td",{"data-col-index":l}));a.style.width=`${this.getColumnSize(l)}px`,i.push(a),n.push(r.renderTemplate(a))}const o={container:e,cellContainers:i,cellTemplateData:n};return this.renderedTemplates.add(o),o}renderElement(e,t,i,n){for(let o=0;o<this.columns.length;o++){const r=this.columns[o].project(e);this.renderers[o].renderElement(r,t,i.cellTemplateData[o],n)}}disposeElement(e,t,i,n){for(let o=0;o<this.columns.length;o++){const l=this.renderers[o];if(l.disposeElement){const a=this.columns[o].project(e);l.disposeElement(a,t,i.cellTemplateData[o],n)}}}disposeTemplate(e){for(let t=0;t<this.columns.length;t++)this.renderers[t].disposeTemplate(e.cellTemplateData[t]);Fl(e.container),this.renderedTemplates.delete(e)}layoutColumn(e,t){for(const{cellContainers:i}of this.renderedTemplates)i[e].style.width=`${t}px`}};SX.TemplateId="row";let Ev=SX;function Jje(s){return{getHeight(e){return s.getHeight(e)},getTemplateId(){return Ev.TemplateId}}}class Xje extends de{get minimumSize(){return this.column.minimumWidth??120}get maximumSize(){return this.column.maximumWidth??Number.POSITIVE_INFINITY}get onDidChange(){return this.column.onDidChangeWidthConstraints??ve.None}constructor(e,t){super(),this.column=e,this.index=t,this._onDidLayout=new re,this.onDidLayout=this._onDidLayout.event,this.element=Ge(".monaco-table-th",{"data-col-index":t},e.label),e.tooltip&&this._register(rm().setupManagedHover(ca("mouse"),this.element,e.tooltip))}layout(e){this._onDidLayout.fire([this.index,e])}}const WX=class WX{get onDidChangeFocus(){return this.list.onDidChangeFocus}get onDidChangeSelection(){return this.list.onDidChangeSelection}get onDidScroll(){return this.list.onDidScroll}get onMouseDblClick(){return this.list.onMouseDblClick}get onPointer(){return this.list.onPointer}get onDidFocus(){return this.list.onDidFocus}get scrollTop(){return this.list.scrollTop}set scrollTop(e){this.list.scrollTop=e}get scrollHeight(){return this.list.scrollHeight}get renderHeight(){return this.list.renderHeight}get onDidDispose(){return this.list.onDidDispose}constructor(e,t,i,n,o,l){this.virtualDelegate=i,this.columns=n,this.domId=`table_id_${++WX.InstanceCount}`,this.disposables=new Ze,this.cachedWidth=0,this.cachedHeight=0,this.domNode=ye(t,Ge(`.monaco-table.${this.domId}`));const r=n.map((c,h)=>this.disposables.add(new Xje(c,h))),a={size:r.reduce((c,h)=>c+h.column.weight,0),views:r.map(c=>({size:c.column.weight,view:c}))};this.splitview=this.disposables.add(new WUe(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:a})),this.splitview.el.style.height=`${i.headerRowHeight}px`,this.splitview.el.style.lineHeight=`${i.headerRowHeight}px`;const d=new Ev(n,o,c=>this.splitview.getViewSize(c));this.list=this.disposables.add(new Uc(e,this.domNode,Jje(i),[d],l)),ve.any(...r.map(c=>c.onDidLayout))(([c,h])=>d.layoutColumn(c,h),null,this.disposables),this.splitview.onDidSashReset(c=>{const h=n.reduce((m,p)=>m+p.weight,0),u=n[c].weight/h*this.cachedWidth;this.splitview.resizeView(c,u)},null,this.disposables),this.styleElement=cc(this.domNode),this.style(p3e)}updateOptions(e){this.list.updateOptions(e)}splice(e,t,i=[]){this.list.splice(e,t,i)}getHTMLElement(){return this.domNode}style(e){const t=[];t.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before {
- top: ${this.virtualDelegate.headerRowHeight+1}px;
- height: calc(100% - ${this.virtualDelegate.headerRowHeight}px);
- }`),this.styleElement.textContent=t.join(`
- `),this.list.style(e)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}};WX.InstanceCount=0;let NK=WX;var zd;(function(s){s[s.Expanded=0]="Expanded",s[s.Collapsed=1]="Collapsed",s[s.PreserveOrExpanded=2]="PreserveOrExpanded",s[s.PreserveOrCollapsed=3]="PreserveOrCollapsed"})(zd||(zd={}));var QZ;(function(s){s[s.Unknown=0]="Unknown",s[s.Twistie=1]="Twistie",s[s.Element=2]="Element",s[s.Filter=3]="Filter"})(QZ||(QZ={}));class ec extends Error{constructor(e,t){super(`TreeError [${e}] ${t}`)}}class Hee{constructor(e){this.fn=e,this._map=new WeakMap}map(e){let t=this._map.get(e);return t||(t=this.fn(e),this._map.set(e,t)),t}}function Pee(s){return typeof s=="object"&&"visibility"in s&&"data"in s}function kM(s){switch(s){case!0:return 1;case!1:return 0;default:return s}}function E3(s){return typeof s.collapsible=="boolean"}class Yje{constructor(e,t,i,n={}){this.user=e,this.list=t,this.rootRef=[],this.eventBufferer=new $T,this._onDidChangeCollapseState=new re,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new re,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new re,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new Hc(lge),this.collapseByDefault=typeof n.collapseByDefault>"u"?!1:n.collapseByDefault,this.allowNonCollapsibleParents=n.allowNonCollapsibleParents??!1,this.filter=n.filter,this.autoExpandSingleChildren=typeof n.autoExpandSingleChildren>"u"?!1:n.autoExpandSingleChildren,this.root={parent:void 0,element:i,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(e,t,i=Ti.empty(),n={}){if(e.length===0)throw new ec(this.user,"Invalid tree location");n.diffIdentityProvider?this.spliceSmart(n.diffIdentityProvider,e,t,i,n):this.spliceSimple(e,t,i,n)}spliceSmart(e,t,i,n=Ti.empty(),o,l=o.diffDepth??0){const{parentNode:r}=this.getParentNodeWithListIndex(t);if(!r.lastDiffIds)return this.spliceSimple(t,i,n,o);const a=[...n],d=t[t.length-1],c=new cp({getElements:()=>r.lastDiffIds},{getElements:()=>[...r.children.slice(0,d),...a,...r.children.slice(d+i)].map(g=>e.getId(g.element).toString())}).ComputeDiff(!1);if(c.quitEarly)return r.lastDiffIds=void 0,this.spliceSimple(t,i,a,o);const h=t.slice(0,-1),u=(g,b,f)=>{if(l>0)for(let Z=0;Z<f;Z++)g--,b--,this.spliceSmart(e,[...h,g,0],Number.MAX_SAFE_INTEGER,a[b].children,o,l-1)};let m=Math.min(r.children.length,d+i),p=a.length;for(const g of c.changes.sort((b,f)=>f.originalStart-b.originalStart))u(m,p,m-(g.originalStart+g.originalLength)),m=g.originalStart,p=g.modifiedStart-d,this.spliceSimple([...h,m],g.originalLength,Ti.slice(a,p,p+g.modifiedLength),o);u(m,p,m)}spliceSimple(e,t,i=Ti.empty(),{onDidCreateNode:n,onDidDeleteNode:o,diffIdentityProvider:l}){const{parentNode:r,listIndex:a,revealed:d,visible:c}=this.getParentNodeWithListIndex(e),h=[],u=Ti.map(i,W=>this.createTreeNode(W,r,r.visible?1:0,d,h,n)),m=e[e.length-1];let p=0;for(let W=m;W>=0&&W<r.children.length;W--){const Q=r.children[W];if(Q.visible){p=Q.visibleChildIndex;break}}const g=[];let b=0,f=0;for(const W of u)g.push(W),f+=W.renderNodeCount,W.visible&&(W.visibleChildIndex=p+b++);const Z=Mse(r.children,m,t,g);l?r.lastDiffIds?Mse(r.lastDiffIds,m,t,g.map(W=>l.getId(W.element).toString())):r.lastDiffIds=r.children.map(W=>l.getId(W.element).toString()):r.lastDiffIds=void 0;let A=0;for(const W of Z)W.visible&&A++;if(A!==0)for(let W=m+g.length;W<r.children.length;W++){const Q=r.children[W];Q.visible&&(Q.visibleChildIndex-=A)}if(r.visibleChildrenCount+=b-A,d&&c){const W=Z.reduce((Q,R)=>Q+(R.visible?R.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(r,f-W),this.list.splice(a,W,h)}if(Z.length>0&&o){const W=Q=>{o(Q),Q.children.forEach(W)};Z.forEach(W)}this._onDidSplice.fire({insertedNodes:g,deletedNodes:Z});let N=r;for(;N;){if(N.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}N=N.parent}}rerender(e){if(e.length===0)throw new ec(this.user,"Invalid tree location");const{node:t,listIndex:i,revealed:n}=this.getTreeNodeWithListIndex(e);t.visible&&n&&this.list.splice(i,1,[t])}has(e){return this.hasTreeNode(e)}getListIndex(e){const{listIndex:t,visible:i,revealed:n}=this.getTreeNodeWithListIndex(e);return i&&n?t:-1}getListRenderCount(e){return this.getTreeNode(e).renderNodeCount}isCollapsible(e){return this.getTreeNode(e).collapsible}setCollapsible(e,t){const i=this.getTreeNode(e);typeof t>"u"&&(t=!i.collapsible);const n={collapsible:t};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(e,n))}isCollapsed(e){return this.getTreeNode(e).collapsed}setCollapsed(e,t,i){const n=this.getTreeNode(e);typeof t>"u"&&(t=!n.collapsed);const o={collapsed:t,recursive:i||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(e,o))}_setCollapseState(e,t){const{node:i,listIndex:n,revealed:o}=this.getTreeNodeWithListIndex(e),l=this._setListNodeCollapseState(i,n,o,t);if(i!==this.root&&this.autoExpandSingleChildren&&l&&!E3(t)&&i.collapsible&&!i.collapsed&&!t.recursive){let r=-1;for(let a=0;a<i.children.length;a++)if(i.children[a].visible)if(r>-1){r=-1;break}else r=a;r>-1&&this._setCollapseState([...e,r],t)}return l}_setListNodeCollapseState(e,t,i,n){const o=this._setNodeCollapseState(e,n,!1);if(!i||!e.visible||!o)return o;const l=e.renderNodeCount,r=this.updateNodeAfterCollapseChange(e),a=l-(t===-1?0:1);return this.list.splice(t+1,a,r.slice(1)),o}_setNodeCollapseState(e,t,i){let n;if(e===this.root?n=!1:(E3(t)?(n=e.collapsible!==t.collapsible,e.collapsible=t.collapsible):e.collapsible?(n=e.collapsed!==t.collapsed,e.collapsed=t.collapsed):n=!1,n&&this._onDidChangeCollapseState.fire({node:e,deep:i})),!E3(t)&&t.recursive)for(const o of e.children)n=this._setNodeCollapseState(o,t,!0)||n;return n}expandTo(e){this.eventBufferer.bufferEvents(()=>{let t=this.getTreeNode(e);for(;t.parent;)t=t.parent,e=e.slice(0,e.length-1),t.collapsed&&this._setCollapseState(e,{collapsed:!1,recursive:!1})})}refilter(){const e=this.root.renderNodeCount,t=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,e,t),this.refilterDelayer.cancel()}createTreeNode(e,t,i,n,o,l){const r={parent:t,element:e.element,children:[],depth:t.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof e.collapsible=="boolean"?e.collapsible:typeof e.collapsed<"u",collapsed:typeof e.collapsed>"u"?this.collapseByDefault:e.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},a=this._filterNode(r,i);r.visibility=a,n&&o.push(r);const d=e.children||Ti.empty(),c=n&&a!==0&&!r.collapsed;let h=0,u=1;for(const m of d){const p=this.createTreeNode(m,r,a,c,o,l);r.children.push(p),u+=p.renderNodeCount,p.visible&&(p.visibleChildIndex=h++)}return this.allowNonCollapsibleParents||(r.collapsible=r.collapsible||r.children.length>0),r.visibleChildrenCount=h,r.visible=a===2?h>0:a===1,r.visible?r.collapsed||(r.renderNodeCount=u):(r.renderNodeCount=0,n&&o.pop()),l==null||l(r),r}updateNodeAfterCollapseChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterCollapseChange(e,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterCollapseChange(e,t){if(e.visible===!1)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed)for(const i of e.children)e.renderNodeCount+=this._updateNodeAfterCollapseChange(i,t);return this._onDidChangeRenderNodeCount.fire(e),e.renderNodeCount}updateNodeAfterFilterChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterFilterChange(e,e.visible?1:0,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterFilterChange(e,t,i,n=!0){let o;if(e!==this.root){if(o=this._filterNode(e,t),o===0)return e.visible=!1,e.renderNodeCount=0,!1;n&&i.push(e)}const l=i.length;e.renderNodeCount=e===this.root?0:1;let r=!1;if(!e.collapsed||o!==0){let a=0;for(const d of e.children)r=this._updateNodeAfterFilterChange(d,o,i,n&&!e.collapsed)||r,d.visible&&(d.visibleChildIndex=a++);e.visibleChildrenCount=a}else e.visibleChildrenCount=0;return e!==this.root&&(e.visible=o===2?r:o===1,e.visibility=o),e.visible?e.collapsed||(e.renderNodeCount+=i.length-l):(e.renderNodeCount=0,n&&i.pop()),this._onDidChangeRenderNodeCount.fire(e),e.visible}_updateAncestorsRenderNodeCount(e,t){if(t!==0)for(;e;)e.renderNodeCount+=t,this._onDidChangeRenderNodeCount.fire(e),e=e.parent}_filterNode(e,t){const i=this.filter?this.filter.filter(e.element,t):1;return typeof i=="boolean"?(e.filterData=void 0,i?1:0):Pee(i)?(e.filterData=i.data,kM(i.visibility)):(e.filterData=void 0,kM(i))}hasTreeNode(e,t=this.root){if(!e||e.length===0)return!0;const[i,...n]=e;return i<0||i>t.children.length?!1:this.hasTreeNode(n,t.children[i])}getTreeNode(e,t=this.root){if(!e||e.length===0)return t;const[i,...n]=e;if(i<0||i>t.children.length)throw new ec(this.user,"Invalid tree location");return this.getTreeNode(n,t.children[i])}getTreeNodeWithListIndex(e){if(e.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:t,listIndex:i,revealed:n,visible:o}=this.getParentNodeWithListIndex(e),l=e[e.length-1];if(l<0||l>t.children.length)throw new ec(this.user,"Invalid tree location");const r=t.children[l];return{node:r,listIndex:i,revealed:n,visible:o&&r.visible}}getParentNodeWithListIndex(e,t=this.root,i=0,n=!0,o=!0){const[l,...r]=e;if(l<0||l>t.children.length)throw new ec(this.user,"Invalid tree location");for(let a=0;a<l;a++)i+=t.children[a].renderNodeCount;return n=n&&!t.collapsed,o=o&&t.visible,r.length===0?{parentNode:t,listIndex:i,revealed:n,visible:o}:this.getParentNodeWithListIndex(r,t.children[l],i+1,n,o)}getNode(e=[]){return this.getTreeNode(e)}getNodeLocation(e){const t=[];let i=e;for(;i.parent;)t.push(i.parent.children.indexOf(i)),i=i.parent;return t.reverse()}getParentNodeLocation(e){if(e.length!==0)return e.length===1?[]:nIe(e)[0]}getFirstElementChild(e){const t=this.getTreeNode(e);if(t.children.length!==0)return t.children[0].element}}class zje extends fB{constructor(e){super(e.elements.map(t=>t.element)),this.data=e}}function v3(s){return s instanceof fB?new zje(s):s}class _je{constructor(e,t){this.modelProvider=e,this.dnd=t,this.autoExpandDisposable=de.None,this.disposables=new Ze}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map(i=>i.element),t)}onDragStart(e,t){var i,n;(n=(i=this.dnd).onDragStart)==null||n.call(i,v3(e),t)}onDragOver(e,t,i,n,o,l=!0){const r=this.dnd.onDragOver(v3(e),t&&t.element,i,n,o),a=this.autoExpandNode!==t;if(a&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=t),typeof t>"u")return r;if(a&&typeof r!="boolean"&&r.autoExpand&&(this.autoExpandDisposable=HU(()=>{const m=this.modelProvider(),p=m.getNodeLocation(t);m.isCollapsed(p)&&m.setCollapsed(p,!1),this.autoExpandNode=void 0},500,this.disposables)),typeof r=="boolean"||!r.accept||typeof r.bubble>"u"||r.feedback){if(!l){const m=typeof r=="boolean"?r:r.accept,p=typeof r=="boolean"?void 0:r.effect;return{accept:m,effect:p,feedback:[i]}}return r}if(r.bubble===1){const m=this.modelProvider(),p=m.getNodeLocation(t),g=m.getParentNodeLocation(p),b=m.getNode(g),f=g&&m.getListIndex(g);return this.onDragOver(e,b,f,n,o,!1)}const d=this.modelProvider(),c=d.getNodeLocation(t),h=d.getListIndex(c),u=d.getListRenderCount(c);return{...r,feedback:Ra(h,h+u)}}drop(e,t,i,n,o){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(v3(e),t&&t.element,i,n,o)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}dispose(){this.disposables.dispose(),this.dnd.dispose()}}function Oje(s,e){return e&&{...e,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(t.element)}},dnd:e.dnd&&new _je(s,e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent(t){return e.multipleSelectionController.isSelectionSingleChangeEvent({...t,element:t.element})},isSelectionRangeChangeEvent(t){return e.multipleSelectionController.isSelectionRangeChangeEvent({...t,element:t.element})}},accessibilityProvider:e.accessibilityProvider&&{...e.accessibilityProvider,getSetSize(t){const i=s(),n=i.getNodeLocation(t),o=i.getParentNodeLocation(n);return i.getNode(o).visibleChildrenCount},getPosInSet(t){return t.visibleChildIndex+1},isChecked:e.accessibilityProvider&&e.accessibilityProvider.isChecked?t=>e.accessibilityProvider.isChecked(t.element):void 0,getRole:e.accessibilityProvider&&e.accessibilityProvider.getRole?t=>e.accessibilityProvider.getRole(t.element):()=>"treeitem",getAriaLabel(t){return e.accessibilityProvider.getAriaLabel(t.element)},getWidgetAriaLabel(){return e.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:e.accessibilityProvider&&e.accessibilityProvider.getWidgetRole?()=>e.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e.accessibilityProvider&&e.accessibilityProvider.getAriaLevel?t=>e.accessibilityProvider.getAriaLevel(t.element):t=>t.depth,getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&(t=>e.accessibilityProvider.getActiveDescendantId(t.element))},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(t){return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)}}}}class Kee{constructor(e){this.delegate=e}getHeight(e){return this.delegate.getHeight(e.element)}getTemplateId(e){return this.delegate.getTemplateId(e.element)}hasDynamicHeight(e){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(e.element)}setDynamicHeight(e,t){var i,n;(n=(i=this.delegate).setDynamicHeight)==null||n.call(i,e.element,t)}}var bV;(function(s){s.None="none",s.OnHover="onHover",s.Always="always"})(bV||(bV={}));class jje{get elements(){return this._elements}constructor(e,t=[]){this._elements=t,this.disposables=new Ze,this.onDidChange=ve.forEach(e,i=>this._elements=i,this.disposables)}dispose(){this.disposables.dispose()}}const kw=class kw{constructor(e,t,i,n,o,l={}){var r;this.renderer=e,this.modelProvider=t,this.activeNodes=n,this.renderedIndentGuides=o,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=kw.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=de.None,this.disposables=new Ze,this.templateId=e.templateId,this.updateOptions(l),ve.map(i,a=>a.node)(this.onDidChangeNodeTwistieState,this,this.disposables),(r=e.onDidChangeTwistieState)==null||r.call(e,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(e={}){if(typeof e.indent<"u"){const t=zr(e.indent,0,40);if(t!==this.indent){this.indent=t;for(const[i,n]of this.renderedNodes)this.renderTreeElement(i,n)}}if(typeof e.renderIndentGuides<"u"){const t=e.renderIndentGuides!==bV.None;if(t!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=t;for(const[i,n]of this.renderedNodes)this._renderIndentGuides(i,n);if(this.indentGuidesDisposable.dispose(),t){const i=new Ze;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,i),this.indentGuidesDisposable=i,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof e.hideTwistiesOfChildlessElements<"u"&&(this.hideTwistiesOfChildlessElements=e.hideTwistiesOfChildlessElements)}renderTemplate(e){const t=ye(e,Ge(".monaco-tl-row")),i=ye(t,Ge(".monaco-tl-indent")),n=ye(t,Ge(".monaco-tl-twistie")),o=ye(t,Ge(".monaco-tl-contents")),l=this.renderer.renderTemplate(o);return{container:e,indent:i,twistie:n,indentGuidesDisposable:de.None,templateData:l}}renderElement(e,t,i,n){this.renderedNodes.set(e,i),this.renderedElements.set(e.element,e),this.renderTreeElement(e,i),this.renderer.renderElement(e,t,i.templateData,n)}disposeElement(e,t,i,n){var o,l;i.indentGuidesDisposable.dispose(),(l=(o=this.renderer).disposeElement)==null||l.call(o,e,t,i.templateData,n),typeof n=="number"&&(this.renderedNodes.delete(e),this.renderedElements.delete(e.element))}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}onDidChangeTwistieState(e){const t=this.renderedElements.get(e);t&&this.onDidChangeNodeTwistieState(t)}onDidChangeNodeTwistieState(e){const t=this.renderedNodes.get(e);t&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(e,t))}renderTreeElement(e,t){const i=kw.DefaultIndent+(e.depth-1)*this.indent;t.twistie.style.paddingLeft=`${i}px`,t.indent.style.width=`${i+this.indent-16}px`,e.collapsible?t.container.setAttribute("aria-expanded",String(!e.collapsed)):t.container.removeAttribute("aria-expanded"),t.twistie.classList.remove(...Qt.asClassNameArray(ke.treeItemExpanded));let n=!1;this.renderer.renderTwistie&&(n=this.renderer.renderTwistie(e.element,t.twistie)),e.collapsible&&(!this.hideTwistiesOfChildlessElements||e.visibleChildrenCount>0)?(n||t.twistie.classList.add(...Qt.asClassNameArray(ke.treeItemExpanded)),t.twistie.classList.add("collapsible"),t.twistie.classList.toggle("collapsed",e.collapsed)):t.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(e,t)}_renderIndentGuides(e,t){if(Fl(t.indent),t.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const i=new Ze,n=this.modelProvider();for(;;){const o=n.getNodeLocation(e),l=n.getParentNodeLocation(o);if(!l)break;const r=n.getNode(l),a=Ge(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(r)&&a.classList.add("active"),t.indent.childElementCount===0?t.indent.appendChild(a):t.indent.insertBefore(a,t.indent.firstElementChild),this.renderedIndentGuides.add(r,a),i.add(gt(()=>this.renderedIndentGuides.delete(r,a))),e=r}t.indentGuidesDisposable=i}_onDidChangeActiveNodes(e){if(!this.shouldRenderIndentGuides)return;const t=new Set,i=this.modelProvider();e.forEach(n=>{const o=i.getNodeLocation(n);try{const l=i.getParentNodeLocation(o);n.collapsible&&n.children.length>0&&!n.collapsed?t.add(n):l&&t.add(i.getNode(l))}catch{}}),this.activeIndentNodes.forEach(n=>{t.has(n)||this.renderedIndentGuides.forEach(n,o=>o.classList.remove("active"))}),t.forEach(n=>{this.activeIndentNodes.has(n)||this.renderedIndentGuides.forEach(n,o=>o.classList.add("active"))}),this.activeIndentNodes=t}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),Tn(this.disposables)}};kw.DefaultIndent=8;let RK=kw;class Hje{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(e,t,i){this.tree=e,this.keyboardNavigationLabelProvider=t,this._filter=i,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new Ze,e.onWillRefilter(this.reset,this,this.disposables)}filter(e,t){let i=1;if(this._filter){const l=this._filter.filter(e,t);if(typeof l=="boolean"?i=l?1:0:Pee(l)?i=kM(l.visibility):i=l,i===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:_u.Default,visibility:i};const n=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),o=Array.isArray(n)?n:[n];for(const l of o){const r=l&&l.toString();if(typeof r>"u")return{data:_u.Default,visibility:i};let a;if(this.tree.findMatchType===MA.Contiguous){const d=r.toLowerCase().indexOf(this._lowercasePattern);if(d>-1){a=[Number.MAX_SAFE_INTEGER,0];for(let c=this._lowercasePattern.length;c>0;c--)a.push(d+c-1)}}else a=QA(this._pattern,this._lowercasePattern,0,r,r.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(a)return this._matchCount++,o.length===1?{data:a,visibility:i}:{data:{label:r,score:a},visibility:i}}return this.tree.findMode===s0.Filter?typeof this.tree.options.defaultFindVisibility=="number"?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(e):2:{data:_u.Default,visibility:i}}reset(){this._totalCount=0,this._matchCount=0}dispose(){Tn(this.disposables)}}var s0;(function(s){s[s.Highlight=0]="Highlight",s[s.Filter=1]="Filter"})(s0||(s0={}));var MA;(function(s){s[s.Fuzzy=0]="Fuzzy",s[s.Contiguous=1]="Contiguous"})(MA||(MA={}));let Pje=class{get pattern(){return this._pattern}get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(e))}get matchType(){return this._matchType}set matchType(e){e!==this._matchType&&(this._matchType=e,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(e))}constructor(e,t,i,n,o,l={}){this.tree=e,this.view=i,this.filter=n,this.contextViewProvider=o,this.options=l,this._pattern="",this.width=0,this._onDidChangeMode=new re,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new re,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new re,this._onDidChangeOpenState=new re,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new Ze,this.disposables=new Ze,this._mode=e.options.defaultFindMode??s0.Highlight,this._matchType=e.options.defaultFindMatchType??MA.Fuzzy,t.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(e={}){e.defaultFindMode!==void 0&&(this.mode=e.defaultFindMode),e.defaultFindMatchType!==void 0&&(this.matchType=e.defaultFindMatchType)}onDidSpliceModel(){!this.widget||this.pattern.length===0||(this.tree.refilter(),this.render())}render(){var t,i,n;const e=this.filter.totalCount>0&&this.filter.matchCount===0;this.pattern&&e?(ra(U("replFindNoResults","No results")),this.tree.options.showNotFoundMessage??!0?(t=this.widget)==null||t.showMessage({type:2,content:U("not found","No elements found.")}):(i=this.widget)==null||i.showMessage({type:2})):((n=this.widget)==null||n.clearMessage(),this.pattern&&ra(U("replFindResults","{0} results",this.filter.matchCount)))}shouldAllowFocus(e){return!this.widget||!this.pattern||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!_u.isDefault(e.filterData)}layout(e){var t;this.width=e,(t=this.widget)==null||t.layout(e)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}};function Kje(s,e){return s.position===e.position&&VUe(s,e)}function VUe(s,e){return s.node.element===e.node.element&&s.startIndex===e.startIndex&&s.height===e.height&&s.endIndex===e.endIndex}class qje{constructor(e=[]){this.stickyNodes=e}get count(){return this.stickyNodes.length}equal(e){return Fs(this.stickyNodes,e.stickyNodes,Kje)}lastNodePartiallyVisible(){if(this.count===0)return!1;const e=this.stickyNodes[this.count-1];if(this.count===1)return e.position!==0;const t=this.stickyNodes[this.count-2];return t.position+t.height!==e.position}animationStateChanged(e){if(!Fs(this.stickyNodes,e.stickyNodes,VUe)||this.count===0)return!1;const t=this.stickyNodes[this.count-1],i=e.stickyNodes[e.count-1];return t.position!==i.position}}class $je{constrainStickyScrollNodes(e,t,i){for(let n=0;n<e.length;n++){const o=e[n];if(o.position+o.height>i||n>=t)return e.slice(0,n)}return e}}let Bre=class extends de{constructor(e,t,i,n,o,l={}){super(),this.tree=e,this.model=t,this.view=i,this.treeDelegate=o,this.maxWidgetViewRatio=.4;const r=this.validateStickySettings(l);this.stickyScrollMaxItemCount=r.stickyScrollMaxItemCount,this.stickyScrollDelegate=l.stickyScrollDelegate??new $je,this._widget=this._register(new eHe(i.getScrollableElement(),i,e,n,o,l.accessibilityProvider)),this.onDidChangeHasFocus=this._widget.onDidChangeHasFocus,this.onContextMenu=this._widget.onContextMenu,this._register(i.onDidScroll(()=>this.update())),this._register(i.onDidChangeContentHeight(()=>this.update())),this._register(e.onDidChangeCollapseState(()=>this.update())),this.update()}get height(){return this._widget.height}getNodeAtHeight(e){let t;if(e===0?t=this.view.firstVisibleIndex:t=this.view.indexAt(e+this.view.scrollTop),!(t<0||t>=this.view.length))return this.view.element(t)}update(){const e=this.getNodeAtHeight(0);if(!e||this.tree.scrollTop===0){this._widget.setState(void 0);return}const t=this.findStickyState(e);this._widget.setState(t)}findStickyState(e){const t=[];let i=e,n=0,o=this.getNextStickyNode(i,void 0,n);for(;o&&(t.push(o),n+=o.height,!(t.length<=this.stickyScrollMaxItemCount&&(i=this.getNextVisibleNode(o),!i)));)o=this.getNextStickyNode(i,o.node,n);const l=this.constrainStickyNodes(t);return l.length?new qje(l):void 0}getNextVisibleNode(e){return this.getNodeAtHeight(e.position+e.height)}getNextStickyNode(e,t,i){const n=this.getAncestorUnderPrevious(e,t);if(n&&!(n===e&&(!this.nodeIsUncollapsedParent(e)||this.nodeTopAlignsWithStickyNodesBottom(e,i))))return this.createStickyScrollNode(n,i)}nodeTopAlignsWithStickyNodesBottom(e,t){const i=this.getNodeIndex(e),n=this.view.getElementTop(i),o=t;return this.view.scrollTop===n-o}createStickyScrollNode(e,t){const i=this.treeDelegate.getHeight(e),{startIndex:n,endIndex:o}=this.getNodeRange(e),l=this.calculateStickyNodePosition(o,t,i);return{node:e,position:l,height:i,startIndex:n,endIndex:o}}getAncestorUnderPrevious(e,t=void 0){let i=e,n=this.getParentNode(i);for(;n;){if(n===t)return i;i=n,n=this.getParentNode(i)}if(t===void 0)return i}calculateStickyNodePosition(e,t,i){let n=this.view.getRelativeTop(e);if(n===null&&this.view.firstVisibleIndex===e&&e+1<this.view.length){const d=this.treeDelegate.getHeight(this.view.element(e)),c=this.view.getRelativeTop(e+1);n=c?c-d/this.view.renderHeight:null}if(n===null)return t;const o=this.view.element(e),l=this.treeDelegate.getHeight(o),a=n*this.view.renderHeight+l;return t+i>a&&t<=a?a-i:t}constrainStickyNodes(e){if(e.length===0)return[];const t=this.view.renderHeight*this.maxWidgetViewRatio,i=e[e.length-1];if(e.length<=this.stickyScrollMaxItemCount&&i.position+i.height<=t)return e;const n=this.stickyScrollDelegate.constrainStickyScrollNodes(e,this.stickyScrollMaxItemCount,t);if(!n.length)return[];const o=n[n.length-1];if(n.length>this.stickyScrollMaxItemCount||o.position+o.height>t)throw new Error("stickyScrollDelegate violates constraints");return n}getParentNode(e){const t=this.model.getNodeLocation(e),i=this.model.getParentNodeLocation(t);return i?this.model.getNode(i):void 0}nodeIsUncollapsedParent(e){const t=this.model.getNodeLocation(e);return this.model.getListRenderCount(t)>1}getNodeIndex(e){const t=this.model.getNodeLocation(e);return this.model.getListIndex(t)}getNodeRange(e){const t=this.model.getNodeLocation(e),i=this.model.getListIndex(t);if(i<0)throw new Error("Node not found in tree");const n=this.model.getListRenderCount(t),o=i+n-1;return{startIndex:i,endIndex:o}}nodePositionTopBelowWidget(e){const t=[];let i=this.getParentNode(e);for(;i;)t.push(i),i=this.getParentNode(i);let n=0;for(let o=0;o<t.length&&o<this.stickyScrollMaxItemCount;o++)n+=this.treeDelegate.getHeight(t[o]);return n}domFocus(){this._widget.domFocus()}focusedLast(){return this._widget.focusedLast()}updateOptions(e={}){if(!e.stickyScrollMaxItemCount)return;const t=this.validateStickySettings(e);this.stickyScrollMaxItemCount!==t.stickyScrollMaxItemCount&&(this.stickyScrollMaxItemCount=t.stickyScrollMaxItemCount,this.update())}validateStickySettings(e){let t=7;return typeof e.stickyScrollMaxItemCount=="number"&&(t=Math.max(e.stickyScrollMaxItemCount,1)),{stickyScrollMaxItemCount:t}}},eHe=class{constructor(e,t,i,n,o,l){this.view=t,this.tree=i,this.treeRenderers=n,this.treeDelegate=o,this.accessibilityProvider=l,this._previousElements=[],this._previousStateDisposables=new Ze,this._rootDomNode=Ge(".monaco-tree-sticky-container.empty"),e.appendChild(this._rootDomNode);const r=Ge(".monaco-tree-sticky-container-shadow");this._rootDomNode.appendChild(r),this.stickyScrollFocus=new tHe(this._rootDomNode,t),this.onDidChangeHasFocus=this.stickyScrollFocus.onDidChangeHasFocus,this.onContextMenu=this.stickyScrollFocus.onContextMenu}get height(){if(!this._previousState)return 0;const e=this._previousState.stickyNodes[this._previousState.count-1];return e.position+e.height}setState(e){const t=!!this._previousState&&this._previousState.count>0,i=!!e&&e.count>0;if(!t&&!i||t&&i&&this._previousState.equal(e))return;if(t!==i&&this.setVisible(i),!i){this._previousState=void 0,this._previousElements=[],this._previousStateDisposables.clear();return}const n=e.stickyNodes[e.count-1];if(this._previousState&&e.animationStateChanged(this._previousState))this._previousElements[this._previousState.count-1].style.top=`${n.position}px`;else{this._previousStateDisposables.clear();const o=Array(e.count);for(let l=e.count-1;l>=0;l--){const r=e.stickyNodes[l],{element:a,disposable:d}=this.createElement(r,l,e.count);o[l]=a,this._rootDomNode.appendChild(a),this._previousStateDisposables.add(d)}this.stickyScrollFocus.updateElements(o,e),this._previousElements=o}this._previousState=e,this._rootDomNode.style.height=`${n.position+n.height}px`}createElement(e,t,i){const n=e.startIndex,o=document.createElement("div");o.style.top=`${e.position}px`,this.tree.options.setRowHeight!==!1&&(o.style.height=`${e.height}px`),this.tree.options.setRowLineHeight!==!1&&(o.style.lineHeight=`${e.height}px`),o.classList.add("monaco-tree-sticky-row"),o.classList.add("monaco-list-row"),o.setAttribute("data-index",`${n}`),o.setAttribute("data-parity",n%2===0?"even":"odd"),o.setAttribute("id",this.view.getElementID(n));const l=this.setAccessibilityAttributes(o,e.node.element,t,i),r=this.treeDelegate.getTemplateId(e.node),a=this.treeRenderers.find(u=>u.templateId===r);if(!a)throw new Error(`No renderer found for template id ${r}`);let d=e.node;d===this.tree.getNode(this.tree.getNodeLocation(e.node))&&(d=new Proxy(e.node,{}));const c=a.renderTemplate(o);a.renderElement(d,e.startIndex,c,e.height);const h=gt(()=>{l.dispose(),a.disposeElement(d,e.startIndex,c,e.height),a.disposeTemplate(c),o.remove()});return{element:o,disposable:h}}setAccessibilityAttributes(e,t,i,n){if(!this.accessibilityProvider)return de.None;this.accessibilityProvider.getSetSize&&e.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(t,i,n))),this.accessibilityProvider.getPosInSet&&e.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(t,i))),this.accessibilityProvider.getRole&&e.setAttribute("role",this.accessibilityProvider.getRole(t)??"treeitem");const o=this.accessibilityProvider.getAriaLabel(t),l=o&&typeof o!="string"?o:Xc(o),r=Gt(d=>{const c=d.readObservable(l);c?e.setAttribute("aria-label",c):e.removeAttribute("aria-label")});typeof o=="string"||o&&e.setAttribute("aria-label",o.get());const a=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(t);return typeof a=="number"&&e.setAttribute("aria-level",`${a}`),e.setAttribute("aria-selected",String(!1)),r}setVisible(e){this._rootDomNode.classList.toggle("empty",!e),e||this.stickyScrollFocus.updateElements([],void 0)}domFocus(){this.stickyScrollFocus.domFocus()}focusedLast(){return this.stickyScrollFocus.focusedLast()}dispose(){this.stickyScrollFocus.dispose(),this._previousStateDisposables.dispose(),this._rootDomNode.remove()}};class tHe extends de{get domHasFocus(){return this._domHasFocus}set domHasFocus(e){e!==this._domHasFocus&&(this._onDidChangeHasFocus.fire(e),this._domHasFocus=e)}constructor(e,t){super(),this.container=e,this.view=t,this.focusedIndex=-1,this.elements=[],this._onDidChangeHasFocus=new re,this.onDidChangeHasFocus=this._onDidChangeHasFocus.event,this._onContextMenu=new re,this.onContextMenu=this._onContextMenu.event,this._domHasFocus=!1,this._register(ge(this.container,"focus",()=>this.onFocus())),this._register(ge(this.container,"blur",()=>this.onBlur())),this._register(this.view.onDidFocus(()=>this.toggleStickyScrollFocused(!1))),this._register(this.view.onKeyDown(i=>this.onKeyDown(i))),this._register(this.view.onMouseDown(i=>this.onMouseDown(i))),this._register(this.view.onContextMenu(i=>this.handleContextMenu(i)))}handleContextMenu(e){const t=e.browserEvent.target;if(!CM(t)&&!gC(t)){this.focusedLast()&&this.view.domFocus();return}if(!Mg(e.browserEvent)){if(!this.state)throw new Error("Context menu should not be triggered when state is undefined");const l=this.state.stickyNodes.findIndex(r=>{var a;return r.node.element===((a=e.element)==null?void 0:a.element)});if(l===-1)throw new Error("Context menu should not be triggered when element is not in sticky scroll widget");this.container.focus(),this.setFocus(l);return}if(!this.state||this.focusedIndex<0)throw new Error("Context menu key should not be triggered when focus is not in sticky scroll widget");const n=this.state.stickyNodes[this.focusedIndex].node.element,o=this.elements[this.focusedIndex];this._onContextMenu.fire({element:n,anchor:o,browserEvent:e.browserEvent,isStickyScroll:!0})}onKeyDown(e){if(this.domHasFocus&&this.state){if(e.key==="ArrowUp")this.setFocusedElement(Math.max(0,this.focusedIndex-1)),e.preventDefault(),e.stopPropagation();else if(e.key==="ArrowDown"||e.key==="ArrowRight"){if(this.focusedIndex>=this.state.count-1){const t=this.state.stickyNodes[this.state.count-1].startIndex+1;this.view.domFocus(),this.view.setFocus([t]),this.scrollNodeUnderWidget(t,this.state)}else this.setFocusedElement(this.focusedIndex+1);e.preventDefault(),e.stopPropagation()}}}onMouseDown(e){const t=e.browserEvent.target;!CM(t)&&!gC(t)||(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation())}updateElements(e,t){if(t&&t.count===0)throw new Error("Sticky scroll state must be undefined when there are no sticky nodes");if(t&&t.count!==e.length)throw new Error("Sticky scroll focus received illigel state");const i=this.focusedIndex;if(this.removeFocus(),this.elements=e,this.state=t,t){const n=zr(i,0,t.count-1);this.setFocus(n)}else this.domHasFocus&&this.view.domFocus();this.container.tabIndex=t?0:-1}setFocusedElement(e){const t=this.state;if(!t)throw new Error("Cannot set focus when state is undefined");if(this.setFocus(e),!(e<t.count-1)&&t.lastNodePartiallyVisible()){const i=t.stickyNodes[e];this.scrollNodeUnderWidget(i.endIndex+1,t)}}scrollNodeUnderWidget(e,t){const i=t.stickyNodes[t.count-1],n=t.count>1?t.stickyNodes[t.count-2]:void 0,o=this.view.getElementTop(e),l=n?n.position+n.height+i.height:i.height;this.view.scrollTop=o-l}domFocus(){if(!this.state)throw new Error("Cannot focus when state is undefined");this.container.focus()}focusedLast(){return this.state?this.view.getHTMLElement().classList.contains("sticky-scroll-focused"):!1}removeFocus(){this.focusedIndex!==-1&&(this.toggleElementFocus(this.elements[this.focusedIndex],!1),this.focusedIndex=-1)}setFocus(e){if(0>e)throw new Error("addFocus() can not remove focus");if(!this.state&&e>=0)throw new Error("Cannot set focus index when state is undefined");if(this.state&&e>=this.state.count)throw new Error("Cannot set focus index to an index that does not exist");const t=this.focusedIndex;t>=0&&this.toggleElementFocus(this.elements[t],!1),e>=0&&this.toggleElementFocus(this.elements[e],!0),this.focusedIndex=e}toggleElementFocus(e,t){this.toggleElementActiveFocus(e,t&&this.domHasFocus),this.toggleElementPassiveFocus(e,t)}toggleCurrentElementActiveFocus(e){this.focusedIndex!==-1&&this.toggleElementActiveFocus(this.elements[this.focusedIndex],e)}toggleElementActiveFocus(e,t){e.classList.toggle("focused",t)}toggleElementPassiveFocus(e,t){e.classList.toggle("passive-focused",t)}toggleStickyScrollFocused(e){this.view.getHTMLElement().classList.toggle("sticky-scroll-focused",e)}onFocus(){if(!this.state||this.elements.length===0)throw new Error("Cannot focus when state is undefined or elements are empty");this.domHasFocus=!0,this.toggleStickyScrollFocused(!0),this.toggleCurrentElementActiveFocus(!0),this.focusedIndex===-1&&this.setFocus(0)}onBlur(){this.domHasFocus=!1,this.toggleCurrentElementActiveFocus(!1)}dispose(){this.toggleStickyScrollFocused(!1),this._onDidChangeHasFocus.fire(!1),super.dispose()}}function lk(s){let e=QZ.Unknown;return j9(s.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?e=QZ.Twistie:j9(s.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?e=QZ.Element:j9(s.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(e=QZ.Filter),{browserEvent:s.browserEvent,element:s.element?s.element.element:null,target:e}}function iHe(s){const e=CM(s.browserEvent.target);return{element:s.element?s.element.element:null,browserEvent:s.browserEvent,anchor:s.anchor,isStickyScroll:e}}function uD(s,e){e(s),s.children.forEach(t=>uD(t,e))}class x3{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(e,t){this.getFirstViewElementWithTrait=e,this.identityProvider=t,this.nodes=[],this._onDidChange=new re,this.onDidChange=this._onDidChange.event}set(e,t){!(t!=null&&t.__forceEvent)&&Fs(this.nodes,e)||this._set(e,!1,t)}_set(e,t,i){if(this.nodes=[...e],this.elements=void 0,this._nodeSet=void 0,!t){const n=this;this._onDidChange.fire({get elements(){return n.get()},browserEvent:i})}}get(){return this.elements||(this.elements=this.nodes.map(e=>e.element)),[...this.elements]}getNodes(){return this.nodes}has(e){return this.nodeSet.has(e)}onDidModelSplice({insertedNodes:e,deletedNodes:t}){if(!this.identityProvider){const a=this.createNodeSet(),d=c=>a.delete(c);t.forEach(c=>uD(c,d)),this.set([...a.values()]);return}const i=new Set,n=a=>i.add(this.identityProvider.getId(a.element).toString());t.forEach(a=>uD(a,n));const o=new Map,l=a=>o.set(this.identityProvider.getId(a.element).toString(),a);e.forEach(a=>uD(a,l));const r=[];for(const a of this.nodes){const d=this.identityProvider.getId(a.element).toString();if(!i.has(d))r.push(a);else{const h=o.get(d);h&&h.visible&&r.push(h)}}if(this.nodes.length>0&&r.length===0){const a=this.getFirstViewElementWithTrait();a&&r.push(a)}this._set(r,!0)}createNodeSet(){const e=new Set;for(const t of this.nodes)e.add(t);return e}}class nHe extends wbe{constructor(e,t,i){super(e),this.tree=t,this.stickyScrollProvider=i}onViewPointer(e){if(Vbe(e.browserEvent.target)||EU(e.browserEvent.target)||jy(e.browserEvent.target)||e.browserEvent.isHandledByList)return;const t=e.element;if(!t)return super.onViewPointer(e);if(this.isSelectionRangeChangeEvent(e)||this.isSelectionSingleChangeEvent(e))return super.onViewPointer(e);const i=e.browserEvent.target,n=i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&e.browserEvent.offsetX<16,o=gC(e.browserEvent.target);let l=!1;if(o?l=!0:typeof this.tree.expandOnlyOnTwistieClick=="function"?l=this.tree.expandOnlyOnTwistieClick(t.element):l=!!this.tree.expandOnlyOnTwistieClick,o)this.handleStickyScrollMouseEvent(e,t);else{if(l&&!n&&e.browserEvent.detail!==2)return super.onViewPointer(e);if(!this.tree.expandOnDoubleClick&&e.browserEvent.detail===2)return super.onViewPointer(e)}if(t.collapsible&&(!o||n)){const r=this.tree.getNodeLocation(t),a=e.browserEvent.altKey;if(this.tree.setFocus([r]),this.tree.toggleCollapsed(r,a),n){e.browserEvent.isHandledByList=!0;return}}o||super.onViewPointer(e)}handleStickyScrollMouseEvent(e,t){if(a3e(e.browserEvent.target)||d3e(e.browserEvent.target))return;const i=this.stickyScrollProvider();if(!i)throw new Error("Sticky scroll controller not found");const n=this.list.indexOf(t),o=this.list.getElementTop(n),l=i.nodePositionTopBelowWidget(t);this.tree.scrollTop=o-l,this.list.domFocus(),this.list.setFocus([n]),this.list.setSelection([n])}onDoubleClick(e){e.browserEvent.target.classList.contains("monaco-tl-twistie")||!this.tree.expandOnDoubleClick||e.browserEvent.isHandledByList||super.onDoubleClick(e)}onMouseDown(e){const t=e.browserEvent.target;if(!CM(t)&&!gC(t)){super.onMouseDown(e);return}}onContextMenu(e){const t=e.browserEvent.target;if(!CM(t)&&!gC(t)){super.onContextMenu(e);return}}}class sHe extends Uc{constructor(e,t,i,n,o,l,r,a){super(e,t,i,n,a),this.focusTrait=o,this.selectionTrait=l,this.anchorTrait=r}createMouseController(e){return new nHe(this,e.tree,e.stickyScrollProvider)}splice(e,t,i=[]){if(super.splice(e,t,i),i.length===0)return;const n=[],o=[];let l;i.forEach((r,a)=>{this.focusTrait.has(r)&&n.push(e+a),this.selectionTrait.has(r)&&o.push(e+a),this.anchorTrait.has(r)&&(l=e+a)}),n.length>0&&super.setFocus(U0([...super.getFocus(),...n])),o.length>0&&super.setSelection(U0([...super.getSelection(),...o])),typeof l=="number"&&super.setAnchor(l)}setFocus(e,t,i=!1){super.setFocus(e,t),i||this.focusTrait.set(e.map(n=>this.element(n)),t)}setSelection(e,t,i=!1){super.setSelection(e,t),i||this.selectionTrait.set(e.map(n=>this.element(n)),t)}setAnchor(e,t=!1){super.setAnchor(e),t||(typeof e>"u"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(e)]))}}class QUe{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return ve.filter(ve.map(this.view.onMouseDblClick,lk),e=>e.target!==QZ.Filter)}get onMouseOver(){return ve.map(this.view.onMouseOver,lk)}get onMouseOut(){return ve.map(this.view.onMouseOut,lk)}get onContextMenu(){var e;return ve.any(ve.filter(ve.map(this.view.onContextMenu,iHe),t=>!t.isStickyScroll),((e=this.stickyScrollController)==null?void 0:e.onContextMenu)??ve.None)}get onPointer(){return ve.map(this.view.onPointer,lk)}get onKeyDown(){return this.view.onKeyDown}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return ve.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var e;return((e=this.findController)==null?void 0:e.mode)??s0.Highlight}set findMode(e){this.findController&&(this.findController.mode=e)}get findMatchType(){var e;return((e=this.findController)==null?void 0:e.matchType)??MA.Fuzzy}set findMatchType(e){this.findController&&(this.findController.matchType=e)}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>"u"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>"u"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(e,t,i,n,o={}){this._user=e,this._options=o,this.eventBufferer=new $T,this.onDidChangeFindOpenState=ve.None,this.onDidChangeStickyScrollFocused=ve.None,this.disposables=new Ze,this._onWillRefilter=new re,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new re,this.treeDelegate=new Kee(i);const l=new Gse,r=new Gse,a=this.disposables.add(new jje(r.event)),d=new z$;this.renderers=n.map(p=>new RK(p,()=>this.model,l.event,a,d,o));for(const p of this.renderers)this.disposables.add(p);let c;o.keyboardNavigationLabelProvider&&(c=new Hje(this,o.keyboardNavigationLabelProvider,o.filter),o={...o,filter:c},this.disposables.add(c)),this.focus=new x3(()=>this.view.getFocusedElements()[0],o.identityProvider),this.selection=new x3(()=>this.view.getSelectedElements()[0],o.identityProvider),this.anchor=new x3(()=>this.view.getAnchorElement(),o.identityProvider),this.view=new sHe(e,t,this.treeDelegate,this.renderers,this.focus,this.selection,this.anchor,{...Oje(()=>this.model,o),tree:this,stickyScrollProvider:()=>this.stickyScrollController}),this.model=this.createModel(e,this.view,o),l.input=this.model.onDidChangeCollapseState;const h=ve.forEach(this.model.onDidSplice,p=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice(p),this.selection.onDidModelSplice(p)})},this.disposables);h(()=>null,null,this.disposables);const u=this.disposables.add(new re),m=this.disposables.add(new Hc(0));if(this.disposables.add(ve.any(h,this.focus.onDidChange,this.selection.onDidChange)(()=>{m.trigger(()=>{const p=new Set;for(const g of this.focus.getNodes())p.add(g);for(const g of this.selection.getNodes())p.add(g);u.fire([...p.values()])})})),r.input=u.event,o.keyboardSupport!==!1){const p=ve.chain(this.view.onKeyDown,g=>g.filter(b=>!EU(b.target)).map(b=>new Jn(b)));ve.chain(p,g=>g.filter(b=>b.keyCode===15))(this.onLeftArrow,this,this.disposables),ve.chain(p,g=>g.filter(b=>b.keyCode===17))(this.onRightArrow,this,this.disposables),ve.chain(p,g=>g.filter(b=>b.keyCode===10))(this.onSpace,this,this.disposables)}if((o.findWidgetEnabled??!0)&&o.keyboardNavigationLabelProvider&&o.contextViewProvider){const p=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new Pje(this,this.model,this.view,c,o.contextViewProvider,p),this.focusNavigationFilter=g=>this.findController.shouldAllowFocus(g),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.disposables.add(this.findController),this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=ve.None,this.onDidChangeFindMatchType=ve.None;o.enableStickyScroll&&(this.stickyScrollController=new Bre(this,this.model,this.view,this.renderers,this.treeDelegate,o),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus),this.styleElement=cc(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===bV.Always)}updateOptions(e={}){var t;this._options={...this._options,...e};for(const i of this.renderers)i.updateOptions(e);this.view.updateOptions(this._options),(t=this.findController)==null||t.updateOptions(e),this.updateStickyScroll(e),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===bV.Always)}get options(){return this._options}updateStickyScroll(e){var t;!this.stickyScrollController&&this._options.enableStickyScroll?(this.stickyScrollController=new Bre(this,this.model,this.view,this.renderers,this.treeDelegate,this._options),this.onDidChangeStickyScrollFocused=this.stickyScrollController.onDidChangeHasFocus):this.stickyScrollController&&!this._options.enableStickyScroll&&(this.onDidChangeStickyScrollFocused=ve.None,this.stickyScrollController.dispose(),this.stickyScrollController=void 0),(t=this.stickyScrollController)==null||t.updateOptions(e)}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(e){this.view.scrollTop=e}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get ariaLabel(){return this.view.ariaLabel}set ariaLabel(e){this.view.ariaLabel=e}domFocus(){var e;(e=this.stickyScrollController)!=null&&e.focusedLast()?this.stickyScrollController.domFocus():this.view.domFocus()}layout(e,t){var i;this.view.layout(e,t),XU(t)&&((i=this.findController)==null||i.layout(t))}style(e){const t=`.${this.view.domId}`,i=[];e.treeIndentGuidesStroke&&(i.push(`.monaco-list${t}:hover .monaco-tl-indent > .indent-guide, .monaco-list${t}.always .monaco-tl-indent > .indent-guide { border-color: ${e.treeInactiveIndentGuidesStroke}; }`),i.push(`.monaco-list${t} .monaco-tl-indent > .indent-guide.active { border-color: ${e.treeIndentGuidesStroke}; }`));const n=e.treeStickyScrollBackground??e.listBackground;n&&(i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container { background-color: ${n}; }`),i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row { background-color: ${n}; }`)),e.treeStickyScrollBorder&&i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container { border-bottom: 1px solid ${e.treeStickyScrollBorder}; }`),e.treeStickyScrollShadow&&i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow { box-shadow: ${e.treeStickyScrollShadow} 0 6px 6px -6px inset; height: 3px; }`),e.listFocusForeground&&(i.push(`.monaco-list${t}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`),i.push(`.monaco-list${t}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { color: inherit; }`));const o=d0(e.listFocusAndSelectionOutline,d0(e.listSelectionOutline,e.listFocusOutline??""));o&&(i.push(`.monaco-list${t}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused.selected { outline: 1px solid ${o}; outline-offset: -1px;}`),i.push(`.monaco-list${t}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused.selected { outline: inherit;}`)),e.listFocusOutline&&(i.push(`.monaco-list${t}.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }`),i.push(`.monaco-list${t}:not(.sticky-scroll-focused) .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.focused { outline: inherit; }`),i.push(`.monaco-workbench.context-menu-visible .monaco-list${t}.last-focused.sticky-scroll-focused .monaco-scrollable-element .monaco-tree-sticky-container .monaco-list-row.passive-focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }`),i.push(`.monaco-workbench.context-menu-visible .monaco-list${t}.last-focused.sticky-scroll-focused .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`),i.push(`.monaco-workbench.context-menu-visible .monaco-list${t}.last-focused:not(.sticky-scroll-focused) .monaco-tree-sticky-container .monaco-list-rows .monaco-list-row.focused { outline: inherit; }`)),this.styleElement.textContent=i.join(`
- `),this.view.style(e)}getParentElement(e){const t=this.model.getParentNodeLocation(e);return this.model.getNode(t).element}getFirstElementChild(e){return this.model.getFirstElementChild(e)}getNode(e){return this.model.getNode(e)}getNodeLocation(e){return this.model.getNodeLocation(e)}collapse(e,t=!1){return this.model.setCollapsed(e,!0,t)}expand(e,t=!1){return this.model.setCollapsed(e,!1,t)}toggleCollapsed(e,t=!1){return this.model.setCollapsed(e,void 0,t)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(e,t){this.eventBufferer.bufferEvents(()=>{const i=e.map(o=>this.model.getNode(o));this.selection.set(i,t);const n=e.map(o=>this.model.getListIndex(o)).filter(o=>o>-1);this.view.setSelection(n,t,!0)})}getSelection(){return this.selection.get()}setFocus(e,t){this.eventBufferer.bufferEvents(()=>{const i=e.map(o=>this.model.getNode(o));this.focus.set(i,t);const n=e.map(o=>this.model.getListIndex(o)).filter(o=>o>-1);this.view.setFocus(n,t,!0)})}focusNext(e=1,t=!1,i,n=Mg(i)&&i.altKey?void 0:this.focusNavigationFilter){this.view.focusNext(e,t,i,n)}focusPrevious(e=1,t=!1,i,n=Mg(i)&&i.altKey?void 0:this.focusNavigationFilter){this.view.focusPrevious(e,t,i,n)}focusNextPage(e,t=Mg(e)&&e.altKey?void 0:this.focusNavigationFilter){return this.view.focusNextPage(e,t)}focusPreviousPage(e,t=Mg(e)&&e.altKey?void 0:this.focusNavigationFilter){return this.view.focusPreviousPage(e,t,()=>{var i;return((i=this.stickyScrollController)==null?void 0:i.height)??0})}focusLast(e,t=Mg(e)&&e.altKey?void 0:this.focusNavigationFilter){this.view.focusLast(e,t)}focusFirst(e,t=Mg(e)&&e.altKey?void 0:this.focusNavigationFilter){this.view.focusFirst(e,t)}getFocus(){return this.focus.get()}reveal(e,t){this.model.expandTo(e);const i=this.model.getListIndex(e);if(i!==-1)if(!this.stickyScrollController)this.view.reveal(i,t);else{const n=this.stickyScrollController.nodePositionTopBelowWidget(this.getNode(e));this.view.reveal(i,t,n)}}onLeftArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!0)){const l=this.model.getParentNodeLocation(n);if(!l)return;const r=this.model.getListIndex(l);this.view.reveal(r),this.view.setFocus([r])}}onRightArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!1)){if(!i.children.some(a=>a.visible))return;const[l]=this.view.getFocus(),r=l+1;this.view.reveal(r),this.view.setFocus([r])}}onSpace(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],n=this.model.getNodeLocation(i),o=e.browserEvent.altKey;this.model.setCollapsed(n,void 0,o)}dispose(){var e;Tn(this.disposables),(e=this.stickyScrollController)==null||e.dispose(),this.view.dispose()}}class qee{constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new Yje(e,t,null,i),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,i.sorter&&(this.sorter={compare(n,o){return i.sorter.compare(n.element,o.element)}}),this.identityProvider=i.identityProvider}setChildren(e,t=Ti.empty(),i={}){const n=this.getElementLocation(e);this._setChildren(n,this.preserveCollapseState(t),i)}_setChildren(e,t=Ti.empty(),i){const n=new Set,o=new Set,l=a=>{var c;if(a.element===null)return;const d=a;if(n.add(d.element),this.nodes.set(d.element,d),this.identityProvider){const h=this.identityProvider.getId(d.element).toString();o.add(h),this.nodesByIdentity.set(h,d)}(c=i.onDidCreateNode)==null||c.call(i,d)},r=a=>{var c;if(a.element===null)return;const d=a;if(n.has(d.element)||this.nodes.delete(d.element),this.identityProvider){const h=this.identityProvider.getId(d.element).toString();o.has(h)||this.nodesByIdentity.delete(h)}(c=i.onDidDeleteNode)==null||c.call(i,d)};this.model.splice([...e,0],Number.MAX_VALUE,t,{...i,onDidCreateNode:l,onDidDeleteNode:r})}preserveCollapseState(e=Ti.empty()){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),Ti.map(e,t=>{let i=this.nodes.get(t.element);if(!i&&this.identityProvider){const l=this.identityProvider.getId(t.element).toString();i=this.nodesByIdentity.get(l)}if(!i){let l;return typeof t.collapsed>"u"?l=void 0:t.collapsed===zd.Collapsed||t.collapsed===zd.PreserveOrCollapsed?l=!0:t.collapsed===zd.Expanded||t.collapsed===zd.PreserveOrExpanded?l=!1:l=!!t.collapsed,{...t,children:this.preserveCollapseState(t.children),collapsed:l}}const n=typeof t.collapsible=="boolean"?t.collapsible:i.collapsible;let o;return typeof t.collapsed>"u"||t.collapsed===zd.PreserveOrCollapsed||t.collapsed===zd.PreserveOrExpanded?o=i.collapsed:t.collapsed===zd.Collapsed?o=!0:t.collapsed===zd.Expanded?o=!1:o=!!t.collapsed,{...t,collapsible:n,collapsed:o,children:this.preserveCollapseState(t.children)}})}rerender(e){const t=this.getElementLocation(e);this.model.rerender(t)}getFirstElementChild(e=null){const t=this.getElementLocation(e);return this.model.getFirstElementChild(t)}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getElementLocation(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getElementLocation(e);return this.model.getListRenderCount(t)}isCollapsible(e){const t=this.getElementLocation(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getElementLocation(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getElementLocation(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getElementLocation(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getElementLocation(e);this.model.expandTo(t)}refilter(){this.model.refilter()}getNode(e=null){if(e===null)return this.model.getNode(this.model.rootRef);const t=this.nodes.get(e);if(!t)throw new ec(this.user,`Tree element not found: ${e}`);return t}getNodeLocation(e){return e.element}getParentNodeLocation(e){if(e===null)throw new ec(this.user,"Invalid getParentNodeLocation call");const t=this.nodes.get(e);if(!t)throw new ec(this.user,`Tree element not found: ${e}`);const i=this.model.getNodeLocation(t),n=this.model.getParentNodeLocation(i);return this.model.getNode(n).element}getElementLocation(e){if(e===null)return[];const t=this.nodes.get(e);if(!t)throw new ec(this.user,`Tree element not found: ${e}`);return this.model.getNodeLocation(t)}}function mD(s){const e=[s.element],t=s.incompressible||!1;return{element:{elements:e,incompressible:t},children:Ti.map(Ti.from(s.children),mD),collapsible:s.collapsible,collapsed:s.collapsed}}function pD(s){const e=[s.element],t=s.incompressible||!1;let i,n;for(;[n,i]=Ti.consume(Ti.from(s.children),2),!(n.length!==1||n[0].incompressible);)s=n[0],e.push(s.element);return{element:{elements:e,incompressible:t},children:Ti.map(Ti.concat(n,i),pD),collapsible:s.collapsible,collapsed:s.collapsed}}function SK(s,e=0){let t;return e<s.element.elements.length-1?t=[SK(s,e+1)]:t=Ti.map(Ti.from(s.children),i=>SK(i,0)),e===0&&s.element.incompressible?{element:s.element.elements[e],children:t,incompressible:!0,collapsible:s.collapsible,collapsed:s.collapsed}:{element:s.element.elements[e],children:t,collapsible:s.collapsible,collapsed:s.collapsed}}function Lre(s){return SK(s,0)}function yUe(s,e,t){return s.element===e?{...s,children:t}:{...s,children:Ti.map(Ti.from(s.children),i=>yUe(i,e,t))}}const oHe=s=>({getId(e){return e.elements.map(t=>s.getId(t).toString()).join("\0")}});class lHe{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.model=new qee(e,t,i),this.enabled=typeof i.compressionEnabled>"u"?!0:i.compressionEnabled,this.identityProvider=i.identityProvider}setChildren(e,t=Ti.empty(),i){const n=i.diffIdentityProvider&&oHe(i.diffIdentityProvider);if(e===null){const p=Ti.map(t,this.enabled?pD:mD);this._setChildren(null,p,{diffIdentityProvider:n,diffDepth:1/0});return}const o=this.nodes.get(e);if(!o)throw new ec(this.user,"Unknown compressed tree node");const l=this.model.getNode(o),r=this.model.getParentNodeLocation(o),a=this.model.getNode(r),d=Lre(l),c=yUe(d,e,t),h=(this.enabled?pD:mD)(c),u=i.diffIdentityProvider?(p,g)=>i.diffIdentityProvider.getId(p)===i.diffIdentityProvider.getId(g):void 0;if(Fs(h.element.elements,l.element.elements,u)){this._setChildren(o,h.children||Ti.empty(),{diffIdentityProvider:n,diffDepth:1});return}const m=a.children.map(p=>p===l?h:p);this._setChildren(a.element,m,{diffIdentityProvider:n,diffDepth:l.depth-a.depth})}isCompressionEnabled(){return this.enabled}setCompressionEnabled(e){if(e===this.enabled)return;this.enabled=e;const i=this.model.getNode().children,n=Ti.map(i,Lre),o=Ti.map(n,e?pD:mD);this._setChildren(null,o,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(e,t,i){const n=new Set,o=r=>{for(const a of r.element.elements)n.add(a),this.nodes.set(a,r.element)},l=r=>{for(const a of r.element.elements)n.has(a)||this.nodes.delete(a)};this.model.setChildren(e,t,{...i,onDidCreateNode:o,onDidDeleteNode:l})}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getCompressedNode(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getCompressedNode(e);return this.model.getListRenderCount(t)}getNode(e){if(typeof e>"u")return this.model.getNode();const t=this.getCompressedNode(e);return this.model.getNode(t)}getNodeLocation(e){const t=this.model.getNodeLocation(e);return t===null?null:t.elements[t.elements.length-1]}getParentNodeLocation(e){const t=this.getCompressedNode(e),i=this.model.getParentNodeLocation(t);return i===null?null:i.elements[i.elements.length-1]}getFirstElementChild(e){const t=this.getCompressedNode(e);return this.model.getFirstElementChild(t)}isCollapsible(e){const t=this.getCompressedNode(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getCompressedNode(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getCompressedNode(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getCompressedNode(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getCompressedNode(e);this.model.expandTo(t)}rerender(e){const t=this.getCompressedNode(e);this.model.rerender(t)}refilter(){this.model.refilter()}getCompressedNode(e){if(e===null)return null;const t=this.nodes.get(e);if(!t)throw new ec(this.user,`Tree element not found: ${e}`);return t}}const rHe=s=>s[s.length-1];class $ee{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(e=>new $ee(this.unwrapper,e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e,t){this.unwrapper=e,this.node=t}}function aHe(s,e){return{splice(t,i,n){e.splice(t,i,n.map(o=>s.map(o)))},updateElementHeight(t,i){e.updateElementHeight(t,i)}}}function dHe(s,e){return{...e,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(s(t))}},sorter:e.sorter&&{compare(t,i){return e.sorter.compare(t.elements[0],i.elements[0])}},filter:e.filter&&{filter(t,i){return e.filter.filter(s(t),i)}}}}class cHe{get onDidSplice(){return ve.map(this.model.onDidSplice,({insertedNodes:e,deletedNodes:t})=>({insertedNodes:e.map(i=>this.nodeMapper.map(i)),deletedNodes:t.map(i=>this.nodeMapper.map(i))}))}get onDidChangeCollapseState(){return ve.map(this.model.onDidChangeCollapseState,({node:e,deep:t})=>({node:this.nodeMapper.map(e),deep:t}))}get onDidChangeRenderNodeCount(){return ve.map(this.model.onDidChangeRenderNodeCount,e=>this.nodeMapper.map(e))}constructor(e,t,i={}){this.rootRef=null,this.elementMapper=i.elementMapper||rHe;const n=o=>this.elementMapper(o.elements);this.nodeMapper=new Hee(o=>new $ee(n,o)),this.model=new lHe(e,aHe(this.nodeMapper,t),dHe(n,i))}setChildren(e,t=Ti.empty(),i={}){this.model.setChildren(e,t,i)}isCompressionEnabled(){return this.model.isCompressionEnabled()}setCompressionEnabled(e){this.model.setCompressionEnabled(e)}has(e){return this.model.has(e)}getListIndex(e){return this.model.getListIndex(e)}getListRenderCount(e){return this.model.getListRenderCount(e)}getNode(e){return this.nodeMapper.map(this.model.getNode(e))}getNodeLocation(e){return e.element}getParentNodeLocation(e){return this.model.getParentNodeLocation(e)}getFirstElementChild(e){const t=this.model.getFirstElementChild(e);return t===null||typeof t>"u"?t:this.elementMapper(t.elements)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}setCollapsed(e,t,i){return this.model.setCollapsed(e,t,i)}expandTo(e){return this.model.expandTo(e)}rerender(e){return this.model.rerender(e)}refilter(){return this.model.refilter()}getCompressedTreeNode(e=null){return this.model.getNode(e)}}var hHe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o};class ete extends QUe{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(e,t,i,n,o={}){super(e,t,i,n,o),this.user=e}setChildren(e,t=Ti.empty(),i){this.model.setChildren(e,t,i)}rerender(e){if(e===void 0){this.view.rerender();return}this.model.rerender(e)}hasElement(e){return this.model.has(e)}createModel(e,t,i){return new qee(e,t,i)}}class CUe{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(e,t,i){this._compressedTreeNodeProvider=e,this.stickyScrollDelegate=t,this.renderer=i,this.templateId=i.templateId,i.onDidChangeTwistieState&&(this.onDidChangeTwistieState=i.onDidChangeTwistieState)}renderTemplate(e){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){let o=this.stickyScrollDelegate.getCompressedNode(e);o||(o=this.compressedTreeNodeProvider.getCompressedTreeNode(e.element)),o.element.elements.length===1?(i.compressedTreeNode=void 0,this.renderer.renderElement(e,t,i.data,n)):(i.compressedTreeNode=o,this.renderer.renderCompressedElements(o,t,i.data,n))}disposeElement(e,t,i,n){var o,l,r,a;i.compressedTreeNode?(l=(o=this.renderer).disposeCompressedElements)==null||l.call(o,i.compressedTreeNode,t,i.data,n):(a=(r=this.renderer).disposeElement)==null||a.call(r,e,t,i.data,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.data)}renderTwistie(e,t){return this.renderer.renderTwistie?this.renderer.renderTwistie(e,t):!1}}hHe([so],CUe.prototype,"compressedTreeNodeProvider",null);class uHe{constructor(e){this.modelProvider=e,this.compressedStickyNodes=new Map}getCompressedNode(e){return this.compressedStickyNodes.get(e)}constrainStickyScrollNodes(e,t,i){if(this.compressedStickyNodes.clear(),e.length===0)return[];for(let n=0;n<e.length;n++){const o=e[n],l=o.position+o.height;if(n+1<e.length&&l+e[n+1].height>i||n>=t-1&&t<e.length){const a=e.slice(0,n),d=e.slice(n),c=this.compressStickyNodes(d);return[...a,c]}}return e}compressStickyNodes(e){if(e.length===0)throw new Error("Can't compress empty sticky nodes");const t=this.modelProvider();if(!t.isCompressionEnabled())return e[0];const i=[];for(let d=0;d<e.length;d++){const c=e[d],h=t.getCompressedTreeNode(c.node.element);if(h.element){if(d!==0&&h.element.incompressible)break;i.push(...h.element.elements)}}if(i.length<2)return e[0];const n=e[e.length-1],o={elements:i,incompressible:!1},l={...n.node,children:[],element:o},r=new Proxy(e[0].node,{}),a={node:r,startIndex:e[0].startIndex,endIndex:n.endIndex,position:e[0].position,height:e[0].height};return this.compressedStickyNodes.set(r,l),a}}function mHe(s,e){return e&&{...e,keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel(t){let i;try{i=s().getCompressedTreeNode(t)}catch{return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t)}return i.element.elements.length===1?e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t):e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(i.element.elements)}}}}class wUe extends ete{constructor(e,t,i,n,o={}){const l=()=>this,r=new uHe(()=>this.model),a=n.map(d=>new CUe(l,r,d));super(e,t,i,a,{...mHe(l,o),stickyScrollDelegate:r})}setChildren(e,t=Ti.empty(),i){this.model.setChildren(e,t,i)}createModel(e,t,i){return new cHe(e,t,i)}updateOptions(e={}){super.updateOptions(e),typeof e.compressionEnabled<"u"&&this.model.setCompressionEnabled(e.compressionEnabled)}getCompressedTreeNode(e=null){return this.model.getCompressedTreeNode(e)}}function J3(s){return{...s,children:[],refreshPromise:void 0,stale:!0,slow:!1,forceExpanded:!1}}function WK(s,e){return e.parent?e.parent===s?!0:WK(s,e.parent):!1}function pHe(s,e){return s===e||WK(s,e)||WK(e,s)}class tte{get element(){return this.node.element.element}get children(){return this.node.children.map(e=>new tte(e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class gHe{constructor(e,t,i){this.renderer=e,this.nodeMapper=t,this.onDidChangeTwistieState=i,this.renderedNodes=new Map,this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(t.classList.add(...Qt.asClassNameArray(ke.treeItemLoading)),!0):(t.classList.remove(...Qt.asClassNameArray(ke.treeItemLoading)),!1)}disposeElement(e,t,i,n){var o,l;(l=(o=this.renderer).disposeElement)==null||l.call(o,this.nodeMapper.map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear()}}function kre(s){return{browserEvent:s.browserEvent,elements:s.elements.map(e=>e.element)}}function Ire(s){return{browserEvent:s.browserEvent,element:s.element&&s.element.element,target:s.target}}class bHe extends fB{constructor(e){super(e.elements.map(t=>t.element)),this.data=e}}function X3(s){return s instanceof fB?new bHe(s):s}class UHe{constructor(e){this.dnd=e}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map(i=>i.element),t)}onDragStart(e,t){var i,n;(n=(i=this.dnd).onDragStart)==null||n.call(i,X3(e),t)}onDragOver(e,t,i,n,o,l=!0){return this.dnd.onDragOver(X3(e),t&&t.element,i,n,o)}drop(e,t,i,n,o){this.dnd.drop(X3(e),t&&t.element,i,n,o)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)==null||i.call(t,e)}dispose(){this.dnd.dispose()}}function MUe(s){return s&&{...s,collapseByDefault:!0,identityProvider:s.identityProvider&&{getId(e){return s.identityProvider.getId(e.element)}},dnd:s.dnd&&new UHe(s.dnd),multipleSelectionController:s.multipleSelectionController&&{isSelectionSingleChangeEvent(e){return s.multipleSelectionController.isSelectionSingleChangeEvent({...e,element:e.element})},isSelectionRangeChangeEvent(e){return s.multipleSelectionController.isSelectionRangeChangeEvent({...e,element:e.element})}},accessibilityProvider:s.accessibilityProvider&&{...s.accessibilityProvider,getPosInSet:void 0,getSetSize:void 0,getRole:s.accessibilityProvider.getRole?e=>s.accessibilityProvider.getRole(e.element):()=>"treeitem",isChecked:s.accessibilityProvider.isChecked?e=>{var t;return!!((t=s.accessibilityProvider)!=null&&t.isChecked(e.element))}:void 0,getAriaLabel(e){return s.accessibilityProvider.getAriaLabel(e.element)},getWidgetAriaLabel(){return s.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:s.accessibilityProvider.getWidgetRole?()=>s.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:s.accessibilityProvider.getAriaLevel&&(e=>s.accessibilityProvider.getAriaLevel(e.element)),getActiveDescendantId:s.accessibilityProvider.getActiveDescendantId&&(e=>s.accessibilityProvider.getActiveDescendantId(e.element))},filter:s.filter&&{filter(e,t){return s.filter.filter(e.element,t)}},keyboardNavigationLabelProvider:s.keyboardNavigationLabelProvider&&{...s.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(e){return s.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)}},sorter:void 0,expandOnlyOnTwistieClick:typeof s.expandOnlyOnTwistieClick>"u"?void 0:typeof s.expandOnlyOnTwistieClick!="function"?s.expandOnlyOnTwistieClick:e=>s.expandOnlyOnTwistieClick(e.element),defaultFindVisibility:e=>e.hasChildren&&e.stale?1:typeof s.defaultFindVisibility=="number"?s.defaultFindVisibility:typeof s.defaultFindVisibility>"u"?2:s.defaultFindVisibility(e.element)}}function VK(s,e){e(s),s.children.forEach(t=>VK(t,e))}class TUe{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return ve.map(this.tree.onDidChangeFocus,kre)}get onDidChangeSelection(){return ve.map(this.tree.onDidChangeSelection,kre)}get onMouseDblClick(){return ve.map(this.tree.onMouseDblClick,Ire)}get onPointer(){return ve.map(this.tree.onPointer,Ire)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeFindOpenState(){return this.tree.onDidChangeFindOpenState}get onDidChangeStickyScrollFocused(){return this.tree.onDidChangeStickyScrollFocused}get onDidDispose(){return this.tree.onDidDispose}constructor(e,t,i,n,o,l={}){this.user=e,this.dataSource=o,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new re,this._onDidChangeNodeSlowState=new re,this.nodeMapper=new Hee(r=>new tte(r)),this.disposables=new Ze,this.identityProvider=l.identityProvider,this.autoExpandSingleChildren=typeof l.autoExpandSingleChildren>"u"?!1:l.autoExpandSingleChildren,this.sorter=l.sorter,this.getDefaultCollapseState=r=>l.collapseByDefault?l.collapseByDefault(r)?zd.PreserveOrCollapsed:zd.PreserveOrExpanded:void 0,this.tree=this.createTree(e,t,i,n,l),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.onDidChangeFindMatchType=this.tree.onDidChangeFindMatchType,this.root=J3({element:void 0,parent:null,hasChildren:!0,defaultCollapseState:void 0}),this.identityProvider&&(this.root={...this.root,id:null}),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}createTree(e,t,i,n,o){const l=new Kee(i),r=n.map(d=>new gHe(d,this.nodeMapper,this._onDidChangeNodeSlowState.event)),a=MUe(o)||{};return new ete(e,t,l,r,a)}updateOptions(e={}){this.tree.updateOptions(e)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(e){this.tree.scrollTop=e}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(e,t){this.tree.layout(e,t)}style(e){this.tree.style(e)}getInput(){return this.root.element}async setInput(e,t){this.refreshPromises.forEach(n=>n.cancel()),this.refreshPromises.clear(),this.root.element=e;const i=t&&{viewState:t,focus:[],selection:[]};await this._updateChildren(e,!0,!1,i),i&&(this.tree.setFocus(i.focus),this.tree.setSelection(i.selection)),t&&typeof t.scrollTop=="number"&&(this.scrollTop=t.scrollTop)}async _updateChildren(e=this.root.element,t=!0,i=!1,n,o){if(typeof this.root.element>"u")throw new ec(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await ve.toPromise(this._onDidRender.event));const l=this.getDataNode(e);if(await this.refreshAndRenderNode(l,t,n,o),i)try{this.tree.rerender(l)}catch{}}rerender(e){if(e===void 0||e===this.root.element){this.tree.rerender();return}const t=this.getDataNode(e);this.tree.rerender(t)}getNode(e=this.root.element){const t=this.getDataNode(e),i=this.tree.getNode(t===this.root?null:t);return this.nodeMapper.map(i)}collapse(e,t=!1){const i=this.getDataNode(e);return this.tree.collapse(i===this.root?null:i,t)}async expand(e,t=!1){if(typeof this.root.element>"u")throw new ec(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await ve.toPromise(this._onDidRender.event));const i=this.getDataNode(e);if(this.tree.hasElement(i)&&!this.tree.isCollapsible(i)||(i.refreshPromise&&(await this.root.refreshPromise,await ve.toPromise(this._onDidRender.event)),i!==this.root&&!i.refreshPromise&&!this.tree.isCollapsed(i)))return!1;const n=this.tree.expand(i===this.root?null:i,t);return i.refreshPromise&&(await this.root.refreshPromise,await ve.toPromise(this._onDidRender.event)),n}setSelection(e,t){const i=e.map(n=>this.getDataNode(n));this.tree.setSelection(i,t)}getSelection(){return this.tree.getSelection().map(t=>t.element)}setFocus(e,t){const i=e.map(n=>this.getDataNode(n));this.tree.setFocus(i,t)}getFocus(){return this.tree.getFocus().map(t=>t.element)}reveal(e,t){this.tree.reveal(this.getDataNode(e),t)}getParentElement(e){const t=this.tree.getParentElement(this.getDataNode(e));return t&&t.element}getFirstElementChild(e=this.root.element){const t=this.getDataNode(e),i=this.tree.getFirstElementChild(t===this.root?null:t);return i&&i.element}getDataNode(e){const t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new ec(this.user,`Data tree node not found: ${e}`);return t}async refreshAndRenderNode(e,t,i,n){await this.refreshNode(e,t,i),!this.disposables.isDisposed&&this.render(e,i,n)}async refreshNode(e,t,i){let n;if(this.subTreeRefreshPromises.forEach((o,l)=>{!n&&pHe(l,e)&&(n=o.then(()=>this.refreshNode(e,t,i)))}),n)return n;if(e!==this.root&&this.tree.getNode(e).collapsed){e.hasChildren=!!this.dataSource.hasChildren(e.element),e.stale=!0,this.setChildren(e,[],t,i);return}return this.doRefreshSubTree(e,t,i)}async doRefreshSubTree(e,t,i){let n;e.refreshPromise=new Promise(o=>n=o),this.subTreeRefreshPromises.set(e,e.refreshPromise),e.refreshPromise.finally(()=>{e.refreshPromise=void 0,this.subTreeRefreshPromises.delete(e)});try{const o=await this.doRefreshNode(e,t,i);e.stale=!1,await SH.settled(o.map(l=>this.doRefreshSubTree(l,t,i)))}finally{n()}}async doRefreshNode(e,t,i){e.hasChildren=!!this.dataSource.hasChildren(e.element);let n;if(!e.hasChildren)n=Promise.resolve(Ti.empty());else{const o=this.doGetChildren(e);if(Tse(o))n=Promise.resolve(o);else{const l=A0(800);l.then(()=>{e.slow=!0,this._onDidChangeNodeSlowState.fire(e)},r=>null),n=o.finally(()=>l.cancel())}}try{const o=await n;return this.setChildren(e,o,t,i)}catch(o){if(e!==this.root&&this.tree.hasElement(e)&&this.tree.collapse(e),th(o))return[];throw o}finally{e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e))}}doGetChildren(e){let t=this.refreshPromises.get(e);if(t)return t;const i=this.dataSource.getChildren(e.element);return Tse(i)?this.processChildren(i):(t=Xo(async()=>this.processChildren(await i)),this.refreshPromises.set(e,t),t.finally(()=>{this.refreshPromises.delete(e)}))}_onDidChangeCollapseState({node:e,deep:t}){e.element!==null&&!e.collapsed&&e.element.stale&&(t?this.collapse(e.element.element):this.refreshAndRenderNode(e.element,!1).catch(vt))}setChildren(e,t,i,n){const o=[...t];if(e.children.length===0&&o.length===0)return[];const l=new Map,r=new Map;for(const c of e.children)l.set(c.element,c),this.identityProvider&&r.set(c.id,{node:c,collapsed:this.tree.hasElement(c)&&this.tree.isCollapsed(c)});const a=[],d=o.map(c=>{const h=!!this.dataSource.hasChildren(c);if(!this.identityProvider){const g=J3({element:c,parent:e,hasChildren:h,defaultCollapseState:this.getDefaultCollapseState(c)});return h&&g.defaultCollapseState===zd.PreserveOrExpanded&&a.push(g),g}const u=this.identityProvider.getId(c).toString(),m=r.get(u);if(m){const g=m.node;return l.delete(g.element),this.nodes.delete(g.element),this.nodes.set(c,g),g.element=c,g.hasChildren=h,i?m.collapsed?(g.children.forEach(b=>VK(b,f=>this.nodes.delete(f.element))),g.children.splice(0,g.children.length),g.stale=!0):a.push(g):h&&!m.collapsed&&a.push(g),g}const p=J3({element:c,parent:e,id:u,hasChildren:h,defaultCollapseState:this.getDefaultCollapseState(c)});return n&&n.viewState.focus&&n.viewState.focus.indexOf(u)>-1&&n.focus.push(p),n&&n.viewState.selection&&n.viewState.selection.indexOf(u)>-1&&n.selection.push(p),(n&&n.viewState.expanded&&n.viewState.expanded.indexOf(u)>-1||h&&p.defaultCollapseState===zd.PreserveOrExpanded)&&a.push(p),p});for(const c of l.values())VK(c,h=>this.nodes.delete(h.element));for(const c of d)this.nodes.set(c.element,c);return e.children.splice(0,e.children.length,...d),e!==this.root&&this.autoExpandSingleChildren&&d.length===1&&a.length===0&&(d[0].forceExpanded=!0,a.push(d[0])),a}render(e,t,i){const n=e.children.map(l=>this.asTreeElement(l,t)),o=i&&{...i,diffIdentityProvider:i.diffIdentityProvider&&{getId(l){return i.diffIdentityProvider.getId(l.element)}}};this.tree.setChildren(e===this.root?null:e,n,o),e!==this.root&&this.tree.setCollapsible(e,e.hasChildren),this._onDidRender.fire()}asTreeElement(e,t){if(e.stale)return{element:e,collapsible:e.hasChildren,collapsed:!0};let i;return t&&t.viewState.expanded&&e.id&&t.viewState.expanded.indexOf(e.id)>-1?i=!1:e.forceExpanded?(i=!1,e.forceExpanded=!1):i=e.defaultCollapseState,{element:e,children:e.hasChildren?Ti.map(e.children,n=>this.asTreeElement(n,t)):[],collapsible:e.hasChildren,collapsed:i}}processChildren(e){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),e}dispose(){this.disposables.dispose(),this.tree.dispose()}}class ite{get element(){return{elements:this.node.element.elements.map(e=>e.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(e=>new ite(e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class fHe{constructor(e,t,i,n){this.renderer=e,this.nodeMapper=t,this.compressibleNodeMapperProvider=i,this.onDidChangeTwistieState=n,this.renderedNodes=new Map,this.disposables=[],this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderCompressedElements(e,t,i,n){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(t.classList.add(...Qt.asClassNameArray(ke.treeItemLoading)),!0):(t.classList.remove(...Qt.asClassNameArray(ke.treeItemLoading)),!1)}disposeElement(e,t,i,n){var o,l;(l=(o=this.renderer).disposeElement)==null||l.call(o,this.nodeMapper.map(e),t,i.templateData,n)}disposeCompressedElements(e,t,i,n){var o,l;(l=(o=this.renderer).disposeCompressedElements)==null||l.call(o,this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=Tn(this.disposables)}}function FHe(s){const e=s&&MUe(s);return e&&{...e,keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getCompressedNodeKeyboardNavigationLabel(t){return s.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.map(i=>i.element))}}}}class ZHe extends TUe{constructor(e,t,i,n,o,l,r={}){super(e,t,i,o,l,r),this.compressionDelegate=n,this.compressibleNodeMapper=new Hee(a=>new ite(a)),this.filter=r.filter}createTree(e,t,i,n,o){const l=new Kee(i),r=n.map(d=>new fHe(d,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),a=FHe(o)||{};return new wUe(e,t,l,r,a)}asTreeElement(e,t){return{incompressible:this.compressionDelegate.isIncompressible(e.element),...super.asTreeElement(e,t)}}updateOptions(e={}){this.tree.updateOptions(e)}render(e,t,i){if(!this.identityProvider)return super.render(e,t);const n=m=>this.identityProvider.getId(m).toString(),o=m=>{const p=new Set;for(const g of m){const b=this.tree.getCompressedTreeNode(g===this.root?null:g);if(b.element)for(const f of b.element.elements)p.add(n(f.element))}return p},l=o(this.tree.getSelection()),r=o(this.tree.getFocus());super.render(e,t,i);const a=this.getSelection();let d=!1;const c=this.getFocus();let h=!1;const u=m=>{const p=m.element;if(p)for(let g=0;g<p.elements.length;g++){const b=n(p.elements[g].element),f=p.elements[p.elements.length-1].element;l.has(b)&&a.indexOf(f)===-1&&(a.push(f),d=!0),r.has(b)&&c.indexOf(f)===-1&&(c.push(f),h=!0)}m.children.forEach(u)};u(this.tree.getCompressedTreeNode(e===this.root?null:e)),d&&this.setSelection(a),h&&this.setFocus(c)}processChildren(e){return this.filter&&(e=Ti.filter(e,t=>{const i=this.filter.filter(t,1),n=AHe(i);if(n===2)throw new Error("Recursive tree visibility not supported in async data compressed trees");return n===1})),super.processChildren(e)}}function AHe(s){return typeof s=="boolean"?s?1:0:Pee(s)?kM(s.visibility):kM(s)}class NHe extends QUe{constructor(e,t,i,n,o,l={}){super(e,t,i,n,l),this.user=e,this.dataSource=o,this.identityProvider=l.identityProvider}createModel(e,t,i){return new qee(e,t,i)}}new Ke("isMac",Fi,U("isMac","Whether the operating system is macOS"));new Ke("isLinux",sa,U("isLinux","Whether the operating system is Linux"));const XY=new Ke("isWindows",Gl,U("isWindows","Whether the operating system is Windows")),BUe=new Ke("isWeb",jA,U("isWeb","Whether the platform is a web browser"));new Ke("isMacNative",Fi&&!jA,U("isMacNative","Whether the operating system is macOS on a non-browser platform"));new Ke("isIOS",ju,U("isIOS","Whether the operating system is iOS"));new Ke("isMobile",Vpe,U("isMobile","Whether the platform is a mobile web browser"));new Ke("isDevelopment",!1,!0);new Ke("productQualityType","",U("productQualityType","Quality type of VS Code"));const LUe="inputFocus",kUe=new Ke(LUe,!1,U("inputFocus","Whether keyboard focus is inside an input box"));var I0=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$n=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const sh=Zi("listService");class RHe{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new Ze,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(e){var t,i;e!==this._lastFocusedWidget&&((t=this._lastFocusedWidget)==null||t.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=e,(i=this._lastFocusedWidget)==null||i.getHTMLElement().classList.add("last-focused"))}register(e,t){if(this._hasCreatedStyleController||(this._hasCreatedStyleController=!0,new Mbe(cc(),"").style($A)),this.lists.some(n=>n.widget===e))throw new Error("Cannot register the same widget multiple times");const i={widget:e,extraContextKeys:t};return this.lists.push(i),nY(e.getHTMLElement())&&this.setLastFocusedList(e),_h(e.onDidFocus(()=>this.setLastFocusedList(e)),gt(()=>this.lists.splice(this.lists.indexOf(i),1)),e.onDidDispose(()=>{this.lists=this.lists.filter(n=>n!==i),this._lastFocusedWidget===e&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}const IM=new Ke("listScrollAtBoundary","none");Ne.or(IM.isEqualTo("top"),IM.isEqualTo("both"));Ne.or(IM.isEqualTo("bottom"),IM.isEqualTo("both"));const IUe=new Ke("listFocus",!0),DUe=new Ke("treestickyScrollFocused",!1),YY=new Ke("listSupportsMultiselect",!0),GUe=Ne.and(IUe,Ne.not(LUe),DUe.negate()),nte=new Ke("listHasSelectionOrFocus",!1),ste=new Ke("listDoubleSelection",!1),ote=new Ke("listMultiSelection",!1),zY=new Ke("listSelectionNavigation",!1),SHe=new Ke("listSupportsFind",!0),lte=new Ke("treeElementCanCollapse",!1),WHe=new Ke("treeElementHasParent",!1),rte=new Ke("treeElementCanExpand",!1),VHe=new Ke("treeElementHasChild",!1),QHe=new Ke("treeFindOpen",!1),EUe="listTypeNavigationMode",vUe="listAutomaticKeyboardNavigation";function _Y(s,e){const t=s.createScoped(e.getHTMLElement());return IUe.bindTo(t),t}function OY(s,e){const t=IM.bindTo(s),i=()=>{const n=e.scrollTop===0,o=e.scrollHeight-e.renderHeight-e.scrollTop<1;n&&o?t.set("both"):n?t.set("top"):o?t.set("bottom"):t.set("none")};return i(),e.onDidScroll(i)}const iN="workbench.list.multiSelectModifier",gD="workbench.list.openMode",_c="workbench.list.horizontalScrolling",ate="workbench.list.defaultFindMode",dte="workbench.list.typeNavigationMode",vv="workbench.list.keyboardNavigation",Ku="workbench.list.scrollByPage",cte="workbench.list.defaultFindMatchType",DM="workbench.tree.indent",xv="workbench.tree.renderIndentGuides",qu="workbench.list.smoothScrolling",yp="workbench.list.mouseWheelScrollSensitivity",Cp="workbench.list.fastScrollSensitivity",Jv="workbench.tree.expandMode",Xv="workbench.tree.enableStickyScroll",Yv="workbench.tree.stickyScrollMaxItemCount";function wp(s){return s.getValue(iN)==="alt"}class yHe extends de{constructor(e){super(),this.configurationService=e,this.useAltAsMultipleSelectionModifier=wp(e),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(iN)&&(this.useAltAsMultipleSelectionModifier=wp(this.configurationService))}))}isSelectionSingleChangeEvent(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:ybe(e)}isSelectionRangeChangeEvent(e){return Cbe(e)}}function jY(s,e){const t=s.get(li),i=s.get(dn),n=new Ze;return[{...e,keyboardNavigationDelegate:{mightProducePrintableCharacter(l){return i.mightProducePrintableCharacter(l)}},smoothScrolling:!!t.getValue(qu),mouseWheelScrollSensitivity:t.getValue(yp),fastScrollSensitivity:t.getValue(Cp),multipleSelectionController:e.multipleSelectionController??n.add(new yHe(t)),keyboardNavigationEventFilter:MHe(i),scrollByPage:!!t.getValue(Ku)},n]}let Dre=class extends Uc{constructor(e,t,i,n,o,l,r,a,d){const c=typeof o.horizontalScrolling<"u"?o.horizontalScrolling:!!a.getValue(_c),[h,u]=d.invokeFunction(jY,o);super(e,t,i,n,{keyboardSupport:!1,...h,horizontalScrolling:c}),this.disposables.add(u),this.contextKeyService=_Y(l,this),this.disposables.add(OY(this.contextKeyService,this)),this.listSupportsMultiSelect=YY.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(o.multipleSelectionSupport!==!1),zY.bindTo(this.contextKeyService).set(!!o.selectionNavigation),this.listHasSelectionOrFocus=nte.bindTo(this.contextKeyService),this.listDoubleSelection=ste.bindTo(this.contextKeyService),this.listMultiSelection=ote.bindTo(this.contextKeyService),this.horizontalScrolling=o.horizontalScrolling,this._useAltAsMultipleSelectionModifier=wp(a),this.disposables.add(this.contextKeyService),this.disposables.add(r.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const p=this.getSelection(),g=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(p.length>0||g.length>0),this.listMultiSelection.set(p.length>1),this.listDoubleSelection.set(p.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const p=this.getSelection(),g=this.getFocus();this.listHasSelectionOrFocus.set(p.length>0||g.length>0)})),this.disposables.add(a.onDidChangeConfiguration(p=>{p.affectsConfiguration(iN)&&(this._useAltAsMultipleSelectionModifier=wp(a));let g={};if(p.affectsConfiguration(_c)&&this.horizontalScrolling===void 0){const b=!!a.getValue(_c);g={...g,horizontalScrolling:b}}if(p.affectsConfiguration(Ku)){const b=!!a.getValue(Ku);g={...g,scrollByPage:b}}if(p.affectsConfiguration(qu)){const b=!!a.getValue(qu);g={...g,smoothScrolling:b}}if(p.affectsConfiguration(yp)){const b=a.getValue(yp);g={...g,mouseWheelScrollSensitivity:b}}if(p.affectsConfiguration(Cp)){const b=a.getValue(Cp);g={...g,fastScrollSensitivity:b}}Object.keys(g).length>0&&this.updateOptions(g)})),this.navigator=new xUe(this,{configurationService:a,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?eN(e):$A)}};Dre=I0([$n(5,wt),$n(6,sh),$n(7,li),$n(8,bt)],Dre);let Gre=class extends Bje{constructor(e,t,i,n,o,l,r,a,d){const c=typeof o.horizontalScrolling<"u"?o.horizontalScrolling:!!a.getValue(_c),[h,u]=d.invokeFunction(jY,o);super(e,t,i,n,{keyboardSupport:!1,...h,horizontalScrolling:c}),this.disposables=new Ze,this.disposables.add(u),this.contextKeyService=_Y(l,this),this.disposables.add(OY(this.contextKeyService,this.widget)),this.horizontalScrolling=o.horizontalScrolling,this.listSupportsMultiSelect=YY.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(o.multipleSelectionSupport!==!1),zY.bindTo(this.contextKeyService).set(!!o.selectionNavigation),this._useAltAsMultipleSelectionModifier=wp(a),this.disposables.add(this.contextKeyService),this.disposables.add(r.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(a.onDidChangeConfiguration(p=>{p.affectsConfiguration(iN)&&(this._useAltAsMultipleSelectionModifier=wp(a));let g={};if(p.affectsConfiguration(_c)&&this.horizontalScrolling===void 0){const b=!!a.getValue(_c);g={...g,horizontalScrolling:b}}if(p.affectsConfiguration(Ku)){const b=!!a.getValue(Ku);g={...g,scrollByPage:b}}if(p.affectsConfiguration(qu)){const b=!!a.getValue(qu);g={...g,smoothScrolling:b}}if(p.affectsConfiguration(yp)){const b=a.getValue(yp);g={...g,mouseWheelScrollSensitivity:b}}if(p.affectsConfiguration(Cp)){const b=a.getValue(Cp);g={...g,fastScrollSensitivity:b}}Object.keys(g).length>0&&this.updateOptions(g)})),this.navigator=new xUe(this,{configurationService:a,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?eN(e):$A)}dispose(){this.disposables.dispose(),super.dispose()}};Gre=I0([$n(5,wt),$n(6,sh),$n(7,li),$n(8,bt)],Gre);let Ere=class extends NK{constructor(e,t,i,n,o,l,r,a,d,c){const h=typeof l.horizontalScrolling<"u"?l.horizontalScrolling:!!d.getValue(_c),[u,m]=c.invokeFunction(jY,l);super(e,t,i,n,o,{keyboardSupport:!1,...u,horizontalScrolling:h}),this.disposables.add(m),this.contextKeyService=_Y(r,this),this.disposables.add(OY(this.contextKeyService,this)),this.listSupportsMultiSelect=YY.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(l.multipleSelectionSupport!==!1),zY.bindTo(this.contextKeyService).set(!!l.selectionNavigation),this.listHasSelectionOrFocus=nte.bindTo(this.contextKeyService),this.listDoubleSelection=ste.bindTo(this.contextKeyService),this.listMultiSelection=ote.bindTo(this.contextKeyService),this.horizontalScrolling=l.horizontalScrolling,this._useAltAsMultipleSelectionModifier=wp(d),this.disposables.add(this.contextKeyService),this.disposables.add(a.register(this)),this.updateStyles(l.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const g=this.getSelection(),b=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(g.length>0||b.length>0),this.listMultiSelection.set(g.length>1),this.listDoubleSelection.set(g.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const g=this.getSelection(),b=this.getFocus();this.listHasSelectionOrFocus.set(g.length>0||b.length>0)})),this.disposables.add(d.onDidChangeConfiguration(g=>{g.affectsConfiguration(iN)&&(this._useAltAsMultipleSelectionModifier=wp(d));let b={};if(g.affectsConfiguration(_c)&&this.horizontalScrolling===void 0){const f=!!d.getValue(_c);b={...b,horizontalScrolling:f}}if(g.affectsConfiguration(Ku)){const f=!!d.getValue(Ku);b={...b,scrollByPage:f}}if(g.affectsConfiguration(qu)){const f=!!d.getValue(qu);b={...b,smoothScrolling:f}}if(g.affectsConfiguration(yp)){const f=d.getValue(yp);b={...b,mouseWheelScrollSensitivity:f}}if(g.affectsConfiguration(Cp)){const f=d.getValue(Cp);b={...b,fastScrollSensitivity:f}}Object.keys(b).length>0&&this.updateOptions(b)})),this.navigator=new CHe(this,{configurationService:d,...l}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?eN(e):$A)}dispose(){this.disposables.dispose(),super.dispose()}};Ere=I0([$n(6,wt),$n(7,sh),$n(8,li),$n(9,bt)],Ere);class hte extends de{constructor(e,t){super(),this.widget=e,this._onDidOpen=this._register(new re),this.onDidOpen=this._onDidOpen.event,this._register(ve.filter(this.widget.onDidChangeSelection,i=>Mg(i.browserEvent))(i=>this.onSelectionFromKeyboard(i))),this._register(this.widget.onPointer(i=>this.onPointer(i.element,i.browserEvent))),this._register(this.widget.onMouseDblClick(i=>this.onMouseDblClick(i.element,i.browserEvent))),typeof(t==null?void 0:t.openOnSingleClick)!="boolean"&&(t!=null&&t.configurationService)?(this.openOnSingleClick=(t==null?void 0:t.configurationService.getValue(gD))!=="doubleClick",this._register(t==null?void 0:t.configurationService.onDidChangeConfiguration(i=>{i.affectsConfiguration(gD)&&(this.openOnSingleClick=(t==null?void 0:t.configurationService.getValue(gD))!=="doubleClick")}))):this.openOnSingleClick=(t==null?void 0:t.openOnSingleClick)??!0}onSelectionFromKeyboard(e){if(e.elements.length!==1)return;const t=e.browserEvent,i=typeof t.preserveFocus=="boolean"?t.preserveFocus:!0,n=typeof t.pinned=="boolean"?t.pinned:!i,o=!1;this._open(this.getSelectedElement(),i,n,o,e.browserEvent)}onPointer(e,t){if(!this.openOnSingleClick||t.detail===2)return;const n=t.button===1,o=!0,l=n,r=t.ctrlKey||t.metaKey||t.altKey;this._open(e,o,l,r,t)}onMouseDblClick(e,t){if(!t)return;const i=t.target;if(i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&t.offsetX<16)return;const o=!1,l=!0,r=t.ctrlKey||t.metaKey||t.altKey;this._open(e,o,l,r,t)}_open(e,t,i,n,o){e&&this._onDidOpen.fire({editorOptions:{preserveFocus:t,pinned:i,revealIfVisible:!0},sideBySide:n,element:e,browserEvent:o})}}class xUe extends hte{constructor(e,t){super(e,t),this.widget=e}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class CHe extends hte{constructor(e,t){super(e,t)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class wHe extends hte{constructor(e,t){super(e,t)}getSelectedElement(){return this.widget.getSelection()[0]??void 0}}function MHe(s){let e=!1;return t=>{if(t.toKeyCodeChord().isModifierKey())return!1;if(e)return e=!1,!1;const i=s.softDispatch(t,t.target);return i.kind===1?(e=!0,!1):(e=!1,i.kind===0)}}let QK=class extends ete{constructor(e,t,i,n,o,l,r,a,d){const{options:c,getTypeNavigationMode:h,disposable:u}=l.invokeFunction(NB,o);super(e,t,i,n,c),this.disposables.add(u),this.internals=new TA(this,o,h,o.overrideStyles,r,a,d),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};QK=I0([$n(5,bt),$n(6,wt),$n(7,sh),$n(8,li)],QK);let vre=class extends wUe{constructor(e,t,i,n,o,l,r,a,d){const{options:c,getTypeNavigationMode:h,disposable:u}=l.invokeFunction(NB,o);super(e,t,i,n,c),this.disposables.add(u),this.internals=new TA(this,o,h,o.overrideStyles,r,a,d),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};vre=I0([$n(5,bt),$n(6,wt),$n(7,sh),$n(8,li)],vre);let xre=class extends NHe{constructor(e,t,i,n,o,l,r,a,d,c){const{options:h,getTypeNavigationMode:u,disposable:m}=r.invokeFunction(NB,l);super(e,t,i,n,o,h),this.disposables.add(m),this.internals=new TA(this,l,u,l.overrideStyles,a,d,c),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles!==void 0&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};xre=I0([$n(6,bt),$n(7,wt),$n(8,sh),$n(9,li)],xre);let yK=class extends TUe{get onDidOpen(){return this.internals.onDidOpen}constructor(e,t,i,n,o,l,r,a,d,c){const{options:h,getTypeNavigationMode:u,disposable:m}=r.invokeFunction(NB,l);super(e,t,i,n,o,h),this.disposables.add(m),this.internals=new TA(this,l,u,l.overrideStyles,a,d,c),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};yK=I0([$n(6,bt),$n(7,wt),$n(8,sh),$n(9,li)],yK);let Jre=class extends ZHe{constructor(e,t,i,n,o,l,r,a,d,c,h){const{options:u,getTypeNavigationMode:m,disposable:p}=a.invokeFunction(NB,r);super(e,t,i,n,o,l,u),this.disposables.add(p),this.internals=new TA(this,r,m,r.overrideStyles,d,c,h),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};Jre=I0([$n(7,bt),$n(8,wt),$n(9,sh),$n(10,li)],Jre);function JUe(s){const e=s.getValue(ate);if(e==="highlight")return s0.Highlight;if(e==="filter")return s0.Filter;const t=s.getValue(vv);if(t==="simple"||t==="highlight")return s0.Highlight;if(t==="filter")return s0.Filter}function XUe(s){const e=s.getValue(cte);if(e==="fuzzy")return MA.Fuzzy;if(e==="contiguous")return MA.Contiguous}function NB(s,e){const t=s.get(li),i=s.get(L0),n=s.get(wt),o=s.get(bt),l=()=>{const u=n.getContextKeyValue(EUe);if(u==="automatic")return hp.Automatic;if(u==="trigger"||n.getContextKeyValue(vUe)===!1)return hp.Trigger;const p=t.getValue(dte);if(p==="automatic")return hp.Automatic;if(p==="trigger")return hp.Trigger},r=e.horizontalScrolling!==void 0?e.horizontalScrolling:!!t.getValue(_c),[a,d]=o.invokeFunction(jY,e),c=e.paddingBottom,h=e.renderIndentGuides!==void 0?e.renderIndentGuides:t.getValue(xv);return{getTypeNavigationMode:l,disposable:d,options:{keyboardSupport:!1,...a,indent:typeof t.getValue(DM)=="number"?t.getValue(DM):void 0,renderIndentGuides:h,smoothScrolling:!!t.getValue(qu),defaultFindMode:JUe(t),defaultFindMatchType:XUe(t),horizontalScrolling:r,scrollByPage:!!t.getValue(Ku),paddingBottom:c,hideTwistiesOfChildlessElements:e.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:e.expandOnlyOnTwistieClick??t.getValue(Jv)==="doubleClick",contextViewProvider:i,findWidgetStyles:k3e,enableStickyScroll:!!t.getValue(Xv),stickyScrollMaxItemCount:Number(t.getValue(Yv))}}}let TA=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(e,t,i,n,o,l,r){this.tree=e,this.disposables=[],this.contextKeyService=_Y(o,e),this.disposables.push(OY(this.contextKeyService,e)),this.listSupportsMultiSelect=YY.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(t.multipleSelectionSupport!==!1),zY.bindTo(this.contextKeyService).set(!!t.selectionNavigation),this.listSupportFindWidget=SHe.bindTo(this.contextKeyService),this.listSupportFindWidget.set(t.findWidgetEnabled??!0),this.hasSelectionOrFocus=nte.bindTo(this.contextKeyService),this.hasDoubleSelection=ste.bindTo(this.contextKeyService),this.hasMultiSelection=ote.bindTo(this.contextKeyService),this.treeElementCanCollapse=lte.bindTo(this.contextKeyService),this.treeElementHasParent=WHe.bindTo(this.contextKeyService),this.treeElementCanExpand=rte.bindTo(this.contextKeyService),this.treeElementHasChild=VHe.bindTo(this.contextKeyService),this.treeFindOpen=QHe.bindTo(this.contextKeyService),this.treeStickyScrollFocused=DUe.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=wp(r),this.updateStyleOverrides(n);const d=()=>{const h=e.getFocus()[0];if(!h)return;const u=e.getNode(h);this.treeElementCanCollapse.set(u.collapsible&&!u.collapsed),this.treeElementHasParent.set(!!e.getParentElement(h)),this.treeElementCanExpand.set(u.collapsible&&u.collapsed),this.treeElementHasChild.set(!!e.getFirstElementChild(h))},c=new Set;c.add(EUe),c.add(vUe),this.disposables.push(this.contextKeyService,l.register(e),e.onDidChangeSelection(()=>{const h=e.getSelection(),u=e.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(h.length>0||u.length>0),this.hasMultiSelection.set(h.length>1),this.hasDoubleSelection.set(h.length===2)})}),e.onDidChangeFocus(()=>{const h=e.getSelection(),u=e.getFocus();this.hasSelectionOrFocus.set(h.length>0||u.length>0),d()}),e.onDidChangeCollapseState(d),e.onDidChangeModel(d),e.onDidChangeFindOpenState(h=>this.treeFindOpen.set(h)),e.onDidChangeStickyScrollFocused(h=>this.treeStickyScrollFocused.set(h)),r.onDidChangeConfiguration(h=>{let u={};if(h.affectsConfiguration(iN)&&(this._useAltAsMultipleSelectionModifier=wp(r)),h.affectsConfiguration(DM)){const m=r.getValue(DM);u={...u,indent:m}}if(h.affectsConfiguration(xv)&&t.renderIndentGuides===void 0){const m=r.getValue(xv);u={...u,renderIndentGuides:m}}if(h.affectsConfiguration(qu)){const m=!!r.getValue(qu);u={...u,smoothScrolling:m}}if(h.affectsConfiguration(ate)||h.affectsConfiguration(vv)){const m=JUe(r);u={...u,defaultFindMode:m}}if(h.affectsConfiguration(dte)||h.affectsConfiguration(vv)){const m=i();u={...u,typeNavigationMode:m}}if(h.affectsConfiguration(cte)){const m=XUe(r);u={...u,defaultFindMatchType:m}}if(h.affectsConfiguration(_c)&&t.horizontalScrolling===void 0){const m=!!r.getValue(_c);u={...u,horizontalScrolling:m}}if(h.affectsConfiguration(Ku)){const m=!!r.getValue(Ku);u={...u,scrollByPage:m}}if(h.affectsConfiguration(Jv)&&t.expandOnlyOnTwistieClick===void 0&&(u={...u,expandOnlyOnTwistieClick:r.getValue(Jv)==="doubleClick"}),h.affectsConfiguration(Xv)){const m=r.getValue(Xv);u={...u,enableStickyScroll:m}}if(h.affectsConfiguration(Yv)){const m=Math.max(1,r.getValue(Yv));u={...u,stickyScrollMaxItemCount:m}}if(h.affectsConfiguration(yp)){const m=r.getValue(yp);u={...u,mouseWheelScrollSensitivity:m}}if(h.affectsConfiguration(Cp)){const m=r.getValue(Cp);u={...u,fastScrollSensitivity:m}}Object.keys(u).length>0&&e.updateOptions(u)}),this.contextKeyService.onDidChangeContext(h=>{h.affectsSome(c)&&e.updateOptions({typeNavigationMode:i()})})),this.navigator=new wHe(e,{configurationService:r,...t}),this.disposables.push(this.navigator)}updateOptions(e){e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyleOverrides(e){this.tree.style(e?eN(e):$A)}dispose(){this.disposables=Tn(this.disposables)}};TA=I0([$n(4,wt),$n(5,sh),$n(6,li)],TA);const THe=Vs.as(nu.Configuration);THe.registerConfiguration({id:"workbench",order:7,title:U("workbenchConfigurationTitle","Workbench"),type:"object",properties:{[iN]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[U("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),U("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:U({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},[gD]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:U({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[_c]:{type:"boolean",default:!1,description:U("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")},[Ku]:{type:"boolean",default:!1,description:U("list.scrollByPage","Controls whether clicks in the scrollbar scroll page by page.")},[DM]:{type:"number",default:8,minimum:4,maximum:40,description:U("tree indent setting","Controls tree indentation in pixels.")},[xv]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:U("render tree indent guides","Controls whether the tree should render indent guides.")},[qu]:{type:"boolean",default:!1,description:U("list smoothScrolling setting","Controls whether lists and trees have smooth scrolling.")},[yp]:{type:"number",default:1,markdownDescription:U("Mouse Wheel Scroll Sensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")},[Cp]:{type:"number",default:5,markdownDescription:U("Fast Scroll Sensitivity","Scrolling speed multiplier when pressing `Alt`.")},[ate]:{type:"string",enum:["highlight","filter"],enumDescriptions:[U("defaultFindModeSettingKey.highlight","Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),U("defaultFindModeSettingKey.filter","Filter elements when searching.")],default:"highlight",description:U("defaultFindModeSettingKey","Controls the default find mode for lists and trees in the workbench.")},[vv]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[U("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),U("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),U("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:U("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),deprecated:!0,deprecationMessage:U("keyboardNavigationSettingKeyDeprecated","Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.")},[cte]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[U("defaultFindMatchTypeSettingKey.fuzzy","Use fuzzy matching when searching."),U("defaultFindMatchTypeSettingKey.contiguous","Use contiguous matching when searching.")],default:"fuzzy",description:U("defaultFindMatchTypeSettingKey","Controls the type of matching used when searching lists and trees in the workbench.")},[Jv]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:U("expand mode","Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[Xv]:{type:"boolean",default:!0,description:U("sticky scroll","Controls whether sticky scrolling is enabled in trees.")},[Yv]:{type:"number",minimum:1,default:7,markdownDescription:U("sticky scroll maximum items","Controls the number of sticky elements displayed in the tree when {0} is enabled.","`#workbench.tree.enableStickyScroll#`")},[dte]:{type:"string",enum:["automatic","trigger"],default:"automatic",markdownDescription:U("typeNavigationMode2","Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run.")}}});class vU extends de{constructor(e,t){super(),this.options=t,this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.supportIcons=(t==null?void 0:t.supportIcons)??!1,this.domNode=ye(e,Ge("span.monaco-highlighted-label"))}get element(){return this.domNode}set(e,t=[],i="",n){e||(e=""),n&&(e=vU.escapeNewLines(e,t)),!(this.didEverRender&&this.text===e&&this.title===i&&gd(this.highlights,t))&&(this.text=e,this.title=i,this.highlights=t,this.render())}render(){var i,n,o;const e=[];let t=0;for(const l of this.highlights){if(l.end===l.start)continue;if(t<l.start){const d=this.text.substring(t,l.start);this.supportIcons?e.push(...DU(d)):e.push(d),t=l.start}const r=this.text.substring(t,l.end),a=Ge("span.highlight",void 0,...this.supportIcons?DU(r):[r]);l.extraClasses&&a.classList.add(...l.extraClasses),e.push(a),t=l.end}if(t<this.text.length){const l=this.text.substring(t);this.supportIcons?e.push(...DU(l)):e.push(l)}if(Zl(this.domNode,...e),(n=(i=this.options)==null?void 0:i.hoverDelegate)!=null&&n.showNativeHover)this.domNode.title=this.title;else if(!this.customHover&&this.title!==""){const l=((o=this.options)==null?void 0:o.hoverDelegate)??ca("mouse");this.customHover=this._register(rm().setupManagedHover(l,this.domNode,this.title))}else this.customHover&&this.customHover.update(this.title);this.didEverRender=!0}static escapeNewLines(e,t){let i=0,n=0;return e.replace(/\r\n|\r|\n/g,(o,l)=>{n=o===`\r
- `?-1:0,l+=i;for(const r of t)r.end<=l||(r.start>=l&&(r.start+=n),r.end>=l&&(r.end+=n));return i+=n,"⏎"})}}class J1{constructor(e){this._element=e}get element(){return this._element}set textContent(e){this.disposed||e===this._textContent||(this._textContent=e,this._element.textContent=e)}set classNames(e){this.disposed||gd(e,this._classNames)||(this._classNames=e,this._element.classList.value="",this._element.classList.add(...e))}set empty(e){this.disposed||e===this._empty||(this._empty=e,this._element.style.marginLeft=e?"0":"")}dispose(){this.disposed=!0}}class zv extends de{constructor(e,t){super(),this.customHovers=new Map,this.creationOptions=t,this.domNode=this._register(new J1(ye(e,Ge(".monaco-icon-label")))),this.labelContainer=ye(this.domNode.element,Ge(".monaco-icon-label-container")),this.nameContainer=ye(this.labelContainer,Ge("span.monaco-icon-name-container")),t!=null&&t.supportHighlights||t!=null&&t.supportIcons?this.nameNode=this._register(new kHe(this.nameContainer,!!t.supportIcons)):this.nameNode=new BHe(this.nameContainer),this.hoverDelegate=(t==null?void 0:t.hoverDelegate)??ca("mouse")}get element(){return this.domNode.element}setLabel(e,t,i){const n=["monaco-icon-label"],o=["monaco-icon-label-container"];let l="";i&&(i.extraClasses&&n.push(...i.extraClasses),i.italic&&n.push("italic"),i.strikethrough&&n.push("strikethrough"),i.disabledCommand&&o.push("disabled"),i.title&&(typeof i.title=="string"?l+=i.title:l+=e));const r=this.domNode.element.querySelector(".monaco-icon-label-iconpath");if(i!=null&&i.iconPath){let a;!r||!Yo(r)?(a=Ge(".monaco-icon-label-iconpath"),this.domNode.element.prepend(a)):a=r,a.style.backgroundImage=R0(i==null?void 0:i.iconPath)}else r&&r.remove();if(this.domNode.classNames=n,this.domNode.element.setAttribute("aria-label",l),this.labelContainer.classList.value="",this.labelContainer.classList.add(...o),this.setupHover(i!=null&&i.descriptionTitle?this.labelContainer:this.element,i==null?void 0:i.title),this.nameNode.setLabel(e,i),t||this.descriptionNode){const a=this.getOrCreateDescriptionNode();a instanceof vU?(a.set(t||"",i?i.descriptionMatches:void 0,void 0,i==null?void 0:i.labelEscapeNewLines),this.setupHover(a.element,i==null?void 0:i.descriptionTitle)):(a.textContent=t&&(i!=null&&i.labelEscapeNewLines)?vU.escapeNewLines(t,[]):t||"",this.setupHover(a.element,(i==null?void 0:i.descriptionTitle)||""),a.empty=!t)}if(i!=null&&i.suffix||this.suffixNode){const a=this.getOrCreateSuffixNode();a.textContent=(i==null?void 0:i.suffix)??""}}setupHover(e,t){const i=this.customHovers.get(e);if(i&&(i.dispose(),this.customHovers.delete(e)),!t){e.removeAttribute("title");return}if(this.hoverDelegate.showNativeHover)(function(o,l){Da(l)?o.title=Nee(l):l!=null&&l.markdownNotSupportedFallback?o.title=l.markdownNotSupportedFallback:o.removeAttribute("title")})(e,t);else{const n=rm().setupManagedHover(this.hoverDelegate,e,t);n&&this.customHovers.set(e,n)}}dispose(){super.dispose();for(const e of this.customHovers.values())e.dispose();this.customHovers.clear()}getOrCreateSuffixNode(){if(!this.suffixNode){const e=this._register(new J1(DEe(this.nameContainer,Ge("span.monaco-icon-suffix-container"))));this.suffixNode=this._register(new J1(ye(e.element,Ge("span.label-suffix"))))}return this.suffixNode}getOrCreateDescriptionNode(){var e;if(!this.descriptionNode){const t=this._register(new J1(ye(this.labelContainer,Ge("span.monaco-icon-description-container"))));(e=this.creationOptions)!=null&&e.supportDescriptionHighlights?this.descriptionNode=this._register(new vU(ye(t.element,Ge("span.label-description")),{supportIcons:!!this.creationOptions.supportIcons})):this.descriptionNode=this._register(new J1(ye(t.element,Ge("span.label-description"))))}return this.descriptionNode}}class BHe{constructor(e){this.container=e,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(!(this.label===e&&gd(this.options,t)))if(this.label=e,this.options=t,typeof e=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=ye(this.container,Ge("a.label-name",{id:t==null?void 0:t.domId}))),this.singleLabel.textContent=e;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let i=0;i<e.length;i++){const n=e[i],o=(t==null?void 0:t.domId)&&`${t==null?void 0:t.domId}_${i}`;ye(this.container,Ge("a.label-name",{id:o,"data-icon-label-count":e.length,"data-icon-label-index":i,role:"treeitem"},n)),i<e.length-1&&ye(this.container,Ge("span.label-separator",void 0,(t==null?void 0:t.separator)||"/"))}}}}function LHe(s,e,t){if(!t)return;let i=0;return s.map(n=>{const o={start:i,end:i+n.length},l=t.map(r=>Pl.intersect(o,r)).filter(r=>!Pl.isEmpty(r)).map(({start:r,end:a})=>({start:r-i,end:a-i}));return i=o.end+e.length,l})}class kHe extends de{constructor(e,t){super(),this.container=e,this.supportIcons=t,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(!(this.label===e&&gd(this.options,t)))if(this.label=e,this.options=t,typeof e=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=this._register(new vU(ye(this.container,Ge("a.label-name",{id:t==null?void 0:t.domId})),{supportIcons:this.supportIcons}))),this.singleLabel.set(e,t==null?void 0:t.matches,void 0,t==null?void 0:t.labelEscapeNewLines);else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;const i=(t==null?void 0:t.separator)||"/",n=LHe(e,i,t==null?void 0:t.matches);for(let o=0;o<e.length;o++){const l=e[o],r=n?n[o]:void 0,a=(t==null?void 0:t.domId)&&`${t==null?void 0:t.domId}_${o}`,d=Ge("a.label-name",{id:a,"data-icon-label-count":e.length,"data-icon-label-index":o,role:"treeitem"});this._register(new vU(ye(this.container,d),{supportIcons:this.supportIcons})).set(l,r,void 0,t==null?void 0:t.labelEscapeNewLines),o<e.length-1&&ye(d,Ge("span.label-separator",void 0,i))}}}}const rk=Ge,YUe={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class e1 extends de{constructor(e,t,i){super(),this.os=t,this.keyElements=new Set,this.options=i||Object.create(null);const n=this.options.keybindingLabelForeground;this.domNode=ye(e,rk(".monaco-keybinding")),n&&(this.domNode.style.color=n),this.hover=this._register(rm().setupManagedHover(ca("mouse"),this.domNode,"")),this.didEverRender=!1,e.appendChild(this.domNode)}get element(){return this.domNode}set(e,t){this.didEverRender&&this.keybinding===e&&e1.areSame(this.matches,t)||(this.keybinding=e,this.matches=t,this.render())}render(){if(this.clear(),this.keybinding){const e=this.keybinding.getChords();e[0]&&this.renderChord(this.domNode,e[0],this.matches?this.matches.firstPart:null);for(let i=1;i<e.length;i++)ye(this.domNode,rk("span.monaco-keybinding-key-chord-separator",void 0," ")),this.renderChord(this.domNode,e[i],this.matches?this.matches.chordPart:null);const t=this.options.disableTitle??!1?void 0:this.keybinding.getAriaLabel()||void 0;this.hover.update(t),this.domNode.setAttribute("aria-label",t||"")}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.didEverRender=!0}clear(){Fl(this.domNode),this.keyElements.clear()}renderChord(e,t,i){const n=yee.modifierLabels[this.os];t.ctrlKey&&this.renderKey(e,n.ctrlKey,!!(i!=null&&i.ctrlKey),n.separator),t.shiftKey&&this.renderKey(e,n.shiftKey,!!(i!=null&&i.shiftKey),n.separator),t.altKey&&this.renderKey(e,n.altKey,!!(i!=null&&i.altKey),n.separator),t.metaKey&&this.renderKey(e,n.metaKey,!!(i!=null&&i.metaKey),n.separator);const o=t.keyLabel;o&&this.renderKey(e,o,!!(i!=null&&i.keyCode),"")}renderKey(e,t,i,n){ye(e,this.createKeyElement(t,i?".highlight":"")),n&&ye(e,rk("span.monaco-keybinding-key-separator",void 0,n))}renderUnbound(e){ye(e,this.createKeyElement(U("unbound","Unbound")))}createKeyElement(e,t=""){const i=rk("span.monaco-keybinding-key"+t,void 0,e);return this.keyElements.add(i),this.options.keybindingLabelBackground&&(i.style.backgroundColor=this.options.keybindingLabelBackground),this.options.keybindingLabelBorder&&(i.style.borderColor=this.options.keybindingLabelBorder),this.options.keybindingLabelBottomBorder&&(i.style.borderBottomColor=this.options.keybindingLabelBottomBorder),this.options.keybindingLabelShadow&&(i.style.boxShadow=`inset 0 -1px 0 ${this.options.keybindingLabelShadow}`),i}static areSame(e,t){return e===t||!e&&!t?!0:!!e&&!!t&&gd(e.firstPart,t.firstPart)&&gd(e.chordPart,t.chordPart)}}const Xre=new Hh(()=>{const s=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:s,collatorIsNumeric:s.resolvedOptions().numeric}});function IHe(s,e,t=!1){const i=s||"",n=e||"",o=Xre.value.collator.compare(i,n);return Xre.value.collatorIsNumeric&&o===0&&i!==n?i<n?-1:1:o}function DHe(s,e,t){const i=s.toLowerCase(),n=e.toLowerCase(),o=GHe(s,e,t);if(o)return o;const l=i.endsWith(t),r=n.endsWith(t);if(l!==r)return l?-1:1;const a=IHe(i,n);return a!==0?a:i.localeCompare(n)}function GHe(s,e,t){const i=s.toLowerCase(),n=e.toLowerCase(),o=i.startsWith(t),l=n.startsWith(t);if(o!==l)return o?-1:1;if(o&&l){if(i.length<n.length)return-1;if(i.length>n.length)return 1}return 0}var HY=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},CK=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},wK;const Uu=Ge;class zUe{constructor(e,t,i){this.index=e,this.hasCheckbox=t,this._hidden=!1,this._init=new Hh(()=>{const n=i.label??"",o=_y(n).text.trim(),l=i.ariaLabel||[n,this.saneDescription,this.saneDetail].map(r=>zYe(r)).filter(r=>!!r).join(", ");return{saneLabel:n,saneSortLabel:o,saneAriaLabel:l}}),this._saneDescription=i.description,this._saneTooltip=i.tooltip}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(e){this._element=e}get hidden(){return this._hidden}set hidden(e){this._hidden=e}get saneDescription(){return this._saneDescription}set saneDescription(e){this._saneDescription=e}get saneDetail(){return this._saneDetail}set saneDetail(e){this._saneDetail=e}get saneTooltip(){return this._saneTooltip}set saneTooltip(e){this._saneTooltip=e}get labelHighlights(){return this._labelHighlights}set labelHighlights(e){this._labelHighlights=e}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(e){this._descriptionHighlights=e}get detailHighlights(){return this._detailHighlights}set detailHighlights(e){this._detailHighlights=e}}class Wl extends zUe{constructor(e,t,i,n,o,l){var r,a,d;super(e,t,o),this.fireButtonTriggered=i,this._onChecked=n,this.item=o,this._separator=l,this._checked=!1,this.onChecked=t?ve.map(ve.filter(this._onChecked.event,c=>c.element===this),c=>c.checked):ve.None,this._saneDetail=o.detail,this._labelHighlights=(r=o.highlights)==null?void 0:r.label,this._descriptionHighlights=(a=o.highlights)==null?void 0:a.description,this._detailHighlights=(d=o.highlights)==null?void 0:d.detail}get separator(){return this._separator}set separator(e){this._separator=e}get checked(){return this._checked}set checked(e){e!==this._checked&&(this._checked=e,this._onChecked.fire({element:this,checked:e}))}get checkboxDisabled(){return!!this.item.disabled}}var _m;(function(s){s[s.NONE=0]="NONE",s[s.MOUSE_HOVER=1]="MOUSE_HOVER",s[s.ACTIVE_ITEM=2]="ACTIVE_ITEM"})(_m||(_m={}));class UF extends zUe{constructor(e,t,i){super(e,!1,i),this.fireSeparatorButtonTriggered=t,this.separator=i,this.children=new Array,this.focusInsideSeparator=_m.NONE}}class EHe{getHeight(e){return e instanceof UF?30:e.saneDetail?44:22}getTemplateId(e){return e instanceof Wl?_v.ID:Ov.ID}}class vHe{getWidgetAriaLabel(){return U("quickInput","Quick Input")}getAriaLabel(e){var t;return(t=e.separator)!=null&&t.label?`${e.saneAriaLabel}, ${e.separator.label}`:e.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(e){return e.hasCheckbox?"checkbox":"option"}isChecked(e){if(!(!e.hasCheckbox||!(e instanceof Wl)))return{get value(){return e.checked},onDidChange:t=>e.onChecked(()=>t())}}}class _Ue{constructor(e){this.hoverDelegate=e}renderTemplate(e){const t=Object.create(null);t.toDisposeElement=new Ze,t.toDisposeTemplate=new Ze,t.entry=ye(e,Uu(".quick-input-list-entry"));const i=ye(t.entry,Uu("label.quick-input-list-label"));t.toDisposeTemplate.add(Ms(i,De.CLICK,d=>{t.checkbox.offsetParent||d.preventDefault()})),t.checkbox=ye(i,Uu("input.quick-input-list-checkbox")),t.checkbox.type="checkbox";const n=ye(i,Uu(".quick-input-list-rows")),o=ye(n,Uu(".quick-input-list-row")),l=ye(n,Uu(".quick-input-list-row"));t.label=new zv(o,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),t.toDisposeTemplate.add(t.label),t.icon=E$(t.label.element,Uu(".quick-input-list-icon"));const r=ye(o,Uu(".quick-input-list-entry-keybinding"));t.keybinding=new e1(r,pd),t.toDisposeTemplate.add(t.keybinding);const a=ye(l,Uu(".quick-input-list-label-meta"));return t.detail=new zv(a,{supportHighlights:!0,supportIcons:!0,hoverDelegate:this.hoverDelegate}),t.toDisposeTemplate.add(t.detail),t.separator=ye(t.entry,Uu(".quick-input-list-separator")),t.actionBar=new ac(t.entry,this.hoverDelegate?{hoverDelegate:this.hoverDelegate}:void 0),t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),t.toDisposeTemplate.add(t.actionBar),t}disposeTemplate(e){e.toDisposeElement.dispose(),e.toDisposeTemplate.dispose()}disposeElement(e,t,i){i.toDisposeElement.clear(),i.actionBar.clear()}}var JV;let _v=(JV=class extends _Ue{constructor(e,t){super(e),this.themeService=t,this._itemsWithSeparatorsFrequency=new Map}get templateId(){return wK.ID}renderTemplate(e){const t=super.renderTemplate(e);return t.toDisposeTemplate.add(Ms(t.checkbox,De.CHANGE,i=>{t.element.checked=t.checkbox.checked})),t}renderElement(e,t,i){var u;const n=e.element;i.element=n,n.element=i.entry??void 0;const o=n.item;i.checkbox.checked=n.checked,i.toDisposeElement.add(n.onChecked(m=>i.checkbox.checked=m)),i.checkbox.disabled=n.checkboxDisabled;const{labelHighlights:l,descriptionHighlights:r,detailHighlights:a}=n;if(o.iconPath){const m=nV(this.themeService.getColorTheme().type)?o.iconPath.dark:o.iconPath.light??o.iconPath.dark,p=At.revive(m);i.icon.className="quick-input-list-icon",i.icon.style.backgroundImage=R0(p)}else i.icon.style.backgroundImage="",i.icon.className=o.iconClass?`quick-input-list-icon ${o.iconClass}`:"";let d;!n.saneTooltip&&n.saneDescription&&(d={markdown:{value:n.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDescription});const c={matches:l||[],descriptionTitle:d,descriptionMatches:r||[],labelEscapeNewLines:!0};if(c.extraClasses=o.iconClasses,c.italic=o.italic,c.strikethrough=o.strikethrough,i.entry.classList.remove("quick-input-list-separator-as-item"),i.label.setLabel(n.saneLabel,n.saneDescription,c),i.keybinding.set(o.keybinding),n.saneDetail){let m;n.saneTooltip||(m={markdown:{value:n.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDetail}),i.detail.element.style.display="",i.detail.setLabel(n.saneDetail,void 0,{matches:a,title:m,labelEscapeNewLines:!0})}else i.detail.element.style.display="none";(u=n.separator)!=null&&u.label?(i.separator.textContent=n.separator.label,i.separator.style.display="",this.addItemWithSeparator(n)):i.separator.style.display="none",i.entry.classList.toggle("quick-input-list-separator-border",!!n.separator);const h=o.buttons;h&&h.length?(i.actionBar.push(h.map((m,p)=>NC(m,`id-${p}`,()=>n.fireButtonTriggered({button:m,item:n.item}))),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions")}disposeElement(e,t,i){this.removeItemWithSeparator(e.element),super.disposeElement(e,t,i)}isItemWithSeparatorVisible(e){return this._itemsWithSeparatorsFrequency.has(e)}addItemWithSeparator(e){this._itemsWithSeparatorsFrequency.set(e,(this._itemsWithSeparatorsFrequency.get(e)||0)+1)}removeItemWithSeparator(e){const t=this._itemsWithSeparatorsFrequency.get(e)||0;t>1?this._itemsWithSeparatorsFrequency.set(e,t-1):this._itemsWithSeparatorsFrequency.delete(e)}},wK=JV,JV.ID="quickpickitem",JV);_v=wK=HY([CK(1,Do)],_v);const VX=class VX extends _Ue{constructor(){super(...arguments),this._visibleSeparatorsFrequency=new Map}get templateId(){return VX.ID}get visibleSeparators(){return[...this._visibleSeparatorsFrequency.keys()]}isSeparatorVisible(e){return this._visibleSeparatorsFrequency.has(e)}renderTemplate(e){const t=super.renderTemplate(e);return t.checkbox.style.display="none",t}renderElement(e,t,i){const n=e.element;i.element=n,n.element=i.entry??void 0,n.element.classList.toggle("focus-inside",!!n.focusInsideSeparator);const o=n.separator,{labelHighlights:l,descriptionHighlights:r,detailHighlights:a}=n;i.icon.style.backgroundImage="",i.icon.className="";let d;!n.saneTooltip&&n.saneDescription&&(d={markdown:{value:n.saneDescription,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDescription});const c={matches:l||[],descriptionTitle:d,descriptionMatches:r||[],labelEscapeNewLines:!0};if(i.entry.classList.add("quick-input-list-separator-as-item"),i.label.setLabel(n.saneLabel,n.saneDescription,c),n.saneDetail){let u;n.saneTooltip||(u={markdown:{value:n.saneDetail,supportThemeIcons:!0},markdownNotSupportedFallback:n.saneDetail}),i.detail.element.style.display="",i.detail.setLabel(n.saneDetail,void 0,{matches:a,title:u,labelEscapeNewLines:!0})}else i.detail.element.style.display="none";i.separator.style.display="none",i.entry.classList.add("quick-input-list-separator-border");const h=o.buttons;h&&h.length?(i.actionBar.push(h.map((u,m)=>NC(u,`id-${m}`,()=>n.fireSeparatorButtonTriggered({button:u,separator:n.separator}))),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions"),this.addSeparator(n)}disposeElement(e,t,i){var n;this.removeSeparator(e.element),this.isSeparatorVisible(e.element)||(n=e.element.element)==null||n.classList.remove("focus-inside"),super.disposeElement(e,t,i)}addSeparator(e){this._visibleSeparatorsFrequency.set(e,(this._visibleSeparatorsFrequency.get(e)||0)+1)}removeSeparator(e){const t=this._visibleSeparatorsFrequency.get(e)||0;t>1?this._visibleSeparatorsFrequency.set(e,t-1):this._visibleSeparatorsFrequency.delete(e)}};VX.ID="quickpickseparator";let Ov=VX,GM=class extends de{constructor(e,t,i,n,o,l){super(),this.parent=e,this.hoverDelegate=t,this.linkOpenerDelegate=i,this.accessibilityService=l,this._onKeyDown=new re,this._onLeave=new re,this.onLeave=this._onLeave.event,this._visibleCountObservable=oi("VisibleCount",0),this.onChangedVisibleCount=ve.fromObservable(this._visibleCountObservable,this._store),this._allVisibleCheckedObservable=oi("AllVisibleChecked",!1),this.onChangedAllVisibleChecked=ve.fromObservable(this._allVisibleCheckedObservable,this._store),this._checkedCountObservable=oi("CheckedCount",0),this.onChangedCheckedCount=ve.fromObservable(this._checkedCountObservable,this._store),this._checkedElementsObservable=XP({equalsFn:Fs},new Array),this.onChangedCheckedElements=ve.fromObservable(this._checkedElementsObservable,this._store),this._onButtonTriggered=new re,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new re,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._elementChecked=new re,this._elementCheckedEventBufferer=new $T,this._hasCheckboxes=!1,this._inputElements=new Array,this._elementTree=new Array,this._itemElements=new Array,this._elementDisposable=this._register(new Ze),this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._shouldLoop=!0,this._container=ye(this.parent,Uu(".quick-input-list")),this._separatorRenderer=new Ov(t),this._itemRenderer=o.createInstance(_v,t),this._tree=this._register(o.createInstance(QK,"QuickInput",this._container,new EHe,[this._itemRenderer,this._separatorRenderer],{filter:{filter(r){return r.hidden?0:r instanceof UF?2:1}},sorter:{compare:(r,a)=>{if(!this.sortByLabel||!this._lastQueryString)return 0;const d=this._lastQueryString.toLowerCase();return JHe(r,a,d)}},accessibilityProvider:new vHe,setRowLineHeight:!1,multipleSelectionSupport:!1,hideTwistiesOfChildlessElements:!0,renderIndentGuides:bV.None,findWidgetEnabled:!1,indent:0,horizontalScrolling:!1,allowNonCollapsibleParents:!0,alwaysConsumeMouseWheel:!0})),this._tree.getHTMLElement().id=n,this._registerListeners()}get onDidChangeFocus(){return ve.map(this._tree.onDidChangeFocus,e=>e.elements.filter(t=>t instanceof Wl).map(t=>t.item),this._store)}get onDidChangeSelection(){return ve.map(this._tree.onDidChangeSelection,e=>({items:e.elements.filter(t=>t instanceof Wl).map(t=>t.item),event:e.browserEvent}),this._store)}get displayed(){return this._container.style.display!=="none"}set displayed(e){this._container.style.display=e?"":"none"}get scrollTop(){return this._tree.scrollTop}set scrollTop(e){this._tree.scrollTop=e}get ariaLabel(){return this._tree.ariaLabel}set ariaLabel(e){this._tree.ariaLabel=e??""}set enabled(e){this._tree.getHTMLElement().style.pointerEvents=e?"":"none"}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e}get shouldLoop(){return this._shouldLoop}set shouldLoop(e){this._shouldLoop=e}_registerListeners(){this._registerOnKeyDown(),this._registerOnContainerClick(),this._registerOnMouseMiddleClick(),this._registerOnTreeModelChanged(),this._registerOnElementChecked(),this._registerOnContextMenu(),this._registerHoverListeners(),this._registerSelectionChangeListener(),this._registerSeparatorActionShowingListeners()}_registerOnKeyDown(){this._register(this._tree.onKeyDown(e=>{const t=new Jn(e);switch(t.keyCode){case 10:this.toggleCheckbox();break}this._onKeyDown.fire(t)}))}_registerOnContainerClick(){this._register(ge(this._container,De.CLICK,e=>{(e.x||e.y)&&this._onLeave.fire()}))}_registerOnMouseMiddleClick(){this._register(ge(this._container,De.AUXCLICK,e=>{e.button===1&&this._onLeave.fire()}))}_registerOnTreeModelChanged(){this._register(this._tree.onDidChangeModel(()=>{const e=this._itemElements.filter(t=>!t.hidden).length;this._visibleCountObservable.set(e,void 0),this._hasCheckboxes&&this._updateCheckedObservables()}))}_registerOnElementChecked(){this._register(this._elementCheckedEventBufferer.wrapEvent(this._elementChecked.event,(e,t)=>t)(e=>this._updateCheckedObservables()))}_registerOnContextMenu(){this._register(this._tree.onContextMenu(e=>{e.element&&(e.browserEvent.preventDefault(),this._tree.setSelection([e.element]))}))}_registerHoverListeners(){const e=this._register(new rge(this.hoverDelegate.delay));this._register(this._tree.onMouseOver(async t=>{var i;if(toe(t.browserEvent.target)){e.cancel();return}if(!(!toe(t.browserEvent.relatedTarget)&&Jo(t.browserEvent.relatedTarget,(i=t.element)==null?void 0:i.element)))try{await e.trigger(async()=>{t.element instanceof Wl&&this.showHover(t.element)})}catch(n){if(!th(n))throw n}})),this._register(this._tree.onMouseOut(t=>{var i;Jo(t.browserEvent.relatedTarget,(i=t.element)==null?void 0:i.element)||e.cancel()}))}_registerSeparatorActionShowingListeners(){this._register(this._tree.onDidChangeFocus(e=>{const t=e.elements[0]?this._tree.getParentElement(e.elements[0]):null;for(const i of this._separatorRenderer.visibleSeparators){const n=i===t;!!(i.focusInsideSeparator&_m.ACTIVE_ITEM)!==n&&(n?i.focusInsideSeparator|=_m.ACTIVE_ITEM:i.focusInsideSeparator&=~_m.ACTIVE_ITEM,this._tree.rerender(i))}})),this._register(this._tree.onMouseOver(e=>{const t=e.element?this._tree.getParentElement(e.element):null;for(const i of this._separatorRenderer.visibleSeparators){if(i!==t)continue;!!(i.focusInsideSeparator&_m.MOUSE_HOVER)||(i.focusInsideSeparator|=_m.MOUSE_HOVER,this._tree.rerender(i))}})),this._register(this._tree.onMouseOut(e=>{const t=e.element?this._tree.getParentElement(e.element):null;for(const i of this._separatorRenderer.visibleSeparators){if(i!==t)continue;!!(i.focusInsideSeparator&_m.MOUSE_HOVER)&&(i.focusInsideSeparator&=~_m.MOUSE_HOVER,this._tree.rerender(i))}}))}_registerSelectionChangeListener(){this._register(this._tree.onDidChangeSelection(e=>{const t=e.elements.filter(i=>i instanceof Wl);t.length!==e.elements.length&&(e.elements.length===1&&e.elements[0]instanceof UF&&(this._tree.setFocus([e.elements[0].children[0]]),this._tree.reveal(e.elements[0],0)),this._tree.setSelection(t))}))}setAllVisibleChecked(e){this._elementCheckedEventBufferer.bufferEvents(()=>{this._itemElements.forEach(t=>{!t.hidden&&!t.checkboxDisabled&&(t.checked=e)})})}setElements(e){this._elementDisposable.clear(),this._lastQueryString=void 0,this._inputElements=e,this._hasCheckboxes=this.parent.classList.contains("show-checkboxes");let t;this._itemElements=new Array,this._elementTree=e.reduce((i,n,o)=>{let l;if(n.type==="separator"){if(!n.buttons)return i;t=new UF(o,r=>this._onSeparatorButtonTriggered.fire(r),n),l=t}else{const r=o>0?e[o-1]:void 0;let a;r&&r.type==="separator"&&!r.buttons&&(t=void 0,a=r);const d=new Wl(o,this._hasCheckboxes,c=>this._onButtonTriggered.fire(c),this._elementChecked,n,a);if(this._itemElements.push(d),t)return t.children.push(d),i;l=d}return i.push(l),i},new Array),this._setElementsToTree(this._elementTree),this.accessibilityService.isScreenReaderOptimized()&&setTimeout(()=>{const i=this._tree.getHTMLElement().querySelector(".monaco-list-row.focused"),n=i==null?void 0:i.parentNode;if(i&&n){const o=i.nextSibling;i.remove(),n.insertBefore(i,o)}},0)}setFocusedElements(e){const t=e.map(i=>this._itemElements.find(n=>n.item===i)).filter(i=>!!i).filter(i=>!i.hidden);if(this._tree.setFocus(t),e.length>0){const i=this._tree.getFocus()[0];i&&this._tree.reveal(i)}}getActiveDescendant(){return this._tree.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(e){const t=e.map(i=>this._itemElements.find(n=>n.item===i)).filter(i=>!!i);this._tree.setSelection(t)}getCheckedElements(){return this._itemElements.filter(e=>e.checked).map(e=>e.item)}setCheckedElements(e){this._elementCheckedEventBufferer.bufferEvents(()=>{const t=new Set;for(const i of e)t.add(i);for(const i of this._itemElements)i.checked=t.has(i.item)})}focus(e){var t;if(this._itemElements.length)switch(e===Hn.Second&&this._itemElements.length<2&&(e=Hn.First),e){case Hn.First:this._tree.scrollTop=0,this._tree.focusFirst(void 0,i=>i.element instanceof Wl);break;case Hn.Second:{this._tree.scrollTop=0;let i=!1;this._tree.focusFirst(void 0,n=>n.element instanceof Wl?i?!0:(i=!i,!1):!1);break}case Hn.Last:this._tree.scrollTop=this._tree.scrollHeight,this._tree.focusLast(void 0,i=>i.element instanceof Wl);break;case Hn.Next:{const i=this._tree.getFocus();this._tree.focusNext(void 0,this._shouldLoop,void 0,o=>o.element instanceof Wl?(this._tree.reveal(o.element),!0):!1);const n=this._tree.getFocus();i.length&&i[0]===n[0]&&i[0]===this._itemElements[this._itemElements.length-1]&&this._onLeave.fire();break}case Hn.Previous:{const i=this._tree.getFocus();this._tree.focusPrevious(void 0,this._shouldLoop,void 0,o=>{if(!(o.element instanceof Wl))return!1;const l=this._tree.getParentElement(o.element);return l===null||l.children[0]!==o.element?this._tree.reveal(o.element):this._tree.reveal(l),!0});const n=this._tree.getFocus();i.length&&i[0]===n[0]&&i[0]===this._itemElements[0]&&this._onLeave.fire();break}case Hn.NextPage:this._tree.focusNextPage(void 0,i=>i.element instanceof Wl?(this._tree.reveal(i.element),!0):!1);break;case Hn.PreviousPage:this._tree.focusPreviousPage(void 0,i=>{if(!(i.element instanceof Wl))return!1;const n=this._tree.getParentElement(i.element);return n===null||n.children[0]!==i.element?this._tree.reveal(i.element):this._tree.reveal(n),!0});break;case Hn.NextSeparator:{let i=!1;const n=this._tree.getFocus()[0];this._tree.focusNext(void 0,!0,void 0,l=>{if(i)return!0;if(l.element instanceof UF)i=!0,this._separatorRenderer.isSeparatorVisible(l.element)?this._tree.reveal(l.element.children[0]):this._tree.reveal(l.element,0);else if(l.element instanceof Wl){if(l.element.separator)return this._itemRenderer.isItemWithSeparatorVisible(l.element)?this._tree.reveal(l.element):this._tree.reveal(l.element,0),!0;if(l.element===this._elementTree[0])return this._tree.reveal(l.element,0),!0}return!1});const o=this._tree.getFocus()[0];n===o&&(this._tree.scrollTop=this._tree.scrollHeight,this._tree.focusLast(void 0,l=>l.element instanceof Wl));break}case Hn.PreviousSeparator:{let i,n=!!((t=this._tree.getFocus()[0])!=null&&t.separator);this._tree.focusPrevious(void 0,!0,void 0,o=>{if(o.element instanceof UF)n?i||(this._separatorRenderer.isSeparatorVisible(o.element)?this._tree.reveal(o.element):this._tree.reveal(o.element,0),i=o.element.children[0]):n=!0;else if(o.element instanceof Wl&&!i){if(o.element.separator)this._itemRenderer.isItemWithSeparatorVisible(o.element)?this._tree.reveal(o.element):this._tree.reveal(o.element,0),i=o.element;else if(o.element===this._elementTree[0])return this._tree.reveal(o.element,0),!0}return!1}),i&&this._tree.setFocus([i]);break}}}clearFocus(){this._tree.setFocus([])}domFocus(){this._tree.domFocus()}layout(e){this._tree.getHTMLElement().style.maxHeight=e?`${Math.floor(e/44)*44+6}px`:"",this._tree.layout()}filter(e){if(this._lastQueryString=e,!(this._sortByLabel||this._matchOnLabel||this._matchOnDescription||this._matchOnDetail))return this._tree.layout(),!1;const t=e;if(e=e.trim(),!e||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this._itemElements.forEach(i=>{i.labelHighlights=void 0,i.descriptionHighlights=void 0,i.detailHighlights=void 0,i.hidden=!1;const n=i.index&&this._inputElements[i.index-1];i.item&&(i.separator=n&&n.type==="separator"&&!n.buttons?n:void 0)});else{let i;this._itemElements.forEach(n=>{let o;this.matchOnLabelMode==="fuzzy"?o=this.matchOnLabel?A3(e,_y(n.saneLabel))??void 0:void 0:o=this.matchOnLabel?xHe(t,_y(n.saneLabel))??void 0:void 0;const l=this.matchOnDescription?A3(e,_y(n.saneDescription||""))??void 0:void 0,r=this.matchOnDetail?A3(e,_y(n.saneDetail||""))??void 0:void 0;if(o||l||r?(n.labelHighlights=o,n.descriptionHighlights=l,n.detailHighlights=r,n.hidden=!1):(n.labelHighlights=void 0,n.descriptionHighlights=void 0,n.detailHighlights=void 0,n.hidden=n.item?!n.item.alwaysShow:!0),n.item?n.separator=void 0:n.separator&&(n.hidden=!0),!this.sortByLabel){const a=n.index&&this._inputElements[n.index-1]||void 0;(a==null?void 0:a.type)==="separator"&&!a.buttons&&(i=a),i&&!n.hidden&&(n.separator=i,i=void 0)}})}return this._setElementsToTree(this._sortByLabel&&e?this._itemElements:this._elementTree),this._tree.layout(),!0}toggleCheckbox(){this._elementCheckedEventBufferer.bufferEvents(()=>{const e=this._tree.getFocus().filter(i=>i instanceof Wl),t=this._allVisibleChecked(e);for(const i of e)i.checkboxDisabled||(i.checked=!t)})}style(e){this._tree.style(e)}toggleHover(){const e=this._tree.getFocus()[0];if(!(e!=null&&e.saneTooltip)||!(e instanceof Wl))return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}this.showHover(e);const t=new Ze;t.add(this._tree.onDidChangeFocus(i=>{i.elements[0]instanceof Wl&&this.showHover(i.elements[0])})),this._lastHover&&t.add(this._lastHover),this._elementDisposable.add(t)}_setElementsToTree(e){const t=new Array;for(const i of e)i instanceof UF?t.push({element:i,collapsible:!1,collapsed:!1,children:i.children.map(n=>({element:n,collapsible:!1,collapsed:!1}))}):t.push({element:i,collapsible:!1,collapsed:!1});this._tree.setChildren(null,t)}_allVisibleChecked(e,t=!0){for(let i=0,n=e.length;i<n;i++){const o=e[i];if(!o.hidden)if(o.checked)t=!0;else return!1}return t}_updateCheckedObservables(){Ss(e=>{this._allVisibleCheckedObservable.set(this._allVisibleChecked(this._itemElements,!1),e);const t=this._itemElements.filter(i=>i.checked).length;this._checkedCountObservable.set(t,e),this._checkedElementsObservable.set(this.getCheckedElements(),e)})}showHover(e){var t,i,n;this._lastHover&&!this._lastHover.isDisposed&&((i=(t=this.hoverDelegate).onDidHideHover)==null||i.call(t),(n=this._lastHover)==null||n.dispose()),!(!e.element||!e.saneTooltip)&&(this._lastHover=this.hoverDelegate.showHover({content:e.saneTooltip,target:e.element,linkHandler:o=>{this.linkOpenerDelegate(o)},appearance:{showPointer:!0},container:this._container,position:{hoverPosition:1}},!1))}};HY([so],GM.prototype,"onDidChangeFocus",null);HY([so],GM.prototype,"onDidChangeSelection",null);GM=HY([CK(4,bt),CK(5,Qd)],GM);function xHe(s,e){const{text:t,iconOffsets:i}=e;if(!i||i.length===0)return Yre(s,t);const n=eB(t," "),o=t.length-n.length,l=Yre(s,n);if(l)for(const r of l){const a=i[r.start+o]+o;r.start+=a,r.end+=a}return l}function Yre(s,e){const t=e.toLowerCase().indexOf(s.toLowerCase());return t!==-1?[{start:t,end:t+s.length}]:null}function JHe(s,e,t){const i=s.labelHighlights||[],n=e.labelHighlights||[];return i.length&&!n.length?-1:!i.length&&n.length?1:i.length===0&&n.length===0?0:DHe(s.saneSortLabel,e.saneSortLabel,t)}const OUe={weight:200,when:Ne.and(Ne.equals(UUe,"quickPick"),bje),metadata:{description:U("quickPick","Used while in the context of the quick pick. If you change one keybinding for this command, you should change all of the other keybindings (modifier variants) of this command as well.")}};function ad(s,e={}){la.registerCommandAndKeybindingRule({...OUe,...s,secondary:XHe(s.primary,s.secondary??[],e)})}const jv=Fi?256:2048;function XHe(s,e,t={}){return t.withAltMod&&e.push(512+s),t.withCtrlMod&&(e.push(jv+s),t.withAltMod&&e.push(512+jv+s)),t.withCmdMod&&Fi&&(e.push(2048+s),t.withCtrlMod&&e.push(2048+256+s),t.withAltMod&&(e.push(2048+512+s),t.withCtrlMod&&e.push(2048+512+256+s))),e}function _d(s,e){return t=>{const i=t.get(nh).currentQuickInput;if(i)return e&&i.quickNavigate?i.focus(e):i.focus(s)}}ad({id:"quickInput.pageNext",primary:12,handler:_d(Hn.NextPage)},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});ad({id:"quickInput.pagePrevious",primary:11,handler:_d(Hn.PreviousPage)},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});ad({id:"quickInput.first",primary:jv+14,handler:_d(Hn.First)},{withAltMod:!0,withCmdMod:!0});ad({id:"quickInput.last",primary:jv+13,handler:_d(Hn.Last)},{withAltMod:!0,withCmdMod:!0});ad({id:"quickInput.next",primary:18,handler:_d(Hn.Next)},{withCtrlMod:!0});ad({id:"quickInput.previous",primary:16,handler:_d(Hn.Previous)},{withCtrlMod:!0});const zre=U("quickInput.nextSeparatorWithQuickAccessFallback","If we're in quick access mode, this will navigate to the next item. If we are not in quick access mode, this will navigate to the next separator."),_re=U("quickInput.previousSeparatorWithQuickAccessFallback","If we're in quick access mode, this will navigate to the previous item. If we are not in quick access mode, this will navigate to the previous separator.");Fi?(ad({id:"quickInput.nextSeparatorWithQuickAccessFallback",primary:2048+18,handler:_d(Hn.NextSeparator,Hn.Next),metadata:{description:zre}}),ad({id:"quickInput.nextSeparator",primary:2048+512+18,secondary:[2048+256+18],handler:_d(Hn.NextSeparator)},{withCtrlMod:!0}),ad({id:"quickInput.previousSeparatorWithQuickAccessFallback",primary:2048+16,handler:_d(Hn.PreviousSeparator,Hn.Previous),metadata:{description:_re}}),ad({id:"quickInput.previousSeparator",primary:2048+512+16,secondary:[2048+256+16],handler:_d(Hn.PreviousSeparator)},{withCtrlMod:!0})):(ad({id:"quickInput.nextSeparatorWithQuickAccessFallback",primary:512+18,handler:_d(Hn.NextSeparator,Hn.Next),metadata:{description:zre}}),ad({id:"quickInput.nextSeparator",primary:2048+512+18,handler:_d(Hn.NextSeparator)}),ad({id:"quickInput.previousSeparatorWithQuickAccessFallback",primary:512+16,handler:_d(Hn.PreviousSeparator,Hn.Previous),metadata:{description:_re}}),ad({id:"quickInput.previousSeparator",primary:2048+512+16,handler:_d(Hn.PreviousSeparator)}));ad({id:"quickInput.acceptInBackground",when:Ne.and(OUe.when,Ne.or(kUe.negate(),Fje)),primary:17,weight:200+50,handler:s=>{const e=s.get(nh).currentQuickInput;e==null||e.accept(!0)}},{withAltMod:!0,withCtrlMod:!0,withCmdMod:!0});var YHe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Y3=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},MK;const $a=Ge;var XV;let TK=(XV=class extends de{get currentQuickInput(){return this.controller??void 0}get container(){return this._container}constructor(e,t,i,n){super(),this.options=e,this.layoutService=t,this.instantiationService=i,this.contextKeyService=n,this.enabled=!0,this.onDidAcceptEmitter=this._register(new re),this.onDidCustomEmitter=this._register(new re),this.onDidTriggerButtonEmitter=this._register(new re),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new re),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new re),this.onHide=this.onHideEmitter.event,this.inQuickInputContext=gje.bindTo(this.contextKeyService),this.quickInputTypeContext=Uje.bindTo(this.contextKeyService),this.endOfQuickInputBoxContext=fje.bindTo(this.contextKeyService),this.idPrefix=e.idPrefix,this._container=e.container,this.styles=e.styles,this._register(ve.runAndSubscribe(tY,({window:o,disposables:l})=>this.registerKeyModsListeners(o,l),{window:Qn,disposables:this._store})),this._register(ZEe(o=>{this.ui&&Wt(this.ui.container)===o&&(this.reparentUI(this.layoutService.mainContainer),this.layout(this.layoutService.mainContainerDimension,this.layoutService.mainContainerOffset.quickPickTop))}))}registerKeyModsListeners(e,t){const i=n=>{this.keyMods.ctrlCmd=n.ctrlKey||n.metaKey,this.keyMods.alt=n.altKey};for(const n of[De.KEY_DOWN,De.KEY_UP,De.MOUSE_DOWN])t.add(ge(e,n,i,!0))}getUI(e){if(this.ui)return e&&Wt(this._container)!==Wt(this.layoutService.activeContainer)&&(this.reparentUI(this.layoutService.activeContainer),this.layout(this.layoutService.activeContainerDimension,this.layoutService.activeContainerOffset.quickPickTop)),this.ui;const t=ye(this._container,$a(".quick-input-widget.show-file-icons"));t.tabIndex=-1,t.style.display="none";const i=cc(t),n=ye(t,$a(".quick-input-titlebar")),o=this._register(new ac(n,{hoverDelegate:this.options.hoverDelegate}));o.domNode.classList.add("quick-input-left-action-bar");const l=ye(n,$a(".quick-input-title")),r=this._register(new ac(n,{hoverDelegate:this.options.hoverDelegate}));r.domNode.classList.add("quick-input-right-action-bar");const a=ye(t,$a(".quick-input-header")),d=ye(a,$a("input.quick-input-check-all"));d.type="checkbox",d.setAttribute("aria-label",U("quickInput.checkAll","Toggle all checkboxes")),this._register(Ms(d,De.CHANGE,X=>{const ie=d.checked;P.setAllVisibleChecked(ie)})),this._register(ge(d,De.CLICK,X=>{(X.x||X.y)&&m.setFocus()}));const c=ye(a,$a(".quick-input-description")),h=ye(a,$a(".quick-input-and-message")),u=ye(h,$a(".quick-input-filter")),m=this._register(new Cje(u,this.styles.inputBox,this.styles.toggle));m.setAttribute("aria-describedby",`${this.idPrefix}message`);const p=ye(u,$a(".quick-input-visible-count"));p.setAttribute("aria-live","polite"),p.setAttribute("aria-atomic","true");const g=new ZK(p,{countFormat:U({key:"quickInput.visibleCount",comment:["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]},"{0} Results")},this.styles.countBadge),b=ye(u,$a(".quick-input-count"));b.setAttribute("aria-live","polite");const f=new ZK(b,{countFormat:U({key:"quickInput.countSelected",comment:["This tells the user how many items are selected in a list of items to select from. The items can be anything."]},"{0} Selected")},this.styles.countBadge),Z=this._register(new ac(a,{hoverDelegate:this.options.hoverDelegate}));Z.domNode.classList.add("quick-input-inline-action-bar");const A=ye(a,$a(".quick-input-action")),N=this._register(new kv(A,this.styles.button));N.label=U("ok","OK"),this._register(N.onDidClick(X=>{this.onDidAcceptEmitter.fire()}));const W=ye(a,$a(".quick-input-action")),Q=this._register(new kv(W,{...this.styles.button,supportIcons:!0}));Q.label=U("custom","Custom"),this._register(Q.onDidClick(X=>{this.onDidCustomEmitter.fire()}));const R=ye(h,$a(`#${this.idPrefix}message.quick-input-message`)),M=this._register(new AK(t,this.styles.progressBar));M.getContainer().classList.add("quick-input-progress");const w=ye(t,$a(".quick-input-html-widget"));w.tabIndex=-1;const Y=ye(t,$a(".quick-input-description")),G=this.idPrefix+"list",P=this._register(this.instantiationService.createInstance(GM,t,this.options.hoverDelegate,this.options.linkOpenerDelegate,G));m.setAttribute("aria-controls",G),this._register(P.onDidChangeFocus(()=>{m.setAttribute("aria-activedescendant",P.getActiveDescendant()??"")})),this._register(P.onChangedAllVisibleChecked(X=>{d.checked=X})),this._register(P.onChangedVisibleCount(X=>{g.setCount(X)})),this._register(P.onChangedCheckedCount(X=>{f.setCount(X)})),this._register(P.onLeave(()=>{setTimeout(()=>{this.controller&&(m.setFocus(),this.controller instanceof Lv&&this.controller.canSelectMany&&P.clearFocus())},0)}));const j=Hu(t);return this._register(j),this._register(ge(t,De.FOCUS,X=>{const ie=this.getUI();if(Jo(X.relatedTarget,ie.inputContainer)){const se=ie.inputBox.isSelectionAtEnd();this.endOfQuickInputBoxContext.get()!==se&&this.endOfQuickInputBoxContext.set(se)}Jo(X.relatedTarget,ie.container)||(this.inQuickInputContext.set(!0),this.previousFocusElement=Yo(X.relatedTarget)?X.relatedTarget:void 0)},!0)),this._register(j.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(gV.Blur),this.inQuickInputContext.set(!1),this.endOfQuickInputBoxContext.set(!1),this.previousFocusElement=void 0})),this._register(m.onKeyDown(X=>{const ie=this.getUI().inputBox.isSelectionAtEnd();this.endOfQuickInputBoxContext.get()!==ie&&this.endOfQuickInputBoxContext.set(ie)})),this._register(ge(t,De.FOCUS,X=>{m.setFocus()})),this._register(Ms(t,De.KEY_DOWN,X=>{if(!Jo(X.target,w))switch(X.keyCode){case 3:yi.stop(X,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:yi.stop(X,!0),this.hide(gV.Gesture);break;case 2:if(!X.altKey&&!X.ctrlKey&&!X.metaKey){const ie=[".quick-input-list .monaco-action-bar .always-visible",".quick-input-list-entry:hover .monaco-action-bar",".monaco-list-row.focused .monaco-action-bar"];if(t.classList.contains("show-checkboxes")?ie.push("input"):ie.push("input[type=text]"),this.getUI().list.displayed&&ie.push(".monaco-list"),this.getUI().message&&ie.push(".quick-input-message a"),this.getUI().widget){if(Jo(X.target,this.getUI().widget))break;ie.push(".quick-input-html-widget")}const se=t.querySelectorAll(ie.join(", "));X.shiftKey&&X.target===se[0]?(yi.stop(X,!0),P.clearFocus()):!X.shiftKey&&Jo(X.target,se[se.length-1])&&(yi.stop(X,!0),se[0].focus())}break;case 10:X.ctrlKey&&(yi.stop(X,!0),this.getUI().list.toggleHover());break}})),this.ui={container:t,styleSheet:i,leftActionBar:o,titleBar:n,title:l,description1:Y,description2:c,widget:w,rightActionBar:r,inlineActionBar:Z,checkAll:d,inputContainer:h,filterContainer:u,inputBox:m,visibleCountContainer:p,visibleCount:g,countContainer:b,count:f,okContainer:A,ok:N,message:R,customButtonContainer:W,customButton:Q,list:P,progressBar:M,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:X=>this.show(X),hide:()=>this.hide(),setVisibilities:X=>this.setVisibilities(X),setEnabled:X=>this.setEnabled(X),setContextKey:X=>this.options.setContextKey(X),linkOpenerDelegate:X=>this.options.linkOpenerDelegate(X)},this.updateStyles(),this.ui}reparentUI(e){this.ui&&(this._container=e,ye(this._container,this.ui.container))}pick(e,t={},i=$t.None){return new Promise((n,o)=>{let l=c=>{var h;l=n,(h=t.onKeyMods)==null||h.call(t,r.keyMods),n(c)};if(i.isCancellationRequested){l(void 0);return}const r=this.createQuickPick({useSeparators:!0});let a;const d=[r,r.onDidAccept(()=>{if(r.canSelectMany)l(r.selectedItems.slice()),r.hide();else{const c=r.activeItems[0];c&&(l(c),r.hide())}}),r.onDidChangeActive(c=>{const h=c[0];h&&t.onDidFocus&&t.onDidFocus(h)}),r.onDidChangeSelection(c=>{if(!r.canSelectMany){const h=c[0];h&&(l(h),r.hide())}}),r.onDidTriggerItemButton(c=>t.onDidTriggerItemButton&&t.onDidTriggerItemButton({...c,removeItem:()=>{const h=r.items.indexOf(c.item);if(h!==-1){const u=r.items.slice(),m=u.splice(h,1),p=r.activeItems.filter(b=>b!==m[0]),g=r.keepScrollPosition;r.keepScrollPosition=!0,r.items=u,p&&(r.activeItems=p),r.keepScrollPosition=g}}})),r.onDidTriggerSeparatorButton(c=>{var h;return(h=t.onDidTriggerSeparatorButton)==null?void 0:h.call(t,c)}),r.onDidChangeValue(c=>{a&&!c&&(r.activeItems.length!==1||r.activeItems[0]!==a)&&(r.activeItems=[a])}),i.onCancellationRequested(()=>{r.hide()}),r.onDidHide(()=>{Tn(d),l(void 0)})];r.title=t.title,t.value&&(r.value=t.value),r.canSelectMany=!!t.canPickMany,r.placeholder=t.placeHolder,r.ignoreFocusOut=!!t.ignoreFocusLost,r.matchOnDescription=!!t.matchOnDescription,r.matchOnDetail=!!t.matchOnDetail,r.matchOnLabel=t.matchOnLabel===void 0||t.matchOnLabel,r.quickNavigate=t.quickNavigate,r.hideInput=!!t.hideInput,r.contextKey=t.contextKey,r.busy=!0,Promise.all([e,t.activeItem]).then(([c,h])=>{a=h,r.busy=!1,r.items=c,r.canSelectMany&&(r.selectedItems=c.filter(u=>u.type!=="separator"&&u.picked)),a&&(r.activeItems=[a])}),r.show(),Promise.resolve(e).then(void 0,c=>{o(c),r.hide()})})}createQuickPick(e={useSeparators:!1}){const t=this.getUI(!0);return new Lv(t)}createInputBox(){const e=this.getUI(!0);return new Zje(e)}show(e){const t=this.getUI(!0);this.onShowEmitter.fire();const i=this.controller;this.controller=e,i==null||i.didHide(),this.setEnabled(!0),t.leftActionBar.clear(),t.title.textContent="",t.description1.textContent="",t.description2.textContent="",Zl(t.widget),t.rightActionBar.clear(),t.inlineActionBar.clear(),t.checkAll.checked=!1,t.inputBox.placeholder="",t.inputBox.password=!1,t.inputBox.showDecoration(to.Ignore),t.visibleCount.setCount(0),t.count.setCount(0),Zl(t.message),t.progressBar.stop(),t.list.setElements([]),t.list.matchOnDescription=!1,t.list.matchOnDetail=!1,t.list.matchOnLabel=!0,t.list.sortByLabel=!0,t.ignoreFocusOut=!1,t.inputBox.toggles=void 0;const n=this.options.backKeybindingLabel();fK.tooltip=n?U("quickInput.backWithKeybinding","Back ({0})",n):U("quickInput.back","Back"),t.container.style.display="",this.updateLayout(),t.inputBox.setFocus(),this.quickInputTypeContext.set(e.type)}isVisible(){return!!this.ui&&this.ui.container.style.display!=="none"}setVisibilities(e){const t=this.getUI();t.title.style.display=e.title?"":"none",t.description1.style.display=e.description&&(e.inputBox||e.checkAll)?"":"none",t.description2.style.display=e.description&&!(e.inputBox||e.checkAll)?"":"none",t.checkAll.style.display=e.checkAll?"":"none",t.inputContainer.style.display=e.inputBox?"":"none",t.filterContainer.style.display=e.inputBox?"":"none",t.visibleCountContainer.style.display=e.visibleCount?"":"none",t.countContainer.style.display=e.count?"":"none",t.okContainer.style.display=e.ok?"":"none",t.customButtonContainer.style.display=e.customButton?"":"none",t.message.style.display=e.message?"":"none",t.progressBar.getContainer().style.display=e.progressBar?"":"none",t.list.displayed=!!e.list,t.container.classList.toggle("show-checkboxes",!!e.checkBox),t.container.classList.toggle("hidden-input",!e.inputBox&&!e.description),this.updateLayout()}setEnabled(e){if(e!==this.enabled){this.enabled=e;for(const t of this.getUI().leftActionBar.viewItems)t.action.enabled=e;for(const t of this.getUI().rightActionBar.viewItems)t.action.enabled=e;this.getUI().checkAll.disabled=!e,this.getUI().inputBox.enabled=e,this.getUI().ok.enabled=e,this.getUI().list.enabled=e}}hide(e){var o;const t=this.controller;if(!t)return;t.willHide(e);const i=(o=this.ui)==null?void 0:o.container,n=i&&!Sge(i);if(this.controller=null,this.onHideEmitter.fire(),i&&(i.style.display="none"),!n){let l=this.previousFocusElement;for(;l&&!l.offsetParent;)l=l.parentElement??void 0;l!=null&&l.offsetParent?(l.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}t.didHide(e)}layout(e,t){this.dimension=e,this.titleBarOffset=t,this.updateLayout()}updateLayout(){if(this.ui&&this.isVisible()){this.ui.container.style.top=`${this.titleBarOffset}px`;const e=this.ui.container.style,t=Math.min(this.dimension.width*.62,MK.MAX_WIDTH);e.width=t+"px",e.marginLeft="-"+t/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(e){this.styles=e,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:e,quickInputBackground:t,quickInputForeground:i,widgetBorder:n,widgetShadow:o}=this.styles.widget;this.ui.titleBar.style.backgroundColor=e??"",this.ui.container.style.backgroundColor=t??"",this.ui.container.style.color=i??"",this.ui.container.style.border=n?`1px solid ${n}`:"",this.ui.container.style.boxShadow=o?`0 0 8px 2px ${o}`:"",this.ui.list.style(this.styles.list);const l=[];this.styles.pickerGroup.pickerGroupBorder&&l.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&l.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&l.push(".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(l.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&l.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&l.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&l.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&l.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&l.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),l.push("}"));const r=l.join(`
- `);r!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=r)}}},MK=XV,XV.MAX_WIDTH=600,XV);TK=MK=YHe([Y3(1,pf),Y3(2,bt),Y3(3,wt)],TK);var zHe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},X1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let BK=class extends kJe{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get currentQuickInput(){return this.controller.currentQuickInput}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(UK))),this._quickAccess}constructor(e,t,i,n,o){super(i),this.instantiationService=e,this.contextKeyService=t,this.layoutService=n,this.configurationService=o,this._onShow=this._register(new re),this._onHide=this._register(new re),this.contexts=new Map}createController(e=this.layoutService,t){const i={idPrefix:"quickInput_",container:e.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:o=>this.setContextKey(o),linkOpenerDelegate:o=>{this.instantiationService.invokeFunction(l=>{l.get(za).open(o,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>e.focus(),styles:this.computeStyles(),hoverDelegate:this._register(this.instantiationService.createInstance(FK))},n=this._register(this.instantiationService.createInstance(TK,{...i,...t}));return n.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop),this._register(e.onDidLayoutActiveContainer(o=>{Wt(e.activeContainer)===Wt(n.container)&&n.layout(o,e.activeContainerOffset.quickPickTop)})),this._register(e.onDidChangeActiveContainer(()=>{n.isVisible()||n.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop)})),this._register(n.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(n.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),n}setContextKey(e){let t;e&&(t=this.contexts.get(e),t||(t=new Ke(e,!1).bindTo(this.contextKeyService),this.contexts.set(e,t))),!(t&&t.get())&&(this.resetContextKeys(),t==null||t.set(!0))}resetContextKeys(){this.contexts.forEach(e=>{e.get()&&e.reset()})}pick(e,t,i=$t.None){return this.controller.pick(e,t,i)}createQuickPick(e={useSeparators:!1}){return this.controller.createQuickPick(e)}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:$e(Fle),quickInputForeground:$e(K5e),quickInputTitleBackground:$e(q5e),widgetBorder:$e(L0e),widgetShadow:$e(zQ)},inputBox:Rv,toggle:Nv,countBadge:Bbe,button:B3e,progressBar:L3e,keybindingLabel:T3e,list:eN({listBackground:Fle,listFocusBackground:ZM,listFocusForeground:FM,listInactiveFocusForeground:FM,listInactiveSelectionIconForeground:uee,listInactiveFocusBackground:ZM,listFocusOutline:hs,listInactiveFocusOutline:hs}),pickerGroup:{pickerGroupBorder:$e($5e),pickerGroupForeground:$e(Y0e)}}}};BK=zHe([X1(0,bt),X1(1,wt),X1(2,Do),X1(3,pf),X1(4,li)],BK);var jUe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},oZ=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let LK=class extends BK{constructor(e,t,i,n,o,l){super(t,i,n,new eP(e.getContainerDomNode(),o),l),this.host=void 0;const r=EM.get(e);if(r){const a=r.widget;this.host={_serviceBrand:void 0,get mainContainer(){return a.getDomNode()},getContainer(){return a.getDomNode()},whenContainerStylesLoaded(){},get containers(){return[a.getDomNode()]},get activeContainer(){return a.getDomNode()},get mainContainerDimension(){return e.getLayoutInfo()},get activeContainerDimension(){return e.getLayoutInfo()},get onDidLayoutMainContainer(){return e.onDidLayoutChange},get onDidLayoutActiveContainer(){return e.onDidLayoutChange},get onDidLayoutContainer(){return ve.map(e.onDidLayoutChange,d=>({container:a.getDomNode(),dimension:d}))},get onDidChangeActiveContainer(){return ve.None},get onDidAddContainer(){return ve.None},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>e.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};LK=jUe([oZ(1,bt),oZ(2,wt),oZ(3,Do),oZ(4,zi),oZ(5,li)],LK);let kK=class{get activeService(){const e=this.codeEditorService.getFocusedCodeEditor();if(!e)throw new Error("Quick input service needs a focused editor to work.");let t=this.mapEditorToService.get(e);if(!t){const i=t=this.instantiationService.createInstance(LK,e);this.mapEditorToService.set(e,t),zU(e.onDidDispose)(()=>{i.dispose(),this.mapEditorToService.delete(e)})}return t}get currentQuickInput(){return this.activeService.currentQuickInput}get quickAccess(){return this.activeService.quickAccess}constructor(e,t){this.instantiationService=e,this.codeEditorService=t,this.mapEditorToService=new Map}pick(e,t,i=$t.None){return this.activeService.pick(e,t,i)}createQuickPick(e={useSeparators:!1}){return this.activeService.createQuickPick(e)}createInputBox(){return this.activeService.createInputBox()}};kK=jUe([oZ(0,bt),oZ(1,zi)],kK);const QX=class QX{static get(e){return e.getContribution(QX.ID)}constructor(e){this.editor=e,this.widget=new IK(this.editor)}dispose(){this.widget.dispose()}};QX.ID="editor.controller.quickInput";let EM=QX;const yX=class yX{constructor(e){this.codeEditor=e,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return yX.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}};yX.ID="editor.contrib.quickInputWidget";let IK=yX;Gi(EM.ID,EM,4);class _He{constructor(e,t,i,n,o){this._parsedThemeRuleBrand=void 0,this.token=e,this.index=t,this.fontStyle=i,this.foreground=n,this.background=o}}function OHe(s){if(!s||!Array.isArray(s))return[];const e=[];let t=0;for(let i=0,n=s.length;i<n;i++){const o=s[i];let l=-1;if(typeof o.fontStyle=="string"){l=0;const d=o.fontStyle.split(" ");for(let c=0,h=d.length;c<h;c++)switch(d[c]){case"italic":l=l|1;break;case"bold":l=l|2;break;case"underline":l=l|4;break;case"strikethrough":l=l|8;break}}let r=null;typeof o.foreground=="string"&&(r=o.foreground);let a=null;typeof o.background=="string"&&(a=o.background),e[t++]=new _He(o.token||"",i,l,r,a)}return e}function jHe(s,e){s.sort((c,h)=>{const u=$He(c.token,h.token);return u!==0?u:c.index-h.index});let t=0,i="000000",n="ffffff";for(;s.length>=1&&s[0].token==="";){const c=s.shift();c.fontStyle!==-1&&(t=c.fontStyle),c.foreground!==null&&(i=c.foreground),c.background!==null&&(n=c.background)}const o=new PHe;for(const c of e)o.getId(c);const l=o.getId(i),r=o.getId(n),a=new ute(t,l,r),d=new mte(a);for(let c=0,h=s.length;c<h;c++){const u=s[c];d.insert(u.token,u.fontStyle,o.getId(u.foreground),o.getId(u.background))}return new HUe(o,d)}const HHe=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;class PHe{constructor(){this._lastColorId=0,this._id2color=[],this._color2id=new Map}getId(e){if(e===null)return 0;const t=e.match(HHe);if(!t)throw new Error("Illegal value for token color: "+e);e=t[1].toUpperCase();let i=this._color2id.get(e);return i||(i=++this._lastColorId,this._color2id.set(e,i),this._id2color[i]=Re.fromHex("#"+e),i)}getColorMap(){return this._id2color.slice(0)}}class HUe{static createFromRawTokenTheme(e,t){return this.createFromParsedTokenTheme(OHe(e),t)}static createFromParsedTokenTheme(e,t){return jHe(e,t)}constructor(e,t){this._colorMap=e,this._root=t,this._cache=new Map}getColorMap(){return this._colorMap.getColorMap()}_match(e){return this._root.match(e)}match(e,t){let i=this._cache.get(t);if(typeof i>"u"){const n=this._match(t),o=qHe(t);i=(n.metadata|o<<8)>>>0,this._cache.set(t,i)}return(i|e<<0)>>>0}}const KHe=/\b(comment|string|regex|regexp)\b/;function qHe(s){const e=s.match(KHe);if(!e)return 0;switch(e[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"regexp":return 3}throw new Error("Unexpected match for standard token type!")}function $He(s,e){return s<e?-1:s>e?1:0}class ute{constructor(e,t,i){this._themeTrieElementRuleBrand=void 0,this._fontStyle=e,this._foreground=t,this._background=i,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new ute(this._fontStyle,this._foreground,this._background)}acceptOverwrite(e,t,i){e!==-1&&(this._fontStyle=e),t!==0&&(this._foreground=t),i!==0&&(this._background=i),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class mte{constructor(e){this._themeTrieElementBrand=void 0,this._mainRule=e,this._children=new Map}match(e){if(e==="")return this._mainRule;const t=e.indexOf(".");let i,n;t===-1?(i=e,n=""):(i=e.substring(0,t),n=e.substring(t+1));const o=this._children.get(i);return typeof o<"u"?o.match(n):this._mainRule}insert(e,t,i,n){if(e===""){this._mainRule.acceptOverwrite(t,i,n);return}const o=e.indexOf(".");let l,r;o===-1?(l=e,r=""):(l=e.substring(0,o),r=e.substring(o+1));let a=this._children.get(l);typeof a>"u"&&(a=new mte(this._mainRule.clone()),this._children.set(l,a)),a.insert(r,t,i,n)}}function ePe(s){const e=[];for(let t=1,i=s.length;t<i;t++){const n=s[t];e[t]=`.mtk${t} { color: ${n}; }`}return e.push(".mtki { font-style: italic; }"),e.push(".mtkb { font-weight: bold; }"),e.push(".mtku { text-decoration: underline; text-underline-position: under; }"),e.push(".mtks { text-decoration: line-through; }"),e.push(".mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }"),e.join(`
- `)}const tPe={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[$h]:"#FFFFFE",[Dp]:"#000000",[T0e]:"#E5EBF1",[ZB]:"#D3D3D3",[AB]:"#939393",[lee]:"#ADD6FF4D"}},iPe={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[$h]:"#1E1E1E",[Dp]:"#D4D4D4",[T0e]:"#3A3D41",[ZB]:"#404040",[AB]:"#707070",[lee]:"#ADD6FF26"}},nPe={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[$h]:"#000000",[Dp]:"#FFFFFF",[ZB]:"#FFFFFF",[AB]:"#FFFFFF"}},sPe={base:"hc-light",inherit:!1,rules:[{token:"",foreground:"292929",background:"FFFFFF"},{token:"invalid",foreground:"B5200D"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"264F70"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"B5200D"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"264F78"},{token:"attribute.value",foreground:"0451A5"},{token:"string",foreground:"A31515"},{token:"string.sql",foreground:"B5200D"},{token:"keyword",foreground:"0000FF"},{token:"keyword.flow",foreground:"AF00DB"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[$h]:"#FFFFFF",[Dp]:"#292929",[ZB]:"#292929",[AB]:"#292929"}},oPe={IconContribution:"base.contributions.icons"};var Ore;(function(s){function e(t,i){let n=t.defaults;for(;Qt.isThemeIcon(n);){const o=nN.getIcon(n.id);if(!o)return;n=o.defaults}return n}s.getDefinition=e})(Ore||(Ore={}));var jre;(function(s){function e(i){return{weight:i.weight,style:i.style,src:i.src.map(n=>({format:n.format,location:n.location.toString()}))}}s.toJSONObject=e;function t(i){const n=o=>Da(o)?o:void 0;if(i&&Array.isArray(i.src)&&i.src.every(o=>Da(o.format)&&Da(o.location)))return{weight:n(i.weight),style:n(i.style),src:i.src.map(o=>({format:o.format,location:At.parse(o.location)}))}}s.fromJSONObject=t})(jre||(jre={}));class lPe{constructor(){this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:U("iconDefinition.fontId","The id of the font to use. If not set, the font that is defined first is used.")},fontCharacter:{type:"string",description:U("iconDefinition.fontCharacter","The font character associated with the icon definition.")}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:`^${Qt.iconNameExpression}$`,enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(e,t,i,n){const o=this.iconsById[e];if(o){if(i&&!o.description){o.description=i,this.iconSchema.properties[e].markdownDescription=`${i} $(${e})`;const a=this.iconReferenceSchema.enum.indexOf(e);a!==-1&&(this.iconReferenceSchema.enumDescriptions[a]=i),this._onDidChange.fire()}return o}const l={id:e,description:i,defaults:t,deprecationMessage:n};this.iconsById[e]=l;const r={$ref:"#/definitions/icons"};return n&&(r.deprecationMessage=n),i&&(r.markdownDescription=`${i}: $(${e})`),this.iconSchema.properties[e]=r,this.iconReferenceSchema.enum.push(e),this.iconReferenceSchema.enumDescriptions.push(i||""),this._onDidChange.fire(),{id:e}}getIcons(){return Object.keys(this.iconsById).map(e=>this.iconsById[e])}getIcon(e){return this.iconsById[e]}getIconSchema(){return this.iconSchema}toString(){const e=(o,l)=>o.id.localeCompare(l.id),t=o=>{for(;Qt.isThemeIcon(o.defaults);)o=this.iconsById[o.defaults.id];return`codicon codicon-${o?o.id:""}`},i=[];i.push("| preview | identifier | default codicon ID | description"),i.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");const n=Object.keys(this.iconsById).map(o=>this.iconsById[o]);for(const o of n.filter(l=>!!l.description).sort(e))i.push(`|<i class="${t(o)}"></i>|${o.id}|${Qt.isThemeIcon(o.defaults)?o.defaults.id:o.id}|${o.description||""}|`);i.push("| preview | identifier "),i.push("| ----------- | --------------------------------- |");for(const o of n.filter(l=>!Qt.isThemeIcon(l.defaults)).sort(e))i.push(`|<i class="${t(o)}"></i>|${o.id}|`);return i.join(`
- `)}}const nN=new lPe;Vs.add(oPe.IconContribution,nN);function ts(s,e,t,i){return nN.registerIcon(s,e,t,i)}function PUe(){return nN}function rPe(){const s=zpe();for(const e in s){const t="\\"+s[e].toString(16);nN.registerIcon(e,{fontCharacter:t})}}rPe();const KUe="vscode://schemas/icons",qUe=Vs.as(bY.JSONContribution);qUe.registerSchema(KUe,nN.getIconSchema());const Hre=new Rn(()=>qUe.notifySchemaChanged(KUe),200);nN.onDidChange(()=>{Hre.isScheduled()||Hre.schedule()});const $Ue=ts("widget-close",ke.close,U("widgetClose","Icon for the close action in widgets."));ts("goto-previous-location",ke.arrowUp,U("previousChangeIcon","Icon for goto previous editor location."));ts("goto-next-location",ke.arrowDown,U("nextChangeIcon","Icon for goto next editor location."));Qt.modify(ke.sync,"spin");Qt.modify(ke.loading,"spin");function aPe(s){const e=new Ze,t=e.add(new re),i=PUe();return e.add(i.onDidChange(()=>t.fire())),s&&e.add(s.onDidProductIconThemeChange(()=>t.fire())),{dispose:()=>e.dispose(),onDidChange:t.event,getCSS(){const n=s?s.getProductIconTheme():new efe,o={},l=[],r=[];for(const a of i.getIcons()){const d=n.getIcon(a);if(!d)continue;const c=d.font,h=`--vscode-icon-${a.id}-font-family`,u=`--vscode-icon-${a.id}-content`;c?(o[c.id]=c.definition,r.push(`${h}: ${P9(c.id)};`,`${u}: '${d.fontCharacter}';`),l.push(`.codicon-${a.id}:before { content: '${d.fontCharacter}'; font-family: ${P9(c.id)}; }`)):(r.push(`${u}: '${d.fontCharacter}'; ${h}: 'codicon';`),l.push(`.codicon-${a.id}:before { content: '${d.fontCharacter}'; }`))}for(const a in o){const d=o[a],c=d.weight?`font-weight: ${d.weight};`:"",h=d.style?`font-style: ${d.style};`:"",u=d.src.map(m=>`${R0(m.location)} format('${m.format}')`).join(", ");l.push(`@font-face { src: ${u}; font-family: ${P9(a)};${c}${h} font-display: block; }`)}return l.push(`:root { ${r.join(" ")} }`),l.join(`
- `)}}}class efe{getIcon(e){const t=PUe();let i=e.defaults;for(;Qt.isThemeIcon(i);){const n=t.getIcon(i.id);if(!n)return;i=n.defaults}return i}}const Jg="vs",QW="vs-dark",HZ="hc-black",PZ="hc-light",tfe=Vs.as(V0e.ColorContribution),dPe=Vs.as(c0e.ThemingContribution);class ife{constructor(e,t){this.semanticHighlighting=!1,this.themeData=t;const i=t.base;e.length>0?(bD(e)?this.id=e:this.id=i+" "+e,this.themeName=e):(this.id=i,this.themeName=i),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const e=new Map;for(const t in this.themeData.colors)e.set(t,Re.fromHex(this.themeData.colors[t]));if(this.themeData.inherit){const t=DK(this.themeData.base);for(const i in t.colors)e.has(i)||e.set(i,Re.fromHex(t.colors[i]))}this.colors=e}return this.colors}getColor(e,t){const i=this.getColors().get(e);if(i)return i;if(t!==!1)return this.getDefault(e)}getDefault(e){let t=this.defaultColors[e];return t||(t=tfe.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)}defines(e){return this.getColors().has(e)}get type(){switch(this.base){case Jg:return Jc.LIGHT;case HZ:return Jc.HIGH_CONTRAST_DARK;case PZ:return Jc.HIGH_CONTRAST_LIGHT;default:return Jc.DARK}}get tokenTheme(){if(!this._tokenTheme){let e=[],t=[];if(this.themeData.inherit){const o=DK(this.themeData.base);e=o.rules,o.encodedTokensColors&&(t=o.encodedTokensColors)}const i=this.themeData.colors["editor.foreground"],n=this.themeData.colors["editor.background"];if(i||n){const o={token:""};i&&(o.foreground=i),n&&(o.background=n),e.push(o)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=HUe.createFromRawTokenTheme(e,t)}return this._tokenTheme}getTokenStyleMetadata(e,t,i){const o=this.tokenTheme._match([e].concat(t).join(".")).metadata,l=Ta.getForeground(o),r=Ta.getFontStyle(o);return{foreground:l,italic:!!(r&1),bold:!!(r&2),underline:!!(r&4),strikethrough:!!(r&8)}}}function bD(s){return s===Jg||s===QW||s===HZ||s===PZ}function DK(s){switch(s){case Jg:return tPe;case QW:return iPe;case HZ:return nPe;case PZ:return sPe}}function ak(s){const e=DK(s);return new ife(s,e)}class cPe extends de{constructor(){super(),this._onColorThemeChange=this._register(new re),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new re),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new efe,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(Jg,ak(Jg)),this._knownThemes.set(QW,ak(QW)),this._knownThemes.set(HZ,ak(HZ)),this._knownThemes.set(PZ,ak(PZ));const e=this._register(aPe(this));this._codiconCSS=e.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS}
- ${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(Jg),this._onOSSchemeChanged(),this._register(e.onDidChange(()=>{this._codiconCSS=e.getCSS(),this._updateCSS()})),sge(Qn,"(forced-colors: active)",()=>{this._onOSSchemeChanged()})}registerEditorContainer(e){return XE(e)?this._registerShadowDomContainer(e):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=cc(void 0,e=>{e.className="monaco-colors",e.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),de.None}_registerShadowDomContainer(e){const t=cc(e,i=>{i.className="monaco-colors",i.textContent=this._allCSS});return this._styleElements.push(t),{dispose:()=>{for(let i=0;i<this._styleElements.length;i++)if(this._styleElements[i]===t){this._styleElements.splice(i,1);return}}}}defineTheme(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!bD(t.base)&&!bD(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new ife(e,t)),bD(e)&&this._knownThemes.forEach(i=>{i.base===e&&i.notifyBaseUpdated()}),this._theme.themeName===e&&this.setTheme(e)}getColorTheme(){return this._theme}setColorMapOverride(e){this._colorMapOverride=e,this._updateThemeOrColorMap()}setTheme(e){let t;this._knownThemes.has(e)?t=this._knownThemes.get(e):t=this._knownThemes.get(Jg),this._updateActualTheme(t)}_updateActualTheme(e){!e||this._theme===e||(this._theme=e,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const e=Qn.matchMedia("(forced-colors: active)").matches;if(e!==Yu(this._theme.type)){let t;nV(this._theme.type)?t=e?HZ:QW:t=e?PZ:Jg,this._updateActualTheme(this._knownThemes.get(t))}}}setAutoDetectHighContrast(e){this._autoDetectHighContrast=e,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const e=[],t={},i={addRule:l=>{t[l]||(e.push(l),t[l]=!0)}};dPe.getThemingParticipants().forEach(l=>l(this._theme,i,this._environment));const n=[];for(const l of tfe.getColors()){const r=this._theme.getColor(l.id,!0);r&&n.push(`${nee(l.id)}: ${r.toString()};`)}i.addRule(`.monaco-editor, .monaco-diff-editor, .monaco-component { ${n.join(`
- `)} }`);const o=this._colorMapOverride||this._theme.tokenTheme.getColorMap();i.addRule(ePe(o)),this._themeCSS=e.join(`
- `),this._updateCSS(),Ds.setColorMap(o),this._onColorThemeChange.fire(this._theme)}_updateCSS(){this._allCSS=`${this._codiconCSS}
- ${this._themeCSS}`,this._styleElements.forEach(e=>e.textContent=this._allCSS)}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}const fc=Zi("themeService");var hPe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},z3=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let GK=class extends de{constructor(e,t,i){super(),this._contextKeyService=e,this._layoutService=t,this._configurationService=i,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new re,this._onDidChangeReducedMotion=new re,this._onDidChangeLinkUnderline=new re,this._accessibilityModeEnabledContext=hB.bindTo(this._contextKeyService);const n=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(l=>{l.affectsConfiguration("editor.accessibilitySupport")&&(n(),this._onDidChangeScreenReaderOptimized.fire()),l.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),n(),this._register(this.onDidChangeScreenReaderOptimized(()=>n()));const o=Qn.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=o.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._linkUnderlinesEnabled=this._configurationService.getValue("accessibility.underlineLinks"),this.initReducedMotionListeners(o),this.initLinkUnderlineListeners()}initReducedMotionListeners(e){this._register(ge(e,"change",()=>{this._systemMotionReduced=e.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const t=()=>{const i=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("reduce-motion",i),this._layoutService.mainContainer.classList.toggle("enable-motion",!i)};t(),this._register(this.onDidChangeReducedMotion(()=>t()))}initLinkUnderlineListeners(){this._register(this._configurationService.onDidChangeConfiguration(t=>{if(t.affectsConfiguration("accessibility.underlineLinks")){const i=this._configurationService.getValue("accessibility.underlineLinks");this._linkUnderlinesEnabled=i,this._onDidChangeLinkUnderline.fire()}}));const e=()=>{const t=this._linkUnderlinesEnabled;this._layoutService.mainContainer.classList.toggle("underline-links",t)};e(),this._register(this.onDidChangeLinkUnderlines(()=>e()))}onDidChangeLinkUnderlines(e){return this._onDidChangeLinkUnderline.event(e)}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const e=this._configurationService.getValue("editor.accessibilitySupport");return e==="on"||e==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const e=this._configMotionReduced;return e==="on"||e==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};GK=hPe([z3(0,wt),z3(1,pf),z3(2,li)],GK);var PY=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ap=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ZR,Ky;let EK=class{constructor(e,t,i){this._commandService=e,this._keybindingService=t,this._hiddenStates=new vK(i)}createMenu(e,t,i){return new Hv(e,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...i},this._commandService,this._keybindingService,t)}getMenuActions(e,t,i){const n=new Hv(e,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...i},this._commandService,this._keybindingService,t),o=n.getActions(i);return n.dispose(),o}resetHiddenStates(e){this._hiddenStates.reset(e)}};EK=PY([Ap(0,On),Ap(1,dn),Ap(2,su)],EK);var YV;let vK=(YV=class{constructor(e){this._storageService=e,this._disposables=new Ze,this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const t=e.get(ZR._key,0,"{}");this._data=JSON.parse(t)}catch{this._data=Object.create(null)}this._disposables.add(e.onDidChangeValue(0,ZR._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const t=e.get(ZR._key,0,"{}");this._data=JSON.parse(t)}catch(t){console.log("FAILED to read storage after UPDATE",t)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(e,t){return this._hiddenByDefaultCache.get(`${e.id}/${t}`)??!1}setDefaultState(e,t,i){this._hiddenByDefaultCache.set(`${e.id}/${t}`,i)}isHidden(e,t){var o;const i=this._isHiddenByDefault(e,t),n=((o=this._data[e.id])==null?void 0:o.includes(t))??!1;return i?!n:n}updateHidden(e,t,i){this._isHiddenByDefault(e,t)&&(i=!i);const o=this._data[e.id];if(i)o?o.indexOf(t)<0&&o.push(t):this._data[e.id]=[t];else if(o){const l=o.indexOf(t);l>=0&&sIe(o,l),o.length===0&&delete this._data[e.id]}this._persist()}reset(e){if(e===void 0)this._data=Object.create(null),this._persist();else{for(const{id:t}of e)this._data[t]&&delete this._data[t];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const e=JSON.stringify(this._data);this._storageService.store(ZR._key,e,0,0)}finally{this._ignoreChangeEvent=!1}}},ZR=YV,YV._key="menu.hiddenCommands",YV);vK=ZR=PY([Ap(0,su)],vK);class RC{constructor(e,t){this._id=e,this._collectContextKeysForSubmenus=t,this._menuGroups=[],this._allMenuIds=new Set,this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get allMenuIds(){return this._allMenuIds}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._allMenuIds.clear(),this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const e=this._sort(nl.getMenuItems(this._id));let t;for(const i of e){const n=i.group||"";(!t||t[0]!==n)&&(t=[n,[]],this._menuGroups.push(t)),t[1].push(i),this._collectContextKeysAndSubmenuIds(i)}this._allMenuIds.add(this._id)}_sort(e){return e}_collectContextKeysAndSubmenuIds(e){if(RC._fillInKbExprKeys(e.when,this._structureContextKeys),gW(e)){if(e.command.precondition&&RC._fillInKbExprKeys(e.command.precondition,this._preconditionContextKeys),e.command.toggled){const t=e.command.toggled.condition||e.command.toggled;RC._fillInKbExprKeys(t,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&(nl.getMenuItems(e.submenu).forEach(this._collectContextKeysAndSubmenuIds,this),this._allMenuIds.add(e.submenu))}static _fillInKbExprKeys(e,t){if(e)for(const i of e.keys())t.add(i)}}let xK=Ky=class extends RC{constructor(e,t,i,n,o,l){super(e,i),this._hiddenStates=t,this._commandService=n,this._keybindingService=o,this._contextKeyService=l,this.refresh()}createActionGroups(e){const t=[];for(const i of this._menuGroups){const[n,o]=i;let l;for(const r of o)if(this._contextKeyService.contextMatchesRules(r.when)){const a=gW(r);a&&this._hiddenStates.setDefaultState(this._id,r.command.id,!!r.isHiddenByDefault);const d=uPe(this._id,a?r.command:r,this._hiddenStates);if(a){const c=nfe(this._commandService,this._keybindingService,r.command.id,r.when);(l??(l=[])).push(new Ud(r.command,r.alt,e,d,c,this._contextKeyService,this._commandService))}else{const c=new Ky(r.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._keybindingService,this._contextKeyService).createActionGroups(e),h=zo.join(...c.map(u=>u[1]));h.length>0&&(l??(l=[])).push(new bW(r,d,h))}}l&&l.length>0&&t.push([n,l])}return t}_sort(e){return e.sort(Ky._compareMenuItems)}static _compareMenuItems(e,t){const i=e.group,n=t.group;if(i!==n){if(i){if(!n)return-1}else return 1;if(i==="navigation")return-1;if(n==="navigation")return 1;const r=i.localeCompare(n);if(r!==0)return r}const o=e.order||0,l=t.order||0;return o<l?-1:o>l?1:Ky._compareTitles(gW(e)?e.command.title:e.title,gW(t)?t.command.title:t.title)}static _compareTitles(e,t){const i=typeof e=="string"?e:e.original,n=typeof t=="string"?t:t.original;return i.localeCompare(n)}};xK=Ky=PY([Ap(3,On),Ap(4,dn),Ap(5,wt)],xK);let Hv=class{constructor(e,t,i,n,o,l){this._disposables=new Ze,this._menuInfo=new xK(e,t,i.emitEventsForSubmenuChanges,n,o,l);const r=new Rn(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},i.eventDebounceDelay);this._disposables.add(r),this._disposables.add(nl.onDidChangeMenu(h=>{for(const u of this._menuInfo.allMenuIds)if(h.has(u)){r.schedule();break}}));const a=this._disposables.add(new Ze),d=h=>{let u=!1,m=!1,p=!1;for(const g of h)if(u=u||g.isStructuralChange,m=m||g.isEnablementChange,p=p||g.isToggleChange,u&&m&&p)break;return{menu:this,isStructuralChange:u,isEnablementChange:m,isToggleChange:p}},c=()=>{a.add(l.onDidChangeContext(h=>{const u=h.affectsSome(this._menuInfo.structureContextKeys),m=h.affectsSome(this._menuInfo.preconditionContextKeys),p=h.affectsSome(this._menuInfo.toggledContextKeys);(u||m||p)&&this._onDidChange.fire({menu:this,isStructuralChange:u,isEnablementChange:m,isToggleChange:p})})),a.add(t.onDidChange(h=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new kpe({onWillAddFirstListener:c,onDidRemoveLastListener:a.clear.bind(a),delay:i.eventDebounceDelay,merge:d}),this.onDidChange=this._onDidChange.event}getActions(e){return this._menuInfo.createActionGroups(e)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};Hv=PY([Ap(3,On),Ap(4,dn),Ap(5,wt)],Hv);function uPe(s,e,t){const i=Uve(e)?e.submenu.id:e.id,n=typeof e.title=="string"?e.title:e.title.value,o=YZ({id:`hide/${s.id}/${i}`,label:U("hide.label","Hide '{0}'",n),run(){t.updateHidden(s,i,!0)}}),l=YZ({id:`toggle/${s.id}/${i}`,label:n,get checked(){return!t.isHidden(s,i)},run(){t.updateHidden(s,i,!!this.checked)}});return{hide:o,toggle:l,get isHidden(){return!l.checked}}}function nfe(s,e,t,i=void 0,n=!0){return YZ({id:`configureKeybinding/${t}`,label:U("configure keybinding","Configure Keybinding"),enabled:n,run(){const l=!!!e.lookupKeybinding(t)&&i?i.serialize():void 0;s.executeCommand("workbench.action.openGlobalKeybindings",`@command:${t}`+(l?` +when:${l}`:""))}})}var mPe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Pre=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},JK;const Kre="application/vnd.code.resources";var zV;let XK=(zV=class extends de{constructor(e,t){super(),this.layoutService=e,this.logService=t,this.mapTextToType=new Map,this.findText="",this.resources=[],this.resourcesStateHash=void 0,(F0||oge)&&this.installWebKitWriteTextWorkaround(),this._register(ve.runAndSubscribe(tY,({window:i,disposables:n})=>{n.add(ge(i.document,"copy",()=>this.clearResourcesState()))},{window:Qn,disposables:this._store}))}installWebKitWriteTextWorkaround(){const e=()=>{const t=new EQ;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=t,Jy().navigator.clipboard.write([new ClipboardItem({"text/plain":t.p})]).catch(async i=>{(!(i instanceof Error)||i.name!=="NotAllowedError"||!t.isRejected)&&this.logService.error(i)})};this._register(ve.runAndSubscribe(this.layoutService.onDidAddContainer,({container:t,disposables:i})=>{i.add(ge(t,"click",e)),i.add(ge(t,"keydown",e))},{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(e,t){if(this.clearResourcesState(),t){this.mapTextToType.set(t,e);return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(e);try{return await Jy().navigator.clipboard.writeText(e)}catch(i){console.error(i)}this.fallbackWriteText(e)}fallbackWriteText(e){const t=vQ(),i=t.activeElement,n=t.body.appendChild(Ge("textarea",{"aria-hidden":!0}));n.style.height="1px",n.style.width="1px",n.style.position="absolute",n.value=e,n.focus(),n.select(),t.execCommand("copy"),Yo(i)&&i.focus(),n.remove()}async readText(e){if(e)return this.mapTextToType.get(e)||"";try{return await Jy().navigator.clipboard.readText()}catch(t){console.error(t)}return""}async readFindText(){return this.findText}async writeFindText(e){this.findText=e}async readResources(){try{const t=await Jy().navigator.clipboard.read();for(const i of t)if(i.types.includes(`web ${Kre}`)){const n=await i.getType(`web ${Kre}`);return JSON.parse(await n.text()).map(l=>At.from(l))}}catch{}const e=await this.computeResourcesStateHash();return this.resourcesStateHash!==e&&this.clearResourcesState(),this.resources}async computeResourcesStateHash(){if(this.resources.length===0)return;const e=await this.readText();return $5(e.substring(0,JK.MAX_RESOURCE_STATE_SOURCE_LENGTH))}clearInternalState(){this.clearResourcesState()}clearResourcesState(){this.resources=[],this.resourcesStateHash=void 0}},JK=zV,zV.MAX_RESOURCE_STATE_SOURCE_LENGTH=1e3,zV);XK=JK=mPe([Pre(0,pf),Pre(1,El)],XK);const D0=Zi("clipboardService");var pPe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},gPe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const SC="data-keybinding-context";let pte=class{constructor(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value._contextId=e}get value(){return{...this._value}}setValue(e,t){return this._value[e]!==t?(this._value[e]=t,!0):!1}removeValue(e){return e in this._value?(delete this._value[e],!0):!1}getValue(e){const t=this._value[e];return typeof t>"u"&&this._parent?this._parent.getValue(e):t}};const CX=class CX extends pte{constructor(){super(-1,null)}setValue(e,t){return!1}removeValue(e){return!1}getValue(e){}};CX.INSTANCE=new CX;let UV=CX;const Iw=class Iw extends pte{constructor(e,t,i){super(e,null),this._configurationService=t,this._values=ZW.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(n=>{if(n.source===7){const o=Array.from(this._values,([l])=>l);this._values.clear(),i.fire(new $re(o))}else{const o=[];for(const l of n.affectedKeys){const r=`config.${l}`,a=this._values.findSuperstr(r);a!==void 0&&(o.push(...Ti.map(a,([d])=>d)),this._values.deleteSuperstr(r)),this._values.has(r)&&(o.push(r),this._values.delete(r))}i.fire(new $re(o))}})}dispose(){this._listener.dispose()}getValue(e){if(e.indexOf(Iw._keyPrefix)!==0)return super.getValue(e);if(this._values.has(e))return this._values.get(e);const t=e.substr(Iw._keyPrefix.length),i=this._configurationService.getValue(t);let n;switch(typeof i){case"number":case"boolean":case"string":n=i;break;default:Array.isArray(i)?n=JSON.stringify(i):n=i}return this._values.set(e,n),n}setValue(e,t){return super.setValue(e,t)}removeValue(e){return super.removeValue(e)}};Iw._keyPrefix="config.";let YK=Iw;class bPe{constructor(e,t,i){this._service=e,this._key=t,this._defaultValue=i,this.reset()}set(e){this._service.setContext(this._key,e)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class qre{constructor(e){this.key=e}affectsSome(e){return e.has(this.key)}allKeysContainedIn(e){return this.affectsSome(e)}}class $re{constructor(e){this.keys=e}affectsSome(e){for(const t of this.keys)if(e.has(t))return!0;return!1}allKeysContainedIn(e){return this.keys.every(t=>e.has(t))}}class UPe{constructor(e){this.events=e}affectsSome(e){for(const t of this.events)if(t.affectsSome(e))return!0;return!1}allKeysContainedIn(e){return this.events.every(t=>t.allKeysContainedIn(e))}}function fPe(s,e){return s.allKeysContainedIn(new Set(Object.keys(e)))}class sfe extends de{constructor(e){super(),this._onDidChangeContext=this._register(new fA({merge:t=>new UPe(t)})),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=e}createKey(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new bPe(this,e,t)}bufferChangeEvents(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}createScoped(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new FPe(this,e)}contextMatchesRules(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const t=this.getContextValuesContainer(this._myContextId);return e?e.evaluate(t):!0}getContextKeyValue(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}setContext(e,t){if(this._isDisposed)return;const i=this.getContextValuesContainer(this._myContextId);i&&i.setValue(e,t)&&this._onDidChangeContext.fire(new qre(e))}removeContext(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new qre(e))}getContext(e){return this._isDisposed?UV.INSTANCE:this.getContextValuesContainer(ZPe(e))}dispose(){super.dispose(),this._isDisposed=!0}}let zK=class extends sfe{constructor(e){super(0),this._contexts=new Map,this._lastContextId=0;const t=this._register(new YK(this._myContextId,e,this._onDidChangeContext));this._contexts.set(this._myContextId,t)}getContextValuesContainer(e){return this._isDisposed?UV.INSTANCE:this._contexts.get(e)||UV.INSTANCE}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const t=++this._lastContextId;return this._contexts.set(t,new pte(t,this.getContextValuesContainer(e))),t}disposeContext(e){this._isDisposed||this._contexts.delete(e)}};zK=pPe([gPe(0,li)],zK);class FPe extends sfe{constructor(e,t){if(super(e.createChildContext()),this._parentChangeListener=this._register(new _o),this._parent=e,this._updateParentChangeListener(),this._domNode=t,this._domNode.hasAttribute(SC)){let i="";this._domNode.classList&&(i=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${i?": "+i:""}`)}this._domNode.setAttribute(SC,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(e=>{const i=this._parent.getContextValuesContainer(this._myContextId).value;fPe(e,i)||this._onDidChangeContext.fire(e)})}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(SC),super.dispose())}getContextValuesContainer(e){return this._isDisposed?UV.INSTANCE:this._parent.getContextValuesContainer(e)}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}disposeContext(e){this._isDisposed||this._parent.disposeContext(e)}}function ZPe(s){for(;s;){if(s.hasAttribute(SC)){const e=s.getAttribute(SC);return e?parseInt(e,10):NaN}s=s.parentElement}return 0}function APe(s,e,t){s.get(wt).createKey(String(e),NPe(t))}function NPe(s){return Ape(s,e=>{if(typeof e=="object"&&e.$mid===1)return At.revive(e).toString();if(e instanceof At)return e.toString()})}Bi.registerCommand("_setContext",APe);Bi.registerCommand({id:"getContextKeyInfo",handler(){return[...Ke.all()].sort((s,e)=>s.key.localeCompare(e.key))},metadata:{description:U("getContextKeyInfo","A command that returns information about context keys"),args:[]}});Bi.registerCommand("_generateContextKeyInfo",function(){const s=[],e=new Set;for(const t of Ke.all())e.has(t.key)||(e.add(t.key),s.push(t));s.sort((t,i)=>t.key.localeCompare(i.key)),console.log(JSON.stringify(s,void 0,2))});let RPe=class{constructor(e,t){this.key=e,this.data=t,this.incoming=new Map,this.outgoing=new Map}};class eae{constructor(e){this._hashFn=e,this._nodes=new Map}roots(){const e=[];for(const t of this._nodes.values())t.outgoing.size===0&&e.push(t);return e}insertEdge(e,t){const i=this.lookupOrInsertNode(e),n=this.lookupOrInsertNode(t);i.outgoing.set(n.key,n),n.incoming.set(i.key,i)}removeNode(e){const t=this._hashFn(e);this._nodes.delete(t);for(const i of this._nodes.values())i.outgoing.delete(t),i.incoming.delete(t)}lookupOrInsertNode(e){const t=this._hashFn(e);let i=this._nodes.get(t);return i||(i=new RPe(t,e),this._nodes.set(t,i)),i}isEmpty(){return this._nodes.size===0}toString(){const e=[];for(const[t,i]of this._nodes)e.push(`${t}
- (-> incoming)[${[...i.incoming.keys()].join(", ")}]
- (outgoing ->)[${[...i.outgoing.keys()].join(",")}]
- `);return e.join(`
- `)}findCycleSlow(){for(const[e,t]of this._nodes){const i=new Set([e]),n=this._findCycle(t,i);if(n)return n}}_findCycle(e,t){for(const[i,n]of e.outgoing){if(t.has(i))return[...t,i].join(" -> ");t.add(i);const o=this._findCycle(n,t);if(o)return o;t.delete(i)}}}class t1{constructor(...e){this._entries=new Map;for(const[t,i]of e)this.set(t,i)}set(e,t){const i=this._entries.get(e);return this._entries.set(e,t),i}get(e){return this._entries.get(e)}}const SPe=!1;class tae extends Error{constructor(e){super("cyclic dependency between services"),this.message=e.findCycleSlow()??`UNABLE to detect cycle, dumping graph:
- ${e.toString()}`}}class Pv{constructor(e=new t1,t=!1,i,n=SPe){this._services=e,this._strict=t,this._parent=i,this._enableTracing=n,this._isDisposed=!1,this._servicesToMaybeDispose=new Set,this._children=new Set,this._activeInstantiations=new Set,this._services.set(bt,this),this._globalGraph=n?(i==null?void 0:i._globalGraph)??new eae(o=>o):void 0}dispose(){if(!this._isDisposed){this._isDisposed=!0,Tn(this._children),this._children.clear();for(const e of this._servicesToMaybeDispose)H5(e)&&e.dispose();this._servicesToMaybeDispose.clear()}}_throwIfDisposed(){if(this._isDisposed)throw new Error("InstantiationService has been disposed")}createChild(e,t){this._throwIfDisposed();const i=this,n=new class extends Pv{dispose(){i._children.delete(n),super.dispose()}}(e,this._strict,this,this._enableTracing);return this._children.add(n),t==null||t.add(n),n}invokeFunction(e,...t){this._throwIfDisposed();const i=WC.traceInvocation(this._enableTracing,e);let n=!1;try{return e({get:l=>{if(n)throw F$("service accessor is only valid during the invocation of its target method");const r=this._getOrCreateServiceInstance(l,i);if(!r)throw new Error(`[invokeFunction] unknown service '${l}'`);return r}},...t)}finally{n=!0,i.stop()}}createInstance(e,...t){this._throwIfDisposed();let i,n;return e instanceof ep?(i=WC.traceCreation(this._enableTracing,e.ctor),n=this._createInstance(e.ctor,e.staticArguments.concat(t),i)):(i=WC.traceCreation(this._enableTracing,e),n=this._createInstance(e,t,i)),i.stop(),n}_createInstance(e,t=[],i){const n=Du.getServiceDependencies(e).sort((r,a)=>r.index-a.index),o=[];for(const r of n){const a=this._getOrCreateServiceInstance(r.id,i);a||this._throwIfStrict(`[createInstance] ${e.name} depends on UNKNOWN service ${r.id}.`,!1),o.push(a)}const l=n.length>0?n[0].index:t.length;if(t.length!==l){console.trace(`[createInstance] First service dependency of ${e.name} at position ${l+1} conflicts with ${t.length} static arguments`);const r=l-t.length;r>0?t=t.concat(new Array(r)):t=t.slice(0,l)}return Reflect.construct(e,t.concat(o))}_setCreatedServiceInstance(e,t){if(this._services.get(e)instanceof ep)this._services.set(e,t);else if(this._parent)this._parent._setCreatedServiceInstance(e,t);else throw new Error("illegalState - setting UNKNOWN service instance")}_getServiceInstanceOrDescriptor(e){const t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t}_getOrCreateServiceInstance(e,t){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(e));const i=this._getServiceInstanceOrDescriptor(e);return i instanceof ep?this._safeCreateAndCacheServiceInstance(e,i,t.branch(e,!0)):(t.branch(e,!1),i)}_safeCreateAndCacheServiceInstance(e,t,i){if(this._activeInstantiations.has(e))throw new Error(`illegal state - RECURSIVELY instantiating service '${e}'`);this._activeInstantiations.add(e);try{return this._createAndCacheServiceInstance(e,t,i)}finally{this._activeInstantiations.delete(e)}}_createAndCacheServiceInstance(e,t,i){var a;const n=new eae(d=>d.id.toString());let o=0;const l=[{id:e,desc:t,_trace:i}],r=new Set;for(;l.length;){const d=l.pop();if(!r.has(String(d.id))){if(r.add(String(d.id)),n.lookupOrInsertNode(d),o++>1e3)throw new tae(n);for(const c of Du.getServiceDependencies(d.desc.ctor)){const h=this._getServiceInstanceOrDescriptor(c.id);if(h||this._throwIfStrict(`[createInstance] ${e} depends on ${c.id} which is NOT registered.`,!0),(a=this._globalGraph)==null||a.insertEdge(String(d.id),String(c.id)),h instanceof ep){const u={id:c.id,desc:h,_trace:d._trace.branch(c.id,!0)};n.insertEdge(d,u),l.push(u)}}}}for(;;){const d=n.roots();if(d.length===0){if(!n.isEmpty())throw new tae(n);break}for(const{data:c}of d){if(this._getServiceInstanceOrDescriptor(c.id)instanceof ep){const u=this._createServiceInstanceWithOwner(c.id,c.desc.ctor,c.desc.staticArguments,c.desc.supportsDelayedInstantiation,c._trace);this._setCreatedServiceInstance(c.id,u)}n.removeNode(c)}}return this._getServiceInstanceOrDescriptor(e)}_createServiceInstanceWithOwner(e,t,i=[],n,o){if(this._services.get(e)instanceof ep)return this._createServiceInstance(e,t,i,n,o,this._servicesToMaybeDispose);if(this._parent)return this._parent._createServiceInstanceWithOwner(e,t,i,n,o);throw new Error(`illegalState - creating UNKNOWN service instance ${t.name}`)}_createServiceInstance(e,t,i=[],n,o,l){if(n){const r=new Pv(void 0,this._strict,this,this._enableTracing);r._globalGraphImplicitDependency=String(e);const a=new Map,d=new YGe(()=>{const c=r._createInstance(t,i,o);for(const[h,u]of a){const m=c[h];if(typeof m=="function")for(const p of u)p.disposable=m.apply(c,p.listener)}return a.clear(),l.add(c),c});return new Proxy(Object.create(null),{get(c,h){if(!d.isInitialized&&typeof h=="string"&&(h.startsWith("onDid")||h.startsWith("onWill"))){let p=a.get(h);return p||(p=new Pr,a.set(h,p)),(b,f,Z)=>{if(d.isInitialized)return d.value[h](b,f,Z);{const A={listener:[b,f,Z],disposable:void 0},N=p.push(A);return gt(()=>{var Q;N(),(Q=A.disposable)==null||Q.dispose()})}}}if(h in c)return c[h];const u=d.value;let m=u[h];return typeof m!="function"||(m=m.bind(u),c[h]=m),m},set(c,h,u){return d.value[h]=u,!0},getPrototypeOf(c){return t.prototype}})}else{const r=this._createInstance(t,i,o);return l.add(r),r}}_throwIfStrict(e,t){if(t&&console.warn(e),this._strict)throw new Error(e)}}const Gd=class Gd{static traceInvocation(e,t){return e?new Gd(2,t.name||new Error().stack.split(`
- `).slice(3,4).join(`
- `)):Gd._None}static traceCreation(e,t){return e?new Gd(1,t.name):Gd._None}constructor(e,t){this.type=e,this.name=t,this._start=Date.now(),this._dep=[]}branch(e,t){const i=new Gd(3,e.toString());return this._dep.push([e,t,i]),i}stop(){const e=Date.now()-this._start;Gd._totals+=e;let t=!1;function i(o,l){const r=[],a=new Array(o+1).join(" ");for(const[d,c,h]of l._dep)if(c&&h){t=!0,r.push(`${a}CREATES -> ${d}`);const u=i(o+1,h);u&&r.push(u)}else r.push(`${a}uses -> ${d}`);return r.join(`
- `)}const n=[`${this.type===1?"CREATE":"CALL"} ${this.name}`,`${i(1,this)}`,`DONE, took ${e.toFixed(2)}ms (grand total ${Gd._totals.toFixed(2)}ms)`];(e>2||t)&&Gd.all.add(n.join(`
- `))}};Gd.all=new Set,Gd._None=new class extends Gd{constructor(){super(0,null)}stop(){}branch(){return this}},Gd._totals=0;let WC=Gd;const WPe=new Set([Xt.inMemory,Xt.vscodeSourceControl,Xt.walkThrough,Xt.walkThroughSnippet,Xt.vscodeChatCodeBlock]);class VPe{constructor(){this._byResource=new sl,this._byOwner=new Map}set(e,t,i){let n=this._byResource.get(e);n||(n=new Map,this._byResource.set(e,n)),n.set(t,i);let o=this._byOwner.get(t);o||(o=new sl,this._byOwner.set(t,o)),o.set(e,i)}get(e,t){const i=this._byResource.get(e);return i==null?void 0:i.get(t)}delete(e,t){let i=!1,n=!1;const o=this._byResource.get(e);o&&(i=o.delete(t));const l=this._byOwner.get(t);if(l&&(n=l.delete(e)),i!==n)throw new Error("illegal state");return i&&n}values(e){var t,i;return typeof e=="string"?((t=this._byOwner.get(e))==null?void 0:t.values())??Ti.empty():At.isUri(e)?((i=this._byResource.get(e))==null?void 0:i.values())??Ti.empty():Ti.map(Ti.concat(...this._byOwner.values()),n=>n[1])}}class QPe{constructor(e){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new sl,this._service=e,this._subscription=e.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(e){for(const t of e){const i=this._data.get(t);i&&this._substract(i);const n=this._resourceStats(t);this._add(n),this._data.set(t,n)}}_resourceStats(e){const t={errors:0,warnings:0,infos:0,unknowns:0};if(WPe.has(e.scheme))return t;for(const{severity:i}of this._service.read({resource:e}))i===Es.Error?t.errors+=1:i===Es.Warning?t.warnings+=1:i===Es.Info?t.infos+=1:t.unknowns+=1;return t}_substract(e){this.errors-=e.errors,this.warnings-=e.warnings,this.infos-=e.infos,this.unknowns-=e.unknowns}_add(e){this.errors+=e.errors,this.warnings+=e.warnings,this.infos+=e.infos,this.unknowns+=e.unknowns}}class Rb{constructor(){this._onMarkerChanged=new kpe({delay:0,merge:Rb._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new VPe,this._stats=new QPe(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(e,t){for(const i of t||[])this.changeOne(e,i,[])}changeOne(e,t,i){if(bpe(i))this._data.delete(t,e)&&this._onMarkerChanged.fire([t]);else{const n=[];for(const o of i){const l=Rb._toMarker(e,t,o);l&&n.push(l)}this._data.set(t,e,n),this._onMarkerChanged.fire([t])}}static _toMarker(e,t,i){let{code:n,severity:o,message:l,source:r,startLineNumber:a,startColumn:d,endLineNumber:c,endColumn:h,relatedInformation:u,tags:m}=i;if(l)return a=a>0?a:1,d=d>0?d:1,c=c>=a?c:a,h=h>0?h:d,{resource:t,owner:e,code:n,severity:o,message:l,source:r,startLineNumber:a,startColumn:d,endLineNumber:c,endColumn:h,relatedInformation:u,tags:m}}changeAll(e,t){const i=[],n=this._data.values(e);if(n)for(const o of n){const l=Ti.first(o);l&&(i.push(l.resource),this._data.delete(l.resource,e))}if(Sr(t)){const o=new sl;for(const{resource:l,marker:r}of t){const a=Rb._toMarker(e,l,r);if(!a)continue;const d=o.get(l);d?d.push(a):(o.set(l,[a]),i.push(l))}for(const[l,r]of o)this._data.set(l,e,r)}i.length>0&&this._onMarkerChanged.fire(i)}read(e=Object.create(null)){let{owner:t,resource:i,severities:n,take:o}=e;if((!o||o<0)&&(o=-1),t&&i){const l=this._data.get(i,t);if(l){const r=[];for(const a of l)if(Rb._accept(a,n)){const d=r.push(a);if(o>0&&d===o)break}return r}else return[]}else if(!t&&!i){const l=[];for(const r of this._data.values())for(const a of r)if(Rb._accept(a,n)){const d=l.push(a);if(o>0&&d===o)return l}return l}else{const l=this._data.values(i??t),r=[];for(const a of l)for(const d of a)if(Rb._accept(d,n)){const c=r.push(d);if(o>0&&c===o)return r}return r}}static _accept(e,t){return t===void 0||(t&e.severity)===e.severity}static _merge(e){const t=new sl;for(const i of e)for(const n of i)t.set(n,!0);return Array.from(t.keys())}}class yPe extends de{get configurationModel(){return this._configurationModel}constructor(e){super(),this.logService=e,this._configurationModel=Ul.createEmptyModel(this.logService)}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=Ul.createEmptyModel(this.logService);const e=Vs.as(nu.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(e),e)}updateConfigurationModel(e,t){const i=this.getConfigurationDefaultOverrides();for(const n of e){const o=i[n],l=t[n];o!==void 0?this._configurationModel.setValue(n,o):l?this._configurationModel.setValue(n,l.default):this._configurationModel.removeValue(n)}}}const Ff=Zi("accessibilitySignalService"),ji=class ji{static register(e){return new ji(e.fileName)}constructor(e){this.fileName=e}};ji.error=ji.register({fileName:"error.mp3"}),ji.warning=ji.register({fileName:"warning.mp3"}),ji.success=ji.register({fileName:"success.mp3"}),ji.foldedArea=ji.register({fileName:"foldedAreas.mp3"}),ji.break=ji.register({fileName:"break.mp3"}),ji.quickFixes=ji.register({fileName:"quickFixes.mp3"}),ji.taskCompleted=ji.register({fileName:"taskCompleted.mp3"}),ji.taskFailed=ji.register({fileName:"taskFailed.mp3"}),ji.terminalBell=ji.register({fileName:"terminalBell.mp3"}),ji.diffLineInserted=ji.register({fileName:"diffLineInserted.mp3"}),ji.diffLineDeleted=ji.register({fileName:"diffLineDeleted.mp3"}),ji.diffLineModified=ji.register({fileName:"diffLineModified.mp3"}),ji.chatRequestSent=ji.register({fileName:"chatRequestSent.mp3"}),ji.chatResponseReceived1=ji.register({fileName:"chatResponseReceived1.mp3"}),ji.chatResponseReceived2=ji.register({fileName:"chatResponseReceived2.mp3"}),ji.chatResponseReceived3=ji.register({fileName:"chatResponseReceived3.mp3"}),ji.chatResponseReceived4=ji.register({fileName:"chatResponseReceived4.mp3"}),ji.clear=ji.register({fileName:"clear.mp3"}),ji.save=ji.register({fileName:"save.mp3"}),ji.format=ji.register({fileName:"format.mp3"}),ji.voiceRecordingStarted=ji.register({fileName:"voiceRecordingStarted.mp3"}),ji.voiceRecordingStopped=ji.register({fileName:"voiceRecordingStopped.mp3"}),ji.progress=ji.register({fileName:"progress.mp3"});let bs=ji;class CPe{constructor(e){this.randomOneOf=e}}const si=class si{constructor(e,t,i,n,o,l){this.sound=e,this.name=t,this.legacySoundSettingsKey=i,this.settingsKey=n,this.legacyAnnouncementSettingsKey=o,this.announcementMessage=l}static register(e){const t=new CPe("randomOneOf"in e.sound?e.sound.randomOneOf:[e.sound]),i=new si(t,e.name,e.legacySoundSettingsKey,e.settingsKey,e.legacyAnnouncementSettingsKey,e.announcementMessage);return si._signals.add(i),i}};si._signals=new Set,si.errorAtPosition=si.register({name:U("accessibilitySignals.positionHasError.name","Error at Position"),sound:bs.error,announcementMessage:U("accessibility.signals.positionHasError","Error"),settingsKey:"accessibility.signals.positionHasError",delaySettingsKey:"accessibility.signalOptions.delays.errorAtPosition"}),si.warningAtPosition=si.register({name:U("accessibilitySignals.positionHasWarning.name","Warning at Position"),sound:bs.warning,announcementMessage:U("accessibility.signals.positionHasWarning","Warning"),settingsKey:"accessibility.signals.positionHasWarning",delaySettingsKey:"accessibility.signalOptions.delays.warningAtPosition"}),si.errorOnLine=si.register({name:U("accessibilitySignals.lineHasError.name","Error on Line"),sound:bs.error,legacySoundSettingsKey:"audioCues.lineHasError",legacyAnnouncementSettingsKey:"accessibility.alert.error",announcementMessage:U("accessibility.signals.lineHasError","Error on Line"),settingsKey:"accessibility.signals.lineHasError"}),si.warningOnLine=si.register({name:U("accessibilitySignals.lineHasWarning.name","Warning on Line"),sound:bs.warning,legacySoundSettingsKey:"audioCues.lineHasWarning",legacyAnnouncementSettingsKey:"accessibility.alert.warning",announcementMessage:U("accessibility.signals.lineHasWarning","Warning on Line"),settingsKey:"accessibility.signals.lineHasWarning"}),si.foldedArea=si.register({name:U("accessibilitySignals.lineHasFoldedArea.name","Folded Area on Line"),sound:bs.foldedArea,legacySoundSettingsKey:"audioCues.lineHasFoldedArea",legacyAnnouncementSettingsKey:"accessibility.alert.foldedArea",announcementMessage:U("accessibility.signals.lineHasFoldedArea","Folded"),settingsKey:"accessibility.signals.lineHasFoldedArea"}),si.break=si.register({name:U("accessibilitySignals.lineHasBreakpoint.name","Breakpoint on Line"),sound:bs.break,legacySoundSettingsKey:"audioCues.lineHasBreakpoint",legacyAnnouncementSettingsKey:"accessibility.alert.breakpoint",announcementMessage:U("accessibility.signals.lineHasBreakpoint","Breakpoint"),settingsKey:"accessibility.signals.lineHasBreakpoint"}),si.inlineSuggestion=si.register({name:U("accessibilitySignals.lineHasInlineSuggestion.name","Inline Suggestion on Line"),sound:bs.quickFixes,legacySoundSettingsKey:"audioCues.lineHasInlineSuggestion",settingsKey:"accessibility.signals.lineHasInlineSuggestion"}),si.terminalQuickFix=si.register({name:U("accessibilitySignals.terminalQuickFix.name","Terminal Quick Fix"),sound:bs.quickFixes,legacySoundSettingsKey:"audioCues.terminalQuickFix",legacyAnnouncementSettingsKey:"accessibility.alert.terminalQuickFix",announcementMessage:U("accessibility.signals.terminalQuickFix","Quick Fix"),settingsKey:"accessibility.signals.terminalQuickFix"}),si.onDebugBreak=si.register({name:U("accessibilitySignals.onDebugBreak.name","Debugger Stopped on Breakpoint"),sound:bs.break,legacySoundSettingsKey:"audioCues.onDebugBreak",legacyAnnouncementSettingsKey:"accessibility.alert.onDebugBreak",announcementMessage:U("accessibility.signals.onDebugBreak","Breakpoint"),settingsKey:"accessibility.signals.onDebugBreak"}),si.noInlayHints=si.register({name:U("accessibilitySignals.noInlayHints","No Inlay Hints on Line"),sound:bs.error,legacySoundSettingsKey:"audioCues.noInlayHints",legacyAnnouncementSettingsKey:"accessibility.alert.noInlayHints",announcementMessage:U("accessibility.signals.noInlayHints","No Inlay Hints"),settingsKey:"accessibility.signals.noInlayHints"}),si.taskCompleted=si.register({name:U("accessibilitySignals.taskCompleted","Task Completed"),sound:bs.taskCompleted,legacySoundSettingsKey:"audioCues.taskCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.taskCompleted",announcementMessage:U("accessibility.signals.taskCompleted","Task Completed"),settingsKey:"accessibility.signals.taskCompleted"}),si.taskFailed=si.register({name:U("accessibilitySignals.taskFailed","Task Failed"),sound:bs.taskFailed,legacySoundSettingsKey:"audioCues.taskFailed",legacyAnnouncementSettingsKey:"accessibility.alert.taskFailed",announcementMessage:U("accessibility.signals.taskFailed","Task Failed"),settingsKey:"accessibility.signals.taskFailed"}),si.terminalCommandFailed=si.register({name:U("accessibilitySignals.terminalCommandFailed","Terminal Command Failed"),sound:bs.error,legacySoundSettingsKey:"audioCues.terminalCommandFailed",legacyAnnouncementSettingsKey:"accessibility.alert.terminalCommandFailed",announcementMessage:U("accessibility.signals.terminalCommandFailed","Command Failed"),settingsKey:"accessibility.signals.terminalCommandFailed"}),si.terminalCommandSucceeded=si.register({name:U("accessibilitySignals.terminalCommandSucceeded","Terminal Command Succeeded"),sound:bs.success,announcementMessage:U("accessibility.signals.terminalCommandSucceeded","Command Succeeded"),settingsKey:"accessibility.signals.terminalCommandSucceeded"}),si.terminalBell=si.register({name:U("accessibilitySignals.terminalBell","Terminal Bell"),sound:bs.terminalBell,legacySoundSettingsKey:"audioCues.terminalBell",legacyAnnouncementSettingsKey:"accessibility.alert.terminalBell",announcementMessage:U("accessibility.signals.terminalBell","Terminal Bell"),settingsKey:"accessibility.signals.terminalBell"}),si.notebookCellCompleted=si.register({name:U("accessibilitySignals.notebookCellCompleted","Notebook Cell Completed"),sound:bs.taskCompleted,legacySoundSettingsKey:"audioCues.notebookCellCompleted",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellCompleted",announcementMessage:U("accessibility.signals.notebookCellCompleted","Notebook Cell Completed"),settingsKey:"accessibility.signals.notebookCellCompleted"}),si.notebookCellFailed=si.register({name:U("accessibilitySignals.notebookCellFailed","Notebook Cell Failed"),sound:bs.taskFailed,legacySoundSettingsKey:"audioCues.notebookCellFailed",legacyAnnouncementSettingsKey:"accessibility.alert.notebookCellFailed",announcementMessage:U("accessibility.signals.notebookCellFailed","Notebook Cell Failed"),settingsKey:"accessibility.signals.notebookCellFailed"}),si.diffLineInserted=si.register({name:U("accessibilitySignals.diffLineInserted","Diff Line Inserted"),sound:bs.diffLineInserted,legacySoundSettingsKey:"audioCues.diffLineInserted",settingsKey:"accessibility.signals.diffLineInserted"}),si.diffLineDeleted=si.register({name:U("accessibilitySignals.diffLineDeleted","Diff Line Deleted"),sound:bs.diffLineDeleted,legacySoundSettingsKey:"audioCues.diffLineDeleted",settingsKey:"accessibility.signals.diffLineDeleted"}),si.diffLineModified=si.register({name:U("accessibilitySignals.diffLineModified","Diff Line Modified"),sound:bs.diffLineModified,legacySoundSettingsKey:"audioCues.diffLineModified",settingsKey:"accessibility.signals.diffLineModified"}),si.chatRequestSent=si.register({name:U("accessibilitySignals.chatRequestSent","Chat Request Sent"),sound:bs.chatRequestSent,legacySoundSettingsKey:"audioCues.chatRequestSent",legacyAnnouncementSettingsKey:"accessibility.alert.chatRequestSent",announcementMessage:U("accessibility.signals.chatRequestSent","Chat Request Sent"),settingsKey:"accessibility.signals.chatRequestSent"}),si.chatResponseReceived=si.register({name:U("accessibilitySignals.chatResponseReceived","Chat Response Received"),legacySoundSettingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[bs.chatResponseReceived1,bs.chatResponseReceived2,bs.chatResponseReceived3,bs.chatResponseReceived4]},settingsKey:"accessibility.signals.chatResponseReceived"}),si.progress=si.register({name:U("accessibilitySignals.progress","Progress"),sound:bs.progress,legacySoundSettingsKey:"audioCues.chatResponsePending",legacyAnnouncementSettingsKey:"accessibility.alert.progress",announcementMessage:U("accessibility.signals.progress","Progress"),settingsKey:"accessibility.signals.progress"}),si.clear=si.register({name:U("accessibilitySignals.clear","Clear"),sound:bs.clear,legacySoundSettingsKey:"audioCues.clear",legacyAnnouncementSettingsKey:"accessibility.alert.clear",announcementMessage:U("accessibility.signals.clear","Clear"),settingsKey:"accessibility.signals.clear"}),si.save=si.register({name:U("accessibilitySignals.save","Save"),sound:bs.save,legacySoundSettingsKey:"audioCues.save",legacyAnnouncementSettingsKey:"accessibility.alert.save",announcementMessage:U("accessibility.signals.save","Save"),settingsKey:"accessibility.signals.save"}),si.format=si.register({name:U("accessibilitySignals.format","Format"),sound:bs.format,legacySoundSettingsKey:"audioCues.format",legacyAnnouncementSettingsKey:"accessibility.alert.format",announcementMessage:U("accessibility.signals.format","Format"),settingsKey:"accessibility.signals.format"}),si.voiceRecordingStarted=si.register({name:U("accessibilitySignals.voiceRecordingStarted","Voice Recording Started"),sound:bs.voiceRecordingStarted,legacySoundSettingsKey:"audioCues.voiceRecordingStarted",settingsKey:"accessibility.signals.voiceRecordingStarted"}),si.voiceRecordingStopped=si.register({name:U("accessibilitySignals.voiceRecordingStopped","Voice Recording Stopped"),sound:bs.voiceRecordingStopped,legacySoundSettingsKey:"audioCues.voiceRecordingStopped",settingsKey:"accessibility.signals.voiceRecordingStopped"});let Pd=si;class wPe extends de{constructor(e,t=[]){super(),this.logger=new Fve([e,...t]),this._register(e.onDidChangeLogLevel(i=>this.setLevel(i)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(e){this.logger.setLevel(e)}getLevel(){return this.logger.getLevel()}trace(e,...t){this.logger.trace(e,...t)}debug(e,...t){this.logger.debug(e,...t)}info(e,...t){this.logger.info(e,...t)}warn(e,...t){this.logger.warn(e,...t)}error(e,...t){this.logger.error(e,...t)}}const ofe=[];function i1(s){ofe.push(s)}function MPe(){return ofe.slice(0)}class TPe{getParseResult(e){}}var vp=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ho=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class BPe{constructor(e){this.disposed=!1,this.model=e,this._onWillDispose=new re}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let _K=class{constructor(e){this.modelService=e}createModelReference(e){const t=this.modelService.getModel(e);return t?Promise.resolve(new WDe(new BPe(t))):Promise.reject(new Error("Model not found"))}};_K=vp([ho(0,es)],_K);const wX=class wX{show(){return wX.NULL_PROGRESS_RUNNER}async showWhile(e,t){await e}};wX.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};let OK=wX;class LPe{withProgress(e,t,i){return t({report:()=>{}})}}class kPe{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class IPe{async confirm(e){return{confirmed:this.doConfirm(e.message,e.detail),checkboxChecked:!1}}doConfirm(e,t){let i=e;return t&&(i=i+`
- `+t),Qn.confirm(i)}async prompt(e){var n;let t;if(this.doConfirm(e.message,e.detail)){const o=[...e.buttons??[]];e.cancelButton&&typeof e.cancelButton!="string"&&typeof e.cancelButton!="boolean"&&o.push(e.cancelButton),t=await((n=o[0])==null?void 0:n.run({checkboxChecked:!1}))}return{result:t}}async error(e,t){await this.prompt({type:to.Error,message:e,detail:t})}}const Dw=class Dw{info(e){return this.notify({severity:to.Info,message:e})}warn(e){return this.notify({severity:to.Warning,message:e})}error(e){return this.notify({severity:to.Error,message:e})}notify(e){switch(e.severity){case to.Error:console.error(e.message);break;case to.Warning:console.warn(e.message);break;default:console.log(e.message);break}return Dw.NO_OP}prompt(e,t,i,n){return Dw.NO_OP}status(e,t){return de.None}};Dw.NO_OP=new EJe;let jK=Dw,HK=class{constructor(e){this._onWillExecuteCommand=new re,this._onDidExecuteCommand=new re,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=e}executeCommand(e,...t){const i=Bi.getCommand(e);if(!i)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});const n=this._instantiationService.invokeFunction.apply(this._instantiationService,[i.handler,...t]);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(n){return Promise.reject(n)}}};HK=vp([ho(0,bt)],HK);let fV=class extends i9e{constructor(e,t,i,n,o,l){super(e,t,i,n,o),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const r=m=>{const p=new Ze;p.add(ge(m,De.KEY_DOWN,g=>{const b=new Jn(g);this._dispatch(b,b.target)&&(b.preventDefault(),b.stopPropagation())})),p.add(ge(m,De.KEY_UP,g=>{const b=new Jn(g);this._singleModifierDispatch(b,b.target)&&b.preventDefault()})),this._domNodeListeners.push(new DPe(m,p))},a=m=>{for(let p=0;p<this._domNodeListeners.length;p++){const g=this._domNodeListeners[p];g.domNode===m&&(this._domNodeListeners.splice(p,1),g.dispose())}},d=m=>{m.getOption(61)||r(m.getContainerDomNode())},c=m=>{m.getOption(61)||a(m.getContainerDomNode())};this._register(l.onCodeEditorAdd(d)),this._register(l.onCodeEditorRemove(c)),l.listCodeEditors().forEach(d);const h=m=>{r(m.getContainerDomNode())},u=m=>{a(m.getContainerDomNode())};this._register(l.onDiffEditorAdd(h)),this._register(l.onDiffEditorRemove(u)),l.listDiffEditors().forEach(h)}addDynamicKeybinding(e,t,i,n){return _h(Bi.registerCommand(e,i),this.addDynamicKeybindings([{keybinding:t,command:e,when:n}]))}addDynamicKeybindings(e){const t=e.map(i=>({keybinding:NH(i.keybinding,pd),command:i.command??null,commandArgs:i.commandArgs,when:i.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}));return this._dynamicKeybindings=this._dynamicKeybindings.concat(t),this.updateResolver(),gt(()=>{for(let i=0;i<this._dynamicKeybindings.length;i++)if(this._dynamicKeybindings[i]===t[0]){this._dynamicKeybindings.splice(i,t.length),this.updateResolver();return}})}updateResolver(){this._cachedResolver=null,this._onDidUpdateKeybindings.fire()}_getResolver(){if(!this._cachedResolver){const e=this._toNormalizedKeybindingItems(la.getDefaultKeybindings(),!0),t=this._toNormalizedKeybindingItems(this._dynamicKeybindings,!1);this._cachedResolver=new pC(e,t,i=>this._log(i))}return this._cachedResolver}_documentHasFocus(){return Qn.document.hasFocus()}_toNormalizedKeybindingItems(e,t){const i=[];let n=0;for(const o of e){const l=o.when||void 0,r=o.keybinding;if(!r)i[n++]=new Xle(void 0,o.command,o.commandArgs,l,t,null,!1);else{const a=WM.resolveKeybinding(r,pd);for(const d of a)i[n++]=new Xle(d,o.command,o.commandArgs,l,t,null,!1)}}return i}resolveKeyboardEvent(e){const t=new Z0(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,e.keyCode);return new WM([t],pd)}};fV=vp([ho(0,wt),ho(1,On),ho(2,lr),ho(3,no),ho(4,El),ho(5,zi)],fV);class DPe extends de{constructor(e,t){super(),this.domNode=e,this._register(t)}}function iae(s){return s&&typeof s=="object"&&(!s.overrideIdentifier||typeof s.overrideIdentifier=="string")&&(!s.resource||s.resource instanceof At)}let Kv=class{constructor(e){this.logService=e,this._onDidChangeConfiguration=new re,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const t=new yPe(e);this._configuration=new LY(t.reload(),Ul.createEmptyModel(e),Ul.createEmptyModel(e),Ul.createEmptyModel(e),Ul.createEmptyModel(e),Ul.createEmptyModel(e),new sl,Ul.createEmptyModel(e),new sl,e),t.dispose()}getValue(e,t){const i=typeof e=="string"?e:void 0,n=iae(e)?e:iae(t)?t:{};return this._configuration.getValue(i,n,void 0)}updateValues(e){const t={data:this._configuration.toData()},i=[];for(const n of e){const[o,l]=n;this.getValue(o)!==l&&(this._configuration.updateValue(o,l),i.push(o))}if(i.length>0){const n=new Kze({keys:i,overrides:[]},t,this._configuration,void 0,this.logService);n.source=8,this._onDidChangeConfiguration.fire(n)}return Promise.resolve()}updateValue(e,t,i,n){return this.updateValues([[e,t]])}inspect(e,t={}){return this._configuration.inspect(e,t,void 0)}};Kv=vp([ho(0,El)],Kv);let PK=class{constructor(e,t,i){this.configurationService=e,this.modelService=t,this.languageService=i,this._onDidChangeConfiguration=new re,this.configurationService.onDidChangeConfiguration(n=>{this._onDidChangeConfiguration.fire({affectedKeys:n.affectedKeys,affectsConfiguration:(o,l)=>n.affectsConfiguration(l)})})}getValue(e,t,i){const n=oe.isIPosition(t)?t:null,o=n?typeof i=="string"?i:void 0:typeof t=="string"?t:void 0,l=e?this.getLanguage(e,n):void 0;return typeof o>"u"?this.configurationService.getValue({resource:e,overrideIdentifier:l}):this.configurationService.getValue(o,{resource:e,overrideIdentifier:l})}getLanguage(e,t){const i=this.modelService.getModel(e);return i?t?i.getLanguageIdAtPosition(t.lineNumber,t.column):i.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(e)}};PK=vp([ho(0,li),ho(1,es),ho(2,Zs)],PK);let KK=class{constructor(e){this.configurationService=e}getEOL(e,t){const i=this.configurationService.getValue("files.eol",{overrideIdentifier:t,resource:e});return i&&typeof i=="string"&&i!=="auto"?i:sa||Fi?`
- `:`\r
- `}};KK=vp([ho(0,li)],KK);class GPe{publicLog2(){}}const Gw=class Gw{constructor(){const e=At.from({scheme:Gw.SCHEME,authority:"model",path:"/"});this.workspace={id:pbe,folders:[new U9e({uri:e,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(e){return e&&e.scheme===Gw.SCHEME?this.workspace.folders[0]:null}};Gw.SCHEME="inmemory";let qK=Gw;function qv(s,e,t){if(!e||!(s instanceof Kv))return;const i=[];Object.keys(e).forEach(n=>{_ze(n)&&i.push([`editor.${n}`,e[n]]),t&&Oze(n)&&i.push([`diffEditor.${n}`,e[n]])}),i.length>0&&s.updateValues(i)}let $K=class{constructor(e){this._modelService=e}hasPreviewHandler(){return!1}async apply(e,t){const i=Array.isArray(e)?e:Qee.convert(e),n=new Map;for(const r of i){if(!(r instanceof GU))throw new Error("bad edit - only text edits are supported");const a=this._modelService.getModel(r.resource);if(!a)throw new Error("bad edit - model not found");if(typeof r.versionId=="number"&&a.getVersionId()!==r.versionId)throw new Error("bad state - model changed in the meantime");let d=n.get(a);d||(d=[],n.set(a,d)),d.push(Rs.replaceMove(v.lift(r.textEdit.range),r.textEdit.text))}let o=0,l=0;for(const[r,a]of n)r.pushStackElement(),r.pushEditOperations([],a,()=>[]),r.pushStackElement(),l+=1,o+=a.length;return{ariaSummary:FA(GP.bulkEditServiceSummary,o,l),isApplied:o>0}}};$K=vp([ho(0,es)],$K);class EPe{getUriLabel(e,t){return e.scheme==="file"?e.fsPath:e.path}getUriBasenameLabel(e){return qc(e)}}let e4=class extends xze{constructor(e,t){super(e),this._codeEditorService=t}showContextView(e,t,i){if(!t){const n=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();n&&(t=n.getContainerDomNode())}return super.showContextView(e,t,i)}};e4=vp([ho(0,pf),ho(1,zi)],e4);class vPe{constructor(){this._neverEmitter=new re,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class xPe extends YP{constructor(){super()}}class JPe extends wPe{constructor(){super(new fve)}}let t4=class extends eK{constructor(e,t,i,n,o,l){super(e,t,i,n,o,l),this.configure({blockMouse:!1})}};t4=vp([ho(0,lr),ho(1,no),ho(2,L0),ho(3,dn),ho(4,pc),ho(5,wt)],t4);const i4={amdModuleId:"vs/editor/common/services/editorSimpleWorker",esmModuleLocation:void 0,label:"editorWorkerService"};let n4=class extends PH{constructor(e,t,i,n,o){super(i4,e,t,i,n,o)}};n4=vp([ho(0,es),ho(1,UY),ho(2,El),ho(3,Qs),ho(4,lt)],n4);class XPe{async playSignal(e,t){}}Ci(El,JPe,0);Ci(li,Kv,0);Ci(UY,PK,0);Ci(d0e,KK,0);Ci(yA,qK,0);Ci(hV,EPe,0);Ci(lr,GPe,0);Ci(rB,IPe,0);Ci(eee,kPe,0);Ci(no,jK,0);Ci(Ep,Rb,0);Ci(Zs,xPe,0);Ci(fc,cPe,0);Ci(es,pK,0);Ci(Iee,oK,0);Ci(wt,zK,0);Ci(mbe,LPe,0);Ci(bf,OK,0);Ci(su,w3e,0);Ci(_a,n4,0);Ci(uB,$K,0);Ci(gbe,vPe,0);Ci(Xa,_K,0);Ci(Qd,GK,0);Ci(sh,RHe,0);Ci(On,HK,0);Ci(dn,fV,0);Ci(nh,kK,0);Ci(L0,e4,0);Ci(za,sK,0);Ci(D0,XK,0);Ci(Vd,t4,0);Ci(pc,EK,0);Ci(Ff,XPe,0);Ci(uUe,TPe,0);var It;(function(s){const e=new t1;for(const[a,d]of goe())e.set(a,d);const t=new Pv(e,!0);e.set(bt,t);function i(a){n||l({});const d=e.get(a);if(!d)throw new Error("Missing service "+a);return d instanceof ep?t.invokeFunction(c=>c.get(a)):d}s.get=i;let n=!1;const o=new re;function l(a){if(n)return t;n=!0;for(const[c,h]of goe())e.get(c)||e.set(c,h);for(const c in a)if(a.hasOwnProperty(c)){const h=Zi(c);e.get(h)instanceof ep&&e.set(h,a[c])}const d=MPe();for(const c of d)try{t.createInstance(c)}catch(h){vt(h)}return o.fire(),t}s.initialize=l;function r(a){if(n)return a();const d=new Ze,c=d.add(o.event(()=>{c.dispose(),d.add(a())}));return d}s.withServices=r})(It||(It={}));function YPe(s,e){return new zPe(s,e)}class zPe extends tv{constructor(e,t){const i={amdModuleId:i4.amdModuleId,esmModuleLocation:i4.esmModuleLocation,label:t.label};super(i,t.keepIdleModels||!1,e),this._foreignModuleId=t.moduleId,this._foreignModuleCreateData=t.createData||null,this._foreignModuleHost=t.host||null,this._foreignProxy=null}fhr(e,t){if(!this._foreignModuleHost||typeof this._foreignModuleHost[e]!="function")return Promise.reject(new Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(i){return Promise.reject(i)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(e=>{const t=this._foreignModuleHost?pj(this._foreignModuleHost):[];return e.$loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,t).then(i=>{this._foreignModuleCreateData=null;const n=(r,a)=>e.$fmr(r,a),o=(r,a)=>function(){const d=Array.prototype.slice.call(arguments,0);return a(r,d)},l={};for(const r of i)l[r]=o(r,n);return l})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(e){return this.workerWithSyncedResources(e).then(t=>this.getProxy())}}const RB={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"};class qr{constructor(e,t,i,n){this.startColumn=e,this.endColumn=t,this.className=i,this.type=n,this._lineDecorationBrand=void 0}static _equals(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}static equalsArr(e,t){const i=e.length,n=t.length;if(i!==n)return!1;for(let o=0;o<i;o++)if(!qr._equals(e[o],t[o]))return!1;return!0}static extractWrapped(e,t,i){if(e.length===0)return e;const n=t+1,o=i+1,l=i-t,r=[];let a=0;for(const d of e)d.endColumn<=n||d.startColumn>=o||(r[a++]=new qr(Math.max(1,d.startColumn-n+1),Math.min(l+1,d.endColumn-n+1),d.className,d.type));return r}static filter(e,t,i,n){if(e.length===0)return[];const o=[];let l=0;for(let r=0,a=e.length;r<a;r++){const d=e[r],c=d.range;if(c.endLineNumber<t||c.startLineNumber>t||c.isEmpty()&&(d.type===0||d.type===3))continue;const h=c.startLineNumber===t?c.startColumn:i,u=c.endLineNumber===t?c.endColumn:n;o[l++]=new qr(h,u,d.inlineClassName,d.type)}return o}static _typeCompare(e,t){const i=[2,0,1,3];return i[e]-i[t]}static compare(e,t){if(e.startColumn!==t.startColumn)return e.startColumn-t.startColumn;if(e.endColumn!==t.endColumn)return e.endColumn-t.endColumn;const i=qr._typeCompare(e.type,t.type);return i!==0?i:e.className!==t.className?e.className<t.className?-1:1:0}}class nae{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.className=i,this.metadata=n}}class $v{constructor(){this.stopOffsets=[],this.classNames=[],this.metadata=[],this.count=0}static _metadata(e){let t=0;for(let i=0,n=e.length;i<n;i++)t|=e[i];return t}consumeLowerThan(e,t,i){for(;this.count>0&&this.stopOffsets[0]<e;){let n=0;for(;n+1<this.count&&this.stopOffsets[n]===this.stopOffsets[n+1];)n++;i.push(new nae(t,this.stopOffsets[n],this.classNames.join(" "),$v._metadata(this.metadata))),t=this.stopOffsets[n]+1,this.stopOffsets.splice(0,n+1),this.classNames.splice(0,n+1),this.metadata.splice(0,n+1),this.count-=n+1}return this.count>0&&t<e&&(i.push(new nae(t,e-1,this.classNames.join(" "),$v._metadata(this.metadata))),t=e),t}insert(e,t,i){if(this.count===0||this.stopOffsets[this.count-1]<=e)this.stopOffsets.push(e),this.classNames.push(t),this.metadata.push(i);else for(let n=0;n<this.count;n++)if(this.stopOffsets[n]>=e){this.stopOffsets.splice(n,0,e),this.classNames.splice(n,0,t),this.metadata.splice(n,0,i);break}this.count++}}class _Pe{static normalize(e,t){if(t.length===0)return[];const i=[],n=new $v;let o=0;for(let l=0,r=t.length;l<r;l++){const a=t[l];let d=a.startColumn,c=a.endColumn;const h=a.className,u=a.type===1?2:a.type===2?4:0;if(d>1){const g=e.charCodeAt(d-2);xo(g)&&d--}if(c>1){const g=e.charCodeAt(c-2);xo(g)&&c--}const m=d-1,p=c-2;o=n.consumeLowerThan(m,o,i),n.count===0&&(o=m),n.insert(p,h,u)}return n.consumeLowerThan(1073741824,o,i),i}}class tl{constructor(e,t,i,n){this.endIndex=e,this.type=t,this.metadata=i,this.containsRTL=n,this._linePartBrand=void 0}isWhitespace(){return!!(this.metadata&1)}isPseudoAfter(){return!!(this.metadata&4)}}class lfe{constructor(e,t){this.startOffset=e,this.endOffset=t}equals(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}}class Zf{constructor(e,t,i,n,o,l,r,a,d,c,h,u,m,p,g,b,f,Z,A){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.continuesWithWrappedLine=n,this.isBasicASCII=o,this.containsRTL=l,this.fauxIndentLength=r,this.lineTokens=a,this.lineDecorations=d.sort(qr.compare),this.tabSize=c,this.startVisibleColumn=h,this.spaceWidth=u,this.stopRenderingLineAfter=g,this.renderWhitespace=b==="all"?4:b==="boundary"?1:b==="selection"?2:b==="trailing"?3:0,this.renderControlCharacters=f,this.fontLigatures=Z,this.selectionsOnLine=A&&A.sort((Q,R)=>Q.startOffset<R.startOffset?-1:1);const N=Math.abs(p-u),W=Math.abs(m-u);N<W?(this.renderSpaceWidth=p,this.renderSpaceCharCode=11825):(this.renderSpaceWidth=m,this.renderSpaceCharCode=183)}sameSelection(e){if(this.selectionsOnLine===null)return e===null;if(e===null||e.length!==this.selectionsOnLine.length)return!1;for(let t=0;t<this.selectionsOnLine.length;t++)if(!this.selectionsOnLine[t].equals(e[t]))return!1;return!0}equals(e){return this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineContent===e.lineContent&&this.continuesWithWrappedLine===e.continuesWithWrappedLine&&this.isBasicASCII===e.isBasicASCII&&this.containsRTL===e.containsRTL&&this.fauxIndentLength===e.fauxIndentLength&&this.tabSize===e.tabSize&&this.startVisibleColumn===e.startVisibleColumn&&this.spaceWidth===e.spaceWidth&&this.renderSpaceWidth===e.renderSpaceWidth&&this.renderSpaceCharCode===e.renderSpaceCharCode&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.fontLigatures===e.fontLigatures&&qr.equalsArr(this.lineDecorations,e.lineDecorations)&&this.lineTokens.equals(e.lineTokens)&&this.sameSelection(e.selectionsOnLine)}}class rfe{constructor(e,t){this.partIndex=e,this.charIndex=t}}class tp{static getPartIndex(e){return(e&4294901760)>>>16}static getCharIndex(e){return(e&65535)>>>0}constructor(e,t){this.length=e,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(e,t,i,n){const o=(t<<16|i<<0)>>>0;this._data[e-1]=o,this._horizontalOffset[e-1]=n}getHorizontalOffset(e){return this._horizontalOffset.length===0?0:this._horizontalOffset[e-1]}charOffsetToPartData(e){return this.length===0?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}getDomPosition(e){const t=this.charOffsetToPartData(e-1),i=tp.getPartIndex(t),n=tp.getCharIndex(t);return new rfe(i,n)}getColumn(e,t){return this.partDataToCharOffset(e.partIndex,t,e.charIndex)+1}partDataToCharOffset(e,t,i){if(this.length===0)return 0;const n=(e<<16|i<<0)>>>0;let o=0,l=this.length-1;for(;o+1<l;){const g=o+l>>>1,b=this._data[g];if(b===n)return g;b>n?l=g:o=g}if(o===l)return o;const r=this._data[o],a=this._data[l];if(r===n)return o;if(a===n)return l;const d=tp.getPartIndex(r),c=tp.getCharIndex(r),h=tp.getPartIndex(a);let u;d!==h?u=t:u=tp.getCharIndex(a);const m=i-c,p=u-i;return m<=p?o:l}}class s4{constructor(e,t,i){this._renderLineOutputBrand=void 0,this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=i}}function SB(s,e){if(s.lineContent.length===0){if(s.lineDecorations.length>0){e.appendString("<span>");let t=0,i=0,n=0;for(const l of s.lineDecorations)(l.type===1||l.type===2)&&(e.appendString('<span class="'),e.appendString(l.className),e.appendString('"></span>'),l.type===1&&(n|=1,t++),l.type===2&&(n|=2,i++));e.appendString("</span>");const o=new tp(1,t+i);return o.setColumnInfo(1,t,0,0),new s4(o,!1,n)}return e.appendString("<span><span></span></span>"),new s4(new tp(0,0),!1,0)}return tKe(HPe(s),e)}class OPe{constructor(e,t,i,n){this.characterMapping=e,this.html=t,this.containsRTL=i,this.containsForeignElements=n}}function KY(s){const e=new XQ(1e4),t=SB(s,e);return new OPe(t.characterMapping,e.build(),t.containsRTL,t.containsForeignElements)}class jPe{constructor(e,t,i,n,o,l,r,a,d,c,h,u,m,p,g,b){this.fontIsMonospace=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.len=n,this.isOverflowing=o,this.overflowingCharCount=l,this.parts=r,this.containsForeignElements=a,this.fauxIndentLength=d,this.tabSize=c,this.startVisibleColumn=h,this.containsRTL=u,this.spaceWidth=m,this.renderSpaceCharCode=p,this.renderWhitespace=g,this.renderControlCharacters=b}}function HPe(s){const e=s.lineContent;let t,i,n;s.stopRenderingLineAfter!==-1&&s.stopRenderingLineAfter<e.length?(t=!0,i=e.length-s.stopRenderingLineAfter,n=s.stopRenderingLineAfter):(t=!1,i=0,n=e.length);let o=PPe(e,s.containsRTL,s.lineTokens,s.fauxIndentLength,n);s.renderControlCharacters&&!s.isBasicASCII&&(o=qPe(e,o)),(s.renderWhitespace===4||s.renderWhitespace===1||s.renderWhitespace===2&&s.selectionsOnLine||s.renderWhitespace===3&&!s.continuesWithWrappedLine)&&(o=$Pe(s,e,n,o));let l=0;if(s.lineDecorations.length>0){for(let r=0,a=s.lineDecorations.length;r<a;r++){const d=s.lineDecorations[r];d.type===3||d.type===1?l|=1:d.type===2&&(l|=2)}o=eKe(e,n,o,s.lineDecorations)}return s.containsRTL||(o=KPe(e,o,!s.isBasicASCII||s.fontLigatures)),new jPe(s.useMonospaceOptimizations,s.canUseHalfwidthRightwardsArrow,e,n,t,i,o,l,s.fauxIndentLength,s.tabSize,s.startVisibleColumn,s.containsRTL,s.spaceWidth,s.renderSpaceCharCode,s.renderWhitespace,s.renderControlCharacters)}function PPe(s,e,t,i,n){const o=[];let l=0;i>0&&(o[l++]=new tl(i,"",0,!1));let r=i;for(let a=0,d=t.getCount();a<d;a++){const c=t.getEndOffset(a);if(c<=i)continue;const h=t.getClassName(a);if(c>=n){const m=e?$W(s.substring(r,n)):!1;o[l++]=new tl(n,h,0,m);break}const u=e?$W(s.substring(r,c)):!1;o[l++]=new tl(c,h,0,u),r=c}return o}function KPe(s,e,t){let i=0;const n=[];let o=0;if(t)for(let l=0,r=e.length;l<r;l++){const a=e[l],d=a.endIndex;if(i+50<d){const c=a.type,h=a.metadata,u=a.containsRTL;let m=-1,p=i;for(let g=i;g<d;g++)s.charCodeAt(g)===32&&(m=g),m!==-1&&g-p>=50&&(n[o++]=new tl(m+1,c,h,u),p=m+1,m=-1);p!==d&&(n[o++]=new tl(d,c,h,u))}else n[o++]=a;i=d}else for(let l=0,r=e.length;l<r;l++){const a=e[l],d=a.endIndex,c=d-i;if(c>50){const h=a.type,u=a.metadata,m=a.containsRTL,p=Math.ceil(c/50);for(let g=1;g<p;g++){const b=i+g*50;n[o++]=new tl(b,h,u,m)}n[o++]=new tl(d,h,u,m)}else n[o++]=a;i=d}return n}function afe(s){return s<32?s!==9:s===127||s>=8234&&s<=8238||s>=8294&&s<=8297||s>=8206&&s<=8207||s===1564}function qPe(s,e){const t=[];let i=new tl(0,"",0,!1),n=0;for(const o of e){const l=o.endIndex;for(;n<l;n++){const r=s.charCodeAt(n);afe(r)&&(n>i.endIndex&&(i=new tl(n,o.type,o.metadata,o.containsRTL),t.push(i)),i=new tl(n+1,"mtkcontrol",o.metadata,!1),t.push(i))}n>i.endIndex&&(i=new tl(l,o.type,o.metadata,o.containsRTL),t.push(i))}return t}function $Pe(s,e,t,i){const n=s.continuesWithWrappedLine,o=s.fauxIndentLength,l=s.tabSize,r=s.startVisibleColumn,a=s.useMonospaceOptimizations,d=s.selectionsOnLine,c=s.renderWhitespace===1,h=s.renderWhitespace===3,u=s.renderSpaceWidth!==s.spaceWidth,m=[];let p=0,g=0,b=i[g].type,f=i[g].containsRTL,Z=i[g].endIndex;const A=i.length;let N=!1,W=Wr(e),Q;W===-1?(N=!0,W=t,Q=t):Q=Xu(e);let R=!1,M=0,w=d&&d[M],Y=r%l;for(let P=o;P<t;P++){const j=e.charCodeAt(P);w&&P>=w.endOffset&&(M++,w=d&&d[M]);let X;if(P<W||P>Q)X=!0;else if(j===9)X=!0;else if(j===32)if(c)if(R)X=!0;else{const ie=P+1<t?e.charCodeAt(P+1):0;X=ie===32||ie===9}else X=!0;else X=!1;if(X&&d&&(X=!!w&&w.startOffset<=P&&w.endOffset>P),X&&h&&(X=N||P>Q),X&&f&&P>=W&&P<=Q&&(X=!1),R){if(!X||!a&&Y>=l){if(u){const ie=p>0?m[p-1].endIndex:o;for(let se=ie+1;se<=P;se++)m[p++]=new tl(se,"mtkw",1,!1)}else m[p++]=new tl(P,"mtkw",1,!1);Y=Y%l}}else(P===Z||X&&P>o)&&(m[p++]=new tl(P,b,0,f),Y=Y%l);for(j===9?Y=l:jU(j)?Y+=2:Y++,R=X;P===Z&&(g++,g<A);)b=i[g].type,f=i[g].containsRTL,Z=i[g].endIndex}let G=!1;if(R)if(n&&c){const P=t>0?e.charCodeAt(t-1):0,j=t>1?e.charCodeAt(t-2):0;P===32&&j!==32&&j!==9||(G=!0)}else G=!0;if(G)if(u){const P=p>0?m[p-1].endIndex:o;for(let j=P+1;j<=t;j++)m[p++]=new tl(j,"mtkw",1,!1)}else m[p++]=new tl(t,"mtkw",1,!1);else m[p++]=new tl(t,b,0,f);return m}function eKe(s,e,t,i){i.sort(qr.compare);const n=_Pe.normalize(s,i),o=n.length;let l=0;const r=[];let a=0,d=0;for(let h=0,u=t.length;h<u;h++){const m=t[h],p=m.endIndex,g=m.type,b=m.metadata,f=m.containsRTL;for(;l<o&&n[l].startOffset<p;){const Z=n[l];if(Z.startOffset>d&&(d=Z.startOffset,r[a++]=new tl(d,g,b,f)),Z.endOffset+1<=p)d=Z.endOffset+1,r[a++]=new tl(d,g+" "+Z.className,b|Z.metadata,f),l++;else{d=p,r[a++]=new tl(d,g+" "+Z.className,b|Z.metadata,f);break}}p>d&&(d=p,r[a++]=new tl(d,g,b,f))}const c=t[t.length-1].endIndex;if(l<o&&n[l].startOffset===c)for(;l<o&&n[l].startOffset===c;){const h=n[l];r[a++]=new tl(d,h.className,h.metadata,!1),l++}return r}function tKe(s,e){const t=s.fontIsMonospace,i=s.canUseHalfwidthRightwardsArrow,n=s.containsForeignElements,o=s.lineContent,l=s.len,r=s.isOverflowing,a=s.overflowingCharCount,d=s.parts,c=s.fauxIndentLength,h=s.tabSize,u=s.startVisibleColumn,m=s.containsRTL,p=s.spaceWidth,g=s.renderSpaceCharCode,b=s.renderWhitespace,f=s.renderControlCharacters,Z=new tp(l+1,d.length);let A=!1,N=0,W=u,Q=0,R=0,M=0;m?e.appendString('<span dir="ltr">'):e.appendString("<span>");for(let w=0,Y=d.length;w<Y;w++){const G=d[w],P=G.endIndex,j=G.type,X=G.containsRTL,ie=b!==0&&G.isWhitespace(),se=ie&&!t&&(j==="mtkw"||!n),pe=N===P&&G.isPseudoAfter();if(Q=0,e.appendString("<span "),X&&e.appendString('style="unicode-bidi:isolate" '),e.appendString('class="'),e.appendString(se?"mtkz":j),e.appendASCIICharCode(34),ie){let Ue=0;{let Qe=N,He=W;for(;Qe<P;Qe++){const xe=(o.charCodeAt(Qe)===9?h-He%h:1)|0;Ue+=xe,Qe>=c&&(He+=xe)}}for(se&&(e.appendString(' style="width:'),e.appendString(String(p*Ue)),e.appendString('px"')),e.appendASCIICharCode(62);N<P;N++){Z.setColumnInfo(N+1,w-M,Q,R),M=0;const Qe=o.charCodeAt(N);let He,Te;if(Qe===9){He=h-W%h|0,Te=He,!i||Te>1?e.appendCharCode(8594):e.appendCharCode(65515);for(let xe=2;xe<=Te;xe++)e.appendCharCode(160)}else He=2,Te=1,e.appendCharCode(g),e.appendCharCode(8204);Q+=He,R+=Te,N>=c&&(W+=Te)}}else for(e.appendASCIICharCode(62);N<P;N++){Z.setColumnInfo(N+1,w-M,Q,R),M=0;const Ue=o.charCodeAt(N);let Qe=1,He=1;switch(Ue){case 9:Qe=h-W%h,He=Qe;for(let Te=1;Te<=Qe;Te++)e.appendCharCode(160);break;case 32:e.appendCharCode(160);break;case 60:e.appendString("<");break;case 62:e.appendString(">");break;case 38:e.appendString("&");break;case 0:f?e.appendCharCode(9216):e.appendString("�");break;case 65279:case 8232:case 8233:case 133:e.appendCharCode(65533);break;default:jU(Ue)&&He++,f&&Ue<32?e.appendCharCode(9216+Ue):f&&Ue===127?e.appendCharCode(9249):f&&afe(Ue)?(e.appendString("[U+"),e.appendString(iKe(Ue)),e.appendString("]"),Qe=8,He=Qe):e.appendCharCode(Ue)}Q+=Qe,R+=He,N>=c&&(W+=He)}pe?M++:M=0,N>=l&&!A&&G.isPseudoAfter()&&(A=!0,Z.setColumnInfo(N+1,w,Q,R)),e.appendString("</span>")}return A||Z.setColumnInfo(l+1,d.length-1,Q,R),r&&(e.appendString('<span class="mtkoverflow">'),e.appendString(U("showMore","Show more ({0})",nKe(a))),e.appendString("</span>")),e.appendString("</span>"),new s4(Z,m,n)}function iKe(s){return s.toString(16).toUpperCase().padStart(4,"0")}function nKe(s){return s<1024?U("overflow.chars","{0} chars",s):s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(1)} MB`}class sae{constructor(e,t,i,n){this._viewportBrand=void 0,this.top=e|0,this.left=t|0,this.width=i|0,this.height=n|0}}class sKe{constructor(e,t){this.tabSize=e,this.data=t}}class gte{constructor(e,t,i,n,o,l,r){this._viewLineDataBrand=void 0,this.content=e,this.continuesWithWrappedLine=t,this.minColumn=i,this.maxColumn=n,this.startVisibleColumn=o,this.tokens=l,this.inlineDecorations=r}}class uc{constructor(e,t,i,n,o,l,r,a,d,c){this.minColumn=e,this.maxColumn=t,this.content=i,this.continuesWithWrappedLine=n,this.isBasicASCII=uc.isBasicASCII(i,l),this.containsRTL=uc.containsRTL(i,this.isBasicASCII,o),this.tokens=r,this.inlineDecorations=a,this.tabSize=d,this.startVisibleColumn=c}static isBasicASCII(e,t){return t?iB(e):!0}static containsRTL(e,t,i){return!t&&i?$W(e):!1}}class VC{constructor(e,t,i){this.range=e,this.inlineClassName=t,this.type=i}}class oKe{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.inlineClassName=i,this.inlineClassNameAffectsLetterSpacing=n}toInlineDecoration(e){return new VC(new v(e,this.startOffset+1,e,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}class dfe{constructor(e,t){this._viewModelDecorationBrand=void 0,this.range=e,this.options=t}}class vM{constructor(e,t,i){this.color=e,this.zIndex=t,this.data=i}static compareByRenderingProps(e,t){return e.zIndex===t.zIndex?e.color<t.color?-1:e.color>t.color?1:0:e.zIndex-t.zIndex}static equals(e,t){return e.color===t.color&&e.zIndex===t.zIndex&&Fs(e.data,t.data)}static equalsArr(e,t){return Fs(e,t,vM.equals)}}function lKe(s){return Array.isArray(s)}function rKe(s){return!lKe(s)}function cfe(s){return typeof s=="string"}function oae(s){return!cfe(s)}function lZ(s){return!s}function h0(s,e){return s.ignoreCase&&e?e.toLowerCase():e}function lae(s){return s.replace(/[&<>'"_]/g,"-")}function aKe(s,e){console.log(`${s.languageId}: ${e}`)}function as(s,e){return new Error(`${s.languageId}: ${e}`)}function Jb(s,e,t,i,n){const o=/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g;let l=null;return e.replace(o,function(r,a,d,c,h,u,m,p,g){return lZ(d)?lZ(c)?!lZ(h)&&h<i.length?h0(s,i[h]):!lZ(m)&&s&&typeof s[m]=="string"?s[m]:(l===null&&(l=n.split("."),l.unshift(n)),!lZ(u)&&u<l.length?h0(s,l[u]):""):h0(s,t):"$"})}function dKe(s,e,t){const i=/\$[sS](\d\d?)/g;let n=null;return e.replace(i,function(o,l){return n===null&&(n=t.split("."),n.unshift(t)),!lZ(l)&&l<n.length?h0(s,n[l]):""})}function dk(s,e){let t=e;for(;t&&t.length>0;){const i=s.tokenizer[t];if(i)return i;const n=t.lastIndexOf(".");n<0?t=null:t=t.substr(0,n)}return null}function cKe(s,e){let t=e;for(;t&&t.length>0;){if(s.stateNames[t])return!0;const n=t.lastIndexOf(".");n<0?t=null:t=t.substr(0,n)}return!1}var hKe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},uKe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},o4;const hfe=5,MX=class MX{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(e!==null&&e.depth>=this._maxCacheDepth)return new yW(e,t);let i=yW.getStackElementId(e);i.length>0&&(i+="|"),i+=t;let n=this._entries[i];return n||(n=new yW(e,t),this._entries[i]=n,n)}};MX._INSTANCE=new MX(hfe);let xM=MX;class yW{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;e!==null;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;e!==null&&t!==null;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return e===null&&t===null}equals(e){return yW._equals(this,e)}push(e){return xM.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return xM.create(this.parent,e)}}class bS{constructor(e,t){this.languageId=e,this.state=t}equals(e){return this.languageId===e.languageId&&this.state.equals(e.state)}clone(){return this.state.clone()===this.state?this:new bS(this.languageId,this.state)}}const TX=class TX{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(t!==null)return new QC(e,t);if(e!==null&&e.depth>=this._maxCacheDepth)return new QC(e,t);const i=yW.getStackElementId(e);let n=this._entries[i];return n||(n=new QC(e,null),this._entries[i]=n,n)}};TX._INSTANCE=new TX(hfe);let Xb=TX;class QC{constructor(e,t){this.stack=e,this.embeddedLanguageData=t}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:Xb.create(this.stack,this.embeddedLanguageData)}equals(e){return!(e instanceof QC)||!this.stack.equals(e.stack)?!1:this.embeddedLanguageData===null&&e.embeddedLanguageData===null?!0:this.embeddedLanguageData===null||e.embeddedLanguageData===null?!1:this.embeddedLanguageData.equals(e.embeddedLanguageData)}}class mKe{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(e){this._languageId=e}emit(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=t,this._lastTokenLanguage=this._languageId,this._tokens.push(new eM(e,t,this._languageId)))}nestedLanguageTokenize(e,t,i,n){const o=i.languageId,l=i.state,r=Ds.get(o);if(!r)return this.enterLanguage(o),this.emit(n,""),l;const a=r.tokenize(e,t,l);if(n!==0)for(const d of a.tokens)this._tokens.push(new eM(d.offset+n,d.type,d.language));else this._tokens=this._tokens.concat(a.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,a.endState}finalize(e){return new S$(this._tokens,e)}}class ex{constructor(e,t){this._languageService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(e){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(e)}emit(e,t){const i=this._theme.match(this._currentLanguageId,t)|1024;this._lastTokenMetadata!==i&&(this._lastTokenMetadata=i,this._tokens.push(e),this._tokens.push(i))}static _merge(e,t,i){const n=e!==null?e.length:0,o=t.length,l=i!==null?i.length:0;if(n===0&&o===0&&l===0)return new Uint32Array(0);if(n===0&&o===0)return i;if(o===0&&l===0)return e;const r=new Uint32Array(n+o+l);e!==null&&r.set(e);for(let a=0;a<o;a++)r[n+a]=t[a];return i!==null&&r.set(i,n+o),r}nestedLanguageTokenize(e,t,i,n){const o=i.languageId,l=i.state,r=Ds.get(o);if(!r)return this.enterLanguage(o),this.emit(n,""),l;const a=r.tokenizeEncoded(e,t,l);if(n!==0)for(let d=0,c=a.tokens.length;d<c;d+=2)a.tokens[d]+=n;return this._prependTokens=ex._merge(this._prependTokens,this._tokens,a.tokens),this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0,a.endState}finalize(e){return new P5(ex._merge(this._prependTokens,this._tokens,null),e)}}let JM=o4=class extends de{constructor(e,t,i,n,o){super(),this._configurationService=o,this._languageService=e,this._standaloneThemeService=t,this._languageId=i,this._lexer=n,this._embeddedLanguages=Object.create(null),this.embeddedLoaded=Promise.resolve(void 0);let l=!1;this._register(Ds.onDidChange(r=>{if(l)return;let a=!1;for(let d=0,c=r.changedLanguages.length;d<c;d++){const h=r.changedLanguages[d];if(this._embeddedLanguages[h]){a=!0;break}}a&&(l=!0,Ds.handleChange([this._languageId]),l=!1)})),this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}),this._register(this._configurationService.onDidChangeConfiguration(r=>{r.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))}))}getLoadStatus(){const e=[];for(const t in this._embeddedLanguages){const i=Ds.get(t);if(i){if(i instanceof o4){const n=i.getLoadStatus();n.loaded===!1&&e.push(n.promise)}continue}Ds.isResolved(t)||e.push(Ds.getOrCreate(t))}return e.length===0?{loaded:!0}:{loaded:!1,promise:Promise.all(e).then(t=>{})}}getInitialState(){const e=xM.create(null,this._lexer.start);return Xb.create(e,null)}tokenize(e,t,i){if(e.length>=this._maxTokenizationLineLength)return Wee(this._languageId,i);const n=new mKe,o=this._tokenize(e,t,i,n);return n.finalize(o)}tokenizeEncoded(e,t,i){if(e.length>=this._maxTokenizationLineLength)return BY(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),i);const n=new ex(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),o=this._tokenize(e,t,i,n);return n.finalize(o)}_tokenize(e,t,i,n){return i.embeddedLanguageData?this._nestedTokenize(e,t,i,0,n):this._myTokenize(e,t,i,0,n)}_findLeavingNestedLanguageOffset(e,t){let i=this._lexer.tokenizer[t.stack.state];if(!i&&(i=dk(this._lexer,t.stack.state),!i))throw as(this._lexer,"tokenizer state is not defined: "+t.stack.state);let n=-1,o=!1;for(const l of i){if(!oae(l.action)||l.action.nextEmbedded!=="@pop")continue;o=!0;let r=l.resolveRegex(t.stack.state);const a=r.source;if(a.substr(0,4)==="^(?:"&&a.substr(a.length-1,1)===")"){const c=(r.ignoreCase?"i":"")+(r.unicode?"u":"");r=new RegExp(a.substr(4,a.length-5),c)}const d=e.search(r);d===-1||d!==0&&l.matchOnlyAtLineStart||(n===-1||d<n)&&(n=d)}if(!o)throw as(this._lexer,'no rule containing nextEmbedded: "@pop" in tokenizer embedded state: '+t.stack.state);return n}_nestedTokenize(e,t,i,n,o){const l=this._findLeavingNestedLanguageOffset(e,i);if(l===-1){const d=o.nestedLanguageTokenize(e,t,i.embeddedLanguageData,n);return Xb.create(i.stack,new bS(i.embeddedLanguageData.languageId,d))}const r=e.substring(0,l);r.length>0&&o.nestedLanguageTokenize(r,!1,i.embeddedLanguageData,n);const a=e.substring(l);return this._myTokenize(a,t,i,n+l,o)}_safeRuleName(e){return e?e.name:"(unknown)"}_myTokenize(e,t,i,n,o){o.enterLanguage(this._languageId);const l=e.length,r=t&&this._lexer.includeLF?e+`
- `:e,a=r.length;let d=i.embeddedLanguageData,c=i.stack,h=0,u=null,m=!0;for(;m||h<a;){const p=h,g=c.depth,b=u?u.groups.length:0,f=c.state;let Z=null,A=null,N=null,W=null,Q=null;if(u){Z=u.matches;const w=u.groups.shift();A=w.matched,N=w.action,W=u.rule,u.groups.length===0&&(u=null)}else{if(!m&&h>=a)break;m=!1;let w=this._lexer.tokenizer[f];if(!w&&(w=dk(this._lexer,f),!w))throw as(this._lexer,"tokenizer state is not defined: "+f);const Y=r.substr(h);for(const G of w)if((h===0||!G.matchOnlyAtLineStart)&&(Z=Y.match(G.resolveRegex(f)),Z)){A=Z[0],N=G.action;break}}if(Z||(Z=[""],A=""),N||(h<a&&(Z=[r.charAt(h)],A=Z[0]),N=this._lexer.defaultToken),A===null)break;for(h+=A.length;rKe(N)&&oae(N)&&N.test;)N=N.test(A,Z,f,h===a);let R=null;if(typeof N=="string"||Array.isArray(N))R=N;else if(N.group)R=N.group;else if(N.token!==null&&N.token!==void 0){if(N.tokenSubst?R=Jb(this._lexer,N.token,A,Z,f):R=N.token,N.nextEmbedded)if(N.nextEmbedded==="@pop"){if(!d)throw as(this._lexer,"cannot pop embedded language if not inside one");d=null}else{if(d)throw as(this._lexer,"cannot enter embedded language from within an embedded language");Q=Jb(this._lexer,N.nextEmbedded,A,Z,f)}if(N.goBack&&(h=Math.max(0,h-N.goBack)),N.switchTo&&typeof N.switchTo=="string"){let w=Jb(this._lexer,N.switchTo,A,Z,f);if(w[0]==="@"&&(w=w.substr(1)),dk(this._lexer,w))c=c.switchTo(w);else throw as(this._lexer,"trying to switch to a state '"+w+"' that is undefined in rule: "+this._safeRuleName(W))}else{if(N.transform&&typeof N.transform=="function")throw as(this._lexer,"action.transform not supported");if(N.next)if(N.next==="@push"){if(c.depth>=this._lexer.maxStack)throw as(this._lexer,"maximum tokenizer stack size reached: ["+c.state+","+c.parent.state+",...]");c=c.push(f)}else if(N.next==="@pop"){if(c.depth<=1)throw as(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(W));c=c.pop()}else if(N.next==="@popall")c=c.popall();else{let w=Jb(this._lexer,N.next,A,Z,f);if(w[0]==="@"&&(w=w.substr(1)),dk(this._lexer,w))c=c.push(w);else throw as(this._lexer,"trying to set a next state '"+w+"' that is undefined in rule: "+this._safeRuleName(W))}}N.log&&typeof N.log=="string"&&aKe(this._lexer,this._lexer.languageId+": "+Jb(this._lexer,N.log,A,Z,f))}if(R===null)throw as(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(W));const M=w=>{const Y=this._languageService.getLanguageIdByLanguageName(w)||this._languageService.getLanguageIdByMimeType(w)||w,G=this._getNestedEmbeddedLanguageData(Y);if(h<a){const P=e.substr(h);return this._nestedTokenize(P,t,Xb.create(c,G),n+h,o)}else return Xb.create(c,G)};if(Array.isArray(R)){if(u&&u.groups.length>0)throw as(this._lexer,"groups cannot be nested: "+this._safeRuleName(W));if(Z.length!==R.length+1)throw as(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(W));let w=0;for(let Y=1;Y<Z.length;Y++)w+=Z[Y].length;if(w!==A.length)throw as(this._lexer,"with groups, all characters should be matched in consecutive groups in rule: "+this._safeRuleName(W));u={rule:W,matches:Z,groups:[]};for(let Y=0;Y<R.length;Y++)u.groups[Y]={action:R[Y],matched:Z[Y+1]};h-=A.length;continue}else{if(R==="@rematch"&&(h-=A.length,A="",Z=null,R="",Q!==null))return M(Q);if(A.length===0){if(a===0||g!==c.depth||f!==c.state||(u?u.groups.length:0)!==b)continue;throw as(this._lexer,"no progress in tokenizer in rule: "+this._safeRuleName(W))}let w=null;if(cfe(R)&&R.indexOf("@brackets")===0){const Y=R.substr(9),G=pKe(this._lexer,A);if(!G)throw as(this._lexer,"@brackets token returned but no bracket defined as: "+A);w=lae(G.token+Y)}else{const Y=R===""?"":R+this._lexer.tokenPostfix;w=lae(Y)}p<l&&o.emit(p+n,w)}if(Q!==null)return M(Q)}return Xb.create(c,d)}_getNestedEmbeddedLanguageData(e){if(!this._languageService.isRegisteredLanguageId(e))return new bS(e,cV);e!==this._languageId&&(this._languageService.requestBasicLanguageFeatures(e),Ds.getOrCreate(e),this._embeddedLanguages[e]=!0);const t=Ds.get(e);return t?new bS(e,t.getInitialState()):new bS(e,cV)}};JM=o4=hKe([uKe(4,li)],JM);function pKe(s,e){if(!e)return null;e=h0(s,e);const t=s.brackets;for(const i of t){if(i.open===e)return{token:i.token,bracketType:1};if(i.close===e)return{token:i.token,bracketType:-1}}return null}const _3=B0("standaloneColorizer",{createHTML:s=>s});class bte{static colorizeElement(e,t,i,n){n=n||{};const o=n.theme||"vs",l=n.mimeType||i.getAttribute("lang")||i.getAttribute("data-lang");if(!l)return console.error("Mode not detected"),Promise.resolve();const r=t.getLanguageIdByMimeType(l)||l;e.setTheme(o);const a=i.firstChild?i.firstChild.nodeValue:"";i.className+=" "+o;const d=c=>{const h=(_3==null?void 0:_3.createHTML(c))??c;i.innerHTML=h};return this.colorize(t,a||"",r,n).then(d,c=>console.error(c))}static async colorize(e,t,i,n){const o=e.languageIdCodec;let l=4;n&&typeof n.tabSize=="number"&&(l=n.tabSize),M$(t)&&(t=t.substr(1));const r=Lp(t);if(!e.isRegisteredLanguageId(i))return rae(r,l,o);const a=await Ds.getOrCreate(i);return a?gKe(r,l,a,o):rae(r,l,o)}static colorizeLine(e,t,i,n,o=4){const l=uc.isBasicASCII(e,t),r=uc.containsRTL(e,l,i);return KY(new Zf(!1,!0,e,!1,l,r,0,n,[],o,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(e,t,i=4){const n=e.getLineContent(t);e.tokenization.forceTokenization(t);const l=e.tokenization.getLineTokens(t).inflate();return this.colorizeLine(n,e.mightContainNonBasicASCII(),e.mightContainRTL(),l,i)}}function gKe(s,e,t,i){return new Promise((n,o)=>{const l=()=>{const r=bKe(s,e,t,i);if(t instanceof JM){const a=t.getLoadStatus();if(a.loaded===!1){a.promise.then(l,o);return}}n(r)};l()})}function rae(s,e,t){let i=[];const o=new Uint32Array(2);o[0]=0,o[1]=33587200;for(let l=0,r=s.length;l<r;l++){const a=s[l];o[0]=a.length;const d=new ll(o,a,t),c=uc.isBasicASCII(a,!0),h=uc.containsRTL(a,c,!0),u=KY(new Zf(!1,!0,a,!1,c,h,0,d,[],e,0,0,0,0,-1,"none",!1,!1,null));i=i.concat(u.html),i.push("<br/>")}return i.join("")}function bKe(s,e,t,i){let n=[],o=t.getInitialState();for(let l=0,r=s.length;l<r;l++){const a=s[l],d=t.tokenizeEncoded(a,!0,o);ll.convertToEndOffset(d.tokens,a.length);const c=new ll(d.tokens,a,i),h=uc.isBasicASCII(a,!0),u=uc.containsRTL(a,h,!0),m=KY(new Zf(!1,!0,a,!1,h,u,0,c.inflate(),[],e,0,0,0,0,-1,"none",!1,!1,null));n=n.concat(m.html),n.push("<br/>"),o=d.endState}return n.join("")}var UKe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},fKe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},kT;let tx=(kT=class{constructor(e,t){}dispose(){}},kT.ID="editor.contrib.markerDecorations",kT);tx=UKe([fKe(1,Iee)],tx);Gi(tx.ID,tx,0);class ufe extends de{constructor(e,t){super(),this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._referenceDomElement=e,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,t)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let e=null;const t=()=>{e?this.observe({width:e.width,height:e.height}):this.observe()};let i=!1,n=!1;const o=()=>{if(i&&!n)try{i=!1,n=!0,t()}finally{Sd(Wt(this._referenceDomElement),()=>{n=!1,o()})}};this._resizeObserver=new ResizeObserver(l=>{l&&l[0]&&l[0].contentRect?e={width:l[0].contentRect.width,height:l[0].contentRect.height}:e=null,i=!0,o()}),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(e){this.measureReferenceDomElement(!0,e)}measureReferenceDomElement(e,t){let i=0,n=0;t?(i=t.width,n=t.height):this._referenceDomElement&&(i=this._referenceDomElement.clientWidth,n=this._referenceDomElement.clientHeight),i=Math.max(5,i),n=Math.max(5,n),(this._width!==i||this._height!==n)&&(this._width=i,this._height=n,e&&this._onDidChange.fire())}}const iW=class iW{constructor(e,t){this.key=e,this.migrate=t}apply(e){const t=iW._read(e,this.key),i=o=>iW._read(e,o),n=(o,l)=>iW._write(e,o,l);this.migrate(t,i,n)}static _read(e,t){if(typeof e>"u")return;const i=t.indexOf(".");if(i>=0){const n=t.substring(0,i);return this._read(e[n],t.substring(i+1))}return e[t]}static _write(e,t,i){const n=t.indexOf(".");if(n>=0){const o=t.substring(0,n);e[o]=e[o]||{},this._write(e[o],t.substring(n+1),i);return}e[t]=i}};iW.items=[];let XM=iW;function am(s,e){XM.items.push(new XM(s,e))}function yd(s,e){am(s,(t,i,n)=>{if(typeof t<"u"){for(const[o,l]of e)if(t===o){n(s,l);return}}})}function FKe(s){XM.items.forEach(e=>e.apply(s))}yd("wordWrap",[[!0,"on"],[!1,"off"]]);yd("lineNumbers",[[!0,"on"],[!1,"off"]]);yd("cursorBlinking",[["visible","solid"]]);yd("renderWhitespace",[[!0,"boundary"],[!1,"none"]]);yd("renderLineHighlight",[[!0,"line"],[!1,"none"]]);yd("acceptSuggestionOnEnter",[[!0,"on"],[!1,"off"]]);yd("tabCompletion",[[!1,"off"],[!0,"onlySnippets"]]);yd("hover",[[!0,{enabled:!0}],[!1,{enabled:!1}]]);yd("parameterHints",[[!0,{enabled:!0}],[!1,{enabled:!1}]]);yd("autoIndent",[[!1,"advanced"],[!0,"full"]]);yd("matchBrackets",[[!0,"always"],[!1,"never"]]);yd("renderFinalNewline",[[!0,"on"],[!1,"off"]]);yd("cursorSmoothCaretAnimation",[[!0,"on"],[!1,"off"]]);yd("occurrencesHighlight",[[!0,"singleFile"],[!1,"off"]]);yd("wordBasedSuggestions",[[!0,"matchingDocuments"],[!1,"off"]]);am("autoClosingBrackets",(s,e,t)=>{s===!1&&(t("autoClosingBrackets","never"),typeof e("autoClosingQuotes")>"u"&&t("autoClosingQuotes","never"),typeof e("autoSurround")>"u"&&t("autoSurround","never"))});am("renderIndentGuides",(s,e,t)=>{typeof s<"u"&&(t("renderIndentGuides",void 0),typeof e("guides.indentation")>"u"&&t("guides.indentation",!!s))});am("highlightActiveIndentGuide",(s,e,t)=>{typeof s<"u"&&(t("highlightActiveIndentGuide",void 0),typeof e("guides.highlightActiveIndentation")>"u"&&t("guides.highlightActiveIndentation",!!s))});const ZKe={method:"showMethods",function:"showFunctions",constructor:"showConstructors",deprecated:"showDeprecated",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};am("suggest.filteredTypes",(s,e,t)=>{if(s&&typeof s=="object"){for(const i of Object.entries(ZKe))s[i[0]]===!1&&typeof e(`suggest.${i[1]}`)>"u"&&t(`suggest.${i[1]}`,!1);t("suggest.filteredTypes",void 0)}});am("quickSuggestions",(s,e,t)=>{if(typeof s=="boolean"){const i=s?"on":"off";t("quickSuggestions",{comments:i,strings:i,other:i})}});am("experimental.stickyScroll.enabled",(s,e,t)=>{typeof s=="boolean"&&(t("experimental.stickyScroll.enabled",void 0),typeof e("stickyScroll.enabled")>"u"&&t("stickyScroll.enabled",s))});am("experimental.stickyScroll.maxLineCount",(s,e,t)=>{typeof s=="number"&&(t("experimental.stickyScroll.maxLineCount",void 0),typeof e("stickyScroll.maxLineCount")>"u"&&t("stickyScroll.maxLineCount",s))});am("codeActionsOnSave",(s,e,t)=>{if(s&&typeof s=="object"){let i=!1;const n={};for(const o of Object.entries(s))typeof o[1]=="boolean"?(i=!0,n[o[0]]=o[1]?"explicit":"never"):n[o[0]]=o[1];i&&t("codeActionsOnSave",n)}});am("codeActionWidget.includeNearbyQuickfixes",(s,e,t)=>{typeof s=="boolean"&&(t("codeActionWidget.includeNearbyQuickfixes",void 0),typeof e("codeActionWidget.includeNearbyQuickFixes")>"u"&&t("codeActionWidget.includeNearbyQuickFixes",s))});am("lightbulb.enabled",(s,e,t)=>{typeof s=="boolean"&&t("lightbulb.enabled",s?void 0:"off")});class AKe{constructor(){this._tabFocus=!1,this._onDidChangeTabFocus=new re,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(){return this._tabFocus}setTabFocusMode(e){this._tabFocus=e,this._onDidChangeTabFocus.fire(this._tabFocus)}}const FV=new AKe;var NKe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},RKe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let l4=class extends de{constructor(e,t,i,n,o){super(),this._accessibilityService=o,this._onDidChange=this._register(new re),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new re),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new Tpe,this.isSimpleWidget=e,this.contextMenuId=t,this._containerObserver=this._register(new ufe(n,i.dimension)),this._targetWindowId=Wt(n).vscodeWindowId,this._rawOptions=aae(i),this._validatedOptions=Yb.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(13)&&this._containerObserver.startObserving(),this._register(Gc.onDidChangeZoomLevel(()=>this._recomputeOptions())),this._register(FV.onDidChangeTabFocus(()=>this._recomputeOptions())),this._register(this._containerObserver.onDidChange(()=>this._recomputeOptions())),this._register(BH.onDidChange(()=>this._recomputeOptions())),this._register(rM.getInstance(Wt(n)).onDidChange(()=>this._recomputeOptions())),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(()=>this._recomputeOptions()))}_recomputeOptions(){const e=this._computeOptions(),t=Yb.checkEquals(this.options,e);t!==null&&(this.options=e,this._onDidChangeFast.fire(t),this._onDidChange.fire(t))}_computeOptions(){const e=this._readEnvConfiguration(),t=XZ.createFromValidatedSettings(this._validatedOptions,e.pixelRatio,this.isSimpleWidget),i=this._readFontInfo(t),n={memory:this._computeOptionsMemory,outerWidth:e.outerWidth,outerHeight:e.outerHeight-this._reservedHeight,fontInfo:i,extraEditorClassName:e.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:e.emptySelectionClipboard,pixelRatio:e.pixelRatio,tabFocusMode:FV.getTabFocusMode(),accessibilitySupport:e.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return Yb.computeOptions(this._validatedOptions,n)}_readEnvConfiguration(){return{extraEditorClassName:WKe(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:JZ||jc,pixelRatio:rM.getInstance(eoe(this._targetWindowId,!0).window).value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(e){return BH.readFontInfo(eoe(this._targetWindowId,!0).window,e)}getRawOptions(){return this._rawOptions}updateOptions(e){const t=aae(e);Yb.applyUpdate(this._rawOptions,t)&&(this._validatedOptions=Yb.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(e){this._containerObserver.observe(e)}setIsDominatedByLongLines(e){this._isDominatedByLongLines!==e&&(this._isDominatedByLongLines=e,this._recomputeOptions())}setModelLineCount(e){const t=SKe(e);this._lineNumbersDigitCount!==t&&(this._lineNumbersDigitCount=t,this._recomputeOptions())}setViewLineCount(e){this._viewLineCount!==e&&(this._viewLineCount=e,this._recomputeOptions())}setReservedHeight(e){this._reservedHeight!==e&&(this._reservedHeight=e,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(e){this._glyphMarginDecorationLaneCount!==e&&(this._glyphMarginDecorationLaneCount=e,this._recomputeOptions())}};l4=NKe([RKe(4,Qd)],l4);function SKe(s){let e=0;for(;s;)s=Math.floor(s/10),e++;return e||1}function WKe(){let s="";return!F0&&!oge&&(s+="no-user-select "),F0&&(s+="no-minimap-shadow ",s+="enable-user-select "),Fi&&(s+="mac "),s}class VKe{constructor(){this._values=[]}_read(e){return this._values[e]}get(e){return this._values[e]}_write(e,t){this._values[e]=t}}class QKe{constructor(){this._values=[]}_read(e){if(e>=this._values.length)throw new Error("Cannot read uninitialized value");return this._values[e]}get(e){return this._read(e)}_write(e,t){this._values[e]=t}}class Yb{static validateOptions(e){const t=new VKe;for(const i of oS){const n=i.name==="_never_"?void 0:e[i.name];t._write(i.id,i.validate(n))}return t}static computeOptions(e,t){const i=new QKe;for(const n of oS)i._write(n.id,n.compute(t,i,e._read(n.id)));return i}static _deepEquals(e,t){if(typeof e!="object"||typeof t!="object"||!e||!t)return e===t;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)?Fs(e,t):!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(!Yb._deepEquals(e[i],t[i]))return!1;return!0}static checkEquals(e,t){const i=[];let n=!1;for(const o of oS){const l=!Yb._deepEquals(e._read(o.id),t._read(o.id));i[o.id]=l,l&&(n=!0)}return n?new Mpe(i):null}static applyUpdate(e,t){let i=!1;for(const n of oS)if(t.hasOwnProperty(n.name)){const o=n.applyUpdate(e[n.name],t[n.name]);e[n.name]=o.newValue,i=i||o.didChange}return i}}function aae(s){const e=wg(s);return FKe(e),e}var gU;(function(s){const e={total:0,min:Number.MAX_VALUE,max:0},t={...e},i={...e},n={...e};let o=0;const l={keydown:0,input:0,render:0};function r(){f(),performance.mark("inputlatency/start"),performance.mark("keydown/start"),l.keydown=1,queueMicrotask(a)}s.onKeyDown=r;function a(){l.keydown===1&&(performance.mark("keydown/end"),l.keydown=2)}function d(){performance.mark("input/start"),l.input=1,b()}s.onBeforeInput=d;function c(){l.input===0&&d(),queueMicrotask(h)}s.onInput=c;function h(){l.input===1&&(performance.mark("input/end"),l.input=2)}function u(){f()}s.onKeyUp=u;function m(){f()}s.onSelectionChange=m;function p(){l.keydown===2&&l.input===2&&l.render===0&&(performance.mark("render/start"),l.render=1,queueMicrotask(g),b())}s.onRenderStart=p;function g(){l.render===1&&(performance.mark("render/end"),l.render=2)}function b(){setTimeout(f)}function f(){l.keydown===2&&l.input===2&&l.render===2&&(performance.mark("inputlatency/end"),performance.measure("keydown","keydown/start","keydown/end"),performance.measure("input","input/start","input/end"),performance.measure("render","render/start","render/end"),performance.measure("inputlatency","inputlatency/start","inputlatency/end"),Z("keydown",e),Z("input",t),Z("render",i),Z("inputlatency",n),o++,A())}function Z(R,M){const w=performance.getEntriesByName(R)[0].duration;M.total+=w,M.min=Math.min(M.min,w),M.max=Math.max(M.max,w)}function A(){performance.clearMarks("keydown/start"),performance.clearMarks("keydown/end"),performance.clearMarks("input/start"),performance.clearMarks("input/end"),performance.clearMarks("render/start"),performance.clearMarks("render/end"),performance.clearMarks("inputlatency/start"),performance.clearMarks("inputlatency/end"),performance.clearMeasures("keydown"),performance.clearMeasures("input"),performance.clearMeasures("render"),performance.clearMeasures("inputlatency"),l.keydown=0,l.input=0,l.render=0}function N(){if(o===0)return;const R={keydown:W(e),input:W(t),render:W(i),total:W(n),sampleCount:o};return Q(e),Q(t),Q(i),Q(n),o=0,R}s.getAndClearMeasurements=N;function W(R){return{average:R.total/o,max:R.max,min:R.min}}function Q(R){R.total=0,R.min=Number.MAX_VALUE,R.max=0}})(gU||(gU={}));class qY{constructor(e,t){this.x=e,this.y=t,this._pageCoordinatesBrand=void 0}toClientCoordinates(e){return new mfe(this.x-e.scrollX,this.y-e.scrollY)}}class mfe{constructor(e,t){this.clientX=e,this.clientY=t,this._clientCoordinatesBrand=void 0}toPageCoordinates(e){return new qY(this.clientX+e.scrollX,this.clientY+e.scrollY)}}class yKe{constructor(e,t,i,n){this.x=e,this.y=t,this.width=i,this.height=n,this._editorPagePositionBrand=void 0}}class CKe{constructor(e,t){this.x=e,this.y=t,this._positionRelativeToEditorBrand=void 0}}function Ute(s){const e=_s(s);return new yKe(e.left,e.top,e.width,e.height)}function fte(s,e,t){const i=e.width/s.offsetWidth,n=e.height/s.offsetHeight,o=(t.x-e.x)/i,l=(t.y-e.y)/n;return new CKe(o,l)}class nf extends Jh{constructor(e,t,i){super(Wt(i),e),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=t,this.pos=new qY(this.posx,this.posy),this.editorPos=Ute(i),this.relativePos=fte(i,this.editorPos,this.pos)}}class wKe{constructor(e){this._editorViewDomNode=e}_create(e){return new nf(e,!1,this._editorViewDomNode)}onContextMenu(e,t){return ge(e,"contextmenu",i=>{t(this._create(i))})}onMouseUp(e,t){return ge(e,"mouseup",i=>{t(this._create(i))})}onMouseDown(e,t){return ge(e,De.MOUSE_DOWN,i=>{t(this._create(i))})}onPointerDown(e,t){return ge(e,De.POINTER_DOWN,i=>{t(this._create(i),i.pointerId)})}onMouseLeave(e,t){return ge(e,De.MOUSE_LEAVE,i=>{t(this._create(i))})}onMouseMove(e,t){return ge(e,"mousemove",i=>t(this._create(i)))}}class MKe{constructor(e){this._editorViewDomNode=e}_create(e){return new nf(e,!1,this._editorViewDomNode)}onPointerUp(e,t){return ge(e,"pointerup",i=>{t(this._create(i))})}onPointerDown(e,t){return ge(e,De.POINTER_DOWN,i=>{t(this._create(i),i.pointerId)})}onPointerLeave(e,t){return ge(e,De.POINTER_LEAVE,i=>{t(this._create(i))})}onPointerMove(e,t){return ge(e,"pointermove",i=>t(this._create(i)))}}class TKe extends de{constructor(e){super(),this._editorViewDomNode=e,this._globalPointerMoveMonitor=this._register(new _Q),this._keydownListener=null}startMonitoring(e,t,i,n,o){this._keydownListener=Ms(e.ownerDocument,"keydown",l=>{l.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,l.browserEvent)},!0),this._globalPointerMoveMonitor.startMonitoring(e,t,i,l=>{n(new nf(l,!0,this._editorViewDomNode))},l=>{this._keydownListener.dispose(),o(l)})}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}const BX=class BX{constructor(e){this._editor=e,this._instanceId=++BX._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new Rn(()=>this.garbageCollect(),1e3)}createClassNameRef(e){const t=this.getOrCreateRule(e);return t.increaseRefCount(),{className:t.className,dispose:()=>{t.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(e){const t=this.computeUniqueKey(e);let i=this._rules.get(t);if(!i){const n=this._counter++;i=new BKe(t,`dyn-rule-${this._instanceId}-${n}`,XE(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,e),this._rules.set(t,i)}return i}computeUniqueKey(e){return JSON.stringify(e)}garbageCollect(){for(const e of this._rules.values())e.hasReferences()||(this._rules.delete(e.key),e.dispose())}};BX._idPool=0;let ix=BX;class BKe{constructor(e,t,i,n){this.key=e,this.className=t,this.properties=n,this._referenceCount=0,this._styleElementDisposables=new Ze,this._styleElement=cc(i,void 0,this._styleElementDisposables),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(e,t){let i=`.${e} {`;for(const n in t){const o=t[n];let l;typeof o=="object"?l=$e(o.id):l=o;const r=LKe(n);i+=`
- ${r}: ${l};`}return i+=`
- }`,i}dispose(){this._styleElementDisposables.dispose(),this._styleElement=void 0}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function LKe(s){return s.replace(/(^[A-Z])/,([e])=>e.toLowerCase()).replace(/([A-Z])/g,([e])=>`-${e.toLowerCase()}`)}class WB extends de{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(e){return!1}onCompositionEnd(e){return!1}onConfigurationChanged(e){return!1}onCursorStateChanged(e){return!1}onDecorationsChanged(e){return!1}onFlushed(e){return!1}onFocusChanged(e){return!1}onLanguageConfigurationChanged(e){return!1}onLineMappingChanged(e){return!1}onLinesChanged(e){return!1}onLinesDeleted(e){return!1}onLinesInserted(e){return!1}onRevealRangeRequest(e){return!1}onScrollChanged(e){return!1}onThemeChanged(e){return!1}onTokensChanged(e){return!1}onTokensColorsChanged(e){return!1}onZonesChanged(e){return!1}handleEvents(e){let t=!1;for(let i=0,n=e.length;i<n;i++){const o=e[i];switch(o.type){case 0:this.onCompositionStart(o)&&(t=!0);break;case 1:this.onCompositionEnd(o)&&(t=!0);break;case 2:this.onConfigurationChanged(o)&&(t=!0);break;case 3:this.onCursorStateChanged(o)&&(t=!0);break;case 4:this.onDecorationsChanged(o)&&(t=!0);break;case 5:this.onFlushed(o)&&(t=!0);break;case 6:this.onFocusChanged(o)&&(t=!0);break;case 7:this.onLanguageConfigurationChanged(o)&&(t=!0);break;case 8:this.onLineMappingChanged(o)&&(t=!0);break;case 9:this.onLinesChanged(o)&&(t=!0);break;case 10:this.onLinesDeleted(o)&&(t=!0);break;case 11:this.onLinesInserted(o)&&(t=!0);break;case 12:this.onRevealRangeRequest(o)&&(t=!0);break;case 13:this.onScrollChanged(o)&&(t=!0);break;case 15:this.onTokensChanged(o)&&(t=!0);break;case 14:this.onThemeChanged(o)&&(t=!0);break;case 16:this.onTokensColorsChanged(o)&&(t=!0);break;case 17:this.onZonesChanged(o)&&(t=!0);break;default:console.info("View received unknown event: "),console.info(o)}}t&&(this._shouldRender=!0)}}class Cd extends WB{constructor(e){super(),this._context=e,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}}class $u{static write(e,t){e.setAttribute("data-mprt",String(t))}static read(e){const t=e.getAttribute("data-mprt");return t===null?0:parseInt(t,10)}static collect(e,t){const i=[];let n=0;for(;e&&e!==e.ownerDocument.body&&e!==t;)e.nodeType===e.ELEMENT_NODE&&(i[n++]=this.read(e)),e=e.parentElement;const o=new Uint8Array(n);for(let l=0;l<n;l++)o[l]=i[n-l-1];return o}}class kKe{constructor(e,t){this._restrictedRenderingContextBrand=void 0,this._viewLayout=e,this.viewportData=t,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(e){return e-this.scrollTop}getVerticalOffsetForLineNumber(e,t){return this._viewLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t){return this._viewLayout.getVerticalOffsetAfterLineNumber(e,t)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}class IKe extends kKe{constructor(e,t,i){super(e,t),this._renderingContextBrand=void 0,this._viewLines=i}linesVisibleRangesForRange(e,t){return this._viewLines.linesVisibleRangesForRange(e,t)}visibleRangeForPosition(e){return this._viewLines.visibleRangeForPosition(e)}}class DKe{constructor(e,t,i,n){this.outsideRenderedLine=e,this.lineNumber=t,this.ranges=i,this.continuesOnNextLine=n}}class $Y{static from(e){const t=new Array(e.length);for(let i=0,n=e.length;i<n;i++){const o=e[i];t[i]=new $Y(o.left,o.width)}return t}constructor(e,t){this._horizontalRangeBrand=void 0,this.left=Math.round(e),this.width=Math.round(t)}toString(){return`[${this.left},${this.width}]`}}class KZ{constructor(e,t){this._floatHorizontalRangeBrand=void 0,this.left=e,this.width=t}toString(){return`[${this.left},${this.width}]`}static compare(e,t){return e.left-t.left}}class GKe{constructor(e,t){this.outsideRenderedLine=e,this.originalLeft=t,this.left=Math.round(this.originalLeft)}}class dae{constructor(e,t){this.outsideRenderedLine=e,this.ranges=t}}class UD{static _createRange(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}static _detachRange(e,t){e.selectNodeContents(t)}static _readClientRects(e,t,i,n,o){const l=this._createRange();try{return l.setStart(e,t),l.setEnd(i,n),l.getClientRects()}catch{return null}finally{this._detachRange(l,o)}}static _mergeAdjacentRanges(e){if(e.length===1)return e;e.sort(KZ.compare);const t=[];let i=0,n=e[0];for(let o=1,l=e.length;o<l;o++){const r=e[o];n.left+n.width+.9>=r.left?n.width=Math.max(n.width,r.left+r.width-n.left):(t[i++]=n,n=r)}return t[i++]=n,t}static _createHorizontalRangesFromClientRects(e,t,i){if(!e||e.length===0)return null;const n=[];for(let o=0,l=e.length;o<l;o++){const r=e[o];n[o]=new KZ(Math.max(0,(r.left-t)/i),r.width/i)}return this._mergeAdjacentRanges(n)}static readHorizontalRanges(e,t,i,n,o,l){const a=e.children.length-1;if(0>a)return null;if(t=Math.min(a,Math.max(0,t)),n=Math.min(a,Math.max(0,n)),t===n&&i===o&&i===0&&!e.children[t].firstChild){const u=e.children[t].getClientRects();return l.markDidDomLayout(),this._createHorizontalRangesFromClientRects(u,l.clientRectDeltaLeft,l.clientRectScale)}t!==n&&n>0&&o===0&&(n--,o=1073741824);let d=e.children[t].firstChild,c=e.children[n].firstChild;if((!d||!c)&&(!d&&i===0&&t>0&&(d=e.children[t-1].firstChild,i=1073741824),!c&&o===0&&n>0&&(c=e.children[n-1].firstChild,o=1073741824)),!d||!c)return null;i=Math.min(d.textContent.length,Math.max(0,i)),o=Math.min(c.textContent.length,Math.max(0,o));const h=this._readClientRects(d,i,c,o,l.endNode);return l.markDidDomLayout(),this._createHorizontalRangesFromClientRects(h,l.clientRectDeltaLeft,l.clientRectScale)}}const EKe=function(){return vu?!0:!(sa||jc||F0)}();let CW=!0;class cae{constructor(e,t){this.themeType=t;const i=e.options,n=i.get(50);i.get(38)==="off"?this.renderWhitespace=i.get(100):this.renderWhitespace="none",this.renderControlCharacters=i.get(95),this.spaceWidth=n.spaceWidth,this.middotWidth=n.middotWidth,this.wsmiddotWidth=n.wsmiddotWidth,this.useMonospaceOptimizations=n.isMonospace&&!i.get(33),this.canUseHalfwidthRightwardsArrow=n.canUseHalfwidthRightwardsArrow,this.lineHeight=i.get(67),this.stopRenderingLineAfter=i.get(118),this.fontLigatures=i.get(51)}equals(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures}}const LX=class LX{constructor(e){this._options=e,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(e){if(this._renderedViewLine)this._renderedViewLine.domNode=an(e);else throw new Error("I have no rendered view line to set the dom node to...")}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(e){this._isMaybeInvalid=!0,this._options=e}onSelectionChanged(){return Yu(this._options.themeType)||this._options.renderWhitespace==="selection"?(this._isMaybeInvalid=!0,!0):!1}renderLine(e,t,i,n,o){if(this._isMaybeInvalid===!1)return!1;this._isMaybeInvalid=!1;const l=n.getViewLineRenderingData(e),r=this._options,a=qr.filter(l.inlineDecorations,e,l.minColumn,l.maxColumn);let d=null;if(Yu(r.themeType)||this._options.renderWhitespace==="selection"){const m=n.selections;for(const p of m){if(p.endLineNumber<e||p.startLineNumber>e)continue;const g=p.startLineNumber===e?p.startColumn:l.minColumn,b=p.endLineNumber===e?p.endColumn:l.maxColumn;g<b&&(Yu(r.themeType)&&a.push(new qr(g,b,"inline-selected-text",0)),this._options.renderWhitespace==="selection"&&(d||(d=[]),d.push(new lfe(g-1,b-1))))}}const c=new Zf(r.useMonospaceOptimizations,r.canUseHalfwidthRightwardsArrow,l.content,l.continuesWithWrappedLine,l.isBasicASCII,l.containsRTL,l.minColumn-1,l.tokens,a,l.tabSize,l.startVisibleColumn,r.spaceWidth,r.middotWidth,r.wsmiddotWidth,r.stopRenderingLineAfter,r.renderWhitespace,r.renderControlCharacters,r.fontLigatures!==YU.OFF,d);if(this._renderedViewLine&&this._renderedViewLine.input.equals(c))return!1;o.appendString('<div style="top:'),o.appendString(String(t)),o.appendString("px;height:"),o.appendString(String(i)),o.appendString('px;" class="'),o.appendString(LX.CLASS_NAME),o.appendString('">');const h=SB(c,o);o.appendString("</div>");let u=null;return CW&&EKe&&l.isBasicASCII&&r.useMonospaceOptimizations&&h.containsForeignElements===0&&(u=new ck(this._renderedViewLine?this._renderedViewLine.domNode:null,c,h.characterMapping)),u||(u=gfe(this._renderedViewLine?this._renderedViewLine.domNode:null,c,h.characterMapping,h.containsRTL,h.containsForeignElements)),this._renderedViewLine=u,!0}layoutLine(e,t,i){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(i))}getWidth(e){return this._renderedViewLine?this._renderedViewLine.getWidth(e):0}getWidthIsFast(){return this._renderedViewLine?this._renderedViewLine.getWidthIsFast():!0}needsMonospaceFontCheck(){return this._renderedViewLine?this._renderedViewLine instanceof ck:!1}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof ck?this._renderedViewLine.monospaceAssumptionsAreValid():CW}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof ck&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(e,t,i,n){if(!this._renderedViewLine)return null;t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t)),i=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,i));const o=this._renderedViewLine.input.stopRenderingLineAfter;if(o!==-1&&t>o+1&&i>o+1)return new dae(!0,[new KZ(this.getWidth(n),0)]);o!==-1&&t>o+1&&(t=o+1),o!==-1&&i>o+1&&(i=o+1);const l=this._renderedViewLine.getVisibleRangesForRange(e,t,i,n);return l&&l.length>0?new dae(!1,l):null}getColumnOfNodeOffset(e,t){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t):1}};LX.CLASS_NAME="view-line";let Xg=LX;class ck{constructor(e,t,i){this._cachedWidth=-1,this.domNode=e,this.input=t;const n=Math.floor(t.lineContent.length/300);if(n>0){this._keyColumnPixelOffsetCache=new Float32Array(n);for(let o=0;o<n;o++)this._keyColumnPixelOffsetCache[o]=-1}else this._keyColumnPixelOffsetCache=null;this._characterMapping=i,this._charWidth=t.spaceWidth}getWidth(e){if(!this.domNode||this.input.lineContent.length<300){const t=this._characterMapping.getHorizontalOffset(this._characterMapping.length);return Math.round(this._charWidth*t)}return this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,e==null||e.markDidDomLayout()),this._cachedWidth}getWidthIsFast(){return this.input.lineContent.length<300||this._cachedWidth!==-1}monospaceAssumptionsAreValid(){if(!this.domNode)return CW;if(this.input.lineContent.length<300){const e=this.getWidth(null),t=this.domNode.domNode.firstChild.offsetWidth;Math.abs(e-t)>=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),CW=!1)}return CW}toSlowRenderedLine(){return gfe(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(e,t,i,n){const o=this._getColumnPixelOffset(e,t,n),l=this._getColumnPixelOffset(e,i,n);return[new KZ(o,l-o)]}_getColumnPixelOffset(e,t,i){if(t<=300){const d=this._characterMapping.getHorizontalOffset(t);return this._charWidth*d}const n=Math.floor((t-1)/300)-1,o=(n+1)*300+1;let l=-1;if(this._keyColumnPixelOffsetCache&&(l=this._keyColumnPixelOffsetCache[n],l===-1&&(l=this._actualReadPixelOffset(e,o,i),this._keyColumnPixelOffsetCache[n]=l)),l===-1){const d=this._characterMapping.getHorizontalOffset(t);return this._charWidth*d}const r=this._characterMapping.getHorizontalOffset(o),a=this._characterMapping.getHorizontalOffset(t);return l+this._charWidth*(a-r)}_getReadingTarget(e){return e.domNode.firstChild}_actualReadPixelOffset(e,t,i){if(!this.domNode)return-1;const n=this._characterMapping.getDomPosition(t),o=UD.readHorizontalRanges(this._getReadingTarget(this.domNode),n.partIndex,n.charIndex,n.partIndex,n.charIndex,i);return!o||o.length===0?-1:o[0].left}getColumnOfNodeOffset(e,t){return Fte(this._characterMapping,e,t)}}class pfe{constructor(e,t,i,n,o){if(this.domNode=e,this.input=t,this._characterMapping=i,this._isWhitespaceOnly=/^\s*$/.test(t.lineContent),this._containsForeignElements=o,this._cachedWidth=-1,this._pixelOffsetCache=null,!n||this._characterMapping.length===0){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let l=0,r=this._characterMapping.length;l<=r;l++)this._pixelOffsetCache[l]=-1}}_getReadingTarget(e){return e.domNode.firstChild}getWidth(e){return this.domNode?(this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,e==null||e.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return this._cachedWidth!==-1}getVisibleRangesForRange(e,t,i,n){if(!this.domNode)return null;if(this._pixelOffsetCache!==null){const o=this._readPixelOffset(this.domNode,e,t,n);if(o===-1)return null;const l=this._readPixelOffset(this.domNode,e,i,n);return l===-1?null:[new KZ(o,l-o)]}return this._readVisibleRangesForRange(this.domNode,e,t,i,n)}_readVisibleRangesForRange(e,t,i,n,o){if(i===n){const l=this._readPixelOffset(e,t,i,o);return l===-1?null:[new KZ(l,0)]}else return this._readRawVisibleRangesForRange(e,i,n,o)}_readPixelOffset(e,t,i,n){if(this._characterMapping.length===0){if(this._containsForeignElements===0||this._containsForeignElements===2)return 0;if(this._containsForeignElements===1)return this.getWidth(n);const o=this._getReadingTarget(e);return o.firstChild?(n.markDidDomLayout(),o.firstChild.offsetWidth):0}if(this._pixelOffsetCache!==null){const o=this._pixelOffsetCache[i];if(o!==-1)return o;const l=this._actualReadPixelOffset(e,t,i,n);return this._pixelOffsetCache[i]=l,l}return this._actualReadPixelOffset(e,t,i,n)}_actualReadPixelOffset(e,t,i,n){if(this._characterMapping.length===0){const a=UD.readHorizontalRanges(this._getReadingTarget(e),0,0,0,0,n);return!a||a.length===0?-1:a[0].left}if(i===this._characterMapping.length&&this._isWhitespaceOnly&&this._containsForeignElements===0)return this.getWidth(n);const o=this._characterMapping.getDomPosition(i),l=UD.readHorizontalRanges(this._getReadingTarget(e),o.partIndex,o.charIndex,o.partIndex,o.charIndex,n);if(!l||l.length===0)return-1;const r=l[0].left;if(this.input.isBasicASCII){const a=this._characterMapping.getHorizontalOffset(i),d=Math.round(this.input.spaceWidth*a);if(Math.abs(d-r)<=1)return d}return r}_readRawVisibleRangesForRange(e,t,i,n){if(t===1&&i===this._characterMapping.length)return[new KZ(0,this.getWidth(n))];const o=this._characterMapping.getDomPosition(t),l=this._characterMapping.getDomPosition(i);return UD.readHorizontalRanges(this._getReadingTarget(e),o.partIndex,o.charIndex,l.partIndex,l.charIndex,n)}getColumnOfNodeOffset(e,t){return Fte(this._characterMapping,e,t)}}class vKe extends pfe{_readVisibleRangesForRange(e,t,i,n,o){const l=super._readVisibleRangesForRange(e,t,i,n,o);if(!l||l.length===0||i===n||i===1&&n===this._characterMapping.length)return l;if(!this.input.containsRTL){const r=this._readPixelOffset(e,t,n,o);if(r!==-1){const a=l[l.length-1];a.left<r&&(a.width=r-a.left)}}return l}}const gfe=function(){return JZ?xKe:JKe}();function xKe(s,e,t,i,n){return new vKe(s,e,t,i,n)}function JKe(s,e,t,i,n){return new pfe(s,e,t,i,n)}function Fte(s,e,t){const i=e.textContent.length;let n=-1;for(;e;)e=e.previousSibling,n++;return s.getColumn(new rfe(n,t),i)}class YM{static whitespaceVisibleColumn(e,t,i){const n=e.length;let o=0,l=-1,r=-1;for(let a=0;a<n;a++){if(a===t)return[l,r,o];switch(o%i===0&&(l=a,r=o),e.charCodeAt(a)){case 32:o+=1;break;case 9:o=ko.nextRenderTabStop(o,i);break;default:return[-1,-1,-1]}}return t===n?[l,r,o]:[-1,-1,-1]}static atomicPosition(e,t,i,n){const o=e.length,[l,r,a]=YM.whitespaceVisibleColumn(e,t,i);if(a===-1)return-1;let d;switch(n){case 0:d=!0;break;case 1:d=!1;break;case 2:if(a%i===0)return t;d=a%i<=i/2;break}if(d){if(l===-1)return-1;let u=r;for(let m=l;m<o;++m){if(u===r+i)return l;switch(e.charCodeAt(m)){case 32:u+=1;break;case 9:u=ko.nextRenderTabStop(u,i);break;default:return-1}}return u===r+i?l:-1}const c=ko.nextRenderTabStop(a,i);let h=a;for(let u=t;u<o;u++){if(h===c)return u;switch(e.charCodeAt(u)){case 32:h+=1;break;case 9:h=ko.nextRenderTabStop(h,i);break;default:return-1}}return h===c?o:-1}}class db{constructor(e=null){this.hitTarget=e,this.type=0}}class bfe{get hitTarget(){return this.spanNode}constructor(e,t,i){this.position=e,this.spanNode=t,this.injectedText=i,this.type=1}}var rZ;(function(s){function e(t,i,n){const o=t.getPositionFromDOMInfo(i,n);return o?new bfe(o,i,null):new db(i)}s.createFromDOMInfo=e})(rZ||(rZ={}));class XKe{constructor(e,t){this.lastViewCursorsRenderData=e,this.lastTextareaPosition=t}}class fr{static _deduceRage(e,t=null){return!t&&e?new v(e.lineNumber,e.column,e.lineNumber,e.column):t??null}static createUnknown(e,t,i){return{type:0,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createTextarea(e,t){return{type:1,element:e,mouseColumn:t,position:null,range:null}}static createMargin(e,t,i,n,o,l){return{type:e,element:t,mouseColumn:i,position:n,range:o,detail:l}}static createViewZone(e,t,i,n,o){return{type:e,element:t,mouseColumn:i,position:n,range:this._deduceRage(n),detail:o}}static createContentText(e,t,i,n,o){return{type:6,element:e,mouseColumn:t,position:i,range:this._deduceRage(i,n),detail:o}}static createContentEmpty(e,t,i,n){return{type:7,element:e,mouseColumn:t,position:i,range:this._deduceRage(i),detail:n}}static createContentWidget(e,t,i){return{type:9,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createScrollbar(e,t,i){return{type:11,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createOverlayWidget(e,t,i){return{type:12,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createOutsideEditor(e,t,i,n){return{type:13,element:null,mouseColumn:e,position:t,range:this._deduceRage(t),outsidePosition:i,outsideDistance:n}}static _typeToString(e){return e===1?"TEXTAREA":e===2?"GUTTER_GLYPH_MARGIN":e===3?"GUTTER_LINE_NUMBERS":e===4?"GUTTER_LINE_DECORATIONS":e===5?"GUTTER_VIEW_ZONE":e===6?"CONTENT_TEXT":e===7?"CONTENT_EMPTY":e===8?"CONTENT_VIEW_ZONE":e===9?"CONTENT_WIDGET":e===10?"OVERVIEW_RULER":e===11?"SCROLLBAR":e===12?"OVERLAY_WIDGET":"UNKNOWN"}static toString(e){return this._typeToString(e.type)+": "+e.position+" - "+e.range+" - "+JSON.stringify(e.detail)}}class Tr{static isTextArea(e){return e.length===2&&e[0]===3&&e[1]===7}static isChildOfViewLines(e){return e.length>=4&&e[0]===3&&e[3]===8}static isStrictChildOfViewLines(e){return e.length>4&&e[0]===3&&e[3]===8}static isChildOfScrollableElement(e){return e.length>=2&&e[0]===3&&e[1]===6}static isChildOfMinimap(e){return e.length>=2&&e[0]===3&&e[1]===9}static isChildOfContentWidgets(e){return e.length>=4&&e[0]===3&&e[3]===1}static isChildOfOverflowGuard(e){return e.length>=1&&e[0]===3}static isChildOfOverflowingContentWidgets(e){return e.length>=1&&e[0]===2}static isChildOfOverlayWidgets(e){return e.length>=2&&e[0]===3&&e[1]===4}static isChildOfOverflowingOverlayWidgets(e){return e.length>=1&&e[0]===5}}class ZV{constructor(e,t,i){this.viewModel=e.viewModel;const n=e.configuration.options;this.layoutInfo=n.get(146),this.viewDomNode=t.viewDomNode,this.lineHeight=n.get(67),this.stickyTabStops=n.get(117),this.typicalHalfwidthCharacterWidth=n.get(50).typicalHalfwidthCharacterWidth,this.lastRenderData=i,this._context=e,this._viewHelper=t}getZoneAtCoord(e){return ZV.getZoneAtCoord(this._context,e)}static getZoneAtCoord(e,t){const i=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(i){const n=i.verticalOffset+i.height/2,o=e.viewModel.getLineCount();let l=null,r,a=null;return i.afterLineNumber!==o&&(a=new oe(i.afterLineNumber+1,1)),i.afterLineNumber>0&&(l=new oe(i.afterLineNumber,e.viewModel.getLineMaxColumn(i.afterLineNumber))),a===null?r=l:l===null?r=a:t<n?r=l:r=a,{viewZoneId:i.id,afterLineNumber:i.afterLineNumber,positionBefore:l,positionAfter:a,position:r}}return null}getFullLineRangeAtCoord(e){if(this._context.viewLayout.isAfterLines(e)){const n=this._context.viewModel.getLineCount(),o=this._context.viewModel.getLineMaxColumn(n);return{range:new v(n,o,n,o),isAfterLines:!0}}const t=this._context.viewLayout.getLineNumberAtVerticalOffset(e),i=this._context.viewModel.getLineMaxColumn(t);return{range:new v(t,1,t,i),isAfterLines:!1}}getLineNumberAtVerticalOffset(e){return this._context.viewLayout.getLineNumberAtVerticalOffset(e)}isAfterLines(e){return this._context.viewLayout.isAfterLines(e)}isInTopPadding(e){return this._context.viewLayout.isInTopPadding(e)}isInBottomPadding(e){return this._context.viewLayout.isInBottomPadding(e)}getVerticalOffsetForLineNumber(e){return this._context.viewLayout.getVerticalOffsetForLineNumber(e)}findAttribute(e,t){return ZV._findAttribute(e,t,this._viewHelper.viewDomNode)}static _findAttribute(e,t,i){for(;e&&e!==e.ownerDocument.body;){if(e.hasAttribute&&e.hasAttribute(t))return e.getAttribute(t);if(e===i)return null;e=e.parentNode}return null}getLineWidth(e){return this._viewHelper.getLineWidth(e)}visibleRangeForPosition(e,t){return this._viewHelper.visibleRangeForPosition(e,t)}getPositionFromDOMInfo(e,t){return this._viewHelper.getPositionFromDOMInfo(e,t)}getCurrentScrollTop(){return this._context.viewLayout.getCurrentScrollTop()}getCurrentScrollLeft(){return this._context.viewLayout.getCurrentScrollLeft()}}class YKe{constructor(e,t,i,n){this.editorPos=t,this.pos=i,this.relativePos=n,this.mouseVerticalOffset=Math.max(0,e.getCurrentScrollTop()+this.relativePos.y),this.mouseContentHorizontalOffset=e.getCurrentScrollLeft()+this.relativePos.x-e.layoutInfo.contentLeft,this.isInMarginArea=this.relativePos.x<e.layoutInfo.contentLeft&&this.relativePos.x>=e.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,br._getMouseColumn(this.mouseContentHorizontalOffset,e.typicalHalfwidthCharacterWidth))}}class zKe extends YKe{get target(){return this._useHitTestTarget?this.hitTestResult.value.hitTarget:this._eventTarget}get targetPath(){return this._targetPathCacheElement!==this.target&&(this._targetPathCacheElement=this.target,this._targetPathCacheValue=$u.collect(this.target,this._ctx.viewDomNode)),this._targetPathCacheValue}constructor(e,t,i,n,o){super(e,t,i,n),this.hitTestResult=new Hh(()=>br.doHitTest(this._ctx,this)),this._targetPathCacheElement=null,this._targetPathCacheValue=new Uint8Array(0),this._ctx=e,this._eventTarget=o;const l=!!this._eventTarget;this._useHitTestTarget=!l}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}
- target: ${this.target?this.target.outerHTML:null}`}get wouldBenefitFromHitTestTargetSwitch(){return!this._useHitTestTarget&&this.hitTestResult.value.hitTarget!==null&&this.target!==this.hitTestResult.value.hitTarget}switchToHitTestTarget(){this._useHitTestTarget=!0}_getMouseColumn(e=null){return e&&e.column<this._ctx.viewModel.getLineMaxColumn(e.lineNumber)?ko.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(e.lineNumber),e.column,this._ctx.viewModel.model.getOptions().tabSize)+1:this.mouseColumn}fulfillUnknown(e=null){return fr.createUnknown(this.target,this._getMouseColumn(e),e)}fulfillTextarea(){return fr.createTextarea(this.target,this._getMouseColumn())}fulfillMargin(e,t,i,n){return fr.createMargin(e,this.target,this._getMouseColumn(t),t,i,n)}fulfillViewZone(e,t,i){return fr.createViewZone(e,this.target,this._getMouseColumn(t),t,i)}fulfillContentText(e,t,i){return fr.createContentText(this.target,this._getMouseColumn(e),e,t,i)}fulfillContentEmpty(e,t){return fr.createContentEmpty(this.target,this._getMouseColumn(e),e,t)}fulfillContentWidget(e){return fr.createContentWidget(this.target,this._getMouseColumn(),e)}fulfillScrollbar(e){return fr.createScrollbar(this.target,this._getMouseColumn(e),e)}fulfillOverlayWidget(e){return fr.createOverlayWidget(this.target,this._getMouseColumn(),e)}}const hae={isAfterLines:!0};function O3(s){return{isAfterLines:!1,horizontalDistanceToText:s}}class br{constructor(e,t){this._context=e,this._viewHelper=t}mouseTargetIsWidget(e){const t=e.target,i=$u.collect(t,this._viewHelper.viewDomNode);return!!(Tr.isChildOfContentWidgets(i)||Tr.isChildOfOverflowingContentWidgets(i)||Tr.isChildOfOverlayWidgets(i)||Tr.isChildOfOverflowingOverlayWidgets(i))}createMouseTarget(e,t,i,n,o){const l=new ZV(this._context,this._viewHelper,e),r=new zKe(l,t,i,n,o);try{const a=br._createMouseTarget(l,r);if(a.type===6&&l.stickyTabStops&&a.position!==null){const d=br._snapToSoftTabBoundary(a.position,l.viewModel),c=v.fromPositions(d,d).plusRange(a.range);return r.fulfillContentText(d,c,a.detail)}return a}catch{return r.fulfillUnknown()}}static _createMouseTarget(e,t){if(t.target===null)return t.fulfillUnknown();const i=t;let n=null;return!Tr.isChildOfOverflowGuard(t.targetPath)&&!Tr.isChildOfOverflowingContentWidgets(t.targetPath)&&!Tr.isChildOfOverflowingOverlayWidgets(t.targetPath)&&(n=n||t.fulfillUnknown()),n=n||br._hitTestContentWidget(e,i),n=n||br._hitTestOverlayWidget(e,i),n=n||br._hitTestMinimap(e,i),n=n||br._hitTestScrollbarSlider(e,i),n=n||br._hitTestViewZone(e,i),n=n||br._hitTestMargin(e,i),n=n||br._hitTestViewCursor(e,i),n=n||br._hitTestTextArea(e,i),n=n||br._hitTestViewLines(e,i),n=n||br._hitTestScrollbar(e,i),n||t.fulfillUnknown()}static _hitTestContentWidget(e,t){if(Tr.isChildOfContentWidgets(t.targetPath)||Tr.isChildOfOverflowingContentWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillContentWidget(i):t.fulfillUnknown()}return null}static _hitTestOverlayWidget(e,t){if(Tr.isChildOfOverlayWidgets(t.targetPath)||Tr.isChildOfOverflowingOverlayWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillOverlayWidget(i):t.fulfillUnknown()}return null}static _hitTestViewCursor(e,t){if(t.target){const i=e.lastRenderData.lastViewCursorsRenderData;for(const n of i)if(t.target===n.domNode)return t.fulfillContentText(n.position,null,{mightBeForeignElement:!1,injectedText:null})}if(t.isInContentArea){const i=e.lastRenderData.lastViewCursorsRenderData,n=t.mouseContentHorizontalOffset,o=t.mouseVerticalOffset;for(const l of i){if(n<l.contentLeft||n>l.contentLeft+l.width)continue;const r=e.getVerticalOffsetForLineNumber(l.position.lineNumber);if(r<=o&&o<=r+l.height)return t.fulfillContentText(l.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(e,t){const i=e.getZoneAtCoord(t.mouseVerticalOffset);if(i){const n=t.isInContentArea?8:5;return t.fulfillViewZone(n,i.position,i)}return null}static _hitTestTextArea(e,t){return Tr.isTextArea(t.targetPath)?e.lastRenderData.lastTextareaPosition?t.fulfillContentText(e.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):t.fulfillTextarea():null}static _hitTestMargin(e,t){if(t.isInMarginArea){const i=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),n=i.range.getStartPosition();let o=Math.abs(t.relativePos.x);const l={isAfterLines:i.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:o};if(o-=e.layoutInfo.glyphMarginLeft,o<=e.layoutInfo.glyphMarginWidth){const r=e.viewModel.coordinatesConverter.convertViewPositionToModelPosition(i.range.getStartPosition()),a=e.viewModel.glyphLanes.getLanesAtLine(r.lineNumber);return l.glyphMarginLane=a[Math.floor(o/e.lineHeight)],t.fulfillMargin(2,n,i.range,l)}return o-=e.layoutInfo.glyphMarginWidth,o<=e.layoutInfo.lineNumbersWidth?t.fulfillMargin(3,n,i.range,l):(o-=e.layoutInfo.lineNumbersWidth,t.fulfillMargin(4,n,i.range,l))}return null}static _hitTestViewLines(e,t){if(!Tr.isChildOfViewLines(t.targetPath))return null;if(e.isInTopPadding(t.mouseVerticalOffset))return t.fulfillContentEmpty(new oe(1,1),hae);if(e.isAfterLines(t.mouseVerticalOffset)||e.isInBottomPadding(t.mouseVerticalOffset)){const n=e.viewModel.getLineCount(),o=e.viewModel.getLineMaxColumn(n);return t.fulfillContentEmpty(new oe(n,o),hae)}if(Tr.isStrictChildOfViewLines(t.targetPath)){const n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);if(e.viewModel.getLineLength(n)===0){const l=e.getLineWidth(n),r=O3(t.mouseContentHorizontalOffset-l);return t.fulfillContentEmpty(new oe(n,1),r)}const o=e.getLineWidth(n);if(t.mouseContentHorizontalOffset>=o){const l=O3(t.mouseContentHorizontalOffset-o),r=new oe(n,e.viewModel.getLineMaxColumn(n));return t.fulfillContentEmpty(r,l)}}const i=t.hitTestResult.value;return i.type===1?br.createMouseTargetFromHitTestPosition(e,t,i.spanNode,i.position,i.injectedText):t.wouldBenefitFromHitTestTargetSwitch?(t.switchToHitTestTarget(),this._createMouseTarget(e,t)):t.fulfillUnknown()}static _hitTestMinimap(e,t){if(Tr.isChildOfMinimap(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new oe(i,n))}return null}static _hitTestScrollbarSlider(e,t){if(Tr.isChildOfScrollableElement(t.targetPath)&&t.target&&t.target.nodeType===1){const i=t.target.className;if(i&&/\b(slider|scrollbar)\b/.test(i)){const n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),o=e.viewModel.getLineMaxColumn(n);return t.fulfillScrollbar(new oe(n,o))}}return null}static _hitTestScrollbar(e,t){if(Tr.isChildOfScrollableElement(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new oe(i,n))}return null}getMouseColumn(e){const t=this._context.configuration.options,i=t.get(146),n=this._context.viewLayout.getCurrentScrollLeft()+e.x-i.contentLeft;return br._getMouseColumn(n,t.get(50).typicalHalfwidthCharacterWidth)}static _getMouseColumn(e,t){return e<0?1:Math.round(e/t)+1}static createMouseTargetFromHitTestPosition(e,t,i,n,o){const l=n.lineNumber,r=n.column,a=e.getLineWidth(l);if(t.mouseContentHorizontalOffset>a){const f=O3(t.mouseContentHorizontalOffset-a);return t.fulfillContentEmpty(n,f)}const d=e.visibleRangeForPosition(l,r);if(!d)return t.fulfillUnknown(n);const c=d.left;if(Math.abs(t.mouseContentHorizontalOffset-c)<1)return t.fulfillContentText(n,null,{mightBeForeignElement:!!o,injectedText:o});const h=[];if(h.push({offset:d.left,column:r}),r>1){const f=e.visibleRangeForPosition(l,r-1);f&&h.push({offset:f.left,column:r-1})}const u=e.viewModel.getLineMaxColumn(l);if(r<u){const f=e.visibleRangeForPosition(l,r+1);f&&h.push({offset:f.left,column:r+1})}h.sort((f,Z)=>f.offset-Z.offset);const m=t.pos.toClientCoordinates(Wt(e.viewDomNode)),p=i.getBoundingClientRect(),g=p.left<=m.clientX&&m.clientX<=p.right;let b=null;for(let f=1;f<h.length;f++){const Z=h[f-1],A=h[f];if(Z.offset<=t.mouseContentHorizontalOffset&&t.mouseContentHorizontalOffset<=A.offset){b=new v(l,Z.column,l,A.column);const N=Math.abs(Z.offset-t.mouseContentHorizontalOffset),W=Math.abs(A.offset-t.mouseContentHorizontalOffset);n=N<W?new oe(l,Z.column):new oe(l,A.column);break}}return t.fulfillContentText(n,b,{mightBeForeignElement:!g||!!o,injectedText:o})}static _doHitTestWithCaretRangeFromPoint(e,t){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.getVerticalOffsetForLineNumber(i),o=n+e.lineHeight;if(!(i===e.viewModel.getLineCount()&&t.mouseVerticalOffset>o)){const r=Math.floor((n+o)/2);let a=t.pos.y+(r-t.mouseVerticalOffset);a<=t.editorPos.y&&(a=t.editorPos.y+1),a>=t.editorPos.y+t.editorPos.height&&(a=t.editorPos.y+t.editorPos.height-1);const d=new qY(t.pos.x,a),c=this._actualDoHitTestWithCaretRangeFromPoint(e,d.toClientCoordinates(Wt(e.viewDomNode)));if(c.type===1)return c}return this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates(Wt(e.viewDomNode)))}static _actualDoHitTestWithCaretRangeFromPoint(e,t){const i=NA(e.viewDomNode);let n;if(i?typeof i.caretRangeFromPoint>"u"?n=_Ke(i,t.clientX,t.clientY):n=i.caretRangeFromPoint(t.clientX,t.clientY):n=e.viewDomNode.ownerDocument.caretRangeFromPoint(t.clientX,t.clientY),!n||!n.startContainer)return new db;const o=n.startContainer;if(o.nodeType===o.TEXT_NODE){const l=o.parentNode,r=l?l.parentNode:null,a=r?r.parentNode:null;return(a&&a.nodeType===a.ELEMENT_NODE?a.className:null)===Xg.CLASS_NAME?rZ.createFromDOMInfo(e,l,n.startOffset):new db(o.parentNode)}else if(o.nodeType===o.ELEMENT_NODE){const l=o.parentNode,r=l?l.parentNode:null;return(r&&r.nodeType===r.ELEMENT_NODE?r.className:null)===Xg.CLASS_NAME?rZ.createFromDOMInfo(e,o,o.textContent.length):new db(o)}return new db}static _doHitTestWithCaretPositionFromPoint(e,t){const i=e.viewDomNode.ownerDocument.caretPositionFromPoint(t.clientX,t.clientY);if(i.offsetNode.nodeType===i.offsetNode.TEXT_NODE){const n=i.offsetNode.parentNode,o=n?n.parentNode:null,l=o?o.parentNode:null;return(l&&l.nodeType===l.ELEMENT_NODE?l.className:null)===Xg.CLASS_NAME?rZ.createFromDOMInfo(e,i.offsetNode.parentNode,i.offset):new db(i.offsetNode.parentNode)}if(i.offsetNode.nodeType===i.offsetNode.ELEMENT_NODE){const n=i.offsetNode.parentNode,o=n&&n.nodeType===n.ELEMENT_NODE?n.className:null,l=n?n.parentNode:null,r=l&&l.nodeType===l.ELEMENT_NODE?l.className:null;if(o===Xg.CLASS_NAME){const a=i.offsetNode.childNodes[Math.min(i.offset,i.offsetNode.childNodes.length-1)];if(a)return rZ.createFromDOMInfo(e,a,0)}else if(r===Xg.CLASS_NAME)return rZ.createFromDOMInfo(e,i.offsetNode,0)}return new db(i.offsetNode)}static _snapToSoftTabBoundary(e,t){const i=t.getLineContent(e.lineNumber),{tabSize:n}=t.model.getOptions(),o=YM.atomicPosition(i,e.column-1,n,2);return o!==-1?new oe(e.lineNumber,o+1):e}static doHitTest(e,t){let i=new db;if(typeof e.viewDomNode.ownerDocument.caretRangeFromPoint=="function"?i=this._doHitTestWithCaretRangeFromPoint(e,t):e.viewDomNode.ownerDocument.caretPositionFromPoint&&(i=this._doHitTestWithCaretPositionFromPoint(e,t.pos.toClientCoordinates(Wt(e.viewDomNode)))),i.type===1){const n=e.viewModel.getInjectedTextAt(i.position),o=e.viewModel.normalizePosition(i.position,2);(n||!o.equals(i.position))&&(i=new bfe(o,i.spanNode,n))}return i}}function _Ke(s,e,t){const i=document.createRange();let n=s.elementFromPoint(e,t);if(n!==null){for(;n&&n.firstChild&&n.firstChild.nodeType!==n.firstChild.TEXT_NODE&&n.lastChild&&n.lastChild.firstChild;)n=n.lastChild;const o=n.getBoundingClientRect(),l=Wt(n),r=l.getComputedStyle(n,null).getPropertyValue("font-style"),a=l.getComputedStyle(n,null).getPropertyValue("font-variant"),d=l.getComputedStyle(n,null).getPropertyValue("font-weight"),c=l.getComputedStyle(n,null).getPropertyValue("font-size"),h=l.getComputedStyle(n,null).getPropertyValue("line-height"),u=l.getComputedStyle(n,null).getPropertyValue("font-family"),m=`${r} ${a} ${d} ${c}/${h} ${u}`,p=n.innerText;let g=o.left,b=0,f;if(e>o.left+o.width)b=p.length;else{const Z=r4.getInstance();for(let A=0;A<p.length+1;A++){if(f=Z.getCharWidth(p.charAt(A),m)/2,g+=f,e<g){b=A;break}g+=f}}i.setStart(n.firstChild,b),i.setEnd(n.firstChild,b)}return i}const FZ=class FZ{static getInstance(){return FZ._INSTANCE||(FZ._INSTANCE=new FZ),FZ._INSTANCE}constructor(){this._cache={},this._canvas=document.createElement("canvas")}getCharWidth(e,t){const i=e+t;if(this._cache[i])return this._cache[i];const n=this._canvas.getContext("2d");n.font=t;const l=n.measureText(e).width;return this._cache[i]=l,l}};FZ._INSTANCE=null;let r4=FZ;class Zte extends WB{constructor(e,t,i){super(),this._mouseLeaveMonitor=null,this._context=e,this.viewController=t,this.viewHelper=i,this.mouseTargetFactory=new br(this._context,i),this._mouseDownOperation=this._register(new OKe(this._context,this.viewController,this.viewHelper,this.mouseTargetFactory,(l,r)=>this._createMouseTarget(l,r),l=>this._getMouseColumn(l))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(146).height;const n=new wKe(this.viewHelper.viewDomNode);this._register(n.onContextMenu(this.viewHelper.viewDomNode,l=>this._onContextMenu(l,!0))),this._register(n.onMouseMove(this.viewHelper.viewDomNode,l=>{this._onMouseMove(l),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=ge(this.viewHelper.viewDomNode.ownerDocument,"mousemove",r=>{this.viewHelper.viewDomNode.contains(r.target)||this._onMouseLeave(new nf(r,!1,this.viewHelper.viewDomNode))}))})),this._register(n.onMouseUp(this.viewHelper.viewDomNode,l=>this._onMouseUp(l))),this._register(n.onMouseLeave(this.viewHelper.viewDomNode,l=>this._onMouseLeave(l)));let o=0;this._register(n.onPointerDown(this.viewHelper.viewDomNode,(l,r)=>{o=r})),this._register(ge(this.viewHelper.viewDomNode,De.POINTER_UP,l=>{this._mouseDownOperation.onPointerUp()})),this._register(n.onMouseDown(this.viewHelper.viewDomNode,l=>this._onMouseDown(l,o))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const e=dv.INSTANCE;let t=0,i=Gc.getZoomLevel(),n=!1,o=0;const l=a=>{if(this.viewController.emitMouseWheel(a),!this._context.configuration.options.get(76))return;const d=new AA(a);if(e.acceptStandardWheelEvent(d),e.isPhysicalMouseWheel()){if(r(a)){const c=Gc.getZoomLevel(),h=d.deltaY>0?1:-1;Gc.setZoomLevel(c+h),d.preventDefault(),d.stopPropagation()}}else Date.now()-t>50&&(i=Gc.getZoomLevel(),n=r(a),o=0),t=Date.now(),o+=d.deltaY,n&&(Gc.setZoomLevel(i+o/5),d.preventDefault(),d.stopPropagation())};this._register(ge(this.viewHelper.viewDomNode,De.MOUSE_WHEEL,l,{capture:!0,passive:!1}));function r(a){return Fi?(a.metaKey||a.ctrlKey)&&!a.shiftKey&&!a.altKey:a.ctrlKey&&!a.metaKey&&!a.shiftKey&&!a.altKey}}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(e){if(e.hasChanged(146)){const t=this._context.configuration.options.get(146).height;this._height!==t&&(this._height=t,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(e){return this._mouseDownOperation.onCursorStateChanged(e),!1}onFocusChanged(e){return!1}getTargetAtClientPoint(e,t){const n=new mfe(e,t).toPageCoordinates(Wt(this.viewHelper.viewDomNode)),o=Ute(this.viewHelper.viewDomNode);if(n.y<o.y||n.y>o.y+o.height||n.x<o.x||n.x>o.x+o.width)return null;const l=fte(this.viewHelper.viewDomNode,o,n);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),o,n,l,null)}_createMouseTarget(e,t){let i=e.target;if(!this.viewHelper.viewDomNode.contains(i)){const n=NA(this.viewHelper.viewDomNode);n&&(i=n.elementsFromPoint(e.posx,e.posy).find(o=>this.viewHelper.viewDomNode.contains(o)))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),e.editorPos,e.pos,e.relativePos,t?i:null)}_getMouseColumn(e){return this.mouseTargetFactory.getMouseColumn(e.relativePos)}_onContextMenu(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})}_onMouseMove(e){this.mouseTargetFactory.mouseTargetIsWidget(e)||e.preventDefault(),!(this._mouseDownOperation.isActive()||e.timestamp<this.lastMouseLeaveTime)&&this.viewController.emitMouseMove({event:e,target:this._createMouseTarget(e,!0)})}_onMouseLeave(e){this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),this.lastMouseLeaveTime=new Date().getTime(),this.viewController.emitMouseLeave({event:e,target:null})}_onMouseUp(e){this.viewController.emitMouseUp({event:e,target:this._createMouseTarget(e,!0)})}_onMouseDown(e,t){const i=this._createMouseTarget(e,!0),n=i.type===6||i.type===7,o=i.type===2||i.type===3||i.type===4,l=i.type===3,r=this._context.configuration.options.get(110),a=i.type===8||i.type===5,d=i.type===9;let c=e.leftButton||e.middleButton;Fi&&e.leftButton&&e.ctrlKey&&(c=!1);const h=()=>{e.preventDefault(),this.viewHelper.focusTextArea()};if(c&&(n||l&&r))h(),this._mouseDownOperation.start(i.type,e,t);else if(o)e.preventDefault();else if(a){const u=i.detail;c&&this.viewHelper.shouldSuppressMouseDownOnViewZone(u.viewZoneId)&&(h(),this._mouseDownOperation.start(i.type,e,t),e.preventDefault())}else d&&this.viewHelper.shouldSuppressMouseDownOnWidget(i.detail)&&(h(),e.preventDefault());this.viewController.emitMouseDown({event:e,target:i})}}class OKe extends de{constructor(e,t,i,n,o,l){super(),this._context=e,this._viewController=t,this._viewHelper=i,this._mouseTargetFactory=n,this._createMouseTarget=o,this._getMouseColumn=l,this._mouseMoveMonitor=this._register(new TKe(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new jKe(this._context,this._viewHelper,this._mouseTargetFactory,(r,a,d)=>this._dispatchMouse(r,a,d))),this._mouseState=new a4,this._currentSelection=new dt(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(e){this._lastMouseEvent=e,this._mouseState.setModifiers(e);const t=this._findMousePosition(e,!1);t&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:e,target:t}):t.type===13&&(t.outsidePosition==="above"||t.outsidePosition==="below")?this._topBottomDragScrolling.start(t,e):(this._topBottomDragScrolling.stop(),this._dispatchMouse(t,!0,1)))}start(e,t,i){this._lastMouseEvent=t,this._mouseState.setStartedOnLineNumbers(e===3),this._mouseState.setStartButtons(t),this._mouseState.setModifiers(t);const n=this._findMousePosition(t,!0);if(!n||!n.position)return;this._mouseState.trySetCount(t.detail,n.position),t.detail=this._mouseState.count;const o=this._context.configuration.options;if(!o.get(92)&&o.get(35)&&!o.get(22)&&!this._mouseState.altKey&&t.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&n.type===6&&n.position&&this._currentSelection.containsPosition(n.position)){this._mouseState.isDragAndDrop=!0,this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,l=>this._onMouseDownThenMove(l),l=>{const r=this._findMousePosition(this._lastMouseEvent,!1);Mg(l)?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:r?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()});return}this._mouseState.isDragAndDrop=!1,this._dispatchMouse(n,t.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,l=>this._onMouseDownThenMove(l),()=>this._stop()))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(e){this._currentSelection=e.selections[0]}_getPositionOutsideEditor(e){const t=e.editorPos,i=this._context.viewModel,n=this._context.viewLayout,o=this._getMouseColumn(e);if(e.posy<t.y){const r=t.y-e.posy,a=Math.max(n.getCurrentScrollTop()-r,0),d=ZV.getZoneAtCoord(this._context,a);if(d){const h=this._helpPositionJumpOverViewZone(d);if(h)return fr.createOutsideEditor(o,h,"above",r)}const c=n.getLineNumberAtVerticalOffset(a);return fr.createOutsideEditor(o,new oe(c,1),"above",r)}if(e.posy>t.y+t.height){const r=e.posy-t.y-t.height,a=n.getCurrentScrollTop()+e.relativePos.y,d=ZV.getZoneAtCoord(this._context,a);if(d){const h=this._helpPositionJumpOverViewZone(d);if(h)return fr.createOutsideEditor(o,h,"below",r)}const c=n.getLineNumberAtVerticalOffset(a);return fr.createOutsideEditor(o,new oe(c,i.getLineMaxColumn(c)),"below",r)}const l=n.getLineNumberAtVerticalOffset(n.getCurrentScrollTop()+e.relativePos.y);if(e.posx<t.x){const r=t.x-e.posx;return fr.createOutsideEditor(o,new oe(l,1),"left",r)}if(e.posx>t.x+t.width){const r=e.posx-t.x-t.width;return fr.createOutsideEditor(o,new oe(l,i.getLineMaxColumn(l)),"right",r)}return null}_findMousePosition(e,t){const i=this._getPositionOutsideEditor(e);if(i)return i;const n=this._createMouseTarget(e,t);if(!n.position)return null;if(n.type===8||n.type===5){const l=this._helpPositionJumpOverViewZone(n.detail);if(l)return fr.createViewZone(n.type,n.element,n.mouseColumn,l,n.detail)}return n}_helpPositionJumpOverViewZone(e){const t=new oe(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),i=e.positionBefore,n=e.positionAfter;return i&&n?i.isBefore(t)?i:n:null}_dispatchMouse(e,t,i){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:i,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton,onInjectedText:e.type===6&&e.detail.injectedText!==null})}}class jKe extends de{constructor(e,t,i,n){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=n,this._operation=null}dispose(){super.dispose(),this.stop()}start(e,t){this._operation?this._operation.setPosition(e,t):this._operation=new HKe(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,e,t)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class HKe extends de{constructor(e,t,i,n,o,l){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=n,this._position=o,this._mouseEvent=l,this._lastTime=Date.now(),this._animationFrameDisposable=Sd(Wt(l.browserEvent),()=>this._execute())}dispose(){this._animationFrameDisposable.dispose(),super.dispose()}setPosition(e,t){this._position=e,this._mouseEvent=t}_tick(){const e=Date.now(),t=e-this._lastTime;return this._lastTime=e,t}_getScrollSpeed(){const e=this._context.configuration.options.get(67),t=this._context.configuration.options.get(146).height/e,i=this._position.outsideDistance/e;return i<=1.5?Math.max(30,t*(1+i)):i<=3?Math.max(60,t*(2+i)):Math.max(200,t*(7+i))}_execute(){const e=this._context.configuration.options.get(67),t=this._getScrollSpeed(),i=this._tick(),n=t*(i/1e3)*e,o=this._position.outsidePosition==="above"?-n:n;this._context.viewModel.viewLayout.deltaScrollNow(0,o),this._viewHelper.renderNow();const l=this._context.viewLayout.getLinesViewportData(),r=this._position.outsidePosition==="above"?l.startLineNumber:l.endLineNumber;let a;{const d=Ute(this._viewHelper.viewDomNode),c=this._context.configuration.options.get(146).horizontalScrollbarHeight,h=new qY(this._mouseEvent.pos.x,d.y+d.height-c-.1),u=fte(this._viewHelper.viewDomNode,d,h);a=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),d,h,u,null)}(!a.position||a.position.lineNumber!==r)&&(this._position.outsidePosition==="above"?a=fr.createOutsideEditor(this._position.mouseColumn,new oe(r,1),"above",this._position.outsideDistance):a=fr.createOutsideEditor(this._position.mouseColumn,new oe(r,this._context.viewModel.getLineMaxColumn(r)),"below",this._position.outsideDistance)),this._dispatchMouse(a,!0,2),this._animationFrameDisposable=Sd(Wt(a.element),()=>this._execute())}}const kX=class kX{get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get count(){return this._lastMouseDownCount}setModifiers(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey}setStartButtons(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton}setStartedOnLineNumbers(e){this._startedOnLineNumbers=e}trySetCount(e,t){const i=new Date().getTime();i-this._lastSetMouseDownCountTime>kX.CLEAR_MOUSE_DOWN_COUNT_TIME&&(e=1),this._lastSetMouseDownCountTime=i,e>this._lastMouseDownCount+1&&(e=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(t)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=t,this._lastMouseDownCount=Math.min(e,this._lastMouseDownPositionEqualCount)}};kX.CLEAR_MOUSE_DOWN_COUNT_TIME=400;let a4=kX;const nW=class nW{constructor(e,t,i,n,o){this.value=e,this.selectionStart=t,this.selectionEnd=i,this.selection=n,this.newlineCountBeforeSelection=o}toString(){return`[ <${this.value}>, selectionStart: ${this.selectionStart}, selectionEnd: ${this.selectionEnd}]`}static readFromTextArea(e,t){const i=e.getValue(),n=e.getSelectionStart(),o=e.getSelectionEnd();let l;if(t){const r=i.substring(0,n),a=t.value.substring(0,t.selectionStart);r===a&&(l=t.newlineCountBeforeSelection)}return new nW(i,n,o,null,l)}collapseSelection(){return this.selectionStart===this.value.length?this:new nW(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(e,t,i){t.setValue(e,this.value),i&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)}deduceEditorPosition(e){var n,o,l,r;if(e<=this.selectionStart){const a=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition(((n=this.selection)==null?void 0:n.getStartPosition())??null,a,-1)}if(e>=this.selectionEnd){const a=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition(((o=this.selection)==null?void 0:o.getEndPosition())??null,a,1)}const t=this.value.substring(this.selectionStart,e);if(t.indexOf(String.fromCharCode(8230))===-1)return this._finishDeduceEditorPosition(((l=this.selection)==null?void 0:l.getStartPosition())??null,t,1);const i=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition(((r=this.selection)==null?void 0:r.getEndPosition())??null,i,-1)}_finishDeduceEditorPosition(e,t,i){let n=0,o=-1;for(;(o=t.indexOf(`
- `,o+1))!==-1;)n++;return[e,i*t.length,n]}static deduceInput(e,t,i){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};const n=Math.min(OU(e.value,t.value),e.selectionStart,t.selectionStart),o=Math.min(DE(e.value,t.value),e.value.length-e.selectionEnd,t.value.length-t.selectionEnd);e.value.substring(n,e.value.length-o);const l=t.value.substring(n,t.value.length-o),r=e.selectionStart-n,a=e.selectionEnd-n,d=t.selectionStart-n,c=t.selectionEnd-n;if(d===c){const u=e.selectionStart-n;return{text:l,replacePrevCharCnt:u,replaceNextCharCnt:0,positionDelta:0}}const h=a-r;return{text:l,replacePrevCharCnt:h,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(e,t){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(e.value===t.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:t.selectionEnd-e.selectionEnd};const i=Math.min(OU(e.value,t.value),e.selectionEnd),n=Math.min(DE(e.value,t.value),e.value.length-e.selectionEnd),o=e.value.substring(i,e.value.length-n),l=t.value.substring(i,t.value.length-n);e.selectionStart-i;const r=e.selectionEnd-i;t.selectionStart-i;const a=t.selectionEnd-i;return{text:l,replacePrevCharCnt:r,replaceNextCharCnt:o.length-r,positionDelta:a-l.length}}};nW.EMPTY=new nW("",0,0,null,void 0);let Fr=nW;class US{static _getPageOfLine(e,t){return Math.floor((e-1)/t)}static _getRangeForPage(e,t){const i=e*t,n=i+1,o=i+t;return new v(n,1,o+1,1)}static fromEditorSelection(e,t,i,n){const l=US._getPageOfLine(t.startLineNumber,i),r=US._getRangeForPage(l,i),a=US._getPageOfLine(t.endLineNumber,i),d=US._getRangeForPage(a,i);let c=r.intersectRanges(new v(1,1,t.startLineNumber,t.startColumn));if(n&&e.getValueLengthInRange(c,1)>500){const f=e.modifyPosition(c.getEndPosition(),-500);c=v.fromPositions(f,c.getEndPosition())}const h=e.getValueInRange(c,1),u=e.getLineCount(),m=e.getLineMaxColumn(u);let p=d.intersectRanges(new v(t.endLineNumber,t.endColumn,u,m));if(n&&e.getValueLengthInRange(p,1)>500){const f=e.modifyPosition(p.getStartPosition(),500);p=v.fromPositions(p.getStartPosition(),f)}const g=e.getValueInRange(p,1);let b;if(l===a||l+1===a)b=e.getValueInRange(t,1);else{const f=r.intersectRanges(t),Z=d.intersectRanges(t);b=e.getValueInRange(f,1)+String.fromCharCode(8230)+e.getValueInRange(Z,1)}return n&&b.length>2*500&&(b=b.substring(0,500)+String.fromCharCode(8230)+b.substring(b.length-500,b.length)),new Fr(h+b+g,h.length,h.length+b.length,t,c.endLineNumber-c.startLineNumber)}}var PKe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},uae=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},nx;(function(s){s.Tap="-monaco-textarea-synthetic-tap"})(nx||(nx={}));const d4={forceCopyWithSyntaxHighlighting:!1},IX=class IX{constructor(){this._lastState=null}set(e,t){this._lastState={lastCopiedValue:e,data:t}}get(e){return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState.data:(this._lastState=null,null)}};IX.INSTANCE=new IX;let zM=IX;class KKe{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(e){e=e||"";const t={text:e,replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=e.length,t}}let c4=class extends de{get textAreaState(){return this._textAreaState}constructor(e,t,i,n,o,l){super(),this._host=e,this._textArea=t,this._OS=i,this._browser=n,this._accessibilityService=o,this._logService=l,this._onFocus=this._register(new re),this.onFocus=this._onFocus.event,this._onBlur=this._register(new re),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new re),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new re),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new re),this.onCut=this._onCut.event,this._onPaste=this._register(new re),this.onPaste=this._onPaste.event,this._onType=this._register(new re),this.onType=this._onType.event,this._onCompositionStart=this._register(new re),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new re),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new re),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new re),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncFocusGainWriteScreenReaderContent=this._register(new _o),this._asyncTriggerCut=this._register(new Rn(()=>this._onCut.fire(),0)),this._textAreaState=Fr.EMPTY,this._selectionChangeListener=null,this._accessibilityService.isScreenReaderOptimized()&&this.writeNativeTextAreaContent("ctor"),this._register(ve.runAndSubscribe(this._accessibilityService.onDidChangeScreenReaderOptimized,()=>{this._accessibilityService.isScreenReaderOptimized()&&!this._asyncFocusGainWriteScreenReaderContent.value?this._asyncFocusGainWriteScreenReaderContent.value=this._register(new Rn(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)):this._asyncFocusGainWriteScreenReaderContent.clear()})),this._hasFocus=!1,this._currentComposition=null;let r=null;this._register(this._textArea.onKeyDown(a=>{const d=new Jn(a);(d.keyCode===114||this._currentComposition&&d.keyCode===1)&&d.stopPropagation(),d.equals(9)&&d.preventDefault(),r=d,this._onKeyDown.fire(d)})),this._register(this._textArea.onKeyUp(a=>{const d=new Jn(a);this._onKeyUp.fire(d)})),this._register(this._textArea.onCompositionStart(a=>{const d=new KKe;if(this._currentComposition){this._currentComposition=d;return}if(this._currentComposition=d,this._OS===2&&r&&r.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===a.data&&(r.code==="ArrowRight"||r.code==="ArrowLeft")){d.handleCompositionUpdate("x"),this._onCompositionStart.fire({data:a.data});return}if(this._browser.isAndroid){this._onCompositionStart.fire({data:a.data});return}this._onCompositionStart.fire({data:a.data})})),this._register(this._textArea.onCompositionUpdate(a=>{const d=this._currentComposition;if(!d)return;if(this._browser.isAndroid){const h=Fr.readFromTextArea(this._textArea,this._textAreaState),u=Fr.deduceAndroidCompositionInput(this._textAreaState,h);this._textAreaState=h,this._onType.fire(u),this._onCompositionUpdate.fire(a);return}const c=d.handleCompositionUpdate(a.data);this._textAreaState=Fr.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(c),this._onCompositionUpdate.fire(a)})),this._register(this._textArea.onCompositionEnd(a=>{const d=this._currentComposition;if(!d)return;if(this._currentComposition=null,this._browser.isAndroid){const h=Fr.readFromTextArea(this._textArea,this._textAreaState),u=Fr.deduceAndroidCompositionInput(this._textAreaState,h);this._textAreaState=h,this._onType.fire(u),this._onCompositionEnd.fire();return}const c=d.handleCompositionUpdate(a.data);this._textAreaState=Fr.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(c),this._onCompositionEnd.fire()})),this._register(this._textArea.onInput(a=>{if(this._textArea.setIgnoreSelectionChangeTime("received input event"),this._currentComposition)return;const d=Fr.readFromTextArea(this._textArea,this._textAreaState),c=Fr.deduceInput(this._textAreaState,d,this._OS===2);c.replacePrevCharCnt===0&&c.text.length===1&&(xo(c.text.charCodeAt(0))||c.text.charCodeAt(0)===127)||(this._textAreaState=d,(c.text!==""||c.replacePrevCharCnt!==0||c.replaceNextCharCnt!==0||c.positionDelta!==0)&&this._onType.fire(c))})),this._register(this._textArea.onCut(a=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(a),this._asyncTriggerCut.schedule()})),this._register(this._textArea.onCopy(a=>{this._ensureClipboardGetsEditorSelection(a)})),this._register(this._textArea.onPaste(a=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),a.preventDefault(),!a.clipboardData)return;let[d,c]=h4.getTextData(a.clipboardData);d&&(c=c||zM.INSTANCE.get(d),this._onPaste.fire({text:d,metadata:c}))})),this._register(this._textArea.onFocus(()=>{const a=this._hasFocus;this._setHasFocus(!0),this._accessibilityService.isScreenReaderOptimized()&&this._browser.isSafari&&!a&&this._hasFocus&&(this._asyncFocusGainWriteScreenReaderContent.value||(this._asyncFocusGainWriteScreenReaderContent.value=new Rn(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)),this._asyncFocusGainWriteScreenReaderContent.value.schedule())})),this._register(this._textArea.onBlur(()=>{this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("blurWithoutCompositionEnd"),this._onCompositionEnd.fire()),this._setHasFocus(!1)})),this._register(this._textArea.onSyntheticTap(()=>{this._browser.isAndroid&&this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("tapWithoutCompositionEnd"),this._onCompositionEnd.fire())}))}_installSelectionChangeListener(){let e=0;return ge(this._textArea.ownerDocument,"selectionchange",t=>{if(gU.onSelectionChange(),!this._hasFocus||this._currentComposition||!this._browser.isChrome)return;const i=Date.now(),n=i-e;if(e=i,n<5)return;const o=i-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),o<100||!this._textAreaState.selection)return;const l=this._textArea.getValue();if(this._textAreaState.value!==l)return;const r=this._textArea.getSelectionStart(),a=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===r&&this._textAreaState.selectionEnd===a)return;const d=this._textAreaState.deduceEditorPosition(r),c=this._host.deduceModelPosition(d[0],d[1],d[2]),h=this._textAreaState.deduceEditorPosition(a),u=this._host.deduceModelPosition(h[0],h[1],h[2]),m=new dt(c.lineNumber,c.column,u.lineNumber,u.column);this._onSelectionChangeRequest.fire(m)})}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){this._setHasFocus(this._textArea.hasFocus())}_setHasFocus(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeNativeTextAreaContent("focusgain"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t}writeNativeTextAreaContent(e){!this._accessibilityService.isScreenReaderOptimized()&&e==="render"||this._currentComposition||(this._logService.trace(`writeTextAreaState(reason: ${e})`),this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent()))}_ensureClipboardGetsEditorSelection(e){const t=this._host.getDataToCopy(),i={version:1,isFromEmptySelection:t.isFromEmptySelection,multicursorText:t.multicursorText,mode:t.mode};zM.INSTANCE.set(this._browser.isFirefox?t.text.replace(/\r\n/g,`
- `):t.text,i),e.preventDefault(),e.clipboardData&&h4.setTextData(e.clipboardData,t.text,t.html,i)}};c4=PKe([uae(4,Qd),uae(5,El)],c4);const h4={getTextData(s){const e=s.getData(zs.text);let t=null;const i=s.getData("vscode-editor-data");if(typeof i=="string")try{t=JSON.parse(i),t.version!==1&&(t=null)}catch{}return e.length===0&&t===null&&s.files.length>0?[Array.prototype.slice.call(s.files,0).map(o=>o.name).join(`
- `),null]:[e,t]},setTextData(s,e,t,i){s.setData(zs.text,e),typeof t=="string"&&s.setData("text/html",t),s.setData("vscode-editor-data",JSON.stringify(i))}};class qKe extends de{get ownerDocument(){return this._actual.ownerDocument}constructor(e){super(),this._actual=e,this.onKeyDown=this._register(new Qi(this._actual,"keydown")).event,this.onKeyUp=this._register(new Qi(this._actual,"keyup")).event,this.onCompositionStart=this._register(new Qi(this._actual,"compositionstart")).event,this.onCompositionUpdate=this._register(new Qi(this._actual,"compositionupdate")).event,this.onCompositionEnd=this._register(new Qi(this._actual,"compositionend")).event,this.onBeforeInput=this._register(new Qi(this._actual,"beforeinput")).event,this.onInput=this._register(new Qi(this._actual,"input")).event,this.onCut=this._register(new Qi(this._actual,"cut")).event,this.onCopy=this._register(new Qi(this._actual,"copy")).event,this.onPaste=this._register(new Qi(this._actual,"paste")).event,this.onFocus=this._register(new Qi(this._actual,"focus")).event,this.onBlur=this._register(new Qi(this._actual,"blur")).event,this._onSyntheticTap=this._register(new re),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown(()=>gU.onKeyDown())),this._register(this.onBeforeInput(()=>gU.onBeforeInput())),this._register(this.onInput(()=>gU.onInput())),this._register(this.onKeyUp(()=>gU.onKeyUp())),this._register(ge(this._actual,nx.Tap,()=>this._onSyntheticTap.fire()))}hasFocus(){const e=NA(this._actual);return e?e.activeElement===this._actual:this._actual.isConnected?kl()===this._actual:!1}setIgnoreSelectionChangeTime(e){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(e,t){const i=this._actual;i.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),i.value=t)}getSelectionStart(){return this._actual.selectionDirection==="backward"?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return this._actual.selectionDirection==="backward"?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(e,t,i){const n=this._actual;let o=null;const l=NA(n);l?o=l.activeElement:o=kl();const r=Wt(o),a=o===n,d=n.selectionStart,c=n.selectionEnd;if(a&&d===t&&c===i){jc&&r.parent!==r&&n.focus();return}if(a){this.setIgnoreSelectionChangeTime("setSelectionRange"),n.setSelectionRange(t,i),jc&&r.parent!==r&&n.focus();return}try{const h=kEe(n);this.setIgnoreSelectionChangeTime("setSelectionRange"),n.focus(),n.setSelectionRange(t,i),IEe(n,h)}catch{}}}class $Ke extends Zte{constructor(e,t,i){super(e,t,i),this._register(nr.addTarget(this.viewHelper.linesContentDomNode)),this._register(ge(this.viewHelper.linesContentDomNode,_n.Tap,o=>this.onTap(o))),this._register(ge(this.viewHelper.linesContentDomNode,_n.Change,o=>this.onChange(o))),this._register(ge(this.viewHelper.linesContentDomNode,_n.Contextmenu,o=>this._onContextMenu(new nf(o,!1,this.viewHelper.viewDomNode),!1))),this._lastPointerType="mouse",this._register(ge(this.viewHelper.linesContentDomNode,"pointerdown",o=>{const l=o.pointerType;if(l==="mouse"){this._lastPointerType="mouse";return}else l==="touch"?this._lastPointerType="touch":this._lastPointerType="pen"}));const n=new MKe(this.viewHelper.viewDomNode);this._register(n.onPointerMove(this.viewHelper.viewDomNode,o=>this._onMouseMove(o))),this._register(n.onPointerUp(this.viewHelper.viewDomNode,o=>this._onMouseUp(o))),this._register(n.onPointerLeave(this.viewHelper.viewDomNode,o=>this._onMouseLeave(o))),this._register(n.onPointerDown(this.viewHelper.viewDomNode,(o,l)=>this._onMouseDown(o,l)))}onTap(e){!e.initialTarget||!this.viewHelper.linesContentDomNode.contains(e.initialTarget)||(e.preventDefault(),this.viewHelper.focusTextArea(),this._dispatchGesture(e,!1))}onChange(e){this._lastPointerType==="touch"&&this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY),this._lastPointerType==="pen"&&this._dispatchGesture(e,!0)}_dispatchGesture(e,t){const i=this._createMouseTarget(new nf(e,!1,this.viewHelper.viewDomNode),!1);i.position&&this.viewController.dispatchMouse({position:i.position,mouseColumn:i.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:e.tapCount,inSelectionMode:t,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:i.type===6&&i.detail.injectedText!==null})}_onMouseDown(e,t){e.browserEvent.pointerType!=="touch"&&super._onMouseDown(e,t)}}class e4e extends Zte{constructor(e,t,i){super(e,t,i),this._register(nr.addTarget(this.viewHelper.linesContentDomNode)),this._register(ge(this.viewHelper.linesContentDomNode,_n.Tap,n=>this.onTap(n))),this._register(ge(this.viewHelper.linesContentDomNode,_n.Change,n=>this.onChange(n))),this._register(ge(this.viewHelper.linesContentDomNode,_n.Contextmenu,n=>this._onContextMenu(new nf(n,!1,this.viewHelper.viewDomNode),!1)))}onTap(e){e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new nf(e,!1,this.viewHelper.viewDomNode),!1);if(t.position){const i=document.createEvent("CustomEvent");i.initEvent(nx.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(i),this.viewController.moveTo(t.position,1)}}onChange(e){this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)}}class t4e extends de{constructor(e,t,i){super(),(ju||QIe&&Vpe)&&T$.pointerEvents?this.handler=this._register(new $Ke(e,t,i)):Qn.TouchEvent?this.handler=this._register(new e4e(e,t,i)):this.handler=this._register(new Zte(e,t,i))}getTargetAtClientPoint(e,t){return this.handler.getTargetAtClientPoint(e,t)}}class sN extends WB{}const DX=class DX extends sN{constructor(e){super(),this._context=e,this._readConfig(),this._lastCursorModelPosition=new oe(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const e=this._context.configuration.options;this._lineHeight=e.get(67);const t=e.get(68);this._renderLineNumbers=t.renderType,this._renderCustomLineNumbers=t.renderFn,this._renderFinalNewline=e.get(96);const i=e.get(146);this._lineNumbersLeft=i.lineNumbersLeft,this._lineNumbersWidth=i.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return this._readConfig(),!0}onCursorStateChanged(e){const t=e.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(t);let i=!1;return this._activeLineNumber!==t.lineNumber&&(this._activeLineNumber=t.lineNumber,i=!0),(this._renderLineNumbers===2||this._renderLineNumbers===3)&&(i=!0),i}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onDecorationsChanged(e){return e.affectsLineNumber}_getLineRenderLineNumber(e){const t=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new oe(e,1));if(t.column!==1)return"";const i=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(i);if(this._renderLineNumbers===2){const n=Math.abs(this._lastCursorModelPosition.lineNumber-i);return n===0?'<span class="relative-current-line-number">'+i+"</span>":String(n)}if(this._renderLineNumbers===3){if(this._lastCursorModelPosition.lineNumber===i||i%10===0)return String(i);const n=this._context.viewModel.getLineCount();return i===n?String(i):""}return String(i)}prepareRender(e){if(this._renderLineNumbers===0){this._renderResult=null;return}const t=sa?this._lineHeight%2===0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,o=this._context.viewModel.getDecorationsInViewport(e.visibleRange).filter(d=>!!d.options.lineNumberClassName);o.sort((d,c)=>v.compareRangesUsingEnds(d.range,c.range));let l=0;const r=this._context.viewModel.getLineCount(),a=[];for(let d=i;d<=n;d++){const c=d-i;let h=this._getLineRenderLineNumber(d),u="";for(;l<o.length&&o[l].range.endLineNumber<d;)l++;for(let m=l;m<o.length;m++){const{range:p,options:g}=o[m];p.startLineNumber<=d&&(u+=" "+g.lineNumberClassName)}if(!h&&!u){a[c]="";continue}d===r&&this._context.viewModel.getLineLength(d)===0&&(this._renderFinalNewline==="off"&&(h=""),this._renderFinalNewline==="dimmed"&&(u+=" dimmed-line-number")),d===this._activeLineNumber&&(u+=" active-line-number"),a[c]=`<div class="${DX.CLASS_NAME}${t}${u}" style="left:${this._lineNumbersLeft}px;width:${this._lineNumbersWidth}px;">${h}</div>`}this._renderResult=a}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}};DX.CLASS_NAME="line-numbers";let sx=DX;ih((s,e)=>{const t=s.getColor(z3e),i=s.getColor(o_e);i?e.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${i}; }`):t&&e.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${t.transparent(.4)}; }`)});const sW=class sW extends Cd{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(146);this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._domNode=an(document.createElement("div")),this._domNode.setClassName(sW.OUTER_CLASS_NAME),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._glyphMarginBackgroundDomNode=an(document.createElement("div")),this._glyphMarginBackgroundDomNode.setClassName(sW.CLASS_NAME),this._domNode.appendChild(this._glyphMarginBackgroundDomNode)}dispose(){super.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollTopChanged}prepareRender(e){}render(e){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain("strict");const t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);const i=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(i),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(i)}};sW.CLASS_NAME="glyph-margin",sW.OUTER_CLASS_NAME="margin";let ox=sW;const wW="monaco-mouse-cursor-text";var i4e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},mae=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class n4e{constructor(e,t,i,n,o){this._context=e,this.modelLineNumber=t,this.distanceToModelLineStart=i,this.widthOfHiddenLineTextBefore=n,this.distanceToModelLineEnd=o,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(e){const t=new oe(this.modelLineNumber,this.distanceToModelLineStart+1),i=new oe(this.modelLineNumber,this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber)-this.distanceToModelLineEnd);this.startPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t),this.endPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=e.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=e.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(e){return this._previousPresentation||(e?this._previousPresentation=e:this._previousPresentation={foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const j3=jc;let u4=class extends Cd{constructor(e,t,i,n,o){super(e),this._keybindingService=n,this._instantiationService=o,this._primaryCursorPosition=new oe(1,1),this._primaryCursorVisibleRange=null,this._viewController=t,this._visibleRangeProvider=i,this._scrollLeft=0,this._scrollTop=0;const l=this._context.configuration.options,r=l.get(146);this._setAccessibilityOptions(l),this._contentLeft=r.contentLeft,this._contentWidth=r.contentWidth,this._contentHeight=r.height,this._fontInfo=l.get(50),this._lineHeight=l.get(67),this._emptySelectionClipboard=l.get(37),this._copyWithSyntaxHighlighting=l.get(25),this._visibleTextArea=null,this._selections=[new dt(1,1,1,1)],this._modelSelections=[new dt(1,1,1,1)],this._lastRenderPosition=null,this.textArea=an(document.createElement("textarea")),$u.write(this.textArea,7),this.textArea.setClassName(`inputarea ${wW}`),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:a}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize=`${a*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("autocorrect","off"),this.textArea.setAttribute("autocapitalize","off"),this.textArea.setAttribute("autocomplete","off"),this.textArea.setAttribute("spellcheck","false"),this.textArea.setAttribute("aria-label",this._getAriaLabel(l)),this.textArea.setAttribute("aria-required",l.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(l.get(125))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",U("editor","editor")),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-autocomplete",l.get(92)?"none":"both"),this._ensureReadOnlyAttribute(),this.textAreaCover=an(document.createElement("div")),this.textAreaCover.setPosition("absolute");const d={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:u=>this._context.viewModel.getLineMaxColumn(u),getValueInRange:(u,m)=>this._context.viewModel.getValueInRange(u,m),getValueLengthInRange:(u,m)=>this._context.viewModel.getValueLengthInRange(u,m),modifyPosition:(u,m)=>this._context.viewModel.modifyPosition(u,m)},c={getDataToCopy:()=>{const u=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,Gl),m=this._context.viewModel.model.getEOL(),p=this._emptySelectionClipboard&&this._modelSelections.length===1&&this._modelSelections[0].isEmpty(),g=Array.isArray(u)?u:null,b=Array.isArray(u)?u.join(m):u;let f,Z=null;if(d4.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&b.length<65536){const A=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);A&&(f=A.html,Z=A.mode)}return{isFromEmptySelection:p,multicursorText:g,text:b,html:f,mode:Z}},getScreenReaderContent:()=>{if(this._accessibilitySupport===1){const u=this._selections[0];if(Fi&&u.isEmpty()){const p=u.getStartPosition();let g=this._getWordBeforePosition(p);if(g.length===0&&(g=this._getCharacterBeforePosition(p)),g.length>0)return new Fr(g,g.length,g.length,v.fromPositions(p),0)}const m=500;if(Fi&&!u.isEmpty()&&d.getValueLengthInRange(u,0)<m){const p=d.getValueInRange(u,0);return new Fr(p,0,p.length,u,0)}if(F0&&!u.isEmpty()){const p="vscode-placeholder";return new Fr(p,0,p.length,null,void 0)}return Fr.EMPTY}if(Xse){const u=this._selections[0];if(u.isEmpty()){const m=u.getStartPosition(),[p,g]=this._getAndroidWordAtPosition(m);if(p.length>0)return new Fr(p,g,g,v.fromPositions(m),0)}return Fr.EMPTY}return US.fromEditorSelection(d,this._selections[0],this._accessibilityPageSize,this._accessibilitySupport===0)},deduceModelPosition:(u,m,p)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(u,m,p)},h=this._register(new qKe(this.textArea.domNode));this._textAreaInput=this._register(this._instantiationService.createInstance(c4,c,h,pd,{isAndroid:Xse,isChrome:nB,isFirefox:jc,isSafari:F0})),this._register(this._textAreaInput.onKeyDown(u=>{this._viewController.emitKeyDown(u)})),this._register(this._textAreaInput.onKeyUp(u=>{this._viewController.emitKeyUp(u)})),this._register(this._textAreaInput.onPaste(u=>{let m=!1,p=null,g=null;u.metadata&&(m=this._emptySelectionClipboard&&!!u.metadata.isFromEmptySelection,p=typeof u.metadata.multicursorText<"u"?u.metadata.multicursorText:null,g=u.metadata.mode),this._viewController.paste(u.text,m,p,g)})),this._register(this._textAreaInput.onCut(()=>{this._viewController.cut()})),this._register(this._textAreaInput.onType(u=>{u.replacePrevCharCnt||u.replaceNextCharCnt||u.positionDelta?this._viewController.compositionType(u.text,u.replacePrevCharCnt,u.replaceNextCharCnt,u.positionDelta):this._viewController.type(u.text)})),this._register(this._textAreaInput.onSelectionChangeRequest(u=>{this._viewController.setSelection(u)})),this._register(this._textAreaInput.onCompositionStart(u=>{const m=this.textArea.domNode,p=this._modelSelections[0],{distanceToModelLineStart:g,widthOfHiddenTextBefore:b}=(()=>{const Z=m.value.substring(0,Math.min(m.selectionStart,m.selectionEnd)),A=Z.lastIndexOf(`
- `),N=Z.substring(A+1),W=N.lastIndexOf(" "),Q=N.length-W-1,R=p.getStartPosition(),M=Math.min(R.column-1,Q),w=R.column-1-M,Y=N.substring(0,N.length-M),{tabSize:G}=this._context.viewModel.model.getOptions(),P=s4e(this.textArea.domNode.ownerDocument,Y,this._fontInfo,G);return{distanceToModelLineStart:w,widthOfHiddenTextBefore:P}})(),{distanceToModelLineEnd:f}=(()=>{const Z=m.value.substring(Math.max(m.selectionStart,m.selectionEnd)),A=Z.indexOf(`
- `),N=A===-1?Z:Z.substring(0,A),W=N.indexOf(" "),Q=W===-1?N.length:N.length-W-1,R=p.getEndPosition(),M=Math.min(this._context.viewModel.model.getLineMaxColumn(R.lineNumber)-R.column,Q);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(R.lineNumber)-R.column-M}})();this._context.viewModel.revealRange("keyboard",!0,v.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new n4e(this._context,p.startLineNumber,g,b,f),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName(`inputarea ${wW} ime-input`),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()})),this._register(this._textAreaInput.onCompositionUpdate(u=>{this._visibleTextArea&&(this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render())})),this._register(this._textAreaInput.onCompositionEnd(()=>{this._visibleTextArea=null,this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._render(),this.textArea.setClassName(`inputarea ${wW}`),this._viewController.compositionEnd(),this._context.viewModel.onCompositionEnd()})),this._register(this._textAreaInput.onFocus(()=>{this._context.viewModel.setHasFocus(!0)})),this._register(this._textAreaInput.onBlur(()=>{this._context.viewModel.setHasFocus(!1)})),this._register(mC.onDidChange(()=>{this._ensureReadOnlyAttribute()}))}writeScreenReaderContent(e){this._textAreaInput.writeNativeTextAreaContent(e)}dispose(){super.dispose()}_getAndroidWordAtPosition(e){const t='`~!@#$%^&*()-=+[{]}\\|;:",.<>/?',i=this._context.viewModel.getLineContent(e.lineNumber),n=Kc(t,[]);let o=!0,l=e.column,r=!0,a=e.column,d=0;for(;d<50&&(o||r);){if(o&&l<=1&&(o=!1),o){const c=i.charCodeAt(l-2);n.get(c)!==0?o=!1:l--}if(r&&a>i.length&&(r=!1),r){const c=i.charCodeAt(a-1);n.get(c)!==0?r=!1:a++}d++}return[i.substring(l-1,a-1),e.column-l]}_getWordBeforePosition(e){const t=this._context.viewModel.getLineContent(e.lineNumber),i=Kc(this._context.configuration.options.get(132),[]);let n=e.column,o=0;for(;n>1;){const l=t.charCodeAt(n-2);if(i.get(l)!==0||o>50)return t.substring(n-1,e.column-1);o++,n--}return t.substring(0,e.column-1)}_getCharacterBeforePosition(e){if(e.column>1){const i=this._context.viewModel.getLineContent(e.lineNumber).charAt(e.column-2);if(!xo(i.charCodeAt(0)))return i}return""}_getAriaLabel(e){var i,n,o;if(e.get(2)===1){const l=(i=this._keybindingService.lookupKeybinding("editor.action.toggleScreenReaderAccessibilityMode"))==null?void 0:i.getAriaLabel(),r=(n=this._keybindingService.lookupKeybinding("workbench.action.showCommands"))==null?void 0:n.getAriaLabel(),a=(o=this._keybindingService.lookupKeybinding("workbench.action.openGlobalKeybindings"))==null?void 0:o.getAriaLabel(),d=U("accessibilityModeOff","The editor is not accessible at this time.");return l?U("accessibilityOffAriaLabel","{0} To enable screen reader optimized mode, use {1}",d,l):r?U("accessibilityOffAriaLabelNoKb","{0} To enable screen reader optimized mode, open the quick pick with {1} and run the command Toggle Screen Reader Accessibility Mode, which is currently not triggerable via keyboard.",d,r):a?U("accessibilityOffAriaLabelNoKbs","{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it.",d,a):d}return e.get(4)}_setAccessibilityOptions(e){this._accessibilitySupport=e.get(2);const t=e.get(3);this._accessibilitySupport===2&&t===om.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=t;const n=e.get(146).wrappingColumn;if(n!==-1&&this._accessibilitySupport!==1){const o=e.get(50);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(n*o.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=j3?0:1}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);this._setAccessibilityOptions(t),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._contentHeight=i.height,this._fontInfo=t.get(50),this._lineHeight=t.get(67),this._emptySelectionClipboard=t.get(37),this._copyWithSyntaxHighlighting=t.get(25),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:n}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize=`${n*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("aria-label",this._getAriaLabel(t)),this.textArea.setAttribute("aria-required",t.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(t.get(125))),(e.hasChanged(34)||e.hasChanged(92))&&this._ensureReadOnlyAttribute(),e.hasChanged(2)&&this._textAreaInput.writeNativeTextAreaContent("strategy changed"),!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),this._modelSelections=e.modelSelections.slice(0),this._textAreaInput.writeNativeTextAreaContent("selection changed"),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0}onZonesChanged(e){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(e){e.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",e.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),e.role&&this.textArea.setAttribute("role",e.role)}_ensureReadOnlyAttribute(){const e=this._context.configuration.options;!mC.enabled||e.get(34)&&e.get(92)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")}prepareRender(e){var t;this._primaryCursorPosition=new oe(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=e.visibleRangeForPosition(this._primaryCursorPosition),(t=this._visibleTextArea)==null||t.prepareRender(e)}render(e){this._textAreaInput.writeNativeTextAreaContent("render"),this._render()}_render(){if(this._visibleTextArea){const i=this._visibleTextArea.visibleTextareaStart,n=this._visibleTextArea.visibleTextareaEnd,o=this._visibleTextArea.startPosition,l=this._visibleTextArea.endPosition;if(o&&l&&i&&n&&n.left>=this._scrollLeft&&i.left<=this._scrollLeft+this._contentWidth){const r=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,a=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let d=this._visibleTextArea.widthOfHiddenLineTextBefore,c=this._contentLeft+i.left-this._scrollLeft,h=n.left-i.left+1;if(c<this._contentLeft){const f=this._contentLeft-c;c+=f,d+=f,h-=f}h>this._contentWidth&&(h=this._contentWidth);const u=this._context.viewModel.getViewLineData(o.lineNumber),m=u.tokens.findTokenIndexAtOffset(o.column-1),p=u.tokens.findTokenIndexAtOffset(l.column-1),g=m===p,b=this._visibleTextArea.definePresentation(g?u.tokens.getPresentation(m):null);this.textArea.domNode.scrollTop=a*this._lineHeight,this.textArea.domNode.scrollLeft=d,this._doRender({lastRenderPosition:null,top:r,left:c,width:h,height:this._lineHeight,useCover:!1,color:(Ds.getColorMap()||[])[b.foreground],italic:b.italic,bold:b.bold,underline:b.underline,strikethrough:b.strikethrough})}return}if(!this._primaryCursorVisibleRange){this._renderAtTopLeft();return}const e=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(e<this._contentLeft||e>this._contentLeft+this._contentWidth){this._renderAtTopLeft();return}const t=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(t<0||t>this._contentHeight){this._renderAtTopLeft();return}if(Fi||this._accessibilitySupport===2){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:t,left:this._textAreaWrapping?this._contentLeft:e,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const i=this._textAreaInput.textAreaState.newlineCountBeforeSelection??this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=i*this._lineHeight;return}this._doRender({lastRenderPosition:this._primaryCursorPosition,top:t,left:this._textAreaWrapping?this._contentLeft:e,width:this._textAreaWidth,height:j3?0:1,useCover:!1})}_newlinecount(e){let t=0,i=-1;do{if(i=e.indexOf(`
- `,i+1),i===-1)break;t++}while(!0);return t}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:j3?0:1,useCover:!0})}_doRender(e){this._lastRenderPosition=e.lastRenderPosition;const t=this.textArea,i=this.textAreaCover;Al(t,this._fontInfo),t.setTop(e.top),t.setLeft(e.left),t.setWidth(e.width),t.setHeight(e.height),t.setColor(e.color?Re.Format.CSS.formatHex(e.color):""),t.setFontStyle(e.italic?"italic":""),e.bold&&t.setFontWeight("bold"),t.setTextDecoration(`${e.underline?" underline":""}${e.strikethrough?" line-through":""}`),i.setTop(e.useCover?e.top:0),i.setLeft(e.useCover?e.left:0),i.setWidth(e.useCover?e.width:0),i.setHeight(e.useCover?e.height:0);const n=this._context.configuration.options;n.get(57)?i.setClassName("monaco-editor-background textAreaCover "+ox.OUTER_CLASS_NAME):n.get(68).renderType!==0?i.setClassName("monaco-editor-background textAreaCover "+sx.CLASS_NAME):i.setClassName("monaco-editor-background textAreaCover")}};u4=i4e([mae(3,dn),mae(4,bt)],u4);function s4e(s,e,t,i){if(e.length===0)return 0;const n=s.createElement("div");n.style.position="absolute",n.style.top="-50000px",n.style.width="50000px";const o=s.createElement("span");Al(o,t),o.style.whiteSpace="pre",o.style.tabSize=`${i*t.spaceWidth}px`,o.append(e),n.appendChild(o),s.body.appendChild(n);const l=o.offsetWidth;return n.remove(),l}const o4e=()=>!0,l4e=()=>!1,r4e=s=>s===" "||s===" ";class LN{static shouldRecreate(e){return e.hasChanged(146)||e.hasChanged(132)||e.hasChanged(37)||e.hasChanged(77)||e.hasChanged(79)||e.hasChanged(80)||e.hasChanged(6)||e.hasChanged(7)||e.hasChanged(11)||e.hasChanged(9)||e.hasChanged(10)||e.hasChanged(14)||e.hasChanged(129)||e.hasChanged(50)||e.hasChanged(92)||e.hasChanged(131)}constructor(e,t,i,n){this.languageConfigurationService=n,this._cursorMoveConfigurationBrand=void 0,this._languageId=e;const o=i.options,l=o.get(146),r=o.get(50);this.readOnly=o.get(92),this.tabSize=t.tabSize,this.indentSize=t.indentSize,this.insertSpaces=t.insertSpaces,this.stickyTabStops=o.get(117),this.lineHeight=r.lineHeight,this.typicalHalfwidthCharacterWidth=r.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(l.height/this.lineHeight)-2),this.useTabStops=o.get(129),this.wordSeparators=o.get(132),this.emptySelectionClipboard=o.get(37),this.copyWithSyntaxHighlighting=o.get(25),this.multiCursorMergeOverlapping=o.get(77),this.multiCursorPaste=o.get(79),this.multiCursorLimit=o.get(80),this.autoClosingBrackets=o.get(6),this.autoClosingComments=o.get(7),this.autoClosingQuotes=o.get(11),this.autoClosingDelete=o.get(9),this.autoClosingOvertype=o.get(10),this.autoSurround=o.get(14),this.autoIndent=o.get(12),this.wordSegmenterLocales=o.get(131),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(e,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(e,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(e,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(e).getAutoClosingPairs();const a=this.languageConfigurationService.getLanguageConfiguration(e).getSurroundingPairs();if(a)for(const c of a)this.surroundingPairs[c.open]=c.close;const d=this.languageConfigurationService.getLanguageConfiguration(e).comments;this.blockCommentStartToken=(d==null?void 0:d.blockCommentStartToken)??null}get electricChars(){var e;if(!this._electricChars){this._electricChars={};const t=(e=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)==null?void 0:e.getElectricCharacters();if(t)for(const i of t)this._electricChars[i]=!0}return this._electricChars}onElectricCharacter(e,t,i){const n=SZ(t,i-1),o=this.languageConfigurationService.getLanguageConfiguration(n.languageId).electricCharacter;return o?o.onElectricCharacter(e,n,i-n.firstCharOffset):null}normalizeIndentation(e){return Dee(e,this.indentSize,this.insertSpaces)}_getShouldAutoClose(e,t,i){switch(t){case"beforeWhitespace":return r4e;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(e,i);case"always":return o4e;case"never":return l4e}}_getLanguageDefinedShouldAutoClose(e,t){const i=this.languageConfigurationService.getLanguageConfiguration(e).getAutoCloseBeforeSet(t);return n=>i.indexOf(n)!==-1}visibleColumnFromColumn(e,t){return ko.visibleColumnFromColumn(e.getLineContent(t.lineNumber),t.column,this.tabSize)}columnFromVisibleColumn(e,t,i){const n=ko.columnFromVisibleColumn(e.getLineContent(t),i,this.tabSize),o=e.getLineMinColumn(t);if(n<o)return o;const l=e.getLineMaxColumn(t);return n>l?l:n}}let Xi=class Ufe{static fromModelState(e){return new a4e(e)}static fromViewState(e){return new d4e(e)}static fromModelSelection(e){const t=dt.liftSelection(e),i=new gl(v.fromPositions(t.getSelectionStart()),0,0,t.getPosition(),0);return Ufe.fromModelState(i)}static fromModelSelections(e){const t=[];for(let i=0,n=e.length;i<n;i++)t[i]=this.fromModelSelection(e[i]);return t}constructor(e,t){this._cursorStateBrand=void 0,this.modelState=e,this.viewState=t}equals(e){return this.viewState.equals(e.viewState)&&this.modelState.equals(e.modelState)}};class a4e{constructor(e){this.modelState=e,this.viewState=null}}class d4e{constructor(e){this.modelState=null,this.viewState=e}}class gl{constructor(e,t,i,n,o){this.selectionStart=e,this.selectionStartKind=t,this.selectionStartLeftoverVisibleColumns=i,this.position=n,this.leftoverVisibleColumns=o,this._singleCursorStateBrand=void 0,this.selection=gl._computeSelection(this.selectionStart,this.position)}equals(e){return this.selectionStartLeftoverVisibleColumns===e.selectionStartLeftoverVisibleColumns&&this.leftoverVisibleColumns===e.leftoverVisibleColumns&&this.selectionStartKind===e.selectionStartKind&&this.position.equals(e.position)&&this.selectionStart.equalsRange(e.selectionStart)}hasSelection(){return!this.selection.isEmpty()||!this.selectionStart.isEmpty()}move(e,t,i,n){return e?new gl(this.selectionStart,this.selectionStartKind,this.selectionStartLeftoverVisibleColumns,new oe(t,i),n):new gl(new v(t,i,t,i),0,n,new oe(t,i),n)}static _computeSelection(e,t){return e.isEmpty()||!t.isBeforeOrEqual(e.getStartPosition())?dt.fromPositions(e.getStartPosition(),t):dt.fromPositions(e.getEndPosition(),t)}}class va{constructor(e,t,i){this._editOperationResultBrand=void 0,this.type=e,this.commands=t,this.shouldPushStackElementBefore=i.shouldPushStackElementBefore,this.shouldPushStackElementAfter=i.shouldPushStackElementAfter}}function sf(s){return s==="'"||s==='"'||s==="`"}class aZ{static columnSelect(e,t,i,n,o,l){const r=Math.abs(o-i)+1,a=i>o,d=n>l,c=n<l,h=[];for(let u=0;u<r;u++){const m=i+(a?-u:u),p=e.columnFromVisibleColumn(t,m,n),g=e.columnFromVisibleColumn(t,m,l),b=e.visibleColumnFromColumn(t,new oe(m,p)),f=e.visibleColumnFromColumn(t,new oe(m,g));c&&(b>l||f<n)||d&&(f>n||b<l)||h.push(new gl(new v(m,p,m,p),0,0,new oe(m,g),0))}if(h.length===0)for(let u=0;u<r;u++){const m=i+(a?-u:u),p=t.getLineMaxColumn(m);h.push(new gl(new v(m,p,m,p),0,0,new oe(m,p),0))}return{viewStates:h,reversed:a,fromLineNumber:i,fromVisualColumn:n,toLineNumber:o,toVisualColumn:l}}static columnSelectLeft(e,t,i){let n=i.toViewVisualColumn;return n>0&&n--,aZ.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,n)}static columnSelectRight(e,t,i){let n=0;const o=Math.min(i.fromViewLineNumber,i.toViewLineNumber),l=Math.max(i.fromViewLineNumber,i.toViewLineNumber);for(let a=o;a<=l;a++){const d=t.getLineMaxColumn(a),c=e.visibleColumnFromColumn(t,new oe(a,d));n=Math.max(n,c)}let r=i.toViewVisualColumn;return r<n&&r++,this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,r)}static columnSelectUp(e,t,i,n){const o=n?e.pageSize:1,l=Math.max(1,i.toViewLineNumber-o);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,l,i.toViewVisualColumn)}static columnSelectDown(e,t,i,n){const o=n?e.pageSize:1,l=Math.min(t.getLineCount(),i.toViewLineNumber+o);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,l,i.toViewVisualColumn)}}class Bl{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return dt.fromPositions(n.getEndPosition())}}class c4e{constructor(e,t){this._range=e,this._text=t}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return dt.fromRange(n,0)}}class fD{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return dt.fromPositions(n.getStartPosition())}}class lx{constructor(e,t,i,n,o=!1){this._range=e,this._text=t,this._columnDeltaOffset=n,this._lineNumberDeltaOffset=i,this.insertsAutoWhitespace=o}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return dt.fromPositions(n.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}class Ate{constructor(e,t,i,n=!1){this._range=e,this._text=t,this._initialSelection=i,this._forceMoveMarkers=n,this._selectionId=null}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=t.trackSelection(this._initialSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}class H3{constructor(e,t,i){this._cursorPositionBrand=void 0,this.lineNumber=e,this.column=t,this.leftoverVisibleColumns=i}}class pn{static leftPosition(e,t){if(t.column>e.getLineMinColumn(t.lineNumber))return t.delta(void 0,-$pe(e.getLineContent(t.lineNumber),t.column-1));if(t.lineNumber>1){const i=t.lineNumber-1;return new oe(i,e.getLineMaxColumn(i))}else return t}static leftPositionAtomicSoftTabs(e,t,i){if(t.column<=e.getLineIndentColumn(t.lineNumber)){const n=e.getLineMinColumn(t.lineNumber),o=e.getLineContent(t.lineNumber),l=YM.atomicPosition(o,t.column-1,i,0);if(l!==-1&&l+1>=n)return new oe(t.lineNumber,l+1)}return this.leftPosition(e,t)}static left(e,t,i){const n=e.stickyTabStops?pn.leftPositionAtomicSoftTabs(t,i,e.tabSize):pn.leftPosition(t,i);return new H3(n.lineNumber,n.column,0)}static moveLeft(e,t,i,n,o){let l,r;if(i.hasSelection()&&!n)l=i.selection.startLineNumber,r=i.selection.startColumn;else{const a=i.position.delta(void 0,-(o-1)),d=t.normalizePosition(pn.clipPositionColumn(a,t),0),c=pn.left(e,t,d);l=c.lineNumber,r=c.column}return i.move(n,l,r,0)}static clipPositionColumn(e,t){return new oe(e.lineNumber,pn.clipRange(e.column,t.getLineMinColumn(e.lineNumber),t.getLineMaxColumn(e.lineNumber)))}static clipRange(e,t,i){return e<t?t:e>i?i:e}static rightPosition(e,t,i){return i<e.getLineMaxColumn(t)?i=i+C$(e.getLineContent(t),i-1):t<e.getLineCount()&&(t=t+1,i=e.getLineMinColumn(t)),new oe(t,i)}static rightPositionAtomicSoftTabs(e,t,i,n,o){if(i<e.getLineIndentColumn(t)){const l=e.getLineContent(t),r=YM.atomicPosition(l,i-1,n,1);if(r!==-1)return new oe(t,r+1)}return this.rightPosition(e,t,i)}static right(e,t,i){const n=e.stickyTabStops?pn.rightPositionAtomicSoftTabs(t,i.lineNumber,i.column,e.tabSize,e.indentSize):pn.rightPosition(t,i.lineNumber,i.column);return new H3(n.lineNumber,n.column,0)}static moveRight(e,t,i,n,o){let l,r;if(i.hasSelection()&&!n)l=i.selection.endLineNumber,r=i.selection.endColumn;else{const a=i.position.delta(void 0,o-1),d=t.normalizePosition(pn.clipPositionColumn(a,t),1),c=pn.right(e,t,d);l=c.lineNumber,r=c.column}return i.move(n,l,r,0)}static vertical(e,t,i,n,o,l,r,a){const d=ko.visibleColumnFromColumn(t.getLineContent(i),n,e.tabSize)+o,c=t.getLineCount(),h=i===1&&n===1,u=i===c&&n===t.getLineMaxColumn(i),m=l<i?h:u;if(i=l,i<1?(i=1,r?n=t.getLineMinColumn(i):n=Math.min(t.getLineMaxColumn(i),n)):i>c?(i=c,r?n=t.getLineMaxColumn(i):n=Math.min(t.getLineMaxColumn(i),n)):n=e.columnFromVisibleColumn(t,i,d),m?o=0:o=d-ko.visibleColumnFromColumn(t.getLineContent(i),n,e.tabSize),a!==void 0){const p=new oe(i,n),g=t.normalizePosition(p,a);o=o+(n-g.column),i=g.lineNumber,n=g.column}return new H3(i,n,o)}static down(e,t,i,n,o,l,r){return this.vertical(e,t,i,n,o,i+l,r,4)}static moveDown(e,t,i,n,o){let l,r;i.hasSelection()&&!n?(l=i.selection.endLineNumber,r=i.selection.endColumn):(l=i.position.lineNumber,r=i.position.column);let a=0,d;do if(d=pn.down(e,t,l+a,r,i.leftoverVisibleColumns,o,!0),t.normalizePosition(new oe(d.lineNumber,d.column),2).lineNumber>l)break;while(a++<10&&l+a<t.getLineCount());return i.move(n,d.lineNumber,d.column,d.leftoverVisibleColumns)}static translateDown(e,t,i){const n=i.selection,o=pn.down(e,t,n.selectionStartLineNumber,n.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),l=pn.down(e,t,n.positionLineNumber,n.positionColumn,i.leftoverVisibleColumns,1,!1);return new gl(new v(o.lineNumber,o.column,o.lineNumber,o.column),0,o.leftoverVisibleColumns,new oe(l.lineNumber,l.column),l.leftoverVisibleColumns)}static up(e,t,i,n,o,l,r){return this.vertical(e,t,i,n,o,i-l,r,3)}static moveUp(e,t,i,n,o){let l,r;i.hasSelection()&&!n?(l=i.selection.startLineNumber,r=i.selection.startColumn):(l=i.position.lineNumber,r=i.position.column);const a=pn.up(e,t,l,r,i.leftoverVisibleColumns,o,!0);return i.move(n,a.lineNumber,a.column,a.leftoverVisibleColumns)}static translateUp(e,t,i){const n=i.selection,o=pn.up(e,t,n.selectionStartLineNumber,n.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),l=pn.up(e,t,n.positionLineNumber,n.positionColumn,i.leftoverVisibleColumns,1,!1);return new gl(new v(o.lineNumber,o.column,o.lineNumber,o.column),0,o.leftoverVisibleColumns,new oe(l.lineNumber,l.column),l.leftoverVisibleColumns)}static _isBlankLine(e,t){return e.getLineFirstNonWhitespaceColumn(t)===0}static moveToPrevBlankLine(e,t,i,n){let o=i.position.lineNumber;for(;o>1&&this._isBlankLine(t,o);)o--;for(;o>1&&!this._isBlankLine(t,o);)o--;return i.move(n,o,t.getLineMinColumn(o),0)}static moveToNextBlankLine(e,t,i,n){const o=t.getLineCount();let l=i.position.lineNumber;for(;l<o&&this._isBlankLine(t,l);)l++;for(;l<o&&!this._isBlankLine(t,l);)l++;return i.move(n,l,t.getLineMinColumn(l),0)}static moveToBeginningOfLine(e,t,i,n){const o=i.position.lineNumber,l=t.getLineMinColumn(o),r=t.getLineFirstNonWhitespaceColumn(o)||l;let a;return i.position.column===r?a=l:a=r,i.move(n,o,a,0)}static moveToEndOfLine(e,t,i,n,o){const l=i.position.lineNumber,r=t.getLineMaxColumn(l);return i.move(n,l,r,o?1073741824-r:0)}static moveToBeginningOfBuffer(e,t,i,n){return i.move(n,1,1,0)}static moveToEndOfBuffer(e,t,i,n){const o=t.getLineCount(),l=t.getLineMaxColumn(o);return i.move(n,o,l,0)}}class BA{static deleteRight(e,t,i,n){const o=[];let l=e!==3;for(let r=0,a=n.length;r<a;r++){const d=n[r];let c=d;if(c.isEmpty()){const h=d.getPosition(),u=pn.right(t,i,h);c=new v(u.lineNumber,u.column,h.lineNumber,h.column)}if(c.isEmpty()){o[r]=null;continue}c.startLineNumber!==c.endLineNumber&&(l=!0),o[r]=new Bl(c,"")}return[l,o]}static isAutoClosingPairDelete(e,t,i,n,o,l,r){if(t==="never"&&i==="never"||e==="never")return!1;for(let a=0,d=l.length;a<d;a++){const c=l[a],h=c.getPosition();if(!c.isEmpty())return!1;const u=o.getLineContent(h.lineNumber);if(h.column<2||h.column>=u.length+1)return!1;const m=u.charAt(h.column-2),p=n.get(m);if(!p)return!1;if(sf(m)){if(i==="never")return!1}else if(t==="never")return!1;const g=u.charAt(h.column-1);let b=!1;for(const f of p)f.open===m&&f.close===g&&(b=!0);if(!b)return!1;if(e==="auto"){let f=!1;for(let Z=0,A=r.length;Z<A;Z++){const N=r[Z];if(h.lineNumber===N.startLineNumber&&h.column===N.startColumn){f=!0;break}}if(!f)return!1}}return!0}static _runAutoClosingPairDelete(e,t,i){const n=[];for(let o=0,l=i.length;o<l;o++){const r=i[o].getPosition(),a=new v(r.lineNumber,r.column-1,r.lineNumber,r.column+1);n[o]=new Bl(a,"")}return[!0,n]}static deleteLeft(e,t,i,n,o){if(this.isAutoClosingPairDelete(t.autoClosingDelete,t.autoClosingBrackets,t.autoClosingQuotes,t.autoClosingPairs.autoClosingPairsOpenByEnd,i,n,o))return this._runAutoClosingPairDelete(t,i,n);const l=[];let r=e!==2;for(let a=0,d=n.length;a<d;a++){const c=BA.getDeleteRange(n[a],i,t);if(c.isEmpty()){l[a]=null;continue}c.startLineNumber!==c.endLineNumber&&(r=!0),l[a]=new Bl(c,"")}return[r,l]}static getDeleteRange(e,t,i){if(!e.isEmpty())return e;const n=e.getPosition();if(i.useTabStops&&n.column>1){const o=t.getLineContent(n.lineNumber),l=Wr(o),r=l===-1?o.length+1:l+1;if(n.column<=r){const a=i.visibleColumnFromColumn(t,n),d=ko.prevIndentTabStop(a,i.indentSize),c=i.columnFromVisibleColumn(t,n.lineNumber,d);return new v(n.lineNumber,c,n.lineNumber,n.column)}}return v.fromPositions(BA.getPositionAfterDeleteLeft(n,t),n)}static getPositionAfterDeleteLeft(e,t){if(e.column>1){const i=QGe(e.column-1,t.getLineContent(e.lineNumber));return e.with(void 0,i+1)}else if(e.lineNumber>1){const i=e.lineNumber-1;return new oe(i,t.getLineMaxColumn(i))}else return e}static cut(e,t,i){const n=[];let o=null;i.sort((l,r)=>oe.compare(l.getStartPosition(),r.getEndPosition()));for(let l=0,r=i.length;l<r;l++){const a=i[l];if(a.isEmpty())if(e.emptySelectionClipboard){const d=a.getPosition();let c,h,u,m;d.lineNumber<t.getLineCount()?(c=d.lineNumber,h=1,u=d.lineNumber+1,m=1):d.lineNumber>1&&(o==null?void 0:o.endLineNumber)!==d.lineNumber?(c=d.lineNumber-1,h=t.getLineMaxColumn(d.lineNumber-1),u=d.lineNumber,m=t.getLineMaxColumn(d.lineNumber)):(c=d.lineNumber,h=1,u=d.lineNumber,m=t.getLineMaxColumn(d.lineNumber));const p=new v(c,h,u,m);o=p,p.isEmpty()?n[l]=null:n[l]=new Bl(p,"")}else n[l]=null;else n[l]=new Bl(a,"")}return new va(0,n,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}class ln{static _createWord(e,t,i,n,o){return{start:n,end:o,wordType:t,nextCharClass:i}}static _createIntlWord(e,t){return{start:e.index,end:e.index+e.segment.length,wordType:1,nextCharClass:t}}static _findPreviousWordOnLine(e,t,i){const n=t.getLineContent(i.lineNumber);return this._doFindPreviousWordOnLine(n,e,i)}static _doFindPreviousWordOnLine(e,t,i){let n=0;const o=t.findPrevIntlWordBeforeOrAtOffset(e,i.column-2);for(let l=i.column-2;l>=0;l--){const r=e.charCodeAt(l),a=t.get(r);if(o&&l===o.index)return this._createIntlWord(o,a);if(a===0){if(n===2)return this._createWord(e,n,a,l+1,this._findEndOfWord(e,t,n,l+1));n=1}else if(a===2){if(n===1)return this._createWord(e,n,a,l+1,this._findEndOfWord(e,t,n,l+1));n=2}else if(a===1&&n!==0)return this._createWord(e,n,a,l+1,this._findEndOfWord(e,t,n,l+1))}return n!==0?this._createWord(e,n,1,0,this._findEndOfWord(e,t,n,0)):null}static _findEndOfWord(e,t,i,n){const o=t.findNextIntlWordAtOrAfterOffset(e,n),l=e.length;for(let r=n;r<l;r++){const a=e.charCodeAt(r),d=t.get(a);if(o&&r===o.index+o.segment.length||d===1||i===1&&d===2||i===2&&d===0)return r}return l}static _findNextWordOnLine(e,t,i){const n=t.getLineContent(i.lineNumber);return this._doFindNextWordOnLine(n,e,i)}static _doFindNextWordOnLine(e,t,i){let n=0;const o=e.length,l=t.findNextIntlWordAtOrAfterOffset(e,i.column-1);for(let r=i.column-1;r<o;r++){const a=e.charCodeAt(r),d=t.get(a);if(l&&r===l.index)return this._createIntlWord(l,d);if(d===0){if(n===2)return this._createWord(e,n,d,this._findStartOfWord(e,t,n,r-1),r);n=1}else if(d===2){if(n===1)return this._createWord(e,n,d,this._findStartOfWord(e,t,n,r-1),r);n=2}else if(d===1&&n!==0)return this._createWord(e,n,d,this._findStartOfWord(e,t,n,r-1),r)}return n!==0?this._createWord(e,n,1,this._findStartOfWord(e,t,n,o-1),o):null}static _findStartOfWord(e,t,i,n){const o=t.findPrevIntlWordBeforeOrAtOffset(e,n);for(let l=n;l>=0;l--){const r=e.charCodeAt(l),a=t.get(r);if(o&&l===o.index)return l;if(a===1||i===1&&a===2||i===2&&a===0)return l+1}return 0}static moveWordLeft(e,t,i,n,o){let l=i.lineNumber,r=i.column;r===1&&l>1&&(l=l-1,r=t.getLineMaxColumn(l));let a=ln._findPreviousWordOnLine(e,t,new oe(l,r));if(n===0)return new oe(l,a?a.start+1:1);if(n===1)return!o&&a&&a.wordType===2&&a.end-a.start===1&&a.nextCharClass===0&&(a=ln._findPreviousWordOnLine(e,t,new oe(l,a.start+1))),new oe(l,a?a.start+1:1);if(n===3){for(;a&&a.wordType===2;)a=ln._findPreviousWordOnLine(e,t,new oe(l,a.start+1));return new oe(l,a?a.start+1:1)}return a&&r<=a.end+1&&(a=ln._findPreviousWordOnLine(e,t,new oe(l,a.start+1))),new oe(l,a?a.end+1:1)}static _moveWordPartLeft(e,t){const i=t.lineNumber,n=e.getLineMaxColumn(i);if(t.column===1)return i>1?new oe(i-1,e.getLineMaxColumn(i-1)):t;const o=e.getLineContent(i);for(let l=t.column-1;l>1;l--){const r=o.charCodeAt(l-2),a=o.charCodeAt(l-1);if(r===95&&a!==95)return new oe(i,l);if(r===45&&a!==45)return new oe(i,l);if((aU(r)||BL(r))&&$m(a))return new oe(i,l);if($m(r)&&$m(a)&&l+1<n){const d=o.charCodeAt(l);if(aU(d)||BL(d))return new oe(i,l)}}return new oe(i,1)}static moveWordRight(e,t,i,n){let o=i.lineNumber,l=i.column,r=!1;l===t.getLineMaxColumn(o)&&o<t.getLineCount()&&(r=!0,o=o+1,l=1);let a=ln._findNextWordOnLine(e,t,new oe(o,l));if(n===2)a&&a.wordType===2&&a.end-a.start===1&&a.nextCharClass===0&&(a=ln._findNextWordOnLine(e,t,new oe(o,a.end+1))),a?l=a.end+1:l=t.getLineMaxColumn(o);else if(n===3){for(r&&(l=0);a&&(a.wordType===2||a.start+1<=l);)a=ln._findNextWordOnLine(e,t,new oe(o,a.end+1));a?l=a.start+1:l=t.getLineMaxColumn(o)}else a&&!r&&l>=a.start+1&&(a=ln._findNextWordOnLine(e,t,new oe(o,a.end+1))),a?l=a.start+1:l=t.getLineMaxColumn(o);return new oe(o,l)}static _moveWordPartRight(e,t){const i=t.lineNumber,n=e.getLineMaxColumn(i);if(t.column===n)return i<e.getLineCount()?new oe(i+1,1):t;const o=e.getLineContent(i);for(let l=t.column+1;l<n;l++){const r=o.charCodeAt(l-2),a=o.charCodeAt(l-1);if(r!==95&&a===95)return new oe(i,l);if(r!==45&&a===45)return new oe(i,l);if((aU(r)||BL(r))&&$m(a))return new oe(i,l);if($m(r)&&$m(a)&&l+1<n){const d=o.charCodeAt(l);if(aU(d)||BL(d))return new oe(i,l)}}return new oe(i,n)}static _deleteWordLeftWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=t.column-2,o=Xu(i,n);return o+1<n?new v(t.lineNumber,o+2,t.lineNumber,t.column):null}static deleteWordLeft(e,t){const i=e.wordSeparators,n=e.model,o=e.selection,l=e.whitespaceHeuristics;if(!o.isEmpty())return o;if(BA.isAutoClosingPairDelete(e.autoClosingDelete,e.autoClosingBrackets,e.autoClosingQuotes,e.autoClosingPairs.autoClosingPairsOpenByEnd,e.model,[e.selection],e.autoClosedCharacters)){const h=e.selection.getPosition();return new v(h.lineNumber,h.column-1,h.lineNumber,h.column+1)}const r=new oe(o.positionLineNumber,o.positionColumn);let a=r.lineNumber,d=r.column;if(a===1&&d===1)return null;if(l){const h=this._deleteWordLeftWhitespace(n,r);if(h)return h}let c=ln._findPreviousWordOnLine(i,n,r);return t===0?c?d=c.start+1:d>1?d=1:(a--,d=n.getLineMaxColumn(a)):(c&&d<=c.end+1&&(c=ln._findPreviousWordOnLine(i,n,new oe(a,c.start+1))),c?d=c.end+1:d>1?d=1:(a--,d=n.getLineMaxColumn(a))),new v(a,d,r.lineNumber,r.column)}static deleteInsideWord(e,t,i){if(!i.isEmpty())return i;const n=new oe(i.positionLineNumber,i.positionColumn),o=this._deleteInsideWordWhitespace(t,n);return o||this._deleteInsideWordDetermineDeleteRange(e,t,n)}static _charAtIsWhitespace(e,t){const i=e.charCodeAt(t);return i===32||i===9}static _deleteInsideWordWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=i.length;if(n===0)return null;let o=Math.max(t.column-2,0);if(!this._charAtIsWhitespace(i,o))return null;let l=Math.min(t.column-1,n-1);if(!this._charAtIsWhitespace(i,l))return null;for(;o>0&&this._charAtIsWhitespace(i,o-1);)o--;for(;l+1<n&&this._charAtIsWhitespace(i,l+1);)l++;return new v(t.lineNumber,o+1,t.lineNumber,l+2)}static _deleteInsideWordDetermineDeleteRange(e,t,i){const n=t.getLineContent(i.lineNumber),o=n.length;if(o===0)return i.lineNumber>1?new v(i.lineNumber-1,t.getLineMaxColumn(i.lineNumber-1),i.lineNumber,1):i.lineNumber<t.getLineCount()?new v(i.lineNumber,1,i.lineNumber+1,1):new v(i.lineNumber,1,i.lineNumber,1);const l=h=>h.start+1<=i.column&&i.column<=h.end+1,r=(h,u)=>(h=Math.min(h,i.column),u=Math.max(u,i.column),new v(i.lineNumber,h,i.lineNumber,u)),a=h=>{let u=h.start+1,m=h.end+1,p=!1;for(;m-1<o&&this._charAtIsWhitespace(n,m-1);)p=!0,m++;if(!p)for(;u>1&&this._charAtIsWhitespace(n,u-2);)u--;return r(u,m)},d=ln._findPreviousWordOnLine(e,t,i);if(d&&l(d))return a(d);const c=ln._findNextWordOnLine(e,t,i);return c&&l(c)?a(c):d&&c?r(d.end+1,c.start+1):d?r(d.start+1,d.end+1):c?r(c.start+1,c.end+1):r(1,o+1)}static _deleteWordPartLeft(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=ln._moveWordPartLeft(e,i);return new v(i.lineNumber,i.column,n.lineNumber,n.column)}static _findFirstNonWhitespaceChar(e,t){const i=e.length;for(let n=t;n<i;n++){const o=e.charAt(n);if(o!==" "&&o!==" ")return n}return i}static _deleteWordRightWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=t.column-1,o=this._findFirstNonWhitespaceChar(i,n);return n+1<o?new v(t.lineNumber,t.column,t.lineNumber,o+1):null}static deleteWordRight(e,t){const i=e.wordSeparators,n=e.model,o=e.selection,l=e.whitespaceHeuristics;if(!o.isEmpty())return o;const r=new oe(o.positionLineNumber,o.positionColumn);let a=r.lineNumber,d=r.column;const c=n.getLineCount(),h=n.getLineMaxColumn(a);if(a===c&&d===h)return null;if(l){const m=this._deleteWordRightWhitespace(n,r);if(m)return m}let u=ln._findNextWordOnLine(i,n,r);return t===2?u?d=u.end+1:d<h||a===c?d=h:(a++,u=ln._findNextWordOnLine(i,n,new oe(a,1)),u?d=u.start+1:d=n.getLineMaxColumn(a)):(u&&d>=u.start+1&&(u=ln._findNextWordOnLine(i,n,new oe(a,u.end+1))),u?d=u.start+1:d<h||a===c?d=h:(a++,u=ln._findNextWordOnLine(i,n,new oe(a,1)),u?d=u.start+1:d=n.getLineMaxColumn(a))),new v(a,d,r.lineNumber,r.column)}static _deleteWordPartRight(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=ln._moveWordPartRight(e,i);return new v(i.lineNumber,i.column,n.lineNumber,n.column)}static _createWordAtPosition(e,t,i){const n=new v(t,i.start+1,t,i.end+1);return{word:e.getValueInRange(n),startColumn:n.startColumn,endColumn:n.endColumn}}static getWordAtPosition(e,t,i,n){const o=Kc(t,i),l=ln._findPreviousWordOnLine(o,e,n);if(l&&l.wordType===1&&l.start<=n.column-1&&n.column-1<=l.end)return ln._createWordAtPosition(e,n.lineNumber,l);const r=ln._findNextWordOnLine(o,e,n);return r&&r.wordType===1&&r.start<=n.column-1&&n.column-1<=r.end?ln._createWordAtPosition(e,n.lineNumber,r):null}static word(e,t,i,n,o){const l=Kc(e.wordSeparators,e.wordSegmenterLocales),r=ln._findPreviousWordOnLine(l,t,o),a=ln._findNextWordOnLine(l,t,o);if(!n){let m,p;return r&&r.wordType===1&&r.start<=o.column-1&&o.column-1<=r.end?(m=r.start+1,p=r.end+1):a&&a.wordType===1&&a.start<=o.column-1&&o.column-1<=a.end?(m=a.start+1,p=a.end+1):(r?m=r.end+1:m=1,a?p=a.start+1:p=t.getLineMaxColumn(o.lineNumber)),new gl(new v(o.lineNumber,m,o.lineNumber,p),1,0,new oe(o.lineNumber,p),0)}let d,c;r&&r.wordType===1&&r.start<o.column-1&&o.column-1<r.end?(d=r.start+1,c=r.end+1):a&&a.wordType===1&&a.start<o.column-1&&o.column-1<a.end?(d=a.start+1,c=a.end+1):(d=o.column,c=o.column);const h=o.lineNumber;let u;if(i.selectionStart.containsPosition(o))u=i.selectionStart.endColumn;else if(o.isBeforeOrEqual(i.selectionStart.getStartPosition())){u=d;const m=new oe(h,u);i.selectionStart.containsPosition(m)&&(u=i.selectionStart.endColumn)}else{u=c;const m=new oe(h,u);i.selectionStart.containsPosition(m)&&(u=i.selectionStart.startColumn)}return i.move(!0,h,u,0)}}class ez extends ln{static deleteWordPartLeft(e){const t=hk([ln.deleteWordLeft(e,0),ln.deleteWordLeft(e,2),ln._deleteWordPartLeft(e.model,e.selection)]);return t.sort(v.compareRangesUsingEnds),t[2]}static deleteWordPartRight(e){const t=hk([ln.deleteWordRight(e,0),ln.deleteWordRight(e,2),ln._deleteWordPartRight(e.model,e.selection)]);return t.sort(v.compareRangesUsingStarts),t[0]}static moveWordPartLeft(e,t,i,n){const o=hk([ln.moveWordLeft(e,t,i,0,n),ln.moveWordLeft(e,t,i,2,n),ln._moveWordPartLeft(t,i)]);return o.sort(oe.compare),o[2]}static moveWordPartRight(e,t,i){const n=hk([ln.moveWordRight(e,t,i,0),ln.moveWordRight(e,t,i,2),ln._moveWordPartRight(t,i)]);return n.sort(oe.compare),n[0]}}function hk(s){return s.filter(e=>!!e)}class ul{static addCursorDown(e,t,i){const n=[];let o=0;for(let l=0,r=t.length;l<r;l++){const a=t[l];n[o++]=new Xi(a.modelState,a.viewState),i?n[o++]=Xi.fromModelState(pn.translateDown(e.cursorConfig,e.model,a.modelState)):n[o++]=Xi.fromViewState(pn.translateDown(e.cursorConfig,e,a.viewState))}return n}static addCursorUp(e,t,i){const n=[];let o=0;for(let l=0,r=t.length;l<r;l++){const a=t[l];n[o++]=new Xi(a.modelState,a.viewState),i?n[o++]=Xi.fromModelState(pn.translateUp(e.cursorConfig,e.model,a.modelState)):n[o++]=Xi.fromViewState(pn.translateUp(e.cursorConfig,e,a.viewState))}return n}static moveToBeginningOfLine(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o];n[o]=this._moveToLineStart(e,r,i)}return n}static _moveToLineStart(e,t,i){const n=t.viewState.position.column,o=t.modelState.position.column,l=n===o,r=t.viewState.position.lineNumber,a=e.getLineFirstNonWhitespaceColumn(r);return!l&&!(n===a)?this._moveToLineStartByView(e,t,i):this._moveToLineStartByModel(e,t,i)}static _moveToLineStartByView(e,t,i){return Xi.fromViewState(pn.moveToBeginningOfLine(e.cursorConfig,e,t.viewState,i))}static _moveToLineStartByModel(e,t,i){return Xi.fromModelState(pn.moveToBeginningOfLine(e.cursorConfig,e.model,t.modelState,i))}static moveToEndOfLine(e,t,i,n){const o=[];for(let l=0,r=t.length;l<r;l++){const a=t[l];o[l]=this._moveToLineEnd(e,a,i,n)}return o}static _moveToLineEnd(e,t,i,n){const o=t.viewState.position,l=e.getLineMaxColumn(o.lineNumber),r=o.column===l,a=t.modelState.position,d=e.model.getLineMaxColumn(a.lineNumber),c=l-o.column===d-a.column;return r||c?this._moveToLineEndByModel(e,t,i,n):this._moveToLineEndByView(e,t,i,n)}static _moveToLineEndByView(e,t,i,n){return Xi.fromViewState(pn.moveToEndOfLine(e.cursorConfig,e,t.viewState,i,n))}static _moveToLineEndByModel(e,t,i,n){return Xi.fromModelState(pn.moveToEndOfLine(e.cursorConfig,e.model,t.modelState,i,n))}static expandLineSelection(e,t){const i=[];for(let n=0,o=t.length;n<o;n++){const l=t[n],r=l.modelState.selection.startLineNumber,a=e.model.getLineCount();let d=l.modelState.selection.endLineNumber,c;d===a?c=e.model.getLineMaxColumn(a):(d++,c=1),i[n]=Xi.fromModelState(new gl(new v(r,1,r,1),0,0,new oe(d,c),0))}return i}static moveToBeginningOfBuffer(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o];n[o]=Xi.fromModelState(pn.moveToBeginningOfBuffer(e.cursorConfig,e.model,r.modelState,i))}return n}static moveToEndOfBuffer(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o];n[o]=Xi.fromModelState(pn.moveToEndOfBuffer(e.cursorConfig,e.model,r.modelState,i))}return n}static selectAll(e,t){const i=e.model.getLineCount(),n=e.model.getLineMaxColumn(i);return Xi.fromModelState(new gl(new v(1,1,1,1),0,0,new oe(i,n),0))}static line(e,t,i,n,o){const l=e.model.validatePosition(n),r=o?e.coordinatesConverter.validateViewPosition(new oe(o.lineNumber,o.column),l):e.coordinatesConverter.convertModelPositionToViewPosition(l);if(!i){const d=e.model.getLineCount();let c=l.lineNumber+1,h=1;return c>d&&(c=d,h=e.model.getLineMaxColumn(c)),Xi.fromModelState(new gl(new v(l.lineNumber,1,c,h),2,0,new oe(c,h),0))}const a=t.modelState.selectionStart.getStartPosition().lineNumber;if(l.lineNumber<a)return Xi.fromViewState(t.viewState.move(!0,r.lineNumber,1,0));if(l.lineNumber>a){const d=e.getLineCount();let c=r.lineNumber+1,h=1;return c>d&&(c=d,h=e.getLineMaxColumn(c)),Xi.fromViewState(t.viewState.move(!0,c,h,0))}else{const d=t.modelState.selectionStart.getEndPosition();return Xi.fromModelState(t.modelState.move(!0,d.lineNumber,d.column,0))}}static word(e,t,i,n){const o=e.model.validatePosition(n);return Xi.fromModelState(ln.word(e.cursorConfig,e.model,t.modelState,i,o))}static cancelSelection(e,t){if(!t.modelState.hasSelection())return new Xi(t.modelState,t.viewState);const i=t.viewState.position.lineNumber,n=t.viewState.position.column;return Xi.fromViewState(new gl(new v(i,n,i,n),0,0,new oe(i,n),0))}static moveTo(e,t,i,n,o){if(i){if(t.modelState.selectionStartKind===1)return this.word(e,t,i,n);if(t.modelState.selectionStartKind===2)return this.line(e,t,i,n,o)}const l=e.model.validatePosition(n),r=o?e.coordinatesConverter.validateViewPosition(new oe(o.lineNumber,o.column),l):e.coordinatesConverter.convertModelPositionToViewPosition(l);return Xi.fromViewState(t.viewState.move(i,r.lineNumber,r.column,0))}static simpleMove(e,t,i,n,o,l){switch(i){case 0:return l===4?this._moveHalfLineLeft(e,t,n):this._moveLeft(e,t,n,o);case 1:return l===4?this._moveHalfLineRight(e,t,n):this._moveRight(e,t,n,o);case 2:return l===2?this._moveUpByViewLines(e,t,n,o):this._moveUpByModelLines(e,t,n,o);case 3:return l===2?this._moveDownByViewLines(e,t,n,o):this._moveDownByModelLines(e,t,n,o);case 4:return l===2?t.map(r=>Xi.fromViewState(pn.moveToPrevBlankLine(e.cursorConfig,e,r.viewState,n))):t.map(r=>Xi.fromModelState(pn.moveToPrevBlankLine(e.cursorConfig,e.model,r.modelState,n)));case 5:return l===2?t.map(r=>Xi.fromViewState(pn.moveToNextBlankLine(e.cursorConfig,e,r.viewState,n))):t.map(r=>Xi.fromModelState(pn.moveToNextBlankLine(e.cursorConfig,e.model,r.modelState,n)));case 6:return this._moveToViewMinColumn(e,t,n);case 7:return this._moveToViewFirstNonWhitespaceColumn(e,t,n);case 8:return this._moveToViewCenterColumn(e,t,n);case 9:return this._moveToViewMaxColumn(e,t,n);case 10:return this._moveToViewLastNonWhitespaceColumn(e,t,n);default:return null}}static viewportMove(e,t,i,n,o){const l=e.getCompletelyVisibleViewRange(),r=e.coordinatesConverter.convertViewRangeToModelRange(l);switch(i){case 11:{const a=this._firstLineNumberInRange(e.model,r,o),d=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,t[0],n,a,d)]}case 13:{const a=this._lastLineNumberInRange(e.model,r,o),d=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,t[0],n,a,d)]}case 12:{const a=Math.round((r.startLineNumber+r.endLineNumber)/2),d=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,t[0],n,a,d)]}case 14:{const a=[];for(let d=0,c=t.length;d<c;d++){const h=t[d];a[d]=this.findPositionInViewportIfOutside(e,h,l,n)}return a}default:return null}}static findPositionInViewportIfOutside(e,t,i,n){const o=t.viewState.position.lineNumber;if(i.startLineNumber<=o&&o<=i.endLineNumber-1)return new Xi(t.modelState,t.viewState);{let l;o>i.endLineNumber-1?l=i.endLineNumber-1:o<i.startLineNumber?l=i.startLineNumber:l=o;const r=pn.vertical(e.cursorConfig,e,o,t.viewState.position.column,t.viewState.leftoverVisibleColumns,l,!1);return Xi.fromViewState(t.viewState.move(n,r.lineNumber,r.column,r.leftoverVisibleColumns))}}static _firstLineNumberInRange(e,t,i){let n=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(n)&&n++,Math.min(t.endLineNumber,n+i-1)}static _lastLineNumberInRange(e,t,i){let n=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(n)&&n++,Math.max(n,t.endLineNumber-i+1)}static _moveLeft(e,t,i,n){return t.map(o=>Xi.fromViewState(pn.moveLeft(e.cursorConfig,e,o.viewState,i,n)))}static _moveHalfLineLeft(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=Math.round(e.getLineLength(a)/2);n[o]=Xi.fromViewState(pn.moveLeft(e.cursorConfig,e,r.viewState,i,d))}return n}static _moveRight(e,t,i,n){return t.map(o=>Xi.fromViewState(pn.moveRight(e.cursorConfig,e,o.viewState,i,n)))}static _moveHalfLineRight(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=Math.round(e.getLineLength(a)/2);n[o]=Xi.fromViewState(pn.moveRight(e.cursorConfig,e,r.viewState,i,d))}return n}static _moveDownByViewLines(e,t,i,n){const o=[];for(let l=0,r=t.length;l<r;l++){const a=t[l];o[l]=Xi.fromViewState(pn.moveDown(e.cursorConfig,e,a.viewState,i,n))}return o}static _moveDownByModelLines(e,t,i,n){const o=[];for(let l=0,r=t.length;l<r;l++){const a=t[l];o[l]=Xi.fromModelState(pn.moveDown(e.cursorConfig,e.model,a.modelState,i,n))}return o}static _moveUpByViewLines(e,t,i,n){const o=[];for(let l=0,r=t.length;l<r;l++){const a=t[l];o[l]=Xi.fromViewState(pn.moveUp(e.cursorConfig,e,a.viewState,i,n))}return o}static _moveUpByModelLines(e,t,i,n){const o=[];for(let l=0,r=t.length;l<r;l++){const a=t[l];o[l]=Xi.fromModelState(pn.moveUp(e.cursorConfig,e.model,a.modelState,i,n))}return o}static _moveToViewPosition(e,t,i,n,o){return Xi.fromViewState(t.viewState.move(i,n,o,0))}static _moveToModelPosition(e,t,i,n,o){return Xi.fromModelState(t.modelState.move(i,n,o,0))}static _moveToViewMinColumn(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=e.getLineMinColumn(a);n[o]=this._moveToViewPosition(e,r,i,a,d)}return n}static _moveToViewFirstNonWhitespaceColumn(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=e.getLineFirstNonWhitespaceColumn(a);n[o]=this._moveToViewPosition(e,r,i,a,d)}return n}static _moveToViewCenterColumn(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=Math.round((e.getLineMaxColumn(a)+e.getLineMinColumn(a))/2);n[o]=this._moveToViewPosition(e,r,i,a,d)}return n}static _moveToViewMaxColumn(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=e.getLineMaxColumn(a);n[o]=this._moveToViewPosition(e,r,i,a,d)}return n}static _moveToViewLastNonWhitespaceColumn(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.viewState.position.lineNumber,d=e.getLineLastNonWhitespaceColumn(a);n[o]=this._moveToViewPosition(e,r,i,a,d)}return n}}var rx;(function(s){const e=function(i){if(!il(i))return!1;const n=i;return!(!Da(n.to)||!Rr(n.select)&&!Fpe(n.select)||!Rr(n.by)&&!Da(n.by)||!Rr(n.value)&&!XU(n.value))};s.metadata={description:"Move cursor to a logical position in the view",args:[{name:"Cursor move argument object",description:`Property-value pairs that can be passed through this argument:
- * 'to': A mandatory logical position value providing where to move the cursor.
- \`\`\`
- 'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine',
- 'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'
- 'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'
- 'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'
- \`\`\`
- * 'by': Unit to move. Default is computed based on 'to' value.
- \`\`\`
- 'line', 'wrappedLine', 'character', 'halfLine'
- \`\`\`
- * 'value': Number of units to move. Default is '1'.
- * 'select': If 'true' makes the selection. Default is 'false'.
- `,constraint:e,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["left","right","up","down","prevBlankLine","nextBlankLine","wrappedLineStart","wrappedLineEnd","wrappedLineColumnCenter","wrappedLineFirstNonWhitespaceCharacter","wrappedLineLastNonWhitespaceCharacter","viewPortTop","viewPortCenter","viewPortBottom","viewPortIfOutside"]},by:{type:"string",enum:["line","wrappedLine","character","halfLine"]},value:{type:"number",default:1},select:{type:"boolean",default:!1}}}}]},s.RawDirection={Left:"left",Right:"right",Up:"up",Down:"down",PrevBlankLine:"prevBlankLine",NextBlankLine:"nextBlankLine",WrappedLineStart:"wrappedLineStart",WrappedLineFirstNonWhitespaceCharacter:"wrappedLineFirstNonWhitespaceCharacter",WrappedLineColumnCenter:"wrappedLineColumnCenter",WrappedLineEnd:"wrappedLineEnd",WrappedLineLastNonWhitespaceCharacter:"wrappedLineLastNonWhitespaceCharacter",ViewPortTop:"viewPortTop",ViewPortCenter:"viewPortCenter",ViewPortBottom:"viewPortBottom",ViewPortIfOutside:"viewPortIfOutside"},s.RawUnit={Line:"line",WrappedLine:"wrappedLine",Character:"character",HalfLine:"halfLine"};function t(i){if(!i.to)return null;let n;switch(i.to){case s.RawDirection.Left:n=0;break;case s.RawDirection.Right:n=1;break;case s.RawDirection.Up:n=2;break;case s.RawDirection.Down:n=3;break;case s.RawDirection.PrevBlankLine:n=4;break;case s.RawDirection.NextBlankLine:n=5;break;case s.RawDirection.WrappedLineStart:n=6;break;case s.RawDirection.WrappedLineFirstNonWhitespaceCharacter:n=7;break;case s.RawDirection.WrappedLineColumnCenter:n=8;break;case s.RawDirection.WrappedLineEnd:n=9;break;case s.RawDirection.WrappedLineLastNonWhitespaceCharacter:n=10;break;case s.RawDirection.ViewPortTop:n=11;break;case s.RawDirection.ViewPortBottom:n=13;break;case s.RawDirection.ViewPortCenter:n=12;break;case s.RawDirection.ViewPortIfOutside:n=14;break;default:return null}let o=0;switch(i.by){case s.RawUnit.Line:o=1;break;case s.RawUnit.WrappedLine:o=2;break;case s.RawUnit.Character:o=3;break;case s.RawUnit.HalfLine:o=4;break}return{direction:n,unit:o,select:!!i.select,value:i.value||1}}s.parse=t})(rx||(rx={}));class Nte{constructor(e,t,i){this._indentRulesSupport=t,this._indentationLineProcessor=new ffe(e,i)}shouldIncrease(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldIncrease(i)}shouldDecrease(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldDecrease(i)}shouldIgnore(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldIgnore(i)}shouldIndentNextLine(e,t){const i=this._indentationLineProcessor.getProcessedLine(e,t);return this._indentRulesSupport.shouldIndentNextLine(i)}}class Rte{constructor(e,t){this.model=e,this.indentationLineProcessor=new ffe(e,t)}getProcessedTokenContextAroundRange(e){const t=this._getProcessedTokensBeforeRange(e),i=this._getProcessedTokensAfterRange(e),n=this._getProcessedPreviousLineTokens(e);return{beforeRangeProcessedTokens:t,afterRangeProcessedTokens:i,previousLineProcessedTokens:n}}_getProcessedTokensBeforeRange(e){this.model.tokenization.forceTokenization(e.startLineNumber);const t=this.model.tokenization.getLineTokens(e.startLineNumber),i=SZ(t,e.startColumn-1);let n;if(Ste(this.model,e.getStartPosition())){const l=e.startColumn-1-i.firstCharOffset,r=i.firstCharOffset,a=r+l;n=t.sliceAndInflate(r,a,0)}else{const l=e.startColumn-1;n=t.sliceAndInflate(0,l,0)}return this.indentationLineProcessor.getProcessedTokens(n)}_getProcessedTokensAfterRange(e){const t=e.isEmpty()?e.getStartPosition():e.getEndPosition();this.model.tokenization.forceTokenization(t.lineNumber);const i=this.model.tokenization.getLineTokens(t.lineNumber),n=SZ(i,t.column-1),o=t.column-1-n.firstCharOffset,l=n.firstCharOffset+o,r=n.firstCharOffset+n.getLineLength(),a=i.sliceAndInflate(l,r,0);return this.indentationLineProcessor.getProcessedTokens(a)}_getProcessedPreviousLineTokens(e){const t=m=>{this.model.tokenization.forceTokenization(m);const p=this.model.tokenization.getLineTokens(m),g=this.model.getLineMaxColumn(m)-1;return SZ(p,g)};this.model.tokenization.forceTokenization(e.startLineNumber);const i=this.model.tokenization.getLineTokens(e.startLineNumber),n=SZ(i,e.startColumn-1),o=ll.createEmpty("",n.languageIdCodec),l=e.startLineNumber-1;if(l===0||!(n.firstCharOffset===0))return o;const d=t(l);if(!(n.languageId===d.languageId))return o;const h=d.toIViewLineTokens();return this.indentationLineProcessor.getProcessedTokens(h)}}class ffe{constructor(e,t){this.model=e,this.languageConfigurationService=t}getProcessedLine(e,t){var l,r;const i=(a,d)=>{const c=wn(a);return d+a.substring(c.length)};(r=(l=this.model.tokenization).forceTokenization)==null||r.call(l,e);const n=this.model.tokenization.getLineTokens(e);let o=this.getProcessedTokens(n).getLineContent();return t!==void 0&&(o=i(o,t)),o}getProcessedTokens(e){const t=a=>a===2||a===3||a===1,i=e.getLanguageId(0),o=this.languageConfigurationService.getLanguageConfiguration(i).bracketsNew.getBracketRegExp({global:!0}),l=[];return e.forEach(a=>{const d=e.getStandardTokenType(a);let c=e.getTokenText(a);t(d)&&(c=c.replace(o,""));const h=e.getMetadata(a);l.push({text:c,metadata:h})}),ll.createFromTextAndMetadata(l,e.languageIdCodec)}}function Ste(s,e){s.tokenization.forceTokenization(e.lineNumber);const t=s.tokenization.getLineTokens(e.lineNumber),i=SZ(t,e.column-1),n=i.firstCharOffset===0,o=t.getLanguageId(0)===i.languageId;return!n&&!o}function MW(s,e,t,i){e.tokenization.forceTokenization(t.startLineNumber);const n=e.getLanguageIdAtPosition(t.startLineNumber,t.startColumn),o=i.getLanguageConfiguration(n);if(!o)return null;const r=new Rte(e,i).getProcessedTokenContextAroundRange(t),a=r.previousLineProcessedTokens.getLineContent(),d=r.beforeRangeProcessedTokens.getLineContent(),c=r.afterRangeProcessedTokens.getLineContent(),h=o.onEnter(s,a,d,c);if(!h)return null;const u=h.indentAction;let m=h.appendText;const p=h.removeText||0;m?u===fo.Indent&&(m=" "+m):u===fo.Indent||u===fo.IndentOutdent?m=" ":m="";let g=qge(e,t.startLineNumber,t.startColumn);return p&&(g=g.substring(0,g.length-p)),{indentAction:u,appendText:m,removeText:p,indentation:g}}var h4e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},u4e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},FD;const P3=Object.create(null);function Gf(s,e){if(e<=0)return"";P3[s]||(P3[s]=["",s]);const t=P3[s];for(let i=t.length;i<=e;i++)t[i]=t[i-1]+s;return t[e]}let $c=FD=class{static unshiftIndent(e,t,i,n,o){const l=ko.visibleColumnFromColumn(e,t,i);if(o){const r=Gf(" ",n),d=ko.prevIndentTabStop(l,n)/n;return Gf(r,d)}else{const r=" ",d=ko.prevRenderTabStop(l,i)/i;return Gf(r,d)}}static shiftIndent(e,t,i,n,o){const l=ko.visibleColumnFromColumn(e,t,i);if(o){const r=Gf(" ",n),d=ko.nextIndentTabStop(l,n)/n;return Gf(r,d)}else{const r=" ",d=ko.nextRenderTabStop(l,i)/i;return Gf(r,d)}}constructor(e,t,i){this._languageConfigurationService=i,this._opts=t,this._selection=e,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(e,t,i){this._useLastEditRangeForCursorEndPosition?e.addTrackedEditOperation(t,i):e.addEditOperation(t,i)}getEditOperations(e,t){const i=this._selection.startLineNumber;let n=this._selection.endLineNumber;this._selection.endColumn===1&&i!==n&&(n=n-1);const{tabSize:o,indentSize:l,insertSpaces:r}=this._opts,a=i===n;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(e.getLineContent(i))&&(this._useLastEditRangeForCursorEndPosition=!0);let d=0,c=0;for(let h=i;h<=n;h++,d=c){c=0;const u=e.getLineContent(h);let m=Wr(u);if(this._opts.isUnshift&&(u.length===0||m===0)||!a&&!this._opts.isUnshift&&u.length===0)continue;if(m===-1&&(m=u.length),h>1&&ko.visibleColumnFromColumn(u,m+1,o)%l!==0&&e.tokenization.isCheapToTokenize(h-1)){const b=MW(this._opts.autoIndent,e,new v(h-1,e.getLineMaxColumn(h-1),h-1,e.getLineMaxColumn(h-1)),this._languageConfigurationService);if(b){if(c=d,b.appendText)for(let f=0,Z=b.appendText.length;f<Z&&c<l&&b.appendText.charCodeAt(f)===32;f++)c++;b.removeText&&(c=Math.max(0,c-b.removeText));for(let f=0;f<c&&!(m===0||u.charCodeAt(m-1)!==32);f++)m--}}if(this._opts.isUnshift&&m===0)continue;let p;this._opts.isUnshift?p=FD.unshiftIndent(u,m+1,o,l,r):p=FD.shiftIndent(u,m+1,o,l,r),this._addEditOperation(t,new v(h,1,h,m+1),p),h===i&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn<=m+1)}}else{!this._opts.isUnshift&&this._selection.isEmpty()&&e.getLineLength(i)===0&&(this._useLastEditRangeForCursorEndPosition=!0);const d=r?Gf(" ",l):" ";for(let c=i;c<=n;c++){const h=e.getLineContent(c);let u=Wr(h);if(!(this._opts.isUnshift&&(h.length===0||u===0))&&!(!a&&!this._opts.isUnshift&&h.length===0)&&(u===-1&&(u=h.length),!(this._opts.isUnshift&&u===0)))if(this._opts.isUnshift){u=Math.min(u,l);for(let m=0;m<u;m++)if(h.charCodeAt(m)===9){u=m+1;break}this._addEditOperation(t,new v(c,1,c,u+1),"")}else this._addEditOperation(t,new v(c,1,c,1),d),c===i&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn===1)}}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){if(this._useLastEditRangeForCursorEndPosition){const n=t.getInverseEditOperations()[0];return new dt(n.range.endLineNumber,n.range.endColumn,n.range.endLineNumber,n.range.endColumn)}const i=t.getTrackedSelection(this._selectionId);if(this._selectionStartColumnStaysPut){const n=this._selection.startColumn;return i.startColumn<=n?i:i.getDirection()===0?new dt(i.startLineNumber,n,i.endLineNumber,i.endColumn):new dt(i.endLineNumber,i.endColumn,i.startLineNumber,n)}return i}};$c=FD=h4e([u4e(2,Qs)],$c);class m4e{constructor(e,t,i){this._range=e,this._charBeforeSelection=t,this._charAfterSelection=i}getEditOperations(e,t){t.addTrackedEditOperation(new v(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new v(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}computeCursorState(e,t){const i=t.getInverseEditOperations(),n=i[0].range,o=i[1].range;return new dt(n.endLineNumber,n.endColumn,o.endLineNumber,o.endColumn-this._charAfterSelection.length)}}class p4e{constructor(e,t,i){this._position=e,this._text=t,this._charAfter=i}getEditOperations(e,t){t.addTrackedEditOperation(new v(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column),this._text+this._charAfter)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return new dt(n.endLineNumber,n.startColumn,n.endLineNumber,n.endColumn-this._charAfter.length)}}function g4e(s,e,t){const i=s.tokenization.getLanguageIdAtPosition(e,0);if(e>1){let n,o=-1;for(n=e-1;n>=1;n--){if(s.tokenization.getLanguageIdAtPosition(n,0)!==i)return o;const l=s.getLineContent(n);if(t.shouldIgnore(n)||/^\s+$/.test(l)||l===""){o=n;continue}return n}}return-1}function _M(s,e,t,i=!0,n){if(s<4)return null;const o=n.getLanguageConfiguration(e.tokenization.getLanguageId()).indentRulesSupport;if(!o)return null;const l=new Nte(e,o,n);if(t<=1)return{indentation:"",action:null};for(let a=t-1;a>0&&e.getLineContent(a)==="";a--)if(a===1)return{indentation:"",action:null};const r=g4e(e,t,l);if(r<0)return null;if(r<1)return{indentation:"",action:null};if(l.shouldIncrease(r)||l.shouldIndentNextLine(r)){const a=e.getLineContent(r);return{indentation:wn(a),action:fo.Indent,line:r}}else if(l.shouldDecrease(r)){const a=e.getLineContent(r);return{indentation:wn(a),action:null,line:r}}else{if(r===1)return{indentation:wn(e.getLineContent(r)),action:null,line:r};const a=r-1,d=o.getIndentMetadata(e.getLineContent(a));if(!(d&3)&&d&4){let c=0;for(let h=a-1;h>0;h--)if(!l.shouldIndentNextLine(h)){c=h;break}return{indentation:wn(e.getLineContent(c+1)),action:null,line:c+1}}if(i)return{indentation:wn(e.getLineContent(r)),action:null,line:r};for(let c=r;c>0;c--){if(l.shouldIncrease(c))return{indentation:wn(e.getLineContent(c)),action:fo.Indent,line:c};if(l.shouldIndentNextLine(c)){let h=0;for(let u=c-1;u>0;u--)if(!l.shouldIndentNextLine(c)){h=u;break}return{indentation:wn(e.getLineContent(h+1)),action:null,line:h+1}}else if(l.shouldDecrease(c))return{indentation:wn(e.getLineContent(c)),action:null,line:c}}return{indentation:wn(e.getLineContent(1)),action:null,line:1}}}function yC(s,e,t,i,n,o){if(s<4)return null;const l=o.getLanguageConfiguration(t);if(!l)return null;const r=o.getLanguageConfiguration(t).indentRulesSupport;if(!r)return null;const a=new Nte(e,r,o),d=_M(s,e,i,void 0,o);if(d){const c=d.line;if(c!==void 0){let h=!0;for(let u=c;u<i-1;u++)if(!/^\s*$/.test(e.getLineContent(u))){h=!1;break}if(h){const u=l.onEnter(s,"",e.getLineContent(c),"");if(u){let m=wn(e.getLineContent(c));return u.removeText&&(m=m.substring(0,m.length-u.removeText)),u.indentAction===fo.Indent||u.indentAction===fo.IndentOutdent?m=n.shiftIndent(m):u.indentAction===fo.Outdent&&(m=n.unshiftIndent(m)),a.shouldDecrease(i)&&(m=n.unshiftIndent(m)),u.appendText&&(m+=u.appendText),wn(m)}}}return a.shouldDecrease(i)?d.action===fo.Indent?d.indentation:n.unshiftIndent(d.indentation):d.action===fo.Indent?n.shiftIndent(d.indentation):d.indentation}return null}function b4e(s,e,t,i,n){if(s<4)return null;const o=e.getLanguageIdAtPosition(t.startLineNumber,t.startColumn),l=n.getLanguageConfiguration(o).indentRulesSupport;if(!l)return null;e.tokenization.forceTokenization(t.startLineNumber);const a=new Rte(e,n).getProcessedTokenContextAroundRange(t),d=a.afterRangeProcessedTokens,c=a.beforeRangeProcessedTokens,h=wn(c.getLineContent()),u=f4e(e,t.startLineNumber,c),m=Ste(e,t.getStartPosition()),p=e.getLineContent(t.startLineNumber),g=wn(p),b=_M(s,u,t.startLineNumber+1,void 0,n);if(!b){const Z=m?g:h;return{beforeEnter:Z,afterEnter:Z}}let f=m?g:b.indentation;return b.action===fo.Indent&&(f=i.shiftIndent(f)),l.shouldDecrease(d.getLineContent())&&(f=i.unshiftIndent(f)),{beforeEnter:m?g:h,afterEnter:f}}function U4e(s,e,t,i,n,o){const l=s.autoIndent;if(l<4||Ste(e,t.getStartPosition()))return null;const a=e.getLanguageIdAtPosition(t.startLineNumber,t.startColumn),d=o.getLanguageConfiguration(a).indentRulesSupport;if(!d)return null;const h=new Rte(e,o).getProcessedTokenContextAroundRange(t),u=h.beforeRangeProcessedTokens.getLineContent(),m=h.afterRangeProcessedTokens.getLineContent(),p=u+m,g=u+i+m;if(!d.shouldDecrease(p)&&d.shouldDecrease(g)){const f=_M(l,e,t.startLineNumber,!1,o);if(!f)return null;let Z=f.indentation;return f.action!==fo.Indent&&(Z=n.unshiftIndent(Z)),Z}const b=t.startLineNumber-1;if(b>0){const f=e.getLineContent(b);if(d.shouldIndentNextLine(f)&&d.shouldIncrease(g)){const Z=_M(l,e,t.startLineNumber,!1,o),A=Z==null?void 0:Z.indentation;if(A!==void 0){const N=e.getLineContent(t.startLineNumber),W=wn(N),R=n.shiftIndent(A)===W,M=/^\s*$/.test(p),w=s.autoClosingPairs.autoClosingPairsOpenByEnd.get(i),G=w&&w.length>0&&M;if(R&&G)return A}}}return null}function Ffe(s,e,t){const i=t.getLanguageConfiguration(s.getLanguageId()).indentRulesSupport;return!i||e<1||e>s.getLineCount()?null:i.getIndentMetadata(s.getLineContent(e))}function f4e(s,e,t){return{tokenization:{getLineTokens:n=>n===e?t:s.tokenization.getLineTokens(n),getLanguageId:()=>s.getLanguageId(),getLanguageIdAtPosition:(n,o)=>s.getLanguageIdAtPosition(n,o)},getLineContent:n=>n===e?t.getLineContent():s.getLineContent(n)}}class F4e{static getEdits(e,t,i,n,o){if(!o&&this._isAutoIndentType(e,t,i)){const l=[];for(const a of i){const d=this._findActualIndentationForSelection(e,t,a,n);if(d===null)return;l.push({selection:a,indentation:d})}const r=m4.getAutoClosingPairClose(e,t,i,n,!1);return this._getIndentationAndAutoClosingPairEdits(e,t,l,n,r)}}static _isAutoIndentType(e,t,i){if(e.autoIndent<4)return!1;for(let n=0,o=i.length;n<o;n++)if(!t.tokenization.isCheapToTokenize(i[n].getEndPosition().lineNumber))return!1;return!0}static _findActualIndentationForSelection(e,t,i,n){const o=U4e(e,t,i,n,{shiftIndent:r=>Qte(e,r),unshiftIndent:r=>ax(e,r)},e.languageConfigurationService);if(o===null)return null;const l=qge(t,i.startLineNumber,i.startColumn);return o===e.normalizeIndentation(l)?null:o}static _getIndentationAndAutoClosingPairEdits(e,t,i,n,o){const l=i.map(({selection:a,indentation:d})=>{if(o!==null){const c=this._getEditFromIndentationAndSelection(e,t,d,a,n,!1);return new w4e(c,a,n,o)}else{const c=this._getEditFromIndentationAndSelection(e,t,d,a,n,!0);return fF(c.range,c.text,!1)}}),r={shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1};return new va(4,l,r)}static _getEditFromIndentationAndSelection(e,t,i,n,o,l=!0){const r=n.startLineNumber,a=t.getLineFirstNonWhitespaceColumn(r);let d=e.normalizeIndentation(i);if(a!==0){const h=t.getLineContent(r);d+=h.substring(a-1,n.startColumn-1)}return d+=l?o:"",{range:new v(r,1,n.endLineNumber,n.endColumn),text:d}}}class Z4e{static getEdits(e,t,i,n,o,l){if(Zfe(t,i,n,o,l))return this._runAutoClosingOvertype(e,n,l)}static _runAutoClosingOvertype(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const a=t[o].getPosition(),d=new v(a.lineNumber,a.column,a.lineNumber,a.column+1);n[o]=new Bl(d,i)}return new va(4,n,{shouldPushStackElementBefore:iz(e,4),shouldPushStackElementAfter:!1})}}class A4e{static getEdits(e,t,i,n,o){if(Zfe(e,t,i,n,o)){const l=i.map(r=>new Bl(new v(r.positionLineNumber,r.positionColumn,r.positionLineNumber,r.positionColumn+1),"",!1));return new va(4,l,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}}}class m4{static getEdits(e,t,i,n,o,l){if(!l){const r=this.getAutoClosingPairClose(e,t,i,n,o);if(r!==null)return this._runAutoClosingOpenCharType(i,n,o,r)}}static _runAutoClosingOpenCharType(e,t,i,n){const o=[];for(let l=0,r=e.length;l<r;l++){const a=e[l];o[l]=new C4e(a,t,!i,n)}return new va(4,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}static getAutoClosingPairClose(e,t,i,n,o){for(const p of i)if(!p.isEmpty())return null;const l=i.map(p=>{const g=p.getPosition();return o?{lineNumber:g.lineNumber,beforeColumn:g.column-n.length,afterColumn:g.column}:{lineNumber:g.lineNumber,beforeColumn:g.column,afterColumn:g.column}}),r=this._findAutoClosingPairOpen(e,t,l.map(p=>new oe(p.lineNumber,p.beforeColumn)),n);if(!r)return null;let a,d;if(sf(n)?(a=e.autoClosingQuotes,d=e.shouldAutoCloseBefore.quote):(e.blockCommentStartToken?r.open.includes(e.blockCommentStartToken):!1)?(a=e.autoClosingComments,d=e.shouldAutoCloseBefore.comment):(a=e.autoClosingBrackets,d=e.shouldAutoCloseBefore.bracket),a==="never")return null;const h=this._findContainedAutoClosingPair(e,r),u=h?h.close:"";let m=!0;for(const p of l){const{lineNumber:g,beforeColumn:b,afterColumn:f}=p,Z=t.getLineContent(g),A=Z.substring(0,b-1),N=Z.substring(f-1);if(N.startsWith(u)||(m=!1),N.length>0){const M=N.charAt(0);if(!this._isBeforeClosingBrace(e,N)&&!d(M))return null}if(r.open.length===1&&(n==="'"||n==='"')&&a!=="always"){const M=Kc(e.wordSeparators,[]);if(A.length>0){const w=A.charCodeAt(A.length-1);if(M.get(w)===0)return null}}if(!t.tokenization.isCheapToTokenize(g))return null;t.tokenization.forceTokenization(g);const W=t.tokenization.getLineTokens(g),Q=SZ(W,b-1);if(!r.shouldAutoClose(Q,b-Q.firstCharOffset))return null;const R=r.findNeutralCharacter();if(R){const M=t.tokenization.getTokenTypeIfInsertingCharacter(g,b,R);if(!r.isOK(M))return null}}return m?r.close.substring(0,r.close.length-u.length):r.close}static _findContainedAutoClosingPair(e,t){if(t.open.length<=1)return null;const i=t.close.charAt(t.close.length-1),n=e.autoClosingPairs.autoClosingPairsCloseByEnd.get(i)||[];let o=null;for(const l of n)l.open!==t.open&&t.open.includes(l.open)&&t.close.endsWith(l.close)&&(!o||l.open.length>o.open.length)&&(o=l);return o}static _findAutoClosingPairOpen(e,t,i,n){const o=e.autoClosingPairs.autoClosingPairsOpenByEnd.get(n);if(!o)return null;let l=null;for(const r of o)if(l===null||r.open.length>l.open.length){let a=!0;for(const d of i)if(t.getValueInRange(new v(d.lineNumber,d.column-r.open.length+1,d.lineNumber,d.column))+n!==r.open){a=!1;break}a&&(l=r)}return l}static _isBeforeClosingBrace(e,t){const i=t.charAt(0),n=e.autoClosingPairs.autoClosingPairsOpenByStart.get(i)||[],o=e.autoClosingPairs.autoClosingPairsCloseByStart.get(i)||[],l=n.some(a=>t.startsWith(a.open)),r=o.some(a=>t.startsWith(a.close));return!l&&r}}class N4e{static getEdits(e,t,i,n,o){if(!o&&this._isSurroundSelectionType(e,t,i,n))return this._runSurroundSelectionType(e,i,n)}static _runSurroundSelectionType(e,t,i){const n=[];for(let o=0,l=t.length;o<l;o++){const r=t[o],a=e.surroundingPairs[i];n[o]=new m4e(r,i,a)}return new va(0,n,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _isSurroundSelectionType(e,t,i,n){if(!Afe(e,n)||!e.surroundingPairs.hasOwnProperty(n))return!1;const o=sf(n);for(const l of i){if(l.isEmpty())return!1;let r=!0;for(let a=l.startLineNumber;a<=l.endLineNumber;a++){const d=t.getLineContent(a),c=a===l.startLineNumber?l.startColumn-1:0,h=a===l.endLineNumber?l.endColumn-1:d.length,u=d.substring(c,h);if(/[^ \t]/.test(u)){r=!1;break}}if(r)return!1;if(o&&l.startLineNumber===l.endLineNumber&&l.startColumn+1===l.endColumn){const a=t.getValueInRange(l);if(sf(a))return!1}}return!0}}class R4e{static getEdits(e,t,i,n,o,l){if(!l&&this._isTypeInterceptorElectricChar(t,i,n)){const r=this._typeInterceptorElectricChar(e,t,i,n[0],o);if(r)return r}}static _isTypeInterceptorElectricChar(e,t,i){return!!(i.length===1&&t.tokenization.isCheapToTokenize(i[0].getEndPosition().lineNumber))}static _typeInterceptorElectricChar(e,t,i,n,o){if(!t.electricChars.hasOwnProperty(o)||!n.isEmpty())return null;const l=n.getPosition();i.tokenization.forceTokenization(l.lineNumber);const r=i.tokenization.getLineTokens(l.lineNumber);let a;try{a=t.onElectricCharacter(o,r,l.column)}catch(d){return vt(d),null}if(!a)return null;if(a.matchOpenBracket){const d=(r.getLineContent()+o).lastIndexOf(a.matchOpenBracket)+1,c=i.bracketPairs.findMatchingBracketUp(a.matchOpenBracket,{lineNumber:l.lineNumber,column:d},500);if(c){if(c.startLineNumber===l.lineNumber)return null;const h=i.getLineContent(c.startLineNumber),u=wn(h),m=t.normalizeIndentation(u),p=i.getLineContent(l.lineNumber),g=i.getLineFirstNonWhitespaceColumn(l.lineNumber)||l.column,b=p.substring(g-1,l.column-1),f=m+b+o,Z=new v(l.lineNumber,1,l.lineNumber,l.column),A=new Bl(Z,f);return new va(Vte(f,e),[A],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!0})}}return null}}class S4e{static getEdits(e,t,i){const n=[];for(let l=0,r=t.length;l<r;l++)n[l]=new Bl(t[l],i);const o=Vte(i,e);return new va(o,n,{shouldPushStackElementBefore:iz(e,o),shouldPushStackElementAfter:!1})}}class tz{static getEdits(e,t,i,n,o){if(!o&&n===`
- `){const l=[];for(let r=0,a=i.length;r<a;r++)l[r]=this._enter(e,t,!1,i[r]);return new va(4,l,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}}static _enter(e,t,i,n){if(e.autoIndent===0)return fF(n,`
- `,i);if(!t.tokenization.isCheapToTokenize(n.getStartPosition().lineNumber)||e.autoIndent===1){const a=t.getLineContent(n.startLineNumber),d=wn(a).substring(0,n.startColumn-1);return fF(n,`
- `+e.normalizeIndentation(d),i)}const o=MW(e.autoIndent,t,n,e.languageConfigurationService);if(o){if(o.indentAction===fo.None)return fF(n,`
- `+e.normalizeIndentation(o.indentation+o.appendText),i);if(o.indentAction===fo.Indent)return fF(n,`
- `+e.normalizeIndentation(o.indentation+o.appendText),i);if(o.indentAction===fo.IndentOutdent){const a=e.normalizeIndentation(o.indentation),d=e.normalizeIndentation(o.indentation+o.appendText),c=`
- `+d+`
- `+a;return i?new fD(n,c,!0):new lx(n,c,-1,d.length-a.length,!0)}else if(o.indentAction===fo.Outdent){const a=ax(e,o.indentation);return fF(n,`
- `+e.normalizeIndentation(a+o.appendText),i)}}const l=t.getLineContent(n.startLineNumber),r=wn(l).substring(0,n.startColumn-1);if(e.autoIndent>=4){const a=b4e(e.autoIndent,t,n,{unshiftIndent:d=>ax(e,d),shiftIndent:d=>Qte(e,d),normalizeIndentation:d=>e.normalizeIndentation(d)},e.languageConfigurationService);if(a){let d=e.visibleColumnFromColumn(t,n.getEndPosition());const c=n.endColumn,h=t.getLineContent(n.endLineNumber),u=Wr(h);if(u>=0?n=n.setEndPosition(n.endLineNumber,Math.max(n.endColumn,u+1)):n=n.setEndPosition(n.endLineNumber,t.getLineMaxColumn(n.endLineNumber)),i)return new fD(n,`
- `+e.normalizeIndentation(a.afterEnter),!0);{let m=0;return c<=u+1&&(e.insertSpaces||(d=Math.ceil(d/e.indentSize)),m=Math.min(d+1-e.normalizeIndentation(a.afterEnter).length-1,0)),new lx(n,`
- `+e.normalizeIndentation(a.afterEnter),0,m,!0)}}}return fF(n,`
- `+e.normalizeIndentation(r),i)}static lineInsertBefore(e,t,i){if(t===null||i===null)return[];const n=[];for(let o=0,l=i.length;o<l;o++){let r=i[o].positionLineNumber;if(r===1)n[o]=new fD(new v(1,1,1,1),`
- `);else{r--;const a=t.getLineMaxColumn(r);n[o]=this._enter(e,t,!1,new v(r,a,r,a))}}return n}static lineInsertAfter(e,t,i){if(t===null||i===null)return[];const n=[];for(let o=0,l=i.length;o<l;o++){const r=i[o].positionLineNumber,a=t.getLineMaxColumn(r);n[o]=this._enter(e,t,!1,new v(r,a,r,a))}return n}static lineBreakInsert(e,t,i){const n=[];for(let o=0,l=i.length;o<l;o++)n[o]=this._enter(e,t,!0,i[o]);return n}}class W4e{static getEdits(e,t,i,n,o,l){const r=this._distributePasteToCursors(e,i,n,o,l);return r?(i=i.sort(v.compareRangesUsingStarts),this._distributedPaste(e,t,i,r)):this._simplePaste(e,t,i,n,o)}static _distributePasteToCursors(e,t,i,n,o){if(n||t.length===1)return null;if(o&&o.length===t.length)return o;if(e.multiCursorPaste==="spread"){i.charCodeAt(i.length-1)===10&&(i=i.substring(0,i.length-1)),i.charCodeAt(i.length-1)===13&&(i=i.substring(0,i.length-1));const l=Lp(i);if(l.length===t.length)return l}return null}static _distributedPaste(e,t,i,n){const o=[];for(let l=0,r=i.length;l<r;l++)o[l]=new Bl(i[l],n[l]);return new va(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _simplePaste(e,t,i,n,o){const l=[];for(let r=0,a=i.length;r<a;r++){const d=i[r],c=d.getPosition();if(o&&!d.isEmpty()&&(o=!1),o&&n.indexOf(`
- `)!==n.length-1&&(o=!1),o){const h=new v(c.lineNumber,1,c.lineNumber,1);l[r]=new Ate(h,n,d,!0)}else l[r]=new Bl(d,n)}return new va(0,l,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}class V4e{static getEdits(e,t,i,n,o,l,r,a){const d=n.map(c=>this._compositionType(i,c,o,l,r,a));return new va(4,d,{shouldPushStackElementBefore:iz(e,4),shouldPushStackElementAfter:!1})}static _compositionType(e,t,i,n,o,l){if(!t.isEmpty())return null;const r=t.getPosition(),a=Math.max(1,r.column-n),d=Math.min(e.getLineMaxColumn(r.lineNumber),r.column+o),c=new v(r.lineNumber,a,r.lineNumber,d);return e.getValueInRange(c)===i&&l===0?null:new lx(c,i,0,l)}}class Q4e{static getEdits(e,t,i){const n=[];for(let l=0,r=t.length;l<r;l++)n[l]=new Bl(t[l],i);const o=Vte(i,e);return new va(o,n,{shouldPushStackElementBefore:iz(e,o),shouldPushStackElementAfter:!1})}}class y4e{static getCommands(e,t,i){const n=[];for(let o=0,l=i.length;o<l;o++){const r=i[o];if(r.isEmpty()){const a=t.getLineContent(r.startLineNumber);if(/^\s*$/.test(a)&&t.tokenization.isCheapToTokenize(r.startLineNumber)){let d=this._goodIndentForLine(e,t,r.startLineNumber);d=d||" ";const c=e.normalizeIndentation(d);if(!a.startsWith(c)){n[o]=new Bl(new v(r.startLineNumber,1,r.startLineNumber,a.length+1),c,!0);continue}}n[o]=this._replaceJumpToNextIndent(e,t,r,!0)}else{if(r.startLineNumber===r.endLineNumber){const a=t.getLineMaxColumn(r.startLineNumber);if(r.startColumn!==1||r.endColumn!==a){n[o]=this._replaceJumpToNextIndent(e,t,r,!1);continue}}n[o]=new $c(r,{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService)}}return n}static _goodIndentForLine(e,t,i){let n=null,o="";const l=_M(e.autoIndent,t,i,!1,e.languageConfigurationService);if(l)n=l.action,o=l.indentation;else if(i>1){let r;for(r=i-1;r>=1;r--){const c=t.getLineContent(r);if(Xu(c)>=0)break}if(r<1)return null;const a=t.getLineMaxColumn(r),d=MW(e.autoIndent,t,new v(r,a,r,a),e.languageConfigurationService);d&&(o=d.indentation+d.appendText)}return n&&(n===fo.Indent&&(o=Qte(e,o)),n===fo.Outdent&&(o=ax(e,o)),o=e.normalizeIndentation(o)),o||null}static _replaceJumpToNextIndent(e,t,i,n){let o="";const l=i.getStartPosition();if(e.insertSpaces){const r=e.visibleColumnFromColumn(t,l),a=e.indentSize,d=a-r%a;for(let c=0;c<d;c++)o+=" "}else o=" ";return new Bl(i,o,n)}}class Wte extends lx{constructor(e,t,i,n,o,l){super(e,t,i,n),this._openCharacter=o,this._closeCharacter=l,this.closeCharacterRange=null,this.enclosingRange=null}_computeCursorStateWithRange(e,t,i){return this.closeCharacterRange=new v(t.startLineNumber,t.endColumn-this._closeCharacter.length,t.endLineNumber,t.endColumn),this.enclosingRange=new v(t.startLineNumber,t.endColumn-this._openCharacter.length-this._closeCharacter.length,t.endLineNumber,t.endColumn),super.computeCursorState(e,i)}}class C4e extends Wte{constructor(e,t,i,n){const o=(i?t:"")+n,l=0,r=-n.length;super(e,o,l,r,t,n)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return this._computeCursorStateWithRange(e,n,t)}}class w4e extends Wte{constructor(e,t,i,n){const o=i+n,l=0,r=i.length;super(t,o,l,r,i,n),this._autoIndentationEdit=e,this._autoClosingEdit={range:t,text:o}}getEditOperations(e,t){t.addTrackedEditOperation(this._autoIndentationEdit.range,this._autoIndentationEdit.text),t.addTrackedEditOperation(this._autoClosingEdit.range,this._autoClosingEdit.text)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(i.length!==2)throw new Error("There should be two inverse edit operations!");const n=i[0].range,o=i[1].range,l=n.plusRange(o);return this._computeCursorStateWithRange(e,l,t)}}function Vte(s,e){return s===" "?e===5||e===6?6:5:4}function iz(s,e){return gae(s)&&!gae(e)?!0:s===5?!1:pae(s)!==pae(e)}function pae(s){return s===6||s===5?"space":s}function gae(s){return s===4||s===5||s===6}function Zfe(s,e,t,i,n){if(s.autoClosingOvertype==="never"||!s.autoClosingPairs.autoClosingPairsCloseSingleChar.has(n))return!1;for(let o=0,l=t.length;o<l;o++){const r=t[o];if(!r.isEmpty())return!1;const a=r.getPosition(),d=e.getLineContent(a.lineNumber);if(d.charAt(a.column-1)!==n)return!1;const h=sf(n);if((a.column>2?d.charCodeAt(a.column-2):0)===92&&h)return!1;if(s.autoClosingOvertype==="auto"){let m=!1;for(let p=0,g=i.length;p<g;p++){const b=i[p];if(a.lineNumber===b.startLineNumber&&a.column===b.startColumn){m=!0;break}}if(!m)return!1}}return!0}function fF(s,e,t){return t?new fD(s,e,!0):new Bl(s,e,!0)}function Qte(s,e,t){return t=t||1,$c.shiftIndent(e,e.length+t,s.tabSize,s.indentSize,s.insertSpaces)}function ax(s,e,t){return t=t||1,$c.unshiftIndent(e,e.length+t,s.tabSize,s.indentSize,s.insertSpaces)}function Afe(s,e){return sf(e)?s.autoSurround==="quotes"||s.autoSurround==="languageDefined":s.autoSurround==="brackets"||s.autoSurround==="languageDefined"}class zb{static indent(e,t,i){if(t===null||i===null)return[];const n=[];for(let o=0,l=i.length;o<l;o++)n[o]=new $c(i[o],{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService);return n}static outdent(e,t,i){const n=[];for(let o=0,l=i.length;o<l;o++)n[o]=new $c(i[o],{isUnshift:!0,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService);return n}static paste(e,t,i,n,o,l){return W4e.getEdits(e,t,i,n,o,l)}static tab(e,t,i){return y4e.getCommands(e,t,i)}static compositionType(e,t,i,n,o,l,r,a){return V4e.getEdits(e,t,i,n,o,l,r,a)}static compositionEndWithInterceptors(e,t,i,n,o,l){if(!n)return null;let r=null;for(const u of n)if(r===null)r=u.insertedText;else if(r!==u.insertedText)return null;if(!r||r.length!==1)return null;const a=r;let d=!1;for(const u of n)if(u.deletedText.length!==0){d=!0;break}if(d){if(!Afe(t,a)||!t.surroundingPairs.hasOwnProperty(a))return null;const u=sf(a);for(const g of n)if(g.deletedSelectionStart!==0||g.deletedSelectionEnd!==g.deletedText.length||/^[ \t]+$/.test(g.deletedText)||u&&sf(g.deletedText))return null;const m=[];for(const g of o){if(!g.isEmpty())return null;m.push(g.getPosition())}if(m.length!==n.length)return null;const p=[];for(let g=0,b=m.length;g<b;g++)p.push(new p4e(m[g],n[g].deletedText,t.surroundingPairs[a]));return new va(4,p,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const c=A4e.getEdits(t,i,o,l,a);if(c!==void 0)return c;const h=m4.getEdits(t,i,o,a,!0,!1);return h!==void 0?h:null}static typeWithInterceptors(e,t,i,n,o,l,r){const a=tz.getEdits(i,n,o,r,e);if(a!==void 0)return a;const d=F4e.getEdits(i,n,o,r,e);if(d!==void 0)return d;const c=Z4e.getEdits(t,i,n,o,l,r);if(c!==void 0)return c;const h=m4.getEdits(i,n,o,r,!1,e);if(h!==void 0)return h;const u=N4e.getEdits(i,n,o,r,e);if(u!==void 0)return u;const m=R4e.getEdits(t,i,n,o,r,e);return m!==void 0?m:S4e.getEdits(t,o,r)}static typeWithoutInterceptors(e,t,i,n,o){return Q4e.getEdits(e,n,o)}}class M4e{constructor(e,t,i,n,o,l){this.deletedText=e,this.deletedSelectionStart=t,this.deletedSelectionEnd=i,this.insertedText=n,this.insertedSelectionStart=o,this.insertedSelectionEnd=l}}var H;(function(s){s.editorSimpleInput=new Ke("editorSimpleInput",!1,!0),s.editorTextFocus=new Ke("editorTextFocus",!1,U("editorTextFocus","Whether the editor text has focus (cursor is blinking)")),s.focus=new Ke("editorFocus",!1,U("editorFocus","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")),s.textInputFocus=new Ke("textInputFocus",!1,U("textInputFocus","Whether an editor or a rich text input has focus (cursor is blinking)")),s.readOnly=new Ke("editorReadonly",!1,U("editorReadonly","Whether the editor is read-only")),s.inDiffEditor=new Ke("inDiffEditor",!1,U("inDiffEditor","Whether the context is a diff editor")),s.isEmbeddedDiffEditor=new Ke("isEmbeddedDiffEditor",!1,U("isEmbeddedDiffEditor","Whether the context is an embedded diff editor")),s.inMultiDiffEditor=new Ke("inMultiDiffEditor",!1,U("inMultiDiffEditor","Whether the context is a multi diff editor")),s.multiDiffEditorAllCollapsed=new Ke("multiDiffEditorAllCollapsed",void 0,U("multiDiffEditorAllCollapsed","Whether all files in multi diff editor are collapsed")),s.hasChanges=new Ke("diffEditorHasChanges",!1,U("diffEditorHasChanges","Whether the diff editor has changes")),s.comparingMovedCode=new Ke("comparingMovedCode",!1,U("comparingMovedCode","Whether a moved code block is selected for comparison")),s.accessibleDiffViewerVisible=new Ke("accessibleDiffViewerVisible",!1,U("accessibleDiffViewerVisible","Whether the accessible diff viewer is visible")),s.diffEditorRenderSideBySideInlineBreakpointReached=new Ke("diffEditorRenderSideBySideInlineBreakpointReached",!1,U("diffEditorRenderSideBySideInlineBreakpointReached","Whether the diff editor render side by side inline breakpoint is reached")),s.diffEditorInlineMode=new Ke("diffEditorInlineMode",!1,U("diffEditorInlineMode","Whether inline mode is active")),s.diffEditorOriginalWritable=new Ke("diffEditorOriginalWritable",!1,U("diffEditorOriginalWritable","Whether modified is writable in the diff editor")),s.diffEditorModifiedWritable=new Ke("diffEditorModifiedWritable",!1,U("diffEditorModifiedWritable","Whether modified is writable in the diff editor")),s.diffEditorOriginalUri=new Ke("diffEditorOriginalUri","",U("diffEditorOriginalUri","The uri of the original document")),s.diffEditorModifiedUri=new Ke("diffEditorModifiedUri","",U("diffEditorModifiedUri","The uri of the modified document")),s.columnSelection=new Ke("editorColumnSelection",!1,U("editorColumnSelection","Whether `editor.columnSelection` is enabled")),s.writable=s.readOnly.toNegated(),s.hasNonEmptySelection=new Ke("editorHasSelection",!1,U("editorHasSelection","Whether the editor has text selected")),s.hasOnlyEmptySelection=s.hasNonEmptySelection.toNegated(),s.hasMultipleSelections=new Ke("editorHasMultipleSelections",!1,U("editorHasMultipleSelections","Whether the editor has multiple selections")),s.hasSingleSelection=s.hasMultipleSelections.toNegated(),s.tabMovesFocus=new Ke("editorTabMovesFocus",!1,U("editorTabMovesFocus","Whether `Tab` will move focus out of the editor")),s.tabDoesNotMoveFocus=s.tabMovesFocus.toNegated(),s.isInEmbeddedEditor=new Ke("isInEmbeddedEditor",!1,!0),s.canUndo=new Ke("canUndo",!1,!0),s.canRedo=new Ke("canRedo",!1,!0),s.hoverVisible=new Ke("editorHoverVisible",!1,U("editorHoverVisible","Whether the editor hover is visible")),s.hoverFocused=new Ke("editorHoverFocused",!1,U("editorHoverFocused","Whether the editor hover is focused")),s.stickyScrollFocused=new Ke("stickyScrollFocused",!1,U("stickyScrollFocused","Whether the sticky scroll is focused")),s.stickyScrollVisible=new Ke("stickyScrollVisible",!1,U("stickyScrollVisible","Whether the sticky scroll is visible")),s.standaloneColorPickerVisible=new Ke("standaloneColorPickerVisible",!1,U("standaloneColorPickerVisible","Whether the standalone color picker is visible")),s.standaloneColorPickerFocused=new Ke("standaloneColorPickerFocused",!1,U("standaloneColorPickerFocused","Whether the standalone color picker is focused")),s.inCompositeEditor=new Ke("inCompositeEditor",void 0,U("inCompositeEditor","Whether the editor is part of a larger editor (e.g. notebooks)")),s.notInCompositeEditor=s.inCompositeEditor.toNegated(),s.languageId=new Ke("editorLangId","",U("editorLangId","The language identifier of the editor")),s.hasCompletionItemProvider=new Ke("editorHasCompletionItemProvider",!1,U("editorHasCompletionItemProvider","Whether the editor has a completion item provider")),s.hasCodeActionsProvider=new Ke("editorHasCodeActionsProvider",!1,U("editorHasCodeActionsProvider","Whether the editor has a code actions provider")),s.hasCodeLensProvider=new Ke("editorHasCodeLensProvider",!1,U("editorHasCodeLensProvider","Whether the editor has a code lens provider")),s.hasDefinitionProvider=new Ke("editorHasDefinitionProvider",!1,U("editorHasDefinitionProvider","Whether the editor has a definition provider")),s.hasDeclarationProvider=new Ke("editorHasDeclarationProvider",!1,U("editorHasDeclarationProvider","Whether the editor has a declaration provider")),s.hasImplementationProvider=new Ke("editorHasImplementationProvider",!1,U("editorHasImplementationProvider","Whether the editor has an implementation provider")),s.hasTypeDefinitionProvider=new Ke("editorHasTypeDefinitionProvider",!1,U("editorHasTypeDefinitionProvider","Whether the editor has a type definition provider")),s.hasHoverProvider=new Ke("editorHasHoverProvider",!1,U("editorHasHoverProvider","Whether the editor has a hover provider")),s.hasDocumentHighlightProvider=new Ke("editorHasDocumentHighlightProvider",!1,U("editorHasDocumentHighlightProvider","Whether the editor has a document highlight provider")),s.hasDocumentSymbolProvider=new Ke("editorHasDocumentSymbolProvider",!1,U("editorHasDocumentSymbolProvider","Whether the editor has a document symbol provider")),s.hasReferenceProvider=new Ke("editorHasReferenceProvider",!1,U("editorHasReferenceProvider","Whether the editor has a reference provider")),s.hasRenameProvider=new Ke("editorHasRenameProvider",!1,U("editorHasRenameProvider","Whether the editor has a rename provider")),s.hasSignatureHelpProvider=new Ke("editorHasSignatureHelpProvider",!1,U("editorHasSignatureHelpProvider","Whether the editor has a signature help provider")),s.hasInlayHintsProvider=new Ke("editorHasInlayHintsProvider",!1,U("editorHasInlayHintsProvider","Whether the editor has an inline hints provider")),s.hasDocumentFormattingProvider=new Ke("editorHasDocumentFormattingProvider",!1,U("editorHasDocumentFormattingProvider","Whether the editor has a document formatting provider")),s.hasDocumentSelectionFormattingProvider=new Ke("editorHasDocumentSelectionFormattingProvider",!1,U("editorHasDocumentSelectionFormattingProvider","Whether the editor has a document selection formatting provider")),s.hasMultipleDocumentFormattingProvider=new Ke("editorHasMultipleDocumentFormattingProvider",!1,U("editorHasMultipleDocumentFormattingProvider","Whether the editor has multiple document formatting providers")),s.hasMultipleDocumentSelectionFormattingProvider=new Ke("editorHasMultipleDocumentSelectionFormattingProvider",!1,U("editorHasMultipleDocumentSelectionFormattingProvider","Whether the editor has multiple document selection formatting providers"))})(H||(H={}));const nn=0;class Js extends Io{runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditorCommand(n,i||{})}}var Vl;(function(s){const e=function(i){if(!il(i))return!1;const n=i;return!(!Da(n.to)||!Rr(n.by)&&!Da(n.by)||!Rr(n.value)&&!XU(n.value)||!Rr(n.revealCursor)&&!Fpe(n.revealCursor))};s.metadata={description:"Scroll editor in the given direction",args:[{name:"Editor scroll argument object",description:"Property-value pairs that can be passed through this argument:\n * 'to': A mandatory direction value.\n ```\n 'up', 'down'\n ```\n * 'by': Unit to move. Default is computed based on 'to' value.\n ```\n 'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n ```\n * 'value': Number of units to move. Default is '1'.\n * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n ",constraint:e,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage","editor"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},s.RawDirection={Up:"up",Right:"right",Down:"down",Left:"left"},s.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage",Editor:"editor",Column:"column"};function t(i){let n;switch(i.to){case s.RawDirection.Up:n=1;break;case s.RawDirection.Right:n=2;break;case s.RawDirection.Down:n=3;break;case s.RawDirection.Left:n=4;break;default:return null}let o;switch(i.by){case s.RawUnit.Line:o=1;break;case s.RawUnit.WrappedLine:o=2;break;case s.RawUnit.Page:o=3;break;case s.RawUnit.HalfPage:o=4;break;case s.RawUnit.Editor:o=5;break;case s.RawUnit.Column:o=6;break;default:o=2}const l=Math.floor(i.value||1),r=!!i.revealCursor;return{direction:n,unit:o,value:l,revealCursor:r,select:!!i.select}}s.parse=t})(Vl||(Vl={}));var fS;(function(s){const e=function(t){if(!il(t))return!1;const i=t;return!(!XU(i.lineNumber)&&!Da(i.lineNumber)||!Rr(i.at)&&!Da(i.at))};s.metadata={description:"Reveal the given line at the given logical position",args:[{name:"Reveal line argument object",description:"Property-value pairs that can be passed through this argument:\n * 'lineNumber': A mandatory line number value.\n * 'at': Logical position at which line has to be revealed.\n ```\n 'top', 'center', 'bottom'\n ```\n ",constraint:e,schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:["number","string"]},at:{type:"string",enum:["top","center","bottom"]}}}}]},s.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}})(fS||(fS={}));class p4{constructor(e){e.addImplementation(1e4,"code-editor",(t,i)=>{const n=t.get(zi).getFocusedCodeEditor();return n&&n.hasTextFocus()?this._runEditorCommand(t,n,i):!1}),e.addImplementation(1e3,"generic-dom-input-textarea",(t,i)=>{const n=kl();return n&&["input","textarea"].indexOf(n.tagName.toLowerCase())>=0?(this.runDOMCommand(n),!0):!1}),e.addImplementation(0,"generic-dom",(t,i)=>{const n=t.get(zi).getActiveCodeEditor();return n?(n.focus(),this._runEditorCommand(t,n,i)):!1})}_runEditorCommand(e,t,i){const n=this.runEditorCommand(e,t,i);return n||!0}}var Po;(function(s){class e extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){if(!A.position)return;Z.model.pushStackElement(),Z.setCursorStates(A.source,3,[ul.moveTo(Z,Z.getPrimaryCursorState(),this._inSelectionMode,A.position,A.viewPosition)])&&A.revealType!==2&&Z.revealAllCursors(A.source,!0,!0)}}s.MoveTo=Oe(new e({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),s.MoveToSelect=Oe(new e({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class t extends Js{runCoreEditorCommand(Z,A){Z.model.pushStackElement();const N=this._getColumnSelectResult(Z,Z.getPrimaryCursorState(),Z.getCursorColumnSelectData(),A);N!==null&&(Z.setCursorStates(A.source,3,N.viewStates.map(W=>Xi.fromViewState(W))),Z.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:N.fromLineNumber,fromViewVisualColumn:N.fromVisualColumn,toViewLineNumber:N.toLineNumber,toViewVisualColumn:N.toVisualColumn}),N.reversed?Z.revealTopMostCursor(A.source):Z.revealBottomMostCursor(A.source))}}s.ColumnSelect=Oe(new class extends t{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(f,Z,A,N){if(typeof N.position>"u"||typeof N.viewPosition>"u"||typeof N.mouseColumn>"u")return null;const W=f.model.validatePosition(N.position),Q=f.coordinatesConverter.validateViewPosition(new oe(N.viewPosition.lineNumber,N.viewPosition.column),W),R=N.doColumnSelect?A.fromViewLineNumber:Q.lineNumber,M=N.doColumnSelect?A.fromViewVisualColumn:N.mouseColumn-1;return aZ.columnSelect(f.cursorConfig,f,R,M,Q.lineNumber,N.mouseColumn-1)}}),s.CursorColumnSelectLeft=Oe(new class extends t{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(f,Z,A,N){return aZ.columnSelectLeft(f.cursorConfig,f,A)}}),s.CursorColumnSelectRight=Oe(new class extends t{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(f,Z,A,N){return aZ.columnSelectRight(f.cursorConfig,f,A)}});class i extends t{constructor(Z){super(Z),this._isPaged=Z.isPaged}_getColumnSelectResult(Z,A,N,W){return aZ.columnSelectUp(Z.cursorConfig,Z,N,this._isPaged)}}s.CursorColumnSelectUp=Oe(new i({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3600,linux:{primary:0}}})),s.CursorColumnSelectPageUp=Oe(new i({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3595,linux:{primary:0}}}));class n extends t{constructor(Z){super(Z),this._isPaged=Z.isPaged}_getColumnSelectResult(Z,A,N,W){return aZ.columnSelectDown(Z.cursorConfig,Z,N,this._isPaged)}}s.CursorColumnSelectDown=Oe(new n({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3602,linux:{primary:0}}})),s.CursorColumnSelectPageDown=Oe(new n({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3596,linux:{primary:0}}}));class o extends Js{constructor(){super({id:"cursorMove",precondition:void 0,metadata:rx.metadata})}runCoreEditorCommand(Z,A){const N=rx.parse(A);N&&this._runCursorMove(Z,A.source,N)}_runCursorMove(Z,A,N){Z.model.pushStackElement(),Z.setCursorStates(A,3,o._move(Z,Z.getCursorStates(),N)),Z.revealAllCursors(A,!0)}static _move(Z,A,N){const W=N.select,Q=N.value;switch(N.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return ul.simpleMove(Z,A,N.direction,W,Q,N.unit);case 11:case 13:case 12:case 14:return ul.viewportMove(Z,A,N.direction,W,Q);default:return null}}}s.CursorMoveImpl=o,s.CursorMove=Oe(new o);class l extends Js{constructor(Z){super(Z),this._staticArgs=Z.args}runCoreEditorCommand(Z,A){let N=this._staticArgs;this._staticArgs.value===-1&&(N={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:A.pageSize||Z.cursorConfig.pageSize}),Z.model.pushStackElement(),Z.setCursorStates(A.source,3,ul.simpleMove(Z,Z.getCursorStates(),N.direction,N.select,N.value,N.unit)),Z.revealAllCursors(A.source,!0)}}s.CursorLeft=Oe(new l({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),s.CursorLeftSelect=Oe(new l({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1039}})),s.CursorRight=Oe(new l({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),s.CursorRightSelect=Oe(new l({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1041}})),s.CursorUp=Oe(new l({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),s.CursorUpSelect=Oe(new l({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),s.CursorPageUp=Oe(new l({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:11}})),s.CursorPageUpSelect=Oe(new l({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1035}})),s.CursorDown=Oe(new l({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),s.CursorDownSelect=Oe(new l({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),s.CursorPageDown=Oe(new l({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:12}})),s.CursorPageDownSelect=Oe(new l({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1036}})),s.CreateCursor=Oe(new class extends Js{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(f,Z){if(!Z.position)return;let A;Z.wholeLine?A=ul.line(f,f.getPrimaryCursorState(),!1,Z.position,Z.viewPosition):A=ul.moveTo(f,f.getPrimaryCursorState(),!1,Z.position,Z.viewPosition);const N=f.getCursorStates();if(N.length>1){const W=A.modelState?A.modelState.position:null,Q=A.viewState?A.viewState.position:null;for(let R=0,M=N.length;R<M;R++){const w=N[R];if(!(W&&!w.modelState.selection.containsPosition(W))&&!(Q&&!w.viewState.selection.containsPosition(Q))){N.splice(R,1),f.model.pushStackElement(),f.setCursorStates(Z.source,3,N);return}}}N.push(A),f.model.pushStackElement(),f.setCursorStates(Z.source,3,N)}}),s.LastCursorMoveToSelect=Oe(new class extends Js{constructor(){super({id:"_lastCursorMoveToSelect",precondition:void 0})}runCoreEditorCommand(f,Z){if(!Z.position)return;const A=f.getLastAddedCursorIndex(),N=f.getCursorStates(),W=N.slice(0);W[A]=ul.moveTo(f,N[A],!0,Z.position,Z.viewPosition),f.model.pushStackElement(),f.setCursorStates(Z.source,3,W)}});class r extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){Z.model.pushStackElement(),Z.setCursorStates(A.source,3,ul.moveToBeginningOfLine(Z,Z.getCursorStates(),this._inSelectionMode)),Z.revealAllCursors(A.source,!0)}}s.CursorHome=Oe(new r({inSelectionMode:!1,id:"cursorHome",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:14,mac:{primary:14,secondary:[2063]}}})),s.CursorHomeSelect=Oe(new r({inSelectionMode:!0,id:"cursorHomeSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1038,mac:{primary:1038,secondary:[3087]}}}));class a extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){Z.model.pushStackElement(),Z.setCursorStates(A.source,3,this._exec(Z.getCursorStates())),Z.revealAllCursors(A.source,!0)}_exec(Z){const A=[];for(let N=0,W=Z.length;N<W;N++){const Q=Z[N],R=Q.modelState.position.lineNumber;A[N]=Xi.fromModelState(Q.modelState.move(this._inSelectionMode,R,1,0))}return A}}s.CursorLineStart=Oe(new a({inSelectionMode:!1,id:"cursorLineStart",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:0,mac:{primary:287}}})),s.CursorLineStartSelect=Oe(new a({inSelectionMode:!0,id:"cursorLineStartSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:0,mac:{primary:1311}}}));class d extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){Z.model.pushStackElement(),Z.setCursorStates(A.source,3,ul.moveToEndOfLine(Z,Z.getCursorStates(),this._inSelectionMode,A.sticky||!1)),Z.revealAllCursors(A.source,!0)}}s.CursorEnd=Oe(new d({inSelectionMode:!1,id:"cursorEnd",precondition:void 0,kbOpts:{args:{sticky:!1},weight:nn,kbExpr:H.textInputFocus,primary:13,mac:{primary:13,secondary:[2065]}},metadata:{description:"Go to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:U("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}})),s.CursorEndSelect=Oe(new d({inSelectionMode:!0,id:"cursorEndSelect",precondition:void 0,kbOpts:{args:{sticky:!1},weight:nn,kbExpr:H.textInputFocus,primary:1037,mac:{primary:1037,secondary:[3089]}},metadata:{description:"Select to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:U("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}}));class c extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){Z.model.pushStackElement(),Z.setCursorStates(A.source,3,this._exec(Z,Z.getCursorStates())),Z.revealAllCursors(A.source,!0)}_exec(Z,A){const N=[];for(let W=0,Q=A.length;W<Q;W++){const R=A[W],M=R.modelState.position.lineNumber,w=Z.model.getLineMaxColumn(M);N[W]=Xi.fromModelState(R.modelState.move(this._inSelectionMode,M,w,0))}return N}}s.CursorLineEnd=Oe(new c({inSelectionMode:!1,id:"cursorLineEnd",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:0,mac:{primary:291}}})),s.CursorLineEndSelect=Oe(new c({inSelectionMode:!0,id:"cursorLineEndSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:0,mac:{primary:1315}}}));class h extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){Z.model.pushStackElement(),Z.setCursorStates(A.source,3,ul.moveToBeginningOfBuffer(Z,Z.getCursorStates(),this._inSelectionMode)),Z.revealAllCursors(A.source,!0)}}s.CursorTop=Oe(new h({inSelectionMode:!1,id:"cursorTop",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:2062,mac:{primary:2064}}})),s.CursorTopSelect=Oe(new h({inSelectionMode:!0,id:"cursorTopSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3086,mac:{primary:3088}}}));class u extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){Z.model.pushStackElement(),Z.setCursorStates(A.source,3,ul.moveToEndOfBuffer(Z,Z.getCursorStates(),this._inSelectionMode)),Z.revealAllCursors(A.source,!0)}}s.CursorBottom=Oe(new u({inSelectionMode:!1,id:"cursorBottom",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:2061,mac:{primary:2066}}})),s.CursorBottomSelect=Oe(new u({inSelectionMode:!0,id:"cursorBottomSelect",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:3085,mac:{primary:3090}}}));class m extends Js{constructor(){super({id:"editorScroll",precondition:void 0,metadata:Vl.metadata})}determineScrollMethod(Z){const A=[6],N=[1,2,3,4,5,6],W=[4,2],Q=[1,3];return A.includes(Z.unit)&&W.includes(Z.direction)?this._runHorizontalEditorScroll.bind(this):N.includes(Z.unit)&&Q.includes(Z.direction)?this._runVerticalEditorScroll.bind(this):null}runCoreEditorCommand(Z,A){const N=Vl.parse(A);if(!N)return;const W=this.determineScrollMethod(N);W&&W(Z,A.source,N)}_runVerticalEditorScroll(Z,A,N){const W=this._computeDesiredScrollTop(Z,N);if(N.revealCursor){const Q=Z.getCompletelyVisibleViewRangeAtScrollTop(W);Z.setCursorStates(A,3,[ul.findPositionInViewportIfOutside(Z,Z.getPrimaryCursorState(),Q,N.select)])}Z.viewLayout.setScrollPosition({scrollTop:W},0)}_computeDesiredScrollTop(Z,A){if(A.unit===1){const Q=Z.viewLayout.getFutureViewport(),R=Z.getCompletelyVisibleViewRangeAtScrollTop(Q.top),M=Z.coordinatesConverter.convertViewRangeToModelRange(R);let w;A.direction===1?w=Math.max(1,M.startLineNumber-A.value):w=Math.min(Z.model.getLineCount(),M.startLineNumber+A.value);const Y=Z.coordinatesConverter.convertModelPositionToViewPosition(new oe(w,1));return Z.viewLayout.getVerticalOffsetForLineNumber(Y.lineNumber)}if(A.unit===5){let Q=0;return A.direction===3&&(Q=Z.model.getLineCount()-Z.cursorConfig.pageSize),Z.viewLayout.getVerticalOffsetForLineNumber(Q)}let N;A.unit===3?N=Z.cursorConfig.pageSize*A.value:A.unit===4?N=Math.round(Z.cursorConfig.pageSize/2)*A.value:N=A.value;const W=(A.direction===1?-1:1)*N;return Z.viewLayout.getCurrentScrollTop()+W*Z.cursorConfig.lineHeight}_runHorizontalEditorScroll(Z,A,N){const W=this._computeDesiredScrollLeft(Z,N);Z.viewLayout.setScrollPosition({scrollLeft:W},0)}_computeDesiredScrollLeft(Z,A){const N=(A.direction===4?-1:1)*A.value;return Z.viewLayout.getCurrentScrollLeft()+N*Z.cursorConfig.typicalHalfwidthCharacterWidth}}s.EditorScrollImpl=m,s.EditorScroll=Oe(new m),s.ScrollLineUp=Oe(new class extends Js{constructor(){super({id:"scrollLineUp",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:2064,mac:{primary:267}}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Up,by:Vl.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollPageUp=Oe(new class extends Js{constructor(){super({id:"scrollPageUp",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:2059,win:{primary:523},linux:{primary:523}}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Up,by:Vl.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollEditorTop=Oe(new class extends Js{constructor(){super({id:"scrollEditorTop",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Up,by:Vl.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollLineDown=Oe(new class extends Js{constructor(){super({id:"scrollLineDown",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:2066,mac:{primary:268}}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Down,by:Vl.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollPageDown=Oe(new class extends Js{constructor(){super({id:"scrollPageDown",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:2060,win:{primary:524},linux:{primary:524}}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Down,by:Vl.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollEditorBottom=Oe(new class extends Js{constructor(){super({id:"scrollEditorBottom",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Down,by:Vl.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollLeft=Oe(new class extends Js{constructor(){super({id:"scrollLeft",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Left,by:Vl.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:Z.source})}}),s.ScrollRight=Oe(new class extends Js{constructor(){super({id:"scrollRight",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus}})}runCoreEditorCommand(f,Z){s.EditorScroll.runCoreEditorCommand(f,{to:Vl.RawDirection.Right,by:Vl.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:Z.source})}});class p extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){A.position&&(Z.model.pushStackElement(),Z.setCursorStates(A.source,3,[ul.word(Z,Z.getPrimaryCursorState(),this._inSelectionMode,A.position)]),A.revealType!==2&&Z.revealAllCursors(A.source,!0,!0))}}s.WordSelect=Oe(new p({inSelectionMode:!1,id:"_wordSelect",precondition:void 0})),s.WordSelectDrag=Oe(new p({inSelectionMode:!0,id:"_wordSelectDrag",precondition:void 0})),s.LastCursorWordSelect=Oe(new class extends Js{constructor(){super({id:"lastCursorWordSelect",precondition:void 0})}runCoreEditorCommand(f,Z){if(!Z.position)return;const A=f.getLastAddedCursorIndex(),N=f.getCursorStates(),W=N.slice(0),Q=N[A];W[A]=ul.word(f,Q,Q.modelState.hasSelection(),Z.position),f.model.pushStackElement(),f.setCursorStates(Z.source,3,W)}});class g extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){A.position&&(Z.model.pushStackElement(),Z.setCursorStates(A.source,3,[ul.line(Z,Z.getPrimaryCursorState(),this._inSelectionMode,A.position,A.viewPosition)]),A.revealType!==2&&Z.revealAllCursors(A.source,!1,!0))}}s.LineSelect=Oe(new g({inSelectionMode:!1,id:"_lineSelect",precondition:void 0})),s.LineSelectDrag=Oe(new g({inSelectionMode:!0,id:"_lineSelectDrag",precondition:void 0}));class b extends Js{constructor(Z){super(Z),this._inSelectionMode=Z.inSelectionMode}runCoreEditorCommand(Z,A){if(!A.position)return;const N=Z.getLastAddedCursorIndex(),W=Z.getCursorStates(),Q=W.slice(0);Q[N]=ul.line(Z,W[N],this._inSelectionMode,A.position,A.viewPosition),Z.model.pushStackElement(),Z.setCursorStates(A.source,3,Q)}}s.LastCursorLineSelect=Oe(new b({inSelectionMode:!1,id:"lastCursorLineSelect",precondition:void 0})),s.LastCursorLineSelectDrag=Oe(new b({inSelectionMode:!0,id:"lastCursorLineSelectDrag",precondition:void 0})),s.CancelSelection=Oe(new class extends Js{constructor(){super({id:"cancelSelection",precondition:H.hasNonEmptySelection,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(f,Z){f.model.pushStackElement(),f.setCursorStates(Z.source,3,[ul.cancelSelection(f,f.getPrimaryCursorState())]),f.revealAllCursors(Z.source,!0)}}),s.RemoveSecondaryCursors=Oe(new class extends Js{constructor(){super({id:"removeSecondaryCursors",precondition:H.hasMultipleSelections,kbOpts:{weight:nn+1,kbExpr:H.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(f,Z){f.model.pushStackElement(),f.setCursorStates(Z.source,3,[f.getPrimaryCursorState()]),f.revealAllCursors(Z.source,!0),Vp(U("removedCursor","Removed secondary cursors"))}}),s.RevealLine=Oe(new class extends Js{constructor(){super({id:"revealLine",precondition:void 0,metadata:fS.metadata})}runCoreEditorCommand(f,Z){const A=Z,N=A.lineNumber||0;let W=typeof N=="number"?N+1:parseInt(N)+1;W<1&&(W=1);const Q=f.model.getLineCount();W>Q&&(W=Q);const R=new v(W,1,W,f.model.getLineMaxColumn(W));let M=0;if(A.at)switch(A.at){case fS.RawAtArgument.Top:M=3;break;case fS.RawAtArgument.Center:M=1;break;case fS.RawAtArgument.Bottom:M=4;break}const w=f.coordinatesConverter.convertModelRangeToViewRange(R);f.revealRange(Z.source,!1,w,M,0)}}),s.SelectAll=new class extends p4{constructor(){super(Rve)}runDOMCommand(f){jc&&(f.focus(),f.select()),f.ownerDocument.execCommand("selectAll")}runEditorCommand(f,Z,A){const N=Z._getViewModel();N&&this.runCoreEditorCommand(N,A)}runCoreEditorCommand(f,Z){f.model.pushStackElement(),f.setCursorStates("keyboard",3,[ul.selectAll(f,f.getPrimaryCursorState())])}},s.SetSelection=Oe(new class extends Js{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(f,Z){Z.selection&&(f.model.pushStackElement(),f.setCursorStates(Z.source,3,[Xi.fromModelSelection(Z.selection)]))}})})(Po||(Po={}));const T4e=Ne.and(H.textInputFocus,H.columnSelection);function n1(s,e){la.registerKeybindingRule({id:s,primary:e,when:T4e,weight:nn+1})}n1(Po.CursorColumnSelectLeft.id,1039);n1(Po.CursorColumnSelectRight.id,1041);n1(Po.CursorColumnSelectUp.id,1040);n1(Po.CursorColumnSelectPageUp.id,1035);n1(Po.CursorColumnSelectDown.id,1042);n1(Po.CursorColumnSelectPageDown.id,1036);function bae(s){return s.register(),s}var TW;(function(s){class e extends Io{runEditorCommand(i,n,o){const l=n._getViewModel();l&&this.runCoreEditingCommand(n,l,o||{})}}s.CoreEditingCommand=e,s.LineBreakInsert=Oe(new class extends e{constructor(){super({id:"lineBreakInsert",precondition:H.writable,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(t,i,n){t.pushUndoStop(),t.executeCommands(this.id,tz.lineBreakInsert(i.cursorConfig,i.model,i.getCursorStates().map(o=>o.modelState.selection)))}}),s.Outdent=Oe(new class extends e{constructor(){super({id:"outdent",precondition:H.writable,kbOpts:{weight:nn,kbExpr:Ne.and(H.editorTextFocus,H.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(t,i,n){t.pushUndoStop(),t.executeCommands(this.id,zb.outdent(i.cursorConfig,i.model,i.getCursorStates().map(o=>o.modelState.selection))),t.pushUndoStop()}}),s.Tab=Oe(new class extends e{constructor(){super({id:"tab",precondition:H.writable,kbOpts:{weight:nn,kbExpr:Ne.and(H.editorTextFocus,H.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(t,i,n){t.pushUndoStop(),t.executeCommands(this.id,zb.tab(i.cursorConfig,i.model,i.getCursorStates().map(o=>o.modelState.selection))),t.pushUndoStop()}}),s.DeleteLeft=Oe(new class extends e{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(t,i,n){const[o,l]=BA.deleteLeft(i.getPrevEditOperationType(),i.cursorConfig,i.model,i.getCursorStates().map(r=>r.modelState.selection),i.getCursorAutoClosedCharacters());o&&t.pushUndoStop(),t.executeCommands(this.id,l),i.setPrevEditOperationType(2)}}),s.DeleteRight=Oe(new class extends e{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:nn,kbExpr:H.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(t,i,n){const[o,l]=BA.deleteRight(i.getPrevEditOperationType(),i.cursorConfig,i.model,i.getCursorStates().map(r=>r.modelState.selection));o&&t.pushUndoStop(),t.executeCommands(this.id,l),i.setPrevEditOperationType(3)}}),s.Undo=new class extends p4{constructor(){super(Ege)}runDOMCommand(t){t.ownerDocument.execCommand("undo")}runEditorCommand(t,i,n){if(!(!i.hasModel()||i.getOption(92)===!0))return i.getModel().undo()}},s.Redo=new class extends p4{constructor(){super(vge)}runDOMCommand(t){t.ownerDocument.execCommand("redo")}runEditorCommand(t,i,n){if(!(!i.hasModel()||i.getOption(92)===!0))return i.getModel().redo()}}})(TW||(TW={}));class Uae extends mY{constructor(e,t,i){super({id:e,precondition:void 0,metadata:i}),this._handlerId=t}runCommand(e,t){const i=e.get(zi).getFocusedCodeEditor();i&&i.trigger("keyboard",this._handlerId,t)}}function oN(s,e){bae(new Uae("default:"+s,s)),bae(new Uae(s,s,e))}oN("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]});oN("replacePreviousChar");oN("compositionType");oN("compositionStart");oN("compositionEnd");oN("paste");oN("cut");class B4e{constructor(e,t,i,n){this.configuration=e,this.viewModel=t,this.userInputEvents=i,this.commandDelegate=n}paste(e,t,i,n){this.commandDelegate.paste(e,t,i,n)}type(e){this.commandDelegate.type(e)}compositionType(e,t,i,n){this.commandDelegate.compositionType(e,t,i,n)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(e){Po.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:e})}_validateViewColumn(e){const t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column<t?new oe(e.lineNumber,t):e}_hasMulticursorModifier(e){switch(this.configuration.options.get(78)){case"altKey":return e.altKey;case"ctrlKey":return e.ctrlKey;case"metaKey":return e.metaKey;default:return!1}}_hasNonMulticursorModifier(e){switch(this.configuration.options.get(78)){case"altKey":return e.ctrlKey||e.metaKey;case"ctrlKey":return e.altKey||e.metaKey;case"metaKey":return e.ctrlKey||e.altKey;default:return!1}}dispatchMouse(e){const t=this.configuration.options,i=sa&&t.get(108),n=t.get(22);e.middleButton&&!i?this._columnSelect(e.position,e.mouseColumn,e.inSelectionMode):e.startedOnLineNumbers?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelect(e.position,e.revealType):this._createCursor(e.position,!0):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):e.mouseDownCount>=4?this._selectAll():e.mouseDownCount===3?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position,e.revealType):this._lastCursorLineSelect(e.position,e.revealType):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):e.mouseDownCount===2?e.onInjectedText||(this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position,e.revealType):e.inSelectionMode?this._wordSelectDrag(e.position,e.revealType):this._wordSelect(e.position,e.revealType)):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!0):e.inSelectionMode?this._lastCursorMoveToSelect(e.position,e.revealType):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey?this._columnSelect(e.position,e.mouseColumn,!0):n?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position,e.revealType):this.moveTo(e.position,e.revealType)}_usualArgs(e,t){return e=this._validateViewColumn(e),{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,revealType:t}}moveTo(e,t){Po.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_moveToSelect(e,t){Po.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_columnSelect(e,t,i){e=this._validateViewColumn(e),Po.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,doColumnSelect:i})}_createCursor(e,t){e=this._validateViewColumn(e),Po.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})}_lastCursorMoveToSelect(e,t){Po.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelect(e,t){Po.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelectDrag(e,t){Po.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorWordSelect(e,t){Po.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelect(e,t){Po.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelectDrag(e,t){Po.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelect(e,t){Po.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelectDrag(e,t){Po.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_selectAll(){Po.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)}emitKeyDown(e){this.userInputEvents.emitKeyDown(e)}emitKeyUp(e){this.userInputEvents.emitKeyUp(e)}emitContextMenu(e){this.userInputEvents.emitContextMenu(e)}emitMouseMove(e){this.userInputEvents.emitMouseMove(e)}emitMouseLeave(e){this.userInputEvents.emitMouseLeave(e)}emitMouseUp(e){this.userInputEvents.emitMouseUp(e)}emitMouseDown(e){this.userInputEvents.emitMouseDown(e)}emitMouseDrag(e){this.userInputEvents.emitMouseDrag(e)}emitMouseDrop(e){this.userInputEvents.emitMouseDrop(e)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(e){this.userInputEvents.emitMouseWheel(e)}}class Nfe{constructor(e){this._lineFactory=e,this._set(1,[])}flush(){this._set(1,[])}_set(e,t){this._lines=t,this._rendLineNumberStart=e}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(e){const t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new en("Illegal value for lineNumber");return this._lines[t]}onLinesDeleted(e,t){if(this.getCount()===0)return null;const i=this.getStartLineNumber(),n=this.getEndLineNumber();if(t<i){const a=t-e+1;return this._rendLineNumberStart-=a,null}if(e>n)return null;let o=0,l=0;for(let a=i;a<=n;a++){const d=a-this._rendLineNumberStart;e<=a&&a<=t&&(l===0?(o=d,l=1):l++)}if(e<i){let a=0;t<i?a=t-e+1:a=i-e,this._rendLineNumberStart-=a}return this._lines.splice(o,l)}onLinesChanged(e,t){const i=e+t-1;if(this.getCount()===0)return!1;const n=this.getStartLineNumber(),o=this.getEndLineNumber();let l=!1;for(let r=e;r<=i;r++)r>=n&&r<=o&&(this._lines[r-this._rendLineNumberStart].onContentChanged(),l=!0);return l}onLinesInserted(e,t){if(this.getCount()===0)return null;const i=t-e+1,n=this.getStartLineNumber(),o=this.getEndLineNumber();if(e<=n)return this._rendLineNumberStart+=i,null;if(e>o)return null;if(i+e>o)return this._lines.splice(e-this._rendLineNumberStart,o-e+1);const l=[];for(let h=0;h<i;h++)l[h]=this._lineFactory.createLine();const r=e-this._rendLineNumberStart,a=this._lines.slice(0,r),d=this._lines.slice(r,this._lines.length-i),c=this._lines.slice(this._lines.length-i,this._lines.length);return this._lines=a.concat(l).concat(d),c}onTokensChanged(e){if(this.getCount()===0)return!1;const t=this.getStartLineNumber(),i=this.getEndLineNumber();let n=!1;for(let o=0,l=e.length;o<l;o++){const r=e[o];if(r.toLineNumber<t||r.fromLineNumber>i)continue;const a=Math.max(t,r.fromLineNumber),d=Math.min(i,r.toLineNumber);for(let c=a;c<=d;c++){const h=c-this._rendLineNumberStart;this._lines[h].onTokensChanged(),n=!0}}return n}}class Rfe{constructor(e){this._lineFactory=e,this.domNode=this._createDomNode(),this._linesCollection=new Nfe(this._lineFactory)}_createDomNode(){const e=an(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e}onConfigurationChanged(e){return!!e.hasChanged(146)}onFlushed(e){return this._linesCollection.flush(),!0}onLinesChanged(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){const t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,n=t.length;i<n;i++){const o=t[i].getDomNode();o==null||o.remove()}return!0}onLinesInserted(e){const t=this._linesCollection.onLinesInserted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,n=t.length;i<n;i++){const o=t[i].getDomNode();o==null||o.remove()}return!0}onScrollChanged(e){return e.scrollTopChanged}onTokensChanged(e){return this._linesCollection.onTokensChanged(e.ranges)}onZonesChanged(e){return!0}getStartLineNumber(){return this._linesCollection.getStartLineNumber()}getEndLineNumber(){return this._linesCollection.getEndLineNumber()}getVisibleLine(e){return this._linesCollection.getLine(e)}renderLines(e){const t=this._linesCollection._get(),i=new g4(this.domNode.domNode,this._lineFactory,e),n={rendLineNumberStart:t.rendLineNumberStart,lines:t.lines,linesLength:t.lines.length},o=i.render(n,e.startLineNumber,e.endLineNumber,e.relativeVerticalOffset);this._linesCollection._set(o.rendLineNumberStart,o.lines)}}const Cg=class Cg{constructor(e,t,i){this._domNode=e,this._lineFactory=t,this._viewportData=i}render(e,t,i,n){const o={rendLineNumberStart:e.rendLineNumberStart,lines:e.lines.slice(0),linesLength:e.linesLength};if(o.rendLineNumberStart+o.linesLength-1<t||i<o.rendLineNumberStart){o.rendLineNumberStart=t,o.linesLength=i-t+1,o.lines=[];for(let l=t;l<=i;l++)o.lines[l-t]=this._lineFactory.createLine();return this._finishRendering(o,!0,n),o}if(this._renderUntouchedLines(o,Math.max(t-o.rendLineNumberStart,0),Math.min(i-o.rendLineNumberStart,o.linesLength-1),n,t),o.rendLineNumberStart>t){const l=t,r=Math.min(i,o.rendLineNumberStart-1);l<=r&&(this._insertLinesBefore(o,l,r,n,t),o.linesLength+=r-l+1)}else if(o.rendLineNumberStart<t){const l=Math.min(o.linesLength,t-o.rendLineNumberStart);l>0&&(this._removeLinesBefore(o,l),o.linesLength-=l)}if(o.rendLineNumberStart=t,o.rendLineNumberStart+o.linesLength-1<i){const l=o.rendLineNumberStart+o.linesLength,r=i;l<=r&&(this._insertLinesAfter(o,l,r,n,t),o.linesLength+=r-l+1)}else if(o.rendLineNumberStart+o.linesLength-1>i){const l=Math.max(0,i-o.rendLineNumberStart+1),a=o.linesLength-1-l+1;a>0&&(this._removeLinesAfter(o,a),o.linesLength-=a)}return this._finishRendering(o,!1,n),o}_renderUntouchedLines(e,t,i,n,o){const l=e.rendLineNumberStart,r=e.lines;for(let a=t;a<=i;a++){const d=l+a;r[a].layoutLine(d,n[d-o],this._viewportData.lineHeight)}}_insertLinesBefore(e,t,i,n,o){const l=[];let r=0;for(let a=t;a<=i;a++)l[r++]=this._lineFactory.createLine();e.lines=l.concat(e.lines)}_removeLinesBefore(e,t){for(let i=0;i<t;i++){const n=e.lines[i].getDomNode();n==null||n.remove()}e.lines.splice(0,t)}_insertLinesAfter(e,t,i,n,o){const l=[];let r=0;for(let a=t;a<=i;a++)l[r++]=this._lineFactory.createLine();e.lines=e.lines.concat(l)}_removeLinesAfter(e,t){const i=e.linesLength-t;for(let n=0;n<t;n++){const o=e.lines[i+n].getDomNode();o==null||o.remove()}e.lines.splice(i,t)}_finishRenderingNewLines(e,t,i,n){Cg._ttPolicy&&(i=Cg._ttPolicy.createHTML(i));const o=this._domNode.lastChild;t||!o?this._domNode.innerHTML=i:o.insertAdjacentHTML("afterend",i);let l=this._domNode.lastChild;for(let r=e.linesLength-1;r>=0;r--){const a=e.lines[r];n[r]&&(a.setDomNode(l),l=l.previousSibling)}}_finishRenderingInvalidLines(e,t,i){const n=document.createElement("div");Cg._ttPolicy&&(t=Cg._ttPolicy.createHTML(t)),n.innerHTML=t;for(let o=0;o<e.linesLength;o++){const l=e.lines[o];if(i[o]){const r=n.firstChild,a=l.getDomNode();a.parentNode.replaceChild(r,a),l.setDomNode(r)}}}_finishRendering(e,t,i){const n=Cg._sb,o=e.linesLength,l=e.lines,r=e.rendLineNumberStart,a=[];{n.reset();let d=!1;for(let c=0;c<o;c++){const h=l[c];a[c]=!1,!(h.getDomNode()||!h.renderLine(c+r,i[c],this._viewportData.lineHeight,this._viewportData,n))&&(a[c]=!0,d=!0)}d&&this._finishRenderingNewLines(e,t,n.build(),a)}{n.reset();let d=!1;const c=[];for(let h=0;h<o;h++){const u=l[h];c[h]=!1,!(a[h]||!u.renderLine(h+r,i[h],this._viewportData.lineHeight,this._viewportData,n))&&(c[h]=!0,d=!0)}d&&this._finishRenderingInvalidLines(e,n.build(),c)}}};Cg._ttPolicy=B0("editorViewLayer",{createHTML:e=>e}),Cg._sb=new XQ(1e5);let g4=Cg;class Sfe extends Cd{constructor(e){super(e),this._dynamicOverlays=[],this._isFocused=!1,this._visibleLines=new Rfe({createLine:()=>new L4e(this._dynamicOverlays)}),this.domNode=this._visibleLines.domNode;const i=this._context.configuration.options.get(50);Al(this.domNode,i),this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let e=0,t=this._dynamicOverlays.length;e<t;e++)if(this._dynamicOverlays[e].shouldRender())return!0;return!1}dispose(){super.dispose();for(let e=0,t=this._dynamicOverlays.length;e<t;e++)this._dynamicOverlays[e].dispose();this._dynamicOverlays=[]}getDomNode(){return this.domNode}addDynamicOverlay(e){this._dynamicOverlays.push(e)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e);const i=this._context.configuration.options.get(50);return Al(this.domNode,i),!0}onFlushed(e){return this._visibleLines.onFlushed(e)}onFocusChanged(e){return this._isFocused=e.isFocused,!0}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onScrollChanged(e){return this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._visibleLines.onZonesChanged(e)}prepareRender(e){const t=this._dynamicOverlays.filter(i=>i.shouldRender());for(let i=0,n=t.length;i<n;i++){const o=t[i];o.prepareRender(e),o.onDidRender()}}render(e){this._viewOverlaysRender(e),this.domNode.toggleClassName("focused",this._isFocused)}_viewOverlaysRender(e){this._visibleLines.renderLines(e.viewportData)}}class L4e{constructor(e){this._dynamicOverlays=e,this._domNode=null,this._renderedContent=null}getDomNode(){return this._domNode?this._domNode.domNode:null}setDomNode(e){this._domNode=an(e)}onContentChanged(){}onTokensChanged(){}renderLine(e,t,i,n,o){let l="";for(let r=0,a=this._dynamicOverlays.length;r<a;r++){const d=this._dynamicOverlays[r];l+=d.render(n.startLineNumber,e)}return this._renderedContent===l?!1:(this._renderedContent=l,o.appendString('<div style="top:'),o.appendString(String(t)),o.appendString("px;height:"),o.appendString(String(i)),o.appendString('px;">'),o.appendString(l),o.appendString("</div>"),!0)}layoutLine(e,t,i){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(i))}}class k4e extends Sfe{constructor(e){super(e);const i=this._context.configuration.options.get(146);this._contentWidth=i.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(e){const i=this._context.configuration.options.get(146);return this._contentWidth=i.contentWidth,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollWidthChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e),this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth))}}class I4e extends Sfe{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(146);this._contentLeft=i.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),Al(this.domNode,t.get(50))}onConfigurationChanged(e){const t=this._context.configuration.options;Al(this.domNode,t.get(50));const i=t.get(146);return this._contentLeft=i.contentLeft,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollHeightChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e);const t=Math.min(e.scrollHeight,1e6);this.domNode.setHeight(t),this.domNode.setWidth(this._contentLeft)}}class nz{constructor(e){this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseDropCanceled=null,this.onMouseWheel=null,this._coordinatesConverter=e}emitKeyDown(e){var t;(t=this.onKeyDown)==null||t.call(this,e)}emitKeyUp(e){var t;(t=this.onKeyUp)==null||t.call(this,e)}emitContextMenu(e){var t;(t=this.onContextMenu)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseMove(e){var t;(t=this.onMouseMove)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseLeave(e){var t;(t=this.onMouseLeave)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDown(e){var t;(t=this.onMouseDown)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseUp(e){var t;(t=this.onMouseUp)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrag(e){var t;(t=this.onMouseDrag)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrop(e){var t;(t=this.onMouseDrop)==null||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDropCanceled(){var e;(e=this.onMouseDropCanceled)==null||e.call(this)}emitMouseWheel(e){var t;(t=this.onMouseWheel)==null||t.call(this,e)}_convertViewToModelMouseEvent(e){return e.target?{event:e.event,target:this._convertViewToModelMouseTarget(e.target)}:e}_convertViewToModelMouseTarget(e){return nz.convertViewToModelMouseTarget(e,this._coordinatesConverter)}static convertViewToModelMouseTarget(e,t){const i={...e};return i.position&&(i.position=t.convertViewPositionToModelPosition(i.position)),i.range&&(i.range=t.convertViewRangeToModelRange(i.range)),(i.type===5||i.type===8)&&(i.detail=this.convertViewToModelViewZoneData(i.detail,t)),i}static convertViewToModelViewZoneData(e,t){return{viewZoneId:e.viewZoneId,positionBefore:e.positionBefore?t.convertViewPositionToModelPosition(e.positionBefore):e.positionBefore,positionAfter:e.positionAfter?t.convertViewPositionToModelPosition(e.positionAfter):e.positionAfter,position:t.convertViewPositionToModelPosition(e.position),afterLineNumber:t.convertViewPositionToModelPosition(new oe(e.afterLineNumber,1)).lineNumber}}}class D4e extends Cd{constructor(e){super(e),this.blocks=[],this.contentWidth=-1,this.contentLeft=0,this.domNode=an(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("blockDecorations-container"),this.update()}update(){let e=!1;const i=this._context.configuration.options.get(146),n=i.contentWidth-i.verticalScrollbarWidth;this.contentWidth!==n&&(this.contentWidth=n,e=!0);const o=i.contentLeft;return this.contentLeft!==o&&(this.contentLeft=o,e=!0),e}dispose(){super.dispose()}onConfigurationChanged(e){return this.update()}onScrollChanged(e){return e.scrollTopChanged||e.scrollLeftChanged}onDecorationsChanged(e){return!0}onZonesChanged(e){return!0}prepareRender(e){}render(e){let t=0;const i=e.getDecorationsInViewport();for(const n of i){if(!n.options.blockClassName)continue;let o=this.blocks[t];o||(o=this.blocks[t]=an(document.createElement("div")),this.domNode.appendChild(o));let l,r;n.options.blockIsAfterEnd?(l=e.getVerticalOffsetAfterLineNumber(n.range.endLineNumber,!1),r=e.getVerticalOffsetAfterLineNumber(n.range.endLineNumber,!0)):(l=e.getVerticalOffsetForLineNumber(n.range.startLineNumber,!0),r=n.range.isEmpty()&&!n.options.blockDoesNotCollapse?e.getVerticalOffsetForLineNumber(n.range.startLineNumber,!1):e.getVerticalOffsetAfterLineNumber(n.range.endLineNumber,!0));const[a,d,c,h]=n.options.blockPadding??[0,0,0,0];o.setClassName("blockDecorations-block "+n.options.blockClassName),o.setLeft(this.contentLeft-h),o.setWidth(this.contentWidth+h+d),o.setTop(l-e.scrollTop-a),o.setHeight(r-l+a+c),t++}for(let n=t;n<this.blocks.length;n++)this.blocks[n].domNode.remove();this.blocks.length=t}}class G4e extends Cd{constructor(e,t){super(e),this._viewDomNode=t,this._widgets={},this.domNode=an(document.createElement("div")),$u.write(this.domNode,1),this.domNode.setClassName("contentWidgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=an(document.createElement("div")),$u.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onConfigurationChanged(e);return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLineMappingChanged(e){return this._updateAnchorsViewPositions(),!0}onLinesChanged(e){return this._updateAnchorsViewPositions(),!0}onLinesDeleted(e){return this._updateAnchorsViewPositions(),!0}onLinesInserted(e){return this._updateAnchorsViewPositions(),!0}onScrollChanged(e){return!0}onZonesChanged(e){return!0}_updateAnchorsViewPositions(){const e=Object.keys(this._widgets);for(const t of e)this._widgets[t].updateAnchorViewPosition()}addWidget(e){const t=new E4e(this._context,this._viewDomNode,e);this._widgets[t.id]=t,t.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(t.domNode):this.domNode.appendChild(t.domNode),this.setShouldRender()}setWidgetPosition(e,t,i,n,o){this._widgets[e.getId()].setPosition(t,i,n,o),this.setShouldRender()}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const i=this._widgets[t];delete this._widgets[t];const n=i.domNode.domNode;n.remove(),n.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(e){return this._widgets.hasOwnProperty(e)?this._widgets[e].suppressMouseDown:!1}onBeforeRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onBeforeRender(e)}prepareRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].prepareRender(e)}render(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].render(e)}}class E4e{constructor(e,t,i){this._primaryAnchor=new Y1(null,null),this._secondaryAnchor=new Y1(null,null),this._context=e,this._viewDomNode=t,this._actual=i,this.domNode=an(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const n=this._context.configuration.options,o=n.get(146);this._fixedOverflowWidgets=n.get(42),this._contentWidth=o.contentWidth,this._contentLeft=o.contentLeft,this._lineHeight=n.get(67),this._affinity=null,this._preference=[],this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setDisplay("none"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(e){const t=this._context.configuration.options;if(this._lineHeight=t.get(67),e.hasChanged(146)){const i=t.get(146);this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._maxWidth=this._getMaxWidth()}}updateAnchorViewPosition(){this._setPosition(this._affinity,this._primaryAnchor.modelPosition,this._secondaryAnchor.modelPosition)}_setPosition(e,t,i){this._affinity=e,this._primaryAnchor=n(t,this._context.viewModel,this._affinity),this._secondaryAnchor=n(i,this._context.viewModel,this._affinity);function n(o,l,r){if(!o)return new Y1(null,null);const a=l.model.validatePosition(o);if(l.coordinatesConverter.modelPositionIsVisible(a)){const d=l.coordinatesConverter.convertModelPositionToViewPosition(a,r??void 0);return new Y1(o,d)}return new Y1(o,null)}}_getMaxWidth(){const e=this.domNode.domNode.ownerDocument,t=e.defaultView;return this.allowEditorOverflow?(t==null?void 0:t.innerWidth)||e.documentElement.offsetWidth||e.body.offsetWidth:this._contentWidth}setPosition(e,t,i,n){this._setPosition(n,e,t),this._preference=i,this._primaryAnchor.viewPosition&&this._preference&&this._preference.length>0?this.domNode.setDisplay("block"):this.domNode.setDisplay("none"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(e,t,i,n){const o=e.top,l=o,r=e.top+e.height,a=n.viewportHeight-r,d=o-i,c=l>=i,h=r,u=a>=i;let m=e.left;return m+t>n.scrollLeft+n.viewportWidth&&(m=n.scrollLeft+n.viewportWidth-t),m<n.scrollLeft&&(m=n.scrollLeft),{fitsAbove:c,aboveTop:d,fitsBelow:u,belowTop:h,left:m}}_layoutHorizontalSegmentInPage(e,t,i,n){const r=Math.max(15,t.left-n),a=Math.min(t.left+t.width+n,e.width-15),c=this._viewDomNode.domNode.ownerDocument.defaultView;let h=t.left+i-((c==null?void 0:c.scrollX)??0);if(h+n>a){const u=h-(a-n);h-=u,i-=u}if(h<r){const u=h-r;h-=u,i-=u}return[i,h]}_layoutBoxInPage(e,t,i,n){const o=e.top-i,l=e.top+e.height,r=_s(this._viewDomNode.domNode),a=this._viewDomNode.domNode.ownerDocument,d=a.defaultView,c=r.top+o-((d==null?void 0:d.scrollY)??0),h=r.top+l-((d==null?void 0:d.scrollY)??0),u=N0(a.body),[m,p]=this._layoutHorizontalSegmentInPage(u,r,e.left-n.scrollLeft+this._contentLeft,t),g=22,b=22,f=c>=g,Z=h+i<=u.height-b;return this._fixedOverflowWidgets?{fitsAbove:f,aboveTop:Math.max(c,g),fitsBelow:Z,belowTop:h,left:p}:{fitsAbove:f,aboveTop:o,fitsBelow:Z,belowTop:l,left:m}}_prepareRenderWidgetAtExactPositionOverflowing(e){return new z1(e.top,e.left+this._contentLeft)}_getAnchorsCoordinates(e){var l,r;const t=o(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),i=((l=this._secondaryAnchor.viewPosition)==null?void 0:l.lineNumber)===((r=this._primaryAnchor.viewPosition)==null?void 0:r.lineNumber)?this._secondaryAnchor.viewPosition:null,n=o(i,this._affinity,this._lineHeight);return{primary:t,secondary:n};function o(a,d,c){if(!a)return null;const h=e.visibleRangeForPosition(a);if(!h)return null;const u=a.column===1&&d===3?0:h.left,m=e.getVerticalOffsetForLineNumber(a.lineNumber)-e.scrollTop;return new fae(m,u,c)}}_reduceAnchorCoordinates(e,t,i){if(!t)return e;const n=this._context.configuration.options.get(50);let o=t.left;return o<e.left?o=Math.max(o,e.left-i+n.typicalFullwidthCharacterWidth):o=Math.min(o,e.left+i-n.typicalFullwidthCharacterWidth),new fae(e.top,o,e.height)}_prepareRenderWidget(e){if(!this._preference||this._preference.length===0)return null;const{primary:t,secondary:i}=this._getAnchorsCoordinates(e);if(!t)return{kind:"offViewport",preserveFocus:this.domNode.domNode.contains(this.domNode.domNode.ownerDocument.activeElement)};if(this._cachedDomNodeOffsetWidth===-1||this._cachedDomNodeOffsetHeight===-1){let l=null;if(typeof this._actual.beforeRender=="function"&&(l=K3(this._actual.beforeRender,this._actual)),l)this._cachedDomNodeOffsetWidth=l.width,this._cachedDomNodeOffsetHeight=l.height;else{const a=this.domNode.domNode.getBoundingClientRect();this._cachedDomNodeOffsetWidth=Math.round(a.width),this._cachedDomNodeOffsetHeight=Math.round(a.height)}}const n=this._reduceAnchorCoordinates(t,i,this._cachedDomNodeOffsetWidth);let o;this.allowEditorOverflow?o=this._layoutBoxInPage(n,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,e):o=this._layoutBoxInViewport(n,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,e);for(let l=1;l<=2;l++)for(const r of this._preference)if(r===1){if(!o)return null;if(l===2||o.fitsAbove)return{kind:"inViewport",coordinate:new z1(o.aboveTop,o.left),position:1}}else if(r===2){if(!o)return null;if(l===2||o.fitsBelow)return{kind:"inViewport",coordinate:new z1(o.belowTop,o.left),position:2}}else return this.allowEditorOverflow?{kind:"inViewport",coordinate:this._prepareRenderWidgetAtExactPositionOverflowing(new z1(n.top,n.left)),position:0}:{kind:"inViewport",coordinate:new z1(n.top,n.left),position:0};return null}onBeforeRender(e){!this._primaryAnchor.viewPosition||!this._preference||this._primaryAnchor.viewPosition.lineNumber<e.startLineNumber||this._primaryAnchor.viewPosition.lineNumber>e.endLineNumber||this.domNode.setMaxWidth(this._maxWidth)}prepareRender(e){this._renderData=this._prepareRenderWidget(e)}render(e){var t;if(!this._renderData||this._renderData.kind==="offViewport"){this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,((t=this._renderData)==null?void 0:t.kind)==="offViewport"&&this._renderData.preserveFocus?this.domNode.setTop(-1e3):this.domNode.setVisibility("hidden")),typeof this._actual.afterRender=="function"&&K3(this._actual.afterRender,this._actual,null);return}this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0),typeof this._actual.afterRender=="function"&&K3(this._actual.afterRender,this._actual,this._renderData.position)}}class Y1{constructor(e,t){this.modelPosition=e,this.viewPosition=t}}class z1{constructor(e,t){this.top=e,this.left=t,this._coordinateBrand=void 0}}class fae{constructor(e,t,i){this.top=e,this.left=t,this.height=i,this._anchorCoordinateBrand=void 0}}function K3(s,e,...t){try{return s.call(e,...t)}catch{return null}}class Wfe extends sN{constructor(e){super(),this._context=e;const t=this._context.configuration.options,i=t.get(146);this._renderLineHighlight=t.get(97),this._renderLineHighlightOnlyWhenFocus=t.get(98),this._wordWrap=i.isViewportWrapping,this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[1],this._selections=[new dt(1,1,1,1)],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let e=!1;const t=new Set;for(const o of this._selections)t.add(o.positionLineNumber);const i=Array.from(t);i.sort((o,l)=>o-l),Fs(this._cursorLineNumbers,i)||(this._cursorLineNumbers=i,e=!0);const n=this._selections.every(o=>o.isEmpty());return this._selectionIsEmpty!==n&&(this._selectionIsEmpty=n,e=!0),e}onThemeChanged(e){return this._readFromSelections()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._renderLineHighlight=t.get(97),this._renderLineHighlightOnlyWhenFocus=t.get(98),this._wordWrap=i.isViewportWrapping,this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,!0}onCursorStateChanged(e){return this._selections=e.selections,this._readFromSelections()}onFlushed(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollWidthChanged||e.scrollTopChanged}onZonesChanged(e){return!0}onFocusChanged(e){return this._renderLineHighlightOnlyWhenFocus?(this._focused=e.isFocused,!0):!1}prepareRender(e){if(!this._shouldRenderThis()){this._renderData=null;return}const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=[];for(let l=t;l<=i;l++){const r=l-t;n[r]=""}if(this._wordWrap){const l=this._renderOne(e,!1);for(const r of this._cursorLineNumbers){const a=this._context.viewModel.coordinatesConverter,d=a.convertViewPositionToModelPosition(new oe(r,1)).lineNumber,c=a.convertModelPositionToViewPosition(new oe(d,1)).lineNumber,h=a.convertModelPositionToViewPosition(new oe(d,this._context.viewModel.model.getLineMaxColumn(d))).lineNumber,u=Math.max(c,t),m=Math.min(h,i);for(let p=u;p<=m;p++){const g=p-t;n[g]=l}}}const o=this._renderOne(e,!0);for(const l of this._cursorLineNumbers){if(l<t||l>i)continue;const r=l-t;n[r]=o}this._renderData=n}render(e,t){if(!this._renderData)return"";const i=t-e;return i>=this._renderData.length?"":this._renderData[i]}_shouldRenderInMargin(){return(this._renderLineHighlight==="gutter"||this._renderLineHighlight==="all")&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return(this._renderLineHighlight==="line"||this._renderLineHighlight==="all")&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}class v4e extends Wfe{_renderOne(e,t){return`<div class="${"current-line"+(this._shouldRenderInMargin()?" current-line-both":"")+(t?" current-line-exact":"")}" style="width:${Math.max(e.scrollWidth,this._contentWidth)}px;"></div>`}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}class x4e extends Wfe{_renderOne(e,t){return`<div class="${"current-line"+(this._shouldRenderInMargin()?" current-line-margin":"")+(this._shouldRenderOther()?" current-line-margin-both":"")+(this._shouldRenderInMargin()&&t?" current-line-exact-margin":"")}" style="width:${this._contentLeft}px"></div>`}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}ih((s,e)=>{const t=s.getColor(Dbe);if(t&&(e.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${t}; }`),e.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${t}; border: none; }`)),!t||t.isTransparent()||s.defines(ore)){const i=s.getColor(ore);i&&(e.addRule(`.monaco-editor .view-overlays .current-line-exact { border: 2px solid ${i}; }`),e.addRule(`.monaco-editor .margin-view-overlays .current-line-exact-margin { border: 2px solid ${i}; }`),Yu(s.type)&&(e.addRule(".monaco-editor .view-overlays .current-line-exact { border-width: 1px; }"),e.addRule(".monaco-editor .margin-view-overlays .current-line-exact-margin { border-width: 1px; }")))}});class J4e extends sN{constructor(e){super(),this._context=e;const t=this._context.configuration.options;this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}prepareRender(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let a=0,d=t.length;a<d;a++){const c=t[a];c.options.className&&(i[n++]=c)}i=i.sort((a,d)=>{if(a.options.zIndex<d.options.zIndex)return-1;if(a.options.zIndex>d.options.zIndex)return 1;const c=a.options.className,h=d.options.className;return c<h?-1:c>h?1:v.compareRangesUsingStarts(a.range,d.range)});const o=e.visibleRange.startLineNumber,l=e.visibleRange.endLineNumber,r=[];for(let a=o;a<=l;a++){const d=a-o;r[d]=""}this._renderWholeLineDecorations(e,i,r),this._renderNormalDecorations(e,i,r),this._renderResult=r}_renderWholeLineDecorations(e,t,i){const n=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber;for(let l=0,r=t.length;l<r;l++){const a=t[l];if(!a.options.isWholeLine)continue;const d='<div class="cdr '+a.options.className+'" style="left:0;width:100%;"></div>',c=Math.max(a.range.startLineNumber,n),h=Math.min(a.range.endLineNumber,o);for(let u=c;u<=h;u++){const m=u-n;i[m]+=d}}}_renderNormalDecorations(e,t,i){const n=e.visibleRange.startLineNumber;let o=null,l=!1,r=null,a=!1;for(let d=0,c=t.length;d<c;d++){const h=t[d];if(h.options.isWholeLine)continue;const u=h.options.className,m=!!h.options.showIfCollapsed;let p=h.range;if(m&&p.endColumn===1&&p.endLineNumber!==p.startLineNumber&&(p=new v(p.startLineNumber,p.startColumn,p.endLineNumber-1,this._context.viewModel.getLineMaxColumn(p.endLineNumber-1))),o===u&&l===m&&v.areIntersectingOrTouching(r,p)){r=v.plusRange(r,p);continue}o!==null&&this._renderNormalDecoration(e,r,o,a,l,n,i),o=u,l=m,r=p,a=h.options.shouldFillLineOnLineBreak??!1}o!==null&&this._renderNormalDecoration(e,r,o,a,l,n,i)}_renderNormalDecoration(e,t,i,n,o,l,r){const a=e.linesVisibleRangesForRange(t,i==="findMatch");if(a)for(let d=0,c=a.length;d<c;d++){const h=a[d];if(h.outsideRenderedLine)continue;const u=h.lineNumber-l;if(o&&h.ranges.length===1){const m=h.ranges[0];if(m.width<this._typicalHalfwidthCharacterWidth){const p=Math.round(m.left+m.width/2),g=Math.max(0,Math.round(p-this._typicalHalfwidthCharacterWidth/2));h.ranges[0]=new $Y(g,this._typicalHalfwidthCharacterWidth)}}for(let m=0,p=h.ranges.length;m<p;m++){const g=n&&h.continuesOnNextLine&&p===1,b=h.ranges[m],f='<div class="cdr '+i+'" style="left:'+String(b.left)+"px;width:"+(g?"100%;":String(b.width)+"px;")+'"></div>';r[u]+=f}}}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class X4e extends Cd{constructor(e,t,i,n){super(e);const o=this._context.configuration.options,l=o.get(104),r=o.get(75),a=o.get(40),d=o.get(107),c={listenOnDomNode:i.domNode,className:"editor-scrollable "+qH(e.theme.type),useShadows:!1,lazyRender:!0,vertical:l.vertical,horizontal:l.horizontal,verticalHasArrows:l.verticalHasArrows,horizontalHasArrows:l.horizontalHasArrows,verticalScrollbarSize:l.verticalScrollbarSize,verticalSliderSize:l.verticalSliderSize,horizontalScrollbarSize:l.horizontalScrollbarSize,horizontalSliderSize:l.horizontalSliderSize,handleMouseWheel:l.handleMouseWheel,alwaysConsumeMouseWheel:l.alwaysConsumeMouseWheel,arrowSize:l.arrowSize,mouseWheelScrollSensitivity:r,fastScrollSensitivity:a,scrollPredominantAxis:d,scrollByPage:l.scrollByPage};this.scrollbar=this._register(new QY(t.domNode,c,this._context.viewLayout.getScrollable())),$u.write(this.scrollbar.getDomNode(),6),this.scrollbarDomNode=an(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const h=(u,m,p)=>{const g={};if(m){const b=u.scrollTop;b&&(g.scrollTop=this._context.viewLayout.getCurrentScrollTop()+b,u.scrollTop=0)}if(p){const b=u.scrollLeft;b&&(g.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+b,u.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(g,1)};this._register(ge(i.domNode,"scroll",u=>h(i.domNode,!0,!0))),this._register(ge(t.domNode,"scroll",u=>h(t.domNode,!0,!1))),this._register(ge(n.domNode,"scroll",u=>h(n.domNode,!0,!1))),this._register(ge(this.scrollbarDomNode.domNode,"scroll",u=>h(this.scrollbarDomNode.domNode,!0,!1)))}dispose(){super.dispose()}_setLayout(){const e=this._context.configuration.options,t=e.get(146);this.scrollbarDomNode.setLeft(t.contentLeft),e.get(73).side==="right"?this.scrollbarDomNode.setWidth(t.contentWidth+t.minimap.minimapWidth):this.scrollbarDomNode.setWidth(t.contentWidth),this.scrollbarDomNode.setHeight(t.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(e){this.scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this.scrollbar.delegateScrollFromMouseWheelEvent(e)}onConfigurationChanged(e){if(e.hasChanged(104)||e.hasChanged(75)||e.hasChanged(40)){const t=this._context.configuration.options,i=t.get(104),n=t.get(75),o=t.get(40),l=t.get(107),r={vertical:i.vertical,horizontal:i.horizontal,verticalScrollbarSize:i.verticalScrollbarSize,horizontalScrollbarSize:i.horizontalScrollbarSize,scrollByPage:i.scrollByPage,handleMouseWheel:i.handleMouseWheel,mouseWheelScrollSensitivity:n,fastScrollSensitivity:o,scrollPredominantAxis:l};this.scrollbar.updateOptions(r)}return e.hasChanged(146)&&this._setLayout(),!0}onScrollChanged(e){return!0}onThemeChanged(e){return this.scrollbar.updateClassName("editor-scrollable "+qH(this._context.theme.type)),!0}prepareRender(e){}render(e){this.scrollbar.renderNow()}}class b4{constructor(e,t,i,n,o){this.startLineNumber=e,this.endLineNumber=t,this.className=i,this.tooltip=n,this._decorationToRenderBrand=void 0,this.zIndex=o??0}}class Y4e{constructor(e,t,i){this.className=e,this.zIndex=t,this.tooltip=i}}class z4e{constructor(){this.decorations=[]}add(e){this.decorations.push(e)}getDecorations(){return this.decorations}}class Vfe extends sN{_render(e,t,i){const n=[];for(let r=e;r<=t;r++){const a=r-e;n[a]=new z4e}if(i.length===0)return n;i.sort((r,a)=>r.className===a.className?r.startLineNumber===a.startLineNumber?r.endLineNumber-a.endLineNumber:r.startLineNumber-a.startLineNumber:r.className<a.className?-1:1);let o=null,l=0;for(let r=0,a=i.length;r<a;r++){const d=i[r],c=d.className,h=d.zIndex;let u=Math.max(d.startLineNumber,e)-e;const m=Math.min(d.endLineNumber,t)-e;o===c?(u=Math.max(l+1,u),l=Math.max(l,m)):(o=c,l=m);for(let p=u;p<=l;p++)n[p].add(new Y4e(c,h,d.tooltip))}return n}}class _4e extends Cd{constructor(e){super(e),this._widgets={},this._context=e;const t=this._context.configuration.options,i=t.get(146);this.domNode=an(document.createElement("div")),this.domNode.setClassName("glyph-margin-widgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this._lineHeight=t.get(67),this._glyphMargin=t.get(57),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._glyphMarginDecorationLaneCount=i.glyphMarginDecorationLaneCount,this._managedDomNodes=[],this._decorationGlyphsToRender=[]}dispose(){this._managedDomNodes=[],this._decorationGlyphsToRender=[],this._widgets={},super.dispose()}getWidgets(){return Object.values(this._widgets)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._lineHeight=t.get(67),this._glyphMargin=t.get(57),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._glyphMarginDecorationLaneCount=i.glyphMarginDecorationLaneCount,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}addWidget(e){const t=an(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:e.getPosition(),domNode:t,renderInfo:null},t.setPosition("absolute"),t.setDisplay("none"),t.setAttribute("widgetId",e.getId()),this.domNode.appendChild(t),this.setShouldRender()}setWidgetPosition(e,t){const i=this._widgets[e.getId()];return i.preference.lane===t.lane&&i.preference.zIndex===t.zIndex&&v.equalsRange(i.preference.range,t.range)?!1:(i.preference=t,this.setShouldRender(),!0)}removeWidget(e){const t=e.getId();if(this._widgets[t]){const n=this._widgets[t].domNode.domNode;delete this._widgets[t],n.remove(),this.setShouldRender()}}_collectDecorationBasedGlyphRenderRequest(e,t){var l;const i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,o=e.getDecorationsInViewport();for(const r of o){const a=r.options.glyphMarginClassName;if(!a)continue;const d=Math.max(r.range.startLineNumber,i),c=Math.min(r.range.endLineNumber,n),h=((l=r.options.glyphMargin)==null?void 0:l.position)??Kh.Center,u=r.options.zIndex??0;for(let m=d;m<=c;m++){const p=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new oe(m,0)),g=this._context.viewModel.glyphLanes.getLanesAtLine(p.lineNumber).indexOf(h);t.push(new O4e(m,g,u,a))}}}_collectWidgetBasedGlyphRenderRequest(e,t){const i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber;for(const o of Object.values(this._widgets)){const l=o.preference.range,{startLineNumber:r,endLineNumber:a}=this._context.viewModel.coordinatesConverter.convertModelRangeToViewRange(v.lift(l));if(!r||!a||a<i||r>n)continue;const d=Math.max(r,i),c=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new oe(d,0)),h=this._context.viewModel.glyphLanes.getLanesAtLine(c.lineNumber).indexOf(o.preference.lane);t.push(new j4e(d,h,o.preference.zIndex,o))}}_collectSortedGlyphRenderRequests(e){const t=[];return this._collectDecorationBasedGlyphRenderRequest(e,t),this._collectWidgetBasedGlyphRenderRequest(e,t),t.sort((i,n)=>i.lineNumber===n.lineNumber?i.laneIndex===n.laneIndex?i.zIndex===n.zIndex?n.type===i.type?i.type===0&&n.type===0?i.className<n.className?-1:1:0:n.type-i.type:n.zIndex-i.zIndex:i.laneIndex-n.laneIndex:i.lineNumber-n.lineNumber),t}prepareRender(e){if(!this._glyphMargin){this._decorationGlyphsToRender=[];return}for(const n of Object.values(this._widgets))n.renderInfo=null;const t=new f0(this._collectSortedGlyphRenderRequests(e)),i=[];for(;t.length>0;){const n=t.peek();if(!n)break;const o=t.takeWhile(r=>r.lineNumber===n.lineNumber&&r.laneIndex===n.laneIndex);if(!o||o.length===0)break;const l=o[0];if(l.type===0){const r=[];for(const a of o){if(a.zIndex!==l.zIndex||a.type!==l.type)break;(r.length===0||r[r.length-1]!==a.className)&&r.push(a.className)}i.push(l.accept(r.join(" ")))}else l.widget.renderInfo={lineNumber:l.lineNumber,laneIndex:l.laneIndex}}this._decorationGlyphsToRender=i}render(e){if(!this._glyphMargin){for(const i of Object.values(this._widgets))i.domNode.setDisplay("none");for(;this._managedDomNodes.length>0;){const i=this._managedDomNodes.pop();i==null||i.domNode.remove()}return}const t=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const i of Object.values(this._widgets))if(!i.renderInfo)i.domNode.setDisplay("none");else{const n=e.viewportData.relativeVerticalOffset[i.renderInfo.lineNumber-e.viewportData.startLineNumber],o=this._glyphMarginLeft+i.renderInfo.laneIndex*this._lineHeight;i.domNode.setDisplay("block"),i.domNode.setTop(n),i.domNode.setLeft(o),i.domNode.setWidth(t),i.domNode.setHeight(this._lineHeight)}for(let i=0;i<this._decorationGlyphsToRender.length;i++){const n=this._decorationGlyphsToRender[i],o=e.viewportData.relativeVerticalOffset[n.lineNumber-e.viewportData.startLineNumber],l=this._glyphMarginLeft+n.laneIndex*this._lineHeight;let r;i<this._managedDomNodes.length?r=this._managedDomNodes[i]:(r=an(document.createElement("div")),this._managedDomNodes.push(r),this.domNode.appendChild(r)),r.setClassName("cgmr codicon "+n.combinedClassName),r.setPosition("absolute"),r.setTop(o),r.setLeft(l),r.setWidth(t),r.setHeight(this._lineHeight)}for(;this._managedDomNodes.length>this._decorationGlyphsToRender.length;){const i=this._managedDomNodes.pop();i==null||i.domNode.remove()}}}class O4e{constructor(e,t,i,n){this.lineNumber=e,this.laneIndex=t,this.zIndex=i,this.className=n,this.type=0}accept(e){return new H4e(this.lineNumber,this.laneIndex,e)}}class j4e{constructor(e,t,i,n){this.lineNumber=e,this.laneIndex=t,this.zIndex=i,this.widget=n,this.type=1}}class H4e{constructor(e,t,i){this.lineNumber=e,this.laneIndex=t,this.combinedClassName=i}}class P4e extends sN{constructor(e){super(),this._context=e,this._primaryPosition=null;const t=this._context.configuration.options,i=t.get(147),n=t.get(50);this._spaceWidth=n.spaceWidth,this._maxIndentLeft=i.wrappingColumn===-1?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(147),n=t.get(50);return this._spaceWidth=n.spaceWidth,this._maxIndentLeft=i.wrappingColumn===-1?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),!0}onCursorStateChanged(e){var n;const i=e.selections[0].getPosition();return(n=this._primaryPosition)!=null&&n.equals(i)?!1:(this._primaryPosition=i,!0)}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onLanguageConfigurationChanged(e){return!0}prepareRender(e){var a,d;if(!this._bracketPairGuideOptions.indentation&&this._bracketPairGuideOptions.bracketPairs===!1){this._renderResult=null;return}const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=e.scrollWidth,o=this._primaryPosition,l=this.getGuidesByLine(t,Math.min(i+1,this._context.viewModel.getLineCount()),o),r=[];for(let c=t;c<=i;c++){const h=c-t,u=l[h];let m="";const p=((a=e.visibleRangeForPosition(new oe(c,1)))==null?void 0:a.left)??0;for(const g of u){const b=g.column===-1?p+(g.visibleColumn-1)*this._spaceWidth:e.visibleRangeForPosition(new oe(c,g.column)).left;if(b>n||this._maxIndentLeft>0&&b>this._maxIndentLeft)break;const f=g.horizontalLine?g.horizontalLine.top?"horizontal-top":"horizontal-bottom":"vertical",Z=g.horizontalLine?(((d=e.visibleRangeForPosition(new oe(c,g.horizontalLine.endColumn)))==null?void 0:d.left)??b+this._spaceWidth)-b:this._spaceWidth;m+=`<div class="core-guide ${g.className} ${f}" style="left:${b}px;width:${Z}px"></div>`}r[h]=m}this._renderResult=r}getGuidesByLine(e,t,i){const n=this._bracketPairGuideOptions.bracketPairs!==!1?this._context.viewModel.getBracketGuidesInRangeByLine(e,t,i,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:this._bracketPairGuideOptions.bracketPairsHorizontal===!0?OZ.Enabled:this._bracketPairGuideOptions.bracketPairsHorizontal==="active"?OZ.EnabledForActive:OZ.Disabled,includeInactive:this._bracketPairGuideOptions.bracketPairs===!0}):null,o=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(e,t):null;let l=0,r=0,a=0;if(this._bracketPairGuideOptions.highlightActiveIndentation!==!1&&i){const h=this._context.viewModel.getActiveIndentGuide(i.lineNumber,e,t);l=h.startLineNumber,r=h.endLineNumber,a=h.indent}const{indentSize:d}=this._context.viewModel.model.getOptions(),c=[];for(let h=e;h<=t;h++){const u=new Array;c.push(u);const m=n?n[h-e]:[],p=new f0(m),g=o?o[h-e]:0;for(let b=1;b<=g;b++){const f=(b-1)*d+1,Z=(this._bracketPairGuideOptions.highlightActiveIndentation==="always"||m.length===0)&&l<=h&&h<=r&&b===a;u.push(...p.takeWhile(N=>N.visibleColumn<f)||[]);const A=p.peek();(!A||A.visibleColumn!==f||A.horizontalLine)&&u.push(new VZ(f,-1,`core-guide-indent lvl-${(b-1)%30}`+(Z?" indent-active":""),null,-1,-1))}u.push(...p.takeWhile(b=>!0)||[])}return c}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}function kN(s){if(!(s&&s.isTransparent()))return s}ih((s,e)=>{const t=[{bracketColor:xbe,guideColor:g_e,guideColorActive:A_e},{bracketColor:Jbe,guideColor:b_e,guideColorActive:N_e},{bracketColor:Xbe,guideColor:U_e,guideColorActive:R_e},{bracketColor:Ybe,guideColor:f_e,guideColorActive:S_e},{bracketColor:zbe,guideColor:F_e,guideColorActive:W_e},{bracketColor:_be,guideColor:Z_e,guideColorActive:V_e}],i=new nUe,n=[{indentColor:ZB,indentColorActive:AB},{indentColor:j3e,indentColorActive:$3e},{indentColor:H3e,indentColorActive:e_e},{indentColor:P3e,indentColorActive:t_e},{indentColor:K3e,indentColorActive:i_e},{indentColor:q3e,indentColorActive:n_e}],o=t.map(r=>{const a=s.getColor(r.bracketColor),d=s.getColor(r.guideColor),c=s.getColor(r.guideColorActive),h=kN(kN(d)??(a==null?void 0:a.transparent(.3))),u=kN(kN(c)??a);if(!(!h||!u))return{guideColor:h,guideColorActive:u}}).filter(fp),l=n.map(r=>{const a=s.getColor(r.indentColor),d=s.getColor(r.indentColorActive),c=kN(a),h=kN(d);if(!(!c||!h))return{indentColor:c,indentColorActive:h}}).filter(fp);if(o.length>0){for(let r=0;r<30;r++){const a=o[r%o.length];e.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(r).replace(/ /g,".")} { --guide-color: ${a.guideColor}; --guide-color-active: ${a.guideColorActive}; }`)}e.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"),e.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"),e.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"),e.addRule(`.monaco-editor .vertical.${i.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`),e.addRule(`.monaco-editor .horizontal-top.${i.activeClassName} { border-top: 1px solid var(--guide-color-active); }`),e.addRule(`.monaco-editor .horizontal-bottom.${i.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)}if(l.length>0){for(let r=0;r<30;r++){const a=l[r%l.length];e.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${r} { --indent-color: ${a.indentColor}; --indent-color-active: ${a.indentColorActive}; }`)}e.addRule(".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }"),e.addRule(".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }")}});class q3{get didDomLayout(){return this._didDomLayout}readClientRect(){if(!this._clientRectRead){this._clientRectRead=!0;const e=this._domNode.getBoundingClientRect();this.markDidDomLayout(),this._clientRectDeltaLeft=e.left,this._clientRectScale=e.width/this._domNode.offsetWidth}}get clientRectDeltaLeft(){return this._clientRectRead||this.readClientRect(),this._clientRectDeltaLeft}get clientRectScale(){return this._clientRectRead||this.readClientRect(),this._clientRectScale}constructor(e,t){this._domNode=e,this.endNode=t,this._didDomLayout=!1,this._clientRectDeltaLeft=0,this._clientRectScale=1,this._clientRectRead=!1}markDidDomLayout(){this._didDomLayout=!0}}class K4e{constructor(){this._currentVisibleRange=new v(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(e){this._currentVisibleRange=e}}class q4e{constructor(e,t,i,n,o,l,r){this.minimalReveal=e,this.lineNumber=t,this.startColumn=i,this.endColumn=n,this.startScrollTop=o,this.stopScrollTop=l,this.scrollType=r,this.type="range",this.minLineNumber=t,this.maxLineNumber=t}}class $4e{constructor(e,t,i,n,o){this.minimalReveal=e,this.selections=t,this.startScrollTop=i,this.stopScrollTop=n,this.scrollType=o,this.type="selections";let l=t[0].startLineNumber,r=t[0].endLineNumber;for(let a=1,d=t.length;a<d;a++){const c=t[a];l=Math.min(l,c.startLineNumber),r=Math.max(r,c.endLineNumber)}this.minLineNumber=l,this.maxLineNumber=r}}const GX=class GX extends Cd{constructor(e,t){super(e);const i=this._context.configuration,n=this._context.configuration.options,o=n.get(50),l=n.get(147);this._lineHeight=n.get(67),this._typicalHalfwidthCharacterWidth=o.typicalHalfwidthCharacterWidth,this._isViewportWrapping=l.isViewportWrapping,this._revealHorizontalRightPadding=n.get(101),this._cursorSurroundingLines=n.get(29),this._cursorSurroundingLinesStyle=n.get(30),this._canUseLayerHinting=!n.get(32),this._viewLineOptions=new cae(i,this._context.theme.type),this._linesContent=t,this._textRangeRestingSpot=document.createElement("div"),this._visibleLines=new Rfe({createLine:()=>new Xg(this._viewLineOptions)}),this.domNode=this._visibleLines.domNode,$u.write(this.domNode,8),this.domNode.setClassName(`view-lines ${wW}`),Al(this.domNode,o),this._maxLineWidth=0,this._asyncUpdateLineWidths=new Rn(()=>{this._updateLineWidthsSlow()},200),this._asyncCheckMonospaceFontAssumptions=new Rn(()=>{this._checkMonospaceFontAssumptions()},2e3),this._lastRenderedData=new K4e,this._horizontalRevealRequest=null,this._stickyScrollEnabled=n.get(116).enabled,this._maxNumberStickyLines=n.get(116).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e),e.hasChanged(147)&&(this._maxLineWidth=0);const t=this._context.configuration.options,i=t.get(50),n=t.get(147);return this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._isViewportWrapping=n.isViewportWrapping,this._revealHorizontalRightPadding=t.get(101),this._cursorSurroundingLines=t.get(29),this._cursorSurroundingLinesStyle=t.get(30),this._canUseLayerHinting=!t.get(32),this._stickyScrollEnabled=t.get(116).enabled,this._maxNumberStickyLines=t.get(116).maxLineCount,Al(this.domNode,i),this._onOptionsMaybeChanged(),e.hasChanged(146)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const e=this._context.configuration,t=new cae(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++)this._visibleLines.getVisibleLine(o).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=!1;for(let o=t;o<=i;o++)n=this._visibleLines.getVisibleLine(o).onSelectionChanged()||n;return n}onDecorationsChanged(e){{const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let n=t;n<=i;n++)this._visibleLines.getVisibleLine(n).onDecorationsChanged()}return!0}onFlushed(e){const t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onRevealRangeRequest(e){const t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.source,e.minimalReveal,e.range,e.selections,e.verticalType);if(t===-1)return!1;let i=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range&&e.range.startLineNumber!==e.range.endLineNumber?i={scrollTop:i.scrollTop,scrollLeft:0}:e.range?this._horizontalRevealRequest=new q4e(e.minimalReveal,e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType):e.selections&&e.selections.length>0&&(this._horizontalRevealRequest=new $4e(e.minimalReveal,e.selections,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType)):this._horizontalRevealRequest=null;const o=Math.abs(this._context.viewLayout.getCurrentScrollTop()-i.scrollTop)<=this._lineHeight?1:e.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(i,o),!0}onScrollChanged(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){const t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),i=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTop<t||e.scrollTop>i)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(e)}onThemeChanged(e){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(e,t){const i=this._getViewLineDomNode(e);if(i===null)return null;const n=this._getLineNumberFor(i);if(n===-1||n<1||n>this._context.viewModel.getLineCount())return null;if(this._context.viewModel.getLineMaxColumn(n)===1)return new oe(n,1);const o=this._visibleLines.getStartLineNumber(),l=this._visibleLines.getEndLineNumber();if(n<o||n>l)return null;let r=this._visibleLines.getVisibleLine(n).getColumnOfNodeOffset(e,t);const a=this._context.viewModel.getLineMinColumn(n);return r<a&&(r=a),new oe(n,r)}_getViewLineDomNode(e){for(;e&&e.nodeType===1;){if(e.className===Xg.CLASS_NAME)return e;e=e.parentElement}return null}_getLineNumberFor(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let n=t;n<=i;n++){const o=this._visibleLines.getVisibleLine(n);if(e===o.getDomNode())return n}return-1}getLineWidth(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();if(e<t||e>i)return-1;const n=new q3(this.domNode.domNode,this._textRangeRestingSpot),o=this._visibleLines.getVisibleLine(e).getWidth(n);return this._updateLineWidthsSlowIfDomDidLayout(n),o}linesVisibleRangesForRange(e,t){if(this.shouldRender())return null;const i=e.endLineNumber,n=v.intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!n)return null;const o=[];let l=0;const r=new q3(this.domNode.domNode,this._textRangeRestingSpot);let a=0;t&&(a=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new oe(n.startLineNumber,1)).lineNumber);const d=this._visibleLines.getStartLineNumber(),c=this._visibleLines.getEndLineNumber();for(let h=n.startLineNumber;h<=n.endLineNumber;h++){if(h<d||h>c)continue;const u=h===n.startLineNumber?n.startColumn:1,m=h!==n.endLineNumber,p=m?this._context.viewModel.getLineMaxColumn(h):n.endColumn,g=this._visibleLines.getVisibleLine(h).getVisibleRangesForRange(h,u,p,r);if(g){if(t&&h<i){const b=a;a=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new oe(h+1,1)).lineNumber,b!==a&&(g.ranges[g.ranges.length-1].width+=this._typicalHalfwidthCharacterWidth)}o[l++]=new DKe(g.outsideRenderedLine,h,$Y.from(g.ranges),m)}}return this._updateLineWidthsSlowIfDomDidLayout(r),l===0?null:o}_visibleRangesForLineRange(e,t,i){if(this.shouldRender()||e<this._visibleLines.getStartLineNumber()||e>this._visibleLines.getEndLineNumber())return null;const n=new q3(this.domNode.domNode,this._textRangeRestingSpot),o=this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(e,t,i,n);return this._updateLineWidthsSlowIfDomDidLayout(n),o}visibleRangeForPosition(e){const t=this._visibleRangesForLineRange(e.lineNumber,e.column,e.column);return t?new GKe(t.outsideRenderedLine,t.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(e){e.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=1,o=!0;for(let l=t;l<=i;l++){const r=this._visibleLines.getVisibleLine(l);if(e&&!r.getWidthIsFast()){o=!1;continue}n=Math.max(n,r.getWidth(null))}return o&&t===1&&i===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(n),o}_checkMonospaceFontAssumptions(){let e=-1,t=-1;const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++){const l=this._visibleLines.getVisibleLine(o);if(l.needsMonospaceFontCheck()){const r=l.getWidth(null);r>t&&(t=r,e=o)}}if(e!==-1&&!this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())for(let o=i;o<=n;o++)this._visibleLines.getVisibleLine(o).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const i=this._horizontalRevealRequest;if(e.startLineNumber<=i.minLineNumber&&i.maxLineNumber<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const n=this._computeScrollLeftToReveal(i);n&&(this._isViewportWrapping||this._ensureMaxLineWidth(n.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:n.scrollLeft},i.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),sa&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let o=i;o<=n;o++)if(this._visibleLines.getVisibleLine(o).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const t=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-t),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(e){const t=Math.ceil(e);this._maxLineWidth<t&&(this._maxLineWidth=t,this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth))}_computeScrollTopToRevealRange(e,t,i,n,o,l){const r=e.top,a=e.height,d=r+a;let c,h,u;if(o&&o.length>0){let f=o[0].startLineNumber,Z=o[0].endLineNumber;for(let A=1,N=o.length;A<N;A++){const W=o[A];f=Math.min(f,W.startLineNumber),Z=Math.max(Z,W.endLineNumber)}c=!1,h=this._context.viewLayout.getVerticalOffsetForLineNumber(f),u=this._context.viewLayout.getVerticalOffsetForLineNumber(Z)+this._lineHeight}else if(n)c=!0,h=this._context.viewLayout.getVerticalOffsetForLineNumber(n.startLineNumber),u=this._context.viewLayout.getVerticalOffsetForLineNumber(n.endLineNumber)+this._lineHeight;else return-1;const m=(t==="mouse"||i)&&this._cursorSurroundingLinesStyle==="default";let p=0,g=0;if(m)i||(p=this._lineHeight);else{const f=a/this._lineHeight,Z=Math.max(this._cursorSurroundingLines,this._stickyScrollEnabled?this._maxNumberStickyLines:0),A=Math.min(f/2,Z);p=A*this._lineHeight,g=Math.max(0,A-1)*this._lineHeight}i||(l===0||l===4)&&(g+=this._lineHeight),h-=p,u+=g;let b;if(u-h>a){if(!c)return-1;b=h}else if(l===5||l===6)if(l===6&&r<=h&&u<=d)b=r;else{const f=Math.max(5*this._lineHeight,a*.2),Z=h-f,A=u-a;b=Math.max(A,Z)}else if(l===1||l===2)if(l===2&&r<=h&&u<=d)b=r;else{const f=(h+u)/2;b=Math.max(0,f-a/2)}else b=this._computeMinimumScrolling(r,d,h,u,l===3,l===4);return b}_computeScrollLeftToReveal(e){const t=this._context.viewLayout.getCurrentViewport(),i=this._context.configuration.options.get(146),n=t.left,o=n+t.width-i.verticalScrollbarWidth;let l=1073741824,r=0;if(e.type==="range"){const d=this._visibleRangesForLineRange(e.lineNumber,e.startColumn,e.endColumn);if(!d)return null;for(const c of d.ranges)l=Math.min(l,Math.round(c.left)),r=Math.max(r,Math.round(c.left+c.width))}else for(const d of e.selections){if(d.startLineNumber!==d.endLineNumber)return null;const c=this._visibleRangesForLineRange(d.startLineNumber,d.startColumn,d.endColumn);if(!c)return null;for(const h of c.ranges)l=Math.min(l,Math.round(h.left)),r=Math.max(r,Math.round(h.left+h.width))}return e.minimalReveal||(l=Math.max(0,l-GX.HORIZONTAL_EXTRA_PX),r+=this._revealHorizontalRightPadding),e.type==="selections"&&r-l>t.width?null:{scrollLeft:this._computeMinimumScrolling(n,o,l,r),maxHorizontalOffset:r}}_computeMinimumScrolling(e,t,i,n,o,l){e=e|0,t=t|0,i=i|0,n=n|0,o=!!o,l=!!l;const r=t-e;if(n-i<r){if(o)return i;if(l)return Math.max(0,n-r);if(i<e)return i;if(n>t)return Math.max(0,n-r)}else return i;return e}};GX.HORIZONTAL_EXTRA_PX=30;let U4=GX;class e7e extends Vfe{constructor(e){super(),this._context=e;const i=this._context.configuration.options.get(146);this._decorationsLeft=i.decorationsLeft,this._decorationsWidth=i.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const i=this._context.configuration.options.get(146);return this._decorationsLeft=i.decorationsLeft,this._decorationsWidth=i.decorationsWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport(),i=[];let n=0;for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.options.linesDecorationsClassName,d=r.options.zIndex;a&&(i[n++]=new b4(r.range.startLineNumber,r.range.endLineNumber,a,r.options.linesDecorationsTooltip??null,d));const c=r.options.firstLineDecorationClassName;c&&(i[n++]=new b4(r.range.startLineNumber,r.range.startLineNumber,c,r.options.linesDecorationsTooltip??null,d))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),o=this._decorationsLeft.toString(),l=this._decorationsWidth.toString(),r='" style="left:'+o+"px;width:"+l+'px;"></div>',a=[];for(let d=t;d<=i;d++){const c=d-t,h=n[c].getDecorations();let u="";for(const m of h){let p='<div class="cldr '+m.className;m.tooltip!==null&&(p+='" title="'+m.tooltip),p+=r,u+=p}a[c]=u}this._renderResult=a}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}class t7e extends Vfe{constructor(e){super(),this._context=e,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport(),i=[];let n=0;for(let o=0,l=t.length;o<l;o++){const r=t[o],a=r.options.marginClassName,d=r.options.zIndex;a&&(i[n++]=new b4(r.range.startLineNumber,r.range.endLineNumber,a,null,d))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),o=[];for(let l=t;l<=i;l++){const r=l-t,a=n[r].getDecorations();let d="";for(const c of a)d+='<div class="cmdr '+c.className+'" style=""></div>';o[r]=d}this._renderResult=o}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}const kb=class kb{constructor(e,t,i,n){this._rgba8Brand=void 0,this.r=kb._clamp(e),this.g=kb._clamp(t),this.b=kb._clamp(i),this.a=kb._clamp(n)}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}static _clamp(e){return e<0?0:e>255?255:e|0}};kb.Empty=new kb(0,0,0,0);let u0=kb;const EX=class EX extends de{static getInstance(){return this._INSTANCE||(this._INSTANCE=new EX),this._INSTANCE}constructor(){super(),this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(Ds.onDidChange(e=>{e.changedColorMap&&this._updateColorMap()}))}_updateColorMap(){const e=Ds.getColorMap();if(!e){this._colors=[u0.Empty],this._backgroundIsLight=!0;return}this._colors=[u0.Empty];for(let i=1;i<e.length;i++){const n=e[i].rgba;this._colors[i]=new u0(n.r,n.g,n.b,Math.round(n.a*255))}const t=e[2].getRelativeLuminance();this._backgroundIsLight=t>=.5,this._onDidChange.fire(void 0)}getColor(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]}backgroundIsLight(){return this._backgroundIsLight}};EX._INSTANCE=null;let dx=EX;const i7e=(()=>{const s=[];for(let e=32;e<=126;e++)s.push(e);return s.push(65533),s})(),n7e=(s,e)=>(s-=32,s<0||s>96?e<=2?(s+96)%96:96-1:s);class OM{constructor(e,t){this.scale=t,this._minimapCharRendererBrand=void 0,this.charDataNormal=OM.soften(e,12/15),this.charDataLight=OM.soften(e,50/60)}static soften(e,t){const i=new Uint8ClampedArray(e.length);for(let n=0,o=e.length;n<o;n++)i[n]=HE(e[n]*t);return i}renderChar(e,t,i,n,o,l,r,a,d,c,h){const u=1*this.scale,m=2*this.scale,p=h?1:m;if(t+u>e.width||i+p>e.height){console.warn("bad render request outside image data");return}const g=c?this.charDataLight:this.charDataNormal,b=n7e(n,d),f=e.width*4,Z=r.r,A=r.g,N=r.b,W=o.r-Z,Q=o.g-A,R=o.b-N,M=Math.max(l,a),w=e.data;let Y=b*u*m,G=i*f+t*4;for(let P=0;P<p;P++){let j=G;for(let X=0;X<u;X++){const ie=g[Y++]/255*(l/255);w[j++]=Z+W*ie,w[j++]=A+Q*ie,w[j++]=N+R*ie,w[j++]=M}G+=f}}blockRenderChar(e,t,i,n,o,l,r,a){const d=1*this.scale,c=2*this.scale,h=a?1:c;if(t+d>e.width||i+h>e.height){console.warn("bad render request outside image data");return}const u=e.width*4,m=.5*(o/255),p=l.r,g=l.g,b=l.b,f=n.r-p,Z=n.g-g,A=n.b-b,N=p+f*m,W=g+Z*m,Q=b+A*m,R=Math.max(o,r),M=e.data;let w=i*u+t*4;for(let Y=0;Y<h;Y++){let G=w;for(let P=0;P<d;P++)M[G++]=N,M[G++]=W,M[G++]=Q,M[G++]=R;w+=u}}}const Fae={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},Zae=s=>{const e=new Uint8ClampedArray(s.length/2);for(let t=0;t<s.length;t+=2)e[t>>1]=Fae[s[t]]<<4|Fae[s[t+1]]&15;return e},Aae={1:zU(()=>Zae("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")),2:zU(()=>Zae("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126"))};class CC{static create(e,t){if(this.lastCreated&&e===this.lastCreated.scale&&t===this.lastFontFamily)return this.lastCreated;let i;return Aae[e]?i=new OM(Aae[e](),e):i=CC.createFromSampleData(CC.createSampleData(t).data,e),this.lastFontFamily=t,this.lastCreated=i,i}static createSampleData(e){const t=document.createElement("canvas"),i=t.getContext("2d");t.style.height="16px",t.height=16,t.width=96*10,t.style.width=96*10+"px",i.fillStyle="#ffffff",i.font=`bold 16px ${e}`,i.textBaseline="middle";let n=0;for(const o of i7e)i.fillText(String.fromCharCode(o),n,16/2),n+=10;return i.getImageData(0,0,96*10,16)}static createFromSampleData(e,t){if(e.length!==61440)throw new Error("Unexpected source in MinimapCharRenderer");const n=CC._downsample(e,t);return new OM(n,t)}static _downsampleChar(e,t,i,n,o){const l=1*o,r=2*o;let a=n,d=0;for(let c=0;c<r;c++){const h=c/r*16,u=(c+1)/r*16;for(let m=0;m<l;m++){const p=m/l*10,g=(m+1)/l*10;let b=0,f=0;for(let A=h;A<u;A++){const N=t+Math.floor(A)*3840,W=1-(A-Math.floor(A));for(let Q=p;Q<g;Q++){const R=1-(Q-Math.floor(Q)),M=N+Math.floor(Q)*4,w=R*W;f+=w,b+=e[M]*e[M+3]/255*w}}const Z=b/f;d=Math.max(d,Z),i[a++]=HE(Z)}}return d}static _downsample(e,t){const i=2*t*1*t,n=i*96,o=new Uint8ClampedArray(n);let l=0,r=0,a=0;for(let d=0;d<96;d++)a=Math.max(a,this._downsampleChar(e,r,o,l,t)),l+=i,r+=10*4;if(a>0){const d=255/a;for(let c=0;c<n;c++)o[c]*=d}return o}}const Qfe=Gl?'"Segoe WPC", "Segoe UI", sans-serif':Fi?"-apple-system, BlinkMacSystemFont, sans-serif":'system-ui, "Ubuntu", "Droid Sans", sans-serif',s7e=140,o7e=2;class BW{constructor(e,t,i){const n=e.options,o=n.get(144),l=n.get(146),r=l.minimap,a=n.get(50),d=n.get(73);this.renderMinimap=r.renderMinimap,this.size=d.size,this.minimapHeightIsEditorHeight=r.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=n.get(106),this.paddingTop=n.get(84).top,this.paddingBottom=n.get(84).bottom,this.showSlider=d.showSlider,this.autohide=d.autohide,this.pixelRatio=o,this.typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this.lineHeight=n.get(67),this.minimapLeft=r.minimapLeft,this.minimapWidth=r.minimapWidth,this.minimapHeight=l.height,this.canvasInnerWidth=r.minimapCanvasInnerWidth,this.canvasInnerHeight=r.minimapCanvasInnerHeight,this.canvasOuterWidth=r.minimapCanvasOuterWidth,this.canvasOuterHeight=r.minimapCanvasOuterHeight,this.isSampling=r.minimapIsSampling,this.editorHeight=l.height,this.fontScale=r.minimapScale,this.minimapLineHeight=r.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.sectionHeaderFontFamily=Qfe,this.sectionHeaderFontSize=d.sectionHeaderFontSize*o,this.sectionHeaderLetterSpacing=d.sectionHeaderLetterSpacing,this.sectionHeaderFontColor=BW._getSectionHeaderColor(t,i.getColor(1)),this.charRenderer=zU(()=>CC.create(this.fontScale,a.fontFamily)),this.defaultBackgroundColor=i.getColor(2),this.backgroundColor=BW._getMinimapBackground(t,this.defaultBackgroundColor),this.foregroundAlpha=BW._getMinimapForegroundOpacity(t)}static _getMinimapBackground(e,t){const i=e.getColor(jXe);return i?new u0(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}static _getMinimapForegroundOpacity(e){const t=e.getColor(HXe);return t?u0._clamp(Math.round(255*t.rgba.a)):255}static _getSectionHeaderColor(e,t){const i=e.getColor(Dp);return i?new u0(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}equals(e){return this.renderMinimap===e.renderMinimap&&this.size===e.size&&this.minimapHeightIsEditorHeight===e.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===e.scrollBeyondLastLine&&this.paddingTop===e.paddingTop&&this.paddingBottom===e.paddingBottom&&this.showSlider===e.showSlider&&this.autohide===e.autohide&&this.pixelRatio===e.pixelRatio&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.lineHeight===e.lineHeight&&this.minimapLeft===e.minimapLeft&&this.minimapWidth===e.minimapWidth&&this.minimapHeight===e.minimapHeight&&this.canvasInnerWidth===e.canvasInnerWidth&&this.canvasInnerHeight===e.canvasInnerHeight&&this.canvasOuterWidth===e.canvasOuterWidth&&this.canvasOuterHeight===e.canvasOuterHeight&&this.isSampling===e.isSampling&&this.editorHeight===e.editorHeight&&this.fontScale===e.fontScale&&this.minimapLineHeight===e.minimapLineHeight&&this.minimapCharWidth===e.minimapCharWidth&&this.sectionHeaderFontSize===e.sectionHeaderFontSize&&this.sectionHeaderLetterSpacing===e.sectionHeaderLetterSpacing&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(e.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(e.backgroundColor)&&this.foregroundAlpha===e.foregroundAlpha}}class wC{constructor(e,t,i,n,o,l,r,a,d){this.scrollTop=e,this.scrollHeight=t,this.sliderNeeded=i,this._computedSliderRatio=n,this.sliderTop=o,this.sliderHeight=l,this.topPaddingLineCount=r,this.startLineNumber=a,this.endLineNumber=d}getDesiredScrollTopFromDelta(e){return Math.round(this.scrollTop+e/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(e){return Math.round((e-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumber,e.endLineNumber);return t>i?null:[t,i]}getYForLineNumber(e,t){return+(e-this.startLineNumber+this.topPaddingLineCount)*t}static create(e,t,i,n,o,l,r,a,d,c,h){const u=e.pixelRatio,m=e.minimapLineHeight,p=Math.floor(e.canvasInnerHeight/m),g=e.lineHeight;if(e.minimapHeightIsEditorHeight){let Q=a*e.lineHeight+e.paddingTop+e.paddingBottom;e.scrollBeyondLastLine&&(Q+=Math.max(0,o-e.lineHeight-e.paddingBottom));const R=Math.max(1,Math.floor(o*o/Q)),M=Math.max(0,e.minimapHeight-R),w=M/(c-o),Y=d*w,G=M>0,P=Math.floor(e.canvasInnerHeight/e.minimapLineHeight),j=Math.floor(e.paddingTop/e.lineHeight);return new wC(d,c,G,w,Y,R,j,1,Math.min(r,P))}let b;if(l&&i!==r){const Q=i-t+1;b=Math.floor(Q*m/u)}else{const Q=o/g;b=Math.floor(Q*m/u)}const f=Math.floor(e.paddingTop/g);let Z=Math.floor(e.paddingBottom/g);if(e.scrollBeyondLastLine){const Q=o/g;Z=Math.max(Z,Q-1)}let A;if(Z>0){const Q=o/g;A=(f+r+Z-Q-1)*m/u}else A=Math.max(0,(f+r)*m/u-b);A=Math.min(e.minimapHeight-b,A);const N=A/(c-o),W=d*N;if(p>=f+r+Z){const Q=A>0;return new wC(d,c,Q,N,W,b,f,1,r)}else{let Q;t>1?Q=t+f:Q=Math.max(1,d/g);let R,M=Math.max(1,Math.floor(Q-W*u/m));M<f?(R=f-M+1,M=1):(R=0,M=Math.max(1,M-f)),h&&h.scrollHeight===c&&(h.scrollTop>d&&(M=Math.min(M,h.startLineNumber),R=Math.max(R,h.topPaddingLineCount)),h.scrollTop<d&&(M=Math.max(M,h.startLineNumber),R=Math.min(R,h.topPaddingLineCount)));const w=Math.min(r,M-R+p-1),Y=(d-n)/g;let G;return d>=e.paddingTop?G=(t-M+R+Y)*m/u:G=d/e.paddingTop*(R+Y)*m/u,new wC(d,c,!0,N,G,b,R,M,w)}}}const vX=class vX{constructor(e){this.dy=e}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}};vX.INVALID=new vX(-1);let cx=vX;class Nae{constructor(e,t,i){this.renderedLayout=e,this._imageData=t,this._renderedLines=new Nfe({createLine:()=>cx.INVALID}),this._renderedLines._set(e.startLineNumber,i)}linesEquals(e){if(!this.scrollEquals(e))return!1;const i=this._renderedLines._get().lines;for(let n=0,o=i.length;n<o;n++)if(i[n].dy===-1)return!1;return!0}scrollEquals(e){return this.renderedLayout.startLineNumber===e.startLineNumber&&this.renderedLayout.endLineNumber===e.endLineNumber}_get(){const e=this._renderedLines._get();return{imageData:this._imageData,rendLineNumberStart:e.rendLineNumberStart,lines:e.lines}}onLinesChanged(e,t){return this._renderedLines.onLinesChanged(e,t)}onLinesDeleted(e,t){this._renderedLines.onLinesDeleted(e,t)}onLinesInserted(e,t){this._renderedLines.onLinesInserted(e,t)}onTokensChanged(e){return this._renderedLines.onTokensChanged(e)}}class yte{constructor(e,t,i,n){this._backgroundFillData=yte._createBackgroundFillData(t,i,n),this._buffers=[e.createImageData(t,i),e.createImageData(t,i)],this._lastUsedBuffer=0}getBuffer(){this._lastUsedBuffer=1-this._lastUsedBuffer;const e=this._buffers[this._lastUsedBuffer];return e.data.set(this._backgroundFillData),e}static _createBackgroundFillData(e,t,i){const n=i.r,o=i.g,l=i.b,r=i.a,a=new Uint8ClampedArray(e*t*4);let d=0;for(let c=0;c<t;c++)for(let h=0;h<e;h++)a[d]=n,a[d+1]=o,a[d+2]=l,a[d+3]=r,d+=4;return a}}class jM{static compute(e,t,i){if(e.renderMinimap===0||!e.isSampling)return[null,[]];const{minimapLineCount:n}=uW.computeContainedMinimapLineCount({viewLineCount:t,scrollBeyondLastLine:e.scrollBeyondLastLine,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:e.editorHeight,lineHeight:e.lineHeight,pixelRatio:e.pixelRatio}),o=t/n,l=o/2;if(!i||i.minimapLines.length===0){const b=[];if(b[0]=1,n>1){for(let f=0,Z=n-1;f<Z;f++)b[f]=Math.round(f*o+l);b[n-1]=t}return[new jM(o,b),[]]}const r=i.minimapLines,a=r.length,d=[];let c=0,h=0,u=1;const m=10;let p=[],g=null;for(let b=0;b<n;b++){const f=Math.max(u,Math.round(b*o)),Z=Math.max(f,Math.round((b+1)*o));for(;c<a&&r[c]<f;){if(p.length<m){const N=c+1+h;g&&g.type==="deleted"&&g._oldIndex===c-1?g.deleteToLineNumber++:(g={type:"deleted",_oldIndex:c,deleteFromLineNumber:N,deleteToLineNumber:N},p.push(g)),h--}c++}let A;if(c<a&&r[c]<=Z)A=r[c],c++;else if(b===0?A=1:b+1===n?A=t:A=Math.round(b*o+l),p.length<m){const N=c+1+h;g&&g.type==="inserted"&&g._i===b-1?g.insertToLineNumber++:(g={type:"inserted",_i:b,insertFromLineNumber:N,insertToLineNumber:N},p.push(g)),h++}d[b]=A,u=A}if(p.length<m)for(;c<a;){const b=c+1+h;g&&g.type==="deleted"&&g._oldIndex===c-1?g.deleteToLineNumber++:(g={type:"deleted",_oldIndex:c,deleteFromLineNumber:b,deleteToLineNumber:b},p.push(g)),h--,c++}else p=[{type:"flush"}];return[new jM(o,d),p]}constructor(e,t){this.samplingRatio=e,this.minimapLines=t}modelLineToMinimapLine(e){return Math.min(this.minimapLines.length,Math.max(1,Math.round(e/this.samplingRatio)))}modelLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e)-1;for(;i>0&&this.minimapLines[i-1]>=e;)i--;let n=this.modelLineToMinimapLine(t)-1;for(;n+1<this.minimapLines.length&&this.minimapLines[n+1]<=t;)n++;if(i===n){const o=this.minimapLines[i];if(o<e||o>t)return null}return[i+1,n+1]}decorationLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e),n=this.modelLineToMinimapLine(t);return e!==t&&n===i&&(n===this.minimapLines.length?i>1&&i--:n++),[i,n]}onLinesDeleted(e){const t=e.toLineNumber-e.fromLineNumber+1;let i=this.minimapLines.length,n=0;for(let o=this.minimapLines.length-1;o>=0&&!(this.minimapLines[o]<e.fromLineNumber);o--)this.minimapLines[o]<=e.toLineNumber?(this.minimapLines[o]=Math.max(1,e.fromLineNumber-1),i=Math.min(i,o),n=Math.max(n,o)):this.minimapLines[o]-=t;return[i,n]}onLinesInserted(e){const t=e.toLineNumber-e.fromLineNumber+1;for(let i=this.minimapLines.length-1;i>=0&&!(this.minimapLines[i]<e.fromLineNumber);i--)this.minimapLines[i]+=t}}class l7e extends Cd{constructor(e){super(e),this._sectionHeaderCache=new Ip(10,1.5),this.tokensColorTracker=dx.getInstance(),this._selections=[],this._minimapSelections=null,this.options=new BW(this._context.configuration,this._context.theme,this.tokensColorTracker);const[t]=jM.compute(this.options,this._context.viewModel.getLineCount(),null);this._samplingState=t,this._shouldCheckSampling=!1,this._actual=new FS(e.theme,this)}dispose(){this._actual.dispose(),super.dispose()}getDomNode(){return this._actual.getDomNode()}_onOptionsMaybeChanged(){const e=new BW(this._context.configuration,this._context.theme,this.tokensColorTracker);return this.options.equals(e)?!1:(this.options=e,this._recreateLineSampling(),this._actual.onDidChangeOptions(),!0)}onConfigurationChanged(e){return this._onOptionsMaybeChanged()}onCursorStateChanged(e){return this._selections=e.selections,this._minimapSelections=null,this._actual.onSelectionChanged()}onDecorationsChanged(e){return e.affectsMinimap?this._actual.onDecorationsChanged():!1}onFlushed(e){return this._samplingState&&(this._shouldCheckSampling=!0),this._actual.onFlushed()}onLinesChanged(e){if(this._samplingState){const t=this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber,e.fromLineNumber+e.count-1);return t?this._actual.onLinesChanged(t[0],t[1]-t[0]+1):!1}else return this._actual.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){if(this._samplingState){const[t,i]=this._samplingState.onLinesDeleted(e);return t<=i&&this._actual.onLinesChanged(t+1,i-t+1),this._shouldCheckSampling=!0,!0}else return this._actual.onLinesDeleted(e.fromLineNumber,e.toLineNumber)}onLinesInserted(e){return this._samplingState?(this._samplingState.onLinesInserted(e),this._shouldCheckSampling=!0,!0):this._actual.onLinesInserted(e.fromLineNumber,e.toLineNumber)}onScrollChanged(e){return this._actual.onScrollChanged()}onThemeChanged(e){return this._actual.onThemeChanged(),this._onOptionsMaybeChanged(),!0}onTokensChanged(e){if(this._samplingState){const t=[];for(const i of e.ranges){const n=this._samplingState.modelLineRangeToMinimapLineRange(i.fromLineNumber,i.toLineNumber);n&&t.push({fromLineNumber:n[0],toLineNumber:n[1]})}return t.length?this._actual.onTokensChanged(t):!1}else return this._actual.onTokensChanged(e.ranges)}onTokensColorsChanged(e){return this._onOptionsMaybeChanged(),this._actual.onTokensColorsChanged()}onZonesChanged(e){return this._actual.onZonesChanged()}prepareRender(e){this._shouldCheckSampling&&(this._shouldCheckSampling=!1,this._recreateLineSampling())}render(e){let t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber;this._samplingState&&(t=this._samplingState.modelLineToMinimapLine(t),i=this._samplingState.modelLineToMinimapLine(i));const n={viewportContainsWhitespaceGaps:e.viewportData.whitespaceViewportData.length>0,scrollWidth:e.scrollWidth,scrollHeight:e.scrollHeight,viewportStartLineNumber:t,viewportEndLineNumber:i,viewportStartLineNumberVerticalOffset:e.getVerticalOffsetForLineNumber(t),scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,viewportWidth:e.viewportWidth,viewportHeight:e.viewportHeight};this._actual.render(n)}_recreateLineSampling(){this._minimapSelections=null;const e=!!this._samplingState,[t,i]=jM.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=t,e&&this._samplingState)for(const n of i)switch(n.type){case"deleted":this._actual.onLinesDeleted(n.deleteFromLineNumber,n.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(n.insertFromLineNumber,n.insertToLineNumber);break;case"flush":this._actual.onFlushed();break}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(e){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineContent(e)}getLineMaxColumn(e){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineMaxColumn(e)}getMinimapLinesRenderingData(e,t,i){if(this._samplingState){const n=[];for(let o=0,l=t-e+1;o<l;o++)i[o]?n[o]=this._context.viewModel.getViewLineData(this._samplingState.minimapLines[e+o-1]):n[o]=null;return n}return this._context.viewModel.getMinimapLinesRenderingData(e,t,i).data}getSelections(){if(this._minimapSelections===null)if(this._samplingState){this._minimapSelections=[];for(const e of this._selections){const[t,i]=this._samplingState.decorationLineRangeToMinimapLineRange(e.startLineNumber,e.endLineNumber);this._minimapSelections.push(new dt(t,e.startColumn,i,e.endColumn))}}else this._minimapSelections=this._selections;return this._minimapSelections}getMinimapDecorationsInViewport(e,t){const i=this._getMinimapDecorationsInViewport(e,t).filter(n=>{var o;return!((o=n.options.minimap)!=null&&o.sectionHeaderStyle)});if(this._samplingState){const n=[];for(const o of i){if(!o.options.minimap)continue;const l=o.range,r=this._samplingState.modelLineToMinimapLine(l.startLineNumber),a=this._samplingState.modelLineToMinimapLine(l.endLineNumber);n.push(new dfe(new v(r,l.startColumn,a,l.endColumn),o.options))}return n}return i}getSectionHeaderDecorationsInViewport(e,t){const i=this.options.minimapLineHeight,o=this.options.sectionHeaderFontSize/i;return e=Math.floor(Math.max(1,e-o)),this._getMinimapDecorationsInViewport(e,t).filter(l=>{var r;return!!((r=l.options.minimap)!=null&&r.sectionHeaderStyle)})}_getMinimapDecorationsInViewport(e,t){let i;if(this._samplingState){const n=this._samplingState.minimapLines[e-1],o=this._samplingState.minimapLines[t-1];i=new v(n,1,o,this._context.viewModel.getLineMaxColumn(o))}else i=new v(e,1,t,this._context.viewModel.getLineMaxColumn(t));return this._context.viewModel.getMinimapDecorationsInRange(i)}getSectionHeaderText(e,t){var l;const i=(l=e.options.minimap)==null?void 0:l.sectionHeaderText;if(!i)return null;const n=this._sectionHeaderCache.get(i);if(n)return n;const o=t(i);return this._sectionHeaderCache.set(i,o),o}getOptions(){return this._context.viewModel.model.getOptions()}revealLineNumber(e){this._samplingState&&(e=this._samplingState.minimapLines[e-1]),this._context.viewModel.revealRange("mouse",!1,new v(e,1,e,1),1,0)}setScrollTop(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e},1)}}class FS extends de{constructor(e,t){super(),this._renderDecorations=!1,this._gestureInProgress=!1,this._theme=e,this._model=t,this._lastRenderData=null,this._buffers=null,this._selectionColor=this._theme.getColor(fle),this._domNode=an(document.createElement("div")),$u.write(this._domNode,9),this._domNode.setClassName(this._getMinimapDomNodeClassName()),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._shadow=an(document.createElement("div")),this._shadow.setClassName("minimap-shadow-hidden"),this._domNode.appendChild(this._shadow),this._canvas=an(document.createElement("canvas")),this._canvas.setPosition("absolute"),this._canvas.setLeft(0),this._domNode.appendChild(this._canvas),this._decorationsCanvas=an(document.createElement("canvas")),this._decorationsCanvas.setPosition("absolute"),this._decorationsCanvas.setClassName("minimap-decorations-layer"),this._decorationsCanvas.setLeft(0),this._domNode.appendChild(this._decorationsCanvas),this._slider=an(document.createElement("div")),this._slider.setPosition("absolute"),this._slider.setClassName("minimap-slider"),this._slider.setLayerHinting(!0),this._slider.setContain("strict"),this._domNode.appendChild(this._slider),this._sliderHorizontal=an(document.createElement("div")),this._sliderHorizontal.setPosition("absolute"),this._sliderHorizontal.setClassName("minimap-slider-horizontal"),this._slider.appendChild(this._sliderHorizontal),this._applyLayout(),this._pointerDownListener=Ms(this._domNode.domNode,De.POINTER_DOWN,i=>{if(i.preventDefault(),this._model.options.renderMinimap===0||!this._lastRenderData)return;if(this._model.options.size!=="proportional"){if(i.button===0&&this._lastRenderData){const d=_s(this._slider.domNode),c=d.top+d.height/2;this._startSliderDragging(i,c,this._lastRenderData.renderedLayout)}return}const o=this._model.options.minimapLineHeight,l=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*i.offsetY;let a=Math.floor(l/o)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;a=Math.min(a,this._model.getLineCount()),this._model.revealLineNumber(a)}),this._sliderPointerMoveMonitor=new _Q,this._sliderPointerDownListener=Ms(this._slider.domNode,De.POINTER_DOWN,i=>{i.preventDefault(),i.stopPropagation(),i.button===0&&this._lastRenderData&&this._startSliderDragging(i,i.pageY,this._lastRenderData.renderedLayout)}),this._gestureDisposable=nr.addTarget(this._domNode.domNode),this._sliderTouchStartListener=ge(this._domNode.domNode,_n.Start,i=>{i.preventDefault(),i.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(i))},{passive:!1}),this._sliderTouchMoveListener=ge(this._domNode.domNode,_n.Change,i=>{i.preventDefault(),i.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(i)},{passive:!1}),this._sliderTouchEndListener=Ms(this._domNode.domNode,_n.End,i=>{i.preventDefault(),i.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)})}_startSliderDragging(e,t,i){if(!e.target||!(e.target instanceof Element))return;const n=e.pageX;this._slider.toggleClassName("active",!0);const o=(l,r)=>{const a=_s(this._domNode.domNode),d=Math.min(Math.abs(r-n),Math.abs(r-a.left),Math.abs(r-a.left-a.width));if(Gl&&d>s7e){this._model.setScrollTop(i.scrollTop);return}const c=l-t;this._model.setScrollTop(i.getDesiredScrollTopFromDelta(c))};e.pageY!==t&&o(e.pageY,n),this._sliderPointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,l=>o(l.pageY,l.pageX),()=>{this._slider.toggleClassName("active",!1)})}scrollDueToTouchEvent(e){const t=this._domNode.domNode.getBoundingClientRect().top,i=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY-t);this._model.setScrollTop(i)}dispose(){this._pointerDownListener.dispose(),this._sliderPointerMoveMonitor.dispose(),this._sliderPointerDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){const e=["minimap"];return this._model.options.showSlider==="always"?e.push("slider-always"):e.push("slider-mouseover"),this._model.options.autohide&&e.push("autohide"),e.join(" ")}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new yte(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(e,t){return this._lastRenderData?this._lastRenderData.onLinesChanged(e,t):!1}onLinesDeleted(e,t){var i;return(i=this._lastRenderData)==null||i.onLinesDeleted(e,t),!0}onLinesInserted(e,t){var i;return(i=this._lastRenderData)==null||i.onLinesInserted(e,t),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(fle),this._renderDecorations=!0,!0}onTokensChanged(e){return this._lastRenderData?this._lastRenderData.onTokensChanged(e):!1}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(e){if(this._model.options.renderMinimap===0){this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),this._sliderHorizontal.setHeight(0);return}e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const i=wC.create(this._model.options,e.viewportStartLineNumber,e.viewportEndLineNumber,e.viewportStartLineNumberVerticalOffset,e.viewportHeight,e.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(i.sliderNeeded?"block":"none"),this._slider.setTop(i.sliderTop),this._slider.setHeight(i.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(i.sliderHeight),this.renderDecorations(i),this._lastRenderData=this.renderLines(i)}renderDecorations(e){if(this._renderDecorations){this._renderDecorations=!1;const t=this._model.getSelections();t.sort(v.compareRangesUsingStarts);const i=this._model.getMinimapDecorationsInViewport(e.startLineNumber,e.endLineNumber);i.sort((u,m)=>(u.options.zIndex||0)-(m.options.zIndex||0));const{canvasInnerWidth:n,canvasInnerHeight:o}=this._model.options,l=this._model.options.minimapLineHeight,r=this._model.options.minimapCharWidth,a=this._model.getOptions().tabSize,d=this._decorationsCanvas.domNode.getContext("2d");d.clearRect(0,0,n,o);const c=new Rae(e.startLineNumber,e.endLineNumber,!1);this._renderSelectionLineHighlights(d,t,c,e,l),this._renderDecorationsLineHighlights(d,i,c,e,l);const h=new Rae(e.startLineNumber,e.endLineNumber,null);this._renderSelectionsHighlights(d,t,h,e,l,a,r,n),this._renderDecorationsHighlights(d,i,h,e,l,a,r,n),this._renderSectionHeaders(e)}}_renderSelectionLineHighlights(e,t,i,n,o){if(!this._selectionColor||this._selectionColor.isTransparent())return;e.fillStyle=this._selectionColor.transparent(.5).toString();let l=0,r=0;for(const a of t){const d=n.intersectWithViewport(a);if(!d)continue;const[c,h]=d;for(let p=c;p<=h;p++)i.set(p,!0);const u=n.getYForLineNumber(c,o),m=n.getYForLineNumber(h,o);r>=u||(r>l&&e.fillRect(Cm,l,e.canvas.width,r-l),l=u),r=m}r>l&&e.fillRect(Cm,l,e.canvas.width,r-l)}_renderDecorationsLineHighlights(e,t,i,n,o){const l=new Map;for(let r=t.length-1;r>=0;r--){const a=t[r],d=a.options.minimap;if(!d||d.position!==1)continue;const c=n.intersectWithViewport(a.range);if(!c)continue;const[h,u]=c,m=d.getColor(this._theme.value);if(!m||m.isTransparent())continue;let p=l.get(m.toString());p||(p=m.transparent(.5).toString(),l.set(m.toString(),p)),e.fillStyle=p;for(let g=h;g<=u;g++){if(i.has(g))continue;i.set(g,!0);const b=n.getYForLineNumber(h,o);e.fillRect(Cm,b,e.canvas.width,o)}}}_renderSelectionsHighlights(e,t,i,n,o,l,r,a){if(!(!this._selectionColor||this._selectionColor.isTransparent()))for(const d of t){const c=n.intersectWithViewport(d);if(!c)continue;const[h,u]=c;for(let m=h;m<=u;m++)this.renderDecorationOnLine(e,i,d,this._selectionColor,n,m,o,o,l,r,a)}}_renderDecorationsHighlights(e,t,i,n,o,l,r,a){for(const d of t){const c=d.options.minimap;if(!c)continue;const h=n.intersectWithViewport(d.range);if(!h)continue;const[u,m]=h,p=c.getColor(this._theme.value);if(!(!p||p.isTransparent()))for(let g=u;g<=m;g++)switch(c.position){case 1:this.renderDecorationOnLine(e,i,d.range,p,n,g,o,o,l,r,a);continue;case 2:{const b=n.getYForLineNumber(g,o),f=2;this.renderDecoration(e,p,f,b,o7e,o);continue}}}}renderDecorationOnLine(e,t,i,n,o,l,r,a,d,c,h){const u=o.getYForLineNumber(l,a);if(u+r<0||u>this._model.options.canvasInnerHeight)return;const{startLineNumber:m,endLineNumber:p}=i,g=m===l?i.startColumn:1,b=p===l?i.endColumn:this._model.getLineMaxColumn(l),f=this.getXOffsetForPosition(t,l,g,d,c,h),Z=this.getXOffsetForPosition(t,l,b,d,c,h);this.renderDecoration(e,n,f,u,Z-f,r)}getXOffsetForPosition(e,t,i,n,o,l){if(i===1)return Cm;if((i-1)*o>=l)return l;let a=e.get(t);if(!a){const d=this._model.getLineContent(t);a=[Cm];let c=Cm;for(let h=1;h<d.length+1;h++){const u=d.charCodeAt(h-1),m=u===9?n*o:jU(u)?2*o:o,p=c+m;if(p>=l){a[h]=l;break}a[h]=p,c=p}e.set(t,a)}return i-1<a.length?a[i-1]:l}renderDecoration(e,t,i,n,o,l){e.fillStyle=t&&t.toString()||"",e.fillRect(i,n,o,l)}_renderSectionHeaders(e){var g;const t=this._model.options.minimapLineHeight,i=this._model.options.sectionHeaderFontSize,n=this._model.options.sectionHeaderLetterSpacing,o=i*1.5,{canvasInnerWidth:l}=this._model.options,r=this._model.options.backgroundColor,a=`rgb(${r.r} ${r.g} ${r.b} / .7)`,d=this._model.options.sectionHeaderFontColor,c=`rgb(${d.r} ${d.g} ${d.b})`,h=c,u=this._decorationsCanvas.domNode.getContext("2d");u.letterSpacing=n+"px",u.font="500 "+i+"px "+this._model.options.sectionHeaderFontFamily,u.strokeStyle=h,u.lineWidth=.2;const m=this._model.getSectionHeaderDecorationsInViewport(e.startLineNumber,e.endLineNumber);m.sort((b,f)=>b.range.startLineNumber-f.range.startLineNumber);const p=FS._fitSectionHeader.bind(null,u,l-Cm);for(const b of m){const f=e.getYForLineNumber(b.range.startLineNumber,t)+i,Z=f-i,A=Z+2,N=this._model.getSectionHeaderText(b,p);FS._renderSectionLabel(u,N,((g=b.options.minimap)==null?void 0:g.sectionHeaderStyle)===2,a,c,l,Z,o,f,A)}}static _fitSectionHeader(e,t,i){if(!i)return i;const n="…",o=e.measureText(i).width,l=e.measureText(n).width;if(o<=t||o<=l)return i;const r=i.length,a=o/i.length,d=Math.floor((t-l)/a)-1;let c=Math.ceil(d/2);for(;c>0&&/\s/.test(i[c-1]);)--c;return i.substring(0,c)+n+i.substring(r-(d-c))}static _renderSectionLabel(e,t,i,n,o,l,r,a,d,c){t&&(e.fillStyle=n,e.fillRect(0,r,l,a),e.fillStyle=o,e.fillText(t,Cm,d)),i&&(e.beginPath(),e.moveTo(0,c),e.lineTo(l,c),e.closePath(),e.stroke())}renderLines(e){const t=e.startLineNumber,i=e.endLineNumber,n=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){const ie=this._lastRenderData._get();return new Nae(e,ie.imageData,ie.lines)}const o=this._getBuffer();if(!o)return null;const[l,r,a]=FS._renderUntouchedLines(o,e.topPaddingLineCount,t,i,n,this._lastRenderData),d=this._model.getMinimapLinesRenderingData(t,i,a),c=this._model.getOptions().tabSize,h=this._model.options.defaultBackgroundColor,u=this._model.options.backgroundColor,m=this._model.options.foregroundAlpha,p=this._model.tokensColorTracker,g=p.backgroundIsLight(),b=this._model.options.renderMinimap,f=this._model.options.charRenderer(),Z=this._model.options.fontScale,A=this._model.options.minimapCharWidth,W=(b===1?2:2+1)*Z,Q=n>W?Math.floor((n-W)/2):0,R=u.a/255,M=new u0(Math.round((u.r-h.r)*R+h.r),Math.round((u.g-h.g)*R+h.g),Math.round((u.b-h.b)*R+h.b),255);let w=e.topPaddingLineCount*n;const Y=[];for(let ie=0,se=i-t+1;ie<se;ie++)a[ie]&&FS._renderLine(o,M,u.a,g,b,A,p,m,f,w,Q,c,d[ie],Z,n),Y[ie]=new cx(w),w+=n;const G=l===-1?0:l,j=(r===-1?o.height:r)-G;return this._canvas.domNode.getContext("2d").putImageData(o,0,0,0,G,o.width,j),new Nae(e,o,Y)}static _renderUntouchedLines(e,t,i,n,o,l){const r=[];if(!l){for(let w=0,Y=n-i+1;w<Y;w++)r[w]=!0;return[-1,-1,r]}const a=l._get(),d=a.imageData.data,c=a.rendLineNumberStart,h=a.lines,u=h.length,m=e.width,p=e.data,g=(n-i+1)*o*m*4;let b=-1,f=-1,Z=-1,A=-1,N=-1,W=-1,Q=t*o;for(let w=i;w<=n;w++){const Y=w-i,G=w-c,P=G>=0&&G<u?h[G].dy:-1;if(P===-1){r[Y]=!0,Q+=o;continue}const j=P*m*4,X=(P+o)*m*4,ie=Q*m*4,se=(Q+o)*m*4;A===j&&W===ie?(A=X,W=se):(Z!==-1&&(p.set(d.subarray(Z,A),N),b===-1&&Z===0&&Z===N&&(b=A),f===-1&&A===g&&Z===N&&(f=Z)),Z=j,A=X,N=ie,W=se),r[Y]=!1,Q+=o}Z!==-1&&(p.set(d.subarray(Z,A),N),b===-1&&Z===0&&Z===N&&(b=A),f===-1&&A===g&&Z===N&&(f=Z));const R=b===-1?-1:b/(m*4),M=f===-1?-1:f/(m*4);return[R,M,r]}static _renderLine(e,t,i,n,o,l,r,a,d,c,h,u,m,p,g){const b=m.content,f=m.tokens,Z=e.width-l,A=g===1;let N=Cm,W=0,Q=0;for(let R=0,M=f.getCount();R<M;R++){const w=f.getEndOffset(R),Y=f.getForeground(R),G=r.getColor(Y);for(;W<w;W++){if(N>Z)return;const P=b.charCodeAt(W);if(P===9){const j=u-(W+Q)%u;Q+=j-1,N+=j*l}else if(P===32)N+=l;else{const j=jU(P)?2:1;for(let X=0;X<j;X++)if(o===2?d.blockRenderChar(e,N,c+h,G,a,t,i,A):d.renderChar(e,N,c+h,P,G,a,t,i,p,n,A),N+=l,N>Z)return}}}}}class Rae{constructor(e,t,i){this._startLineNumber=e,this._endLineNumber=t,this._defaultValue=i,this._values=[];for(let n=0,o=this._endLineNumber-this._startLineNumber+1;n<o;n++)this._values[n]=i}has(e){return this.get(e)!==this._defaultValue}set(e,t){e<this._startLineNumber||e>this._endLineNumber||(this._values[e-this._startLineNumber]=t)}get(e){return e<this._startLineNumber||e>this._endLineNumber?this._defaultValue:this._values[e-this._startLineNumber]}}class r7e extends Cd{constructor(e,t){super(e),this._viewDomNode=t;const n=this._context.configuration.options.get(146);this._widgets={},this._verticalScrollbarWidth=n.verticalScrollbarWidth,this._minimapWidth=n.minimap.minimapWidth,this._horizontalScrollbarHeight=n.horizontalScrollbarHeight,this._editorHeight=n.height,this._editorWidth=n.width,this._viewDomNodeRect={top:0,left:0,width:0,height:0},this._domNode=an(document.createElement("div")),$u.write(this._domNode,4),this._domNode.setClassName("overlayWidgets"),this.overflowingOverlayWidgetsDomNode=an(document.createElement("div")),$u.write(this.overflowingOverlayWidgetsDomNode,5),this.overflowingOverlayWidgetsDomNode.setClassName("overflowingOverlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(e){const i=this._context.configuration.options.get(146);return this._verticalScrollbarWidth=i.verticalScrollbarWidth,this._minimapWidth=i.minimap.minimapWidth,this._horizontalScrollbarHeight=i.horizontalScrollbarHeight,this._editorHeight=i.height,this._editorWidth=i.width,!0}addWidget(e){const t=an(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),e.allowEditorOverflow?this.overflowingOverlayWidgetsDomNode.appendChild(t):this._domNode.appendChild(t),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(e,t){const i=this._widgets[e.getId()],n=t?t.preference:null,o=t==null?void 0:t.stackOridinal;return i.preference===n&&i.stack===o?(this._updateMaxMinWidth(),!1):(i.preference=n,i.stack=o,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const n=this._widgets[t].domNode.domNode;delete this._widgets[t],n.remove(),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var i,n;let e=0;const t=Object.keys(this._widgets);for(let o=0,l=t.length;o<l;o++){const r=t[o],d=(n=(i=this._widgets[r].widget).getMinContentWidthInPx)==null?void 0:n.call(i);typeof d<"u"&&(e=Math.max(e,d))}this._context.viewLayout.setOverlayWidgetsMinWidth(e)}_renderWidget(e,t){const i=e.domNode;if(e.preference===null){i.setTop("");return}const n=2*this._verticalScrollbarWidth+this._minimapWidth;if(e.preference===0||e.preference===1){if(e.preference===1){const o=i.domNode.clientHeight;i.setTop(this._editorHeight-o-2*this._horizontalScrollbarHeight)}else i.setTop(0);e.stack!==void 0?(i.setTop(t[e.preference]),t[e.preference]+=i.domNode.clientWidth):i.setRight(n)}else if(e.preference===2)i.domNode.style.right="50%",e.stack!==void 0?(i.setTop(t[2]),t[2]+=i.domNode.clientHeight):i.setTop(0);else{const{top:o,left:l}=e.preference;if(this._context.configuration.options.get(42)&&e.widget.allowEditorOverflow){const a=this._viewDomNodeRect;i.setTop(o+a.top),i.setLeft(l+a.left),i.setPosition("fixed")}else i.setTop(o),i.setLeft(l),i.setPosition("absolute")}}prepareRender(e){this._viewDomNodeRect=_s(this._viewDomNode.domNode)}render(e){this._domNode.setWidth(this._editorWidth);const t=Object.keys(this._widgets),i=Array.from({length:2+1},()=>0);t.sort((n,o)=>(this._widgets[n].stack||0)-(this._widgets[o].stack||0));for(let n=0,o=t.length;n<o;n++){const l=t[n];this._renderWidget(this._widgets[l],i)}}}class a7e{constructor(e,t){const i=e.options;this.lineHeight=i.get(67),this.pixelRatio=i.get(144),this.overviewRulerLanes=i.get(83),this.renderBorder=i.get(82);const n=t.getColor(l_e);this.borderColor=n?n.toString():null,this.hideCursor=i.get(59);const o=t.getColor(xY);this.cursorColorSingle=o?o.transparent(.7).toString():null;const l=t.getColor(Gbe);this.cursorColorPrimary=l?l.transparent(.7).toString():null;const r=t.getColor(Ebe);this.cursorColorSecondary=r?r.transparent(.7).toString():null,this.themeType=t.type;const a=i.get(73),d=a.enabled,c=a.side,h=t.getColor(r_e),u=Ds.getDefaultBackground();h?this.backgroundColor=h:d&&c==="right"?this.backgroundColor=u:this.backgroundColor=null;const p=i.get(146).overviewRuler;this.top=p.top,this.right=p.right,this.domWidth=p.width,this.domHeight=p.height,this.overviewRulerLanes===0?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[g,b]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=g,this.w=b}_initLanes(e,t,i){const n=t-e;if(i>=3){const o=Math.floor(n/3),l=Math.floor(n/3),r=n-o-l,a=e,d=a+o,c=a+o+r;return[[0,a,d,a,c,a,d,a],[0,o,r,o+r,l,o+r+l,r+l,o+r+l]]}else if(i===2){const o=Math.floor(n/2),l=n-o,r=e,a=r+o;return[[0,r,r,r,a,r,r,r],[0,o,o,o,l,o+l,o+l,o+l]]}else{const o=e,l=n;return[[0,o,o,o,o,o,o,o],[0,l,l,l,l,l,l,l]]}}equals(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColorSingle===e.cursorColorSingle&&this.cursorColorPrimary===e.cursorColorPrimary&&this.cursorColorSecondary===e.cursorColorSecondary&&this.themeType===e.themeType&&Re.equals(this.backgroundColor,e.backgroundColor)&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight}}class d7e extends Cd{constructor(e){super(e),this._actualShouldRender=0,this._renderedDecorations=[],this._renderedCursorPositions=[],this._domNode=an(document.createElement("canvas")),this._domNode.setClassName("decorationsOverviewRuler"),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._domNode.setAttribute("aria-hidden","true"),this._updateSettings(!1),this._tokensColorTrackerListener=Ds.onDidChange(t=>{t.changedColorMap&&this._updateSettings(!0)}),this._cursorPositions=[{position:new oe(1,1),color:this._settings.cursorColorSingle}]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(e){const t=new a7e(this._context.configuration,this._context.theme);return this._settings&&this._settings.equals(t)?!1:(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)}_markRenderingIsNeeded(){return this._actualShouldRender=2,!0}_markRenderingIsMaybeNeeded(){return this._actualShouldRender=1,!0}onConfigurationChanged(e){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}onCursorStateChanged(e){this._cursorPositions=[];for(let t=0,i=e.selections.length;t<i;t++){let n=this._settings.cursorColorSingle;i>1&&(n=t===0?this._settings.cursorColorPrimary:this._settings.cursorColorSecondary),this._cursorPositions.push({position:e.selections[t].getPosition(),color:n})}return this._cursorPositions.sort((t,i)=>oe.compare(t.position,i.position)),this._markRenderingIsMaybeNeeded()}onDecorationsChanged(e){return e.affectsOverviewRuler?this._markRenderingIsMaybeNeeded():!1}onFlushed(e){return this._markRenderingIsNeeded()}onScrollChanged(e){return e.scrollHeightChanged?this._markRenderingIsNeeded():!1}onZonesChanged(e){return this._markRenderingIsNeeded()}onThemeChanged(e){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}getDomNode(){return this._domNode.domNode}prepareRender(e){}render(e){this._render(),this._actualShouldRender=0}_render(){const e=this._settings.backgroundColor;if(this._settings.overviewRulerLanes===0){this._domNode.setBackgroundColor(e?Re.Format.CSS.formatHexA(e):""),this._domNode.setDisplay("none");return}const t=this._context.viewModel.getAllOverviewRulerDecorations(this._context.theme);if(t.sort(vM.compareByRenderingProps),this._actualShouldRender===1&&!vM.equalsArr(this._renderedDecorations,t)&&(this._actualShouldRender=2),this._actualShouldRender===1&&!Fs(this._renderedCursorPositions,this._cursorPositions,(p,g)=>p.position.lineNumber===g.position.lineNumber&&p.color===g.color)&&(this._actualShouldRender=2),this._actualShouldRender===1)return;this._renderedDecorations=t,this._renderedCursorPositions=this._cursorPositions,this._domNode.setDisplay("block");const i=this._settings.canvasWidth,n=this._settings.canvasHeight,o=this._settings.lineHeight,l=this._context.viewLayout,r=this._context.viewLayout.getScrollHeight(),a=n/r,d=6*this._settings.pixelRatio|0,c=d/2|0,h=this._domNode.domNode.getContext("2d");e?e.isOpaque()?(h.fillStyle=Re.Format.CSS.formatHexA(e),h.fillRect(0,0,i,n)):(h.clearRect(0,0,i,n),h.fillStyle=Re.Format.CSS.formatHexA(e),h.fillRect(0,0,i,n)):h.clearRect(0,0,i,n);const u=this._settings.x,m=this._settings.w;for(const p of t){const g=p.color,b=p.data;h.fillStyle=g;let f=0,Z=0,A=0;for(let N=0,W=b.length/3;N<W;N++){const Q=b[3*N],R=b[3*N+1],M=b[3*N+2];let w=l.getVerticalOffsetForLineNumber(R)*a|0,Y=(l.getVerticalOffsetForLineNumber(M)+o)*a|0;if(Y-w<d){let P=(w+Y)/2|0;P<c?P=c:P+c>n&&(P=n-c),w=P-c,Y=P+c}w>A+1||Q!==f?(N!==0&&h.fillRect(u[f],Z,m[f],A-Z),f=Q,Z=w,A=Y):Y>A&&(A=Y)}h.fillRect(u[f],Z,m[f],A-Z)}if(!this._settings.hideCursor){const p=2*this._settings.pixelRatio|0,g=p/2|0,b=this._settings.x[7],f=this._settings.w[7];let Z=-100,A=-100,N=null;for(let W=0,Q=this._cursorPositions.length;W<Q;W++){const R=this._cursorPositions[W].color;if(!R)continue;const M=this._cursorPositions[W].position;let w=l.getVerticalOffsetForLineNumber(M.lineNumber)*a|0;w<g?w=g:w+g>n&&(w=n-g);const Y=w-g,G=Y+p;Y>A+1||R!==N?(W!==0&&N&&h.fillRect(b,Z,f,A-Z),Z=Y,A=G):G>A&&(A=G),N=R,h.fillStyle=R}N&&h.fillRect(b,Z,f,A-Z)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(h.beginPath(),h.lineWidth=1,h.strokeStyle=this._settings.borderColor,h.moveTo(0,0),h.lineTo(0,n),h.moveTo(1,0),h.lineTo(i,0),h.stroke())}}class Sae{constructor(e,t,i){this._colorZoneBrand=void 0,this.from=e|0,this.to=t|0,this.colorId=i|0}static compare(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId}}class yfe{constructor(e,t,i,n){this._overviewRulerZoneBrand=void 0,this.startLineNumber=e,this.endLineNumber=t,this.heightInLines=i,this.color=n,this._colorZone=null}static compare(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.heightInLines===t.heightInLines?e.endLineNumber-t.endLineNumber:e.heightInLines-t.heightInLines:e.startLineNumber-t.startLineNumber:e.color<t.color?-1:1}setColorZone(e){this._colorZone=e}getColorZones(){return this._colorZone}}class c7e{constructor(e){this._getVerticalOffsetForLine=e,this._zones=[],this._colorZonesInvalid=!1,this._lineHeight=0,this._domWidth=0,this._domHeight=0,this._outerHeight=0,this._pixelRatio=1,this._lastAssignedId=0,this._color2Id=Object.create(null),this._id2Color=[]}getId2Color(){return this._id2Color}setZones(e){this._zones=e,this._zones.sort(yfe.compare)}setLineHeight(e){return this._lineHeight===e?!1:(this._lineHeight=e,this._colorZonesInvalid=!0,!0)}setPixelRatio(e){this._pixelRatio=e,this._colorZonesInvalid=!0}getDOMWidth(){return this._domWidth}getCanvasWidth(){return this._domWidth*this._pixelRatio}setDOMWidth(e){return this._domWidth===e?!1:(this._domWidth=e,this._colorZonesInvalid=!0,!0)}getDOMHeight(){return this._domHeight}getCanvasHeight(){return this._domHeight*this._pixelRatio}setDOMHeight(e){return this._domHeight===e?!1:(this._domHeight=e,this._colorZonesInvalid=!0,!0)}getOuterHeight(){return this._outerHeight}setOuterHeight(e){return this._outerHeight===e?!1:(this._outerHeight=e,this._colorZonesInvalid=!0,!0)}resolveColorZones(){const e=this._colorZonesInvalid,t=Math.floor(this._lineHeight),i=Math.floor(this.getCanvasHeight()),n=Math.floor(this._outerHeight),o=i/n,l=Math.floor(4*this._pixelRatio/2),r=[];for(let a=0,d=this._zones.length;a<d;a++){const c=this._zones[a];if(!e){const N=c.getColorZones();if(N){r.push(N);continue}}const h=this._getVerticalOffsetForLine(c.startLineNumber),u=c.heightInLines===0?this._getVerticalOffsetForLine(c.endLineNumber)+t:h+c.heightInLines*t,m=Math.floor(o*h),p=Math.floor(o*u);let g=Math.floor((m+p)/2),b=p-g;b<l&&(b=l),g-b<0&&(g=b),g+b>i&&(g=i-b);const f=c.color;let Z=this._color2Id[f];Z||(Z=++this._lastAssignedId,this._color2Id[f]=Z,this._id2Color[Z]=f);const A=new Sae(g-b,g+b,Z);c.setColorZone(A),r.push(A)}return this._colorZonesInvalid=!1,r.sort(Sae.compare),r}}class h7e extends WB{constructor(e,t){super(),this._context=e;const i=this._context.configuration.options;this._domNode=an(document.createElement("canvas")),this._domNode.setClassName(t),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new c7e(n=>this._context.viewLayout.getVerticalOffsetForLineNumber(n)),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(i.get(67)),this._zoneManager.setPixelRatio(i.get(144)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return e.hasChanged(67)&&(this._zoneManager.setLineHeight(t.get(67)),this._render()),e.hasChanged(144)&&(this._zoneManager.setPixelRatio(t.get(144)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(e){return this._render(),!0}onScrollChanged(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0}onZonesChanged(e){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);let t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,t=this._zoneManager.setDOMHeight(e.height)||t,t&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(e){this._zoneManager.setZones(e),this._render()}_render(){if(this._zoneManager.getOuterHeight()===0)return!1;const e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),i=this._zoneManager.resolveColorZones(),n=this._zoneManager.getId2Color(),o=this._domNode.domNode.getContext("2d");return o.clearRect(0,0,e,t),i.length>0&&this._renderOneLane(o,i,n,e),!0}_renderOneLane(e,t,i,n){let o=0,l=0,r=0;for(const a of t){const d=a.colorId,c=a.from,h=a.to;d!==o?(e.fillRect(0,l,n,r-l),o=d,e.fillStyle=i[o],l=c,r=h):r>=c?r=Math.max(r,h):(e.fillRect(0,l,n,r-l),l=c,r=h)}e.fillRect(0,l,n,r-l)}}class u7e extends Cd{constructor(e){super(e),this.domNode=an(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("view-rulers"),this._renderedRulers=[];const t=this._context.configuration.options;this._rulers=t.get(103),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._rulers=t.get(103),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onScrollChanged(e){return e.scrollHeightChanged}prepareRender(e){}_ensureRulersCount(){const e=this._renderedRulers.length,t=this._rulers.length;if(e===t)return;if(e<t){const{tabSize:n}=this._context.viewModel.model.getOptions(),o=n;let l=t-e;for(;l>0;){const r=an(document.createElement("div"));r.setClassName("view-ruler"),r.setWidth(o),this.domNode.appendChild(r),this._renderedRulers.push(r),l--}return}let i=e-t;for(;i>0;){const n=this._renderedRulers.pop();this.domNode.removeChild(n),i--}}render(e){this._ensureRulersCount();for(let t=0,i=this._rulers.length;t<i;t++){const n=this._renderedRulers[t],o=this._rulers[t];n.setBoxShadow(o.color?`1px 0 0 0 ${o.color} inset`:""),n.setHeight(Math.min(e.scrollHeight,1e6)),n.setLeft(o.column*this._typicalHalfwidthCharacterWidth)}}}class m7e extends Cd{constructor(e){super(e),this._scrollTop=0,this._width=0,this._updateWidth(),this._shouldShow=!1;const i=this._context.configuration.options.get(104);this._useShadows=i.useShadows,this._domNode=an(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true")}dispose(){super.dispose()}_updateShouldShow(){const e=this._useShadows&&this._scrollTop>0;return this._shouldShow!==e?(this._shouldShow=e,!0):!1}getDomNode(){return this._domNode}_updateWidth(){const t=this._context.configuration.options.get(146);t.minimap.renderMinimap===0||t.minimap.minimapWidth>0&&t.minimap.minimapLeft===0?this._width=t.width:this._width=t.width-t.verticalScrollbarWidth}onConfigurationChanged(e){const i=this._context.configuration.options.get(104);return this._useShadows=i.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()}prepareRender(e){}render(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}class p7e{constructor(e){this.left=e.left,this.width=e.width,this.startStyle=null,this.endStyle=null}}class g7e{constructor(e,t){this.lineNumber=e,this.ranges=t}}function b7e(s){return new p7e(s)}function U7e(s){return new g7e(s.lineNumber,s.ranges.map(b7e))}const Ks=class Ks extends sN{constructor(e){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=e;const t=this._context.configuration.options;this._roundedSelection=t.get(102),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._roundedSelection=t.get(102),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_visibleRangesHaveGaps(e){for(let t=0,i=e.length;t<i;t++)if(e[t].ranges.length>1)return!0;return!1}_enrichVisibleRangesWithStyle(e,t,i){const n=this._typicalHalfwidthCharacterWidth/4;let o=null,l=null;if(i&&i.length>0&&t.length>0){const r=t[0].lineNumber;if(r===e.startLineNumber)for(let d=0;!o&&d<i.length;d++)i[d].lineNumber===r&&(o=i[d].ranges[0]);const a=t[t.length-1].lineNumber;if(a===e.endLineNumber)for(let d=i.length-1;!l&&d>=0;d--)i[d].lineNumber===a&&(l=i[d].ranges[0]);o&&!o.startStyle&&(o=null),l&&!l.startStyle&&(l=null)}for(let r=0,a=t.length;r<a;r++){const d=t[r].ranges[0],c=d.left,h=d.left+d.width,u={top:0,bottom:0},m={top:0,bottom:0};if(r>0){const p=t[r-1].ranges[0].left,g=t[r-1].ranges[0].left+t[r-1].ranges[0].width;uk(c-p)<n?u.top=2:c>p&&(u.top=1),uk(h-g)<n?m.top=2:p<h&&h<g&&(m.top=1)}else o&&(u.top=o.startStyle.top,m.top=o.endStyle.top);if(r+1<a){const p=t[r+1].ranges[0].left,g=t[r+1].ranges[0].left+t[r+1].ranges[0].width;uk(c-p)<n?u.bottom=2:p<c&&c<g&&(u.bottom=1),uk(h-g)<n?m.bottom=2:h<g&&(m.bottom=1)}else l&&(u.bottom=l.startStyle.bottom,m.bottom=l.endStyle.bottom);d.startStyle=u,d.endStyle=m}}_getVisibleRangesWithStyle(e,t,i){const o=(t.linesVisibleRangesForRange(e,!0)||[]).map(U7e);return!this._visibleRangesHaveGaps(o)&&this._roundedSelection&&this._enrichVisibleRangesWithStyle(t.visibleRange,o,i),o}_createSelectionPiece(e,t,i,n,o){return'<div class="cslr '+i+'" style="top:'+e.toString()+"px;bottom:"+t.toString()+"px;left:"+n.toString()+"px;width:"+o.toString()+'px;"></div>'}_actualRenderOneSelection(e,t,i,n){if(n.length===0)return;const o=!!n[0].ranges[0].startStyle,l=n[0].lineNumber,r=n[n.length-1].lineNumber;for(let a=0,d=n.length;a<d;a++){const c=n[a],h=c.lineNumber,u=h-t,m=i&&h===l?1:0,p=i&&h!==l&&h===r?1:0;let g="",b="";for(let f=0,Z=c.ranges.length;f<Z;f++){const A=c.ranges[f];if(o){const W=A.startStyle,Q=A.endStyle;if(W.top===1||W.bottom===1){g+=this._createSelectionPiece(m,p,Ks.SELECTION_CLASS_NAME,A.left-Ks.ROUNDED_PIECE_WIDTH,Ks.ROUNDED_PIECE_WIDTH);let R=Ks.EDITOR_BACKGROUND_CLASS_NAME;W.top===1&&(R+=" "+Ks.SELECTION_TOP_RIGHT),W.bottom===1&&(R+=" "+Ks.SELECTION_BOTTOM_RIGHT),g+=this._createSelectionPiece(m,p,R,A.left-Ks.ROUNDED_PIECE_WIDTH,Ks.ROUNDED_PIECE_WIDTH)}if(Q.top===1||Q.bottom===1){g+=this._createSelectionPiece(m,p,Ks.SELECTION_CLASS_NAME,A.left+A.width,Ks.ROUNDED_PIECE_WIDTH);let R=Ks.EDITOR_BACKGROUND_CLASS_NAME;Q.top===1&&(R+=" "+Ks.SELECTION_TOP_LEFT),Q.bottom===1&&(R+=" "+Ks.SELECTION_BOTTOM_LEFT),g+=this._createSelectionPiece(m,p,R,A.left+A.width,Ks.ROUNDED_PIECE_WIDTH)}}let N=Ks.SELECTION_CLASS_NAME;if(o){const W=A.startStyle,Q=A.endStyle;W.top===0&&(N+=" "+Ks.SELECTION_TOP_LEFT),W.bottom===0&&(N+=" "+Ks.SELECTION_BOTTOM_LEFT),Q.top===0&&(N+=" "+Ks.SELECTION_TOP_RIGHT),Q.bottom===0&&(N+=" "+Ks.SELECTION_BOTTOM_RIGHT)}b+=this._createSelectionPiece(m,p,N,A.left,A.width)}e[u][0]+=g,e[u][1]+=b}}prepareRender(e){const t=[],i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber;for(let l=i;l<=n;l++){const r=l-i;t[r]=["",""]}const o=[];for(let l=0,r=this._selections.length;l<r;l++){const a=this._selections[l];if(a.isEmpty()){o[l]=null;continue}const d=this._getVisibleRangesWithStyle(a,e,this._previousFrameVisibleRangesWithStyle[l]);o[l]=d,this._actualRenderOneSelection(t,i,this._selections.length>1,d)}this._previousFrameVisibleRangesWithStyle=o,this._renderResult=t.map(([l,r])=>l+r)}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}};Ks.SELECTION_CLASS_NAME="selected-text",Ks.SELECTION_TOP_LEFT="top-left-radius",Ks.SELECTION_BOTTOM_LEFT="bottom-left-radius",Ks.SELECTION_TOP_RIGHT="top-right-radius",Ks.SELECTION_BOTTOM_RIGHT="bottom-right-radius",Ks.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",Ks.ROUNDED_PIECE_WIDTH=10;let f4=Ks;ih((s,e)=>{const t=s.getColor(VXe);t&&!t.isTransparent()&&e.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${t}; }`)});function uk(s){return s<0?-s:s}class Wae{constructor(e,t,i,n,o,l,r){this.top=e,this.left=t,this.paddingLeft=i,this.width=n,this.height=o,this.textContent=l,this.textContentClassName=r}}var o0;(function(s){s[s.Single=0]="Single",s[s.MultiPrimary=1]="MultiPrimary",s[s.MultiSecondary=2]="MultiSecondary"})(o0||(o0={}));class Vae{constructor(e,t){this._context=e;const i=this._context.configuration.options,n=i.get(50);this._cursorStyle=i.get(28),this._lineHeight=i.get(67),this._typicalHalfwidthCharacterWidth=n.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(i.get(31),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=an(document.createElement("div")),this._domNode.setClassName(`cursor ${wW}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),Al(this._domNode,n),this._domNode.setDisplay("none"),this._position=new oe(1,1),this._pluralityClass="",this.setPlurality(t),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}setPlurality(e){switch(e){default:case o0.Single:this._pluralityClass="";break;case o0.MultiPrimary:this._pluralityClass="cursor-primary";break;case o0.MultiSecondary:this._pluralityClass="cursor-secondary";break}}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(50);return this._cursorStyle=t.get(28),this._lineHeight=t.get(67),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),Al(this._domNode,i),!0}onCursorPositionChanged(e,t){return t?this._domNode.domNode.style.transitionProperty="none":this._domNode.domNode.style.transitionProperty="",this._position=e,!0}_getGraphemeAwarePosition(){const{lineNumber:e,column:t}=this._position,i=this._context.viewModel.getLineContent(e),[n,o]=AGe(i,t-1);return[new oe(e,n+1),i.substring(n,o)]}_prepareRender(e){let t="",i="";const[n,o]=this._getGraphemeAwarePosition();if(this._cursorStyle===bl.Line||this._cursorStyle===bl.LineThin){const u=e.visibleRangeForPosition(n);if(!u||u.outsideRenderedLine)return null;const m=Wt(this._domNode.domNode);let p;this._cursorStyle===bl.Line?(p=ioe(m,this._lineCursorWidth>0?this._lineCursorWidth:2),p>2&&(t=o,i=this._getTokenClassName(n))):p=ioe(m,1);let g=u.left,b=0;p>=2&&g>=1&&(b=1,g-=b);const f=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.bigNumbersDelta;return new Wae(f,g,b,p,this._lineHeight,t,i)}const l=e.linesVisibleRangesForRange(new v(n.lineNumber,n.column,n.lineNumber,n.column+o.length),!1);if(!l||l.length===0)return null;const r=l[0];if(r.outsideRenderedLine||r.ranges.length===0)return null;const a=r.ranges[0],d=o===" "?this._typicalHalfwidthCharacterWidth:a.width<1?this._typicalHalfwidthCharacterWidth:a.width;this._cursorStyle===bl.Block&&(t=o,i=this._getTokenClassName(n));let c=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.bigNumbersDelta,h=this._lineHeight;return(this._cursorStyle===bl.Underline||this._cursorStyle===bl.UnderlineThin)&&(c+=this._lineHeight-2,h=2),new Wae(c,a.left,0,d,h,t,i)}_getTokenClassName(e){const t=this._context.viewModel.getViewLineData(e.lineNumber),i=t.tokens.findTokenIndexAtOffset(e.column-1);return t.tokens.getClassName(i)}prepareRender(e){this._renderData=this._prepareRender(e)}render(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${this._pluralityClass} ${wW} ${this._renderData.textContentClassName}`),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setPaddingLeft(this._renderData.paddingLeft),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}const Ew=class Ew extends Cd{constructor(e){super(e);const t=this._context.configuration.options;this._readOnly=t.get(92),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._selectionIsEmpty=!0,this._isComposingInput=!1,this._isVisible=!1,this._primaryCursor=new Vae(this._context,o0.Single),this._secondaryCursors=[],this._renderData=[],this._domNode=an(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new iu,this._cursorFlatBlinkInterval=new I$,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(e){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(e){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(e){const t=this._context.configuration.options;this._readOnly=t.get(92),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(e);for(let i=0,n=this._secondaryCursors.length;i<n;i++)this._secondaryCursors[i].onConfigurationChanged(e);return!0}_onCursorPositionChanged(e,t,i){const n=this._secondaryCursors.length!==t.length||this._cursorSmoothCaretAnimation==="explicit"&&i!==3;if(this._primaryCursor.setPlurality(t.length?o0.MultiPrimary:o0.Single),this._primaryCursor.onCursorPositionChanged(e,n),this._updateBlinking(),this._secondaryCursors.length<t.length){const o=t.length-this._secondaryCursors.length;for(let l=0;l<o;l++){const r=new Vae(this._context,o0.MultiSecondary);this._domNode.domNode.insertBefore(r.getDomNode().domNode,this._primaryCursor.getDomNode().domNode.nextSibling),this._secondaryCursors.push(r)}}else if(this._secondaryCursors.length>t.length){const o=this._secondaryCursors.length-t.length;for(let l=0;l<o;l++)this._domNode.removeChild(this._secondaryCursors[0].getDomNode()),this._secondaryCursors.splice(0,1)}for(let o=0;o<t.length;o++)this._secondaryCursors[o].onCursorPositionChanged(t[o],n)}onCursorStateChanged(e){const t=[];for(let n=0,o=e.selections.length;n<o;n++)t[n]=e.selections[n].getPosition();this._onCursorPositionChanged(t[0],t.slice(1),e.reason);const i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i&&(this._selectionIsEmpty=i,this._updateDomClassName()),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onFocusChanged(e){return this._editorHasFocus=e.isFocused,this._updateBlinking(),!1}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return!0}onTokensChanged(e){const t=i=>{for(let n=0,o=e.ranges.length;n<o;n++)if(e.ranges[n].fromLineNumber<=i.lineNumber&&i.lineNumber<=e.ranges[n].toLineNumber)return!0;return!1};if(t(this._primaryCursor.getPosition()))return!0;for(const i of this._secondaryCursors)if(t(i.getPosition()))return!0;return!1}onZonesChanged(e){return!0}_getCursorBlinking(){return this._isComposingInput||!this._editorHasFocus?0:this._readOnly?5:this._cursorBlinking}_updateBlinking(){this._startCursorBlinkAnimation.cancel(),this._cursorFlatBlinkInterval.cancel();const e=this._getCursorBlinking(),t=e===0,i=e===5;t?this._hide():this._show(),this._blinkingEnabled=!1,this._updateDomClassName(),!t&&!i&&(e===1?this._cursorFlatBlinkInterval.cancelAndSet(()=>{this._isVisible?this._hide():this._show()},Ew.BLINK_INTERVAL,Wt(this._domNode.domNode)):this._startCursorBlinkAnimation.setIfNotSet(()=>{this._blinkingEnabled=!0,this._updateDomClassName()},Ew.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let e="cursors-layer";switch(this._selectionIsEmpty||(e+=" has-selection"),this._cursorStyle){case bl.Line:e+=" cursor-line-style";break;case bl.Block:e+=" cursor-block-style";break;case bl.Underline:e+=" cursor-underline-style";break;case bl.LineThin:e+=" cursor-line-thin-style";break;case bl.BlockOutline:e+=" cursor-block-outline-style";break;case bl.UnderlineThin:e+=" cursor-underline-thin-style";break;default:e+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:e+=" cursor-blink";break;case 2:e+=" cursor-smooth";break;case 3:e+=" cursor-phase";break;case 4:e+=" cursor-expand";break;case 5:e+=" cursor-solid";break;default:e+=" cursor-solid"}else e+=" cursor-solid";return(this._cursorSmoothCaretAnimation==="on"||this._cursorSmoothCaretAnimation==="explicit")&&(e+=" cursor-smooth-caret-animation"),e}_show(){this._primaryCursor.show();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].show();this._isVisible=!0}_hide(){this._primaryCursor.hide();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].hide();this._isVisible=!1}prepareRender(e){this._primaryCursor.prepareRender(e);for(let t=0,i=this._secondaryCursors.length;t<i;t++)this._secondaryCursors[t].prepareRender(e)}render(e){const t=[];let i=0;const n=this._primaryCursor.render(e);n&&(t[i++]=n);for(let o=0,l=this._secondaryCursors.length;o<l;o++){const r=this._secondaryCursors[o].render(e);r&&(t[i++]=r)}this._renderData=t}getLastRenderData(){return this._renderData}};Ew.BLINK_INTERVAL=500;let F4=Ew;ih((s,e)=>{const t=[{class:".cursor",foreground:xY,background:Lee},{class:".cursor-primary",foreground:Gbe,background:X3e},{class:".cursor-secondary",foreground:Ebe,background:Y3e}];for(const i of t){const n=s.getColor(i.foreground);if(n){let o=s.getColor(i.background);o||(o=n.opposite()),e.addRule(`.monaco-editor .cursors-layer ${i.class} { background-color: ${n}; border-color: ${n}; color: ${o}; }`),Yu(s.type)&&e.addRule(`.monaco-editor .cursors-layer.has-selection ${i.class} { border-left: 1px solid ${o}; border-right: 1px solid ${o}; }`)}}});const $3=()=>{throw new Error("Invalid change accessor")};class f7e extends Cd{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(146);this._lineHeight=t.get(67),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=an(document.createElement("div")),this.domNode.setClassName("view-zones"),this.domNode.setPosition("absolute"),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.marginDomNode=an(document.createElement("div")),this.marginDomNode.setClassName("margin-view-zones"),this.marginDomNode.setPosition("absolute"),this.marginDomNode.setAttribute("role","presentation"),this.marginDomNode.setAttribute("aria-hidden","true"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const e=this._context.viewLayout.getWhitespaces(),t=new Map;for(const n of e)t.set(n.id,n);let i=!1;return this._context.viewModel.changeWhitespace(n=>{const o=Object.keys(this._zones);for(let l=0,r=o.length;l<r;l++){const a=o[l],d=this._zones[a],c=this._computeWhitespaceProps(d.delegate);d.isInHiddenArea=c.isInHiddenArea;const h=t.get(a);h&&(h.afterLineNumber!==c.afterViewLineNumber||h.height!==c.heightInPx)&&(n.changeOneWhitespace(a,c.afterViewLineNumber,c.heightInPx),this._safeCallOnComputedHeight(d.delegate,c.heightInPx),i=!0)}}),i}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(146);return this._lineHeight=t.get(67),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,e.hasChanged(67)&&this._recomputeWhitespacesProps(),!0}onLineMappingChanged(e){return this._recomputeWhitespacesProps()}onLinesDeleted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}onLinesInserted(e){return!0}_getZoneOrdinal(e){return e.ordinal??e.afterColumn??1e4}_computeWhitespaceProps(e){if(e.afterLineNumber===0)return{isInHiddenArea:!1,afterViewLineNumber:0,heightInPx:this._heightInPixels(e),minWidthInPx:this._minWidthInPixels(e)};let t;if(typeof e.afterColumn<"u")t=this._context.viewModel.model.validatePosition({lineNumber:e.afterLineNumber,column:e.afterColumn});else{const l=this._context.viewModel.model.validatePosition({lineNumber:e.afterLineNumber,column:1}).lineNumber;t=new oe(l,this._context.viewModel.model.getLineMaxColumn(l))}let i;t.column===this._context.viewModel.model.getLineMaxColumn(t.lineNumber)?i=this._context.viewModel.model.validatePosition({lineNumber:t.lineNumber+1,column:1}):i=this._context.viewModel.model.validatePosition({lineNumber:t.lineNumber,column:t.column+1});const n=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t,e.afterColumnAffinity,!0),o=e.showInHiddenAreas||this._context.viewModel.coordinatesConverter.modelPositionIsVisible(i);return{isInHiddenArea:!o,afterViewLineNumber:n.lineNumber,heightInPx:o?this._heightInPixels(e):0,minWidthInPx:this._minWidthInPixels(e)}}changeViewZones(e){let t=!1;return this._context.viewModel.changeWhitespace(i=>{const n={addZone:o=>(t=!0,this._addZone(i,o)),removeZone:o=>{o&&(t=this._removeZone(i,o)||t)},layoutZone:o=>{o&&(t=this._layoutZone(i,o)||t)}};F7e(e,n),n.addZone=$3,n.removeZone=$3,n.layoutZone=$3}),t}_addZone(e,t){const i=this._computeWhitespaceProps(t),o={whitespaceId:e.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(t),i.heightInPx,i.minWidthInPx),delegate:t,isInHiddenArea:i.isInHiddenArea,isVisible:!1,domNode:an(t.domNode),marginDomNode:t.marginDomNode?an(t.marginDomNode):null};return this._safeCallOnComputedHeight(o.delegate,i.heightInPx),o.domNode.setPosition("absolute"),o.domNode.domNode.style.width="100%",o.domNode.setDisplay("none"),o.domNode.setAttribute("monaco-view-zone",o.whitespaceId),this.domNode.appendChild(o.domNode),o.marginDomNode&&(o.marginDomNode.setPosition("absolute"),o.marginDomNode.domNode.style.width="100%",o.marginDomNode.setDisplay("none"),o.marginDomNode.setAttribute("monaco-view-zone",o.whitespaceId),this.marginDomNode.appendChild(o.marginDomNode)),this._zones[o.whitespaceId]=o,this.setShouldRender(),o.whitespaceId}_removeZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t];return delete this._zones[t],e.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute("monaco-visible-view-zone"),i.domNode.removeAttribute("monaco-view-zone"),i.domNode.domNode.remove(),i.marginDomNode&&(i.marginDomNode.removeAttribute("monaco-visible-view-zone"),i.marginDomNode.removeAttribute("monaco-view-zone"),i.marginDomNode.domNode.remove()),this.setShouldRender(),!0}return!1}_layoutZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t],n=this._computeWhitespaceProps(i.delegate);return i.isInHiddenArea=n.isInHiddenArea,e.changeOneWhitespace(i.whitespaceId,n.afterViewLineNumber,n.heightInPx),this._safeCallOnComputedHeight(i.delegate,n.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(e){return this._zones.hasOwnProperty(e)?!!this._zones[e].delegate.suppressMouseDown:!1}_heightInPixels(e){return typeof e.heightInPx=="number"?e.heightInPx:typeof e.heightInLines=="number"?this._lineHeight*e.heightInLines:this._lineHeight}_minWidthInPixels(e){return typeof e.minWidthInPx=="number"?e.minWidthInPx:0}_safeCallOnComputedHeight(e,t){if(typeof e.onComputedHeight=="function")try{e.onComputedHeight(t)}catch(i){vt(i)}}_safeCallOnDomNodeTop(e,t){if(typeof e.onDomNodeTop=="function")try{e.onDomNodeTop(t)}catch(i){vt(i)}}prepareRender(e){}render(e){const t=e.viewportData.whitespaceViewportData,i={};let n=!1;for(const l of t)this._zones[l.id].isInHiddenArea||(i[l.id]=l,n=!0);const o=Object.keys(this._zones);for(let l=0,r=o.length;l<r;l++){const a=o[l],d=this._zones[a];let c=0,h=0,u="none";i.hasOwnProperty(a)?(c=i[a].verticalOffset-e.bigNumbersDelta,h=i[a].height,u="block",d.isVisible||(d.domNode.setAttribute("monaco-visible-view-zone","true"),d.isVisible=!0),this._safeCallOnDomNodeTop(d.delegate,e.getScrolledTopFromAbsoluteTop(i[a].verticalOffset))):(d.isVisible&&(d.domNode.removeAttribute("monaco-visible-view-zone"),d.isVisible=!1),this._safeCallOnDomNodeTop(d.delegate,e.getScrolledTopFromAbsoluteTop(-1e6))),d.domNode.setTop(c),d.domNode.setHeight(h),d.domNode.setDisplay(u),d.marginDomNode&&(d.marginDomNode.setTop(c),d.marginDomNode.setHeight(h),d.marginDomNode.setDisplay(u))}n&&(this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth)),this.marginDomNode.setWidth(this._contentLeft))}}function F7e(s,e){try{return s(e)}catch(t){vt(t)}}class Z7e extends sN{constructor(e){super(),this._context=e,this._options=new Qae(this._context.configuration),this._selection=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=new Qae(this._context.configuration);return this._options.equals(t)?e.hasChanged(146):(this._options=t,!0)}onCursorStateChanged(e){return this._selection=e.selections,this._options.renderWhitespace==="selection"}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}prepareRender(e){if(this._options.renderWhitespace==="none"){this._renderResult=null;return}const t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber-t+1,o=new Array(n);for(let r=0;r<n;r++)o[r]=!0;const l=this._context.viewModel.getMinimapLinesRenderingData(e.viewportData.startLineNumber,e.viewportData.endLineNumber,o);this._renderResult=[];for(let r=e.viewportData.startLineNumber;r<=e.viewportData.endLineNumber;r++){const a=r-e.viewportData.startLineNumber,d=l.data[a];let c=null;if(this._options.renderWhitespace==="selection"){const h=this._selection;for(const u of h){if(u.endLineNumber<r||u.startLineNumber>r)continue;const m=u.startLineNumber===r?u.startColumn:d.minColumn,p=u.endLineNumber===r?u.endColumn:d.maxColumn;m<p&&(c||(c=[]),c.push(new lfe(m-1,p-1)))}}this._renderResult[a]=this._applyRenderWhitespace(e,r,c,d)}}_applyRenderWhitespace(e,t,i,n){if(this._options.renderWhitespace==="selection"&&!i||this._options.renderWhitespace==="trailing"&&n.continuesWithWrappedLine)return"";const o=this._context.theme.getColor(kee),l=this._options.renderWithSVG,r=n.content,a=this._options.stopRenderingLineAfter===-1?r.length:Math.min(this._options.stopRenderingLineAfter,r.length),d=n.continuesWithWrappedLine,c=n.minColumn-1,h=this._options.renderWhitespace==="boundary",u=this._options.renderWhitespace==="trailing",m=this._options.lineHeight,p=this._options.middotWidth,g=this._options.wsmiddotWidth,b=this._options.spaceWidth,f=Math.abs(g-b),Z=Math.abs(p-b),A=f<Z?11825:183,N=this._options.canUseHalfwidthRightwardsArrow;let W="",Q=!1,R=Wr(r),M;R===-1?(Q=!0,R=a,M=a):M=Xu(r);let w=0,Y=i&&i[w],G=0;for(let P=c;P<a;P++){const j=r.charCodeAt(P);if(Y&&P>=Y.endOffset&&(w++,Y=i&&i[w]),j!==9&&j!==32||u&&!Q&&P<=M)continue;if(h&&P>=R&&P<=M&&j===32){const ie=P-1>=0?r.charCodeAt(P-1):0,se=P+1<a?r.charCodeAt(P+1):0;if(ie!==32&&se!==32)continue}if(h&&d&&P===a-1){const ie=P-1>=0?r.charCodeAt(P-1):0;if(j===32&&ie!==32&&ie!==9)continue}if(i&&(!Y||Y.startOffset>P||Y.endOffset<=P))continue;const X=e.visibleRangeForPosition(new oe(t,P+1));X&&(l?(G=Math.max(G,X.left),j===9?W+=this._renderArrow(m,b,X.left):W+=`<circle cx="${(X.left+b/2).toFixed(2)}" cy="${(m/2).toFixed(2)}" r="${(b/7).toFixed(2)}" />`):j===9?W+=`<div class="mwh" style="left:${X.left}px;height:${m}px;">${N?String.fromCharCode(65515):String.fromCharCode(8594)}</div>`:W+=`<div class="mwh" style="left:${X.left}px;height:${m}px;">${String.fromCharCode(A)}</div>`)}return l?(G=Math.round(G+b),`<svg style="bottom:0;position:absolute;width:${G}px;height:${m}px" viewBox="0 0 ${G} ${m}" xmlns="http://www.w3.org/2000/svg" fill="${o}">`+W+"</svg>"):W}_renderArrow(e,t,i){const n=t/7,o=t,l=e/2,r=i,a={x:0,y:n/2},d={x:100/125*o,y:a.y},c={x:d.x-.2*d.x,y:d.y+.2*d.x},h={x:c.x+.1*d.x,y:c.y+.1*d.x},u={x:h.x+.35*d.x,y:h.y-.35*d.x},m={x:u.x,y:-u.y},p={x:h.x,y:-h.y},g={x:c.x,y:-c.y},b={x:d.x,y:-d.y},f={x:a.x,y:-a.y};return`<path d="M ${[a,d,c,h,u,m,p,g,b,f].map(N=>`${(r+N.x).toFixed(2)} ${(l+N.y).toFixed(2)}`).join(" L ")}" />`}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class Qae{constructor(e){const t=e.options,i=t.get(50),n=t.get(38);n==="off"?(this.renderWhitespace="none",this.renderWithSVG=!1):n==="svg"?(this.renderWhitespace=t.get(100),this.renderWithSVG=!0):(this.renderWhitespace=t.get(100),this.renderWithSVG=!1),this.spaceWidth=i.spaceWidth,this.middotWidth=i.middotWidth,this.wsmiddotWidth=i.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=i.canUseHalfwidthRightwardsArrow,this.lineHeight=t.get(67),this.stopRenderingLineAfter=t.get(118)}equals(e){return this.renderWhitespace===e.renderWhitespace&&this.renderWithSVG===e.renderWithSVG&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter}}class A7e{constructor(e,t,i,n){this.selections=e,this.startLineNumber=t.startLineNumber|0,this.endLineNumber=t.endLineNumber|0,this.relativeVerticalOffset=t.relativeVerticalOffset,this.bigNumbersDelta=t.bigNumbersDelta|0,this.lineHeight=t.lineHeight|0,this.whitespaceViewportData=i,this._model=n,this.visibleRange=new v(t.startLineNumber,this._model.getLineMinColumn(t.startLineNumber),t.endLineNumber,this._model.getLineMaxColumn(t.endLineNumber))}getViewLineRenderingData(e){return this._model.getViewportViewLineRenderingData(this.visibleRange,e)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}class N7e{get type(){return this._theme.type}get value(){return this._theme}constructor(e){this._theme=e}update(e){this._theme=e}getColor(e){return this._theme.getColor(e)}}class R7e{constructor(e,t,i){this.configuration=e,this.theme=new N7e(t),this.viewModel=i,this.viewLayout=i.viewLayout}addEventHandler(e){this.viewModel.addViewEventHandler(e)}removeEventHandler(e){this.viewModel.removeViewEventHandler(e)}}var S7e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},W7e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Z4=class extends WB{constructor(e,t,i,n,o,l,r){super(),this._instantiationService=r,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new dt(1,1,1,1)],this._renderAnimationFrame=null;const a=new B4e(t,n,o,e);this._context=new R7e(t,i,n),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(u4,this._context,a,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=an(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=an(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=an(document.createElement("div")),$u.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new X4e(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new U4(this._context,this._linesContent),this._viewZones=new f7e(this._context),this._viewParts.push(this._viewZones);const d=new d7e(this._context);this._viewParts.push(d);const c=new m7e(this._context);this._viewParts.push(c);const h=new k4e(this._context);this._viewParts.push(h),h.addDynamicOverlay(new v4e(this._context)),h.addDynamicOverlay(new f4(this._context)),h.addDynamicOverlay(new P4e(this._context)),h.addDynamicOverlay(new J4e(this._context)),h.addDynamicOverlay(new Z7e(this._context));const u=new I4e(this._context);this._viewParts.push(u),u.addDynamicOverlay(new x4e(this._context)),u.addDynamicOverlay(new t7e(this._context)),u.addDynamicOverlay(new e7e(this._context)),u.addDynamicOverlay(new sx(this._context)),this._glyphMarginWidgets=new _4e(this._context),this._viewParts.push(this._glyphMarginWidgets);const m=new ox(this._context);m.getDomNode().appendChild(this._viewZones.marginDomNode),m.getDomNode().appendChild(u.getDomNode()),m.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push(m),this._contentWidgets=new G4e(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new F4(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new r7e(this._context,this.domNode),this._viewParts.push(this._overlayWidgets);const p=new u7e(this._context);this._viewParts.push(p);const g=new D4e(this._context);this._viewParts.push(g);const b=new l7e(this._context);if(this._viewParts.push(b),d){const f=this._scrollbar.getOverviewRulerLayoutInfo();f.parent.insertBefore(d.getDomNode(),f.insertBefore)}this._linesContent.appendChild(h.getDomNode()),this._linesContent.appendChild(p.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(m.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(c.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(b.getDomNode()),this._overflowGuardContainer.appendChild(g.domNode),this.domNode.appendChild(this._overflowGuardContainer),l?(l.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode),l.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode)):(this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode)),this._applyLayout(),this._pointerHandler=this._register(new t4e(this._context,a,this._createPointerHandlerHelper()))}_computeGlyphMarginLanes(){const e=this._context.viewModel.model,t=this._context.viewModel.glyphLanes;let i=[],n=0;i=i.concat(e.getAllMarginDecorations().map(o=>{var r,a;const l=((r=o.options.glyphMargin)==null?void 0:r.position)??Kh.Center;return n=Math.max(n,o.range.endLineNumber),{range:o.range,lane:l,persist:(a=o.options.glyphMargin)==null?void 0:a.persistLane}})),i=i.concat(this._glyphMarginWidgets.getWidgets().map(o=>{const l=e.validateRange(o.preference.range);return n=Math.max(n,l.endLineNumber),{range:l,lane:o.preference.lane}})),i.sort((o,l)=>v.compareRangesUsingStarts(o.range,l.range)),t.reset(n);for(const o of i)t.push(o.lane,o.range,o.persist);return t}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,viewLinesDomNode:this._viewLines.getDomNode().domNode,focusTextArea:()=>{this.focus()},dispatchTextAreaEvent:e=>{this._textAreaHandler.textArea.domNode.dispatchEvent(e)},getLastRenderData:()=>{const e=this._viewCursors.getLastRenderData()||[],t=this._textAreaHandler.getLastRenderData();return new XKe(e,t)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:e=>this._viewZones.shouldSuppressMouseDownOnViewZone(e),shouldSuppressMouseDownOnWidget:e=>this._contentWidgets.shouldSuppressMouseDownOnWidget(e),getPositionFromDOMInfo:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(e,t)),visibleRangeForPosition:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new oe(e,t))),getLineWidth:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(e))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(e))}}_applyLayout(){const t=this._context.configuration.options.get(146);this.domNode.setWidth(t.width),this.domNode.setHeight(t.height),this._overflowGuardContainer.setWidth(t.width),this._overflowGuardContainer.setHeight(t.height),this._linesContent.setWidth(16777216),this._linesContent.setHeight(16777216)}_getEditorClassName(){const e=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(143)+" "+qH(this._context.theme.type)+e}handleEvents(e){super.handleEvents(e),this._scheduleRender()}onConfigurationChanged(e){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(e){return this._selections=e.selections,!1}onDecorationsChanged(e){return e.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(e){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(e){return this._context.theme.update(e.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){this._renderAnimationFrame!==null&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const e of this._viewParts)e.dispose();super.dispose()}_scheduleRender(){var e;if(this._store.isDisposed)throw new en;if(this._renderAnimationFrame===null){const t=this._createCoordinatedRendering();this._renderAnimationFrame=A4.INSTANCE.scheduleCoordinatedRendering({window:Wt((e=this.domNode)==null?void 0:e.domNode),prepareRenderText:()=>{if(this._store.isDisposed)throw new en;try{return t.prepareRenderText()}finally{this._renderAnimationFrame=null}},renderText:()=>{if(this._store.isDisposed)throw new en;return t.renderText()},prepareRender:(i,n)=>{if(this._store.isDisposed)throw new en;return t.prepareRender(i,n)},render:(i,n)=>{if(this._store.isDisposed)throw new en;return t.render(i,n)}})}}_flushAccumulatedAndRenderNow(){const e=this._createCoordinatedRendering();bU(()=>e.prepareRenderText());const t=bU(()=>e.renderText());if(t){const[i,n]=t;bU(()=>e.prepareRender(i,n)),bU(()=>e.render(i,n))}}_getViewPartsToRender(){const e=[];let t=0;for(const i of this._viewParts)i.shouldRender()&&(e[t++]=i);return e}_createCoordinatedRendering(){return{prepareRenderText:()=>{if(this._shouldRecomputeGlyphMarginLanes){this._shouldRecomputeGlyphMarginLanes=!1;const e=this._computeGlyphMarginLanes();this._context.configuration.setGlyphMarginDecorationLaneCount(e.requiredLanes)}gU.onRenderStart()},renderText:()=>{if(!this.domNode.domNode.isConnected)return null;let e=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&e.length===0)return null;const t=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(t.startLineNumber,t.endLineNumber,t.centeredLineNumber);const i=new A7e(this._selections,t,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);return this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(i),this._viewLines.shouldRender()&&(this._viewLines.renderText(i),this._viewLines.onDidRender(),e=this._getViewPartsToRender()),[e,new IKe(this._context.viewLayout,i,this._viewLines)]},prepareRender:(e,t)=>{for(const i of e)i.prepareRender(t)},render:(e,t)=>{for(const i of e)i.render(t),i.onDidRender()}}}delegateVerticalScrollbarPointerDown(e){this._scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this._scrollbar.delegateScrollFromMouseWheelEvent(e)}restoreState(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(e,t){const i=this._context.viewModel.model.validatePosition({lineNumber:e,column:t}),n=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i);this._flushAccumulatedAndRenderNow();const o=this._viewLines.visibleRangeForPosition(new oe(n.lineNumber,n.column));return o?o.left:-1}getTargetAtClientPoint(e,t){const i=this._pointerHandler.getTargetAtClientPoint(e,t);return i?nz.convertViewToModelMouseTarget(i,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(e){return new h7e(this._context,e)}change(e){this._viewZones.changeViewZones(e),this._scheduleRender()}render(e,t){if(t){this._viewLines.forceShouldRender();for(const i of this._viewParts)i.forceShouldRender()}e?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(e){this._textAreaHandler.writeScreenReaderContent(e)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(e){this._textAreaHandler.setAriaOptions(e)}addContentWidget(e){this._contentWidgets.addWidget(e.widget),this.layoutContentWidget(e),this._scheduleRender()}layoutContentWidget(e){var t,i,n,o;this._contentWidgets.setWidgetPosition(e.widget,((t=e.position)==null?void 0:t.position)??null,((i=e.position)==null?void 0:i.secondaryPosition)??null,((n=e.position)==null?void 0:n.preference)??null,((o=e.position)==null?void 0:o.positionAffinity)??null),this._scheduleRender()}removeContentWidget(e){this._contentWidgets.removeWidget(e.widget),this._scheduleRender()}addOverlayWidget(e){this._overlayWidgets.addWidget(e.widget),this.layoutOverlayWidget(e),this._scheduleRender()}layoutOverlayWidget(e){this._overlayWidgets.setWidgetPosition(e.widget,e.position)&&this._scheduleRender()}removeOverlayWidget(e){this._overlayWidgets.removeWidget(e.widget),this._scheduleRender()}addGlyphMarginWidget(e){this._glyphMarginWidgets.addWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(e){const t=e.position;this._glyphMarginWidgets.setWidgetPosition(e.widget,t)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(e){this._glyphMarginWidgets.removeWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};Z4=S7e([W7e(6,bt)],Z4);function bU(s){try{return s()}catch(e){return vt(e),null}}const xX=class xX{constructor(){this._coordinatedRenderings=[],this._animationFrameRunners=new Map}scheduleCoordinatedRendering(e){return this._coordinatedRenderings.push(e),this._scheduleRender(e.window),{dispose:()=>{const t=this._coordinatedRenderings.indexOf(e);if(t!==-1&&(this._coordinatedRenderings.splice(t,1),this._coordinatedRenderings.length===0)){for(const[i,n]of this._animationFrameRunners)n.dispose();this._animationFrameRunners.clear()}}}}_scheduleRender(e){if(!this._animationFrameRunners.has(e)){const t=()=>{this._animationFrameRunners.delete(e),this._onRenderScheduled()};this._animationFrameRunners.set(e,JE(e,t,100))}}_onRenderScheduled(){const e=this._coordinatedRenderings.slice(0);this._coordinatedRenderings=[];for(const i of e)bU(()=>i.prepareRenderText());const t=[];for(let i=0,n=e.length;i<n;i++){const o=e[i];t[i]=bU(()=>o.renderText())}for(let i=0,n=e.length;i<n;i++){const o=e[i],l=t[i];if(!l)continue;const[r,a]=l;bU(()=>o.prepareRender(r,a))}for(let i=0,n=e.length;i<n;i++){const o=e[i],l=t[i];if(!l)continue;const[r,a]=l;bU(()=>o.render(r,a))}}};xX.INSTANCE=new xX;let A4=xX;class MC{constructor(e,t,i,n,o){this.injectionOffsets=e,this.injectionOptions=t,this.breakOffsets=i,this.breakOffsetsVisibleColumn=n,this.wrappedTextIndentLength=o}getOutputLineCount(){return this.breakOffsets.length}getMinOutputOffset(e){return e>0?this.wrappedTextIndentLength:0}getLineLength(e){const t=e>0?this.breakOffsets[e-1]:0;let n=this.breakOffsets[e]-t;return e>0&&(n+=this.wrappedTextIndentLength),n}getMaxOutputOffset(e){return this.getLineLength(e)}translateToInputOffset(e,t){e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength));let n=e===0?t:this.breakOffsets[e-1]+t;if(this.injectionOffsets!==null)for(let o=0;o<this.injectionOffsets.length&&n>this.injectionOffsets[o];o++)n<this.injectionOffsets[o]+this.injectionOptions[o].content.length?n=this.injectionOffsets[o]:n-=this.injectionOptions[o].content.length;return n}translateToOutputPosition(e,t=2){let i=e;if(this.injectionOffsets!==null)for(let n=0;n<this.injectionOffsets.length&&!(e<this.injectionOffsets[n]||t!==1&&e===this.injectionOffsets[n]);n++)i+=this.injectionOptions[n].content.length;return this.offsetInInputWithInjectionsToOutputPosition(i,t)}offsetInInputWithInjectionsToOutputPosition(e,t=2){let i=0,n=this.breakOffsets.length-1,o=0,l=0;for(;i<=n;){o=i+(n-i)/2|0;const a=this.breakOffsets[o];if(l=o>0?this.breakOffsets[o-1]:0,t===0)if(e<=l)n=o-1;else if(e>a)i=o+1;else break;else if(e<l)n=o-1;else if(e>=a)i=o+1;else break}let r=e-l;return o>0&&(r+=this.wrappedTextIndentLength),new mk(o,r)}normalizeOutputPosition(e,t,i){if(this.injectionOffsets!==null){const n=this.outputPositionToOffsetInInputWithInjections(e,t),o=this.normalizeOffsetInInputWithInjectionsAroundInjections(n,i);if(o!==n)return this.offsetInInputWithInjectionsToOutputPosition(o,i)}if(i===0){if(e>0&&t===this.getMinOutputOffset(e))return new mk(e-1,this.getMaxOutputOffset(e-1))}else if(i===1){const n=this.getOutputLineCount()-1;if(e<n&&t===this.getMaxOutputOffset(e))return new mk(e+1,this.getMinOutputOffset(e+1))}return new mk(e,t)}outputPositionToOffsetInInputWithInjections(e,t){return e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength)),(e>0?this.breakOffsets[e-1]:0)+t}normalizeOffsetInInputWithInjectionsAroundInjections(e,t){const i=this.getInjectedTextAtOffset(e);if(!i)return e;if(t===2){if(e===i.offsetInInputWithInjections+i.length&&yae(this.injectionOptions[i.injectedTextIndex].cursorStops))return i.offsetInInputWithInjections+i.length;{let n=i.offsetInInputWithInjections;if(Cae(this.injectionOptions[i.injectedTextIndex].cursorStops))return n;let o=i.injectedTextIndex-1;for(;o>=0&&this.injectionOffsets[o]===this.injectionOffsets[i.injectedTextIndex]&&!(yae(this.injectionOptions[o].cursorStops)||(n-=this.injectionOptions[o].content.length,Cae(this.injectionOptions[o].cursorStops)));)o--;return n}}else if(t===1||t===4){let n=i.offsetInInputWithInjections+i.length,o=i.injectedTextIndex;for(;o+1<this.injectionOffsets.length&&this.injectionOffsets[o+1]===this.injectionOffsets[o];)n+=this.injectionOptions[o+1].content.length,o++;return n}else if(t===0||t===3){let n=i.offsetInInputWithInjections,o=i.injectedTextIndex;for(;o-1>=0&&this.injectionOffsets[o-1]===this.injectionOffsets[o];)n-=this.injectionOptions[o-1].content.length,o--;return n}uY()}getInjectedText(e,t){const i=this.outputPositionToOffsetInInputWithInjections(e,t),n=this.getInjectedTextAtOffset(i);return n?{options:this.injectionOptions[n.injectedTextIndex]}:null}getInjectedTextAtOffset(e){const t=this.injectionOffsets,i=this.injectionOptions;if(t!==null){let n=0;for(let o=0;o<t.length;o++){const l=i[o].content.length,r=t[o]+n,a=t[o]+n+l;if(r>e)break;if(e<=a)return{injectedTextIndex:o,offsetInInputWithInjections:r,length:l};n+=l}}}}function yae(s){return s==null?!0:s===Xh.Right||s===Xh.Both}function Cae(s){return s==null?!0:s===Xh.Left||s===Xh.Both}class mk{constructor(e,t){this.outputLineIndex=e,this.outputOffset=t}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(e){return new oe(e+this.outputLineIndex,this.outputOffset+1)}}const e_=B0("domLineBreaksComputer",{createHTML:s=>s});class Cte{static create(e){return new Cte(new WeakRef(e))}constructor(e){this.targetWindow=e}createLineBreaksComputer(e,t,i,n,o){const l=[],r=[];return{addRequest:(a,d,c)=>{l.push(a),r.push(d)},finalize:()=>V7e(rU(this.targetWindow.deref()),l,e,t,i,n,o,r)}}}function V7e(s,e,t,i,n,o,l,r){function a(w){const Y=r[w];if(Y){const G=Pu.applyInjectedText(e[w],Y),P=Y.map(X=>X.options),j=Y.map(X=>X.column-1);return new MC(j,P,[G.length],[],0)}else return null}if(n===-1){const w=[];for(let Y=0,G=e.length;Y<G;Y++)w[Y]=a(Y);return w}const d=Math.round(n*t.typicalHalfwidthCharacterWidth),h=Math.round(i*(o===3?2:o===2?1:0)),u=Math.ceil(t.spaceWidth*h),m=document.createElement("div");Al(m,t);const p=new XQ(1e4),g=[],b=[],f=[],Z=[],A=[];for(let w=0;w<e.length;w++){const Y=Pu.applyInjectedText(e[w],r[w]);let G=0,P=0,j=d;if(o!==0)if(G=Wr(Y),G===-1)G=0;else{for(let pe=0;pe<G;pe++){const Ue=Y.charCodeAt(pe)===9?i-P%i:1;P+=Ue}const se=Math.ceil(t.spaceWidth*P);se+t.typicalFullwidthCharacterWidth>d?(G=0,P=0):j=d-se}const X=Y.substr(G),ie=Q7e(X,P,i,j,p,u);g[w]=G,b[w]=P,f[w]=X,Z[w]=ie[0],A[w]=ie[1]}const N=p.build(),W=(e_==null?void 0:e_.createHTML(N))??N;m.innerHTML=W,m.style.position="absolute",m.style.top="10000",l==="keepAll"?(m.style.wordBreak="keep-all",m.style.overflowWrap="anywhere"):(m.style.wordBreak="inherit",m.style.overflowWrap="break-word"),s.document.body.appendChild(m);const Q=document.createRange(),R=Array.prototype.slice.call(m.children,0),M=[];for(let w=0;w<e.length;w++){const Y=R[w],G=y7e(Q,Y,f[w],Z[w]);if(G===null){M[w]=a(w);continue}const P=g[w],j=b[w]+h,X=A[w],ie=[];for(let Qe=0,He=G.length;Qe<He;Qe++)ie[Qe]=X[G[Qe]];if(P!==0)for(let Qe=0,He=G.length;Qe<He;Qe++)G[Qe]+=P;let se,pe;const Ue=r[w];Ue?(se=Ue.map(Qe=>Qe.options),pe=Ue.map(Qe=>Qe.column-1)):(se=null,pe=null),M[w]=new MC(pe,se,G,ie,j)}return m.remove(),M}function Q7e(s,e,t,i,n,o){if(o!==0){const u=String(o);n.appendString('<div style="text-indent: -'),n.appendString(u),n.appendString("px; padding-left: "),n.appendString(u),n.appendString("px; box-sizing: border-box; width:")}else n.appendString('<div style="width:');n.appendString(String(i)),n.appendString('px;">');const l=s.length;let r=e,a=0;const d=[],c=[];let h=0<l?s.charCodeAt(0):0;n.appendString("<span>");for(let u=0;u<l;u++){u!==0&&u%16384===0&&n.appendString("</span><span>"),d[u]=a,c[u]=r;const m=h;h=u+1<l?s.charCodeAt(u+1):0;let p=1,g=1;switch(m){case 9:p=t-r%t,g=p;for(let b=1;b<=p;b++)b<p?n.appendCharCode(160):n.appendASCIICharCode(32);break;case 32:h===32?n.appendCharCode(160):n.appendASCIICharCode(32);break;case 60:n.appendString("<");break;case 62:n.appendString(">");break;case 38:n.appendString("&");break;case 0:n.appendString("�");break;case 65279:case 8232:case 8233:case 133:n.appendCharCode(65533);break;default:jU(m)&&g++,m<32?n.appendCharCode(9216+m):n.appendCharCode(m)}a+=p,r+=g}return n.appendString("</span>"),d[s.length]=a,c[s.length]=r,n.appendString("</div>"),[d,c]}function y7e(s,e,t,i){if(t.length<=1)return null;const n=Array.prototype.slice.call(e.children,0),o=[];try{N4(s,n,i,0,null,t.length-1,null,o)}catch(l){return console.log(l),null}return o.length===0?null:(o.push(t.length),o)}function N4(s,e,t,i,n,o,l,r){if(i===o||(n=n||t_(s,e,t[i],t[i+1]),l=l||t_(s,e,t[o],t[o+1]),Math.abs(n[0].top-l[0].top)<=.1))return;if(i+1===o){r.push(o);return}const a=i+(o-i)/2|0,d=t_(s,e,t[a],t[a+1]);N4(s,e,t,i,n,a,d,r),N4(s,e,t,a,d,o,l,r)}function t_(s,e,t,i){return s.setStart(e[t/16384|0].firstChild,t%16384),s.setEnd(e[i/16384|0].firstChild,i%16384),s.getClientRects()}class C7e extends de{constructor(){super(),this._editor=null,this._instantiationService=null,this._instances=this._register(new Z$),this._pending=new Map,this._finishedInstantiation=[],this._finishedInstantiation[0]=!1,this._finishedInstantiation[1]=!1,this._finishedInstantiation[2]=!1,this._finishedInstantiation[3]=!1}initialize(e,t,i){this._editor=e,this._instantiationService=i;for(const n of t){if(this._pending.has(n.id)){vt(new Error(`Cannot have two contributions with the same id ${n.id}`));continue}this._pending.set(n.id,n)}this._instantiateSome(0),this._register(xy(Wt(this._editor.getDomNode()),()=>{this._instantiateSome(1)})),this._register(xy(Wt(this._editor.getDomNode()),()=>{this._instantiateSome(2)})),this._register(xy(Wt(this._editor.getDomNode()),()=>{this._instantiateSome(3)},5e3))}saveViewState(){const e={};for(const[t,i]of this._instances)typeof i.saveViewState=="function"&&(e[t]=i.saveViewState());return e}restoreViewState(e){for(const[t,i]of this._instances)typeof i.restoreViewState=="function"&&i.restoreViewState(e[t])}get(e){return this._instantiateById(e),this._instances.get(e)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){var e;return xy(Wt((e=this._editor)==null?void 0:e.getDomNode()),()=>{this._instantiateSome(1)},50)}_instantiateSome(e){if(this._finishedInstantiation[e])return;this._finishedInstantiation[e]=!0;const t=this._findPendingContributionsByInstantiation(e);for(const i of t)this._instantiateById(i.id)}_findPendingContributionsByInstantiation(e){const t=[];for(const[,i]of this._pending)i.instantiation===e&&t.push(i);return t}_instantiateById(e){const t=this._pending.get(e);if(t){if(this._pending.delete(e),!this._instantiationService||!this._editor)throw new Error("Cannot instantiate contributions before being initialized!");try{const i=this._instantiationService.createInstance(t.ctor,this._editor);this._instances.set(t.id,i),typeof i.restoreViewState=="function"&&t.instantiation!==0&&console.warn(`Editor contribution '${t.id}' should be eager instantiated because it uses saveViewState / restoreViewState.`)}catch(i){vt(i)}}}}class Cfe{constructor(e,t,i,n,o,l,r){this.id=e,this.label=t,this.alias=i,this.metadata=n,this._precondition=o,this._run=l,this._contextKeyService=r}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(e){return this.isSupported()?this._run(e):Promise.resolve(void 0)}}class wte{static create(e){return new wte(e.get(135),e.get(134))}constructor(e,t){this.classifier=new w7e(e,t)}createLineBreaksComputer(e,t,i,n,o){const l=[],r=[],a=[];return{addRequest:(d,c,h)=>{l.push(d),r.push(c),a.push(h)},finalize:()=>{const d=e.typicalFullwidthCharacterWidth/e.typicalHalfwidthCharacterWidth,c=[];for(let h=0,u=l.length;h<u;h++){const m=r[h],p=a[h];p&&!p.injectionOptions&&!m?c[h]=M7e(this.classifier,p,l[h],t,i,d,n,o):c[h]=T7e(this.classifier,l[h],m,t,i,d,n,o)}return R4.length=0,S4.length=0,c}}}}class w7e extends YQ{constructor(e,t){super(0);for(let i=0;i<e.length;i++)this.set(e.charCodeAt(i),1);for(let i=0;i<t.length;i++)this.set(t.charCodeAt(i),2)}get(e){return e>=0&&e<256?this._asciiMap[e]:e>=12352&&e<=12543||e>=13312&&e<=19903||e>=19968&&e<=40959?3:this._map.get(e)||this._defaultValue}}let R4=[],S4=[];function M7e(s,e,t,i,n,o,l,r){if(n===-1)return null;const a=t.length;if(a<=1)return null;const d=r==="keepAll",c=e.breakOffsets,h=e.breakOffsetsVisibleColumn,u=wfe(t,i,n,o,l),m=n-u,p=R4,g=S4;let b=0,f=0,Z=0,A=n;const N=c.length;let W=0;if(W>=0){let Q=Math.abs(h[W]-A);for(;W+1<N;){const R=Math.abs(h[W+1]-A);if(R>=Q)break;Q=R,W++}}for(;W<N;){let Q=W<0?0:c[W],R=W<0?0:h[W];f>Q&&(Q=f,R=Z);let M=0,w=0,Y=0,G=0;if(R<=A){let j=R,X=Q===0?0:t.charCodeAt(Q-1),ie=Q===0?0:s.get(X),se=!0;for(let pe=Q;pe<a;pe++){const Ue=pe,Qe=t.charCodeAt(pe);let He,Te;if(xo(Qe)?(pe++,He=0,Te=2):(He=s.get(Qe),Te=TC(Qe,j,i,o)),Ue>f&&W4(X,ie,Qe,He,d)&&(M=Ue,w=j),j+=Te,j>A){Ue>f?(Y=Ue,G=j-Te):(Y=pe+1,G=j),j-w>m&&(M=0),se=!1;break}X=Qe,ie=He}if(se){b>0&&(p[b]=c[c.length-1],g[b]=h[c.length-1],b++);break}}if(M===0){let j=R,X=t.charCodeAt(Q),ie=s.get(X),se=!1;for(let pe=Q-1;pe>=f;pe--){const Ue=pe+1,Qe=t.charCodeAt(pe);if(Qe===9){se=!0;break}let He,Te;if(ZA(Qe)?(pe--,He=0,Te=2):(He=s.get(Qe),Te=jU(Qe)?o:1),j<=A){if(Y===0&&(Y=Ue,G=j),j<=A-m)break;if(W4(Qe,He,X,ie,d)){M=Ue,w=j;break}}j-=Te,X=Qe,ie=He}if(M!==0){const pe=m-(G-w);if(pe<=i){const Ue=t.charCodeAt(Y);let Qe;xo(Ue)?Qe=2:Qe=TC(Ue,G,i,o),pe-Qe<0&&(M=0)}}if(se){W--;continue}}if(M===0&&(M=Y,w=G),M<=f){const j=t.charCodeAt(f);xo(j)?(M=f+2,w=Z+2):(M=f+1,w=Z+TC(j,Z,i,o))}for(f=M,p[b]=M,Z=w,g[b]=w,b++,A=w+m;W<0||W<N&&h[W]<w;)W++;let P=Math.abs(h[W]-A);for(;W+1<N;){const j=Math.abs(h[W+1]-A);if(j>=P)break;P=j,W++}}return b===0?null:(p.length=b,g.length=b,R4=e.breakOffsets,S4=e.breakOffsetsVisibleColumn,e.breakOffsets=p,e.breakOffsetsVisibleColumn=g,e.wrappedTextIndentLength=u,e)}function T7e(s,e,t,i,n,o,l,r){const a=Pu.applyInjectedText(e,t);let d,c;if(t&&t.length>0?(d=t.map(w=>w.options),c=t.map(w=>w.column-1)):(d=null,c=null),n===-1)return d?new MC(c,d,[a.length],[],0):null;const h=a.length;if(h<=1)return d?new MC(c,d,[a.length],[],0):null;const u=r==="keepAll",m=wfe(a,i,n,o,l),p=n-m,g=[],b=[];let f=0,Z=0,A=0,N=n,W=a.charCodeAt(0),Q=s.get(W),R=TC(W,0,i,o),M=1;xo(W)&&(R+=1,W=a.charCodeAt(1),Q=s.get(W),M++);for(let w=M;w<h;w++){const Y=w,G=a.charCodeAt(w);let P,j;xo(G)?(w++,P=0,j=2):(P=s.get(G),j=TC(G,R,i,o)),W4(W,Q,G,P,u)&&(Z=Y,A=R),R+=j,R>N&&((Z===0||R-A>p)&&(Z=Y,A=R-j),g[f]=Z,b[f]=A,f++,N=A+p,Z=0),W=G,Q=P}return f===0&&(!t||t.length===0)?null:(g[f]=h,b[f]=R,new MC(c,d,g,b,m))}function TC(s,e,t,i){return s===9?t-e%t:jU(s)||s<32?i:1}function wae(s,e){return e-s%e}function W4(s,e,t,i,n){return t!==32&&(e===2&&i!==2||e!==1&&i===1||!n&&e===3&&i!==2||!n&&i===3&&e!==1)}function wfe(s,e,t,i,n){let o=0;if(n!==0){const l=Wr(s);if(l!==-1){for(let a=0;a<l;a++){const d=s.charCodeAt(a)===9?wae(o,e):1;o+=d}const r=n===3?2:n===2?1:0;for(let a=0;a<r;a++){const d=wae(o,e);o+=d}o+i>t&&(o=0)}}return o}class hx{constructor(e){this._selTrackedRange=null,this._trackSelection=!0,this._setState(e,new gl(new v(1,1,1,1),0,0,new oe(1,1),0),new gl(new v(1,1,1,1),0,0,new oe(1,1),0))}dispose(e){this._removeTrackedRange(e)}startTrackingSelection(e){this._trackSelection=!0,this._updateTrackedRange(e)}stopTrackingSelection(e){this._trackSelection=!1,this._removeTrackedRange(e)}_updateTrackedRange(e){this._trackSelection&&(this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}_removeTrackedRange(e){this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,null,0)}asCursorState(){return new Xi(this.modelState,this.viewState)}readSelectionFromMarkers(e){const t=e.model._getTrackedRange(this._selTrackedRange);return this.modelState.selection.isEmpty()&&!t.isEmpty()?dt.fromRange(t.collapseToEnd(),this.modelState.selection.getDirection()):dt.fromRange(t,this.modelState.selection.getDirection())}ensureValidState(e){this._setState(e,this.modelState,this.viewState)}setState(e,t,i){this._setState(e,t,i)}static _validatePositionWithCache(e,t,i,n){return t.equals(i)?n:e.normalizePosition(t,2)}static _validateViewState(e,t){const i=t.position,n=t.selectionStart.getStartPosition(),o=t.selectionStart.getEndPosition(),l=e.normalizePosition(i,2),r=this._validatePositionWithCache(e,n,i,l),a=this._validatePositionWithCache(e,o,n,r);return i.equals(l)&&n.equals(r)&&o.equals(a)?t:new gl(v.fromPositions(r,a),t.selectionStartKind,t.selectionStartLeftoverVisibleColumns+n.column-r.column,l,t.leftoverVisibleColumns+i.column-l.column)}_setState(e,t,i){if(i&&(i=hx._validateViewState(e.viewModel,i)),t){const n=e.model.validateRange(t.selectionStart),o=t.selectionStart.equalsRange(n)?t.selectionStartLeftoverVisibleColumns:0,l=e.model.validatePosition(t.position),r=t.position.equals(l)?t.leftoverVisibleColumns:0;t=new gl(n,t.selectionStartKind,o,l,r)}else{if(!i)return;const n=e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(i.selectionStart)),o=e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(i.position));t=new gl(n,i.selectionStartKind,i.selectionStartLeftoverVisibleColumns,o,i.leftoverVisibleColumns)}if(i){const n=e.coordinatesConverter.validateViewRange(i.selectionStart,t.selectionStart),o=e.coordinatesConverter.validateViewPosition(i.position,t.position);i=new gl(n,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,o,t.leftoverVisibleColumns)}else{const n=e.coordinatesConverter.convertModelPositionToViewPosition(new oe(t.selectionStart.startLineNumber,t.selectionStart.startColumn)),o=e.coordinatesConverter.convertModelPositionToViewPosition(new oe(t.selectionStart.endLineNumber,t.selectionStart.endColumn)),l=new v(n.lineNumber,n.column,o.lineNumber,o.column),r=e.coordinatesConverter.convertModelPositionToViewPosition(t.position);i=new gl(l,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,r,t.leftoverVisibleColumns)}this.modelState=t,this.viewState=i,this._updateTrackedRange(e)}}class Mae{constructor(e){this.context=e,this.cursors=[new hx(e)],this.lastAddedCursorIndex=0}dispose(){for(const e of this.cursors)e.dispose(this.context)}startTrackingSelections(){for(const e of this.cursors)e.startTrackingSelection(this.context)}stopTrackingSelections(){for(const e of this.cursors)e.stopTrackingSelection(this.context)}updateContext(e){this.context=e}ensureValidState(){for(const e of this.cursors)e.ensureValidState(this.context)}readSelectionFromMarkers(){return this.cursors.map(e=>e.readSelectionFromMarkers(this.context))}getAll(){return this.cursors.map(e=>e.asCursorState())}getViewPositions(){return this.cursors.map(e=>e.viewState.position)}getTopMostViewPosition(){return Xxe(this.cursors,ea(e=>e.viewState.position,oe.compare)).viewState.position}getBottomMostViewPosition(){return Jxe(this.cursors,ea(e=>e.viewState.position,oe.compare)).viewState.position}getSelections(){return this.cursors.map(e=>e.modelState.selection)}getViewSelections(){return this.cursors.map(e=>e.viewState.selection)}setSelections(e){this.setStates(Xi.fromModelSelections(e))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(e){e!==null&&(this.cursors[0].setState(this.context,e[0].modelState,e[0].viewState),this._setSecondaryStates(e.slice(1)))}_setSecondaryStates(e){const t=this.cursors.length-1,i=e.length;if(t<i){const n=i-t;for(let o=0;o<n;o++)this._addSecondaryCursor()}else if(t>i){const n=t-i;for(let o=0;o<n;o++)this._removeSecondaryCursor(this.cursors.length-2)}for(let n=0;n<i;n++)this.cursors[n+1].setState(this.context,e[n].modelState,e[n].viewState)}killSecondaryCursors(){this._setSecondaryStates([])}_addSecondaryCursor(){this.cursors.push(new hx(this.context)),this.lastAddedCursorIndex=this.cursors.length-1}getLastAddedCursorIndex(){return this.cursors.length===1||this.lastAddedCursorIndex===0?0:this.lastAddedCursorIndex}_removeSecondaryCursor(e){this.lastAddedCursorIndex>=e+1&&this.lastAddedCursorIndex--,this.cursors[e+1].dispose(this.context),this.cursors.splice(e+1,1)}normalize(){if(this.cursors.length===1)return;const e=this.cursors.slice(0),t=[];for(let i=0,n=e.length;i<n;i++)t.push({index:i,selection:e[i].modelState.selection});t.sort(ea(i=>i.selection,v.compareRangesUsingStarts));for(let i=0;i<t.length-1;i++){const n=t[i],o=t[i+1],l=n.selection,r=o.selection;if(!this.context.cursorConfig.multiCursorMergeOverlapping)continue;let a;if(r.isEmpty()||l.isEmpty()?a=r.getStartPosition().isBeforeOrEqual(l.getEndPosition()):a=r.getStartPosition().isBefore(l.getEndPosition()),a){const d=n.index<o.index?i:i+1,c=n.index<o.index?i+1:i,h=t[c].index,u=t[d].index,m=t[c].selection,p=t[d].selection;if(!m.equalsSelection(p)){const g=m.plusRange(p),b=m.selectionStartLineNumber===m.startLineNumber&&m.selectionStartColumn===m.startColumn,f=p.selectionStartLineNumber===p.startLineNumber&&p.selectionStartColumn===p.startColumn;let Z;h===this.lastAddedCursorIndex?(Z=b,this.lastAddedCursorIndex=u):Z=f;let A;Z?A=new dt(g.startLineNumber,g.startColumn,g.endLineNumber,g.endColumn):A=new dt(g.endLineNumber,g.endColumn,g.startLineNumber,g.startColumn),t[d].selection=A;const N=Xi.fromModelSelection(A);e[u].setState(this.context,N.modelState,N.viewState)}for(const g of t)g.index>h&&g.index--;e.splice(h,1),t.splice(c,1),this._removeSecondaryCursor(h-1),i--}}}}class Tae{constructor(e,t,i,n){this._cursorContextBrand=void 0,this.model=e,this.viewModel=t,this.coordinatesConverter=i,this.cursorConfig=n}}class B7e{constructor(){this.type=0}}class L7e{constructor(){this.type=1}}class k7e{constructor(e){this.type=2,this._source=e}hasChanged(e){return this._source.hasChanged(e)}}class I7e{constructor(e,t,i){this.selections=e,this.modelSelections=t,this.reason=i,this.type=3}}class Ef{constructor(e){this.type=4,e?(this.affectsMinimap=e.affectsMinimap,this.affectsOverviewRuler=e.affectsOverviewRuler,this.affectsGlyphMargin=e.affectsGlyphMargin,this.affectsLineNumber=e.affectsLineNumber):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0,this.affectsGlyphMargin=!0,this.affectsLineNumber=!0)}}class pk{constructor(){this.type=5}}class D7e{constructor(e){this.type=6,this.isFocused=e}}class G7e{constructor(){this.type=7}}class gk{constructor(){this.type=8}}class Mfe{constructor(e,t){this.fromLineNumber=e,this.count=t,this.type=9}}class V4{constructor(e,t){this.type=10,this.fromLineNumber=e,this.toLineNumber=t}}class Q4{constructor(e,t){this.type=11,this.fromLineNumber=e,this.toLineNumber=t}}class BC{constructor(e,t,i,n,o,l,r){this.source=e,this.minimalReveal=t,this.range=i,this.selections=n,this.verticalType=o,this.revealHorizontal=l,this.scrollType=r,this.type=12}}class E7e{constructor(e){this.type=13,this.scrollWidth=e.scrollWidth,this.scrollLeft=e.scrollLeft,this.scrollHeight=e.scrollHeight,this.scrollTop=e.scrollTop,this.scrollWidthChanged=e.scrollWidthChanged,this.scrollLeftChanged=e.scrollLeftChanged,this.scrollHeightChanged=e.scrollHeightChanged,this.scrollTopChanged=e.scrollTopChanged}}class v7e{constructor(e){this.theme=e,this.type=14}}class x7e{constructor(e){this.type=15,this.ranges=e}}class J7e{constructor(){this.type=16}}let X7e=class{constructor(){this.type=17}};class Y7e extends de{constructor(){super(),this._onEvent=this._register(new re),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(e){this._addOutgoingEvent(e),this._emitOutgoingEvents()}_addOutgoingEvent(e){for(let t=0,i=this._outgoingEvents.length;t<i;t++){const n=this._outgoingEvents[t].kind===e.kind?this._outgoingEvents[t].attemptToMerge(e):null;if(n){this._outgoingEvents[t]=n;return}}this._outgoingEvents.push(e)}_emitOutgoingEvents(){for(;this._outgoingEvents.length>0;){if(this._collector||this._isConsumingViewEventQueue)return;const e=this._outgoingEvents.shift();e.isNoOp()||this._onEvent.fire(e)}}addViewEventHandler(e){for(let t=0,i=this._eventHandlers.length;t<i;t++)this._eventHandlers[t]===e&&console.warn("Detected duplicate listener in ViewEventDispatcher",e);this._eventHandlers.push(e)}removeViewEventHandler(e){for(let t=0;t<this._eventHandlers.length;t++)if(this._eventHandlers[t]===e){this._eventHandlers.splice(t,1);break}}beginEmitViewEvents(){return this._collectorCnt++,this._collectorCnt===1&&(this._collector=new z7e),this._collector}endEmitViewEvents(){if(this._collectorCnt--,this._collectorCnt===0){const e=this._collector.outgoingEvents,t=this._collector.viewEvents;this._collector=null;for(const i of e)this._addOutgoingEvent(i);t.length>0&&this._emitMany(t)}this._emitOutgoingEvents()}emitSingleViewEvent(e){try{this.beginEmitViewEvents().emitViewEvent(e)}finally{this.endEmitViewEvents()}}_emitMany(e){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(e):this._viewEventQueue=e,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const e=this._viewEventQueue;this._viewEventQueue=null;const t=this._eventHandlers.slice(0);for(const i of t)i.handleEvents(e)}}}class z7e{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(e){this.viewEvents.push(e)}emitOutgoingEvent(e){this.outgoingEvents.push(e)}}class Mte{constructor(e,t,i,n){this.kind=0,this._oldContentWidth=e,this._oldContentHeight=t,this.contentWidth=i,this.contentHeight=n,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Mte(this._oldContentWidth,this._oldContentHeight,e.contentWidth,e.contentHeight)}}class Tte{constructor(e,t){this.kind=1,this.oldHasFocus=e,this.hasFocus=t}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(e){return e.kind!==this.kind?null:new Tte(this.oldHasFocus,e.hasFocus)}}class Bte{constructor(e,t,i,n,o,l,r,a){this.kind=2,this._oldScrollWidth=e,this._oldScrollLeft=t,this._oldScrollHeight=i,this._oldScrollTop=n,this.scrollWidth=o,this.scrollLeft=l,this.scrollHeight=r,this.scrollTop=a,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Bte(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop)}}class _7e{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class O7e{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class ux{constructor(e,t,i,n,o,l,r){this.kind=6,this.oldSelections=e,this.selections=t,this.oldModelVersionId=i,this.modelVersionId=n,this.source=o,this.reason=l,this.reachedMaxCursorCount=r}static _selectionsAreEqual(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;const i=e.length,n=t.length;if(i!==n)return!1;for(let o=0;o<i;o++)if(!e[o].equalsSelection(t[o]))return!1;return!0}isNoOp(){return ux._selectionsAreEqual(this.oldSelections,this.selections)&&this.oldModelVersionId===this.modelVersionId}attemptToMerge(e){return e.kind!==this.kind?null:new ux(this.oldSelections,e.selections,this.oldModelVersionId,e.modelVersionId,e.source,e.reason,this.reachedMaxCursorCount||e.reachedMaxCursorCount)}}class j7e{constructor(){this.kind=5}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class H7e{constructor(e){this.event=e,this.kind=7}isNoOp(){return!1}attemptToMerge(e){return null}}class P7e{constructor(e){this.event=e,this.kind=8}isNoOp(){return!1}attemptToMerge(e){return null}}class K7e{constructor(e){this.event=e,this.kind=9}isNoOp(){return!1}attemptToMerge(e){return null}}class q7e{constructor(e){this.event=e,this.kind=10}isNoOp(){return!1}attemptToMerge(e){return null}}class $7e{constructor(e){this.event=e,this.kind=11}isNoOp(){return!1}attemptToMerge(e){return null}}class e8e{constructor(e){this.event=e,this.kind=12}isNoOp(){return!1}attemptToMerge(e){return null}}class t8e extends de{constructor(e,t,i,n){super(),this._model=e,this._knownModelVersionId=this._model.getVersionId(),this._viewModel=t,this._coordinatesConverter=i,this.context=new Tae(this._model,this._viewModel,this._coordinatesConverter,n),this._cursors=new Mae(this.context),this._hasFocus=!1,this._isHandling=!1,this._compositionState=null,this._columnSelectData=null,this._autoClosedActions=[],this._prevEditOperationType=0}dispose(){this._cursors.dispose(),this._autoClosedActions=Tn(this._autoClosedActions),super.dispose()}updateConfiguration(e){this.context=new Tae(this._model,this._viewModel,this._coordinatesConverter,e),this._cursors.updateContext(this.context)}onLineMappingChanged(e){this._knownModelVersionId===this._model.getVersionId()&&this.setStates(e,"viewModel",0,this.getCursorStates())}setHasFocus(e){this._hasFocus=e}_validateAutoClosedActions(){if(this._autoClosedActions.length>0){const e=this._cursors.getSelections();for(let t=0;t<this._autoClosedActions.length;t++){const i=this._autoClosedActions[t];i.isValid(e)||(i.dispose(),this._autoClosedActions.splice(t,1),t--)}}}getPrimaryCursorState(){return this._cursors.getPrimaryCursor()}getLastAddedCursorIndex(){return this._cursors.getLastAddedCursorIndex()}getCursorStates(){return this._cursors.getAll()}setStates(e,t,i,n){let o=!1;const l=this.context.cursorConfig.multiCursorLimit;n!==null&&n.length>l&&(n=n.slice(0,l),o=!0);const r=LC.from(this._model,this);return this._cursors.setStates(n),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,t,i,r,o)}setCursorColumnSelectData(e){this._columnSelectData=e}revealAll(e,t,i,n,o,l){const r=this._cursors.getViewPositions();let a=null,d=null;r.length>1?d=this._cursors.getViewSelections():a=v.fromPositions(r[0],r[0]),e.emitViewEvent(new BC(t,i,a,d,n,o,l))}revealPrimary(e,t,i,n,o,l){const a=[this._cursors.getPrimaryCursor().viewState.selection];e.emitViewEvent(new BC(t,i,null,a,n,o,l))}saveState(){const e=[],t=this._cursors.getSelections();for(let i=0,n=t.length;i<n;i++){const o=t[i];e.push({inSelectionMode:!o.isEmpty(),selectionStart:{lineNumber:o.selectionStartLineNumber,column:o.selectionStartColumn},position:{lineNumber:o.positionLineNumber,column:o.positionColumn}})}return e}restoreState(e,t){const i=[];for(let n=0,o=t.length;n<o;n++){const l=t[n];let r=1,a=1;l.position&&l.position.lineNumber&&(r=l.position.lineNumber),l.position&&l.position.column&&(a=l.position.column);let d=r,c=a;l.selectionStart&&l.selectionStart.lineNumber&&(d=l.selectionStart.lineNumber),l.selectionStart&&l.selectionStart.column&&(c=l.selectionStart.column),i.push({selectionStartLineNumber:d,selectionStartColumn:c,positionLineNumber:r,positionColumn:a})}this.setStates(e,"restoreState",0,Xi.fromModelSelections(i)),this.revealAll(e,"restoreState",!1,0,!0,1)}onModelContentChanged(e,t){if(t instanceof mUe){if(this._isHandling)return;this._isHandling=!0;try{this.setStates(e,"modelChange",0,this.getCursorStates())}finally{this._isHandling=!1}}else{const i=t.rawContentChangedEvent;if(this._knownModelVersionId=i.versionId,this._isHandling)return;const n=i.containsEvent(1);if(this._prevEditOperationType=0,n)this._cursors.dispose(),this._cursors=new Mae(this.context),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,"model",1,null,!1);else if(this._hasFocus&&i.resultingSelection&&i.resultingSelection.length>0){const o=Xi.fromModelSelections(i.resultingSelection);this.setStates(e,"modelChange",i.isUndoing?5:i.isRedoing?6:2,o)&&this.revealAll(e,"modelChange",!1,0,!0,0)}else{const o=this._cursors.readSelectionFromMarkers();this.setStates(e,"modelChange",2,Xi.fromModelSelections(o))}}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const e=this._cursors.getPrimaryCursor(),t=e.viewState.selectionStart.getStartPosition(),i=e.viewState.position;return{isReal:!1,fromViewLineNumber:t.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,t),toViewLineNumber:i.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,i)}}getSelections(){return this._cursors.getSelections()}setSelections(e,t,i,n){this.setStates(e,t,n,Xi.fromModelSelections(i))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(e){this._prevEditOperationType=e}_pushAutoClosedAction(e,t){const i=[],n=[];for(let r=0,a=e.length;r<a;r++)i.push({range:e[r],options:{description:"auto-closed-character",inlineClassName:"auto-closed-character",stickiness:1}}),n.push({range:t[r],options:{description:"auto-closed-enclosing",stickiness:1}});const o=this._model.deltaDecorations([],i),l=this._model.deltaDecorations([],n);this._autoClosedActions.push(new Bae(this._model,o,l))}_executeEditOperation(e){if(!e)return;e.shouldPushStackElementBefore&&this._model.pushStackElement();const t=i8e.executeCommands(this._model,this._cursors.getSelections(),e.commands);if(t){this._interpretCommandResult(t);const i=[],n=[];for(let o=0;o<e.commands.length;o++){const l=e.commands[o];l instanceof Wte&&l.enclosingRange&&l.closeCharacterRange&&(i.push(l.closeCharacterRange),n.push(l.enclosingRange))}i.length>0&&this._pushAutoClosedAction(i,n),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(e){(!e||e.length===0)&&(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()}_emitStateChangedIfNecessary(e,t,i,n,o){const l=LC.from(this._model,this);if(l.equals(n))return!1;const r=this._cursors.getSelections(),a=this._cursors.getViewSelections();if(e.emitViewEvent(new I7e(a,r,i)),!n||n.cursorState.length!==l.cursorState.length||l.cursorState.some((d,c)=>!d.modelState.equals(n.cursorState[c].modelState))){const d=n?n.cursorState.map(h=>h.modelState.selection):null,c=n?n.modelVersionId:0;e.emitOutgoingEvent(new ux(d,r,c,l.modelVersionId,t||"keyboard",i,o))}return!0}_findAutoClosingPairs(e){if(!e.length)return null;const t=[];for(let i=0,n=e.length;i<n;i++){const o=e[i];if(!o.text||o.text.indexOf(`
- `)>=0)return null;const l=o.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!l)return null;const r=l[1],a=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(r);if(!a||a.length!==1)return null;const d=a[0].open,c=o.text.length-l[2].length-1,h=o.text.lastIndexOf(d,c-1);if(h===-1)return null;t.push([h,c])}return t}executeEdits(e,t,i,n){let o=null;t==="snippet"&&(o=this._findAutoClosingPairs(i)),o&&(i[0]._isTracked=!0);const l=[],r=[],a=this._model.pushEditOperations(this.getSelections(),i,d=>{if(o)for(let h=0,u=o.length;h<u;h++){const[m,p]=o[h],g=d[h],b=g.range.startLineNumber,f=g.range.startColumn-1+m,Z=g.range.startColumn-1+p;l.push(new v(b,Z+1,b,Z+2)),r.push(new v(b,f+1,b,Z+2))}const c=n(d);return c&&(this._isHandling=!0),c});a&&(this._isHandling=!1,this.setSelections(e,t,a,0)),l.length>0&&this._pushAutoClosedAction(l,r)}_executeEdit(e,t,i,n=0){if(this.context.cursorConfig.readOnly)return;const o=LC.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),e()}catch(l){vt(l)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(t,i,n,o,!1)&&this.revealAll(t,i,!1,0,!0,0)}getAutoClosedCharacters(){return Bae.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(e){this._compositionState=new kC(this._model,this.getSelections())}endComposition(e,t){const i=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit(()=>{t==="keyboard"&&this._executeEditOperation(zb.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,i,this.getSelections(),this.getAutoClosedCharacters()))},e,t)}type(e,t,i){this._executeEdit(()=>{if(i==="keyboard"){const n=t.length;let o=0;for(;o<n;){const l=C$(t,o),r=t.substr(o,l);this._executeEditOperation(zb.typeWithInterceptors(!!this._compositionState,this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),this.getAutoClosedCharacters(),r)),o+=l}}else this._executeEditOperation(zb.typeWithoutInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t))},e,i)}compositionType(e,t,i,n,o,l){if(t.length===0&&i===0&&n===0){if(o!==0){const r=this.getSelections().map(a=>{const d=a.getPosition();return new dt(d.lineNumber,d.column+o,d.lineNumber,d.column+o)});this.setSelections(e,l,r,0)}return}this._executeEdit(()=>{this._executeEditOperation(zb.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t,i,n,o))},e,l)}paste(e,t,i,n,o){this._executeEdit(()=>{this._executeEditOperation(zb.paste(this.context.cursorConfig,this._model,this.getSelections(),t,i,n||[]))},e,o,4)}cut(e,t){this._executeEdit(()=>{this._executeEditOperation(BA.cut(this.context.cursorConfig,this._model,this.getSelections()))},e,t)}executeCommand(e,t,i){this._executeEdit(()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new va(0,[t],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},e,i)}executeCommands(e,t,i){this._executeEdit(()=>{this._executeEditOperation(new va(0,t,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},e,i)}}class LC{static from(e,t){return new LC(e.getVersionId(),t.getCursorStates())}constructor(e,t){this.modelVersionId=e,this.cursorState=t}equals(e){if(!e||this.modelVersionId!==e.modelVersionId||this.cursorState.length!==e.cursorState.length)return!1;for(let t=0,i=this.cursorState.length;t<i;t++)if(!this.cursorState[t].equals(e.cursorState[t]))return!1;return!0}}class Bae{static getAllAutoClosedCharacters(e){let t=[];for(const i of e)t=t.concat(i.getAutoClosedCharactersRanges());return t}constructor(e,t,i){this._model=e,this._autoClosedCharactersDecorations=t,this._autoClosedEnclosingDecorations=i}dispose(){this._autoClosedCharactersDecorations=this._model.deltaDecorations(this._autoClosedCharactersDecorations,[]),this._autoClosedEnclosingDecorations=this._model.deltaDecorations(this._autoClosedEnclosingDecorations,[])}getAutoClosedCharactersRanges(){const e=[];for(let t=0;t<this._autoClosedCharactersDecorations.length;t++){const i=this._model.getDecorationRange(this._autoClosedCharactersDecorations[t]);i&&e.push(i)}return e}isValid(e){const t=[];for(let i=0;i<this._autoClosedEnclosingDecorations.length;i++){const n=this._model.getDecorationRange(this._autoClosedEnclosingDecorations[i]);if(n&&(t.push(n),n.startLineNumber!==n.endLineNumber))return!1}t.sort(v.compareRangesUsingStarts),e.sort(v.compareRangesUsingStarts);for(let i=0;i<e.length;i++)if(i>=t.length||!t[i].strictContainsRange(e[i]))return!1;return!0}}class i8e{static executeCommands(e,t,i){const n={model:e,selectionsBefore:t,trackedRanges:[],trackedRangesDirection:[]},o=this._innerExecuteCommands(n,i);for(let l=0,r=n.trackedRanges.length;l<r;l++)n.model._setTrackedRange(n.trackedRanges[l],null,0);return o}static _innerExecuteCommands(e,t){if(this._arrayIsEmpty(t))return null;const i=this._getEditOperations(e,t);if(i.operations.length===0)return null;const n=i.operations,o=this._getLoserCursorMap(n);if(o.hasOwnProperty("0"))return console.warn("Ignoring commands"),null;const l=[];for(let d=0,c=n.length;d<c;d++)o.hasOwnProperty(n[d].identifier.major.toString())||l.push(n[d]);i.hadTrackedEditOperation&&l.length>0&&(l[0]._isTracked=!0);let r=e.model.pushEditOperations(e.selectionsBefore,l,d=>{const c=[];for(let m=0;m<e.selectionsBefore.length;m++)c[m]=[];for(const m of d)m.identifier&&c[m.identifier.major].push(m);const h=(m,p)=>m.identifier.minor-p.identifier.minor,u=[];for(let m=0;m<e.selectionsBefore.length;m++)c[m].length>0?(c[m].sort(h),u[m]=t[m].computeCursorState(e.model,{getInverseEditOperations:()=>c[m],getTrackedSelection:p=>{const g=parseInt(p,10),b=e.model._getTrackedRange(e.trackedRanges[g]);return e.trackedRangesDirection[g]===0?new dt(b.startLineNumber,b.startColumn,b.endLineNumber,b.endColumn):new dt(b.endLineNumber,b.endColumn,b.startLineNumber,b.startColumn)}})):u[m]=e.selectionsBefore[m];return u});r||(r=e.selectionsBefore);const a=[];for(const d in o)o.hasOwnProperty(d)&&a.push(parseInt(d,10));a.sort((d,c)=>c-d);for(const d of a)r.splice(d,1);return r}static _arrayIsEmpty(e){for(let t=0,i=e.length;t<i;t++)if(e[t])return!1;return!0}static _getEditOperations(e,t){let i=[],n=!1;for(let o=0,l=t.length;o<l;o++){const r=t[o];if(r){const a=this._getEditOperationsFromCommand(e,o,r);i=i.concat(a.operations),n=n||a.hadTrackedEditOperation}}return{operations:i,hadTrackedEditOperation:n}}static _getEditOperationsFromCommand(e,t,i){const n=[];let o=0;const l=(h,u,m=!1)=>{v.isEmpty(h)&&u===""||n.push({identifier:{major:t,minor:o++},range:h,text:u,forceMoveMarkers:m,isAutoWhitespaceEdit:i.insertsAutoWhitespace})};let r=!1;const c={addEditOperation:l,addTrackedEditOperation:(h,u,m)=>{r=!0,l(h,u,m)},trackSelection:(h,u)=>{const m=dt.liftSelection(h);let p;if(m.isEmpty())if(typeof u=="boolean")u?p=2:p=3;else{const f=e.model.getLineMaxColumn(m.startLineNumber);m.startColumn===f?p=2:p=3}else p=1;const g=e.trackedRanges.length,b=e.model._setTrackedRange(null,m,p);return e.trackedRanges[g]=b,e.trackedRangesDirection[g]=m.getDirection(),g.toString()}};try{i.getEditOperations(e.model,c)}catch(h){return vt(h),{operations:[],hadTrackedEditOperation:!1}}return{operations:n,hadTrackedEditOperation:r}}static _getLoserCursorMap(e){e=e.slice(0),e.sort((i,n)=>-v.compareRangesUsingEnds(i.range,n.range));const t={};for(let i=1;i<e.length;i++){const n=e[i-1],o=e[i];if(v.getStartPosition(n.range).isBefore(v.getEndPosition(o.range))){let l;n.identifier.major>o.identifier.major?l=n.identifier.major:l=o.identifier.major,t[l.toString()]=!0;for(let r=0;r<e.length;r++)e[r].identifier.major===l&&(e.splice(r,1),r<i&&i--,r--);i>0&&i--}}return t}}class n8e{constructor(e,t,i){this.text=e,this.startSelection=t,this.endSelection=i}}class kC{static _capture(e,t){const i=[];for(const n of t){if(n.startLineNumber!==n.endLineNumber)return null;i.push(new n8e(e.getLineContent(n.startLineNumber),n.startColumn-1,n.endColumn-1))}return i}constructor(e,t){this._original=kC._capture(e,t)}deduceOutcome(e,t){if(!this._original)return null;const i=kC._capture(e,t);if(!i||this._original.length!==i.length)return null;const n=[];for(let o=0,l=this._original.length;o<l;o++)n.push(kC._deduceOutcome(this._original[o],i[o]));return n}static _deduceOutcome(e,t){const i=Math.min(e.startSelection,t.startSelection,OU(e.text,t.text)),n=Math.min(e.text.length-e.endSelection,t.text.length-t.endSelection,DE(e.text,t.text)),o=e.text.substring(i,e.text.length-n),l=t.text.substring(i,t.text.length-n);return new M4e(o,e.startSelection-i,e.endSelection-i,l,t.startSelection-i,t.endSelection-i)}}class s8e{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(e){this._hasPending=!0,this._inserts.push(e)}change(e){this._hasPending=!0,this._changes.push(e)}remove(e){this._hasPending=!0,this._removes.push(e)}mustCommit(){return this._hasPending}commit(e){if(!this._hasPending)return;const t=this._inserts,i=this._changes,n=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],e._commitPendingChanges(t,i,n)}}class o8e{constructor(e,t,i,n,o){this.id=e,this.afterLineNumber=t,this.ordinal=i,this.height=n,this.minWidth=o,this.prefixSum=0}}var tA;let l8e=(tA=class{constructor(e,t,i,n){this._instanceId=ige(++tA.INSTANCE_COUNT),this._pendingChanges=new s8e,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=e,this._lineHeight=t,this._paddingTop=i,this._paddingBottom=n}static findInsertionIndex(e,t,i){let n=0,o=e.length;for(;n<o;){const l=n+o>>>1;t===e[l].afterLineNumber?i<e[l].ordinal?o=l:n=l+1:t<e[l].afterLineNumber?o=l:n=l+1}return n}setLineHeight(e){this._checkPendingChanges(),this._lineHeight=e}setPadding(e,t){this._paddingTop=e,this._paddingBottom=t}onFlushed(e){this._checkPendingChanges(),this._lineCount=e}changeWhitespace(e){let t=!1;try{e({insertWhitespace:(n,o,l,r)=>{t=!0,n=n|0,o=o|0,l=l|0,r=r|0;const a=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new o8e(a,n,o,l,r)),a},changeOneWhitespace:(n,o,l)=>{t=!0,o=o|0,l=l|0,this._pendingChanges.change({id:n,newAfterLineNumber:o,newHeight:l})},removeWhitespace:n=>{t=!0,this._pendingChanges.remove({id:n})}})}finally{this._pendingChanges.commit(this)}return t}_commitPendingChanges(e,t,i){if((e.length>0||i.length>0)&&(this._minWidth=-1),e.length+t.length+i.length<=1){for(const a of e)this._insertWhitespace(a);for(const a of t)this._changeOneWhitespace(a.id,a.newAfterLineNumber,a.newHeight);for(const a of i){const d=this._findWhitespaceIndex(a.id);d!==-1&&this._removeWhitespace(d)}return}const n=new Set;for(const a of i)n.add(a.id);const o=new Map;for(const a of t)o.set(a.id,a);const l=a=>{const d=[];for(const c of a)if(!n.has(c.id)){if(o.has(c.id)){const h=o.get(c.id);c.afterLineNumber=h.newAfterLineNumber,c.height=h.newHeight}d.push(c)}return d},r=l(this._arr).concat(l(e));r.sort((a,d)=>a.afterLineNumber===d.afterLineNumber?a.ordinal-d.ordinal:a.afterLineNumber-d.afterLineNumber),this._arr=r,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(e){const t=tA.findInsertionIndex(this._arr,e.afterLineNumber,e.ordinal);this._arr.splice(t,0,e),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,t-1)}_findWhitespaceIndex(e){const t=this._arr;for(let i=0,n=t.length;i<n;i++)if(t[i].id===e)return i;return-1}_changeOneWhitespace(e,t,i){const n=this._findWhitespaceIndex(e);if(n!==-1&&(this._arr[n].height!==i&&(this._arr[n].height=i,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,n-1)),this._arr[n].afterLineNumber!==t)){const o=this._arr[n];this._removeWhitespace(n),o.afterLineNumber=t,this._insertWhitespace(o)}}_removeWhitespace(e){this._arr.splice(e,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,e-1)}onLinesDeleted(e,t){this._checkPendingChanges(),e=e|0,t=t|0,this._lineCount-=t-e+1;for(let i=0,n=this._arr.length;i<n;i++){const o=this._arr[i].afterLineNumber;e<=o&&o<=t?this._arr[i].afterLineNumber=e-1:o>t&&(this._arr[i].afterLineNumber-=t-e+1)}}onLinesInserted(e,t){this._checkPendingChanges(),e=e|0,t=t|0,this._lineCount+=t-e+1;for(let i=0,n=this._arr.length;i<n;i++){const o=this._arr[i].afterLineNumber;e<=o&&(this._arr[i].afterLineNumber+=t-e+1)}}getWhitespacesTotalHeight(){return this._checkPendingChanges(),this._arr.length===0?0:this.getWhitespacesAccumulatedHeight(this._arr.length-1)}getWhitespacesAccumulatedHeight(e){this._checkPendingChanges(),e=e|0;let t=Math.max(0,this._prefixSumValidIndex+1);t===0&&(this._arr[0].prefixSum=this._arr[0].height,t++);for(let i=t;i<=e;i++)this._arr[i].prefixSum=this._arr[i-1].prefixSum+this._arr[i].height;return this._prefixSumValidIndex=Math.max(this._prefixSumValidIndex,e),this._arr[e].prefixSum}getLinesTotalHeight(){this._checkPendingChanges();const e=this._lineHeight*this._lineCount,t=this.getWhitespacesTotalHeight();return e+t+this._paddingTop+this._paddingBottom}getWhitespaceAccumulatedHeightBeforeLineNumber(e){this._checkPendingChanges(),e=e|0;const t=this._findLastWhitespaceBeforeLineNumber(e);return t===-1?0:this.getWhitespacesAccumulatedHeight(t)}_findLastWhitespaceBeforeLineNumber(e){e=e|0;const t=this._arr;let i=0,n=t.length-1;for(;i<=n;){const l=(n-i|0)/2|0,r=i+l|0;if(t[r].afterLineNumber<e){if(r+1>=t.length||t[r+1].afterLineNumber>=e)return r;i=r+1|0}else n=r-1|0}return-1}_findFirstWhitespaceAfterLineNumber(e){e=e|0;const i=this._findLastWhitespaceBeforeLineNumber(e)+1;return i<this._arr.length?i:-1}getFirstWhitespaceIndexAfterLineNumber(e){return this._checkPendingChanges(),e=e|0,this._findFirstWhitespaceAfterLineNumber(e)}getVerticalOffsetForLineNumber(e,t=!1){this._checkPendingChanges(),e=e|0;let i;e>1?i=this._lineHeight*(e-1):i=0;const n=this.getWhitespaceAccumulatedHeightBeforeLineNumber(e-(t?1:0));return i+n+this._paddingTop}getVerticalOffsetAfterLineNumber(e,t=!1){this._checkPendingChanges(),e=e|0;const i=this._lineHeight*e,n=this.getWhitespaceAccumulatedHeightBeforeLineNumber(e+(t?1:0));return i+n+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),this._minWidth===-1){let e=0;for(let t=0,i=this._arr.length;t<i;t++)e=Math.max(e,this._arr[t].minWidth);this._minWidth=e}return this._minWidth}isAfterLines(e){this._checkPendingChanges();const t=this.getLinesTotalHeight();return e>t}isInTopPadding(e){return this._paddingTop===0?!1:(this._checkPendingChanges(),e<this._paddingTop)}isInBottomPadding(e){if(this._paddingBottom===0)return!1;this._checkPendingChanges();const t=this.getLinesTotalHeight();return e>=t-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(e){if(this._checkPendingChanges(),e=e|0,e<0)return 1;const t=this._lineCount|0,i=this._lineHeight;let n=1,o=t;for(;n<o;){const l=(n+o)/2|0,r=this.getVerticalOffsetForLineNumber(l)|0;if(e>=r+i)n=l+1;else{if(e>=r)return l;o=l}}return n>t?t:n}getLinesViewportData(e,t){this._checkPendingChanges(),e=e|0,t=t|0;const i=this._lineHeight,n=this.getLineNumberAtOrAfterVerticalOffset(e)|0,o=this.getVerticalOffsetForLineNumber(n)|0;let l=this._lineCount|0,r=this.getFirstWhitespaceIndexAfterLineNumber(n)|0;const a=this.getWhitespacesCount()|0;let d,c;r===-1?(r=a,c=l+1,d=0):(c=this.getAfterLineNumberForWhitespaceIndex(r)|0,d=this.getHeightForWhitespaceIndex(r)|0);let h=o,u=h;const m=5e5;let p=0;o>=m&&(p=Math.floor(o/m)*m,p=Math.floor(p/i)*i,u-=p);const g=[],b=e+(t-e)/2;let f=-1;for(let W=n;W<=l;W++){if(f===-1){const Q=h,R=h+i;(Q<=b&&b<R||Q>b)&&(f=W)}for(h+=i,g[W-n]=u,u+=i;c===W;)u+=d,h+=d,r++,r>=a?c=l+1:(c=this.getAfterLineNumberForWhitespaceIndex(r)|0,d=this.getHeightForWhitespaceIndex(r)|0);if(h>=t){l=W;break}}f===-1&&(f=l);const Z=this.getVerticalOffsetForLineNumber(l)|0;let A=n,N=l;return A<N&&o<e&&A++,A<N&&Z+i>t&&N--,{bigNumbersDelta:p,startLineNumber:n,endLineNumber:l,relativeVerticalOffset:g,centeredLineNumber:f,completelyVisibleStartLineNumber:A,completelyVisibleEndLineNumber:N,lineHeight:this._lineHeight}}getVerticalOffsetForWhitespaceIndex(e){this._checkPendingChanges(),e=e|0;const t=this.getAfterLineNumberForWhitespaceIndex(e);let i;t>=1?i=this._lineHeight*t:i=0;let n;return e>0?n=this.getWhitespacesAccumulatedHeight(e-1):n=0,i+n+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(e){this._checkPendingChanges(),e=e|0;let t=0,i=this.getWhitespacesCount()-1;if(i<0)return-1;const n=this.getVerticalOffsetForWhitespaceIndex(i),o=this.getHeightForWhitespaceIndex(i);if(e>=n+o)return-1;for(;t<i;){const l=Math.floor((t+i)/2),r=this.getVerticalOffsetForWhitespaceIndex(l),a=this.getHeightForWhitespaceIndex(l);if(e>=r+a)t=l+1;else{if(e>=r)return l;i=l}}return t}getWhitespaceAtVerticalOffset(e){this._checkPendingChanges(),e=e|0;const t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0||t>=this.getWhitespacesCount())return null;const i=this.getVerticalOffsetForWhitespaceIndex(t);if(i>e)return null;const n=this.getHeightForWhitespaceIndex(t),o=this.getIdForWhitespaceIndex(t),l=this.getAfterLineNumberForWhitespaceIndex(t);return{id:o,afterLineNumber:l,verticalOffset:i,height:n}}getWhitespaceViewportData(e,t){this._checkPendingChanges(),e=e|0,t=t|0;const i=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),n=this.getWhitespacesCount()-1;if(i<0)return[];const o=[];for(let l=i;l<=n;l++){const r=this.getVerticalOffsetForWhitespaceIndex(l),a=this.getHeightForWhitespaceIndex(l);if(r>=t)break;o.push({id:this.getIdForWhitespaceIndex(l),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(l),verticalOffset:r,height:a})}return o}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].id}getAfterLineNumberForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].afterLineNumber}getHeightForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].height}},tA.INSTANCE_COUNT=0,tA);const r8e=125;class qy{constructor(e,t,i,n){e=e|0,t=t|0,i=i|0,n=n|0,e<0&&(e=0),t<0&&(t=0),i<0&&(i=0),n<0&&(n=0),this.width=e,this.contentWidth=t,this.scrollWidth=Math.max(e,t),this.height=i,this.contentHeight=n,this.scrollHeight=Math.max(i,n)}equals(e){return this.width===e.width&&this.contentWidth===e.contentWidth&&this.height===e.height&&this.contentHeight===e.contentHeight}}class a8e extends de{constructor(e,t){super(),this._onDidContentSizeChange=this._register(new re),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._dimensions=new qy(0,0,0,0),this._scrollable=this._register(new OQ({forceIntegerValues:!0,smoothScrollDuration:e,scheduleAtNextAnimationFrame:t})),this.onDidScroll=this._scrollable.onScroll}getScrollable(){return this._scrollable}setSmoothScrollDuration(e){this._scrollable.setSmoothScrollDuration(e)}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}getScrollDimensions(){return this._dimensions}setScrollDimensions(e){if(this._dimensions.equals(e))return;const t=this._dimensions;this._dimensions=e,this._scrollable.setScrollDimensions({width:e.width,scrollWidth:e.scrollWidth,height:e.height,scrollHeight:e.scrollHeight},!0);const i=t.contentWidth!==e.contentWidth,n=t.contentHeight!==e.contentHeight;(i||n)&&this._onDidContentSizeChange.fire(new Mte(t.contentWidth,t.contentHeight,e.contentWidth,e.contentHeight))}getFutureScrollPosition(){return this._scrollable.getFutureScrollPosition()}getCurrentScrollPosition(){return this._scrollable.getCurrentScrollPosition()}setScrollPositionNow(e){this._scrollable.setScrollPositionNow(e)}setScrollPositionSmooth(e){this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}}class d8e extends de{constructor(e,t,i){super(),this._configuration=e;const n=this._configuration.options,o=n.get(146),l=n.get(84);this._linesLayout=new l8e(t,n.get(67),l.top,l.bottom),this._maxLineWidth=0,this._overlayWidgetsMinWidth=0,this._scrollable=this._register(new a8e(0,i)),this._configureSmoothScrollDuration(),this._scrollable.setScrollDimensions(new qy(o.contentWidth,0,o.height,0)),this.onDidScroll=this._scrollable.onDidScroll,this.onDidContentSizeChange=this._scrollable.onDidContentSizeChange,this._updateHeight()}dispose(){super.dispose()}getScrollable(){return this._scrollable.getScrollable()}onHeightMaybeChanged(){this._updateHeight()}_configureSmoothScrollDuration(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(115)?r8e:0)}onConfigurationChanged(e){const t=this._configuration.options;if(e.hasChanged(67)&&this._linesLayout.setLineHeight(t.get(67)),e.hasChanged(84)){const i=t.get(84);this._linesLayout.setPadding(i.top,i.bottom)}if(e.hasChanged(146)){const i=t.get(146),n=i.contentWidth,o=i.height,l=this._scrollable.getScrollDimensions(),r=l.contentWidth;this._scrollable.setScrollDimensions(new qy(n,l.contentWidth,o,this._getContentHeight(n,o,r)))}else this._updateHeight();e.hasChanged(115)&&this._configureSmoothScrollDuration()}onFlushed(e){this._linesLayout.onFlushed(e)}onLinesDeleted(e,t){this._linesLayout.onLinesDeleted(e,t)}onLinesInserted(e,t){this._linesLayout.onLinesInserted(e,t)}_getHorizontalScrollbarHeight(e,t){const n=this._configuration.options.get(104);return n.horizontal===2||e>=t?0:n.horizontalScrollbarSize}_getContentHeight(e,t,i){const n=this._configuration.options;let o=this._linesLayout.getLinesTotalHeight();return n.get(106)?o+=Math.max(0,t-n.get(67)-n.get(84).bottom):n.get(104).ignoreHorizontalScrollbarInContentHeight||(o+=this._getHorizontalScrollbarHeight(e,i)),o}_updateHeight(){const e=this._scrollable.getScrollDimensions(),t=e.width,i=e.height,n=e.contentWidth;this._scrollable.setScrollDimensions(new qy(t,e.contentWidth,i,this._getContentHeight(t,i,n)))}getCurrentViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new sae(t.scrollTop,t.scrollLeft,e.width,e.height)}getFutureViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new sae(t.scrollTop,t.scrollLeft,e.width,e.height)}_computeContentWidth(){const e=this._configuration.options,t=this._maxLineWidth,i=e.get(147),n=e.get(50),o=e.get(146);if(i.isViewportWrapping){const l=e.get(73);return t>o.contentWidth+n.typicalHalfwidthCharacterWidth&&l.enabled&&l.side==="right"?t+o.verticalScrollbarWidth:t}else{const l=e.get(105)*n.typicalHalfwidthCharacterWidth,r=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+l+o.verticalScrollbarWidth,r,this._overlayWidgetsMinWidth)}}setMaxLineWidth(e){this._maxLineWidth=e,this._updateContentWidth()}setOverlayWidgetsMinWidth(e){this._overlayWidgetsMinWidth=e,this._updateContentWidth()}_updateContentWidth(){const e=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new qy(e.width,this._computeContentWidth(),e.height,e.contentHeight)),this._updateHeight()}saveState(){const e=this._scrollable.getFutureScrollPosition(),t=e.scrollTop,i=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),n=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(i);return{scrollTop:t,scrollTopWithoutViewZones:t-n,scrollLeft:e.scrollLeft}}changeWhitespace(e){const t=this._linesLayout.changeWhitespace(e);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(e,t=!1){return this._linesLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t=!1){return this._linesLayout.getVerticalOffsetAfterLineNumber(e,t)}isAfterLines(e){return this._linesLayout.isAfterLines(e)}isInTopPadding(e){return this._linesLayout.isInTopPadding(e)}isInBottomPadding(e){return this._linesLayout.isInBottomPadding(e)}getLineNumberAtVerticalOffset(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)}getWhitespaceAtVerticalOffset(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)}getLinesViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)}getLinesViewportDataAtScrollTop(e){const t=this._scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)}getWhitespaceViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}setScrollPosition(e,t){t===1?this._scrollable.setScrollPositionNow(e):this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(e,t){const i=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:i.scrollLeft+e,scrollTop:i.scrollTop+t})}}class c8e{constructor(e,t,i,n,o){this.editorId=e,this.model=t,this.configuration=i,this._linesCollection=n,this._coordinatesConverter=o,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(e){const t=e.id;let i=this._decorationsCache[t];if(!i){const n=e.range,o=e.options;let l;if(o.isWholeLine){const r=this._coordinatesConverter.convertModelPositionToViewPosition(new oe(n.startLineNumber,1),0,!1,!0),a=this._coordinatesConverter.convertModelPositionToViewPosition(new oe(n.endLineNumber,this.model.getLineMaxColumn(n.endLineNumber)),1);l=new v(r.lineNumber,r.column,a.lineNumber,a.column)}else l=this._coordinatesConverter.convertModelRangeToViewRange(n,1);i=new dfe(l,o),this._decorationsCache[t]=i}return i}getMinimapDecorationsInRange(e){return this._getDecorationsInRange(e,!0,!1).decorations}getDecorationsViewportData(e){let t=this._cachedModelDecorationsResolver!==null;return t=t&&e.equalsRange(this._cachedModelDecorationsResolverViewRange),t||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(e,!1,!1),this._cachedModelDecorationsResolverViewRange=e),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(e,t=!1,i=!1){const n=new v(e,this._linesCollection.getViewLineMinColumn(e),e,this._linesCollection.getViewLineMaxColumn(e));return this._getDecorationsInRange(n,t,i).inlineDecorations[0]}_getDecorationsInRange(e,t,i){const n=this._linesCollection.getDecorationsInRange(e,this.editorId,CE(this.configuration.options),t,i),o=e.startLineNumber,l=e.endLineNumber,r=[];let a=0;const d=[];for(let c=o;c<=l;c++)d[c-o]=[];for(let c=0,h=n.length;c<h;c++){const u=n[c],m=u.options;if(!Lte(this.model,u))continue;const p=this._getOrCreateViewModelDecoration(u),g=p.range;if(r[a++]=p,m.inlineClassName){const b=new VC(g,m.inlineClassName,m.inlineClassNameAffectsLetterSpacing?3:0),f=Math.max(o,g.startLineNumber),Z=Math.min(l,g.endLineNumber);for(let A=f;A<=Z;A++)d[A-o].push(b)}if(m.beforeContentClassName&&o<=g.startLineNumber&&g.startLineNumber<=l){const b=new VC(new v(g.startLineNumber,g.startColumn,g.startLineNumber,g.startColumn),m.beforeContentClassName,1);d[g.startLineNumber-o].push(b)}if(m.afterContentClassName&&o<=g.endLineNumber&&g.endLineNumber<=l){const b=new VC(new v(g.endLineNumber,g.endColumn,g.endLineNumber,g.endColumn),m.afterContentClassName,2);d[g.endLineNumber-o].push(b)}}return{decorations:r,inlineDecorations:d}}}function Lte(s,e){return!(e.options.hideInCommentTokens&&kte(s,e)||e.options.hideInStringTokens&&Ite(s,e))}function kte(s,e){return Tfe(s,e.range,t=>t===1)}function Ite(s,e){return Tfe(s,e.range,t=>t===2)}function Tfe(s,e,t){for(let i=e.startLineNumber;i<=e.endLineNumber;i++){const n=s.tokenization.getLineTokens(i),o=i===e.startLineNumber,l=i===e.endLineNumber;let r=o?n.findTokenIndexAtOffset(e.startColumn-1):0;for(;r<n.getCount()&&!(l&&n.getStartOffset(r)>e.endColumn-1);){if(!t(n.getStandardTokenType(r)))return!1;r++}}return!0}function i_(s,e){return s===null?e?mx.INSTANCE:px.INSTANCE:new h8e(s,e)}class h8e{constructor(e,t){this._projectionData=e,this._isVisible=t}isVisible(){return this._isVisible}setVisible(e){return this._isVisible=e,this}getProjectionData(){return this._projectionData}getViewLineCount(){return this._isVisible?this._projectionData.getOutputLineCount():0}getViewLineContent(e,t,i){this._assertVisible();const n=i>0?this._projectionData.breakOffsets[i-1]:0,o=this._projectionData.breakOffsets[i];let l;if(this._projectionData.injectionOffsets!==null){const r=this._projectionData.injectionOffsets.map((d,c)=>new Pu(0,0,d+1,this._projectionData.injectionOptions[c],0));l=Pu.applyInjectedText(e.getLineContent(t),r).substring(n,o)}else l=e.getValueInRange({startLineNumber:t,startColumn:n+1,endLineNumber:t,endColumn:o+1});return i>0&&(l=Lae(this._projectionData.wrappedTextIndentLength)+l),l}getViewLineLength(e,t,i){return this._assertVisible(),this._projectionData.getLineLength(i)}getViewLineMinColumn(e,t,i){return this._assertVisible(),this._projectionData.getMinOutputOffset(i)+1}getViewLineMaxColumn(e,t,i){return this._assertVisible(),this._projectionData.getMaxOutputOffset(i)+1}getViewLineData(e,t,i){const n=new Array;return this.getViewLinesData(e,t,i,1,0,[!0],n),n[0]}getViewLinesData(e,t,i,n,o,l,r){this._assertVisible();const a=this._projectionData,d=a.injectionOffsets,c=a.injectionOptions;let h=null;if(d){h=[];let m=0,p=0;for(let g=0;g<a.getOutputLineCount();g++){const b=new Array;h[g]=b;const f=g>0?a.breakOffsets[g-1]:0,Z=a.breakOffsets[g];for(;p<d.length;){const A=c[p].content.length,N=d[p]+m,W=N+A;if(N>Z)break;if(f<W){const Q=c[p];if(Q.inlineClassName){const R=g>0?a.wrappedTextIndentLength:0,M=R+Math.max(N-f,0),w=R+Math.min(W-f,Z-f);M!==w&&b.push(new oKe(M,w,Q.inlineClassName,Q.inlineClassNameAffectsLetterSpacing))}}if(W<=Z)m+=A,p++;else break}}}let u;d?u=e.tokenization.getLineTokens(t).withInserted(d.map((m,p)=>({offset:m,text:c[p].content,tokenMetadata:ll.defaultTokenMetadata}))):u=e.tokenization.getLineTokens(t);for(let m=i;m<i+n;m++){const p=o+m-i;if(!l[p]){r[p]=null;continue}r[p]=this._getViewLineData(u,h?h[m]:null,m)}}_getViewLineData(e,t,i){this._assertVisible();const n=this._projectionData,o=i>0?n.wrappedTextIndentLength:0,l=i>0?n.breakOffsets[i-1]:0,r=n.breakOffsets[i],a=e.sliceAndInflate(l,r,o);let d=a.getLineContent();i>0&&(d=Lae(n.wrappedTextIndentLength)+d);const c=this._projectionData.getMinOutputOffset(i)+1,h=d.length+1,u=i+1<this.getViewLineCount(),m=i===0?0:n.breakOffsetsVisibleColumn[i-1];return new gte(d,u,c,h,m,a,t)}getModelColumnOfViewPosition(e,t){return this._assertVisible(),this._projectionData.translateToInputOffset(e,t-1)+1}getViewPositionOfModelPosition(e,t,i=2){return this._assertVisible(),this._projectionData.translateToOutputPosition(t-1,i).toPosition(e)}getViewLineNumberOfModelPosition(e,t){this._assertVisible();const i=this._projectionData.translateToOutputPosition(t-1);return e+i.outputLineIndex}normalizePosition(e,t,i){const n=t.lineNumber-e;return this._projectionData.normalizeOutputPosition(e,t.column-1,i).toPosition(n)}getInjectedTextAt(e,t){return this._projectionData.getInjectedText(e,t-1)}_assertVisible(){if(!this._isVisible)throw new Error("Not supported")}}const JX=class JX{constructor(){}isVisible(){return!0}setVisible(e){return e?this:px.INSTANCE}getProjectionData(){return null}getViewLineCount(){return 1}getViewLineContent(e,t,i){return e.getLineContent(t)}getViewLineLength(e,t,i){return e.getLineLength(t)}getViewLineMinColumn(e,t,i){return e.getLineMinColumn(t)}getViewLineMaxColumn(e,t,i){return e.getLineMaxColumn(t)}getViewLineData(e,t,i){const n=e.tokenization.getLineTokens(t),o=n.getLineContent();return new gte(o,!1,1,o.length+1,0,n.inflate(),null)}getViewLinesData(e,t,i,n,o,l,r){if(!l[o]){r[o]=null;return}r[o]=this.getViewLineData(e,t,0)}getModelColumnOfViewPosition(e,t){return t}getViewPositionOfModelPosition(e,t){return new oe(e,t)}getViewLineNumberOfModelPosition(e,t){return e}normalizePosition(e,t,i){return t}getInjectedTextAt(e,t){return null}};JX.INSTANCE=new JX;let mx=JX;const XX=class XX{constructor(){}isVisible(){return!1}setVisible(e){return e?mx.INSTANCE:this}getProjectionData(){return null}getViewLineCount(){return 0}getViewLineContent(e,t,i){throw new Error("Not supported")}getViewLineLength(e,t,i){throw new Error("Not supported")}getViewLineMinColumn(e,t,i){throw new Error("Not supported")}getViewLineMaxColumn(e,t,i){throw new Error("Not supported")}getViewLineData(e,t,i){throw new Error("Not supported")}getViewLinesData(e,t,i,n,o,l,r){throw new Error("Not supported")}getModelColumnOfViewPosition(e,t){throw new Error("Not supported")}getViewPositionOfModelPosition(e,t){throw new Error("Not supported")}getViewLineNumberOfModelPosition(e,t){throw new Error("Not supported")}normalizePosition(e,t,i){throw new Error("Not supported")}getInjectedTextAt(e,t){throw new Error("Not supported")}};XX.INSTANCE=new XX;let px=XX;const n_=[""];function Lae(s){if(s>=n_.length)for(let e=1;e<=s;e++)n_[e]=u8e(e);return n_[s]}function u8e(s){return new Array(s+1).join(" ")}class m8e{constructor(e,t,i,n,o,l,r,a,d,c){this._editorId=e,this.model=t,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=i,this._monospaceLineBreaksComputerFactory=n,this.fontInfo=o,this.tabSize=l,this.wrappingStrategy=r,this.wrappingColumn=a,this.wrappingIndent=d,this.wordBreak=c,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new g8e(this)}_constructLines(e,t){this.modelLineProjections=[],e&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const i=this.model.getLinesContent(),n=this.model.getInjectedTextDecorations(this._editorId),o=i.length,l=this.createLineBreaksComputer(),r=new f0(Pu.fromDecorations(n));for(let g=0;g<o;g++){const b=r.takeWhile(f=>f.lineNumber===g+1);l.addRequest(i[g],b,t?t[g]:null)}const a=l.finalize(),d=[],c=this.hiddenAreasDecorationIds.map(g=>this.model.getDecorationRange(g)).sort(v.compareRangesUsingStarts);let h=1,u=0,m=-1,p=m+1<c.length?u+1:o+2;for(let g=0;g<o;g++){const b=g+1;b===p&&(m++,h=c[m].startLineNumber,u=c[m].endLineNumber,p=m+1<c.length?u+1:o+2);const f=b>=h&&b<=u,Z=i_(a[g],!f);d[g]=Z.getViewLineCount(),this.modelLineProjections[g]=Z}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new QJe(d)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map(e=>this.model.getDecorationRange(e))}setHiddenAreas(e){const t=e.map(u=>this.model.validateRange(u)),i=p8e(t),n=this.hiddenAreasDecorationIds.map(u=>this.model.getDecorationRange(u)).sort(v.compareRangesUsingStarts);if(i.length===n.length){let u=!1;for(let m=0;m<i.length;m++)if(!i[m].equalsRange(n[m])){u=!0;break}if(!u)return!1}const o=i.map(u=>({range:u,options:Ot.EMPTY}));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,o);const l=i;let r=1,a=0,d=-1,c=d+1<l.length?a+1:this.modelLineProjections.length+2,h=!1;for(let u=0;u<this.modelLineProjections.length;u++){const m=u+1;m===c&&(d++,r=l[d].startLineNumber,a=l[d].endLineNumber,c=d+1<l.length?a+1:this.modelLineProjections.length+2);let p=!1;if(m>=r&&m<=a?this.modelLineProjections[u].isVisible()&&(this.modelLineProjections[u]=this.modelLineProjections[u].setVisible(!1),p=!0):(h=!0,this.modelLineProjections[u].isVisible()||(this.modelLineProjections[u]=this.modelLineProjections[u].setVisible(!0),p=!0)),p){const g=this.modelLineProjections[u].getViewLineCount();this.projectedModelLineLineCounts.setValue(u,g)}}return h||this.setHiddenAreas([]),!0}modelPositionIsVisible(e,t){return e<1||e>this.modelLineProjections.length?!1:this.modelLineProjections[e-1].isVisible()}getModelLineViewLineCount(e){return e<1||e>this.modelLineProjections.length?1:this.modelLineProjections[e-1].getViewLineCount()}setTabSize(e){return this.tabSize===e?!1:(this.tabSize=e,this._constructLines(!1,null),!0)}setWrappingSettings(e,t,i,n,o){const l=this.fontInfo.equals(e),r=this.wrappingStrategy===t,a=this.wrappingColumn===i,d=this.wrappingIndent===n,c=this.wordBreak===o;if(l&&r&&a&&d&&c)return!1;const h=l&&r&&!a&&d&&c;this.fontInfo=e,this.wrappingStrategy=t,this.wrappingColumn=i,this.wrappingIndent=n,this.wordBreak=o;let u=null;if(h){u=[];for(let m=0,p=this.modelLineProjections.length;m<p;m++)u[m]=this.modelLineProjections[m].getProjectionData()}return this._constructLines(!1,u),!0}createLineBreaksComputer(){return(this.wrappingStrategy==="advanced"?this._domLineBreaksComputerFactory:this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo,this.tabSize,this.wrappingColumn,this.wrappingIndent,this.wordBreak)}onModelFlushed(){this._constructLines(!0,null)}onModelLinesDeleted(e,t,i){if(!e||e<=this._validModelVersionId)return null;const n=t===1?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,o=this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections.splice(t-1,i-t+1),this.projectedModelLineLineCounts.removeValues(t-1,i-t+1),new V4(n,o)}onModelLinesInserted(e,t,i,n){if(!e||e<=this._validModelVersionId)return null;const o=t>2&&!this.modelLineProjections[t-2].isVisible(),l=t===1?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1;let r=0;const a=[],d=[];for(let c=0,h=n.length;c<h;c++){const u=i_(n[c],!o);a.push(u);const m=u.getViewLineCount();r+=m,d[c]=m}return this.modelLineProjections=this.modelLineProjections.slice(0,t-1).concat(a).concat(this.modelLineProjections.slice(t-1)),this.projectedModelLineLineCounts.insertValues(t-1,d),new Q4(l,l+r-1)}onModelLineChanged(e,t,i){if(e!==null&&e<=this._validModelVersionId)return[!1,null,null,null];const n=t-1,o=this.modelLineProjections[n].getViewLineCount(),l=this.modelLineProjections[n].isVisible(),r=i_(i,l);this.modelLineProjections[n]=r;const a=this.modelLineProjections[n].getViewLineCount();let d=!1,c=0,h=-1,u=0,m=-1,p=0,g=-1;o>a?(c=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=c+a-1,p=h+1,g=p+(o-a)-1,d=!0):o<a?(c=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=c+o-1,u=h+1,m=u+(a-o)-1,d=!0):(c=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=c+a-1),this.projectedModelLineLineCounts.setValue(n,a);const b=c<=h?new Mfe(c,h-c+1):null,f=u<=m?new Q4(u,m):null,Z=p<=g?new V4(p,g):null;return[d,b,f,Z]}acceptVersionId(e){this._validModelVersionId=e,this.modelLineProjections.length===1&&!this.modelLineProjections[0].isVisible()&&this.setHiddenAreas([])}getViewLineCount(){return this.projectedModelLineLineCounts.getTotalSum()}_toValidViewLineNumber(e){if(e<1)return 1;const t=this.getViewLineCount();return e>t?t:e|0}getActiveIndentGuide(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),i=this._toValidViewLineNumber(i);const n=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),o=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),l=this.convertViewPositionToModelPosition(i,this.getViewLineMinColumn(i)),r=this.model.guides.getActiveIndentGuide(n.lineNumber,o.lineNumber,l.lineNumber),a=this.convertModelPositionToViewPosition(r.startLineNumber,1),d=this.convertModelPositionToViewPosition(r.endLineNumber,this.model.getLineMaxColumn(r.endLineNumber));return{startLineNumber:a.lineNumber,endLineNumber:d.lineNumber,indent:r.indent}}getViewLineInfo(e){e=this._toValidViewLineNumber(e);const t=this.projectedModelLineLineCounts.getIndexOf(e-1),i=t.index,n=t.remainder;return new kae(i+1,n)}getMinColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),n=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new oe(e.modelLineNumber,n)}getModelEndPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),n=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new oe(e.modelLineNumber,n)}getViewLineInfosGroupedByModelRanges(e,t){const i=this.getViewLineInfo(e),n=this.getViewLineInfo(t),o=new Array;let l=this.getModelStartPositionOfViewLine(i),r=new Array;for(let a=i.modelLineNumber;a<=n.modelLineNumber;a++){const d=this.modelLineProjections[a-1];if(d.isVisible()){const c=a===i.modelLineNumber?i.modelLineWrappedLineIdx:0,h=a===n.modelLineNumber?n.modelLineWrappedLineIdx+1:d.getViewLineCount();for(let u=c;u<h;u++)r.push(new kae(a,u))}if(!d.isVisible()&&l){const c=new oe(a-1,this.model.getLineMaxColumn(a-1)+1),h=v.fromPositions(l,c);o.push(new Iae(h,r)),r=[],l=null}else d.isVisible()&&!l&&(l=new oe(a,1))}if(l){const a=v.fromPositions(l,this.getModelEndPositionOfViewLine(n));o.push(new Iae(a,r))}return o}getViewLinesBracketGuides(e,t,i,n){const o=i?this.convertViewPositionToModelPosition(i.lineNumber,i.column):null,l=[];for(const r of this.getViewLineInfosGroupedByModelRanges(e,t)){const a=r.modelRange.startLineNumber,d=this.model.guides.getLinesBracketGuides(a,r.modelRange.endLineNumber,o,n);for(const c of r.viewLines){const u=d[c.modelLineNumber-a].map(m=>{if(m.forWrappedLinesAfterColumn!==-1&&this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.forWrappedLinesAfterColumn).lineNumber>=c.modelLineWrappedLineIdx||m.forWrappedLinesBeforeOrAtColumn!==-1&&this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.forWrappedLinesBeforeOrAtColumn).lineNumber<c.modelLineWrappedLineIdx)return;if(!m.horizontalLine)return m;let p=-1;if(m.column!==-1){const f=this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.column);if(f.lineNumber===c.modelLineWrappedLineIdx)p=f.column;else if(f.lineNumber<c.modelLineWrappedLineIdx)p=this.getMinColumnOfViewLine(c);else if(f.lineNumber>c.modelLineWrappedLineIdx)return}const g=this.convertModelPositionToViewPosition(c.modelLineNumber,m.horizontalLine.endColumn),b=this.modelLineProjections[c.modelLineNumber-1].getViewPositionOfModelPosition(0,m.horizontalLine.endColumn);return b.lineNumber===c.modelLineWrappedLineIdx?new VZ(m.visibleColumn,p,m.className,new UC(m.horizontalLine.top,g.column),-1,-1):b.lineNumber<c.modelLineWrappedLineIdx||m.visibleColumn!==-1?void 0:new VZ(m.visibleColumn,p,m.className,new UC(m.horizontalLine.top,this.getMaxColumnOfViewLine(c)),-1,-1)});l.push(u.filter(m=>!!m))}}return l}getViewLinesIndentGuides(e,t){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),n=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t));let o=[];const l=[],r=[],a=i.lineNumber-1,d=n.lineNumber-1;let c=null;for(let p=a;p<=d;p++){const g=this.modelLineProjections[p];if(g.isVisible()){const b=g.getViewLineNumberOfModelPosition(0,p===a?i.column:1),f=g.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(p+1)),Z=f-b+1;let A=0;Z>1&&g.getViewLineMinColumn(this.model,p+1,f)===1&&(A=b===0?1:2),l.push(Z),r.push(A),c===null&&(c=new oe(p+1,0))}else c!==null&&(o=o.concat(this.model.guides.getLinesIndentGuides(c.lineNumber,p)),c=null)}c!==null&&(o=o.concat(this.model.guides.getLinesIndentGuides(c.lineNumber,n.lineNumber)),c=null);const h=t-e+1,u=new Array(h);let m=0;for(let p=0,g=o.length;p<g;p++){let b=o[p];const f=Math.min(h-m,l[p]),Z=r[p];let A;Z===2?A=0:Z===1?A=1:A=f;for(let N=0;N<f;N++)N===A&&(b=0),u[m++]=b}return u}getViewLineContent(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineContent(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineLength(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineLength(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineMinColumn(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineMinColumn(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineMaxColumn(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineMaxColumn(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineData(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineData(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLinesData(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const n=this.projectedModelLineLineCounts.getIndexOf(e-1);let o=e;const l=n.index,r=n.remainder,a=[];for(let d=l,c=this.model.getLineCount();d<c;d++){const h=this.modelLineProjections[d];if(!h.isVisible())continue;const u=d===l?r:0;let m=h.getViewLineCount()-u,p=!1;if(o+m>t&&(p=!0,m=t-o+1),h.getViewLinesData(this.model,d+1,u,m,o-e,i,a),o+=m,p)break}return a}validateViewPosition(e,t,i){e=this._toValidViewLineNumber(e);const n=this.projectedModelLineLineCounts.getIndexOf(e-1),o=n.index,l=n.remainder,r=this.modelLineProjections[o],a=r.getViewLineMinColumn(this.model,o+1,l),d=r.getViewLineMaxColumn(this.model,o+1,l);t<a&&(t=a),t>d&&(t=d);const c=r.getModelColumnOfViewPosition(l,t);return this.model.validatePosition(new oe(o+1,c)).equals(i)?new oe(e,t):this.convertModelPositionToViewPosition(i.lineNumber,i.column)}validateViewRange(e,t){const i=this.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),n=this.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new v(i.lineNumber,i.column,n.lineNumber,n.column)}convertViewPositionToModelPosition(e,t){const i=this.getViewLineInfo(e),n=this.modelLineProjections[i.modelLineNumber-1].getModelColumnOfViewPosition(i.modelLineWrappedLineIdx,t);return this.model.validatePosition(new oe(i.modelLineNumber,n))}convertViewRangeToModelRange(e){const t=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),i=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new v(t.lineNumber,t.column,i.lineNumber,i.column)}convertModelPositionToViewPosition(e,t,i=2,n=!1,o=!1){const l=this.model.validatePosition(new oe(e,t)),r=l.lineNumber,a=l.column;let d=r-1,c=!1;if(o)for(;d<this.modelLineProjections.length&&!this.modelLineProjections[d].isVisible();)d++,c=!0;else for(;d>0&&!this.modelLineProjections[d].isVisible();)d--,c=!0;if(d===0&&!this.modelLineProjections[d].isVisible())return new oe(n?0:1,1);const h=1+this.projectedModelLineLineCounts.getPrefixSum(d);let u;return c?o?u=this.modelLineProjections[d].getViewPositionOfModelPosition(h,1,i):u=this.modelLineProjections[d].getViewPositionOfModelPosition(h,this.model.getLineMaxColumn(d+1),i):u=this.modelLineProjections[r-1].getViewPositionOfModelPosition(h,a,i),u}convertModelRangeToViewRange(e,t=0){if(e.isEmpty()){const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,t);return v.fromPositions(i)}else{const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,1),n=this.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn,0);return new v(i.lineNumber,i.column,n.lineNumber,n.column)}}getViewLineNumberOfModelPosition(e,t){let i=e-1;if(this.modelLineProjections[i].isVisible()){const o=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(o,t)}for(;i>0&&!this.modelLineProjections[i].isVisible();)i--;if(i===0&&!this.modelLineProjections[i].isVisible())return 1;const n=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(n,this.model.getLineMaxColumn(i+1))}getDecorationsInRange(e,t,i,n,o){const l=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),r=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);if(r.lineNumber-l.lineNumber<=e.endLineNumber-e.startLineNumber)return this.model.getDecorationsInRange(new v(l.lineNumber,1,r.lineNumber,r.column),t,i,n,o);let a=[];const d=l.lineNumber-1,c=r.lineNumber-1;let h=null;for(let g=d;g<=c;g++)if(this.modelLineProjections[g].isVisible())h===null&&(h=new oe(g+1,g===d?l.column:1));else if(h!==null){const f=this.model.getLineMaxColumn(g);a=a.concat(this.model.getDecorationsInRange(new v(h.lineNumber,h.column,g,f),t,i,n)),h=null}h!==null&&(a=a.concat(this.model.getDecorationsInRange(new v(h.lineNumber,h.column,r.lineNumber,r.column),t,i,n)),h=null),a.sort((g,b)=>{const f=v.compareRangesUsingStarts(g.range,b.range);return f===0?g.id<b.id?-1:g.id>b.id?1:0:f});const u=[];let m=0,p=null;for(const g of a){const b=g.id;p!==b&&(p=b,u[m++]=g)}return u}getInjectedTextAt(e){const t=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[t.modelLineNumber-1].getInjectedTextAt(t.modelLineWrappedLineIdx,e.column)}normalizePosition(e,t){const i=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[i.modelLineNumber-1].normalizePosition(i.modelLineWrappedLineIdx,e,t)}getLineIndentColumn(e){const t=this.getViewLineInfo(e);return t.modelLineWrappedLineIdx===0?this.model.getLineIndentColumn(t.modelLineNumber):0}}function p8e(s){if(s.length===0)return[];const e=s.slice();e.sort(v.compareRangesUsingStarts);const t=[];let i=e[0].startLineNumber,n=e[0].endLineNumber;for(let o=1,l=e.length;o<l;o++){const r=e[o];r.startLineNumber>n+1?(t.push(new v(i,1,n,1)),i=r.startLineNumber,n=r.endLineNumber):r.endLineNumber>n&&(n=r.endLineNumber)}return t.push(new v(i,1,n,1)),t}class kae{constructor(e,t){this.modelLineNumber=e,this.modelLineWrappedLineIdx=t}}class Iae{constructor(e,t){this.modelRange=e,this.viewLines=t}}class g8e{constructor(e){this._lines=e}convertViewPositionToModelPosition(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)}convertViewRangeToModelRange(e){return this._lines.convertViewRangeToModelRange(e)}validateViewPosition(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)}validateViewRange(e,t){return this._lines.validateViewRange(e,t)}convertModelPositionToViewPosition(e,t,i,n){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column,t,i,n)}convertModelRangeToViewRange(e,t){return this._lines.convertModelRangeToViewRange(e,t)}modelPositionIsVisible(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)}getModelLineViewLineCount(e){return this._lines.getModelLineViewLineCount(e)}getViewLineNumberOfModelPosition(e,t){return this._lines.getViewLineNumberOfModelPosition(e,t)}}class b8e{constructor(e){this.model=e}dispose(){}createCoordinatesConverter(){return new U8e(this)}getHiddenAreas(){return[]}setHiddenAreas(e){return!1}setTabSize(e){return!1}setWrappingSettings(e,t,i,n){return!1}createLineBreaksComputer(){const e=[];return{addRequest:(t,i,n)=>{e.push(null)},finalize:()=>e}}onModelFlushed(){}onModelLinesDeleted(e,t,i){return new V4(t,i)}onModelLinesInserted(e,t,i,n){return new Q4(t,i)}onModelLineChanged(e,t,i){return[!1,new Mfe(t,1),null,null]}acceptVersionId(e){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(e,t,i){return{startLineNumber:e,endLineNumber:e,indent:0}}getViewLinesBracketGuides(e,t,i){return new Array(t-e+1).fill([])}getViewLinesIndentGuides(e,t){const i=t-e+1,n=new Array(i);for(let o=0;o<i;o++)n[o]=0;return n}getViewLineContent(e){return this.model.getLineContent(e)}getViewLineLength(e){return this.model.getLineLength(e)}getViewLineMinColumn(e){return this.model.getLineMinColumn(e)}getViewLineMaxColumn(e){return this.model.getLineMaxColumn(e)}getViewLineData(e){const t=this.model.tokenization.getLineTokens(e),i=t.getLineContent();return new gte(i,!1,1,i.length+1,0,t.inflate(),null)}getViewLinesData(e,t,i){const n=this.model.getLineCount();e=Math.min(Math.max(1,e),n),t=Math.min(Math.max(1,t),n);const o=[];for(let l=e;l<=t;l++){const r=l-e;o[r]=i[r]?this.getViewLineData(l):null}return o}getDecorationsInRange(e,t,i,n,o){return this.model.getDecorationsInRange(e,t,i,n,o)}normalizePosition(e,t){return this.model.normalizePosition(e,t)}getLineIndentColumn(e){return this.model.getLineIndentColumn(e)}getInjectedTextAt(e){return null}}class U8e{constructor(e){this._lines=e}_validPosition(e){return this._lines.model.validatePosition(e)}_validRange(e){return this._lines.model.validateRange(e)}convertViewPositionToModelPosition(e){return this._validPosition(e)}convertViewRangeToModelRange(e){return this._validRange(e)}validateViewPosition(e,t){return this._validPosition(t)}validateViewRange(e,t){return this._validRange(t)}convertModelPositionToViewPosition(e){return this._validPosition(e)}convertModelRangeToViewRange(e){return this._validRange(e)}modelPositionIsVisible(e){const t=this._lines.model.getLineCount();return!(e.lineNumber<1||e.lineNumber>t)}getModelLineViewLineCount(e){return 1}getViewLineNumberOfModelPosition(e,t){return e}}const vf=Kh.Right;class f8e{constructor(e){this.persist=0,this._requiredLanes=1,this.lanes=new Uint8Array(Math.ceil((e+1)*vf/8))}reset(e){const t=Math.ceil((e+1)*vf/8);this.lanes.length<t?this.lanes=new Uint8Array(t):this.lanes.fill(0),this._requiredLanes=1}get requiredLanes(){return this._requiredLanes}push(e,t,i){i&&(this.persist|=1<<e-1);for(let n=t.startLineNumber;n<=t.endLineNumber;n++){const o=vf*n+(e-1);this.lanes[o>>>3]|=1<<o%8,this._requiredLanes=Math.max(this._requiredLanes,this.countAtLine(n))}}getLanesAtLine(e){const t=[];let i=vf*e;for(let n=0;n<vf;n++)(this.persist&1<<n||this.lanes[i>>>3]&1<<i%8)&&t.push(n+1),i++;return t.length?t:[Kh.Center]}countAtLine(e){let t=vf*e,i=0;for(let n=0;n<vf;n++)(this.persist&1<<n||this.lanes[t>>>3]&1<<t%8)&&i++,t++;return i}}let F8e=class extends de{constructor(e,t,i,n,o,l,r,a,d,c){if(super(),this.languageConfigurationService=r,this._themeService=a,this._attachedView=d,this._transactionalTarget=c,this.hiddenAreasModel=new A8e,this.previousHiddenAreas=[],this._editorId=e,this._configuration=t,this.model=i,this._eventDispatcher=new Y7e,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new LN(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._updateConfigurationViewLineCount=this._register(new Rn(()=>this._updateConfigurationViewLineCountNow(),0)),this._hasFocus=!1,this._viewportStart=Dte.create(this.model),this.glyphLanes=new f8e(0),this.model.isTooLargeForTokenization())this._lines=new b8e(this.model);else{const h=this._configuration.options,u=h.get(50),m=h.get(140),p=h.get(147),g=h.get(139),b=h.get(130);this._lines=new m8e(this._editorId,this.model,n,o,u,this.model.getOptions().tabSize,m,p.wrappingColumn,g,b)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new t8e(i,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new d8e(this._configuration,this.getLineCount(),l)),this._register(this.viewLayout.onDidScroll(h=>{h.scrollTopChanged&&this._handleVisibleLinesChanged(),h.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new E7e(h)),this._eventDispatcher.emitOutgoingEvent(new Bte(h.oldScrollWidth,h.oldScrollLeft,h.oldScrollHeight,h.oldScrollTop,h.scrollWidth,h.scrollLeft,h.scrollHeight,h.scrollTop))})),this._register(this.viewLayout.onDidContentSizeChange(h=>{this._eventDispatcher.emitOutgoingEvent(h)})),this._decorations=new c8e(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast(h=>{try{const u=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(u,h)}finally{this._eventDispatcher.endEmitViewEvents()}})),this._register(dx.getInstance().onDidChange(()=>{this._eventDispatcher.emitSingleViewEvent(new J7e)})),this._register(this._themeService.onDidColorThemeChange(h=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new v7e(h))})),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(e){this._eventDispatcher.addViewEventHandler(e)}removeViewEventHandler(e){this._eventDispatcher.removeViewEventHandler(e)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const e=this.viewLayout.getLinesViewportData(),t=new v(e.startLineNumber,this.getLineMinColumn(e.startLineNumber),e.endLineNumber,this.getLineMaxColumn(e.endLineNumber));return this._toModelVisibleRanges(t)}visibleLinesStabilized(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!0)}_handleVisibleLinesChanged(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!1)}setHasFocus(e){this._hasFocus=e,this._cursor.setHasFocus(e),this._eventDispatcher.emitSingleViewEvent(new D7e(e)),this._eventDispatcher.emitOutgoingEvent(new Tte(!e,e))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new B7e)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new L7e)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const e=new oe(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),t=this.coordinatesConverter.convertViewPositionToModelPosition(e);return new Gae(t,this._viewportStart.startLineDelta)}return new Gae(null,0)}_onConfigurationChanged(e,t){const i=this._captureStableViewport(),n=this._configuration.options,o=n.get(50),l=n.get(140),r=n.get(147),a=n.get(139),d=n.get(130);this._lines.setWrappingSettings(o,l,r.wrappingColumn,a,d)&&(e.emitViewEvent(new pk),e.emitViewEvent(new gk),e.emitViewEvent(new Ef(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),t.hasChanged(92)&&(this._decorations.reset(),e.emitViewEvent(new Ef(null))),t.hasChanged(99)&&(this._decorations.reset(),e.emitViewEvent(new Ef(null))),e.emitViewEvent(new k7e(t)),this.viewLayout.onConfigurationChanged(t),i.recoverViewportStart(this.coordinatesConverter,this.viewLayout),LN.shouldRecreate(t)&&(this.cursorConfig=new LN(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText(e=>{try{const i=this._eventDispatcher.beginEmitViewEvents();let n=!1,o=!1;const l=e instanceof jZ?e.rawContentChangedEvent.changes:e.changes,r=e instanceof jZ?e.rawContentChangedEvent.versionId:null,a=this._lines.createLineBreaksComputer();for(const h of l)switch(h.changeType){case 4:{for(let u=0;u<h.detail.length;u++){const m=h.detail[u];let p=h.injectedTexts[u];p&&(p=p.filter(g=>!g.ownerId||g.ownerId===this._editorId)),a.addRequest(m,p,null)}break}case 2:{let u=null;h.injectedText&&(u=h.injectedText.filter(m=>!m.ownerId||m.ownerId===this._editorId)),a.addRequest(h.detail,u,null);break}}const d=a.finalize(),c=new f0(d);for(const h of l)switch(h.changeType){case 1:{this._lines.onModelFlushed(),i.emitViewEvent(new pk),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),n=!0;break}case 3:{const u=this._lines.onModelLinesDeleted(r,h.fromLineNumber,h.toLineNumber);u!==null&&(i.emitViewEvent(u),this.viewLayout.onLinesDeleted(u.fromLineNumber,u.toLineNumber)),n=!0;break}case 4:{const u=c.takeCount(h.detail.length),m=this._lines.onModelLinesInserted(r,h.fromLineNumber,h.toLineNumber,u);m!==null&&(i.emitViewEvent(m),this.viewLayout.onLinesInserted(m.fromLineNumber,m.toLineNumber)),n=!0;break}case 2:{const u=c.dequeue(),[m,p,g,b]=this._lines.onModelLineChanged(r,h.lineNumber,u);o=m,p&&i.emitViewEvent(p),g&&(i.emitViewEvent(g),this.viewLayout.onLinesInserted(g.fromLineNumber,g.toLineNumber)),b&&(i.emitViewEvent(b),this.viewLayout.onLinesDeleted(b.fromLineNumber,b.toLineNumber));break}case 5:break}r!==null&&this._lines.acceptVersionId(r),this.viewLayout.onHeightMaybeChanged(),!n&&o&&(i.emitViewEvent(new gk),i.emitViewEvent(new Ef(null)),this._cursor.onLineMappingChanged(i),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const t=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&t){const i=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(i){const n=this.coordinatesConverter.convertModelPositionToViewPosition(i.getStartPosition()),o=this.viewLayout.getVerticalOffsetForLineNumber(n.lineNumber);this.viewLayout.setScrollPosition({scrollTop:o+this._viewportStart.startLineDelta},1)}}try{const i=this._eventDispatcher.beginEmitViewEvents();e instanceof jZ&&i.emitOutgoingEvent(new q7e(e.contentChangedEvent)),this._cursor.onModelContentChanged(i,e)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()})),this._register(this.model.onDidChangeTokens(e=>{const t=[];for(let i=0,n=e.ranges.length;i<n;i++){const o=e.ranges[i],l=this.coordinatesConverter.convertModelPositionToViewPosition(new oe(o.fromLineNumber,1)).lineNumber,r=this.coordinatesConverter.convertModelPositionToViewPosition(new oe(o.toLineNumber,this.model.getLineMaxColumn(o.toLineNumber))).lineNumber;t[i]={fromLineNumber:l,toLineNumber:r}}this._eventDispatcher.emitSingleViewEvent(new x7e(t)),this._eventDispatcher.emitOutgoingEvent(new e8e(e))})),this._register(this.model.onDidChangeLanguageConfiguration(e=>{this._eventDispatcher.emitSingleViewEvent(new G7e),this.cursorConfig=new LN(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new K7e(e))})),this._register(this.model.onDidChangeLanguage(e=>{this.cursorConfig=new LN(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new P7e(e))})),this._register(this.model.onDidChangeOptions(e=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const t=this._eventDispatcher.beginEmitViewEvents();t.emitViewEvent(new pk),t.emitViewEvent(new gk),t.emitViewEvent(new Ef(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new LN(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new $7e(e))})),this._register(this.model.onDidChangeDecorations(e=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new Ef(e)),this._eventDispatcher.emitOutgoingEvent(new H7e(e))}))}setHiddenAreas(e,t){var l;this.hiddenAreasModel.setHiddenAreas(t,e);const i=this.hiddenAreasModel.getMergedRanges();if(i===this.previousHiddenAreas)return;this.previousHiddenAreas=i;const n=this._captureStableViewport();let o=!1;try{const r=this._eventDispatcher.beginEmitViewEvents();o=this._lines.setHiddenAreas(i),o&&(r.emitViewEvent(new pk),r.emitViewEvent(new gk),r.emitViewEvent(new Ef(null)),this._cursor.onLineMappingChanged(r),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged());const a=(l=n.viewportStartModelPosition)==null?void 0:l.lineNumber;a&&i.some(c=>c.startLineNumber<=a&&a<=c.endLineNumber)||n.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),o&&this._eventDispatcher.emitOutgoingEvent(new O7e)}getVisibleRangesPlusViewportAboveBelow(){const e=this._configuration.options.get(146),t=this._configuration.options.get(67),i=Math.max(20,Math.round(e.height/t)),n=this.viewLayout.getLinesViewportData(),o=Math.max(1,n.completelyVisibleStartLineNumber-i),l=Math.min(this.getLineCount(),n.completelyVisibleEndLineNumber+i);return this._toModelVisibleRanges(new v(o,this.getLineMinColumn(o),l,this.getLineMaxColumn(l)))}getVisibleRanges(){const e=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(e)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(e){const t=this.coordinatesConverter.convertViewRangeToModelRange(e),i=this._lines.getHiddenAreas();if(i.length===0)return[t];const n=[];let o=0,l=t.startLineNumber,r=t.startColumn;const a=t.endLineNumber,d=t.endColumn;for(let c=0,h=i.length;c<h;c++){const u=i[c].startLineNumber,m=i[c].endLineNumber;m<l||u>a||(l<u&&(n[o++]=new v(l,r,u-1,this.model.getLineMaxColumn(u-1))),l=m+1,r=1)}return(l<a||l===a&&r<d)&&(n[o++]=new v(l,r,a,d)),n}getCompletelyVisibleViewRange(){const e=this.viewLayout.getLinesViewportData(),t=e.completelyVisibleStartLineNumber,i=e.completelyVisibleEndLineNumber;return new v(t,this.getLineMinColumn(t),i,this.getLineMaxColumn(i))}getCompletelyVisibleViewRangeAtScrollTop(e){const t=this.viewLayout.getLinesViewportDataAtScrollTop(e),i=t.completelyVisibleStartLineNumber,n=t.completelyVisibleEndLineNumber;return new v(i,this.getLineMinColumn(i),n,this.getLineMaxColumn(n))}saveState(){const e=this.viewLayout.saveState(),t=e.scrollTop,i=this.viewLayout.getLineNumberAtVerticalOffset(t),n=this.coordinatesConverter.convertViewPositionToModelPosition(new oe(i,this.getLineMinColumn(i))),o=this.viewLayout.getVerticalOffsetForLineNumber(i)-t;return{scrollLeft:e.scrollLeft,firstPosition:n,firstPositionDeltaTop:o}}reduceRestoreState(e){if(typeof e.firstPosition>"u")return this._reduceRestoreStateCompatibility(e);const t=this.model.validatePosition(e.firstPosition),i=this.coordinatesConverter.convertModelPositionToViewPosition(t),n=this.viewLayout.getVerticalOffsetForLineNumber(i.lineNumber)-e.firstPositionDeltaTop;return{scrollLeft:e.scrollLeft,scrollTop:n}}_reduceRestoreStateCompatibility(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getLineCount(){return this._lines.getViewLineCount()}setViewport(e,t,i){this._viewportStart.update(this,e)}getActiveIndentGuide(e,t,i){return this._lines.getActiveIndentGuide(e,t,i)}getLinesIndentGuides(e,t){return this._lines.getViewLinesIndentGuides(e,t)}getBracketGuidesInRangeByLine(e,t,i,n){return this._lines.getViewLinesBracketGuides(e,t,i,n)}getLineContent(e){return this._lines.getViewLineContent(e)}getLineLength(e){return this._lines.getViewLineLength(e)}getLineMinColumn(e){return this._lines.getViewLineMinColumn(e)}getLineMaxColumn(e){return this._lines.getViewLineMaxColumn(e)}getLineFirstNonWhitespaceColumn(e){const t=Wr(this.getLineContent(e));return t===-1?0:t+1}getLineLastNonWhitespaceColumn(e){const t=Xu(this.getLineContent(e));return t===-1?0:t+2}getMinimapDecorationsInRange(e){return this._decorations.getMinimapDecorationsInRange(e)}getDecorationsInViewport(e){return this._decorations.getDecorationsViewportData(e).decorations}getInjectedTextAt(e){return this._lines.getInjectedTextAt(e)}getViewportViewLineRenderingData(e,t){const n=this._decorations.getDecorationsViewportData(e).inlineDecorations[t-e.startLineNumber];return this._getViewLineRenderingData(t,n)}getViewLineRenderingData(e){const t=this._decorations.getInlineDecorationsOnLine(e);return this._getViewLineRenderingData(e,t)}_getViewLineRenderingData(e,t){const i=this.model.mightContainRTL(),n=this.model.mightContainNonBasicASCII(),o=this.getTabSize(),l=this._lines.getViewLineData(e);return l.inlineDecorations&&(t=[...t,...l.inlineDecorations.map(r=>r.toInlineDecoration(e))]),new uc(l.minColumn,l.maxColumn,l.content,l.continuesWithWrappedLine,i,n,l.tokens,t,o,l.startVisibleColumn)}getViewLineData(e){return this._lines.getViewLineData(e)}getMinimapLinesRenderingData(e,t,i){const n=this._lines.getViewLinesData(e,t,i);return new sKe(this.getTabSize(),n)}getAllOverviewRulerDecorations(e){const t=this.model.getOverviewRulerDecorations(this._editorId,CE(this._configuration.options)),i=new Z8e;for(const n of t){const o=n.options,l=o.overviewRuler;if(!l)continue;const r=l.position;if(r===0)continue;const a=l.getColor(e.value),d=this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.startLineNumber,n.range.startColumn),c=this.coordinatesConverter.getViewLineNumberOfModelPosition(n.range.endLineNumber,n.range.endColumn);i.accept(a,o.zIndex,d,c,r)}return i.asArray}_invalidateDecorationsColorCache(){const e=this.model.getOverviewRulerDecorations();for(const t of e){const i=t.options.overviewRuler;i==null||i.invalidateCachedColor();const n=t.options.minimap;n==null||n.invalidateCachedColor()}}getValueInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueInRange(i,t)}getValueLengthInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueLengthInRange(i,t)}modifyPosition(e,t){const i=this.coordinatesConverter.convertViewPositionToModelPosition(e),n=this.model.modifyPosition(i,t);return this.coordinatesConverter.convertModelPositionToViewPosition(n)}deduceModelPositionRelativeToViewPosition(e,t,i){const n=this.coordinatesConverter.convertViewPositionToModelPosition(e);this.model.getEOL().length===2&&(t<0?t-=i:t+=i);const l=this.model.getOffsetAt(n)+t;return this.model.getPositionAt(l)}getPlainTextToCopy(e,t,i){const n=i?`\r
- `:this.model.getEOL();e=e.slice(0),e.sort(v.compareRangesUsingStarts);let o=!1,l=!1;for(const a of e)a.isEmpty()?o=!0:l=!0;if(!l){if(!t)return"";const a=e.map(c=>c.startLineNumber);let d="";for(let c=0;c<a.length;c++)c>0&&a[c-1]===a[c]||(d+=this.model.getLineContent(a[c])+n);return d}if(o&&t){const a=[];let d=0;for(const c of e){const h=c.startLineNumber;c.isEmpty()?h!==d&&a.push(this.model.getLineContent(h)):a.push(this.model.getValueInRange(c,i?2:0)),d=h}return a.length===1?a[0]:a}const r=[];for(const a of e)a.isEmpty()||r.push(this.model.getValueInRange(a,i?2:0));return r.length===1?r[0]:r}getRichTextToCopy(e,t){const i=this.model.getLanguageId();if(i===ia||e.length!==1)return null;let n=e[0];if(n.isEmpty()){if(!t)return null;const c=n.startLineNumber;n=new v(c,this.model.getLineMinColumn(c),c,this.model.getLineMaxColumn(c))}const o=this._configuration.options.get(50),l=this._getColorMap(),a=/[:;\\\/<>]/.test(o.fontFamily)||o.fontFamily===ta.fontFamily;let d;return a?d=ta.fontFamily:(d=o.fontFamily,d=d.replace(/"/g,"'"),/[,']/.test(d)||/[+ ]/.test(d)&&(d=`'${d}'`),d=`${d}, ${ta.fontFamily}`),{mode:i,html:`<div style="color: ${l[1]};background-color: ${l[2]};font-family: ${d};font-weight: ${o.fontWeight};font-size: ${o.fontSize}px;line-height: ${o.lineHeight}px;white-space: pre;">`+this._getHTMLToCopy(n,l)+"</div>"}}_getHTMLToCopy(e,t){const i=e.startLineNumber,n=e.startColumn,o=e.endLineNumber,l=e.endColumn,r=this.getTabSize();let a="";for(let d=i;d<=o;d++){const c=this.model.tokenization.getLineTokens(d),h=c.getLineContent(),u=d===i?n-1:0,m=d===o?l-1:h.length;h===""?a+="<br>":a+=Mze(h,c.inflate(),t,u,m,r,Gl)}return a}_getColorMap(){const e=Ds.getColorMap(),t=["#000000"];if(e)for(let i=1,n=e.length;i<n;i++)t[i]=Re.Format.CSS.formatHex(e[i]);return t}getPrimaryCursorState(){return this._cursor.getPrimaryCursorState()}getLastAddedCursorIndex(){return this._cursor.getLastAddedCursorIndex()}getCursorStates(){return this._cursor.getCursorStates()}setCursorStates(e,t,i){return this._withViewEventsCollector(n=>this._cursor.setStates(n,e,t,i))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(e){this._cursor.setCursorColumnSelectData(e)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(e){this._cursor.setPrevEditOperationType(e)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(e,t,i=0){this._withViewEventsCollector(n=>this._cursor.setSelections(n,e,t,i))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(e){this._withViewEventsCollector(t=>this._cursor.restoreState(t,e))}_executeCursorEdit(e){if(this._cursor.context.cursorConfig.readOnly){this._eventDispatcher.emitOutgoingEvent(new j7e);return}this._withViewEventsCollector(e)}executeEdits(e,t,i){this._executeCursorEdit(n=>this._cursor.executeEdits(n,e,t,i))}startComposition(){this._executeCursorEdit(e=>this._cursor.startComposition(e))}endComposition(e){this._executeCursorEdit(t=>this._cursor.endComposition(t,e))}type(e,t){this._executeCursorEdit(i=>this._cursor.type(i,e,t))}compositionType(e,t,i,n,o){this._executeCursorEdit(l=>this._cursor.compositionType(l,e,t,i,n,o))}paste(e,t,i,n){this._executeCursorEdit(o=>this._cursor.paste(o,e,t,i,n))}cut(e){this._executeCursorEdit(t=>this._cursor.cut(t,e))}executeCommand(e,t){this._executeCursorEdit(i=>this._cursor.executeCommand(i,e,t))}executeCommands(e,t){this._executeCursorEdit(i=>this._cursor.executeCommands(i,e,t))}revealAllCursors(e,t,i=!1){this._withViewEventsCollector(n=>this._cursor.revealAll(n,e,i,0,t,0))}revealPrimaryCursor(e,t,i=!1){this._withViewEventsCollector(n=>this._cursor.revealPrimary(n,e,i,0,t,0))}revealTopMostCursor(e){const t=this._cursor.getTopMostViewPosition(),i=new v(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector(n=>n.emitViewEvent(new BC(e,!1,i,null,0,!0,0)))}revealBottomMostCursor(e){const t=this._cursor.getBottomMostViewPosition(),i=new v(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector(n=>n.emitViewEvent(new BC(e,!1,i,null,0,!0,0)))}revealRange(e,t,i,n,o){this._withViewEventsCollector(l=>l.emitViewEvent(new BC(e,!1,i,null,n,t,o)))}changeWhitespace(e){this.viewLayout.changeWhitespace(e)&&(this._eventDispatcher.emitSingleViewEvent(new X7e),this._eventDispatcher.emitOutgoingEvent(new _7e))}_withViewEventsCollector(e){return this._transactionalTarget.batchChanges(()=>{try{const t=this._eventDispatcher.beginEmitViewEvents();return e(t)}finally{this._eventDispatcher.endEmitViewEvents()}})}batchEvents(e){this._withViewEventsCollector(()=>{e()})}normalizePosition(e,t){return this._lines.normalizePosition(e,t)}getLineIndentColumn(e){return this._lines.getLineIndentColumn(e)}};class Dte{static create(e){const t=e._setTrackedRange(null,new v(1,1,1,1),1);return new Dte(e,1,!1,t,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(e,t,i,n,o){this._model=e,this._viewLineNumber=t,this._isValid=i,this._modelTrackedRange=n,this._startLineDelta=o}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(e,t){const i=e.coordinatesConverter.convertViewPositionToModelPosition(new oe(t,e.getLineMinColumn(t))),n=e.model._setTrackedRange(this._modelTrackedRange,new v(i.lineNumber,i.column,i.lineNumber,i.column),1),o=e.viewLayout.getVerticalOffsetForLineNumber(t),l=e.viewLayout.getCurrentScrollTop();this._viewLineNumber=t,this._isValid=!0,this._modelTrackedRange=n,this._startLineDelta=l-o}invalidate(){this._isValid=!1}}class Z8e{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(e,t,i,n,o){const l=this._asMap[e];if(l){const r=l.data,a=r[r.length-3],d=r[r.length-1];if(a===o&&d+1>=i){n>d&&(r[r.length-1]=n);return}r.push(o,i,n)}else{const r=new vM(e,t,[o,i,n]);this._asMap[e]=r,this.asArray.push(r)}}}class A8e{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(e,t){const i=this.hiddenAreas.get(e);i&&Dae(i,t)||(this.hiddenAreas.set(e,t),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const e=Array.from(this.hiddenAreas.values()).reduce((t,i)=>N8e(t,i),[]);return Dae(this.ranges,e)?this.ranges:(this.ranges=e,this.ranges)}}function N8e(s,e){const t=[];let i=0,n=0;for(;i<s.length&&n<e.length;){const o=s[i],l=e[n];if(o.endLineNumber<l.startLineNumber-1)t.push(s[i++]);else if(l.endLineNumber<o.startLineNumber-1)t.push(e[n++]);else{const r=Math.min(o.startLineNumber,l.startLineNumber),a=Math.max(o.endLineNumber,l.endLineNumber);t.push(new v(r,1,a,1)),i++,n++}}for(;i<s.length;)t.push(s[i++]);for(;n<e.length;)t.push(e[n++]);return t}function Dae(s,e){if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(!s[t].equalsRange(e[t]))return!1;return!0}class Gae{constructor(e,t){this.viewportStartModelPosition=e,this.startLineDelta=t}recoverViewportStart(e,t){if(!this.viewportStartModelPosition)return;const i=e.convertModelPositionToViewPosition(this.viewportStartModelPosition),n=t.getVerticalOffsetForLineNumber(i.lineNumber);t.setScrollPosition({scrollTop:n+this.startLineDelta},1)}}var R8e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},jp=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},FF,_V;let HM=(_V=class extends de{get isSimpleWidget(){return this._configuration.isSimpleWidget}get contextMenuId(){return this._configuration.contextMenuId}constructor(e,t,i,n,o,l,r,a,d,c,h,u){super(),this.languageConfigurationService=h,this._deliveryQueue=MDe(),this._contributions=this._register(new C7e),this._onDidDispose=this._register(new re),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModelContent=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelContent=this._onDidChangeModelContent.event,this._onDidChangeModelLanguage=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguage=this._onDidChangeModelLanguage.event,this._onDidChangeModelLanguageConfiguration=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguageConfiguration=this._onDidChangeModelLanguageConfiguration.event,this._onDidChangeModelOptions=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelOptions=this._onDidChangeModelOptions.event,this._onDidChangeModelDecorations=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelDecorations=this._onDidChangeModelDecorations.event,this._onDidChangeModelTokens=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelTokens=this._onDidChangeModelTokens.event,this._onDidChangeConfiguration=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._onWillChangeModel=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onWillChangeModel=this._onWillChangeModel.event,this._onDidChangeModel=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidChangeCursorPosition=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorPosition=this._onDidChangeCursorPosition.event,this._onDidChangeCursorSelection=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorSelection=this._onDidChangeCursorSelection.event,this._onDidAttemptReadOnlyEdit=this._register(new cr(this._contributions,this._deliveryQueue)),this.onDidAttemptReadOnlyEdit=this._onDidAttemptReadOnlyEdit.event,this._onDidLayoutChange=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidLayoutChange=this._onDidLayoutChange.event,this._editorTextFocus=this._register(new Eae({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorText=this._editorTextFocus.onDidChangeToTrue,this.onDidBlurEditorText=this._editorTextFocus.onDidChangeToFalse,this._editorWidgetFocus=this._register(new Eae({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorWidget=this._editorWidgetFocus.onDidChangeToTrue,this.onDidBlurEditorWidget=this._editorWidgetFocus.onDidChangeToFalse,this._onWillType=this._register(new cr(this._contributions,this._deliveryQueue)),this.onWillType=this._onWillType.event,this._onDidType=this._register(new cr(this._contributions,this._deliveryQueue)),this.onDidType=this._onDidType.event,this._onDidCompositionStart=this._register(new cr(this._contributions,this._deliveryQueue)),this.onDidCompositionStart=this._onDidCompositionStart.event,this._onDidCompositionEnd=this._register(new cr(this._contributions,this._deliveryQueue)),this.onDidCompositionEnd=this._onDidCompositionEnd.event,this._onDidPaste=this._register(new cr(this._contributions,this._deliveryQueue)),this.onDidPaste=this._onDidPaste.event,this._onMouseUp=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseUp=this._onMouseUp.event,this._onMouseDown=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseDown=this._onMouseDown.event,this._onMouseDrag=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseDrag=this._onMouseDrag.event,this._onMouseDrop=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseDrop=this._onMouseDrop.event,this._onMouseDropCanceled=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseDropCanceled=this._onMouseDropCanceled.event,this._onDropIntoEditor=this._register(new cr(this._contributions,this._deliveryQueue)),this.onDropIntoEditor=this._onDropIntoEditor.event,this._onContextMenu=this._register(new cr(this._contributions,this._deliveryQueue)),this.onContextMenu=this._onContextMenu.event,this._onMouseMove=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseMove=this._onMouseMove.event,this._onMouseLeave=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseLeave=this._onMouseLeave.event,this._onMouseWheel=this._register(new cr(this._contributions,this._deliveryQueue)),this.onMouseWheel=this._onMouseWheel.event,this._onKeyUp=this._register(new cr(this._contributions,this._deliveryQueue)),this.onKeyUp=this._onKeyUp.event,this._onKeyDown=this._register(new cr(this._contributions,this._deliveryQueue)),this.onKeyDown=this._onKeyDown.event,this._onDidContentSizeChange=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._onDidScrollChange=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidScrollChange=this._onDidScrollChange.event,this._onDidChangeViewZones=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeViewZones=this._onDidChangeViewZones.event,this._onDidChangeHiddenAreas=this._register(new re({deliveryQueue:this._deliveryQueue})),this.onDidChangeHiddenAreas=this._onDidChangeHiddenAreas.event,this._updateCounter=0,this._onBeginUpdate=this._register(new re),this.onBeginUpdate=this._onBeginUpdate.event,this._onEndUpdate=this._register(new re),this.onEndUpdate=this._onEndUpdate.event,this._actions=new Map,this._bannerDomNode=null,this._dropIntoEditorDecorations=this.createDecorationsCollection(),o.willCreateCodeEditor();const m={...t};this._domElement=e,this._overflowWidgetsDomNode=m.overflowWidgetsDomNode,delete m.overflowWidgetsDomNode,this._id=++S8e,this._decorationTypeKeysToIds={},this._decorationTypeSubtypes={},this._telemetryData=i.telemetryData,this._configuration=this._register(this._createConfiguration(i.isSimpleWidget||!1,i.contextMenuId??(i.isSimpleWidget?at.SimpleEditorContext:at.EditorContext),m,c)),this._register(this._configuration.onDidChange(b=>{this._onDidChangeConfiguration.fire(b);const f=this._configuration.options;if(b.hasChanged(146)){const Z=f.get(146);this._onDidLayoutChange.fire(Z)}})),this._contextKeyService=this._register(r.createScoped(this._domElement)),this._notificationService=d,this._codeEditorService=o,this._commandService=l,this._themeService=a,this._register(new V8e(this,this._contextKeyService)),this._register(new Q8e(this,this._contextKeyService,u)),this._instantiationService=this._register(n.createChild(new t1([wt,this._contextKeyService]))),this._modelData=null,this._focusTracker=new y8e(e,this._overflowWidgetsDomNode),this._register(this._focusTracker.onChange(()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={};let p;Array.isArray(i.contributions)?p=i.contributions:p=zZ.getEditorContributions(),this._contributions.initialize(this,p,this._instantiationService);for(const b of zZ.getEditorActions()){if(this._actions.has(b.id)){vt(new Error(`Cannot have two actions with the same id ${b.id}`));continue}const f=new Cfe(b.id,b.label,b.alias,b.metadata,b.precondition??void 0,Z=>this._instantiationService.invokeFunction(A=>Promise.resolve(b.runEditorCommand(A,this,Z))),this._contextKeyService);this._actions.set(f.id,f)}const g=()=>!this._configuration.options.get(92)&&this._configuration.options.get(36).enabled;this._register(new XEe(this._domElement,{onDragOver:b=>{if(!g())return;const f=this.getTargetAtClientPoint(b.clientX,b.clientY);f!=null&&f.position&&this.showDropIndicatorAt(f.position)},onDrop:async b=>{if(!g()||(this.removeDropIndicator(),!b.dataTransfer))return;const f=this.getTargetAtClientPoint(b.clientX,b.clientY);f!=null&&f.position&&this._onDropIntoEditor.fire({position:f.position,event:b})},onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(e){var t;(t=this._modelData)==null||t.view.writeScreenReaderContent(e)}_createConfiguration(e,t,i,n){return new l4(e,t,i,this._domElement,n)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return RB.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose(),this._actions.clear(),this._contentWidgets={},this._overlayWidgets={},this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(e){return this._instantiationService.invokeFunction(e)}updateOptions(e){this._configuration.updateOptions(e||{})}getOptions(){return this._configuration.options}getOption(e){return this._configuration.options.get(e)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(e){return this._modelData?ln.getWordAtPosition(this._modelData.model,this._configuration.options.get(132),this._configuration.options.get(131),e):null}getValue(e=null){if(!this._modelData)return"";const t=!!(e&&e.preserveBOM);let i=0;return e&&e.lineEnding&&e.lineEnding===`
- `?i=1:e&&e.lineEnding&&e.lineEnding===`\r
- `&&(i=2),this._modelData.model.getValue(i,t)}setValue(e){try{if(this._beginUpdate(),!this._modelData)return;this._modelData.model.setValue(e)}finally{this._endUpdate()}}getModel(){return this._modelData?this._modelData.model:null}setModel(e=null){var t;try{this._beginUpdate();const i=e;if(this._modelData===null&&i===null||this._modelData&&this._modelData.model===i)return;const n={oldModelUrl:((t=this._modelData)==null?void 0:t.model.uri)||null,newModelUrl:(i==null?void 0:i.uri)||null};this._onWillChangeModel.fire(n);const o=this.hasTextFocus(),l=this._detachModel();this._attachModel(i),o&&this.hasModel()&&this.focus(),this._removeDecorationTypes(),this._onDidChangeModel.fire(n),this._postDetachModelCleanup(l),this._contributionsDisposable=this._contributions.onAfterModelAttached()}finally{this._endUpdate()}}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const e in this._decorationTypeSubtypes){const t=this._decorationTypeSubtypes[e];for(const i in t)this._removeDecorationType(e+"-"+i)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetAfterPosition(e,t,i,n){const o=e.model.validatePosition({lineNumber:t,column:i}),l=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(o);return e.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(l.lineNumber,n)}getTopForLineNumber(e,t=!1){return this._modelData?FF._getVerticalOffsetForPosition(this._modelData,e,1,t):-1}getTopForPosition(e,t){return this._modelData?FF._getVerticalOffsetForPosition(this._modelData,e,t,!1):-1}static _getVerticalOffsetForPosition(e,t,i,n=!1){const o=e.model.validatePosition({lineNumber:t,column:i}),l=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(o);return e.viewModel.viewLayout.getVerticalOffsetForLineNumber(l.lineNumber,n)}getBottomForLineNumber(e,t=!1){if(!this._modelData)return-1;const i=this._modelData.model.getLineMaxColumn(e);return FF._getVerticalOffsetAfterPosition(this._modelData,e,i,t)}setHiddenAreas(e,t){var i;(i=this._modelData)==null||i.viewModel.setHiddenAreas(e.map(n=>v.lift(n)),t)}getVisibleColumnFromPosition(e){if(!this._modelData)return e.column;const t=this._modelData.model.validatePosition(e),i=this._modelData.model.getOptions().tabSize;return ko.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber),t.column,i)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(e,t="api"){if(this._modelData){if(!oe.isIPosition(e))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,[{selectionStartLineNumber:e.lineNumber,selectionStartColumn:e.column,positionLineNumber:e.lineNumber,positionColumn:e.column}])}}_sendRevealRange(e,t,i,n){if(!this._modelData)return;if(!v.isIRange(e))throw new Error("Invalid arguments");const o=this._modelData.model.validateRange(e),l=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(o);this._modelData.viewModel.revealRange("api",i,l,t,n)}revealLine(e,t=0){this._revealLine(e,0,t)}revealLineInCenter(e,t=0){this._revealLine(e,1,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._revealLine(e,2,t)}revealLineNearTop(e,t=0){this._revealLine(e,5,t)}_revealLine(e,t,i){if(typeof e!="number")throw new Error("Invalid arguments");this._sendRevealRange(new v(e,1,e,1),t,!1,i)}revealPosition(e,t=0){this._revealPosition(e,0,!0,t)}revealPositionInCenter(e,t=0){this._revealPosition(e,1,!0,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._revealPosition(e,2,!0,t)}revealPositionNearTop(e,t=0){this._revealPosition(e,5,!0,t)}_revealPosition(e,t,i,n){if(!oe.isIPosition(e))throw new Error("Invalid arguments");this._sendRevealRange(new v(e.lineNumber,e.column,e.lineNumber,e.column),t,i,n)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(e,t="api"){const i=dt.isISelection(e),n=v.isIRange(e);if(!i&&!n)throw new Error("Invalid arguments");if(i)this._setSelectionImpl(e,t);else if(n){const o={selectionStartLineNumber:e.startLineNumber,selectionStartColumn:e.startColumn,positionLineNumber:e.endLineNumber,positionColumn:e.endColumn};this._setSelectionImpl(o,t)}}_setSelectionImpl(e,t){if(!this._modelData)return;const i=new dt(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn);this._modelData.viewModel.setSelections(t,[i])}revealLines(e,t,i=0){this._revealLines(e,t,0,i)}revealLinesInCenter(e,t,i=0){this._revealLines(e,t,1,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._revealLines(e,t,2,i)}revealLinesNearTop(e,t,i=0){this._revealLines(e,t,5,i)}_revealLines(e,t,i,n){if(typeof e!="number"||typeof t!="number")throw new Error("Invalid arguments");this._sendRevealRange(new v(e,1,t,1),i,!1,n)}revealRange(e,t=0,i=!1,n=!0){this._revealRange(e,i?1:0,n,t)}revealRangeInCenter(e,t=0){this._revealRange(e,1,!0,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._revealRange(e,2,!0,t)}revealRangeNearTop(e,t=0){this._revealRange(e,5,!0,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._revealRange(e,6,!0,t)}revealRangeAtTop(e,t=0){this._revealRange(e,3,!0,t)}_revealRange(e,t,i,n){if(!v.isIRange(e))throw new Error("Invalid arguments");this._sendRevealRange(v.lift(e),t,i,n)}setSelections(e,t="api",i=0){if(this._modelData){if(!e||e.length===0)throw new Error("Invalid arguments");for(let n=0,o=e.length;n<o;n++)if(!dt.isISelection(e[n]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,e,i)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(e,t=1){if(this._modelData){if(typeof e!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:e},t)}}setScrollTop(e,t=1){if(this._modelData){if(typeof e!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:e},t)}}setScrollPosition(e,t=1){this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(e,t)}hasPendingScrollAnimation(){return this._modelData?this._modelData.viewModel.viewLayout.hasPendingScrollAnimation():!1}saveViewState(){if(!this._modelData)return null;const e=this._contributions.saveViewState(),t=this._modelData.viewModel.saveCursorState(),i=this._modelData.viewModel.saveState();return{cursorState:t,viewState:i,contributionsState:e}}restoreViewState(e){if(!this._modelData||!this._modelData.hasRealView)return;const t=e;if(t&&t.cursorState&&t.viewState){const i=t.cursorState;Array.isArray(i)?i.length>0&&this._modelData.viewModel.restoreCursorState(i):this._modelData.viewModel.restoreCursorState([i]),this._contributions.restoreViewState(t.contributionsState||{});const n=this._modelData.viewModel.reduceRestoreState(t.viewState);this._modelData.view.restoreState(n)}}handleInitialized(){var e;(e=this._getViewModel())==null||e.visibleLinesStabilized()}getContribution(e){return this._contributions.get(e)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let e=this.getActions();return e=e.filter(t=>t.isSupported()),e}getAction(e){return this._actions.get(e)||null}trigger(e,t,i){i=i||{};try{switch(this._beginUpdate(),t){case"compositionStart":this._startComposition();return;case"compositionEnd":this._endComposition(e);return;case"type":{const o=i;this._type(e,o.text||"");return}case"replacePreviousChar":{const o=i;this._compositionType(e,o.text||"",o.replaceCharCnt||0,0,0);return}case"compositionType":{const o=i;this._compositionType(e,o.text||"",o.replacePrevCharCnt||0,o.replaceNextCharCnt||0,o.positionDelta||0);return}case"paste":{const o=i;this._paste(e,o.text||"",o.pasteOnNewLine||!1,o.multicursorText||null,o.mode||null,o.clipboardEvent);return}case"cut":this._cut(e);return}const n=this.getAction(t);if(n){Promise.resolve(n.run(i)).then(void 0,vt);return}if(!this._modelData||this._triggerEditorCommand(e,t,i))return;this._triggerCommand(t,i)}finally{this._endUpdate()}}_triggerCommand(e,t){this._commandService.executeCommand(e,t)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(e){this._modelData&&(this._modelData.viewModel.endComposition(e),this._onDidCompositionEnd.fire())}_type(e,t){!this._modelData||t.length===0||(e==="keyboard"&&this._onWillType.fire(t),this._modelData.viewModel.type(t,e),e==="keyboard"&&this._onDidType.fire(t))}_compositionType(e,t,i,n,o){this._modelData&&this._modelData.viewModel.compositionType(t,i,n,o,e)}_paste(e,t,i,n,o,l){if(!this._modelData)return;const r=this._modelData.viewModel,a=r.getSelection().getStartPosition();r.paste(t,i,n,e);const d=r.getSelection().getStartPosition();e==="keyboard"&&this._onDidPaste.fire({clipboardEvent:l,range:new v(a.lineNumber,a.column,d.lineNumber,d.column),languageId:o})}_cut(e){this._modelData&&this._modelData.viewModel.cut(e)}_triggerEditorCommand(e,t,i){const n=zZ.getEditorCommand(t);return n?(i=i||{},i.source=e,this._instantiationService.invokeFunction(o=>{Promise.resolve(n.runEditorCommand(o,this,i)).then(void 0,vt)}),!0):!1}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!this._modelData||this._configuration.options.get(92)?!1:(this._modelData.model.pushStackElement(),!0)}popUndoStop(){return!this._modelData||this._configuration.options.get(92)?!1:(this._modelData.model.popStackElement(),!0)}executeEdits(e,t,i){if(!this._modelData||this._configuration.options.get(92))return!1;let n;return i?Array.isArray(i)?n=()=>i:n=i:n=()=>null,this._modelData.viewModel.executeEdits(e,t,n),!0}executeCommand(e,t){this._modelData&&this._modelData.viewModel.executeCommand(t,e)}executeCommands(e,t){this._modelData&&this._modelData.viewModel.executeCommands(t,e)}createDecorationsCollection(e){return new C8e(this,e)}changeDecorations(e){return this._modelData?this._modelData.model.changeDecorations(e,this._id):null}getLineDecorations(e){return this._modelData?this._modelData.model.getLineDecorations(e,this._id,CE(this._configuration.options)):null}getDecorationsInRange(e){return this._modelData?this._modelData.model.getDecorationsInRange(e,this._id,CE(this._configuration.options)):null}deltaDecorations(e,t){return this._modelData?e.length===0&&t.length===0?e:this._modelData.model.deltaDecorations(e,t,this._id):[]}removeDecorations(e){!this._modelData||e.length===0||this._modelData.model.changeDecorations(t=>{t.deltaDecorations(e,[])})}removeDecorationsByType(e){const t=this._decorationTypeKeysToIds[e];t&&this.changeDecorations(i=>i.deltaDecorations(t,[])),this._decorationTypeKeysToIds.hasOwnProperty(e)&&delete this._decorationTypeKeysToIds[e],this._decorationTypeSubtypes.hasOwnProperty(e)&&delete this._decorationTypeSubtypes[e]}getLayoutInfo(){return this._configuration.options.get(146)}createOverviewRuler(e){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.createOverviewRuler(e)}getContainerDomNode(){return this._domElement}getDomNode(){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.domNode.domNode}delegateVerticalScrollbarPointerDown(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateScrollFromMouseWheelEvent(e)}layout(e,t=!1){this._configuration.observeContainer(e),t||this.render()}focus(){!this._modelData||!this._modelData.hasRealView||this._modelData.view.focus()}hasTextFocus(){return!this._modelData||!this._modelData.hasRealView?!1:this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(e){const t={widget:e,position:e.getPosition()};this._contentWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a content widget with the same id:"+e.getId()),this._contentWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(t)}layoutContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(i)}}removeContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];delete this._contentWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(i)}}addOverlayWidget(e){const t={widget:e,position:e.getPosition()};this._overlayWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(t)}layoutOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(i)}}removeOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];delete this._overlayWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(i)}}addGlyphMarginWidget(e){const t={widget:e,position:e.getPosition()};this._glyphMarginWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a glyph margin widget with the same id."),this._glyphMarginWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(t)}layoutGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(i)}}removeGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];delete this._glyphMarginWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(i)}}changeViewZones(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.change(e)}getTargetAtClientPoint(e,t){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.getTargetAtClientPoint(e,t)}getScrolledVisiblePosition(e){if(!this._modelData||!this._modelData.hasRealView)return null;const t=this._modelData.model.validatePosition(e),i=this._configuration.options,n=i.get(146),o=FF._getVerticalOffsetForPosition(this._modelData,t.lineNumber,t.column)-this.getScrollTop(),l=this._modelData.view.getOffsetForColumn(t.lineNumber,t.column)+n.glyphMarginWidth+n.lineNumbersWidth+n.decorationsWidth-this.getScrollLeft();return{top:o,left:l,height:i.get(67)}}getOffsetForColumn(e,t){return!this._modelData||!this._modelData.hasRealView?-1:this._modelData.view.getOffsetForColumn(e,t)}render(e=!1){!this._modelData||!this._modelData.hasRealView||this._modelData.viewModel.batchEvents(()=>{this._modelData.view.render(!0,e)})}setAriaOptions(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.setAriaOptions(e)}applyFontInfo(e){Al(e,this._configuration.options.get(50))}setBanner(e,t){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._bannerDomNode.remove(),this._bannerDomNode=e,this._configuration.setReservedHeight(e?t:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(e){if(!e){this._modelData=null;return}const t=[];this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()),this._configuration.setModelLineCount(e.getLineCount());const i=e.onBeforeAttached(),n=new F8e(this._id,this._configuration,e,Cte.create(Wt(this._domElement)),wte.create(this._configuration.options),r=>Sd(Wt(this._domElement),r),this.languageConfigurationService,this._themeService,i,{batchChanges:r=>{try{return this._beginUpdate(),r()}finally{this._endUpdate()}}});t.push(e.onWillDispose(()=>this.setModel(null))),t.push(n.onEvent(r=>{switch(r.kind){case 0:this._onDidContentSizeChange.fire(r);break;case 1:this._editorTextFocus.setValue(r.hasFocus);break;case 2:this._onDidScrollChange.fire(r);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(r.reachedMaxCursorCount){const h=this.getOption(80),u=U("cursors.maximum","The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.",h);this._notificationService.prompt(fY.Warning,u,[{label:"Find and Replace",run:()=>{this._commandService.executeCommand("editor.action.startFindReplaceAction")}},{label:U("goToSetting","Increase Multi Cursor Limit"),run:()=>{this._commandService.executeCommand("workbench.action.openSettings2",{query:"editor.multiCursorLimit"})}}])}const a=[];for(let h=0,u=r.selections.length;h<u;h++)a[h]=r.selections[h].getPosition();const d={position:a[0],secondaryPositions:a.slice(1),reason:r.reason,source:r.source};this._onDidChangeCursorPosition.fire(d);const c={selection:r.selections[0],secondarySelections:r.selections.slice(1),modelVersionId:r.modelVersionId,oldSelections:r.oldSelections,oldModelVersionId:r.oldModelVersionId,source:r.source,reason:r.reason};this._onDidChangeCursorSelection.fire(c);break}case 7:this._onDidChangeModelDecorations.fire(r.event);break;case 8:this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._onDidChangeModelLanguage.fire(r.event);break;case 9:this._onDidChangeModelLanguageConfiguration.fire(r.event);break;case 10:this._onDidChangeModelContent.fire(r.event);break;case 11:this._onDidChangeModelOptions.fire(r.event);break;case 12:this._onDidChangeModelTokens.fire(r.event);break}}));const[o,l]=this._createView(n);if(l){this._domElement.appendChild(o.domNode.domNode);let r=Object.keys(this._contentWidgets);for(let a=0,d=r.length;a<d;a++){const c=r[a];o.addContentWidget(this._contentWidgets[c])}r=Object.keys(this._overlayWidgets);for(let a=0,d=r.length;a<d;a++){const c=r[a];o.addOverlayWidget(this._overlayWidgets[c])}r=Object.keys(this._glyphMarginWidgets);for(let a=0,d=r.length;a<d;a++){const c=r[a];o.addGlyphMarginWidget(this._glyphMarginWidgets[c])}o.render(!1,!0),o.domNode.domNode.setAttribute("data-uri",e.uri.toString())}this._modelData=new W8e(e,n,o,l,t,i)}_createView(e){let t;this.isSimpleWidget?t={paste:(o,l,r,a)=>{this._paste("keyboard",o,l,r,a)},type:o=>{this._type("keyboard",o)},compositionType:(o,l,r,a)=>{this._compositionType("keyboard",o,l,r,a)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:t={paste:(o,l,r,a)=>{const d={text:o,pasteOnNewLine:l,multicursorText:r,mode:a};this._commandService.executeCommand("paste",d)},type:o=>{const l={text:o};this._commandService.executeCommand("type",l)},compositionType:(o,l,r,a)=>{if(r||a){const d={text:o,replacePrevCharCnt:l,replaceNextCharCnt:r,positionDelta:a};this._commandService.executeCommand("compositionType",d)}else{const d={text:o,replaceCharCnt:l};this._commandService.executeCommand("replacePreviousChar",d)}},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const i=new nz(e.coordinatesConverter);return i.onKeyDown=o=>this._onKeyDown.fire(o),i.onKeyUp=o=>this._onKeyUp.fire(o),i.onContextMenu=o=>this._onContextMenu.fire(o),i.onMouseMove=o=>this._onMouseMove.fire(o),i.onMouseLeave=o=>this._onMouseLeave.fire(o),i.onMouseDown=o=>this._onMouseDown.fire(o),i.onMouseUp=o=>this._onMouseUp.fire(o),i.onMouseDrag=o=>this._onMouseDrag.fire(o),i.onMouseDrop=o=>this._onMouseDrop.fire(o),i.onMouseDropCanceled=o=>this._onMouseDropCanceled.fire(o),i.onMouseWheel=o=>this._onMouseWheel.fire(o),[new Z4(t,this._configuration,this._themeService.getColorTheme(),e,i,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(e){e==null||e.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){var i;if((i=this._contributionsDisposable)==null||i.dispose(),this._contributionsDisposable=void 0,!this._modelData)return null;const e=this._modelData.model,t=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),t&&this._domElement.contains(t)&&t.remove(),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._bannerDomNode.remove(),e}_removeDecorationType(e){this._codeEditorService.removeDecorationType(e)}hasModel(){return this._modelData!==null}showDropIndicatorAt(e){const t=[{range:new v(e.lineNumber,e.column,e.lineNumber,e.column),options:FF.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(t),this.revealPosition(e,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(e,t){this._contextKeyService.createKey(e,t)}_beginUpdate(){this._updateCounter++,this._updateCounter===1&&this._onBeginUpdate.fire()}_endUpdate(){this._updateCounter--,this._updateCounter===0&&this._onEndUpdate.fire()}},FF=_V,_V.dropIntoEditorDecorationOptions=Ot.register({description:"workbench-dnd-target",className:"dnd-target"}),_V);HM=FF=R8e([jp(3,bt),jp(4,zi),jp(5,On),jp(6,wt),jp(7,Do),jp(8,no),jp(9,Qd),jp(10,Qs),jp(11,lt)],HM);let S8e=0;class W8e{constructor(e,t,i,n,o,l){this.model=e,this.viewModel=t,this.view=i,this.hasRealView=n,this.listenersToRemove=o,this.attachedView=l}dispose(){Tn(this.listenersToRemove),this.model.onBeforeDetached(this.attachedView),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}}class Eae extends de{constructor(e){super(),this._emitterOptions=e,this._onDidChangeToTrue=this._register(new re(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new re(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(e){const t=e?2:1;this._value!==t&&(this._value=t,this._value===2?this._onDidChangeToTrue.fire():this._value===1&&this._onDidChangeToFalse.fire())}}class cr extends re{constructor(e,t){super({deliveryQueue:t}),this._contributions=e}fire(e){this._contributions.onBeforeInteractionEvent(),super.fire(e)}}class V8e extends de{constructor(e,t){super(),this._editor=e,t.createKey("editorId",e.getId()),this._editorSimpleInput=H.editorSimpleInput.bindTo(t),this._editorFocus=H.focus.bindTo(t),this._textInputFocus=H.textInputFocus.bindTo(t),this._editorTextFocus=H.editorTextFocus.bindTo(t),this._tabMovesFocus=H.tabMovesFocus.bindTo(t),this._editorReadonly=H.readOnly.bindTo(t),this._inDiffEditor=H.inDiffEditor.bindTo(t),this._editorColumnSelection=H.columnSelection.bindTo(t),this._hasMultipleSelections=H.hasMultipleSelections.bindTo(t),this._hasNonEmptySelection=H.hasNonEmptySelection.bindTo(t),this._canUndo=H.canUndo.bindTo(t),this._canRedo=H.canRedo.bindTo(t),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromConfig())),this._register(this._editor.onDidChangeCursorSelection(()=>this._updateFromSelection())),this._register(this._editor.onDidFocusEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidFocusEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidChangeModel(()=>this._updateFromModel())),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromModel())),this._register(FV.onDidChangeTabFocus(i=>this._tabMovesFocus.set(i))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const e=this._editor.getOptions();this._tabMovesFocus.set(FV.getTabFocusMode()),this._editorReadonly.set(e.get(92)),this._inDiffEditor.set(e.get(61)),this._editorColumnSelection.set(e.get(22))}_updateFromSelection(){const e=this._editor.getSelections();e?(this._hasMultipleSelections.set(e.length>1),this._hasNonEmptySelection.set(e.some(t=>!t.isEmpty()))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const e=this._editor.getModel();this._canUndo.set(!!(e&&e.canUndo())),this._canRedo.set(!!(e&&e.canRedo()))}}class Q8e extends de{constructor(e,t,i){super(),this._editor=e,this._contextKeyService=t,this._languageFeaturesService=i,this._langId=H.languageId.bindTo(t),this._hasCompletionItemProvider=H.hasCompletionItemProvider.bindTo(t),this._hasCodeActionsProvider=H.hasCodeActionsProvider.bindTo(t),this._hasCodeLensProvider=H.hasCodeLensProvider.bindTo(t),this._hasDefinitionProvider=H.hasDefinitionProvider.bindTo(t),this._hasDeclarationProvider=H.hasDeclarationProvider.bindTo(t),this._hasImplementationProvider=H.hasImplementationProvider.bindTo(t),this._hasTypeDefinitionProvider=H.hasTypeDefinitionProvider.bindTo(t),this._hasHoverProvider=H.hasHoverProvider.bindTo(t),this._hasDocumentHighlightProvider=H.hasDocumentHighlightProvider.bindTo(t),this._hasDocumentSymbolProvider=H.hasDocumentSymbolProvider.bindTo(t),this._hasReferenceProvider=H.hasReferenceProvider.bindTo(t),this._hasRenameProvider=H.hasRenameProvider.bindTo(t),this._hasSignatureHelpProvider=H.hasSignatureHelpProvider.bindTo(t),this._hasInlayHintsProvider=H.hasInlayHintsProvider.bindTo(t),this._hasDocumentFormattingProvider=H.hasDocumentFormattingProvider.bindTo(t),this._hasDocumentSelectionFormattingProvider=H.hasDocumentSelectionFormattingProvider.bindTo(t),this._hasMultipleDocumentFormattingProvider=H.hasMultipleDocumentFormattingProvider.bindTo(t),this._hasMultipleDocumentSelectionFormattingProvider=H.hasMultipleDocumentSelectionFormattingProvider.bindTo(t),this._isInEmbeddedEditor=H.isInEmbeddedEditor.bindTo(t);const n=()=>this._update();this._register(e.onDidChangeModel(n)),this._register(e.onDidChangeModelLanguage(n)),this._register(i.completionProvider.onDidChange(n)),this._register(i.codeActionProvider.onDidChange(n)),this._register(i.codeLensProvider.onDidChange(n)),this._register(i.definitionProvider.onDidChange(n)),this._register(i.declarationProvider.onDidChange(n)),this._register(i.implementationProvider.onDidChange(n)),this._register(i.typeDefinitionProvider.onDidChange(n)),this._register(i.hoverProvider.onDidChange(n)),this._register(i.documentHighlightProvider.onDidChange(n)),this._register(i.documentSymbolProvider.onDidChange(n)),this._register(i.referenceProvider.onDidChange(n)),this._register(i.renameProvider.onDidChange(n)),this._register(i.documentFormattingEditProvider.onDidChange(n)),this._register(i.documentRangeFormattingEditProvider.onDidChange(n)),this._register(i.signatureHelpProvider.onDidChange(n)),this._register(i.inlayHintsProvider.onDidChange(n)),n()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents(()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInEmbeddedEditor.reset()})}_update(){const e=this._editor.getModel();if(!e){this.reset();return}this._contextKeyService.bufferChangeEvents(()=>{this._langId.set(e.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(e)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(e)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(e)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(e)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(e)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(e)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(e)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(e)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(e)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(e)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(e)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(e)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(e)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(e)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(e)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(e).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._isInEmbeddedEditor.set(e.uri.scheme===Xt.walkThroughSnippet||e.uri.scheme===Xt.vscodeChatCodeBlock)})}}class y8e extends de{constructor(e,t){super(),this._onChange=this._register(new re),this.onChange=this._onChange.event,this._hadFocus=void 0,this._hasDomElementFocus=!1,this._domFocusTracker=this._register(Hu(e)),this._overflowWidgetsDomNodeHasFocus=!1,this._register(this._domFocusTracker.onDidFocus(()=>{this._hasDomElementFocus=!0,this._update()})),this._register(this._domFocusTracker.onDidBlur(()=>{this._hasDomElementFocus=!1,this._update()})),t&&(this._overflowWidgetsDomNode=this._register(Hu(t)),this._register(this._overflowWidgetsDomNode.onDidFocus(()=>{this._overflowWidgetsDomNodeHasFocus=!0,this._update()})),this._register(this._overflowWidgetsDomNode.onDidBlur(()=>{this._overflowWidgetsDomNodeHasFocus=!1,this._update()})))}_update(){const e=this._hasDomElementFocus||this._overflowWidgetsDomNodeHasFocus;this._hadFocus!==e&&(this._hadFocus=e,this._onChange.fire(void 0))}hasFocus(){return this._hadFocus??!1}}class C8e{get length(){return this._decorationIds.length}constructor(e,t){this._editor=e,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(t)&&t.length>0&&this.set(t)}onDidChange(e,t,i){return this._editor.onDidChangeModelDecorations(n=>{this._isChangingDecorations||e.call(t,n)},i)}getRange(e){return!this._editor.hasModel()||e>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[e])}getRanges(){if(!this._editor.hasModel())return[];const e=this._editor.getModel(),t=[];for(const i of this._decorationIds){const n=e.getDecorationRange(i);n&&t.push(n)}return t}has(e){return this._decorationIds.includes(e.id)}clear(){this._decorationIds.length!==0&&this.set([])}set(e){try{this._isChangingDecorations=!0,this._editor.changeDecorations(t=>{this._decorationIds=t.deltaDecorations(this._decorationIds,e)})}finally{this._isChangingDecorations=!1}return this._decorationIds}append(e){let t=[];try{this._isChangingDecorations=!0,this._editor.changeDecorations(i=>{t=i.deltaDecorations([],e),this._decorationIds=this._decorationIds.concat(t)})}finally{this._isChangingDecorations=!1}return t}}const w8e=encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='"),M8e=encodeURIComponent("'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>");function s_(s){return w8e+encodeURIComponent(s.toString())+M8e}const T8e=encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="'),B8e=encodeURIComponent('"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>');function L8e(s){return T8e+encodeURIComponent(s.toString())+B8e}ih((s,e)=>{const t=s.getColor(NY);t&&e.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${s_(t)}") repeat-x bottom left; }`);const i=s.getColor(S0);i&&e.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${s_(i)}") repeat-x bottom left; }`);const n=s.getColor(Wp);n&&e.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${s_(n)}") repeat-x bottom left; }`);const o=s.getColor(SXe);o&&e.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${L8e(o)}") no-repeat bottom left; }`);const l=s.getColor(a_e);l&&e.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${l.rgba.a}; }`)});class em{static capture(e){if(e.getScrollTop()===0||e.hasPendingScrollAnimation())return new em(e.getScrollTop(),e.getContentHeight(),null,0,null);let t=null,i=0;const n=e.getVisibleRanges();if(n.length>0){t=n[0].getStartPosition();const o=e.getTopForPosition(t.lineNumber,t.column);i=e.getScrollTop()-o}return new em(e.getScrollTop(),e.getContentHeight(),t,i,e.getPosition())}constructor(e,t,i,n,o){this._initialScrollTop=e,this._initialContentHeight=t,this._visiblePosition=i,this._visiblePositionScrollDelta=n,this._cursorPosition=o}restore(e){if(!(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())&&this._visiblePosition){const t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(e){if(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())return;const t=e.getPosition();if(!this._cursorPosition||!t)return;const i=e.getTopForLineNumber(t.lineNumber)-e.getTopForLineNumber(this._cursorPosition.lineNumber);e.setScrollTop(e.getScrollTop()+i,1)}}function k8e(s,e,t,i){if(s.length===0)return e;if(e.length===0)return s;const n=[];let o=0,l=0;for(;o<s.length&&l<e.length;){const r=s[o],a=e[l],d=t(r),c=t(a);d<c?(n.push(r),o++):d>c?(n.push(a),l++):(n.push(i(r,a)),o++,l++)}for(;o<s.length;)n.push(s[o]),o++;for(;l<e.length;)n.push(e[l]),l++;return n}function gx(s,e){const t=new Ze,i=s.createDecorationsCollection();return t.add(gB({debugName:()=>`Apply decorations from ${e.debugName}`},n=>{const o=e.read(n);i.set(o)})),t.add({dispose:()=>{i.clear()}}),t}function ZS(s,e){return s.appendChild(e),gt(()=>{e.remove()})}function I8e(s,e){return s.prepend(e),gt(()=>{e.remove()})}class Bfe extends de{get width(){return this._width}get height(){return this._height}get automaticLayout(){return this._automaticLayout}constructor(e,t){super(),this._automaticLayout=!1,this.elementSizeObserver=this._register(new ufe(e,t)),this._width=oi(this,this.elementSizeObserver.getWidth()),this._height=oi(this,this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange(i=>Ss(n=>{this._width.set(this.elementSizeObserver.getWidth(),n),this._height.set(this.elementSizeObserver.getHeight(),n)})))}observe(e){this.elementSizeObserver.observe(e)}setAutomaticLayout(e){this._automaticLayout=e,e?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}function vae(s,e,t){let i=e.get(),n=i,o=i;const l=oi("animatedValue",i);let r=-1;const a=300;let d;t.add(bB({createEmptyChangeSummary:()=>({animate:!1}),handleChange:(h,u)=>(h.didChange(e)&&(u.animate=u.animate||h.change),!0)},(h,u)=>{d!==void 0&&(s.cancelAnimationFrame(d),d=void 0),n=o,i=e.read(h),r=Date.now()-(u.animate?0:a),c()}));function c(){const h=Date.now()-r;o=Math.floor(D8e(h,n,i-n,a)),h<a?d=s.requestAnimationFrame(c):o=i,l.set(o,void 0)}return l}function D8e(s,e,t,i){return s===i?e+t:t*(-Math.pow(2,-10*s/i)+1)+e}class Gte extends de{constructor(e,t,i){super(),this._register(new y4(e,i)),this._register(V0(i,{height:t.actualHeight,top:t.actualTop}))}}class AS{get afterLineNumber(){return this._afterLineNumber.get()}constructor(e,t){this._afterLineNumber=e,this.heightInPx=t,this.domNode=document.createElement("div"),this._actualTop=oi(this,void 0),this._actualHeight=oi(this,void 0),this.actualTop=this._actualTop,this.actualHeight=this._actualHeight,this.showInHiddenAreas=!0,this.onChange=this._afterLineNumber,this.onDomNodeTop=i=>{this._actualTop.set(i,void 0)},this.onComputedHeight=i=>{this._actualHeight.set(i,void 0)}}}const YX=class YX{constructor(e,t){this._editor=e,this._domElement=t,this._overlayWidgetId=`managedOverlayWidget-${YX._counter++}`,this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}};YX._counter=0;let y4=YX;function V0(s,e){return Gt(t=>{for(let[i,n]of Object.entries(e))n&&typeof n=="object"&&"read"in n&&(n=n.read(t)),typeof n=="number"&&(n=`${n}px`),i=i.replace(/[A-Z]/g,o=>"-"+o.toLowerCase()),s.style[i]=n})}function bx(s,e,t,i){const n=new Ze,o=[];return n.add(Ga((l,r)=>{const a=e.read(l),d=new Map,c=new Map;t&&t(!0),s.changeViewZones(h=>{for(const u of o)h.removeZone(u),i==null||i.delete(u);o.length=0;for(const u of a){const m=h.addZone(u);u.setZoneId&&u.setZoneId(m),o.push(m),i==null||i.add(m),d.set(u,m)}}),t&&t(!1),r.add(bB({createEmptyChangeSummary(){return{zoneIds:[]}},handleChange(h,u){const m=c.get(h.changedObservable);return m!==void 0&&u.zoneIds.push(m),!0}},(h,u)=>{for(const m of a)m.onChange&&(c.set(m.onChange,d.get(m)),m.onChange.read(h));t&&t(!0),s.changeViewZones(m=>{for(const p of u.zoneIds)m.layoutZone(p)}),t&&t(!1)}))})),n.add({dispose(){t&&t(!0),s.changeViewZones(l=>{for(const r of o)l.removeZone(r)}),i==null||i.clear(),t&&t(!1)}}),n}class G8e extends Ws{dispose(){super.dispose(!0)}}function xae(s,e){const t=cM(e,n=>n.original.startLineNumber<=s.lineNumber);if(!t)return v.fromPositions(s);if(t.original.endLineNumberExclusive<=s.lineNumber){const n=s.lineNumber-t.original.endLineNumberExclusive+t.modified.endLineNumberExclusive;return v.fromPositions(new oe(n,s.column))}if(!t.innerChanges)return v.fromPositions(new oe(t.modified.startLineNumber,1));const i=cM(t.innerChanges,n=>n.originalRange.getStartPosition().isBeforeOrEqual(s));if(!i){const n=s.lineNumber-t.original.startLineNumber+t.modified.startLineNumber;return v.fromPositions(new oe(n,s.column))}if(i.originalRange.containsPosition(s))return i.modifiedRange;{const n=E8e(i.originalRange.getEndPosition(),s);return v.fromPositions(n.addToPosition(i.modifiedRange.getEndPosition()))}}function E8e(s,e){return s.lineNumber===e.lineNumber?new qh(0,e.column-s.column):new qh(e.lineNumber-s.lineNumber,e.column-1)}function v8e(s,e){let t;return s.filter(i=>{const n=e(i,t);return t=i,n})}class Ux{static create(e,t=void 0){return new Jae(e,e,t)}static createWithDisposable(e,t,i=void 0){const n=new Ze;return n.add(t),n.add(e),new Jae(e,n,i)}}class Jae extends Ux{constructor(e,t,i){super(),this.object=e,this._disposable=t,this._debugOwner=i,this._refCount=1,this._isDisposed=!1,this._owners=[],i&&this._addOwner(i)}_addOwner(e){e&&this._owners.push(e)}createNewRef(e){return this._refCount++,e&&this._addOwner(e),new x8e(this,e)}dispose(){this._isDisposed||(this._isDisposed=!0,this._decreaseRefCount(this._debugOwner))}_decreaseRefCount(e){if(this._refCount--,this._refCount===0&&this._disposable.dispose(),e){const t=this._owners.indexOf(e);t!==-1&&this._owners.splice(t,1)}}}class x8e extends Ux{constructor(e,t){super(),this._base=e,this._debugOwner=t,this._isDisposed=!1}get object(){return this._base.object}createNewRef(e){return this._base.createNewRef(e)}dispose(){this._isDisposed||(this._isDisposed=!0,this._base._decreaseRefCount(this._debugOwner))}}var Ete=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vte=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const J8e=ts("diff-review-insert",ke.add,U("accessibleDiffViewerInsertIcon","Icon for 'Insert' in accessible diff viewer.")),X8e=ts("diff-review-remove",ke.remove,U("accessibleDiffViewerRemoveIcon","Icon for 'Remove' in accessible diff viewer.")),Y8e=ts("diff-review-close",ke.close,U("accessibleDiffViewerCloseIcon","Icon for 'Close' in accessible diff viewer."));var IT;let yZ=(IT=class extends de{constructor(e,t,i,n,o,l,r,a,d){super(),this._parentNode=e,this._visible=t,this._setVisible=i,this._canClose=n,this._width=o,this._height=l,this._diffs=r,this._models=a,this._instantiationService=d,this._state=Uf(this,(c,h)=>{const u=this._visible.read(c);if(this._parentNode.style.visibility=u?"visible":"hidden",!u)return null;const m=h.add(this._instantiationService.createInstance(C4,this._diffs,this._models,this._setVisible,this._canClose)),p=h.add(this._instantiationService.createInstance(w4,this._parentNode,m,this._width,this._height,this._models));return{model:m,view:p}}).recomputeInitiallyAndOnChange(this._store)}next(){Ss(e=>{const t=this._visible.get();this._setVisible(!0,e),t&&this._state.get().model.nextGroup(e)})}prev(){Ss(e=>{this._setVisible(!0,e),this._state.get().model.previousGroup(e)})}close(){Ss(e=>{this._setVisible(!1,e)})}},IT._ttPolicy=B0("diffReview",{createHTML:e=>e}),IT);yZ=Ete([vte(8,bt)],yZ);let C4=class extends de{constructor(e,t,i,n,o){super(),this._diffs=e,this._models=t,this._setVisible=i,this.canClose=n,this._accessibilitySignalService=o,this._groups=oi(this,[]),this._currentGroupIdx=oi(this,0),this._currentElementIdx=oi(this,0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map((l,r)=>this._groups.read(r)[l]),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map((l,r)=>{var a;return(a=this.currentGroup.read(r))==null?void 0:a.lines[l]}),this._register(Gt(l=>{const r=this._diffs.read(l);if(!r){this._groups.set([],void 0);return}const a=z8e(r,this._models.getOriginalModel().getLineCount(),this._models.getModifiedModel().getLineCount());Ss(d=>{const c=this._models.getModifiedPosition();if(c){const h=a.findIndex(u=>(c==null?void 0:c.lineNumber)<u.range.modified.endLineNumberExclusive);h!==-1&&this._currentGroupIdx.set(h,d)}this._groups.set(a,d)})})),this._register(Gt(l=>{const r=this.currentElement.read(l);(r==null?void 0:r.type)===Or.Deleted?this._accessibilitySignalService.playSignal(Pd.diffLineDeleted,{source:"accessibleDiffViewer.currentElementChanged"}):(r==null?void 0:r.type)===Or.Added&&this._accessibilitySignalService.playSignal(Pd.diffLineInserted,{source:"accessibleDiffViewer.currentElementChanged"})})),this._register(Gt(l=>{const r=this.currentElement.read(l);if(r&&r.type!==Or.Header){const a=r.modifiedLineNumber??r.diff.modified.startLineNumber;this._models.modifiedSetSelection(v.fromPositions(new oe(a,1)))}}))}_goToGroupDelta(e,t){const i=this.groups.get();!i||i.length<=1||CA(t,n=>{this._currentGroupIdx.set(di.ofLength(i.length).clipCyclic(this._currentGroupIdx.get()+e),n),this._currentElementIdx.set(0,n)})}nextGroup(e){this._goToGroupDelta(1,e)}previousGroup(e){this._goToGroupDelta(-1,e)}_goToLineDelta(e){const t=this.currentGroup.get();!t||t.lines.length<=1||Ss(i=>{this._currentElementIdx.set(di.ofLength(t.lines.length).clip(this._currentElementIdx.get()+e),i)})}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(e){const t=this.currentGroup.get();if(!t)return;const i=t.lines.indexOf(e);i!==-1&&Ss(n=>{this._currentElementIdx.set(i,n)})}revealCurrentElementInEditor(){if(!this.canClose.get())return;this._setVisible(!1,void 0);const e=this.currentElement.get();e&&(e.type===Or.Deleted?this._models.originalReveal(v.fromPositions(new oe(e.originalLineNumber,1))):this._models.modifiedReveal(e.type!==Or.Header?v.fromPositions(new oe(e.modifiedLineNumber,1)):void 0))}close(){this.canClose.get()&&(this._setVisible(!1,void 0),this._models.modifiedFocus())}};C4=Ete([vte(4,Ff)],C4);const _1=3;function z8e(s,e,t){const i=[];for(const n of h$(s,(o,l)=>l.modified.startLineNumber-o.modified.endLineNumberExclusive<2*_1)){const o=[];o.push(new O8e);const l=new jt(Math.max(1,n[0].original.startLineNumber-_1),Math.min(n[n.length-1].original.endLineNumberExclusive+_1,e+1)),r=new jt(Math.max(1,n[0].modified.startLineNumber-_1),Math.min(n[n.length-1].modified.endLineNumberExclusive+_1,t+1));gpe(n,(c,h)=>{const u=new jt(c?c.original.endLineNumberExclusive:l.startLineNumber,h?h.original.startLineNumber:l.endLineNumberExclusive),m=new jt(c?c.modified.endLineNumberExclusive:r.startLineNumber,h?h.modified.startLineNumber:r.endLineNumberExclusive);u.forEach(p=>{o.push(new P8e(p,m.startLineNumber+(p-u.startLineNumber)))}),h&&(h.original.forEach(p=>{o.push(new j8e(h,p))}),h.modified.forEach(p=>{o.push(new H8e(h,p))}))});const a=n[0].modified.join(n[n.length-1].modified),d=n[0].original.join(n[n.length-1].original);i.push(new _8e(new Nr(a,d),o))}return i}var Or;(function(s){s[s.Header=0]="Header",s[s.Unchanged=1]="Unchanged",s[s.Deleted=2]="Deleted",s[s.Added=3]="Added"})(Or||(Or={}));class _8e{constructor(e,t){this.range=e,this.lines=t}}class O8e{constructor(){this.type=Or.Header}}class j8e{constructor(e,t){this.diff=e,this.originalLineNumber=t,this.type=Or.Deleted,this.modifiedLineNumber=void 0}}class H8e{constructor(e,t){this.diff=e,this.modifiedLineNumber=t,this.type=Or.Added,this.originalLineNumber=void 0}}class P8e{constructor(e,t){this.originalLineNumber=e,this.modifiedLineNumber=t,this.type=Or.Unchanged}}let w4=class extends de{constructor(e,t,i,n,o,l){super(),this._element=e,this._model=t,this._width=i,this._height=n,this._models=o,this._languageService=l,this.domNode=this._element,this.domNode.className="monaco-component diff-review monaco-editor-background";const r=document.createElement("div");r.className="diff-review-actions",this._actionBar=this._register(new ac(r)),this._register(Gt(a=>{this._actionBar.clear(),this._model.canClose.read(a)&&this._actionBar.push(new bd("diffreview.close",U("label.close","Close"),"close-diff-review "+Qt.asClassName(Y8e),!0,async()=>t.close()),{label:!1,icon:!0})})),this._content=document.createElement("div"),this._content.className="diff-review-content",this._content.setAttribute("role","code"),this._scrollbar=this._register(new dB(this._content,{})),Zl(this.domNode,this._scrollbar.getDomNode(),r),this._register(Gt(a=>{this._height.read(a),this._width.read(a),this._scrollbar.scanDomNode()})),this._register(gt(()=>{Zl(this.domNode)})),this._register(V0(this.domNode,{width:this._width,height:this._height})),this._register(V0(this._content,{width:this._width,height:this._height})),this._register(Ga((a,d)=>{this._model.currentGroup.read(a),this._render(d)})),this._register(Ms(this.domNode,"keydown",a=>{(a.equals(18)||a.equals(2066)||a.equals(530))&&(a.preventDefault(),this._model.goToNextLine()),(a.equals(16)||a.equals(2064)||a.equals(528))&&(a.preventDefault(),this._model.goToPreviousLine()),(a.equals(9)||a.equals(2057)||a.equals(521)||a.equals(1033))&&(a.preventDefault(),this._model.close()),(a.equals(10)||a.equals(3))&&(a.preventDefault(),this._model.revealCurrentElementInEditor())}))}_render(e){const t=this._models.getOriginalOptions(),i=this._models.getModifiedOptions(),n=document.createElement("div");n.className="diff-review-table",n.setAttribute("role","list"),n.setAttribute("aria-label",U("ariaLabel","Accessible Diff Viewer. Use arrow up and down to navigate.")),Al(n,i.get(50)),Zl(this._content,n);const o=this._models.getOriginalModel(),l=this._models.getModifiedModel();if(!o||!l)return;const r=o.getOptions(),a=l.getOptions(),d=i.get(67),c=this._model.currentGroup.get();for(const h of(c==null?void 0:c.lines)||[]){if(!c)break;let u;if(h.type===Or.Header){const p=document.createElement("div");p.className="diff-review-row",p.setAttribute("role","listitem");const g=c.range,b=this._model.currentGroupIndex.get(),f=this._model.groups.get().length,Z=Q=>Q===0?U("no_lines_changed","no lines changed"):Q===1?U("one_line_changed","1 line changed"):U("more_lines_changed","{0} lines changed",Q),A=Z(g.original.length),N=Z(g.modified.length);p.setAttribute("aria-label",U({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']},"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}",b+1,f,g.original.startLineNumber,A,g.modified.startLineNumber,N));const W=document.createElement("div");W.className="diff-review-cell diff-review-summary",W.appendChild(document.createTextNode(`${b+1}/${f}: @@ -${g.original.startLineNumber},${g.original.length} +${g.modified.startLineNumber},${g.modified.length} @@`)),p.appendChild(W),u=p}else u=this._createRow(h,d,this._width.get(),t,o,r,i,l,a);n.appendChild(u);const m=ht(p=>this._model.currentElement.read(p)===h);e.add(Gt(p=>{const g=m.read(p);u.tabIndex=g?0:-1,g&&u.focus()})),e.add(ge(u,"focus",()=>{this._model.goToLine(h)}))}this._scrollbar.scanDomNode()}_createRow(e,t,i,n,o,l,r,a,d){const c=n.get(146),h=c.glyphMarginWidth+c.lineNumbersWidth,u=r.get(146),m=10+u.glyphMarginWidth+u.lineNumbersWidth;let p="diff-review-row",g="";const b="diff-review-spacer";let f=null;switch(e.type){case Or.Added:p="diff-review-row line-insert",g=" char-insert",f=J8e;break;case Or.Deleted:p="diff-review-row line-delete",g=" char-delete",f=X8e;break}const Z=document.createElement("div");Z.style.minWidth=i+"px",Z.className=p,Z.setAttribute("role","listitem"),Z.ariaLevel="";const A=document.createElement("div");A.className="diff-review-cell",A.style.height=`${t}px`,Z.appendChild(A);const N=document.createElement("span");N.style.width=h+"px",N.style.minWidth=h+"px",N.className="diff-review-line-number"+g,e.originalLineNumber!==void 0?N.appendChild(document.createTextNode(String(e.originalLineNumber))):N.innerText=" ",A.appendChild(N);const W=document.createElement("span");W.style.width=m+"px",W.style.minWidth=m+"px",W.style.paddingRight="10px",W.className="diff-review-line-number"+g,e.modifiedLineNumber!==void 0?W.appendChild(document.createTextNode(String(e.modifiedLineNumber))):W.innerText=" ",A.appendChild(W);const Q=document.createElement("span");if(Q.className=b,f){const w=document.createElement("span");w.className=Qt.asClassName(f),w.innerText=" ",Q.appendChild(w)}else Q.innerText=" ";A.appendChild(Q);let R;if(e.modifiedLineNumber!==void 0){let w=this._getLineHtml(a,r,d.tabSize,e.modifiedLineNumber,this._languageService.languageIdCodec);yZ._ttPolicy&&(w=yZ._ttPolicy.createHTML(w)),A.insertAdjacentHTML("beforeend",w),R=a.getLineContent(e.modifiedLineNumber)}else{let w=this._getLineHtml(o,n,l.tabSize,e.originalLineNumber,this._languageService.languageIdCodec);yZ._ttPolicy&&(w=yZ._ttPolicy.createHTML(w)),A.insertAdjacentHTML("beforeend",w),R=o.getLineContent(e.originalLineNumber)}R.length===0&&(R=U("blankLine","blank"));let M="";switch(e.type){case Or.Unchanged:e.originalLineNumber===e.modifiedLineNumber?M=U({key:"unchangedLine",comment:["The placeholders are contents of the line and should not be translated."]},"{0} unchanged line {1}",R,e.originalLineNumber):M=U("equalLine","{0} original line {1} modified line {2}",R,e.originalLineNumber,e.modifiedLineNumber);break;case Or.Added:M=U("insertLine","+ {0} modified line {1}",R,e.modifiedLineNumber);break;case Or.Deleted:M=U("deleteLine","- {0} original line {1}",R,e.originalLineNumber);break}return Z.setAttribute("aria-label",M),Z}_getLineHtml(e,t,i,n,o){const l=e.getLineContent(n),r=t.get(50),a=ll.createEmpty(l,o),d=uc.isBasicASCII(l,e.mightContainNonBasicASCII()),c=uc.containsRTL(l,d,e.mightContainRTL());return KY(new Zf(r.isMonospace&&!t.get(33),r.canUseHalfwidthRightwardsArrow,l,!1,d,c,0,a,[],i,0,r.spaceWidth,r.middotWidth,r.wsmiddotWidth,t.get(118),t.get(100),t.get(95),t.get(51)!==YU.OFF,null)).html}};w4=Ete([vte(5,Zs)],w4);class K8e{constructor(e){this.editors=e}getOriginalModel(){return this.editors.original.getModel()}getOriginalOptions(){return this.editors.original.getOptions()}originalReveal(e){this.editors.original.revealRange(e),this.editors.original.setSelection(e),this.editors.original.focus()}getModifiedModel(){return this.editors.modified.getModel()}getModifiedOptions(){return this.editors.modified.getOptions()}modifiedReveal(e){e&&(this.editors.modified.revealRange(e),this.editors.modified.setSelection(e)),this.editors.modified.focus()}modifiedSetSelection(e){this.editors.modified.setSelection(e)}modifiedFocus(){this.editors.modified.focus()}getModifiedPosition(){return this.editors.modified.getPosition()??void 0}}K("diffEditor.move.border","#8b8b8b9c",U("diffEditor.move.border","The border color for text that got moved in the diff editor."));K("diffEditor.moveActive.border","#FFA500",U("diffEditor.moveActive.border","The active border color for text that got moved in the diff editor."));K("diffEditor.unchangedRegionShadow",{dark:"#000000",light:"#737373BF",hcDark:"#000000",hcLight:"#737373BF"},U("diffEditor.unchangedRegionShadow","The color of the shadow around unchanged region widgets."));const q8e=ts("diff-insert",ke.add,U("diffInsertIcon","Line decoration for inserts in the diff editor.")),Lfe=ts("diff-remove",ke.remove,U("diffRemoveIcon","Line decoration for removals in the diff editor.")),fx=Ot.register({className:"line-insert",description:"line-insert",isWholeLine:!0,linesDecorationsClassName:"insert-sign "+Qt.asClassName(q8e),marginClassName:"gutter-insert"}),PM=Ot.register({className:"line-delete",description:"line-delete",isWholeLine:!0,linesDecorationsClassName:"delete-sign "+Qt.asClassName(Lfe),marginClassName:"gutter-delete"}),Xae=Ot.register({className:"line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),Yae=Ot.register({className:"line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),Fx=Ot.register({className:"char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),xte=Ot.register({className:"char-insert",description:"char-insert",isWholeLine:!0}),Jte=Ot.register({className:"char-insert diff-range-empty",description:"char-insert diff-range-empty"}),AV=Ot.register({className:"char-delete",description:"char-delete",shouldFillLineOnLineBreak:!0}),Xte=Ot.register({className:"char-delete",description:"char-delete",isWholeLine:!0}),Yte=Ot.register({className:"char-delete diff-range-empty",description:"char-delete diff-range-empty"});var kfe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},M4=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ZF;const VB=Zi("diffProviderFactoryService");let T4=class{constructor(e){this.instantiationService=e}createDiffProvider(e){return this.instantiationService.createInstance(B4,e)}};T4=kfe([M4(0,bt)],T4);Ci(VB,T4,1);var OV;let B4=(OV=class{constructor(e,t,i){this.editorWorkerService=t,this.telemetryService=i,this.onDidChangeEventEmitter=new re,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm="advanced",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(e)}dispose(){var e;(e=this.diffAlgorithmOnDidChangeSubscription)==null||e.dispose()}async computeDiff(e,t,i,n){if(typeof this.diffAlgorithm!="string")return this.diffAlgorithm.computeDiff(e,t,i,n);if(e.isDisposed()||t.isDisposed())return{changes:[],identical:!0,quitEarly:!1,moves:[]};if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return t.getLineCount()===1&&t.getLineMaxColumn(1)===1?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new rc(new jt(1,2),new jt(1,t.getLineCount()+1),[new Hd(e.getFullModelRange(),t.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const o=JSON.stringify([e.uri.toString(),t.uri.toString()]),l=JSON.stringify([e.id,t.id,e.getAlternativeVersionId(),t.getAlternativeVersionId(),JSON.stringify(i)]),r=ZF.diffCache.get(o);if(r&&r.context===l)return r.result;const a=ol.create(),d=await this.editorWorkerService.computeDiff(e.uri,t.uri,i,this.diffAlgorithm),c=a.elapsed();if(this.telemetryService.publicLog2("diffEditor.computeDiff",{timeMs:c,timedOut:(d==null?void 0:d.quitEarly)??!0,detectedMoves:i.computeMoves?(d==null?void 0:d.moves.length)??0:-1}),n.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!d)throw new Error("no diff result available");return ZF.diffCache.size>10&&ZF.diffCache.delete(ZF.diffCache.keys().next().value),ZF.diffCache.set(o,{result:d,context:l}),d}setOptions(e){var i;let t=!1;e.diffAlgorithm&&this.diffAlgorithm!==e.diffAlgorithm&&((i=this.diffAlgorithmOnDidChangeSubscription)==null||i.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=e.diffAlgorithm,typeof e.diffAlgorithm!="string"&&(this.diffAlgorithmOnDidChangeSubscription=e.diffAlgorithm.onDidChange(()=>this.onDidChangeEventEmitter.fire())),t=!0),t&&this.onDidChangeEventEmitter.fire()}},ZF=OV,OV.diffCache=new Map,OV);B4=ZF=kfe([M4(1,_a),M4(2,lr)],B4);function sz(){return Aj&&!!Aj.VSCODE_DEV}function Ife(s){if(sz()){const e=$8e();return e.add(s),{dispose(){e.delete(s)}}}else return{dispose(){}}}function $8e(){bk||(bk=new Set);const s=globalThis;return s.$hotReload_applyNewExports||(s.$hotReload_applyNewExports=e=>{const t={config:{mode:void 0},...e},i=[];for(const n of bk){const o=n(t);o&&i.push(o)}if(i.length>0)return n=>{let o=!1;for(const l of i)l(n)&&(o=!0);return o}}),bk}let bk;sz()&&Ife(({oldExports:s,newSrc:e,config:t})=>{if(t.mode==="patch-prototype")return i=>{var n,o;for(const l in i){const r=i[l];if(console.log(`[hot-reload] Patching prototype methods of '${l}'`,{exportedItem:r}),typeof r=="function"&&r.prototype){const a=s[l];if(a){for(const d of Object.getOwnPropertyNames(r.prototype)){const c=Object.getOwnPropertyDescriptor(r.prototype,d),h=Object.getOwnPropertyDescriptor(a.prototype,d);((n=c==null?void 0:c.value)==null?void 0:n.toString())!==((o=h==null?void 0:h.value)==null?void 0:o.toString())&&console.log(`[hot-reload] Patching prototype method '${l}.${d}'`),Object.defineProperty(a.prototype,d,c)}i[l]=a}}}return!0}});function dd(s,e){return e6e([s],e),s}function e6e(s,e){sz()&&Tl("reload",i=>Ife(({oldExports:n})=>{if([...Object.values(n)].some(o=>s.includes(o)))return o=>(i(void 0),!0)})).read(e)}var t6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},i6e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let L4=class extends de{setActiveMovedText(e){this._activeMovedText.set(e,void 0)}constructor(e,t,i){super(),this.model=e,this._options=t,this._diffProviderFactoryService=i,this._isDiffUpToDate=oi(this,!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=oi(this,void 0),this.diff=this._diff,this._unchangedRegions=oi(this,void 0),this.unchangedRegions=ht(this,r=>{var a;return this._options.hideUnchangedRegions.read(r)?((a=this._unchangedRegions.read(r))==null?void 0:a.regions)??[]:(Ss(d=>{var c;for(const h of((c=this._unchangedRegions.get())==null?void 0:c.regions)||[])h.collapseAll(d)}),[])}),this.movedTextToCompare=oi(this,void 0),this._activeMovedText=oi(this,void 0),this._hoveredMovedText=oi(this,void 0),this.activeMovedText=ht(this,r=>this.movedTextToCompare.read(r)??this._hoveredMovedText.read(r)??this._activeMovedText.read(r)),this._cancellationTokenSource=new Ws,this._diffProvider=ht(this,r=>{const a=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:this._options.diffAlgorithm.read(r)}),d=Tl("onDidChange",a.onDidChange);return{diffProvider:a,onChangeSignal:d}}),this._register(gt(()=>this._cancellationTokenSource.cancel()));const n=PQ("contentChangedSignal"),o=this._register(new Rn(()=>n.trigger(void 0),200));this._register(Gt(r=>{const a=this._unchangedRegions.read(r);if(!a||a.regions.some(p=>p.isDragged.read(r)))return;const d=a.originalDecorationIds.map(p=>e.original.getDecorationRange(p)).map(p=>p?jt.fromRangeInclusive(p):void 0),c=a.modifiedDecorationIds.map(p=>e.modified.getDecorationRange(p)).map(p=>p?jt.fromRangeInclusive(p):void 0),h=a.regions.map((p,g)=>!d[g]||!c[g]?void 0:new UU(d[g].startLineNumber,c[g].startLineNumber,d[g].length,p.visibleLineCountTop.read(r),p.visibleLineCountBottom.read(r))).filter(fp),u=[];let m=!1;for(const p of h$(h,(g,b)=>g.getHiddenModifiedRange(r).endLineNumberExclusive===b.getHiddenModifiedRange(r).startLineNumber))if(p.length>1){m=!0;const g=p.reduce((f,Z)=>f+Z.lineCount,0),b=new UU(p[0].originalLineNumber,p[0].modifiedLineNumber,g,p[0].visibleLineCountTop.get(),p[p.length-1].visibleLineCountBottom.get());u.push(b)}else u.push(p[0]);if(m){const p=e.original.deltaDecorations(a.originalDecorationIds,u.map(b=>({range:b.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),g=e.modified.deltaDecorations(a.modifiedDecorationIds,u.map(b=>({range:b.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));Ss(b=>{this._unchangedRegions.set({regions:u,originalDecorationIds:p,modifiedDecorationIds:g},b)})}}));const l=(r,a,d)=>{const c=UU.fromDiffs(r.changes,e.original.getLineCount(),e.modified.getLineCount(),this._options.hideUnchangedRegionsMinimumLineCount.read(d),this._options.hideUnchangedRegionsContextLineCount.read(d));let h;const u=this._unchangedRegions.get();if(u){const b=u.originalDecorationIds.map(N=>e.original.getDecorationRange(N)).map(N=>N?jt.fromRangeInclusive(N):void 0),f=u.modifiedDecorationIds.map(N=>e.modified.getDecorationRange(N)).map(N=>N?jt.fromRangeInclusive(N):void 0);let A=v8e(u.regions.map((N,W)=>{if(!b[W]||!f[W])return;const Q=b[W].length;return new UU(b[W].startLineNumber,f[W].startLineNumber,Q,Math.min(N.visibleLineCountTop.get(),Q),Math.min(N.visibleLineCountBottom.get(),Q-N.visibleLineCountTop.get()))}).filter(fp),(N,W)=>!W||N.modifiedLineNumber>=W.modifiedLineNumber+W.lineCount&&N.originalLineNumber>=W.originalLineNumber+W.lineCount).map(N=>new Nr(N.getHiddenOriginalRange(d),N.getHiddenModifiedRange(d)));A=Nr.clip(A,jt.ofLength(1,e.original.getLineCount()),jt.ofLength(1,e.modified.getLineCount())),h=Nr.inverse(A,e.original.getLineCount(),e.modified.getLineCount())}const m=[];if(h)for(const b of c){const f=h.filter(Z=>Z.original.intersectsStrict(b.originalUnchangedRange)&&Z.modified.intersectsStrict(b.modifiedUnchangedRange));m.push(...b.setVisibleRanges(f,a))}else m.push(...c);const p=e.original.deltaDecorations((u==null?void 0:u.originalDecorationIds)||[],m.map(b=>({range:b.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),g=e.modified.deltaDecorations((u==null?void 0:u.modifiedDecorationIds)||[],m.map(b=>({range:b.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));this._unchangedRegions.set({regions:m,originalDecorationIds:p,modifiedDecorationIds:g},a)};this._register(e.modified.onDidChangeContent(r=>{if(this._diff.get()){const d=n0.fromModelContentChanges(r.changes);this._lastDiff,e.original,e.modified}this._isDiffUpToDate.set(!1,void 0),o.schedule()})),this._register(e.original.onDidChangeContent(r=>{if(this._diff.get()){const d=n0.fromModelContentChanges(r.changes);this._lastDiff,e.original,e.modified}this._isDiffUpToDate.set(!1,void 0),o.schedule()})),this._register(Ga(async(r,a)=>{this._options.hideUnchangedRegionsMinimumLineCount.read(r),this._options.hideUnchangedRegionsContextLineCount.read(r),o.cancel(),n.read(r);const d=this._diffProvider.read(r);d.onChangeSignal.read(r),dd(o0e,r),dd(jH,r),this._isDiffUpToDate.set(!1,void 0);let c=[];a.add(e.original.onDidChangeContent(m=>{const p=n0.fromModelContentChanges(m.changes);c=Mv(c,p)}));let h=[];a.add(e.modified.onDidChangeContent(m=>{const p=n0.fromModelContentChanges(m.changes);h=Mv(h,p)}));let u=await d.diffProvider.computeDiff(e.original,e.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(r),maxComputationTimeMs:this._options.maxComputationTimeMs.read(r),computeMoves:this._options.showMoves.read(r)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||e.original.isDisposed()||e.modified.isDisposed()||(u=n6e(u,e.original,e.modified),u=(e.original,e.modified,void 0)??u,u=(e.original,e.modified,void 0)??u,Ss(m=>{l(u,m),this._lastDiff=u;const p=zte.fromDiffResult(u);this._diff.set(p,m),this._isDiffUpToDate.set(!0,m);const g=this.movedTextToCompare.get();this.movedTextToCompare.set(g?this._lastDiff.moves.find(b=>b.lineRangeMapping.modified.intersect(g.lineRangeMapping.modified)):void 0,m)}))}))}ensureModifiedLineIsVisible(e,t,i){var o,l;if(((o=this.diff.get())==null?void 0:o.mappings.length)===0)return;const n=((l=this._unchangedRegions.get())==null?void 0:l.regions)||[];for(const r of n)if(r.getHiddenModifiedRange(void 0).contains(e)){r.showModifiedLine(e,t,i);return}}ensureOriginalLineIsVisible(e,t,i){var o,l;if(((o=this.diff.get())==null?void 0:o.mappings.length)===0)return;const n=((l=this._unchangedRegions.get())==null?void 0:l.regions)||[];for(const r of n)if(r.getHiddenOriginalRange(void 0).contains(e)){r.showOriginalLine(e,t,i);return}}async waitForDiff(){await Sbe(this.isDiffUpToDate,e=>e)}serializeState(){const e=this._unchangedRegions.get();return{collapsedRegions:e==null?void 0:e.regions.map(t=>({range:t.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(e){var n;const t=(n=e.collapsedRegions)==null?void 0:n.map(o=>jt.deserialize(o.range)),i=this._unchangedRegions.get();!i||!t||Ss(o=>{for(const l of i.regions)for(const r of t)if(l.modifiedUnchangedRange.intersect(r)){l.setHiddenModifiedRange(r,o);break}})}};L4=t6e([i6e(2,VB)],L4);function n6e(s,e,t){return{changes:s.changes.map(i=>new rc(i.original,i.modified,i.innerChanges?i.innerChanges.map(n=>s6e(n,e,t)):void 0)),moves:s.moves,identical:s.identical,quitEarly:s.quitEarly}}function s6e(s,e,t){let i=s.originalRange,n=s.modifiedRange;return i.startColumn===1&&n.startColumn===1&&(i.endColumn!==1||n.endColumn!==1)&&i.endColumn===e.getLineMaxColumn(i.endLineNumber)&&n.endColumn===t.getLineMaxColumn(n.endLineNumber)&&i.endLineNumber<e.getLineCount()&&n.endLineNumber<t.getLineCount()&&(i=i.setEndPosition(i.endLineNumber+1,1),n=n.setEndPosition(n.endLineNumber+1,1)),new Hd(i,n)}class zte{static fromDiffResult(e){return new zte(e.changes.map(t=>new Dfe(t)),e.moves||[],e.identical,e.quitEarly)}constructor(e,t,i,n){this.mappings=e,this.movedTexts=t,this.identical=i,this.quitEarly=n}}class Dfe{constructor(e){this.lineRangeMapping=e}}class UU{static fromDiffs(e,t,i,n,o){const l=rc.inverse(e,t,i),r=[];for(const a of l){let d=a.original.startLineNumber,c=a.modified.startLineNumber,h=a.original.length;const u=d===1&&c===1,m=d+h===t+1&&c+h===i+1;(u||m)&&h>=o+n?(u&&!m&&(h-=o),m&&!u&&(d+=o,c+=o,h-=o),r.push(new UU(d,c,h,0,0))):h>=o*2+n&&(d+=o,c+=o,h-=o*2,r.push(new UU(d,c,h,0,0)))}return r}get originalUnchangedRange(){return jt.ofLength(this.originalLineNumber,this.lineCount)}get modifiedUnchangedRange(){return jt.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(e,t,i,n,o){this.originalLineNumber=e,this.modifiedLineNumber=t,this.lineCount=i,this._visibleLineCountTop=oi(this,0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=oi(this,0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=ht(this,a=>this.visibleLineCountTop.read(a)+this.visibleLineCountBottom.read(a)===this.lineCount&&!this.isDragged.read(a)),this.isDragged=oi(this,void 0);const l=Math.max(Math.min(n,this.lineCount),0),r=Math.max(Math.min(o,this.lineCount-n),0);loe(n===l),loe(o===r),this._visibleLineCountTop.set(l,void 0),this._visibleLineCountBottom.set(r,void 0)}setVisibleRanges(e,t){const i=[],n=new vc(e.map(a=>a.modified)).subtractFrom(this.modifiedUnchangedRange);let o=this.originalLineNumber,l=this.modifiedLineNumber;const r=this.modifiedLineNumber+this.lineCount;if(n.ranges.length===0)this.showAll(t),i.push(this);else{let a=0;for(const d of n.ranges){const c=a===n.ranges.length-1;a++;const h=(c?r:d.endLineNumberExclusive)-l,u=new UU(o,l,h,0,0);u.setHiddenModifiedRange(d,t),i.push(u),o=u.originalUnchangedRange.endLineNumberExclusive,l=u.modifiedUnchangedRange.endLineNumberExclusive}}return i}shouldHideControls(e){return this._shouldHideControls.read(e)}getHiddenOriginalRange(e){return jt.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}getHiddenModifiedRange(e){return jt.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}setHiddenModifiedRange(e,t){const i=e.startLineNumber-this.modifiedLineNumber,n=this.modifiedLineNumber+this.lineCount-e.endLineNumberExclusive;this.setState(i,n,t)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(e=10,t){const i=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+e,i),t)}showMoreBelow(e=10,t){const i=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+e,i),t)}showAll(e){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),e)}showModifiedLine(e,t,i){const n=e+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),o=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-e;t===0&&n<o||t===1?this._visibleLineCountTop.set(this._visibleLineCountTop.get()+n,i):this._visibleLineCountBottom.set(this._visibleLineCountBottom.get()+o,i)}showOriginalLine(e,t,i){const n=e-this.originalLineNumber,o=this.originalLineNumber+this.lineCount-e;t===0&&n<o||t===1?this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+o-n,this.getMaxVisibleLineCountTop()),i):this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+n-o,this.getMaxVisibleLineCountBottom()),i)}collapseAll(e){this._visibleLineCountTop.set(0,e),this._visibleLineCountBottom.set(0,e)}setState(e,t,i){e=Math.max(Math.min(e,this.lineCount),0),t=Math.max(Math.min(t,this.lineCount-e),0),this._visibleLineCountTop.set(e,i),this._visibleLineCountBottom.set(t,i)}}class o6e extends de{get visibility(){return this._visibility}set visibility(e){this._visibility!==e&&(this._visibility=e,this._diffActions.style.visibility=e?"visible":"hidden")}constructor(e,t,i,n,o,l,r,a,d){super(),this._getViewZoneId=e,this._marginDomNode=t,this._modifiedEditor=i,this._diff=n,this._editor=o,this._viewLineCounts=l,this._originalTextModel=r,this._contextMenuService=a,this._clipboardService=d,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=Qt.asClassName(ke.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const c=this._modifiedEditor.getOption(67);this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${c}px`,this._diffActions.style.lineHeight=`${c}px`,this._marginDomNode.appendChild(this._diffActions);let h=0;const u=i.getOption(128)&&!ju,m=(p,g)=>{this._contextMenuService.showContextMenu({domForShadowRoot:u?i.getDomNode()??void 0:void 0,getAnchor:()=>({x:p,y:g}),getActions:()=>{const b=[],f=n.modified.isEmpty;return b.push(new bd("diff.clipboard.copyDeletedContent",f?n.original.length>1?U("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):U("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"):n.original.length>1?U("diff.clipboard.copyChangedLinesContent.label","Copy changed lines"):U("diff.clipboard.copyChangedLinesContent.single.label","Copy changed line"),void 0,!0,async()=>{const A=this._originalTextModel.getValueInRange(n.original.toExclusiveRange());await this._clipboardService.writeText(A)})),n.original.length>1&&b.push(new bd("diff.clipboard.copyDeletedLineContent",f?U("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",n.original.startLineNumber+h):U("diff.clipboard.copyChangedLineContent.label","Copy changed line ({0})",n.original.startLineNumber+h),void 0,!0,async()=>{let A=this._originalTextModel.getLineContent(n.original.startLineNumber+h);A===""&&(A=this._originalTextModel.getEndOfLineSequence()===0?`
- `:`\r
- `),await this._clipboardService.writeText(A)})),i.getOption(92)||b.push(new bd("diff.inline.revertChange",U("diff.inline.revertChange.label","Revert this change"),void 0,!0,async()=>{this._editor.revert(this._diff)})),b},autoSelectFirstItem:!0})};this._register(Ms(this._diffActions,"mousedown",p=>{if(!p.leftButton)return;const{top:g,height:b}=_s(this._diffActions),f=Math.floor(c/3);p.preventDefault(),m(p.posx,g+b+f)})),this._register(i.onMouseMove(p=>{(p.target.type===8||p.target.type===5)&&p.target.detail.viewZoneId===this._getViewZoneId()?(h=this._updateLightBulbPosition(this._marginDomNode,p.event.browserEvent.y,c),this.visibility=!0):this.visibility=!1})),this._register(i.onMouseDown(p=>{p.event.leftButton&&(p.target.type===8||p.target.type===5)&&p.target.detail.viewZoneId===this._getViewZoneId()&&(p.event.preventDefault(),h=this._updateLightBulbPosition(this._marginDomNode,p.event.browserEvent.y,c),m(p.event.posx,p.event.posy+c))}))}_updateLightBulbPosition(e,t,i){const{top:n}=_s(e),o=t-n,l=Math.floor(o/i),r=l*i;if(this._diffActions.style.top=`${r}px`,this._viewLineCounts){let a=0;for(let d=0;d<this._viewLineCounts.length;d++)if(a+=this._viewLineCounts[d],l<a)return d}return l}}const zae=B0("diffEditorWidget",{createHTML:s=>s});function l6e(s,e,t,i){Al(i,e.fontInfo);const n=t.length>0,o=new XQ(1e4);let l=0,r=0;const a=[];for(let u=0;u<s.lineTokens.length;u++){const m=u+1,p=s.lineTokens[u],g=s.lineBreakData[u],b=qr.filter(t,m,1,Number.MAX_SAFE_INTEGER);if(g){let f=0;for(const Z of g.breakOffsets){const A=p.sliceAndInflate(f,Z,0);l=Math.max(l,_ae(r,A,qr.extractWrapped(b,f,Z),n,s.mightContainNonBasicASCII,s.mightContainRTL,e,o)),r++,f=Z}a.push(g.breakOffsets.length)}else a.push(1),l=Math.max(l,_ae(r,p,b,n,s.mightContainNonBasicASCII,s.mightContainRTL,e,o)),r++}l+=e.scrollBeyondLastColumn;const d=o.build(),c=zae?zae.createHTML(d):d;i.innerHTML=c;const h=l*e.typicalHalfwidthCharacterWidth;return{heightInLines:r,minWidthInPx:h,viewLineCounts:a}}class r6e{constructor(e,t,i,n){this.lineTokens=e,this.lineBreakData=t,this.mightContainNonBasicASCII=i,this.mightContainRTL=n}}class _te{static fromEditor(e){var o;const t=e.getOptions(),i=t.get(50),n=t.get(146);return new _te(((o=e.getModel())==null?void 0:o.getOptions().tabSize)||0,i,t.get(33),i.typicalHalfwidthCharacterWidth,t.get(105),t.get(67),n.decorationsWidth,t.get(118),t.get(100),t.get(95),t.get(51))}constructor(e,t,i,n,o,l,r,a,d,c,h){this.tabSize=e,this.fontInfo=t,this.disableMonospaceOptimizations=i,this.typicalHalfwidthCharacterWidth=n,this.scrollBeyondLastColumn=o,this.lineHeight=l,this.lineDecorationsWidth=r,this.stopRenderingLineAfter=a,this.renderWhitespace=d,this.renderControlCharacters=c,this.fontLigatures=h}}function _ae(s,e,t,i,n,o,l,r){r.appendString('<div class="view-line'),i||r.appendString(" char-delete"),r.appendString('" style="top:'),r.appendString(String(s*l.lineHeight)),r.appendString('px;width:1000000px;">');const a=e.getLineContent(),d=uc.isBasicASCII(a,n),c=uc.containsRTL(a,d,o),h=SB(new Zf(l.fontInfo.isMonospace&&!l.disableMonospaceOptimizations,l.fontInfo.canUseHalfwidthRightwardsArrow,a,!1,d,c,0,e,t,l.tabSize,0,l.fontInfo.spaceWidth,l.fontInfo.middotWidth,l.fontInfo.wsmiddotWidth,l.stopRenderingLineAfter,l.renderWhitespace,l.renderControlCharacters,l.fontLigatures!==YU.OFF,null),r);return r.appendString("</div>"),h.characterMapping.getHorizontalOffset(h.characterMapping.length)}var a6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Oae=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let k4=class extends de{constructor(e,t,i,n,o,l,r,a,d,c){super(),this._targetWindow=e,this._editors=t,this._diffModel=i,this._options=n,this._diffEditorWidget=o,this._canIgnoreViewZoneUpdateEvent=l,this._origViewZonesToIgnore=r,this._modViewZonesToIgnore=a,this._clipboardService=d,this._contextMenuService=c,this._originalTopPadding=oi(this,0),this._originalScrollOffset=oi(this,0),this._originalScrollOffsetAnimated=vae(this._targetWindow,this._originalScrollOffset,this._store),this._modifiedTopPadding=oi(this,0),this._modifiedScrollOffset=oi(this,0),this._modifiedScrollOffsetAnimated=vae(this._targetWindow,this._modifiedScrollOffset,this._store);const h=oi("invalidateAlignmentsState",0),u=this._register(new Rn(()=>{h.set(h.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(A=>{this._canIgnoreViewZoneUpdateEvent()||u.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(A=>{this._canIgnoreViewZoneUpdateEvent()||u.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(A=>{(A.hasChanged(147)||A.hasChanged(67))&&u.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(A=>{(A.hasChanged(147)||A.hasChanged(67))&&u.schedule()}));const m=this._diffModel.map(A=>A?gn(this,A.model.original.onDidChangeTokens,()=>A.model.original.tokenization.backgroundTokenizationState===2):void 0).map((A,N)=>A==null?void 0:A.read(N)),p=ht(A=>{const N=this._diffModel.read(A),W=N==null?void 0:N.diff.read(A);if(!N||!W)return null;h.read(A);const R=this._options.renderSideBySide.read(A);return jae(this._editors.original,this._editors.modified,W.mappings,this._origViewZonesToIgnore,this._modViewZonesToIgnore,R)}),g=ht(A=>{var Q;const N=(Q=this._diffModel.read(A))==null?void 0:Q.movedTextToCompare.read(A);if(!N)return null;h.read(A);const W=N.changes.map(R=>new Dfe(R));return jae(this._editors.original,this._editors.modified,W,this._origViewZonesToIgnore,this._modViewZonesToIgnore,!0)});function b(){const A=document.createElement("div");return A.className="diagonal-fill",A}const f=this._register(new Ze);this.viewZones=Uf(this,(A,N)=>{var Qe,He,Te,xe;f.clear();const W=p.read(A)||[],Q=[],R=[],M=this._modifiedTopPadding.read(A);M>0&&R.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:M,showInHiddenAreas:!0,suppressMouseDown:!0});const w=this._originalTopPadding.read(A);w>0&&Q.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:w,showInHiddenAreas:!0,suppressMouseDown:!0});const Y=this._options.renderSideBySide.read(A),G=Y||(Qe=this._editors.modified._getViewModel())==null?void 0:Qe.createLineBreaksComputer();if(G){const Je=this._editors.original.getModel();for(const Mt of W)if(Mt.diff)for(let St=Mt.originalRange.startLineNumber;St<Mt.originalRange.endLineNumberExclusive;St++){if(St>Je.getLineCount())return{orig:Q,mod:R};G==null||G.addRequest(Je.getLineContent(St),null,null)}}const P=(G==null?void 0:G.finalize())??[];let j=0;const X=this._editors.modified.getOption(67),ie=(He=this._diffModel.read(A))==null?void 0:He.movedTextToCompare.read(A),se=((Te=this._editors.original.getModel())==null?void 0:Te.mightContainNonBasicASCII())??!1,pe=((xe=this._editors.original.getModel())==null?void 0:xe.mightContainRTL())??!1,Ue=_te.fromEditor(this._editors.modified);for(const Je of W)if(Je.diff&&!Y&&(!this._options.useTrueInlineDiffRendering.read(A)||!Ote(Je.diff))){if(!Je.originalRange.isEmpty){m.read(A);const St=document.createElement("div");St.classList.add("view-lines","line-delete","monaco-mouse-cursor-text");const Pe=this._editors.original.getModel();if(Je.originalRange.endLineNumberExclusive-1>Pe.getLineCount())return{orig:Q,mod:R};const Be=new r6e(Je.originalRange.mapToLineArray(fe=>Pe.tokenization.getLineTokens(fe)),Je.originalRange.mapToLineArray(fe=>P[j++]),se,pe),rt=[];for(const fe of Je.diff.innerChanges||[])rt.push(new VC(fe.originalRange.delta(-(Je.diff.original.startLineNumber-1)),AV.className,0));const Tt=l6e(Be,Ue,rt,St),qt=document.createElement("div");if(qt.className="inline-deleted-margin-view-zone",Al(qt,Ue.fontInfo),this._options.renderIndicators.read(A))for(let fe=0;fe<Tt.heightInLines;fe++){const Vi=document.createElement("div");Vi.className=`delete-sign ${Qt.asClassName(Lfe)}`,Vi.setAttribute("style",`position:absolute;top:${fe*X}px;width:${Ue.lineDecorationsWidth}px;height:${X}px;right:0;`),qt.appendChild(Vi)}let yt;f.add(new o6e(()=>rU(yt),qt,this._editors.modified,Je.diff,this._diffEditorWidget,Tt.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let fe=0;fe<Tt.viewLineCounts.length;fe++){const Vi=Tt.viewLineCounts[fe];Vi>1&&Q.push({afterLineNumber:Je.originalRange.startLineNumber+fe,domNode:b(),heightInPx:(Vi-1)*X,showInHiddenAreas:!0,suppressMouseDown:!0})}R.push({afterLineNumber:Je.modifiedRange.startLineNumber-1,domNode:St,heightInPx:Tt.heightInLines*X,minWidthInPx:Tt.minWidthInPx,marginDomNode:qt,setZoneId(fe){yt=fe},showInHiddenAreas:!0,suppressMouseDown:!0})}const Mt=document.createElement("div");Mt.className="gutter-delete",Q.push({afterLineNumber:Je.originalRange.endLineNumberExclusive-1,domNode:b(),heightInPx:Je.modifiedHeightInPx,marginDomNode:Mt,showInHiddenAreas:!0,suppressMouseDown:!0})}else{const Mt=Je.modifiedHeightInPx-Je.originalHeightInPx;if(Mt>0){if(ie!=null&&ie.lineRangeMapping.original.delta(-1).deltaLength(2).contains(Je.originalRange.endLineNumberExclusive-1))continue;Q.push({afterLineNumber:Je.originalRange.endLineNumberExclusive-1,domNode:b(),heightInPx:Mt,showInHiddenAreas:!0,suppressMouseDown:!0})}else{let St=function(){const Be=document.createElement("div");return Be.className="arrow-revert-change "+Qt.asClassName(ke.arrowRight),N.add(ge(Be,"mousedown",rt=>rt.stopPropagation())),N.add(ge(Be,"click",rt=>{rt.stopPropagation(),o.revert(Je.diff)})),Ge("div",{},Be)};if(ie!=null&&ie.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(Je.modifiedRange.endLineNumberExclusive-1))continue;let Pe;Je.diff&&Je.diff.modified.isEmpty&&this._options.shouldRenderOldRevertArrows.read(A)&&(Pe=St()),R.push({afterLineNumber:Je.modifiedRange.endLineNumberExclusive-1,domNode:b(),heightInPx:-Mt,marginDomNode:Pe,showInHiddenAreas:!0,suppressMouseDown:!0})}}for(const Je of g.read(A)??[]){if(!(ie!=null&&ie.lineRangeMapping.original.intersect(Je.originalRange))||!(ie!=null&&ie.lineRangeMapping.modified.intersect(Je.modifiedRange)))continue;const Mt=Je.modifiedHeightInPx-Je.originalHeightInPx;Mt>0?Q.push({afterLineNumber:Je.originalRange.endLineNumberExclusive-1,domNode:b(),heightInPx:Mt,showInHiddenAreas:!0,suppressMouseDown:!0}):R.push({afterLineNumber:Je.modifiedRange.endLineNumberExclusive-1,domNode:b(),heightInPx:-Mt,showInHiddenAreas:!0,suppressMouseDown:!0})}return{orig:Q,mod:R}});let Z=!1;this._register(this._editors.original.onDidScrollChange(A=>{A.scrollLeftChanged&&!Z&&(Z=!0,this._editors.modified.setScrollLeft(A.scrollLeft),Z=!1)})),this._register(this._editors.modified.onDidScrollChange(A=>{A.scrollLeftChanged&&!Z&&(Z=!0,this._editors.original.setScrollLeft(A.scrollLeft),Z=!1)})),this._originalScrollTop=gn(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=gn(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register(Gt(A=>{const N=this._originalScrollTop.read(A)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(A))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(A));N!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(N,1)})),this._register(Gt(A=>{const N=this._modifiedScrollTop.read(A)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(A))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(A));N!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(N,1)})),this._register(Gt(A=>{var Q;const N=(Q=this._diffModel.read(A))==null?void 0:Q.movedTextToCompare.read(A);let W=0;if(N){const R=this._editors.original.getTopForLineNumber(N.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();W=this._editors.modified.getTopForLineNumber(N.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-R}W>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(W,void 0)):W<0?(this._modifiedTopPadding.set(-W,void 0),this._originalTopPadding.set(0,void 0)):setTimeout(()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)},400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.get()-W,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+W,void 0,!0)}))}};k4=a6e([Oae(8,D0),Oae(9,Vd)],k4);function jae(s,e,t,i,n,o){const l=new f0(Hae(s,i)),r=new f0(Hae(e,n)),a=s.getOption(67),d=e.getOption(67),c=[];let h=0,u=0;function m(p,g){for(;;){let b=l.peek(),f=r.peek();if(b&&b.lineNumber>=p&&(b=void 0),f&&f.lineNumber>=g&&(f=void 0),!b&&!f)break;const Z=b?b.lineNumber-h:Number.MAX_VALUE,A=f?f.lineNumber-u:Number.MAX_VALUE;Z<A?(l.dequeue(),f={lineNumber:b.lineNumber-h+u,heightInPx:0}):Z>A?(r.dequeue(),b={lineNumber:f.lineNumber-u+h,heightInPx:0}):(l.dequeue(),r.dequeue()),c.push({originalRange:jt.ofLength(b.lineNumber,1),modifiedRange:jt.ofLength(f.lineNumber,1),originalHeightInPx:a+b.heightInPx,modifiedHeightInPx:d+f.heightInPx,diff:void 0})}}for(const p of t){let A=function(N,W,Q=!1){var G,P;if(N<Z||W<f)return;if(b)b=!1;else if(!Q&&(N===Z||W===f))return;const R=new jt(Z,N),M=new jt(f,W);if(R.isEmpty&&M.isEmpty)return;const w=((G=l.takeWhile(j=>j.lineNumber<N))==null?void 0:G.reduce((j,X)=>j+X.heightInPx,0))??0,Y=((P=r.takeWhile(j=>j.lineNumber<W))==null?void 0:P.reduce((j,X)=>j+X.heightInPx,0))??0;c.push({originalRange:R,modifiedRange:M,originalHeightInPx:R.length*a+w,modifiedHeightInPx:M.length*d+Y,diff:p.lineRangeMapping}),Z=N,f=W};const g=p.lineRangeMapping;m(g.original.startLineNumber,g.modified.startLineNumber);let b=!0,f=g.modified.startLineNumber,Z=g.original.startLineNumber;if(o)for(const N of g.innerChanges||[]){N.originalRange.startColumn>1&&N.modifiedRange.startColumn>1&&A(N.originalRange.startLineNumber,N.modifiedRange.startLineNumber);const W=s.getModel(),Q=N.originalRange.endLineNumber<=W.getLineCount()?W.getLineMaxColumn(N.originalRange.endLineNumber):Number.MAX_SAFE_INTEGER;N.originalRange.endColumn<Q&&A(N.originalRange.endLineNumber,N.modifiedRange.endLineNumber)}A(g.original.endLineNumberExclusive,g.modified.endLineNumberExclusive,!0),h=g.original.endLineNumberExclusive,u=g.modified.endLineNumberExclusive}return m(Number.MAX_VALUE,Number.MAX_VALUE),c}function Hae(s,e){const t=[],i=[],n=s.getOption(147).wrappingColumn!==-1,o=s._getViewModel().coordinatesConverter,l=s.getOption(67);if(n)for(let a=1;a<=s.getModel().getLineCount();a++){const d=o.getModelLineViewLineCount(a);d>1&&i.push({lineNumber:a,heightInPx:l*(d-1)})}for(const a of s.getWhitespaces()){if(e.has(a.id))continue;const d=a.afterLineNumber===0?0:o.convertViewPositionToModelPosition(new oe(a.afterLineNumber,1)).lineNumber;t.push({lineNumber:d,heightInPx:a.height})}return k8e(t,i,a=>a.lineNumber,(a,d)=>({lineNumber:a.lineNumber,heightInPx:a.heightInPx+d.heightInPx}))}function Ote(s){return s.innerChanges?s.innerChanges.every(e=>Pae(e.modifiedRange)&&Pae(e.originalRange)||e.originalRange.equalsRange(new v(1,1,1,1))):!1}function Pae(s){return s.startLineNumber===s.endLineNumber}const vw=class vw extends de{constructor(e,t,i,n,o){super(),this._rootElement=e,this._diffModel=t,this._originalEditorLayoutInfo=i,this._modifiedEditorLayoutInfo=n,this._editors=o,this._originalScrollTop=gn(this,this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=gn(this,this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=Tl("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=oi(this,0),this._modifiedViewZonesChangedSignal=Tl("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=Tl("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=Uf(this,(c,h)=>{var R;this._element.replaceChildren();const u=this._diffModel.read(c),m=(R=u==null?void 0:u.diff.read(c))==null?void 0:R.movedTexts;if(!m||m.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(c);const p=this._originalEditorLayoutInfo.read(c),g=this._modifiedEditorLayoutInfo.read(c);if(!p||!g){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(c),this._originalViewZonesChangedSignal.read(c);const b=m.map(M=>{function w(Ue,Qe){const He=Qe.getTopForLineNumber(Ue.startLineNumber,!0),Te=Qe.getTopForLineNumber(Ue.endLineNumberExclusive,!0);return(He+Te)/2}const Y=w(M.lineRangeMapping.original,this._editors.original),G=this._originalScrollTop.read(c),P=w(M.lineRangeMapping.modified,this._editors.modified),j=this._modifiedScrollTop.read(c),X=Y-G,ie=P-j,se=Math.min(Y,P),pe=Math.max(Y,P);return{range:new di(se,pe),from:X,to:ie,fromWithoutScroll:Y,toWithoutScroll:P,move:M}});b.sort(aIe(ea(M=>M.fromWithoutScroll>M.toWithoutScroll,dIe),ea(M=>M.fromWithoutScroll>M.toWithoutScroll?M.fromWithoutScroll:-M.toWithoutScroll,zh)));const f=jte.compute(b.map(M=>M.range)),Z=10,A=p.verticalScrollbarWidth,N=(f.getTrackCount()-1)*10+Z*2,W=A+N+(g.contentLeft-vw.movedCodeBlockPadding);let Q=0;for(const M of b){const w=f.getTrack(Q),Y=A+Z+w*10,G=15,P=15,j=W,X=g.glyphMarginWidth+g.lineNumbersWidth,ie=18,se=document.createElementNS("http://www.w3.org/2000/svg","rect");se.classList.add("arrow-rectangle"),se.setAttribute("x",`${j-X}`),se.setAttribute("y",`${M.to-ie/2}`),se.setAttribute("width",`${X}`),se.setAttribute("height",`${ie}`),this._element.appendChild(se);const pe=document.createElementNS("http://www.w3.org/2000/svg","g"),Ue=document.createElementNS("http://www.w3.org/2000/svg","path");Ue.setAttribute("d",`M 0 ${M.from} L ${Y} ${M.from} L ${Y} ${M.to} L ${j-P} ${M.to}`),Ue.setAttribute("fill","none"),pe.appendChild(Ue);const Qe=document.createElementNS("http://www.w3.org/2000/svg","polygon");Qe.classList.add("arrow"),h.add(Gt(He=>{Ue.classList.toggle("currentMove",M.move===u.activeMovedText.read(He)),Qe.classList.toggle("currentMove",M.move===u.activeMovedText.read(He))})),Qe.setAttribute("points",`${j-P},${M.to-G/2} ${j},${M.to} ${j-P},${M.to+G/2}`),pe.appendChild(Qe),this._element.appendChild(pe),Q++}this.width.set(N,void 0)}),this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("class","moved-blocks-lines"),this._rootElement.appendChild(this._element),this._register(gt(()=>this._element.remove())),this._register(Gt(c=>{const h=this._originalEditorLayoutInfo.read(c),u=this._modifiedEditorLayoutInfo.read(c);!h||!u||(this._element.style.left=`${h.width-h.verticalScrollbarWidth}px`,this._element.style.height=`${h.height}px`,this._element.style.width=`${h.verticalScrollbarWidth+h.contentLeft-vw.movedCodeBlockPadding+this.width.read(c)}px`)})),this._register(KQ(this._state));const l=ht(c=>{const h=this._diffModel.read(c),u=h==null?void 0:h.diff.read(c);return u?u.movedTexts.map(m=>({move:m,original:new AS(Xc(m.lineRangeMapping.original.startLineNumber-1),18),modified:new AS(Xc(m.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register(bx(this._editors.original,l.map(c=>c.map(h=>h.original)))),this._register(bx(this._editors.modified,l.map(c=>c.map(h=>h.modified)))),this._register(Ga((c,h)=>{const u=l.read(c);for(const m of u)h.add(new Kae(this._editors.original,m.original,m.move,"original",this._diffModel.get())),h.add(new Kae(this._editors.modified,m.modified,m.move,"modified",this._diffModel.get()))}));const r=Tl("original.onDidFocusEditorWidget",c=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>c(void 0),0))),a=Tl("modified.onDidFocusEditorWidget",c=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>c(void 0),0)));let d="modified";this._register(bB({createEmptyChangeSummary:()=>{},handleChange:(c,h)=>(c.didChange(r)&&(d="original"),c.didChange(a)&&(d="modified"),!0)},c=>{r.read(c),a.read(c);const h=this._diffModel.read(c);if(!h)return;const u=h.diff.read(c);let m;if(u&&d==="original"){const p=this._editors.originalCursor.read(c);p&&(m=u.movedTexts.find(g=>g.lineRangeMapping.original.contains(p.lineNumber)))}if(u&&d==="modified"){const p=this._editors.modifiedCursor.read(c);p&&(m=u.movedTexts.find(g=>g.lineRangeMapping.modified.contains(p.lineNumber)))}m!==h.movedTextToCompare.get()&&h.movedTextToCompare.set(void 0,void 0),h.setActiveMovedText(m)}))}};vw.movedCodeBlockPadding=4;let LW=vw;class jte{static compute(e){const t=[],i=[];for(const n of e){let o=t.findIndex(l=>!l.intersectsStrict(n));o===-1&&(t.length>=6?o=Yxe(t,ea(r=>r.intersectWithRangeLength(n),zh)):(o=t.length,t.push(new j$))),t[o].addRange(n),i.push(o)}return new jte(t.length,i)}constructor(e,t){this._trackCount=e,this.trackPerLineIdx=t}getTrack(e){return this.trackPerLineIdx[e]}getTrackCount(){return this._trackCount}}class Kae extends Gte{constructor(e,t,i,n,o){const l=gi("div.diff-hidden-lines-widget");super(e,t,l.root),this._editor=e,this._move=i,this._kind=n,this._diffModel=o,this._nodes=gi("div.diff-moved-code-block",{style:{marginRight:"4px"}},[gi("div.text-content@textContent"),gi("div.action-bar@actionBar")]),l.root.appendChild(this._nodes.root);const r=gn(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register(V0(this._nodes.root,{paddingRight:r.map(u=>u.verticalScrollbarWidth)}));let a;i.changes.length>0?a=this._kind==="original"?U("codeMovedToWithChanges","Code moved with changes to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):U("codeMovedFromWithChanges","Code moved with changes from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1):a=this._kind==="original"?U("codeMovedTo","Code moved to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):U("codeMovedFrom","Code moved from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1);const d=this._register(new ac(this._nodes.actionBar,{highlightToggledItems:!0})),c=new bd("",a,"",!1);d.push(c,{icon:!1,label:!0});const h=new bd("","Compare",Qt.asClassName(ke.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===i?void 0:this._move,void 0)});this._register(Gt(u=>{const m=this._diffModel.movedTextToCompare.read(u)===i;h.checked=m})),d.push(h,{icon:!1,label:!0})}}class d6e extends de{constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._decorations=ht(this,o=>{const l=this._diffModel.read(o),r=l==null?void 0:l.diff.read(o);if(!r)return null;const a=this._diffModel.read(o).movedTextToCompare.read(o),d=this._options.renderIndicators.read(o),c=this._options.showEmptyDecorations.read(o),h=[],u=[];if(!a)for(const p of r.mappings)if(p.lineRangeMapping.original.isEmpty||h.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:d?PM:Yae}),p.lineRangeMapping.modified.isEmpty||u.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:d?fx:Xae}),p.lineRangeMapping.modified.isEmpty||p.lineRangeMapping.original.isEmpty)p.lineRangeMapping.original.isEmpty||h.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:Xte}),p.lineRangeMapping.modified.isEmpty||u.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:xte});else{const g=this._options.useTrueInlineDiffRendering.read(o)&&Ote(p.lineRangeMapping);for(const b of p.lineRangeMapping.innerChanges||[])if(p.lineRangeMapping.original.contains(b.originalRange.startLineNumber)&&h.push({range:b.originalRange,options:b.originalRange.isEmpty()&&c?Yte:AV}),p.lineRangeMapping.modified.contains(b.modifiedRange.startLineNumber)&&u.push({range:b.modifiedRange,options:b.modifiedRange.isEmpty()&&c&&!g?Jte:Fx}),g){const f=l.model.original.getValueInRange(b.originalRange);u.push({range:b.modifiedRange,options:{description:"deleted-text",before:{content:f,inlineClassName:"inline-deleted-text"},zIndex:1e5,showIfCollapsed:!0}})}}if(a)for(const p of a.changes){const g=p.original.toInclusiveRange();g&&h.push({range:g,options:d?PM:Yae});const b=p.modified.toInclusiveRange();b&&u.push({range:b,options:d?fx:Xae});for(const f of p.innerChanges||[])h.push({range:f.originalRange,options:AV}),u.push({range:f.modifiedRange,options:Fx})}const m=this._diffModel.read(o).activeMovedText.read(o);for(const p of r.movedTexts)h.push({range:p.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(p===m?" currentMove":""),blockPadding:[LW.movedCodeBlockPadding,0,LW.movedCodeBlockPadding,LW.movedCodeBlockPadding]}}),u.push({range:p.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(p===m?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:h,modifiedDecorations:u}}),this._register(gx(this._editors.original,this._decorations.map(o=>(o==null?void 0:o.originalDecorations)||[]))),this._register(gx(this._editors.modified,this._decorations.map(o=>(o==null?void 0:o.modifiedDecorations)||[])))}}class c6e{resetSash(){this._sashRatio.set(void 0,void 0)}constructor(e,t){this._options=e,this.dimensions=t,this.sashLeft=pB(this,i=>{const n=this._sashRatio.read(i)??this._options.splitViewDefaultRatio.read(i);return this._computeSashLeft(n,i)},(i,n)=>{const o=this.dimensions.width.get();this._sashRatio.set(i/o,n)}),this._sashRatio=oi(this,void 0)}_computeSashLeft(e,t){const i=this.dimensions.width.read(t),n=Math.floor(this._options.splitViewDefaultRatio.read(t)*i),o=this._options.enableSplitViewResizing.read(t)?Math.floor(e*i):n,l=100;return i<=l*2?n:o<l?l:o>i-l?i-l:o}}class Gfe extends de{constructor(e,t,i,n,o,l){super(),this._domNode=e,this._dimensions=t,this._enabled=i,this._boundarySashes=n,this.sashLeft=o,this._resetSash=l,this._sash=this._register(new ql(this._domNode,{getVerticalSashTop:r=>0,getVerticalSashLeft:r=>this.sashLeft.get(),getVerticalSashHeight:r=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart(()=>{this._startSashPosition=this.sashLeft.get()})),this._register(this._sash.onDidChange(r=>{this.sashLeft.set(this._startSashPosition+(r.currentX-r.startX),void 0)})),this._register(this._sash.onDidEnd(()=>this._sash.layout())),this._register(this._sash.onDidReset(()=>this._resetSash())),this._register(Gt(r=>{const a=this._boundarySashes.read(r);a&&(this._sash.orthogonalEndSash=a.bottom)})),this._register(Gt(r=>{const a=this._enabled.read(r);this._sash.state=a?3:0,this.sashLeft.read(r),this._dimensions.height.read(r),this._sash.layout()}))}}class h6e extends de{constructor(e,t,i){super(),this._editor=e,this._domNode=t,this.itemProvider=i,this.scrollTop=gn(this,this._editor.onDidScrollChange,l=>this._editor.getScrollTop()),this.isScrollTopZero=this.scrollTop.map(l=>l===0),this.modelAttached=gn(this,this._editor.onDidChangeModel,l=>this._editor.hasModel()),this.editorOnDidChangeViewZones=Tl("onDidChangeViewZones",this._editor.onDidChangeViewZones),this.editorOnDidContentSizeChange=Tl("onDidContentSizeChange",this._editor.onDidContentSizeChange),this.domNodeSizeChanged=PQ("domNodeSizeChanged"),this.views=new Map,this._domNode.className="gutter monaco-editor";const n=this._domNode.appendChild(gi("div.scroll-decoration",{role:"presentation",ariaHidden:"true",style:{width:"100%"}}).root),o=new ResizeObserver(()=>{Ss(l=>{this.domNodeSizeChanged.trigger(l)})});o.observe(this._domNode),this._register(gt(()=>o.disconnect())),this._register(Gt(l=>{n.className=this.isScrollTopZero.read(l)?"":"scroll-decoration"})),this._register(Gt(l=>this.render(l)))}dispose(){super.dispose(),Zl(this._domNode)}render(e){if(!this.modelAttached.read(e))return;this.domNodeSizeChanged.read(e),this.editorOnDidChangeViewZones.read(e),this.editorOnDidContentSizeChange.read(e);const t=this.scrollTop.read(e),i=this._editor.getVisibleRanges(),n=new Set(this.views.keys()),o=di.ofStartAndLength(0,this._domNode.clientHeight);if(!o.isEmpty)for(const l of i){const r=new jt(l.startLineNumber,l.endLineNumber+1),a=this.itemProvider.getIntersectingGutterItems(r,e);Ss(d=>{for(const c of a){if(!c.range.intersect(r))continue;n.delete(c.id);let h=this.views.get(c.id);if(h)h.item.set(c,d);else{const g=document.createElement("div");this._domNode.appendChild(g);const b=oi("item",c),f=this.itemProvider.createView(b,g);h=new u6e(b,f,g),this.views.set(c.id,h)}const u=c.range.startLineNumber<=this._editor.getModel().getLineCount()?this._editor.getTopForLineNumber(c.range.startLineNumber,!0)-t:this._editor.getBottomForLineNumber(c.range.startLineNumber-1,!1)-t,p=(c.range.endLineNumberExclusive===1?Math.max(u,this._editor.getTopForLineNumber(c.range.startLineNumber,!1)-t):Math.max(u,this._editor.getBottomForLineNumber(c.range.endLineNumberExclusive-1,!0)-t))-u;h.domNode.style.top=`${u}px`,h.domNode.style.height=`${p}px`,h.gutterItemView.layout(di.ofStartAndLength(u,p),o)}})}for(const l of n){const r=this.views.get(l);r.gutterItemView.dispose(),r.domNode.remove(),this.views.delete(l)}}}class u6e{constructor(e,t,i){this.item=e,this.gutterItemView=t,this.domNode=i}}class Efe extends RA{constructor(e){super(),this._getContext=e}runAction(e,t){const i=this._getContext();return super.runAction(e,i)}}class qae extends i0e{constructor(e){super(),this._textModel=e}getValueOfRange(e){return this._textModel.getValueInRange(e)}get length(){const e=this._textModel.getLineCount(),t=this._textModel.getLineLength(e);return new qh(e-1,t)}}class m6e extends de{constructor(e,t,i={orientation:0}){super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new BDe),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new Ze),i.hoverDelegate=i.hoverDelegate??this._register(mV()),this.options=i,this.toggleMenuAction=this._register(new KM(()=>{var n;return(n=this.toggleMenuActionViewItem)==null?void 0:n.show()},i.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",e.appendChild(this.element),this.actionBar=this._register(new ac(this.element,{orientation:i.orientation,ariaLabel:i.ariaLabel,actionRunner:i.actionRunner,allowContextMenu:i.allowContextMenu,highlightToggledItems:i.highlightToggledItems,hoverDelegate:i.hoverDelegate,actionViewItemProvider:(n,o)=>{if(n.id===KM.ID)return this.toggleMenuActionViewItem=new Av(n,n.menuActions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:Qt.asClassNameArray(i.moreIcon??ke.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,isMenu:!0,hoverDelegate:this.options.hoverDelegate}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(i.actionViewItemProvider){const l=i.actionViewItemProvider(n,o);if(l)return l}if(n instanceof eV){const l=new Av(n,n.actions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:n.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,hoverDelegate:this.options.hoverDelegate});return l.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(l),this.disposables.add(this._onDidChangeDropdownVisibility.add(l.onDidChangeVisibility)),l}}}))}set actionRunner(e){this.actionBar.actionRunner=e}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(e){return this.actionBar.getAction(e)}setActions(e,t){this.clear();const i=e?e.slice(0):[];this.hasSecondaryActions=!!(t&&t.length>0),this.hasSecondaryActions&&t&&(this.toggleMenuAction.menuActions=t.slice(0),i.push(this.toggleMenuAction)),i.forEach(n=>{this.actionBar.push(n,{icon:this.options.icon??!0,label:this.options.label??!1,keybinding:this.getKeybindingLabel(n)})})}getKeybindingLabel(e){var i,n;const t=(n=(i=this.options).getKeyBinding)==null?void 0:n.call(i,e);return(t==null?void 0:t.getLabel())??void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),this.disposables.dispose(),super.dispose()}}const zX=class zX extends bd{constructor(e,t){t=t||U("moreActions","More Actions..."),super(zX.ID,t,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=e}async run(){this.toggleDropdownMenu()}get menuActions(){return this._menuActions}set menuActions(e){this._menuActions=e}};zX.ID="toolbar.toggle.more";let KM=zX;var vfe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Dh=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let qM=class extends m6e{constructor(e,t,i,n,o,l,r,a){super(e,o,{getKeyBinding:c=>l.lookupKeybinding(c.id)??void 0,...t,allowContextMenu:!0,skipTelemetry:typeof(t==null?void 0:t.telemetrySource)=="string"}),this._options=t,this._menuService=i,this._contextKeyService=n,this._contextMenuService=o,this._keybindingService=l,this._commandService=r,this._sessionDisposables=this._store.add(new Ze);const d=t==null?void 0:t.telemetrySource;d&&this._store.add(this.actionBar.onDidRun(c=>a.publicLog2("workbenchActionExecuted",{id:c.action.id,from:d})))}setActions(e,t=[],i){var c,h,u;this._sessionDisposables.clear();const n=e.slice(),o=t.slice(),l=[];let r=0;const a=[];let d=!1;if(((c=this._options)==null?void 0:c.hiddenItemStrategy)!==-1)for(let m=0;m<n.length;m++){const p=n[m];!(p instanceof Ud)&&!(p instanceof bW)||p.hideActions&&(l.push(p.hideActions.toggle),p.hideActions.toggle.checked&&r++,p.hideActions.isHidden&&(d=!0,n[m]=void 0,((h=this._options)==null?void 0:h.hiddenItemStrategy)!==0&&(a[m]=p)))}if(((u=this._options)==null?void 0:u.overflowBehavior)!==void 0){const m=y_e(new Set(this._options.overflowBehavior.exempted),Ti.map(n,b=>b==null?void 0:b.id)),p=this._options.overflowBehavior.maxItems-m.size;let g=0;for(let b=0;b<n.length;b++){const f=n[b];f&&(g++,!m.has(f.id)&&g>=p&&(n[b]=void 0,a[b]=f))}}wse(n),wse(a),super.setActions(n,zo.join(a,o)),(l.length>0||n.length>0)&&this._sessionDisposables.add(ge(this.getElement(),"contextmenu",m=>{var Z,A,N,W,Q;const p=new Jh(Wt(this.getElement()),m),g=this.getItemAction(p.target);if(!g)return;p.preventDefault(),p.stopPropagation();const b=[];if(g instanceof Ud&&g.menuKeybinding)b.push(g.menuKeybinding);else if(!(g instanceof bW||g instanceof KM)){const R=!!this._keybindingService.lookupKeybinding(g.id);b.push(nfe(this._commandService,this._keybindingService,g.id,void 0,R))}if(l.length>0){let R=!1;if(r===1&&((Z=this._options)==null?void 0:Z.hiddenItemStrategy)===0){R=!0;for(let M=0;M<l.length;M++)if(l[M].checked){l[M]=YZ({id:g.id,label:g.label,checked:!0,enabled:!1,run(){}});break}}if(!R&&(g instanceof Ud||g instanceof bW)){if(!g.hideActions)return;b.push(g.hideActions.hide)}else b.push(YZ({id:"label",label:U("hide","Hide"),enabled:!1,run(){}}))}const f=zo.join(b,l);(A=this._options)!=null&&A.resetMenu&&!i&&(i=[this._options.resetMenu]),d&&i&&(f.push(new zo),f.push(YZ({id:"resetThisMenu",label:U("resetThisMenu","Reset Menu"),run:()=>this._menuService.resetHiddenStates(i)}))),f.length!==0&&this._contextMenuService.showContextMenu({getAnchor:()=>p,getActions:()=>f,menuId:(N=this._options)==null?void 0:N.contextMenu,menuActionOptions:{renderShortTitle:!0,...(W=this._options)==null?void 0:W.menuOptions},skipTelemetry:typeof((Q=this._options)==null?void 0:Q.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};qM=vfe([Dh(2,pc),Dh(3,wt),Dh(4,Vd),Dh(5,dn),Dh(6,On),Dh(7,lr)],qM);let Zx=class extends qM{constructor(e,t,i,n,o,l,r,a,d){super(e,{resetMenu:t,...i},n,o,l,r,a,d),this._onDidChangeMenuItems=this._store.add(new re),this.onDidChangeMenuItems=this._onDidChangeMenuItems.event;const c=this._store.add(n.createMenu(t,o,{emitEventsForSubmenuChanges:!0})),h=()=>{var p,g,b;const u=[],m=[];vY(c,i==null?void 0:i.menuOptions,{primary:u,secondary:m},(p=i==null?void 0:i.toolbarOptions)==null?void 0:p.primaryGroup,(g=i==null?void 0:i.toolbarOptions)==null?void 0:g.shouldInlineSubmenu,(b=i==null?void 0:i.toolbarOptions)==null?void 0:b.useSeparatorsInPrimaryActions),e.classList.toggle("has-no-actions",u.length===0&&m.length===0),super.setActions(u,m)};this._store.add(c.onDidChange(()=>{h(),this._onDidChangeMenuItems.fire(this)})),h()}setActions(){throw new en("This toolbar is populated from a menu.")}};Zx=vfe([Dh(3,pc),Dh(4,wt),Dh(5,Vd),Dh(6,dn),Dh(7,On),Dh(8,lr)],Zx);var xfe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ZD=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const o_=[],Uk=35;let I4=class extends de{constructor(e,t,i,n,o,l,r,a,d){super(),this._diffModel=t,this._editors=i,this._options=n,this._sashLayout=o,this._boundarySashes=l,this._instantiationService=r,this._contextKeyService=a,this._menuService=d,this._menu=this._register(this._menuService.createMenu(at.DiffEditorHunkToolbar,this._contextKeyService)),this._actions=gn(this,this._menu.onDidChange,()=>this._menu.getActions()),this._hasActions=this._actions.map(c=>c.length>0),this._showSash=ht(this,c=>this._options.renderSideBySide.read(c)&&this._hasActions.read(c)),this.width=ht(this,c=>this._hasActions.read(c)?Uk:0),this.elements=gi("div.gutter@gutter",{style:{position:"absolute",height:"100%",width:Uk+"px"}},[]),this._currentDiff=ht(this,c=>{var p;const h=this._diffModel.read(c);if(!h)return;const u=(p=h.diff.read(c))==null?void 0:p.mappings,m=this._editors.modifiedCursor.read(c);if(m)return u==null?void 0:u.find(g=>g.lineRangeMapping.modified.contains(m.lineNumber))}),this._selectedDiffs=ht(this,c=>{const h=this._diffModel.read(c),u=h==null?void 0:h.diff.read(c);if(!u)return o_;const m=this._editors.modifiedSelections.read(c);if(m.every(f=>f.isEmpty()))return o_;const p=new vc(m.map(f=>jt.fromRangeInclusive(f))),b=u.mappings.filter(f=>f.lineRangeMapping.innerChanges&&p.intersects(f.lineRangeMapping.modified)).map(f=>({mapping:f,rangeMappings:f.lineRangeMapping.innerChanges.filter(Z=>m.some(A=>v.areIntersecting(Z.modifiedRange,A)))}));return b.length===0||b.every(f=>f.rangeMappings.length===0)?o_:b}),this._register(I8e(e,this.elements.root)),this._register(ge(this.elements.root,"click",()=>{this._editors.modified.focus()})),this._register(V0(this.elements.root,{display:this._hasActions.map(c=>c?"block":"none")})),Zr(this,c=>this._showSash.read(c)?new Gfe(e,this._sashLayout.dimensions,this._options.enableSplitViewResizing,this._boundarySashes,pB(this,u=>this._sashLayout.sashLeft.read(u)-Uk,(u,m)=>this._sashLayout.sashLeft.set(u+Uk,m)),()=>this._sashLayout.resetSash()):void 0).recomputeInitiallyAndOnChange(this._store),this._register(new h6e(this._editors.modified,this.elements.root,{getIntersectingGutterItems:(c,h)=>{const u=this._diffModel.read(h);if(!u)return[];const m=u.diff.read(h);if(!m)return[];const p=this._selectedDiffs.read(h);if(p.length>0){const b=rc.fromRangeMappings(p.flatMap(f=>f.rangeMappings));return[new $ae(b,!0,at.DiffEditorSelectionToolbar,void 0,u.model.original.uri,u.model.modified.uri)]}const g=this._currentDiff.read(h);return m.mappings.map(b=>new $ae(b.lineRangeMapping.withInnerChangesFromLineRanges(),b.lineRangeMapping===(g==null?void 0:g.lineRangeMapping),at.DiffEditorHunkToolbar,void 0,u.model.original.uri,u.model.modified.uri))},createView:(c,h)=>this._instantiationService.createInstance(D4,c,h,this)})),this._register(ge(this.elements.gutter,De.MOUSE_WHEEL,c=>{this._editors.modified.getOption(104).handleMouseWheel&&this._editors.modified.delegateScrollFromMouseWheelEvent(c)},{passive:!1}))}computeStagedValue(e){const t=e.innerChanges??[],i=new qae(this._editors.modifiedModel.get()),n=new qae(this._editors.original.getModel());return new P$(t.map(r=>r.toTextEdit(i))).apply(n)}layout(e){this.elements.gutter.style.left=e+"px"}};I4=xfe([ZD(6,bt),ZD(7,wt),ZD(8,pc)],I4);class $ae{constructor(e,t,i,n,o,l){this.mapping=e,this.showAlways=t,this.menuId=i,this.rangeOverride=n,this.originalUri=o,this.modifiedUri=l}get id(){return this.mapping.modified.toString()}get range(){return this.rangeOverride??this.mapping.modified}}let D4=class extends de{constructor(e,t,i,n){super(),this._item=e,this._elements=gi("div.gutterItem",{style:{height:"20px",width:"34px"}},[gi("div.background@background",{},[]),gi("div.buttons@buttons",{},[])]),this._showAlways=this._item.map(this,l=>l.showAlways),this._menuId=this._item.map(this,l=>l.menuId),this._isSmall=oi(this,!1),this._lastItemRange=void 0,this._lastViewRange=void 0;const o=this._register(n.createInstance(lV,"element",!0,{position:{hoverPosition:1}}));this._register(ZS(t,this._elements.root)),this._register(Gt(l=>{const r=this._showAlways.read(l);this._elements.root.classList.toggle("noTransition",!0),this._elements.root.classList.toggle("showAlways",r),setTimeout(()=>{this._elements.root.classList.toggle("noTransition",!1)},0)})),this._register(Ga((l,r)=>{this._elements.buttons.replaceChildren();const a=r.add(n.createInstance(Zx,this._elements.buttons,this._menuId.read(l),{orientation:1,hoverDelegate:o,toolbarOptions:{primaryGroup:d=>d.startsWith("primary")},overflowBehavior:{maxItems:this._isSmall.read(l)?1:3},hiddenItemStrategy:0,actionRunner:new Efe(()=>{const d=this._item.get(),c=d.mapping;return{mapping:c,originalWithModifiedChanges:i.computeStagedValue(c),originalUri:d.originalUri,modifiedUri:d.modifiedUri}}),menuOptions:{shouldForwardArgs:!0}}));r.add(a.onDidChangeMenuItems(()=>{this._lastItemRange&&this.layout(this._lastItemRange,this._lastViewRange)}))}))}layout(e,t){this._lastItemRange=e,this._lastViewRange=t;let i=this._elements.buttons.clientHeight;this._isSmall.set(this._item.get().mapping.original.startLineNumber===1&&e.length<30,void 0),i=this._elements.buttons.clientHeight;const n=e.length/2-i/2,o=i;let l=e.start+n;const r=di.tryCreate(o,t.endExclusive-o-i),a=di.tryCreate(e.start+o,e.endExclusive-i-o);a&&r&&a.start<a.endExclusive&&(l=r.clip(l),l=a.clip(l)),this._elements.buttons.style.top=`${l-e.start}px`}};D4=xfe([ZD(3,bt)],D4);function md(s){return G4.get(s)}const Ib=class Ib extends de{static get(e){let t=Ib._map.get(e);if(!t){t=new Ib(e),Ib._map.set(e,t);const i=e.onDidDispose(()=>{const n=Ib._map.get(e);n&&(Ib._map.delete(e),n.dispose(),i.dispose())})}return t}_beginUpdate(){this._updateCounter++,this._updateCounter===1&&(this._currentTransaction=new HQ(()=>{}))}_endUpdate(){if(this._updateCounter--,this._updateCounter===0){const e=this._currentTransaction;this._currentTransaction=void 0,e.finish()}}constructor(e){var t;super(),this.editor=e,this._updateCounter=0,this._currentTransaction=void 0,this._model=oi(this,this.editor.getModel()),this.model=this._model,this.isReadonly=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(92)),this._versionId=XP({owner:this,lazy:!0},((t=this.editor.getModel())==null?void 0:t.getVersionId())??null),this.versionId=this._versionId,this._selections=XP({owner:this,equalsFn:vP(fv(dt.selectionsEqual)),lazy:!0},this.editor.getSelections()??null),this.selections=this._selections,this.isFocused=gn(this,i=>{const n=this.editor.onDidFocusEditorWidget(i),o=this.editor.onDidBlurEditorWidget(i);return{dispose(){n.dispose(),o.dispose()}}},()=>this.editor.hasWidgetFocus()),this.value=pB(this,i=>{var n;return this.versionId.read(i),((n=this.model.read(i))==null?void 0:n.getValue())??""},(i,n)=>{const o=this.model.get();o!==null&&i!==o.getValue()&&o.setValue(i)}),this.valueIsEmpty=ht(this,i=>{var n;return this.versionId.read(i),((n=this.editor.getModel())==null?void 0:n.getValueLength())===0}),this.cursorSelection=$d({owner:this,equalsFn:vP(dt.selectionsEqual)},i=>{var n;return((n=this.selections.read(i))==null?void 0:n[0])??null}),this.onDidType=PQ(this),this.scrollTop=gn(this.editor.onDidScrollChange,()=>this.editor.getScrollTop()),this.scrollLeft=gn(this.editor.onDidScrollChange,()=>this.editor.getScrollLeft()),this.layoutInfo=gn(this.editor.onDidLayoutChange,()=>this.editor.getLayoutInfo()),this.layoutInfoContentLeft=this.layoutInfo.map(i=>i.contentLeft),this.layoutInfoDecorationsLeft=this.layoutInfo.map(i=>i.decorationsLeft),this.contentWidth=gn(this.editor.onDidContentSizeChange,()=>this.editor.getContentWidth()),this._overlayWidgetCounter=0,this._register(this.editor.onBeginUpdate(()=>this._beginUpdate())),this._register(this.editor.onEndUpdate(()=>this._endUpdate())),this._register(this.editor.onDidChangeModel(()=>{this._beginUpdate();try{this._model.set(this.editor.getModel(),this._currentTransaction),this._forceUpdate()}finally{this._endUpdate()}})),this._register(this.editor.onDidType(i=>{this._beginUpdate();try{this._forceUpdate(),this.onDidType.trigger(this._currentTransaction,i)}finally{this._endUpdate()}})),this._register(this.editor.onDidChangeModelContent(i=>{var n;this._beginUpdate();try{this._versionId.set(((n=this.editor.getModel())==null?void 0:n.getVersionId())??null,this._currentTransaction,i),this._forceUpdate()}finally{this._endUpdate()}})),this._register(this.editor.onDidChangeCursorSelection(i=>{this._beginUpdate();try{this._selections.set(this.editor.getSelections(),this._currentTransaction,i),this._forceUpdate()}finally{this._endUpdate()}}))}forceUpdate(e){this._beginUpdate();try{return this._forceUpdate(),e?e(this._currentTransaction):void 0}finally{this._endUpdate()}}_forceUpdate(){var e;this._beginUpdate();try{this._model.set(this.editor.getModel(),this._currentTransaction),this._versionId.set(((e=this.editor.getModel())==null?void 0:e.getVersionId())??null,this._currentTransaction,void 0),this._selections.set(this.editor.getSelections(),this._currentTransaction,void 0)}finally{this._endUpdate()}}getOption(e){return gn(this,t=>this.editor.onDidChangeConfiguration(i=>{i.hasChanged(e)&&t(void 0)}),()=>this.editor.getOption(e))}setDecorations(e){const t=new Ze,i=this.editor.createDecorationsCollection();return t.add(gB({owner:this,debugName:()=>`Apply decorations from ${e.debugName}`},n=>{const o=e.read(n);i.set(o)})),t.add({dispose:()=>{i.clear()}}),t}createOverlayWidget(e){const t="observableOverlayWidget"+this._overlayWidgetCounter++,i={getDomNode:()=>e.domNode,getPosition:()=>e.position.get(),getId:()=>t,allowEditorOverflow:e.allowEditorOverflow,getMinContentWidthInPx:()=>e.minContentWidthInPx.get()};this.editor.addOverlayWidget(i);const n=Gt(o=>{e.position.read(o),e.minContentWidthInPx.read(o),this.editor.layoutOverlayWidget(i)});return gt(()=>{n.dispose(),this.editor.removeOverlayWidget(i)})}};Ib._map=new Map;let G4=Ib;function E4(s,e){return G9e({createEmptyChangeSummary:()=>({deltas:[],didChange:!1}),handleChange:(t,i)=>{if(t.didChange(s)){const n=t.change;n!==void 0&&i.deltas.push(n),i.didChange=!0}return!0}},(t,i)=>{const n=s.read(t);i.didChange&&e(n,i.deltas)})}function p6e(s,e){const t=new Ze,i=E4(s,(n,o)=>{t.clear(),e(n,o,t)});return{dispose(){i.dispose(),t.dispose()}}}var g6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},b6e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},AD,jV;let Ax=(jV=class extends de{static setBreadcrumbsSourceFactory(e){this._breadcrumbsSourceFactory.set(e,void 0)}get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._instantiationService=n,this._modifiedOutlineSource=Zr(this,a=>{const d=this._editors.modifiedModel.read(a),c=AD._breadcrumbsSourceFactory.read(a);return!d||!c?void 0:c(d,this._instantiationService)}),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition(a=>{if(a.reason===1)return;const d=this._diffModel.get();Ss(c=>{for(const h of this._editors.original.getSelections()||[])d==null||d.ensureOriginalLineIsVisible(h.getStartPosition().lineNumber,0,c),d==null||d.ensureOriginalLineIsVisible(h.getEndPosition().lineNumber,0,c)})})),this._register(this._editors.modified.onDidChangeCursorPosition(a=>{if(a.reason===1)return;const d=this._diffModel.get();Ss(c=>{for(const h of this._editors.modified.getSelections()||[])d==null||d.ensureModifiedLineIsVisible(h.getStartPosition().lineNumber,0,c),d==null||d.ensureModifiedLineIsVisible(h.getEndPosition().lineNumber,0,c)})}));const o=this._diffModel.map((a,d)=>{var h;const c=(a==null?void 0:a.unchangedRegions.read(d))??[];return c.length===1&&c[0].modifiedLineNumber===1&&c[0].lineCount===((h=this._editors.modifiedModel.read(d))==null?void 0:h.getLineCount())?[]:c});this.viewZones=Uf(this,(a,d)=>{const c=this._modifiedOutlineSource.read(a);if(!c)return{origViewZones:[],modViewZones:[]};const h=[],u=[],m=this._options.renderSideBySide.read(a),p=this._options.compactMode.read(a),g=o.read(a);for(let b=0;b<g.length;b++){const f=g[b];if(!f.shouldHideControls(a)&&!(p&&(b===0||b===g.length-1)))if(p){{const Z=ht(this,N=>f.getHiddenOriginalRange(N).startLineNumber-1),A=new AS(Z,12);h.push(A),d.add(new ede(this._editors.original,A,f,!m))}{const Z=ht(this,N=>f.getHiddenModifiedRange(N).startLineNumber-1),A=new AS(Z,12);u.push(A),d.add(new ede(this._editors.modified,A,f))}}else{{const Z=ht(this,N=>f.getHiddenOriginalRange(N).startLineNumber-1),A=new AS(Z,24);h.push(A),d.add(new tde(this._editors.original,A,f,f.originalUnchangedRange,!m,c,N=>this._diffModel.get().ensureModifiedLineIsVisible(N,2,void 0),this._options))}{const Z=ht(this,N=>f.getHiddenModifiedRange(N).startLineNumber-1),A=new AS(Z,24);u.push(A),d.add(new tde(this._editors.modified,A,f,f.modifiedUnchangedRange,!1,c,N=>this._diffModel.get().ensureModifiedLineIsVisible(N,2,void 0),this._options))}}}return{origViewZones:h,modViewZones:u}});const l={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},r={description:"Fold Unchanged",glyphMarginHoverMessage:new tr(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(U("foldUnchanged","Fold Unchanged Region")),glyphMarginClassName:"fold-unchanged "+Qt.asClassName(ke.fold),zIndex:10001};this._register(gx(this._editors.original,ht(this,a=>{const d=o.read(a),c=d.map(h=>({range:h.originalUnchangedRange.toInclusiveRange(),options:l}));for(const h of d)h.shouldHideControls(a)&&c.push({range:v.fromPositions(new oe(h.originalLineNumber,1)),options:r});return c}))),this._register(gx(this._editors.modified,ht(this,a=>{const d=o.read(a),c=d.map(h=>({range:h.modifiedUnchangedRange.toInclusiveRange(),options:l}));for(const h of d)h.shouldHideControls(a)&&c.push({range:jt.ofLength(h.modifiedLineNumber,1).toInclusiveRange(),options:r});return c}))),this._register(Gt(a=>{const d=o.read(a);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(d.map(c=>c.getHiddenOriginalRange(a).toInclusiveRange()).filter(fp)),this._editors.modified.setHiddenAreas(d.map(c=>c.getHiddenModifiedRange(a).toInclusiveRange()).filter(fp))}finally{this._isUpdatingHiddenAreas=!1}})),this._register(this._editors.modified.onMouseUp(a=>{var d;if(!a.event.rightButton&&a.target.position&&((d=a.target.element)!=null&&d.className.includes("fold-unchanged"))){const c=a.target.position.lineNumber,h=this._diffModel.get();if(!h)return;const u=h.unchangedRegions.get().find(m=>m.modifiedUnchangedRange.includes(c));if(!u)return;u.collapseAll(void 0),a.event.stopPropagation(),a.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(a=>{var d;if(!a.event.rightButton&&a.target.position&&((d=a.target.element)!=null&&d.className.includes("fold-unchanged"))){const c=a.target.position.lineNumber,h=this._diffModel.get();if(!h)return;const u=h.unchangedRegions.get().find(m=>m.originalUnchangedRange.includes(c));if(!u)return;u.collapseAll(void 0),a.event.stopPropagation(),a.event.preventDefault()}}))}},AD=jV,jV._breadcrumbsSourceFactory=oi(AD,()=>({dispose(){},getBreadcrumbItems(e,t){return[]}})),jV);Ax=AD=g6e([b6e(3,bt)],Ax);class ede extends Gte{constructor(e,t,i,n=!1){const o=gi("div.diff-hidden-lines-widget");super(e,t,o.root),this._unchangedRegion=i,this._hide=n,this._nodes=gi("div.diff-hidden-lines-compact",[gi("div.line-left",[]),gi("div.text@text",[]),gi("div.line-right",[])]),o.root.appendChild(this._nodes.root),this._hide&&this._nodes.root.replaceChildren(),this._register(Gt(l=>{if(!this._hide){const r=this._unchangedRegion.getHiddenModifiedRange(l).length,a=U("hiddenLines","{0} hidden lines",r);this._nodes.text.innerText=a}}))}}class tde extends Gte{constructor(e,t,i,n,o,l,r,a){const d=gi("div.diff-hidden-lines-widget");super(e,t,d.root),this._editor=e,this._unchangedRegion=i,this._unchangedRegionRange=n,this._hide=o,this._modifiedOutlineSource=l,this._revealModifiedHiddenLine=r,this._options=a,this._nodes=gi("div.diff-hidden-lines",[gi("div.top@top",{title:U("diff.hiddenLines.top","Click or drag to show more above")}),gi("div.center@content",{style:{display:"flex"}},[gi("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[Ge("a",{title:U("showUnchangedRegion","Show Unchanged Region"),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...DU("$(unfold)"))]),gi("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),gi("div.bottom@bottom",{title:U("diff.bottom","Click or drag to show more below"),role:"button"})]),d.root.appendChild(this._nodes.root),this._hide?Zl(this._nodes.first):this._register(V0(this._nodes.first,{width:md(this._editor).layoutInfoContentLeft})),this._register(Gt(h=>{const u=this._unchangedRegion.visibleLineCountTop.read(h)+this._unchangedRegion.visibleLineCountBottom.read(h)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!u),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(h)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(h)>0),this._nodes.top.classList.toggle("canMoveBottom",!u);const m=this._unchangedRegion.isDragged.read(h),p=this._editor.getDomNode();p&&(p.classList.toggle("draggingUnchangedRegion",!!m),m==="top"?(p.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(h)>0),p.classList.toggle("canMoveBottom",!u)):m==="bottom"?(p.classList.toggle("canMoveTop",!u),p.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(h)>0)):(p.classList.toggle("canMoveTop",!1),p.classList.toggle("canMoveBottom",!1)))}));const c=this._editor;this._register(ge(this._nodes.top,"mousedown",h=>{if(h.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),h.preventDefault();const u=h.clientY;let m=!1;const p=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const g=Wt(this._nodes.top),b=ge(g,"mousemove",Z=>{const N=Z.clientY-u;m=m||Math.abs(N)>2;const W=Math.round(N/c.getOption(67)),Q=Math.max(0,Math.min(p+W,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(Q,void 0)}),f=ge(g,"mouseup",Z=>{m||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(void 0,void 0),b.dispose(),f.dispose()})})),this._register(ge(this._nodes.bottom,"mousedown",h=>{if(h.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),h.preventDefault();const u=h.clientY;let m=!1;const p=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const g=Wt(this._nodes.bottom),b=ge(g,"mousemove",Z=>{const N=Z.clientY-u;m=m||Math.abs(N)>2;const W=Math.round(N/c.getOption(67)),Q=Math.max(0,Math.min(p-W,this._unchangedRegion.getMaxVisibleLineCountBottom())),R=this._unchangedRegionRange.endLineNumberExclusive>c.getModel().getLineCount()?c.getContentHeight():c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(Q,void 0);const M=this._unchangedRegionRange.endLineNumberExclusive>c.getModel().getLineCount()?c.getContentHeight():c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);c.setScrollTop(c.getScrollTop()+(M-R))}),f=ge(g,"mouseup",Z=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!m){const A=c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const N=c.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);c.setScrollTop(c.getScrollTop()+(N-A))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),b.dispose(),f.dispose()})})),this._register(Gt(h=>{const u=[];if(!this._hide){const m=i.getHiddenModifiedRange(h).length,p=U("hiddenLines","{0} hidden lines",m),g=Ge("span",{title:U("diff.hiddenLines.expandAll","Double click to unfold")},p);g.addEventListener("dblclick",Z=>{Z.button===0&&(Z.preventDefault(),this._unchangedRegion.showAll(void 0))}),u.push(g);const b=this._unchangedRegion.getHiddenModifiedRange(h),f=this._modifiedOutlineSource.getBreadcrumbItems(b,h);if(f.length>0){u.push(Ge("span",void 0," | "));for(let Z=0;Z<f.length;Z++){const A=f[Z],N=LE.toIcon(A.kind),W=gi("div.breadcrumb-item",{style:{display:"flex",alignItems:"center"}},[VA(N)," ",A.name,...Z===f.length-1?[]:[VA(ke.chevronRight)]]).root;u.push(W),W.onclick=()=>{this._revealModifiedHiddenLine(A.startLineNumber)}}}}Zl(this._nodes.others,...u)}))}}var U6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},f6e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},fu,CU;let $M=(CU=class extends de{constructor(e,t,i,n,o,l,r){super(),this._editors=e,this._rootElement=t,this._diffModel=i,this._rootWidth=n,this._rootHeight=o,this._modifiedEditorLayoutInfo=l,this._themeService=r,this.width=fu.ENTIRE_DIFF_OVERVIEW_WIDTH;const a=gn(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),d=ht(u=>{const m=a.read(u),p=m.getColor(DXe)||(m.getColor(kXe)||aP).transparent(2),g=m.getColor(GXe)||(m.getColor(IXe)||dP).transparent(2);return{insertColor:p,removeColor:g}}),c=an(document.createElement("div"));c.setClassName("diffViewport"),c.setPosition("absolute");const h=gi("div.diffOverview",{style:{position:"absolute",top:"0px",width:fu.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;this._register(ZS(h,c.domNode)),this._register(Ms(h,De.POINTER_DOWN,u=>{this._editors.modified.delegateVerticalScrollbarPointerDown(u)})),this._register(ge(h,De.MOUSE_WHEEL,u=>{this._editors.modified.delegateScrollFromMouseWheelEvent(u)},{passive:!1})),this._register(ZS(this._rootElement,h)),this._register(Ga((u,m)=>{const p=this._diffModel.read(u),g=this._editors.original.createOverviewRuler("original diffOverviewRuler");g&&(m.add(g),m.add(ZS(h,g.getDomNode())));const b=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(b&&(m.add(b),m.add(ZS(h,b.getDomNode()))),!g||!b)return;const f=Tl("viewZoneChanged",this._editors.original.onDidChangeViewZones),Z=Tl("viewZoneChanged",this._editors.modified.onDidChangeViewZones),A=Tl("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),N=Tl("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);m.add(Gt(W=>{var G;f.read(W),Z.read(W),A.read(W),N.read(W);const Q=d.read(W),R=(G=p==null?void 0:p.diff.read(W))==null?void 0:G.mappings;function M(P,j,X){const ie=X._getViewModel();return ie?P.filter(se=>se.length>0).map(se=>{const pe=ie.coordinatesConverter.convertModelPositionToViewPosition(new oe(se.startLineNumber,1)),Ue=ie.coordinatesConverter.convertModelPositionToViewPosition(new oe(se.endLineNumberExclusive,1)),Qe=Ue.lineNumber-pe.lineNumber;return new yfe(pe.lineNumber,Ue.lineNumber,Qe,j.toString())}):[]}const w=M((R||[]).map(P=>P.lineRangeMapping.original),Q.removeColor,this._editors.original),Y=M((R||[]).map(P=>P.lineRangeMapping.modified),Q.insertColor,this._editors.modified);g==null||g.setZones(w),b==null||b.setZones(Y)})),m.add(Gt(W=>{const Q=this._rootHeight.read(W),R=this._rootWidth.read(W),M=this._modifiedEditorLayoutInfo.read(W);if(M){const w=fu.ENTIRE_DIFF_OVERVIEW_WIDTH-2*fu.ONE_OVERVIEW_WIDTH;g.setLayout({top:0,height:Q,right:w+fu.ONE_OVERVIEW_WIDTH,width:fu.ONE_OVERVIEW_WIDTH}),b.setLayout({top:0,height:Q,right:0,width:fu.ONE_OVERVIEW_WIDTH});const Y=this._editors.modifiedScrollTop.read(W),G=this._editors.modifiedScrollHeight.read(W),P=this._editors.modified.getOption(104),j=new aV(P.verticalHasArrows?P.arrowSize:0,P.verticalScrollbarSize,0,M.height,G,Y);c.setTop(j.getSliderPosition()),c.setHeight(j.getSliderSize())}else c.setTop(0),c.setHeight(0);h.style.height=Q+"px",h.style.left=R-fu.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",c.setWidth(fu.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}},fu=CU,CU.ONE_OVERVIEW_WIDTH=15,CU.ENTIRE_DIFF_OVERVIEW_WIDTH=CU.ONE_OVERVIEW_WIDTH*2,CU);$M=fu=U6e([f6e(6,Do)],$M);const l_=[];class F6e extends de{constructor(e,t,i,n){super(),this._editors=e,this._diffModel=t,this._options=i,this._widget=n,this._selectedDiffs=ht(this,o=>{const l=this._diffModel.read(o),r=l==null?void 0:l.diff.read(o);if(!r)return l_;const a=this._editors.modifiedSelections.read(o);if(a.every(u=>u.isEmpty()))return l_;const d=new vc(a.map(u=>jt.fromRangeInclusive(u))),h=r.mappings.filter(u=>u.lineRangeMapping.innerChanges&&d.intersects(u.lineRangeMapping.modified)).map(u=>({mapping:u,rangeMappings:u.lineRangeMapping.innerChanges.filter(m=>a.some(p=>v.areIntersecting(m.modifiedRange,p)))}));return h.length===0||h.every(u=>u.rangeMappings.length===0)?l_:h}),this._register(Ga((o,l)=>{if(!this._options.shouldRenderOldRevertArrows.read(o))return;const r=this._diffModel.read(o),a=r==null?void 0:r.diff.read(o);if(!r||!a||r.movedTextToCompare.read(o))return;const d=[],c=this._selectedDiffs.read(o),h=new Set(c.map(u=>u.mapping));if(c.length>0){const u=this._editors.modifiedSelections.read(o),m=l.add(new Nx(u[u.length-1].positionLineNumber,this._widget,c.flatMap(p=>p.rangeMappings),!0));this._editors.modified.addGlyphMarginWidget(m),d.push(m)}for(const u of a.mappings)if(!h.has(u)&&!u.lineRangeMapping.modified.isEmpty&&u.lineRangeMapping.innerChanges){const m=l.add(new Nx(u.lineRangeMapping.modified.startLineNumber,this._widget,u.lineRangeMapping,!1));this._editors.modified.addGlyphMarginWidget(m),d.push(m)}l.add(gt(()=>{for(const u of d)this._editors.modified.removeGlyphMarginWidget(u)}))}))}}const _X=class _X extends de{getId(){return this._id}constructor(e,t,i,n){super(),this._lineNumber=e,this._widget=t,this._diffs=i,this._revertSelection=n,this._id=`revertButton${_X.counter++}`,this._domNode=gi("div.revertButton",{title:this._revertSelection?U("revertSelectedChanges","Revert Selected Changes"):U("revertChange","Revert Change")},[VA(ke.arrowRight)]).root,this._register(ge(this._domNode,De.MOUSE_DOWN,o=>{o.button!==2&&(o.stopPropagation(),o.preventDefault())})),this._register(ge(this._domNode,De.MOUSE_UP,o=>{o.stopPropagation(),o.preventDefault()})),this._register(ge(this._domNode,De.CLICK,o=>{this._diffs instanceof Nr?this._widget.revert(this._diffs):this._widget.revertRangeMappings(this._diffs),o.stopPropagation(),o.preventDefault()}))}getDomNode(){return this._domNode}getPosition(){return{lane:Kh.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}};_X.counter=0;let Nx=_X;function Z6e(s,e,t){return v9e({debugName:()=>`Configuration Key "${s}"`},i=>t.onDidChangeConfiguration(n=>{n.affectsConfiguration(s)&&i(n)}),()=>t.getValue(s)??e)}function Ru(s,e,t){const i=s.bindTo(e);return gB({debugName:()=>`Set Context Key "${s.key}"`},n=>{i.set(t(n))})}var A6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ide=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let v4=class extends de{get onDidContentSizeChange(){return this._onDidContentSizeChange.event}constructor(e,t,i,n,o,l,r){super(),this.originalEditorElement=e,this.modifiedEditorElement=t,this._options=i,this._argCodeEditorWidgetOptions=n,this._createInnerEditor=o,this._instantiationService=l,this._keybindingService=r,this.original=this._register(this._createLeftHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(this._options.editorOptions.get(),this._argCodeEditorWidgetOptions.modifiedEditor||{})),this._onDidContentSizeChange=this._register(new re),this.modifiedScrollTop=gn(this,this.modified.onDidScrollChange,()=>this.modified.getScrollTop()),this.modifiedScrollHeight=gn(this,this.modified.onDidScrollChange,()=>this.modified.getScrollHeight()),this.modifiedObs=md(this.modified),this.originalObs=md(this.original),this.modifiedModel=this.modifiedObs.model,this.modifiedSelections=gn(this,this.modified.onDidChangeCursorSelection,()=>this.modified.getSelections()??[]),this.modifiedCursor=$d({owner:this,equalsFn:oe.equals},a=>{var d;return((d=this.modifiedSelections.read(a)[0])==null?void 0:d.getPosition())??new oe(1,1)}),this.originalCursor=gn(this,this.original.onDidChangeCursorPosition,()=>this.original.getPosition()??new oe(1,1)),this._argCodeEditorWidgetOptions=null,this._register(bB({createEmptyChangeSummary:()=>({}),handleChange:(a,d)=>(a.didChange(i.editorOptions)&&Object.assign(d,a.change.changedOptions),!0)},(a,d)=>{i.editorOptions.read(a),this._options.renderSideBySide.read(a),this.modified.updateOptions(this._adjustOptionsForRightHandSide(a,d)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(a,d))}))}_createLeftHandSideEditor(e,t){const i=this._adjustOptionsForLeftHandSide(void 0,e),n=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,i,t);return n.setContextValue("isInDiffLeftEditor",!0),n}_createRightHandSideEditor(e,t){const i=this._adjustOptionsForRightHandSide(void 0,e),n=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,i,t);return n.setContextValue("isInDiffRightEditor",!0),n}_constructInnerEditor(e,t,i,n){const o=this._createInnerEditor(e,t,i,n);return this._register(o.onDidContentSizeChange(l=>{const r=this.original.getContentWidth()+this.modified.getContentWidth()+$M.ENTIRE_DIFF_OVERVIEW_WIDTH,a=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:a,contentWidth:r,contentHeightChanged:l.contentHeightChanged,contentWidthChanged:l.contentWidthChanged})})),o}_adjustOptionsForLeftHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return this._options.renderSideBySide.get()?(i.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},i.wordWrapOverride1=this._options.diffWordWrap.get()):(i.wordWrapOverride1="off",i.wordWrapOverride2="off",i.stickyScroll={enabled:!1},i.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),i.glyphMargin=this._options.renderSideBySide.get(),t.originalAriaLabel&&(i.ariaLabel=t.originalAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.readOnly=!this._options.originalEditable.get(),i.dropIntoEditor={enabled:!i.readOnly},i.extraEditorClassName="original-in-monaco-diff-editor",i}_adjustOptionsForRightHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return t.modifiedAriaLabel&&(i.ariaLabel=t.modifiedAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.wordWrapOverride1=this._options.diffWordWrap.get(),i.revealHorizontalRightPadding=om.revealHorizontalRightPadding.defaultValue+$M.ENTIRE_DIFF_OVERVIEW_WIDTH,i.scrollbar.verticalHasArrows=!1,i.extraEditorClassName="modified-in-monaco-diff-editor",i}_adjustOptionsForSubEditor(e){const t={...e,dimension:{height:0,width:0}};return t.inDiffEditor=!0,t.automaticLayout=!1,t.scrollbar={...t.scrollbar||{}},t.folding=!1,t.codeLens=this._options.diffCodeLens.get(),t.fixedOverflowWidgets=!0,t.minimap={...t.minimap||{}},t.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?t.stickyScroll={enabled:!1}:t.stickyScroll=this._options.editorOptions.get().stickyScroll,t}_updateAriaLabel(e){var i;e||(e="");const t=U("diff-aria-navigation-tip"," use {0} to open the accessibility help.",(i=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))==null?void 0:i.getAriaLabel());return this._options.accessibilityVerbose.get()?e+t:e?e.replaceAll(t,""):""}};v4=A6e([ide(5,bt),ide(6,dn)],v4);const OX=class OX extends de{constructor(){super(...arguments),this._id=++OX.idCounter,this._onDidDispose=this._register(new re),this.onDidDispose=this._onDidDispose.event}getId(){return this.getEditorType()+":v2:"+this._id}getVisibleColumnFromPosition(e){return this._targetEditor.getVisibleColumnFromPosition(e)}getPosition(){return this._targetEditor.getPosition()}setPosition(e,t="api"){this._targetEditor.setPosition(e,t)}revealLine(e,t=0){this._targetEditor.revealLine(e,t)}revealLineInCenter(e,t=0){this._targetEditor.revealLineInCenter(e,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealLineInCenterIfOutsideViewport(e,t)}revealLineNearTop(e,t=0){this._targetEditor.revealLineNearTop(e,t)}revealPosition(e,t=0){this._targetEditor.revealPosition(e,t)}revealPositionInCenter(e,t=0){this._targetEditor.revealPositionInCenter(e,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealPositionInCenterIfOutsideViewport(e,t)}revealPositionNearTop(e,t=0){this._targetEditor.revealPositionNearTop(e,t)}getSelection(){return this._targetEditor.getSelection()}getSelections(){return this._targetEditor.getSelections()}setSelection(e,t="api"){this._targetEditor.setSelection(e,t)}setSelections(e,t="api"){this._targetEditor.setSelections(e,t)}revealLines(e,t,i=0){this._targetEditor.revealLines(e,t,i)}revealLinesInCenter(e,t,i=0){this._targetEditor.revealLinesInCenter(e,t,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._targetEditor.revealLinesInCenterIfOutsideViewport(e,t,i)}revealLinesNearTop(e,t,i=0){this._targetEditor.revealLinesNearTop(e,t,i)}revealRange(e,t=0,i=!1,n=!0){this._targetEditor.revealRange(e,t,i,n)}revealRangeInCenter(e,t=0){this._targetEditor.revealRangeInCenter(e,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealRangeInCenterIfOutsideViewport(e,t)}revealRangeNearTop(e,t=0){this._targetEditor.revealRangeNearTop(e,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._targetEditor.revealRangeNearTopIfOutsideViewport(e,t)}revealRangeAtTop(e,t=0){this._targetEditor.revealRangeAtTop(e,t)}getSupportedActions(){return this._targetEditor.getSupportedActions()}focus(){this._targetEditor.focus()}trigger(e,t,i){this._targetEditor.trigger(e,t,i)}createDecorationsCollection(e){return this._targetEditor.createDecorationsCollection(e)}changeDecorations(e){return this._targetEditor.changeDecorations(e)}};OX.idCounter=0;let x4=OX;var N6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},R6e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let J4=class{get editorOptions(){return this._options}constructor(e,t){this._accessibilityService=t,this._diffEditorWidth=oi(this,0),this._screenReaderMode=gn(this,this._accessibilityService.onDidChangeScreenReaderOptimized,()=>this._accessibilityService.isScreenReaderOptimized()),this.couldShowInlineViewBecauseOfSize=ht(this,n=>this._options.read(n).renderSideBySide&&this._diffEditorWidth.read(n)<=this._options.read(n).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=ht(this,n=>this._options.read(n).renderOverviewRuler),this.renderSideBySide=ht(this,n=>this.compactMode.read(n)&&this.shouldRenderInlineViewInSmartMode.read(n)?!1:this._options.read(n).renderSideBySide&&!(this._options.read(n).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(n)&&!this._screenReaderMode.read(n))),this.readOnly=ht(this,n=>this._options.read(n).readOnly),this.shouldRenderOldRevertArrows=ht(this,n=>!(!this._options.read(n).renderMarginRevertIcon||!this.renderSideBySide.read(n)||this.readOnly.read(n)||this.shouldRenderGutterMenu.read(n))),this.shouldRenderGutterMenu=ht(this,n=>this._options.read(n).renderGutterMenu),this.renderIndicators=ht(this,n=>this._options.read(n).renderIndicators),this.enableSplitViewResizing=ht(this,n=>this._options.read(n).enableSplitViewResizing),this.splitViewDefaultRatio=ht(this,n=>this._options.read(n).splitViewDefaultRatio),this.ignoreTrimWhitespace=ht(this,n=>this._options.read(n).ignoreTrimWhitespace),this.maxComputationTimeMs=ht(this,n=>this._options.read(n).maxComputationTime),this.showMoves=ht(this,n=>this._options.read(n).experimental.showMoves&&this.renderSideBySide.read(n)),this.isInEmbeddedEditor=ht(this,n=>this._options.read(n).isInEmbeddedEditor),this.diffWordWrap=ht(this,n=>this._options.read(n).diffWordWrap),this.originalEditable=ht(this,n=>this._options.read(n).originalEditable),this.diffCodeLens=ht(this,n=>this._options.read(n).diffCodeLens),this.accessibilityVerbose=ht(this,n=>this._options.read(n).accessibilityVerbose),this.diffAlgorithm=ht(this,n=>this._options.read(n).diffAlgorithm),this.showEmptyDecorations=ht(this,n=>this._options.read(n).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=ht(this,n=>this._options.read(n).onlyShowAccessibleDiffViewer),this.compactMode=ht(this,n=>this._options.read(n).compactMode),this.trueInlineDiffRenderingEnabled=ht(this,n=>this._options.read(n).experimental.useTrueInlineView),this.useTrueInlineDiffRendering=ht(this,n=>!this.renderSideBySide.read(n)&&this.trueInlineDiffRenderingEnabled.read(n)),this.hideUnchangedRegions=ht(this,n=>this._options.read(n).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=ht(this,n=>this._options.read(n).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=ht(this,n=>this._options.read(n).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsMinimumLineCount=ht(this,n=>this._options.read(n).hideUnchangedRegions.minimumLineCount),this._model=oi(this,void 0),this.shouldRenderInlineViewInSmartMode=this._model.map(this,n=>Y9e(this,o=>{const l=n==null?void 0:n.diff.read(o);return l?S6e(l,this.trueInlineDiffRenderingEnabled.read(o)):void 0})).flatten().map(this,n=>!!n),this.inlineViewHideOriginalLineNumbers=this.compactMode;const i={...e,...nde(e,Rl)};this._options=oi(this,i)}updateOptions(e){const t=nde(e,this._options.get()),i={...this._options.get(),...e,...t};this._options.set(i,void 0,{changedOptions:e})}setWidth(e){this._diffEditorWidth.set(e,void 0)}setModel(e){this._model.set(e,void 0)}};J4=N6e([R6e(1,Qd)],J4);function S6e(s,e){return s.mappings.every(t=>W6e(t.lineRangeMapping)||V6e(t.lineRangeMapping)||e&&Ote(t.lineRangeMapping))}function W6e(s){return s.original.length===0}function V6e(s){return s.modified.length===0}function nde(s,e){var t,i,n,o,l,r,a,d;return{enableSplitViewResizing:pt(s.enableSplitViewResizing,e.enableSplitViewResizing),splitViewDefaultRatio:wIe(s.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:pt(s.renderSideBySide,e.renderSideBySide),renderMarginRevertIcon:pt(s.renderMarginRevertIcon,e.renderMarginRevertIcon),maxComputationTime:uF(s.maxComputationTime,e.maxComputationTime,0,1073741824),maxFileSize:uF(s.maxFileSize,e.maxFileSize,0,1073741824),ignoreTrimWhitespace:pt(s.ignoreTrimWhitespace,e.ignoreTrimWhitespace),renderIndicators:pt(s.renderIndicators,e.renderIndicators),originalEditable:pt(s.originalEditable,e.originalEditable),diffCodeLens:pt(s.diffCodeLens,e.diffCodeLens),renderOverviewRuler:pt(s.renderOverviewRuler,e.renderOverviewRuler),diffWordWrap:Is(s.diffWordWrap,e.diffWordWrap,["off","on","inherit"]),diffAlgorithm:Is(s.diffAlgorithm,e.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:pt(s.accessibilityVerbose,e.accessibilityVerbose),experimental:{showMoves:pt((t=s.experimental)==null?void 0:t.showMoves,e.experimental.showMoves),showEmptyDecorations:pt((i=s.experimental)==null?void 0:i.showEmptyDecorations,e.experimental.showEmptyDecorations),useTrueInlineView:pt((n=s.experimental)==null?void 0:n.useTrueInlineView,e.experimental.useTrueInlineView)},hideUnchangedRegions:{enabled:pt(((o=s.hideUnchangedRegions)==null?void 0:o.enabled)??((l=s.experimental)==null?void 0:l.collapseUnchangedRegions),e.hideUnchangedRegions.enabled),contextLineCount:uF((r=s.hideUnchangedRegions)==null?void 0:r.contextLineCount,e.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:uF((a=s.hideUnchangedRegions)==null?void 0:a.minimumLineCount,e.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:uF((d=s.hideUnchangedRegions)==null?void 0:d.revealLineCount,e.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:pt(s.isInEmbeddedEditor,e.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:pt(s.onlyShowAccessibleDiffViewer,e.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:uF(s.renderSideBySideInlineBreakpoint,e.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:pt(s.useInlineViewWhenSpaceIsLimited,e.useInlineViewWhenSpaceIsLimited),renderGutterMenu:pt(s.renderGutterMenu,e.renderGutterMenu),compactMode:pt(s.compactMode,e.compactMode)}}var Q6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},O1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let Q0=class extends x4{get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(e,t,i,n,o,l,r,a){super(),this._domElement=e,this._parentContextKeyService=n,this._parentInstantiationService=o,this._accessibilitySignalService=r,this._editorProgressService=a,this.elements=gi("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[gi("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),gi("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),gi("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModelSrc=this._register(QM(this,void 0)),this._diffModel=ht(this,N=>{var W;return(W=this._diffModelSrc.read(N))==null?void 0:W.object}),this.onDidChangeModel=ve.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new t1([wt,this._contextKeyService]))),this._boundarySashes=oi(this,void 0),this._accessibleDiffViewerShouldBeVisible=oi(this,!1),this._accessibleDiffViewerVisible=ht(this,N=>this._options.onlyShowAccessibleDiffViewer.read(N)?!0:this._accessibleDiffViewerShouldBeVisible.read(N)),this._movedBlocksLinesPart=oi(this,void 0),this._layoutInfo=ht(this,N=>{var pe,Ue;const W=this._rootSizeObserver.width.read(N),Q=this._rootSizeObserver.height.read(N);this._rootSizeObserver.automaticLayout?this.elements.root.style.height="100%":this.elements.root.style.height=Q+"px";const R=this._sash.read(N),M=this._gutter.read(N),w=(M==null?void 0:M.width.read(N))??0,Y=((pe=this._overviewRulerPart.read(N))==null?void 0:pe.width)??0;let G,P,j,X,ie;if(!!R){const Qe=R.sashLeft.read(N),He=((Ue=this._movedBlocksLinesPart.read(N))==null?void 0:Ue.width.read(N))??0;G=0,P=Qe-w-He,ie=Qe-w,j=Qe,X=W-j-Y}else{ie=0;const Qe=this._options.inlineViewHideOriginalLineNumbers.read(N);G=w,Qe?P=0:P=Math.max(5,this._editors.originalObs.layoutInfoDecorationsLeft.read(N)),j=w+P,X=W-j-Y}return this.elements.original.style.left=G+"px",this.elements.original.style.width=P+"px",this._editors.original.layout({width:P,height:Q},!0),M==null||M.layout(ie),this.elements.modified.style.left=j+"px",this.elements.modified.style.width=X+"px",this._editors.modified.layout({width:X,height:Q},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((N,W)=>N==null?void 0:N.diff.read(W)),this.onDidUpdateDiff=ve.fromObservableLight(this._diffValue),l.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register(gt(()=>this.elements.root.remove())),this._rootSizeObserver=this._register(new Bfe(this.elements.root,t.dimension)),this._rootSizeObserver.setAutomaticLayout(t.automaticLayout??!1),this._options=this._instantiationService.createInstance(J4,t),this._register(Gt(N=>{this._options.setWidth(this._rootSizeObserver.width.read(N))})),this._contextKeyService.createKey(H.isEmbeddedDiffEditor.key,!1),this._register(Ru(H.isEmbeddedDiffEditor,this._contextKeyService,N=>this._options.isInEmbeddedEditor.read(N))),this._register(Ru(H.comparingMovedCode,this._contextKeyService,N=>{var W;return!!((W=this._diffModel.read(N))!=null&&W.movedTextToCompare.read(N))})),this._register(Ru(H.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,N=>this._options.couldShowInlineViewBecauseOfSize.read(N))),this._register(Ru(H.diffEditorInlineMode,this._contextKeyService,N=>!this._options.renderSideBySide.read(N))),this._register(Ru(H.hasChanges,this._contextKeyService,N=>{var W,Q;return(((Q=(W=this._diffModel.read(N))==null?void 0:W.diff.read(N))==null?void 0:Q.mappings.length)??0)>0})),this._editors=this._register(this._instantiationService.createInstance(v4,this.elements.original,this.elements.modified,this._options,i,(N,W,Q,R)=>this._createInnerEditor(N,W,Q,R))),this._register(Ru(H.diffEditorOriginalWritable,this._contextKeyService,N=>this._options.originalEditable.read(N))),this._register(Ru(H.diffEditorModifiedWritable,this._contextKeyService,N=>!this._options.readOnly.read(N))),this._register(Ru(H.diffEditorOriginalUri,this._contextKeyService,N=>{var W;return((W=this._diffModel.read(N))==null?void 0:W.model.original.uri.toString())??""})),this._register(Ru(H.diffEditorModifiedUri,this._contextKeyService,N=>{var W;return((W=this._diffModel.read(N))==null?void 0:W.model.modified.uri.toString())??""})),this._overviewRulerPart=Zr(this,N=>this._options.renderOverviewRuler.read(N)?this._instantiationService.createInstance(dd($M,N),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(W=>W.modifiedEditor)):void 0).recomputeInitiallyAndOnChange(this._store);const d={height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((N,W)=>{var Q;return N-(((Q=this._overviewRulerPart.read(W))==null?void 0:Q.width)??0)})};this._sashLayout=new c6e(this._options,d),this._sash=Zr(this,N=>{const W=this._options.renderSideBySide.read(N);return this.elements.root.classList.toggle("side-by-side",W),W?new Gfe(this.elements.root,d,this._options.enableSplitViewResizing,this._boundarySashes,this._sashLayout.sashLeft,()=>this._sashLayout.resetSash()):void 0}).recomputeInitiallyAndOnChange(this._store);const c=Zr(this,N=>this._instantiationService.createInstance(dd(Ax,N),this._editors,this._diffModel,this._options)).recomputeInitiallyAndOnChange(this._store);Zr(this,N=>this._instantiationService.createInstance(dd(d6e,N),this._editors,this._diffModel,this._options,this)).recomputeInitiallyAndOnChange(this._store);const h=new Set,u=new Set;let m=!1;const p=Zr(this,N=>this._instantiationService.createInstance(dd(k4,N),Wt(this._domElement),this._editors,this._diffModel,this._options,this,()=>m||c.get().isUpdatingHiddenAreas,h,u)).recomputeInitiallyAndOnChange(this._store),g=ht(this,N=>{const W=p.read(N).viewZones.read(N).orig,Q=c.read(N).viewZones.read(N).origViewZones;return W.concat(Q)}),b=ht(this,N=>{const W=p.read(N).viewZones.read(N).mod,Q=c.read(N).viewZones.read(N).modViewZones;return W.concat(Q)});this._register(bx(this._editors.original,g,N=>{m=N},h));let f;this._register(bx(this._editors.modified,b,N=>{m=N,m?f=em.capture(this._editors.modified):(f==null||f.restore(this._editors.modified),f=void 0)},u)),this._accessibleDiffViewer=Zr(this,N=>this._instantiationService.createInstance(dd(yZ,N),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(W,Q)=>this._accessibleDiffViewerShouldBeVisible.set(W,Q),this._options.onlyShowAccessibleDiffViewer.map(W=>!W),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((W,Q)=>{var R;return(R=W==null?void 0:W.diff.read(Q))==null?void 0:R.mappings.map(M=>M.lineRangeMapping)}),new K8e(this._editors))).recomputeInitiallyAndOnChange(this._store);const Z=this._accessibleDiffViewerVisible.map(N=>N?"hidden":"visible");this._register(V0(this.elements.modified,{visibility:Z})),this._register(V0(this.elements.original,{visibility:Z})),this._createDiffEditorContributions(),l.addDiffEditor(this),this._gutter=Zr(this,N=>this._options.shouldRenderGutterMenu.read(N)?this._instantiationService.createInstance(dd(I4,N),this.elements.root,this._diffModel,this._editors,this._options,this._sashLayout,this._boundarySashes):void 0),this._register(KQ(this._layoutInfo)),Zr(this,N=>new(dd(LW,N))(this.elements.root,this._diffModel,this._layoutInfo.map(W=>W.originalEditor),this._layoutInfo.map(W=>W.modifiedEditor),this._editors)).recomputeInitiallyAndOnChange(this._store,N=>{this._movedBlocksLinesPart.set(N,void 0)}),this._register(ve.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,N=>this._handleCursorPositionChange(N,!0))),this._register(ve.runAndSubscribe(this._editors.original.onDidChangeCursorPosition,N=>this._handleCursorPositionChange(N,!1)));const A=this._diffModel.map(this,(N,W)=>{if(N)return N.diff.read(W)===void 0&&!N.isDiffUpToDate.read(W)});this._register(Ga((N,W)=>{if(A.read(N)===!0){const Q=this._editorProgressService.show(!0,1e3);W.add(gt(()=>Q.done()))}})),this._register(Ga((N,W)=>{W.add(new(dd(F6e,N))(this._editors,this._diffModel,this._options,this))})),this._register(Ga((N,W)=>{const Q=this._diffModel.read(N);if(Q)for(const R of[Q.model.original,Q.model.modified])W.add(R.onWillDispose(M=>{vt(new en("TextModel got disposed before DiffEditorWidget model got reset")),this.setModel(null)}))})),this._register(Gt(N=>{this._options.setModel(this._diffModel.read(N))}))}_createInnerEditor(e,t,i,n){return e.createInstance(HM,t,i,n)}_createDiffEditorContributions(){const e=zZ.getDiffEditorContributions();for(const t of e)try{this._register(this._instantiationService.createInstance(t.ctor,this))}catch(i){vt(i)}}get _targetEditor(){return this._editors.modified}getEditorType(){return RB.IDiffEditor}layout(e){this._rootSizeObserver.observe(e)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var i;const e=this._editors.original.saveViewState(),t=this._editors.modified.saveViewState();return{original:e,modified:t,modelState:(i=this._diffModel.get())==null?void 0:i.serializeState()}}restoreViewState(e){var t;if(e&&e.original&&e.modified){const i=e;this._editors.original.restoreViewState(i.original),this._editors.modified.restoreViewState(i.modified),i.modelState&&((t=this._diffModel.get())==null||t.restoreSerializedState(i.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(e){return this._instantiationService.createInstance(L4,e,this._options)}getModel(){var e;return((e=this._diffModel.get())==null?void 0:e.model)??null}setModel(e){const t=e?"model"in e?Ux.create(e).createNewRef(this):Ux.create(this.createViewModel(e),this):null;this.setDiffModel(t)}setDiffModel(e,t){const i=this._diffModel.get();!e&&i&&this._accessibleDiffViewer.get().close(),this._diffModel.get()!==(e==null?void 0:e.object)&&CA(t,n=>{var r;const o=e==null?void 0:e.object;gn.batchEventsGlobally(n,()=>{this._editors.original.setModel(o?o.model.original:null),this._editors.modified.setModel(o?o.model.modified:null)});const l=(r=this._diffModelSrc.get())==null?void 0:r.createNewRef(this);this._diffModelSrc.set(e==null?void 0:e.createNewRef(this),n),setTimeout(()=>{l==null||l.dispose()},0)})}updateOptions(e){this._options.updateOptions(e)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var t;const e=(t=this._diffModel.get())==null?void 0:t.diff.get();return e?y6e(e):null}revert(e){const t=this._diffModel.get();!t||!t.isDiffUpToDate.get()||this._editors.modified.executeEdits("diffEditor",[{range:e.modified.toExclusiveRange(),text:t.model.original.getValueInRange(e.original.toExclusiveRange())}])}revertRangeMappings(e){const t=this._diffModel.get();if(!t||!t.isDiffUpToDate.get())return;const i=e.map(n=>({range:n.modifiedRange,text:t.model.original.getValueInRange(n.originalRange)}));this._editors.modified.executeEdits("diffEditor",i)}_goTo(e){this._editors.modified.setPosition(new oe(e.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(e.lineRangeMapping.modified.toExclusiveRange())}goToDiff(e){var o,l;const t=(l=(o=this._diffModel.get())==null?void 0:o.diff.get())==null?void 0:l.mappings;if(!t||t.length===0)return;const i=this._editors.modified.getPosition().lineNumber;let n;e==="next"?n=t.find(r=>r.lineRangeMapping.modified.startLineNumber>i)??t[0]:n=cM(t,r=>r.lineRangeMapping.modified.startLineNumber<i)??t[t.length-1],this._goTo(n),n.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(Pd.diffLineDeleted,{source:"diffEditor.goToDiff"}):n.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(Pd.diffLineInserted,{source:"diffEditor.goToDiff"}):n&&this._accessibilitySignalService.playSignal(Pd.diffLineModified,{source:"diffEditor.goToDiff"})}revealFirstDiff(){const e=this._diffModel.get();e&&this.waitForDiff().then(()=>{var i;const t=(i=e.diff.get())==null?void 0:i.mappings;!t||t.length===0||this._goTo(t[0])})}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const e=this._diffModel.get();e&&await e.waitForDiff()}mapToOtherSide(){var l,r;const e=this._editors.modified.hasWidgetFocus(),t=e?this._editors.modified:this._editors.original,i=e?this._editors.original:this._editors.modified;let n;const o=t.getSelection();if(o){const a=(r=(l=this._diffModel.get())==null?void 0:l.diff.get())==null?void 0:r.mappings.map(d=>e?d.lineRangeMapping.flip():d.lineRangeMapping);if(a){const d=xae(o.getStartPosition(),a),c=xae(o.getEndPosition(),a);n=v.plusRange(d,c)}}return{destination:i,destinationSelection:n}}switchSide(){const{destination:e,destinationSelection:t}=this.mapToOtherSide();e.focus(),t&&e.setSelection(t)}exitCompareMove(){const e=this._diffModel.get();e&&e.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var t;const e=(t=this._diffModel.get())==null?void 0:t.unchangedRegions.get();e&&Ss(i=>{for(const n of e)n.collapseAll(i)})}showAllUnchangedRegions(){var t;const e=(t=this._diffModel.get())==null?void 0:t.unchangedRegions.get();e&&Ss(i=>{for(const n of e)n.showAll(i)})}_handleCursorPositionChange(e,t){var i,n;if((e==null?void 0:e.reason)===3){const o=(n=(i=this._diffModel.get())==null?void 0:i.diff.get())==null?void 0:n.mappings.find(l=>t?l.lineRangeMapping.modified.contains(e.position.lineNumber):l.lineRangeMapping.original.contains(e.position.lineNumber));o!=null&&o.lineRangeMapping.modified.isEmpty?this._accessibilitySignalService.playSignal(Pd.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):o!=null&&o.lineRangeMapping.original.isEmpty?this._accessibilitySignalService.playSignal(Pd.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):o&&this._accessibilitySignalService.playSignal(Pd.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}};Q0=Q6e([O1(3,wt),O1(4,bt),O1(5,zi),O1(6,Ff),O1(7,bf)],Q0);function y6e(s){return s.mappings.map(e=>{const t=e.lineRangeMapping;let i,n,o,l,r=t.innerChanges;return t.original.isEmpty?(i=t.original.startLineNumber-1,n=0,r=void 0):(i=t.original.startLineNumber,n=t.original.endLineNumberExclusive-1),t.modified.isEmpty?(o=t.modified.startLineNumber-1,l=0,r=void 0):(o=t.modified.startLineNumber,l=t.modified.endLineNumberExclusive-1),{originalStartLineNumber:i,originalEndLineNumber:n,modifiedStartLineNumber:o,modifiedEndLineNumber:l,charChanges:r==null?void 0:r.map(a=>({originalStartLineNumber:a.originalRange.startLineNumber,originalStartColumn:a.originalRange.startColumn,originalEndLineNumber:a.originalRange.endLineNumber,originalEndColumn:a.originalRange.endColumn,modifiedStartLineNumber:a.modifiedRange.startLineNumber,modifiedStartColumn:a.modifiedRange.startColumn,modifiedEndLineNumber:a.modifiedRange.endLineNumber,modifiedEndColumn:a.modifiedRange.endColumn}))}})}var Hte=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},jn=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let C6e=0,sde=!1;function w6e(s){if(!s){if(sde)return;sde=!0}Lze(s||Qn.document.body)}let Rx=class extends HM{constructor(e,t,i,n,o,l,r,a,d,c,h,u,m){const p={...t};p.ariaLabel=p.ariaLabel||IP.editorViewAccessibleLabel,super(e,p,{},i,n,o,l,d,c,h,u,m),a instanceof fV?this._standaloneKeybindingService=a:this._standaloneKeybindingService=null,w6e(p.ariaContainerElement),H9e((g,b)=>i.createInstance(lV,g,b,{})),P9e(r)}addCommand(e,t,i){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const n="DYNAMIC_"+ ++C6e,o=Ne.deserialize(i);return this._standaloneKeybindingService.addDynamicKeybinding(n,e,t,o),n}createContextKey(e,t){return this._contextKeyService.createKey(e,t)}addAction(e){if(typeof e.id!="string"||typeof e.label!="string"||typeof e.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),de.None;const t=e.id,i=e.label,n=Ne.and(Ne.equals("editorId",this.getId()),Ne.deserialize(e.precondition)),o=e.keybindings,l=Ne.and(n,Ne.deserialize(e.keybindingContext)),r=e.contextMenuGroupId||null,a=e.contextMenuOrder||0,d=(m,...p)=>Promise.resolve(e.run(this,...p)),c=new Ze,h=this.getId()+":"+t;if(c.add(Bi.registerCommand(h,d)),r){const m={command:{id:h,title:i},when:n,group:r,order:a};c.add(nl.appendMenuItem(at.EditorContext,m))}if(Array.isArray(o))for(const m of o)c.add(this._standaloneKeybindingService.addDynamicKeybinding(h,m,d,l));const u=new Cfe(h,i,i,void 0,n,(...m)=>Promise.resolve(e.run(this,...m)),this._contextKeyService);return this._actions.set(t,u),c.add(gt(()=>{this._actions.delete(t)})),c}_triggerCommand(e,t){if(this._codeEditorService instanceof iv)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(e,t)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(e,t)}};Rx=Hte([jn(2,bt),jn(3,zi),jn(4,On),jn(5,wt),jn(6,Gp),jn(7,dn),jn(8,Do),jn(9,no),jn(10,Qd),jn(11,Qs),jn(12,lt)],Rx);let X4=class extends Rx{constructor(e,t,i,n,o,l,r,a,d,c,h,u,m,p,g,b){const f={...t};qv(h,f,!1);const Z=d.registerEditorContainer(e);typeof f.theme=="string"&&d.setTheme(f.theme),typeof f.autoDetectHighContrast<"u"&&d.setAutoDetectHighContrast(!!f.autoDetectHighContrast);const A=f.model;delete f.model,super(e,f,i,n,o,l,r,a,d,c,u,g,b),this._configurationService=h,this._standaloneThemeService=d,this._register(Z);let N;if(typeof A>"u"){const W=p.getLanguageIdByMimeType(f.language)||f.language||ia;N=Jfe(m,p,f.value||"",W,void 0),this._ownsModel=!0}else N=A,this._ownsModel=!1;if(this._attachModel(N),N){const W={oldModelUrl:null,newModelUrl:N.uri};this._onDidChangeModel.fire(W)}}dispose(){super.dispose()}updateOptions(e){qv(this._configurationService,e,!1),typeof e.theme=="string"&&this._standaloneThemeService.setTheme(e.theme),typeof e.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!e.autoDetectHighContrast),super.updateOptions(e)}_postDetachModelCleanup(e){super._postDetachModelCleanup(e),e&&this._ownsModel&&(e.dispose(),this._ownsModel=!1)}};X4=Hte([jn(2,bt),jn(3,zi),jn(4,On),jn(5,wt),jn(6,Gp),jn(7,dn),jn(8,fc),jn(9,no),jn(10,li),jn(11,Qd),jn(12,es),jn(13,Zs),jn(14,Qs),jn(15,lt)],X4);let Y4=class extends Q0{constructor(e,t,i,n,o,l,r,a,d,c,h,u){const m={...t};qv(a,m,!0);const p=l.registerEditorContainer(e);typeof m.theme=="string"&&l.setTheme(m.theme),typeof m.autoDetectHighContrast<"u"&&l.setAutoDetectHighContrast(!!m.autoDetectHighContrast),super(e,m,{},n,i,o,u,c),this._configurationService=a,this._standaloneThemeService=l,this._register(p)}dispose(){super.dispose()}updateOptions(e){qv(this._configurationService,e,!0),typeof e.theme=="string"&&this._standaloneThemeService.setTheme(e.theme),typeof e.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!e.autoDetectHighContrast),super.updateOptions(e)}_createInnerEditor(e,t,i){return e.createInstance(Rx,t,i)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(e,t,i){return this.getModifiedEditor().addCommand(e,t,i)}createContextKey(e,t){return this.getModifiedEditor().createContextKey(e,t)}addAction(e){return this.getModifiedEditor().addAction(e)}};Y4=Hte([jn(2,bt),jn(3,wt),jn(4,zi),jn(5,fc),jn(6,no),jn(7,li),jn(8,Vd),jn(9,bf),jn(10,D0),jn(11,Ff)],Y4);function Jfe(s,e,t,i,n){if(t=t||"",!i){const o=t.indexOf(`
- `);let l=t;return o!==-1&&(l=t.substring(0,o)),ode(s,t,e.createByFilepathOrFirstLine(n||null,l),n)}return ode(s,t,e.createById(i),n)}function ode(s,e,t,i){return s.createModel(e,t,i)}var M6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},lde=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class T6e{constructor(e,t){this.viewModel=e,this.deltaScrollVertical=t}getId(){return this.viewModel}}let Sx=class extends de{constructor(e,t,i,n,o){super(),this._container=e,this._overflowWidgetsDomNode=t,this._workbenchUIElementFactory=i,this._instantiationService=n,this._viewModel=oi(this,void 0),this._collapsed=ht(this,a=>{var d;return(d=this._viewModel.read(a))==null?void 0:d.collapsed.read(a)}),this._editorContentHeight=oi(this,500),this.contentHeight=ht(this,a=>(this._collapsed.read(a)?0:this._editorContentHeight.read(a))+this._outerEditorHeight),this._modifiedContentWidth=oi(this,0),this._modifiedWidth=oi(this,0),this._originalContentWidth=oi(this,0),this._originalWidth=oi(this,0),this.maxScroll=ht(this,a=>{const d=this._modifiedContentWidth.read(a)-this._modifiedWidth.read(a),c=this._originalContentWidth.read(a)-this._originalWidth.read(a);return d>c?{maxScroll:d,width:this._modifiedWidth.read(a)}:{maxScroll:c,width:this._originalWidth.read(a)}}),this._elements=gi("div.multiDiffEntry",[gi("div.header@header",[gi("div.header-content",[gi("div.collapse-button@collapseButton"),gi("div.file-path",[gi("div.title.modified.show-file-icons@primaryPath",[]),gi("div.status.deleted@status",["R"]),gi("div.title.original.show-file-icons@secondaryPath",[])]),gi("div.actions@actions")])]),gi("div.editorParent",[gi("div.editorContainer@editor")])]),this.editor=this._register(this._instantiationService.createInstance(Q0,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode},{})),this.isModifedFocused=md(this.editor.getModifiedEditor()).isFocused,this.isOriginalFocused=md(this.editor.getOriginalEditor()).isFocused,this.isFocused=ht(this,a=>this.isModifedFocused.read(a)||this.isOriginalFocused.read(a)),this._resourceLabel=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath)):void 0,this._resourceLabel2=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath)):void 0,this._dataStore=this._register(new Ze),this._headerHeight=40,this._lastScrollTop=-1,this._isSettingScrollTop=!1;const l=new kv(this._elements.collapseButton,{});this._register(Gt(a=>{l.element.className="",l.icon=this._collapsed.read(a)?ke.chevronRight:ke.chevronDown})),this._register(l.onDidClick(()=>{var a;(a=this._viewModel.get())==null||a.collapsed.set(!this._collapsed.get(),void 0)})),this._register(Gt(a=>{this._elements.editor.style.display=this._collapsed.read(a)?"none":"block"})),this._register(this.editor.getModifiedEditor().onDidLayoutChange(a=>{const d=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(d,void 0)})),this._register(this.editor.getOriginalEditor().onDidLayoutChange(a=>{const d=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(d,void 0)})),this._register(this.editor.onDidContentSizeChange(a=>{Oy(d=>{this._editorContentHeight.set(a.contentHeight,d),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),d),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),d)})})),this._register(this.editor.getOriginalEditor().onDidScrollChange(a=>{if(this._isSettingScrollTop||!a.scrollTopChanged||!this._data)return;const d=a.scrollTop-this._lastScrollTop;this._data.deltaScrollVertical(d)})),this._register(Gt(a=>{var c;const d=(c=this._viewModel.read(a))==null?void 0:c.isActive.read(a);this._elements.root.classList.toggle("active",d)})),this._container.appendChild(this._elements.root),this._outerEditorHeight=this._headerHeight,this._contextKeyService=this._register(o.createScoped(this._elements.actions));const r=this._register(this._instantiationService.createChild(new t1([wt,this._contextKeyService])));this._register(r.createInstance(Zx,this._elements.actions,at.MultiDiffEditorFileToolbar,{actionRunner:this._register(new Efe(()=>{var a;return(a=this._viewModel.get())==null?void 0:a.modifiedUri})),menuOptions:{shouldForwardArgs:!0},toolbarOptions:{primaryGroup:a=>a.startsWith("navigation")},actionViewItemProvider:(a,d)=>kbe(r,a,d)}))}setScrollLeft(e){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(e):this.editor.getOriginalEditor().setScrollLeft(e)}setData(e){this._data=e;function t(n){return{...n,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0,overviewRulerBorder:!1}}if(!e){Oy(n=>{this._viewModel.set(void 0,n),this.editor.setDiffModel(null,n),this._dataStore.clear()});return}const i=e.viewModel.documentDiffItem;if(Oy(n=>{var d,c;(d=this._resourceLabel)==null||d.setUri(e.viewModel.modifiedUri??e.viewModel.originalUri,{strikethrough:e.viewModel.modifiedUri===void 0});let o=!1,l=!1,r=!1,a="";e.viewModel.modifiedUri&&e.viewModel.originalUri&&e.viewModel.modifiedUri.path!==e.viewModel.originalUri.path?(a="R",o=!0):e.viewModel.modifiedUri?e.viewModel.originalUri||(a="A",r=!0):(a="D",l=!0),this._elements.status.classList.toggle("renamed",o),this._elements.status.classList.toggle("deleted",l),this._elements.status.classList.toggle("added",r),this._elements.status.innerText=a,(c=this._resourceLabel2)==null||c.setUri(o?e.viewModel.originalUri:void 0,{strikethrough:!0}),this._dataStore.clear(),this._viewModel.set(e.viewModel,n),this.editor.setDiffModel(e.viewModel.diffEditorViewModelRef,n),this.editor.updateOptions(t(i.options??{}))}),i.onOptionsDidChange&&this._dataStore.add(i.onOptionsDidChange(()=>{this.editor.updateOptions(t(i.options??{}))})),e.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore,n=>{n||this.setData(void 0)}),e.viewModel.documentDiffItem.contextKeys)for(const[n,o]of Object.entries(e.viewModel.documentDiffItem.contextKeys))this._contextKeyService.createKey(n,o)}render(e,t,i,n){this._elements.root.style.visibility="visible",this._elements.root.style.top=`${e.start}px`,this._elements.root.style.height=`${e.length}px`,this._elements.root.style.width=`${t}px`,this._elements.root.style.position="absolute";const o=e.length-this._headerHeight,l=Math.max(0,Math.min(n.start-e.start,o));this._elements.header.style.transform=`translateY(${l}px)`,Oy(r=>{this.editor.layout({width:t-2*8-2*1,height:e.length-this._outerEditorHeight})});try{this._isSettingScrollTop=!0,this._lastScrollTop=i,this.editor.getOriginalEditor().setScrollTop(i)}finally{this._isSettingScrollTop=!1}this._elements.header.classList.toggle("shadow",l>0||i>0),this._elements.header.classList.toggle("collapsed",l===o)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};Sx=M6e([lde(3,bt),lde(4,wt)],Sx);class B6e{constructor(e){this._create=e,this._unused=new Set,this._used=new Set,this._itemData=new Map}getUnusedObj(e){let t;if(this._unused.size===0)t=this._create(e),this._itemData.set(t,e);else{const i=[...this._unused.values()];t=i.find(n=>this._itemData.get(n).getId()===e.getId())??i[0],this._unused.delete(t),this._itemData.set(t,e),t.setData(e)}return this._used.add(t),{object:t,dispose:()=>{this._used.delete(t),this._unused.size>5?t.dispose():this._unused.add(t)}}}dispose(){for(const e of this._used)e.dispose();for(const e of this._unused)e.dispose();this._used.clear(),this._unused.clear()}}var L6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},rde=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let z4=class extends de{constructor(e,t,i,n,o,l){super(),this._element=e,this._dimension=t,this._viewModel=i,this._workbenchUIElementFactory=n,this._parentContextKeyService=o,this._parentInstantiationService=l,this._scrollableElements=gi("div.scrollContent",[gi("div@content",{style:{overflow:"hidden"}}),gi("div.monaco-editor@overflowWidgetsDomNode",{})]),this._scrollable=this._register(new OQ({forceIntegerValues:!1,scheduleAtNextAnimationFrame:a=>Sd(Wt(this._element),a),smoothScrollDuration:100})),this._scrollableElement=this._register(new QY(this._scrollableElements.root,{vertical:1,horizontal:1,useShadows:!1},this._scrollable)),this._elements=gi("div.monaco-component.multiDiffEditor",{},[gi("div",{},[this._scrollableElement.getDomNode()]),gi("div.placeholder@placeholder",{},[gi("div",[U("noChangedFiles","No Changed Files")])])]),this._sizeObserver=this._register(new Bfe(this._element,void 0)),this._objectPool=this._register(new B6e(a=>{const d=this._instantiationService.createInstance(Sx,this._scrollableElements.content,this._scrollableElements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return d.setData(a),d})),this.scrollTop=gn(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollTop),this.scrollLeft=gn(this,this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollLeft),this._viewItemsInfo=Uf(this,(a,d)=>{const c=this._viewModel.read(a);if(!c)return{items:[],getItem:p=>{throw new en}};const h=c.items.read(a),u=new Map;return{items:h.map(p=>{var f;const g=d.add(new k6e(p,this._objectPool,this.scrollLeft,Z=>{this._scrollableElement.setScrollPosition({scrollTop:this._scrollableElement.getScrollPosition().scrollTop+Z})})),b=(f=this._lastDocStates)==null?void 0:f[g.getKey()];return b&&Ss(Z=>{g.setViewState(b,Z)}),u.set(p,g),g}),getItem:p=>u.get(p)}}),this._viewItems=this._viewItemsInfo.map(this,a=>a.items),this._spaceBetweenPx=0,this._totalHeight=this._viewItems.map(this,(a,d)=>a.reduce((c,h)=>c+h.contentHeight.read(d)+this._spaceBetweenPx,0)),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._register(this._parentInstantiationService.createChild(new t1([wt,this._contextKeyService]))),this._lastDocStates={},this._contextKeyService.createKey(H.inMultiDiffEditor.key,!0),this._register(Ga((a,d)=>{const c=this._viewModel.read(a);if(c&&c.contextKeys)for(const[h,u]of Object.entries(c.contextKeys)){const m=this._contextKeyService.createKey(h,void 0);m.set(u),d.add(gt(()=>m.reset()))}}));const r=this._parentContextKeyService.createKey(H.multiDiffEditorAllCollapsed.key,!1);this._register(Gt(a=>{const d=this._viewModel.read(a);if(d){const c=d.items.read(a).every(h=>h.collapsed.read(a));r.set(c)}})),this._register(Gt(a=>{const d=this._dimension.read(a);this._sizeObserver.observe(d)})),this._register(Gt(a=>{const d=this._viewItems.read(a);this._elements.placeholder.classList.toggle("visible",d.length===0)})),this._scrollableElements.content.style.position="relative",this._register(Gt(a=>{const d=this._sizeObserver.height.read(a);this._scrollableElements.root.style.height=`${d}px`;const c=this._totalHeight.read(a);this._scrollableElements.content.style.height=`${c}px`;const h=this._sizeObserver.width.read(a);let u=h;const m=this._viewItems.read(a),p=H$(m,ea(g=>g.maxScroll.read(a).maxScroll,zh));if(p){const g=p.maxScroll.read(a);u=h+g.maxScroll}this._scrollableElement.setScrollDimensions({width:h,height:d,scrollHeight:c,scrollWidth:u})})),e.replaceChildren(this._elements.root),this._register(gt(()=>{e.replaceChildren()})),this._register(this._register(Gt(a=>{Oy(d=>{this.render(a)})})))}render(e){const t=this.scrollTop.read(e);let i=0,n=0,o=0;const l=this._sizeObserver.height.read(e),r=di.ofStartAndLength(t,l),a=this._sizeObserver.width.read(e);for(const d of this._viewItems.read(e)){const c=d.contentHeight.read(e),h=Math.min(c,l),u=di.ofStartAndLength(n,h),m=di.ofStartAndLength(o,c);if(m.isBefore(r))i-=c-h,d.hide();else if(m.isAfter(r))d.hide();else{const p=Math.max(0,Math.min(r.start-m.start,c-h));i-=p;const g=di.ofStartAndLength(t+i,l);d.render(u,p,a,g)}n+=h+this._spaceBetweenPx,o+=c+this._spaceBetweenPx}this._scrollableElements.content.style.transform=`translateY(${-(t+i)}px)`}};z4=L6e([rde(4,wt),rde(5,bt)],z4);class k6e extends de{constructor(e,t,i,n){super(),this.viewModel=e,this._objectPool=t,this._scrollLeft=i,this._deltaScrollVertical=n,this._templateRef=this._register(QM(this,void 0)),this.contentHeight=ht(this,o=>{var l,r;return((r=(l=this._templateRef.read(o))==null?void 0:l.object.contentHeight)==null?void 0:r.read(o))??this.viewModel.lastTemplateData.read(o).contentHeight}),this.maxScroll=ht(this,o=>{var l;return((l=this._templateRef.read(o))==null?void 0:l.object.maxScroll.read(o))??{maxScroll:0,scrollWidth:0}}),this.template=ht(this,o=>{var l;return(l=this._templateRef.read(o))==null?void 0:l.object}),this._isHidden=oi(this,!1),this._isFocused=ht(this,o=>{var l;return((l=this.template.read(o))==null?void 0:l.isFocused.read(o))??!1}),this.viewModel.setIsFocused(this._isFocused,void 0),this._register(Gt(o=>{var r;const l=this._scrollLeft.read(o);(r=this._templateRef.read(o))==null||r.object.setScrollLeft(l)})),this._register(Gt(o=>{const l=this._templateRef.read(o);!l||!this._isHidden.read(o)||l.object.isFocused.read(o)||this._clear()}))}dispose(){this._clear(),super.dispose()}toString(){var e;return`VirtualViewItem(${(e=this.viewModel.documentDiffItem.modified)==null?void 0:e.uri.toString()})`}getKey(){return this.viewModel.getKey()}setViewState(e,t){var l;this.viewModel.collapsed.set(e.collapsed,t),this._updateTemplateData(t);const i=this.viewModel.lastTemplateData.get(),n=(l=e.selections)==null?void 0:l.map(dt.liftSelection);this.viewModel.lastTemplateData.set({...i,selections:n},t);const o=this._templateRef.get();o&&n&&o.object.editor.setSelections(n)}_updateTemplateData(e){const t=this._templateRef.get();t&&this.viewModel.lastTemplateData.set({contentHeight:t.object.contentHeight.get(),selections:t.object.editor.getSelections()??void 0},e)}_clear(){const e=this._templateRef.get();e&&Ss(t=>{this._updateTemplateData(t),e.object.hide(),this._templateRef.set(void 0,t)})}hide(){this._isHidden.set(!0,void 0)}render(e,t,i,n){this._isHidden.set(!1,void 0);let o=this._templateRef.get();if(!o){o=this._objectPool.getUnusedObj(new T6e(this.viewModel,this._deltaScrollVertical)),this._templateRef.set(o,void 0);const l=this.viewModel.lastTemplateData.get().selections;l&&o.object.editor.setSelections(l)}o.object.render(e,i,t,n)}}K("multiDiffEditor.headerBackground",{dark:"#262626",light:"tab.inactiveBackground",hcDark:"tab.inactiveBackground",hcLight:"tab.inactiveBackground"},U("multiDiffEditor.headerBackground","The background color of the diff editor's header"));K("multiDiffEditor.background",$h,U("multiDiffEditor.background","The background color of the multi file diff editor"));K("multiDiffEditor.border",{dark:"sideBarSectionHeader.border",light:"#cccccc",hcDark:"sideBarSectionHeader.border",hcLight:"#cccccc"},U("multiDiffEditor.border","The border color of the multi file diff editor"));var I6e=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},D6e=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let _4=class extends de{constructor(e,t,i){super(),this._element=e,this._workbenchUIElementFactory=t,this._instantiationService=i,this._dimension=oi(this,void 0),this._viewModel=oi(this,void 0),this._widgetImpl=Uf(this,(n,o)=>(dd(Sx,n),o.add(this._instantiationService.createInstance(dd(z4,n),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory)))),this._register(KQ(this._widgetImpl))}};_4=I6e([D6e(2,bt)],_4);function G6e(s,e,t){return It.initialize(t||{}).createInstance(X4,s,e)}function E6e(s){return It.get(zi).onCodeEditorAdd(t=>{s(t)})}function v6e(s){return It.get(zi).onDiffEditorAdd(t=>{s(t)})}function x6e(){return It.get(zi).listCodeEditors()}function J6e(){return It.get(zi).listDiffEditors()}function X6e(s,e,t){return It.initialize(t||{}).createInstance(Y4,s,e)}function Y6e(s,e){const t=It.initialize(e||{});return new _4(s,{},t)}function z6e(s){if(typeof s.id!="string"||typeof s.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return Bi.registerCommand(s.id,s.run)}function _6e(s){if(typeof s.id!="string"||typeof s.label!="string"||typeof s.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const e=Ne.deserialize(s.precondition),t=(n,...o)=>Io.runEditorCommand(n,o,e,(l,r,a)=>Promise.resolve(s.run(r,...a))),i=new Ze;if(i.add(Bi.registerCommand(s.id,t)),s.contextMenuGroupId){const n={command:{id:s.id,title:s.label},when:e,group:s.contextMenuGroupId,order:s.contextMenuOrder||0};i.add(nl.appendMenuItem(at.EditorContext,n))}if(Array.isArray(s.keybindings)){const n=It.get(dn);if(!(n instanceof fV))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const o=Ne.and(e,Ne.deserialize(s.keybindingContext));i.add(n.addDynamicKeybindings(s.keybindings.map(l=>({keybinding:l,command:s.id,when:o}))))}}return i}function O6e(s){return Xfe([s])}function Xfe(s){const e=It.get(dn);return e instanceof fV?e.addDynamicKeybindings(s.map(t=>({keybinding:t.keybinding,command:t.command,commandArgs:t.commandArgs,when:Ne.deserialize(t.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),de.None)}function j6e(s,e,t){const i=It.get(Zs),n=i.getLanguageIdByMimeType(e)||e;return Jfe(It.get(es),i,s,n,t)}function H6e(s,e){const t=It.get(Zs),i=t.getLanguageIdByMimeType(e)||e||ia;s.setLanguage(t.createById(i))}function P6e(s,e,t){s&&It.get(Ep).changeOne(e,s.uri,t)}function K6e(s){It.get(Ep).changeAll(s,[])}function q6e(s){return It.get(Ep).read(s)}function $6e(s){return It.get(Ep).onMarkerChanged(s)}function eqe(s){return It.get(es).getModel(s)}function tqe(){return It.get(es).getModels()}function iqe(s){return It.get(es).onModelAdded(s)}function nqe(s){return It.get(es).onModelRemoved(s)}function sqe(s){return It.get(es).onModelLanguageChanged(t=>{s({model:t.model,oldLanguage:t.oldLanguageId})})}function oqe(s){return YPe(It.get(es),s)}function lqe(s,e){const t=It.get(Zs),i=It.get(fc);return bte.colorizeElement(i,t,s,e).then(()=>{i.registerEditorContainer(s)})}function rqe(s,e,t){const i=It.get(Zs);return It.get(fc).registerEditorContainer(Qn.document.body),bte.colorize(i,s,e,t)}function aqe(s,e,t=4){return It.get(fc).registerEditorContainer(Qn.document.body),bte.colorizeModelLine(s,e,t)}function dqe(s){const e=Ds.get(s);return e||{getInitialState:()=>cV,tokenize:(t,i,n)=>Wee(s,n)}}function cqe(s,e){Ds.getOrCreate(e);const t=dqe(e),i=Lp(s),n=[];let o=t.getInitialState();for(let l=0,r=i.length;l<r;l++){const a=i[l],d=t.tokenize(a,!0,o);n[l]=d.tokens,o=d.endState}return n}function hqe(s,e){It.get(fc).defineTheme(s,e)}function uqe(s){It.get(fc).setTheme(s)}function mqe(){BH.clearAllFontInfos()}function pqe(s,e){return Bi.registerCommand({id:s,handler:e})}function gqe(s){return It.get(za).registerOpener({async open(t){return typeof t=="string"&&(t=At.parse(t)),s.open(t)}})}function bqe(s){return It.get(zi).registerCodeEditorOpenHandler(async(t,i,n)=>{var r;if(!i)return null;const o=(r=t.options)==null?void 0:r.selection;let l;return o&&typeof o.endLineNumber=="number"&&typeof o.endColumn=="number"?l=o:o&&(l={lineNumber:o.startLineNumber,column:o.startColumn}),await s.openCodeEditor(i,t.resource,l)?i:null})}function Uqe(){return{create:G6e,getEditors:x6e,getDiffEditors:J6e,onDidCreateEditor:E6e,onDidCreateDiffEditor:v6e,createDiffEditor:X6e,addCommand:z6e,addEditorAction:_6e,addKeybindingRule:O6e,addKeybindingRules:Xfe,createModel:j6e,setModelLanguage:H6e,setModelMarkers:P6e,getModelMarkers:q6e,removeAllMarkers:K6e,onDidChangeMarkers:$6e,getModels:tqe,getModel:eqe,onDidCreateModel:iqe,onWillDisposeModel:nqe,onDidChangeModelLanguage:sqe,createWebWorker:oqe,colorizeElement:lqe,colorize:rqe,colorizeModelLine:aqe,tokenize:cqe,defineTheme:hqe,setTheme:uqe,remeasureFonts:mqe,registerCommand:pqe,registerLinkOpener:gqe,registerEditorOpener:bqe,AccessibilitySupport:yj,ContentWidgetPositionPreference:Lj,CursorChangeReason:kj,DefaultEndOfLine:Ij,EditorAutoIndentStrategy:Gj,EditorOption:Ej,EndOfLinePreference:vj,EndOfLineSequence:xj,MinimapPosition:qj,MinimapSectionHeaderStyle:$j,MouseTargetType:eH,OverlayWidgetPositionPreference:nH,OverviewRulerLane:sH,GlyphMarginLane:Jj,RenderLineNumbersType:rH,RenderMinimap:aH,ScrollbarVisibility:cH,ScrollType:dH,TextEditorCursorBlinkingStyle:bH,TextEditorCursorStyle:UH,TrackedRangeStickiness:fH,WrappingIndent:FH,InjectedTextCursorStops:zj,PositionAffinity:lH,ShowLightbulbIconMode:uH,ConfigurationChangedEvent:Mpe,BareFontInfo:XZ,FontInfo:TH,TextModelResolvedOptions:eD,FindMatch:dM,ApplyUpdateResult:rC,EditorZoom:Gc,createMultiFileDiffEditor:Y6e,EditorType:RB,EditorOptions:om}}function fqe(s,e){if(!e||!Array.isArray(e))return!1;for(const t of e)if(!s(t))return!1;return!0}function fk(s,e){return typeof s=="boolean"?s:e}function ade(s,e){return typeof s=="string"?s:e}function Fqe(s){const e={};for(const t of s)e[t]=!0;return e}function dde(s,e=!1){e&&(s=s.map(function(i){return i.toLowerCase()}));const t=Fqe(s);return e?function(i){return t[i.toLowerCase()]!==void 0&&t.hasOwnProperty(i.toLowerCase())}:function(i){return t[i]!==void 0&&t.hasOwnProperty(i)}}function O4(s,e,t){e=e.replace(/@@/g,"");let i=0,n;do n=!1,e=e.replace(/@(\w+)/g,function(l,r){n=!0;let a="";if(typeof s[r]=="string")a=s[r];else if(s[r]&&s[r]instanceof RegExp)a=s[r].source;else throw s[r]===void 0?as(s,"language definition does not contain attribute '"+r+"', used at: "+e):as(s,"attribute reference '"+r+"' must be a string, used at: "+e);return lZ(a)?"":"(?:"+a+")"}),i++;while(n&&i<5);e=e.replace(/\x01/g,"@");const o=(s.ignoreCase?"i":"")+(s.unicode?"u":"");if(t&&e.match(/\$[sS](\d\d?)/g)){let r=null,a=null;return d=>(a&&r===d||(r=d,a=new RegExp(dKe(s,e,d),o)),a)}return new RegExp(e,o)}function Zqe(s,e,t,i){if(i<0)return s;if(i<e.length)return e[i];if(i>=100){i=i-100;const n=t.split(".");if(n.unshift(t),i<n.length)return n[i]}return null}function Aqe(s,e,t,i){let n=-1,o=t,l=t.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);l&&(l[3]&&(n=parseInt(l[3]),l[2]&&(n=n+100)),o=l[4]);let r="~",a=o;!o||o.length===0?(r="!=",a=""):/^\w*$/.test(a)?r="==":(l=o.match(/^(@|!@|~|!~|==|!=)(.*)$/),l&&(r=l[1],a=l[2]));let d;if((r==="~"||r==="!~")&&/^(\w|\|)*$/.test(a)){const c=dde(a.split("|"),s.ignoreCase);d=function(h){return r==="~"?c(h):!c(h)}}else if(r==="@"||r==="!@"){const c=s[a];if(!c)throw as(s,"the @ match target '"+a+"' is not defined, in rule: "+e);if(!fqe(function(u){return typeof u=="string"},c))throw as(s,"the @ match target '"+a+"' must be an array of strings, in rule: "+e);const h=dde(c,s.ignoreCase);d=function(u){return r==="@"?h(u):!h(u)}}else if(r==="~"||r==="!~")if(a.indexOf("$")<0){const c=O4(s,"^"+a+"$",!1);d=function(h){return r==="~"?c.test(h):!c.test(h)}}else d=function(c,h,u,m){return O4(s,"^"+Jb(s,a,h,u,m)+"$",!1).test(c)};else if(a.indexOf("$")<0){const c=h0(s,a);d=function(h){return r==="=="?h===c:h!==c}}else{const c=h0(s,a);d=function(h,u,m,p,g){const b=Jb(s,c,u,m,p);return r==="=="?h===b:h!==b}}return n===-1?{name:t,value:i,test:function(c,h,u,m){return d(c,c,h,u,m)}}:{name:t,value:i,test:function(c,h,u,m){const p=Zqe(c,h,u,n);return d(p||"",c,h,u,m)}}}function j4(s,e,t){if(t){if(typeof t=="string")return t;if(t.token||t.token===""){if(typeof t.token!="string")throw as(s,"a 'token' attribute must be of type string, in rule: "+e);{const i={token:t.token};if(t.token.indexOf("$")>=0&&(i.tokenSubst=!0),typeof t.bracket=="string")if(t.bracket==="@open")i.bracket=1;else if(t.bracket==="@close")i.bracket=-1;else throw as(s,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+e);if(t.next){if(typeof t.next!="string")throw as(s,"the next state must be a string value in rule: "+e);{let n=t.next;if(!/^(@pop|@push|@popall)$/.test(n)&&(n[0]==="@"&&(n=n.substr(1)),n.indexOf("$")<0&&!cKe(s,Jb(s,n,"",[],""))))throw as(s,"the next state '"+t.next+"' is not defined in rule: "+e);i.next=n}}return typeof t.goBack=="number"&&(i.goBack=t.goBack),typeof t.switchTo=="string"&&(i.switchTo=t.switchTo),typeof t.log=="string"&&(i.log=t.log),typeof t.nextEmbedded=="string"&&(i.nextEmbedded=t.nextEmbedded,s.usesEmbedded=!0),i}}else if(Array.isArray(t)){const i=[];for(let n=0,o=t.length;n<o;n++)i[n]=j4(s,e,t[n]);return{group:i}}else if(t.cases){const i=[];for(const o in t.cases)if(t.cases.hasOwnProperty(o)){const l=j4(s,e,t.cases[o]);o==="@default"||o==="@"||o===""?i.push({test:void 0,value:l,name:o}):o==="@eos"?i.push({test:function(r,a,d,c){return c},value:l,name:o}):i.push(Aqe(s,e,o,l))}const n=s.defaultToken;return{test:function(o,l,r,a){for(const d of i)if(!d.test||d.test(o,l,r,a))return d.value;return n}}}else throw as(s,"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: "+e)}else return{token:""}}class Nqe{constructor(e){this.regex=new RegExp(""),this.action={token:""},this.matchOnlyAtLineStart=!1,this.name="",this.name=e}setRegex(e,t){let i;if(typeof t=="string")i=t;else if(t instanceof RegExp)i=t.source;else throw as(e,"rules must start with a match string or regular expression: "+this.name);this.matchOnlyAtLineStart=i.length>0&&i[0]==="^",this.name=this.name+": "+i,this.regex=O4(e,"^(?:"+(this.matchOnlyAtLineStart?i.substr(1):i)+")",!0)}setAction(e,t){this.action=j4(e,this.name,t)}resolveRegex(e){return this.regex instanceof RegExp?this.regex:this.regex(e)}}function Yfe(s,e){if(!e||typeof e!="object")throw new Error("Monarch: expecting a language definition object");const t={languageId:s,includeLF:fk(e.includeLF,!1),noThrow:!1,maxStack:100,start:typeof e.start=="string"?e.start:null,ignoreCase:fk(e.ignoreCase,!1),unicode:fk(e.unicode,!1),tokenPostfix:ade(e.tokenPostfix,"."+s),defaultToken:ade(e.defaultToken,"source"),usesEmbedded:!1,stateNames:{},tokenizer:{},brackets:[]},i=e;i.languageId=s,i.includeLF=t.includeLF,i.ignoreCase=t.ignoreCase,i.unicode=t.unicode,i.noThrow=t.noThrow,i.usesEmbedded=t.usesEmbedded,i.stateNames=e.tokenizer,i.defaultToken=t.defaultToken;function n(l,r,a){for(const d of a){let c=d.include;if(c){if(typeof c!="string")throw as(t,"an 'include' attribute must be a string at: "+l);if(c[0]==="@"&&(c=c.substr(1)),!e.tokenizer[c])throw as(t,"include target '"+c+"' is not defined at: "+l);n(l+"."+c,r,e.tokenizer[c])}else{const h=new Nqe(l);if(Array.isArray(d)&&d.length>=1&&d.length<=3)if(h.setRegex(i,d[0]),d.length>=3)if(typeof d[1]=="string")h.setAction(i,{token:d[1],next:d[2]});else if(typeof d[1]=="object"){const u=d[1];u.next=d[2],h.setAction(i,u)}else throw as(t,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+l);else h.setAction(i,d[1]);else{if(!d.regex)throw as(t,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+l);d.name&&typeof d.name=="string"&&(h.name=d.name),d.matchOnlyAtStart&&(h.matchOnlyAtLineStart=fk(d.matchOnlyAtLineStart,!1)),h.setRegex(i,d.regex),h.setAction(i,d.action)}r.push(h)}}}if(!e.tokenizer||typeof e.tokenizer!="object")throw as(t,"a language definition must define the 'tokenizer' attribute as an object");t.tokenizer=[];for(const l in e.tokenizer)if(e.tokenizer.hasOwnProperty(l)){t.start||(t.start=l);const r=e.tokenizer[l];t.tokenizer[l]=new Array,n("tokenizer."+l,t.tokenizer[l],r)}if(t.usesEmbedded=i.usesEmbedded,e.brackets){if(!Array.isArray(e.brackets))throw as(t,"the 'brackets' attribute must be defined as an array")}else e.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const o=[];for(const l of e.brackets){let r=l;if(r&&Array.isArray(r)&&r.length===3&&(r={token:r[2],open:r[0],close:r[1]}),r.open===r.close)throw as(t,"open and close brackets in a 'brackets' attribute must be different: "+r.open+`
- hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof r.open=="string"&&typeof r.token=="string"&&typeof r.close=="string")o.push({token:r.token+t.tokenPostfix,open:h0(t,r.open),close:h0(t,r.close)});else throw as(t,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return t.brackets=o,t.noThrow=!0,t}function Rqe(s){tV.registerLanguage(s)}function Sqe(){let s=[];return s=s.concat(tV.getLanguages()),s}function Wqe(s){return It.get(Zs).languageIdCodec.encodeLanguageId(s)}function Vqe(s,e){return It.withServices(()=>{const i=It.get(Zs).onDidRequestRichLanguageFeatures(n=>{n===s&&(i.dispose(),e())});return i})}function Qqe(s,e){return It.withServices(()=>{const i=It.get(Zs).onDidRequestBasicLanguageFeatures(n=>{n===s&&(i.dispose(),e())});return i})}function yqe(s,e){if(!It.get(Zs).isRegisteredLanguageId(s))throw new Error(`Cannot set configuration for unknown language ${s}`);return It.get(Qs).register(s,e,100)}class Cqe{constructor(e,t){this._languageId=e,this._actual=t}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(e,t,i){if(typeof this._actual.tokenize=="function")return eT.adaptTokenize(this._languageId,this._actual,e,i);throw new Error("Not supported!")}tokenizeEncoded(e,t,i){const n=this._actual.tokenizeEncoded(e,i);return new P5(n.tokens,n.endState)}}class eT{constructor(e,t,i,n){this._languageId=e,this._actual=t,this._languageService=i,this._standaloneThemeService=n}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(e,t){const i=[];let n=0;for(let o=0,l=e.length;o<l;o++){const r=e[o];let a=r.startIndex;o===0?a=0:a<n&&(a=n),i[o]=new eM(a,r.scopes,t),n=a}return i}static adaptTokenize(e,t,i,n){const o=t.tokenize(i,n),l=eT._toClassicTokens(o.tokens,e);let r;return o.endState.equals(n)?r=n:r=o.endState,new S$(l,r)}tokenize(e,t,i){return eT.adaptTokenize(this._languageId,this._actual,e,i)}_toBinaryTokens(e,t){const i=e.encodeLanguageId(this._languageId),n=this._standaloneThemeService.getColorTheme().tokenTheme,o=[];let l=0,r=0;for(let d=0,c=t.length;d<c;d++){const h=t[d],u=n.match(i,h.scopes)|1024;if(l>0&&o[l-1]===u)continue;let m=h.startIndex;d===0?m=0:m<r&&(m=r),o[l++]=m,o[l++]=u,r=m}const a=new Uint32Array(l);for(let d=0;d<l;d++)a[d]=o[d];return a}tokenizeEncoded(e,t,i){const n=this._actual.tokenize(e,i),o=this._toBinaryTokens(this._languageService.languageIdCodec,n.tokens);let l;return n.endState.equals(i)?l=i:l=n.endState,new P5(o,l)}}function wqe(s){return typeof s.getInitialState=="function"}function Mqe(s){return"tokenizeEncoded"in s}function zfe(s){return s&&typeof s.then=="function"}function Tqe(s){const e=It.get(fc);if(s){const t=[null];for(let i=1,n=s.length;i<n;i++)t[i]=Re.fromHex(s[i]);e.setColorMapOverride(t)}else e.setColorMapOverride(null)}function _fe(s,e){return Mqe(e)?new Cqe(s,e):new eT(s,e,It.get(Zs),It.get(fc))}function Pte(s,e){const t=new dGe(async()=>{const i=await Promise.resolve(e.create());return i?wqe(i)?_fe(s,i):new JM(It.get(Zs),It.get(fc),s,Yfe(s,i),It.get(li)):null});return Ds.registerFactory(s,t)}function Bqe(s,e){if(!It.get(Zs).isRegisteredLanguageId(s))throw new Error(`Cannot set tokens provider for unknown language ${s}`);return zfe(e)?Pte(s,{create:()=>e}):Ds.register(s,_fe(s,e))}function Lqe(s,e){const t=i=>new JM(It.get(Zs),It.get(fc),s,Yfe(s,i),It.get(li));return zfe(e)?Pte(s,{create:()=>e}):Ds.register(s,t(e))}function kqe(s,e){return It.get(lt).referenceProvider.register(s,e)}function Iqe(s,e){return It.get(lt).renameProvider.register(s,e)}function Dqe(s,e){return It.get(lt).newSymbolNamesProvider.register(s,e)}function Gqe(s,e){return It.get(lt).signatureHelpProvider.register(s,e)}function Eqe(s,e){return It.get(lt).hoverProvider.register(s,{provideHover:async(i,n,o,l)=>{const r=i.getWordAtPosition(n);return Promise.resolve(e.provideHover(i,n,o,l)).then(a=>{if(a)return!a.range&&r&&(a.range=new v(n.lineNumber,r.startColumn,n.lineNumber,r.endColumn)),a.range||(a.range=new v(n.lineNumber,n.column,n.lineNumber,n.column)),a})}})}function vqe(s,e){return It.get(lt).documentSymbolProvider.register(s,e)}function xqe(s,e){return It.get(lt).documentHighlightProvider.register(s,e)}function Jqe(s,e){return It.get(lt).linkedEditingRangeProvider.register(s,e)}function Xqe(s,e){return It.get(lt).definitionProvider.register(s,e)}function Yqe(s,e){return It.get(lt).implementationProvider.register(s,e)}function zqe(s,e){return It.get(lt).typeDefinitionProvider.register(s,e)}function _qe(s,e){return It.get(lt).codeLensProvider.register(s,e)}function Oqe(s,e,t){return It.get(lt).codeActionProvider.register(s,{providedCodeActionKinds:t==null?void 0:t.providedCodeActionKinds,documentation:t==null?void 0:t.documentation,provideCodeActions:(n,o,l,r)=>{const d=It.get(Ep).read({resource:n.uri}).filter(c=>v.areIntersectingOrTouching(c,o));return e.provideCodeActions(n,o,{markers:d,only:l.only,trigger:l.trigger},r)},resolveCodeAction:e.resolveCodeAction})}function jqe(s,e){return It.get(lt).documentFormattingEditProvider.register(s,e)}function Hqe(s,e){return It.get(lt).documentRangeFormattingEditProvider.register(s,e)}function Pqe(s,e){return It.get(lt).onTypeFormattingEditProvider.register(s,e)}function Kqe(s,e){return It.get(lt).linkProvider.register(s,e)}function qqe(s,e){return It.get(lt).completionProvider.register(s,e)}function $qe(s,e){return It.get(lt).colorProvider.register(s,e)}function e$e(s,e){return It.get(lt).foldingRangeProvider.register(s,e)}function t$e(s,e){return It.get(lt).declarationProvider.register(s,e)}function i$e(s,e){return It.get(lt).selectionRangeProvider.register(s,e)}function n$e(s,e){return It.get(lt).documentSemanticTokensProvider.register(s,e)}function s$e(s,e){return It.get(lt).documentRangeSemanticTokensProvider.register(s,e)}function o$e(s,e){return It.get(lt).inlineCompletionsProvider.register(s,e)}function l$e(s,e){return It.get(lt).inlineEditProvider.register(s,e)}function r$e(s,e){return It.get(lt).inlayHintsProvider.register(s,e)}function a$e(){return{register:Rqe,getLanguages:Sqe,onLanguage:Vqe,onLanguageEncountered:Qqe,getEncodedLanguageId:Wqe,setLanguageConfiguration:yqe,setColorMap:Tqe,registerTokensProviderFactory:Pte,setTokensProvider:Bqe,setMonarchTokensProvider:Lqe,registerReferenceProvider:kqe,registerRenameProvider:Iqe,registerNewSymbolNameProvider:Dqe,registerCompletionItemProvider:qqe,registerSignatureHelpProvider:Gqe,registerHoverProvider:Eqe,registerDocumentSymbolProvider:vqe,registerDocumentHighlightProvider:xqe,registerLinkedEditingRangeProvider:Jqe,registerDefinitionProvider:Xqe,registerImplementationProvider:Yqe,registerTypeDefinitionProvider:zqe,registerCodeLensProvider:_qe,registerCodeActionProvider:Oqe,registerDocumentFormattingEditProvider:jqe,registerDocumentRangeFormattingEditProvider:Hqe,registerOnTypeFormattingEditProvider:Pqe,registerLinkProvider:Kqe,registerColorProvider:$qe,registerFoldingRangeProvider:e$e,registerDeclarationProvider:t$e,registerSelectionRangeProvider:i$e,registerDocumentSemanticTokensProvider:n$e,registerDocumentRangeSemanticTokensProvider:s$e,registerInlineCompletionsProvider:o$e,registerInlineEditProvider:l$e,registerInlayHintsProvider:r$e,DocumentHighlightKind:Dj,CompletionItemKind:Mj,CompletionItemTag:Tj,CompletionItemInsertTextRule:wj,SymbolKind:pH,SymbolTag:gH,IndentAction:Yj,CompletionTriggerKind:Bj,SignatureHelpTriggerKind:mH,InlayHintKind:_j,InlineCompletionTriggerKind:Oj,InlineEditTriggerKind:jj,CodeActionTriggerType:Cj,NewSymbolNameTag:tH,NewSymbolNameTriggerKind:iH,PartialAcceptTriggerKind:oH,HoverVerbosityAction:Xj,FoldingRangeKind:_U,SelectedSuggestionInfo:Ope}}const Kte=Zi("IEditorCancelService"),Ofe=new Ke("cancellableOperation",!1,U("cancellableOperation","Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));Ci(Kte,class{constructor(){this._tokens=new WeakMap}add(s,e){let t=this._tokens.get(s);t||(t=s.invokeWithinContext(n=>{const o=Ofe.bindTo(n.get(wt)),l=new Pr;return{key:o,tokens:l}}),this._tokens.set(s,t));let i;return t.key.set(!0),i=t.tokens.push(e),()=>{i&&(i(),t.key.set(!t.tokens.isEmpty()),i=void 0)}}cancel(s){const e=this._tokens.get(s);if(!e)return;const t=e.tokens.pop();t&&(t.cancel(),e.key.set(!e.tokens.isEmpty()))}},1);class d$e extends Ws{constructor(e,t){super(t),this.editor=e,this._unregister=e.invokeWithinContext(i=>i.get(Kte).add(e,this))}dispose(){this._unregister(),super.dispose()}}Oe(new class extends Io{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:Ofe})}runEditorCommand(s,e){s.get(Kte).cancel(e)}});let jfe=class H4{constructor(e,t){if(this.flags=t,this.flags&1){const i=e.getModel();this.modelVersionId=i?FA("{0}#{1}",i.uri.toString(),i.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=e.getPosition():this.position=null,this.flags&2?this.selection=e.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=e.getScrollLeft(),this.scrollTop=e.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(e){if(!(e instanceof H4))return!1;const t=e;return!(this.modelVersionId!==t.modelVersionId||this.scrollLeft!==t.scrollLeft||this.scrollTop!==t.scrollTop||!this.position&&t.position||this.position&&!t.position||this.position&&t.position&&!this.position.equals(t.position)||!this.selection&&t.selection||this.selection&&!t.selection||this.selection&&t.selection&&!this.selection.equalsRange(t.selection))}validate(e){return this._equals(new H4(e,this.flags))}};class of extends d$e{constructor(e,t,i,n){super(e,n),this._listener=new Ze,t&4&&this._listener.add(e.onDidChangeCursorPosition(o=>{(!i||!v.containsPosition(i,o.position))&&this.cancel()})),t&2&&this._listener.add(e.onDidChangeCursorSelection(o=>{(!i||!v.containsRange(i,o.selection))&&this.cancel()})),t&8&&this._listener.add(e.onDidScrollChange(o=>this.cancel())),t&1&&(this._listener.add(e.onDidChangeModel(o=>this.cancel())),this._listener.add(e.onDidChangeModelContent(o=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}class qte extends Ws{constructor(e,t){super(t),this._listener=e.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}function Mp(s){return s&&typeof s.getEditorType=="function"?s.getEditorType()===RB.ICodeEditor:!1}function $te(s){return s&&typeof s.getEditorType=="function"?s.getEditorType()===RB.IDiffEditor:!1}function c$e(s){return!!s&&typeof s=="object"&&typeof s.onDidChangeActiveEditor=="function"}function Hfe(s){return Mp(s)?s:$te(s)?s.getModifiedEditor():c$e(s)&&Mp(s.activeCodeEditor)?s.activeCodeEditor:null}class NV{static _handleEolEdits(e,t){let i;const n=[];for(const o of t)typeof o.eol=="number"&&(i=o.eol),o.range&&typeof o.text=="string"&&n.push(o);return typeof i=="number"&&e.hasModel()&&e.getModel().pushEOL(i),n}static _isFullModelReplaceEdit(e,t){if(!e.hasModel())return!1;const i=e.getModel(),n=i.validateRange(t.range);return i.getFullModelRange().equalsRange(n)}static execute(e,t,i){i&&e.pushUndoStop();const n=em.capture(e),o=NV._handleEolEdits(e,t);o.length===1&&NV._isFullModelReplaceEdit(e,o[0])?e.executeEdits("formatEditsCommand",o.map(l=>Rs.replace(v.lift(l.range),l.text))):e.executeEdits("formatEditsCommand",o.map(l=>Rs.replaceMove(v.lift(l.range),l.text))),i&&e.pushUndoStop(),n.restoreRelativeVerticalPositionOfCursor(e)}}class cde{constructor(e){this.value=e,this._lower=e.toLowerCase()}static toKey(e){return typeof e=="string"?e.toLowerCase():e._lower}}class h$e{constructor(e){if(this._set=new Set,e)for(const t of e)this.add(t)}add(e){this._set.add(cde.toKey(e))}has(e){return this._set.has(cde.toKey(e))}}function Pfe(s,e,t){const i=[],n=new h$e,o=s.ordered(t);for(const r of o)i.push(r),r.extensionId&&n.add(r.extensionId);const l=e.ordered(t);for(const r of l){if(r.extensionId){if(n.has(r.extensionId))continue;n.add(r.extensionId)}i.push({displayName:r.displayName,extensionId:r.extensionId,provideDocumentFormattingEdits(a,d,c){return r.provideDocumentRangeFormattingEdits(a,a.getFullModelRange(),d,c)}})}return i}const xw=class xw{static setFormatterSelector(e){return{dispose:xw._selectors.unshift(e)}}static async select(e,t,i,n){if(e.length===0)return;const o=Ti.first(xw._selectors);if(o)return await o(e,t,i,n)}};xw._selectors=new Pr;let tT=xw;async function Kfe(s,e,t,i,n,o,l){const r=s.get(bt),{documentRangeFormattingEditProvider:a}=s.get(lt),d=Mp(e)?e.getModel():e,c=a.ordered(d),h=await tT.select(c,d,i,2);h&&(n.report(h),await r.invokeFunction(u$e,h,e,t,o,l))}async function u$e(s,e,t,i,n,o){var f,Z;const l=s.get(_a),r=s.get(El),a=s.get(Ff);let d,c;Mp(t)?(d=t.getModel(),c=new of(t,5,void 0,n)):(d=t,c=new qte(t,n));const h=[];let u=0;for(const A of m$(i).sort(v.compareRangesUsingStarts))u>0&&v.areIntersectingOrTouching(h[u-1],A)?h[u-1]=v.fromPositions(h[u-1].getStartPosition(),A.getEndPosition()):u=h.push(A);const m=async A=>{var W,Q;r.trace("[format][provideDocumentRangeFormattingEdits] (request)",(W=e.extensionId)==null?void 0:W.value,A);const N=await e.provideDocumentRangeFormattingEdits(d,A,d.getFormattingOptions(),c.token)||[];return r.trace("[format][provideDocumentRangeFormattingEdits] (response)",(Q=e.extensionId)==null?void 0:Q.value,N),N},p=(A,N)=>{if(!A.length||!N.length)return!1;const W=A.reduce((Q,R)=>v.plusRange(Q,R.range),A[0].range);if(!N.some(Q=>v.intersectRanges(W,Q.range)))return!1;for(const Q of A)for(const R of N)if(v.intersectRanges(Q.range,R.range))return!0;return!1},g=[],b=[];try{if(typeof e.provideDocumentRangesFormattingEdits=="function"){r.trace("[format][provideDocumentRangeFormattingEdits] (request)",(f=e.extensionId)==null?void 0:f.value,h);const A=await e.provideDocumentRangesFormattingEdits(d,h,d.getFormattingOptions(),c.token)||[];r.trace("[format][provideDocumentRangeFormattingEdits] (response)",(Z=e.extensionId)==null?void 0:Z.value,A),b.push(A)}else{for(const A of h){if(c.token.isCancellationRequested)return!0;b.push(await m(A))}for(let A=0;A<h.length;++A)for(let N=A+1;N<h.length;++N){if(c.token.isCancellationRequested)return!0;if(p(b[A],b[N])){const W=v.plusRange(h[A],h[N]),Q=await m(W);h.splice(N,1),h.splice(A,1),h.push(W),b.splice(N,1),b.splice(A,1),b.push(Q),A=0,N=0}}}for(const A of b){if(c.token.isCancellationRequested)return!0;const N=await l.computeMoreMinimalEdits(d.uri,A);N&&g.push(...N)}}finally{c.dispose()}if(g.length===0)return!1;if(Mp(t))NV.execute(t,g,!0),t.revealPositionInCenterIfOutsideViewport(t.getPosition(),1);else{const[{range:A}]=g,N=new dt(A.startLineNumber,A.startColumn,A.endLineNumber,A.endColumn);d.pushEditOperations([N],g.map(W=>({text:W.text,range:v.lift(W.range),forceMoveMarkers:!0})),W=>{for(const{range:Q}of W)if(v.areIntersectingOrTouching(Q,N))return[new dt(Q.startLineNumber,Q.startColumn,Q.endLineNumber,Q.endColumn)];return null})}return a.playSignal(Pd.format,{userGesture:o}),!0}async function m$e(s,e,t,i,n,o){const l=s.get(bt),r=s.get(lt),a=Mp(e)?e.getModel():e,d=Pfe(r.documentFormattingEditProvider,r.documentRangeFormattingEditProvider,a),c=await tT.select(d,a,t,1);c&&(i.report(c),await l.invokeFunction(p$e,c,e,t,n,o))}async function p$e(s,e,t,i,n,o){const l=s.get(_a),r=s.get(Ff);let a,d;Mp(t)?(a=t.getModel(),d=new of(t,5,void 0,n)):(a=t,d=new qte(t,n));let c;try{const h=await e.provideDocumentFormattingEdits(a,a.getFormattingOptions(),d.token);if(c=await l.computeMoreMinimalEdits(a.uri,h),d.token.isCancellationRequested)return!0}finally{d.dispose()}if(!c||c.length===0)return!1;if(Mp(t))NV.execute(t,c,i!==2),i!==2&&t.revealPositionInCenterIfOutsideViewport(t.getPosition(),1);else{const[{range:h}]=c,u=new dt(h.startLineNumber,h.startColumn,h.endLineNumber,h.endColumn);a.pushEditOperations([u],c.map(m=>({text:m.text,range:v.lift(m.range),forceMoveMarkers:!0})),m=>{for(const{range:p}of m)if(v.areIntersectingOrTouching(p,u))return[new dt(p.startLineNumber,p.startColumn,p.endLineNumber,p.endColumn)];return null})}return r.playSignal(Pd.format,{userGesture:o}),!0}async function g$e(s,e,t,i,n,o){const l=e.documentRangeFormattingEditProvider.ordered(t);for(const r of l){const a=await Promise.resolve(r.provideDocumentRangeFormattingEdits(t,i,n,o)).catch(Os);if(Sr(a))return await s.computeMoreMinimalEdits(t.uri,a)}}async function b$e(s,e,t,i,n){const o=Pfe(e.documentFormattingEditProvider,e.documentRangeFormattingEditProvider,t);for(const l of o){const r=await Promise.resolve(l.provideDocumentFormattingEdits(t,i,n)).catch(Os);if(Sr(r))return await s.computeMoreMinimalEdits(t.uri,r)}}function qfe(s,e,t,i,n,o,l){const r=e.onTypeFormattingEditProvider.ordered(t);return r.length===0||r[0].autoFormatTriggerCharacters.indexOf(n)<0?Promise.resolve(void 0):Promise.resolve(r[0].provideOnTypeFormattingEdits(t,i,n,o,l)).catch(Os).then(a=>s.computeMoreMinimalEdits(t.uri,a))}Bi.registerCommand("_executeFormatRangeProvider",async function(s,...e){const[t,i,n]=e;Yi(At.isUri(t)),Yi(v.isIRange(i));const o=s.get(Xa),l=s.get(_a),r=s.get(lt),a=await o.createModelReference(t);try{return g$e(l,r,a.object.textEditorModel,v.lift(i),n,$t.None)}finally{a.dispose()}});Bi.registerCommand("_executeFormatDocumentProvider",async function(s,...e){const[t,i]=e;Yi(At.isUri(t));const n=s.get(Xa),o=s.get(_a),l=s.get(lt),r=await n.createModelReference(t);try{return b$e(o,l,r.object.textEditorModel,i,$t.None)}finally{r.dispose()}});Bi.registerCommand("_executeFormatOnTypeProvider",async function(s,...e){const[t,i,n,o]=e;Yi(At.isUri(t)),Yi(oe.isIPosition(i)),Yi(typeof n=="string");const l=s.get(Xa),r=s.get(_a),a=s.get(lt),d=await l.createModelReference(t);try{return qfe(r,a,d.object.textEditorModel,oe.lift(i),n,o,$t.None)}finally{d.dispose()}});om.wrappingIndent.defaultValue=0;om.glyphMargin.defaultValue=!1;om.autoIndent.defaultValue=3;om.overviewRulerLanes.defaultValue=2;tT.setFormatterSelector((s,e,t)=>Promise.resolve(s[0]));const ha=jpe();ha.editor=Uqe();ha.languages=a$e();const U$e=ha.CancellationTokenSource,f$e=ha.Emitter,F$e=ha.KeyCode,Z$e=ha.KeyMod,A$e=ha.Position,N$e=ha.Range,R$e=ha.Selection,S$e=ha.SelectionDirection,W$e=ha.MarkerSeverity,V$e=ha.MarkerTag,Q$e=ha.Uri,y$e=ha.Token,$fe=ha.editor,C$e=ha.languages,r_=globalThis.MonacoEnvironment;(r_!=null&&r_.globalAPI||typeof define=="function"&&define.amd)&&(globalThis.monaco=ha);typeof globalThis.require<"u"&&typeof globalThis.require.config=="function"&&globalThis.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]});const QB=Object.freeze(Object.defineProperty({__proto__:null,CancellationTokenSource:U$e,Emitter:f$e,KeyCode:F$e,KeyMod:Z$e,MarkerSeverity:W$e,MarkerTag:V$e,Position:A$e,Range:N$e,Selection:R$e,SelectionDirection:S$e,Token:y$e,Uri:Q$e,editor:$fe,languages:C$e},Symbol.toStringTag,{value:"Module"}));/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var w$e=Object.defineProperty,M$e=Object.getOwnPropertyDescriptor,T$e=Object.getOwnPropertyNames,B$e=Object.prototype.hasOwnProperty,hde=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of T$e(e))!B$e.call(s,n)&&n!==t&&w$e(s,n,{get:()=>e[n],enumerable:!(i=M$e(e,n))||i.enumerable});return s},L$e=(s,e,t)=>(hde(s,e,"default"),t&&hde(t,e,"default")),$y={};L$e($y,QB);var eFe={},a_={},k$e=class tFe{static getOrCreate(e){return a_[e]||(a_[e]=new tFe(e)),a_[e]}constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((t,i)=>{this._lazyLoadPromiseResolve=t,this._lazyLoadPromiseReject=i})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,eFe[this._languageId].loader().then(e=>this._lazyLoadPromiseResolve(e),e=>this._lazyLoadPromiseReject(e))),this._lazyLoadPromise}};function Vt(s){const e=s.id;eFe[e]=s,$y.languages.register(s);const t=k$e.getOrCreate(e);$y.languages.registerTokensProviderFactory(e,{create:async()=>(await t.load()).language}),$y.languages.onLanguageEncountered(e,async()=>{const i=await t.load();$y.languages.setLanguageConfiguration(e,i.conf)})}Vt({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>Ut(()=>import("./abap-cc08d55d.js"),[],import.meta.url)});Vt({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>Ut(()=>import("./apex-1f57875b.js"),[],import.meta.url)});Vt({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>Ut(()=>import("./azcli-01f8ceb4.js"),[],import.meta.url)});Vt({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>Ut(()=>import("./bat-927b90fa.js"),[],import.meta.url)});Vt({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>Ut(()=>import("./bicep-b6714a33.js"),[],import.meta.url)});Vt({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>Ut(()=>import("./cameligo-c6736a8d.js"),[],import.meta.url)});Vt({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>Ut(()=>import("./clojure-e525a5e8.js"),[],import.meta.url)});Vt({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>Ut(()=>import("./coffee-42de5eb2.js"),[],import.meta.url)});Vt({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>Ut(()=>import("./cpp-18c0fc4b.js"),[],import.meta.url)});Vt({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>Ut(()=>import("./cpp-18c0fc4b.js"),[],import.meta.url)});Vt({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>Ut(()=>import("./csharp-a63eb606.js"),[],import.meta.url)});Vt({id:"csp",extensions:[".csp"],aliases:["CSP","csp"],loader:()=>Ut(()=>import("./csp-165e95c8.js"),[],import.meta.url)});Vt({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>Ut(()=>import("./css-982ec3d9.js"),[],import.meta.url)});Vt({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>Ut(()=>import("./cypher-2044d661.js"),[],import.meta.url)});Vt({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>Ut(()=>import("./dart-95d35cad.js"),[],import.meta.url)});Vt({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>Ut(()=>import("./dockerfile-4446a57c.js"),[],import.meta.url)});Vt({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>Ut(()=>import("./ecl-12a2dbee.js"),[],import.meta.url)});Vt({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>Ut(()=>import("./elixir-02aec513.js"),[],import.meta.url)});Vt({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>Ut(()=>import("./flow9-a8f524dc.js"),[],import.meta.url)});Vt({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>Ut(()=>import("./fsharp-7e8e6a66.js"),[],import.meta.url)});Vt({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagAutoInterpolationDollar)});Vt({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagAngleInterpolationDollar)});Vt({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagBracketInterpolationDollar)});Vt({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagAngleInterpolationBracket)});Vt({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagBracketInterpolationBracket)});Vt({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagAutoInterpolationDollar)});Vt({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>Ut(()=>import("./freemarker2-3409f2e5.js"),["./freemarker2-3409f2e5.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url).then(s=>s.TagAutoInterpolationBracket)});Vt({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>Ut(()=>import("./go-9d89e322.js"),[],import.meta.url)});Vt({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>Ut(()=>import("./graphql-ed4730b7.js"),[],import.meta.url)});Vt({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>Ut(()=>import("./handlebars-0f49547b.js"),["./handlebars-0f49547b.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>Ut(()=>import("./hcl-fb184eb8.js"),[],import.meta.url)});Vt({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:()=>Ut(()=>import("./html-b8d92086.js"),["./html-b8d92086.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>Ut(()=>import("./ini-d685139c.js"),[],import.meta.url)});Vt({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>Ut(()=>import("./java-e24ca7a1.js"),[],import.meta.url)});Vt({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>Ut(()=>import("./javascript-6a32e7fc.js"),["./javascript-6a32e7fc.js","./typescript-75404d2c.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>Ut(()=>import("./julia-2ac6394f.js"),[],import.meta.url)});Vt({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>Ut(()=>import("./kotlin-8fc662c8.js"),[],import.meta.url)});Vt({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>Ut(()=>import("./less-bfd58748.js"),[],import.meta.url)});Vt({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>Ut(()=>import("./lexon-bac7d755.js"),[],import.meta.url)});Vt({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>Ut(()=>import("./lua-2826648b.js"),[],import.meta.url)});Vt({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>Ut(()=>import("./liquid-1fbf35be.js"),["./liquid-1fbf35be.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>Ut(()=>import("./m3-3d2e9f6f.js"),[],import.meta.url)});Vt({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>Ut(()=>import("./markdown-661fcb5a.js"),[],import.meta.url)});Vt({id:"mdx",extensions:[".mdx"],aliases:["MDX","mdx"],loader:()=>Ut(()=>import("./mdx-9e4c0be6.js"),["./mdx-9e4c0be6.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>Ut(()=>import("./mips-2dce1757.js"),[],import.meta.url)});Vt({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>Ut(()=>import("./msdax-00a309df.js"),[],import.meta.url)});Vt({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>Ut(()=>import("./mysql-98cf3b47.js"),[],import.meta.url)});Vt({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>Ut(()=>import("./objective-c-cc56e969.js"),[],import.meta.url)});Vt({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>Ut(()=>import("./pascal-81aa0fca.js"),[],import.meta.url)});Vt({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>Ut(()=>import("./pascaligo-48ad6fd9.js"),[],import.meta.url)});Vt({id:"perl",extensions:[".pl",".pm"],aliases:["Perl","pl"],loader:()=>Ut(()=>import("./perl-88f67ba4.js"),[],import.meta.url)});Vt({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>Ut(()=>import("./pgsql-5ed4bbd0.js"),[],import.meta.url)});Vt({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>Ut(()=>import("./php-b4f95778.js"),[],import.meta.url)});Vt({id:"pla",extensions:[".pla"],loader:()=>Ut(()=>import("./pla-5b1cff9f.js"),[],import.meta.url)});Vt({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>Ut(()=>import("./postiats-85929be7.js"),[],import.meta.url)});Vt({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>Ut(()=>import("./powerquery-b7a070c4.js"),[],import.meta.url)});Vt({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>Ut(()=>import("./powershell-b8a6d6cc.js"),[],import.meta.url)});Vt({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>Ut(()=>import("./protobuf-05455955.js"),[],import.meta.url)});Vt({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>Ut(()=>import("./pug-90925ab8.js"),[],import.meta.url)});Vt({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>Ut(()=>import("./python-40b24ac6.js"),["./python-40b24ac6.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>Ut(()=>import("./qsharp-a069f29b.js"),[],import.meta.url)});Vt({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>Ut(()=>import("./r-12e54150.js"),[],import.meta.url)});Vt({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>Ut(()=>import("./razor-d0226f20.js"),["./razor-d0226f20.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>Ut(()=>import("./redis-bb3a1b76.js"),[],import.meta.url)});Vt({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>Ut(()=>import("./redshift-df35d8cf.js"),[],import.meta.url)});Vt({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>Ut(()=>import("./restructuredtext-d6d2caf0.js"),[],import.meta.url)});Vt({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>Ut(()=>import("./ruby-9316b7ff.js"),[],import.meta.url)});Vt({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>Ut(()=>import("./rust-21ab97eb.js"),[],import.meta.url)});Vt({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>Ut(()=>import("./sb-b997d7c8.js"),[],import.meta.url)});Vt({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:()=>Ut(()=>import("./scala-400099bb.js"),[],import.meta.url)});Vt({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>Ut(()=>import("./scheme-b34f1909.js"),[],import.meta.url)});Vt({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>Ut(()=>import("./scss-04141591.js"),[],import.meta.url)});Vt({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>Ut(()=>import("./shell-1832544c.js"),[],import.meta.url)});Vt({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>Ut(()=>import("./solidity-895ee769.js"),[],import.meta.url)});Vt({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>Ut(()=>import("./sophia-3e132745.js"),[],import.meta.url)});Vt({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>Ut(()=>import("./sparql-e38155f4.js"),[],import.meta.url)});Vt({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>Ut(()=>import("./sql-528ba10f.js"),[],import.meta.url)});Vt({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib",".TcPOU",".TcDUT",".TcGVL",".TcIO"],aliases:["StructuredText","scl","stl"],loader:()=>Ut(()=>import("./st-56011ceb.js"),[],import.meta.url)});Vt({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>Ut(()=>import("./swift-c11249a1.js"),[],import.meta.url)});Vt({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>Ut(()=>import("./systemverilog-6707b904.js"),[],import.meta.url)});Vt({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>Ut(()=>import("./systemverilog-6707b904.js"),[],import.meta.url)});Vt({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>Ut(()=>import("./tcl-5b54d5c8.js"),[],import.meta.url)});Vt({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>Ut(()=>import("./twig-6e0ba59b.js"),[],import.meta.url)});Vt({id:"typescript",extensions:[".ts",".tsx",".cts",".mts"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>Ut(()=>import("./typescript-75404d2c.js"),["./typescript-75404d2c.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"typespec",extensions:[".tsp"],aliases:["TypeSpec"],loader:()=>Ut(()=>import("./typespec-cd8d2038.js"),[],import.meta.url)});Vt({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>Ut(()=>import("./vb-f5dd6a56.js"),[],import.meta.url)});Vt({id:"wgsl",extensions:[".wgsl"],aliases:["WebGPU Shading Language","WGSL","wgsl"],loader:()=>Ut(()=>import("./wgsl-093fb352.js"),[],import.meta.url)});Vt({id:"xml",extensions:[".xml",".xsd",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xslt",".xsl"],firstLine:"(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",aliases:["XML","xml"],mimetypes:["text/xml","application/xml","application/xaml+xml","application/xml-dtd"],loader:()=>Ut(()=>import("./xml-e434a0de.js"),["./xml-e434a0de.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});Vt({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml","text/x-yaml"],loader:()=>Ut(()=>import("./yaml-b75f2d87.js"),["./yaml-b75f2d87.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)});/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var I$e=Object.defineProperty,D$e=Object.getOwnPropertyDescriptor,G$e=Object.getOwnPropertyNames,E$e=Object.prototype.hasOwnProperty,ude=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of G$e(e))!E$e.call(s,n)&&n!==t&&I$e(s,n,{get:()=>e[n],enumerable:!(i=D$e(e,n))||i.enumerable});return s},v$e=(s,e,t)=>(ude(s,e,"default"),t&&ude(t,e,"default")),s1={};v$e(s1,QB);var eie=class{constructor(e,t,i){this._onDidChange=new s1.Emitter,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(e){this.setOptions(e)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},tie={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:"collapse",maxPreserveNewLines:void 0,preserveNewLines:!0}},iie={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},iFe=new eie("css",tie,iie),nFe=new eie("scss",tie,iie),sFe=new eie("less",tie,iie);s1.languages.css={cssDefaults:iFe,lessDefaults:sFe,scssDefaults:nFe};function nie(){return Ut(()=>import("./cssMode-38e736fd.js"),["./cssMode-38e736fd.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)}s1.languages.onLanguage("less",()=>{nie().then(s=>s.setupMode(sFe))});s1.languages.onLanguage("scss",()=>{nie().then(s=>s.setupMode(nFe))});s1.languages.onLanguage("css",()=>{nie().then(s=>s.setupMode(iFe))});/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var x$e=Object.defineProperty,J$e=Object.getOwnPropertyDescriptor,X$e=Object.getOwnPropertyNames,Y$e=Object.prototype.hasOwnProperty,mde=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of X$e(e))!Y$e.call(s,n)&&n!==t&&x$e(s,n,{get:()=>e[n],enumerable:!(i=J$e(e,n))||i.enumerable});return s},z$e=(s,e,t)=>(mde(s,e,"default"),t&&mde(t,e,"default")),oz={};z$e(oz,QB);var _$e=class{constructor(e,t,i){this._onDidChange=new oz.Emitter,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},O$e={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},lz={format:O$e,suggest:{},data:{useDefaultDataProvider:!0}};function rz(s){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:s===IC,documentFormattingEdits:s===IC,documentRangeFormattingEdits:s===IC}}var IC="html",pde="handlebars",gde="razor",oFe=az(IC,lz,rz(IC)),j$e=oFe.defaults,lFe=az(pde,lz,rz(pde)),H$e=lFe.defaults,rFe=az(gde,lz,rz(gde)),P$e=rFe.defaults;oz.languages.html={htmlDefaults:j$e,razorDefaults:P$e,handlebarDefaults:H$e,htmlLanguageService:oFe,handlebarLanguageService:lFe,razorLanguageService:rFe,registerHTMLLanguageService:az};function K$e(){return Ut(()=>import("./htmlMode-19994da3.js"),["./htmlMode-19994da3.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)}function az(s,e=lz,t=rz(s)){const i=new _$e(s,e,t);let n;const o=oz.languages.onLanguage(s,async()=>{n=(await K$e()).setupMode(i)});return{defaults:i,dispose(){o.dispose(),n==null||n.dispose(),n=void 0}}}/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var q$e=Object.defineProperty,$$e=Object.getOwnPropertyDescriptor,eet=Object.getOwnPropertyNames,tet=Object.prototype.hasOwnProperty,bde=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of eet(e))!tet.call(s,n)&&n!==t&&q$e(s,n,{get:()=>e[n],enumerable:!(i=$$e(e,n))||i.enumerable});return s},iet=(s,e,t)=>(bde(s,e,"default"),t&&bde(t,e,"default")),yB={};iet(yB,QB);var net=class{constructor(e,t,i){this._onDidChange=new yB.Emitter,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(i)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},set={validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:"warning",schemaValidation:"warning",comments:"error",trailingCommas:"error"},oet={documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},aFe=new net("json",set,oet),ret=()=>dFe().then(s=>s.getWorker());yB.languages.json={jsonDefaults:aFe,getWorker:ret};function dFe(){return Ut(()=>import("./jsonMode-f3947561.js"),["./jsonMode-f3947561.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)}yB.languages.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]});yB.languages.onLanguage("json",()=>{dFe().then(s=>s.setupMode(aFe))});/*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.52.2(404545bded1df6ffa41ea0af4e8ddb219018c6c1)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/var aet=Object.defineProperty,det=Object.getOwnPropertyDescriptor,cet=Object.getOwnPropertyNames,het=Object.prototype.hasOwnProperty,Ude=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of cet(e))!het.call(s,n)&&n!==t&&aet(s,n,{get:()=>e[n],enumerable:!(i=det(e,n))||i.enumerable});return s},uet=(s,e,t)=>(Ude(s,e,"default"),t&&Ude(t,e,"default")),met="5.4.5",RV={};uet(RV,QB);var cFe=(s=>(s[s.None=0]="None",s[s.CommonJS=1]="CommonJS",s[s.AMD=2]="AMD",s[s.UMD=3]="UMD",s[s.System=4]="System",s[s.ES2015=5]="ES2015",s[s.ESNext=99]="ESNext",s))(cFe||{}),hFe=(s=>(s[s.None=0]="None",s[s.Preserve=1]="Preserve",s[s.React=2]="React",s[s.ReactNative=3]="ReactNative",s[s.ReactJSX=4]="ReactJSX",s[s.ReactJSXDev=5]="ReactJSXDev",s))(hFe||{}),uFe=(s=>(s[s.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",s[s.LineFeed=1]="LineFeed",s))(uFe||{}),mFe=(s=>(s[s.ES3=0]="ES3",s[s.ES5=1]="ES5",s[s.ES2015=2]="ES2015",s[s.ES2016=3]="ES2016",s[s.ES2017=4]="ES2017",s[s.ES2018=5]="ES2018",s[s.ES2019=6]="ES2019",s[s.ES2020=7]="ES2020",s[s.ESNext=99]="ESNext",s[s.JSON=100]="JSON",s[s.Latest=99]="Latest",s))(mFe||{}),pFe=(s=>(s[s.Classic=1]="Classic",s[s.NodeJs=2]="NodeJs",s))(pFe||{}),gFe=class{constructor(s,e,t,i,n){this._onDidChange=new RV.Emitter,this._onDidExtraLibsChange=new RV.Emitter,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(s),this.setDiagnosticsOptions(e),this.setWorkerOptions(t),this.setInlayHintsOptions(i),this.setModeConfiguration(n),this._onDidExtraLibsChangeTimeout=-1}get onDidChange(){return this._onDidChange.event}get onDidExtraLibsChange(){return this._onDidExtraLibsChange.event}get modeConfiguration(){return this._modeConfiguration}get workerOptions(){return this._workerOptions}get inlayHintsOptions(){return this._inlayHintsOptions}getExtraLibs(){return this._extraLibs}addExtraLib(s,e){let t;if(typeof e>"u"?t=`ts:extralib-${Math.random().toString(36).substring(2,15)}`:t=e,this._extraLibs[t]&&this._extraLibs[t].content===s)return{dispose:()=>{}};let i=1;return this._removedExtraLibs[t]&&(i=this._removedExtraLibs[t]+1),this._extraLibs[t]&&(i=this._extraLibs[t].version+1),this._extraLibs[t]={content:s,version:i},this._fireOnDidExtraLibsChangeSoon(),{dispose:()=>{let n=this._extraLibs[t];n&&n.version===i&&(delete this._extraLibs[t],this._removedExtraLibs[t]=i,this._fireOnDidExtraLibsChangeSoon())}}}setExtraLibs(s){for(const e in this._extraLibs)this._removedExtraLibs[e]=this._extraLibs[e].version;if(this._extraLibs=Object.create(null),s&&s.length>0)for(const e of s){const t=e.filePath||`ts:extralib-${Math.random().toString(36).substring(2,15)}`,i=e.content;let n=1;this._removedExtraLibs[t]&&(n=this._removedExtraLibs[t]+1),this._extraLibs[t]={content:i,version:n}}this._fireOnDidExtraLibsChangeSoon()}_fireOnDidExtraLibsChangeSoon(){this._onDidExtraLibsChangeTimeout===-1&&(this._onDidExtraLibsChangeTimeout=window.setTimeout(()=>{this._onDidExtraLibsChangeTimeout=-1,this._onDidExtraLibsChange.fire(void 0)},0))}getCompilerOptions(){return this._compilerOptions}setCompilerOptions(s){this._compilerOptions=s||Object.create(null),this._onDidChange.fire(void 0)}getDiagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(s){this._diagnosticsOptions=s||Object.create(null),this._onDidChange.fire(void 0)}setWorkerOptions(s){this._workerOptions=s||Object.create(null),this._onDidChange.fire(void 0)}setInlayHintsOptions(s){this._inlayHintsOptions=s||Object.create(null),this._onDidChange.fire(void 0)}setMaximumWorkerIdleTime(s){}setEagerModelSync(s){this._eagerModelSync=s}getEagerModelSync(){return this._eagerModelSync}setModeConfiguration(s){this._modeConfiguration=s||Object.create(null),this._onDidChange.fire(void 0)}},pet=met,bFe={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,diagnostics:!0,documentRangeFormattingEdits:!0,signatureHelp:!0,onTypeFormattingEdits:!0,codeActions:!0,inlayHints:!0},UFe=new gFe({allowNonTsExtensions:!0,target:99},{noSemanticValidation:!1,noSyntaxValidation:!1,onlyVisible:!1},{},{},bFe),fFe=new gFe({allowNonTsExtensions:!0,allowJs:!0,target:99},{noSemanticValidation:!0,noSyntaxValidation:!1,onlyVisible:!1},{},{},bFe),get=()=>dz().then(s=>s.getTypeScriptWorker()),bet=()=>dz().then(s=>s.getJavaScriptWorker());RV.languages.typescript={ModuleKind:cFe,JsxEmit:hFe,NewLineKind:uFe,ScriptTarget:mFe,ModuleResolutionKind:pFe,typescriptVersion:pet,typescriptDefaults:UFe,javascriptDefaults:fFe,getTypeScriptWorker:get,getJavaScriptWorker:bet};function dz(){return Ut(()=>import("./tsMode-f14d674d.js"),["./tsMode-f14d674d.js","./f41-60b8a352.js","./request-93e1bd0c.js","./index-a6266cb6.js","./index-3e1fa34b.css","./f41-9b395ed2.css","./header-a9a1a5ab.js","./header-792950ce.css","./f22-deb38015.js","./vue-flow-core-71a89306.js","./vue-flow-background-7afad64b.js"],import.meta.url)}RV.languages.onLanguage("typescript",()=>dz().then(s=>s.setupTypeScript(UFe)));RV.languages.onLanguage("javascript",()=>dz().then(s=>s.setupJavaScript(fFe)));class Uet extends da{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:kt("toggleCollapseUnchangedRegions","Toggle Collapse Unchanged Regions"),icon:ke.map,toggled:Ne.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:Ne.has("isInDiffEditor"),menu:{when:Ne.has("isInDiffEditor"),id:at.EditorTitle,order:22,group:"navigation"}})}run(e,...t){const i=e.get(li),n=!i.getValue("diffEditor.hideUnchangedRegions.enabled");i.updateValue("diffEditor.hideUnchangedRegions.enabled",n)}}class FFe extends da{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:kt("toggleShowMovedCodeBlocks","Toggle Show Moved Code Blocks"),precondition:Ne.has("isInDiffEditor")})}run(e,...t){const i=e.get(li),n=!i.getValue("diffEditor.experimental.showMoves");i.updateValue("diffEditor.experimental.showMoves",n)}}class ZFe extends da{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:kt("toggleUseInlineViewWhenSpaceIsLimited","Toggle Use Inline View When Space Is Limited"),precondition:Ne.has("isInDiffEditor")})}run(e,...t){const i=e.get(li),n=!i.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");i.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",n)}}const CB=kt("diffEditor","Diff Editor");class fet extends lm{constructor(){super({id:"diffEditor.switchSide",title:kt("switchSide","Switch Side"),icon:ke.arrowSwap,precondition:Ne.has("isInDiffEditor"),f1:!0,category:CB})}runEditorCommand(e,t,i){const n=o1(e);if(n instanceof Q0){if(i&&i.dryRun)return{destinationSelection:n.mapToOtherSide().destinationSelection};n.switchSide()}}}class Fet extends lm{constructor(){super({id:"diffEditor.exitCompareMove",title:kt("exitCompareMove","Exit Compare Move"),icon:ke.close,precondition:H.comparingMovedCode,f1:!1,category:CB,keybinding:{weight:1e4,primary:9}})}runEditorCommand(e,t,...i){const n=o1(e);n instanceof Q0&&n.exitCompareMove()}}class Zet extends lm{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:kt("collapseAllUnchangedRegions","Collapse All Unchanged Regions"),icon:ke.fold,precondition:Ne.has("isInDiffEditor"),f1:!0,category:CB})}runEditorCommand(e,t,...i){const n=o1(e);n instanceof Q0&&n.collapseAllUnchangedRegions()}}class Aet extends lm{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:kt("showAllUnchangedRegions","Show All Unchanged Regions"),icon:ke.unfold,precondition:Ne.has("isInDiffEditor"),f1:!0,category:CB})}runEditorCommand(e,t,...i){const n=o1(e);n instanceof Q0&&n.showAllUnchangedRegions()}}class P4 extends da{constructor(){super({id:"diffEditor.revert",title:kt("revert","Revert"),f1:!1,category:CB})}run(e,t){const i=Net(e,t.originalUri,t.modifiedUri);i instanceof Q0&&i.revertRangeMappings(t.mapping.innerChanges??[])}}const AFe=kt("accessibleDiffViewer","Accessible Diff Viewer"),jX=class jX extends da{constructor(){super({id:jX.id,title:kt("editor.action.accessibleDiffViewer.next","Go to Next Difference"),category:AFe,precondition:Ne.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(e){const t=o1(e);t==null||t.accessibleDiffViewerNext()}};jX.id="editor.action.accessibleDiffViewer.next";let iT=jX;const HX=class HX extends da{constructor(){super({id:HX.id,title:kt("editor.action.accessibleDiffViewer.prev","Go to Previous Difference"),category:AFe,precondition:Ne.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(e){const t=o1(e);t==null||t.accessibleDiffViewerPrev()}};HX.id="editor.action.accessibleDiffViewer.prev";let Wx=HX;function Net(s,e,t){return s.get(zi).listDiffEditors().find(o=>{var a,d;const l=o.getModifiedEditor(),r=o.getOriginalEditor();return l&&((a=l.getModel())==null?void 0:a.uri.toString())===t.toString()&&r&&((d=r.getModel())==null?void 0:d.uri.toString())===e.toString()})||null}function o1(s){const t=s.get(zi).listDiffEditors(),i=kl();if(i)for(const n of t){const o=n.getContainerDomNode();if(Ret(o,i))return n}return null}function Ret(s,e){let t=e;for(;t;){if(t===s)return!0;t=t.parentElement}return!1}Xn(Uet);Xn(FFe);Xn(ZFe);nl.appendMenuItem(at.EditorTitle,{command:{id:new ZFe().desc.id,title:U("useInlineViewWhenSpaceIsLimited","Use Inline View When Space Is Limited"),toggled:Ne.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:Ne.has("isInDiffEditor")},order:11,group:"1_diff",when:Ne.and(H.diffEditorRenderSideBySideInlineBreakpointReached,Ne.has("isInDiffEditor"))});nl.appendMenuItem(at.EditorTitle,{command:{id:new FFe().desc.id,title:U("showMoves","Show Moved Code Blocks"),icon:ke.move,toggled:xQ.create("config.diffEditor.experimental.showMoves",!0),precondition:Ne.has("isInDiffEditor")},order:10,group:"1_diff",when:Ne.has("isInDiffEditor")});Xn(P4);for(const s of[{icon:ke.arrowRight,key:H.diffEditorInlineMode.toNegated()},{icon:ke.discard,key:H.diffEditorInlineMode}])nl.appendMenuItem(at.DiffEditorHunkToolbar,{command:{id:new P4().desc.id,title:U("revertHunk","Revert Block"),icon:s.icon},when:Ne.and(H.diffEditorModifiedWritable,s.key),order:5,group:"primary"}),nl.appendMenuItem(at.DiffEditorSelectionToolbar,{command:{id:new P4().desc.id,title:U("revertSelection","Revert Selection"),icon:s.icon},when:Ne.and(H.diffEditorModifiedWritable,s.key),order:5,group:"primary"});Xn(fet);Xn(Fet);Xn(Zet);Xn(Aet);nl.appendMenuItem(at.EditorTitle,{command:{id:iT.id,title:U("Open Accessible Diff Viewer","Open Accessible Diff Viewer"),precondition:Ne.has("isInDiffEditor")},order:10,group:"2_diff",when:Ne.and(H.accessibleDiffViewerVisible.negate(),Ne.has("isInDiffEditor"))});Bi.registerCommandAlias("editor.action.diffReview.next",iT.id);Xn(iT);Bi.registerCommandAlias("editor.action.diffReview.prev",Wx.id);Xn(Wx);var Wet=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Vet=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},K4;const cz=new Ke("selectionAnchorSet",!1);var HV;let lf=(HV=class{static get(e){return e.getContribution(K4.ID)}constructor(e,t){this.editor=e,this.selectionAnchorSetContextKey=cz.bindTo(t),this.modelChangeListener=e.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const e=this.editor.getPosition();this.editor.changeDecorations(t=>{this.decorationId&&t.removeDecoration(this.decorationId),this.decorationId=t.addDecoration(dt.fromPositions(e,e),{description:"selection-anchor",stickiness:1,hoverMessage:new tr().appendText(U("selectionAnchor","Selection Anchor")),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),ra(U("anchorSet","Anchor set at {0}:{1}",e.lineNumber,e.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);e&&this.editor.setPosition(e.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);if(e){const t=this.editor.getPosition();this.editor.setSelection(dt.fromPositions(e.getStartPosition(),t)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const e=this.decorationId;this.editor.changeDecorations(t=>{t.removeDecoration(e),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}},K4=HV,HV.ID="editor.contrib.selectionAnchorController",HV);lf=K4=Wet([Vet(1,wt)],lf);class Qet extends et{constructor(){super({id:"editor.action.setSelectionAnchor",label:U("setSelectionAnchor","Set Selection Anchor"),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2080),weight:100}})}async run(e,t){var i;(i=lf.get(t))==null||i.setSelectionAnchor()}}class yet extends et{constructor(){super({id:"editor.action.goToSelectionAnchor",label:U("goToSelectionAnchor","Go to Selection Anchor"),alias:"Go to Selection Anchor",precondition:cz})}async run(e,t){var i;(i=lf.get(t))==null||i.goToSelectionAnchor()}}class Cet extends et{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:U("selectFromAnchorToCursor","Select from Anchor to Cursor"),alias:"Select from Anchor to Cursor",precondition:cz,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2089),weight:100}})}async run(e,t){var i;(i=lf.get(t))==null||i.selectFromAnchorToCursor()}}class wet extends et{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:U("cancelSelectionAnchor","Cancel Selection Anchor"),alias:"Cancel Selection Anchor",precondition:cz,kbOpts:{kbExpr:H.editorTextFocus,primary:9,weight:100}})}async run(e,t){var i;(i=lf.get(t))==null||i.cancelSelectionAnchor()}}Gi(lf.ID,lf,4);Me(Qet);Me(yet);Me(Cet);Me(wet);const Met=K("editorOverviewRuler.bracketMatchForeground","#A0A0A0",U("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets."));class Tet extends et{constructor(){super({id:"editor.action.jumpToBracket",label:U("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:3165,weight:100}})}run(e,t){var i;(i=LA.get(t))==null||i.jumpToBracket()}}class Bet extends et{constructor(){super({id:"editor.action.selectToBracket",label:U("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0,metadata:{description:kt("smartSelect.selectToBracketDescription","Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(e,t,i){var o;let n=!0;i&&i.selectBrackets===!1&&(n=!1),(o=LA.get(t))==null||o.selectToBracket(n)}}class Let extends et{constructor(){super({id:"editor.action.removeBrackets",label:U("smartSelect.removeBrackets","Remove Brackets"),alias:"Remove Brackets",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:2561,weight:100}})}run(e,t){var i;(i=LA.get(t))==null||i.removeBrackets(this.id)}}class ket{constructor(e,t,i){this.position=e,this.brackets=t,this.options=i}}const Db=class Db extends de{static get(e){return e.getContribution(Db.ID)}constructor(e){super(),this._editor=e,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new Rn(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(72),this._updateBracketsSoon.schedule(),this._register(e.onDidChangeCursorPosition(t=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModelContent(t=>{this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModel(t=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModelLanguageConfiguration(t=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeConfiguration(t=>{t.hasChanged(72)&&(this._matchBrackets=this._editor.getOption(72),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(e.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(e.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getSelections().map(i=>{const n=i.getStartPosition(),o=e.bracketPairs.matchBracket(n);let l=null;if(o)o[0].containsPosition(n)&&!o[1].containsPosition(n)?l=o[1].getStartPosition():o[1].containsPosition(n)&&(l=o[0].getStartPosition());else{const r=e.bracketPairs.findEnclosingBrackets(n);if(r)l=r[1].getStartPosition();else{const a=e.bracketPairs.findNextBracket(n);a&&a.range&&(l=a.range.getStartPosition())}}return l?new dt(l.lineNumber,l.column,l.lineNumber,l.column):new dt(n.lineNumber,n.column,n.lineNumber,n.column)});this._editor.setSelections(t),this._editor.revealRange(t[0])}selectToBracket(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=[];this._editor.getSelections().forEach(n=>{const o=n.getStartPosition();let l=t.bracketPairs.matchBracket(o);if(!l&&(l=t.bracketPairs.findEnclosingBrackets(o),!l)){const d=t.bracketPairs.findNextBracket(o);d&&d.range&&(l=t.bracketPairs.matchBracket(d.range.getStartPosition()))}let r=null,a=null;if(l){l.sort(v.compareRangesUsingStarts);const[d,c]=l;if(r=e?d.getStartPosition():d.getEndPosition(),a=e?c.getEndPosition():c.getStartPosition(),c.containsPosition(o)){const h=r;r=a,a=h}}r&&a&&i.push(new dt(r.lineNumber,r.column,a.lineNumber,a.column))}),i.length>0&&(this._editor.setSelections(i),this._editor.revealRange(i[0]))}removeBrackets(e){if(!this._editor.hasModel())return;const t=this._editor.getModel();this._editor.getSelections().forEach(i=>{const n=i.getPosition();let o=t.bracketPairs.matchBracket(n);o||(o=t.bracketPairs.findEnclosingBrackets(n)),o&&(this._editor.pushUndoStop(),this._editor.executeEdits(e,[{range:o[0],text:""},{range:o[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const e=[];let t=0;for(const i of this._lastBracketsData){const n=i.brackets;n&&(e[t++]={range:n[0],options:i.options},e[t++]={range:n[1],options:i.options})}this._decorations.set(e)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const e=this._editor.getSelections();if(e.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const t=this._editor.getModel(),i=t.getVersionId();let n=[];this._lastVersionId===i&&(n=this._lastBracketsData);const o=[];let l=0;for(let h=0,u=e.length;h<u;h++){const m=e[h];m.isEmpty()&&(o[l++]=m.getStartPosition())}o.length>1&&o.sort(oe.compare);const r=[];let a=0,d=0;const c=n.length;for(let h=0,u=o.length;h<u;h++){const m=o[h];for(;d<c&&n[d].position.isBefore(m);)d++;if(d<c&&n[d].position.equals(m))r[a++]=n[d];else{let p=t.bracketPairs.matchBracket(m,20),g=Db._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;!p&&this._matchBrackets==="always"&&(p=t.bracketPairs.findEnclosingBrackets(m,20),g=Db._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),r[a++]=new ket(m,p,g)}}this._lastBracketsData=r,this._lastVersionId=i}};Db.ID="editor.contrib.bracketMatchingController",Db._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=Ot.register({description:"bracket-match-overview",stickiness:1,className:"bracket-match",overviewRuler:{color:Gs(Met),position:lc.Center}}),Db._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=Ot.register({description:"bracket-match-no-overview",stickiness:1,className:"bracket-match"});let LA=Db;Gi(LA.ID,LA,1);Me(Bet);Me(Tet);Me(Let);nl.appendMenuItem(at.MenubarGoMenu,{group:"5_infile_nav",command:{id:"editor.action.jumpToBracket",title:U({key:"miGoToBracket",comment:["&& denotes a mnemonic"]},"Go to &&Bracket")},order:2});class Iet{constructor(e,t){this._selection=e,this._isMovingLeft=t}getEditOperations(e,t){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const i=this._selection.startLineNumber,n=this._selection.startColumn,o=this._selection.endColumn;if(!(this._isMovingLeft&&n===1)&&!(!this._isMovingLeft&&o===e.getLineMaxColumn(i)))if(this._isMovingLeft){const l=new v(i,n-1,i,n),r=e.getValueInRange(l);t.addEditOperation(l,null),t.addEditOperation(new v(i,o,i,o),r)}else{const l=new v(i,o,i,o+1),r=e.getValueInRange(l);t.addEditOperation(l,null),t.addEditOperation(new v(i,n,i,n),r)}}computeCursorState(e,t){return this._isMovingLeft?new dt(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new dt(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}class NFe extends et{constructor(e,t){super(t),this.left=e}run(e,t){if(!t.hasModel())return;const i=[],n=t.getSelections();for(const o of n)i.push(new Iet(o,this.left));t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}class Det extends NFe{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:U("caret.moveLeft","Move Selected Text Left"),alias:"Move Selected Text Left",precondition:H.writable})}}class Get extends NFe{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:U("caret.moveRight","Move Selected Text Right"),alias:"Move Selected Text Right",precondition:H.writable})}}Me(Det);Me(Get);class Eet extends et{constructor(){super({id:"editor.action.transposeLetters",label:U("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(e,t){if(!t.hasModel())return;const i=t.getModel(),n=[],o=t.getSelections();for(const l of o){if(!l.isEmpty())continue;const r=l.startLineNumber,a=l.startColumn,d=i.getLineMaxColumn(r);if(r===1&&(a===1||a===2&&d===2))continue;const c=a===d?l.getPosition():pn.rightPosition(i,l.getPosition().lineNumber,l.getPosition().column),h=pn.leftPosition(i,c),u=pn.leftPosition(i,h),m=i.getValueInRange(v.fromPositions(u,h)),p=i.getValueInRange(v.fromPositions(h,c)),g=v.fromPositions(u,c);n.push(new Bl(g,p+m))}n.length>0&&(t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop())}}Me(Eet);const hz=function(){if(typeof crypto=="object"&&typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let s;typeof crypto=="object"&&typeof crypto.getRandomValues=="function"?s=crypto.getRandomValues.bind(crypto):s=function(i){for(let n=0;n<i.length;n++)i[n]=Math.floor(Math.random()*256);return i};const e=new Uint8Array(16),t=[];for(let i=0;i<256;i++)t.push(i.toString(16).padStart(2,"0"));return function(){s(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let n=0,o="";return o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+="-",o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o+=t[e[n++]],o}}();function sie(s){return{asString:async()=>s,asFile:()=>{},value:typeof s=="string"?s:void 0}}function vet(s,e,t){const i={id:hz(),name:s,uri:e,data:t};return{asString:async()=>"",asFile:()=>i,value:void 0}}class RFe{constructor(){this._entries=new Map}get size(){let e=0;for(const t of this._entries)e++;return e}has(e){return this._entries.has(this.toKey(e))}matches(e){const t=[...this._entries.keys()];return Ti.some(this,([i,n])=>n.asFile())&&t.push("files"),WFe(Vx(e),t)}get(e){var t;return(t=this._entries.get(this.toKey(e)))==null?void 0:t[0]}append(e,t){const i=this._entries.get(e);i?i.push(t):this._entries.set(this.toKey(e),[t])}replace(e,t){this._entries.set(this.toKey(e),[t])}delete(e){this._entries.delete(this.toKey(e))}*[Symbol.iterator](){for(const[e,t]of this._entries)for(const i of t)yield[e,i]}toKey(e){return Vx(e)}}function Vx(s){return s.toLowerCase()}function SFe(s,e){return WFe(Vx(s),e.map(Vx))}function WFe(s,e){if(s==="*/*")return e.length>0;if(e.includes(s))return!0;const t=s.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!t)return!1;const[i,n,o]=t;return o==="*"?e.some(l=>l.startsWith(n+"/")):!1}const uz=Object.freeze({create:s=>U0(s.map(e=>e.toString())).join(`\r
- `),split:s=>s.split(`\r
- `),parse:s=>uz.split(s).filter(e=>!e.startsWith("#"))}),xm=class xm{constructor(e){this.value=e}equals(e){return this.value===e.value}contains(e){return this.equals(e)||this.value===""||e.value.startsWith(this.value+xm.sep)}intersects(e){return this.contains(e)||e.contains(this)}append(...e){return new xm((this.value?[this.value,...e]:e).join(xm.sep))}};xm.sep=".",xm.None=new xm("@@none@@"),xm.Empty=new xm("");let fs=xm;const fde={EDITORS:"CodeEditors",FILES:"CodeFiles"};class xet{}const Jet={DragAndDropContribution:"workbench.contributions.dragAndDrop"};Vs.add(Jet.DragAndDropContribution,new xet);const Jw=class Jw{constructor(){}static getInstance(){return Jw.INSTANCE}hasData(e){return e&&e===this.proto}getData(e){if(this.hasData(e))return this.data}};Jw.INSTANCE=new Jw;let q4=Jw;function VFe(s){const e=new RFe;for(const t of s.items){const i=t.type;if(t.kind==="string"){const n=new Promise(o=>t.getAsString(o));e.append(i,sie(n))}else if(t.kind==="file"){const n=t.getAsFile();n&&e.append(i,Xet(n))}}return e}function Xet(s){const e=s.path?At.parse(s.path):void 0;return vet(s.name,e,async()=>new Uint8Array(await s.arrayBuffer()))}const Yet=Object.freeze([fde.EDITORS,fde.FILES,yM.RESOURCES,yM.INTERNAL_URI_LIST]);function QFe(s,e=!1){const t=VFe(s),i=t.get(yM.INTERNAL_URI_LIST);if(i)t.replace(zs.uriList,i);else if(e||!t.has(zs.uriList)){const n=[];for(const o of s.items){const l=o.getAsFile();if(l){const r=l.path;try{r?n.push(At.file(r).toString()):n.push(At.parse(l.name,!0).toString())}catch{}}}n.length&&t.replace(zs.uriList,sie(uz.create(n)))}for(const n of Yet)t.delete(n);return t}var oie=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},nT=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class lie{async provideDocumentPasteEdits(e,t,i,n,o){const l=await this.getEdit(i,o);if(l)return{edits:[{insertText:l.insertText,title:l.title,kind:l.kind,handledMimeType:l.handledMimeType,yieldTo:l.yieldTo}],dispose(){}}}async provideDocumentDropEdits(e,t,i,n){const o=await this.getEdit(i,n);if(o)return{edits:[{insertText:o.insertText,title:o.title,kind:o.kind,handledMimeType:o.handledMimeType,yieldTo:o.yieldTo}],dispose(){}}}}const Xw=class Xw extends lie{constructor(){super(...arguments),this.kind=Xw.kind,this.dropMimeTypes=[zs.text],this.pasteMimeTypes=[zs.text]}async getEdit(e,t){const i=e.get(zs.text);if(!i||e.has(zs.uriList))return;const n=await i.asString();return{handledMimeType:zs.text,title:U("text.label","Insert Plain Text"),insertText:n,kind:this.kind}}};Xw.id="text",Xw.kind=new fs("text.plain");let kA=Xw;class yFe extends lie{constructor(){super(...arguments),this.kind=new fs("uri.absolute"),this.dropMimeTypes=[zs.uriList],this.pasteMimeTypes=[zs.uriList]}async getEdit(e,t){const i=await CFe(e);if(!i.length||t.isCancellationRequested)return;let n=0;const o=i.map(({uri:r,originalText:a})=>r.scheme===Xt.file?r.fsPath:(n++,a)).join(" ");let l;return n>0?l=i.length>1?U("defaultDropProvider.uriList.uris","Insert Uris"):U("defaultDropProvider.uriList.uri","Insert Uri"):l=i.length>1?U("defaultDropProvider.uriList.paths","Insert Paths"):U("defaultDropProvider.uriList.path","Insert Path"),{handledMimeType:zs.uriList,insertText:o,title:l,kind:this.kind}}}let Qx=class extends lie{constructor(e){super(),this._workspaceContextService=e,this.kind=new fs("uri.relative"),this.dropMimeTypes=[zs.uriList],this.pasteMimeTypes=[zs.uriList]}async getEdit(e,t){const i=await CFe(e);if(!i.length||t.isCancellationRequested)return;const n=Oh(i.map(({uri:o})=>{const l=this._workspaceContextService.getWorkspaceFolder(o);return l?KYe(l.uri,o):void 0}));if(n.length)return{handledMimeType:zs.uriList,insertText:n.join(" "),title:i.length>1?U("defaultDropProvider.uriList.relativePaths","Insert Relative Paths"):U("defaultDropProvider.uriList.relativePath","Insert Relative Path"),kind:this.kind}}};Qx=oie([nT(0,yA)],Qx);class zet{constructor(){this.kind=new fs("html"),this.pasteMimeTypes=["text/html"],this._yieldTo=[{mimeType:zs.text}]}async provideDocumentPasteEdits(e,t,i,n,o){var a;if(n.triggerKind!==iM.PasteAs&&!((a=n.only)!=null&&a.contains(this.kind)))return;const l=i.get("text/html"),r=await(l==null?void 0:l.asString());if(!(!r||o.isCancellationRequested))return{dispose(){},edits:[{insertText:r,yieldTo:this._yieldTo,title:U("pasteHtmlLabel","Insert HTML"),kind:this.kind}]}}}async function CFe(s){const e=s.get(zs.uriList);if(!e)return[];const t=await e.asString(),i=[];for(const n of uz.parse(t))try{i.push({uri:At.parse(n),originalText:n})}catch{}return i}let $4=class extends de{constructor(e,t){super(),this._register(e.documentDropEditProvider.register("*",new kA)),this._register(e.documentDropEditProvider.register("*",new yFe)),this._register(e.documentDropEditProvider.register("*",new Qx(t)))}};$4=oie([nT(0,lt),nT(1,yA)],$4);let e7=class extends de{constructor(e,t){super(),this._register(e.documentPasteEditProvider.register("*",new kA)),this._register(e.documentPasteEditProvider.register("*",new yFe)),this._register(e.documentPasteEditProvider.register("*",new Qx(t))),this._register(e.documentPasteEditProvider.register("*",new zet))}};e7=oie([nT(0,lt),nT(1,yA)],e7);const Ah=class Ah{constructor(){this.value="",this.pos=0}static isDigitCharacter(e){return e>=48&&e<=57}static isVariableCharacter(e){return e===95||e>=97&&e<=122||e>=65&&e<=90}text(e){this.value=e,this.pos=0}tokenText(e){return this.value.substr(e.pos,e.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const e=this.pos;let t=0,i=this.value.charCodeAt(e),n;if(n=Ah._table[i],typeof n=="number")return this.pos+=1,{type:n,pos:e,len:1};if(Ah.isDigitCharacter(i)){n=8;do t+=1,i=this.value.charCodeAt(e+t);while(Ah.isDigitCharacter(i));return this.pos+=t,{type:n,pos:e,len:t}}if(Ah.isVariableCharacter(i)){n=9;do i=this.value.charCodeAt(e+ ++t);while(Ah.isVariableCharacter(i)||Ah.isDigitCharacter(i));return this.pos+=t,{type:n,pos:e,len:t}}n=10;do t+=1,i=this.value.charCodeAt(e+t);while(!isNaN(i)&&typeof Ah._table[i]>"u"&&!Ah.isDigitCharacter(i)&&!Ah.isVariableCharacter(i));return this.pos+=t,{type:n,pos:e,len:t}}};Ah._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};let t7=Ah;class l1{constructor(){this._children=[]}appendChild(e){return e instanceof jr&&this._children[this._children.length-1]instanceof jr?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}replace(e,t){const{parent:i}=e,n=i.children.indexOf(e),o=i.children.slice(0);o.splice(n,1,...t),i._children=o,function l(r,a){for(const d of r)d.parent=a,l(d.children,d)}(t,i)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let e=this;for(;;){if(!e)return;if(e instanceof wB)return e;e=e.parent}}toString(){return this.children.reduce((e,t)=>e+t.toString(),"")}len(){return 0}}class jr extends l1{constructor(e){super(),this.value=e}toString(){return this.value}len(){return this.value.length}clone(){return new jr(this.value)}}class wFe extends l1{}class Dc extends wFe{static compareByIndex(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.index<t.index?-1:e.index>t.index?1:0}constructor(e){super(),this.index=e}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof r1?this._children[0]:void 0}clone(){const e=new Dc(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(t=>t.clone()),e}}class r1 extends l1{constructor(){super(...arguments),this.options=[]}appendChild(e){return e instanceof jr&&(e.parent=this,this.options.push(e)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const e=new r1;return this.options.forEach(e.appendChild,e),e}}class rie extends l1{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(e){const t=this;let i=!1,n=e.replace(this.regexp,function(){return i=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))});return!i&&this._children.some(o=>o instanceof Mu&&!!o.elseValue)&&(n=this._replace([])),n}_replace(e){let t="";for(const i of this._children)if(i instanceof Mu){let n=e[i.index]||"";n=i.resolve(n),t+=n}else t+=i.toString();return t}toString(){return""}clone(){const e=new rie;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map(t=>t.clone()),e}}class Mu extends l1{constructor(e,t,i,n){super(),this.index=e,this.shorthandName=t,this.ifValue=i,this.elseValue=n}resolve(e){return this.shorthandName==="upcase"?e?e.toLocaleUpperCase():"":this.shorthandName==="downcase"?e?e.toLocaleLowerCase():"":this.shorthandName==="capitalize"?e?e[0].toLocaleUpperCase()+e.substr(1):"":this.shorthandName==="pascalcase"?e?this._toPascalCase(e):"":this.shorthandName==="camelcase"?e?this._toCamelCase(e):"":e&&typeof this.ifValue=="string"?this.ifValue:!e&&typeof this.elseValue=="string"?this.elseValue:e||""}_toPascalCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map(i=>i.charAt(0).toUpperCase()+i.substr(1)).join(""):e}_toCamelCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map((i,n)=>n===0?i.charAt(0).toLowerCase()+i.substr(1):i.charAt(0).toUpperCase()+i.substr(1)).join(""):e}clone(){return new Mu(this.index,this.shorthandName,this.ifValue,this.elseValue)}}class sT extends wFe{constructor(e){super(),this.name=e}resolve(e){let t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),t!==void 0?(this._children=[new jr(t)],!0):!1}clone(){const e=new sT(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(t=>t.clone()),e}}function Fde(s,e){const t=[...s];for(;t.length>0;){const i=t.shift();if(!e(i))break;t.unshift(...i.children)}}class wB extends l1{get placeholderInfo(){if(!this._placeholders){const e=[];let t;this.walk(function(i){return i instanceof Dc&&(e.push(i),t=!t||t.index<i.index?i:t),!0}),this._placeholders={all:e,last:t}}return this._placeholders}get placeholders(){const{all:e}=this.placeholderInfo;return e}offset(e){let t=0,i=!1;return this.walk(n=>n===e?(i=!0,!1):(t+=n.len(),!0)),i?t:-1}fullLen(e){let t=0;return Fde([e],i=>(t+=i.len(),!0)),t}enclosingPlaceholders(e){const t=[];let{parent:i}=e;for(;i;)i instanceof Dc&&t.push(i),i=i.parent;return t}resolveVariables(e){return this.walk(t=>(t instanceof sT&&t.resolve(e)&&(this._placeholders=void 0),!0)),this}appendChild(e){return this._placeholders=void 0,super.appendChild(e)}replace(e,t){return this._placeholders=void 0,super.replace(e,t)}clone(){const e=new wB;return this._children=this.children.map(t=>t.clone()),e}walk(e){Fde(this.children,e)}}class IA{constructor(){this._scanner=new t7,this._token={type:14,pos:0,len:0}}static escape(e){return e.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(e){return/\${?CLIPBOARD/.test(e)}parse(e,t,i){const n=new wB;return this.parseFragment(e,n),this.ensureFinalTabstop(n,i??!1,t??!1),n}parseFragment(e,t){const i=t.children.length;for(this._scanner.text(e),this._token=this._scanner.next();this._parse(t););const n=new Map,o=[];t.walk(a=>(a instanceof Dc&&(a.isFinalTabstop?n.set(0,void 0):!n.has(a.index)&&a.children.length>0?n.set(a.index,a.children):o.push(a)),!0));const l=(a,d)=>{const c=n.get(a.index);if(!c)return;const h=new Dc(a.index);h.transform=a.transform;for(const u of c){const m=u.clone();h.appendChild(m),m instanceof Dc&&n.has(m.index)&&!d.has(m.index)&&(d.add(m.index),l(m,d),d.delete(m.index))}t.replace(a,[h])},r=new Set;for(const a of o)l(a,r);return t.children.slice(i)}ensureFinalTabstop(e,t,i){(t||i&&e.placeholders.length>0)&&(e.placeholders.find(o=>o.index===0)||e.appendChild(new Dc(0)))}_accept(e,t){if(e===void 0||this._token.type===e){const i=t?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),i}return!1}_backTo(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}_until(e){const t=this._token;for(;this._token.type!==e;){if(this._token.type===14)return!1;if(this._token.type===5){const n=this._scanner.next();if(n.type!==0&&n.type!==4&&n.type!==5)return!1}this._token=this._scanner.next()}const i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}_parse(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}_parseEscaped(e){let t;return(t=this._accept(5,!0))?(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new jr(t)),!0):!1}_parseTabstopOrVariableName(e){let t;const i=this._token;return this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0))?(e.appendChild(/^\d+$/.test(t)?new Dc(Number(t)):new sT(t)),!0):this._backTo(i)}_parseComplexPlaceholder(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0))))return this._backTo(i);const o=new Dc(Number(t));if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new jr("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else if(o.index>0&&this._accept(7)){const l=new r1;for(;;){if(this._parseChoiceElement(l)){if(this._accept(2))continue;if(this._accept(7)&&(o.appendChild(l),this._accept(4)))return e.appendChild(o),!0}return this._backTo(i),!1}}else return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i)}_parseChoiceElement(e){const t=this._token,i=[];for(;!(this._token.type===2||this._token.type===7);){let n;if((n=this._accept(5,!0))?n=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||n:n=this._accept(void 0,!0),!n)return this._backTo(t),!1;i.push(n)}return i.length===0?(this._backTo(t),!1):(e.appendChild(new jr(i.join(""))),!0)}_parseComplexVariable(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0))))return this._backTo(i);const o=new sT(t);if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new jr("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(i)}_parseTransform(e){const t=new rie;let i="",n="";for(;!this._accept(6);){let o;if(o=this._accept(5,!0)){o=this._accept(6,!0)||o,i+=o;continue}if(this._token.type!==14){i+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let o;if(o=this._accept(5,!0)){o=this._accept(5,!0)||this._accept(6,!0)||o,t.appendChild(new jr(o));continue}if(!(this._parseFormatString(t)||this._parseAnything(t)))return!1}for(;!this._accept(4);){if(this._token.type!==14){n+=this._accept(void 0,!0);continue}return!1}try{t.regexp=new RegExp(i,n)}catch{return!1}return e.transform=t,!0}_parseFormatString(e){const t=this._token;if(!this._accept(0))return!1;let i=!1;this._accept(3)&&(i=!0);const n=this._accept(8,!0);if(n)if(i){if(this._accept(4))return e.appendChild(new Mu(Number(n))),!0;if(!this._accept(1))return this._backTo(t),!1}else return e.appendChild(new Mu(Number(n))),!0;else return this._backTo(t),!1;if(this._accept(6)){const o=this._accept(9,!0);return!o||!this._accept(4)?(this._backTo(t),!1):(e.appendChild(new Mu(Number(n),o)),!0)}else if(this._accept(11)){const o=this._until(4);if(o)return e.appendChild(new Mu(Number(n),void 0,o,void 0)),!0}else if(this._accept(12)){const o=this._until(4);if(o)return e.appendChild(new Mu(Number(n),void 0,void 0,o)),!0}else if(this._accept(13)){const o=this._until(1);if(o){const l=this._until(4);if(l)return e.appendChild(new Mu(Number(n),void 0,o,l)),!0}}else{const o=this._until(4);if(o)return e.appendChild(new Mu(Number(n),void 0,void 0,o)),!0}return this._backTo(t),!1}_parseAnything(e){return this._token.type!==14?(e.appendChild(new jr(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}function MFe(s,e,t){var i,n;return(typeof t.insertText=="string"?t.insertText==="":t.insertText.snippet==="")?{edits:((i=t.additionalEdit)==null?void 0:i.edits)??[]}:{edits:[...e.map(o=>new GU(s,{range:o,text:typeof t.insertText=="string"?IA.escape(t.insertText)+"$0":t.insertText.snippet,insertAsSnippet:!0})),...((n=t.additionalEdit)==null?void 0:n.edits)??[]]}}function TFe(s){function e(l,r){return"mimeType"in l?l.mimeType===r.handledMimeType:!!r.kind&&l.kind.contains(r.kind)}const t=new Map;for(const l of s)for(const r of l.yieldTo??[])for(const a of s)if(a!==l&&e(r,a)){let d=t.get(l);d||(d=[],t.set(l,d)),d.push(a)}if(!t.size)return Array.from(s);const i=new Set,n=[];function o(l){if(!l.length)return[];const r=l[0];if(n.includes(r))return console.warn("Yield to cycle detected",r),l;if(i.has(r))return o(l.slice(1));let a=[];const d=t.get(r);return d&&(n.push(r),a=o(d),n.pop()),i.add(r),[...a,r,...o(l.slice(1))]}return o(Array.from(s))}var _et=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Oet=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const jet=Ot.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:nge,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}}),PX=class PX extends de{constructor(e,t,i,n,o){super(),this.typeId=e,this.editor=t,this.range=i,this.delegate=o,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(n),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(e){this.domNode=Ge(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=e;const t=Ge("span.icon");this.domNode.append(t),t.classList.add(...Qt.asClassNameArray(ke.loading),"codicon-modifier-spin");const i=()=>{const n=this.editor.getOption(67);this.domNode.style.height=`${n}px`,this.domNode.style.width=`${Math.ceil(.8*n)}px`};i(),this._register(this.editor.onDidChangeConfiguration(n=>{(n.hasChanged(52)||n.hasChanged(67))&&i()})),this._register(ge(this.domNode,De.CLICK,n=>{this.delegate.cancel()}))}getId(){return PX.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}};PX.baseId="editor.widget.inlineProgressWidget";let i7=PX,yx=class extends de{constructor(e,t,i){super(),this.id=e,this._editor=t,this._instantiationService=i,this._showDelay=500,this._showPromise=this._register(new _o),this._currentWidget=this._register(new _o),this._operationIdPool=0,this._currentDecorations=t.createDecorationsCollection()}dispose(){super.dispose(),this._currentDecorations.clear()}async showWhile(e,t,i,n,o){const l=this._operationIdPool++;this._currentOperation=l,this.clear(),this._showPromise.value=HU(()=>{const r=v.fromPositions(e);this._currentDecorations.set([{range:r,options:jet}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(i7,this.id,this._editor,r,t,n))},o??this._showDelay);try{return await i}finally{this._currentOperation===l&&(this.clear(),this._currentOperation=void 0)}}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};yx=_et([Oet(2,bt)],yx);var Het=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Zde=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ND,iA;let fd=(iA=class{static get(e){return e.getContribution(ND.ID)}constructor(e,t,i){this._openerService=i,this._messageWidget=new _o,this._messageListeners=new Ze,this._mouseOverMessage=!1,this._editor=e,this._visible=ND.MESSAGE_VISIBLE.bindTo(t)}dispose(){var e;(e=this._message)==null||e.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(e,t){ra(Ou(e)?e.value:e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=Ou(e)?TY(e,{actionHandler:{callback:n=>{this.closeMessage(),Vee(this._openerService,n,Ou(e)?e.isTrusted:void 0)},disposables:this._messageListeners}}):void 0,this._messageWidget.value=new Ade(this._editor,t,typeof e=="string"?e:this._message.element),this._messageListeners.add(ve.debounce(this._editor.onDidBlurEditorText,(n,o)=>o,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&Jo(kl(),this._messageWidget.value.getDomNode())||this.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidDispose(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidChangeModel(()=>this.closeMessage())),this._messageListeners.add(ge(this._messageWidget.value.getDomNode(),De.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(ge(this._messageWidget.value.getDomNode(),De.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let i;this._messageListeners.add(this._editor.onMouseMove(n=>{n.target.position&&(i?i.containsPosition(n.target.position)||this.closeMessage():i=new v(t.lineNumber-3,1,n.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(Ade.fadeOut(this._messageWidget.value))}},ND=iA,iA.ID="editor.contrib.messageController",iA.MESSAGE_VISIBLE=new Ke("messageVisible",!1,U("messageVisible","Whether the editor is currently showing an inline message")),iA);fd=ND=Het([Zde(1,wt),Zde(2,za)],fd);const Pet=Io.bindToContribution(fd.get);Oe(new Pet({id:"leaveEditorMessage",precondition:fd.MESSAGE_VISIBLE,handler:s=>s.closeMessage(),kbOpts:{weight:100+30,primary:9}}));let Ade=class{static fadeOut(e){const t=()=>{e.dispose(),clearTimeout(i),e.getDomNode().removeEventListener("animationend",t)},i=setTimeout(t,110);return e.getDomNode().addEventListener("animationend",t),e.getDomNode().classList.add("fadeOut"),{dispose:t}}constructor(e,{lineNumber:t,column:i},n){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=e,this._editor.revealLinesInCenterIfOutsideViewport(t,t,0),this._position={lineNumber:t,column:i},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const o=document.createElement("div");o.classList.add("anchor","top"),this._domNode.appendChild(o);const l=document.createElement("div");typeof n=="string"?(l.classList.add("message"),l.textContent=n):(n.classList.add("message"),l.appendChild(n)),this._domNode.appendChild(l);const r=document.createElement("div");r.classList.add("anchor","below"),this._domNode.appendChild(r),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(e){this._domNode.classList.toggle("below",e===2)}};Gi(fd.ID,fd,4);function d_(s,e){return e&&(s.stack||s.stacktrace)?U("stackTrace.format","{0}: {1}",Rde(s),Nde(s.stack)||Nde(s.stacktrace)):Rde(s)}function Nde(s){return Array.isArray(s)?s.join(`
- `):s}function Rde(s){return s.code==="ERR_UNC_HOST_NOT_ALLOWED"?`${s.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof s.code=="string"&&typeof s.errno=="number"&&typeof s.syscall=="string"?U("nodeExceptionMessage","A system error occurred ({0})",s.message):s.message||U("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function Cx(s=null,e=!1){if(!s)return U("error.defaultMessage","An unknown error occurred. Please consult the log for more details.");if(Array.isArray(s)){const t=Oh(s),i=Cx(t[0],e);return t.length>1?U("error.moreErrors","{0} ({1} errors in total)",i,t.length):i}if(Da(s))return s;if(s.detail){const t=s.detail;if(t.error)return d_(t.error,e);if(t.exception)return d_(t.exception,e)}return s.stack?d_(s,e):s.message?s.message:U("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}var BFe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},kW=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},n7,PV;let s7=(PV=class extends de{constructor(e,t,i,n,o,l,r,a,d,c){super(),this.typeId=e,this.editor=t,this.showCommand=n,this.range=o,this.edits=l,this.onSelectNewEdit=r,this._contextMenuService=a,this._keybindingService=c,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=i.bindTo(d),this.visibleContext.set(!0),this._register(gt(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register(gt(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(h=>{o.containsPosition(h.position)||this.dispose()})),this._register(ve.runAndSubscribe(c.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var t;const e=(t=this._keybindingService.lookupKeybinding(this.showCommand.id))==null?void 0:t.getLabel();this.button.element.title=this.showCommand.label+(e?` (${e})`:"")}create(){this.domNode=Ge(".post-edit-widget"),this.button=this._register(new kv(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(ge(this.domNode,De.CLICK,()=>this.showSelector()))}getId(){return n7.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const e=_s(this.button.element);return{x:e.left+e.width,y:e.top+e.height}},getActions:()=>this.edits.allEdits.map((e,t)=>YZ({id:"",label:e.title,checked:t===this.edits.activeEditIndex,run:()=>{if(t!==this.edits.activeEditIndex)return this.onSelectNewEdit(t)}}))})}},n7=PV,PV.baseId="editor.widget.postEditWidget",PV);s7=n7=BFe([kW(7,Vd),kW(8,wt),kW(9,dn)],s7);let wx=class extends de{constructor(e,t,i,n,o,l,r){super(),this._id=e,this._editor=t,this._visibleContext=i,this._showCommand=n,this._instantiationService=o,this._bulkEditService=l,this._notificationService=r,this._currentWidget=this._register(new _o),this._register(ve.any(t.onDidChangeModel,t.onDidChangeModelContent)(()=>this.clear()))}async applyEditAndShowIfNeeded(e,t,i,n,o){const l=this._editor.getModel();if(!l||!e.length)return;const r=t.allEdits.at(t.activeEditIndex);if(!r)return;const a=async b=>{const f=this._editor.getModel();f&&(await f.undo(),this.applyEditAndShowIfNeeded(e,{activeEditIndex:b,allEdits:t.allEdits},i,n,o))},d=(b,f)=>{th(b)||(this._notificationService.error(f),i&&this.show(e[0],t,a))};let c;try{c=await n(r,o)}catch(b){return d(b,U("resolveError",`Error resolving edit '{0}':
- {1}`,r.title,Cx(b)))}if(o.isCancellationRequested)return;const h=MFe(l.uri,e,c),u=e[0],m=l.deltaDecorations([],[{range:u,options:{description:"paste-line-suffix",stickiness:0}}]);this._editor.focus();let p,g;try{p=await this._bulkEditService.apply(h,{editor:this._editor,token:o}),g=l.getDecorationRange(m[0])}catch(b){return d(b,U("applyError",`Error applying edit '{0}':
- {1}`,r.title,Cx(b)))}finally{l.deltaDecorations(m,[])}o.isCancellationRequested||i&&p.isApplied&&t.allEdits.length>1&&this.show(g??u,t,a)}show(e,t,i){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(s7,this._id,this._editor,this._visibleContext,this._showCommand,e,t,i))}clear(){this._currentWidget.clear()}tryShowSelector(){var e;(e=this._currentWidget.value)==null||e.showSelector()}};wx=BFe([kW(4,bt),kW(5,uB),kW(6,no)],wx);var Ket=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},IN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},AF;const LFe="editor.changePasteType",aie=new Ke("pasteWidgetVisible",!1,U("pasteWidgetVisible","Whether the paste widget is showing")),c_="application/vnd.code.copyMetadata";var KV;let y0=(KV=class extends de{static get(e){return e.getContribution(AF.ID)}constructor(e,t,i,n,o,l,r){super(),this._bulkEditService=i,this._clipboardService=n,this._languageFeaturesService=o,this._quickInputService=l,this._progressService=r,this._editor=e;const a=e.getContainerDomNode();this._register(ge(a,"copy",d=>this.handleCopy(d))),this._register(ge(a,"cut",d=>this.handleCopy(d))),this._register(ge(a,"paste",d=>this.handlePaste(d),!0)),this._pasteProgressManager=this._register(new yx("pasteIntoEditor",e,t)),this._postPasteWidgetManager=this._register(t.createInstance(wx,"pasteIntoEditor",e,aie,{id:LFe,label:U("postPasteWidgetTitle","Show paste options...")}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(e){this._editor.focus();try{this._pasteAsActionContext={preferred:e},vQ().execCommand("paste")}finally{this._pasteAsActionContext=void 0}}clearWidgets(){this._postPasteWidgetManager.clear()}isPasteAsEnabled(){return this._editor.getOption(85).enabled}async finishedPaste(){await this._currentPasteOperation}handleCopy(e){var g,b,f,Z;if(!this._editor.hasTextFocus()||((b=(g=this._clipboardService).clearInternalState)==null||b.call(g),!e.clipboardData||!this.isPasteAsEnabled()))return;const t=this._editor.getModel(),i=this._editor.getSelections();if(!t||!(i!=null&&i.length))return;const n=this._editor.getOption(37);let o=i;const l=i.length===1&&i[0].isEmpty();if(l){if(!n)return;o=[new v(o[0].startLineNumber,1,o[0].startLineNumber,1+t.getLineLength(o[0].startLineNumber))]}const r=(f=this._editor._getViewModel())==null?void 0:f.getPlainTextToCopy(i,n,Gl),d={multicursorText:Array.isArray(r)?r:null,pasteOnNewLine:l,mode:null},c=this._languageFeaturesService.documentPasteEditProvider.ordered(t).filter(A=>!!A.prepareDocumentPaste);if(!c.length){this.setCopyMetadata(e.clipboardData,{defaultPastePayload:d});return}const h=VFe(e.clipboardData),u=c.flatMap(A=>A.copyMimeTypes??[]),m=hz();this.setCopyMetadata(e.clipboardData,{id:m,providerCopyMimeTypes:u,defaultPastePayload:d});const p=Xo(async A=>{const N=Oh(await Promise.all(c.map(async W=>{try{return await W.prepareDocumentPaste(t,o,h,A)}catch(Q){console.error(Q);return}})));N.reverse();for(const W of N)for(const[Q,R]of W)h.replace(Q,R);return h});(Z=AF._currentCopyOperation)==null||Z.dataTransferPromise.cancel(),AF._currentCopyOperation={handle:m,dataTransferPromise:p}}async handlePaste(e){var a,d,c;if(!e.clipboardData||!this._editor.hasTextFocus())return;(a=fd.get(this._editor))==null||a.closeMessage(),(d=this._currentPasteOperation)==null||d.cancel(),this._currentPasteOperation=void 0;const t=this._editor.getModel(),i=this._editor.getSelections();if(!(i!=null&&i.length)||!t||this._editor.getOption(92)||!this.isPasteAsEnabled()&&!this._pasteAsActionContext)return;const n=this.fetchCopyMetadata(e),o=QFe(e.clipboardData);o.delete(c_);const l=[...e.clipboardData.types,...(n==null?void 0:n.providerCopyMimeTypes)??[],zs.uriList],r=this._languageFeaturesService.documentPasteEditProvider.ordered(t).filter(h=>{var m,p;const u=(m=this._pasteAsActionContext)==null?void 0:m.preferred;return u&&h.providedPasteEditKinds&&!this.providerMatchesPreference(h,u)?!1:(p=h.pasteMimeTypes)==null?void 0:p.some(g=>SFe(g,l))});if(!r.length){(c=this._pasteAsActionContext)!=null&&c.preferred&&this.showPasteAsNoEditMessage(i,this._pasteAsActionContext.preferred);return}e.preventDefault(),e.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferred,r,i,o,n):this.doPasteInline(r,i,o,n,e)}showPasteAsNoEditMessage(e,t){var i;(i=fd.get(this._editor))==null||i.showMessage(U("pasteAsError","No paste edits for '{0}' found",t instanceof fs?t.value:t.providerId),e[0].getStartPosition())}doPasteInline(e,t,i,n,o){const l=this._editor;if(!l.hasModel())return;const r=new of(l,3,void 0),a=Xo(async d=>{const c=this._editor;if(!c.hasModel())return;const h=c.getModel(),u=new Ze,m=u.add(new Ws(d));u.add(r.token.onCancellationRequested(()=>m.cancel()));const p=m.token;try{if(await this.mergeInDataFromCopy(i,n,p),p.isCancellationRequested)return;const g=e.filter(Z=>this.isSupportedPasteProvider(Z,i));if(!g.length||g.length===1&&g[0]instanceof kA)return this.applyDefaultPasteHandler(i,n,p,o);const b={triggerKind:iM.Automatic},f=await this.getPasteEdits(g,i,h,t,b,p);if(u.add(f),p.isCancellationRequested)return;if(f.edits.length===1&&f.edits[0].provider instanceof kA)return this.applyDefaultPasteHandler(i,n,p,o);if(f.edits.length){const Z=c.getOption(85).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(t,{activeEditIndex:0,allEdits:f.edits},Z,(A,N)=>new Promise((W,Q)=>{(async()=>{var R,M;try{const w=(M=(R=A.provider).resolveDocumentPasteEdit)==null?void 0:M.call(R,A,N),Y=new EQ,G=w&&await this._pasteProgressManager.showWhile(t[0].getEndPosition(),U("resolveProcess","Resolving paste edit. Click to cancel"),Promise.race([Y.p,w]),{cancel:()=>(Y.cancel(),Q(new jh))},0);return G&&(A.additionalEdit=G.additionalEdit),W(A)}catch(w){return Q(w)}})()}),p)}await this.applyDefaultPasteHandler(i,n,p,o)}finally{u.dispose(),this._currentPasteOperation===a&&(this._currentPasteOperation=void 0)}});this._pasteProgressManager.showWhile(t[0].getEndPosition(),U("pasteIntoEditorProgress","Running paste handlers. Click to cancel and do basic paste"),a,{cancel:async()=>{try{if(a.cancel(),r.token.isCancellationRequested)return;await this.applyDefaultPasteHandler(i,n,r.token,o)}finally{r.dispose()}}}).then(()=>{r.dispose()}),this._currentPasteOperation=a}showPasteAsPick(e,t,i,n,o){const l=Xo(async r=>{const a=this._editor;if(!a.hasModel())return;const d=a.getModel(),c=new Ze,h=c.add(new of(a,3,void 0,r));try{if(await this.mergeInDataFromCopy(n,o,h.token),h.token.isCancellationRequested)return;let u=t.filter(f=>this.isSupportedPasteProvider(f,n,e));e&&(u=u.filter(f=>this.providerMatchesPreference(f,e)));const m={triggerKind:iM.PasteAs,only:e&&e instanceof fs?e:void 0};let p=c.add(await this.getPasteEdits(u,n,d,i,m,h.token));if(h.token.isCancellationRequested)return;if(e&&(p={edits:p.edits.filter(f=>e instanceof fs?e.contains(f.kind):e.providerId===f.provider.id),dispose:p.dispose}),!p.edits.length){m.only&&this.showPasteAsNoEditMessage(i,m.only);return}let g;if(e)g=p.edits.at(0);else{const f=await this._quickInputService.pick(p.edits.map(Z=>{var A;return{label:Z.title,description:(A=Z.kind)==null?void 0:A.value,edit:Z}}),{placeHolder:U("pasteAsPickerPlaceholder","Select Paste Action")});g=f==null?void 0:f.edit}if(!g)return;const b=MFe(d.uri,i,g);await this._bulkEditService.apply(b,{editor:this._editor})}finally{c.dispose(),this._currentPasteOperation===l&&(this._currentPasteOperation=void 0)}});this._progressService.withProgress({location:10,title:U("pasteAsProgress","Running paste handlers")},()=>l)}setCopyMetadata(e,t){e.setData(c_,JSON.stringify(t))}fetchCopyMetadata(e){if(!e.clipboardData)return;const t=e.clipboardData.getData(c_);if(t)try{return JSON.parse(t)}catch{return}const[i,n]=h4.getTextData(e.clipboardData);if(n)return{defaultPastePayload:{mode:n.mode,multicursorText:n.multicursorText??null,pasteOnNewLine:!!n.isFromEmptySelection}}}async mergeInDataFromCopy(e,t,i){var n;if(t!=null&&t.id&&((n=AF._currentCopyOperation)==null?void 0:n.handle)===t.id){const o=await AF._currentCopyOperation.dataTransferPromise;if(i.isCancellationRequested)return;for(const[l,r]of o)e.replace(l,r)}if(!e.has(zs.uriList)){const o=await this._clipboardService.readResources();if(i.isCancellationRequested)return;o.length&&e.append(zs.uriList,sie(uz.create(o)))}}async getPasteEdits(e,t,i,n,o,l){const r=new Ze,a=await sB(Promise.all(e.map(async c=>{var h,u;try{const m=await((h=c.provideDocumentPasteEdits)==null?void 0:h.call(c,i,n,t,o,l));return m&&r.add(m),(u=m==null?void 0:m.edits)==null?void 0:u.map(p=>({...p,provider:c}))}catch(m){th(m)||console.error(m);return}})),l),d=Oh(a??[]).flat().filter(c=>!o.only||o.only.contains(c.kind));return{edits:TFe(d),dispose:()=>r.dispose()}}async applyDefaultPasteHandler(e,t,i,n){const o=e.get(zs.text)??e.get("text"),l=await(o==null?void 0:o.asString())??"";if(i.isCancellationRequested)return;const r={clipboardEvent:n,text:l,pasteOnNewLine:(t==null?void 0:t.defaultPastePayload.pasteOnNewLine)??!1,multicursorText:(t==null?void 0:t.defaultPastePayload.multicursorText)??null,mode:null};this._editor.trigger("keyboard","paste",r)}isSupportedPasteProvider(e,t,i){var n;return(n=e.pasteMimeTypes)!=null&&n.some(o=>t.matches(o))?!i||this.providerMatchesPreference(e,i):!1}providerMatchesPreference(e,t){return t instanceof fs?e.providedPasteEditKinds?e.providedPasteEditKinds.some(i=>t.contains(i)):!0:e.id===t.providerId}},AF=KV,KV.ID="editor.contrib.copyPasteActionController",KV);y0=AF=Ket([IN(1,bt),IN(2,uB),IN(3,D0),IN(4,lt),IN(5,nh),IN(6,mbe)],y0);const DA="9_cutcopypaste",qet=vu||document.queryCommandSupported("cut"),kFe=vu||document.queryCommandSupported("copy"),$et=typeof navigator.clipboard>"u"||jc?document.queryCommandSupported("paste"):!0;function die(s){return s.register(),s}const ett=qet?die(new JQ({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:vu?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:at.MenubarEditMenu,group:"2_ccp",title:U({key:"miCut",comment:["&& denotes a mnemonic"]},"Cu&&t"),order:1},{menuId:at.EditorContext,group:DA,title:U("actions.clipboard.cutLabel","Cut"),when:H.writable,order:1},{menuId:at.CommandPalette,group:"",title:U("actions.clipboard.cutLabel","Cut"),order:1},{menuId:at.SimpleEditorContext,group:DA,title:U("actions.clipboard.cutLabel","Cut"),when:H.writable,order:1}]})):void 0,ttt=kFe?die(new JQ({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:vu?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:at.MenubarEditMenu,group:"2_ccp",title:U({key:"miCopy",comment:["&& denotes a mnemonic"]},"&&Copy"),order:2},{menuId:at.EditorContext,group:DA,title:U("actions.clipboard.copyLabel","Copy"),order:2},{menuId:at.CommandPalette,group:"",title:U("actions.clipboard.copyLabel","Copy"),order:1},{menuId:at.SimpleEditorContext,group:DA,title:U("actions.clipboard.copyLabel","Copy"),order:2}]})):void 0;nl.appendMenuItem(at.MenubarEditMenu,{submenu:at.MenubarCopy,title:kt("copy as","Copy As"),group:"2_ccp",order:3});nl.appendMenuItem(at.EditorContext,{submenu:at.EditorContextCopy,title:kt("copy as","Copy As"),group:DA,order:3});nl.appendMenuItem(at.EditorContext,{submenu:at.EditorContextShare,title:kt("share","Share"),group:"11_share",order:-1,when:Ne.and(Ne.notEquals("resourceScheme","output"),H.editorTextFocus)});nl.appendMenuItem(at.ExplorerContext,{submenu:at.ExplorerContextShare,title:kt("share","Share"),group:"11_share",order:-1});const h_=$et?die(new JQ({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:vu?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:at.MenubarEditMenu,group:"2_ccp",title:U({key:"miPaste",comment:["&& denotes a mnemonic"]},"&&Paste"),order:4},{menuId:at.EditorContext,group:DA,title:U("actions.clipboard.pasteLabel","Paste"),when:H.writable,order:4},{menuId:at.CommandPalette,group:"",title:U("actions.clipboard.pasteLabel","Paste"),order:1},{menuId:at.SimpleEditorContext,group:DA,title:U("actions.clipboard.pasteLabel","Paste"),when:H.writable,order:4}]})):void 0;class itt extends et{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:U("actions.clipboard.copyWithSyntaxHighlightingLabel","Copy With Syntax Highlighting"),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:0,weight:100}})}run(e,t){!t.hasModel()||!t.getOption(37)&&t.getSelection().isEmpty()||(d4.forceCopyWithSyntaxHighlighting=!0,t.focus(),t.getContainerDomNode().ownerDocument.execCommand("copy"),d4.forceCopyWithSyntaxHighlighting=!1)}}function IFe(s,e){s&&(s.addImplementation(1e4,"code-editor",(t,i)=>{const n=t.get(zi).getFocusedCodeEditor();if(n&&n.hasTextFocus()){const o=n.getOption(37),l=n.getSelection();return l&&l.isEmpty()&&!o||n.getContainerDomNode().ownerDocument.execCommand(e),!0}return!1}),s.addImplementation(0,"generic-dom",(t,i)=>(vQ().execCommand(e),!0)))}IFe(ett,"cut");IFe(ttt,"copy");h_&&(h_.addImplementation(1e4,"code-editor",(s,e)=>{var o;const t=s.get(zi),i=s.get(D0),n=t.getFocusedCodeEditor();return n&&n.hasTextFocus()?n.getContainerDomNode().ownerDocument.execCommand("paste")?((o=y0.get(n))==null?void 0:o.finishedPaste())??Promise.resolve():jA?(async()=>{const r=await i.readText();if(r!==""){const a=zM.INSTANCE.get(r);let d=!1,c=null,h=null;a&&(d=n.getOption(37)&&!!a.isFromEmptySelection,c=typeof a.multicursorText<"u"?a.multicursorText:null,h=a.mode),n.trigger("keyboard","paste",{text:r,pasteOnNewLine:d,multicursorText:c,mode:h})}})():!0:!1}),h_.addImplementation(0,"generic-dom",(s,e)=>(vQ().execCommand("paste"),!0)));kFe&&Me(itt);const ds=new class{constructor(){this.QuickFix=new fs("quickfix"),this.Refactor=new fs("refactor"),this.RefactorExtract=this.Refactor.append("extract"),this.RefactorInline=this.Refactor.append("inline"),this.RefactorMove=this.Refactor.append("move"),this.RefactorRewrite=this.Refactor.append("rewrite"),this.Notebook=new fs("notebook"),this.Source=new fs("source"),this.SourceOrganizeImports=this.Source.append("organizeImports"),this.SourceFixAll=this.Source.append("fixAll"),this.SurroundWith=this.Refactor.append("surround")}};var Wd;(function(s){s.Refactor="refactor",s.RefactorPreview="refactor preview",s.Lightbulb="lightbulb",s.Default="other (default)",s.SourceAction="source action",s.QuickFix="quick fix action",s.FixAll="fix all",s.OrganizeImports="organize imports",s.AutoFix="auto fix",s.QuickFixHover="quick fix hover window",s.OnSave="save participants",s.ProblemsView="problems view"})(Wd||(Wd={}));function ntt(s,e){return!(s.include&&!s.include.intersects(e)||s.excludes&&s.excludes.some(t=>DFe(e,t,s.include))||!s.includeSourceActions&&ds.Source.contains(e))}function stt(s,e){const t=e.kind?new fs(e.kind):void 0;return!(s.include&&(!t||!s.include.contains(t))||s.excludes&&t&&s.excludes.some(i=>DFe(t,i,s.include))||!s.includeSourceActions&&t&&ds.Source.contains(t)||s.onlyIncludePreferredActions&&!e.isPreferred)}function DFe(s,e,t){return!(!e.contains(s)||t&&e.contains(t))}class up{static fromUser(e,t){return!e||typeof e!="object"?new up(t.kind,t.apply,!1):new up(up.getKindFromUser(e,t.kind),up.getApplyFromUser(e,t.apply),up.getPreferredUser(e))}static getApplyFromUser(e,t){switch(typeof e.apply=="string"?e.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return t}}static getKindFromUser(e,t){return typeof e.kind=="string"?new fs(e.kind):t}static getPreferredUser(e){return typeof e.preferred=="boolean"?e.preferred:!1}constructor(e,t,i){this.kind=e,this.apply=t,this.preferred=i}}class ott{constructor(e,t,i){this.action=e,this.provider=t,this.highlightRange=i}async resolve(e){var t;if((t=this.provider)!=null&&t.resolveCodeAction&&!this.action.edit){let i;try{i=await this.provider.resolveCodeAction(this.action,e)}catch(n){Os(n)}i&&(this.action.edit=i.edit)}return this}}const GFe="editor.action.codeAction",cie="editor.action.quickFix",EFe="editor.action.autoFix",vFe="editor.action.refactor",xFe="editor.action.sourceAction",o7="editor.action.organizeImports",l7="editor.action.fixAll";class DC extends de{static codeActionsPreferredComparator(e,t){return e.isPreferred&&!t.isPreferred?-1:!e.isPreferred&&t.isPreferred?1:0}static codeActionsComparator({action:e},{action:t}){return e.isAI&&!t.isAI?1:!e.isAI&&t.isAI?-1:Sr(e.diagnostics)?Sr(t.diagnostics)?DC.codeActionsPreferredComparator(e,t):-1:Sr(t.diagnostics)?1:DC.codeActionsPreferredComparator(e,t)}constructor(e,t,i){super(),this.documentation=t,this._register(i),this.allActions=[...e].sort(DC.codeActionsComparator),this.validActions=this.allActions.filter(({action:n})=>!n.disabled)}get hasAutoFix(){return this.validActions.some(({action:e})=>!!e.kind&&ds.QuickFix.contains(new fs(e.kind))&&!!e.isPreferred)}get hasAIFix(){return this.validActions.some(({action:e})=>!!e.isAI)}get allAIFixes(){return this.validActions.every(({action:e})=>!!e.isAI)}}const Sde={actions:[],documentation:void 0};async function NS(s,e,t,i,n,o){var g;const l=i.filter||{},r={...l,excludes:[...l.excludes||[],ds.Notebook]},a={only:(g=l.include)==null?void 0:g.value,trigger:i.type},d=new qte(e,o),c=i.type===2,h=ltt(s,e,c?r:l),u=new Ze,m=h.map(async b=>{try{n.report(b);const f=await b.provideCodeActions(e,t,a,d.token);if(f&&u.add(f),d.token.isCancellationRequested)return Sde;const Z=((f==null?void 0:f.actions)||[]).filter(N=>N&&stt(l,N)),A=att(b,Z,l.include);return{actions:Z.map(N=>new ott(N,b)),documentation:A}}catch(f){if(th(f))throw f;return Os(f),Sde}}),p=s.onDidChange(()=>{const b=s.all(e);Fs(b,h)||d.cancel()});try{const b=await Promise.all(m),f=b.map(A=>A.actions).flat(),Z=[...Oh(b.map(A=>A.documentation)),...rtt(s,e,i,f)];return new DC(f,Z,u)}finally{p.dispose(),d.dispose()}}function ltt(s,e,t){return s.all(e).filter(i=>i.providedCodeActionKinds?i.providedCodeActionKinds.some(n=>ntt(t,new fs(n))):!0)}function*rtt(s,e,t,i){var n,o,l;if(e&&i.length)for(const r of s.all(e))r._getAdditionalMenuItems&&(yield*(l=r._getAdditionalMenuItems)==null?void 0:l.call(r,{trigger:t.type,only:(o=(n=t.filter)==null?void 0:n.include)==null?void 0:o.value},i.map(a=>a.action)))}function att(s,e,t){if(!s.documentation)return;const i=s.documentation.map(n=>({kind:new fs(n.kind),command:n.command}));if(t){let n;for(const o of i)o.kind.contains(t)&&(n?n.kind.contains(o.kind)&&(n=o):n=o);if(n)return n==null?void 0:n.command}for(const n of e)if(n.kind){for(const o of i)if(o.kind.contains(new fs(n.kind)))return o.command}}var CZ;(function(s){s.OnSave="onSave",s.FromProblemsView="fromProblemsView",s.FromCodeActions="fromCodeActions",s.FromAILightbulb="fromAILightbulb"})(CZ||(CZ={}));async function dtt(s,e,t,i,n=$t.None){var d;const o=s.get(uB),l=s.get(On),r=s.get(lr),a=s.get(no);if(r.publicLog2("codeAction.applyCodeAction",{codeActionTitle:e.action.title,codeActionKind:e.action.kind,codeActionIsPreferred:!!e.action.isPreferred,reason:t}),await e.resolve(n),!n.isCancellationRequested&&!((d=e.action.edit)!=null&&d.edits.length&&!(await o.apply(e.action.edit,{editor:i==null?void 0:i.editor,label:e.action.title,quotableLabel:e.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:t!==CZ.OnSave,showPreview:i==null?void 0:i.preview})).isApplied)&&e.action.command)try{await l.executeCommand(e.action.command.id,...e.action.command.arguments||[])}catch(c){const h=ctt(c);a.error(typeof h=="string"?h:U("applyCodeActionFailed","An unknown error occurred while applying the code action"))}}function ctt(s){return typeof s=="string"?s:s instanceof Error&&typeof s.message=="string"?s.message:void 0}Bi.registerCommand("_executeCodeActionProvider",async function(s,e,t,i,n){if(!(e instanceof At))throw Yc();const{codeActionProvider:o}=s.get(lt),l=s.get(es).getModel(e);if(!l)throw Yc();const r=dt.isISelection(t)?dt.liftSelection(t):v.isIRange(t)?l.validateRange(t):void 0;if(!r)throw Yc();const a=typeof i=="string"?new fs(i):void 0,d=await NS(o,l,r,{type:1,triggerAction:Wd.Default,filter:{includeSourceActions:!0,include:a}},Gu.None,$t.None),c=[],h=Math.min(d.validActions.length,typeof n=="number"?n:0);for(let u=0;u<h;u++)c.push(d.validActions[u].resolve($t.None));try{return await Promise.all(c),d.validActions.map(u=>u.action)}finally{setTimeout(()=>d.dispose(),100)}});var htt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},utt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},r7,qV;let a7=(qV=class{constructor(e){this.keybindingService=e}getResolver(){const e=new Hh(()=>this.keybindingService.getKeybindings().filter(t=>r7.codeActionCommands.indexOf(t.command)>=0).filter(t=>t.resolvedKeybinding).map(t=>{let i=t.commandArgs;return t.command===o7?i={kind:ds.SourceOrganizeImports.value}:t.command===l7&&(i={kind:ds.SourceFixAll.value}),{resolvedKeybinding:t.resolvedKeybinding,...up.fromUser(i,{kind:fs.None,apply:"never"})}}));return t=>{if(t.kind){const i=this.bestKeybindingForCodeAction(t,e.value);return i==null?void 0:i.resolvedKeybinding}}}bestKeybindingForCodeAction(e,t){if(!e.kind)return;const i=new fs(e.kind);return t.filter(n=>n.kind.contains(i)).filter(n=>n.preferred?e.isPreferred:!0).reduceRight((n,o)=>n?n.kind.contains(o.kind)?o:n:o,void 0)}},r7=qV,qV.codeActionCommands=[vFe,GFe,xFe,o7,l7],qV);a7=r7=htt([utt(0,dn)],a7);K("symbolIcon.arrayForeground",ci,U("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.booleanForeground",ci,U("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.colorForeground",ci,U("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.constantForeground",ci,U("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},U("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.fileForeground",ci,U("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.folderForeground",ci,U("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.keyForeground",ci,U("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.keywordForeground",ci,U("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},U("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.moduleForeground",ci,U("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.namespaceForeground",ci,U("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.nullForeground",ci,U("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.numberForeground",ci,U("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.objectForeground",ci,U("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.operatorForeground",ci,U("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.packageForeground",ci,U("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.propertyForeground",ci,U("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.referenceForeground",ci,U("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.snippetForeground",ci,U("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.stringForeground",ci,U("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.structForeground",ci,U("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.textForeground",ci,U("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.typeParameterForeground",ci,U("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.unitForeground",ci,U("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));K("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},U("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));const JFe=Object.freeze({kind:fs.Empty,title:U("codeAction.widget.id.more","More Actions...")}),mtt=Object.freeze([{kind:ds.QuickFix,title:U("codeAction.widget.id.quickfix","Quick Fix")},{kind:ds.RefactorExtract,title:U("codeAction.widget.id.extract","Extract"),icon:ke.wrench},{kind:ds.RefactorInline,title:U("codeAction.widget.id.inline","Inline"),icon:ke.wrench},{kind:ds.RefactorRewrite,title:U("codeAction.widget.id.convert","Rewrite"),icon:ke.wrench},{kind:ds.RefactorMove,title:U("codeAction.widget.id.move","Move"),icon:ke.wrench},{kind:ds.SurroundWith,title:U("codeAction.widget.id.surround","Surround With"),icon:ke.surroundWith},{kind:ds.Source,title:U("codeAction.widget.id.source","Source Action"),icon:ke.symbolFile},JFe]);function ptt(s,e,t){if(!e)return s.map(o=>{var l;return{kind:"action",item:o,group:JFe,disabled:!!o.action.disabled,label:o.action.disabled||o.action.title,canPreview:!!((l=o.action.edit)!=null&&l.edits.length)}});const i=mtt.map(o=>({group:o,actions:[]}));for(const o of s){const l=o.action.kind?new fs(o.action.kind):fs.None;for(const r of i)if(r.group.kind.contains(l)){r.actions.push(o);break}}const n=[];for(const o of i)if(o.actions.length){n.push({kind:"header",group:o.group});for(const l of o.actions){const r=o.group;n.push({kind:"action",item:l,group:l.action.isAI?{title:r.title,kind:r.kind,icon:ke.sparkle}:r,label:l.action.title,disabled:!!l.action.disabled,keybinding:t(l.action)})}}return n}var gtt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},btt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},AR;const Wde=ts("gutter-lightbulb",ke.lightBulb,U("gutterLightbulbWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor.")),Vde=ts("gutter-lightbulb-auto-fix",ke.lightbulbAutofix,U("gutterLightbulbAutoFixWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and a quick fix is available.")),Qde=ts("gutter-lightbulb-sparkle",ke.lightbulbSparkle,U("gutterLightbulbAIFixWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix is available.")),yde=ts("gutter-lightbulb-aifix-auto-fix",ke.lightbulbSparkleAutofix,U("gutterLightbulbAIFixAutoFixWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available.")),Cde=ts("gutter-lightbulb-sparkle-filled",ke.sparkleFilled,U("gutterLightbulbSparkleFilledWidget","Icon which spawns code actions menu from the gutter when there is no space in the editor and an AI fix and a quick fix is available."));var Su;(function(s){s.Hidden={type:0};class e{constructor(i,n,o,l){this.actions=i,this.trigger=n,this.editorPosition=o,this.widgetPosition=l,this.type=1}}s.Showing=e})(Su||(Su={}));var wU;let oT=(wU=class extends de{constructor(e,t){super(),this._editor=e,this._keybindingService=t,this._onClick=this._register(new re),this.onClick=this._onClick.event,this._state=Su.Hidden,this._gutterState=Su.Hidden,this._iconClasses=[],this.lightbulbClasses=["codicon-"+Wde.id,"codicon-"+yde.id,"codicon-"+Vde.id,"codicon-"+Qde.id,"codicon-"+Cde.id],this.gutterDecoration=AR.GUTTER_DECORATION,this._domNode=Ge("div.lightBulbWidget"),this._domNode.role="listbox",this._register(nr.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(i=>{const n=this._editor.getModel();(this.state.type!==1||!n||this.state.editorPosition.lineNumber>=n.getLineCount())&&this.hide(),(this.gutterState.type!==1||!n||this.gutterState.editorPosition.lineNumber>=n.getLineCount())&&this.gutterHide()})),this._register(SEe(this._domNode,i=>{if(this.state.type!==1)return;this._editor.focus(),i.preventDefault();const{top:n,height:o}=_s(this._domNode),l=this._editor.getOption(67);let r=Math.floor(l/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber<this.state.editorPosition.lineNumber&&(r+=l),this._onClick.fire({x:i.posx,y:n+o+r,actions:this.state.actions,trigger:this.state.trigger})})),this._register(ge(this._domNode,"mouseenter",i=>{(i.buttons&1)===1&&this.hide()})),this._register(ve.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,()=>{var i,n;this._preferredKbLabel=((i=this._keybindingService.lookupKeybinding(EFe))==null?void 0:i.getLabel())??void 0,this._quickFixKbLabel=((n=this._keybindingService.lookupKeybinding(cie))==null?void 0:n.getLabel())??void 0,this._updateLightBulbTitleAndIcon()})),this._register(this._editor.onMouseDown(async i=>{if(!i.target.element||!this.lightbulbClasses.some(a=>i.target.element&&i.target.element.classList.contains(a))||this.gutterState.type!==1)return;this._editor.focus();const{top:n,height:o}=_s(i.target.element),l=this._editor.getOption(67);let r=Math.floor(l/3);this.gutterState.widgetPosition.position!==null&&this.gutterState.widgetPosition.position.lineNumber<this.gutterState.editorPosition.lineNumber&&(r+=l),this._onClick.fire({x:i.event.posx,y:n+o+r,actions:this.gutterState.actions,trigger:this.gutterState.trigger})}))}dispose(){super.dispose(),this._editor.removeContentWidget(this),this._gutterDecorationID&&this._removeGutterDecoration(this._gutterDecorationID)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return this._state.type===1?this._state.widgetPosition:null}update(e,t,i){if(e.validActions.length<=0)return this.gutterHide(),this.hide();if(!this._editor.hasTextFocus())return this.gutterHide(),this.hide();if(!this._editor.getOptions().get(65).enabled)return this.gutterHide(),this.hide();const l=this._editor.getModel();if(!l)return this.gutterHide(),this.hide();const{lineNumber:r,column:a}=l.validatePosition(i),d=l.getOptions().tabSize,c=this._editor.getOptions().get(50),h=l.getLineContent(r),u=JY(h,d),m=c.spaceWidth*u>22,p=W=>W>2&&this._editor.getTopForLineNumber(W)===this._editor.getTopForLineNumber(W-1),g=this._editor.getLineDecorations(r);let b=!1;if(g)for(const W of g){const Q=W.options.glyphMarginClassName;if(Q&&!this.lightbulbClasses.some(R=>Q.includes(R))){b=!0;break}}let f=r,Z=1;if(!m){const W=Q=>{const R=l.getLineContent(Q);return/^\s*$|^\s+/.test(R)||R.length<=Z};if(r>1&&!p(r-1)){const Q=l.getLineCount(),R=r===Q,M=r>1&&W(r-1),w=!R&&W(r+1),Y=W(r),G=!w&&!M;if(!w&&!M&&!b)return this.gutterState=new Su.Showing(e,t,i,{position:{lineNumber:f,column:Z},preference:AR._posPref}),this.renderGutterLightbub(),this.hide();M||R||M&&!Y?f-=1:(w||G&&Y)&&(f+=1)}else if(r===1&&(r===l.getLineCount()||!W(r+1)&&!W(r)))if(this.gutterState=new Su.Showing(e,t,i,{position:{lineNumber:f,column:Z},preference:AR._posPref}),b)this.gutterHide();else return this.renderGutterLightbub(),this.hide();else if(r<l.getLineCount()&&!p(r+1))f+=1;else if(a*c.spaceWidth<22)return this.hide();Z=/^\S\s*$/.test(l.getLineContent(f))?2:1}this.state=new Su.Showing(e,t,i,{position:{lineNumber:f,column:Z},preference:AR._posPref}),this._gutterDecorationID&&(this._removeGutterDecoration(this._gutterDecorationID),this.gutterHide());const A=e.validActions,N=e.validActions[0].action.kind;if(A.length!==1||!N){this._editor.layoutContentWidget(this);return}this._editor.layoutContentWidget(this)}hide(){this.state!==Su.Hidden&&(this.state=Su.Hidden,this._editor.layoutContentWidget(this))}gutterHide(){this.gutterState!==Su.Hidden&&(this._gutterDecorationID&&this._removeGutterDecoration(this._gutterDecorationID),this.gutterState=Su.Hidden)}get state(){return this._state}set state(e){this._state=e,this._updateLightBulbTitleAndIcon()}get gutterState(){return this._gutterState}set gutterState(e){this._gutterState=e,this._updateGutterLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){if(this._domNode.classList.remove(...this._iconClasses),this._iconClasses=[],this.state.type!==1)return;let e,t=!1;this.state.actions.allAIFixes?(e=ke.sparkleFilled,this.state.actions.validActions.length===1&&(t=!0)):this.state.actions.hasAutoFix?this.state.actions.hasAIFix?e=ke.lightbulbSparkleAutofix:e=ke.lightbulbAutofix:this.state.actions.hasAIFix?e=ke.lightbulbSparkle:e=ke.lightBulb,this._updateLightbulbTitle(this.state.actions.hasAutoFix,t),this._iconClasses=Qt.asClassNameArray(e),this._domNode.classList.add(...this._iconClasses)}_updateGutterLightBulbTitleAndIcon(){if(this.gutterState.type!==1)return;let e,t=!1;this.gutterState.actions.allAIFixes?(e=Cde,this.gutterState.actions.validActions.length===1&&(t=!0)):this.gutterState.actions.hasAutoFix?this.gutterState.actions.hasAIFix?e=yde:e=Vde:this.gutterState.actions.hasAIFix?e=Qde:e=Wde,this._updateLightbulbTitle(this.gutterState.actions.hasAutoFix,t);const i=Ot.register({description:"codicon-gutter-lightbulb-decoration",glyphMarginClassName:Qt.asClassName(e),glyphMargin:{position:Kh.Left},stickiness:1});this.gutterDecoration=i}renderGutterLightbub(){const e=this._editor.getSelection();e&&(this._gutterDecorationID===void 0?this._addGutterDecoration(e.startLineNumber):this._updateGutterDecoration(this._gutterDecorationID,e.startLineNumber))}_addGutterDecoration(e){this._editor.changeDecorations(t=>{this._gutterDecorationID=t.addDecoration(new v(e,0,e,0),this.gutterDecoration)})}_removeGutterDecoration(e){this._editor.changeDecorations(t=>{t.removeDecoration(e),this._gutterDecorationID=void 0})}_updateGutterDecoration(e,t){this._editor.changeDecorations(i=>{i.changeDecoration(e,new v(t,0,t,0)),i.changeDecorationOptions(e,this.gutterDecoration)})}_updateLightbulbTitle(e,t){this.state.type===1&&(t?this.title=U("codeActionAutoRun","Run: {0}",this.state.actions.validActions[0].action.title):e&&this._preferredKbLabel?this.title=U("preferredcodeActionWithKb","Show Code Actions. Preferred Quick Fix Available ({0})",this._preferredKbLabel):!e&&this._quickFixKbLabel?this.title=U("codeActionWithKb","Show Code Actions ({0})",this._quickFixKbLabel):e||(this.title=U("codeAction","Show Code Actions")))}set title(e){this._domNode.title=e}},AR=wU,wU.GUTTER_DECORATION=Ot.register({description:"codicon-gutter-lightbulb-decoration",glyphMarginClassName:Qt.asClassName(ke.lightBulb),glyphMargin:{position:Kh.Left},stickiness:1}),wU.ID="editor.contrib.lightbulbWidget",wU._posPref=[0],wU);oT=AR=gtt([btt(1,dn)],oT);var XFe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},d7=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const YFe="acceptSelectedCodeAction",zFe="previewSelectedCodeAction";class Utt{get templateId(){return"header"}renderTemplate(e){e.classList.add("group-header");const t=document.createElement("span");return e.append(t),{container:e,text:t}}renderElement(e,t,i){var n;i.text.textContent=((n=e.group)==null?void 0:n.title)??""}disposeTemplate(e){}}let c7=class{get templateId(){return"action"}constructor(e,t){this._supportsPreview=e,this._keybindingService=t}renderTemplate(e){e.classList.add(this.templateId);const t=document.createElement("div");t.className="icon",e.append(t);const i=document.createElement("span");i.className="title",e.append(i);const n=new e1(e,pd);return{container:e,icon:t,text:i,keybinding:n}}renderElement(e,t,i){var l,r,a;if((l=e.group)!=null&&l.icon?(i.icon.className=Qt.asClassName(e.group.icon),e.group.icon.color&&(i.icon.style.color=$e(e.group.icon.color.id))):(i.icon.className=Qt.asClassName(ke.lightBulb),i.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!e.item||!e.label)return;i.text.textContent=_Fe(e.label),i.keybinding.set(e.keybinding),EEe(!!e.keybinding,i.keybinding.element);const n=(r=this._keybindingService.lookupKeybinding(YFe))==null?void 0:r.getLabel(),o=(a=this._keybindingService.lookupKeybinding(zFe))==null?void 0:a.getLabel();i.container.classList.toggle("option-disabled",e.disabled),e.disabled?i.container.title=e.label:n&&o?this._supportsPreview&&e.canPreview?i.container.title=U({key:"label-preview",comment:['placeholders are keybindings, e.g "F2 to Apply, Shift+F2 to Preview"']},"{0} to Apply, {1} to Preview",n,o):i.container.title=U({key:"label",comment:['placeholder is a keybinding, e.g "F2 to Apply"']},"{0} to Apply",n):i.container.title=""}disposeTemplate(e){e.keybinding.dispose()}};c7=XFe([d7(1,dn)],c7);class ftt extends UIEvent{constructor(){super("acceptSelectedAction")}}class wde extends UIEvent{constructor(){super("previewSelectedAction")}}function Ftt(s){if(s.kind==="action")return s.label}let h7=class extends de{constructor(e,t,i,n,o,l){super(),this._delegate=n,this._contextViewService=o,this._keybindingService=l,this._actionLineHeight=24,this._headerLineHeight=26,this.cts=this._register(new Ws),this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const r={getHeight:a=>a.kind==="header"?this._headerLineHeight:this._actionLineHeight,getTemplateId:a=>a.kind};this._list=this._register(new Uc(e,this.domNode,r,[new c7(t,this._keybindingService),new Utt],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:Ftt},accessibilityProvider:{getAriaLabel:a=>{if(a.kind==="action"){let d=a.label?_Fe(a==null?void 0:a.label):"";return a.disabled&&(d=U({key:"customQuickFixWidget.labels",comment:["Action widget labels for accessibility."]},"{0}, Disabled Reason: {1}",d,a.disabled)),d}return null},getWidgetAriaLabel:()=>U({key:"customQuickFixWidget",comment:["An action widget option"]},"Action Widget"),getRole:a=>a.kind==="action"?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style($A),this._register(this._list.onMouseClick(a=>this.onListClick(a))),this._register(this._list.onMouseOver(a=>this.onListHover(a))),this._register(this._list.onDidChangeFocus(()=>this.onFocus())),this._register(this._list.onDidChangeSelection(a=>this.onListSelection(a))),this._allMenuItems=i,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(e){return!e.disabled&&e.kind==="action"}hide(e){this._delegate.onHide(e),this.cts.cancel(),this._contextViewService.hideContextView()}layout(e){const t=this._allMenuItems.filter(a=>a.kind==="header").length,n=this._allMenuItems.length*this._actionLineHeight+t*this._headerLineHeight-t*this._actionLineHeight;this._list.layout(n);let o=e;if(this._allMenuItems.length>=50)o=380;else{const a=this._allMenuItems.map((d,c)=>{const h=this.domNode.ownerDocument.getElementById(this._list.getElementID(c));if(h){h.style.width="auto";const u=h.getBoundingClientRect().width;return h.style.width="",u}return 0});o=Math.max(...a,e)}const l=.7,r=Math.min(n,this.domNode.ownerDocument.body.clientHeight*l);return this._list.layout(r,o),this.domNode.style.height=`${r}px`,this._list.domFocus(),o}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(e){const t=this._list.getFocus();if(t.length===0)return;const i=t[0],n=this._list.element(i);if(!this.focusCondition(n))return;const o=e?new wde:new ftt;this._list.setSelection([i],o)}onListSelection(e){if(!e.elements.length)return;const t=e.elements[0];t.item&&this.focusCondition(t)?this._delegate.onSelect(t.item,e.browserEvent instanceof wde):this._list.setSelection([])}onFocus(){var n,o;const e=this._list.getFocus();if(e.length===0)return;const t=e[0],i=this._list.element(t);(o=(n=this._delegate).onFocus)==null||o.call(n,i.item)}async onListHover(e){const t=e.element;if(t&&t.item&&this.focusCondition(t)){if(this._delegate.onHover&&!t.disabled&&t.kind==="action"){const i=await this._delegate.onHover(t.item,this.cts.token);t.canPreview=i?i.canPreview:void 0}e.index&&this._list.splice(e.index,1,[t])}this._list.setFocus(typeof e.index=="number"?[e.index]:[])}onListClick(e){e.element&&this.focusCondition(e.element)&&this._list.setFocus([])}};h7=XFe([d7(4,L0),d7(5,dn)],h7);function _Fe(s){return s.replace(/\r\n|\r|\n/g," ")}var Ztt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},u_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};K("actionBar.toggledBackground",aB,U("actionBar.toggledBackground","Background color for toggled action items in action bar."));const GA={Visible:new Ke("codeActionMenuVisible",!1,U("codeActionMenuVisible","Whether the action widget list is visible"))},lN=Zi("actionWidgetService");let EA=class extends de{get isVisible(){return GA.Visible.getValue(this._contextKeyService)||!1}constructor(e,t,i){super(),this._contextViewService=e,this._contextKeyService=t,this._instantiationService=i,this._list=this._register(new _o)}show(e,t,i,n,o,l,r){const a=GA.Visible.bindTo(this._contextKeyService),d=this._instantiationService.createInstance(h7,e,t,i,n);this._contextViewService.showContextView({getAnchor:()=>o,render:c=>(a.set(!0),this._renderWidget(c,d,r??[])),onHide:c=>{a.reset(),this._onWidgetClosed(c)}},l,!1)}acceptSelected(e){var t;(t=this._list.value)==null||t.acceptSelected(e)}focusPrevious(){var e,t;(t=(e=this._list)==null?void 0:e.value)==null||t.focusPrevious()}focusNext(){var e,t;(t=(e=this._list)==null?void 0:e.value)==null||t.focusNext()}hide(e){var t;(t=this._list.value)==null||t.hide(e),this._list.clear()}_renderWidget(e,t,i){var m;const n=document.createElement("div");if(n.classList.add("action-widget"),e.appendChild(n),this._list.value=t,this._list.value)n.appendChild(this._list.value.domNode);else throw new Error("List has no value");const o=new Ze,l=document.createElement("div"),r=e.appendChild(l);r.classList.add("context-view-block"),o.add(ge(r,De.MOUSE_DOWN,p=>p.stopPropagation()));const a=document.createElement("div"),d=e.appendChild(a);d.classList.add("context-view-pointerBlock"),o.add(ge(d,De.POINTER_MOVE,()=>d.remove())),o.add(ge(d,De.MOUSE_DOWN,()=>d.remove()));let c=0;if(i.length){const p=this._createActionBar(".action-widget-action-bar",i);p&&(n.appendChild(p.getContainer().parentElement),o.add(p),c=p.getContainer().offsetWidth)}const h=(m=this._list.value)==null?void 0:m.layout(c);n.style.width=`${h}px`;const u=o.add(Hu(e));return o.add(u.onDidBlur(()=>this.hide(!0))),o}_createActionBar(e,t){if(!t.length)return;const i=Ge(e),n=new ac(i);return n.push(t,{icon:!1,label:!0}),n}_onWidgetClosed(e){var t;(t=this._list.value)==null||t.hide(e)}};EA=Ztt([u_(0,L0),u_(1,wt),u_(2,bt)],EA);Ci(lN,EA,1);const MB=100+1e3;Xn(class extends da{constructor(){super({id:"hideCodeActionWidget",title:kt("hideCodeActionWidget.title","Hide action widget"),precondition:GA.Visible,keybinding:{weight:MB,primary:9,secondary:[1033]}})}run(s){s.get(lN).hide(!0)}});Xn(class extends da{constructor(){super({id:"selectPrevCodeAction",title:kt("selectPrevCodeAction.title","Select previous action"),precondition:GA.Visible,keybinding:{weight:MB,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(s){const e=s.get(lN);e instanceof EA&&e.focusPrevious()}});Xn(class extends da{constructor(){super({id:"selectNextCodeAction",title:kt("selectNextCodeAction.title","Select next action"),precondition:GA.Visible,keybinding:{weight:MB,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(s){const e=s.get(lN);e instanceof EA&&e.focusNext()}});Xn(class extends da{constructor(){super({id:YFe,title:kt("acceptSelected.title","Accept selected action"),precondition:GA.Visible,keybinding:{weight:MB,primary:3,secondary:[2137]}})}run(s){const e=s.get(lN);e instanceof EA&&e.acceptSelected()}});Xn(class extends da{constructor(){super({id:zFe,title:kt("previewSelected.title","Preview selected action"),precondition:GA.Visible,keybinding:{weight:MB,primary:2051}})}run(s){const e=s.get(lN);e instanceof EA&&e.acceptSelected(!0)}});const OFe=new Ke("supportedCodeAction",""),Mde="_typescript.applyFixAllCodeAction";class Att extends de{constructor(e,t,i,n=250){super(),this._editor=e,this._markerService=t,this._signalChange=i,this._delay=n,this._autoTriggerTimer=this._register(new iu),this._register(this._markerService.onMarkerChanged(o=>this._onMarkerChanges(o))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(e){const t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);this._signalChange(t?{trigger:e,selection:t}:void 0)}_onMarkerChanges(e){const t=this._editor.getModel();t&&e.some(i=>SM(i,t.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:Wd.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(e){if(!this._editor.hasModel())return;const t=this._editor.getSelection();if(e.type===1)return t;const i=this._editor.getOption(65).enabled;if(i!==Mh.Off){{if(i===Mh.On)return t;if(i===Mh.OnCode){if(!t.isEmpty())return t;const o=this._editor.getModel(),{lineNumber:l,column:r}=t.getPosition(),a=o.getLineContent(l);if(a.length===0)return;if(r===1){if(/\s/.test(a[0]))return}else if(r===o.getLineMaxColumn(l)){if(/\s/.test(a[a.length-1]))return}else if(/\s/.test(a[r-2])&&/\s/.test(a[r-1]))return}}return t}}}var dZ;(function(s){s.Empty={type:0};class e{constructor(i,n,o){this.trigger=i,this.position=n,this._cancellablePromise=o,this.type=1,this.actions=o.catch(l=>{if(th(l))return jFe;throw l})}cancel(){this._cancellablePromise.cancel()}}s.Triggered=e})(dZ||(dZ={}));const jFe=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class Ntt extends de{constructor(e,t,i,n,o,l,r){super(),this._editor=e,this._registry=t,this._markerService=i,this._progressService=o,this._configurationService=l,this._telemetryService=r,this._codeActionOracle=this._register(new _o),this._state=dZ.Empty,this._onDidChangeState=this._register(new re),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=OFe.bindTo(n),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._register(this._editor.onDidChangeConfiguration(a=>{a.hasChanged(65)&&this._update()})),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(dZ.Empty,!0))}_settingEnabledNearbyQuickfixes(){var t;const e=(t=this._editor)==null?void 0:t.getModel();return this._configurationService?this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:e==null?void 0:e.uri}):!1}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(dZ.Empty);const e=this._editor.getModel();if(e&&this._registry.has(e)&&!this._editor.getOption(92)){const t=this._registry.all(e).flatMap(i=>i.providedCodeActionKinds??[]);this._supportedCodeActions.set(t.join(" ")),this._codeActionOracle.value=new Att(this._editor,this._markerService,i=>{var a;if(!i){this.setState(dZ.Empty);return}const n=i.selection.getStartPosition(),o=Xo(async d=>{var c,h,u,m,p,g,b,f,Z,A;if(this._settingEnabledNearbyQuickfixes()&&i.trigger.type===1&&(i.trigger.triggerAction===Wd.QuickFix||(h=(c=i.trigger.filter)==null?void 0:c.include)!=null&&h.contains(ds.QuickFix))){const N=await NS(this._registry,e,i.selection,i.trigger,Gu.None,d),W=[...N.allActions];if(d.isCancellationRequested)return jFe;const Q=(u=N.validActions)==null?void 0:u.some(M=>M.action.kind?ds.QuickFix.contains(new fs(M.action.kind)):!1),R=this._markerService.read({resource:e.uri});if(Q){for(const M of N.validActions)(p=(m=M.action.command)==null?void 0:m.arguments)!=null&&p.some(w=>typeof w=="string"&&w.includes(Mde))&&(M.action.diagnostics=[...R.filter(w=>w.relatedInformation)]);return{validActions:N.validActions,allActions:W,documentation:N.documentation,hasAutoFix:N.hasAutoFix,hasAIFix:N.hasAIFix,allAIFixes:N.allAIFixes,dispose:()=>{N.dispose()}}}else if(!Q&&R.length>0){const M=i.selection.getPosition();let w=M,Y=Number.MAX_VALUE;const G=[...N.validActions];for(const j of R){const X=j.endColumn,ie=j.endLineNumber,se=j.startLineNumber;if(ie===M.lineNumber||se===M.lineNumber){w=new oe(ie,X);const pe={type:i.trigger.type,triggerAction:i.trigger.triggerAction,filter:{include:(g=i.trigger.filter)!=null&&g.include?(b=i.trigger.filter)==null?void 0:b.include:ds.QuickFix},autoApply:i.trigger.autoApply,context:{notAvailableMessage:((f=i.trigger.context)==null?void 0:f.notAvailableMessage)||"",position:w}},Ue=new dt(w.lineNumber,w.column,w.lineNumber,w.column),Qe=await NS(this._registry,e,Ue,pe,Gu.None,d);if(Qe.validActions.length!==0){for(const He of Qe.validActions)(A=(Z=He.action.command)==null?void 0:Z.arguments)!=null&&A.some(Te=>typeof Te=="string"&&Te.includes(Mde))&&(He.action.diagnostics=[...R.filter(Te=>Te.relatedInformation)]);N.allActions.length===0&&W.push(...Qe.allActions),Math.abs(M.column-X)<Y?G.unshift(...Qe.validActions):G.push(...Qe.validActions)}Y=Math.abs(M.column-X)}}const P=G.filter((j,X,ie)=>ie.findIndex(se=>se.action.title===j.action.title)===X);return P.sort((j,X)=>j.action.isPreferred&&!X.action.isPreferred?-1:!j.action.isPreferred&&X.action.isPreferred||j.action.isAI&&!X.action.isAI?1:!j.action.isAI&&X.action.isAI?-1:0),{validActions:P,allActions:W,documentation:N.documentation,hasAutoFix:N.hasAutoFix,hasAIFix:N.hasAIFix,allAIFixes:N.allAIFixes,dispose:()=>{N.dispose()}}}}if(i.trigger.type===1){const N=new ol,W=await NS(this._registry,e,i.selection,i.trigger,Gu.None,d);return this._telemetryService&&this._telemetryService.publicLog2("codeAction.invokedDurations",{codeActions:W.validActions.length,duration:N.elapsed()}),W}return NS(this._registry,e,i.selection,i.trigger,Gu.None,d)});i.trigger.type===1&&((a=this._progressService)==null||a.showWhile(o,250));const l=new dZ.Triggered(i.trigger,n,o);let r=!1;this._state.type===1&&(r=this._state.trigger.type===1&&l.type===1&&l.trigger.type===2&&this._state.position!==l.position),r?setTimeout(()=>{this.setState(l)},500):this.setState(l)},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:Wd.Default})}else this._supportedCodeActions.reset()}trigger(e){var t;(t=this._codeActionOracle.value)==null||t.trigger(e)}setState(e,t){e!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=e,!t&&!this._disposed&&this._onDidChangeState.fire(e))}}var Rtt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Um=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},NR;const Stt="quickfix-edit-highlight";var nA;let SV=(nA=class extends de{static get(e){return e.getContribution(NR.ID)}constructor(e,t,i,n,o,l,r,a,d,c,h){super(),this._commandService=r,this._configurationService=a,this._actionWidgetService=d,this._instantiationService=c,this._telemetryService=h,this._activeCodeActions=this._register(new _o),this._showDisabled=!1,this._disposed=!1,this._editor=e,this._model=this._register(new Ntt(this._editor,o.codeActionProvider,t,i,l,a,this._telemetryService)),this._register(this._model.onDidChangeState(u=>this.update(u))),this._lightBulbWidget=new Hh(()=>{const u=this._editor.getContribution(oT.ID);return u&&this._register(u.onClick(m=>this.showCodeActionsFromLightbulb(m.actions,m))),u}),this._resolver=n.createInstance(a7),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}async showCodeActionsFromLightbulb(e,t){if(e.allAIFixes&&e.validActions.length===1){const i=e.validActions[0],n=i.action.command;n&&n.id==="inlineChat.start"&&n.arguments&&n.arguments.length>=1&&(n.arguments[0]={...n.arguments[0],autoSend:!1}),await this._applyCodeAction(i,!1,!1,CZ.FromAILightbulb);return}await this.showCodeActionList(e,t,{includeDisabledActions:!1,fromLightbulb:!0})}showCodeActions(e,t,i){return this.showCodeActionList(t,i,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(e,t,i,n){var l;if(!this._editor.hasModel())return;(l=fd.get(this._editor))==null||l.closeMessage();const o=this._editor.getPosition();this._trigger({type:1,triggerAction:t,filter:i,autoApply:n,context:{notAvailableMessage:e,position:o}})}_trigger(e){return this._model.trigger(e)}async _applyCodeAction(e,t,i,n){try{await this._instantiationService.invokeFunction(dtt,e,n,{preview:i,editor:this._editor})}finally{t&&this._trigger({type:2,triggerAction:Wd.QuickFix,filter:{}})}}hideLightBulbWidget(){var e,t;(e=this._lightBulbWidget.rawValue)==null||e.hide(),(t=this._lightBulbWidget.rawValue)==null||t.gutterHide()}async update(e){var n,o,l,r,a;if(e.type!==1){this.hideLightBulbWidget();return}let t;try{t=await e.actions}catch(d){vt(d);return}if(this._disposed)return;const i=this._editor.getSelection();if((i==null?void 0:i.startLineNumber)===e.position.lineNumber)if((n=this._lightBulbWidget.value)==null||n.update(t,e.trigger,e.position),e.trigger.type===1){if((o=e.trigger.filter)!=null&&o.include){const c=this.tryGetValidActionToApply(e.trigger,t);if(c){try{this.hideLightBulbWidget(),await this._applyCodeAction(c,!1,!1,CZ.FromCodeActions)}finally{t.dispose()}return}if(e.trigger.context){const h=this.getInvalidActionThatWouldHaveBeenApplied(e.trigger,t);if(h&&h.action.disabled){(l=fd.get(this._editor))==null||l.showMessage(h.action.disabled,e.trigger.context.position),t.dispose();return}}}const d=!!((r=e.trigger.filter)!=null&&r.include);if(e.trigger.context&&(!t.allActions.length||!d&&!t.validActions.length)){(a=fd.get(this._editor))==null||a.showMessage(e.trigger.context.notAvailableMessage,e.trigger.context.position),this._activeCodeActions.value=t,t.dispose();return}this._activeCodeActions.value=t,this.showCodeActionList(t,this.toCoords(e.position),{includeDisabledActions:d,fromLightbulb:!1})}else this._actionWidgetService.isVisible?t.dispose():this._activeCodeActions.value=t}getInvalidActionThatWouldHaveBeenApplied(e,t){if(t.allActions.length&&(e.autoApply==="first"&&t.validActions.length===0||e.autoApply==="ifSingle"&&t.allActions.length===1))return t.allActions.find(({action:i})=>i.disabled)}tryGetValidActionToApply(e,t){if(t.validActions.length&&(e.autoApply==="first"&&t.validActions.length>0||e.autoApply==="ifSingle"&&t.validActions.length===1))return t.validActions[0]}async showCodeActionList(e,t,i){const n=this._editor.createDecorationsCollection(),o=this._editor.getDomNode();if(!o)return;const l=i.includeDisabledActions&&(this._showDisabled||e.validActions.length===0)?e.allActions:e.validActions;if(!l.length)return;const r=oe.isIPosition(t)?this.toCoords(t):t,a={onSelect:async(d,c)=>{this._applyCodeAction(d,!0,!!c,i.fromLightbulb?CZ.FromAILightbulb:CZ.FromCodeActions),this._actionWidgetService.hide(!1),n.clear()},onHide:d=>{var c;(c=this._editor)==null||c.focus(),n.clear()},onHover:async(d,c)=>{var m;if(c.isCancellationRequested)return;let h=!1;const u=d.action.kind;if(u){const p=new fs(u);h=[ds.RefactorExtract,ds.RefactorInline,ds.RefactorRewrite,ds.RefactorMove,ds.Source].some(b=>b.contains(p))}return{canPreview:h||!!((m=d.action.edit)!=null&&m.edits.length)}},onFocus:d=>{var c,h;if(d&&d.action){const u=d.action.ranges,m=d.action.diagnostics;if(n.clear(),u&&u.length>0){const p=m&&(m==null?void 0:m.length)>1?m.map(g=>({range:g,options:NR.DECORATION})):u.map(g=>({range:g,options:NR.DECORATION}));n.set(p)}else if(m&&m.length>0){const p=m.map(b=>({range:b,options:NR.DECORATION}));n.set(p);const g=m[0];if(g.startLineNumber&&g.startColumn){const b=(h=(c=this._editor.getModel())==null?void 0:c.getWordAtPosition({lineNumber:g.startLineNumber,column:g.startColumn}))==null?void 0:h.word;Vp(U("editingNewSelection","Context: {0} at line {1} and column {2}.",b,g.startLineNumber,g.startColumn))}}}else n.clear()}};this._actionWidgetService.show("codeActionWidget",!0,ptt(l,this._shouldShowHeaders(),this._resolver.getResolver()),a,r,o,this._getActionBarActions(e,t,i))}toCoords(e){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(e,1),this._editor.render();const t=this._editor.getScrolledVisiblePosition(e),i=_s(this._editor.getDomNode()),n=i.left+t.left,o=i.top+t.top+t.height;return{x:n,y:o}}_shouldShowHeaders(){var t;const e=(t=this._editor)==null?void 0:t.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:e==null?void 0:e.uri})}_getActionBarActions(e,t,i){if(i.fromLightbulb)return[];const n=e.documentation.map(o=>({id:o.id,label:o.title,tooltip:o.tooltip??"",class:void 0,enabled:!0,run:()=>this._commandService.executeCommand(o.id,...o.arguments??[])}));return i.includeDisabledActions&&e.validActions.length>0&&e.allActions.length!==e.validActions.length&&n.push(this._showDisabled?{id:"hideMoreActions",label:U("hideMoreActions","Hide Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(e,t,i))}:{id:"showMoreActions",label:U("showMoreActions","Show Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(e,t,i))}),n}},NR=nA,nA.ID="editor.contrib.codeActionController",nA.DECORATION=Ot.register({description:"quickfix-highlight",className:Stt}),nA);SV=NR=Rtt([Um(1,Ep),Um(2,wt),Um(3,bt),Um(4,lt),Um(5,bf),Um(6,On),Um(7,li),Um(8,lN),Um(9,bt),Um(10,lr)],SV);ih((s,e)=>{((n,o)=>{o&&e.addRule(`.monaco-editor ${n} { background-color: ${o}; }`)})(".quickfix-edit-highlight",s.getColor(i0));const i=s.getColor(cU);i&&e.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${Yu(s.type)?"dotted":"solid"} ${i}; box-sizing: border-box; }`)});function TB(s){return Ne.regex(OFe.keys()[0],new RegExp("(\\s|^)"+dc(s.value)+"\\b"))}const hie={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:U("args.schema.kind","Kind of the code action to run.")},apply:{type:"string",description:U("args.schema.apply","Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[U("args.schema.apply.first","Always apply the first returned code action."),U("args.schema.apply.ifSingle","Apply the first returned code action if it is the only one."),U("args.schema.apply.never","Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:U("args.schema.preferred","Controls if only preferred code actions should be returned.")}}};function rN(s,e,t,i,n=Wd.Default){if(s.hasModel()){const o=SV.get(s);o==null||o.manualTriggerAtCurrentPosition(e,n,t,i)}}class Wtt extends et{constructor(){super({id:cie,label:U("quickfix.trigger.label","Quick Fix..."),alias:"Quick Fix...",precondition:Ne.and(H.writable,H.hasCodeActionsProvider),kbOpts:{kbExpr:H.textInputFocus,primary:2137,weight:100}})}run(e,t){return rN(t,U("editor.action.quickFix.noneMessage","No code actions available"),void 0,void 0,Wd.QuickFix)}}class Vtt extends Io{constructor(){super({id:GFe,precondition:Ne.and(H.writable,H.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:hie}]}})}runEditorCommand(e,t,i){const n=up.fromUser(i,{kind:fs.Empty,apply:"ifSingle"});return rN(t,typeof(i==null?void 0:i.kind)=="string"?n.preferred?U("editor.action.codeAction.noneMessage.preferred.kind","No preferred code actions for '{0}' available",i.kind):U("editor.action.codeAction.noneMessage.kind","No code actions for '{0}' available",i.kind):n.preferred?U("editor.action.codeAction.noneMessage.preferred","No preferred code actions available"):U("editor.action.codeAction.noneMessage","No code actions available"),{include:n.kind,includeSourceActions:!0,onlyIncludePreferredActions:n.preferred},n.apply)}}class Qtt extends et{constructor(){super({id:vFe,label:U("refactor.label","Refactor..."),alias:"Refactor...",precondition:Ne.and(H.writable,H.hasCodeActionsProvider),kbOpts:{kbExpr:H.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:Ne.and(H.writable,TB(ds.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:hie}]}})}run(e,t,i){const n=up.fromUser(i,{kind:ds.Refactor,apply:"never"});return rN(t,typeof(i==null?void 0:i.kind)=="string"?n.preferred?U("editor.action.refactor.noneMessage.preferred.kind","No preferred refactorings for '{0}' available",i.kind):U("editor.action.refactor.noneMessage.kind","No refactorings for '{0}' available",i.kind):n.preferred?U("editor.action.refactor.noneMessage.preferred","No preferred refactorings available"):U("editor.action.refactor.noneMessage","No refactorings available"),{include:ds.Refactor.contains(n.kind)?n.kind:fs.None,onlyIncludePreferredActions:n.preferred},n.apply,Wd.Refactor)}}class ytt extends et{constructor(){super({id:xFe,label:U("source.label","Source Action..."),alias:"Source Action...",precondition:Ne.and(H.writable,H.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:Ne.and(H.writable,TB(ds.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:hie}]}})}run(e,t,i){const n=up.fromUser(i,{kind:ds.Source,apply:"never"});return rN(t,typeof(i==null?void 0:i.kind)=="string"?n.preferred?U("editor.action.source.noneMessage.preferred.kind","No preferred source actions for '{0}' available",i.kind):U("editor.action.source.noneMessage.kind","No source actions for '{0}' available",i.kind):n.preferred?U("editor.action.source.noneMessage.preferred","No preferred source actions available"):U("editor.action.source.noneMessage","No source actions available"),{include:ds.Source.contains(n.kind)?n.kind:fs.None,includeSourceActions:!0,onlyIncludePreferredActions:n.preferred},n.apply,Wd.SourceAction)}}class Ctt extends et{constructor(){super({id:o7,label:U("organizeImports.label","Organize Imports"),alias:"Organize Imports",precondition:Ne.and(H.writable,TB(ds.SourceOrganizeImports)),kbOpts:{kbExpr:H.textInputFocus,primary:1581,weight:100}})}run(e,t){return rN(t,U("editor.action.organize.noneMessage","No organize imports action available"),{include:ds.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",Wd.OrganizeImports)}}class wtt extends et{constructor(){super({id:l7,label:U("fixAll.label","Fix All"),alias:"Fix All",precondition:Ne.and(H.writable,TB(ds.SourceFixAll))})}run(e,t){return rN(t,U("fixAll.noneMessage","No fix all action available"),{include:ds.SourceFixAll,includeSourceActions:!0},"ifSingle",Wd.FixAll)}}class Mtt extends et{constructor(){super({id:EFe,label:U("autoFix.label","Auto Fix..."),alias:"Auto Fix...",precondition:Ne.and(H.writable,TB(ds.QuickFix)),kbOpts:{kbExpr:H.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(e,t){return rN(t,U("editor.action.autoFix.noneMessage","No auto fixes available"),{include:ds.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",Wd.AutoFix)}}Gi(SV.ID,SV,3);Gi(oT.ID,oT,4);Me(Wtt);Me(Qtt);Me(ytt);Me(Ctt);Me(Mtt);Me(wtt);Oe(new Vtt);Vs.as(nu.Configuration).registerConfiguration({...mB,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:5,description:U("showCodeActionHeaders","Enable/disable showing group headers in the Code Action menu."),default:!0}}});Vs.as(nu.Configuration).registerConfiguration({...mB,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:5,description:U("includeNearbyQuickFixes","Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),default:!0}}});Vs.as(nu.Configuration).registerConfiguration({...mB,properties:{"editor.codeActions.triggerOnFocusChange":{type:"boolean",scope:5,markdownDescription:U("triggerOnFocusChange","Enable triggering {0} when {1} is set to {2}. Code Actions must be set to {3} to be triggered for window and focus changes.","`#editor.codeActionsOnSave#`","`#files.autoSave#`","`afterDelay`","`always`"),default:!1}}});class u7{constructor(){this.lenses=[],this._disposables=new Ze}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(e,t){this._disposables.add(e);for(const i of e.lenses)this.lenses.push({symbol:i,provider:t})}}async function HFe(s,e,t){const i=s.ordered(e),n=new Map,o=new u7,l=i.map(async(r,a)=>{n.set(r,a);try{const d=await Promise.resolve(r.provideCodeLenses(e,t));d&&o.add(d,r)}catch(d){Os(d)}});return await Promise.all(l),o.lenses=o.lenses.sort((r,a)=>r.symbol.range.startLineNumber<a.symbol.range.startLineNumber?-1:r.symbol.range.startLineNumber>a.symbol.range.startLineNumber?1:n.get(r.provider)<n.get(a.provider)?-1:n.get(r.provider)>n.get(a.provider)?1:r.symbol.range.startColumn<a.symbol.range.startColumn?-1:r.symbol.range.startColumn>a.symbol.range.startColumn?1:0),o}Bi.registerCommand("_executeCodeLensProvider",function(s,...e){let[t,i]=e;Yi(At.isUri(t)),Yi(typeof i=="number"||!i);const{codeLensProvider:n}=s.get(lt),o=s.get(es).getModel(t);if(!o)throw Yc();const l=[],r=new Ze;return HFe(n,o,$t.None).then(a=>{r.add(a);const d=[];for(const c of a.lenses)i==null||c.symbol.command?l.push(c.symbol):i-- >0&&c.provider.resolveCodeLens&&d.push(Promise.resolve(c.provider.resolveCodeLens(o,c.symbol,$t.None)).then(h=>l.push(h||c.symbol)));return Promise.all(d)}).then(()=>l).finally(()=>{setTimeout(()=>r.dispose(),100)})});var Ttt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Btt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const PFe=Zi("ICodeLensCache");class Tde{constructor(e,t){this.lineCount=e,this.data=t}}let m7=class{constructor(e){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new Ip(20,.75);const t="codelens/cache";xy(Qn,()=>e.remove(t,1));const i="codelens/cache2",n=e.get(i,1,"{}");this._deserialize(n);const o=ve.filter(e.onWillSaveState,l=>l.reason===wM.SHUTDOWN);ve.once(o)(l=>{e.store(i,this._serialize(),1,1)})}put(e,t){const i=t.lenses.map(l=>{var r;return{range:l.symbol.range,command:l.symbol.command&&{id:"",title:(r=l.symbol.command)==null?void 0:r.title}}}),n=new u7;n.add({lenses:i,dispose:()=>{}},this._fakeProvider);const o=new Tde(e.getLineCount(),n);this._cache.set(e.uri.toString(),o)}get(e){const t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0}delete(e){this._cache.delete(e.uri.toString())}_serialize(){const e=Object.create(null);for(const[t,i]of this._cache){const n=new Set;for(const o of i.data.lenses)n.add(o.symbol.range.startLineNumber);e[t]={lineCount:i.lineCount,lines:[...n.values()]}}return JSON.stringify(e)}_deserialize(e){try{const t=JSON.parse(e);for(const i in t){const n=t[i],o=[];for(const r of n.lines)o.push({range:new v(r,1,r,11)});const l=new u7;l.add({lenses:o,dispose(){}},this._fakeProvider),this._cache.set(i,new Tde(n.lineCount,l))}}catch{}}};m7=Ttt([Btt(0,su)],m7);Ci(PFe,m7,1);class Ltt{constructor(e,t,i){this.afterColumn=1073741824,this.afterLineNumber=e,this.heightInPx=t,this._onHeight=i,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(e){this._lastHeight===void 0?this._lastHeight=e:this._lastHeight!==e&&(this._lastHeight=e,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute("monaco-visible-view-zone")}}const Yw=class Yw{constructor(e,t){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=e,this._id=`codelens.widget-${Yw._idPool++}`,this.updatePosition(t),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(e,t){this._commands.clear();const i=[];let n=!1;for(let o=0;o<e.length;o++){const l=e[o];if(l&&(n=!0,l.command)){const r=DU(l.command.title.trim());if(l.command.id){const a=`c${Yw._idPool++}`;i.push(Ge("a",{id:a,title:l.command.tooltip,role:"button"},...r)),this._commands.set(a,l.command)}else i.push(Ge("span",{title:l.command.tooltip},...r));o+1<e.length&&i.push(Ge("span",void 0," | "))}}n?(Zl(this._domNode,...i),this._isEmpty&&t&&this._domNode.classList.add("fadein"),this._isEmpty=!1):Zl(this._domNode,Ge("span",void 0,"no commands"))}getCommand(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0}getId(){return this._id}getDomNode(){return this._domNode}updatePosition(e){const t=this._editor.getModel().getLineFirstNonWhitespaceColumn(e);this._widgetPosition={position:{lineNumber:e,column:t},preference:[1]}}getPosition(){return this._widgetPosition||null}};Yw._idPool=0;let p7=Yw;class m_{constructor(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}addDecoration(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)}removeDecoration(e){this._removeDecorations.push(e)}commit(e){const t=e.deltaDecorations(this._removeDecorations,this._addDecorations);for(let i=0,n=t.length;i<n;i++)this._addDecorationsCallbacks[i](t[i])}}const Bde=Ot.register({collapseOnReplaceEdit:!0,description:"codelens"});class Lde{constructor(e,t,i,n,o,l){this._isDisposed=!1,this._editor=t,this._data=e,this._decorationIds=[];let r;const a=[];this._data.forEach((d,c)=>{d.symbol.command&&a.push(d.symbol),i.addDecoration({range:d.symbol.range,options:Bde},h=>this._decorationIds[c]=h),r?r=v.plusRange(r,d.symbol.range):r=v.lift(d.symbol.range)}),this._viewZone=new Ltt(r.startLineNumber-1,o,l),this._viewZoneId=n.addZone(this._viewZone),a.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(a,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new p7(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(e,t){this._decorationIds.forEach(e.removeDecoration,e),this._decorationIds=[],t==null||t.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((e,t)=>{const i=this._editor.getModel().getDecorationRange(e),n=this._data[t].symbol;return!!(i&&v.isEmpty(n.range)===i.isEmpty())})}updateCodeLensSymbols(e,t){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],this._data=e,this._data.forEach((i,n)=>{t.addDecoration({range:i.symbol.range,options:Bde},o=>this._decorationIds[n]=o)})}updateHeight(e,t){this._viewZone.heightInPx=e,t.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(e){if(!this._viewZone.isVisible())return null;for(let t=0;t<this._decorationIds.length;t++){const i=e.getDecorationRange(this._decorationIds[t]);i&&(this._data[t].symbol.range=i)}return this._data}updateCommands(e){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(e,!0);for(let t=0;t<this._data.length;t++){const i=e[t];if(i){const{symbol:n}=this._data[t];n.command=i.command||n.command}}}getCommand(e){var t;return(t=this._contentWidget)==null?void 0:t.getCommand(e)}getLineNumber(){const e=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return e?e.startLineNumber:-1}update(e){if(this.isValid()){const t=this._editor.getModel().getDecorationRange(this._decorationIds[0]);t&&(this._viewZone.afterLineNumber=t.startLineNumber-1,e.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(t.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}}var ktt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},j1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},DT;let lT=(DT=class{constructor(e,t,i,n,o,l){this._editor=e,this._languageFeaturesService=t,this._commandService=n,this._notificationService=o,this._codeLensCache=l,this._disposables=new Ze,this._localToDispose=new Ze,this._lenses=[],this._oldCodeLensModels=new Ze,this._provideCodeLensDebounce=i.for(t.codeLensProvider,"CodeLensProvide",{min:250}),this._resolveCodeLensesDebounce=i.for(t.codeLensProvider,"CodeLensResolve",{min:250,salt:"resolve"}),this._resolveCodeLensesScheduler=new Rn(()=>this._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(r=>{(r.hasChanged(50)||r.hasChanged(19)||r.hasChanged(18))&&this._updateLensStyle(),r.hasChanged(17)&&this._onModelChange()})),this._disposables.add(t.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var e;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(e=this._currentCodeLensModel)==null||e.dispose()}_getLayoutInfo(){const e=Math.max(1.3,this._editor.getOption(67)/this._editor.getOption(52));let t=this._editor.getOption(19);return(!t||t<5)&&(t=this._editor.getOption(52)*.9|0),{fontSize:t,codeLensHeight:t*e|0}}_updateLensStyle(){const{codeLensHeight:e,fontSize:t}=this._getLayoutInfo(),i=this._editor.getOption(18),n=this._editor.getOption(50),{style:o}=this._editor.getContainerDomNode();o.setProperty("--vscode-editorCodeLens-lineHeight",`${e}px`),o.setProperty("--vscode-editorCodeLens-fontSize",`${t}px`),o.setProperty("--vscode-editorCodeLens-fontFeatureSettings",n.fontFeatureSettings),i&&(o.setProperty("--vscode-editorCodeLens-fontFamily",i),o.setProperty("--vscode-editorCodeLens-fontFamilyDefault",ta.fontFamily)),this._editor.changeViewZones(l=>{for(const r of this._lenses)r.updateHeight(e,l)})}_localDispose(){var e,t,i;(e=this._getCodeLensModelPromise)==null||e.cancel(),this._getCodeLensModelPromise=void 0,(t=this._resolveCodeLensesPromise)==null||t.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(i=this._currentCodeLensModel)==null||i.dispose()}_onModelChange(){this._localDispose();const e=this._editor.getModel();if(!e||!this._editor.getOption(17)||e.isTooLargeForTokenization())return;const t=this._codeLensCache.get(e);if(t&&this._renderCodeLensSymbols(t),!this._languageFeaturesService.codeLensProvider.has(e)){t&&HU(()=>{const n=this._codeLensCache.get(e);t===n&&(this._codeLensCache.delete(e),this._onModelChange())},30*1e3,this._localToDispose);return}for(const n of this._languageFeaturesService.codeLensProvider.all(e))if(typeof n.onDidChange=="function"){const o=n.onDidChange(()=>i.schedule());this._localToDispose.add(o)}const i=new Rn(()=>{var o;const n=Date.now();(o=this._getCodeLensModelPromise)==null||o.cancel(),this._getCodeLensModelPromise=Xo(l=>HFe(this._languageFeaturesService.codeLensProvider,e,l)),this._getCodeLensModelPromise.then(l=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=l,this._codeLensCache.put(e,l);const r=this._provideCodeLensDebounce.update(e,Date.now()-n);i.delay=r,this._renderCodeLensSymbols(l),this._resolveCodeLensesInViewportSoon()},vt)},this._provideCodeLensDebounce.get(e));this._localToDispose.add(i),this._localToDispose.add(gt(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var n;this._editor.changeDecorations(o=>{this._editor.changeViewZones(l=>{const r=[];let a=-1;this._lenses.forEach(c=>{!c.isValid()||a===c.getLineNumber()?r.push(c):(c.update(l),a=c.getLineNumber())});const d=new m_;r.forEach(c=>{c.dispose(d,l),this._lenses.splice(this._lenses.indexOf(c),1)}),d.commit(o)})}),i.schedule(),this._resolveCodeLensesScheduler.cancel(),(n=this._resolveCodeLensesPromise)==null||n.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorText(()=>{i.schedule()})),this._localToDispose.add(this._editor.onDidBlurEditorText(()=>{i.cancel()})),this._localToDispose.add(this._editor.onDidScrollChange(n=>{n.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(gt(()=>{if(this._editor.getModel()){const n=em.capture(this._editor);this._editor.changeDecorations(o=>{this._editor.changeViewZones(l=>{this._disposeAllLenses(o,l)})}),n.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(n=>{if(n.target.type!==9)return;let o=n.target.element;if((o==null?void 0:o.tagName)==="SPAN"&&(o=o.parentElement),(o==null?void 0:o.tagName)==="A")for(const l of this._lenses){const r=l.getCommand(o);if(r){this._commandService.executeCommand(r.id,...r.arguments||[]).catch(a=>this._notificationService.error(a));break}}})),i.schedule()}_disposeAllLenses(e,t){const i=new m_;for(const n of this._lenses)n.dispose(i,t);e&&i.commit(e),this._lenses.length=0}_renderCodeLensSymbols(e){if(!this._editor.hasModel())return;const t=this._editor.getModel().getLineCount(),i=[];let n;for(const r of e.lenses){const a=r.symbol.range.startLineNumber;a<1||a>t||(n&&n[n.length-1].symbol.range.startLineNumber===a?n.push(r):(n=[r],i.push(n)))}if(!i.length&&!this._lenses.length)return;const o=em.capture(this._editor),l=this._getLayoutInfo();this._editor.changeDecorations(r=>{this._editor.changeViewZones(a=>{const d=new m_;let c=0,h=0;for(;h<i.length&&c<this._lenses.length;){const u=i[h][0].symbol.range.startLineNumber,m=this._lenses[c].getLineNumber();m<u?(this._lenses[c].dispose(d,a),this._lenses.splice(c,1)):m===u?(this._lenses[c].updateCodeLensSymbols(i[h],d),h++,c++):(this._lenses.splice(c,0,new Lde(i[h],this._editor,d,a,l.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),c++,h++)}for(;c<this._lenses.length;)this._lenses[c].dispose(d,a),this._lenses.splice(c,1);for(;h<i.length;)this._lenses.push(new Lde(i[h],this._editor,d,a,l.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),h++;d.commit(r)})}),o.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var l;(l=this._resolveCodeLensesPromise)==null||l.cancel(),this._resolveCodeLensesPromise=void 0;const e=this._editor.getModel();if(!e)return;const t=[],i=[];if(this._lenses.forEach(r=>{const a=r.computeIfNecessary(e);a&&(t.push(a),i.push(r))}),t.length===0)return;const n=Date.now(),o=Xo(r=>{const a=t.map((d,c)=>{const h=new Array(d.length),u=d.map((m,p)=>!m.symbol.command&&typeof m.provider.resolveCodeLens=="function"?Promise.resolve(m.provider.resolveCodeLens(e,m.symbol,r)).then(g=>{h[p]=g},Os):(h[p]=m.symbol,Promise.resolve(void 0)));return Promise.all(u).then(()=>{!r.isCancellationRequested&&!i[c].isDisposed()&&i[c].updateCommands(h)})});return Promise.all(a)});this._resolveCodeLensesPromise=o,this._resolveCodeLensesPromise.then(()=>{const r=this._resolveCodeLensesDebounce.update(e,Date.now()-n);this._resolveCodeLensesScheduler.delay=r,this._currentCodeLensModel&&this._codeLensCache.put(e,this._currentCodeLensModel),this._oldCodeLensModels.clear(),o===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},r=>{vt(r),o===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}async getModel(){var e;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,(e=this._currentCodeLensModel)!=null&&e.isDisposed?void 0:this._currentCodeLensModel}},DT.ID="css.editor.codeLens",DT);lT=ktt([j1(1,lt),j1(2,gc),j1(3,On),j1(4,no),j1(5,PFe)],lT);Gi(lT.ID,lT,1);Me(class extends et{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:H.hasCodeLensProvider,label:U("showLensOnLine","Show CodeLens Commands For Current Line"),alias:"Show CodeLens Commands For Current Line"})}async run(e,t){if(!t.hasModel())return;const i=e.get(nh),n=e.get(On),o=e.get(no),l=t.getSelection().positionLineNumber,r=t.getContribution(lT.ID);if(!r)return;const a=await r.getModel();if(!a)return;const d=[];for(const u of a.lenses)u.symbol.command&&u.symbol.range.startLineNumber===l&&d.push({label:u.symbol.command.title,command:u.symbol.command});if(d.length===0)return;const c=await i.pick(d,{canPickMany:!1,placeHolder:U("placeHolder","Select a command")});if(!c)return;let h=c.command;if(a.isDisposed){const u=await r.getModel(),m=u==null?void 0:u.lenses.find(p=>{var g;return p.symbol.range.startLineNumber===l&&((g=p.symbol.command)==null?void 0:g.title)===h.title});if(!m||!m.symbol.command)return;h=m.symbol.command}try{await n.executeCommand(h.id,...h.arguments||[])}catch(u){o.error(u)}}});var KFe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},g7=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let rT=class{constructor(e){this._editorWorkerService=e}async provideDocumentColors(e,t){return this._editorWorkerService.computeDefaultDocumentColors(e.uri)}provideColorPresentations(e,t,i){const n=t.range,o=t.color,l=o.alpha,r=new Re(new vi(Math.round(255*o.red),Math.round(255*o.green),Math.round(255*o.blue),l)),a=l?Re.Format.CSS.formatRGB(r):Re.Format.CSS.formatRGBA(r),d=l?Re.Format.CSS.formatHSL(r):Re.Format.CSS.formatHSLA(r),c=l?Re.Format.CSS.formatHex(r):Re.Format.CSS.formatHexA(r),h=[];return h.push({label:a,textEdit:{range:n,text:a}}),h.push({label:d,textEdit:{range:n,text:d}}),h.push({label:c,textEdit:{range:n,text:c}}),h}};rT=KFe([g7(0,_a)],rT);let b7=class extends de{constructor(e,t){super(),this._register(e.colorProvider.register("*",new rT(t)))}};b7=KFe([g7(0,lt),g7(1,_a)],b7);i1(b7);async function qFe(s,e,t,i=!0){return uie(new Itt,s,e,t,i)}function $Fe(s,e,t,i){return Promise.resolve(t.provideColorPresentations(s,e,i))}class Itt{constructor(){}async compute(e,t,i,n){const o=await e.provideDocumentColors(t,i);if(Array.isArray(o))for(const l of o)n.push({colorInfo:l,provider:e});return Array.isArray(o)}}class Dtt{constructor(){}async compute(e,t,i,n){const o=await e.provideDocumentColors(t,i);if(Array.isArray(o))for(const l of o)n.push({range:l.range,color:[l.color.red,l.color.green,l.color.blue,l.color.alpha]});return Array.isArray(o)}}class Gtt{constructor(e){this.colorInfo=e}async compute(e,t,i,n){const o=await e.provideColorPresentations(t,this.colorInfo,$t.None);return Array.isArray(o)&&n.push(...o),Array.isArray(o)}}async function uie(s,e,t,i,n){let o=!1,l;const r=[],a=e.ordered(t);for(let d=a.length-1;d>=0;d--){const c=a[d];if(c instanceof rT)l=c;else try{await s.compute(c,t,i,r)&&(o=!0)}catch(h){Os(h)}}return o?r:l&&n?(await s.compute(l,t,i,r),r):[]}function eZe(s,e){const{colorProvider:t}=s.get(lt),i=s.get(es).getModel(e);if(!i)throw Yc();const n=s.get(li).getValue("editor.defaultColorDecorators",{resource:e});return{model:i,colorProviderRegistry:t,isDefaultColorDecoratorsEnabled:n}}Bi.registerCommand("_executeDocumentColorProvider",function(s,...e){const[t]=e;if(!(t instanceof At))throw Yc();const{model:i,colorProviderRegistry:n,isDefaultColorDecoratorsEnabled:o}=eZe(s,t);return uie(new Dtt,n,i,$t.None,o)});Bi.registerCommand("_executeColorPresentationProvider",function(s,...e){const[t,i]=e,{uri:n,range:o}=i;if(!(n instanceof At)||!Array.isArray(t)||t.length!==4||!v.isIRange(o))throw Yc();const{model:l,colorProviderRegistry:r,isDefaultColorDecoratorsEnabled:a}=eZe(s,n),[d,c,h,u]=t;return uie(new Gtt({range:o,color:{red:d,green:c,blue:h,alpha:u}}),r,l,$t.None,a)});var Ett=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},p_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},U7;const tZe=Object.create({});var sA;let WV=(sA=class extends de{constructor(e,t,i,n){super(),this._editor=e,this._configurationService=t,this._languageFeaturesService=i,this._localToDispose=this._register(new Ze),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new ix(this._editor),this._decoratorLimitReporter=new vtt,this._colorDecorationClassRefs=this._register(new Ze),this._debounceInformation=n.for(i.colorProvider,"Document Colors",{min:U7.RECOMPUTE_TIME}),this._register(e.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(e.onDidChangeModelLanguage(()=>this.updateColors())),this._register(i.colorProvider.onDidChange(()=>this.updateColors())),this._register(e.onDidChangeConfiguration(o=>{const l=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(148);const r=l!==this._isColorDecoratorsEnabled||o.hasChanged(21),a=o.hasChanged(148);(r||a)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(148),this.updateColors()}isEnabled(){const e=this._editor.getModel();if(!e)return!1;const t=e.getLanguageId(),i=this._configurationService.getValue(t);if(i&&typeof i=="object"){const n=i.colorDecorators;if(n&&n.enable!==void 0&&!n.enable)return n.enable}return this._editor.getOption(20)}static get(e){return e.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const e=this._editor.getModel();!e||!this._languageFeaturesService.colorProvider.has(e)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new iu,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(e)))})),this.beginCompute())}async beginCompute(){this._computePromise=Xo(async e=>{const t=this._editor.getModel();if(!t)return[];const i=new ol(!1),n=await qFe(this._languageFeaturesService.colorProvider,t,e,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(t,i.elapsed()),n});try{const e=await this._computePromise;this.updateDecorations(e),this.updateColorDecorators(e),this._computePromise=null}catch(e){vt(e)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(e){const t=e.map(i=>({range:{startLineNumber:i.colorInfo.range.startLineNumber,startColumn:i.colorInfo.range.startColumn,endLineNumber:i.colorInfo.range.endLineNumber,endColumn:i.colorInfo.range.endColumn},options:Ot.EMPTY}));this._editor.changeDecorations(i=>{this._decorationsIds=i.deltaDecorations(this._decorationsIds,t),this._colorDatas=new Map,this._decorationsIds.forEach((n,o)=>this._colorDatas.set(n,e[o]))})}updateColorDecorators(e){this._colorDecorationClassRefs.clear();const t=[],i=this._editor.getOption(21);for(let o=0;o<e.length&&t.length<i;o++){const{red:l,green:r,blue:a,alpha:d}=e[o].colorInfo.color,c=new vi(Math.round(l*255),Math.round(r*255),Math.round(a*255),d),h=`rgba(${c.r}, ${c.g}, ${c.b}, ${c.a})`,u=this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({backgroundColor:h}));t.push({range:{startLineNumber:e[o].colorInfo.range.startLineNumber,startColumn:e[o].colorInfo.range.startColumn,endLineNumber:e[o].colorInfo.range.endLineNumber,endColumn:e[o].colorInfo.range.endColumn},options:{description:"colorDetector",before:{content:nge,inlineClassName:`${u.className} colorpicker-color-decoration`,inlineClassNameAffectsLetterSpacing:!0,attachedData:tZe}}})}const n=i<e.length?i:!1;this._decoratorLimitReporter.update(e.length,n),this._colorDecoratorIds.set(t)}removeAllDecorations(){this._editor.removeDecorations(this._decorationsIds),this._decorationsIds=[],this._colorDecoratorIds.clear(),this._colorDecorationClassRefs.clear()}getColorData(e){const t=this._editor.getModel();if(!t)return null;const i=t.getDecorationsInRange(v.fromPositions(e,e)).filter(n=>this._colorDatas.has(n.id));return i.length===0?null:this._colorDatas.get(i[0].id)}isColorDecoration(e){return this._colorDecoratorIds.has(e)}},U7=sA,sA.ID="editor.contrib.colorDetector",sA.RECOMPUTE_TIME=1e3,sA);WV=U7=Ett([p_(1,li),p_(2,lt),p_(3,gc)],WV);class vtt{constructor(){this._onDidChange=new re,this._computed=0,this._limited=!1}update(e,t){(e!==this._computed||t!==this._limited)&&(this._computed=e,this._limited=t,this._onDidChange.fire())}}Gi(WV.ID,WV,1);class xtt{get color(){return this._color}set color(e){this._color.equals(e)||(this._color=e,this._onDidChangeColor.fire(e))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(e){this._colorPresentations=e,this.presentationIndex>e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(e,t,i){this.presentationIndex=i,this._onColorFlushed=new re,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new re,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new re,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=e,this._color=e,this._colorPresentations=t}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(e,t){let i=-1;for(let n=0;n<this.colorPresentations.length;n++)if(t.toLowerCase()===this.colorPresentations[n].label){i=n;break}if(i===-1){const n=t.split("(")[0].toLowerCase();for(let o=0;o<this.colorPresentations.length;o++)if(this.colorPresentations[o].label.toLowerCase().startsWith(n)){i=o;break}}i!==-1&&i!==this.presentationIndex&&(this.presentationIndex=i,this._onDidChangePresentation.fire(this.presentation))}flushColor(){this._onColorFlushed.fire(this._color)}}const tc=Ge;class Jtt extends de{constructor(e,t,i,n=!1){super(),this.model=t,this.showingStandaloneColorPicker=n,this._closeButton=null,this._domNode=tc(".colorpicker-header"),ye(e,this._domNode),this._pickedColorNode=ye(this._domNode,tc(".picked-color")),ye(this._pickedColorNode,tc("span.codicon.codicon-color-mode")),this._pickedColorPresentation=ye(this._pickedColorNode,document.createElement("span")),this._pickedColorPresentation.classList.add("picked-color-presentation");const o=U("clickToToggleColorOptions","Click to toggle color options (rgb/hsl/hex)");this._pickedColorNode.setAttribute("title",o),this._originalColorNode=ye(this._domNode,tc(".original-color")),this._originalColorNode.style.backgroundColor=Re.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=i.getColorTheme().getColor(rv)||Re.white,this._register(i.onDidColorThemeChange(l=>{this.backgroundColor=l.getColor(rv)||Re.white})),this._register(ge(this._pickedColorNode,De.CLICK,()=>this.model.selectNextColorPresentation())),this._register(ge(this._originalColorNode,De.CLICK,()=>{this.model.color=this.model.originalColor,this.model.flushColor()})),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this._register(t.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=Re.Format.CSS.format(t.color)||"",this._pickedColorNode.classList.toggle("light",t.color.rgba.a<.5?this.backgroundColor.isLighter():t.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add("standalone-colorpicker"),this._closeButton=this._register(new Xtt(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(e){this._pickedColorNode.style.backgroundColor=Re.Format.CSS.format(e)||"",this._pickedColorNode.classList.toggle("light",e.rgba.a<.5?this.backgroundColor.isLighter():e.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:""}}class Xtt extends de{constructor(e){super(),this._onClicked=this._register(new re),this.onClicked=this._onClicked.event,this._button=document.createElement("div"),this._button.classList.add("close-button"),ye(e,this._button);const t=document.createElement("div");t.classList.add("close-button-inner-div"),ye(this._button,t),ye(t,tc(".button"+Qt.asCSSSelector(ts("color-picker-close",ke.close,U("closeIcon","Icon to close the color picker"))))).classList.add("close-icon"),this._register(ge(this._button,De.CLICK,()=>{this._onClicked.fire()}))}}class Ytt extends de{constructor(e,t,i,n=!1){super(),this.model=t,this.pixelRatio=i,this._insertButton=null,this._domNode=tc(".colorpicker-body"),ye(e,this._domNode),this._saturationBox=new ztt(this._domNode,this.model,this.pixelRatio),this._register(this._saturationBox),this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this._saturationBox.onColorFlushed(this.flushColor,this)),this._opacityStrip=new _tt(this._domNode,this.model,n),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new Ott(this._domNode,this.model,n),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),n&&(this._insertButton=this._register(new jtt(this._domNode)),this._domNode.classList.add("standalone-colorpicker"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:e,v:t}){const i=this.model.color.hsva;this.model.color=new Re(new pp(i.h,e,t,i.a))}onDidOpacityChange(e){const t=this.model.color.hsva;this.model.color=new Re(new pp(t.h,t.s,t.v,e))}onDidHueChange(e){const t=this.model.color.hsva,i=(1-e)*360;this.model.color=new Re(new pp(i===360?0:i,t.s,t.v,t.a))}get domNode(){return this._domNode}get saturationBox(){return this._saturationBox}get enterButton(){return this._insertButton}layout(){this._saturationBox.layout(),this._opacityStrip.layout(),this._hueStrip.layout()}}class ztt extends de{constructor(e,t,i){super(),this.model=t,this.pixelRatio=i,this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new re,this.onColorFlushed=this._onColorFlushed.event,this._domNode=tc(".saturation-wrap"),ye(e,this._domNode),this._canvas=document.createElement("canvas"),this._canvas.className="saturation-box",ye(this._domNode,this._canvas),this.selection=tc(".saturation-selection"),ye(this._domNode,this.selection),this.layout(),this._register(ge(this._domNode,De.POINTER_DOWN,n=>this.onPointerDown(n))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;this.monitor=this._register(new _Q);const t=_s(this._domNode);e.target!==this.selection&&this.onDidChangePosition(e.offsetX,e.offsetY),this.monitor.startMonitoring(e.target,e.pointerId,e.buttons,n=>this.onDidChangePosition(n.pageX-t.left,n.pageY-t.top),()=>null);const i=ge(e.target.ownerDocument,De.POINTER_UP,()=>{this._onColorFlushed.fire(),i.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)},!0)}onDidChangePosition(e,t){const i=Math.max(0,Math.min(1,e/this.width)),n=Math.max(0,Math.min(1,1-t/this.height));this.paintSelection(i,n),this._onDidChange.fire({s:i,v:n})}layout(){this.width=this._domNode.offsetWidth,this.height=this._domNode.offsetHeight,this._canvas.width=this.width*this.pixelRatio,this._canvas.height=this.height*this.pixelRatio,this.paint();const e=this.model.color.hsva;this.paintSelection(e.s,e.v)}paint(){const e=this.model.color.hsva,t=new Re(new pp(e.h,1,1,1)),i=this._canvas.getContext("2d"),n=i.createLinearGradient(0,0,this._canvas.width,0);n.addColorStop(0,"rgba(255, 255, 255, 1)"),n.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),n.addColorStop(1,"rgba(255, 255, 255, 0)");const o=i.createLinearGradient(0,0,0,this._canvas.height);o.addColorStop(0,"rgba(0, 0, 0, 0)"),o.addColorStop(1,"rgba(0, 0, 0, 1)"),i.rect(0,0,this._canvas.width,this._canvas.height),i.fillStyle=Re.Format.CSS.format(t),i.fill(),i.fillStyle=n,i.fill(),i.fillStyle=o,i.fill()}paintSelection(e,t){this.selection.style.left=`${e*this.width}px`,this.selection.style.top=`${this.height-t*this.height}px`}onDidChangeColor(e){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const t=e.hsva;this.paintSelection(t.s,t.v)}}class iZe extends de{constructor(e,t,i=!1){super(),this.model=t,this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new re,this.onColorFlushed=this._onColorFlushed.event,i?(this.domNode=ye(e,tc(".standalone-strip")),this.overlay=ye(this.domNode,tc(".standalone-overlay"))):(this.domNode=ye(e,tc(".strip")),this.overlay=ye(this.domNode,tc(".overlay"))),this.slider=ye(this.domNode,tc(".slider")),this.slider.style.top="0px",this._register(ge(this.domNode,De.POINTER_DOWN,n=>this.onPointerDown(n))),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const e=this.getValue(this.model.color);this.updateSliderPosition(e)}onDidChangeColor(e){const t=this.getValue(e);this.updateSliderPosition(t)}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._register(new _Q),i=_s(this.domNode);this.domNode.classList.add("grabbing"),e.target!==this.slider&&this.onDidChangeTop(e.offsetY),t.startMonitoring(e.target,e.pointerId,e.buttons,o=>this.onDidChangeTop(o.pageY-i.top),()=>null);const n=ge(e.target.ownerDocument,De.POINTER_UP,()=>{this._onColorFlushed.fire(),n.dispose(),t.stopMonitoring(!0),this.domNode.classList.remove("grabbing")},!0)}onDidChangeTop(e){const t=Math.max(0,Math.min(1,1-e/this.height));this.updateSliderPosition(t),this._onDidChange.fire(t)}updateSliderPosition(e){this.slider.style.top=`${(1-e)*this.height}px`}}class _tt extends iZe{constructor(e,t,i=!1){super(e,t,i),this.domNode.classList.add("opacity-strip"),this.onDidChangeColor(this.model.color)}onDidChangeColor(e){super.onDidChangeColor(e);const{r:t,g:i,b:n}=e.rgba,o=new Re(new vi(t,i,n,1)),l=new Re(new vi(t,i,n,0));this.overlay.style.background=`linear-gradient(to bottom, ${o} 0%, ${l} 100%)`}getValue(e){return e.hsva.a}}class Ott extends iZe{constructor(e,t,i=!1){super(e,t,i),this.domNode.classList.add("hue-strip")}getValue(e){return 1-e.hsva.h/360}}class jtt extends de{constructor(e){super(),this._onClicked=this._register(new re),this.onClicked=this._onClicked.event,this._button=ye(e,document.createElement("button")),this._button.classList.add("insert-button"),this._button.textContent="Insert",this._register(ge(this._button,De.CLICK,()=>{this._onClicked.fire()}))}get button(){return this._button}}class Htt extends bc{constructor(e,t,i,n,o=!1){super(),this.model=t,this.pixelRatio=i,this._register(rM.getInstance(Wt(e)).onDidChange(()=>this.layout())),this._domNode=tc(".colorpicker-widget"),e.appendChild(this._domNode),this.header=this._register(new Jtt(this._domNode,this.model,n,o)),this.body=this._register(new Ytt(this._domNode,this.model,this.pixelRatio,o))}layout(){this.body.layout()}get domNode(){return this._domNode}}class g_{constructor(e,t,i,n){this.priority=e,this.range=t,this.initialMousePosX=i,this.initialMousePosY=n,this.type=1}equals(e){return e.type===1&&this.range.equalsRange(e.range)}canAdoptVisibleHover(e,t){return e.type===1&&t.lineNumber===this.range.startLineNumber}}class RD{constructor(e,t,i,n,o,l){this.priority=e,this.owner=t,this.range=i,this.initialMousePosX=n,this.initialMousePosY=o,this.supportsMarkerHover=l,this.type=2}equals(e){return e.type===2&&this.owner===e.owner}canAdoptVisibleHover(e,t){return e.type===2&&this.owner===e.owner}}class vA{constructor(e){this.renderedHoverParts=e}dispose(){for(const e of this.renderedHoverParts)e.dispose()}}const aN=new class{constructor(){this._participants=[]}register(e){this._participants.push(e)}getAll(){return this._participants}};var nZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},sZe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Ptt{constructor(e,t,i,n){this.owner=e,this.range=t,this.model=i,this.provider=n,this.forceShowAtRange=!0}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let aT=class{constructor(e,t){this._editor=e,this._themeService=t,this.hoverOrdinal=2}computeSync(e,t){return[]}computeAsync(e,t,i){return nc.fromPromise(this._computeAsync(e,t,i))}async _computeAsync(e,t,i){if(!this._editor.hasModel())return[];const n=WV.get(this._editor);if(!n)return[];for(const o of t){if(!n.isColorDecoration(o))continue;const l=n.getColorData(o.range.getStartPosition());if(l)return[await oZe(this,this._editor.getModel(),l.colorInfo,l.provider)]}return[]}renderHoverParts(e,t){const i=lZe(this,this._editor,this._themeService,t,e);if(!i)return new vA([]);this._colorPicker=i.colorPicker;const n={hoverPart:i.hoverPart,hoverElement:this._colorPicker.domNode,dispose(){i.disposables.dispose()}};return new vA([n])}handleResize(){var e;(e=this._colorPicker)==null||e.layout()}isColorPickerVisible(){return!!this._colorPicker}};aT=nZe([sZe(1,Do)],aT);class Ktt{constructor(e,t,i,n){this.owner=e,this.range=t,this.model=i,this.provider=n}}let dT=class{constructor(e,t){this._editor=e,this._themeService=t,this._color=null}async createColorHover(e,t,i){if(!this._editor.hasModel()||!WV.get(this._editor))return null;const o=await qFe(i,this._editor.getModel(),$t.None);let l=null,r=null;for(const h of o){const u=h.colorInfo;v.containsRange(u.range,e.range)&&(l=u,r=h.provider)}const a=l??e,d=r??t,c=!!l;return{colorHover:await oZe(this,this._editor.getModel(),a,d),foundInEditor:c}}async updateEditorModel(e){if(!this._editor.hasModel())return;const t=e.model;let i=new v(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn);this._color&&(await SD(this._editor.getModel(),t,this._color,i,e),i=rZe(this._editor,i,t))}renderHoverParts(e,t){return lZe(this,this._editor,this._themeService,t,e)}set color(e){this._color=e}get color(){return this._color}};dT=nZe([sZe(1,Do)],dT);async function oZe(s,e,t,i){const n=e.getValueInRange(t.range),{red:o,green:l,blue:r,alpha:a}=t.color,d=new vi(Math.round(o*255),Math.round(l*255),Math.round(r*255),a),c=new Re(d),h=await $Fe(e,t,i,$t.None),u=new xtt(c,[],0);return u.colorPresentations=h||[],u.guessColorPresentation(c,n),s instanceof aT?new Ptt(s,v.lift(t.range),u,i):new Ktt(s,v.lift(t.range),u,i)}function lZe(s,e,t,i,n){if(i.length===0||!e.hasModel())return;if(n.setMinimumDimensions){const u=e.getOption(67)+8;n.setMinimumDimensions(new bn(302,u))}const o=new Ze,l=i[0],r=e.getModel(),a=l.model,d=o.add(new Htt(n.fragment,a,e.getOption(144),t,s instanceof dT));let c=!1,h=new v(l.range.startLineNumber,l.range.startColumn,l.range.endLineNumber,l.range.endColumn);if(s instanceof dT){const u=l.model.color;s.color=u,SD(r,a,u,h,l),o.add(a.onColorFlushed(m=>{s.color=m}))}else o.add(a.onColorFlushed(async u=>{await SD(r,a,u,h,l),c=!0,h=rZe(e,h,a)}));return o.add(a.onDidChangeColor(u=>{SD(r,a,u,h,l)})),o.add(e.onDidChangeModelContent(u=>{c?c=!1:(n.hide(),e.focus())})),{hoverPart:l,colorPicker:d,disposables:o}}function rZe(s,e,t){const i=[],n=t.presentation.textEdit??{range:e,text:t.presentation.label,forceMoveMarkers:!1};i.push(n),t.presentation.additionalTextEdits&&i.push(...t.presentation.additionalTextEdits);const o=v.lift(n.range),l=s.getModel()._setTrackedRange(null,o,3);return s.executeEdits("colorpicker",i),s.pushUndoStop(),s.getModel()._getTrackedRange(l)??o}async function SD(s,e,t,i,n){const o=await $Fe(s,{range:i,color:{red:t.rgba.r/255,green:t.rgba.g/255,blue:t.rgba.b/255,alpha:t.rgba.a}},n.provider,$t.None);e.colorPresentations=o||[]}const aZe="editor.action.showHover",qtt="editor.action.showDefinitionPreviewHover",$tt="editor.action.scrollUpHover",eit="editor.action.scrollDownHover",tit="editor.action.scrollLeftHover",iit="editor.action.scrollRightHover",nit="editor.action.pageUpHover",sit="editor.action.pageDownHover",oit="editor.action.goToTopHover",lit="editor.action.goToBottomHover",mz="editor.action.increaseHoverVerbosityLevel",rit=U({key:"increaseHoverVerbosityLevel",comment:["Label for action that will increase the hover verbosity level."]},"Increase Hover Verbosity Level"),pz="editor.action.decreaseHoverVerbosityLevel",ait=U({key:"decreaseHoverVerbosityLevel",comment:["Label for action that will decrease the hover verbosity level."]},"Decrease Hover Verbosity Level");const dZe="editor.action.inlineSuggest.commit",cZe="editor.action.inlineSuggest.showPrevious",hZe="editor.action.inlineSuggest.showNext";var mie=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Gh=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},WD;let f7=class extends de{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).showToolbar==="always"),this.sessionPosition=void 0,this.position=ht(this,n=>{var a,d;const o=(a=this.model.read(n))==null?void 0:a.primaryGhostText.read(n);if(!this.alwaysShowToolbar.read(n)||!o||o.parts.length===0)return this.sessionPosition=void 0,null;const l=o.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==o.lineNumber&&(this.sessionPosition=void 0);const r=new oe(o.lineNumber,Math.min(l,((d=this.sessionPosition)==null?void 0:d.column)??Number.MAX_SAFE_INTEGER));return this.sessionPosition=r,r}),this._register(Ga((n,o)=>{const l=this.model.read(n);if(!l||!this.alwaysShowToolbar.read(n))return;const r=Uf((d,c)=>{const h=c.add(this.instantiationService.createInstance(VV,this.editor,!0,this.position,l.selectedInlineCompletionIndex,l.inlineCompletionsCount,l.activeCommands));return e.addContentWidget(h),c.add(gt(()=>e.removeContentWidget(h))),c.add(Gt(u=>{this.position.read(u)&&l.lastTriggerKind.read(u)!==Ju.Explicit&&l.triggerExplicitly()})),h}),a=UB(this,(d,c)=>!!this.position.read(d)||!!c);o.add(Gt(d=>{a.read(d)&&r.read(d)}))}))}};f7=mie([Gh(2,bt)],f7);const dit=ts("inline-suggestion-hints-next",ke.chevronRight,U("parameterHintsNextIcon","Icon for show next parameter hint.")),cit=ts("inline-suggestion-hints-previous",ke.chevronLeft,U("parameterHintsPreviousIcon","Icon for show previous parameter hint."));var oA;let VV=(oA=class extends de{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(e,t,i){const n=new bd(e,t,i,!0,()=>this._commandService.executeCommand(e)),o=this.keybindingService.lookupKeybinding(e,this._contextKeyService);let l=t;return o&&(l=U({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",t,o.getLabel())),n.tooltip=l,n}constructor(e,t,i,n,o,l,r,a,d,c,h){super(),this.editor=e,this.withBorder=t,this._position=i,this._currentSuggestionIdx=n,this._suggestionCount=o,this._extraCommands=l,this._commandService=r,this.keybindingService=d,this._contextKeyService=c,this._menuService=h,this.id=`InlineSuggestionHintsContentWidget${WD.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=gi("div.inlineSuggestionsHints",{className:this.withBorder?".withBorder":""},[gi("div@toolBar")]),this.previousAction=this.createCommandAction(cZe,U("previous","Previous"),Qt.asClassName(cit)),this.availableSuggestionCountAction=new bd("inlineSuggestionHints.availableSuggestionCount","",void 0,!1),this.nextAction=this.createCommandAction(hZe,U("next","Next"),Qt.asClassName(dit)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(at.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new Rn(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new Rn(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this.toolBar=this._register(a.createInstance(F7,this.nodes.toolBar,at.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:u=>u.startsWith("primary")},actionViewItemProvider:(u,m)=>{if(u instanceof Ud)return a.createInstance(uit,u,void 0);if(u===this.availableSuggestionCountAction){const p=new hit(void 0,u,{label:!0,icon:!1});return p.setClass("availableSuggestionCount"),p}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(u=>{WD._dropDownVisible=u})),this._register(Gt(u=>{this._position.read(u),this.editor.layoutContentWidget(this)})),this._register(Gt(u=>{const m=this._suggestionCount.read(u),p=this._currentSuggestionIdx.read(u);m!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${p+1}/${m}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),m!==void 0&&m>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register(Gt(u=>{const p=this._extraCommands.read(u).map(g=>({class:void 0,id:g.id,enabled:!0,tooltip:g.tooltip||"",label:g.title,run:b=>this._commandService.executeCommand(g.id)}));for(const[g,b]of this.inlineCompletionsActionsMenus.getActions())for(const f of b)f instanceof Ud&&p.push(f);p.length>0&&p.unshift(new zo),this.toolBar.setAdditionalSecondaryActions(p)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}},WD=oA,oA._dropDownVisible=!1,oA.id=0,oA);VV=WD=mie([Gh(6,On),Gh(7,bt),Gh(8,dn),Gh(9,wt),Gh(10,pc)],VV);class hit extends pV{constructor(){super(...arguments),this._className=void 0}setClass(e){this._className=e}render(e){super.render(e),this._className&&e.classList.add(this._className)}updateTooltip(){}}let uit=class extends $U{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=gi("div.keybinding").root;this._register(new e1(t,pd,{disableTitle:!0,...YUe})).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}updateTooltip(){}},F7=class extends qM{constructor(e,t,i,n,o,l,r,a,d){super(e,{resetMenu:t,...i},n,o,l,r,a,d),this.menuId=t,this.options2=i,this.menuService=n,this.contextKeyService=o,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var i,n,o,l,r,a,d;const e=[],t=[];vY(this.menu,(i=this.options2)==null?void 0:i.menuOptions,{primary:e,secondary:t},(o=(n=this.options2)==null?void 0:n.toolbarOptions)==null?void 0:o.primaryGroup,(r=(l=this.options2)==null?void 0:l.toolbarOptions)==null?void 0:r.shouldInlineSubmenu,(d=(a=this.options2)==null?void 0:a.toolbarOptions)==null?void 0:d.useSeparatorsInPrimaryActions),t.push(...this.additionalActions),e.unshift(...this.prependedPrimaryActions),this.setActions(e,t)}setPrependedPrimaryActions(e){Fs(this.prependedPrimaryActions,e,(t,i)=>t===i)||(this.prependedPrimaryActions=e,this.updateToolbar())}setAdditionalSecondaryActions(e){Fs(this.additionalActions,e,(t,i)=>t===i)||(this.additionalActions=e,this.updateToolbar())}};F7=mie([Gh(3,pc),Gh(4,wt),Gh(5,Vd),Gh(6,dn),Gh(7,On),Gh(8,lr)],F7);function gz(s,e,t){const i=_s(s);return!(e<i.left||e>i.left+i.width||t<i.top||t>i.top+i.height)}let mit=class{constructor(e,t,i){this.value=e,this.isComplete=t,this.hasLoadingMessage=i}};class uZe extends de{constructor(e,t){super(),this._editor=e,this._computer=t,this._onResult=this._register(new re),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new Rn(()=>this._triggerAsyncComputation(),0)),this._secondWaitScheduler=this._register(new Rn(()=>this._triggerSyncComputation(),0)),this._loadingMessageScheduler=this._register(new Rn(()=>this._triggerLoadingMessage(),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),super.dispose()}get _hoverTime(){return this._editor.getOption(60).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(e,t=!0){this._state=e,t&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=_Ge(e=>this._computer.computeAsync(e)),(async()=>{try{for await(const e of this._asyncIterable)e&&(this._result.push(e),this._fireResult());this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0)}catch(e){vt(e)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){this._state===3&&this._setState(4)}_fireResult(){if(this._state===1||this._state===2)return;const e=this._state===0,t=this._state===4;this._onResult.fire(new mit(this._result.slice(0),e,t))}start(e){if(e===0)this._state===0&&(this._setState(1),this._firstWaitScheduler.schedule(this._firstWaitTime),this._loadingMessageScheduler.schedule(this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}class pie{constructor(){this._onDidWillResize=new re,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new re,this.onDidResize=this._onDidResize.event,this._sashListener=new Ze,this._size=new bn(0,0),this._minSize=new bn(0,0),this._maxSize=new bn(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new ql(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new ql(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new ql(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:Iv.North}),this._southSash=new ql(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:Iv.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let e,t=0,i=0;this._sashListener.add(ve.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{e===void 0&&(this._onDidWillResize.fire(),e=this._size,t=0,i=0)})),this._sashListener.add(ve.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{e!==void 0&&(e=void 0,t=0,i=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(n=>{e&&(i=n.currentX-n.startX,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(n=>{e&&(i=-(n.currentX-n.startX),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(n=>{e&&(t=-(n.currentY-n.startY),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(n=>{e&&(t=n.currentY-n.startY,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(ve.any(this._eastSash.onDidReset,this._westSash.onDidReset)(n=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(ve.any(this._northSash.onDidReset,this._southSash.onDidReset)(n=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(e,t,i,n){this._northSash.state=e?3:0,this._eastSash.state=t?3:0,this._southSash.state=i?3:0,this._westSash.state=n?3:0}layout(e=this.size.height,t=this.size.width){const{height:i,width:n}=this._minSize,{height:o,width:l}=this._maxSize;e=Math.max(i,Math.min(o,e)),t=Math.max(n,Math.min(l,t));const r=new bn(t,e);bn.equals(r,this._size)||(this.domNode.style.height=e+"px",this.domNode.style.width=t+"px",this._size=r,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(e){this._maxSize=e}get maxSize(){return this._maxSize}set minSize(e){this._minSize=e}get minSize(){return this._minSize}set preferredSize(e){this._preferredSize=e}get preferredSize(){return this._preferredSize}}const pit=30,git=24;class bit extends de{constructor(e,t=new bn(10,10)){super(),this._editor=e,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new pie),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=bn.lift(t),this._resizableNode.layout(t.height,t.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(i=>{this._resize(new bn(i.dimension.width,i.dimension.height)),i.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var e;return(e=this._contentPosition)!=null&&e.position?oe.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);return!t||!i?void 0:_s(t).top+i.top-pit}_availableVerticalSpaceBelow(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);if(!t||!i)return;const n=_s(t),o=N0(t.ownerDocument.body),l=n.top+i.top+i.height;return o.height-l-git}_findPositionPreference(e,t){const i=Math.min(this._availableVerticalSpaceBelow(t)??1/0,e),n=Math.min(this._availableVerticalSpaceAbove(t)??1/0,e),o=Math.min(Math.max(n,i),e),l=Math.min(e,o);let r;return this._editor.getOption(60).above?r=l<=n?1:2:r=l<=i?2:1,r===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),r}_resize(e){this._resizableNode.layout(e.height,e.width)}}var Uit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Fk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Tm;const kde=30,fit=6;var lA;let Z7=(lA=class extends bit{get isVisibleFromKeyboard(){var e;return((e=this._renderedHover)==null?void 0:e.source)===1}get isVisible(){return this._hoverVisibleKey.get()??!1}get isFocused(){return this._hoverFocusedKey.get()??!1}constructor(e,t,i,n,o){const l=e.getOption(67)+8,r=150,a=new bn(r,l);super(e,a),this._configurationService=i,this._accessibilityService=n,this._keybindingService=o,this._hover=this._register(new pee),this._onDidResize=this._register(new re),this.onDidResize=this._onDidResize.event,this._minimumSize=a,this._hoverVisibleKey=H.hoverVisible.bindTo(t),this._hoverFocusedKey=H.hoverFocused.bindTo(t),ye(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._register(this._editor.onDidLayoutChange(()=>{this.isVisible&&this._updateMaxDimensions()})),this._register(this._editor.onDidChangeConfiguration(c=>{c.hasChanged(50)&&this._updateFont()}));const d=this._register(Hu(this._resizableNode.domNode));this._register(d.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(d.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._setRenderedHover(void 0),this._editor.addContentWidget(this)}dispose(){var e;super.dispose(),(e=this._renderedHover)==null||e.dispose(),this._editor.removeContentWidget(this)}getId(){return Tm.ID}static _applyDimensions(e,t,i){const n=typeof t=="number"?`${t}px`:t,o=typeof i=="number"?`${i}px`:i;e.style.width=n,e.style.height=o}_setContentsDomNodeDimensions(e,t){const i=this._hover.contentsDomNode;return Tm._applyDimensions(i,e,t)}_setContainerDomNodeDimensions(e,t){const i=this._hover.containerDomNode;return Tm._applyDimensions(i,e,t)}_setHoverWidgetDimensions(e,t){this._setContentsDomNodeDimensions(e,t),this._setContainerDomNodeDimensions(e,t),this._layoutContentWidget()}static _applyMaxDimensions(e,t,i){const n=typeof t=="number"?`${t}px`:t,o=typeof i=="number"?`${i}px`:i;e.style.maxWidth=n,e.style.maxHeight=o}_setHoverWidgetMaxDimensions(e,t){Tm._applyMaxDimensions(this._hover.contentsDomNode,e,t),Tm._applyMaxDimensions(this._hover.containerDomNode,e,t),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof e=="number"?`${e}px`:e),this._layoutContentWidget()}_setAdjustedHoverWidgetDimensions(e){this._setHoverWidgetMaxDimensions("none","none");const t=e.width,i=e.height;this._setHoverWidgetDimensions(t,i)}_updateResizableNodeMaxDimensions(){const e=this._findMaximumRenderingWidth()??1/0,t=this._findMaximumRenderingHeight()??1/0;this._resizableNode.maxSize=new bn(e,t),this._setHoverWidgetMaxDimensions(e,t)}_resize(e){Tm._lastDimensions=new bn(e.width,e.height),this._setAdjustedHoverWidgetDimensions(e),this._resizableNode.layout(e.height,e.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),this._onDidResize.fire()}_findAvailableSpaceVertically(){var t;const e=(t=this._renderedHover)==null?void 0:t.showAtPosition;if(e)return this._positionPreference===1?this._availableVerticalSpaceAbove(e):this._availableVerticalSpaceBelow(e)}_findMaximumRenderingHeight(){const e=this._findAvailableSpaceVertically();if(!e)return;let t=fit;return Array.from(this._hover.contentsDomNode.children).forEach(i=>{t+=i.clientHeight}),Math.min(e,t)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const e=Array.from(this._hover.contentsDomNode.children).some(t=>t.scrollWidth>t.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),e}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const e=this._isHoverTextOverflowing(),t=typeof this._contentWidth>"u"?0:this._contentWidth-2;return e||this._hover.containerDomNode.clientWidth<t?N0(this._hover.containerDomNode.ownerDocument.body).width-14:this._hover.containerDomNode.clientWidth+2}isMouseGettingCloser(e,t){if(!this._renderedHover)return!1;if(this._renderedHover.initialMousePosX===void 0||this._renderedHover.initialMousePosY===void 0)return this._renderedHover.initialMousePosX=e,this._renderedHover.initialMousePosY=t,!1;const i=_s(this.getDomNode());this._renderedHover.closestMouseDistance===void 0&&(this._renderedHover.closestMouseDistance=Ide(this._renderedHover.initialMousePosX,this._renderedHover.initialMousePosY,i.left,i.top,i.width,i.height));const n=Ide(e,t,i.left,i.top,i.width,i.height);return n>this._renderedHover.closestMouseDistance+4?!1:(this._renderedHover.closestMouseDistance=Math.min(this._renderedHover.closestMouseDistance,n),!0)}_setRenderedHover(e){var t;(t=this._renderedHover)==null||t.dispose(),this._renderedHover=e,this._hoverVisibleKey.set(!!e),this._hover.containerDomNode.classList.toggle("hidden",!e)}_updateFont(){const{fontSize:e,lineHeight:t}=this._editor.getOption(50),i=this._hover.contentsDomNode;i.style.fontSize=`${e}px`,i.style.lineHeight=`${t/e}`,Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(o=>this._editor.applyFontInfo(o))}_updateContent(e){const t=this._hover.contentsDomNode;t.style.paddingBottom="",t.textContent="",t.appendChild(e)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const e=Math.max(this._editor.getLayoutInfo().height/4,250,Tm._lastDimensions.height),t=Math.max(this._editor.getLayoutInfo().width*.66,500,Tm._lastDimensions.width);this._setHoverWidgetMaxDimensions(t,e)}_render(e){this._setRenderedHover(e),this._updateFont(),this._updateContent(e.domNode),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){return this._renderedHover?{position:this._renderedHover.showAtPosition,secondaryPosition:this._renderedHover.showAtSecondaryPosition,positionAffinity:this._renderedHover.shouldAppearBeforeContent?3:void 0,preference:[this._positionPreference??1]}:null}show(e){var l;if(!this._editor||!this._editor.hasModel())return;this._render(e);const t=$g(this._hover.containerDomNode),i=e.showAtPosition;this._positionPreference=this._findPositionPreference(t,i)??1,this.onContentsChanged(),e.shouldFocus&&this._hover.containerDomNode.focus(),this._onDidResize.fire();const o=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&O0e(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),((l=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))==null?void 0:l.getAriaLabel())??"");o&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+o)}hide(){if(!this._renderedHover)return;const e=this._renderedHover.shouldFocus||this._hoverFocusedKey.get();this._setRenderedHover(void 0),this._resizableNode.maxSize=new bn(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),e&&this._editor.focus()}_removeConstraintsRenderNormally(){const e=this._editor.getLayoutInfo();this._resizableNode.layout(e.height,e.width),this._setHoverWidgetDimensions("auto","auto")}setMinimumDimensions(e){this._minimumSize=new bn(Math.max(this._minimumSize.width,e.width),Math.max(this._minimumSize.height,e.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const e=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new bn(e,this._minimumSize.height)}onContentsChanged(){var n;this._removeConstraintsRenderNormally();const e=this._hover.containerDomNode;let t=$g(e),i=ld(e);if(this._resizableNode.layout(t,i),this._setHoverWidgetDimensions(i,t),t=$g(e),i=ld(e),this._contentWidth=i,this._updateMinimumWidth(),this._resizableNode.layout(t,i),(n=this._renderedHover)!=null&&n.showAtPosition){const o=$g(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(o,this._renderedHover.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e-t.lineHeight})}scrollDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e+t.lineHeight})}scrollLeft(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e-kde})}scrollRight(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e+kde})}pageUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e-t})}pageDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e+t})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}},Tm=lA,lA.ID="editor.contrib.resizableContentHoverWidget",lA._lastDimensions=new bn(0,0),lA);Z7=Tm=Uit([Fk(1,wt),Fk(2,li),Fk(3,Qd),Fk(4,dn)],Z7);function Ide(s,e,t,i,n,o){const l=t+n/2,r=i+o/2,a=Math.max(Math.abs(s-l)-n/2,0),d=Math.max(Math.abs(e-r)-o/2,0);return Math.sqrt(a*a+d*d)}class Mx{get anchor(){return this._anchor}set anchor(e){this._anchor=e}get shouldFocus(){return this._shouldFocus}set shouldFocus(e){this._shouldFocus=e}get source(){return this._source}set source(e){this._source=e}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(e){this._insistOnKeepingHoverVisible=e}constructor(e,t){this._editor=e,this._participants=t,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(e,t){if(t.type!==1&&!t.supportsMarkerHover)return[];const i=e.getModel(),n=t.range.startLineNumber;if(n>i.getLineCount())return[];const o=i.getLineMaxColumn(n);return e.getLineDecorations(n).filter(l=>{if(l.options.isWholeLine)return!0;const r=l.range.startLineNumber===n?l.range.startColumn:1,a=l.range.endLineNumber===n?l.range.endColumn:o;if(l.options.showIfCollapsed){if(r>t.range.startColumn+1||t.range.endColumn-1>a)return!1}else if(r>t.range.startColumn||t.range.endColumn>a)return!1;return!0})}computeAsync(e){const t=this._anchor;if(!this._editor.hasModel()||!t)return nc.EMPTY;const i=Mx._getLineDecorations(this._editor,t);return nc.merge(this._participants.map(n=>n.computeAsync?n.computeAsync(t,i,e):nc.EMPTY))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const e=Mx._getLineDecorations(this._editor,this._anchor);let t=[];for(const i of this._participants)t=t.concat(i.computeSync(this._anchor,e));return Oh(t)}}class mZe{constructor(e,t,i){this.anchor=e,this.hoverParts=t,this.isComplete=i}filter(e){const t=this.hoverParts.filter(i=>i.isValidForHoverAnchor(e));return t.length===this.hoverParts.length?this:new Fit(this,this.anchor,t,this.isComplete)}}class Fit extends mZe{constructor(e,t,i,n){super(t,i,n),this.original=e}filter(e){return this.original.filter(e)}}var Zit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ait=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Dde=Ge;let Tx=class extends de{get hasContent(){return this._hasContent}constructor(e){super(),this._keybindingService=e,this.actions=[],this._hasContent=!1,this.hoverElement=Dde("div.hover-row.status-bar"),this.hoverElement.tabIndex=0,this.actionsElement=ye(this.hoverElement,Dde("div.actions"))}addAction(e){const t=this._keybindingService.lookupKeybinding(e.commandId),i=t?t.getLabel():null;this._hasContent=!0;const n=this._register(yY.render(this.actionsElement,e,i));return this.actions.push(n),n}append(e){const t=ye(this.actionsElement,e);return this._hasContent=!0,t}};Tx=Zit([Ait(0,dn)],Tx);class Nit{constructor(e,t,i){this.provider=e,this.hover=t,this.ordinal=i}}async function Rit(s,e,t,i,n){const o=await Promise.resolve(s.provideHover(t,i,n)).catch(Os);if(!(!o||!Sit(o)))return new Nit(s,o,e)}function gie(s,e,t,i,n=!1){const l=s.ordered(e,n).map((r,a)=>Rit(r,a,e,t,i));return nc.fromPromises(l).coalesce()}function pZe(s,e,t,i,n=!1){return gie(s,e,t,i,n).map(o=>o.hover).toPromise()}Ya("_executeHoverProvider",(s,e,t)=>{const i=s.get(lt);return pZe(i.hoverProvider,e,t,$t.None)});Ya("_executeHoverProvider_recursive",(s,e,t)=>{const i=s.get(lt);return pZe(i.hoverProvider,e,t,$t.None,!0)});function Sit(s){const e=typeof s.range<"u",t=typeof s.contents<"u"&&s.contents&&s.contents.length>0;return e&&t}var Wit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},xf=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const RS=Ge,Vit=ts("hover-increase-verbosity",ke.add,U("increaseHoverVerbosity","Icon for increaseing hover verbosity.")),Qit=ts("hover-decrease-verbosity",ke.remove,U("decreaseHoverVerbosity","Icon for decreasing hover verbosity."));class Eh{constructor(e,t,i,n,o,l=void 0){this.owner=e,this.range=t,this.contents=i,this.isBeforeContent=n,this.ordinal=o,this.source=l}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}class gZe{constructor(e,t,i){this.hover=e,this.hoverProvider=t,this.hoverPosition=i}supportsVerbosityAction(e){switch(e){case cd.Increase:return this.hover.canIncreaseVerbosity??!1;case cd.Decrease:return this.hover.canDecreaseVerbosity??!1}}}let cT=class{constructor(e,t,i,n,o,l,r,a){this._editor=e,this._languageService=t,this._openerService=i,this._configurationService=n,this._languageFeaturesService=o,this._keybindingService=l,this._hoverService=r,this._commandService=a,this.hoverOrdinal=3}createLoadingMessage(e){return new Eh(this,e.range,[new tr().appendText(U("modesContentHover.loading","Loading..."))],!1,2e3)}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1)return[];const i=this._editor.getModel(),n=e.range.startLineNumber,o=i.getLineMaxColumn(n),l=[];let r=1e3;const a=i.getLineLength(n),d=i.getLanguageIdAtPosition(e.range.startLineNumber,e.range.startColumn),c=this._editor.getOption(118),h=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:d});let u=!1;c>=0&&a>c&&e.range.startColumn>=c&&(u=!0,l.push(new Eh(this,e.range,[{value:U("stopped rendering","Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.")}],!1,r++))),!u&&typeof h=="number"&&a>=h&&l.push(new Eh(this,e.range,[{value:U("too many characters","Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.")}],!1,r++));let m=!1;for(const p of t){const g=p.range.startLineNumber===n?p.range.startColumn:1,b=p.range.endLineNumber===n?p.range.endColumn:o,f=p.options.hoverMessage;if(!f||dV(f))continue;p.options.beforeContentClassName&&(m=!0);const Z=new v(e.range.startLineNumber,g,e.range.startLineNumber,b);l.push(new Eh(this,Z,m$(f),m,r++))}return l}computeAsync(e,t,i){if(!this._editor.hasModel()||e.type!==1)return nc.EMPTY;const n=this._editor.getModel(),o=this._languageFeaturesService.hoverProvider;return o.has(n)?this._getMarkdownHovers(o,n,e,i):nc.EMPTY}_getMarkdownHovers(e,t,i,n){const o=i.range.getStartPosition();return gie(e,t,o,n).filter(a=>!dV(a.hover.contents)).map(a=>{const d=a.hover.range?v.lift(a.hover.range):i.range,c=new gZe(a.hover,a.provider,o);return new Eh(this,d,a.hover.contents,!1,a.ordinal,c)})}renderHoverParts(e,t){return this._renderedHoverParts=new yit(t,e.fragment,this,this._editor,this._languageService,this._openerService,this._commandService,this._keybindingService,this._hoverService,this._configurationService,e.onContentsChanged),this._renderedHoverParts}updateMarkdownHoverVerbosityLevel(e,t,i){var n;return Promise.resolve((n=this._renderedHoverParts)==null?void 0:n.updateMarkdownHoverPartVerbosityLevel(e,t,i))}};cT=Wit([xf(1,Zs),xf(2,za),xf(3,li),xf(4,lt),xf(5,dn),xf(6,Gp),xf(7,On)],cT);class Zk{constructor(e,t,i){this.hoverPart=e,this.hoverElement=t,this.disposables=i}dispose(){this.disposables.dispose()}}class yit{constructor(e,t,i,n,o,l,r,a,d,c,h){this._hoverParticipant=i,this._editor=n,this._languageService=o,this._openerService=l,this._commandService=r,this._keybindingService=a,this._hoverService=d,this._configurationService=c,this._onFinishedRendering=h,this._ongoingHoverOperations=new Map,this._disposables=new Ze,this.renderedHoverParts=this._renderHoverParts(e,t,this._onFinishedRendering),this._disposables.add(gt(()=>{this.renderedHoverParts.forEach(u=>{u.dispose()}),this._ongoingHoverOperations.forEach(u=>{u.tokenSource.dispose(!0)})}))}_renderHoverParts(e,t,i){return e.sort(ea(n=>n.ordinal,zh)),e.map(n=>{const o=this._renderHoverPart(n,i);return t.appendChild(o.hoverElement),o})}_renderHoverPart(e,t){const i=this._renderMarkdownHover(e,t),n=i.hoverElement,o=e.source,l=new Ze;if(l.add(i),!o)return new Zk(e,n,l);const r=o.supportsVerbosityAction(cd.Increase),a=o.supportsVerbosityAction(cd.Decrease);if(!r&&!a)return new Zk(e,n,l);const d=RS("div.verbosity-actions");return n.prepend(d),l.add(this._renderHoverExpansionAction(d,cd.Increase,r)),l.add(this._renderHoverExpansionAction(d,cd.Decrease,a)),new Zk(e,n,l)}_renderMarkdownHover(e,t){return bZe(this._editor,e,this._languageService,this._openerService,t)}_renderHoverExpansionAction(e,t,i){const n=new Ze,o=t===cd.Increase,l=ye(e,RS(Qt.asCSSSelector(o?Vit:Qit)));l.tabIndex=0;const r=new lV("mouse",!1,{target:e,position:{hoverPosition:0}},this._configurationService,this._hoverService);if(n.add(this._hoverService.setupManagedHover(r,l,wit(this._keybindingService,t))),!i)return l.classList.add("disabled"),n;l.classList.add("enabled");const a=()=>this._commandService.executeCommand(t===cd.Increase?mz:pz);return n.add(new j0e(l,a)),n.add(new H0e(l,a,[3,10])),n}async updateMarkdownHoverPartVerbosityLevel(e,t,i=!0){const n=this._editor.getModel();if(!n)return;const o=this._getRenderedHoverPartAtIndex(t),l=o==null?void 0:o.hoverPart.source;if(!o||!(l!=null&&l.supportsVerbosityAction(e)))return;const r=await this._fetchHover(l,n,e);if(!r)return;const a=new gZe(r,l.hoverProvider,l.hoverPosition),d=o.hoverPart,c=new Eh(this._hoverParticipant,d.range,r.contents,d.isBeforeContent,d.ordinal,a),h=this._renderHoverPart(c,this._onFinishedRendering);return this._replaceRenderedHoverPartAtIndex(t,h,c),i&&this._focusOnHoverPartWithIndex(t),{hoverPart:c,hoverElement:h.hoverElement}}async _fetchHover(e,t,i){let n=i===cd.Increase?1:-1;const o=e.hoverProvider,l=this._ongoingHoverOperations.get(o);l&&(l.tokenSource.cancel(),n+=l.verbosityDelta);const r=new Ws;this._ongoingHoverOperations.set(o,{verbosityDelta:n,tokenSource:r});const a={verbosityRequest:{verbosityDelta:n,previousHover:e.hover}};let d;try{d=await Promise.resolve(o.provideHover(t,e.hoverPosition,r.token,a))}catch(c){Os(c)}return r.dispose(),this._ongoingHoverOperations.delete(o),d}_replaceRenderedHoverPartAtIndex(e,t,i){if(e>=this.renderedHoverParts.length||e<0)return;const n=this.renderedHoverParts[e],o=n.hoverElement,l=t.hoverElement,r=Array.from(l.children);o.replaceChildren(...r);const a=new Zk(i,o,t.disposables);o.focus(),n.dispose(),this.renderedHoverParts[e]=a}_focusOnHoverPartWithIndex(e){this.renderedHoverParts[e].hoverElement.focus()}_getRenderedHoverPartAtIndex(e){return this.renderedHoverParts[e]}dispose(){this._disposables.dispose()}}function Cit(s,e,t,i,n){e.sort(ea(l=>l.ordinal,zh));const o=[];for(const l of e)o.push(bZe(t,l,i,n,s.onContentsChanged));return new vA(o)}function bZe(s,e,t,i,n){const o=new Ze,l=RS("div.hover-row"),r=RS("div.hover-row-contents");l.appendChild(r);const a=e.contents;for(const c of a){if(dV(c))continue;const h=RS("div.markdown-hover"),u=ye(h,RS("div.hover-contents")),m=o.add(new W0({editor:s},t,i));o.add(m.onDidRenderAsync(()=>{u.className="hover-contents code-hover-contents",n()}));const p=o.add(m.render(c));u.appendChild(p.element),r.appendChild(h)}return{hoverPart:e,hoverElement:l,dispose(){o.dispose()}}}function wit(s,e){switch(e){case cd.Increase:{const t=s.lookupKeybinding(mz);return t?U("increaseVerbosityWithKb","Increase Hover Verbosity ({0})",t.getLabel()):U("increaseVerbosity","Increase Hover Verbosity")}case cd.Decrease:{const t=s.lookupKeybinding(pz);return t?U("decreaseVerbosityWithKb","Decrease Hover Verbosity ({0})",t.getLabel()):U("decreaseVerbosity","Decrease Hover Verbosity")}}}function A7(s,e){return!!s[e]}class b_{constructor(e,t){this.target=e.target,this.isLeftClick=e.event.leftButton,this.isMiddleClick=e.event.middleButton,this.isRightClick=e.event.rightButton,this.hasTriggerModifier=A7(e.event,t.triggerModifier),this.hasSideBySideModifier=A7(e.event,t.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=e.event.detail<=1}}class Gde{constructor(e,t){this.keyCodeIsTriggerKey=e.keyCode===t.triggerKey,this.keyCodeIsSideBySideKey=e.keyCode===t.triggerSideBySideKey,this.hasTriggerModifier=A7(e,t.triggerModifier)}}class Ak{constructor(e,t,i,n){this.triggerKey=e,this.triggerModifier=t,this.triggerSideBySideKey=i,this.triggerSideBySideModifier=n}equals(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier}}function Ede(s){return s==="altKey"?Fi?new Ak(57,"metaKey",6,"altKey"):new Ak(5,"ctrlKey",6,"altKey"):Fi?new Ak(6,"altKey",57,"metaKey"):new Ak(6,"altKey",5,"ctrlKey")}class bz extends de{constructor(e,t){super(),this._onMouseMoveOrRelevantKeyDown=this._register(new re),this.onMouseMoveOrRelevantKeyDown=this._onMouseMoveOrRelevantKeyDown.event,this._onExecute=this._register(new re),this.onExecute=this._onExecute.event,this._onCancel=this._register(new re),this.onCancel=this._onCancel.event,this._editor=e,this._extractLineNumberFromMouseEvent=(t==null?void 0:t.extractLineNumberFromMouseEvent)??(i=>i.target.position?i.target.position.lineNumber:0),this._opts=Ede(this._editor.getOption(78)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration(i=>{if(i.hasChanged(78)){const n=Ede(this._editor.getOption(78));if(this._opts.equals(n))return;this._opts=n,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}})),this._register(this._editor.onMouseMove(i=>this._onEditorMouseMove(new b_(i,this._opts)))),this._register(this._editor.onMouseDown(i=>this._onEditorMouseDown(new b_(i,this._opts)))),this._register(this._editor.onMouseUp(i=>this._onEditorMouseUp(new b_(i,this._opts)))),this._register(this._editor.onKeyDown(i=>this._onEditorKeyDown(new Gde(i,this._opts)))),this._register(this._editor.onKeyUp(i=>this._onEditorKeyUp(new Gde(i,this._opts)))),this._register(this._editor.onMouseDrag(()=>this._resetHandler())),this._register(this._editor.onDidChangeCursorSelection(i=>this._onDidChangeCursorSelection(i))),this._register(this._editor.onDidChangeModel(i=>this._resetHandler())),this._register(this._editor.onDidChangeModelContent(()=>this._resetHandler())),this._register(this._editor.onDidScrollChange(i=>{(i.scrollTopChanged||i.scrollLeftChanged)&&this._resetHandler()}))}_onDidChangeCursorSelection(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(e){this._lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])}_onEditorMouseDown(e){this._hasTriggerKeyOnMouseDown=e.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(e)}_onEditorMouseUp(e){const t=this._extractLineNumberFromMouseEvent(e);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===t&&this._onExecute.fire(e)}_onEditorKeyDown(e){this._lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}class UZe{constructor(e,t){this.range=e,this.direction=t}}class bie{constructor(e,t,i){this.hint=e,this.anchor=t,this.provider=i,this._isResolved=!1}with(e){const t=new bie(this.hint,e.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}async resolve(e){if(typeof this.provider.resolveInlayHint=="function"){if(this._currentResolve)return await this._currentResolve,e.isCancellationRequested?void 0:this.resolve(e);this._isResolved||(this._currentResolve=this._doResolve(e).finally(()=>this._currentResolve=void 0)),await this._currentResolve}}async _doResolve(e){try{const t=await Promise.resolve(this.provider.resolveInlayHint(this.hint,e));this.hint.tooltip=(t==null?void 0:t.tooltip)??this.hint.tooltip,this.hint.label=(t==null?void 0:t.label)??this.hint.label,this.hint.textEdits=(t==null?void 0:t.textEdits)??this.hint.textEdits,this._isResolved=!0}catch(t){Os(t),this._isResolved=!1}}}const oW=class oW{static async create(e,t,i,n){const o=[],l=e.ordered(t).reverse().map(r=>i.map(async a=>{try{const d=await r.provideInlayHints(t,a,n);(d!=null&&d.hints.length||r.onDidChangeInlayHints)&&o.push([d??oW._emptyInlayHintList,r])}catch(d){Os(d)}}));if(await Promise.all(l.flat()),n.isCancellationRequested||t.isDisposed())throw new jh;return new oW(i,o,t)}constructor(e,t,i){this._disposables=new Ze,this.ranges=e,this.provider=new Set;const n=[];for(const[o,l]of t){this._disposables.add(o),this.provider.add(l);for(const r of o.hints){const a=i.validatePosition(r.position);let d="before";const c=oW._getRangeAtPosition(i,a);let h;c.getStartPosition().isBefore(a)?(h=v.fromPositions(c.getStartPosition(),a),d="after"):(h=v.fromPositions(a,c.getEndPosition()),d="before"),n.push(new bie(r,new UZe(h,d),l))}}this.items=n.sort((o,l)=>oe.compare(o.hint.position,l.hint.position))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(e,t){const i=t.lineNumber,n=e.getWordAtPosition(t);if(n)return new v(i,n.startColumn,i,n.endColumn);e.tokenization.tokenizeIfCheap(i);const o=e.tokenization.getLineTokens(i),l=t.column-1,r=o.findTokenIndexAtOffset(l);let a=o.getStartOffset(r),d=o.getEndOffset(r);return d-a===1&&(a===l&&r>1?(a=o.getStartOffset(r-1),d=o.getEndOffset(r-1)):d===l&&r<o.getCount()-1&&(a=o.getStartOffset(r+1),d=o.getEndOffset(r+1))),new v(i,a+1,i,d+1)}};oW._emptyInlayHintList=Object.freeze({dispose(){},hints:[]});let Bx=oW;function Mit(s){return At.from({scheme:Xt.command,path:s.id,query:s.arguments&&encodeURIComponent(JSON.stringify(s.arguments))}).toString()}var Tit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Hp=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let tu=class extends HM{constructor(e,t,i,n,o,l,r,a,d,c,h,u,m){super(e,{...n.getRawOptions(),overflowWidgetsDomNode:n.getOverflowWidgetsDomNode()},i,o,l,r,a,d,c,h,u,m),this._parentEditor=n,this._overwriteOptions=t,super.updateOptions(this._overwriteOptions),this._register(n.onDidChangeConfiguration(p=>this._onParentConfigurationChanged(p)))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(e){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(e){O5(this._overwriteOptions,e,!0),super.updateOptions(this._overwriteOptions)}};tu=Tit([Hp(4,bt),Hp(5,zi),Hp(6,On),Hp(7,wt),Hp(8,Do),Hp(9,no),Hp(10,Qd),Hp(11,Qs),Hp(12,lt)],tu);const vde=new Re(new vi(0,122,204)),Bit={showArrow:!0,showFrame:!0,className:"",frameColor:vde,arrowColor:vde,keepEditorSelection:!1},Lit="vs.editor.contrib.zoneWidget";class kit{constructor(e,t,i,n,o,l,r,a){this.id="",this.domNode=e,this.afterLineNumber=t,this.afterColumn=i,this.heightInLines=n,this.showInHiddenAreas=r,this.ordinal=a,this._onDomNodeTop=o,this._onComputedHeight=l}onDomNodeTop(e){this._onDomNodeTop(e)}onComputedHeight(e){this._onComputedHeight(e)}}class Iit{constructor(e,t){this._id=e,this._domNode=t}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}const KX=class KX{constructor(e){this._editor=e,this._ruleName=KX._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),MH(this._ruleName)}set color(e){this._color!==e&&(this._color=e,this._updateStyle())}set height(e){this._height!==e&&(this._height=e,this._updateStyle())}_updateStyle(){MH(this._ruleName),YE(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px !important; margin-left: -${this._height}px; `)}show(e){e.column===1&&(e={lineNumber:e.lineNumber,column:2}),this._decorations.set([{range:v.fromPositions(e),options:{description:"zone-widget-arrow",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}};KX._IdGenerator=new Ree(".arrow-decoration-");let N7=KX;class Dit{constructor(e,t={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new Ze,this.container=null,this._isShowing=!1,this.editor=e,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=wg(t),O5(this.options,Bit,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange(i=>{const n=this._getWidth(i);this.domNode.style.width=n+"px",this.domNode.style.left=this._getLeft(i)+"px",this._onWidth(n)}))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._viewZone=null}),this._positionMarkerId.clear(),this._disposables.dispose()}create(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new N7(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){const e=this.options.arrowColor.toString();this._arrow.color=e}}_getWidth(e){return e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}_getLeft(e){return e.minimap.minimapWidth>0&&e.minimap.minimapLeft===0?e.minimap.minimapWidth:0}_onViewZoneTop(e){this.domNode.style.top=e+"px"}_onViewZoneHeight(e){var t;if(this.domNode.style.height=`${e}px`,this.container){const i=e-this._decoratingElementsHeight();this.container.style.height=`${i}px`;const n=this.editor.getLayoutInfo();this._doLayout(i,this._getWidth(n))}(t=this._resizeSash)==null||t.layout()}get position(){const e=this._positionMarkerId.getRange(0);if(e)return e.getStartPosition()}show(e,t){const i=v.isIRange(e)?v.lift(e):v.fromPositions(e);this._isShowing=!0,this._showImpl(i,t),this._isShowing=!1,this._positionMarkerId.set([{range:i,options:Ot.EMPTY}])}hide(){var e;this._viewZone&&(this.editor.changeViewZones(t=>{this._viewZone&&t.removeZone(this._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),(e=this._arrow)==null||e.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const e=this.editor.getOption(67);let t=0;if(this.options.showArrow){const i=Math.round(e/3);t+=2*i}if(this.options.showFrame){const i=Math.round(e/9);t+=2*i}return t}_showImpl(e,t){const i=e.getStartPosition(),n=this.editor.getLayoutInfo(),o=this._getWidth(n);this.domNode.style.width=`${o}px`,this.domNode.style.left=this._getLeft(n)+"px";const l=document.createElement("div");l.style.overflow="hidden";const r=this.editor.getOption(67);if(!this.options.allowUnlimitedHeight){const u=Math.max(12,this.editor.getLayoutInfo().height/r*.8);t=Math.min(t,u)}let a=0,d=0;if(this._arrow&&this.options.showArrow&&(a=Math.round(r/3),this._arrow.height=a,this._arrow.show(i)),this.options.showFrame&&(d=Math.round(r/9)),this.editor.changeViewZones(u=>{this._viewZone&&u.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new kit(l,i.lineNumber,i.column,t,m=>this._onViewZoneTop(m),m=>this._onViewZoneHeight(m),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=u.addZone(this._viewZone),this._overlayWidget=new Iit(Lit+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)}),this.container&&this.options.showFrame){const u=this.options.frameWidth?this.options.frameWidth:d;this.container.style.borderTopWidth=u+"px",this.container.style.borderBottomWidth=u+"px"}const c=t*r-this._decoratingElementsHeight();this.container&&(this.container.style.top=a+"px",this.container.style.height=c+"px",this.container.style.overflow="hidden"),this._doLayout(c,o),this.options.keepEditorSelection||this.editor.setSelection(e);const h=this.editor.getModel();if(h){const u=h.validateRange(new v(e.startLineNumber,1,e.endLineNumber+1,1));this.revealRange(u,u.startLineNumber===h.getLineCount())}}revealRange(e,t){t?this.editor.revealLineNearTop(e.endLineNumber,0):this.editor.revealRange(e,0)}setCssClass(e,t){this.container&&(t&&this.container.classList.remove(t),this.container.classList.add(e))}_onWidth(e){}_doLayout(e,t){}_relayout(e){this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones(t=>{this._viewZone&&(this._viewZone.heightInLines=e,t.layoutZone(this._viewZone.id))})}_initSash(){if(this._resizeSash)return;this._resizeSash=this._disposables.add(new ql(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0);let e;this._disposables.add(this._resizeSash.onDidStart(t=>{this._viewZone&&(e={startY:t.startY,heightInLines:this._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(()=>{e=void 0})),this._disposables.add(this._resizeSash.onDidChange(t=>{if(e){const i=(t.currentY-e.startY)/this.editor.getOption(67),n=i<0?Math.ceil(i):Math.floor(i),o=e.heightInLines+n;o>5&&o<35&&this._relayout(o)}}))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(this.domNode.style.height===null?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const e=this.editor.getLayoutInfo();return e.width-e.minimap.minimapWidth}}var fZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},FZe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const ZZe=Zi("IPeekViewService");Ci(ZZe,class{constructor(){this._widgets=new Map}addExclusiveWidget(s,e){const t=this._widgets.get(s);t&&(t.listener.dispose(),t.widget.dispose());const i=()=>{const n=this._widgets.get(s);n&&n.widget===e&&(n.listener.dispose(),this._widgets.delete(s))};this._widgets.set(s,{widget:e,listener:e.onDidClose(i)})}},1);var xa;(function(s){s.inPeekEditor=new Ke("inReferenceSearchEditor",!0,U("inReferenceSearchEditor","Whether the current code editor is embedded inside peek")),s.notInPeekEditor=s.inPeekEditor.toNegated()})(xa||(xa={}));var GT;let Lx=(GT=class{constructor(e,t){e instanceof tu&&xa.inPeekEditor.bindTo(t)}dispose(){}},GT.ID="editor.contrib.referenceController",GT);Lx=fZe([FZe(1,wt)],Lx);Gi(Lx.ID,Lx,0);function Git(s){const e=s.get(zi).getFocusedCodeEditor();return e instanceof tu?e.getParentEditor():e}const Eit={headerBackgroundColor:Re.white,primaryHeadingColor:Re.fromHex("#333333"),secondaryHeadingColor:Re.fromHex("#6c6c6cb3")};let kx=class extends Dit{constructor(e,t,i){super(e,t),this.instantiationService=i,this._onDidClose=new re,this.onDidClose=this._onDidClose.event,O5(this.options,Eit,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(e){const t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),super.style(e)}_applyStyles(){super._applyStyles();const e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}_fillContainer(e){this.setCssClass("peekview-widget"),this._headElement=Ge(".head"),this._bodyElement=Ge(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}_fillHead(e,t){this._titleElement=Ge(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),Ms(this._titleElement,"click",o=>this._onTitleClick(o))),ye(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=Ge("span.filename"),this._secondaryHeading=Ge("span.dirname"),this._metaHeading=Ge("span.meta"),ye(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const i=Ge(".peekview-actions");ye(this._headElement,i);const n=this._getActionBarOptions();this._actionbarWidget=new ac(i,n),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new bd("peekview.close",U("label.close","Close"),Qt.asClassName(ke.close),!0,()=>(this.dispose(),Promise.resolve())),{label:!1,icon:!0})}_fillTitleIcon(e){}_getActionBarOptions(){return{actionViewItemProvider:kbe.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(e){}setTitle(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("title",e),t?this._secondaryHeading.innerText=t:Fl(this._secondaryHeading))}setMetaTitle(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,hd(this._metaHeading)):_r(this._metaHeading))}_doLayout(e,t){if(!this._isShowing&&e<0){this.dispose();return}const i=Math.ceil(this.editor.getOption(67)*1.2),n=Math.round(e-(i+2));this._doLayoutHead(i,t),this._doLayoutBody(n,t)}_doLayoutHead(e,t){this._headElement&&(this._headElement.style.height=`${e}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(e,t){this._bodyElement&&(this._bodyElement.style.height=`${e}px`)}};kx=fZe([FZe(2,bt)],kx);const vit=K("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:Re.black,hcLight:Re.white},U("peekViewTitleBackground","Background color of the peek view title area.")),AZe=K("peekViewTitleLabel.foreground",{dark:Re.white,light:Re.black,hcDark:Re.white,hcLight:Dp},U("peekViewTitleForeground","Color of the peek view title.")),NZe=K("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},U("peekViewTitleInfoForeground","Color of the peek view title info.")),xit=K("peekView.border",{dark:Wp,light:Wp,hcDark:Di,hcLight:Di},U("peekViewBorder","Color of the peek view borders and arrow.")),Jit=K("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:Re.black,hcLight:Re.white},U("peekViewResultsBackground","Background color of the peek view result list."));K("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:Re.white,hcLight:Dp},U("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list."));K("peekViewResult.fileForeground",{dark:Re.white,light:"#1E1E1E",hcDark:Re.white,hcLight:Dp},U("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list."));K("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},U("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list."));K("peekViewResult.selectionForeground",{dark:Re.white,light:"#6C6C6C",hcDark:Re.white,hcLight:Dp},U("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list."));const RZe=K("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:Re.black,hcLight:Re.white},U("peekViewEditorBackground","Background color of the peek view editor."));K("peekViewEditorGutter.background",RZe,U("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor."));K("peekViewEditorStickyScroll.background",RZe,U("peekViewEditorStickScrollBackground","Background color of sticky scroll in the peek view editor."));K("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},U("peekViewResultsMatchHighlight","Match highlight color in the peek view result list."));K("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},U("peekViewEditorMatchHighlight","Match highlight color in the peek view editor."));K("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:hs,hcLight:hs},U("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."));class rf{constructor(e,t,i,n){this.isProviderFirst=e,this.parent=t,this.link=i,this._rangeCallback=n,this.id=AP.nextId()}get uri(){return this.link.uri}get range(){return this._range??this.link.targetSelectionRange??this.link.range}set range(e){this._range=e,this._rangeCallback(this)}get ariaMessage(){var t;const e=(t=this.parent.getPreview(this))==null?void 0:t.preview(this.range);return e?U({key:"aria.oneReference.preview",comment:["Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code"]},"{0} in {1} on line {2} at column {3}",e.value,qc(this.uri),this.range.startLineNumber,this.range.startColumn):U("aria.oneReference","in {0} on line {1} at column {2}",qc(this.uri),this.range.startLineNumber,this.range.startColumn)}}class Xit{constructor(e){this._modelReference=e}dispose(){this._modelReference.dispose()}preview(e,t=8){const i=this._modelReference.object.textEditorModel;if(!i)return;const{startLineNumber:n,startColumn:o,endLineNumber:l,endColumn:r}=e,a=i.getWordUntilPosition({lineNumber:n,column:o-t}),d=new v(n,a.startColumn,n,o),c=new v(l,r,l,1073741824),h=i.getValueInRange(d).replace(/^\s+/,""),u=i.getValueInRange(e),m=i.getValueInRange(c).replace(/\s+$/,"");return{value:h+u+m,highlight:{start:h.length,end:h.length+u.length}}}}class hT{constructor(e,t){this.parent=e,this.uri=t,this.children=[],this._previews=new sl}dispose(){Tn(this._previews.values()),this._previews.clear()}getPreview(e){return this._previews.get(e.uri)}get ariaMessage(){const e=this.children.length;return e===1?U("aria.fileReferences.1","1 symbol in {0}, full path {1}",qc(this.uri),this.uri.fsPath):U("aria.fileReferences.N","{0} symbols in {1}, full path {2}",e,qc(this.uri),this.uri.fsPath)}async resolve(e){if(this._previews.size!==0)return this;for(const t of this.children)if(!this._previews.has(t.uri))try{const i=await e.createModelReference(t.uri);this._previews.set(t.uri,new Xit(i))}catch(i){vt(i)}return this}}class Fd{constructor(e,t){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new re,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=e,this._title=t;const[i]=e;e.sort(Fd._compareReferences);let n;for(const o of e)if((!n||!us.isEqual(n.uri,o.uri,!0))&&(n=new hT(this,o.uri),this.groups.push(n)),n.children.length===0||Fd._compareReferences(o,n.children[n.children.length-1])!==0){const l=new rf(i===o,n,o,r=>this._onDidChangeReferenceRange.fire(r));this.references.push(l),n.children.push(l)}}dispose(){Tn(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new Fd(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?U("aria.result.0","No results found"):this.references.length===1?U("aria.result.1","Found 1 symbol in {0}",this.references[0].uri.fsPath):this.groups.length===1?U("aria.result.n1","Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):U("aria.result.nm","Found {0} symbols in {1} files",this.references.length,this.groups.length)}nextOrPreviousReference(e,t){const{parent:i}=e;let n=i.children.indexOf(e);const o=i.children.length,l=i.parent.groups.length;return l===1||t&&n+1<o||!t&&n>0?(t?n=(n+1)%o:n=(n+o-1)%o,i.children[n]):(n=i.parent.groups.indexOf(i),t?(n=(n+1)%l,i.parent.groups[n].children[0]):(n=(n+l-1)%l,i.parent.groups[n].children[i.parent.groups[n].children.length-1]))}nearestReference(e,t){const i=this.references.map((n,o)=>({idx:o,prefixLen:OU(n.uri.toString(),e.toString()),offsetDist:Math.abs(n.range.startLineNumber-t.lineNumber)*100+Math.abs(n.range.startColumn-t.column)})).sort((n,o)=>n.prefixLen>o.prefixLen?-1:n.prefixLen<o.prefixLen?1:n.offsetDist<o.offsetDist?-1:n.offsetDist>o.offsetDist?1:0)[0];if(i)return this.references[i.idx]}referenceAt(e,t){for(const i of this.references)if(i.uri.toString()===e.toString()&&v.containsPosition(i.range,t))return i}firstReference(){for(const e of this.references)if(e.isProviderFirst)return e;return this.references[0]}static _compareReferences(e,t){return us.compare(e.uri,t.uri)||v.compareRangesUsingStarts(e.range,t.range)}}var Uz=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},fz=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},R7;let S7=class{constructor(e){this._resolverService=e}hasChildren(e){return e instanceof Fd||e instanceof hT}getChildren(e){if(e instanceof Fd)return e.groups;if(e instanceof hT)return e.resolve(this._resolverService).then(t=>t.children);throw new Error("bad tree")}};S7=Uz([fz(0,Xa)],S7);class Yit{getHeight(){return 23}getTemplateId(e){return e instanceof hT?Ix.id:Dx.id}}let W7=class{constructor(e){this._keybindingService=e}getKeyboardNavigationLabel(e){var t;if(e instanceof rf){const i=(t=e.parent.getPreview(e))==null?void 0:t.preview(e.range);if(i)return i.value}return qc(e.uri)}};W7=Uz([fz(0,dn)],W7);class zit{getId(e){return e instanceof rf?e.id:e.uri}}let V7=class extends de{constructor(e,t){super(),this._labelService=t;const i=document.createElement("div");i.classList.add("reference-file"),this.file=this._register(new zv(i,{supportHighlights:!0})),this.badge=new ZK(ye(i,Ge(".count")),{},Bbe),e.appendChild(i)}set(e,t){const i=wY(e.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(e.uri),this._labelService.getUriLabel(i,{relative:!0}),{title:this._labelService.getUriLabel(e.uri),matches:t});const n=e.children.length;this.badge.setCount(n),n>1?this.badge.setTitleFormat(U("referencesCount","{0} references",n)):this.badge.setTitleFormat(U("referenceCount","{0} reference",n))}};V7=Uz([fz(1,hV)],V7);var $V;let Ix=($V=class{constructor(e){this._instantiationService=e,this.templateId=R7.id}renderTemplate(e){return this._instantiationService.createInstance(V7,e)}renderElement(e,t,i){i.set(e.element,cB(e.filterData))}disposeTemplate(e){e.dispose()}},R7=$V,$V.id="FileReferencesRenderer",$V);Ix=R7=Uz([fz(0,bt)],Ix);class _it extends de{constructor(e){super(),this.label=this._register(new vU(e))}set(e,t){var n;const i=(n=e.parent.getPreview(e))==null?void 0:n.preview(e.range);if(!i||!i.value)this.label.set(`${qc(e.uri)}:${e.range.startLineNumber+1}:${e.range.startColumn+1}`);else{const{value:o,highlight:l}=i;t&&!_u.isDefault(t)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(o,cB(t))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(o,[l]))}}}const qX=class qX{constructor(){this.templateId=qX.id}renderTemplate(e){return new _it(e)}renderElement(e,t,i){i.set(e.element,e.filterData)}disposeTemplate(e){e.dispose()}};qX.id="OneReferenceRenderer";let Dx=qX;class Oit{getWidgetAriaLabel(){return U("treeAriaLabel","References")}getAriaLabel(e){return e.ariaMessage}}var jit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},DN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const $X=class $X{constructor(e,t){this._editor=e,this._model=t,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new Ze,this._callOnModelChange=new Ze,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const e=this._editor.getModel();if(e){for(const t of this._model.references)if(t.uri.toString()===e.uri.toString()){this._addDecorations(t.parent);return}}}_addDecorations(e){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const t=[],i=[];for(let n=0,o=e.children.length;n<o;n++){const l=e.children[n];this._decorationIgnoreSet.has(l.id)||l.uri.toString()===this._editor.getModel().uri.toString()&&(t.push({range:l.range,options:$X.DecorationOptions}),i.push(n))}this._editor.changeDecorations(n=>{const o=n.deltaDecorations([],t);for(let l=0;l<o.length;l++)this._decorations.set(o[l],e.children[i[l]])})}_onDecorationChanged(){const e=[],t=this._editor.getModel();if(t){for(const[i,n]of this._decorations){const o=t.getDecorationRange(i);if(!o)continue;let l=!1;if(!v.equalsRange(o,n.range)){if(v.spansMultipleLines(o))l=!0;else{const r=n.range.endColumn-n.range.startColumn,a=o.endColumn-o.startColumn;r!==a&&(l=!0)}l?(this._decorationIgnoreSet.add(n.id),e.push(i)):n.range=o}}for(let i=0,n=e.length;i<n;i++)this._decorations.delete(e[i]);this._editor.removeDecorations(e)}}removeDecorations(){this._editor.removeDecorations([...this._decorations.keys()]),this._decorations.clear()}};$X.DecorationOptions=Ot.register({description:"reference-decoration",stickiness:1,className:"reference-decoration"});let Q7=$X;class Hit{constructor(){this.ratio=.7,this.heightInLines=18}static fromJSON(e){let t,i;try{const n=JSON.parse(e);t=n.ratio,i=n.heightInLines}catch{}return{ratio:t||.7,heightInLines:i||18}}}class Pit extends yK{}let y7=class extends kx{constructor(e,t,i,n,o,l,r,a,d){super(e,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0,supportOnTitleClick:!0},l),this._defaultTreeKeyboardSupport=t,this.layoutData=i,this._textModelResolverService=o,this._instantiationService=l,this._peekViewService=r,this._uriLabel=a,this._keybindingService=d,this._disposeOnNewModel=new Ze,this._callOnDispose=new Ze,this._onDidSelectReference=new re,this.onDidSelectReference=this._onDidSelectReference.event,this._dim=new bn(0,0),this._isClosing=!1,this._applyTheme(n.getColorTheme()),this._callOnDispose.add(n.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(e,this),this.create()}get isClosing(){return this._isClosing}dispose(){this._isClosing=!0,this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),Tn(this._preview),Tn(this._previewNotAvailableMessage),Tn(this._tree),Tn(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(e){const t=e.getColor(xit)||Re.transparent;this.style({arrowColor:t,frameColor:t,headerBackgroundColor:e.getColor(vit)||Re.transparent,primaryHeadingColor:e.getColor(AZe),secondaryHeadingColor:e.getColor(NZe)})}show(e){super.show(e,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(e){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:e.ctrlKey||e.metaKey||e.altKey?"side":"open",source:"title"})}_fillBody(e){this.setCssClass("reference-zone-widget"),this._messageContainer=ye(e,Ge("div.messages")),_r(this._messageContainer),this._splitView=new WUe(e,{orientation:1}),this._previewContainer=ye(e,Ge("div.preview.inline"));const t={scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!0},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}};this._preview=this._instantiationService.createInstance(tu,this._previewContainer,t,{},this.editor),_r(this._previewContainer),this._previewNotAvailableMessage=this._instantiationService.createInstance(Eu,U("missingPreviewMessage","no preview available"),ia,Eu.DEFAULT_CREATION_OPTIONS,null),this._treeContainer=ye(e,Ge("div.ref-tree.inline"));const i={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new Oit,keyboardNavigationLabelProvider:this._instantiationService.createInstance(W7),identityProvider:new zit,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:Jit}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(Ms(this._treeContainer,"keydown",o=>{o.equals(9)&&(this._keybindingService.dispatchEvent(o,o.target),o.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(Pit,"ReferencesWidget",this._treeContainer,new Yit,[this._instantiationService.createInstance(Ix),this._instantiationService.createInstance(Dx)],this._instantiationService.createInstance(S7),i),this._splitView.addView({onDidChange:ve.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:o=>{this._preview.layout({height:this._dim.height,width:o})}},Gv.Distribute),this._splitView.addView({onDidChange:ve.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:o=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${o}px`,this._tree.layout(this._dim.height,o)}},Gv.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const n=(o,l)=>{o instanceof rf&&(l==="show"&&this._revealReference(o,!1),this._onDidSelectReference.fire({element:o,kind:l,source:"tree"}))};this._disposables.add(this._tree.onDidOpen(o=>{o.sideBySide?n(o.element,"side"):o.editorOptions.pinned?n(o.element,"goto"):n(o.element,"show")})),_r(this._treeContainer)}_onWidth(e){this._dim&&this._doLayoutBody(this._dim.height,e)}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._dim=new bn(t,e),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(t),this._splitView.resizeView(0,t*this.layoutData.ratio)}setSelection(e){return this._revealReference(e,!0).then(()=>{this._model&&(this._tree.setSelection([e]),this._tree.setFocus([e]))})}setModel(e){return this._disposeOnNewModel.clear(),this._model=e,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=U("noResults","No results"),hd(this._messageContainer),Promise.resolve(void 0)):(_r(this._messageContainer),this._decorationsManager=new Q7(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(e=>this._tree.rerender(e))),this._disposeOnNewModel.add(this._preview.onMouseDown(e=>{const{event:t,target:i}=e;if(t.detail!==2)return;const n=this._getFocusedReference();n&&this._onDidSelectReference.fire({element:{uri:n.uri,range:i.range},kind:t.ctrlKey||t.metaKey||t.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),hd(this._treeContainer),hd(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[e]=this._tree.getFocus();if(e instanceof rf)return e;if(e instanceof hT&&e.children.length>0)return e.children[0]}async revealReference(e){await this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:"goto",source:"tree"})}async _revealReference(e,t){if(this._revealedReference===e)return;this._revealedReference=e,e.uri.scheme!==Xt.inMemory?this.setTitle(OYe(e.uri),this._uriLabel.getUriLabel(wY(e.uri))):this.setTitle(U("peekView.alternateTitle","References"));const i=this._textModelResolverService.createModelReference(e.uri);this._tree.getInput()===e.parent?this._tree.reveal(e):(t&&this._tree.reveal(e.parent),await this._tree.expand(e.parent),this._tree.reveal(e));const n=await i;if(!this._model){n.dispose();return}Tn(this._previewModelReference);const o=n.object;if(o){const l=this._preview.getModel()===o.textEditorModel?0:1,r=v.lift(e.range).collapseToStart();this._previewModelReference=n,this._preview.setModel(o.textEditorModel),this._preview.setSelection(r),this._preview.revealRangeInCenter(r,l)}else this._preview.setModel(this._previewNotAvailableMessage),n.dispose()}};y7=jit([DN(3,Do),DN(4,Xa),DN(5,bt),DN(6,ZZe),DN(7,hV),DN(8,dn)],y7);var Kit=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},GN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},VD;const dN=new Ke("referenceSearchVisible",!1,U("referenceSearchVisible","Whether reference peek is visible, like 'Peek References' or 'Peek Definition'"));var eQ;let xA=(eQ=class{static get(e){return e.getContribution(VD.ID)}constructor(e,t,i,n,o,l,r,a){this._defaultTreeKeyboardSupport=e,this._editor=t,this._editorService=n,this._notificationService=o,this._instantiationService=l,this._storageService=r,this._configurationService=a,this._disposables=new Ze,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=dN.bindTo(i)}dispose(){var e,t;this._referenceSearchVisible.reset(),this._disposables.dispose(),(e=this._widget)==null||e.dispose(),(t=this._model)==null||t.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(e,t,i){let n;if(this._widget&&(n=this._widget.position),this.closeWidget(),n&&e.containsPosition(n))return;this._peekMode=i,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const o="peekViewLayout",l=Hit.fromJSON(this._storageService.get(o,0,"{}"));this._widget=this._instantiationService.createInstance(y7,this._editor,this._defaultTreeKeyboardSupport,l),this._widget.setTitle(U("labelLoading","Loading...")),this._widget.show(e),this._disposables.add(this._widget.onDidClose(()=>{t.cancel(),this._widget?(this._storageService.store(o,JSON.stringify(this._widget.layoutData),0,1),this._widget.isClosing||this.closeWidget(),this._widget=void 0):this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(a=>{const{element:d,kind:c}=a;if(d)switch(c){case"open":(a.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(d,!1,!1);break;case"side":this.openReference(d,!0,!1);break;case"goto":i?this._gotoReference(d,!0):this.openReference(d,!1,!0);break}}));const r=++this._requestIdPool;t.then(a=>{var d;if(r!==this._requestIdPool||!this._widget){a.dispose();return}return(d=this._model)==null||d.dispose(),this._model=a,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(U("metaTitle.N","{0} ({1})",this._model.title,this._model.references.length));const c=this._editor.getModel().uri,h=new oe(e.startLineNumber,e.startColumn),u=this._model.nearestReference(c,h);if(u)return this._widget.setSelection(u).then(()=>{this._widget&&this._editor.getOption(87)==="editor"&&this._widget.focusOnPreviewEditor()})}})},a=>{this._notificationService.error(a)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(e){if(!this._editor.hasModel()||!this._model||!this._widget)return;const t=this._widget.position;if(!t)return;const i=this._model.nearestReference(this._editor.getModel().uri,t);if(!i)return;const n=this._model.nextOrPreviousReference(i,e),o=this._editor.hasTextFocus(),l=this._widget.isPreviewEditorFocused();await this._widget.setSelection(n),await this._gotoReference(n,!1),o?this._editor.focus():this._widget&&l&&this._widget.focusOnPreviewEditor()}async revealReference(e){!this._editor.hasModel()||!this._model||!this._widget||await this._widget.revealReference(e)}closeWidget(e=!0){var t,i;(t=this._widget)==null||t.dispose(),(i=this._model)==null||i.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,e&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(e,t){var n;(n=this._widget)==null||n.hide(),this._ignoreModelChangeEvent=!0;const i=v.lift(e.range).collapseToStart();return this._editorService.openCodeEditor({resource:e.uri,options:{selection:i,selectionSource:"code.jump",pinned:t}},this._editor).then(o=>{if(this._ignoreModelChangeEvent=!1,!o||!this._widget){this.closeWidget();return}if(this._editor===o)this._widget.show(i),this._widget.focusOnReferenceTree();else{const l=VD.get(o),r=this._model.clone();this.closeWidget(),o.focus(),l==null||l.toggleWidget(i,Xo(a=>Promise.resolve(r)),this._peekMode??!1)}},o=>{this._ignoreModelChangeEvent=!1,vt(o)})}openReference(e,t,i){t||this.closeWidget();const{uri:n,range:o}=e;this._editorService.openCodeEditor({resource:n,options:{selection:o,selectionSource:"code.jump",pinned:i}},this._editor,t)}},VD=eQ,eQ.ID="editor.contrib.referencesController",eQ);xA=VD=Kit([GN(2,wt),GN(3,zi),GN(4,no),GN(5,bt),GN(6,su),GN(7,li)],xA);function cN(s,e){const t=Git(s);if(!t)return;const i=xA.get(t);i&&e(i)}la.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:Fo(2089,60),when:Ne.or(dN,xa.inPeekEditor),handler(s){cN(s,e=>{e.changeFocusBetweenPreviewAndReferences()})}});la.registerCommandAndKeybindingRule({id:"goToNextReference",weight:100-10,primary:62,secondary:[70],when:Ne.or(dN,xa.inPeekEditor),handler(s){cN(s,e=>{e.goToNextOrPreviousReference(!0)})}});la.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:100-10,primary:1086,secondary:[1094],when:Ne.or(dN,xa.inPeekEditor),handler(s){cN(s,e=>{e.goToNextOrPreviousReference(!1)})}});Bi.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference");Bi.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference");Bi.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch");Bi.registerCommand("closeReferenceSearch",s=>cN(s,e=>e.closeWidget()));la.registerKeybindingRule({id:"closeReferenceSearch",weight:100-101,primary:9,secondary:[1033],when:Ne.and(xa.inPeekEditor,Ne.not("config.editor.stablePeek"))});la.registerKeybindingRule({id:"closeReferenceSearch",weight:200+50,primary:9,secondary:[1033],when:Ne.and(dN,Ne.not("config.editor.stablePeek"),Ne.or(H.editorTextFocus,kUe.negate()))});la.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:Ne.and(dN,GUe,lte.negate(),rte.negate()),handler(s){var i;const t=(i=s.get(sh).lastFocusedList)==null?void 0:i.getFocus();Array.isArray(t)&&t[0]instanceof rf&&cN(s,n=>n.revealReference(t[0]))}});la.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:Ne.and(dN,GUe,lte.negate(),rte.negate()),handler(s){var i;const t=(i=s.get(sh).lastFocusedList)==null?void 0:i.getFocus();Array.isArray(t)&&t[0]instanceof rf&&cN(s,n=>n.openReference(t[0],!0,!0))}});Bi.registerCommand("openReference",s=>{var i;const t=(i=s.get(sh).lastFocusedList)==null?void 0:i.getFocus();Array.isArray(t)&&t[0]instanceof rf&&cN(s,n=>n.openReference(t[0],!1,!0))});var SZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},e2=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Uie=new Ke("hasSymbols",!1,U("hasSymbols","Whether there are symbol locations that can be navigated via keyboard-only.")),Fz=Zi("ISymbolNavigationService");let C7=class{constructor(e,t,i,n){this._editorService=t,this._notificationService=i,this._keybindingService=n,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=Uie.bindTo(e)}reset(){var e,t;this._ctxHasSymbols.reset(),(e=this._currentState)==null||e.dispose(),(t=this._currentMessage)==null||t.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(e){const t=e.parent.parent;if(t.references.length<=1){this.reset();return}this._currentModel=t,this._currentIdx=t.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();const i=new w7(this._editorService),n=i.onDidChange(o=>{if(this._ignoreEditorChange)return;const l=this._editorService.getActiveCodeEditor();if(!l)return;const r=l.getModel(),a=l.getPosition();if(!r||!a)return;let d=!1,c=!1;for(const h of t.references)if(SM(h.uri,r.uri))d=!0,c=c||v.containsPosition(h.range,a);else if(d)break;(!d||!c)&&this.reset()});this._currentState=_h(i,n)}revealNext(e){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const t=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:t.uri,options:{selection:v.collapseToStart(t.range),selectionRevealType:3}},e).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var i;(i=this._currentMessage)==null||i.dispose();const e=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),t=e?U("location.kb","Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,e.getLabel()):U("location","Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(t)}};C7=SZe([e2(0,wt),e2(1,zi),e2(2,no),e2(3,dn)],C7);Ci(Fz,C7,1);Oe(new class extends Io{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:Uie,kbOpts:{weight:100,primary:70}})}runEditorCommand(s,e){return s.get(Fz).revealNext(e)}});la.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:Uie,primary:9,handler(s){s.get(Fz).reset()}});let w7=class{constructor(e){this._listener=new Map,this._disposables=new Ze,this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._disposables.add(e.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(e.onCodeEditorAdd(this._onDidAddEditor,this)),e.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),Tn(this._listener.values())}_onDidAddEditor(e){this._listener.set(e,_h(e.onDidChangeCursorPosition(t=>this._onDidChange.fire({editor:e})),e.onDidChangeModelContent(t=>this._onDidChange.fire({editor:e}))))}_onDidRemoveEditor(e){var t;(t=this._listener.get(e))==null||t.dispose(),this._listener.delete(e)}};w7=SZe([e2(0,zi)],w7);function M7(s,e){return e.uri.scheme===s.uri.scheme?!0:!QH(e.uri,Xt.walkThroughSnippet,Xt.vscodeChatCodeBlock,Xt.vscodeChatCodeCompareBlock)}async function BB(s,e,t,i,n){const l=t.ordered(s,i).map(a=>Promise.resolve(n(a,s,e)).then(void 0,d=>{Os(d)})),r=await Promise.all(l);return Oh(r.flat()).filter(a=>M7(s,a))}function LB(s,e,t,i,n){return BB(e,t,s,i,(o,l,r)=>o.provideDefinition(l,r,n))}function fie(s,e,t,i,n){return BB(e,t,s,i,(o,l,r)=>o.provideDeclaration(l,r,n))}function Fie(s,e,t,i,n){return BB(e,t,s,i,(o,l,r)=>o.provideImplementation(l,r,n))}function Zie(s,e,t,i,n){return BB(e,t,s,i,(o,l,r)=>o.provideTypeDefinition(l,r,n))}function kB(s,e,t,i,n,o){return BB(e,t,s,n,async(l,r,a)=>{var h,u;const d=(h=await l.provideReferences(r,a,{includeDeclaration:!0},o))==null?void 0:h.filter(m=>M7(r,m));if(!i||!d||d.length!==2)return d;const c=(u=await l.provideReferences(r,a,{includeDeclaration:!1},o))==null?void 0:u.filter(m=>M7(r,m));return c&&c.length===1?c:d})}async function xp(s){const e=await s(),t=new Fd(e,""),i=t.references.map(n=>n.link);return t.dispose(),i}Ya("_executeDefinitionProvider",(s,e,t)=>{const i=s.get(lt),n=LB(i.definitionProvider,e,t,!1,$t.None);return xp(()=>n)});Ya("_executeDefinitionProvider_recursive",(s,e,t)=>{const i=s.get(lt),n=LB(i.definitionProvider,e,t,!0,$t.None);return xp(()=>n)});Ya("_executeTypeDefinitionProvider",(s,e,t)=>{const i=s.get(lt),n=Zie(i.typeDefinitionProvider,e,t,!1,$t.None);return xp(()=>n)});Ya("_executeTypeDefinitionProvider_recursive",(s,e,t)=>{const i=s.get(lt),n=Zie(i.typeDefinitionProvider,e,t,!0,$t.None);return xp(()=>n)});Ya("_executeDeclarationProvider",(s,e,t)=>{const i=s.get(lt),n=fie(i.declarationProvider,e,t,!1,$t.None);return xp(()=>n)});Ya("_executeDeclarationProvider_recursive",(s,e,t)=>{const i=s.get(lt),n=fie(i.declarationProvider,e,t,!0,$t.None);return xp(()=>n)});Ya("_executeReferenceProvider",(s,e,t)=>{const i=s.get(lt),n=kB(i.referenceProvider,e,t,!1,!1,$t.None);return xp(()=>n)});Ya("_executeReferenceProvider_recursive",(s,e,t)=>{const i=s.get(lt),n=kB(i.referenceProvider,e,t,!1,!0,$t.None);return xp(()=>n)});Ya("_executeImplementationProvider",(s,e,t)=>{const i=s.get(lt),n=Fie(i.implementationProvider,e,t,!1,$t.None);return xp(()=>n)});Ya("_executeImplementationProvider_recursive",(s,e,t)=>{const i=s.get(lt),n=Fie(i.implementationProvider,e,t,!0,$t.None);return xp(()=>n)});nl.appendMenuItem(at.EditorContext,{submenu:at.EditorContextPeek,title:U("peek.submenu","Peek"),group:"navigation",order:100});class QV{static is(e){return!e||typeof e!="object"?!1:!!(e instanceof QV||oe.isIPosition(e.position)&&e.model)}constructor(e,t){this.model=e,this.position=t}}const Nh=class Nh extends lm{static all(){return Nh._allSymbolNavigationCommands.values()}static _patchConfig(e){const t={...e,f1:!0};if(t.menu)for(const i of Ti.wrap(t.menu))(i.id===at.EditorContext||i.id===at.EditorContextPeek)&&(i.when=Ne.and(e.precondition,i.when));return t}constructor(e,t){super(Nh._patchConfig(t)),this.configuration=e,Nh._allSymbolNavigationCommands.set(t.id,this)}runEditorCommand(e,t,i,n){if(!t.hasModel())return Promise.resolve(void 0);const o=e.get(no),l=e.get(zi),r=e.get(bf),a=e.get(Fz),d=e.get(lt),c=e.get(bt),h=t.getModel(),u=t.getPosition(),m=QV.is(i)?i:new QV(h,u),p=new of(t,5),g=sB(this._getLocationModel(d,m.model,m.position,p.token),p.token).then(async b=>{var A;if(!b||p.token.isCancellationRequested)return;ra(b.ariaMessage);let f;if(b.referenceAt(h.uri,u)){const N=this._getAlternativeCommand(t);!Nh._activeAlternativeCommands.has(N)&&Nh._allSymbolNavigationCommands.has(N)&&(f=Nh._allSymbolNavigationCommands.get(N))}const Z=b.references.length;if(Z===0){if(!this.configuration.muteMessage){const N=h.getWordAtPosition(u);(A=fd.get(t))==null||A.showMessage(this._getNoResultFoundMessage(N),u)}}else if(Z===1&&f)Nh._activeAlternativeCommands.add(this.desc.id),c.invokeFunction(N=>f.runEditorCommand(N,t,i,n).finally(()=>{Nh._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(l,a,t,b,n)},b=>{o.error(b)}).finally(()=>{p.dispose()});return r.showWhile(g,250),g}async _onResult(e,t,i,n,o){const l=this._getGoToPreference(i);if(!(i instanceof tu)&&(this.configuration.openInPeek||l==="peek"&&n.references.length>1))this._openInPeek(i,n,o);else{const r=n.firstReference(),a=n.references.length>1&&l==="gotoAndPeek",d=await this._openReference(i,e,r,this.configuration.openToSide,!a);a&&d?this._openInPeek(d,n,o):n.dispose(),l==="goto"&&t.put(r)}}async _openReference(e,t,i,n,o){let l;if(lGe(i)&&(l=i.targetSelectionRange),l||(l=i.range),!l)return;const r=await t.openCodeEditor({resource:i.uri,options:{selection:v.collapseToStart(l),selectionRevealType:3,selectionSource:"code.jump"}},e,n);if(r){if(o){const a=r.getModel(),d=r.createDecorationsCollection([{range:l,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{r.getModel()===a&&d.clear()},350)}return r}}_openInPeek(e,t,i){const n=xA.get(e);n&&e.hasModel()?n.toggleWidget(i??e.getSelection(),Xo(o=>Promise.resolve(t)),this.configuration.openInPeek):t.dispose()}};Nh._allSymbolNavigationCommands=new Map,Nh._activeAlternativeCommands=new Set;let C0=Nh;class IB extends C0{async _getLocationModel(e,t,i,n){return new Fd(await LB(e.definitionProvider,t,i,!1,n),U("def.title","Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?U("noResultWord","No definition found for '{0}'",e.word):U("generic.noResults","No definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleDefinitions}}var rA;Xn((rA=class extends IB{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:rA.id,title:{...kt("actions.goToDecl.label","Go to Definition"),mnemonicTitle:U({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")},precondition:H.hasDefinitionProvider,keybinding:[{when:H.editorTextFocus,primary:70,weight:100},{when:Ne.and(H.editorTextFocus,BUe),primary:2118,weight:100}],menu:[{id:at.EditorContext,group:"navigation",order:1.1},{id:at.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),Bi.registerCommandAlias("editor.action.goToDeclaration",rA.id)}},rA.id="editor.action.revealDefinition",rA));var aA;Xn((aA=class extends IB{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:aA.id,title:kt("actions.goToDeclToSide.label","Open Definition to the Side"),precondition:Ne.and(H.hasDefinitionProvider,H.isInEmbeddedEditor.toNegated()),keybinding:[{when:H.editorTextFocus,primary:Fo(2089,70),weight:100},{when:Ne.and(H.editorTextFocus,BUe),primary:Fo(2089,2118),weight:100}]}),Bi.registerCommandAlias("editor.action.openDeclarationToTheSide",aA.id)}},aA.id="editor.action.revealDefinitionAside",aA));var dA;Xn((dA=class extends IB{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:dA.id,title:kt("actions.previewDecl.label","Peek Definition"),precondition:Ne.and(H.hasDefinitionProvider,xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated()),keybinding:{when:H.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:at.EditorContextPeek,group:"peek",order:2}}),Bi.registerCommandAlias("editor.action.previewDeclaration",dA.id)}},dA.id="editor.action.peekDefinition",dA));class WZe extends C0{async _getLocationModel(e,t,i,n){return new Fd(await fie(e.declarationProvider,t,i,!1,n),U("decl.title","Declarations"))}_getNoResultFoundMessage(e){return e&&e.word?U("decl.noResultWord","No declaration found for '{0}'",e.word):U("decl.generic.noResults","No declaration found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDeclarationCommand}_getGoToPreference(e){return e.getOption(58).multipleDeclarations}}var tQ;Xn((tQ=class extends WZe{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:tQ.id,title:{...kt("actions.goToDeclaration.label","Go to Declaration"),mnemonicTitle:U({key:"miGotoDeclaration",comment:["&& denotes a mnemonic"]},"Go to &&Declaration")},precondition:Ne.and(H.hasDeclarationProvider,H.isInEmbeddedEditor.toNegated()),menu:[{id:at.EditorContext,group:"navigation",order:1.3},{id:at.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(e){return e&&e.word?U("decl.noResultWord","No declaration found for '{0}'",e.word):U("decl.generic.noResults","No declaration found")}},tQ.id="editor.action.revealDeclaration",tQ));Xn(class extends WZe{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:kt("actions.peekDecl.label","Peek Declaration"),precondition:Ne.and(H.hasDeclarationProvider,xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated()),menu:{id:at.EditorContextPeek,group:"peek",order:3}})}});class VZe extends C0{async _getLocationModel(e,t,i,n){return new Fd(await Zie(e.typeDefinitionProvider,t,i,!1,n),U("typedef.title","Type Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?U("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):U("goToTypeDefinition.generic.noResults","No type definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeTypeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleTypeDefinitions}}var iQ;Xn((iQ=class extends VZe{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:iQ.ID,title:{...kt("actions.goToTypeDefinition.label","Go to Type Definition"),mnemonicTitle:U({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")},precondition:H.hasTypeDefinitionProvider,keybinding:{when:H.editorTextFocus,primary:0,weight:100},menu:[{id:at.EditorContext,group:"navigation",order:1.4},{id:at.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},iQ.ID="editor.action.goToTypeDefinition",iQ));var nQ;Xn((nQ=class extends VZe{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:nQ.ID,title:kt("actions.peekTypeDefinition.label","Peek Type Definition"),precondition:Ne.and(H.hasTypeDefinitionProvider,xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated()),menu:{id:at.EditorContextPeek,group:"peek",order:4}})}},nQ.ID="editor.action.peekTypeDefinition",nQ));class QZe extends C0{async _getLocationModel(e,t,i,n){return new Fd(await Fie(e.implementationProvider,t,i,!1,n),U("impl.title","Implementations"))}_getNoResultFoundMessage(e){return e&&e.word?U("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):U("goToImplementation.generic.noResults","No implementation found")}_getAlternativeCommand(e){return e.getOption(58).alternativeImplementationCommand}_getGoToPreference(e){return e.getOption(58).multipleImplementations}}var sQ;Xn((sQ=class extends QZe{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:sQ.ID,title:{...kt("actions.goToImplementation.label","Go to Implementations"),mnemonicTitle:U({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementations")},precondition:H.hasImplementationProvider,keybinding:{when:H.editorTextFocus,primary:2118,weight:100},menu:[{id:at.EditorContext,group:"navigation",order:1.45},{id:at.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},sQ.ID="editor.action.goToImplementation",sQ));var oQ;Xn((oQ=class extends QZe{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:oQ.ID,title:kt("actions.peekImplementation.label","Peek Implementations"),precondition:Ne.and(H.hasImplementationProvider,xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated()),keybinding:{when:H.editorTextFocus,primary:3142,weight:100},menu:{id:at.EditorContextPeek,group:"peek",order:5}})}},oQ.ID="editor.action.peekImplementation",oQ));class yZe extends C0{_getNoResultFoundMessage(e){return e?U("references.no","No references found for '{0}'",e.word):U("references.noGeneric","No references found")}_getAlternativeCommand(e){return e.getOption(58).alternativeReferenceCommand}_getGoToPreference(e){return e.getOption(58).multipleReferences}}Xn(class extends yZe{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{...kt("goToReferences.label","Go to References"),mnemonicTitle:U({key:"miGotoReference",comment:["&& denotes a mnemonic"]},"Go to &&References")},precondition:Ne.and(H.hasReferenceProvider,xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated()),keybinding:{when:H.editorTextFocus,primary:1094,weight:100},menu:[{id:at.EditorContext,group:"navigation",order:1.45},{id:at.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(e,t,i,n){return new Fd(await kB(e.referenceProvider,t,i,!0,!1,n),U("ref.title","References"))}});Xn(class extends yZe{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:kt("references.action.label","Peek References"),precondition:Ne.and(H.hasReferenceProvider,xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated()),menu:{id:at.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(e,t,i,n){return new Fd(await kB(e.referenceProvider,t,i,!1,!1,n),U("ref.title","References"))}});class qit extends C0{constructor(e,t,i){super(e,{id:"editor.action.goToLocation",title:kt("label.generic","Go to Any Symbol"),precondition:Ne.and(xa.notInPeekEditor,H.isInEmbeddedEditor.toNegated())}),this._references=t,this._gotoMultipleBehaviour=i}async _getLocationModel(e,t,i,n){return new Fd(this._references,U("generic.title","Locations"))}_getNoResultFoundMessage(e){return e&&U("generic.noResult","No results for '{0}'",e.word)||""}_getGoToPreference(e){return this._gotoMultipleBehaviour??e.getOption(58).multipleReferences}_getAlternativeCommand(){return""}}Bi.registerCommand({id:"editor.action.goToLocations",metadata:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:At},{name:"position",description:"The position at which to start",constraint:oe.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:async(s,e,t,i,n,o,l)=>{Yi(At.isUri(e)),Yi(oe.isIPosition(t)),Yi(Array.isArray(i)),Yi(typeof n>"u"||typeof n=="string"),Yi(typeof l>"u"||typeof l=="boolean");const r=s.get(zi),a=await r.openCodeEditor({resource:e},r.getFocusedCodeEditor());if(Mp(a))return a.setPosition(t),a.revealPositionInCenterIfOutsideViewport(t,0),a.invokeWithinContext(d=>{const c=new class extends qit{_getNoResultFoundMessage(h){return o||super._getNoResultFoundMessage(h)}}({muteMessage:!o,openInPeek:!!l,openToSide:!1},i,n);d.get(bt).invokeFunction(c.run.bind(c),a)})}});Bi.registerCommand({id:"editor.action.peekLocations",metadata:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:At},{name:"position",description:"The position at which to start",constraint:oe.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`"}]},handler:async(s,e,t,i,n)=>{s.get(On).executeCommand("editor.action.goToLocations",e,t,i,n,void 0,!0)}});Bi.registerCommand({id:"editor.action.findReferences",handler:(s,e,t)=>{Yi(At.isUri(e)),Yi(oe.isIPosition(t));const i=s.get(lt),n=s.get(zi);return n.openCodeEditor({resource:e},n.getFocusedCodeEditor()).then(o=>{if(!Mp(o)||!o.hasModel())return;const l=xA.get(o);if(!l)return;const r=Xo(d=>kB(i.referenceProvider,o.getModel(),oe.lift(t),!1,!1,d).then(c=>new Fd(c,U("ref.title","References")))),a=new v(t.lineNumber,t.column,t.lineNumber,t.column);return Promise.resolve(l.toggleWidget(a,r,!1))})}});Bi.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");async function $it(s,e,t,i){const n=s.get(Xa),o=s.get(Vd),l=s.get(On),r=s.get(bt),a=s.get(no);if(await i.item.resolve($t.None),!i.part.location)return;const d=i.part.location,c=[],h=new Set(nl.getMenuItems(at.EditorContext).map(m=>gW(m)?m.command.id:hz()));for(const m of C0.all())h.has(m.desc.id)&&c.push(new bd(m.desc.id,Ud.label(m.desc,{renderShortTitle:!0}),void 0,!0,async()=>{const p=await n.createModelReference(d.uri);try{const g=new QV(p.object.textEditorModel,v.getStartPosition(d.range)),b=i.item.anchor.range;await r.invokeFunction(m.runEditorCommand.bind(m),e,g,b)}finally{p.dispose()}}));if(i.part.command){const{command:m}=i.part;c.push(new zo),c.push(new bd(m.id,m.title,void 0,!0,async()=>{try{await l.executeCommand(m.id,...m.arguments??[])}catch(p){a.notify({severity:fY.Error,source:i.item.provider.displayName,message:p})}}))}const u=e.getOption(128);o.showContextMenu({domForShadowRoot:u?e.getDomNode()??void 0:void 0,getAnchor:()=>{const m=_s(t);return{x:m.left,y:m.top+m.height+8}},getActions:()=>c,onHide:()=>{e.focus()},autoSelectFirstItem:!0})}async function CZe(s,e,t,i){const o=await s.get(Xa).createModelReference(i.uri);await t.invokeWithinContext(async l=>{const r=e.hasSideBySideModifier,a=l.get(wt),d=xa.inPeekEditor.getValue(a),c=!r&&t.getOption(89)&&!d;return new IB({openToSide:r,openInPeek:c,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(l,new QV(o.object.textEditorModel,v.getStartPosition(i.range)),v.lift(i.range))}),o.dispose()}var ent=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},EN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},RR;class Gx{constructor(){this._entries=new Ip(50)}get(e){const t=Gx._key(e);return this._entries.get(t)}set(e,t){const i=Gx._key(e);this._entries.set(i,t)}static _key(e){return`${e.uri.toString()}/${e.getVersionId()}`}}const wZe=Zi("IInlayHintsCache");Ci(wZe,Gx,1);class T7{constructor(e,t){this.item=e,this.index=t}get part(){const e=this.item.hint.label;return typeof e=="string"?{label:e}:e[this.index]}}class tnt{constructor(e,t){this.part=e,this.hasTriggerModifier=t}}var MU;let uT=(MU=class{static get(e){return e.getContribution(RR.ID)??void 0}constructor(e,t,i,n,o,l,r){this._editor=e,this._languageFeaturesService=t,this._inlayHintsCache=n,this._commandService=o,this._notificationService=l,this._instaService=r,this._disposables=new Ze,this._sessionDisposables=new Ze,this._decorationsMetadata=new Map,this._ruleFactory=new ix(this._editor),this._activeRenderMode=0,this._debounceInfo=i.for(t.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(t.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(e.onDidChangeModel(()=>this._update())),this._disposables.add(e.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(e.onDidChangeConfiguration(a=>{a.hasChanged(142)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const e=this._editor.getOption(142);if(e.enabled==="off")return;const t=this._editor.getModel();if(!t||!this._languageFeaturesService.inlayHintsProvider.has(t))return;if(e.enabled==="on")this._activeRenderMode=0;else{let r,a;e.enabled==="onUnlessPressed"?(r=0,a=1):(r=1,a=0),this._activeRenderMode=r,this._sessionDisposables.add(e0.getInstance().event(d=>{if(!this._editor.hasModel())return;const c=d.altKey&&d.ctrlKey&&!(d.shiftKey||d.metaKey)?a:r;if(c!==this._activeRenderMode){this._activeRenderMode=c;const h=this._editor.getModel(),u=this._copyInlayHintsWithCurrentAnchor(h);this._updateHintsDecorators([h.getFullModelRange()],u),l.schedule(0)}}))}const i=this._inlayHintsCache.get(t);i&&this._updateHintsDecorators([t.getFullModelRange()],i),this._sessionDisposables.add(gt(()=>{t.isDisposed()||this._cacheHintsForFastRestore(t)}));let n;const o=new Set,l=new Rn(async()=>{const r=Date.now();n==null||n.dispose(!0),n=new Ws;const a=t.onWillDispose(()=>n==null?void 0:n.cancel());try{const d=n.token,c=await Bx.create(this._languageFeaturesService.inlayHintsProvider,t,this._getHintsRanges(),d);if(l.delay=this._debounceInfo.update(t,Date.now()-r),d.isCancellationRequested){c.dispose();return}for(const h of c.provider)typeof h.onDidChangeInlayHints=="function"&&!o.has(h)&&(o.add(h),this._sessionDisposables.add(h.onDidChangeInlayHints(()=>{l.isScheduled()||l.schedule()})));this._sessionDisposables.add(c),this._updateHintsDecorators(c.ranges,c.items),this._cacheHintsForFastRestore(t)}catch(d){vt(d)}finally{n.dispose(),a.dispose()}},this._debounceInfo.get(t));this._sessionDisposables.add(l),this._sessionDisposables.add(gt(()=>n==null?void 0:n.dispose(!0))),l.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(r=>{(r.scrollTopChanged||!l.isScheduled())&&l.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeModelContent(r=>{n==null||n.cancel();const a=Math.max(l.delay,1250);l.schedule(a)})),this._sessionDisposables.add(this._installDblClickGesture(()=>l.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const e=new Ze,t=e.add(new bz(this._editor)),i=new Ze;return e.add(i),e.add(t.onMouseMoveOrRelevantKeyDown(n=>{const[o]=n,l=this._getInlayHintLabelPart(o),r=this._editor.getModel();if(!l||!r){i.clear();return}const a=new Ws;i.add(gt(()=>a.dispose(!0))),l.item.resolve(a.token),this._activeInlayHintPart=l.part.command||l.part.location?new tnt(l,o.hasTriggerModifier):void 0;const d=r.validatePosition(l.item.hint.position).lineNumber,c=new v(d,1,d,r.getLineMaxColumn(d)),h=this._getInlineHintsForRange(c);this._updateHintsDecorators([c],h),i.add(gt(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([c],h)}))})),e.add(t.onCancel(()=>i.clear())),e.add(t.onExecute(async n=>{const o=this._getInlayHintLabelPart(n);if(o){const l=o.part;l.location?this._instaService.invokeFunction(CZe,n,this._editor,l.location):Vj.is(l.command)&&await this._invokeCommand(l.command,o.item)}})),e}_getInlineHintsForRange(e){const t=new Set;for(const i of this._decorationsMetadata.values())e.containsRange(i.item.anchor.range)&&t.add(i.item);return Array.from(t)}_installDblClickGesture(e){return this._editor.onMouseUp(async t=>{if(t.event.detail!==2)return;const i=this._getInlayHintLabelPart(t);if(i&&(t.event.preventDefault(),await i.item.resolve($t.None),Sr(i.item.hint.textEdits))){const n=i.item.hint.textEdits.map(o=>Rs.replace(v.lift(o.range),o.text));this._editor.executeEdits("inlayHint.default",n),e()}})}_installContextMenu(){return this._editor.onContextMenu(async e=>{if(!Yo(e.event.target))return;const t=this._getInlayHintLabelPart(e);t&&await this._instaService.invokeFunction($it,this._editor,e.event.target,t)})}_getInlayHintLabelPart(e){var i;if(e.target.type!==6)return;const t=(i=e.target.detail.injectedText)==null?void 0:i.options;if(t instanceof tf&&(t==null?void 0:t.attachedData)instanceof T7)return t.attachedData}async _invokeCommand(e,t){try{await this._commandService.executeCommand(e.id,...e.arguments??[])}catch(i){this._notificationService.notify({severity:fY.Error,source:t.provider.displayName,message:i})}}_cacheHintsForFastRestore(e){const t=this._copyInlayHintsWithCurrentAnchor(e);this._inlayHintsCache.set(e,t)}_copyInlayHintsWithCurrentAnchor(e){const t=new Map;for(const[i,n]of this._decorationsMetadata){if(t.has(n.item))continue;const o=e.getDecorationRange(i);if(o){const l=new UZe(o,n.item.anchor.direction),r=n.item.with({anchor:l});t.set(n.item,r)}}return Array.from(t.values())}_getHintsRanges(){const t=this._editor.getModel(),i=this._editor.getVisibleRangesPlusViewportAboveBelow(),n=[];for(const o of i.sort(v.compareRangesUsingStarts)){const l=t.validateRange(new v(o.startLineNumber-30,o.startColumn,o.endLineNumber+30,o.endColumn));n.length===0||!v.areIntersectingOrTouching(n[n.length-1],l)?n.push(l):n[n.length-1]=v.plusRange(n[n.length-1],l)}return n}_updateHintsDecorators(e,t){var p,g;const i=[],n=(b,f,Z,A,N)=>{const W={content:Z,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:f.className,cursorStops:A,attachedData:N};i.push({item:b,classNameRef:f,decoration:{range:b.anchor.range,options:{description:"InlayHint",showIfCollapsed:b.anchor.range.isEmpty(),collapseOnReplaceEdit:!b.anchor.range.isEmpty(),stickiness:0,[b.anchor.direction]:this._activeRenderMode===0?W:void 0}}})},o=(b,f)=>{const Z=this._ruleFactory.createClassNameRef({width:`${l/3|0}px`,display:"inline-block"});n(b,Z," ",f?Xh.Right:Xh.None)},{fontSize:l,fontFamily:r,padding:a,isUniform:d}=this._getLayoutInfo(),c="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(c,r);let h={line:0,totalLen:0};for(const b of t){if(h.line!==b.anchor.range.startLineNumber&&(h={line:b.anchor.range.startLineNumber,totalLen:0}),h.totalLen>RR._MAX_LABEL_LEN)continue;b.hint.paddingLeft&&o(b,!1);const f=typeof b.hint.label=="string"?[{label:b.hint.label}]:b.hint.label;for(let Z=0;Z<f.length;Z++){const A=f[Z],N=Z===0,W=Z===f.length-1,Q={fontSize:`${l}px`,fontFamily:`var(${c}), ${ta.fontFamily}`,verticalAlign:d?"baseline":"middle",unicodeBidi:"isolate"};Sr(b.hint.textEdits)&&(Q.cursor="default"),this._fillInColors(Q,b.hint),(A.command||A.location)&&((p=this._activeInlayHintPart)==null?void 0:p.part.item)===b&&this._activeInlayHintPart.part.index===Z&&(Q.textDecoration="underline",this._activeInlayHintPart.hasTriggerModifier&&(Q.color=Gs(WXe),Q.cursor="pointer")),a&&(N&&W?(Q.padding=`1px ${Math.max(1,l/4)|0}px`,Q.borderRadius=`${l/4|0}px`):N?(Q.padding=`1px 0 1px ${Math.max(1,l/4)|0}px`,Q.borderRadius=`${l/4|0}px 0 0 ${l/4|0}px`):W?(Q.padding=`1px ${Math.max(1,l/4)|0}px 1px 0`,Q.borderRadius=`0 ${l/4|0}px ${l/4|0}px 0`):Q.padding="1px 0 1px 0");let R=A.label;h.totalLen+=R.length;let M=!1;const w=h.totalLen-RR._MAX_LABEL_LEN;if(w>0&&(R=R.slice(0,-w)+"…",M=!0),n(b,this._ruleFactory.createClassNameRef(Q),int(R),W&&!b.hint.paddingRight?Xh.Right:Xh.None,new T7(b,Z)),M)break}if(b.hint.paddingRight&&o(b,!0),i.length>RR._MAX_DECORATORS)break}const u=[];for(const[b,f]of this._decorationsMetadata){const Z=(g=this._editor.getModel())==null?void 0:g.getDecorationRange(b);Z&&e.some(A=>A.containsRange(Z))&&(u.push(b),f.classNameRef.dispose(),this._decorationsMetadata.delete(b))}const m=em.capture(this._editor);this._editor.changeDecorations(b=>{const f=b.deltaDecorations(u,i.map(Z=>Z.decoration));for(let Z=0;Z<f.length;Z++){const A=i[Z];this._decorationsMetadata.set(f[Z],A)}}),m.restore(this._editor)}_fillInColors(e,t){t.kind===kE.Parameter?(e.backgroundColor=Gs(BXe),e.color=Gs(TXe)):t.kind===kE.Type?(e.backgroundColor=Gs(MXe),e.color=Gs(wXe)):(e.backgroundColor=Gs(aee),e.color=Gs(ree))}_getLayoutInfo(){const e=this._editor.getOption(142),t=e.padding,i=this._editor.getOption(52),n=this._editor.getOption(49);let o=e.fontSize;(!o||o<5||o>i)&&(o=i);const l=e.fontFamily||n;return{fontSize:o,fontFamily:l,padding:t,isUniform:!t&&l===n&&o===i}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const e of this._decorationsMetadata.values())e.classNameRef.dispose();this._decorationsMetadata.clear()}},RR=MU,MU.ID="editor.contrib.InlayHints",MU._MAX_DECORATORS=1500,MU._MAX_LABEL_LEN=43,MU);uT=RR=ent([EN(1,lt),EN(2,gc),EN(3,wZe),EN(4,On),EN(5,no),EN(6,bt)],uT);function int(s){const e=" ";return s.replace(/[ \t]/g,e)}Bi.registerCommand("_executeInlayHintProvider",async(s,...e)=>{const[t,i]=e;Yi(At.isUri(t)),Yi(v.isIRange(i));const{inlayHintsProvider:n}=s.get(lt),o=await s.get(Xa).createModelReference(t);try{const l=await Bx.create(n,o.object.textEditorModel,[v.lift(i)],$t.None),r=l.items.map(a=>a.hint);return setTimeout(()=>l.dispose(),0),r}finally{o.dispose()}});var nnt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},O0=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class xde extends RD{constructor(e,t,i,n){super(10,t,e.item.anchor.range,i,n,!0),this.part=e}}let Ex=class extends cT{constructor(e,t,i,n,o,l,r,a,d){super(e,t,i,l,a,n,o,d),this._resolverService=r,this.hoverOrdinal=6}suggestHoverAnchor(e){var n;if(!uT.get(this._editor)||e.target.type!==6)return null;const i=(n=e.target.detail.injectedText)==null?void 0:n.options;return i instanceof tf&&i.attachedData instanceof T7?new xde(i.attachedData,this,e.event.posx,e.event.posy):null}computeSync(){return[]}computeAsync(e,t,i){return e instanceof xde?new nc(async n=>{const{part:o}=e;if(await o.item.resolve(i),i.isCancellationRequested)return;let l;typeof o.item.hint.tooltip=="string"?l=new tr().appendText(o.item.hint.tooltip):o.item.hint.tooltip&&(l=o.item.hint.tooltip),l&&n.emitOne(new Eh(this,e.range,[l],!1,0)),Sr(o.item.hint.textEdits)&&n.emitOne(new Eh(this,e.range,[new tr().appendText(U("hint.dbl","Double-click to insert"))],!1,10001));let r;if(typeof o.part.tooltip=="string"?r=new tr().appendText(o.part.tooltip):o.part.tooltip&&(r=o.part.tooltip),r&&n.emitOne(new Eh(this,e.range,[r],!1,1)),o.part.location||o.part.command){let d;const h=this._editor.getOption(78)==="altKey"?Fi?U("links.navigate.kb.meta.mac","cmd + click"):U("links.navigate.kb.meta","ctrl + click"):Fi?U("links.navigate.kb.alt.mac","option + click"):U("links.navigate.kb.alt","alt + click");o.part.location&&o.part.command?d=new tr().appendText(U("hint.defAndCommand","Go to Definition ({0}), right click for more",h)):o.part.location?d=new tr().appendText(U("hint.def","Go to Definition ({0})",h)):o.part.command&&(d=new tr(`[${U("hint.cmd","Execute Command")}](${Mit(o.part.command)} "${o.part.command.title}") (${h})`,{isTrusted:!0})),d&&n.emitOne(new Eh(this,e.range,[d],!1,1e4))}const a=await this._resolveInlayHintLabelPartHover(o,i);for await(const d of a)n.emitOne(d)}):nc.EMPTY}async _resolveInlayHintLabelPartHover(e,t){if(!e.part.location)return nc.EMPTY;const{uri:i,range:n}=e.part.location,o=await this._resolverService.createModelReference(i);try{const l=o.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(l)?gie(this._languageFeaturesService.hoverProvider,l,new oe(n.startLineNumber,n.startColumn),t).filter(r=>!dV(r.hover.contents)).map(r=>new Eh(this,e.item.anchor.range,r.hover.contents,!1,2+r.ordinal)):nc.EMPTY}finally{o.dispose()}}};Ex=nnt([O0(1,Zs),O0(2,za),O0(3,dn),O0(4,Gp),O0(5,li),O0(6,Xa),O0(7,lt),O0(8,On)],Ex);class Aie extends de{constructor(e,t,i,n,o,l){super();const r=t.anchor,a=t.hoverParts;this._renderedHoverParts=this._register(new B7(e,i,a,l,o));const{showAtPosition:d,showAtSecondaryPosition:c}=Aie.computeHoverPositions(e,r.range,a);this.shouldAppearBeforeContent=a.some(h=>h.isBeforeContent),this.showAtPosition=d,this.showAtSecondaryPosition=c,this.initialMousePosX=r.initialMousePosX,this.initialMousePosY=r.initialMousePosY,this.shouldFocus=n.shouldFocus,this.source=n.source}get domNode(){return this._renderedHoverParts.domNode}get domNodeHasChildren(){return this._renderedHoverParts.domNodeHasChildren}get focusedHoverPartIndex(){return this._renderedHoverParts.focusedHoverPartIndex}async updateHoverVerbosityLevel(e,t,i){this._renderedHoverParts.updateHoverVerbosityLevel(e,t,i)}isColorPickerVisible(){return this._renderedHoverParts.isColorPickerVisible()}static computeHoverPositions(e,t,i){let n=1;if(e.hasModel()){const c=e._getViewModel(),h=c.coordinatesConverter,u=h.convertModelRangeToViewRange(t),m=c.getLineMinColumn(u.startLineNumber),p=new oe(u.startLineNumber,m);n=h.convertViewPositionToModelPosition(p).column}const o=t.startLineNumber;let l=t.startColumn,r;for(const c of i){const h=c.range,u=h.startLineNumber===o,m=h.endLineNumber===o;if(u&&m){const g=h.startColumn,b=Math.min(l,g);l=Math.max(b,n)}c.forceShowAtRange&&(r=h)}let a,d;if(r){const c=r.getStartPosition();a=c,d=c}else a=t.getStartPosition(),d=new oe(o,l);return{showAtPosition:a,showAtSecondaryPosition:d}}}class snt{constructor(e,t){this._statusBar=t,e.appendChild(this._statusBar.hoverElement)}get hoverElement(){return this._statusBar.hoverElement}get actions(){return this._statusBar.actions}dispose(){this._statusBar.dispose()}}const e5=class e5 extends de{constructor(e,t,i,n,o){super(),this._renderedParts=[],this._focusedHoverPartIndex=-1,this._context=o,this._fragment=document.createDocumentFragment(),this._register(this._renderParts(t,i,o,n)),this._register(this._registerListenersOnRenderedParts()),this._register(this._createEditorDecorations(e,i)),this._updateMarkdownAndColorParticipantInfo(t)}_createEditorDecorations(e,t){if(t.length===0)return de.None;let i=t[0].range;for(const o of t){const l=o.range;i=v.plusRange(i,l)}const n=e.createDecorationsCollection();return n.set([{range:i,options:e5._DECORATION_OPTIONS}]),gt(()=>{n.clear()})}_renderParts(e,t,i,n){const o=new Tx(n),l={fragment:this._fragment,statusBar:o,...i},r=new Ze;for(const d of e){const c=this._renderHoverPartsForParticipant(t,d,l);r.add(c);for(const h of c.renderedHoverParts)this._renderedParts.push({type:"hoverPart",participant:d,hoverPart:h.hoverPart,hoverElement:h.hoverElement})}const a=this._renderStatusBar(this._fragment,o);return a&&(r.add(a),this._renderedParts.push({type:"statusBar",hoverElement:a.hoverElement,actions:a.actions})),gt(()=>{r.dispose()})}_renderHoverPartsForParticipant(e,t,i){const n=e.filter(l=>l.owner===t);return n.length>0?t.renderHoverParts(i,n):new vA([])}_renderStatusBar(e,t){if(t.hasContent)return new snt(e,t)}_registerListenersOnRenderedParts(){const e=new Ze;return this._renderedParts.forEach((t,i)=>{const n=t.hoverElement;n.tabIndex=0,e.add(ge(n,De.FOCUS_IN,o=>{o.stopPropagation(),this._focusedHoverPartIndex=i})),e.add(ge(n,De.FOCUS_OUT,o=>{o.stopPropagation(),this._focusedHoverPartIndex=-1}))}),e}_updateMarkdownAndColorParticipantInfo(e){const t=e.find(i=>i instanceof cT&&!(i instanceof Ex));t&&(this._markdownHoverParticipant=t),this._colorHoverParticipant=e.find(i=>i instanceof aT)}async updateHoverVerbosityLevel(e,t,i){if(!this._markdownHoverParticipant)return;const n=this._normalizedIndexToMarkdownHoverIndexRange(this._markdownHoverParticipant,t);if(n===void 0)return;const o=await this._markdownHoverParticipant.updateMarkdownHoverVerbosityLevel(e,n,i);o&&(this._renderedParts[t]={type:"hoverPart",participant:this._markdownHoverParticipant,hoverPart:o.hoverPart,hoverElement:o.hoverElement},this._context.onContentsChanged())}isColorPickerVisible(){var e;return((e=this._colorHoverParticipant)==null?void 0:e.isColorPickerVisible())??!1}_normalizedIndexToMarkdownHoverIndexRange(e,t){const i=this._renderedParts[t];if(!i||i.type!=="hoverPart"||!(i.participant===e))return;const o=this._renderedParts.findIndex(l=>l.type==="hoverPart"&&l.participant===e);if(o===-1)throw new en;return t-o}get domNode(){return this._fragment}get domNodeHasChildren(){return this._fragment.hasChildNodes()}get focusedHoverPartIndex(){return this._focusedHoverPartIndex}};e5._DECORATION_OPTIONS=Ot.register({description:"content-hover-highlight",className:"hoverHighlight"});let B7=e5;var ont=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Jde=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let L7=class extends de{constructor(e,t,i){super(),this._editor=e,this._instantiationService=t,this._keybindingService=i,this._currentResult=null,this._onContentsChanged=this._register(new re),this.onContentsChanged=this._onContentsChanged.event,this._contentHoverWidget=this._register(this._instantiationService.createInstance(Z7,this._editor)),this._participants=this._initializeHoverParticipants(),this._computer=new Mx(this._editor,this._participants),this._hoverOperation=this._register(new uZe(this._editor,this._computer)),this._registerListeners()}_initializeHoverParticipants(){const e=[];for(const t of aN.getAll()){const i=this._instantiationService.createInstance(t,this._editor);e.push(i)}return e.sort((t,i)=>t.hoverOrdinal-i.hoverOrdinal),this._register(this._contentHoverWidget.onDidResize(()=>{this._participants.forEach(t=>{var i;return(i=t.handleResize)==null?void 0:i.call(t)})})),e}_registerListeners(){this._register(this._hoverOperation.onResult(t=>{if(!this._computer.anchor)return;const i=t.hasLoadingMessage?this._addLoadingMessage(t.value):t.value;this._withResult(new mZe(this._computer.anchor,i,t.isComplete))}));const e=this._contentHoverWidget.getDomNode();this._register(Ms(e,"keydown",t=>{t.equals(9)&&this.hide()})),this._register(Ms(e,"mouseleave",t=>{this._onMouseLeave(t)})),this._register(Ds.onDidChange(()=>{this._contentHoverWidget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)}))}_startShowingOrUpdateHover(e,t,i,n,o){if(!(this._contentHoverWidget.position&&this._currentResult))return e?(this._startHoverOperationIfNecessary(e,t,i,n,!1),!0):!1;const r=this._editor.getOption(60).sticky,a=o&&this._contentHoverWidget.isMouseGettingCloser(o.event.posx,o.event.posy);return r&&a?(e&&this._startHoverOperationIfNecessary(e,t,i,n,!0),!0):e?this._currentResult.anchor.equals(e)?!0:e.canAdoptVisibleHover(this._currentResult.anchor,this._contentHoverWidget.position)?(this._setCurrentResult(this._currentResult.filter(e)),this._startHoverOperationIfNecessary(e,t,i,n,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(e,t,i,n,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(e,t,i,n,o){this._computer.anchor&&this._computer.anchor.equals(e)||(this._hoverOperation.cancel(),this._computer.anchor=e,this._computer.shouldFocus=n,this._computer.source=i,this._computer.insistOnKeepingHoverVisible=o,this._hoverOperation.start(t))}_setCurrentResult(e){let t=e;if(this._currentResult===t)return;t&&t.hoverParts.length===0&&(t=null),this._currentResult=t,this._currentResult?this._showHover(this._currentResult):this._hideHover()}_addLoadingMessage(e){if(!this._computer.anchor)return e;for(const t of this._participants){if(!t.createLoadingMessage)continue;const i=t.createLoadingMessage(this._computer.anchor);if(i)return e.slice(0).concat([i])}return e}_withResult(e){if(this._contentHoverWidget.position&&this._currentResult&&this._currentResult.isComplete||this._setCurrentResult(e),!e.isComplete)return;const n=e.hoverParts.length===0,o=this._computer.insistOnKeepingHoverVisible;n&&o||this._setCurrentResult(e)}_showHover(e){const t=this._getHoverContext();this._renderedContentHover=new Aie(this._editor,e,this._participants,this._computer,t,this._keybindingService),this._renderedContentHover.domNodeHasChildren?this._contentHoverWidget.show(this._renderedContentHover):this._renderedContentHover.dispose()}_hideHover(){this._contentHoverWidget.hide()}_getHoverContext(){return{hide:()=>{this.hide()},onContentsChanged:()=>{this._onContentsChanged.fire(),this._contentHoverWidget.onContentsChanged()},setMinimumDimensions:n=>{this._contentHoverWidget.setMinimumDimensions(n)}}}showsOrWillShow(e){if(this._contentHoverWidget.isResizing)return!0;const i=this._findHoverAnchorCandidates(e);if(!(i.length>0))return this._startShowingOrUpdateHover(null,0,0,!1,e);const o=i[0];return this._startShowingOrUpdateHover(o,0,0,!1,e)}_findHoverAnchorCandidates(e){const t=[];for(const n of this._participants){if(!n.suggestHoverAnchor)continue;const o=n.suggestHoverAnchor(e);o&&t.push(o)}const i=e.target;switch(i.type){case 6:{t.push(new g_(0,i.range,e.event.posx,e.event.posy));break}case 7:{const n=this._editor.getOption(50).typicalHalfwidthCharacterWidth/2;if(!(!i.detail.isAfterLines&&typeof i.detail.horizontalDistanceToText=="number"&&i.detail.horizontalDistanceToText<n))break;t.push(new g_(0,i.range,e.event.posx,e.event.posy));break}}return t.sort((n,o)=>o.priority-n.priority),t}_onMouseLeave(e){const t=this._editor.getDomNode();(!t||!gz(t,e.x,e.y))&&this.hide()}startShowingAtRange(e,t,i,n){this._startShowingOrUpdateHover(new g_(0,e,void 0,void 0),t,i,n,null)}async updateHoverVerbosityLevel(e,t,i){var n;(n=this._renderedContentHover)==null||n.updateHoverVerbosityLevel(e,t,i)}focusedHoverPartIndex(){var e;return((e=this._renderedContentHover)==null?void 0:e.focusedHoverPartIndex)??-1}containsNode(e){return e?this._contentHoverWidget.getDomNode().contains(e):!1}focus(){this._contentHoverWidget.focus()}scrollUp(){this._contentHoverWidget.scrollUp()}scrollDown(){this._contentHoverWidget.scrollDown()}scrollLeft(){this._contentHoverWidget.scrollLeft()}scrollRight(){this._contentHoverWidget.scrollRight()}pageUp(){this._contentHoverWidget.pageUp()}pageDown(){this._contentHoverWidget.pageDown()}goToTop(){this._contentHoverWidget.goToTop()}goToBottom(){this._contentHoverWidget.goToBottom()}hide(){this._computer.anchor=null,this._hoverOperation.cancel(),this._setCurrentResult(null)}getDomNode(){return this._contentHoverWidget.getDomNode()}get isColorPickerVisible(){var e;return((e=this._renderedContentHover)==null?void 0:e.isColorPickerVisible())??!1}get isVisibleFromKeyboard(){return this._contentHoverWidget.isVisibleFromKeyboard}get isVisible(){return this._contentHoverWidget.isVisible}get isFocused(){return this._contentHoverWidget.isFocused}get isResizing(){return this._contentHoverWidget.isResizing}get widget(){return this._contentHoverWidget}};L7=ont([Jde(1,bt),Jde(2,dn)],L7);var lnt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Xde=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},k7;const rnt=!1;var lQ;let Qr=(lQ=class extends de{constructor(e,t,i){super(),this._editor=e,this._instantiationService=t,this._keybindingService=i,this._onHoverContentsChanged=this._register(new re),this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new Ze,this._hoverState={mouseDown:!1,activatedByDecoratorClick:!1},this._reactToEditorMouseMoveRunner=this._register(new Rn(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(60)&&(this._unhookListeners(),this._hookListeners())}))}static get(e){return e.getContribution(k7.ID)}_hookListeners(){const e=this._editor.getOption(60);this._hoverSettings={enabled:e.enabled,sticky:e.sticky,hidingDelay:e.hidingDelay},e.enabled?(this._listenersStore.add(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))):(this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))),this._listenersStore.add(this._editor.onMouseLeave(t=>this._onEditorMouseLeave(t))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this._hideWidgets()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(t=>this._onEditorScrollChanged(t)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){this._hoverState.mouseDown=!0,!this._shouldNotHideCurrentHoverWidget(e)&&this._hideWidgets()}_shouldNotHideCurrentHoverWidget(e){return this._isMouseOnContentHoverWidget(e)||this._isContentWidgetResizing()}_isMouseOnContentHoverWidget(e){var i;const t=(i=this._contentWidget)==null?void 0:i.getDomNode();return t?gz(t,e.event.posx,e.event.posy):!1}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(e){this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._shouldNotHideCurrentHoverWidget(e))||this._hideWidgets()}_shouldNotRecomputeCurrentHoverWidget(e){const t=this._hoverSettings.sticky,i=(l,r)=>{const a=this._isMouseOnContentHoverWidget(l);return r&&a},n=l=>{var d;const r=this._isMouseOnContentHoverWidget(l),a=((d=this._contentWidget)==null?void 0:d.isColorPickerVisible)??!1;return r&&a},o=(l,r)=>{var a,d,c,h;return(r&&((d=this._contentWidget)==null?void 0:d.containsNode((a=l.event.browserEvent.view)==null?void 0:a.document.activeElement))&&!((h=(c=l.event.browserEvent.view)==null?void 0:c.getSelection())!=null&&h.isCollapsed))??!1};return i(e,t)||n(e)||o(e,t)}_onEditorMouseMove(e){var r,a,d,c;if(this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._mouseMoveEvent=e,(r=this._contentWidget)!=null&&r.isFocused||(a=this._contentWidget)!=null&&a.isResizing))return;const t=this._hoverSettings.sticky;if(t&&((d=this._contentWidget)!=null&&d.isVisibleFromKeyboard))return;if(this._shouldNotRecomputeCurrentHoverWidget(e)){this._reactToEditorMouseMoveRunner.cancel();return}const n=this._hoverSettings.hidingDelay;if(((c=this._contentWidget)==null?void 0:c.isVisible)&&t&&n>0){this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(n);return}this._reactToEditorMouseMove(e)}_reactToEditorMouseMove(e){var a;if(!e)return;const i=(a=e.target.element)==null?void 0:a.classList.contains("colorpicker-color-decoration"),n=this._editor.getOption(149),o=this._hoverSettings.enabled,l=this._hoverState.activatedByDecoratorClick;if(i&&(n==="click"&&!l||n==="hover"&&!o&&!rnt||n==="clickAndHover"&&!o&&!l)||!i&&!o&&!l){this._hideWidgets();return}this._tryShowHoverWidget(e)||this._hideWidgets()}_tryShowHoverWidget(e){return this._getOrCreateContentWidget().showsOrWillShow(e)}_onKeyDown(e){var n;if(!this._editor.hasModel())return;const t=this._keybindingService.softDispatch(e,this._editor.getDomNode()),i=t.kind===1||t.kind===2&&(t.commandId===aZe||t.commandId===mz||t.commandId===pz)&&((n=this._contentWidget)==null?void 0:n.isVisible);e.keyCode===5||e.keyCode===6||e.keyCode===57||e.keyCode===4||i||this._hideWidgets()}_hideWidgets(){var e,t;this._hoverState.mouseDown&&((e=this._contentWidget)!=null&&e.isColorPickerVisible)||VV.dropDownVisible||(this._hoverState.activatedByDecoratorClick=!1,(t=this._contentWidget)==null||t.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(L7,this._editor),this._listenersStore.add(this._contentWidget.onContentsChanged(()=>this._onHoverContentsChanged.fire()))),this._contentWidget}showContentHover(e,t,i,n,o=!1){this._hoverState.activatedByDecoratorClick=o,this._getOrCreateContentWidget().startShowingAtRange(e,t,i,n)}_isContentWidgetResizing(){var e;return((e=this._contentWidget)==null?void 0:e.widget.isResizing)||!1}focusedHoverPartIndex(){return this._getOrCreateContentWidget().focusedHoverPartIndex()}updateHoverVerbosityLevel(e,t,i){this._getOrCreateContentWidget().updateHoverVerbosityLevel(e,t,i)}focus(){var e;(e=this._contentWidget)==null||e.focus()}scrollUp(){var e;(e=this._contentWidget)==null||e.scrollUp()}scrollDown(){var e;(e=this._contentWidget)==null||e.scrollDown()}scrollLeft(){var e;(e=this._contentWidget)==null||e.scrollLeft()}scrollRight(){var e;(e=this._contentWidget)==null||e.scrollRight()}pageUp(){var e;(e=this._contentWidget)==null||e.pageUp()}pageDown(){var e;(e=this._contentWidget)==null||e.pageDown()}goToTop(){var e;(e=this._contentWidget)==null||e.goToTop()}goToBottom(){var e;(e=this._contentWidget)==null||e.goToBottom()}get isColorPickerVisible(){var e;return(e=this._contentWidget)==null?void 0:e.isColorPickerVisible}get isHoverVisible(){var e;return(e=this._contentWidget)==null?void 0:e.isVisible}dispose(){var e;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(e=this._contentWidget)==null||e.dispose()}},k7=lQ,lQ.ID="editor.contrib.contentHover",lQ);Qr=k7=lnt([Xde(1,bt),Xde(2,dn)],Qr);const mne=class mne extends de{constructor(e){super(),this._editor=e,this._register(e.onMouseDown(t=>this.onMouseDown(t)))}dispose(){super.dispose()}onMouseDown(e){const t=this._editor.getOption(149);if(t!=="click"&&t!=="clickAndHover")return;const i=e.target;if(i.type!==6||!i.detail.injectedText||i.detail.injectedText.options.attachedData!==tZe||!i.range)return;const n=this._editor.getContribution(Qr.ID);if(n&&!n.isColorPickerVisible){const o=new v(i.range.startLineNumber,i.range.startColumn+1,i.range.endLineNumber,i.range.endColumn+1);n.showContentHover(o,1,0,!1,!0)}}};mne.ID="editor.contrib.colorContribution";let vx=mne;Gi(vx.ID,vx,2);aN.register(aT);var MZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},SS=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},I7,D7,rQ;let JA=(rQ=class extends de{constructor(e,t,i){super(),this._editor=e,this._instantiationService=i,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=H.standaloneColorPickerVisible.bindTo(t),this._standaloneColorPickerFocused=H.standaloneColorPickerFocused.bindTo(t)}showOrFocus(){var e;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(e=this._standaloneColorPickerWidget)==null||e.focus():this._standaloneColorPickerWidget=this._instantiationService.createInstance(G7,this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused))}hide(){var e;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(e=this._standaloneColorPickerWidget)==null||e.hide(),this._editor.focus()}insertColor(){var e;(e=this._standaloneColorPickerWidget)==null||e.updateEditor(),this.hide()}static get(e){return e.getContribution(I7.ID)}},I7=rQ,rQ.ID="editor.contrib.standaloneColorPickerController",rQ);JA=I7=MZe([SS(1,wt),SS(2,bt)],JA);Gi(JA.ID,JA,1);const Yde=8,ant=22;var aQ;let G7=(aQ=class extends de{constructor(e,t,i,n,o,l,r){var h;super(),this._editor=e,this._standaloneColorPickerVisible=t,this._standaloneColorPickerFocused=i,this._keybindingService=o,this._languageFeaturesService=l,this._editorWorkerService=r,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new re),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=n.createInstance(dT,this._editor),this._position=(h=this._editor._getViewModel())==null?void 0:h.getPrimaryCursorState().modelState.position;const a=this._editor.getSelection(),d=a?{startLineNumber:a.startLineNumber,startColumn:a.startColumn,endLineNumber:a.endLineNumber,endColumn:a.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},c=this._register(Hu(this._body));this._register(c.onDidBlur(u=>{this.hide()})),this._register(c.onDidFocus(u=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(u=>{var p;const m=(p=u.target.element)==null?void 0:p.classList;m&&m.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(u=>{this._render(u.value,u.foundInEditor)})),this._start(d),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return D7.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const e=this._editor.getOption(60).above;return{position:this._position,secondaryPosition:this._position,preference:e?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}async _start(e){const t=await this._computeAsync(e);t&&this._onResult.fire(new dnt(t.result,t.foundInEditor))}async _computeAsync(e){if(!this._editor.hasModel())return null;const t={range:e,color:{red:0,green:0,blue:0,alpha:1}},i=await this._standaloneColorPickerParticipant.createColorHover(t,new rT(this._editorWorkerService),this._languageFeaturesService.colorProvider);return i?{result:i.colorHover,foundInEditor:i.foundInEditor}:null}_render(e,t){const i=document.createDocumentFragment(),n=this._register(new Tx(this._keybindingService)),o={fragment:i,statusBar:n,onContentsChanged:()=>{},hide:()=>this.hide()};this._colorHover=e;const l=this._standaloneColorPickerParticipant.renderHoverParts(o,[e]);if(!l)return;this._register(l.disposables);const r=l.colorPicker;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(i),r.layout();const a=r.body,d=a.saturationBox.domNode.clientWidth,c=a.domNode.clientWidth-d-ant-Yde,h=r.body.enterButton;h==null||h.onClicked(()=>{this.updateEditor(),this.hide()});const u=r.header,m=u.pickedColorNode;m.style.width=d+Yde+"px";const p=u.originalColorNode;p.style.width=c+"px";const g=r.header.closeButton;g==null||g.onClicked(()=>{this.hide()}),t&&(h&&(h.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(e.range)),this._editor.layoutContentWidget(this)}},D7=aQ,aQ.ID="editor.contrib.standaloneColorPickerWidget",aQ);G7=D7=MZe([SS(3,bt),SS(4,dn),SS(5,lt),SS(6,_a)],G7);class dnt{constructor(e,t){this.value=e,this.foundInEditor=t}}class cnt extends lm{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{...kt("showOrFocusStandaloneColorPicker","Show or Focus Standalone Color Picker"),mnemonicTitle:U({key:"mishowOrFocusStandaloneColorPicker",comment:["&& denotes a mnemonic"]},"&&Show or Focus Standalone Color Picker")},precondition:void 0,menu:[{id:at.CommandPalette}],metadata:{description:kt("showOrFocusStandaloneColorPickerDescription","Show or focus a standalone color picker which uses the default color provider. It displays hex/rgb/hsl colors.")}})}runEditorCommand(e,t){var i;(i=JA.get(t))==null||i.showOrFocus()}}class hnt extends et{constructor(){super({id:"editor.action.hideColorPicker",label:U({key:"hideColorPicker",comment:["Action that hides the color picker"]},"Hide the Color Picker"),alias:"Hide the Color Picker",precondition:H.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100},metadata:{description:kt("hideColorPickerDescription","Hide the standalone color picker.")}})}run(e,t){var i;(i=JA.get(t))==null||i.hide()}}class unt extends et{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:U({key:"insertColorWithStandaloneColorPicker",comment:["Action that inserts color with standalone color picker"]},"Insert Color with Standalone Color Picker"),alias:"Insert Color with Standalone Color Picker",precondition:H.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100},metadata:{description:kt("insertColorWithStandaloneColorPickerDescription","Insert hex/rgb/hsl colors with the focused standalone color picker.")}})}run(e,t){var i;(i=JA.get(t))==null||i.insertColor()}}Me(hnt);Me(unt);Xn(cnt);class fU{constructor(e,t,i){this.languageConfigurationService=i,this._selection=e,this._insertSpace=t,this._usedEndToken=null}static _haystackHasNeedleAtOffset(e,t,i){if(i<0)return!1;const n=t.length,o=e.length;if(i+n>o)return!1;for(let l=0;l<n;l++){const r=e.charCodeAt(i+l),a=t.charCodeAt(l);if(r!==a&&!(r>=65&&r<=90&&r+32===a)&&!(a>=65&&a<=90&&a+32===r))return!1}return!0}_createOperationsForBlockComment(e,t,i,n,o,l){const r=e.startLineNumber,a=e.startColumn,d=e.endLineNumber,c=e.endColumn,h=o.getLineContent(r),u=o.getLineContent(d);let m=h.lastIndexOf(t,a-1+t.length),p=u.indexOf(i,c-1-i.length);if(m!==-1&&p!==-1)if(r===d)h.substring(m+t.length,p).indexOf(i)>=0&&(m=-1,p=-1);else{const b=h.substring(m+t.length),f=u.substring(0,p);(b.indexOf(i)>=0||f.indexOf(i)>=0)&&(m=-1,p=-1)}let g;m!==-1&&p!==-1?(n&&m+t.length<h.length&&h.charCodeAt(m+t.length)===32&&(t=t+" "),n&&p>0&&u.charCodeAt(p-1)===32&&(i=" "+i,p-=1),g=fU._createRemoveBlockCommentOperations(new v(r,m+t.length+1,d,p+1),t,i)):(g=fU._createAddBlockCommentOperations(e,t,i,this._insertSpace),this._usedEndToken=g.length===1?i:null);for(const b of g)l.addTrackedEditOperation(b.range,b.text)}static _createRemoveBlockCommentOperations(e,t,i){const n=[];return v.isEmpty(e)?n.push(Rs.delete(new v(e.startLineNumber,e.startColumn-t.length,e.endLineNumber,e.endColumn+i.length))):(n.push(Rs.delete(new v(e.startLineNumber,e.startColumn-t.length,e.startLineNumber,e.startColumn))),n.push(Rs.delete(new v(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn+i.length)))),n}static _createAddBlockCommentOperations(e,t,i,n){const o=[];return v.isEmpty(e)?o.push(Rs.replace(new v(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),t+" "+i)):(o.push(Rs.insert(new oe(e.startLineNumber,e.startColumn),t+(n?" ":""))),o.push(Rs.insert(new oe(e.endLineNumber,e.endColumn),(n?" ":"")+i))),o}getEditOperations(e,t){const i=this._selection.startLineNumber,n=this._selection.startColumn;e.tokenization.tokenizeIfCheap(i);const o=e.getLanguageIdAtPosition(i,n),l=this.languageConfigurationService.getLanguageConfiguration(o).comments;!l||!l.blockCommentStartToken||!l.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,l.blockCommentStartToken,l.blockCommentEndToken,this._insertSpace,e,t)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(i.length===2){const n=i[0],o=i[1];return new dt(n.range.endLineNumber,n.range.endColumn,o.range.startLineNumber,o.range.startColumn)}else{const n=i[0].range,o=this._usedEndToken?-this._usedEndToken.length-1:0;return new dt(n.endLineNumber,n.endColumn+o,n.endLineNumber,n.endColumn+o)}}}class Fg{constructor(e,t,i,n,o,l,r){this.languageConfigurationService=e,this._selection=t,this._indentSize=i,this._type=n,this._insertSpace=o,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=l,this._ignoreFirstLine=r||!1}static _gatherPreflightCommentStrings(e,t,i,n){e.tokenization.tokenizeIfCheap(t);const o=e.getLanguageIdAtPosition(t,1),l=n.getLanguageConfiguration(o).comments,r=l?l.lineCommentToken:null;if(!r)return null;const a=[];for(let d=0,c=i-t+1;d<c;d++)a[d]={ignore:!1,commentStr:r,commentStrOffset:0,commentStrLength:r.length};return a}static _analyzeLines(e,t,i,n,o,l,r,a){let d=!0,c;e===0?c=!0:e===1?c=!1:c=!0;for(let h=0,u=n.length;h<u;h++){const m=n[h],p=o+h;if(p===o&&r){m.ignore=!0;continue}const g=i.getLineContent(p),b=Wr(g);if(b===-1){m.ignore=l,m.commentStrOffset=g.length;continue}if(d=!1,m.ignore=!1,m.commentStrOffset=b,c&&!fU._haystackHasNeedleAtOffset(g,m.commentStr,b)&&(e===0?c=!1:e===1||(m.ignore=!0)),c&&t){const f=b+m.commentStrLength;f<g.length&&g.charCodeAt(f)===32&&(m.commentStrLength+=1)}}if(e===0&&d){c=!1;for(let h=0,u=n.length;h<u;h++)n[h].ignore=!1}return{supported:!0,shouldRemoveComments:c,lines:n}}static _gatherPreflightData(e,t,i,n,o,l,r,a){const d=Fg._gatherPreflightCommentStrings(i,n,o,a);return d===null?{supported:!1}:Fg._analyzeLines(e,t,i,d,n,l,r,a)}_executeLineComments(e,t,i,n){let o;i.shouldRemoveComments?o=Fg._createRemoveLineCommentsOperations(i.lines,n.startLineNumber):(Fg._normalizeInsertionPoint(e,i.lines,n.startLineNumber,this._indentSize),o=this._createAddLineCommentsOperations(i.lines,n.startLineNumber));const l=new oe(n.positionLineNumber,n.positionColumn);for(let r=0,a=o.length;r<a;r++)t.addEditOperation(o[r].range,o[r].text),v.isEmpty(o[r].range)&&v.getStartPosition(o[r].range).equals(l)&&e.getLineContent(l.lineNumber).length+1===l.column&&(this._deltaColumn=(o[r].text||"").length);this._selectionId=t.trackSelection(n)}_attemptRemoveBlockComment(e,t,i,n){let o=t.startLineNumber,l=t.endLineNumber;const r=n.length+Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber),t.startColumn);let a=e.getLineContent(o).lastIndexOf(i,r-1),d=e.getLineContent(l).indexOf(n,t.endColumn-1-i.length);return a!==-1&&d===-1&&(d=e.getLineContent(o).indexOf(n,a+i.length),l=o),a===-1&&d!==-1&&(a=e.getLineContent(l).lastIndexOf(i,d),o=l),t.isEmpty()&&(a===-1||d===-1)&&(a=e.getLineContent(o).indexOf(i),a!==-1&&(d=e.getLineContent(o).indexOf(n,a+i.length))),a!==-1&&e.getLineContent(o).charCodeAt(a+i.length)===32&&(i+=" "),d!==-1&&e.getLineContent(l).charCodeAt(d-1)===32&&(n=" "+n,d-=1),a!==-1&&d!==-1?fU._createRemoveBlockCommentOperations(new v(o,a+i.length+1,l,d+1),i,n):null}_executeBlockComment(e,t,i){e.tokenization.tokenizeIfCheap(i.startLineNumber);const n=e.getLanguageIdAtPosition(i.startLineNumber,1),o=this.languageConfigurationService.getLanguageConfiguration(n).comments;if(!o||!o.blockCommentStartToken||!o.blockCommentEndToken)return;const l=o.blockCommentStartToken,r=o.blockCommentEndToken;let a=this._attemptRemoveBlockComment(e,i,l,r);if(!a){if(i.isEmpty()){const d=e.getLineContent(i.startLineNumber);let c=Wr(d);c===-1&&(c=d.length),a=fU._createAddBlockCommentOperations(new v(i.startLineNumber,c+1,i.startLineNumber,d.length+1),l,r,this._insertSpace)}else a=fU._createAddBlockCommentOperations(new v(i.startLineNumber,e.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),l,r,this._insertSpace);a.length===1&&(this._deltaColumn=l.length+1)}this._selectionId=t.trackSelection(i);for(const d of a)t.addEditOperation(d.range,d.text)}getEditOperations(e,t){let i=this._selection;if(this._moveEndPositionDown=!1,i.startLineNumber===i.endLineNumber&&this._ignoreFirstLine){t.addEditOperation(new v(i.startLineNumber,e.getLineMaxColumn(i.startLineNumber),i.startLineNumber+1,1),i.startLineNumber===e.getLineCount()?"":`
- `),this._selectionId=t.trackSelection(i);return}i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const n=Fg._gatherPreflightData(this._type,this._insertSpace,e,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines,this._ignoreFirstLine,this.languageConfigurationService);return n.supported?this._executeLineComments(e,t,n,i):this._executeBlockComment(e,t,i)}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),new dt(i.selectionStartLineNumber,i.selectionStartColumn+this._deltaColumn,i.positionLineNumber,i.positionColumn+this._deltaColumn)}static _createRemoveLineCommentsOperations(e,t){const i=[];for(let n=0,o=e.length;n<o;n++){const l=e[n];l.ignore||i.push(Rs.delete(new v(t+n,l.commentStrOffset+1,t+n,l.commentStrOffset+l.commentStrLength+1)))}return i}_createAddLineCommentsOperations(e,t){const i=[],n=this._insertSpace?" ":"";for(let o=0,l=e.length;o<l;o++){const r=e[o];r.ignore||i.push(Rs.insert(new oe(t+o,r.commentStrOffset+1),r.commentStr+n))}return i}static nextVisibleColumn(e,t,i,n){return i?e+(t-e%t):e+n}static _normalizeInsertionPoint(e,t,i,n){let o=1073741824,l,r;for(let a=0,d=t.length;a<d;a++){if(t[a].ignore)continue;const c=e.getLineContent(i+a);let h=0;for(let u=0,m=t[a].commentStrOffset;h<o&&u<m;u++)h=Fg.nextVisibleColumn(h,n,c.charCodeAt(u)===9,1);h<o&&(o=h)}o=Math.floor(o/n)*n;for(let a=0,d=t.length;a<d;a++){if(t[a].ignore)continue;const c=e.getLineContent(i+a);let h=0;for(l=0,r=t[a].commentStrOffset;h<o&&l<r;l++)h=Fg.nextVisibleColumn(h,n,c.charCodeAt(l)===9,1);h>o?t[a].commentStrOffset=l-1:t[a].commentStrOffset=l}}}class Nie extends et{constructor(e,t){super(t),this._type=e}run(e,t){const i=e.get(Qs);if(!t.hasModel())return;const n=t.getModel(),o=[],l=n.getOptions(),r=t.getOption(23),a=t.getSelections().map((c,h)=>({selection:c,index:h,ignoreFirstLine:!1}));a.sort((c,h)=>v.compareRangesUsingStarts(c.selection,h.selection));let d=a[0];for(let c=1;c<a.length;c++){const h=a[c];d.selection.endLineNumber===h.selection.startLineNumber&&(d.index<h.index?h.ignoreFirstLine=!0:(d.ignoreFirstLine=!0,d=h))}for(const c of a)o.push(new Fg(i,c.selection,l.indentSize,this._type,r.insertSpace,r.ignoreEmptyLines,c.ignoreFirstLine));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class mnt extends Nie{constructor(){super(0,{id:"editor.action.commentLine",label:U("comment.line","Toggle Line Comment"),alias:"Toggle Line Comment",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:2138,weight:100},menuOpts:{menuId:at.MenubarEditMenu,group:"5_insert",title:U({key:"miToggleLineComment",comment:["&& denotes a mnemonic"]},"&&Toggle Line Comment"),order:1}})}}class pnt extends Nie{constructor(){super(1,{id:"editor.action.addCommentLine",label:U("comment.line.add","Add Line Comment"),alias:"Add Line Comment",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2081),weight:100}})}}class gnt extends Nie{constructor(){super(2,{id:"editor.action.removeCommentLine",label:U("comment.line.remove","Remove Line Comment"),alias:"Remove Line Comment",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2099),weight:100}})}}class bnt extends et{constructor(){super({id:"editor.action.blockComment",label:U("comment.block","Toggle Block Comment"),alias:"Toggle Block Comment",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:at.MenubarEditMenu,group:"5_insert",title:U({key:"miToggleBlockComment",comment:["&& denotes a mnemonic"]},"Toggle &&Block Comment"),order:2}})}run(e,t){const i=e.get(Qs);if(!t.hasModel())return;const n=t.getOption(23),o=[],l=t.getSelections();for(const r of l)o.push(new fU(r,n.insertSpace,i));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}Me(mnt);Me(pnt);Me(gnt);Me(bnt);var Unt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Jf=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},E7,dQ;let yV=(dQ=class{static get(e){return e.getContribution(E7.ID)}constructor(e,t,i,n,o,l,r,a){this._contextMenuService=t,this._contextViewService=i,this._contextKeyService=n,this._keybindingService=o,this._menuService=l,this._configurationService=r,this._workspaceContextService=a,this._toDispose=new Ze,this._contextMenuIsBeingShownCount=0,this._editor=e,this._toDispose.add(this._editor.onContextMenu(d=>this._onContextMenu(d))),this._toDispose.add(this._editor.onMouseWheel(d=>{if(this._contextMenuIsBeingShownCount>0){const c=this._contextViewService.getContextViewElement(),h=d.srcElement;h.shadowRoot&&NA(c)===h.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(d=>{this._editor.getOption(24)&&d.keyCode===58&&(d.preventDefault(),d.stopPropagation(),this.showContextMenu())}))}_onContextMenu(e){if(!this._editor.hasModel())return;if(!this._editor.getOption(24)){this._editor.focus(),e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position);return}if(e.target.type===12||e.target.type===6&&e.target.detail.injectedText)return;if(e.event.preventDefault(),e.event.stopPropagation(),e.target.type===11)return this._showScrollbarContextMenu(e.event);if(e.target.type!==6&&e.target.type!==7&&e.target.type!==1)return;if(this._editor.focus(),e.target.position){let i=!1;for(const n of this._editor.getSelections())if(n.containsPosition(e.target.position)){i=!0;break}i||this._editor.setPosition(e.target.position)}let t=null;e.target.type!==1&&(t=e.event),this.showContextMenu(t)}showContextMenu(e){if(!this._editor.getOption(24)||!this._editor.hasModel())return;const t=this._getMenuActions(this._editor.getModel(),this._editor.contextMenuId);t.length>0&&this._doShowContextMenu(t,e)}_getMenuActions(e,t){const i=[],n=this._menuService.getMenuActions(t,this._contextKeyService,{arg:e.uri});for(const o of n){const[,l]=o;let r=0;for(const a of l)if(a instanceof bW){const d=this._getMenuActions(e,a.item.submenu);d.length>0&&(i.push(new eV(a.id,a.label,d)),r++)}else i.push(a),r++;r&&i.push(new zo)}return i.length&&i.pop(),i}_doShowContextMenu(e,t=null){if(!this._editor.hasModel())return;const i=this._editor.getOption(60);this._editor.updateOptions({hover:{enabled:!1}});let n=t;if(!n){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const l=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),r=_s(this._editor.getDomNode()),a=r.left+l.left,d=r.top+l.top+l.height;n={x:a,y:d}}const o=this._editor.getOption(128)&&!ju;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:o?this._editor.getOverflowWidgetsDomNode()??this._editor.getDomNode():void 0,getAnchor:()=>n,getActions:()=>e,getActionViewItem:l=>{const r=this._keybindingFor(l);if(r)return new pV(l,l,{label:!0,keybinding:r.getLabel(),isMenu:!0});const a=l;return typeof a.getActionViewItem=="function"?a.getActionViewItem():new pV(l,l,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:l=>this._keybindingFor(l),onHide:l=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:i})}})}_showScrollbarContextMenu(e){if(!this._editor.hasModel()||f9e(this._workspaceContextService.getWorkspace()))return;const t=this._editor.getOption(73);let i=0;const n=d=>({id:`menu-action-${++i}`,label:d.label,tooltip:"",class:void 0,enabled:typeof d.enabled>"u"?!0:d.enabled,checked:d.checked,run:d.run}),o=(d,c)=>new eV(`menu-action-${++i}`,d,c,void 0),l=(d,c,h,u,m)=>{if(!c)return n({label:d,enabled:c,run:()=>{}});const p=b=>()=>{this._configurationService.updateValue(h,b)},g=[];for(const b of m)g.push(n({label:b.label,checked:u===b.value,run:p(b.value)}));return o(d,g)},r=[];r.push(n({label:U("context.minimap.minimap","Minimap"),checked:t.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!t.enabled)}})),r.push(new zo),r.push(n({label:U("context.minimap.renderCharacters","Render Characters"),enabled:t.enabled,checked:t.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!t.renderCharacters)}})),r.push(l(U("context.minimap.size","Vertical size"),t.enabled,"editor.minimap.size",t.size,[{label:U("context.minimap.size.proportional","Proportional"),value:"proportional"},{label:U("context.minimap.size.fill","Fill"),value:"fill"},{label:U("context.minimap.size.fit","Fit"),value:"fit"}])),r.push(l(U("context.minimap.slider","Slider"),t.enabled,"editor.minimap.showSlider",t.showSlider,[{label:U("context.minimap.slider.mouseover","Mouse Over"),value:"mouseover"},{label:U("context.minimap.slider.always","Always"),value:"always"}]));const a=this._editor.getOption(128)&&!ju;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:a?this._editor.getDomNode():void 0,getAnchor:()=>e,getActions:()=>r,onHide:d=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(e){return this._keybindingService.lookupKeybinding(e.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}},E7=dQ,dQ.ID="editor.contrib.contextmenu",dQ);yV=E7=Unt([Jf(1,Vd),Jf(2,L0),Jf(3,wt),Jf(4,dn),Jf(5,pc),Jf(6,li),Jf(7,yA)],yV);class fnt extends et{constructor(){super({id:"editor.action.showContextMenu",label:U("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:1092,weight:100}})}run(e,t){var i;(i=yV.get(t))==null||i.showContextMenu()}}Gi(yV.ID,yV,2);Me(fnt);class U_{constructor(e){this.selections=e}equals(e){const t=this.selections.length,i=e.selections.length;if(t!==i)return!1;for(let n=0;n<t;n++)if(!this.selections[n].equalsSelection(e.selections[n]))return!1;return!0}}class f_{constructor(e,t,i){this.cursorState=e,this.scrollTop=t,this.scrollLeft=i}}const t5=class t5 extends de{static get(e){return e.getContribution(t5.ID)}constructor(e){super(),this._editor=e,this._isCursorUndoRedo=!1,this._undoStack=[],this._redoStack=[],this._register(e.onDidChangeModel(t=>{this._undoStack=[],this._redoStack=[]})),this._register(e.onDidChangeModelContent(t=>{this._undoStack=[],this._redoStack=[]})),this._register(e.onDidChangeCursorSelection(t=>{if(this._isCursorUndoRedo||!t.oldSelections||t.oldModelVersionId!==t.modelVersionId)return;const i=new U_(t.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(i)||(this._undoStack.push(new f_(i,e.getScrollTop(),e.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new f_(new U_(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new f_(new U_(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(e){this._isCursorUndoRedo=!0,this._editor.setSelections(e.cursorState.selections),this._editor.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}),this._isCursorUndoRedo=!1}};t5.ID="editor.contrib.cursorUndoRedoController";let CV=t5;class Fnt extends et{constructor(){super({id:"cursorUndo",label:U("cursor.undo","Cursor Undo"),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:2099,weight:100}})}run(e,t,i){var n;(n=CV.get(t))==null||n.cursorUndo()}}class Znt extends et{constructor(){super({id:"cursorRedo",label:U("cursor.redo","Cursor Redo"),alias:"Cursor Redo",precondition:void 0})}run(e,t,i){var n;(n=CV.get(t))==null||n.cursorRedo()}}Gi(CV.ID,CV,0);Me(Fnt);Me(Znt);class Ant{constructor(e,t,i){this.selection=e,this.targetPosition=t,this.copy=i,this.targetSelection=null}getEditOperations(e,t){const i=e.getValueInRange(this.selection);if(this.copy||t.addEditOperation(this.selection,null),t.addEditOperation(new v(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),i),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new dt(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new dt(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber<this.selection.endLineNumber){this.targetSelection=new dt(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new dt(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column-this.selection.endColumn+this.selection.startColumn:this.targetPosition.column-this.selection.endColumn+this.selection.startColumn,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new dt(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn)}computeCursorState(e,t){return this.targetSelection}}function vN(s){return Fi?s.altKey:s.ctrlKey}const Gb=class Gb extends de{constructor(e){super(),this._editor=e,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._register(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._register(this._editor.onMouseDrag(t=>this._onEditorMouseDrag(t))),this._register(this._editor.onMouseDrop(t=>this._onEditorMouseDrop(t))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(t=>this.onEditorKeyDown(t))),this._register(this._editor.onKeyUp(t=>this.onEditorKeyUp(t))),this._register(this._editor.onDidBlurEditorWidget(()=>this.onEditorBlur())),this._register(this._editor.onDidBlurEditorText(()=>this.onEditorBlur())),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(e){!this._editor.getOption(35)||this._editor.getOption(22)||(vN(e)&&(this._modifierPressed=!0),this._mouseDown&&vN(e)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(e){!this._editor.getOption(35)||this._editor.getOption(22)||(vN(e)&&(this._modifierPressed=!1),this._mouseDown&&e.keyCode===Gb.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(e){this._mouseDown=!0}_onEditorMouseUp(e){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(e){const t=e.target;if(this._dragSelection===null){const n=(this._editor.getSelections()||[]).filter(o=>t.position&&o.containsPosition(t.position));if(n.length===1)this._dragSelection=n[0];else return}vN(e.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(e){if(e.target&&(this._hitContent(e.target)||this._hitMargin(e.target))&&e.target.position){const t=new oe(e.target.position.lineNumber,e.target.position.column);if(this._dragSelection===null){let i=null;if(e.event.shiftKey){const n=this._editor.getSelection();if(n){const{selectionStartLineNumber:o,selectionStartColumn:l}=n;i=[new dt(o,l,t.lineNumber,t.column)]}}else i=(this._editor.getSelections()||[]).map(n=>n.containsPosition(t)?new dt(t.lineNumber,t.column,t.lineNumber,t.column):n);this._editor.setSelections(i||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(vN(e.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(Gb.ID,new Ant(this._dragSelection,t,vN(e.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(e){this._dndDecorationIds.set([{range:new v(e.lineNumber,e.column,e.lineNumber,e.column),options:Gb._DECORATION_OPTIONS}]),this._editor.revealPosition(e,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(e){return e.type===6||e.type===7}_hitMargin(e){return e.type===2||e.type===3||e.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}};Gb.ID="editor.contrib.dragAndDrop",Gb.TRIGGER_KEY_VALUE=Fi?6:5,Gb._DECORATION_OPTIONS=Ot.register({description:"dnd-target",className:"dnd-target"});let xx=Gb;Gi(xx.ID,xx,2);Gi(y0.ID,y0,0);i1(e7);Oe(new class extends Io{constructor(){super({id:LFe,precondition:aie,kbOpts:{weight:100,primary:2137}})}runEditorCommand(s,e){var t;return(t=y0.get(e))==null?void 0:t.changePasteType()}});Oe(new class extends Io{constructor(){super({id:"editor.hidePasteWidget",precondition:aie,kbOpts:{weight:100,primary:9}})}runEditorCommand(s,e){var t;(t=y0.get(e))==null||t.clearWidgets()}});var cQ;Me((cQ=class extends et{constructor(){super({id:"editor.action.pasteAs",label:U("pasteAs","Paste As..."),alias:"Paste As...",precondition:H.writable,metadata:{description:"Paste as",args:[{name:"args",schema:cQ.argsSchema}]}})}run(e,t,i){var o;let n=typeof(i==null?void 0:i.kind)=="string"?i.kind:void 0;return!n&&i&&(n=typeof i.id=="string"?i.id:void 0),(o=y0.get(t))==null?void 0:o.pasteAs(n?new fs(n):void 0)}},cQ.argsSchema={type:"object",properties:{kind:{type:"string",description:U("pasteAs.kind","The kind of the paste edit to try applying. If not provided or there are multiple edits for this kind, the editor will show a picker.")}}},cQ));Me(class extends et{constructor(){super({id:"editor.action.pasteAsText",label:U("pasteAsText","Paste as Text"),alias:"Paste as Text",precondition:H.writable})}run(s,e){var t;return(t=y0.get(e))==null?void 0:t.pasteAs({providerId:kA.id})}});class Nnt{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(e){if(e&&this._dragOperations.has(e)){const t=this._dragOperations.get(e);return this._dragOperations.delete(e),t}}}class zde{constructor(e){this.identifier=e}}const TZe=Zi("treeViewsDndService");Ci(TZe,Nnt,1);var Rnt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Nk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},v7;const BZe="editor.experimental.dropIntoEditor.defaultProvider",LZe="editor.changeDropType",Rie=new Ke("dropWidgetVisible",!1,U("dropWidgetVisible","Whether the drop widget is showing"));var hQ;let wV=(hQ=class extends de{static get(e){return e.getContribution(v7.ID)}constructor(e,t,i,n,o){super(),this._configService=i,this._languageFeaturesService=n,this._treeViewsDragAndDropService=o,this.treeItemsTransfer=q4.getInstance(),this._dropProgressManager=this._register(t.createInstance(yx,"dropIntoEditor",e)),this._postDropWidgetManager=this._register(t.createInstance(wx,"dropIntoEditor",e,Rie,{id:LZe,label:U("postDropWidgetTitle","Show drop options...")})),this._register(e.onDropIntoEditor(l=>this.onDropIntoEditor(e,l.position,l.event)))}clearWidgets(){this._postDropWidgetManager.clear()}changeDropType(){this._postDropWidgetManager.tryShowSelector()}async onDropIntoEditor(e,t,i){var o;if(!i.dataTransfer||!e.hasModel())return;(o=this._currentOperation)==null||o.cancel(),e.focus(),e.setPosition(t);const n=Xo(async l=>{const r=new Ze,a=r.add(new of(e,1,void 0,l));try{const d=await this.extractDataTransferData(i);if(d.size===0||a.token.isCancellationRequested)return;const c=e.getModel();if(!c)return;const h=this._languageFeaturesService.documentDropEditProvider.ordered(c).filter(m=>m.dropMimeTypes?m.dropMimeTypes.some(p=>d.matches(p)):!0),u=r.add(await this.getDropEdits(h,c,t,d,a));if(a.token.isCancellationRequested)return;if(u.edits.length){const m=this.getInitialActiveEditIndex(c,u.edits),p=e.getOption(36).showDropSelector==="afterDrop";await this._postDropWidgetManager.applyEditAndShowIfNeeded([v.fromPositions(t)],{activeEditIndex:m,allEdits:u.edits},p,async g=>g,l)}}finally{r.dispose(),this._currentOperation===n&&(this._currentOperation=void 0)}});this._dropProgressManager.showWhile(t,U("dropIntoEditorProgress","Running drop handlers. Click to cancel"),n,{cancel:()=>n.cancel()}),this._currentOperation=n}async getDropEdits(e,t,i,n,o){const l=new Ze,r=await sB(Promise.all(e.map(async d=>{try{const c=await d.provideDocumentDropEdits(t,i,n,o.token);return c&&l.add(c),c==null?void 0:c.edits.map(h=>({...h,providerId:d.id}))}catch(c){console.error(c)}})),o.token),a=Oh(r??[]).flat();return{edits:TFe(a),dispose:()=>l.dispose()}}getInitialActiveEditIndex(e,t){const i=this._configService.getValue(BZe,{resource:e.uri});for(const[n,o]of Object.entries(i)){const l=new fs(o),r=t.findIndex(a=>l.value===a.providerId&&a.handledMimeType&&SFe(n,[a.handledMimeType]));if(r>=0)return r}return 0}async extractDataTransferData(e){if(!e.dataTransfer)return new RFe;const t=QFe(e.dataTransfer);if(this.treeItemsTransfer.hasData(zde.prototype)){const i=this.treeItemsTransfer.getData(zde.prototype);if(Array.isArray(i))for(const n of i){const o=await this._treeViewsDragAndDropService.removeDragOperationTransfer(n.identifier);if(o)for(const[l,r]of o)t.replace(l,r)}}return t}},v7=hQ,hQ.ID="editor.contrib.dropIntoEditorController",hQ);wV=v7=Rnt([Nk(1,bt),Nk(2,li),Nk(3,lt),Nk(4,TZe)],wV);Gi(wV.ID,wV,2);i1($4);Oe(new class extends Io{constructor(){super({id:LZe,precondition:Rie,kbOpts:{weight:100,primary:2137}})}runEditorCommand(s,e,t){var i;(i=wV.get(e))==null||i.changeDropType()}});Oe(new class extends Io{constructor(){super({id:"editor.hideDropWidget",precondition:Rie,kbOpts:{weight:100,primary:9}})}runEditorCommand(s,e,t){var i;(i=wV.get(e))==null||i.clearWidgets()}});Vs.as(nu.Configuration).registerConfiguration({...mB,properties:{[BZe]:{type:"object",scope:5,description:U("defaultProviderDescription","Configures the default drop provider to use for content of a given mime type."),default:{},additionalProperties:{type:"string"}}}});const pr=class pr{constructor(e){this._editor=e,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const e=this._findScopeDecorationIds.map(t=>this._editor.getModel().getDecorationRange(t)).filter(t=>!!t);if(e.length)return e}return null}getStartPosition(){return this._startPosition}setStartPosition(e){this._startPosition=e,this.setCurrentFindMatch(null)}_getDecorationIndex(e){const t=this._decorations.indexOf(e);return t>=0?t+1:1}getDecorationRangeAt(e){const t=e<this._decorations.length?this._decorations[e]:null;return t?this._editor.getModel().getDecorationRange(t):null}getCurrentMatchesPosition(e){const t=this._editor.getModel().getDecorationsInRange(e);for(const i of t){const n=i.options;if(n===pr._FIND_MATCH_DECORATION||n===pr._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(i.id)}return 0}setCurrentFindMatch(e){let t=null,i=0;if(e)for(let n=0,o=this._decorations.length;n<o;n++){const l=this._editor.getModel().getDecorationRange(this._decorations[n]);if(e.equalsRange(l)){t=this._decorations[n],i=n+1;break}}return(this._highlightedDecorationId!==null||t!==null)&&this._editor.changeDecorations(n=>{if(this._highlightedDecorationId!==null&&(n.changeDecorationOptions(this._highlightedDecorationId,pr._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),t!==null&&(this._highlightedDecorationId=t,n.changeDecorationOptions(this._highlightedDecorationId,pr._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(n.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),t!==null){let o=this._editor.getModel().getDecorationRange(t);if(o.startLineNumber!==o.endLineNumber&&o.endColumn===1){const l=o.endLineNumber-1,r=this._editor.getModel().getLineMaxColumn(l);o=new v(o.startLineNumber,o.startColumn,l,r)}this._rangeHighlightDecorationId=n.addDecoration(o,pr._RANGE_HIGHLIGHT_DECORATION)}}),i}set(e,t){this._editor.changeDecorations(i=>{let n=pr._FIND_MATCH_DECORATION;const o=[];if(e.length>1e3){n=pr._FIND_MATCH_NO_OVERVIEW_DECORATION;const r=this._editor.getModel().getLineCount(),d=this._editor.getLayoutInfo().height/r,c=Math.max(2,Math.ceil(3/d));let h=e[0].range.startLineNumber,u=e[0].range.endLineNumber;for(let m=1,p=e.length;m<p;m++){const g=e[m].range;u+c>=g.startLineNumber?g.endLineNumber>u&&(u=g.endLineNumber):(o.push({range:new v(h,1,u,1),options:pr._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),h=g.startLineNumber,u=g.endLineNumber)}o.push({range:new v(h,1,u,1),options:pr._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const l=new Array(e.length);for(let r=0,a=e.length;r<a;r++)l[r]={range:e[r].range,options:n};this._decorations=i.deltaDecorations(this._decorations,l),this._overviewRulerApproximateDecorations=i.deltaDecorations(this._overviewRulerApproximateDecorations,o),this._rangeHighlightDecorationId&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),this._findScopeDecorationIds.length&&(this._findScopeDecorationIds.forEach(r=>i.removeDecoration(r)),this._findScopeDecorationIds=[]),t!=null&&t.length&&(this._findScopeDecorationIds=t.map(r=>i.addDecoration(r,pr._FIND_SCOPE_DECORATION)))})}matchBeforePosition(e){if(this._decorations.length===0)return null;for(let t=this._decorations.length-1;t>=0;t--){const i=this._decorations[t],n=this._editor.getModel().getDecorationRange(i);if(!(!n||n.endLineNumber>e.lineNumber)){if(n.endLineNumber<e.lineNumber)return n;if(!(n.endColumn>e.column))return n}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(e){if(this._decorations.length===0)return null;for(let t=0,i=this._decorations.length;t<i;t++){const n=this._decorations[t],o=this._editor.getModel().getDecorationRange(n);if(!(!o||o.startLineNumber<e.lineNumber)){if(o.startLineNumber>e.lineNumber)return o;if(!(o.startColumn<e.column))return o}}return this._editor.getModel().getDecorationRange(this._decorations[0])}_allDecorations(){let e=[];return e=e.concat(this._decorations),e=e.concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length&&e.push(...this._findScopeDecorationIds),this._rangeHighlightDecorationId&&e.push(this._rangeHighlightDecorationId),e}};pr._CURRENT_FIND_MATCH_DECORATION=Ot.register({description:"current-find-match",stickiness:1,zIndex:13,className:"currentFindMatch",inlineClassName:"currentFindMatchInline",showIfCollapsed:!0,overviewRuler:{color:Gs(p3),position:lc.Center},minimap:{color:Gs(mP),position:1}}),pr._FIND_MATCH_DECORATION=Ot.register({description:"find-match",stickiness:1,zIndex:10,className:"findMatch",inlineClassName:"findMatchInline",showIfCollapsed:!0,overviewRuler:{color:Gs(p3),position:lc.Center},minimap:{color:Gs(mP),position:1}}),pr._FIND_MATCH_NO_OVERVIEW_DECORATION=Ot.register({description:"find-match-no-overview",stickiness:1,className:"findMatch",showIfCollapsed:!0}),pr._FIND_MATCH_ONLY_OVERVIEW_DECORATION=Ot.register({description:"find-match-only-overview",stickiness:1,overviewRuler:{color:Gs(p3),position:lc.Center}}),pr._RANGE_HIGHLIGHT_DECORATION=Ot.register({description:"find-range-highlight",stickiness:1,className:"rangeHighlight",isWholeLine:!0}),pr._FIND_SCOPE_DECORATION=Ot.register({description:"find-scope",className:"findScope",isWholeLine:!0});let x7=pr;class Snt{constructor(e,t,i){this._editorSelection=e,this._ranges=t,this._replaceStrings=i,this._trackedEditorSelectionId=null}getEditOperations(e,t){if(this._ranges.length>0){const i=[];for(let l=0;l<this._ranges.length;l++)i.push({range:this._ranges[l],text:this._replaceStrings[l]});i.sort((l,r)=>v.compareRangesUsingStarts(l.range,r.range));const n=[];let o=i[0];for(let l=1;l<i.length;l++)o.range.endLineNumber===i[l].range.startLineNumber&&o.range.endColumn===i[l].range.startColumn?(o.range=o.range.plusRange(i[l].range),o.text=o.text+i[l].text):(n.push(o),o=i[l]);n.push(o);for(const l of n)t.addEditOperation(l.range,l.text)}this._trackedEditorSelectionId=t.trackSelection(this._editorSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._trackedEditorSelectionId)}}function kZe(s,e){if(s&&s[0]!==""){const t=_de(s,e,"-"),i=_de(s,e,"_");return t&&!i?Ode(s,e,"-"):!t&&i?Ode(s,e,"_"):s[0].toUpperCase()===s[0]?e.toUpperCase():s[0].toLowerCase()===s[0]?e.toLowerCase():WGe(s[0][0])&&e.length>0?e[0].toUpperCase()+e.substr(1):s[0][0].toUpperCase()!==s[0][0]&&e.length>0?e[0].toLowerCase()+e.substr(1):e}else return e}function _de(s,e,t){return s[0].indexOf(t)!==-1&&e.indexOf(t)!==-1&&s[0].split(t).length===e.split(t).length}function Ode(s,e,t){const i=e.split(t),n=s[0].split(t);let o="";return i.forEach((l,r)=>{o+=kZe([n[r]],l)+t}),o.slice(0,-1)}class jde{constructor(e){this.staticValue=e,this.kind=0}}class Wnt{constructor(e){this.pieces=e,this.kind=1}}class MV{static fromStaticValue(e){return new MV([qZ.staticValue(e)])}get hasReplacementPatterns(){return this._state.kind===1}constructor(e){!e||e.length===0?this._state=new jde(""):e.length===1&&e[0].staticValue!==null?this._state=new jde(e[0].staticValue):this._state=new Wnt(e)}buildReplaceString(e,t){if(this._state.kind===0)return t?kZe(e,this._state.staticValue):this._state.staticValue;let i="";for(let n=0,o=this._state.pieces.length;n<o;n++){const l=this._state.pieces[n];if(l.staticValue!==null){i+=l.staticValue;continue}let r=MV._substitute(l.matchIndex,e);if(l.caseOps!==null&&l.caseOps.length>0){const a=[],d=l.caseOps.length;let c=0;for(let h=0,u=r.length;h<u;h++){if(c>=d){a.push(r.slice(h));break}switch(l.caseOps[c]){case"U":a.push(r[h].toUpperCase());break;case"u":a.push(r[h].toUpperCase()),c++;break;case"L":a.push(r[h].toLowerCase());break;case"l":a.push(r[h].toLowerCase()),c++;break;default:a.push(r[h])}}r=a.join("")}i+=r}return i}static _substitute(e,t){if(t===null)return"";if(e===0)return t[0];let i="";for(;e>0;){if(e<t.length)return(t[e]||"")+i;i=String(e%10)+i,e=Math.floor(e/10)}return"$"+i}}class qZ{static staticValue(e){return new qZ(e,-1,null)}static caseOps(e,t){return new qZ(null,e,t)}constructor(e,t,i){this.staticValue=e,this.matchIndex=t,!i||i.length===0?this.caseOps=null:this.caseOps=i.slice(0)}}class Vnt{constructor(e){this._source=e,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=""}emitUnchanged(e){this._emitStatic(this._source.substring(this._lastCharIndex,e)),this._lastCharIndex=e}emitStatic(e,t){this._emitStatic(e),this._lastCharIndex=t}_emitStatic(e){e.length!==0&&(this._currentStaticPiece+=e)}emitMatchIndex(e,t,i){this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=qZ.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),this._result[this._resultLen++]=qZ.caseOps(e,i),this._lastCharIndex=t}finalize(){return this.emitUnchanged(this._source.length),this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=qZ.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),new MV(this._result)}}function Qnt(s){if(!s||s.length===0)return new MV(null);const e=[],t=new Vnt(s);for(let i=0,n=s.length;i<n;i++){const o=s.charCodeAt(i);if(o===92){if(i++,i>=n)break;const l=s.charCodeAt(i);switch(l){case 92:t.emitUnchanged(i-1),t.emitStatic("\\",i+1);break;case 110:t.emitUnchanged(i-1),t.emitStatic(`
- `,i+1);break;case 116:t.emitUnchanged(i-1),t.emitStatic(" ",i+1);break;case 117:case 85:case 108:case 76:t.emitUnchanged(i-1),t.emitStatic("",i+1),e.push(String.fromCharCode(l));break}continue}if(o===36){if(i++,i>=n)break;const l=s.charCodeAt(i);if(l===36){t.emitUnchanged(i-1),t.emitStatic("$",i+1);continue}if(l===48||l===38){t.emitUnchanged(i-1),t.emitMatchIndex(0,i+1,e),e.length=0;continue}if(49<=l&&l<=57){let r=l-48;if(i+1<n){const a=s.charCodeAt(i+1);if(48<=a&&a<=57){i++,r=r*10+(a-48),t.emitUnchanged(i-2),t.emitMatchIndex(r,i+1,e),e.length=0;continue}}t.emitUnchanged(i-1),t.emitMatchIndex(r,i+1,e),e.length=0;continue}}}return t.finalize()}const G0=new Ke("findWidgetVisible",!1);G0.toNegated();const Zz=new Ke("findInputFocussed",!1),Sie=new Ke("replaceInputFocussed",!1),Rk={primary:545,mac:{primary:2593}},Sk={primary:565,mac:{primary:2613}},Wk={primary:560,mac:{primary:2608}},Vk={primary:554,mac:{primary:2602}},Qk={primary:558,mac:{primary:2606}},Pn={StartFindAction:"actions.find",StartFindWithSelection:"actions.findWithSelection",StartFindWithArgs:"editor.actions.findWithArgs",NextMatchFindAction:"editor.action.nextMatchFindAction",PreviousMatchFindAction:"editor.action.previousMatchFindAction",GoToMatchFindAction:"editor.action.goToMatchFindAction",NextSelectionMatchFindAction:"editor.action.nextSelectionMatchFindAction",PreviousSelectionMatchFindAction:"editor.action.previousSelectionMatchFindAction",StartFindReplaceAction:"editor.action.startFindReplaceAction",CloseFindWidgetCommand:"closeFindWidget",ToggleCaseSensitiveCommand:"toggleFindCaseSensitive",ToggleWholeWordCommand:"toggleFindWholeWord",ToggleRegexCommand:"toggleFindRegex",ToggleSearchScopeCommand:"toggleFindInSelection",TogglePreserveCaseCommand:"togglePreserveCase",ReplaceOneAction:"editor.action.replaceOne",ReplaceAllAction:"editor.action.replaceAll",SelectAllMatchesAction:"editor.action.selectAllMatches"},FU=19999,ynt=240;class GC{constructor(e,t){this._toDispose=new Ze,this._editor=e,this._state=t,this._isDisposed=!1,this._startSearchingTimer=new iu,this._decorations=new x7(e),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new Rn(()=>{if(this._editor.hasModel())return this.research(!1)},100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(i=>{(i.reason===3||i.reason===5||i.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(i=>{this._ignoreModelContentChanged||(i.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(i=>this._onStateChanged(i))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,Tn(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(e){this._isDisposed||this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)},ynt)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor))}static _getSearchRange(e,t){return t||e.getFullModelRange()}research(e,t){let i=null;typeof t<"u"?t!==null&&(Array.isArray(t)?i=t:i=[t]):i=this._decorations.getFindScopes(),i!==null&&(i=i.map(r=>{if(r.startLineNumber!==r.endLineNumber){let a=r.endLineNumber;return r.endColumn===1&&(a=a-1),new v(r.startLineNumber,1,a,this._editor.getModel().getLineMaxColumn(a))}return r}));const n=this._findMatches(i,!1,FU);this._decorations.set(n,i);const o=this._editor.getSelection();let l=this._decorations.getCurrentMatchesPosition(o);if(l===0&&n.length>0){const r=uM(n.map(a=>a.range),a=>v.compareRangesUsingStarts(a,o)>=0);l=r>0?r-1+1:l}this._state.changeMatchInfo(l,this._decorations.getCount(),void 0),e&&this._editor.getOption(41).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1}_setCurrentFindMatch(e){const t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}_prevSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:n}=e;const o=this._editor.getModel();return t||n===1?(i===1?i=o.getLineCount():i--,n=o.getLineMaxColumn(i)):n--,new oe(i,n)}_moveToPrevMatch(e,t=!1){if(!this._state.canNavigateBack()){const c=this._decorations.matchAfterPosition(e);c&&this._setCurrentFindMatch(c);return}if(this._decorations.getCount()<FU){let c=this._decorations.matchBeforePosition(e);c&&c.isEmpty()&&c.getStartPosition().equals(e)&&(e=this._prevSearchPosition(e),c=this._decorations.matchBeforePosition(e)),c&&this._setCurrentFindMatch(c);return}if(this._cannotFind())return;const i=this._decorations.getFindScope(),n=GC._getSearchRange(this._editor.getModel(),i);n.getEndPosition().isBefore(e)&&(e=n.getEndPosition()),e.isBefore(n.getStartPosition())&&(e=n.getEndPosition());const{lineNumber:o,column:l}=e,r=this._editor.getModel();let a=new oe(o,l),d=r.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,!1);if(d&&d.range.isEmpty()&&d.range.getStartPosition().equals(a)&&(a=this._prevSearchPosition(a),d=r.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,!1)),!!d){if(!t&&!n.containsRange(d.range))return this._moveToPrevMatch(d.range.getStartPosition(),!0);this._setCurrentFindMatch(d.range)}}moveToPrevMatch(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}_nextSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:n}=e;const o=this._editor.getModel();return t||n===o.getLineMaxColumn(i)?(i===o.getLineCount()?i=1:i++,n=1):n++,new oe(i,n)}_moveToNextMatch(e){if(!this._state.canNavigateForward()){const i=this._decorations.matchBeforePosition(e);i&&this._setCurrentFindMatch(i);return}if(this._decorations.getCount()<FU){let i=this._decorations.matchAfterPosition(e);i&&i.isEmpty()&&i.getStartPosition().equals(e)&&(e=this._nextSearchPosition(e),i=this._decorations.matchAfterPosition(e)),i&&this._setCurrentFindMatch(i);return}const t=this._getNextMatch(e,!1,!0);t&&this._setCurrentFindMatch(t.range)}_getNextMatch(e,t,i,n=!1){if(this._cannotFind())return null;const o=this._decorations.getFindScope(),l=GC._getSearchRange(this._editor.getModel(),o);l.getEndPosition().isBefore(e)&&(e=l.getStartPosition()),e.isBefore(l.getStartPosition())&&(e=l.getStartPosition());const{lineNumber:r,column:a}=e,d=this._editor.getModel();let c=new oe(r,a),h=d.findNextMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,t);return i&&h&&h.range.isEmpty()&&h.range.getStartPosition().equals(c)&&(c=this._nextSearchPosition(c),h=d.findNextMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,t)),h?!n&&!l.containsRange(h.range)?this._getNextMatch(h.range.getEndPosition(),t,i,!0):h:null}moveToNextMatch(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}_moveToMatch(e){const t=this._decorations.getDecorationRangeAt(e);t&&this._setCurrentFindMatch(t)}moveToMatch(e){this._moveToMatch(e)}_getReplacePattern(){return this._state.isRegex?Qnt(this._state.replaceString):MV.fromStaticValue(this._state.replaceString)}replace(){if(!this._hasMatches())return;const e=this._getReplacePattern(),t=this._editor.getSelection(),i=this._getNextMatch(t.getStartPosition(),!0,!1);if(i)if(t.equalsRange(i.range)){const n=e.buildReplaceString(i.matches,this._state.preserveCase),o=new Bl(t,n);this._executeEditorCommand("replace",o),this._decorations.setStartPosition(new oe(t.startLineNumber,t.startColumn+n.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(i.range)}_findMatches(e,t,i){const n=(e||[null]).map(o=>GC._getSearchRange(this._editor.getModel(),o));return this._editor.getModel().findMatches(this._state.searchString,n,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null,t,i)}replaceAll(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();e===null&&this._state.matchesCount>=FU?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}_largeReplaceAll(){const t=new gF(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(132):null).parseSearchRequest();if(!t)return;let i=t.regex;if(!i.multiline){let h="mu";i.ignoreCase&&(h+="i"),i.global&&(h+="g"),i=new RegExp(i.source,h)}const n=this._editor.getModel(),o=n.getValue(1),l=n.getFullModelRange(),r=this._getReplacePattern();let a;const d=this._state.preserveCase;r.hasReplacementPatterns||d?a=o.replace(i,function(){return r.buildReplaceString(arguments,d)}):a=o.replace(i,r.buildReplaceString(null,d));const c=new Ate(l,a,this._editor.getSelection());this._executeEditorCommand("replaceAll",c)}_regularReplaceAll(e){const t=this._getReplacePattern(),i=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),n=[];for(let l=0,r=i.length;l<r;l++)n[l]=t.buildReplaceString(i[l].matches,this._state.preserveCase);const o=new Snt(this._editor.getSelection(),i.map(l=>l.range),n);this._executeEditorCommand("replaceAll",o)}selectAllMatches(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();let i=this._findMatches(e,!1,1073741824).map(o=>new dt(o.range.startLineNumber,o.range.startColumn,o.range.endLineNumber,o.range.endColumn));const n=this._editor.getSelection();for(let o=0,l=i.length;o<l;o++)if(i[o].equalsRange(n)){i=[n].concat(i.slice(0,o)).concat(i.slice(o+1));break}this._editor.setSelections(i)}_executeEditorCommand(e,t){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(e,t),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}const i5=class i5 extends bc{constructor(e,t,i){super(),this._hideSoon=this._register(new Rn(()=>this._hide(),2e3)),this._isVisible=!1,this._editor=e,this._state=t,this._keybindingService=i,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.style.zIndex="12",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const n={inputActiveOptionBorder:$e(SY),inputActiveOptionForeground:$e(WY),inputActiveOptionBackground:$e(aB)},o=this._register(mV());this.caseSensitive=this._register(new FUe({appendTitle:this._keybindingLabelFor(Pn.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase,hoverDelegate:o,...n})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new ZUe({appendTitle:this._keybindingLabelFor(Pn.ToggleWholeWordCommand),isChecked:this._state.wholeWord,hoverDelegate:o,...n})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new AUe({appendTitle:this._keybindingLabelFor(Pn.ToggleRegexCommand),isChecked:this._state.isRegex,hoverDelegate:o,...n})),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange(()=>{this._state.change({isRegex:this.regex.checked},!1)})),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange(l=>{let r=!1;l.isRegex&&(this.regex.checked=this._state.isRegex,r=!0),l.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,r=!0),l.matchCase&&(this.caseSensitive.checked=this._state.matchCase,r=!0),!this._state.isRevealed&&r&&this._revealTemporarily()})),this._register(ge(this._domNode,De.MOUSE_LEAVE,l=>this._onMouseLeave())),this._register(ge(this._domNode,"mouseover",l=>this._onMouseOver()))}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return i5.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}};i5.ID="editor.contrib.findOptionsWidget";let J7=i5;function yk(s,e){return s===1?!0:s===2?!1:e}class Cnt extends de{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return yk(this._isRegexOverride,this._isRegex)}get wholeWord(){return yk(this._wholeWordOverride,this._wholeWord)}get matchCase(){return yk(this._matchCaseOverride,this._matchCase)}get preserveCase(){return yk(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new re),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(e,t,i){const n={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let o=!1;t===0&&(e=0),e>t&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,n.matchesPosition=!0,o=!0),this._matchesCount!==t&&(this._matchesCount=t,n.matchesCount=!0,o=!0),typeof i<"u"&&(v.equalsRange(this._currentMatch,i)||(this._currentMatch=i,n.currentMatch=!0,o=!0)),o&&this._onFindReplaceStateChange.fire(n)}change(e,t,i=!0){var c;const n={moveCursor:t,updateHistory:i,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let o=!1;const l=this.isRegex,r=this.wholeWord,a=this.matchCase,d=this.preserveCase;typeof e.searchString<"u"&&this._searchString!==e.searchString&&(this._searchString=e.searchString,n.searchString=!0,o=!0),typeof e.replaceString<"u"&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,n.replaceString=!0,o=!0),typeof e.isRevealed<"u"&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,n.isRevealed=!0,o=!0),typeof e.isReplaceRevealed<"u"&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,n.isReplaceRevealed=!0,o=!0),typeof e.isRegex<"u"&&(this._isRegex=e.isRegex),typeof e.wholeWord<"u"&&(this._wholeWord=e.wholeWord),typeof e.matchCase<"u"&&(this._matchCase=e.matchCase),typeof e.preserveCase<"u"&&(this._preserveCase=e.preserveCase),typeof e.searchScope<"u"&&((c=e.searchScope)!=null&&c.every(h=>{var u;return(u=this._searchScope)==null?void 0:u.some(m=>!v.equalsRange(m,h))})||(this._searchScope=e.searchScope,n.searchScope=!0,o=!0)),typeof e.loop<"u"&&this._loop!==e.loop&&(this._loop=e.loop,n.loop=!0,o=!0),typeof e.isSearching<"u"&&this._isSearching!==e.isSearching&&(this._isSearching=e.isSearching,n.isSearching=!0,o=!0),typeof e.filters<"u"&&(this._filters?this._filters.update(e.filters):this._filters=e.filters,n.filters=!0,o=!0),this._isRegexOverride=typeof e.isRegexOverride<"u"?e.isRegexOverride:0,this._wholeWordOverride=typeof e.wholeWordOverride<"u"?e.wholeWordOverride:0,this._matchCaseOverride=typeof e.matchCaseOverride<"u"?e.matchCaseOverride:0,this._preserveCaseOverride=typeof e.preserveCaseOverride<"u"?e.preserveCaseOverride:0,l!==this.isRegex&&(o=!0,n.isRegex=!0),r!==this.wholeWord&&(o=!0,n.wholeWord=!0),a!==this.matchCase&&(o=!0,n.matchCase=!0),d!==this.preserveCase&&(o=!0,n.preserveCase=!0),o&&this._onFindReplaceStateChange.fire(n)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}canNavigateInLoop(){return this._loop||this.matchesCount>=FU}}const wnt=U("defaultLabel","input"),Mnt=U("label.preserveCaseToggle","Preserve Case");class Tnt extends qQ{constructor(e){super({icon:ke.preserveCase,title:Mnt+e.appendTitle,isChecked:e.isChecked,hoverDelegate:e.hoverDelegate??ca("element"),inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class Bnt extends bc{constructor(e,t,i,n){super(),this._showOptionButtons=i,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new re),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new re),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new re),this._onInput=this._register(new re),this._onKeyUp=this._register(new re),this._onPreserveCaseKeyDown=this._register(new re),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=t,this.placeholder=n.placeholder||"",this.validation=n.validation,this.label=n.label||wnt;const o=n.appendPreserveCaseLabel||"",l=n.history||[],r=!!n.flexibleHeight,a=!!n.flexibleWidth,d=n.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new NUe(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:l,showHistoryHint:n.showHistoryHint,flexibleHeight:r,flexibleWidth:a,flexibleMaxHeight:d,inputBoxStyles:n.inputBoxStyles})),this.preserveCase=this._register(new Tnt({appendTitle:o,isChecked:!1,...n.toggleStyles})),this._register(this.preserveCase.onChange(u=>{this._onDidOptionChange.fire(u),!u&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(u=>{this._onPreserveCaseKeyDown.fire(u)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const c=[this.preserveCase.domNode];this.onkeydown(this.domNode,u=>{if(u.equals(15)||u.equals(17)||u.equals(9)){const m=c.indexOf(this.domNode.ownerDocument.activeElement);if(m>=0){let p=-1;u.equals(17)?p=(m+1)%c.length:u.equals(15)&&(m===0?p=c.length-1:p=m-1),u.equals(9)?(c[m].blur(),this.inputBox.focus()):p>=0&&c[p].focus(),yi.stop(u,!0)}}});const h=document.createElement("div");h.className="controls",h.style.display=this._showOptionButtons?"block":"none",h.appendChild(this.preserveCase.domNode),this.domNode.appendChild(h),e==null||e.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,u=>this._onKeyDown.fire(u)),this.onkeyup(this.inputBox.inputElement,u=>this._onKeyUp.fire(u)),this.oninput(this.inputBox.inputElement,u=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,u=>this._onMouseDown.fire(u))}enable(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(e){e?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(e){this.preserveCase.checked=e}focusOnPreserve(){this.preserveCase.focus()}validate(){var e;(e=this.inputBox)==null||e.validate()}set width(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=e+"px"}dispose(){super.dispose()}}var IZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},DZe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const Wie=new Ke("suggestWidgetVisible",!1,U("suggestWidgetVisible","Whether suggestion are visible")),Vie="historyNavigationWidgetFocus",GZe="historyNavigationForwardsEnabled",EZe="historyNavigationBackwardsEnabled";let m0;const Ck=[];function vZe(s,e){if(Ck.includes(e))throw new Error("Cannot register the same widget multiple times");Ck.push(e);const t=new Ze,i=new Ke(Vie,!1).bindTo(s),n=new Ke(GZe,!0).bindTo(s),o=new Ke(EZe,!0).bindTo(s),l=()=>{i.set(!0),m0=e},r=()=>{i.set(!1),m0===e&&(m0=void 0)};return nY(e.element)&&l(),t.add(e.onDidFocus(()=>l())),t.add(e.onDidBlur(()=>r())),t.add(gt(()=>{Ck.splice(Ck.indexOf(e),1),r()})),{historyNavigationForwardsEnablement:n,historyNavigationBackwardsEnablement:o,dispose(){t.dispose()}}}let X7=class extends RUe{constructor(e,t,i,n){super(e,t,i);const o=this._register(n.createScoped(this.inputBox.element));this._register(vZe(o,this.inputBox))}};X7=IZe([DZe(3,wt)],X7);let Y7=class extends Bnt{constructor(e,t,i,n,o=!1){super(e,t,o,i);const l=this._register(n.createScoped(this.inputBox.element));this._register(vZe(l,this.inputBox))}};Y7=IZe([DZe(3,wt)],Y7);la.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:Ne.and(Ne.has(Vie),Ne.equals(EZe,!0),Ne.not("isComposing"),Wie.isEqualTo(!1)),primary:16,secondary:[528],handler:s=>{m0==null||m0.showPreviousValue()}});la.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:Ne.and(Ne.has(Vie),Ne.equals(GZe,!0),Ne.not("isComposing"),Wie.isEqualTo(!1)),primary:18,secondary:[530],handler:s=>{m0==null||m0.showNextValue()}});function Hde(s){var e,t;return((e=s.lookupKeybinding("history.showPrevious"))==null?void 0:e.getElectronAccelerator())==="Up"&&((t=s.lookupKeybinding("history.showNext"))==null?void 0:t.getElectronAccelerator())==="Down"}const Pde=ts("find-collapsed",ke.chevronRight,U("findCollapsedIcon","Icon to indicate that the editor find widget is collapsed.")),Kde=ts("find-expanded",ke.chevronDown,U("findExpandedIcon","Icon to indicate that the editor find widget is expanded.")),Lnt=ts("find-selection",ke.selection,U("findSelectionIcon","Icon for 'Find in Selection' in the editor find widget.")),knt=ts("find-replace",ke.replace,U("findReplaceIcon","Icon for 'Replace' in the editor find widget.")),Int=ts("find-replace-all",ke.replaceAll,U("findReplaceAllIcon","Icon for 'Replace All' in the editor find widget.")),Dnt=ts("find-previous-match",ke.arrowUp,U("findPreviousMatchIcon","Icon for 'Find Previous' in the editor find widget.")),Gnt=ts("find-next-match",ke.arrowDown,U("findNextMatchIcon","Icon for 'Find Next' in the editor find widget.")),Ent=U("label.findDialog","Find / Replace"),vnt=U("label.find","Find"),xnt=U("placeholder.find","Find"),Jnt=U("label.previousMatchButton","Previous Match"),Xnt=U("label.nextMatchButton","Next Match"),Ynt=U("label.toggleSelectionFind","Find in Selection"),znt=U("label.closeButton","Close"),_nt=U("label.replace","Replace"),Ont=U("placeholder.replace","Replace"),jnt=U("label.replaceButton","Replace"),Hnt=U("label.replaceAllButton","Replace All"),Pnt=U("label.toggleReplaceButton","Toggle Replace"),Knt=U("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",FU),qnt=U("label.matchesLocation","{0} of {1}"),qde=U("label.noResults","No results"),fm=419,$nt=275,est=$nt-54;let H1=69;const tst=33,$de="ctrlEnterReplaceAll.windows.donotask",ece=Fi?256:2048;class F_{constructor(e){this.afterLineNumber=e,this.heightInPx=tst,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}function tce(s,e,t){const i=!!e.match(/\n/);if(t&&i&&t.selectionStart>0){s.stopPropagation();return}}function ice(s,e,t){const i=!!e.match(/\n/);if(t&&i&&t.selectionEnd<t.value.length){s.stopPropagation();return}}const n5=class n5 extends bc{constructor(e,t,i,n,o,l,r,a,d,c){super(),this._hoverService=c,this._cachedHeight=null,this._revealTimeouts=[],this._codeEditor=e,this._controller=t,this._state=i,this._contextViewProvider=n,this._keybindingService=o,this._contextKeyService=l,this._storageService=a,this._notificationService=d,this._ctrlEnterReplaceAllWarningPrompted=!!a.getBoolean($de,0),this._isVisible=!1,this._isReplaceVisible=!1,this._ignoreChangeEvent=!1,this._updateHistoryDelayer=new Hc(500),this._register(gt(()=>this._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(h=>this._onStateChanged(h))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(h=>{if(h.hasChanged(92)&&(this._codeEditor.getOption(92)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),h.hasChanged(146)&&this._tryUpdateWidgetWidth(),h.hasChanged(2)&&this.updateAccessibilitySupport(),h.hasChanged(41)){const u=this._codeEditor.getOption(41).loop;this._state.change({loop:u},!1);const m=this._codeEditor.getOption(41).addExtraSpaceOnTop;m&&!this._viewZone&&(this._viewZone=new F_(0),this._showViewZone()),!m&&this._viewZone&&this._removeViewZone()}})),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection(()=>{this._isVisible&&this._updateToggleSelectionFindButton()})),this._register(this._codeEditor.onDidFocusEditorWidget(async()=>{if(this._isVisible){const h=await this._controller.getGlobalBufferTerm();h&&h!==this._state.searchString&&(this._state.change({searchString:h},!1),this._findInput.select())}})),this._findInputFocused=Zz.bindTo(l),this._findFocusTracker=this._register(Hu(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus(()=>{this._findInputFocused.set(!0),this._updateSearchScope()})),this._register(this._findFocusTracker.onDidBlur(()=>{this._findInputFocused.set(!1)})),this._replaceInputFocused=Sie.bindTo(l),this._replaceFocusTracker=this._register(Hu(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus(()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()})),this._register(this._replaceFocusTracker.onDidBlur(()=>{this._replaceInputFocused.set(!1)})),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(41).addExtraSpaceOnTop&&(this._viewZone=new F_(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(h=>{if(h.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return n5.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(e){if(e.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(92)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=ld(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){const t=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle("no-results",t),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory(),e.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,vt)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){var t;this._matchesCount.style.minWidth=H1+"px",this._state.matchesCount>=FU?this._matchesCount.title=Knt:this._matchesCount.title="",(t=this._matchesCount.firstChild)==null||t.remove();let e;if(this._state.matchesCount>0){let i=String(this._state.matchesCount);this._state.matchesCount>=FU&&(i+="+");let n=String(this._state.matchesPosition);n==="0"&&(n="?"),e=FA(qnt,n,i)}else e=qde;this._matchesCount.appendChild(document.createTextNode(e)),ra(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString)),H1=Math.max(H1,this._matchesCount.clientWidth)}_getAriaLabel(e,t,i){if(e===qde)return i===""?U("ariaSearchNoResultEmpty","{0} found",e):U("ariaSearchNoResult","{0} found for '{1}'",e,i);if(t){const n=U("ariaSearchNoResultWithLineNum","{0} found for '{1}', at {2}",e,i,t.startLineNumber+":"+t.startColumn),o=this._codeEditor.getModel();return o&&t.startLineNumber<=o.getLineCount()&&t.startLineNumber>=1?`${o.getLineContent(t.startLineNumber)}, ${n}`:n}return U("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for '{1}'",e,i)}_updateToggleSelectionFindButton(){const e=this._codeEditor.getSelection(),t=e?e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn:!1,i=this._toggleSelectionFind.checked;this._isVisible&&(i||t)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const i=!this._codeEditor.getOption(92);this._toggleReplaceBtn.setEnabled(this._isVisible&&i)}_reveal(){if(this._revealTimeouts.forEach(e=>{clearTimeout(e)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const e=this._codeEditor.getSelection();switch(this._codeEditor.getOption(41).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":{const i=!!e&&e.startLineNumber!==e.endLineNumber;this._toggleSelectionFind.checked=i;break}}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout(()=>{this._domNode.classList.add("visible"),this._domNode.setAttribute("aria-hidden","false")},0)),this._revealTimeouts.push(setTimeout(()=>{this._findInput.validate()},200)),this._codeEditor.layoutOverlayWidget(this);let t=!0;if(this._codeEditor.getOption(41).seedSearchStringFromSelection&&e){const i=this._codeEditor.getDomNode();if(i){const n=_s(i),o=this._codeEditor.getScrolledVisiblePosition(e.getStartPosition()),l=n.left+(o?o.left:0),r=o?o.top:0;if(this._viewZone&&r<this._viewZone.heightInPx){e.endLineNumber>e.startLineNumber&&(t=!1);const a=Age(this._domNode).left;l>a&&(t=!1);const d=this._codeEditor.getScrolledVisiblePosition(e.getEndPosition());n.left+(d?d.left:0)>a&&(t=!1)}}}this._showViewZone(t)}}_hide(e){this._revealTimeouts.forEach(t=>{clearTimeout(t)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(e){if(!this._codeEditor.getOption(41).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const i=this._viewZone;this._viewZoneId!==void 0||!i||this._codeEditor.changeViewZones(n=>{i.heightInPx=this._getHeight(),this._viewZoneId=n.addZone(i),this._codeEditor.setScrollTop(e||this._codeEditor.getScrollTop()+i.heightInPx)})}_showViewZone(e=!0){if(!this._isVisible||!this._codeEditor.getOption(41).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new F_(0));const i=this._viewZone;this._codeEditor.changeViewZones(n=>{if(this._viewZoneId!==void 0){const o=this._getHeight();if(o===i.heightInPx)return;const l=o-i.heightInPx;i.heightInPx=o,n.layoutZone(this._viewZoneId),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+l);return}else{let o=this._getHeight();if(o-=this._codeEditor.getOption(84).top,o<=0)return;i.heightInPx=o,this._viewZoneId=n.addZone(i),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+o)}})}_removeViewZone(){this._codeEditor.changeViewZones(e=>{this._viewZoneId!==void 0&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))})}_tryUpdateWidgetWidth(){if(!this._isVisible||!this._domNode.isConnected)return;const e=this._codeEditor.getLayoutInfo();if(e.contentWidth<=0){this._domNode.classList.add("hiddenEditor");return}else this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const i=e.width,n=e.minimap.minimapWidth;let o=!1,l=!1,r=!1;if(this._resized&&ld(this._domNode)>fm){this._domNode.style.maxWidth=`${i-28-n-15}px`,this._replaceInput.width=ld(this._findInput.domNode);return}if(fm+28+n>=i&&(l=!0),fm+28+n-H1>=i&&(r=!0),fm+28+n-H1>=i+50&&(o=!0),this._domNode.classList.toggle("collapsed-find-widget",o),this._domNode.classList.toggle("narrow-find-widget",r),this._domNode.classList.toggle("reduced-find-widget",l),!r&&!o&&(this._domNode.style.maxWidth=`${i-28-n-15}px`),this._findInput.layout({collapsedFindWidget:o,narrowFindWidget:r,reducedFindWidget:l}),this._resized){const a=this._findInput.inputBox.element.clientWidth;a>0&&(this._replaceInput.width=a)}else this._isReplaceVisible&&(this._replaceInput.width=ld(this._findInput.domNode))}_getHeight(){let e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4,e}_tryUpdateHeight(){const e=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===e?!1:(this._cachedHeight=e,this._domNode.style.height=`${e}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const e=this._codeEditor.getSelections();e.map(t=>{t.endColumn===1&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(t.endLineNumber-1)));const i=this._state.currentMatch;return t.startLineNumber!==t.endLineNumber&&!v.equalsRange(t,i)?t:null}).filter(t=>!!t),e.length&&this._state.change({searchScope:e},!0)}}_onFindInputMouseDown(e){e.middleButton&&e.stopPropagation()}_onFindInputKeyDown(e){if(e.equals(ece|3))if(this._keybindingService.dispatchEvent(e,e.target)){e.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(`
- `),e.preventDefault();return}if(e.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),e.preventDefault();return}if(e.equals(2066)){this._codeEditor.focus(),e.preventDefault();return}if(e.equals(16))return tce(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"));if(e.equals(18))return ice(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"))}_onReplaceInputKeyDown(e){if(e.equals(ece|3))if(this._keybindingService.dispatchEvent(e,e.target)){e.preventDefault();return}else{Gl&&vu&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(U("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store($de,!0,0,0)),this._replaceInput.inputBox.insertAtCursor(`
- `),e.preventDefault();return}if(e.equals(2)){this._findInput.focusOnCaseSensitive(),e.preventDefault();return}if(e.equals(1026)){this._findInput.focus(),e.preventDefault();return}if(e.equals(2066)){this._codeEditor.focus(),e.preventDefault();return}if(e.equals(16))return tce(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"));if(e.equals(18))return ice(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"))}getVerticalSashLeft(e){return 0}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}_buildDomNode(){this._findInput=this._register(new X7(null,this._contextViewProvider,{width:est,label:vnt,placeholder:xnt,appendCaseSensitiveLabel:this._keybindingLabelFor(Pn.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(Pn.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(Pn.ToggleRegexCommand),validation:c=>{if(c.length===0||!this._findInput.getRegex())return null;try{return new RegExp(c,"gu"),null}catch(h){return{content:h.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>Hde(this._keybindingService),inputBoxStyles:Rv,toggleStyles:Nv},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown(c=>this._onFindInputKeyDown(c))),this._register(this._findInput.inputBox.onDidChange(()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown(c=>{c.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),c.preventDefault())})),this._register(this._findInput.onRegexKeyDown(c=>{c.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),c.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange(c=>{this._tryUpdateHeight()&&this._showViewZone()})),sa&&this._register(this._findInput.onMouseDown(c=>this._onFindInputMouseDown(c))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount();const i=this._register(mV());this._prevBtn=this._register(new xN({label:Jnt+this._keybindingLabelFor(Pn.PreviousMatchFindAction),icon:Dnt,hoverDelegate:i,onTrigger:()=>{rU(this._codeEditor.getAction(Pn.PreviousMatchFindAction)).run().then(void 0,vt)}},this._hoverService)),this._nextBtn=this._register(new xN({label:Xnt+this._keybindingLabelFor(Pn.NextMatchFindAction),icon:Gnt,hoverDelegate:i,onTrigger:()=>{rU(this._codeEditor.getAction(Pn.NextMatchFindAction)).run().then(void 0,vt)}},this._hoverService));const n=document.createElement("div");n.className="find-part",n.appendChild(this._findInput.domNode);const o=document.createElement("div");o.className="find-actions",n.appendChild(o),o.appendChild(this._matchesCount),o.appendChild(this._prevBtn.domNode),o.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new qQ({icon:Lnt,title:Ynt+this._keybindingLabelFor(Pn.ToggleSearchScopeCommand),isChecked:!1,hoverDelegate:i,inputActiveOptionBackground:$e(aB),inputActiveOptionBorder:$e(SY),inputActiveOptionForeground:$e(WY)})),this._register(this._toggleSelectionFind.onChange(()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){let c=this._codeEditor.getSelections();c=c.map(h=>(h.endColumn===1&&h.endLineNumber>h.startLineNumber&&(h=h.setEndPosition(h.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(h.endLineNumber-1))),h.isEmpty()?null:h)).filter(h=>!!h),c.length&&this._state.change({searchScope:c},!0)}}else this._state.change({searchScope:null},!0)})),o.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new xN({label:znt+this._keybindingLabelFor(Pn.CloseFindWidgetCommand),icon:$Ue,hoverDelegate:i,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:c=>{c.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),c.preventDefault())}},this._hoverService)),this._replaceInput=this._register(new Y7(null,void 0,{label:_nt,placeholder:Ont,appendPreserveCaseLabel:this._keybindingLabelFor(Pn.TogglePreserveCaseCommand),history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showHistoryHint:()=>Hde(this._keybindingService),inputBoxStyles:Rv,toggleStyles:Nv},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown(c=>this._onReplaceInputKeyDown(c))),this._register(this._replaceInput.inputBox.onDidChange(()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange(c=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown(c=>{c.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),c.preventDefault())}));const l=this._register(mV());this._replaceBtn=this._register(new xN({label:jnt+this._keybindingLabelFor(Pn.ReplaceOneAction),icon:knt,hoverDelegate:l,onTrigger:()=>{this._controller.replace()},onKeyDown:c=>{c.equals(1026)&&(this._closeBtn.focus(),c.preventDefault())}},this._hoverService)),this._replaceAllBtn=this._register(new xN({label:Hnt+this._keybindingLabelFor(Pn.ReplaceAllAction),icon:Int,hoverDelegate:l,onTrigger:()=>{this._controller.replaceAll()}},this._hoverService));const r=document.createElement("div");r.className="replace-part",r.appendChild(this._replaceInput.domNode);const a=document.createElement("div");a.className="replace-actions",r.appendChild(a),a.appendChild(this._replaceBtn.domNode),a.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new xN({label:Pnt,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=ld(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}},this._hoverService)),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.ariaLabel=Ent,this._domNode.role="dialog",this._domNode.style.width=`${fm}px`,this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(n),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(r),this._resizeSash=this._register(new ql(this._domNode,this,{orientation:0,size:2})),this._resized=!1;let d=fm;this._register(this._resizeSash.onDidStart(()=>{d=ld(this._domNode)})),this._register(this._resizeSash.onDidChange(c=>{this._resized=!0;const h=d+c.startX-c.currentX;if(h<fm)return;const u=parseFloat(iY(this._domNode).maxWidth)||0;h>u||(this._domNode.style.width=`${h}px`,this._isReplaceVisible&&(this._replaceInput.width=ld(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())})),this._register(this._resizeSash.onDidReset(()=>{const c=ld(this._domNode);if(c<fm)return;let h=fm;if(!this._resized||c===fm){const u=this._codeEditor.getLayoutInfo();h=u.width-28-u.minimap.minimapWidth-15,this._resized=!0}this._domNode.style.width=`${h}px`,this._isReplaceVisible&&(this._replaceInput.width=ld(this._findInput.domNode)),this._findInput.inputBox.layout()}))}updateAccessibilitySupport(){const e=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(e!==2)}};n5.ID="editor.contrib.findWidget";let z7=n5;class xN extends bc{constructor(e,t){super(),this._opts=e;let i="button";this._opts.className&&(i=i+" "+this._opts.className),this._opts.icon&&(i=i+" "+Qt.asClassName(this._opts.icon)),this._domNode=document.createElement("div"),this._domNode.tabIndex=0,this._domNode.className=i,this._domNode.setAttribute("role","button"),this._domNode.setAttribute("aria-label",this._opts.label),this._register(t.setupManagedHover(e.hoverDelegate??ca("element"),this._domNode,this._opts.label)),this.onclick(this._domNode,n=>{this._opts.onTrigger(),n.preventDefault()}),this.onkeydown(this._domNode,n=>{var o,l;if(n.equals(10)||n.equals(3)){this._opts.onTrigger(),n.preventDefault();return}(l=(o=this._opts).onKeyDown)==null||l.call(o,n)})}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(e){this._domNode.classList.toggle("disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1}setExpanded(e){this._domNode.setAttribute("aria-expanded",String(!!e)),e?(this._domNode.classList.remove(...Qt.asClassNameArray(Pde)),this._domNode.classList.add(...Qt.asClassNameArray(Kde))):(this._domNode.classList.remove(...Qt.asClassNameArray(Kde)),this._domNode.classList.add(...Qt.asClassNameArray(Pde)))}}ih((s,e)=>{const t=s.getColor(cU);t&&e.addRule(`.monaco-editor .findMatch { border: 1px ${Yu(s.type)?"dotted":"solid"} ${t}; box-sizing: border-box; }`);const i=s.getColor(CXe);i&&e.addRule(`.monaco-editor .findScope { border: 1px ${Yu(s.type)?"dashed":"solid"} ${i}; }`);const n=s.getColor(Di);n&&e.addRule(`.monaco-editor .find-widget { border: 1px solid ${n}; }`);const o=s.getColor(QXe);o&&e.addRule(`.monaco-editor .findMatchInline { color: ${o}; }`);const l=s.getColor(yXe);l&&e.addRule(`.monaco-editor .currentFindMatchInline { color: ${l}; }`)});var xZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Lc=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},_7;const ist=524288;function O7(s,e="single",t=!1){if(!s.hasModel())return null;const i=s.getSelection();if(e==="single"&&i.startLineNumber===i.endLineNumber||e==="multiple"){if(i.isEmpty()){const n=s.getConfiguredWordAtPosition(i.getStartPosition());if(n&&t===!1)return n.word}else if(s.getModel().getValueLengthInRange(i)<ist)return s.getModel().getValueInRange(i)}return null}var uQ;let Ja=(uQ=class extends de{get editor(){return this._editor}static get(e){return e.getContribution(_7.ID)}constructor(e,t,i,n,o,l){super(),this._editor=e,this._findWidgetVisible=G0.bindTo(t),this._contextKeyService=t,this._storageService=i,this._clipboardService=n,this._notificationService=o,this._hoverService=l,this._updateHistoryDelayer=new Hc(500),this._state=this._register(new Cnt),this.loadQueryState(),this._register(this._state.onFindReplaceStateChange(r=>this._onStateChanged(r))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const r=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),r&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(41).loop})}))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),e.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!Zz.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){let e=this._editor.getSelections();e=e.map(t=>(t.endColumn===1&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,this._editor.getModel().getLineMaxColumn(t.endLineNumber-1))),t.isEmpty()?null:t)).filter(t=>!!t),e.length&&this._state.change({searchScope:e},!0)}}setSearchString(e){this._state.isRegex&&(e=dc(e)),this._state.change({searchString:e},!1)}highlightFindOptions(e=!1){}async _start(e,t){if(this.disposeModel(),!this._editor.hasModel())return;const i={...t,isRevealed:!0};if(e.seedSearchStringFromSelection==="single"){const n=O7(this._editor,e.seedSearchStringFromSelection,e.seedSearchStringFromNonEmptySelection);n&&(this._state.isRegex?i.searchString=dc(n):i.searchString=n)}else if(e.seedSearchStringFromSelection==="multiple"&&!e.updateSearchScope){const n=O7(this._editor,e.seedSearchStringFromSelection);n&&(i.searchString=n)}if(!i.searchString&&e.seedSearchStringFromGlobalClipboard){const n=await this.getGlobalBufferTerm();if(!this._editor.hasModel())return;n&&(i.searchString=n)}if(e.forceRevealReplace||i.isReplaceRevealed?i.isReplaceRevealed=!0:this._findWidgetVisible.get()||(i.isReplaceRevealed=!1),e.updateSearchScope){const n=this._editor.getSelections();n.some(o=>!o.isEmpty())&&(i.searchScope=n)}i.loop=e.loop,this._state.change(i,!1),this._model||(this._model=new GC(this._editor,this._state))}start(e,t){return this._start(e,t)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(e){return this._model?(this._model.moveToMatch(e),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){var e;return this._model?(e=this._editor.getModel())!=null&&e.isTooLargeForHeapOperation()?(this._notificationService.warn(U("too.large.for.replaceall","The file is too large to perform a replace all operation.")),!1):(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}async getGlobalBufferTerm(){return this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}setGlobalBufferTerm(e){this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)}},_7=uQ,uQ.ID="editor.contrib.findController",uQ);Ja=_7=xZe([Lc(1,wt),Lc(2,su),Lc(3,D0),Lc(4,no),Lc(5,Gp)],Ja);let j7=class extends Ja{constructor(e,t,i,n,o,l,r,a,d){super(e,i,r,a,l,d),this._contextViewService=t,this._keybindingService=n,this._themeService=o,this._widget=null,this._findOptionsWidget=null}async _start(e,t){this._widget||this._createFindWidget();const i=this._editor.getSelection();let n=!1;switch(this._editor.getOption(41).autoFindInSelection){case"always":n=!0;break;case"never":n=!1;break;case"multiline":{n=!!i&&i.startLineNumber!==i.endLineNumber;break}}e.updateSearchScope=e.updateSearchScope||n,await super._start(e,t),this._widget&&(e.shouldFocus===2?this._widget.focusReplaceInput():e.shouldFocus===1&&this._widget.focusFindInput())}highlightFindOptions(e=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!e?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new z7(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService,this._hoverService)),this._findOptionsWidget=this._register(new J7(this._editor,this._state,this._keybindingService))}};j7=xZe([Lc(1,L0),Lc(2,wt),Lc(3,dn),Lc(4,Do),Lc(5,no),Lc(6,su),Lc(7,D0),Lc(8,Gp)],j7);const nst=Gge(new Dge({id:Pn.StartFindAction,label:U("startFindAction","Find"),alias:"Find",precondition:Ne.or(H.focus,Ne.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:at.MenubarEditMenu,group:"3_find",title:U({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}}));nst.addImplementation(0,(s,e,t)=>{const i=Ja.get(e);return i?i.start({forceRevealReplace:!1,seedSearchStringFromSelection:e.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:e.getOption(41).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(41).loop}):!1});const sst={description:"Open a new In-Editor Find Widget.",args:[{name:"Open a new In-Editor Find Widget args",schema:{properties:{searchString:{type:"string"},replaceString:{type:"string"},isRegex:{type:"boolean"},matchWholeWord:{type:"boolean"},isCaseSensitive:{type:"boolean"},preserveCase:{type:"boolean"},findInSelection:{type:"boolean"}}}}]};class ost extends et{constructor(){super({id:Pn.StartFindWithArgs,label:U("startFindWithArgsAction","Find With Arguments"),alias:"Find With Arguments",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},metadata:sst})}async run(e,t,i){const n=Ja.get(t);if(n){const o=i?{searchString:i.searchString,replaceString:i.replaceString,isReplaceRevealed:i.replaceString!==void 0,isRegex:i.isRegex,wholeWord:i.matchWholeWord,matchCase:i.isCaseSensitive,preserveCase:i.preserveCase}:{};await n.start({forceRevealReplace:!1,seedSearchStringFromSelection:n.getState().searchString.length===0&&t.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:(i==null?void 0:i.findInSelection)||!1,loop:t.getOption(41).loop},o),n.setGlobalBufferTerm(n.getState().searchString)}}}class lst extends et{constructor(){super({id:Pn.StartFindWithSelection,label:U("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}async run(e,t){const i=Ja.get(t);i&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),i.setGlobalBufferTerm(i.getState().searchString))}}class JZe extends et{async run(e,t){const i=Ja.get(t);i&&!this._run(i)&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:i.getState().searchString.length===0&&t.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class rst extends JZe{constructor(){super({id:Pn.NextMatchFindAction,label:U("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:[{kbExpr:H.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:Ne.and(H.focus,Zz),primary:3,weight:100}]})}_run(e){return e.moveToNextMatch()?(e.editor.pushUndoStop(),!0):!1}}class ast extends JZe{constructor(){super({id:Pn.PreviousMatchFindAction,label:U("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:[{kbExpr:H.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:Ne.and(H.focus,Zz),primary:1027,weight:100}]})}_run(e){return e.moveToPrevMatch()}}class dst extends et{constructor(){super({id:Pn.GoToMatchFindAction,label:U("findMatchAction.goToMatch","Go to Match..."),alias:"Go to Match...",precondition:G0}),this._highlightDecorations=[]}run(e,t,i){const n=Ja.get(t);if(!n)return;const o=n.getState().matchesCount;if(o<1){e.get(no).notify({severity:fY.Warning,message:U("findMatchAction.noResults","No matches. Try searching for something else.")});return}const l=e.get(nh),r=new Ze,a=r.add(l.createInputBox());a.placeholder=U("findMatchAction.inputPlaceHolder","Type a number to go to a specific match (between 1 and {0})",o);const d=h=>{const u=parseInt(h);if(isNaN(u))return;const m=n.getState().matchesCount;if(u>0&&u<=m)return u-1;if(u<0&&u>=-m)return m+u},c=h=>{const u=d(h);if(typeof u=="number"){a.validationMessage=void 0,n.goToMatch(u);const m=n.getState().currentMatch;m&&this.addDecorations(t,m)}else a.validationMessage=U("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",n.getState().matchesCount),this.clearDecorations(t)};r.add(a.onDidChangeValue(h=>{c(h)})),r.add(a.onDidAccept(()=>{const h=d(a.value);typeof h=="number"?(n.goToMatch(h),a.hide()):a.validationMessage=U("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",n.getState().matchesCount)})),r.add(a.onDidHide(()=>{this.clearDecorations(t),r.dispose()})),a.show()}clearDecorations(e){e.changeDecorations(t=>{this._highlightDecorations=t.deltaDecorations(this._highlightDecorations,[])})}addDecorations(e,t){e.changeDecorations(i=>{this._highlightDecorations=i.deltaDecorations(this._highlightDecorations,[{range:t,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:Gs(vbe),position:lc.Full}}}])})}}class XZe extends et{async run(e,t){const i=Ja.get(t);if(!i)return;const n=O7(t,"single",!1);n&&i.setSearchString(n),this._run(i)||(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class cst extends XZe{constructor(){super({id:Pn.NextSelectionMatchFindAction,label:U("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:2109,weight:100}})}_run(e){return e.moveToNextMatch()}}class hst extends XZe{constructor(){super({id:Pn.PreviousSelectionMatchFindAction,label:U("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:3133,weight:100}})}_run(e){return e.moveToPrevMatch()}}const ust=Gge(new Dge({id:Pn.StartFindReplaceAction,label:U("startReplace","Replace"),alias:"Replace",precondition:Ne.or(H.focus,Ne.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:at.MenubarEditMenu,group:"3_find",title:U({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}}));ust.addImplementation(0,(s,e,t)=>{if(!e.hasModel()||e.getOption(92))return!1;const i=Ja.get(e);if(!i)return!1;const n=e.getSelection(),o=i.isFindInputFocused(),l=!n.isEmpty()&&n.startLineNumber===n.endLineNumber&&e.getOption(41).seedSearchStringFromSelection!=="never"&&!o,r=o||l?2:1;return i.start({forceRevealReplace:!0,seedSearchStringFromSelection:l?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:e.getOption(41).seedSearchStringFromSelection!=="never",shouldFocus:r,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(41).loop})});Gi(Ja.ID,j7,0);Me(ost);Me(lst);Me(rst);Me(ast);Me(dst);Me(cst);Me(hst);const dm=Io.bindToContribution(Ja.get);Oe(new dm({id:Pn.CloseFindWidgetCommand,precondition:G0,handler:s=>s.closeFindWidget(),kbOpts:{weight:100+5,kbExpr:Ne.and(H.focus,Ne.not("isComposing")),primary:9,secondary:[1033]}}));Oe(new dm({id:Pn.ToggleCaseSensitiveCommand,precondition:void 0,handler:s=>s.toggleCaseSensitive(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:Rk.primary,mac:Rk.mac,win:Rk.win,linux:Rk.linux}}));Oe(new dm({id:Pn.ToggleWholeWordCommand,precondition:void 0,handler:s=>s.toggleWholeWords(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:Sk.primary,mac:Sk.mac,win:Sk.win,linux:Sk.linux}}));Oe(new dm({id:Pn.ToggleRegexCommand,precondition:void 0,handler:s=>s.toggleRegex(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:Wk.primary,mac:Wk.mac,win:Wk.win,linux:Wk.linux}}));Oe(new dm({id:Pn.ToggleSearchScopeCommand,precondition:void 0,handler:s=>s.toggleSearchScope(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:Vk.primary,mac:Vk.mac,win:Vk.win,linux:Vk.linux}}));Oe(new dm({id:Pn.TogglePreserveCaseCommand,precondition:void 0,handler:s=>s.togglePreserveCase(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:Qk.primary,mac:Qk.mac,win:Qk.win,linux:Qk.linux}}));Oe(new dm({id:Pn.ReplaceOneAction,precondition:G0,handler:s=>s.replace(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:3094}}));Oe(new dm({id:Pn.ReplaceOneAction,precondition:G0,handler:s=>s.replace(),kbOpts:{weight:100+5,kbExpr:Ne.and(H.focus,Sie),primary:3}}));Oe(new dm({id:Pn.ReplaceAllAction,precondition:G0,handler:s=>s.replaceAll(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:2563}}));Oe(new dm({id:Pn.ReplaceAllAction,precondition:G0,handler:s=>s.replaceAll(),kbOpts:{weight:100+5,kbExpr:Ne.and(H.focus,Sie),primary:void 0,mac:{primary:2051}}}));Oe(new dm({id:Pn.SelectAllMatchesAction,precondition:G0,handler:s=>s.selectAllMatches(),kbOpts:{weight:100+5,kbExpr:H.focus,primary:515}}));const mst={0:" ",1:"u",2:"r"},nce=65535,Tu=16777215,sce=4278190080;class Z_{constructor(e){const t=Math.ceil(e/32);this._states=new Uint32Array(t)}get(e){const t=e/32|0,i=e%32;return(this._states[t]&1<<i)!==0}set(e,t){const i=e/32|0,n=e%32,o=this._states[i];t?this._states[i]=o|1<<n:this._states[i]=o&~(1<<n)}}class Kd{constructor(e,t,i){if(e.length!==t.length||e.length>nce)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=e,this._endIndexes=t,this._collapseStates=new Z_(e.length),this._userDefinedStates=new Z_(e.length),this._recoveredStates=new Z_(e.length),this._types=i,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const e=[],t=(i,n)=>{const o=e[e.length-1];return this.getStartLineNumber(o)<=i&&this.getEndLineNumber(o)>=n};for(let i=0,n=this._startIndexes.length;i<n;i++){const o=this._startIndexes[i],l=this._endIndexes[i];if(o>Tu||l>Tu)throw new Error("startLineNumber or endLineNumber must not exceed "+Tu);for(;e.length>0&&!t(o,l);)e.pop();const r=e.length>0?e[e.length-1]:-1;e.push(i),this._startIndexes[i]=o+((r&255)<<24),this._endIndexes[i]=l+((r&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(e){return this._startIndexes[e]&Tu}getEndLineNumber(e){return this._endIndexes[e]&Tu}getType(e){return this._types?this._types[e]:void 0}hasTypes(){return!!this._types}isCollapsed(e){return this._collapseStates.get(e)}setCollapsed(e,t){this._collapseStates.set(e,t)}isUserDefined(e){return this._userDefinedStates.get(e)}setUserDefined(e,t){return this._userDefinedStates.set(e,t)}isRecovered(e){return this._recoveredStates.get(e)}setRecovered(e,t){return this._recoveredStates.set(e,t)}getSource(e){return this.isUserDefined(e)?1:this.isRecovered(e)?2:0}setSource(e,t){t===1?(this.setUserDefined(e,!0),this.setRecovered(e,!1)):t===2?(this.setUserDefined(e,!1),this.setRecovered(e,!0)):(this.setUserDefined(e,!1),this.setRecovered(e,!1))}setCollapsedAllOfType(e,t){let i=!1;if(this._types)for(let n=0;n<this._types.length;n++)this._types[n]===e&&(this.setCollapsed(n,t),i=!0);return i}toRegion(e){return new pst(this,e)}getParentIndex(e){this.ensureParentIndices();const t=((this._startIndexes[e]&sce)>>>24)+((this._endIndexes[e]&sce)>>>16);return t===nce?-1:t}contains(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t}findIndex(e){let t=0,i=this._startIndexes.length;if(i===0)return-1;for(;t<i;){const n=Math.floor((t+i)/2);e<this.getStartLineNumber(n)?i=n:t=n+1}return t-1}findRange(e){let t=this.findIndex(e);if(t>=0){if(this.getEndLineNumber(t)>=e)return t;for(t=this.getParentIndex(t);t!==-1;){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1}toString(){const e=[];for(let t=0;t<this.length;t++)e[t]=`[${mst[this.getSource(t)]}${this.isCollapsed(t)?"+":"-"}] ${this.getStartLineNumber(t)}/${this.getEndLineNumber(t)}`;return e.join(", ")}toFoldRange(e){return{startLineNumber:this._startIndexes[e]&Tu,endLineNumber:this._endIndexes[e]&Tu,type:this._types?this._types[e]:void 0,isCollapsed:this.isCollapsed(e),source:this.getSource(e)}}static fromFoldRanges(e){const t=e.length,i=new Uint32Array(t),n=new Uint32Array(t);let o=[],l=!1;for(let a=0;a<t;a++){const d=e[a];i[a]=d.startLineNumber,n[a]=d.endLineNumber,o.push(d.type),d.type&&(l=!0)}l||(o=void 0);const r=new Kd(i,n,o);for(let a=0;a<t;a++)e[a].isCollapsed&&r.setCollapsed(a,!0),r.setSource(a,e[a].source);return r}static sanitizeAndMerge(e,t,i,n){i=i??Number.MAX_VALUE;const o=(b,f)=>Array.isArray(b)?Z=>Z<f?b[Z]:void 0:Z=>Z<f?b.toFoldRange(Z):void 0,l=o(e,e.length),r=o(t,t.length);let a=0,d=0,c=l(0),h=r(0);const u=[];let m,p=0;const g=[];for(;c||h;){let b;if(h&&(!c||c.startLineNumber>=h.startLineNumber))c&&c.startLineNumber===h.startLineNumber?(h.source===1?b=h:(b=c,b.isCollapsed=h.isCollapsed&&(c.endLineNumber===h.endLineNumber||!(n!=null&&n.startsInside(c.startLineNumber+1,c.endLineNumber+1))),b.source=0),c=l(++a)):(b=h,h.isCollapsed&&h.source===0&&(b.source=2)),h=r(++d);else{let f=d,Z=h;for(;;){if(!Z||Z.startLineNumber>c.endLineNumber){b=c;break}if(Z.source===1&&Z.endLineNumber>c.endLineNumber)break;Z=r(++f)}c=l(++a)}if(b){for(;m&&m.endLineNumber<b.startLineNumber;)m=u.pop();b.endLineNumber>b.startLineNumber&&b.startLineNumber>p&&b.endLineNumber<=i&&(!m||m.endLineNumber>=b.endLineNumber)&&(g.push(b),p=b.startLineNumber,m&&u.push(m),m=b)}}return g}}class pst{constructor(e,t){this.ranges=e,this.index=t}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(e){return e.startLineNumber<=this.startLineNumber&&e.endLineNumber>=this.endLineNumber}containsLine(e){return this.startLineNumber<=e&&e<=this.endLineNumber}}class gst{get regions(){return this._regions}get textModel(){return this._textModel}constructor(e,t){this._updateEventEmitter=new re,this.onDidChange=this._updateEventEmitter.event,this._textModel=e,this._decorationProvider=t,this._regions=new Kd(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(e){if(!e.length)return;e=e.sort((i,n)=>i.regionIndex-n.regionIndex);const t={};this._decorationProvider.changeDecorations(i=>{let n=0,o=-1,l=-1;const r=a=>{for(;n<a;){const d=this._regions.getEndLineNumber(n),c=this._regions.isCollapsed(n);if(d<=o){const h=this.regions.getSource(n)!==0;i.changeDecorationOptions(this._editorDecorationIds[n],this._decorationProvider.getDecorationOption(c,d<=l,h))}c&&d>l&&(l=d),n++}};for(const a of e){const d=a.regionIndex,c=this._editorDecorationIds[d];if(c&&!t[c]){t[c]=!0,r(d);const h=!this._regions.isCollapsed(d);this._regions.setCollapsed(d,h),o=Math.max(o,this._regions.getEndLineNumber(d))}}r(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:e})}removeManualRanges(e){const t=new Array,i=n=>{for(const o of e)if(!(o.startLineNumber>n.endLineNumber||n.startLineNumber>o.endLineNumber))return!0;return!1};for(let n=0;n<this._regions.length;n++){const o=this._regions.toFoldRange(n);(o.source===0||!i(o))&&t.push(o)}this.updatePost(Kd.fromFoldRanges(t))}update(e,t){const i=this._currentFoldedOrManualRanges(t),n=Kd.sanitizeAndMerge(e,i,this._textModel.getLineCount(),t);this.updatePost(Kd.fromFoldRanges(n))}updatePost(e){const t=[];let i=-1;for(let n=0,o=e.length;n<o;n++){const l=e.getStartLineNumber(n),r=e.getEndLineNumber(n),a=e.isCollapsed(n),d=e.getSource(n)!==0,c={startLineNumber:l,startColumn:this._textModel.getLineMaxColumn(l),endLineNumber:r,endColumn:this._textModel.getLineMaxColumn(r)+1};t.push({range:c,options:this._decorationProvider.getDecorationOption(a,r<=i,d)}),a&&r>i&&(i=r)}this._decorationProvider.changeDecorations(n=>this._editorDecorationIds=n.deltaDecorations(this._editorDecorationIds,t)),this._regions=e,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(e){const t=[];for(let i=0,n=this._regions.length;i<n;i++){let o=this.regions.isCollapsed(i);const l=this.regions.getSource(i);if(o||l!==0){const r=this._regions.toFoldRange(i),a=this._textModel.getDecorationRange(this._editorDecorationIds[i]);a&&(o&&(e!=null&&e.startsInside(a.startLineNumber+1,a.endLineNumber))&&(o=!1),t.push({startLineNumber:a.startLineNumber,endLineNumber:a.endLineNumber,type:r.type,isCollapsed:o,source:l}))}}return t}getMemento(){const e=this._currentFoldedOrManualRanges(),t=[],i=this._textModel.getLineCount();for(let n=0,o=e.length;n<o;n++){const l=e[n];if(l.startLineNumber>=l.endLineNumber||l.startLineNumber<1||l.endLineNumber>i)continue;const r=this._getLinesChecksum(l.startLineNumber+1,l.endLineNumber);t.push({startLineNumber:l.startLineNumber,endLineNumber:l.endLineNumber,isCollapsed:l.isCollapsed,source:l.source,checksum:r})}return t.length>0?t:void 0}applyMemento(e){if(!Array.isArray(e))return;const t=[],i=this._textModel.getLineCount();for(const o of e){if(o.startLineNumber>=o.endLineNumber||o.startLineNumber<1||o.endLineNumber>i)continue;const l=this._getLinesChecksum(o.startLineNumber+1,o.endLineNumber);(!o.checksum||l===o.checksum)&&t.push({startLineNumber:o.startLineNumber,endLineNumber:o.endLineNumber,type:void 0,isCollapsed:o.isCollapsed??!0,source:o.source??0})}const n=Kd.sanitizeAndMerge(this._regions,t,i);this.updatePost(Kd.fromFoldRanges(n))}_getLinesChecksum(e,t){return $5(this._textModel.getLineContent(e)+this._textModel.getLineContent(t))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(e,t){const i=[];if(this._regions){let n=this._regions.findRange(e),o=1;for(;n>=0;){const l=this._regions.toRegion(n);(!t||t(l,o))&&i.push(l),o++,n=l.parentIndex}}return i}getRegionAtLine(e){if(this._regions){const t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null}getRegionsInside(e,t){const i=[],n=e?e.regionIndex+1:0,o=e?e.endLineNumber:Number.MAX_VALUE;if(t&&t.length===2){const l=[];for(let r=n,a=this._regions.length;r<a;r++){const d=this._regions.toRegion(r);if(this._regions.getStartLineNumber(r)<o){for(;l.length>0&&!d.containedBy(l[l.length-1]);)l.pop();l.push(d),t(d,l.length)&&i.push(d)}else break}}else for(let l=n,r=this._regions.length;l<r;l++){const a=this._regions.toRegion(l);if(this._regions.getStartLineNumber(l)<o)(!t||t(a))&&i.push(a);else break}return i}}function Qie(s,e,t){const i=[];for(const n of t){const o=s.getRegionAtLine(n);if(o){const l=!o.isCollapsed;if(i.push(o),e>1){const r=s.getRegionsInside(o,(a,d)=>a.isCollapsed!==l&&d<e);i.push(...r)}}}s.toggleCollapseState(i)}function a1(s,e,t=Number.MAX_VALUE,i){const n=[];if(i&&i.length>0)for(const o of i){const l=s.getRegionAtLine(o);if(l&&(l.isCollapsed!==e&&n.push(l),t>1)){const r=s.getRegionsInside(l,(a,d)=>a.isCollapsed!==e&&d<t);n.push(...r)}}else{const o=s.getRegionsInside(null,(l,r)=>l.isCollapsed!==e&&r<t);n.push(...o)}s.toggleCollapseState(n)}function YZe(s,e,t,i){const n=[];for(const o of i){const l=s.getAllRegionsAtLine(o,(r,a)=>r.isCollapsed!==e&&a<=t);n.push(...l)}s.toggleCollapseState(n)}function bst(s,e,t){const i=[];for(const n of t){const o=s.getAllRegionsAtLine(n,l=>l.isCollapsed!==e);o.length>0&&i.push(o[0])}s.toggleCollapseState(i)}function Ust(s,e,t,i){const n=(l,r)=>r===e&&l.isCollapsed!==t&&!i.some(a=>l.containsLine(a)),o=s.getRegionsInside(null,n);s.toggleCollapseState(o)}function zZe(s,e,t){const i=[];for(const l of t){const r=s.getAllRegionsAtLine(l,void 0);r.length>0&&i.push(r[0])}const n=l=>i.every(r=>!r.containedBy(l)&&!l.containedBy(r))&&l.isCollapsed!==e,o=s.getRegionsInside(null,n);s.toggleCollapseState(o)}function yie(s,e,t){const i=s.textModel,n=s.regions,o=[];for(let l=n.length-1;l>=0;l--)if(t!==n.isCollapsed(l)){const r=n.getStartLineNumber(l);e.test(i.getLineContent(r))&&o.push(n.toRegion(l))}s.toggleCollapseState(o)}function Cie(s,e,t){const i=s.regions,n=[];for(let o=i.length-1;o>=0;o--)t!==i.isCollapsed(o)&&e===i.getType(o)&&n.push(i.toRegion(o));s.toggleCollapseState(n)}function fst(s,e){let t=null;const i=e.getRegionAtLine(s);if(i!==null&&(t=i.startLineNumber,s===t)){const n=i.parentIndex;n!==-1?t=e.regions.getStartLineNumber(n):t=null}return t}function Fst(s,e){let t=e.getRegionAtLine(s);if(t!==null&&t.startLineNumber===s){if(s!==t.startLineNumber)return t.startLineNumber;{const i=t.parentIndex;let n=0;for(i!==-1&&(n=e.regions.getStartLineNumber(t.parentIndex));t!==null;)if(t.regionIndex>0){if(t=e.regions.toRegion(t.regionIndex-1),t.startLineNumber<=n)return null;if(t.parentIndex===i)return t.startLineNumber}else return null}}else if(e.regions.length>0)for(t=e.regions.toRegion(e.regions.length-1);t!==null;){if(t.startLineNumber<s)return t.startLineNumber;t.regionIndex>0?t=e.regions.toRegion(t.regionIndex-1):t=null}return null}function Zst(s,e){let t=e.getRegionAtLine(s);if(t!==null&&t.startLineNumber===s){const i=t.parentIndex;let n=0;if(i!==-1)n=e.regions.getEndLineNumber(t.parentIndex);else{if(e.regions.length===0)return null;n=e.regions.getEndLineNumber(e.regions.length-1)}for(;t!==null;)if(t.regionIndex<e.regions.length){if(t=e.regions.toRegion(t.regionIndex+1),t.startLineNumber>=n)return null;if(t.parentIndex===i)return t.startLineNumber}else return null}else if(e.regions.length>0)for(t=e.regions.toRegion(0);t!==null;){if(t.startLineNumber>s)return t.startLineNumber;t.regionIndex<e.regions.length?t=e.regions.toRegion(t.regionIndex+1):t=null}return null}class Ast{get onDidChange(){return this._updateEventEmitter.event}get hiddenRanges(){return this._hiddenRanges}constructor(e){this._updateEventEmitter=new re,this._hasLineChanges=!1,this._foldingModel=e,this._foldingModelListener=e.onDidChange(t=>this.updateHiddenRanges()),this._hiddenRanges=[],e.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(e){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=e.changes.some(t=>t.range.endLineNumber!==t.range.startLineNumber||KU(t.text)[0]!==0))}updateHiddenRanges(){let e=!1;const t=[];let i=0,n=0,o=Number.MAX_VALUE,l=-1;const r=this._foldingModel.regions;for(;i<r.length;i++){if(!r.isCollapsed(i))continue;const a=r.getStartLineNumber(i)+1,d=r.getEndLineNumber(i);o<=a&&d<=l||(!e&&n<this._hiddenRanges.length&&this._hiddenRanges[n].startLineNumber===a&&this._hiddenRanges[n].endLineNumber===d?(t.push(this._hiddenRanges[n]),n++):(e=!0,t.push(new v(a,1,d,1))),o=a,l=d)}(this._hasLineChanges||e||n<this._hiddenRanges.length)&&this.applyHiddenRanges(t)}applyHiddenRanges(e){this._hiddenRanges=e,this._hasLineChanges=!1,this._updateEventEmitter.fire(e)}hasRanges(){return this._hiddenRanges.length>0}isHidden(e){return oce(this._hiddenRanges,e)!==null}adjustSelections(e){let t=!1;const i=this._foldingModel.textModel;let n=null;const o=l=>((!n||!Nst(l,n))&&(n=oce(this._hiddenRanges,l)),n?n.startLineNumber-1:null);for(let l=0,r=e.length;l<r;l++){let a=e[l];const d=o(a.startLineNumber);d&&(a=a.setStartPosition(d,i.getLineMaxColumn(d)),t=!0);const c=o(a.endLineNumber);c&&(a=a.setEndPosition(c,i.getLineMaxColumn(c)),t=!0),e[l]=a}return t}dispose(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}function Nst(s,e){return s>=e.startLineNumber&&s<=e.endLineNumber}function oce(s,e){const t=uM(s,i=>e<i.startLineNumber)-1;return t>=0&&s[t].endLineNumber>=e?s[t]:null}const Rst=5e3,Sst="indent";class wie{constructor(e,t,i){this.editorModel=e,this.languageConfigurationService=t,this.foldingRangesLimit=i,this.id=Sst}dispose(){}compute(e){const t=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,i=t&&!!t.offSide,n=t&&t.markers;return Promise.resolve(Qst(this.editorModel,i,n,this.foldingRangesLimit))}}let Wst=class{constructor(e){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=e}insertFirst(e,t,i){if(e>Tu||t>Tu)return;const n=this._length;this._startIndexes[n]=e,this._endIndexes[n]=t,this._length++,i<1e3&&(this._indentOccurrences[i]=(this._indentOccurrences[i]||0)+1)}toIndentRanges(e){const t=this._foldingRangesLimit.limit;if(this._length<=t){this._foldingRangesLimit.update(this._length,!1);const i=new Uint32Array(this._length),n=new Uint32Array(this._length);for(let o=this._length-1,l=0;o>=0;o--,l++)i[l]=this._startIndexes[o],n[l]=this._endIndexes[o];return new Kd(i,n)}else{this._foldingRangesLimit.update(this._length,t);let i=0,n=this._indentOccurrences.length;for(let a=0;a<this._indentOccurrences.length;a++){const d=this._indentOccurrences[a];if(d){if(d+i>t){n=a;break}i+=d}}const o=e.getOptions().tabSize,l=new Uint32Array(t),r=new Uint32Array(t);for(let a=this._length-1,d=0;a>=0;a--){const c=this._startIndexes[a],h=e.getLineContent(c),u=JY(h,o);(u<n||u===n&&i++<t)&&(l[d]=c,r[d]=this._endIndexes[a],d++)}return new Kd(l,r)}}};const Vst={limit:Rst,update:()=>{}};function Qst(s,e,t,i=Vst){const n=s.getOptions().tabSize,o=new Wst(i);let l;t&&(l=new RegExp(`(${t.start.source})|(?:${t.end.source})`));const r=[],a=s.getLineCount()+1;r.push({indent:-1,endAbove:a,line:a});for(let d=s.getLineCount();d>0;d--){const c=s.getLineContent(d),h=JY(c,n);let u=r[r.length-1];if(h===-1){e&&(u.endAbove=d);continue}let m;if(l&&(m=c.match(l)))if(m[1]){let p=r.length-1;for(;p>0&&r[p].indent!==-2;)p--;if(p>0){r.length=p+1,u=r[p],o.insertFirst(d,u.line,h),u.line=d,u.indent=h,u.endAbove=d;continue}}else{r.push({indent:-2,endAbove:d,line:d});continue}if(u.indent>h){do r.pop(),u=r[r.length-1];while(u.indent>h);const p=u.endAbove-1;p-d>=1&&o.insertFirst(d,p,h)}u.indent===h?u.endAbove=d:r.push({indent:h,endAbove:d,line:d})}return o.toIndentRanges(s)}const yst=K("editor.foldBackground",{light:ii(dU,.3),dark:ii(dU,.3),hcDark:null,hcLight:null},U("foldBackgroundBackground","Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.foldPlaceholderForeground",{light:"#808080",dark:"#808080",hcDark:null,hcLight:null},U("collapsedTextColor","Color of the collapsed text after the first line of a folded range."));K("editorGutter.foldingControlForeground",lv,U("editorGutter.foldingControlForeground","Color of the folding control in the editor gutter."));const Jx=ts("folding-expanded",ke.chevronDown,U("foldingExpandedIcon","Icon for expanded ranges in the editor glyph margin.")),Xx=ts("folding-collapsed",ke.chevronRight,U("foldingCollapsedIcon","Icon for collapsed ranges in the editor glyph margin.")),lce=ts("folding-manual-collapsed",Xx,U("foldingManualCollapedIcon","Icon for manually collapsed ranges in the editor glyph margin.")),rce=ts("folding-manual-expanded",Jx,U("foldingManualExpandedIcon","Icon for manually expanded ranges in the editor glyph margin.")),A_={color:Gs(yst),position:1},JN=U("linesCollapsed","Click to expand the range."),wk=U("linesExpanded","Click to collapse the range."),bo=class bo{constructor(e){this.editor=e,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(e,t,i){return t?bo.HIDDEN_RANGE_DECORATION:this.showFoldingControls==="never"?e?this.showFoldingHighlights?bo.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:bo.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:bo.NO_CONTROLS_EXPANDED_RANGE_DECORATION:e?i?this.showFoldingHighlights?bo.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:bo.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?bo.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:bo.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls==="mouseover"?i?bo.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:bo.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:i?bo.MANUALLY_EXPANDED_VISUAL_DECORATION:bo.EXPANDED_VISUAL_DECORATION}changeDecorations(e){return this.editor.changeDecorations(e)}removeDecorations(e){this.editor.removeDecorations(e)}};bo.COLLAPSED_VISUAL_DECORATION=Ot.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:JN,firstLineDecorationClassName:Qt.asClassName(Xx)}),bo.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=Ot.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:A_,isWholeLine:!0,linesDecorationsTooltip:JN,firstLineDecorationClassName:Qt.asClassName(Xx)}),bo.MANUALLY_COLLAPSED_VISUAL_DECORATION=Ot.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:JN,firstLineDecorationClassName:Qt.asClassName(lce)}),bo.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=Ot.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:A_,isWholeLine:!0,linesDecorationsTooltip:JN,firstLineDecorationClassName:Qt.asClassName(lce)}),bo.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=Ot.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,linesDecorationsTooltip:JN}),bo.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=Ot.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:A_,isWholeLine:!0,linesDecorationsTooltip:JN}),bo.EXPANDED_VISUAL_DECORATION=Ot.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+Qt.asClassName(Jx),linesDecorationsTooltip:wk}),bo.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=Ot.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:Qt.asClassName(Jx),linesDecorationsTooltip:wk}),bo.MANUALLY_EXPANDED_VISUAL_DECORATION=Ot.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+Qt.asClassName(rce),linesDecorationsTooltip:wk}),bo.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=Ot.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:Qt.asClassName(rce),linesDecorationsTooltip:wk}),bo.NO_CONTROLS_EXPANDED_RANGE_DECORATION=Ot.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0}),bo.HIDDEN_RANGE_DECORATION=Ot.register({description:"folding-hidden-range-decoration",stickiness:1});let H7=bo;const Cst={},wst="syntax";class Mie{constructor(e,t,i,n,o){this.editorModel=e,this.providers=t,this.handleFoldingRangesChange=i,this.foldingRangesLimit=n,this.fallbackRangeProvider=o,this.id=wst,this.disposables=new Ze,o&&this.disposables.add(o);for(const l of t)typeof l.onDidChange=="function"&&this.disposables.add(l.onDidChange(i))}compute(e){return Mst(this.providers,this.editorModel,e).then(t=>{var i;return t?Bst(t,this.foldingRangesLimit):((i=this.fallbackRangeProvider)==null?void 0:i.compute(e))??null})}dispose(){this.disposables.dispose()}}function Mst(s,e,t){let i=null;const n=s.map((o,l)=>Promise.resolve(o.provideFoldingRanges(e,Cst,t)).then(r=>{if(!t.isCancellationRequested&&Array.isArray(r)){Array.isArray(i)||(i=[]);const a=e.getLineCount();for(const d of r)d.start>0&&d.end>d.start&&d.end<=a&&i.push({start:d.start,end:d.end,rank:l,kind:d.kind})}},Os));return Promise.all(n).then(o=>i)}class Tst{constructor(e){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=e}add(e,t,i,n){if(e>Tu||t>Tu)return;const o=this._length;this._startIndexes[o]=e,this._endIndexes[o]=t,this._nestingLevels[o]=n,this._types[o]=i,this._length++,n<30&&(this._nestingLevelCounts[n]=(this._nestingLevelCounts[n]||0)+1)}toIndentRanges(){const e=this._foldingRangesLimit.limit;if(this._length<=e){this._foldingRangesLimit.update(this._length,!1);const t=new Uint32Array(this._length),i=new Uint32Array(this._length);for(let n=0;n<this._length;n++)t[n]=this._startIndexes[n],i[n]=this._endIndexes[n];return new Kd(t,i,this._types)}else{this._foldingRangesLimit.update(this._length,e);let t=0,i=this._nestingLevelCounts.length;for(let r=0;r<this._nestingLevelCounts.length;r++){const a=this._nestingLevelCounts[r];if(a){if(a+t>e){i=r;break}t+=a}}const n=new Uint32Array(e),o=new Uint32Array(e),l=[];for(let r=0,a=0;r<this._length;r++){const d=this._nestingLevels[r];(d<i||d===i&&t++<e)&&(n[a]=this._startIndexes[r],o[a]=this._endIndexes[r],l[a]=this._types[r],a++)}return new Kd(n,o,l)}}}function Bst(s,e){const t=s.sort((l,r)=>{let a=l.start-r.start;return a===0&&(a=l.rank-r.rank),a}),i=new Tst(e);let n;const o=[];for(const l of t)if(!n)n=l,i.add(l.start,l.end,l.kind&&l.kind.value,o.length);else if(l.start>n.start)if(l.end<=n.end)o.push(n),n=l,i.add(l.start,l.end,l.kind&&l.kind.value,o.length);else{if(l.start>n.end){do n=o.pop();while(n&&l.start>n.end);n&&o.push(n),n=l}i.add(l.start,l.end,l.kind&&l.kind.value,o.length)}return i.toIndentRanges()}var Lst=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},P1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},NF;const vl=new Ke("foldingEnabled",!1);var mQ;let af=(mQ=class extends de{static get(e){return e.getContribution(NF.ID)}static getFoldingRangeProviders(e,t){var n;const i=e.foldingRangeProvider.ordered(t);return((n=NF._foldingRangeSelector)==null?void 0:n.call(NF,i,t))??i}constructor(e,t,i,n,o,l){super(),this.contextKeyService=t,this.languageConfigurationService=i,this.languageFeaturesService=l,this.localToDispose=this._register(new Ze),this.editor=e,this._foldingLimitReporter=new _Ze(e);const r=this.editor.getOptions();this._isEnabled=r.get(43),this._useFoldingProviders=r.get(44)!=="indentation",this._unfoldOnClickAfterEndOfLine=r.get(48),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=r.get(46),this.updateDebounceInfo=o.for(l.foldingRangeProvider,"Folding",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new H7(e),this.foldingDecorationProvider.showFoldingControls=r.get(111),this.foldingDecorationProvider.showFoldingHighlights=r.get(45),this.foldingEnabled=vl.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(a=>{if(a.hasChanged(43)&&(this._isEnabled=this.editor.getOptions().get(43),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),a.hasChanged(47)&&this.onModelChanged(),a.hasChanged(111)||a.hasChanged(45)){const d=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=d.get(111),this.foldingDecorationProvider.showFoldingHighlights=d.get(45),this.triggerFoldingModelChanged()}a.hasChanged(44)&&(this._useFoldingProviders=this.editor.getOptions().get(44)!=="indentation",this.onFoldingStrategyChanged()),a.hasChanged(48)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(48)),a.hasChanged(46)&&(this._foldingImportsByDefault=this.editor.getOptions().get(46))})),this.onModelChanged()}saveViewState(){const e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){const t=this.foldingModel.getMemento(),i=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:i,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(e){const t=this.editor.getModel();if(!(!t||!this._isEnabled||t.isTooLargeForTokenization()||!this.hiddenRangeModel)&&e&&(this._currentModelHasFoldedImports=!!e.foldedImports,e.collapsedRegions&&e.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(e.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const e=this.editor.getModel();!this._isEnabled||!e||e.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new gst(e,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new Ast(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(t=>this.onHiddenRangesChanges(t))),this.updateScheduler=new Hc(this.updateDebounceInfo.get(e)),this.cursorChangedScheduler=new Rn(()=>this.revealCursor(),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelContent(t=>this.onDidChangeModelContent(t))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(t=>this.onEditorMouseDown(t))),this.localToDispose.add(this.editor.onMouseUp(t=>this.onEditorMouseUp(t))),this.localToDispose.add({dispose:()=>{var t,i;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(t=this.updateScheduler)==null||t.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(i=this.rangeProvider)==null||i.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var e;(e=this.rangeProvider)==null||e.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(e){if(this.rangeProvider)return this.rangeProvider;const t=new wie(e,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=t,this._useFoldingProviders&&this.foldingModel){const i=NF.getFoldingRangeProviders(this.languageFeaturesService,e);i.length>0&&(this.rangeProvider=new Mie(e,i,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,t))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(e){var t;(t=this.hiddenRangeModel)==null||t.notifyChangeModelContent(e),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const e=this.foldingModel;if(!e)return null;const t=new ol,i=this.getRangeProvider(e.textModel),n=this.foldingRegionPromise=Xo(o=>i.compute(o));return n.then(o=>{if(o&&n===this.foldingRegionPromise){let l;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const d=o.setCollapsedAllOfType(_U.Imports.value,!0);d&&(l=em.capture(this.editor),this._currentModelHasFoldedImports=d)}const r=this.editor.getSelections();e.update(o,kst(r)),l==null||l.restore(this.editor);const a=this.updateDebounceInfo.update(e.textModel,t.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=a)}return e})}).then(void 0,e=>(vt(e),null)))}onHiddenRangesChanges(e){if(this.hiddenRangeModel&&e.length&&!this._restoringViewState){const t=this.editor.getSelections();t&&this.hiddenRangeModel.adjustSelections(t)&&this.editor.setSelections(t)}this.editor.setHiddenAreas(e,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const e=this.getFoldingModel();e&&e.then(t=>{if(t){const i=this.editor.getSelections();if(i&&i.length>0){const n=[];for(const o of i){const l=o.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden(l)&&n.push(...t.getAllRegionsAtLine(l,r=>r.isCollapsed&&l>r.startLineNumber))}n.length&&(t.toggleCollapseState(n),this.reveal(i[0].getPosition()))}}}).then(void 0,vt)}onEditorMouseDown(e){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!e.target||!e.target.range||!e.event.leftButton&&!e.event.middleButton)return;const t=e.target.range;let i=!1;switch(e.target.type){case 4:{const n=e.target.detail,o=e.target.element.offsetLeft;if(n.offsetX-o<4)return;i=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!e.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const n=this.editor.getModel();if(n&&t.startColumn===n.getLineMaxColumn(t.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:t.startLineNumber,iconClicked:i}}onEditorMouseUp(e){const t=this.foldingModel;if(!t||!this.mouseDownInfo||!e.target)return;const i=this.mouseDownInfo.lineNumber,n=this.mouseDownInfo.iconClicked,o=e.target.range;if(!o||o.startLineNumber!==i)return;if(n){if(e.target.type!==4)return}else{const r=this.editor.getModel();if(!r||o.startColumn!==r.getLineMaxColumn(i))return}const l=t.getRegionAtLine(i);if(l&&l.startLineNumber===i){const r=l.isCollapsed;if(n||r){const a=e.event.altKey;let d=[];if(a){const c=u=>!u.containedBy(l)&&!l.containedBy(u),h=t.getRegionsInside(null,c);for(const u of h)u.isCollapsed&&d.push(u);d.length===0&&(d=h)}else{const c=e.event.middleButton||e.event.shiftKey;if(c)for(const h of t.getRegionsInside(l))h.isCollapsed===r&&d.push(h);(r||!c||d.length===0)&&d.push(l)}t.toggleCollapseState(d),this.reveal({lineNumber:i,column:1})}}}reveal(e){this.editor.revealPositionInCenterIfOutsideViewport(e,0)}},NF=mQ,mQ.ID="editor.contrib.folding",mQ);af=NF=Lst([P1(1,wt),P1(2,Qs),P1(3,no),P1(4,gc),P1(5,lt)],af);class _Ze{constructor(e){this.editor=e,this._onDidChange=new re,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(47)}update(e,t){(e!==this._computed||t!==this._limited)&&(this._computed=e,this._limited=t,this._onDidChange.fire())}}class ar extends et{runEditorCommand(e,t,i){const n=e.get(Qs),o=af.get(t);if(!o)return;const l=o.getFoldingModel();if(l)return this.reportTelemetry(e,t),l.then(r=>{if(r){this.invoke(o,r,t,i,n);const a=t.getSelection();a&&o.reveal(a.getStartPosition())}})}getSelectedLines(e){const t=e.getSelections();return t?t.map(i=>i.startLineNumber):[]}getLineNumbers(e,t){return e&&e.selectionLines?e.selectionLines.map(i=>i+1):this.getSelectedLines(t)}run(e,t){}}function kst(s){return!s||s.length===0?{startsInside:()=>!1}:{startsInside(e,t){for(const i of s){const n=i.startLineNumber;if(n>=e&&n<=t)return!0}return!1}}}function OZe(s){if(!Rr(s)){if(!il(s))return!1;const e=s;if(!Rr(e.levels)&&!XU(e.levels)||!Rr(e.direction)&&!Da(e.direction)||!Rr(e.selectionLines)&&(!Array.isArray(e.selectionLines)||!e.selectionLines.every(XU)))return!1}return!0}class Ist extends ar{constructor(){super({id:"editor.unfold",label:U("unfoldAction.label","Unfold"),alias:"Unfold",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},metadata:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:`Property-value pairs that can be passed through this argument:
- * 'levels': Number of levels to unfold. If not set, defaults to 1.
- * 'direction': If 'up', unfold given number of levels up otherwise unfolds down.
- * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.
- `,constraint:OZe,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,n){const o=n&&n.levels||1,l=this.getLineNumbers(n,i);n&&n.direction==="up"?YZe(t,!1,o,l):a1(t,!1,o,l)}}class Dst extends ar{constructor(){super({id:"editor.unfoldRecursively",label:U("unFoldRecursivelyAction.label","Unfold Recursively"),alias:"Unfold Recursively",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2142),weight:100}})}invoke(e,t,i,n){a1(t,!1,Number.MAX_VALUE,this.getSelectedLines(i))}}class Gst extends ar{constructor(){super({id:"editor.fold",label:U("foldAction.label","Fold"),alias:"Fold",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:3164,mac:{primary:2652},weight:100},metadata:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:`Property-value pairs that can be passed through this argument:
- * 'levels': Number of levels to fold.
- * 'direction': If 'up', folds given number of levels up otherwise folds down.
- * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.
- If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.
- `,constraint:OZe,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,n){const o=this.getLineNumbers(n,i),l=n&&n.levels,r=n&&n.direction;typeof l!="number"&&typeof r!="string"?bst(t,!0,o):r==="up"?YZe(t,!0,l||1,o):a1(t,!0,l||1,o)}}class Est extends ar{constructor(){super({id:"editor.toggleFold",label:U("toggleFoldAction.label","Toggle Fold"),alias:"Toggle Fold",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2090),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);Qie(t,1,n)}}class vst extends ar{constructor(){super({id:"editor.foldRecursively",label:U("foldRecursivelyAction.label","Fold Recursively"),alias:"Fold Recursively",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2140),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);a1(t,!0,Number.MAX_VALUE,n)}}class xst extends ar{constructor(){super({id:"editor.toggleFoldRecursively",label:U("toggleFoldRecursivelyAction.label","Toggle Fold Recursively"),alias:"Toggle Fold Recursively",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,3114),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);Qie(t,Number.MAX_VALUE,n)}}class Jst extends ar{constructor(){super({id:"editor.foldAllBlockComments",label:U("foldAllBlockComments.label","Fold All Block Comments"),alias:"Fold All Block Comments",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2138),weight:100}})}invoke(e,t,i,n,o){if(t.regions.hasTypes())Cie(t,_U.Comment.value,!0);else{const l=i.getModel();if(!l)return;const r=o.getLanguageConfiguration(l.getLanguageId()).comments;if(r&&r.blockCommentStartToken){const a=new RegExp("^\\s*"+dc(r.blockCommentStartToken));yie(t,a,!0)}}}}class Xst extends ar{constructor(){super({id:"editor.foldAllMarkerRegions",label:U("foldAllMarkerRegions.label","Fold All Regions"),alias:"Fold All Regions",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2077),weight:100}})}invoke(e,t,i,n,o){if(t.regions.hasTypes())Cie(t,_U.Region.value,!0);else{const l=i.getModel();if(!l)return;const r=o.getLanguageConfiguration(l.getLanguageId()).foldingRules;if(r&&r.markers&&r.markers.start){const a=new RegExp(r.markers.start);yie(t,a,!0)}}}}class Yst extends ar{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:U("unfoldAllMarkerRegions.label","Unfold All Regions"),alias:"Unfold All Regions",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2078),weight:100}})}invoke(e,t,i,n,o){if(t.regions.hasTypes())Cie(t,_U.Region.value,!1);else{const l=i.getModel();if(!l)return;const r=o.getLanguageConfiguration(l.getLanguageId()).foldingRules;if(r&&r.markers&&r.markers.start){const a=new RegExp(r.markers.start);yie(t,a,!1)}}}}class zst extends ar{constructor(){super({id:"editor.foldAllExcept",label:U("foldAllExcept.label","Fold All Except Selected"),alias:"Fold All Except Selected",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2136),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);zZe(t,!0,n)}}class _st extends ar{constructor(){super({id:"editor.unfoldAllExcept",label:U("unfoldAllExcept.label","Unfold All Except Selected"),alias:"Unfold All Except Selected",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2134),weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);zZe(t,!1,n)}}class Ost extends ar{constructor(){super({id:"editor.foldAll",label:U("foldAllAction.label","Fold All"),alias:"Fold All",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2069),weight:100}})}invoke(e,t,i){a1(t,!0)}}class jst extends ar{constructor(){super({id:"editor.unfoldAll",label:U("unfoldAllAction.label","Unfold All"),alias:"Unfold All",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2088),weight:100}})}invoke(e,t,i){a1(t,!1)}}const lW=class lW extends ar{getFoldingLevel(){return parseInt(this.id.substr(lW.ID_PREFIX.length))}invoke(e,t,i){Ust(t,this.getFoldingLevel(),!0,this.getSelectedLines(i))}};lW.ID_PREFIX="editor.foldLevel",lW.ID=e=>lW.ID_PREFIX+e;let Yx=lW;class Hst extends ar{constructor(){super({id:"editor.gotoParentFold",label:U("gotoParentFold.label","Go to Parent Fold"),alias:"Go to Parent Fold",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);if(n.length>0){const o=fst(n[0],t);o!==null&&i.setSelection({startLineNumber:o,startColumn:1,endLineNumber:o,endColumn:1})}}}class Pst extends ar{constructor(){super({id:"editor.gotoPreviousFold",label:U("gotoPreviousFold.label","Go to Previous Folding Range"),alias:"Go to Previous Folding Range",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);if(n.length>0){const o=Fst(n[0],t);o!==null&&i.setSelection({startLineNumber:o,startColumn:1,endLineNumber:o,endColumn:1})}}}class Kst extends ar{constructor(){super({id:"editor.gotoNextFold",label:U("gotoNextFold.label","Go to Next Folding Range"),alias:"Go to Next Folding Range",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,weight:100}})}invoke(e,t,i){const n=this.getSelectedLines(i);if(n.length>0){const o=Zst(n[0],t);o!==null&&i.setSelection({startLineNumber:o,startColumn:1,endLineNumber:o,endColumn:1})}}}class qst extends ar{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:U("createManualFoldRange.label","Create Folding Range from Selection"),alias:"Create Folding Range from Selection",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2135),weight:100}})}invoke(e,t,i){var l;const n=[],o=i.getSelections();if(o){for(const r of o){let a=r.endLineNumber;r.endColumn===1&&--a,a>r.startLineNumber&&(n.push({startLineNumber:r.startLineNumber,endLineNumber:a,type:void 0,isCollapsed:!0,source:1}),i.setSelection({startLineNumber:r.startLineNumber,startColumn:1,endLineNumber:r.startLineNumber,endColumn:1}))}if(n.length>0){n.sort((a,d)=>a.startLineNumber-d.startLineNumber);const r=Kd.sanitizeAndMerge(t.regions,n,(l=i.getModel())==null?void 0:l.getLineCount());t.updatePost(Kd.fromFoldRanges(r))}}}}class $st extends ar{constructor(){super({id:"editor.removeManualFoldingRanges",label:U("removeManualFoldingRanges.label","Remove Manual Folding Ranges"),alias:"Remove Manual Folding Ranges",precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2137),weight:100}})}invoke(e,t,i){const n=i.getSelections();if(n){const o=[];for(const l of n){const{startLineNumber:r,endLineNumber:a}=l;o.push(a>=r?{startLineNumber:r,endLineNumber:a}:{endLineNumber:a,startLineNumber:r})}t.removeManualRanges(o),e.triggerFoldingModelChanged()}}}Gi(af.ID,af,0);Me(Ist);Me(Dst);Me(Gst);Me(vst);Me(xst);Me(Ost);Me(jst);Me(Jst);Me(Xst);Me(Yst);Me(zst);Me(_st);Me(Est);Me(Hst);Me(Pst);Me(Kst);Me(qst);Me($st);for(let s=1;s<=7;s++)Ave(new Yx({id:Yx.ID(s),label:U("foldLevelAction.label","Fold Level {0}",s),alias:`Fold Level ${s}`,precondition:vl,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2048|21+s),weight:100}}));Bi.registerCommand("_executeFoldingRangeProvider",async function(s,...e){const[t]=e;if(!(t instanceof At))throw Yc();const i=s.get(lt),n=s.get(es).getModel(t);if(!n)throw Yc();const o=s.get(li);if(!o.getValue("editor.folding",{resource:t}))return[];const l=s.get(Qs),r=o.getValue("editor.foldingStrategy",{resource:t}),a={get limit(){return o.getValue("editor.foldingMaximumRegions",{resource:t})},update:(m,p)=>{}},d=new wie(n,l,a);let c=d;if(r!=="indentation"){const m=af.getFoldingRangeProviders(i,n);m.length&&(c=new Mie(n,m,()=>{},a,d))}const h=await c.compute($t.None),u=[];try{if(h)for(let m=0;m<h.length;m++){const p=h.getType(m);u.push({start:h.getStartLineNumber(m),end:h.getEndLineNumber(m),kind:p?_U.fromValue(p):void 0})}return u}finally{c.dispose()}});class eot extends et{constructor(){super({id:"editor.action.fontZoomIn",label:U("EditorFontZoomIn.label","Increase Editor Font Size"),alias:"Increase Editor Font Size",precondition:void 0})}run(e,t){Gc.setZoomLevel(Gc.getZoomLevel()+1)}}class tot extends et{constructor(){super({id:"editor.action.fontZoomOut",label:U("EditorFontZoomOut.label","Decrease Editor Font Size"),alias:"Decrease Editor Font Size",precondition:void 0})}run(e,t){Gc.setZoomLevel(Gc.getZoomLevel()-1)}}class iot extends et{constructor(){super({id:"editor.action.fontZoomReset",label:U("EditorFontZoomReset.label","Reset Editor Font Size"),alias:"Reset Editor Font Size",precondition:void 0})}run(e,t){Gc.setZoomLevel(0)}}Me(eot);Me(tot);Me(iot);var jZe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},EC=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},ET;let zx=(ET=class{constructor(e,t,i,n){this._editor=e,this._languageFeaturesService=t,this._workerService=i,this._accessibilitySignalService=n,this._disposables=new Ze,this._sessionDisposables=new Ze,this._disposables.add(t.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(e.onDidChangeModel(()=>this._update())),this._disposables.add(e.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(e.onDidChangeConfiguration(o=>{o.hasChanged(56)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(56)||!this._editor.hasModel())return;const e=this._editor.getModel(),[t]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(e);if(!t||!t.autoFormatTriggerCharacters)return;const i=new PE;for(const n of t.autoFormatTriggerCharacters)i.add(n.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(n=>{const o=n.charCodeAt(n.length-1);i.has(o)&&this._trigger(String.fromCharCode(o))}))}_trigger(e){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const t=this._editor.getModel(),i=this._editor.getPosition(),n=new Ws,o=this._editor.onDidChangeModelContent(l=>{if(l.isFlush){n.cancel(),o.dispose();return}for(let r=0,a=l.changes.length;r<a;r++)if(l.changes[r].range.endLineNumber<=i.lineNumber){n.cancel(),o.dispose();return}});qfe(this._workerService,this._languageFeaturesService,t,i,e,t.getFormattingOptions(),n.token).then(l=>{n.token.isCancellationRequested||Sr(l)&&(this._accessibilitySignalService.playSignal(Pd.format,{userGesture:!1}),NV.execute(this._editor,l,!0))}).finally(()=>{o.dispose()})}},ET.ID="editor.contrib.autoFormat",ET);zx=jZe([EC(1,lt),EC(2,_a),EC(3,Ff)],zx);var vT;let _x=(vT=class{constructor(e,t,i){this.editor=e,this._languageFeaturesService=t,this._instantiationService=i,this._callOnDispose=new Ze,this._callOnModel=new Ze,this._callOnDispose.add(e.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(e.onDidChangeModel(()=>this._update())),this._callOnDispose.add(e.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(t.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(55)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:e})=>this._trigger(e)))}_trigger(e){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(Kfe,this.editor,e,2,Gu.None,$t.None,!1).catch(vt))}},vT.ID="editor.contrib.formatOnPaste",vT);_x=jZe([EC(1,lt),EC(2,bt)],_x);class not extends et{constructor(){super({id:"editor.action.formatDocument",label:U("formatDocument.label","Format Document"),alias:"Format Document",precondition:Ne.and(H.notInCompositeEditor,H.writable,H.hasDocumentFormattingProvider),kbOpts:{kbExpr:H.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(e,t){if(t.hasModel()){const i=e.get(bt);await e.get(bf).showWhile(i.invokeFunction(m$e,t,1,Gu.None,$t.None,!0),250)}}}class sot extends et{constructor(){super({id:"editor.action.formatSelection",label:U("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:Ne.and(H.writable,H.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2084),weight:100},contextMenuOpts:{when:H.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(e,t){if(!t.hasModel())return;const i=e.get(bt),n=t.getModel(),o=t.getSelections().map(r=>r.isEmpty()?new v(r.startLineNumber,1,r.startLineNumber,n.getLineMaxColumn(r.startLineNumber)):r);await e.get(bf).showWhile(i.invokeFunction(Kfe,t,o,1,Gu.None,$t.None,!0),250)}}Gi(zx.ID,zx,2);Gi(_x.ID,_x,2);Me(not);Me(sot);Bi.registerCommand("editor.action.format",async s=>{const e=s.get(zi).getFocusedCodeEditor();if(!e||!e.hasModel())return;const t=s.get(On);e.getSelection().isEmpty()?await t.executeCommand("editor.action.formatDocument"):await t.executeCommand("editor.action.formatSelection")});var oot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},N_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class WS{remove(){var e;(e=this.parent)==null||e.children.delete(this.id)}static findId(e,t){let i;typeof e=="string"?i=`${t.id}/${e}`:(i=`${t.id}/${e.name}`,t.children.get(i)!==void 0&&(i=`${t.id}/${e.name}_${e.range.startLineNumber}_${e.range.startColumn}`));let n=i;for(let o=0;t.children.get(n)!==void 0;o++)n=`${i}_${o}`;return n}static empty(e){return e.children.size===0}}class P7 extends WS{constructor(e,t,i){super(),this.id=e,this.parent=t,this.symbol=i,this.children=new Map}}class HZe extends WS{constructor(e,t,i,n){super(),this.id=e,this.parent=t,this.label=i,this.order=n,this.children=new Map}}class Lg extends WS{static create(e,t,i){const n=new Ws(i),o=new Lg(t.uri),l=e.ordered(t),r=l.map((d,c)=>{const h=WS.findId(`provider_${c}`,o),u=new HZe(h,o,d.displayName??"Unknown Outline Provider",c);return Promise.resolve(d.provideDocumentSymbols(t,n.token)).then(m=>{for(const p of m||[])Lg._makeOutlineElement(p,u);return u},m=>(Os(m),u)).then(m=>{WS.empty(m)?m.remove():o._groups.set(h,m)})}),a=e.onDidChange(()=>{const d=e.ordered(t);Fs(d,l)||n.cancel()});return Promise.all(r).then(()=>n.token.isCancellationRequested&&!i.isCancellationRequested?Lg.create(e,t,i):o._compact()).finally(()=>{n.dispose(),a.dispose(),n.dispose()})}static _makeOutlineElement(e,t){const i=WS.findId(e,t),n=new P7(i,t,e);if(e.children)for(const o of e.children)Lg._makeOutlineElement(o,n);t.children.set(n.id,n)}constructor(e){super(),this.uri=e,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let e=0;for(const[t,i]of this._groups)i.children.size===0?this._groups.delete(t):e+=1;if(e!==1)this.children=this._groups;else{const t=Ti.first(this._groups.values());for(const[,i]of t.children)i.parent=this,this.children.set(i.id,i)}return this}getTopLevelSymbols(){const e=[];for(const t of this.children.values())t instanceof P7?e.push(t.symbol):e.push(...Ti.map(t.children.values(),i=>i.symbol));return e.sort((t,i)=>v.compareRangesUsingStarts(t.range,i.range))}asListOfDocumentSymbols(){const e=this.getTopLevelSymbols(),t=[];return Lg._flattenDocumentSymbols(t,e,""),t.sort((i,n)=>oe.compare(v.getStartPosition(i.range),v.getStartPosition(n.range))||oe.compare(v.getEndPosition(n.range),v.getEndPosition(i.range)))}static _flattenDocumentSymbols(e,t,i){for(const n of t)e.push({kind:n.kind,tags:n.tags,name:n.name,detail:n.detail,containerName:n.containerName||i,range:n.range,selectionRange:n.selectionRange,children:void 0}),n.children&&Lg._flattenDocumentSymbols(e,n.children,n.name)}}const DB=Zi("IOutlineModelService");let K7=class{constructor(e,t,i){this._languageFeaturesService=e,this._disposables=new Ze,this._cache=new Ip(10,.7),this._debounceInformation=t.for(e.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(i.onModelRemoved(n=>{this._cache.delete(n.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(e,t){const i=this._languageFeaturesService.documentSymbolProvider,n=i.ordered(e);let o=this._cache.get(e.id);if(!o||o.versionId!==e.getVersionId()||!Fs(o.provider,n)){const r=new Ws;o={versionId:e.getVersionId(),provider:n,promiseCnt:0,source:r,promise:Lg.create(i,e,r.token),model:void 0},this._cache.set(e.id,o);const a=Date.now();o.promise.then(d=>{o.model=d,this._debounceInformation.update(e,Date.now()-a)}).catch(d=>{this._cache.delete(e.id)})}if(o.model)return o.model;o.promiseCnt+=1;const l=t.onCancellationRequested(()=>{--o.promiseCnt===0&&(o.source.cancel(),this._cache.delete(e.id))});try{return await o.promise}finally{l.dispose()}}};K7=oot([N_(0,lt),N_(1,gc),N_(2,es)],K7);Ci(DB,K7,1);Bi.registerCommand("_executeDocumentSymbolProvider",async function(s,...e){const[t]=e;Yi(At.isUri(t));const i=s.get(DB),o=await s.get(Xa).createModelReference(t);try{return(await i.getOrCreate(o.object.textEditorModel,$t.None)).getTopLevelSymbols()}finally{o.dispose()}});const Jm=class Jm extends de{constructor(e,t){super(),this.contextKeyService=e,this.model=t,this.inlineCompletionVisible=Jm.inlineSuggestionVisible.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentation=Jm.inlineSuggestionHasIndentation.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentationLessThanTabSize=Jm.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService),this.suppressSuggestions=Jm.suppressSuggestions.bindTo(this.contextKeyService),this._register(Gt(i=>{const n=this.model.read(i),o=n==null?void 0:n.state.read(i),l=!!(o!=null&&o.inlineCompletion)&&(o==null?void 0:o.primaryGhostText)!==void 0&&!(o!=null&&o.primaryGhostText.isEmpty());this.inlineCompletionVisible.set(l),o!=null&&o.primaryGhostText&&(o!=null&&o.inlineCompletion)&&this.suppressSuggestions.set(o.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)})),this._register(Gt(i=>{const n=this.model.read(i);let o=!1,l=!0;const r=n==null?void 0:n.primaryGhostText.read(i);if(n!=null&&n.selectedSuggestItem&&r&&r.parts.length>0){const{column:a,lines:d}=r.parts[0],c=d[0],h=n.textModel.getLineIndentColumn(r.lineNumber);if(a<=h){let m=Wr(c);m===-1&&(m=c.length-1),o=m>0;const p=n.textModel.getOptions().tabSize;l=ko.visibleColumnFromColumn(c,m+1,p)<p}}this.inlineCompletionSuggestsIndentation.set(o),this.inlineCompletionSuggestsIndentationLessThanTabSize.set(l)}))}};Jm.inlineSuggestionVisible=new Ke("inlineSuggestionVisible",!1,U("inlineSuggestionVisible","Whether an inline suggestion is visible")),Jm.inlineSuggestionHasIndentation=new Ke("inlineSuggestionHasIndentation",!1,U("inlineSuggestionHasIndentation","Whether the inline suggestion starts with whitespace")),Jm.inlineSuggestionHasIndentationLessThanTabSize=new Ke("inlineSuggestionHasIndentationLessThanTabSize",!0,U("inlineSuggestionHasIndentationLessThanTabSize","Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab")),Jm.suppressSuggestions=new Ke("inlineSuggestionSuppressSuggestions",void 0,U("suppressSuggestions","Whether suggestions should be suppressed for the current suggestion"));let Zd=Jm;function lot(s){const e=new Ze,t=e.add(Wge());return e.add(Gt(i=>{t.setStyle(s.read(i))})),e}class mT{constructor(e,t){this.lineNumber=e,this.parts=t}equals(e){return this.lineNumber===e.lineNumber&&this.parts.length===e.parts.length&&this.parts.every((t,i)=>t.equals(e.parts[i]))}renderForScreenReader(e){if(this.parts.length===0)return"";const t=this.parts[this.parts.length-1],i=e.substr(0,t.column-1);return new P$([...this.parts.map(o=>new Rp(v.fromPositions(new oe(1,o.column)),o.lines.join(`
- `)))]).applyToString(i).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every(e=>e.lines.length===0)}get lineCount(){return 1+this.parts.reduce((e,t)=>e+t.lines.length-1,0)}}class Ox{constructor(e,t,i){this.column=e,this.text=t,this.preview=i,this.lines=Lp(this.text)}equals(e){return this.column===e.column&&this.lines.length===e.lines.length&&this.lines.every((t,i)=>t===e.lines[i])}}class q7{constructor(e,t,i,n=0){this.lineNumber=e,this.columnRange=t,this.text=i,this.additionalReservedLineCount=n,this.parts=[new Ox(this.columnRange.endColumnExclusive,this.text,!1)],this.newLines=Lp(this.text)}renderForScreenReader(e){return this.newLines.join(`
- `)}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every(e=>e.lines.length===0)}equals(e){return this.lineNumber===e.lineNumber&&this.columnRange.equals(e.columnRange)&&this.newLines.length===e.newLines.length&&this.newLines.every((t,i)=>t===e.newLines[i])&&this.additionalReservedLineCount===e.additionalReservedLineCount}}function ace(s,e){return Fs(s,e,PZe)}function PZe(s,e){return s===e?!0:!s||!e?!1:s instanceof mT&&e instanceof mT||s instanceof q7&&e instanceof q7?s.equals(e):!1}const rot=[];function aot(){return rot}class KZe{constructor(e,t){if(this.startColumn=e,this.endColumnExclusive=t,e>t)throw new en(`startColumn ${e} cannot be after endColumnExclusive ${t}`)}toRange(e){return new v(e,this.startColumn,e,this.endColumnExclusive)}equals(e){return this.startColumn===e.startColumn&&this.endColumnExclusive===e.endColumnExclusive}}function qZe(s,e){const t=new Ze,i=s.createDecorationsCollection();return t.add(gB({debugName:()=>`Apply decorations from ${e.debugName}`},n=>{const o=e.read(n);i.set(o)})),t.add({dispose:()=>{i.clear()}}),t}function dot(s,e){return new oe(s.lineNumber+e.lineNumber-1,e.lineNumber===1?s.column+e.column-1:e.column)}function dce(s,e){return new oe(s.lineNumber-e.lineNumber+1,s.lineNumber-e.lineNumber===0?s.column-e.column+1:s.column)}var cot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},hot=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const cce="ghost-text";let $7=class extends de{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=oi(this,!1),this.currentTextModel=gn(this,this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=ht(this,n=>{if(this.isDisposed.read(n))return;const o=this.currentTextModel.read(n);if(o!==this.model.targetTextModel.read(n))return;const l=this.model.ghostText.read(n);if(!l)return;const r=l instanceof q7?l.columnRange:void 0,a=[],d=[];function c(g,b){if(d.length>0){const f=d[d.length-1];b&&f.decorations.push(new qr(f.content.length+1,f.content.length+1+g[0].length,b,0)),f.content+=g[0],g=g.slice(1)}for(const f of g)d.push({content:f,decorations:b?[new qr(1,f.length+1,b,0)]:[]})}const h=o.getLineContent(l.lineNumber);let u,m=0;for(const g of l.parts){let b=g.lines;u===void 0?(a.push({column:g.column,text:b[0],preview:g.preview}),b=b.slice(1)):c([h.substring(m,g.column-1)],void 0),b.length>0&&(c(b,cce),u===void 0&&g.column<=h.length&&(u=g.column)),m=g.column-1}u!==void 0&&c([h.substring(m)],void 0);const p=u!==void 0?new KZe(u,h.length+1):void 0;return{replacedRange:r,inlineTexts:a,additionalLines:d,hiddenRange:p,lineNumber:l.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(n),targetTextModel:o}}),this.decorations=ht(this,n=>{const o=this.uiState.read(n);if(!o)return[];const l=[];o.replacedRange&&l.push({range:o.replacedRange.toRange(o.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace",description:"GhostTextReplacement"}}),o.hiddenRange&&l.push({range:o.hiddenRange.toRange(o.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const r of o.inlineTexts)l.push({range:v.fromPositions(new oe(o.lineNumber,r.column)),options:{description:cce,after:{content:r.text,inlineClassName:r.preview?"ghost-text-decoration-preview":"ghost-text-decoration",cursorStops:Xh.Left},showIfCollapsed:!0}});return l}),this.additionalLinesWidget=this._register(new uot(this.editor,this.languageService.languageIdCodec,ht(n=>{const o=this.uiState.read(n);return o?{lineNumber:o.lineNumber,additionalLines:o.additionalLines,minReservedLineCount:o.additionalReservedLineCount,targetTextModel:o.targetTextModel}:void 0}))),this._register(gt(()=>{this.isDisposed.set(!0,void 0)})),this._register(qZe(this.editor,this.decorations))}ownsViewZone(e){return this.additionalLinesWidget.viewZoneId===e}};$7=cot([hot(2,Zs)],$7);class uot extends de{get viewZoneId(){return this._viewZoneId}constructor(e,t,i){super(),this.editor=e,this.languageIdCodec=t,this.lines=i,this._viewZoneId=void 0,this.editorOptionsChanged=Tl("editorOptionChanged",ve.filter(this.editor.onDidChangeConfiguration,n=>n.hasChanged(33)||n.hasChanged(118)||n.hasChanged(100)||n.hasChanged(95)||n.hasChanged(51)||n.hasChanged(50)||n.hasChanged(67))),this._register(Gt(n=>{const o=this.lines.read(n);this.editorOptionsChanged.read(n),o?this.updateLines(o.lineNumber,o.additionalLines,o.minReservedLineCount):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones(e=>{this._viewZoneId&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0)})}updateLines(e,t,i){const n=this.editor.getModel();if(!n)return;const{tabSize:o}=n.getOptions();this.editor.changeViewZones(l=>{this._viewZoneId&&(l.removeZone(this._viewZoneId),this._viewZoneId=void 0);const r=Math.max(t.length,i);if(r>0){const a=document.createElement("div");mot(a,o,t,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=l.addZone({afterLineNumber:e,heightInLines:r,domNode:a,afterColumnAffinity:1})}})}}function mot(s,e,t,i,n){const o=i.get(33),l=i.get(118),r="none",a=i.get(95),d=i.get(51),c=i.get(50),h=i.get(67),u=new XQ(1e4);u.appendString('<div class="suggest-preview-text">');for(let g=0,b=t.length;g<b;g++){const f=t[g],Z=f.content;u.appendString('<div class="view-line'),u.appendString('" style="top:'),u.appendString(String(g*h)),u.appendString('px;width:1000000px;">');const A=iB(Z),N=$W(Z),W=ll.createEmpty(Z,n);SB(new Zf(c.isMonospace&&!o,c.canUseHalfwidthRightwardsArrow,Z,!1,A,N,0,W,f.decorations,e,0,c.spaceWidth,c.middotWidth,c.wsmiddotWidth,l,r,a,d!==YU.OFF,null),u),u.appendString("</div>")}u.appendString("</div>"),Al(s,c);const m=u.build(),p=hce?hce.createHTML(m):m;s.innerHTML=p}const hce=B0("editorGhostText",{createHTML:s=>s});function pot(s,e){const t=new jbe,i=new Pbe(t,d=>e.getLanguageConfiguration(d)),n=new Hbe(new got([s]),i),o=lK(n,[],void 0,!0);let l="";const r=s.getLineContent();function a(d,c){if(d.kind===2)if(a(d.openingBracket,c),c=vs(c,d.openingBracket.length),d.child&&(a(d.child,c),c=vs(c,d.child.length)),d.closingBracket)a(d.closingBracket,c),c=vs(c,d.closingBracket.length);else{const u=i.getSingleLanguageBracketTokens(d.openingBracket.languageId).findClosingTokenText(d.openingBracket.bracketIds);l+=u}else if(d.kind!==3){if(d.kind===0||d.kind===1)l+=r.substring(c,vs(c,d.length));else if(d.kind===4)for(const h of d.children)a(h,c),c=vs(c,h.length)}}return a(o,Kr),l}class got{constructor(e){this.lines=e,this.tokenization={getLineTokens:t=>this.lines[t-1]}}getLineCount(){return this.lines.length}getLineLength(e){return this.lines[e-1].getLineContent().length}}async function $Ze(s,e,t,i,n=$t.None,o){const l=e instanceof oe?fot(e,t):e,r=s.all(t),a=new z$;for(const f of r)f.groupId&&a.add(f.groupId,f);function d(f){if(!f.yieldsToGroupIds)return[];const Z=[];for(const A of f.yieldsToGroupIds||[]){const N=a.get(A);for(const W of N)Z.push(W)}return Z}const c=new Map,h=new Set;function u(f,Z){if(Z=[...Z,f],h.has(f))return Z;h.add(f);try{const A=d(f);for(const N of A){const W=u(N,Z);if(W)return W}}finally{h.delete(f)}}function m(f){const Z=c.get(f);if(Z)return Z;const A=u(f,[]);A&&Os(new Error(`Inline completions: cyclic yield-to dependency detected. Path: ${A.map(W=>W.toString?W.toString():""+W).join(" -> ")}`));const N=new EQ;return c.set(f,N.p),(async()=>{var W;if(!A){const Q=d(f);for(const R of Q){const M=await m(R);if(M&&M.items.length>0)return}}try{return e instanceof oe?await f.provideInlineCompletions(t,e,i,n):await((W=f.provideInlineEdits)==null?void 0:W.call(f,t,e,i,n))}catch(Q){Os(Q);return}})().then(W=>N.complete(W),W=>N.error(W)),N.p}const p=await Promise.all(r.map(async f=>({provider:f,completions:await m(f)}))),g=new Map,b=[];for(const f of p){const Z=f.completions;if(!Z)continue;const A=new Uot(Z,f.provider);b.push(A);for(const N of Z.items){const W=jx.from(N,A,l,t,o);g.set(W.hash(),W)}}return new bot(Array.from(g.values()),new Set(g.keys()),b)}class bot{constructor(e,t,i){this.completions=e,this.hashs=t,this.providerResults=i}has(e){return this.hashs.has(e.hash())}dispose(){for(const e of this.providerResults)e.removeRef()}}class Uot{constructor(e,t){this.inlineCompletions=e,this.provider=t,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,this.refCount===0&&this.provider.freeInlineCompletions(this.inlineCompletions)}}class jx{static from(e,t,i,n,o){let l,r,a=e.range?v.lift(e.range):i;if(typeof e.insertText=="string"){if(l=e.insertText,o&&e.completeBracketPairs){l=uce(l,a.getStartPosition(),n,o);const d=l.length-e.insertText.length;d!==0&&(a=new v(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+d))}r=void 0}else if("snippet"in e.insertText){const d=e.insertText.snippet.length;if(o&&e.completeBracketPairs){e.insertText.snippet=uce(e.insertText.snippet,a.getStartPosition(),n,o);const h=e.insertText.snippet.length-d;h!==0&&(a=new v(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+h))}const c=new IA().parse(e.insertText.snippet);c.children.length===1&&c.children[0]instanceof jr?(l=c.children[0].value,r=void 0):(l=c.toString(),r={snippet:e.insertText.snippet,range:a})}else uY(e.insertText);return new jx(l,e.command,a,l,r,e.additionalTextEdits||aot(),e,t)}constructor(e,t,i,n,o,l,r,a){this.filterText=e,this.command=t,this.range=i,this.insertText=n,this.snippetInfo=o,this.additionalTextEdits=l,this.sourceInlineCompletion=r,this.source=a,e=e.replace(/\r\n|\r/g,`
- `),n=e.replace(/\r\n|\r/g,`
- `)}withRange(e){return new jx(this.filterText,this.command,e,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}toSingleTextEdit(){return new Rp(this.range,this.insertText)}}function fot(s,e){const t=e.getWordAtPosition(s),i=e.getLineMaxColumn(s.lineNumber);return t?new v(s.lineNumber,t.startColumn,s.lineNumber,i):v.fromPositions(s,s.with(void 0,i))}function uce(s,e,t,i){const o=t.getLineContent(e.lineNumber).substring(0,e.column-1)+s,l=t.tokenization.tokenizeLineWithEdit(e,o.length-(e.column-1),s),r=l==null?void 0:l.sliceAndInflate(e.column-1,o.length,0);return r?pot(r,i):s}function $Z(s,e,t){const i=t?s.range.intersectRanges(t):s.range;if(!i)return s;const n=e.getValueInRange(i,1),o=OU(n,s.text),l=qh.ofText(n.substring(0,o)).addToPosition(s.range.getStartPosition()),r=s.text.substring(o),a=v.fromPositions(l,s.range.getEndPosition());return new Rp(a,r)}function eAe(s,e){return s.text.startsWith(e.text)&&Fot(s.range,e.range)}function mce(s,e,t,i,n=0){let o=$Z(s,e);if(o.range.endLineNumber!==o.range.startLineNumber)return;const l=e.getLineContent(o.range.startLineNumber),r=wn(l).length;if(o.range.startColumn-1<=r){const p=wn(o.text).length,g=l.substring(o.range.startColumn-1,r),[b,f]=[o.range.getStartPosition(),o.range.getEndPosition()],Z=b.column+g.length<=f.column?b.delta(0,g.length):f,A=v.fromPositions(Z,f),N=o.text.startsWith(g)?o.text.substring(g.length):o.text.substring(p);o=new Rp(A,N)}const d=e.getValueInRange(o.range),c=Zot(d,o.text);if(!c)return;const h=o.range.startLineNumber,u=new Array;if(t==="prefix"){const p=c.filter(g=>g.originalLength===0);if(p.length>1||p.length===1&&p[0].originalStart!==d.length)return}const m=o.text.length-n;for(const p of c){const g=o.range.startColumn+p.originalStart+p.originalLength;if(t==="subwordSmart"&&i&&i.lineNumber===o.range.startLineNumber&&g<i.column||p.originalLength>0)return;if(p.modifiedLength===0)continue;const b=p.modifiedStart+p.modifiedLength,f=Math.max(p.modifiedStart,Math.min(b,m)),Z=o.text.substring(p.modifiedStart,f),A=o.text.substring(f,Math.max(p.modifiedStart,b));Z.length>0&&u.push(new Ox(g,Z,!1)),A.length>0&&u.push(new Ox(g,A,!0))}return new mT(h,u)}function Fot(s,e){return e.getStartPosition().equals(s.getStartPosition())&&e.getEndPosition().isBeforeOrEqual(s.getEndPosition())}let Fm;function Zot(s,e){if((Fm==null?void 0:Fm.originalValue)===s&&(Fm==null?void 0:Fm.newValue)===e)return Fm==null?void 0:Fm.changes;{let t=gce(s,e,!0);if(t){const i=pce(t);if(i>0){const n=gce(s,e,!1);n&&pce(n)<i&&(t=n)}}return Fm={originalValue:s,newValue:e,changes:t},t}}function pce(s){let e=0;for(const t of s)e+=t.originalLength;return e}function gce(s,e,t){if(s.length>5e3||e.length>5e3)return;function i(d){let c=0;for(let h=0,u=d.length;h<u;h++){const m=d.charCodeAt(h);m>c&&(c=m)}return c}const n=Math.max(i(s),i(e));function o(d){if(d<0)throw new Error("unexpected");return n+d+1}function l(d){let c=0,h=0;const u=new Int32Array(d.length);for(let m=0,p=d.length;m<p;m++)if(t&&d[m]==="("){const g=h*100+c;u[m]=o(2*g),c++}else if(t&&d[m]===")"){c=Math.max(c-1,0);const g=h*100+c;u[m]=o(2*g+1),c===0&&h++}else u[m]=d.charCodeAt(m);return u}const r=l(s),a=l(e);return new cp({getElements:()=>r},{getElements:()=>a}).ComputeDiff(!1).changes}var Aot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},bce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let e8=class extends de{constructor(e,t,i,n,o){super(),this.textModel=e,this.versionId=t,this._debounceValue=i,this.languageFeaturesService=n,this.languageConfigurationService=o,this._updateOperation=this._register(new _o),this.inlineCompletions=QM("inlineCompletions",void 0),this.suggestWidgetInlineCompletions=QM("suggestWidgetInlineCompletions",void 0),this._register(this.textModel.onDidChangeContent(()=>{this._updateOperation.clear()}))}fetch(e,t,i){var c,h;const n=new Rot(e,t,this.textModel.getVersionId()),o=t.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if((c=this._updateOperation.value)!=null&&c.request.satisfies(n))return this._updateOperation.value.promise;if((h=o.get())!=null&&h.request.satisfies(n))return Promise.resolve(!0);const l=!!this._updateOperation.value;this._updateOperation.clear();const r=new Ws,a=(async()=>{if((l||t.triggerKind===Ju.Automatic)&&await Not(this._debounceValue.get(this.textModel),r.token),r.token.isCancellationRequested||this._store.isDisposed||this.textModel.getVersionId()!==n.versionId)return!1;const m=new Date,p=await $Ze(this.languageFeaturesService.inlineCompletionsProvider,e,this.textModel,t,r.token,this.languageConfigurationService);if(r.token.isCancellationRequested||this._store.isDisposed||this.textModel.getVersionId()!==n.versionId)return!1;const g=new Date;this._debounceValue.update(this.textModel,g.getTime()-m.getTime());const b=new Wot(p,n,this.textModel,this.versionId);if(i){const f=i.toInlineCompletion(void 0);i.canBeReused(this.textModel,e)&&!p.has(f)&&b.prepend(i.inlineCompletion,f.range,!0)}return this._updateOperation.clear(),Ss(f=>{o.set(b,f)}),!0})(),d=new Sot(n,r,a);return this._updateOperation.value=d,a}clear(e){this._updateOperation.clear(),this.inlineCompletions.set(void 0,e),this.suggestWidgetInlineCompletions.set(void 0,e)}clearSuggestWidgetInlineCompletions(e){var t;(t=this._updateOperation.value)!=null&&t.request.context.selectedSuggestionInfo&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,e)}cancelUpdate(){this._updateOperation.clear()}};e8=Aot([bce(3,lt),bce(4,Qs)],e8);function Not(s,e){return new Promise(t=>{let i;const n=setTimeout(()=>{i&&i.dispose(),t()},s);e&&(i=e.onCancellationRequested(()=>{clearTimeout(n),i&&i.dispose(),t()}))})}class Rot{constructor(e,t,i){this.position=e,this.context=t,this.versionId=i}satisfies(e){return this.position.equals(e.position)&&vP(this.context.selectedSuggestionInfo,e.context.selectedSuggestionInfo,V9e())&&(e.context.triggerKind===Ju.Automatic||this.context.triggerKind===Ju.Explicit)&&this.versionId===e.versionId}}class Sot{constructor(e,t,i){this.request=e,this.cancellationTokenSource=t,this.promise=i}dispose(){this.cancellationTokenSource.cancel()}}class Wot{get inlineCompletions(){return this._inlineCompletions}constructor(e,t,i,n){this.inlineCompletionProviderResult=e,this.request=t,this._textModel=i,this._versionId=n,this._refCount=1,this._prependedInlineCompletionItems=[];const o=i.deltaDecorations([],e.completions.map(l=>({range:l.range,options:{description:"inline-completion-tracking-range"}})));this._inlineCompletions=e.completions.map((l,r)=>new Uce(l,o[r],this._textModel,this._versionId))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,this._refCount===0){setTimeout(()=>{this._textModel.isDisposed()||this._textModel.deltaDecorations(this._inlineCompletions.map(e=>e.decorationId),[])},0),this.inlineCompletionProviderResult.dispose();for(const e of this._prependedInlineCompletionItems)e.source.removeRef()}}prepend(e,t,i){i&&e.source.addRef();const n=this._textModel.deltaDecorations([],[{range:t,options:{description:"inline-completion-tracking-range"}}])[0];this._inlineCompletions.unshift(new Uce(e,n,this._textModel,this._versionId)),this._prependedInlineCompletionItems.push(e)}}class Uce{get forwardStable(){return this.inlineCompletion.source.inlineCompletions.enableForwardStability??!1}constructor(e,t,i,n){this.inlineCompletion=e,this.decorationId=t,this._textModel=i,this._modelVersion=n,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._updatedRange=$d({owner:this,equalsFn:v.equalsRange},o=>(this._modelVersion.read(o),this._textModel.getDecorationRange(this.decorationId)))}toInlineCompletion(e){return this.inlineCompletion.withRange(this._updatedRange.read(e)??R_)}toSingleTextEdit(e){return new Rp(this._updatedRange.read(e)??R_,this.inlineCompletion.insertText)}isVisible(e,t,i){const n=$Z(this._toFilterTextReplacement(i),e),o=this._updatedRange.read(i);if(!o||!this.inlineCompletion.range.getStartPosition().equals(o.getStartPosition())||t.lineNumber!==n.range.startLineNumber)return!1;const l=e.getValueInRange(n.range,1),r=n.text,a=Math.max(0,t.column-n.range.startColumn);let d=r.substring(0,a),c=r.substring(a),h=l.substring(0,a),u=l.substring(a);const m=e.getLineIndentColumn(n.range.startLineNumber);return n.range.startColumn<=m&&(h=h.trimStart(),h.length===0&&(u=u.trimStart()),d=d.trimStart(),d.length===0&&(c=c.trimStart())),d.startsWith(h)&&!!$0e(u,c)}canBeReused(e,t){const i=this._updatedRange.read(void 0);return!!i&&i.containsPosition(t)&&this.isVisible(e,t,void 0)&&qh.ofRange(i).isGreaterThanOrEqualTo(qh.ofRange(this.inlineCompletion.range))}_toFilterTextReplacement(e){return new Rp(this._updatedRange.read(e)??R_,this.inlineCompletion.filterText)}}const R_=new v(1,1,1,1),ti={Visible:Wie,HasFocusedSuggestion:new Ke("suggestWidgetHasFocusedSuggestion",!1,U("suggestWidgetHasSelection","Whether any suggestion is focused")),DetailsVisible:new Ke("suggestWidgetDetailsVisible",!1,U("suggestWidgetDetailsVisible","Whether suggestion details are visible")),MultipleSuggestions:new Ke("suggestWidgetMultipleSuggestions",!1,U("suggestWidgetMultipleSuggestions","Whether there are multiple suggestions to pick from")),MakesTextEdit:new Ke("suggestionMakesTextEdit",!0,U("suggestionMakesTextEdit","Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new Ke("acceptSuggestionOnEnter",!0,U("acceptSuggestionOnEnter","Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new Ke("suggestionHasInsertAndReplaceRange",!1,U("suggestionHasInsertAndReplaceRange","Whether the current suggestion has insert and replace behaviour")),InsertMode:new Ke("suggestionInsertMode",void 0,{type:"string",description:U("suggestionInsertMode","Whether the default behaviour is to insert or replace")}),CanResolve:new Ke("suggestionCanResolve",!1,U("suggestionCanResolve","Whether the current suggestion supports to resolve further details"))},xU=new at("suggestWidgetStatusBar");class Vot{constructor(e,t,i,n){var o;this.position=e,this.completion=t,this.container=i,this.provider=n,this.isInvalid=!1,this.score=_u.Default,this.distance=0,this.textLabel=typeof t.label=="string"?t.label:(o=t.label)==null?void 0:o.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=t.sortText&&t.sortText.toLowerCase(),this.filterTextLow=t.filterText&&t.filterText.toLowerCase(),this.extensionId=t.extensionId,v.isIRange(t.range)?(this.editStart=new oe(t.range.startLineNumber,t.range.startColumn),this.editInsertEnd=new oe(t.range.endLineNumber,t.range.endColumn),this.editReplaceEnd=new oe(t.range.endLineNumber,t.range.endColumn),this.isInvalid=this.isInvalid||v.spansMultipleLines(t.range)||t.range.startLineNumber!==e.lineNumber):(this.editStart=new oe(t.range.insert.startLineNumber,t.range.insert.startColumn),this.editInsertEnd=new oe(t.range.insert.endLineNumber,t.range.insert.endColumn),this.editReplaceEnd=new oe(t.range.replace.endLineNumber,t.range.replace.endColumn),this.isInvalid=this.isInvalid||v.spansMultipleLines(t.range.insert)||v.spansMultipleLines(t.range.replace)||t.range.insert.startLineNumber!==e.lineNumber||t.range.replace.startLineNumber!==e.lineNumber||t.range.insert.startColumn!==t.range.replace.startColumn),typeof n.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}async resolve(e){if(!this._resolveCache){const t=e.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),i=new ol(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then(n=>{Object.assign(this.completion,n),this._resolveDuration=i.elapsed()},n=>{th(n)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}).finally(()=>{t.dispose()})}return this._resolveCache}}const s5=class s5{constructor(e=2,t=new Set,i=new Set,n=new Map,o=!0){this.snippetSortOrder=e,this.kindFilter=t,this.providerFilter=i,this.providerItemsToReuse=n,this.showDeprecated=o}};s5.default=new s5;let pT=s5;class Qot{constructor(e,t,i,n){this.items=e,this.needsClipboard=t,this.durations=i,this.disposable=n}}async function Tie(s,e,t,i=pT.default,n={triggerKind:0},o=$t.None){const l=new ol;t=t.clone();const r=e.getWordAtPosition(t),a=r?new v(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn):v.fromPositions(t),d={replace:a,insert:a.setEndPosition(t.lineNumber,t.column)},c=[],h=new Ze,u=[];let m=!1;const p=(b,f,Z)=>{var N;let A=!1;if(!f)return A;for(const W of f.suggestions)if(!i.kindFilter.has(W.kind)){if(!i.showDeprecated&&((N=W==null?void 0:W.tags)!=null&&N.includes(1)))continue;W.range||(W.range=d),W.sortText||(W.sortText=typeof W.label=="string"?W.label:W.label.label),!m&&W.insertTextRules&&W.insertTextRules&4&&(m=IA.guessNeedsClipboard(W.insertText)),c.push(new Vot(t,W,f,b)),A=!0}return H5(f)&&h.add(f),u.push({providerName:b._debugDisplayName??"unknown_provider",elapsedProvider:f.duration??-1,elapsedOverall:Z.elapsed()}),A},g=(async()=>{})();for(const b of s.orderedGroups(e)){let f=!1;if(await Promise.all(b.map(async Z=>{if(i.providerItemsToReuse.has(Z)){const A=i.providerItemsToReuse.get(Z);A.forEach(N=>c.push(N)),f=f||A.length>0;return}if(!(i.providerFilter.size>0&&!i.providerFilter.has(Z)))try{const A=new ol,N=await Z.provideCompletionItems(e,t,n,o);f=p(Z,N,A)||f}catch(A){Os(A)}})),f||o.isCancellationRequested)break}return await g,o.isCancellationRequested?(h.dispose(),Promise.reject(new jh)):new Qot(c.sort(wot(i.snippetSortOrder)),m,{entries:u,elapsed:l.elapsed()},h)}function Bie(s,e){if(s.sortTextLow&&e.sortTextLow){if(s.sortTextLow<e.sortTextLow)return-1;if(s.sortTextLow>e.sortTextLow)return 1}return s.textLabel<e.textLabel?-1:s.textLabel>e.textLabel?1:s.completion.kind-e.completion.kind}function yot(s,e){if(s.completion.kind!==e.completion.kind){if(s.completion.kind===27)return-1;if(e.completion.kind===27)return 1}return Bie(s,e)}function Cot(s,e){if(s.completion.kind!==e.completion.kind){if(s.completion.kind===27)return 1;if(e.completion.kind===27)return-1}return Bie(s,e)}const Az=new Map;Az.set(0,yot);Az.set(2,Cot);Az.set(1,Bie);function wot(s){return Az.get(s)}Bi.registerCommand("_executeCompletionItemProvider",async(s,...e)=>{const[t,i,n,o]=e;Yi(At.isUri(t)),Yi(oe.isIPosition(i)),Yi(typeof n=="string"||!n),Yi(typeof o=="number"||!o);const{completionProvider:l}=s.get(lt),r=await s.get(Xa).createModelReference(t);try{const a={incomplete:!1,suggestions:[]},d=[],c=r.object.textEditorModel.validatePosition(i),h=await Tie(l,r.object.textEditorModel,c,void 0,{triggerCharacter:n??void 0,triggerKind:n?1:0});for(const u of h.items)d.length<(o??0)&&d.push(u.resolve($t.None)),a.incomplete=a.incomplete||u.container.incomplete,a.suggestions.push(u.completion);try{return await Promise.all(d),a}finally{setTimeout(()=>h.disposable.dispose(),100)}}finally{r.dispose()}});function Mot(s,e){var t;(t=s.getContribution("editor.contrib.suggestController"))==null||t.triggerSuggest(new Set().add(e),void 0,!0)}class VS{static isAllOff(e){return e.other==="off"&&e.comments==="off"&&e.strings==="off"}static isAllOn(e){return e.other==="on"&&e.comments==="on"&&e.strings==="on"}static valueFor(e,t){switch(t){case 1:return e.comments;case 2:return e.strings;default:return e.other}}}function fce(s,e=Gl){return PJe(s,e)?s.charAt(0).toUpperCase()+s.slice(1):s}var Tot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Bot=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Fce{constructor(e){this._delegates=e}resolve(e){for(const t of this._delegates){const i=t.resolve(e);if(i!==void 0)return i}}}class Zce{constructor(e,t,i,n){this._model=e,this._selection=t,this._selectionIdx=i,this._overtypingCapturer=n}resolve(e){const{name:t}=e;if(t==="SELECTION"||t==="TM_SELECTED_TEXT"){let i=this._model.getValueInRange(this._selection)||void 0,n=this._selection.startLineNumber!==this._selection.endLineNumber;if(!i&&this._overtypingCapturer){const o=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);o&&(i=o.value,n=o.multiline)}if(i&&n&&e.snippet){const o=this._model.getLineContent(this._selection.startLineNumber),l=wn(o,0,this._selection.startColumn-1);let r=l;e.snippet.walk(d=>d===e?!1:(d instanceof jr&&(r=wn(Lp(d.value).pop())),!0));const a=OU(r,l);i=i.replace(/(\r\n|\r|\n)(.*)/g,(d,c,h)=>`${c}${r.substr(a)}${h}`)}return i}else{if(t==="TM_CURRENT_LINE")return this._model.getLineContent(this._selection.positionLineNumber);if(t==="TM_CURRENT_WORD"){const i=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return i&&i.word||void 0}else{if(t==="TM_LINE_INDEX")return String(this._selection.positionLineNumber-1);if(t==="TM_LINE_NUMBER")return String(this._selection.positionLineNumber);if(t==="CURSOR_INDEX")return String(this._selectionIdx);if(t==="CURSOR_NUMBER")return String(this._selectionIdx+1)}}}}class Ace{constructor(e,t){this._labelService=e,this._model=t}resolve(e){const{name:t}=e;if(t==="TM_FILENAME")return kU(this._model.uri.fsPath);if(t==="TM_FILENAME_BASE"){const i=kU(this._model.uri.fsPath),n=i.lastIndexOf(".");return n<=0?i:i.slice(0,n)}else{if(t==="TM_DIRECTORY")return xpe(this._model.uri.fsPath)==="."?"":this._labelService.getUriLabel(wY(this._model.uri));if(t==="TM_FILEPATH")return this._labelService.getUriLabel(this._model.uri);if(t==="RELATIVE_FILEPATH")return this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0})}}}class Nce{constructor(e,t,i,n){this._readClipboardText=e,this._selectionIdx=t,this._selectionCount=i,this._spread=n}resolve(e){if(e.name!=="CLIPBOARD")return;const t=this._readClipboardText();if(t){if(this._spread){const i=t.split(/\r\n|\n|\r/).filter(n=>!Ppe(n));if(i.length===this._selectionCount)return i[this._selectionIdx]}return t}}}let Hx=class{constructor(e,t,i){this._model=e,this._selection=t,this._languageConfigurationService=i}resolve(e){const{name:t}=e,i=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),n=this._languageConfigurationService.getLanguageConfiguration(i).comments;if(n){if(t==="LINE_COMMENT")return n.lineCommentToken||void 0;if(t==="BLOCK_COMMENT_START")return n.blockCommentStartToken||void 0;if(t==="BLOCK_COMMENT_END")return n.blockCommentEndToken||void 0}}};Hx=Tot([Bot(2,Qs)],Hx);const Xm=class Xm{constructor(){this._date=new Date}resolve(e){const{name:t}=e;if(t==="CURRENT_YEAR")return String(this._date.getFullYear());if(t==="CURRENT_YEAR_SHORT")return String(this._date.getFullYear()).slice(-2);if(t==="CURRENT_MONTH")return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if(t==="CURRENT_DATE")return String(this._date.getDate().valueOf()).padStart(2,"0");if(t==="CURRENT_HOUR")return String(this._date.getHours().valueOf()).padStart(2,"0");if(t==="CURRENT_MINUTE")return String(this._date.getMinutes().valueOf()).padStart(2,"0");if(t==="CURRENT_SECOND")return String(this._date.getSeconds().valueOf()).padStart(2,"0");if(t==="CURRENT_DAY_NAME")return Xm.dayNames[this._date.getDay()];if(t==="CURRENT_DAY_NAME_SHORT")return Xm.dayNamesShort[this._date.getDay()];if(t==="CURRENT_MONTH_NAME")return Xm.monthNames[this._date.getMonth()];if(t==="CURRENT_MONTH_NAME_SHORT")return Xm.monthNamesShort[this._date.getMonth()];if(t==="CURRENT_SECONDS_UNIX")return String(Math.floor(this._date.getTime()/1e3));if(t==="CURRENT_TIMEZONE_OFFSET"){const i=this._date.getTimezoneOffset(),n=i>0?"-":"+",o=Math.trunc(Math.abs(i/60)),l=o<10?"0"+o:o,r=Math.abs(i)-o*60,a=r<10?"0"+r:r;return n+l+":"+a}}};Xm.dayNames=[U("Sunday","Sunday"),U("Monday","Monday"),U("Tuesday","Tuesday"),U("Wednesday","Wednesday"),U("Thursday","Thursday"),U("Friday","Friday"),U("Saturday","Saturday")],Xm.dayNamesShort=[U("SundayShort","Sun"),U("MondayShort","Mon"),U("TuesdayShort","Tue"),U("WednesdayShort","Wed"),U("ThursdayShort","Thu"),U("FridayShort","Fri"),U("SaturdayShort","Sat")],Xm.monthNames=[U("January","January"),U("February","February"),U("March","March"),U("April","April"),U("May","May"),U("June","June"),U("July","July"),U("August","August"),U("September","September"),U("October","October"),U("November","November"),U("December","December")],Xm.monthNamesShort=[U("JanuaryShort","Jan"),U("FebruaryShort","Feb"),U("MarchShort","Mar"),U("AprilShort","Apr"),U("MayShort","May"),U("JuneShort","Jun"),U("JulyShort","Jul"),U("AugustShort","Aug"),U("SeptemberShort","Sep"),U("OctoberShort","Oct"),U("NovemberShort","Nov"),U("DecemberShort","Dec")];let Px=Xm;class Rce{constructor(e){this._workspaceService=e}resolve(e){if(!this._workspaceService)return;const t=g9e(this._workspaceService.getWorkspace());if(!u9e(t)){if(e.name==="WORKSPACE_NAME")return this._resolveWorkspaceName(t);if(e.name==="WORKSPACE_FOLDER")return this._resoveWorkspacePath(t)}}_resolveWorkspaceName(e){if(TP(e))return kU(e.uri.path);let t=kU(e.configPath.path);return t.endsWith(BP)&&(t=t.substr(0,t.length-BP.length-1)),t}_resoveWorkspacePath(e){if(TP(e))return fce(e.uri.fsPath);const t=kU(e.configPath.path);let i=e.configPath.fsPath;return i.endsWith(t)&&(i=i.substr(0,i.length-t.length-1)),i?fce(i):"/"}}class Sce{resolve(e){const{name:t}=e;if(t==="RANDOM")return Math.random().toString().slice(-6);if(t==="RANDOM_HEX")return Math.random().toString(16).slice(-6);if(t==="UUID")return hz()}}var Lot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},kot=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Fu;const Rh=class Rh{constructor(e,t,i){this._editor=e,this._snippet=t,this._snippetLineLeadingWhitespace=i,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=Cse(t.placeholders,Dc.compareByIndex),this._placeholderGroupsIdx=-1}initialize(e){this._offset=e.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(this._offset===-1)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const e=this._editor.getModel();this._editor.changeDecorations(t=>{for(const i of this._snippet.placeholders){const n=this._snippet.offset(i),o=this._snippet.fullLen(i),l=v.fromPositions(e.getPositionAt(this._offset+n),e.getPositionAt(this._offset+n+o)),r=i.isFinalTabstop?Rh._decor.inactiveFinal:Rh._decor.inactive,a=t.addDecoration(l,r);this._placeholderDecorations.set(i,a)}})}move(e){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const n=[];for(const o of this._placeholderGroups[this._placeholderGroupsIdx])if(o.transform){const l=this._placeholderDecorations.get(o),r=this._editor.getModel().getDecorationRange(l),a=this._editor.getModel().getValueInRange(r),d=o.transform.resolve(a).split(/\r\n|\r|\n/);for(let c=1;c<d.length;c++)d[c]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+d[c]);n.push(Rs.replace(r,d.join(this._editor.getModel().getEOL())))}n.length>0&&this._editor.executeEdits("snippet.placeholderTransform",n)}let t=!1;e===!0&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,t=!0):e===!1&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,t=!0);const i=this._editor.getModel().changeDecorations(n=>{const o=new Set,l=[];for(const r of this._placeholderGroups[this._placeholderGroupsIdx]){const a=this._placeholderDecorations.get(r),d=this._editor.getModel().getDecorationRange(a);l.push(new dt(d.startLineNumber,d.startColumn,d.endLineNumber,d.endColumn)),t=t&&this._hasPlaceholderBeenCollapsed(r),n.changeDecorationOptions(a,r.isFinalTabstop?Rh._decor.activeFinal:Rh._decor.active),o.add(r);for(const c of this._snippet.enclosingPlaceholders(r)){const h=this._placeholderDecorations.get(c);n.changeDecorationOptions(h,c.isFinalTabstop?Rh._decor.activeFinal:Rh._decor.active),o.add(c)}}for(const[r,a]of this._placeholderDecorations)o.has(r)||n.changeDecorationOptions(a,r.isFinalTabstop?Rh._decor.inactiveFinal:Rh._decor.inactive);return l});return t?this.move(e):i??[]}_hasPlaceholderBeenCollapsed(e){let t=e;for(;t;){if(t instanceof Dc){const i=this._placeholderDecorations.get(t);if(this._editor.getModel().getDecorationRange(i).isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||this._placeholderGroups.length===0}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(this._snippet.placeholders.length===0)return!0;if(this._snippet.placeholders.length===1){const[e]=this._snippet.placeholders;if(e.isFinalTabstop&&this._snippet.rightMostDescendant===e)return!0}return!1}computePossibleSelections(){const e=new Map;for(const t of this._placeholderGroups){let i;for(const n of t){if(n.isFinalTabstop)break;i||(i=[],e.set(n.index,i));const o=this._placeholderDecorations.get(n),l=this._editor.getModel().getDecorationRange(o);if(!l){e.delete(n.index);break}i.push(l)}}return e}get activeChoice(){if(!this._placeholderDecorations)return;const e=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!(e!=null&&e.choice))return;const t=this._placeholderDecorations.get(e);if(!t)return;const i=this._editor.getModel().getDecorationRange(t);if(i)return{range:i,choice:e.choice}}get hasChoice(){let e=!1;return this._snippet.walk(t=>(e=t instanceof r1,!e)),e}merge(e){const t=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations(i=>{for(const n of this._placeholderGroups[this._placeholderGroupsIdx]){const o=e.shift();console.assert(o._offset!==-1),console.assert(!o._placeholderDecorations);const l=o._snippet.placeholderInfo.last.index;for(const a of o._snippet.placeholderInfo.all)a.isFinalTabstop?a.index=n.index+(l+1)/this._nestingLevel:a.index=n.index+a.index/this._nestingLevel;this._snippet.replace(n,o._snippet.children);const r=this._placeholderDecorations.get(n);i.removeDecoration(r),this._placeholderDecorations.delete(n);for(const a of o._snippet.placeholders){const d=o._snippet.offset(a),c=o._snippet.fullLen(a),h=v.fromPositions(t.getPositionAt(o._offset+d),t.getPositionAt(o._offset+d+c)),u=i.addDecoration(h,Rh._decor.inactive);this._placeholderDecorations.set(a,u)}}this._placeholderGroups=Cse(this._snippet.placeholders,Dc.compareByIndex)})}};Rh._decor={active:Ot.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:Ot.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:Ot.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:Ot.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};let Kx=Rh;const Wce={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let qx=Fu=class{static adjustWhitespace(e,t,i,n,o){const l=e.getLineContent(t.lineNumber),r=wn(l,0,t.column-1);let a;return n.walk(d=>{if(!(d instanceof jr)||d.parent instanceof r1||o&&!o.has(d))return!0;const c=d.value.split(/\r\n|\r|\n/);if(i){const u=n.offset(d);if(u===0)c[0]=e.normalizeIndentation(c[0]);else{a=a??n.toString();const m=a.charCodeAt(u-1);(m===10||m===13)&&(c[0]=e.normalizeIndentation(r+c[0]))}for(let m=1;m<c.length;m++)c[m]=e.normalizeIndentation(r+c[m])}const h=c.join(e.getEOL());return h!==d.value&&(d.parent.replace(d,[new jr(h)]),a=void 0),!0}),r}static adjustSelection(e,t,i,n){if(i!==0||n!==0){const{positionLineNumber:o,positionColumn:l}=t,r=l-i,a=l+n,d=e.validateRange({startLineNumber:o,startColumn:r,endLineNumber:o,endColumn:a});t=dt.createWithDirection(d.startLineNumber,d.startColumn,d.endLineNumber,d.endColumn,t.getDirection())}return t}static createEditsAndSnippetsFromSelections(e,t,i,n,o,l,r,a,d){const c=[],h=[];if(!e.hasModel())return{edits:c,snippets:h};const u=e.getModel(),m=e.invokeWithinContext(N=>N.get(yA)),p=e.invokeWithinContext(N=>new Ace(N.get(hV),u)),g=()=>r,b=u.getValueInRange(Fu.adjustSelection(u,e.getSelection(),i,0)),f=u.getValueInRange(Fu.adjustSelection(u,e.getSelection(),0,n)),Z=u.getLineFirstNonWhitespaceColumn(e.getSelection().positionLineNumber),A=e.getSelections().map((N,W)=>({selection:N,idx:W})).sort((N,W)=>v.compareRangesUsingStarts(N.selection,W.selection));for(const{selection:N,idx:W}of A){let Q=Fu.adjustSelection(u,N,i,0),R=Fu.adjustSelection(u,N,0,n);b!==u.getValueInRange(Q)&&(Q=N),f!==u.getValueInRange(R)&&(R=N);const M=N.setStartPosition(Q.startLineNumber,Q.startColumn).setEndPosition(R.endLineNumber,R.endColumn),w=new IA().parse(t,!0,o),Y=M.getStartPosition(),G=Fu.adjustWhitespace(u,Y,l||W>0&&Z!==u.getLineFirstNonWhitespaceColumn(N.positionLineNumber),w);w.resolveVariables(new Fce([p,new Nce(g,W,A.length,e.getOption(79)==="spread"),new Zce(u,N,W,a),new Hx(u,N,d),new Px,new Rce(m),new Sce])),c[W]=Rs.replace(M,w.toString()),c[W].identifier={major:W,minor:0},c[W]._isTracked=!0,h[W]=new Kx(e,w,G)}return{edits:c,snippets:h}}static createEditsAndSnippetsFromEdits(e,t,i,n,o,l,r){if(!e.hasModel()||t.length===0)return{edits:[],snippets:[]};const a=[],d=e.getModel(),c=new IA,h=new wB,u=new Fce([e.invokeWithinContext(p=>new Ace(p.get(hV),d)),new Nce(()=>o,0,e.getSelections().length,e.getOption(79)==="spread"),new Zce(d,e.getSelection(),0,l),new Hx(d,e.getSelection(),r),new Px,new Rce(e.invokeWithinContext(p=>p.get(yA))),new Sce]);t=t.sort((p,g)=>v.compareRangesUsingStarts(p.range,g.range));let m=0;for(let p=0;p<t.length;p++){const{range:g,template:b}=t[p];if(p>0){const W=t[p-1].range,Q=v.fromPositions(W.getEndPosition(),g.getStartPosition()),R=new jr(d.getValueInRange(Q));h.appendChild(R),m+=R.value.length}const f=c.parseFragment(b,h);Fu.adjustWhitespace(d,g.getStartPosition(),!0,h,new Set(f)),h.resolveVariables(u);const Z=h.toString(),A=Z.slice(m);m=Z.length;const N=Rs.replace(g,A);N.identifier={major:p,minor:0},N._isTracked=!0,a.push(N)}return c.ensureFinalTabstop(h,i,!0),{edits:a,snippets:[new Kx(e,h,"")]}}constructor(e,t,i=Wce,n){this._editor=e,this._template=t,this._options=i,this._languageConfigurationService=n,this._templateMerges=[],this._snippets=[]}dispose(){Tn(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:e,snippets:t}=typeof this._template=="string"?Fu.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):Fu.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=t,this._editor.executeEdits("snippet",e,i=>{const n=i.filter(o=>!!o.identifier);for(let o=0;o<t.length;o++)t[o].initialize(n[o].textChange);return this._snippets[0].hasPlaceholder?this._move(!0):n.map(o=>dt.fromPositions(o.range.getEndPosition()))}),this._editor.revealRange(this._editor.getSelections()[0])}merge(e,t=Wce){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,e]);const{edits:i,snippets:n}=Fu.createEditsAndSnippetsFromSelections(this._editor,e,t.overwriteBefore,t.overwriteAfter,!0,t.adjustWhitespace,t.clipboardText,t.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",i,o=>{const l=o.filter(a=>!!a.identifier);for(let a=0;a<n.length;a++)n[a].initialize(l[a].textChange);const r=n[0].isTrivialSnippet;if(!r){for(const a of this._snippets)a.merge(n);console.assert(n.length===0)}return this._snippets[0].hasPlaceholder&&!r?this._move(void 0):l.map(a=>dt.fromPositions(a.range.getEndPosition()))})}next(){const e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}prev(){const e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}_move(e){const t=[];for(const i of this._snippets){const n=i.move(e);t.push(...n)}return t}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const e=this._editor.getSelections();if(e.length<this._snippets.length)return!1;const t=new Map;for(const i of this._snippets){const n=i.computePossibleSelections();if(t.size===0)for(const[o,l]of n){l.sort(v.compareRangesUsingStarts);for(const r of e)if(l[0].containsRange(r)){t.set(o,[]);break}}if(t.size===0)return!1;t.forEach((o,l)=>{o.push(...n.get(l))})}e.sort(v.compareRangesUsingStarts);for(const[i,n]of t){if(n.length!==e.length){t.delete(i);continue}n.sort(v.compareRangesUsingStarts);for(let o=0;o<n.length;o++)if(!n[o].containsRange(e[o])){t.delete(i);continue}}return t.size>0}};qx=Fu=Lot([kot(3,Qs)],qx);var Iot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Mk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},SR;const Vce={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};var Pg;let aa=(Pg=class{static get(e){return e.getContribution(SR.ID)}constructor(e,t,i,n,o){this._editor=e,this._logService=t,this._languageFeaturesService=i,this._languageConfigurationService=o,this._snippetListener=new Ze,this._modelVersionId=-1,this._inSnippet=SR.InSnippetMode.bindTo(n),this._hasNextTabstop=SR.HasNextTabstop.bindTo(n),this._hasPrevTabstop=SR.HasPrevTabstop.bindTo(n)}dispose(){var e;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(e=this._session)==null||e.dispose(),this._snippetListener.dispose()}insert(e,t){try{this._doInsert(e,typeof t>"u"?Vce:{...Vce,...t})}catch(i){this.cancel(),this._logService.error(i),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"<no_session>")}}_doInsert(e,t){var i;if(this._editor.hasModel()){if(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&typeof e!="string"&&this.cancel(),this._session?(Yi(typeof e=="string"),this._session.merge(e,t)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new qx(this._editor,e,t,this._languageConfigurationService),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),(i=this._session)!=null&&i.hasChoice){const n={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(c,h)=>{if(!this._session||c!==this._editor.getModel()||!oe.equals(this._editor.getPosition(),h))return;const{activeChoice:u}=this._session;if(!u||u.choice.options.length===0)return;const m=c.getValueInRange(u.range),p=!!u.choice.options.find(b=>b.value===m),g=[];for(let b=0;b<u.choice.options.length;b++){const f=u.choice.options[b];g.push({kind:13,label:f.value,insertText:f.value,sortText:"a".repeat(b+1),range:u.range,filterText:p?`${m}_${f.value}`:void 0,command:{id:"jumpToNextSnippetPlaceholder",title:U("next","Go to next placeholder...")}})}return{suggestions:g}}},o=this._editor.getModel();let l,r=!1;const a=()=>{l==null||l.dispose(),r=!1},d=()=>{r||(l=this._languageFeaturesService.completionProvider.register({language:o.getLanguageId(),pattern:o.uri.fsPath,scheme:o.uri.scheme,exclusive:!0},n),this._snippetListener.add(l),r=!0)};this._choiceCompletions={provider:n,enable:d,disable:a}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(n=>n.isFlush&&this.cancel())),this._snippetListener.add(this._editor.onDidChangeModel(()=>this.cancel())),this._snippetListener.add(this._editor.onDidChangeCursorSelection(()=>this._updateState()))}}_updateState(){if(!(!this._session||!this._editor.hasModel())){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var t;if(!this._session||!this._editor.hasModel()){this._currentChoice=void 0;return}const{activeChoice:e}=this._session;if(!e||!this._choiceCompletions){(t=this._choiceCompletions)==null||t.disable(),this._currentChoice=void 0;return}this._currentChoice!==e.choice&&(this._currentChoice=e.choice,this._choiceCompletions.enable(),queueMicrotask(()=>{Mot(this._editor,this._choiceCompletions.provider)}))}finish(){for(;this._inSnippet.get();)this.next()}cancel(e=!1){var t;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,(t=this._session)==null||t.dispose(),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])}prev(){var e;(e=this._session)==null||e.prev(),this._updateState()}next(){var e;(e=this._session)==null||e.next(),this._updateState()}isInSnippet(){return!!this._inSnippet.get()}},SR=Pg,Pg.ID="snippetController2",Pg.InSnippetMode=new Ke("inSnippetMode",!1,U("inSnippetMode","Whether the editor in current in snippet mode")),Pg.HasNextTabstop=new Ke("hasNextTabstop",!1,U("hasNextTabstop","Whether there is a next tab stop when in snippet mode")),Pg.HasPrevTabstop=new Ke("hasPrevTabstop",!1,U("hasPrevTabstop","Whether there is a previous tab stop when in snippet mode")),Pg);aa=SR=Iot([Mk(1,El),Mk(2,lt),Mk(3,wt),Mk(4,Qs)],aa);Gi(aa.ID,aa,4);const Nz=Io.bindToContribution(aa.get);Oe(new Nz({id:"jumpToNextSnippetPlaceholder",precondition:Ne.and(aa.InSnippetMode,aa.HasNextTabstop),handler:s=>s.next(),kbOpts:{weight:100+30,kbExpr:H.textInputFocus,primary:2}}));Oe(new Nz({id:"jumpToPrevSnippetPlaceholder",precondition:Ne.and(aa.InSnippetMode,aa.HasPrevTabstop),handler:s=>s.prev(),kbOpts:{weight:100+30,kbExpr:H.textInputFocus,primary:1026}}));Oe(new Nz({id:"leaveSnippet",precondition:aa.InSnippetMode,handler:s=>s.cancel(!0),kbOpts:{weight:100+30,kbExpr:H.textInputFocus,primary:9,secondary:[1033]}}));Oe(new Nz({id:"acceptSnippet",precondition:aa.InSnippetMode,handler:s=>s.finish()}));var Dot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},S_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let t8=class extends de{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(e,t,i,n,o,l,r,a,d,c,h,u){super(),this.textModel=e,this.selectedSuggestItem=t,this._textModelVersionId=i,this._positions=n,this._debounceValue=o,this._suggestPreviewEnabled=l,this._suggestPreviewMode=r,this._inlineSuggestMode=a,this._enabled=d,this._instantiationService=c,this._commandService=h,this._languageConfigurationService=u,this._source=this._register(this._instantiationService.createInstance(e8,this.textModel,this._textModelVersionId,this._debounceValue)),this._isActive=oi(this,!1),this._forceUpdateExplicitlySignal=PQ(this),this._selectedInlineCompletionId=oi(this,void 0),this._primaryPosition=ht(this,p=>this._positions.read(p)[0]??new oe(1,1)),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([Zg.Redo,Zg.Undo,Zg.AcceptWord]),this._fetchInlineCompletionsPromise=Nbe({owner:this,createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:Ju.Automatic}),handleChange:(p,g)=>(p.didChange(this._textModelVersionId)&&this._preserveCurrentCompletionReasons.has(this._getReason(p.change))?g.preserveCurrentCompletion=!0:p.didChange(this._forceUpdateExplicitlySignal)&&(g.inlineCompletionTriggerKind=Ju.Explicit),!0)},(p,g)=>{if(this._forceUpdateExplicitlySignal.read(p),!(this._enabled.read(p)&&this.selectedSuggestItem.read(p)||this._isActive.read(p))){this._source.cancelUpdate();return}this._textModelVersionId.read(p);const f=this._source.suggestWidgetInlineCompletions.get(),Z=this.selectedSuggestItem.read(p);if(f&&!Z){const R=this._source.inlineCompletions.get();Ss(M=>{(!R||f.request.versionId>R.request.versionId)&&this._source.inlineCompletions.set(f.clone(),M),this._source.clearSuggestWidgetInlineCompletions(M)})}const A=this._primaryPosition.read(p),N={triggerKind:g.inlineCompletionTriggerKind,selectedSuggestionInfo:Z==null?void 0:Z.toSelectedSuggestionInfo()},W=this.selectedInlineCompletion.get(),Q=g.preserveCurrentCompletion||W!=null&&W.forwardStable?W:void 0;return this._source.fetch(A,N,Q)}),this._filteredInlineCompletionItems=$d({owner:this,equalsFn:fv()},p=>{const g=this._source.inlineCompletions.read(p);if(!g)return[];const b=this._primaryPosition.read(p);return g.inlineCompletions.filter(Z=>Z.isVisible(this.textModel,b,p))}),this.selectedInlineCompletionIndex=ht(this,p=>{const g=this._selectedInlineCompletionId.read(p),b=this._filteredInlineCompletionItems.read(p),f=this._selectedInlineCompletionId===void 0?-1:b.findIndex(Z=>Z.semanticId===g);return f===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):f}),this.selectedInlineCompletion=ht(this,p=>{const g=this._filteredInlineCompletionItems.read(p),b=this.selectedInlineCompletionIndex.read(p);return g[b]}),this.activeCommands=$d({owner:this,equalsFn:fv()},p=>{var g;return((g=this.selectedInlineCompletion.read(p))==null?void 0:g.inlineCompletion.source.inlineCompletions.commands)??[]}),this.lastTriggerKind=this._source.inlineCompletions.map(this,p=>p==null?void 0:p.request.context.triggerKind),this.inlineCompletionsCount=ht(this,p=>{if(this.lastTriggerKind.read(p)===Ju.Explicit)return this._filteredInlineCompletionItems.read(p).length}),this.state=$d({owner:this,equalsFn:(p,g)=>!p||!g?p===g:ace(p.ghostTexts,g.ghostTexts)&&p.inlineCompletion===g.inlineCompletion&&p.suggestItem===g.suggestItem},p=>{const g=this.textModel,b=this.selectedSuggestItem.read(p);if(b){const f=$Z(b.toSingleTextEdit(),g),Z=this._computeAugmentation(f,p);if(!this._suggestPreviewEnabled.read(p)&&!Z)return;const N=(Z==null?void 0:Z.edit)??f,W=Z?Z.edit.text.length-f.text.length:0,Q=this._suggestPreviewMode.read(p),R=this._positions.read(p),M=[N,...W_(this.textModel,R,N)],w=M.map((G,P)=>mce(G,g,Q,R[P],W)).filter(fp),Y=w[0]??new mT(N.range.endLineNumber,[]);return{edits:M,primaryGhostText:Y,ghostTexts:w,inlineCompletion:Z==null?void 0:Z.completion,suggestItem:b}}else{if(!this._isActive.read(p))return;const f=this.selectedInlineCompletion.read(p);if(!f)return;const Z=f.toSingleTextEdit(p),A=this._inlineSuggestMode.read(p),N=this._positions.read(p),W=[Z,...W_(this.textModel,N,Z)],Q=W.map((R,M)=>mce(R,g,A,N[M],0)).filter(fp);return Q[0]?{edits:W,primaryGhostText:Q[0],ghostTexts:Q,inlineCompletion:f,suggestItem:void 0}:void 0}}),this.ghostTexts=$d({owner:this,equalsFn:ace},p=>{const g=this.state.read(p);if(g)return g.ghostTexts}),this.primaryGhostText=$d({owner:this,equalsFn:PZe},p=>{const g=this.state.read(p);if(g)return g==null?void 0:g.primaryGhostText}),this._register(KQ(this._fetchInlineCompletionsPromise));let m;this._register(Gt(p=>{var f,Z;const g=this.state.read(p),b=g==null?void 0:g.inlineCompletion;if((b==null?void 0:b.semanticId)!==(m==null?void 0:m.semanticId)&&(m=b,b)){const A=b.inlineCompletion,N=A.source;(Z=(f=N.provider).handleItemDidShow)==null||Z.call(f,N.inlineCompletions,A.sourceInlineCompletion,A.insertText)}}))}_getReason(e){return e!=null&&e.isUndoing?Zg.Undo:e!=null&&e.isRedoing?Zg.Redo:this.isAcceptingPartially?Zg.AcceptWord:Zg.Other}async trigger(e){this._isActive.set(!0,e),await this._fetchInlineCompletionsPromise.get()}async triggerExplicitly(e){CA(e,t=>{this._isActive.set(!0,t),this._forceUpdateExplicitlySignal.trigger(t)}),await this._fetchInlineCompletionsPromise.get()}stop(e){CA(e,t=>{this._isActive.set(!1,t),this._source.clear(t)})}_computeAugmentation(e,t){const i=this.textModel,n=this._source.suggestWidgetInlineCompletions.read(t),o=n?n.inlineCompletions:[this.selectedInlineCompletion.read(t)].filter(fp);return zxe(o,r=>{let a=r.toSingleTextEdit(t);return a=$Z(a,i,v.fromPositions(a.range.getStartPosition(),e.range.getEndPosition())),eAe(a,e)?{completion:r,edit:a}:void 0})}async _deltaSelectedInlineCompletionIndex(e){await this.triggerExplicitly();const t=this._filteredInlineCompletionItems.get()||[];if(t.length>0){const i=(this.selectedInlineCompletionIndex.get()+e+t.length)%t.length;this._selectedInlineCompletionId.set(t[i].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(e){var n;if(e.getModel()!==this.textModel)throw new en;const t=this.state.get();if(!t||t.primaryGhostText.isEmpty()||!t.inlineCompletion)return;const i=t.inlineCompletion.toInlineCompletion(void 0);if(i.command&&i.source.addRef(),e.pushUndoStop(),i.snippetInfo)e.executeEdits("inlineSuggestion.accept",[Rs.replace(i.range,""),...i.additionalTextEdits]),e.setPosition(i.snippetInfo.range.getStartPosition(),"inlineCompletionAccept"),(n=aa.get(e))==null||n.insert(i.snippetInfo.snippet,{undoStopBefore:!1});else{const o=t.edits,l=Qce(o).map(r=>dt.fromPositions(r));e.executeEdits("inlineSuggestion.accept",[...o.map(r=>Rs.replace(r.range,r.text)),...i.additionalTextEdits]),e.setSelections(l,"inlineCompletionAccept")}this.stop(),i.command&&(await this._commandService.executeCommand(i.command.id,...i.command.arguments||[]).then(void 0,Os),i.source.removeRef())}async acceptNextWord(e){await this._acceptNext(e,(t,i)=>{const n=this.textModel.getLanguageIdAtPosition(t.lineNumber,t.column),o=this._languageConfigurationService.getLanguageConfiguration(n),l=new RegExp(o.wordDefinition.source,o.wordDefinition.flags.replace("g","")),r=i.match(l);let a=0;r&&r.index!==void 0?r.index===0?a=r[0].length:a=r.index:a=i.length;const c=/\s+/g.exec(i);return c&&c.index!==void 0&&c.index+c[0].length<a&&(a=c.index+c[0].length),a},0)}async acceptNextLine(e){await this._acceptNext(e,(t,i)=>{const n=i.match(/\n/);return n&&n.index!==void 0?n.index+1:i.length},1)}async _acceptNext(e,t,i){if(e.getModel()!==this.textModel)throw new en;const n=this.state.get();if(!n||n.primaryGhostText.isEmpty()||!n.inlineCompletion)return;const o=n.primaryGhostText,l=n.inlineCompletion.toInlineCompletion(void 0);if(l.snippetInfo||l.filterText!==l.insertText){await this.accept(e);return}const r=o.parts[0],a=new oe(o.lineNumber,r.column),d=r.text,c=t(a,d);if(c===d.length&&o.parts.length===1){this.accept(e);return}const h=d.substring(0,c),u=this._positions.get(),m=u[0];l.source.addRef();try{this._isAcceptingPartially=!0;try{e.pushUndoStop();const p=v.fromPositions(m,a),g=e.getModel().getValueInRange(p)+h,b=new Rp(p,g),f=[b,...W_(this.textModel,u,b)],Z=Qce(f).map(A=>dt.fromPositions(A));e.executeEdits("inlineSuggestion.accept",f.map(A=>Rs.replace(A.range,A.text))),e.setSelections(Z,"inlineCompletionPartialAccept"),e.revealPositionInCenterIfOutsideViewport(e.getPosition(),1)}finally{this._isAcceptingPartially=!1}if(l.source.provider.handlePartialAccept){const p=v.fromPositions(l.range.getStartPosition(),qh.ofText(h).addToPosition(a)),g=e.getModel().getValueInRange(p,1);l.source.provider.handlePartialAccept(l.source.inlineCompletions,l.sourceInlineCompletion,g.length,{kind:i})}}finally{l.source.removeRef()}}handleSuggestAccepted(e){var o,l;const t=$Z(e.toSingleTextEdit(),this.textModel),i=this._computeAugmentation(t,void 0);if(!i)return;const n=i.completion.inlineCompletion;(l=(o=n.source.provider).handlePartialAccept)==null||l.call(o,n.source.inlineCompletions,n.sourceInlineCompletion,t.text.length,{kind:2})}};t8=Dot([S_(9,bt),S_(10,On),S_(11,Qs)],t8);var Zg;(function(s){s[s.Undo=0]="Undo",s[s.Redo=1]="Redo",s[s.AcceptWord=2]="AcceptWord",s[s.Other=3]="Other"})(Zg||(Zg={}));function W_(s,e,t){if(e.length===1)return[];const i=e[0],n=e.slice(1),o=t.range.getStartPosition(),l=t.range.getEndPosition(),r=s.getValueInRange(v.fromPositions(i,l)),a=dce(i,o);if(a.lineNumber<1)return vt(new en(`positionWithinTextEdit line number should be bigger than 0.
- Invalid subtraction between ${i.toString()} and ${o.toString()}`)),[];const d=Got(t.text,a);return n.map(c=>{const h=dot(dce(c,o),l),u=s.getValueInRange(v.fromPositions(c,h)),m=OU(r,u),p=v.fromPositions(c,c.delta(0,m));return new Rp(p,d)})}function Got(s,e){let t="";const i=FGe(s);for(let n=e.lineNumber-1;n<i.length;n++)t+=i[n].substring(n===e.lineNumber-1?e.column-1:0);return t}function Qce(s){const e=SE.createSortPermutation(s,ea(o=>o.range,v.compareRangesUsingStarts)),i=new P$(e.apply(s)).getNewRanges();return e.inverse().apply(i).map(o=>o.getEndPosition())}var Eot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},yce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},t2;class Lie{constructor(e){this.name=e}select(e,t,i){if(i.length===0)return 0;const n=i[0].score[0];for(let o=0;o<i.length;o++){const{score:l,completion:r}=i[o];if(l[0]!==n)break;if(r.preselect)return o}return 0}}class Cce extends Lie{constructor(){super("first")}memorize(e,t,i){}toJSON(){}fromJSON(){}}class vot extends Lie{constructor(){super("recentlyUsed"),this._cache=new Ip(300,.66),this._seq=0}memorize(e,t,i){const n=`${e.getLanguageId()}/${i.textLabel}`;this._cache.set(n,{touch:this._seq++,type:i.completion.kind,insertText:i.completion.insertText})}select(e,t,i){if(i.length===0)return 0;const n=e.getLineContent(t.lineNumber).substr(t.column-10,t.column-1);if(/\s$/.test(n))return super.select(e,t,i);const o=i[0].score[0];let l=-1,r=-1,a=-1;for(let d=0;d<i.length&&i[d].score[0]===o;d++){const c=`${e.getLanguageId()}/${i[d].textLabel}`,h=this._cache.peek(c);if(h&&h.touch>a&&h.type===i[d].completion.kind&&h.insertText===i[d].completion.insertText&&(a=h.touch,r=d),i[d].completion.preselect&&l===-1)return l=d}return r!==-1?r:l!==-1?l:0}toJSON(){return this._cache.toJSON()}fromJSON(e){this._cache.clear();const t=0;for(const[i,n]of e)n.touch=t,n.type=typeof n.type=="number"?n.type:tM.fromString(n.type),this._cache.set(i,n);this._seq=this._cache.size}}class xot extends Lie{constructor(){super("recentlyUsedByPrefix"),this._trie=ZW.forStrings(),this._seq=0}memorize(e,t,i){const{word:n}=e.getWordUntilPosition(t),o=`${e.getLanguageId()}/${n}`;this._trie.set(o,{type:i.completion.kind,insertText:i.completion.insertText,touch:this._seq++})}select(e,t,i){const{word:n}=e.getWordUntilPosition(t);if(!n)return super.select(e,t,i);const o=`${e.getLanguageId()}/${n}`;let l=this._trie.get(o);if(l||(l=this._trie.findSubstr(o)),l)for(let r=0;r<i.length;r++){const{kind:a,insertText:d}=i[r].completion;if(a===l.type&&d===l.insertText)return r}return super.select(e,t,i)}toJSON(){const e=[];return this._trie.forEach((t,i)=>e.push([i,t])),e.sort((t,i)=>-(t[1].touch-i[1].touch)).forEach((t,i)=>t[1].touch=i),e.slice(0,200)}fromJSON(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;for(const[t,i]of e)i.type=typeof i.type=="number"?i.type:tM.fromString(i.type),this._trie.set(t,i)}}}var cA;let i8=(cA=class{constructor(e,t){this._storageService=e,this._configService=t,this._disposables=new Ze,this._persistSoon=new Rn(()=>this._saveState(),500),this._disposables.add(e.onWillSaveState(i=>{i.reason===wM.SHUTDOWN&&this._saveState()}))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(e,t,i){this._withStrategy(e,t).memorize(e,t,i),this._persistSoon.schedule()}select(e,t,i){return this._withStrategy(e,t).select(e,t,i)}_withStrategy(e,t){var n;const i=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:e.getLanguageIdAtPosition(t.lineNumber,t.column),resource:e.uri});if(((n=this._strategy)==null?void 0:n.name)!==i){this._saveState();const o=t2._strategyCtors.get(i)||Cce;this._strategy=new o;try{const r=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,a=this._storageService.get(`${t2._storagePrefix}/${i}`,r);a&&this._strategy.fromJSON(JSON.parse(a))}catch{}}return this._strategy}_saveState(){if(this._strategy){const t=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,i=JSON.stringify(this._strategy);this._storageService.store(`${t2._storagePrefix}/${this._strategy.name}`,i,t,1)}}},t2=cA,cA._strategyCtors=new Map([["recentlyUsedByPrefix",xot],["recentlyUsed",vot],["first",Cce]]),cA._storagePrefix="suggest/memories",cA);i8=t2=Eot([yce(0,su),yce(1,li)],i8);const Rz=Zi("ISuggestMemories");Ci(Rz,i8,1);var Jot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Xot=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},n8,pQ;let $x=(pQ=class{constructor(e,t){this._editor=e,this._enabled=!1,this._ckAtEnd=n8.AtEnd.bindTo(t),this._configListener=this._editor.onDidChangeConfiguration(i=>i.hasChanged(124)&&this._update()),this._update()}dispose(){var e;this._configListener.dispose(),(e=this._selectionListener)==null||e.dispose(),this._ckAtEnd.reset()}_update(){const e=this._editor.getOption(124)==="on";if(this._enabled!==e)if(this._enabled=e,this._enabled){const t=()=>{if(!this._editor.hasModel()){this._ckAtEnd.set(!1);return}const i=this._editor.getModel(),n=this._editor.getSelection(),o=i.getWordAtPosition(n.getStartPosition());if(!o){this._ckAtEnd.set(!1);return}this._ckAtEnd.set(o.endColumn===n.getStartPosition().column)};this._selectionListener=this._editor.onDidChangeCursorSelection(t),t()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}},n8=pQ,pQ.AtEnd=new Ke("atEndOfWord",!1),pQ);$x=n8=Jot([Xot(1,wt)],$x);var Yot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zot=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},i2,gQ;let TV=(gQ=class{constructor(e,t){this._editor=e,this._index=0,this._ckOtherSuggestions=i2.OtherSuggestions.bindTo(t)}dispose(){this.reset()}reset(){var e;this._ckOtherSuggestions.reset(),(e=this._listener)==null||e.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:e,index:t},i){if(e.items.length===0){this.reset();return}if(i2._moveIndex(!0,e,t)===t){this.reset();return}this._acceptNext=i,this._model=e,this._index=t,this._listener=this._editor.onDidChangeCursorPosition(()=>{this._ignore||this.reset()}),this._ckOtherSuggestions.set(!0)}static _moveIndex(e,t,i){let n=i;for(let o=t.items.length;o>0&&(n=(n+t.items.length+(e?1:-1))%t.items.length,!(n===i||!t.items[n].completion.additionalTextEdits));o--);return n}next(){this._move(!0)}prev(){this._move(!1)}_move(e){if(this._model)try{this._ignore=!0,this._index=i2._moveIndex(e,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}},i2=gQ,gQ.OtherSuggestions=new Ke("hasOtherSuggestions",!1),gQ);TV=i2=Yot([zot(1,wt)],TV);class _ot{constructor(e,t,i,n){this._disposables=new Ze,this._disposables.add(i.onDidSuggest(o=>{o.completionModel.items.length===0&&this.reset()})),this._disposables.add(i.onDidCancel(o=>{this.reset()})),this._disposables.add(t.onDidShow(()=>this._onItem(t.getFocusedItem()))),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType(o=>{if(this._active&&!t.isFrozen()&&i.state!==0){const l=o.charCodeAt(o.length-1);this._active.acceptCharacters.has(l)&&e.getOption(0)&&n(this._active.item)}}))}_onItem(e){if(!e||!Sr(e.item.completion.commitCharacters)){this.reset();return}if(this._active&&this._active.item.item===e.item)return;const t=new PE;for(const i of e.item.completion.commitCharacters)i.length>0&&t.add(i.charCodeAt(0));this._active={acceptCharacters:t,item:e}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}const Mc=class Mc{async provideSelectionRanges(e,t){const i=[];for(const n of t){const o=[];i.push(o);const l=new Map;await new Promise(r=>Mc._bracketsRightYield(r,0,e,n,l)),await new Promise(r=>Mc._bracketsLeftYield(r,0,e,n,l,o))}return i}static _bracketsRightYield(e,t,i,n,o){const l=new Map,r=Date.now();for(;;){if(t>=Mc._maxRounds){e();break}if(!n){e();break}const a=i.bracketPairs.findNextBracket(n);if(!a){e();break}if(Date.now()-r>Mc._maxDuration){setTimeout(()=>Mc._bracketsRightYield(e,t+1,i,n,o));break}if(a.bracketInfo.isOpeningBracket){const c=a.bracketInfo.bracketText,h=l.has(c)?l.get(c):0;l.set(c,h+1)}else{const c=a.bracketInfo.getOpeningBrackets()[0].bracketText;let h=l.has(c)?l.get(c):0;if(h-=1,l.set(c,Math.max(0,h)),h<0){let u=o.get(c);u||(u=new Pr,o.set(c,u)),u.push(a.range)}}n=a.range.getEndPosition()}}static _bracketsLeftYield(e,t,i,n,o,l){const r=new Map,a=Date.now();for(;;){if(t>=Mc._maxRounds&&o.size===0){e();break}if(!n){e();break}const d=i.bracketPairs.findPrevBracket(n);if(!d){e();break}if(Date.now()-a>Mc._maxDuration){setTimeout(()=>Mc._bracketsLeftYield(e,t+1,i,n,o,l));break}if(d.bracketInfo.isOpeningBracket){const h=d.bracketInfo.bracketText;let u=r.has(h)?r.get(h):0;if(u-=1,r.set(h,Math.max(0,u)),u<0){const m=o.get(h);if(m){const p=m.shift();m.size===0&&o.delete(h);const g=v.fromPositions(d.range.getEndPosition(),p.getStartPosition()),b=v.fromPositions(d.range.getStartPosition(),p.getEndPosition());l.push({range:g}),l.push({range:b}),Mc._addBracketLeading(i,b,l)}}}else{const h=d.bracketInfo.getOpeningBrackets()[0].bracketText,u=r.has(h)?r.get(h):0;r.set(h,u+1)}n=d.range.getStartPosition()}}static _addBracketLeading(e,t,i){if(t.startLineNumber===t.endLineNumber)return;const n=t.startLineNumber,o=e.getLineFirstNonWhitespaceColumn(n);o!==0&&o!==t.startColumn&&(i.push({range:v.fromPositions(new oe(n,o),t.getEndPosition())}),i.push({range:v.fromPositions(new oe(n,1),t.getEndPosition())}));const l=n-1;if(l>0){const r=e.getLineFirstNonWhitespaceColumn(l);r===t.startColumn&&r!==e.getLineLastNonWhitespaceColumn(l)&&(i.push({range:v.fromPositions(new oe(l,r),t.getEndPosition())}),i.push({range:v.fromPositions(new oe(l,1),t.getEndPosition())}))}}};Mc._maxDuration=30,Mc._maxRounds=2;let eJ=Mc;const Ym=class Ym{static async create(e,t){if(!t.getOption(119).localityBonus||!t.hasModel())return Ym.None;const i=t.getModel(),n=t.getPosition();if(!e.canComputeWordRanges(i.uri))return Ym.None;const[o]=await new eJ().provideSelectionRanges(i,[n]);if(o.length===0)return Ym.None;const l=await e.computeWordRanges(i.uri,o[0].range);if(!l)return Ym.None;const r=i.getWordUntilPosition(n);return delete l[r.word],new class extends Ym{distance(a,d){if(!n.equals(t.getPosition()))return 0;if(d.kind===17)return 2<<20;const c=typeof d.label=="string"?d.label:d.label.label,h=l[c];if(bpe(h))return 2<<20;const u=Hw(h,v.fromPositions(a),v.compareRangesUsingStarts),m=u>=0?h[u]:h[Math.max(0,~u-1)];let p=o.length;for(const g of o){if(!v.containsRange(g.range,m))break;p-=1}return p}}}};Ym.None=new class extends Ym{distance(){return 0}};let tJ=Ym,wce=class{constructor(e,t){this.leadingLineContent=e,this.characterCountDelta=t}};class _b{constructor(e,t,i,n,o,l,r=RM.default,a=void 0){this.clipboardText=a,this._snippetCompareFn=_b._compareCompletionItems,this._items=e,this._column=t,this._wordDistance=n,this._options=o,this._refilterKind=1,this._lineContext=i,this._fuzzyScoreOptions=r,l==="top"?this._snippetCompareFn=_b._compareCompletionItemsSnippetsUp:l==="bottom"&&(this._snippetCompareFn=_b._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(e){(this._lineContext.leadingLineContent!==e.leadingLineContent||this._lineContext.characterCountDelta!==e.characterCountDelta)&&(this._refilterKind=this._lineContext.characterCountDelta<e.characterCountDelta&&this._filteredItems?2:1,this._lineContext=e)}get items(){return this._ensureCachedState(),this._filteredItems}getItemsByProvider(){return this._ensureCachedState(),this._itemsByProvider}getIncompleteProvider(){this._ensureCachedState();const e=new Set;for(const[t,i]of this.getItemsByProvider())i.length>0&&i[0].container.incomplete&&e.add(t);return e}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){this._refilterKind!==0&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const e=[],{leadingLineContent:t,characterCountDelta:i}=this._lineContext;let n="",o="";const l=this._refilterKind===1?this._items:this._filteredItems,r=[],a=!this._options.filterGraceful||l.length>2e3?QA:IYe;for(let d=0;d<l.length;d++){const c=l[d];if(c.isInvalid)continue;const h=this._itemsByProvider.get(c.provider);h?h.push(c):this._itemsByProvider.set(c.provider,[c]);const u=c.position.column-c.editStart.column,m=u+i-(c.position.column-this._column);if(n.length!==m&&(n=m===0?"":t.slice(-m),o=n.toLowerCase()),c.word=n,m===0)c.score=_u.Default;else{let p=0;for(;p<u;){const g=n.charCodeAt(p);if(g===32||g===9)p+=1;else break}if(p>=m)c.score=_u.Default;else if(typeof c.completion.filterText=="string"){const g=a(n,o,p,c.completion.filterText,c.filterTextLow,0,this._fuzzyScoreOptions);if(!g)continue;ZH(c.completion.filterText,c.textLabel)===0?c.score=g:(c.score=TYe(n,o,p,c.textLabel,c.labelLow,0),c.score[0]=g[0])}else{const g=a(n,o,p,c.textLabel,c.labelLow,0,this._fuzzyScoreOptions);if(!g)continue;c.score=g}}c.idx=d,c.distance=this._wordDistance.distance(c.position,c.completion),r.push(c),e.push(c.textLabel.length)}this._filteredItems=r.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:e.length?hj(e.length-.85,e,(d,c)=>d-c):0}}static _compareCompletionItems(e,t){return e.score[0]>t.score[0]?-1:e.score[0]<t.score[0]?1:e.distance<t.distance?-1:e.distance>t.distance?1:e.idx<t.idx?-1:e.idx>t.idx?1:0}static _compareCompletionItemsSnippetsDown(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===27)return 1;if(t.completion.kind===27)return-1}return _b._compareCompletionItems(e,t)}static _compareCompletionItemsSnippetsUp(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===27)return-1;if(t.completion.kind===27)return 1}return _b._compareCompletionItems(e,t)}}var Oot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},j0=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},s8;class Xf{static shouldAutoTrigger(e){if(!e.hasModel())return!1;const t=e.getModel(),i=e.getPosition();t.tokenization.tokenizeIfCheap(i.lineNumber);const n=t.getWordAtPosition(i);return!(!n||n.endColumn!==i.column&&n.startColumn+1!==i.column||!isNaN(Number(n.word)))}constructor(e,t,i){this.leadingLineContent=e.getLineContent(t.lineNumber).substr(0,t.column-1),this.leadingWord=e.getWordUntilPosition(t),this.lineNumber=t.lineNumber,this.column=t.column,this.triggerOptions=i}}function jot(s,e,t){if(!e.getContextKeyValue(Zd.inlineSuggestionVisible.key))return!0;const i=e.getContextKeyValue(Zd.suppressSuggestions.key);return i!==void 0?!i:!s.getOption(62).suppressSuggestions}function Hot(s,e,t){if(!e.getContextKeyValue("inlineSuggestionVisible"))return!0;const i=e.getContextKeyValue(Zd.suppressSuggestions.key);return i!==void 0?!i:!s.getOption(62).suppressSuggestions}let iJ=s8=class{constructor(e,t,i,n,o,l,r,a,d){this._editor=e,this._editorWorkerService=t,this._clipboardService=i,this._telemetryService=n,this._logService=o,this._contextKeyService=l,this._configurationService=r,this._languageFeaturesService=a,this._envService=d,this._toDispose=new Ze,this._triggerCharacterListener=new Ze,this._triggerQuickSuggest=new iu,this._triggerState=void 0,this._completionDisposables=new Ze,this._onDidCancel=new re,this._onDidTrigger=new re,this._onDidSuggest=new re,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new dt(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeModelLanguage(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeConfiguration(()=>{this._updateTriggerCharacters()})),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()}));let c=!1;this._toDispose.add(this._editor.onDidCompositionStart(()=>{c=!0})),this._toDispose.add(this._editor.onDidCompositionEnd(()=>{c=!1,this._onCompositionEnd()})),this._toDispose.add(this._editor.onDidChangeCursorSelection(h=>{c||this._onCursorChange(h)})),this._toDispose.add(this._editor.onDidChangeModelContent(()=>{!c&&this._triggerState!==void 0&&this._refilterCompletionItems()})),this._updateTriggerCharacters()}dispose(){Tn(this._triggerCharacterListener),Tn([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(92)||!this._editor.hasModel()||!this._editor.getOption(122))return;const e=new Map;for(const i of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const n of i.triggerCharacters||[]){let o=e.get(n);o||(o=new Set,e.set(n,o)),o.add(i)}const t=i=>{var l;if(!Hot(this._editor,this._contextKeyService,this._configurationService)||Xf.shouldAutoTrigger(this._editor))return;if(!i){const r=this._editor.getPosition();i=this._editor.getModel().getLineContent(r.lineNumber).substr(0,r.column-1)}let n="";ZA(i.charCodeAt(i.length-1))?xo(i.charCodeAt(i.length-2))&&(n=i.substr(i.length-2)):n=i.charAt(i.length-1);const o=e.get(n);if(o){const r=new Map;if(this._completionModel)for(const[a,d]of this._completionModel.getItemsByProvider())o.has(a)||r.set(a,d);this.trigger({auto:!0,triggerKind:1,triggerCharacter:n,retrigger:!!this._completionModel,clipboardText:(l=this._completionModel)==null?void 0:l.clipboardText,completionOptions:{providerFilter:o,providerItemsToReuse:r}})}};this._triggerCharacterListener.add(this._editor.onDidType(t)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(()=>t()))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(e=!1){var t;this._triggerState!==void 0&&(this._triggerQuickSuggest.cancel(),(t=this._requestToken)==null||t.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:e}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){this._triggerState!==void 0&&(!this._editor.hasModel()||!this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.cancel():this.trigger({auto:this._triggerState.auto,retrigger:!0}))}_onCursorChange(e){if(!this._editor.hasModel())return;const t=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||e.reason!==0&&e.reason!==3||e.source!=="keyboard"&&e.source!=="deleteLeft"){this.cancel();return}this._triggerState===void 0&&e.reason===0?(t.containsRange(this._currentSelection)||t.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():this._triggerState!==void 0&&e.reason===3&&this._refilterCompletionItems()}_onCompositionEnd(){this._triggerState===void 0?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var e;VS.isAllOff(this._editor.getOption(90))||this._editor.getOption(119).snippetsPreventQuickSuggestions&&((e=aa.get(this._editor))!=null&&e.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet(()=>{if(this._triggerState!==void 0||!Xf.shouldAutoTrigger(this._editor)||!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const t=this._editor.getModel(),i=this._editor.getPosition(),n=this._editor.getOption(90);if(!VS.isAllOff(n)){if(!VS.isAllOn(n)){t.tokenization.tokenizeIfCheap(i.lineNumber);const o=t.tokenization.getLineTokens(i.lineNumber),l=o.getStandardTokenType(o.findTokenIndexAtOffset(Math.max(i.column-1-1,0)));if(VS.valueFor(n,l)!=="on")return}jot(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(t)&&this.trigger({auto:!0})}},this._editor.getOption(91)))}_refilterCompletionItems(){Yi(this._editor.hasModel()),Yi(this._triggerState!==void 0);const e=this._editor.getModel(),t=this._editor.getPosition(),i=new Xf(e,t,{...this._triggerState,refilter:!0});this._onNewContext(i)}trigger(e){var u,m,p;if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=new Xf(t,this._editor.getPosition(),e);this.cancel(e.retrigger),this._triggerState=e,this._onDidTrigger.fire({auto:e.auto,shy:e.shy??!1,position:this._editor.getPosition()}),this._context=i;let n={triggerKind:e.triggerKind??0};e.triggerCharacter&&(n={triggerKind:1,triggerCharacter:e.triggerCharacter}),this._requestToken=new Ws;const o=this._editor.getOption(113);let l=1;switch(o){case"top":l=0;break;case"bottom":l=2;break}const{itemKind:r,showDeprecated:a}=s8.createSuggestFilter(this._editor),d=new pT(l,((u=e.completionOptions)==null?void 0:u.kindFilter)??r,(m=e.completionOptions)==null?void 0:m.providerFilter,(p=e.completionOptions)==null?void 0:p.providerItemsToReuse,a),c=tJ.create(this._editorWorkerService,this._editor),h=Tie(this._languageFeaturesService.completionProvider,t,this._editor.getPosition(),d,n,this._requestToken.token);Promise.all([h,c]).then(async([g,b])=>{var W;if((W=this._requestToken)==null||W.dispose(),!this._editor.hasModel())return;let f=e==null?void 0:e.clipboardText;if(!f&&g.needsClipboard&&(f=await this._clipboardService.readText()),this._triggerState===void 0)return;const Z=this._editor.getModel(),A=new Xf(Z,this._editor.getPosition(),e),N={...RM.default,firstMatchCanBeWeak:!this._editor.getOption(119).matchOnWordStartOnly};if(this._completionModel=new _b(g.items,this._context.column,{leadingLineContent:A.leadingLineContent,characterCountDelta:A.column-this._context.column},b,this._editor.getOption(119),this._editor.getOption(113),N,f),this._completionDisposables.add(g.disposable),this._onNewContext(A),this._reportDurationsTelemetry(g.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const Q of g.items)Q.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${Q.provider._debugDisplayName}`,Q.completion)}).catch(vt)}_reportDurationsTelemetry(e){this._telemetryGate++%230===0&&setTimeout(()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(e)}),this._logService.debug("suggest.durations.json",e)})}static createSuggestFilter(e){const t=new Set;e.getOption(113)==="none"&&t.add(27);const n=e.getOption(119);return n.showMethods||t.add(0),n.showFunctions||t.add(1),n.showConstructors||t.add(2),n.showFields||t.add(3),n.showVariables||t.add(4),n.showClasses||t.add(5),n.showStructs||t.add(6),n.showInterfaces||t.add(7),n.showModules||t.add(8),n.showProperties||t.add(9),n.showEvents||t.add(10),n.showOperators||t.add(11),n.showUnits||t.add(12),n.showValues||t.add(13),n.showConstants||t.add(14),n.showEnums||t.add(15),n.showEnumMembers||t.add(16),n.showKeywords||t.add(17),n.showWords||t.add(18),n.showColors||t.add(19),n.showFiles||t.add(20),n.showReferences||t.add(21),n.showColors||t.add(22),n.showFolders||t.add(23),n.showTypeParameters||t.add(24),n.showSnippets||t.add(27),n.showUsers||t.add(25),n.showIssues||t.add(26),{itemKind:t,showDeprecated:n.showDeprecated}}_onNewContext(e){if(this._context){if(e.lineNumber!==this._context.lineNumber){this.cancel();return}if(wn(e.leadingLineContent)!==wn(this._context.leadingLineContent)){this.cancel();return}if(e.column<this._context.column){e.leadingWord.word?this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0}):this.cancel();return}if(this._completionModel){if(e.leadingWord.word.length!==0&&e.leadingWord.startColumn>this._context.leadingWord.startColumn){if(Xf.shouldAutoTrigger(this._editor)&&this._context){const i=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:i}})}return}if(e.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&e.leadingWord.word.length!==0){const t=new Map,i=new Set;for(const[n,o]of this._completionModel.getItemsByProvider())o.length>0&&o[0].container.incomplete?i.add(n):t.set(n,o);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:i,providerItemsToReuse:t}})}else{const t=this._completionModel.lineContext;let i=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},this._completionModel.items.length===0){const n=Xf.shouldAutoTrigger(this._editor);if(!this._context){this.cancel();return}if(n&&this._context.leadingWord.endColumn<e.leadingWord.startColumn){this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0});return}if(this._context.triggerOptions.auto){this.cancel();return}else if(this._completionModel.lineContext=t,i=this._completionModel.items.length>0,i&&e.leadingWord.word.length===0){this.cancel();return}}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:e.triggerOptions,isFrozen:i})}}}}};iJ=s8=Oot([j0(1,_a),j0(2,D0),j0(3,lr),j0(4,El),j0(5,wt),j0(6,li),j0(7,lt),j0(8,eee)],iJ);const o5=class o5{constructor(e,t){this._disposables=new Ze,this._lastOvertyped=[],this._locked=!1,this._disposables.add(e.onWillType(()=>{if(this._locked||!e.hasModel())return;const i=e.getSelections(),n=i.length;let o=!1;for(let r=0;r<n;r++)if(!i[r].isEmpty()){o=!0;break}if(!o){this._lastOvertyped.length!==0&&(this._lastOvertyped.length=0);return}this._lastOvertyped=[];const l=e.getModel();for(let r=0;r<n;r++){const a=i[r];if(l.getValueLengthInRange(a)>o5._maxSelectionLength)return;this._lastOvertyped[r]={value:l.getValueInRange(a),multiline:a.startLineNumber!==a.endLineNumber}}})),this._disposables.add(t.onDidTrigger(i=>{this._locked=!0})),this._disposables.add(t.onDidCancel(i=>{this._locked=!1}))}getLastOvertypedInfo(e){if(e>=0&&e<this._lastOvertyped.length)return this._lastOvertyped[e]}dispose(){this._disposables.dispose()}};o5._maxSelectionLength=51200;let o8=o5;var Pot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},V_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let l8=class{constructor(e,t,i,n,o){this._menuId=t,this._menuService=n,this._contextKeyService=o,this._menuDisposables=new Ze,this.element=ye(e,Ge(".suggest-status-bar"));const l=r=>r instanceof Ud?i.createInstance(Tee,r,{useComma:!0}):void 0;this._leftActions=new ac(this.element,{actionViewItemProvider:l}),this._rightActions=new ac(this.element,{actionViewItemProvider:l}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}dispose(){this._menuDisposables.dispose(),this._leftActions.dispose(),this._rightActions.dispose(),this.element.remove()}show(){const e=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const i=[],n=[];for(const[o,l]of e.getActions())o==="left"?i.push(...l):n.push(...l);this._leftActions.clear(),this._leftActions.push(i),this._rightActions.clear(),this._rightActions.push(n)};this._menuDisposables.add(e.onDidChange(()=>t())),this._menuDisposables.add(e)}hide(){this._menuDisposables.clear()}};l8=Pot([V_(2,bt),V_(3,pc),V_(4,wt)],l8);var Kot=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},qot=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function kie(s){return!!s&&!!(s.completion.documentation||s.completion.detail&&s.completion.detail!==s.completion.label)}let r8=class{constructor(e,t){this._editor=e,this._onDidClose=new re,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new re,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new Ze,this._renderDisposeable=new Ze,this._borderWidth=1,this._size=new bn(330,0),this.domNode=Ge(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=t.createInstance(W0,{editor:e}),this._body=Ge(".body"),this._scrollbar=new dB(this._body,{alwaysConsumeMouseWheel:!0}),ye(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=ye(this._body,Ge(".header")),this._close=ye(this._header,Ge("span"+Qt.asCSSSelector(ke.close))),this._close.title=U("details.close","Close"),this._type=ye(this._header,Ge("p.type")),this._docs=ye(this._body,Ge("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(50)&&this._configureFont()}))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const e=this._editor.getOptions(),t=e.get(50),i=t.getMassagedFontFamily(),n=e.get(120)||t.fontSize,o=e.get(121)||t.lineHeight,l=t.fontWeight,r=`${n}px`,a=`${o}px`;this.domNode.style.fontSize=r,this.domNode.style.lineHeight=`${o/n}`,this.domNode.style.fontWeight=l,this.domNode.style.fontFeatureSettings=t.fontFeatureSettings,this._type.style.fontFamily=i,this._close.style.height=a,this._close.style.width=a}getLayoutInfo(){const e=this._editor.getOption(121)||this._editor.getOption(50).lineHeight,t=this._borderWidth,i=t*2;return{lineHeight:e,borderWidth:t,borderHeight:i,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=U("loading","Loading..."),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,this.getLayoutInfo().lineHeight*2),this._onDidChangeContents.fire(this)}renderItem(e,t){var o;this._renderDisposeable.clear();let{detail:i,documentation:n}=e.completion;if(t){let l="";l+=`score: ${e.score[0]}
- `,l+=`prefix: ${e.word??"(no prefix)"}
- `,l+=`word: ${e.completion.filterText?e.completion.filterText+" (filterText)":e.textLabel}
- `,l+=`distance: ${e.distance} (localityBonus-setting)
- `,l+=`index: ${e.idx}, based on ${e.completion.sortText&&`sortText: "${e.completion.sortText}"`||"label"}
- `,l+=`commit_chars: ${(o=e.completion.commitCharacters)==null?void 0:o.join("")}
- `,n=new tr().appendCodeblock("empty",l),i=`Provider: ${e.provider._debugDisplayName}`}if(!t&&!kie(e)){this.clearContents();return}if(this.domNode.classList.remove("no-docs","no-type"),i){const l=i.length>1e5?`${i.substr(0,1e5)}…`:i;this._type.textContent=l,this._type.title=l,hd(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(l))}else Fl(this._type),this._type.title="",_r(this._type),this.domNode.classList.add("no-type");if(Fl(this._docs),typeof n=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=n;else if(n){this._docs.classList.add("markdown-docs"),Fl(this._docs);const l=this._markdownRenderer.render(n);this._docs.appendChild(l.element),this._renderDisposeable.add(l),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=l=>{l.preventDefault(),l.stopPropagation()},this._close.onclick=l=>{l.preventDefault(),l.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get isEmpty(){return this.domNode.classList.contains("no-docs")}get size(){return this._size}layout(e,t){const i=new bn(e,t);bn.equals(i,this._size)||(this._size=i,VEe(this.domNode,e,t)),this._scrollbar.scanDomNode()}scrollDown(e=8){this._body.scrollTop+=e}scrollUp(e=8){this._body.scrollTop-=e}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(e){this._borderWidth=e}get borderWidth(){return this._borderWidth}};r8=Kot([qot(1,bt)],r8);class $ot{constructor(e,t){this.widget=e,this._editor=t,this.allowEditorOverflow=!0,this._disposables=new Ze,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new pie,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(e.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let i,n,o=0,l=0;this._disposables.add(this._resizable.onDidWillResize(()=>{i=this._topLeft,n=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(r=>{if(i&&n){this.widget.layout(r.dimension.width,r.dimension.height);let a=!1;r.west&&(l=n.width-r.dimension.width,a=!0),r.north&&(o=n.height-r.dimension.height,a=!0),a&&this._applyTopLeft({top:i.top+o,left:i.left+l})}r.done&&(i=void 0,n=void 0,o=0,l=0,this._userSize=r.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{this._anchorBox&&this._placeAtAnchor(this._anchorBox,this._userSize??this.widget.size,this._preferAlignAtTop)}))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return"suggest.details"}getDomNode(){return this._resizable.domNode}getPosition(){return this._topLeft?{preference:this._topLeft}:null}show(){this._added||(this._editor.addOverlayWidget(this),this._added=!0)}hide(e=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),e&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(e,t){const i=e.getBoundingClientRect();this._anchorBox=i,this._preferAlignAtTop=t,this._placeAtAnchor(this._anchorBox,this._userSize??this.widget.size,t)}_placeAtAnchor(e,t,i){const n=N0(this.getDomNode().ownerDocument.body),o=this.widget.getLayoutInfo(),l=new bn(220,2*o.lineHeight),r=e.top,a=function(){const W=n.width-(e.left+e.width+o.borderWidth+o.horizontalPadding),Q=-o.borderWidth+e.left+e.width,R=new bn(W,n.height-e.top-o.borderHeight-o.verticalPadding),M=R.with(void 0,e.top+e.height-o.borderHeight-o.verticalPadding);return{top:r,left:Q,fit:W-t.width,maxSizeTop:R,maxSizeBottom:M,minSize:l.with(Math.min(W,l.width))}}(),d=function(){const W=e.left-o.borderWidth-o.horizontalPadding,Q=Math.max(o.horizontalPadding,e.left-t.width-o.borderWidth),R=new bn(W,n.height-e.top-o.borderHeight-o.verticalPadding),M=R.with(void 0,e.top+e.height-o.borderHeight-o.verticalPadding);return{top:r,left:Q,fit:W-t.width,maxSizeTop:R,maxSizeBottom:M,minSize:l.with(Math.min(W,l.width))}}(),c=function(){const W=e.left,Q=-o.borderWidth+e.top+e.height,R=new bn(e.width-o.borderHeight,n.height-e.top-e.height-o.verticalPadding);return{top:Q,left:W,fit:R.height-t.height,maxSizeBottom:R,maxSizeTop:R,minSize:l.with(R.width)}}(),h=[a,d,c],u=h.find(W=>W.fit>=0)??h.sort((W,Q)=>Q.fit-W.fit)[0],m=e.top+e.height-o.borderHeight;let p,g=t.height;const b=Math.max(u.maxSizeTop.height,u.maxSizeBottom.height);g>b&&(g=b);let f;i?g<=u.maxSizeTop.height?(p=!0,f=u.maxSizeTop):(p=!1,f=u.maxSizeBottom):g<=u.maxSizeBottom.height?(p=!1,f=u.maxSizeBottom):(p=!0,f=u.maxSizeTop);let{top:Z,left:A}=u;!p&&g>e.height&&(Z=m-g);const N=this._editor.getDomNode();if(N){const W=N.getBoundingClientRect();Z-=W.top,A-=W.left}this._applyTopLeft({left:A,top:Z}),this._resizable.enableSashes(!p,u===a,p,u!==a),this._resizable.minSize=u.minSize,this._resizable.maxSize=f,this._resizable.layout(g,Math.min(f.width,t.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(e){this._topLeft=e,this._editor.layoutOverlayWidget(this)}}var gp;(function(s){s[s.FILE=0]="FILE",s[s.FOLDER=1]="FOLDER",s[s.ROOT_FOLDER=2]="ROOT_FOLDER"})(gp||(gp={}));const elt=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function Tk(s,e,t,i,n){if(Qt.isThemeIcon(n))return[`codicon-${n.id}`,"predefined-file-icon"];if(At.isUri(n))return[];const o=i===gp.ROOT_FOLDER?["rootfolder-icon"]:i===gp.FOLDER?["folder-icon"]:["file-icon"];if(t){let l;if(t.scheme===Xt.data)l=qU.parseMetaData(t).get(qU.META_DATA_LABEL);else{const r=t.path.match(elt);r?(l=Bk(r[2].toLowerCase()),r[1]&&o.push(`${Bk(r[1].toLowerCase())}-name-dir-icon`)):l=Bk(t.authority.toLowerCase())}if(i===gp.ROOT_FOLDER)o.push(`${l}-root-name-folder-icon`);else if(i===gp.FOLDER)o.push(`${l}-name-folder-icon`);else{if(l){if(o.push(`${l}-name-file-icon`),o.push("name-file-icon"),l.length<=255){const a=l.split(".");for(let d=1;d<a.length;d++)o.push(`${a.slice(d).join(".")}-ext-file-icon`)}o.push("ext-file-icon")}const r=tlt(s,e,t);r&&o.push(`${Bk(r)}-lang-file-icon`)}}return o}function tlt(s,e,t){if(!t)return null;let i=null;if(t.scheme===Xt.data){const o=qU.parseMetaData(t).get(qU.META_DATA_MIME);o&&(i=e.getLanguageIdByMimeType(o))}else{const n=s.getModel(t);n&&(i=n.getLanguageId())}return i&&i!==ia?i:e.guessLanguageIdByFilepathOrFirstLine(t)}function Bk(s){return s.replace(/[\s]/g,"/")}var ilt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Q_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};function tAe(s){return`suggest-aria-id:${s}`}const nlt=ts("suggest-more-info",ke.chevronRight,U("suggestMoreInfoIcon","Icon for more information in the suggest widget."));var rp;const slt=new(rp=class{extract(e,t){if(e.textLabel.match(rp._regexStrict))return t[0]=e.textLabel,!0;if(e.completion.detail&&e.completion.detail.match(rp._regexStrict))return t[0]=e.completion.detail,!0;if(e.completion.documentation){const i=typeof e.completion.documentation=="string"?e.completion.documentation:e.completion.documentation.value,n=rp._regexRelaxed.exec(i);if(n&&(n.index===0||n.index+n[0].length===i.length))return t[0]=n[0],!0}return!1}},rp._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,rp._regexStrict=new RegExp(`^${rp._regexRelaxed.source}$`,"i"),rp);let a8=class{constructor(e,t,i,n){this._editor=e,this._modelService=t,this._languageService=i,this._themeService=n,this._onDidToggleDetails=new re,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(e){const t=new Ze,i=e;i.classList.add("show-file-icons");const n=ye(e,Ge(".icon")),o=ye(n,Ge("span.colorspan")),l=ye(e,Ge(".contents")),r=ye(l,Ge(".main")),a=ye(r,Ge(".icon-label.codicon")),d=ye(r,Ge("span.left")),c=ye(r,Ge("span.right")),h=new zv(d,{supportHighlights:!0,supportIcons:!0});t.add(h);const u=ye(d,Ge("span.signature-label")),m=ye(d,Ge("span.qualifier-label")),p=ye(c,Ge("span.details-label")),g=ye(c,Ge("span.readMore"+Qt.asCSSSelector(nlt)));return g.title=U("readMore","Read More"),{root:i,left:d,right:c,icon:n,colorspan:o,iconLabel:h,iconContainer:a,parametersLabel:u,qualifierLabel:m,detailsLabel:p,readMore:g,disposables:t,configureFont:()=>{const f=this._editor.getOptions(),Z=f.get(50),A=Z.getMassagedFontFamily(),N=Z.fontFeatureSettings,W=f.get(120)||Z.fontSize,Q=f.get(121)||Z.lineHeight,R=Z.fontWeight,M=Z.letterSpacing,w=`${W}px`,Y=`${Q}px`,G=`${M}px`;i.style.fontSize=w,i.style.fontWeight=R,i.style.letterSpacing=G,r.style.fontFamily=A,r.style.fontFeatureSettings=N,r.style.lineHeight=Y,n.style.height=Y,n.style.width=Y,g.style.height=Y,g.style.width=Y}}}renderElement(e,t,i){i.configureFont();const{completion:n}=e;i.root.id=tAe(t),i.colorspan.style.backgroundColor="";const o={labelEscapeNewLines:!0,matches:cB(e.score)},l=[];if(n.kind===19&&slt.extract(e,l))i.icon.className="icon customcolor",i.iconContainer.className="icon hide",i.colorspan.style.backgroundColor=l[0];else if(n.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){i.icon.className="icon hide",i.iconContainer.className="icon hide";const r=Tk(this._modelService,this._languageService,At.from({scheme:"fake",path:e.textLabel}),gp.FILE),a=Tk(this._modelService,this._languageService,At.from({scheme:"fake",path:n.detail}),gp.FILE);o.extraClasses=r.length>a.length?r:a}else n.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(i.icon.className="icon hide",i.iconContainer.className="icon hide",o.extraClasses=[Tk(this._modelService,this._languageService,At.from({scheme:"fake",path:e.textLabel}),gp.FOLDER),Tk(this._modelService,this._languageService,At.from({scheme:"fake",path:n.detail}),gp.FOLDER)].flat()):(i.icon.className="icon hide",i.iconContainer.className="",i.iconContainer.classList.add("suggest-icon",...Qt.asClassNameArray(tM.toIcon(n.kind))));n.tags&&n.tags.indexOf(1)>=0&&(o.extraClasses=(o.extraClasses||[]).concat(["deprecated"]),o.matches=[]),i.iconLabel.setLabel(e.textLabel,void 0,o),typeof n.label=="string"?(i.parametersLabel.textContent="",i.detailsLabel.textContent=y_(n.detail||""),i.root.classList.add("string-label")):(i.parametersLabel.textContent=y_(n.label.detail||""),i.detailsLabel.textContent=y_(n.label.description||""),i.root.classList.remove("string-label")),this._editor.getOption(119).showInlineDetails?hd(i.detailsLabel):_r(i.detailsLabel),kie(e)?(i.right.classList.add("can-expand-details"),hd(i.readMore),i.readMore.onmousedown=r=>{r.stopPropagation(),r.preventDefault()},i.readMore.onclick=r=>{r.stopPropagation(),r.preventDefault(),this._onDidToggleDetails.fire()}):(i.right.classList.remove("can-expand-details"),_r(i.readMore),i.readMore.onmousedown=null,i.readMore.onclick=null)}disposeTemplate(e){e.disposables.dispose()}};a8=ilt([Q_(1,es),Q_(2,Zs),Q_(3,Do)],a8);function y_(s){return s.replace(/\r\n|\r|\n/g,"")}var olt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Lk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},WR;K("editorSuggestWidget.background",sc,U("editorSuggestWidgetBackground","Background color of the suggest widget."));K("editorSuggestWidget.border",oee,U("editorSuggestWidgetBorder","Border color of the suggest widget."));const llt=K("editorSuggestWidget.foreground",Dp,U("editorSuggestWidgetForeground","Foreground color of the suggest widget."));K("editorSuggestWidget.selectedForeground",FM,U("editorSuggestWidgetSelectedForeground","Foreground color of the selected entry in the suggest widget."));K("editorSuggestWidget.selectedIconForeground",uee,U("editorSuggestWidgetSelectedIconForeground","Icon foreground color of the selected entry in the suggest widget."));const rlt=K("editorSuggestWidget.selectedBackground",ZM,U("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget."));K("editorSuggestWidget.highlightForeground",cS,U("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget."));K("editorSuggestWidget.focusHighlightForeground",I5e,U("editorSuggestWidgetFocusHighlightForeground","Color of the match highlights in the suggest widget when an item is focused."));K("editorSuggestWidgetStatus.foreground",ii(llt,.5),U("editorSuggestWidgetStatusForeground","Foreground color of the suggest widget status."));class alt{constructor(e,t){this._service=e,this._key=`suggestWidget.size/${t.getEditorType()}/${t instanceof tu}`}restore(){const e=this._service.get(this._key,0)??"";try{const t=JSON.parse(e);if(bn.is(t))return bn.lift(t)}catch{}}store(e){this._service.store(this._key,JSON.stringify(e),0,1)}reset(){this._service.remove(this._key,0)}}var hA;let d8=(hA=class{constructor(e,t,i,n,o){this.editor=e,this._storageService=t,this._state=0,this._isAuto=!1,this._pendingLayout=new _o,this._pendingShowDetails=new _o,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new iu,this._disposables=new Ze,this._onDidSelect=new fA,this._onDidFocus=new fA,this._onDidHide=new re,this._onDidShow=new re,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new re,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new pie,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new dlt(this,e),this._persistedSize=new alt(t,e);class l{constructor(m,p,g=!1,b=!1){this.persistedSize=m,this.currentSize=p,this.persistHeight=g,this.persistWidth=b}}let r;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),r=new l(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(u=>{var m,p;if(this._resize(u.dimension.width,u.dimension.height),r&&(r.persistHeight=r.persistHeight||!!u.north||!!u.south,r.persistWidth=r.persistWidth||!!u.east||!!u.west),!!u.done){if(r){const{itemHeight:g,defaultSize:b}=this.getLayoutInfo(),f=Math.round(g/2);let{width:Z,height:A}=this.element.size;(!r.persistHeight||Math.abs(r.currentSize.height-A)<=f)&&(A=((m=r.persistedSize)==null?void 0:m.height)??b.height),(!r.persistWidth||Math.abs(r.currentSize.width-Z)<=f)&&(Z=((p=r.persistedSize)==null?void 0:p.width)??b.width),this._persistedSize.store(new bn(Z,A))}this._contentWidget.unlockPreference(),r=void 0}})),this._messageElement=ye(this.element.domNode,Ge(".message")),this._listElement=ye(this.element.domNode,Ge(".tree"));const a=this._disposables.add(o.createInstance(r8,this.editor));a.onDidClose(this.toggleDetails,this,this._disposables),this._details=new $ot(a,this.editor);const d=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(119).showIcons);d();const c=o.createInstance(a8,this.editor);this._disposables.add(c),this._disposables.add(c.onDidToggleDetails(()=>this.toggleDetails())),this._list=new Uc("SuggestWidget",this._listElement,{getHeight:u=>this.getLayoutInfo().itemHeight,getTemplateId:u=>"suggestion"},[c],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>U("suggest","Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:u=>{let m=u.textLabel;if(typeof u.completion.label!="string"){const{detail:f,description:Z}=u.completion.label;f&&Z?m=U("label.full","{0} {1}, {2}",m,f,Z):f?m=U("label.detail","{0} {1}",m,f):Z&&(m=U("label.desc","{0}, {1}",m,Z))}if(!u.isResolved||!this._isDetailsVisible())return m;const{documentation:p,detail:g}=u.completion,b=FA("{0}{1}",g||"",p?typeof p=="string"?p:p.value:"");return U("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",m,b)}}}),this._list.style(eN({listInactiveFocusBackground:rlt,listInactiveFocusOutline:hs})),this._status=o.createInstance(l8,this.element.domNode,xU);const h=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(119).showStatusBar);h(),this._disposables.add(n.onDidColorThemeChange(u=>this._onThemeChange(u))),this._onThemeChange(n.getColorTheme()),this._disposables.add(this._list.onMouseDown(u=>this._onListMouseDownOrTap(u))),this._disposables.add(this._list.onTap(u=>this._onListMouseDownOrTap(u))),this._disposables.add(this._list.onDidChangeSelection(u=>this._onListSelection(u))),this._disposables.add(this._list.onDidChangeFocus(u=>this._onListFocus(u))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(u=>{u.hasChanged(119)&&(h(),d()),this._completionModel&&(u.hasChanged(50)||u.hasChanged(120)||u.hasChanged(121))&&this._list.splice(0,this._list.length,this._completionModel.items)})),this._ctxSuggestWidgetVisible=ti.Visible.bindTo(i),this._ctxSuggestWidgetDetailsVisible=ti.DetailsVisible.bindTo(i),this._ctxSuggestWidgetMultipleSuggestions=ti.MultipleSuggestions.bindTo(i),this._ctxSuggestWidgetHasFocusedSuggestion=ti.HasFocusedSuggestion.bindTo(i),this._disposables.add(Ms(this._details.widget.domNode,"keydown",u=>{this._onDetailsKeydown.fire(u)})),this._disposables.add(this.editor.onMouseDown(u=>this._onEditorMouseDown(u)))}dispose(){var e;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(e=this._loadingTimeout)==null||e.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(e){this._details.widget.domNode.contains(e.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(e.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(e){typeof e.element>"u"||typeof e.index>"u"||(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this._select(e.element,e.index))}_onListSelection(e){e.elements.length&&this._select(e.elements[0],e.indexes[0])}_select(e,t){const i=this._completionModel;i&&(this._onDidSelect.fire({item:e,index:t,model:i}),this.editor.focus())}_onThemeChange(e){this._details.widget.borderWidth=Yu(e.type)?2:1}_onListFocus(e){var n;if(this._ignoreFocusEvents)return;if(!e.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const t=e.elements[0],i=e.indexes[0];t!==this._focusedItem&&((n=this._currentSuggestionDetails)==null||n.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=t,this._list.reveal(i),this._currentSuggestionDetails=Xo(async o=>{const l=HU(()=>{this._isDetailsVisible()&&this.showDetails(!0)},250),r=o.onCancellationRequested(()=>l.dispose());try{return await t.resolve(o)}finally{l.dispose(),r.dispose()}}),this._currentSuggestionDetails.then(()=>{i>=this._list.length||t!==this._list.element(i)||(this._ignoreFocusEvents=!0,this._list.splice(i,1,[t]),this._list.setFocus([i]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:tAe(i)}))}).catch(vt)),this._onDidFocus.fire({item:t,index:i,model:this._completionModel})}_setState(e){if(this._state!==e)switch(this._state=e,this.element.domNode.classList.toggle("frozen",e===4),this.element.domNode.classList.remove("message"),e){case 0:_r(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=WR.LOADING_MESSAGE,_r(this._listElement,this._status.element),hd(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,Vp(WR.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=WR.NO_SUGGESTIONS_MESSAGE,_r(this._listElement,this._status.element),hd(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,Vp(WR.NO_SUGGESTIONS_MESSAGE);break;case 3:_r(this._messageElement),hd(this._listElement,this._status.element),this._show();break;case 4:_r(this._messageElement),hd(this._listElement,this._status.element),this._show();break;case 5:_r(this._messageElement),hd(this._listElement,this._status.element),this._details.show(),this._show();break}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet(()=>{this.element.domNode.classList.add("visible"),this._onDidShow.fire(this)},100)}showTriggered(e,t){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!e,this._isAuto||(this._loadingTimeout=HU(()=>this._setState(1),t)))}showSuggestions(e,t,i,n,o){var a,d;if(this._contentWidget.setPosition(this.editor.getPosition()),(a=this._loadingTimeout)==null||a.dispose(),(d=this._currentSuggestionDetails)==null||d.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==e&&(this._completionModel=e),i&&this._state!==2&&this._state!==0){this._setState(4);return}const l=this._completionModel.items.length,r=l===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(l>1),r){this._setState(n?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(i?4:3),this._list.reveal(t,0),this._list.setFocus(o?[]:[t])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=JE(Wt(this.element.domNode),()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove("focused")})}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):this._state===3&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add("focused"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):(kie(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(e){this._pendingShowDetails.value=JE(Wt(this.element.domNode),()=>{this._pendingShowDetails.clear(),this._details.show(),e?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._details.widget.isEmpty?this._details.hide():(this._positionDetails(),this.element.domNode.classList.add("shows-details")),this.editor.focus()})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var i;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(i=this._loadingTimeout)==null||i.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const e=this._persistedSize.restore(),t=Math.ceil(this.getLayoutInfo().itemHeight*4.3);e&&e.height<t&&this._persistedSize.store(e.with(void 0,t))}isFrozen(){return this._state===4}_afterRender(e){if(e===null){this._isDetailsVisible()&&this._details.hide();return}this._state===2||this._state===1||(this._isDetailsVisible()&&!this._details.widget.isEmpty&&this._details.show(),this._positionDetails())}_layout(e){var l,r;if(!this.editor.hasModel()||!this.editor.getDomNode())return;const t=N0(this.element.domNode.ownerDocument.body),i=this.getLayoutInfo();e||(e=i.defaultSize);let n=e.height,o=e.width;if(this._status.element.style.height=`${i.itemHeight}px`,this._state===2||this._state===1)n=i.itemHeight+i.borderHeight,o=i.defaultSize.width/2,this.element.enableSashes(!1,!1,!1,!1),this.element.minSize=this.element.maxSize=new bn(o,n),this._contentWidget.setPreference(2);else{const a=t.width-i.borderHeight-2*i.horizontalPadding;o>a&&(o=a);const d=this._completionModel?this._completionModel.stats.pLabelLen*i.typicalHalfwidthCharacterWidth:o,c=i.statusBarHeight+this._list.contentHeight+i.borderHeight,h=i.itemHeight+i.statusBarHeight,u=_s(this.editor.getDomNode()),m=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),p=u.top+m.top+m.height,g=Math.min(t.height-p-i.verticalPadding,c),b=u.top+m.top-i.verticalPadding,f=Math.min(b,c);let Z=Math.min(Math.max(f,g)+i.borderHeight,c);n===((l=this._cappedHeight)==null?void 0:l.capped)&&(n=this._cappedHeight.wanted),n<h&&(n=h),n>Z&&(n=Z);const A=150;n>g||this._forceRenderingAbove&&b>A?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),Z=f):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),Z=g),this.element.preferredSize=new bn(d,i.defaultSize.height),this.element.maxSize=new bn(a,Z),this.element.minSize=new bn(220,h),this._cappedHeight=n===c?{wanted:((r=this._cappedHeight)==null?void 0:r.wanted)??e.height,capped:n}:void 0}this._resize(o,n)}_resize(e,t){const{width:i,height:n}=this.element.maxSize;e=Math.min(i,e),t=Math.min(n,t);const{statusBarHeight:o}=this.getLayoutInfo();this._list.layout(t-o,e),this._listElement.style.height=`${t-o}px`,this.element.layout(t,e),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var e;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((e=this._contentWidget.getPosition())==null?void 0:e.preference[0])===2)}getLayoutInfo(){const e=this.editor.getOption(50),t=zr(this.editor.getOption(121)||e.lineHeight,8,1e3),i=!this.editor.getOption(119).showStatusBar||this._state===2||this._state===1?0:t,n=this._details.widget.borderWidth,o=2*n;return{itemHeight:t,statusBarHeight:i,borderWidth:n,borderHeight:o,typicalHalfwidthCharacterWidth:e.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new bn(430,i+12*t+o)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(e){this._storageService.store("expandSuggestionDocs",e,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}},WR=hA,hA.LOADING_MESSAGE=U("suggestWidget.loading","Loading..."),hA.NO_SUGGESTIONS_MESSAGE=U("suggestWidget.noSuggestions","No suggestions."),hA);d8=WR=olt([Lk(1,su),Lk(2,wt),Lk(3,Do),Lk(4,bt)],d8);class dlt{constructor(e,t){this._widget=e,this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return"editor.widget.suggestWidget"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return this._hidden||!this._position||!this._preference?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:e,width:t}=this._widget.element.size,{borderWidth:i,horizontalPadding:n}=this._widget.getLayoutInfo();return new bn(t+2*i+n,e+2*i)}afterRender(e){this._widget._afterRender(e)}setPreference(e){this._preferenceLocked||(this._preference=e)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(e){this._position=e}}var clt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},XN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},c8;class hlt{constructor(e,t){if(this._model=e,this._position=t,this._decorationOptions=Ot.register({description:"suggest-line-suffix",stickiness:1}),e.getLineMaxColumn(t.lineNumber)!==t.column){const n=e.getOffsetAt(t),o=e.getPositionAt(n+1);e.changeDecorations(l=>{this._marker&&l.removeDecoration(this._marker),this._marker=l.addDecoration(v.fromPositions(t,o),this._decorationOptions)})}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.changeDecorations(e=>{e.removeDecoration(this._marker),this._marker=void 0})}delta(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){const t=this._model.getDecorationRange(this._marker);return this._model.getOffsetAt(t.getStartPosition())-this._model.getOffsetAt(e)}else return this._model.getLineMaxColumn(e.lineNumber)-e.column}}var bQ;let Yh=(bQ=class{static get(e){return e.getContribution(c8.ID)}constructor(e,t,i,n,o,l,r){this._memoryService=t,this._commandService=i,this._contextKeyService=n,this._instantiationService=o,this._logService=l,this._telemetryService=r,this._lineSuffix=new _o,this._toDispose=new Ze,this._selectors=new ult(h=>h.priority),this._onWillInsertSuggestItem=new re,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=e,this.model=o.createInstance(iJ,this.editor),this._selectors.register({priority:0,select:(h,u,m)=>this._memoryService.select(h,u,m)});const a=ti.InsertMode.bindTo(n);a.set(e.getOption(119).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>a.set(e.getOption(119).insertMode))),this.widget=this._toDispose.add(new z9(Wt(e.getDomNode()),()=>{const h=this._instantiationService.createInstance(d8,this.editor);this._toDispose.add(h),this._toDispose.add(h.onDidSelect(b=>this._insertSuggestion(b,0),this));const u=new _ot(this.editor,h,this.model,b=>this._insertSuggestion(b,2));this._toDispose.add(u);const m=ti.MakesTextEdit.bindTo(this._contextKeyService),p=ti.HasInsertAndReplaceRange.bindTo(this._contextKeyService),g=ti.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add(gt(()=>{m.reset(),p.reset(),g.reset()})),this._toDispose.add(h.onDidFocus(({item:b})=>{const f=this.editor.getPosition(),Z=b.editStart.column,A=f.column;let N=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!b.completion.additionalTextEdits&&!(b.completion.insertTextRules&4)&&A-Z===b.completion.insertText.length&&(N=this.editor.getModel().getValueInRange({startLineNumber:f.lineNumber,startColumn:Z,endLineNumber:f.lineNumber,endColumn:A})!==b.completion.insertText),m.set(N),p.set(!oe.equals(b.editInsertEnd,b.editReplaceEnd)),g.set(!!b.provider.resolveCompletionItem||!!b.completion.documentation||b.completion.detail!==b.completion.label)})),this._toDispose.add(h.onDetailsKeyDown(b=>{if(b.toKeyCodeChord().equals(new Z0(!0,!1,!1,!1,33))||Fi&&b.toKeyCodeChord().equals(new Z0(!1,!1,!1,!0,33))){b.stopPropagation();return}b.toKeyCodeChord().isModifierKey()||this.editor.focus()})),h})),this._overtypingCapturer=this._toDispose.add(new z9(Wt(e.getDomNode()),()=>this._toDispose.add(new o8(this.editor,this.model)))),this._alternatives=this._toDispose.add(new z9(Wt(e.getDomNode()),()=>this._toDispose.add(new TV(this.editor,this._contextKeyService)))),this._toDispose.add(o.createInstance($x,e)),this._toDispose.add(this.model.onDidTrigger(h=>{this.widget.value.showTriggered(h.auto,h.shy?250:50),this._lineSuffix.value=new hlt(this.editor.getModel(),h.position)})),this._toDispose.add(this.model.onDidSuggest(h=>{if(h.triggerOptions.shy)return;let u=-1;for(const p of this._selectors.itemsOrderedByPriorityDesc)if(u=p.select(this.editor.getModel(),this.editor.getPosition(),h.completionModel.items),u!==-1)break;if(u===-1&&(u=0),this.model.state===0)return;let m=!1;if(h.triggerOptions.auto){const p=this.editor.getOption(119);p.selectionMode==="never"||p.selectionMode==="always"?m=p.selectionMode==="never":p.selectionMode==="whenTriggerCharacter"?m=h.triggerOptions.triggerKind!==1:p.selectionMode==="whenQuickSuggestion"&&(m=h.triggerOptions.triggerKind===1&&!h.triggerOptions.refilter)}this.widget.value.showSuggestions(h.completionModel,u,h.isFrozen,h.triggerOptions.auto,m)})),this._toDispose.add(this.model.onDidCancel(h=>{h.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{this.model.cancel(),this.model.clear()}));const d=ti.AcceptSuggestionsOnEnter.bindTo(n),c=()=>{const h=this.editor.getOption(1);d.set(h==="on"||h==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>c())),c()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(e,t){if(!e||!e.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const i=aa.get(this.editor);if(!i)return;this._onWillInsertSuggestItem.fire({item:e.item});const n=this.editor.getModel(),o=n.getAlternativeVersionId(),{item:l}=e,r=[],a=new Ws;t&1||this.editor.pushUndoStop();const d=this.getOverwriteInfo(l,!!(t&8));this._memoryService.memorize(n,this.editor.getPosition(),l);const c=l.isResolved;let h=-1,u=-1;if(Array.isArray(l.completion.additionalTextEdits)){this.model.cancel();const p=em.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",l.completion.additionalTextEdits.map(g=>{let b=v.lift(g.range);if(b.startLineNumber===l.position.lineNumber&&b.startColumn>l.position.column){const f=this.editor.getPosition().column-l.position.column,Z=f,A=v.spansMultipleLines(b)?0:f;b=new v(b.startLineNumber,b.startColumn+Z,b.endLineNumber,b.endColumn+A)}return Rs.replaceMove(b,g.text)})),p.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!c){const p=new ol;let g;const b=n.onDidChangeContent(N=>{if(N.isFlush){a.cancel(),b.dispose();return}for(const W of N.changes){const Q=v.getEndPosition(W.range);(!g||oe.isBefore(Q,g))&&(g=Q)}}),f=t;t|=2;let Z=!1;const A=this.editor.onWillType(()=>{A.dispose(),Z=!0,f&2||this.editor.pushUndoStop()});r.push(l.resolve(a.token).then(()=>{if(!l.completion.additionalTextEdits||a.token.isCancellationRequested)return;if(g&&l.completion.additionalTextEdits.some(W=>oe.isBefore(g,v.getStartPosition(W.range))))return!1;Z&&this.editor.pushUndoStop();const N=em.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",l.completion.additionalTextEdits.map(W=>Rs.replaceMove(v.lift(W.range),W.text))),N.restoreRelativeVerticalPositionOfCursor(this.editor),(Z||!(f&2))&&this.editor.pushUndoStop(),!0}).then(N=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",p.elapsed(),N),u=N===!0?1:N===!1?0:-2}).finally(()=>{b.dispose(),A.dispose()}))}let{insertText:m}=l.completion;if(l.completion.insertTextRules&4||(m=IA.escape(m)),this.model.cancel(),i.insert(m,{overwriteBefore:d.overwriteBefore,overwriteAfter:d.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(l.completion.insertTextRules&1),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),t&2||this.editor.pushUndoStop(),l.completion.command)if(l.completion.command.id===nJ.id)this.model.trigger({auto:!0,retrigger:!0});else{const p=new ol;r.push(this._commandService.executeCommand(l.completion.command.id,...l.completion.command.arguments?[...l.completion.command.arguments]:[]).catch(g=>{l.completion.extensionId?Os(g):vt(g)}).finally(()=>{h=p.elapsed()}))}t&4&&this._alternatives.value.set(e,p=>{for(a.cancel();n.canUndo();){o!==n.getAlternativeVersionId()&&n.undo(),this._insertSuggestion(p,3|(t&8?8:0));break}}),this._alertCompletionItem(l),Promise.all(r).finally(()=>{this._reportSuggestionAcceptedTelemetry(l,n,c,h,u,e.index,e.model.items),this.model.clear(),a.dispose()})}_reportSuggestionAcceptedTelemetry(e,t,i,n,o,l,r){var u;if(Math.floor(Math.random()*100)===0)return;const a=new Map;for(let m=0;m<Math.min(30,r.length);m++){const p=r[m].textLabel;a.has(p)?a.get(p).push(m):a.set(p,[m])}const d=a.get(e.textLabel),h=d&&d.length>1?d[0]:-1;this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:((u=e.extensionId)==null?void 0:u.value)??"unknown",providerId:e.provider._debugDisplayName??"unknown",kind:e.completion.kind,basenameHash:$5(qc(t.uri)).toString(16),languageId:t.getLanguageId(),fileExtension:jYe(t.uri),resolveInfo:e.provider.resolveCompletionItem?i?1:0:-1,resolveDuration:e.resolveDuration,commandDuration:n,additionalEditsAsync:o,index:l,firstIndex:h})}getOverwriteInfo(e,t){Yi(this.editor.hasModel());let i=this.editor.getOption(119).insertMode==="replace";t&&(i=!i);const n=e.position.column-e.editStart.column,o=(i?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column,l=this.editor.getPosition().column-e.position.column,r=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:n+l,overwriteAfter:o+r}}_alertCompletionItem(e){if(Sr(e.completion.additionalTextEdits)){const t=U("aria.alert.snippet","Accepting '{0}' made {1} additional edits",e.textLabel,e.completion.additionalTextEdits.length);ra(t)}}triggerSuggest(e,t,i){this.editor.hasModel()&&(this.model.trigger({auto:t??!1,completionOptions:{providerFilter:e,kindFilter:i?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(e){if(!this.editor.hasModel())return;const t=this.editor.getPosition(),i=()=>{t.equals(this.editor.getPosition())&&this._commandService.executeCommand(e.fallback)},n=o=>{if(o.completion.insertTextRules&4||o.completion.additionalTextEdits)return!0;const l=this.editor.getPosition(),r=o.editStart.column,a=l.column;return a-r!==o.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:l.lineNumber,startColumn:r,endLineNumber:l.lineNumber,endColumn:a})!==o.completion.insertText};ve.once(this.model.onDidTrigger)(o=>{const l=[];ve.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{Tn(l),i()},void 0,l),this.model.onDidSuggest(({completionModel:r})=>{if(Tn(l),r.items.length===0){i();return}const a=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),r.items),d=r.items[a];if(!n(d)){i();return}this.editor.pushUndoStop(),this._insertSuggestion({index:a,item:d,model:r},7)},void 0,l)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(t,0),this.editor.focus()}acceptSelectedSuggestion(e,t){const i=this.widget.value.getFocusedItem();let n=0;e&&(n|=4),t&&(n|=8),this._insertSuggestion(i,n)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(e){return this._selectors.register(e)}},c8=bQ,bQ.ID="editor.contrib.suggestController",bQ);Yh=c8=clt([XN(1,Rz),XN(2,On),XN(3,wt),XN(4,bt),XN(5,El),XN(6,lr)],Yh);class ult{constructor(e){this.prioritySelector=e,this._items=new Array}register(e){if(this._items.indexOf(e)!==-1)throw new Error("Value is already registered");return this._items.push(e),this._items.sort((t,i)=>this.prioritySelector(i)-this.prioritySelector(t)),{dispose:()=>{const t=this._items.indexOf(e);t>=0&&this._items.splice(t,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}const l5=class l5 extends et{constructor(){super({id:l5.id,label:U("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:Ne.and(H.writable,H.hasCompletionItemProvider,ti.Visible.toNegated()),kbOpts:{kbExpr:H.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(e,t,i){const n=Yh.get(t);if(!n)return;let o;i&&typeof i=="object"&&i.auto===!0&&(o=!0),n.triggerSuggest(void 0,o,void 0)}};l5.id="editor.action.triggerSuggest";let nJ=l5;Gi(Yh.ID,Yh,2);Me(nJ);const mc=100+90,ua=Io.bindToContribution(Yh.get);Oe(new ua({id:"acceptSelectedSuggestion",precondition:Ne.and(ti.Visible,ti.HasFocusedSuggestion),handler(s){s.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:Ne.and(ti.Visible,H.textInputFocus),weight:mc},{primary:3,kbExpr:Ne.and(ti.Visible,H.textInputFocus,ti.AcceptSuggestionsOnEnter,ti.MakesTextEdit),weight:mc}],menuOpts:[{menuId:xU,title:U("accept.insert","Insert"),group:"left",order:1,when:ti.HasInsertAndReplaceRange.toNegated()},{menuId:xU,title:U("accept.insert","Insert"),group:"left",order:1,when:Ne.and(ti.HasInsertAndReplaceRange,ti.InsertMode.isEqualTo("insert"))},{menuId:xU,title:U("accept.replace","Replace"),group:"left",order:1,when:Ne.and(ti.HasInsertAndReplaceRange,ti.InsertMode.isEqualTo("replace"))}]}));Oe(new ua({id:"acceptAlternativeSelectedSuggestion",precondition:Ne.and(ti.Visible,H.textInputFocus,ti.HasFocusedSuggestion),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:1027,secondary:[1026]},handler(s){s.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:xU,group:"left",order:2,when:Ne.and(ti.HasInsertAndReplaceRange,ti.InsertMode.isEqualTo("insert")),title:U("accept.replace","Replace")},{menuId:xU,group:"left",order:2,when:Ne.and(ti.HasInsertAndReplaceRange,ti.InsertMode.isEqualTo("replace")),title:U("accept.insert","Insert")}]}));Bi.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion");Oe(new ua({id:"hideSuggestWidget",precondition:ti.Visible,handler:s=>s.cancelSuggestWidget(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:9,secondary:[1033]}}));Oe(new ua({id:"selectNextSuggestion",precondition:Ne.and(ti.Visible,Ne.or(ti.MultipleSuggestions,ti.HasFocusedSuggestion.negate())),handler:s=>s.selectNextSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}}));Oe(new ua({id:"selectNextPageSuggestion",precondition:Ne.and(ti.Visible,Ne.or(ti.MultipleSuggestions,ti.HasFocusedSuggestion.negate())),handler:s=>s.selectNextPageSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:12,secondary:[2060]}}));Oe(new ua({id:"selectLastSuggestion",precondition:Ne.and(ti.Visible,Ne.or(ti.MultipleSuggestions,ti.HasFocusedSuggestion.negate())),handler:s=>s.selectLastSuggestion()}));Oe(new ua({id:"selectPrevSuggestion",precondition:Ne.and(ti.Visible,Ne.or(ti.MultipleSuggestions,ti.HasFocusedSuggestion.negate())),handler:s=>s.selectPrevSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}}));Oe(new ua({id:"selectPrevPageSuggestion",precondition:Ne.and(ti.Visible,Ne.or(ti.MultipleSuggestions,ti.HasFocusedSuggestion.negate())),handler:s=>s.selectPrevPageSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:11,secondary:[2059]}}));Oe(new ua({id:"selectFirstSuggestion",precondition:Ne.and(ti.Visible,Ne.or(ti.MultipleSuggestions,ti.HasFocusedSuggestion.negate())),handler:s=>s.selectFirstSuggestion()}));Oe(new ua({id:"focusSuggestion",precondition:Ne.and(ti.Visible,ti.HasFocusedSuggestion.negate()),handler:s=>s.focusSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}}));Oe(new ua({id:"focusAndAcceptSuggestion",precondition:Ne.and(ti.Visible,ti.HasFocusedSuggestion.negate()),handler:s=>{s.focusSuggestion(),s.acceptSelectedSuggestion(!0,!1)}}));Oe(new ua({id:"toggleSuggestionDetails",precondition:Ne.and(ti.Visible,ti.HasFocusedSuggestion),handler:s=>s.toggleSuggestionDetails(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:xU,group:"right",order:1,when:Ne.and(ti.DetailsVisible,ti.CanResolve),title:U("detail.more","Show Less")},{menuId:xU,group:"right",order:1,when:Ne.and(ti.DetailsVisible.toNegated(),ti.CanResolve),title:U("detail.less","Show More")}]}));Oe(new ua({id:"toggleExplainMode",precondition:ti.Visible,handler:s=>s.toggleExplainMode(),kbOpts:{weight:100,primary:2138}}));Oe(new ua({id:"toggleSuggestionFocus",precondition:ti.Visible,handler:s=>s.toggleSuggestionFocus(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:2570,mac:{primary:778}}}));Oe(new ua({id:"insertBestCompletion",precondition:Ne.and(H.textInputFocus,Ne.equals("config.editor.tabCompletion","on"),$x.AtEnd,ti.Visible.toNegated(),TV.OtherSuggestions.toNegated(),aa.InSnippetMode.toNegated()),handler:(s,e)=>{s.triggerSuggestAndAcceptBest(il(e)?{fallback:"tab",...e}:{fallback:"tab"})},kbOpts:{weight:mc,primary:2}}));Oe(new ua({id:"insertNextSuggestion",precondition:Ne.and(H.textInputFocus,Ne.equals("config.editor.tabCompletion","on"),TV.OtherSuggestions,ti.Visible.toNegated(),aa.InSnippetMode.toNegated()),handler:s=>s.acceptNextSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:2}}));Oe(new ua({id:"insertPrevSuggestion",precondition:Ne.and(H.textInputFocus,Ne.equals("config.editor.tabCompletion","on"),TV.OtherSuggestions,ti.Visible.toNegated(),aa.InSnippetMode.toNegated()),handler:s=>s.acceptPrevSuggestion(),kbOpts:{weight:mc,kbExpr:H.textInputFocus,primary:1026}}));Me(class extends et{constructor(){super({id:"editor.action.resetSuggestSize",label:U("suggest.reset.label","Reset Suggest Widget Size"),alias:"Reset Suggest Widget Size",precondition:void 0})}run(s,e){var t;(t=Yh.get(e))==null||t.resetWidgetSize()}});class mlt extends de{get selectedItem(){return this._currentSuggestItemInfo}constructor(e,t,i){super(),this.editor=e,this.suggestControllerPreselector=t,this.onWillAccept=i,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._onDidSelectedItemChange=this._register(new re),this.onDidSelectedItemChange=this._onDidSelectedItemChange.event,this._register(e.onKeyDown(o=>{o.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(e.onKeyUp(o=>{o.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const n=Yh.get(this.editor);if(n){this._register(n.registerSelector({priority:100,select:(r,a,d)=>{const c=this.editor.getModel();if(!c)return-1;const h=this.suggestControllerPreselector(),u=h?$Z(h,c):void 0;if(!u)return-1;const m=oe.lift(a),p=d.map((b,f)=>{const Z=vC.fromSuggestion(n,c,m,b,this.isShiftKeyPressed),A=$Z(Z.toSingleTextEdit(),c),N=eAe(u,A);return{index:f,valid:N,prefixLength:A.text.length,suggestItem:b}}).filter(b=>b&&b.valid&&b.prefixLength>0),g=H$(p,ea(b=>b.prefixLength,zh));return g?g.index:-1}}));let o=!1;const l=()=>{o||(o=!0,this._register(n.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(n.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(n.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(ve.once(n.model.onDidTrigger)(r=>{l()})),this._register(n.onWillInsertSuggestItem(r=>{const a=this.editor.getPosition(),d=this.editor.getModel();if(!a||!d)return;const c=vC.fromSuggestion(n,d,a,r.item,this.isShiftKeyPressed);this.onWillAccept(c)}))}this.update(this._isActive)}update(e){const t=this.getSuggestItemInfo();(this._isActive!==e||!plt(this._currentSuggestItemInfo,t))&&(this._isActive=e,this._currentSuggestItemInfo=t,this._onDidSelectedItemChange.fire())}getSuggestItemInfo(){const e=Yh.get(this.editor);if(!e||!this.isSuggestWidgetVisible)return;const t=e.widget.value.getFocusedItem(),i=this.editor.getPosition(),n=this.editor.getModel();if(!(!t||!i||!n))return vC.fromSuggestion(e,n,i,t.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const e=Yh.get(this.editor);e==null||e.stopForceRenderingAbove()}forceRenderingAbove(){const e=Yh.get(this.editor);e==null||e.forceRenderingAbove()}}class vC{static fromSuggestion(e,t,i,n,o){let{insertText:l}=n.completion,r=!1;if(n.completion.insertTextRules&4){const d=new IA().parse(l);d.children.length<100&&qx.adjustWhitespace(t,i,!0,d),l=d.toString(),r=!0}const a=e.getOverwriteInfo(n,o);return new vC(v.fromPositions(i.delta(0,-a.overwriteBefore),i.delta(0,Math.max(a.overwriteAfter,0))),l,n.completion.kind,r)}constructor(e,t,i,n){this.range=e,this.insertText=t,this.completionItemKind=i,this.isSnippetText=n}equals(e){return this.range.equalsRange(e.range)&&this.insertText===e.insertText&&this.completionItemKind===e.completionItemKind&&this.isSnippetText===e.isSnippetText}toSelectedSuggestionInfo(){return new Ope(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new Rp(this.range,this.insertText)}}function plt(s,e){return s===e?!0:!s||!e?!1:s.equals(e)}var glt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Pp=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},h8,UQ;let eh=(UQ=class extends de{static get(e){return e.getContribution(h8.ID)}constructor(e,t,i,n,o,l,r,a,d,c){super(),this.editor=e,this._instantiationService=t,this._contextKeyService=i,this._configurationService=n,this._commandService=o,this._debounceService=l,this._languageFeaturesService=r,this._accessibilitySignalService=a,this._keybindingService=d,this._accessibilityService=c,this._editorObs=md(this.editor),this._positions=ht(this,u=>{var m;return((m=this._editorObs.selections.read(u))==null?void 0:m.map(p=>p.getEndPosition()))??[new oe(1,1)]}),this._suggestWidgetAdaptor=this._register(new mlt(this.editor,()=>{var u,m;return this._editorObs.forceUpdate(),(m=(u=this.model.get())==null?void 0:u.selectedInlineCompletion.get())==null?void 0:m.toSingleTextEdit(void 0)},u=>this._editorObs.forceUpdate(m=>{var p;(p=this.model.get())==null||p.handleSuggestAccepted(u)}))),this._suggestWidgetSelectedItem=gn(this,u=>this._suggestWidgetAdaptor.onDidSelectedItemChange(()=>{this._editorObs.forceUpdate(m=>u(void 0))}),()=>this._suggestWidgetAdaptor.selectedItem),this._enabledInConfig=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).enabled),this._isScreenReaderEnabled=gn(this,this._accessibilityService.onDidChangeScreenReaderOptimized,()=>this._accessibilityService.isScreenReaderOptimized()),this._editorDictationInProgress=gn(this,this._contextKeyService.onDidChangeContext,()=>this._contextKeyService.getContext(this.editor.getDomNode()).getValue("editorDictation.inProgress")===!0),this._enabled=ht(this,u=>this._enabledInConfig.read(u)&&(!this._isScreenReaderEnabled.read(u)||!this._editorDictationInProgress.read(u))),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineCompletionsDebounce",{min:50,max:50}),this.model=Zr(this,u=>{if(this._editorObs.isReadonly.read(u))return;const m=this._editorObs.model.read(u);return m?this._instantiationService.createInstance(t8,m,this._suggestWidgetSelectedItem,this._editorObs.versionId,this._positions,this._debounceValue,gn(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(119).preview),gn(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(119).previewMode),gn(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).mode),this._enabled):void 0}).recomputeInitiallyAndOnChange(this._store),this._ghostTexts=ht(this,u=>{const m=this.model.read(u);return(m==null?void 0:m.ghostTexts.read(u))??[]}),this._stablizedGhostTexts=blt(this._ghostTexts,this._store),this._ghostTextWidgets=X9e(this,this._stablizedGhostTexts,(u,m)=>m.add(this._instantiationService.createInstance($7,this.editor,{ghostText:u,minReservedLineCount:Xc(0),targetTextModel:this.model.map(p=>p==null?void 0:p.textModel)}))).recomputeInitiallyAndOnChange(this._store),this._playAccessibilitySignal=PQ(this),this._fontFamily=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).fontFamily),this._register(new Zd(this._contextKeyService,this.model)),this._register(E4(this._editorObs.onDidType,(u,m)=>{var p;this._enabled.get()&&((p=this.model.get())==null||p.trigger())})),this._register(this._commandService.onDidExecuteCommand(u=>{new Set([TW.Tab.id,TW.DeleteLeft.id,TW.DeleteRight.id,dZe,"acceptSelectedSuggestion"]).has(u.commandId)&&e.hasTextFocus()&&this._enabled.get()&&this._editorObs.forceUpdate(p=>{var g;(g=this.model.get())==null||g.trigger(p)})})),this._register(E4(this._editorObs.selections,(u,m)=>{var p;m.some(g=>g.reason===3||g.source==="api")&&((p=this.model.get())==null||p.stop())})),this._register(this.editor.onDidBlurEditorWidget(()=>{this._contextKeyService.getContextKeyValue("accessibleViewIsShown")||this._configurationService.getValue("editor.inlineSuggest.keepOnBlur")||e.getOption(62).keepOnBlur||VV.dropDownVisible||Ss(u=>{var m;(m=this.model.get())==null||m.stop(u)})})),this._register(Gt(u=>{var p;const m=(p=this.model.read(u))==null?void 0:p.state.read(u);m!=null&&m.suggestItem?m.primaryGhostText.lineCount>=2&&this._suggestWidgetAdaptor.forceRenderingAbove():this._suggestWidgetAdaptor.stopForceRenderingAbove()})),this._register(gt(()=>{this._suggestWidgetAdaptor.stopForceRenderingAbove()}));const h=UB(this,(u,m)=>{var b;const p=this.model.read(u),g=p==null?void 0:p.state.read(u);return this._suggestWidgetSelectedItem.get()?m:(b=g==null?void 0:g.inlineCompletion)==null?void 0:b.semanticId});this._register(p6e(ht(u=>(this._playAccessibilitySignal.read(u),h.read(u),{})),async(u,m,p)=>{const g=this.model.get(),b=g==null?void 0:g.state.get();if(!b||!g)return;const f=g.textModel.getLineContent(b.primaryGhostText.lineNumber);await A0(50,fj(p)),await Sbe(this._suggestWidgetSelectedItem,Rr,()=>!1,fj(p)),await this._accessibilitySignalService.playSignal(Pd.inlineSuggestion),this.editor.getOption(8)&&this._provideScreenReaderUpdate(b.primaryGhostText.renderForScreenReader(f))})),this._register(new f7(this.editor,this.model,this._instantiationService)),this._register(lot(ht(u=>{const m=this._fontFamily.read(u);return m===""||m==="default"?"":`
- .monaco-editor .ghost-text-decoration,
- .monaco-editor .ghost-text-decoration-preview,
- .monaco-editor .ghost-text {
- font-family: ${m};
- }`}))),this._register(this._configurationService.onDidChangeConfiguration(u=>{u.affectsConfiguration("accessibility.verbosity.inlineCompletions")&&this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})})),this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})}playAccessibilitySignal(e){this._playAccessibilitySignal.trigger(e)}_provideScreenReaderUpdate(e){const t=this._contextKeyService.getContextKeyValue("accessibleViewIsShown"),i=this._keybindingService.lookupKeybinding("editor.action.accessibleView");let n;!t&&i&&this.editor.getOption(150)&&(n=U("showAccessibleViewHint","Inspect this in the accessible view ({0})",i.getAriaLabel())),ra(n?e+", "+n:e)}shouldShowHoverAt(e){var i;const t=(i=this.model.get())==null?void 0:i.primaryGhostText.get();return t?t.parts.some(n=>e.containsPosition(new oe(t.lineNumber,n.column))):!1}shouldShowHoverAtViewZone(e){var t;return((t=this._ghostTextWidgets.get()[0])==null?void 0:t.ownsViewZone(e))??!1}},h8=UQ,UQ.ID="editor.contrib.inlineCompletionsController",UQ);eh=h8=glt([Pp(1,bt),Pp(2,wt),Pp(3,li),Pp(4,On),Pp(5,gc),Pp(6,lt),Pp(7,Ff),Pp(8,dn),Pp(9,Qd)],eh);function blt(s,e){const t=oi("result",[]),i=[];return e.add(Gt(n=>{const o=s.read(n);Ss(l=>{if(o.length!==i.length){i.length=o.length;for(let r=0;r<i.length;r++)i[r]||(i[r]=oi("item",o[r]));t.set([...i],l)}i.forEach((r,a)=>r.set(o[a],l))})})),t}const r5=class r5 extends et{constructor(){super({id:r5.ID,label:U("action.inlineSuggest.showNext","Show Next Inline Suggestion"),alias:"Show Next Inline Suggestion",precondition:Ne.and(H.writable,Zd.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}async run(e,t){var n;const i=eh.get(t);(n=i==null?void 0:i.model.get())==null||n.next()}};r5.ID=hZe;let u8=r5;const a5=class a5 extends et{constructor(){super({id:a5.ID,label:U("action.inlineSuggest.showPrevious","Show Previous Inline Suggestion"),alias:"Show Previous Inline Suggestion",precondition:Ne.and(H.writable,Zd.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}async run(e,t){var n;const i=eh.get(t);(n=i==null?void 0:i.model.get())==null||n.previous()}};a5.ID=cZe;let m8=a5;class Ult extends et{constructor(){super({id:"editor.action.inlineSuggest.trigger",label:U("action.inlineSuggest.trigger","Trigger Inline Suggestion"),alias:"Trigger Inline Suggestion",precondition:H.writable})}async run(e,t){const i=eh.get(t);await Abe(async n=>{var o;await((o=i==null?void 0:i.model.get())==null?void 0:o.triggerExplicitly(n)),i==null||i.playAccessibilitySignal(n)})}}class flt extends et{constructor(){super({id:"editor.action.inlineSuggest.acceptNextWord",label:U("action.inlineSuggest.acceptNextWord","Accept Next Word Of Inline Suggestion"),alias:"Accept Next Word Of Inline Suggestion",precondition:Ne.and(H.writable,Zd.inlineSuggestionVisible),kbOpts:{weight:100+1,primary:2065,kbExpr:Ne.and(H.writable,Zd.inlineSuggestionVisible)},menuOpts:[{menuId:at.InlineSuggestionToolbar,title:U("acceptWord","Accept Word"),group:"primary",order:2}]})}async run(e,t){var n;const i=eh.get(t);await((n=i==null?void 0:i.model.get())==null?void 0:n.acceptNextWord(i.editor))}}class Flt extends et{constructor(){super({id:"editor.action.inlineSuggest.acceptNextLine",label:U("action.inlineSuggest.acceptNextLine","Accept Next Line Of Inline Suggestion"),alias:"Accept Next Line Of Inline Suggestion",precondition:Ne.and(H.writable,Zd.inlineSuggestionVisible),kbOpts:{weight:100+1},menuOpts:[{menuId:at.InlineSuggestionToolbar,title:U("acceptLine","Accept Line"),group:"secondary",order:2}]})}async run(e,t){var n;const i=eh.get(t);await((n=i==null?void 0:i.model.get())==null?void 0:n.acceptNextLine(i.editor))}}class Zlt extends et{constructor(){super({id:dZe,label:U("action.inlineSuggest.accept","Accept Inline Suggestion"),alias:"Accept Inline Suggestion",precondition:Zd.inlineSuggestionVisible,menuOpts:[{menuId:at.InlineSuggestionToolbar,title:U("accept","Accept"),group:"primary",order:1}],kbOpts:{primary:2,weight:200,kbExpr:Ne.and(Zd.inlineSuggestionVisible,H.tabMovesFocus.toNegated(),Zd.inlineSuggestionHasIndentationLessThanTabSize,ti.Visible.toNegated(),H.hoverFocused.toNegated())}})}async run(e,t){var n;const i=eh.get(t);i&&((n=i.model.get())==null||n.accept(i.editor),i.editor.focus())}}const d5=class d5 extends et{constructor(){super({id:d5.ID,label:U("action.inlineSuggest.hide","Hide Inline Suggestion"),alias:"Hide Inline Suggestion",precondition:Zd.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}async run(e,t){const i=eh.get(t);Ss(n=>{var o;(o=i==null?void 0:i.model.get())==null||o.stop(n)})}};d5.ID="editor.action.inlineSuggest.hide";let p8=d5;const c5=class c5 extends da{constructor(){super({id:c5.ID,title:U("action.inlineSuggest.alwaysShowToolbar","Always Show Toolbar"),f1:!1,precondition:void 0,menu:[{id:at.InlineSuggestionToolbar,group:"secondary",order:10}],toggled:Ne.equals("config.editor.inlineSuggest.showToolbar","always")})}async run(e,t){const i=e.get(li),o=i.getValue("editor.inlineSuggest.showToolbar")==="always"?"onHover":"always";i.updateValue("editor.inlineSuggest.showToolbar",o)}};c5.ID="editor.action.inlineSuggest.toggleAlwaysShowToolbar";let g8=c5;var Alt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},K1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Nlt{constructor(e,t,i){this.owner=e,this.range=t,this.controller=i}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let b8=class{constructor(e,t,i,n,o,l){this._editor=e,this._languageService=t,this._openerService=i,this.accessibilityService=n,this._instantiationService=o,this._telemetryService=l,this.hoverOrdinal=4}suggestHoverAnchor(e){const t=eh.get(this._editor);if(!t)return null;const i=e.target;if(i.type===8){const n=i.detail;if(t.shouldShowHoverAtViewZone(n.viewZoneId))return new RD(1e3,this,v.fromPositions(this._editor.getModel().validatePosition(n.positionBefore||n.position)),e.event.posx,e.event.posy,!1)}return i.type===7&&t.shouldShowHoverAt(i.range)?new RD(1e3,this,i.range,e.event.posx,e.event.posy,!1):i.type===6&&i.detail.mightBeForeignElement&&t.shouldShowHoverAt(i.range)?new RD(1e3,this,i.range,e.event.posx,e.event.posy,!1):null}computeSync(e,t){if(this._editor.getOption(62).showToolbar!=="onHover")return[];const i=eh.get(this._editor);return i&&i.shouldShowHoverAt(e.range)?[new Nlt(this,e.range,i)]:[]}renderHoverParts(e,t){const i=new Ze,n=t[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(8)&&i.add(this.renderScreenReaderText(e,n));const o=n.controller.model.get(),l=this._instantiationService.createInstance(VV,this._editor,!1,Xc(null),o.selectedInlineCompletionIndex,o.inlineCompletionsCount,o.activeCommands),r=l.getDomNode();e.fragment.appendChild(r),o.triggerExplicitly(),i.add(l);const a={hoverPart:n,hoverElement:r,dispose(){i.dispose()}};return new vA([a])}renderScreenReaderText(e,t){const i=new Ze,n=Ge,o=n("div.hover-row.markdown-hover"),l=ye(o,n("div.hover-contents",{"aria-live":"assertive"})),r=i.add(new W0({editor:this._editor},this._languageService,this._openerService)),a=d=>{i.add(r.onDidRenderAsync(()=>{l.className="hover-contents code-hover-contents",e.onContentsChanged()}));const c=U("inlineSuggestionFollows","Suggestion:"),h=i.add(r.render(new tr().appendText(c).appendCodeblock("text",d)));l.replaceChildren(h.element)};return i.add(Gt(d=>{var h;const c=(h=t.controller.model.read(d))==null?void 0:h.primaryGhostText.read(d);if(c){const u=this._editor.getModel().getLineContent(c.lineNumber);a(c.renderForScreenReader(u))}else Zl(l)})),e.fragment.appendChild(o),i}};b8=Alt([K1(1,Zs),K1(2,za),K1(3,Qd),K1(4,bt),K1(5,lr)],b8);class Rlt{}const Sz=new class{constructor(){this._implementations=[]}register(e){return this._implementations.push(e),{dispose:()=>{const t=this._implementations.indexOf(e);t!==-1&&this._implementations.splice(t,1)}}}getImplementations(){return this._implementations}};Gi(eh.ID,eh,3);Me(Ult);Me(u8);Me(m8);Me(flt);Me(Flt);Me(Zlt);Me(p8);Xn(g8);aN.register(b8);Sz.register(new Rlt);var Slt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},C_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},n2,uA;let gT=(uA=class{constructor(e,t,i,n){this.textModelResolverService=t,this.languageService=i,this.languageFeaturesService=n,this.toUnhook=new Ze,this.toUnhookForKeyboard=new Ze,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=e,this.linkDecorations=this.editor.createDecorationsCollection();const o=new bz(e);this.toUnhook.add(o),this.toUnhook.add(o.onMouseMoveOrRelevantKeyDown(([l,r])=>{this.startFindDefinitionFromMouse(l,r??void 0)})),this.toUnhook.add(o.onExecute(l=>{this.isEnabled(l)&&this.gotoDefinition(l.target.position,l.hasSideBySideModifier).catch(r=>{vt(r)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(o.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(e){return e.getContribution(n2.ID)}async startFindDefinitionFromCursor(e){await this.startFindDefinition(e),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(t=>{t&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))}startFindDefinitionFromMouse(e,t){if(e.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(e,t)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const i=e.target.position;this.startFindDefinition(i)}async startFindDefinition(e){var l;this.toUnhookForKeyboard.clear();const t=e?(l=this.editor.getModel())==null?void 0:l.getWordAtPosition(e):null;if(!t){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===t.startColumn&&this.currentWordAtPosition.endColumn===t.endColumn&&this.currentWordAtPosition.word===t.word)return;this.currentWordAtPosition=t;const i=new jfe(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=Xo(r=>this.findDefinition(e,r));let n;try{n=await this.previousPromise}catch(r){vt(r);return}if(!n||!n.length||!i.validate(this.editor)){this.removeLinkDecorations();return}const o=n[0].originSelectionRange?v.lift(n[0].originSelectionRange):new v(e.lineNumber,t.startColumn,e.lineNumber,t.endColumn);if(n.length>1){let r=o;for(const{originSelectionRange:a}of n)a&&(r=v.plusRange(r,a));this.addDecoration(r,new tr().appendText(U("multipleResults","Click to show {0} definitions.",n.length)))}else{const r=n[0];if(!r.uri)return;this.textModelResolverService.createModelReference(r.uri).then(a=>{if(!a.object||!a.object.textEditorModel){a.dispose();return}const{object:{textEditorModel:d}}=a,{startLineNumber:c}=r.range;if(c<1||c>d.getLineCount()){a.dispose();return}const h=this.getPreviewValue(d,c,r),u=this.languageService.guessLanguageIdByFilepathOrFirstLine(d.uri);this.addDecoration(o,h?new tr().appendCodeblock(u||"",h):void 0),a.dispose()})}}getPreviewValue(e,t,i){let n=i.range;return n.endLineNumber-n.startLineNumber>=n2.MAX_SOURCE_PREVIEW_LINES&&(n=this.getPreviewRangeBasedOnIndentation(e,t)),this.stripIndentationFromPreviewRange(e,t,n)}stripIndentationFromPreviewRange(e,t,i){let o=e.getLineFirstNonWhitespaceColumn(t);for(let r=t+1;r<i.endLineNumber;r++){const a=e.getLineFirstNonWhitespaceColumn(r);o=Math.min(o,a)}return e.getValueInRange(i).replace(new RegExp(`^\\s{${o-1}}`,"gm"),"").trim()}getPreviewRangeBasedOnIndentation(e,t){const i=e.getLineFirstNonWhitespaceColumn(t),n=Math.min(e.getLineCount(),t+n2.MAX_SOURCE_PREVIEW_LINES);let o=t+1;for(;o<n;o++){const l=e.getLineFirstNonWhitespaceColumn(o);if(i===l)break}return new v(t,1,o+1,1)}addDecoration(e,t){const i={range:e,options:{description:"goto-definition-link",inlineClassName:"goto-definition-link",hoverMessage:t}};this.linkDecorations.set([i])}removeLinkDecorations(){this.linkDecorations.clear()}isEnabled(e,t){var i;return this.editor.hasModel()&&e.isLeftClick&&e.isNoneOrSingleMouseDown&&e.target.type===6&&!(((i=e.target.detail.injectedText)==null?void 0:i.options)instanceof tf)&&(e.hasTriggerModifier||(t?t.keyCodeIsTriggerKey:!1))&&this.languageFeaturesService.definitionProvider.has(this.editor.getModel())}findDefinition(e,t){const i=this.editor.getModel();return i?LB(this.languageFeaturesService.definitionProvider,i,e,!1,t):Promise.resolve(null)}gotoDefinition(e,t){return this.editor.setPosition(e),this.editor.invokeWithinContext(i=>{const n=!t&&this.editor.getOption(89)&&!this.isInPeekEditor(i);return new IB({openToSide:t,openInPeek:n,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(i)})}isInPeekEditor(e){const t=e.get(wt);return xa.inPeekEditor.getValue(t)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}},n2=uA,uA.ID="editor.contrib.gotodefinitionatposition",uA.MAX_SOURCE_PREVIEW_LINES=8,uA);gT=n2=Slt([C_(1,Xa),C_(2,Zs),C_(3,lt)],gT);Gi(gT.ID,gT,2);var iAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},sJ=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Mce{constructor(e,t,i){this.marker=e,this.index=t,this.total=i}}let U8=class{constructor(e,t,i){this._markerService=t,this._configService=i,this._onDidChange=new re,this.onDidChange=this._onDidChange.event,this._dispoables=new Ze,this._markers=[],this._nextIdx=-1,At.isUri(e)?this._resourceFilter=r=>r.toString()===e.toString():e&&(this._resourceFilter=e);const n=this._configService.getValue("problems.sortOrder"),o=(r,a)=>{let d=sM(r.resource.toString(),a.resource.toString());return d===0&&(n==="position"?d=v.compareRangesUsingStarts(r,a)||Es.compare(r.severity,a.severity):d=Es.compare(r.severity,a.severity)||v.compareRangesUsingStarts(r,a)),d},l=()=>{this._markers=this._markerService.read({resource:At.isUri(e)?e:void 0,severities:Es.Error|Es.Warning|Es.Info}),typeof e=="function"&&(this._markers=this._markers.filter(r=>this._resourceFilter(r.resource))),this._markers.sort(o)};l(),this._dispoables.add(t.onMarkerChanged(r=>{(!this._resourceFilter||r.some(a=>this._resourceFilter(a)))&&(l(),this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(e){return!this._resourceFilter&&!e?!0:!this._resourceFilter||!e?!1:this._resourceFilter(e)}get selected(){const e=this._markers[this._nextIdx];return e&&new Mce(e,this._nextIdx+1,this._markers.length)}_initIdx(e,t,i){let n=!1,o=this._markers.findIndex(l=>l.resource.toString()===e.uri.toString());o<0&&(o=Hw(this._markers,{resource:e.uri},(l,r)=>sM(l.resource.toString(),r.resource.toString())),o<0&&(o=~o));for(let l=o;l<this._markers.length;l++){let r=v.lift(this._markers[l]);if(r.isEmpty()){const a=e.getWordAtPosition(r.getStartPosition());a&&(r=new v(r.startLineNumber,a.startColumn,r.startLineNumber,a.endColumn))}if(t&&(r.containsPosition(t)||t.isBeforeOrEqual(r.getStartPosition()))){this._nextIdx=l,n=!0;break}if(this._markers[l].resource.toString()!==e.uri.toString())break}n||(this._nextIdx=i?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}resetIndex(){this._nextIdx=-1}move(e,t,i){if(this._markers.length===0)return!1;const n=this._nextIdx;return this._nextIdx===-1?this._initIdx(t,i,e):e?this._nextIdx=(this._nextIdx+1)%this._markers.length:e||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),n!==this._nextIdx}find(e,t){let i=this._markers.findIndex(n=>n.resource.toString()===e.toString());if(!(i<0)){for(;i<this._markers.length;i++)if(v.containsPosition(this._markers[i],t))return new Mce(this._markers[i],i+1,this._markers.length)}}};U8=iAe([sJ(1,Ep),sJ(2,li)],U8);const nAe=Zi("IMarkerNavigationService");let f8=class{constructor(e,t){this._markerService=e,this._configService=t,this._provider=new Pr}getMarkerList(e){for(const t of this._provider){const i=t.getMarkerList(e);if(i)return i}return new U8(e,this._markerService,this._configService)}};f8=iAe([sJ(0,Ep),sJ(1,li)],f8);Ci(nAe,f8,1);var F8;(function(s){function e(t){switch(t){case to.Ignore:return"severity-ignore "+Qt.asClassName(ke.info);case to.Info:return Qt.asClassName(ke.info);case to.Warning:return Qt.asClassName(ke.warning);case to.Error:return Qt.asClassName(ke.error);default:return""}}s.className=e})(F8||(F8={}));var Wlt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},YN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Z8;class Vlt{constructor(e,t,i,n,o){this._openerService=n,this._labelService=o,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new Ze,this._editor=t;const l=document.createElement("div");l.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),l.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),l.appendChild(this._relatedBlock),this._disposables.add(Ms(this._relatedBlock,"click",r=>{r.preventDefault();const a=this._relatedDiagnostics.get(r.target);a&&i(a)})),this._scrollable=new _0e(l,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),e.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(r=>{l.style.left=`-${r.scrollLeft}px`,l.style.top=`-${r.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){Tn(this._disposables)}update(e){const{source:t,message:i,relatedInformation:n,code:o}=e;let l=((t==null?void 0:t.length)||0)+2;o&&(typeof o=="string"?l+=o.length:l+=o.value.length);const r=Lp(i);this._lines=r.length,this._longestLineLength=0;for(const u of r)this._longestLineLength=Math.max(u.length+l,this._longestLineLength);Fl(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(e)),this._editor.applyFontInfo(this._messageBlock);let a=this._messageBlock;for(const u of r)a=document.createElement("div"),a.innerText=u,u===""&&(a.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(a);if(t||o){const u=document.createElement("span");if(u.classList.add("details"),a.appendChild(u),t){const m=document.createElement("span");m.innerText=t,m.classList.add("source"),u.appendChild(m)}if(o)if(typeof o=="string"){const m=document.createElement("span");m.innerText=`(${o})`,m.classList.add("code"),u.appendChild(m)}else{this._codeLink=Ge("a.code-link"),this._codeLink.setAttribute("href",`${o.target.toString()}`),this._codeLink.onclick=p=>{this._openerService.open(o.target,{allowCommands:!0}),p.preventDefault(),p.stopPropagation()};const m=ye(this._codeLink,Ge("span"));m.innerText=o.value,u.appendChild(this._codeLink)}}if(Fl(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),Sr(n)){const u=this._relatedBlock.appendChild(document.createElement("div"));u.style.paddingTop=`${Math.floor(this._editor.getOption(67)*.66)}px`,this._lines+=1;for(const m of n){const p=document.createElement("div"),g=document.createElement("a");g.classList.add("filename"),g.innerText=`${this._labelService.getUriBasenameLabel(m.resource)}(${m.startLineNumber}, ${m.startColumn}): `,g.title=this._labelService.getUriLabel(m.resource),this._relatedDiagnostics.set(g,m);const b=document.createElement("span");b.innerText=m.message,p.appendChild(g),p.appendChild(b),this._lines+=1,u.appendChild(p)}}const d=this._editor.getOption(50),c=Math.ceil(d.typicalFullwidthCharacterWidth*this._longestLineLength*.75),h=d.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:c,scrollHeight:h})}layout(e,t){this._scrollable.getDomNode().style.height=`${e}px`,this._scrollable.getDomNode().style.width=`${t}px`,this._scrollable.setScrollDimensions({width:t,height:e})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(e){let t="";switch(e.severity){case Es.Error:t=U("Error","Error");break;case Es.Warning:t=U("Warning","Warning");break;case Es.Info:t=U("Info","Info");break;case Es.Hint:t=U("Hint","Hint");break}let i=U("marker aria","{0} at {1}. ",t,e.startLineNumber+":"+e.startColumn);const n=this._editor.getModel();return n&&e.startLineNumber<=n.getLineCount()&&e.startLineNumber>=1&&(i=`${n.getLineContent(e.startLineNumber)}, ${i}`),i}}var fQ;let bT=(fQ=class extends kx{constructor(e,t,i,n,o,l,r){super(e,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},o),this._themeService=t,this._openerService=i,this._menuService=n,this._contextKeyService=l,this._labelService=r,this._callOnDispose=new Ze,this._onDidSelectRelatedInformation=new re,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=Es.Warning,this._backgroundColor=Re.white,this._applyTheme(t.getColorTheme()),this._callOnDispose.add(t.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(e){this._backgroundColor=e.getColor(wlt);let t=A8,i=Qlt;this._severity===Es.Warning?(t=QD,i=ylt):this._severity===Es.Info&&(t=N8,i=Clt);const n=e.getColor(t),o=e.getColor(i);this.style({arrowColor:n,frameColor:n,headerBackgroundColor:o,primaryHeadingColor:e.getColor(AZe),secondaryHeadingColor:e.getColor(NZe)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(e){super._fillHead(e),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(n=>this.editor.focus()));const t=[],i=this._menuService.getMenuActions(Z8.TitleMenu,this._contextKeyService);vY(i,t),this._actionbarWidget.push(t,{label:!1,icon:!0,index:0})}_fillTitleIcon(e){this._icon=ye(e,Ge(""))}_fillBody(e){this._parentContainer=e,e.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),e.appendChild(this._container),this._message=new Vlt(this._container,this.editor,t=>this._onDidSelectRelatedInformation.fire(t),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(e,t,i){this._container.classList.remove("stale"),this._message.update(e),this._severity=e.severity,this._applyTheme(this._themeService.getColorTheme());const n=v.lift(e),o=this.editor.getPosition(),l=o&&n.containsPosition(o)?o:n.getStartPosition();super.show(l,this.computeRequiredHeight());const r=this.editor.getModel();if(r){const a=i>1?U("problems","{0} of {1} problems",t,i):U("change","{0} of {1} problem",t,i);this.setTitle(qc(r.uri),a)}this._icon.className=`codicon ${F8.className(Es.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(l,0),this.editor.focus()}updateMarker(e){this._container.classList.remove("stale"),this._message.update(e)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._heightInPixel=e,this._message.layout(e,t),this._container.style.height=`${e}px`}_onWidth(e){this._message.layout(this._heightInPixel,e)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}},Z8=fQ,fQ.TitleMenu=new at("gotoErrorTitleMenu"),fQ);bT=Z8=Wlt([YN(1,Do),YN(2,za),YN(3,pc),YN(4,bt),YN(5,wt),YN(6,hV)],bT);const Tce=gM(NY,NXe),Bce=gM(S0,bM),Lce=gM(Wp,UM),A8=K("editorMarkerNavigationError.background",{dark:Tce,light:Tce,hcDark:Di,hcLight:Di},U("editorMarkerNavigationError","Editor marker navigation widget error color.")),Qlt=K("editorMarkerNavigationError.headerBackground",{dark:ii(A8,.1),light:ii(A8,.1),hcDark:null,hcLight:null},U("editorMarkerNavigationErrorHeaderBackground","Editor marker navigation widget error heading background.")),QD=K("editorMarkerNavigationWarning.background",{dark:Bce,light:Bce,hcDark:Di,hcLight:Di},U("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),ylt=K("editorMarkerNavigationWarning.headerBackground",{dark:ii(QD,.1),light:ii(QD,.1),hcDark:"#0C141F",hcLight:ii(QD,.2)},U("editorMarkerNavigationWarningBackground","Editor marker navigation widget warning heading background.")),N8=K("editorMarkerNavigationInfo.background",{dark:Lce,light:Lce,hcDark:Di,hcLight:Di},U("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),Clt=K("editorMarkerNavigationInfo.headerBackground",{dark:ii(N8,.1),light:ii(N8,.1),hcDark:null,hcLight:null},U("editorMarkerNavigationInfoHeaderBackground","Editor marker navigation widget info heading background.")),wlt=K("editorMarkerNavigation.background",$h,U("editorMarkerNavigationBackground","Editor marker navigation widget background."));var Mlt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},kk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},s2,FQ;let XA=(FQ=class{static get(e){return e.getContribution(s2.ID)}constructor(e,t,i,n,o){this._markerNavigationService=t,this._contextKeyService=i,this._editorService=n,this._instantiationService=o,this._sessionDispoables=new Ze,this._editor=e,this._widgetVisible=sAe.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(e){if(this._model&&this._model.matches(e))return this._model;let t=!1;return this._model&&(t=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(e),t&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(bT,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(i=>{var n,o,l;(!((n=this._model)!=null&&n.selected)||!v.containsPosition((o=this._model)==null?void 0:o.selected.marker,i.position))&&((l=this._model)==null||l.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const i=this._model.find(this._editor.getModel().uri,this._widget.position);i?this._widget.updateMarker(i.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(i=>{this._editorService.openCodeEditor({resource:i.resource,options:{pinned:!0,revealIfOpened:!0,selection:v.lift(i).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(e=!0){this._cleanUp(),e&&this._editor.focus()}showAtMarker(e){if(this._editor.hasModel()){const t=this._getOrCreateModel(this._editor.getModel().uri);t.resetIndex(),t.move(!0,this._editor.getModel(),new oe(e.startLineNumber,e.startColumn)),t.selected&&this._widget.showAtMarker(t.selected.marker,t.selected.index,t.selected.total)}}async nagivate(e,t){var i,n;if(this._editor.hasModel()){const o=this._getOrCreateModel(t?void 0:this._editor.getModel().uri);if(o.move(e,this._editor.getModel(),this._editor.getPosition()),!o.selected)return;if(o.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const l=await this._editorService.openCodeEditor({resource:o.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:o.selected.marker}},this._editor);l&&((i=s2.get(l))==null||i.close(),(n=s2.get(l))==null||n.nagivate(e,t))}else this._widget.showAtMarker(o.selected.marker,o.selected.index,o.selected.total)}}},s2=FQ,FQ.ID="editor.contrib.markerController",FQ);XA=s2=Mlt([kk(1,nAe),kk(2,wt),kk(3,zi),kk(4,bt)],XA);class Wz extends et{constructor(e,t,i){super(i),this._next=e,this._multiFile=t}async run(e,t){var i;t.hasModel()&&((i=XA.get(t))==null||i.nagivate(this._next,this._multiFile))}}const ZZ=class ZZ extends Wz{constructor(){super(!0,!1,{id:ZZ.ID,label:ZZ.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:578,weight:100},menuOpts:{menuId:bT.TitleMenu,title:ZZ.LABEL,icon:ts("marker-navigation-next",ke.arrowDown,U("nextMarkerIcon","Icon for goto next marker.")),group:"navigation",order:1}})}};ZZ.ID="editor.action.marker.next",ZZ.LABEL=U("markerAction.next.label","Go to Next Problem (Error, Warning, Info)");let oJ=ZZ;const AZ=class AZ extends Wz{constructor(){super(!1,!1,{id:AZ.ID,label:AZ.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:1602,weight:100},menuOpts:{menuId:bT.TitleMenu,title:AZ.LABEL,icon:ts("marker-navigation-previous",ke.arrowUp,U("previousMarkerIcon","Icon for goto previous marker.")),group:"navigation",order:2}})}};AZ.ID="editor.action.marker.prev",AZ.LABEL=U("markerAction.previous.label","Go to Previous Problem (Error, Warning, Info)");let R8=AZ;class Tlt extends Wz{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:U("markerAction.nextInFiles.label","Go to Next Problem in Files (Error, Warning, Info)"),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:66,weight:100},menuOpts:{menuId:at.MenubarGoMenu,title:U({key:"miGotoNextProblem",comment:["&& denotes a mnemonic"]},"Next &&Problem"),group:"6_problem_nav",order:1}})}}class Blt extends Wz{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:U("markerAction.previousInFiles.label","Go to Previous Problem in Files (Error, Warning, Info)"),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:1090,weight:100},menuOpts:{menuId:at.MenubarGoMenu,title:U({key:"miGotoPreviousProblem",comment:["&& denotes a mnemonic"]},"Previous &&Problem"),group:"6_problem_nav",order:2}})}}Gi(XA.ID,XA,4);Me(oJ);Me(R8);Me(Tlt);Me(Blt);const sAe=new Ke("markersNavigationVisible",!1),Llt=Io.bindToContribution(XA.get);Oe(new Llt({id:"closeMarkersNavigation",precondition:sAe,handler:s=>s.close(),kbOpts:{weight:100+50,kbExpr:H.focus,primary:9,secondary:[1033]}}));var Wu;(function(s){s.NoAutoFocus="noAutoFocus",s.FocusIfVisible="focusIfVisible",s.AutoFocusImmediately="autoFocusImmediately"})(Wu||(Wu={}));class klt extends et{constructor(){super({id:aZe,label:U({key:"showOrFocusHover",comment:["Label for action that will trigger the showing/focusing of a hover in the editor.","If the hover is not visible, it will show the hover.","This allows for users to show the hover without using the mouse."]},"Show or Focus Hover"),metadata:{description:kt("showOrFocusHoverDescription","Show or focus the editor hover which shows documentation, references, and other content for a symbol at the current cursor position."),args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if and when the hover should take focus upon being triggered by this action.",enum:[Wu.NoAutoFocus,Wu.FocusIfVisible,Wu.AutoFocusImmediately],enumDescriptions:[U("showOrFocusHover.focus.noAutoFocus","The hover will not automatically take focus."),U("showOrFocusHover.focus.focusIfVisible","The hover will take focus only if it is already visible."),U("showOrFocusHover.focus.autoFocusImmediately","The hover will automatically take focus when it appears.")],default:Wu.FocusIfVisible}}}}]},alias:"Show or Focus Hover",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2087),weight:100}})}run(e,t,i){if(!t.hasModel())return;const n=Qr.get(t);if(!n)return;const o=i==null?void 0:i.focus;let l=Wu.FocusIfVisible;Object.values(Wu).includes(o)?l=o:typeof o=="boolean"&&o&&(l=Wu.AutoFocusImmediately);const r=d=>{const c=t.getPosition(),h=new v(c.lineNumber,c.column,c.lineNumber,c.column);n.showContentHover(h,1,1,d)},a=t.getOption(2)===2;n.isHoverVisible?l!==Wu.NoAutoFocus?n.focus():r(a):r(a||l===Wu.AutoFocusImmediately)}}class Ilt extends et{constructor(){super({id:qtt,label:U({key:"showDefinitionPreviewHover",comment:["Label for action that will trigger the showing of definition preview hover in the editor.","This allows for users to show the definition preview hover without using the mouse."]},"Show Definition Preview Hover"),alias:"Show Definition Preview Hover",precondition:void 0,metadata:{description:kt("showDefinitionPreviewHoverDescription","Show the definition preview hover in the editor.")}})}run(e,t){const i=Qr.get(t);if(!i)return;const n=t.getPosition();if(!n)return;const o=new v(n.lineNumber,n.column,n.lineNumber,n.column),l=gT.get(t);if(!l)return;l.startFindDefinitionFromCursor(n).then(()=>{i.showContentHover(o,1,1,!0)})}}class Dlt extends et{constructor(){super({id:$tt,label:U({key:"scrollUpHover",comment:["Action that allows to scroll up in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Up Hover"),alias:"Scroll Up Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:16,weight:100},metadata:{description:kt("scrollUpHoverDescription","Scroll up the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.scrollUp()}}class Glt extends et{constructor(){super({id:eit,label:U({key:"scrollDownHover",comment:["Action that allows to scroll down in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Down Hover"),alias:"Scroll Down Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:18,weight:100},metadata:{description:kt("scrollDownHoverDescription","Scroll down the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.scrollDown()}}class Elt extends et{constructor(){super({id:tit,label:U({key:"scrollLeftHover",comment:["Action that allows to scroll left in the hover widget with the left arrow when the hover widget is focused."]},"Scroll Left Hover"),alias:"Scroll Left Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:15,weight:100},metadata:{description:kt("scrollLeftHoverDescription","Scroll left the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.scrollLeft()}}class vlt extends et{constructor(){super({id:iit,label:U({key:"scrollRightHover",comment:["Action that allows to scroll right in the hover widget with the right arrow when the hover widget is focused."]},"Scroll Right Hover"),alias:"Scroll Right Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:17,weight:100},metadata:{description:kt("scrollRightHoverDescription","Scroll right the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.scrollRight()}}class xlt extends et{constructor(){super({id:nit,label:U({key:"pageUpHover",comment:["Action that allows to page up in the hover widget with the page up command when the hover widget is focused."]},"Page Up Hover"),alias:"Page Up Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:11,secondary:[528],weight:100},metadata:{description:kt("pageUpHoverDescription","Page up the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.pageUp()}}class Jlt extends et{constructor(){super({id:sit,label:U({key:"pageDownHover",comment:["Action that allows to page down in the hover widget with the page down command when the hover widget is focused."]},"Page Down Hover"),alias:"Page Down Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:12,secondary:[530],weight:100},metadata:{description:kt("pageDownHoverDescription","Page down the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.pageDown()}}class Xlt extends et{constructor(){super({id:oit,label:U({key:"goToTopHover",comment:["Action that allows to go to the top of the hover widget with the home command when the hover widget is focused."]},"Go To Top Hover"),alias:"Go To Bottom Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:14,secondary:[2064],weight:100},metadata:{description:kt("goToTopHoverDescription","Go to the top of the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.goToTop()}}class Ylt extends et{constructor(){super({id:lit,label:U({key:"goToBottomHover",comment:["Action that allows to go to the bottom in the hover widget with the end command when the hover widget is focused."]},"Go To Bottom Hover"),alias:"Go To Bottom Hover",precondition:H.hoverFocused,kbOpts:{kbExpr:H.hoverFocused,primary:13,secondary:[2066],weight:100},metadata:{description:kt("goToBottomHoverDescription","Go to the bottom of the editor hover.")}})}run(e,t){const i=Qr.get(t);i&&i.goToBottom()}}class zlt extends et{constructor(){super({id:mz,label:rit,alias:"Increase Hover Verbosity Level",precondition:H.hoverVisible})}run(e,t,i){const n=Qr.get(t);if(!n)return;const o=(i==null?void 0:i.index)!==void 0?i.index:n.focusedHoverPartIndex();n.updateHoverVerbosityLevel(cd.Increase,o,i==null?void 0:i.focus)}}class _lt extends et{constructor(){super({id:pz,label:ait,alias:"Decrease Hover Verbosity Level",precondition:H.hoverVisible})}run(e,t,i){var l;const n=Qr.get(t);if(!n)return;const o=(i==null?void 0:i.index)!==void 0?i.index:n.focusedHoverPartIndex();(l=Qr.get(t))==null||l.updateHoverVerbosityLevel(cd.Decrease,o,i==null?void 0:i.focus)}}var Olt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},w_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const dh=Ge;class jlt{constructor(e,t,i){this.owner=e,this.range=t,this.marker=i}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}const kce={type:1,filter:{include:ds.QuickFix},triggerAction:Wd.QuickFixHover};let S8=class{constructor(e,t,i,n){this._editor=e,this._markerDecorationsService=t,this._openerService=i,this._languageFeaturesService=n,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1&&!e.supportsMarkerHover)return[];const i=this._editor.getModel(),n=e.range.startLineNumber,o=i.getLineMaxColumn(n),l=[];for(const r of t){const a=r.range.startLineNumber===n?r.range.startColumn:1,d=r.range.endLineNumber===n?r.range.endColumn:o,c=this._markerDecorationsService.getMarker(i.uri,r);if(!c)continue;const h=new v(e.range.startLineNumber,a,e.range.startLineNumber,d);l.push(new jlt(this,h,c))}return l}renderHoverParts(e,t){if(!t.length)return new vA([]);const i=new Ze,n=[];t.forEach(l=>{const r=this._renderMarkerHover(l);e.fragment.appendChild(r.hoverElement),n.push(r)});const o=t.length===1?t[0]:t.sort((l,r)=>Es.compare(l.marker.severity,r.marker.severity))[0];return this.renderMarkerStatusbar(e,o,i),new vA(n)}_renderMarkerHover(e){const t=new Ze,i=dh("div.hover-row"),n=ye(i,dh("div.marker.hover-contents")),{source:o,message:l,code:r,relatedInformation:a}=e.marker;this._editor.applyFontInfo(n);const d=ye(n,dh("span"));if(d.style.whiteSpace="pre-wrap",d.innerText=l,o||r)if(r&&typeof r!="string"){const h=dh("span");if(o){const g=ye(h,dh("span"));g.innerText=o}const u=ye(h,dh("a.code-link"));u.setAttribute("href",r.target.toString()),t.add(ge(u,"click",g=>{this._openerService.open(r.target,{allowCommands:!0}),g.preventDefault(),g.stopPropagation()}));const m=ye(u,dh("span"));m.innerText=r.value;const p=ye(n,h);p.style.opacity="0.6",p.style.paddingLeft="6px"}else{const h=ye(n,dh("span"));h.style.opacity="0.6",h.style.paddingLeft="6px",h.innerText=o&&r?`${o}(${r})`:o||`(${r})`}if(Sr(a))for(const{message:h,resource:u,startLineNumber:m,startColumn:p}of a){const g=ye(n,dh("div"));g.style.marginTop="8px";const b=ye(g,dh("a"));b.innerText=`${qc(u)}(${m}, ${p}): `,b.style.cursor="pointer",t.add(ge(b,"click",Z=>{if(Z.stopPropagation(),Z.preventDefault(),this._openerService){const A={selection:{startLineNumber:m,startColumn:p}};this._openerService.open(u,{fromUserGesture:!0,editorOptions:A}).catch(vt)}}));const f=ye(g,dh("span"));f.innerText=h,this._editor.applyFontInfo(f)}return{hoverPart:e,hoverElement:i,dispose:()=>t.dispose()}}renderMarkerStatusbar(e,t,i){if(t.marker.severity===Es.Error||t.marker.severity===Es.Warning||t.marker.severity===Es.Info){const n=XA.get(this._editor);n&&e.statusBar.addAction({label:U("view problem","View Problem"),commandId:oJ.ID,run:()=>{e.hide(),n.showAtMarker(t.marker),this._editor.focus()}})}if(!this._editor.getOption(92)){const n=e.statusBar.append(dh("div"));this.recentMarkerCodeActionsInfo&&(Qv.makeKey(this.recentMarkerCodeActionsInfo.marker)===Qv.makeKey(t.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(n.textContent=U("noQuickFixes","No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);const o=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?de.None:HU(()=>n.textContent=U("checkingForQuickFixes","Checking for quick fixes..."),200,i);n.textContent||(n.textContent=String.fromCharCode(160));const l=this.getCodeActions(t.marker);i.add(gt(()=>l.cancel())),l.then(r=>{if(o.dispose(),this.recentMarkerCodeActionsInfo={marker:t.marker,hasCodeActions:r.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){r.dispose(),n.textContent=U("noQuickFixes","No quick fixes available");return}n.style.display="none";let a=!1;i.add(gt(()=>{a||r.dispose()})),e.statusBar.addAction({label:U("quick fixes","Quick Fix..."),commandId:cie,run:d=>{a=!0;const c=SV.get(this._editor),h=_s(d);e.hide(),c==null||c.showCodeActions(kce,r,{x:h.left,y:h.top,width:h.width,height:h.height})}})},vt)}}getCodeActions(e){return Xo(t=>NS(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new v(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),kce,Gu.None,t))}};S8=Olt([w_(1,Iee),w_(2,za),w_(3,lt)],S8);class Hlt{get lineNumber(){return this._lineNumber}set lineNumber(e){this._lineNumber=e}get lane(){return this._laneOrLine}set lane(e){this._laneOrLine=e}constructor(e){this._editor=e,this._lineNumber=-1,this._laneOrLine=Kh.Center}computeSync(){var o;const e=l=>({value:l}),t=this._editor.getLineDecorations(this._lineNumber),i=[],n=this._laneOrLine==="lineNo";if(!t)return i;for(const l of t){const r=((o=l.options.glyphMargin)==null?void 0:o.position)??Kh.Center;if(!n&&r!==this._laneOrLine)continue;const a=n?l.options.lineNumberHoverMessage:l.options.glyphMarginHoverMessage;!a||dV(a)||i.push(...m$(a).map(e))}return i}}var Plt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ice=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},W8;const Dce=Ge;var ZQ;let V8=(ZQ=class extends de{constructor(e,t,i){super(),this._renderDisposeables=this._register(new Ze),this._editor=e,this._isVisible=!1,this._messages=[],this._hover=this._register(new pee),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._markdownRenderer=this._register(new W0({editor:this._editor},t,i)),this._computer=new Hlt(this._editor),this._hoverOperation=this._register(new uZe(this._editor,this._computer)),this._register(this._hoverOperation.onResult(n=>{this._withResult(n.value)})),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(50)&&this._updateFont()})),this._register(Ms(this._hover.containerDomNode,"mouseleave",n=>{this._onMouseLeave(n)})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return W8.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(t=>this._editor.applyFontInfo(t))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}showsOrWillShow(e){const t=e.target;return t.type===2&&t.detail.glyphMarginLane?(this._startShowingAt(t.position.lineNumber,t.detail.glyphMarginLane),!0):t.type===3?(this._startShowingAt(t.position.lineNumber,"lineNo"),!0):!1}_startShowingAt(e,t){this._computer.lineNumber===e&&this._computer.lane===t||(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=e,this._computer.lane=t,this._hoverOperation.start(0))}hide(){this._computer.lineNumber=-1,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(e){this._messages=e,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(e,t){this._renderDisposeables.clear();const i=document.createDocumentFragment();for(const n of t){const o=Dce("div.hover-row.markdown-hover"),l=ye(o,Dce("div.hover-contents")),r=this._renderDisposeables.add(this._markdownRenderer.render(n.value));l.appendChild(r.element),i.appendChild(o)}this._updateContents(i),this._showAt(e)}_updateContents(e){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(e),this._updateFont()}_showAt(e){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const t=this._editor.getLayoutInfo(),i=this._editor.getTopForLineNumber(e),n=this._editor.getScrollTop(),o=this._editor.getOption(67),l=this._hover.containerDomNode.clientHeight,r=i-n-(l-o)/2,a=t.glyphMarginLeft+t.glyphMarginWidth+(this._computer.lane==="lineNo"?t.lineNumbersWidth:0);this._hover.containerDomNode.style.left=`${a}px`,this._hover.containerDomNode.style.top=`${Math.max(Math.round(r),0)}px`}_onMouseLeave(e){const t=this._editor.getDomNode();(!t||!gz(t,e.x,e.y))&&this.hide()}},W8=ZQ,ZQ.ID="editor.contrib.modesGlyphHoverWidget",ZQ);V8=W8=Plt([Ice(1,Zs),Ice(2,za)],V8);var Klt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},qlt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},xT;let lJ=(xT=class extends de{constructor(e,t){super(),this._editor=e,this._instantiationService=t,this.shouldKeepOpenOnEditorMouseMoveOrLeave=!1,this._listenersStore=new Ze,this._hoverState={mouseDown:!1},this._reactToEditorMouseMoveRunner=this._register(new Rn(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookListeners(),this._register(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(60)&&(this._unhookListeners(),this._hookListeners())}))}_hookListeners(){const e=this._editor.getOption(60);this._hoverSettings={enabled:e.enabled,sticky:e.sticky,hidingDelay:e.hidingDelay},e.enabled?(this._listenersStore.add(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._listenersStore.add(this._editor.onMouseUp(()=>this._onEditorMouseUp())),this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))):(this._listenersStore.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._listenersStore.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))),this._listenersStore.add(this._editor.onMouseLeave(t=>this._onEditorMouseLeave(t))),this._listenersStore.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this._hideWidgets()})),this._listenersStore.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._listenersStore.add(this._editor.onDidScrollChange(t=>this._onEditorScrollChanged(t)))}_unhookListeners(){this._listenersStore.clear()}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){this._hoverState.mouseDown=!0,!this._isMouseOnMarginHoverWidget(e)&&this._hideWidgets()}_isMouseOnMarginHoverWidget(e){var i;const t=(i=this._glyphWidget)==null?void 0:i.getDomNode();return t?gz(t,e.event.posx,e.event.posy):!1}_onEditorMouseUp(){this._hoverState.mouseDown=!1}_onEditorMouseLeave(e){this.shouldKeepOpenOnEditorMouseMoveOrLeave||(this._cancelScheduler(),this._isMouseOnMarginHoverWidget(e))||this._hideWidgets()}_shouldNotRecomputeCurrentHoverWidget(e){const t=this._hoverSettings.sticky,i=this._isMouseOnMarginHoverWidget(e);return t&&i}_onEditorMouseMove(e){if(this.shouldKeepOpenOnEditorMouseMoveOrLeave)return;if(this._mouseMoveEvent=e,this._shouldNotRecomputeCurrentHoverWidget(e)){this._reactToEditorMouseMoveRunner.cancel();return}this._reactToEditorMouseMove(e)}_reactToEditorMouseMove(e){!e||this._tryShowHoverWidget(e)||this._hideWidgets()}_tryShowHoverWidget(e){return this._getOrCreateGlyphWidget().showsOrWillShow(e)}_onKeyDown(e){this._editor.hasModel()&&(e.keyCode===5||e.keyCode===6||e.keyCode===57||e.keyCode===4||this._hideWidgets())}_hideWidgets(){var e;(e=this._glyphWidget)==null||e.hide()}_getOrCreateGlyphWidget(){return this._glyphWidget||(this._glyphWidget=this._instantiationService.createInstance(V8,this._editor)),this._glyphWidget}dispose(){var e;super.dispose(),this._unhookListeners(),this._listenersStore.dispose(),(e=this._glyphWidget)==null||e.dispose()}},xT.ID="editor.contrib.marginHover",xT);lJ=Klt([qlt(1,bt)],lJ);class $lt{}class ert{}class trt{}Gi(Qr.ID,Qr,2);Gi(lJ.ID,lJ,2);Me(klt);Me(Ilt);Me(Dlt);Me(Glt);Me(Elt);Me(vlt);Me(xlt);Me(Jlt);Me(Xlt);Me(Ylt);Me(zlt);Me(_lt);aN.register(cT);aN.register(S8);ih((s,e)=>{const t=s.getColor(B0e);t&&(e.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${t.transparent(.5)}; }`))});Sz.register(new $lt);Sz.register(new ert);Sz.register(new trt);function od(s,e){let t=0;for(let i=0;i<s.length;i++)s.charAt(i)===" "?t+=e:t++;return t}function xC(s,e,t){s=s<0?0:s;let i="";if(!t){const n=Math.floor(s/e);s=s%e;for(let o=0;o<n;o++)i+=" "}for(let n=0;n<s;n++)i+=" ";return i}function oAe(s,e,t,i){if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return[];const n=e.getLanguageConfiguration(s.getLanguageId()).indentRulesSupport;if(!n)return[];const o=new Nte(s,n,e);for(i=Math.min(i,s.getLineCount());t<=i&&o.shouldIgnore(t);)t++;if(t>i-1)return[];const{tabSize:l,indentSize:r,insertSpaces:a}=s.getOptions(),d=(g,b)=>(b=b||1,$c.shiftIndent(g,g.length+b,l,r,a)),c=(g,b)=>(b=b||1,$c.unshiftIndent(g,g.length+b,l,r,a)),h=[],u=s.getLineContent(t);let m=wn(u),p=m;o.shouldIncrease(t)?(p=d(p),m=d(m)):o.shouldIndentNextLine(t)&&(p=d(p)),t++;for(let g=t;g<=i;g++){if(irt(s,g))continue;const b=s.getLineContent(g),f=wn(b),Z=p;o.shouldDecrease(g,Z)&&(p=c(p),m=c(m)),f!==p&&h.push(Rs.replaceMove(new dt(g,1,g,f.length+1),Dee(p,r,a))),!o.shouldIgnore(g)&&(o.shouldIncrease(g,Z)?(m=d(m),p=m):o.shouldIndentNextLine(g,Z)?p=d(p):p=m)}return h}function irt(s,e){return s.tokenization.isCheapToTokenize(e)?s.tokenization.getLineTokens(e).getStandardTokenType(0)===2:!1}var nrt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},srt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const h5=class h5 extends et{constructor(){super({id:h5.ID,label:U("indentationToSpaces","Convert Indentation to Spaces"),alias:"Convert Indentation to Spaces",precondition:H.writable,metadata:{description:kt("indentationToSpacesDescription","Convert the tab indentation to spaces.")}})}run(e,t){const i=t.getModel();if(!i)return;const n=i.getOptions(),o=t.getSelection();if(!o)return;const l=new drt(o,n.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[l]),t.pushUndoStop(),i.updateOptions({insertSpaces:!0})}};h5.ID="editor.action.indentationToSpaces";let Q8=h5;const u5=class u5 extends et{constructor(){super({id:u5.ID,label:U("indentationToTabs","Convert Indentation to Tabs"),alias:"Convert Indentation to Tabs",precondition:H.writable,metadata:{description:kt("indentationToTabsDescription","Convert the spaces indentation to tabs.")}})}run(e,t){const i=t.getModel();if(!i)return;const n=i.getOptions(),o=t.getSelection();if(!o)return;const l=new crt(o,n.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[l]),t.pushUndoStop(),i.updateOptions({insertSpaces:!1})}};u5.ID="editor.action.indentationToTabs";let y8=u5;class Iie extends et{constructor(e,t,i){super(i),this.insertSpaces=e,this.displaySizeOnly=t}run(e,t){const i=e.get(nh),n=e.get(es),o=t.getModel();if(!o)return;const l=n.getCreationOptions(o.getLanguageId(),o.uri,o.isForSimpleWidget),r=o.getOptions(),a=[1,2,3,4,5,6,7,8].map(c=>({id:c.toString(),label:c.toString(),description:c===l.tabSize&&c===r.tabSize?U("configuredTabSize","Configured Tab Size"):c===l.tabSize?U("defaultTabSize","Default Tab Size"):c===r.tabSize?U("currentTabSize","Current Tab Size"):void 0})),d=Math.min(o.getOptions().tabSize-1,7);setTimeout(()=>{i.pick(a,{placeHolder:U({key:"selectTabWidth",comment:["Tab corresponds to the tab key"]},"Select Tab Size for Current File"),activeItem:a[d]}).then(c=>{if(c&&o&&!o.isDisposed()){const h=parseInt(c.label,10);this.displaySizeOnly?o.updateOptions({tabSize:h}):o.updateOptions({tabSize:h,indentSize:h,insertSpaces:this.insertSpaces})}})},50)}}const m5=class m5 extends Iie{constructor(){super(!1,!1,{id:m5.ID,label:U("indentUsingTabs","Indent Using Tabs"),alias:"Indent Using Tabs",precondition:void 0,metadata:{description:kt("indentUsingTabsDescription","Use indentation with tabs.")}})}};m5.ID="editor.action.indentUsingTabs";let C8=m5;const p5=class p5 extends Iie{constructor(){super(!0,!1,{id:p5.ID,label:U("indentUsingSpaces","Indent Using Spaces"),alias:"Indent Using Spaces",precondition:void 0,metadata:{description:kt("indentUsingSpacesDescription","Use indentation with spaces.")}})}};p5.ID="editor.action.indentUsingSpaces";let w8=p5;const g5=class g5 extends Iie{constructor(){super(!0,!0,{id:g5.ID,label:U("changeTabDisplaySize","Change Tab Display Size"),alias:"Change Tab Display Size",precondition:void 0,metadata:{description:kt("changeTabDisplaySizeDescription","Change the space size equivalent of the tab.")}})}};g5.ID="editor.action.changeTabDisplaySize";let M8=g5;const b5=class b5 extends et{constructor(){super({id:b5.ID,label:U("detectIndentation","Detect Indentation from Content"),alias:"Detect Indentation from Content",precondition:void 0,metadata:{description:kt("detectIndentationDescription","Detect the indentation from content.")}})}run(e,t){const i=e.get(es),n=t.getModel();if(!n)return;const o=i.getCreationOptions(n.getLanguageId(),n.uri,n.isForSimpleWidget);n.detectIndentation(o.insertSpaces,o.tabSize)}};b5.ID="editor.action.detectIndentation";let T8=b5;class ort extends et{constructor(){super({id:"editor.action.reindentlines",label:U("editor.reindentlines","Reindent Lines"),alias:"Reindent Lines",precondition:H.writable,metadata:{description:kt("editor.reindentlinesDescription","Reindent the lines of the editor.")}})}run(e,t){const i=e.get(Qs),n=t.getModel();if(!n)return;const o=oAe(n,i,1,n.getLineCount());o.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,o),t.pushUndoStop())}}class lrt extends et{constructor(){super({id:"editor.action.reindentselectedlines",label:U("editor.reindentselectedlines","Reindent Selected Lines"),alias:"Reindent Selected Lines",precondition:H.writable,metadata:{description:kt("editor.reindentselectedlinesDescription","Reindent the selected lines of the editor.")}})}run(e,t){const i=e.get(Qs),n=t.getModel();if(!n)return;const o=t.getSelections();if(o===null)return;const l=[];for(const r of o){let a=r.startLineNumber,d=r.endLineNumber;if(a!==d&&r.endColumn===1&&d--,a===1){if(a===d)continue}else a--;const c=oAe(n,i,a,d);l.push(...c)}l.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,l),t.pushUndoStop())}}class rrt{constructor(e,t){this._initialSelection=t,this._edits=[],this._selectionId=null;for(const i of e)i.range&&typeof i.text=="string"&&this._edits.push(i)}getEditOperations(e,t){for(const n of this._edits)t.addEditOperation(v.lift(n.range),n.text);let i=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!1))),i||(this._selectionId=t.trackSelection(this._initialSelection))}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}var JT;let rJ=(JT=class{constructor(e,t){this.editor=e,this._languageConfigurationService=t,this.callOnDispose=new Ze,this.callOnModel=new Ze,this.callOnDispose.add(e.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(e.onDidChangeModel(()=>this.update())),this.callOnDispose.add(e.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(this.editor.getOption(12)<4||this.editor.getOption(55))&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:e})=>{this.trigger(e)}))}trigger(e){const t=this.editor.getSelections();if(t===null||t.length>1)return;const i=this.editor.getModel();if(!i||this.rangeContainsOnlyWhitespaceCharacters(i,e)||art(i,e)||!i.tokenization.isCheapToTokenize(e.getStartPosition().lineNumber))return;const o=this.editor.getOption(12),{tabSize:l,indentSize:r,insertSpaces:a}=i.getOptions(),d=[],c={shiftIndent:p=>$c.shiftIndent(p,p.length+1,l,r,a),unshiftIndent:p=>$c.unshiftIndent(p,p.length+1,l,r,a)};let h=e.startLineNumber;for(;h<=e.endLineNumber;){if(this.shouldIgnoreLine(i,h)){h++;continue}break}if(h>e.endLineNumber)return;let u=i.getLineContent(h);if(!/\S/.test(u.substring(0,e.startColumn-1))){const p=yC(o,i,i.getLanguageId(),h,c,this._languageConfigurationService);if(p!==null){const g=wn(u),b=od(p,l),f=od(g,l);if(b!==f){const Z=xC(b,l,a);d.push({range:new v(h,1,h,g.length+1),text:Z}),u=Z+u.substring(g.length)}else{const Z=Ffe(i,h,this._languageConfigurationService);if(Z===0||Z===8)return}}}const m=h;for(;h<e.endLineNumber;){if(!/\S/.test(i.getLineContent(h+1))){h++;continue}break}if(h!==e.endLineNumber){const g=yC(o,{tokenization:{getLineTokens:b=>i.tokenization.getLineTokens(b),getLanguageId:()=>i.getLanguageId(),getLanguageIdAtPosition:(b,f)=>i.getLanguageIdAtPosition(b,f)},getLineContent:b=>b===m?u:i.getLineContent(b)},i.getLanguageId(),h+1,c,this._languageConfigurationService);if(g!==null){const b=od(g,l),f=od(wn(i.getLineContent(h+1)),l);if(b!==f){const Z=b-f;for(let A=h+1;A<=e.endLineNumber;A++){const N=i.getLineContent(A),W=wn(N),R=od(W,l)+Z,M=xC(R,l,a);M!==W&&d.push({range:new v(A,1,A,W.length+1),text:M})}}}}if(d.length>0){this.editor.pushUndoStop();const p=new rrt(d,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",p),this.editor.pushUndoStop()}}rangeContainsOnlyWhitespaceCharacters(e,t){const i=o=>o.trim().length===0;let n=!0;if(t.startLineNumber===t.endLineNumber){const l=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);n=i(l)}else for(let o=t.startLineNumber;o<=t.endLineNumber;o++){const l=e.getLineContent(o);if(o===t.startLineNumber){const r=l.substring(t.startColumn-1);n=i(r)}else if(o===t.endLineNumber){const r=l.substring(0,t.endColumn-1);n=i(r)}else n=e.getLineFirstNonWhitespaceColumn(o)===0;if(!n)break}return n}shouldIgnoreLine(e,t){e.tokenization.forceTokenization(t);const i=e.getLineFirstNonWhitespaceColumn(t);if(i===0)return!0;const n=e.tokenization.getLineTokens(t);if(n.getCount()>0){const o=n.findTokenIndexAtOffset(i);if(o>=0&&n.getStandardTokenType(o)===1)return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}},JT.ID="editor.contrib.autoIndentOnPaste",JT);rJ=nrt([srt(1,Qs)],rJ);function art(s,e){const t=i=>Cze(s,i)===2;return t(e.getStartPosition())||t(e.getEndPosition())}function lAe(s,e,t,i){if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return;let n="";for(let l=0;l<t;l++)n+=" ";const o=new RegExp(n,"gi");for(let l=1,r=s.getLineCount();l<=r;l++){let a=s.getLineFirstNonWhitespaceColumn(l);if(a===0&&(a=s.getLineMaxColumn(l)),a===1)continue;const d=new v(l,1,l,a),c=s.getValueInRange(d),h=i?c.replace(/\t/ig,n):c.replace(o," ");e.addEditOperation(d,h)}}class drt{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),lAe(e,t,this.tabSize,!0)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}class crt{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),lAe(e,t,this.tabSize,!1)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}Gi(rJ.ID,rJ,2);Me(Q8);Me(y8);Me(C8);Me(w8);Me(M8);Me(T8);Me(ort);Me(lrt);Gi(uT.ID,uT,1);aN.register(Ex);class hrt{constructor(e,t,i){this._editRange=e,this._originalSelection=t,this._text=i}getEditOperations(e,t){t.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(e,t){const n=t.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new dt(n.endLineNumber,Math.min(this._originalSelection.positionColumn,n.endColumn),n.endLineNumber,Math.min(this._originalSelection.positionColumn,n.endColumn)):new dt(n.endLineNumber,n.endColumn-this._text.length,n.endLineNumber,n.endColumn)}}var urt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},mrt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},yD,mA;let BV=(mA=class{static get(e){return e.getContribution(yD.ID)}constructor(e,t){this.editor=e,this.editorWorkerService=t,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(e,t){var a;(a=this.currentRequest)==null||a.cancel();const i=this.editor.getSelection(),n=this.editor.getModel();if(!n||!i)return;let o=i;if(o.startLineNumber!==o.endLineNumber)return;const l=new jfe(this.editor,5),r=n.uri;return this.editorWorkerService.canNavigateValueSet(r)?(this.currentRequest=Xo(d=>this.editorWorkerService.navigateValueSet(r,o,t)),this.currentRequest.then(d=>{var p;if(!d||!d.range||!d.value||!l.validate(this.editor))return;const c=v.lift(d.range);let h=d.range;const u=d.value.length-(o.endColumn-o.startColumn);h={startLineNumber:h.startLineNumber,startColumn:h.startColumn,endLineNumber:h.endLineNumber,endColumn:h.startColumn+d.value.length},u>1&&(o=new dt(o.startLineNumber,o.startColumn,o.endLineNumber,o.endColumn+u-1));const m=new hrt(c,o,d.value);this.editor.pushUndoStop(),this.editor.executeCommand(e,m),this.editor.pushUndoStop(),this.decorations.set([{range:h,options:yD.DECORATION}]),(p=this.decorationRemover)==null||p.cancel(),this.decorationRemover=A0(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(vt)}).catch(vt)):Promise.resolve(void 0)}},yD=mA,mA.ID="editor.contrib.inPlaceReplaceController",mA.DECORATION=Ot.register({description:"in-place-replace",className:"valueSetReplacement"}),mA);BV=yD=urt([mrt(1,_a)],BV);class prt extends et{constructor(){super({id:"editor.action.inPlaceReplace.up",label:U("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:3159,weight:100}})}run(e,t){const i=BV.get(t);return i?i.run(this.id,!1):Promise.resolve(void 0)}}class grt extends et{constructor(){super({id:"editor.action.inPlaceReplace.down",label:U("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:3161,weight:100}})}run(e,t){const i=BV.get(t);return i?i.run(this.id,!0):Promise.resolve(void 0)}}Gi(BV.ID,BV,4);Me(prt);Me(grt);class brt extends et{constructor(){super({id:"expandLineSelection",label:U("expandLineSelection","Expand Line Selection"),alias:"Expand Line Selection",precondition:void 0,kbOpts:{weight:0,kbExpr:H.textInputFocus,primary:2090}})}run(e,t,i){if(i=i||{},!t.hasModel())return;const n=t._getViewModel();n.model.pushStackElement(),n.setCursorStates(i.source,3,ul.expandLineSelection(n,n.getCursorStates())),n.revealAllCursors(i.source,!0)}}Me(brt);class Urt{constructor(e,t,i){this._selection=e,this._cursors=t,this._selectionId=null,this._trimInRegexesAndStrings=i}getEditOperations(e,t){const i=frt(e,this._cursors,this._trimInRegexesAndStrings);for(let n=0,o=i.length;n<o;n++){const l=i[n];t.addEditOperation(l.range,l.text)}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}function frt(s,e,t){e.sort((r,a)=>r.lineNumber===a.lineNumber?r.column-a.column:r.lineNumber-a.lineNumber);for(let r=e.length-2;r>=0;r--)e[r].lineNumber===e[r+1].lineNumber&&e.splice(r,1);const i=[];let n=0,o=0;const l=e.length;for(let r=1,a=s.getLineCount();r<=a;r++){const d=s.getLineContent(r),c=d.length+1;let h=0;if(o<l&&e[o].lineNumber===r&&(h=e[o].column,o++,h===c)||d.length===0)continue;const u=Xu(d);let m=0;if(u===-1)m=1;else if(u!==d.length-1)m=u+2;else continue;if(!t){if(!s.tokenization.hasAccurateTokensForLine(r))continue;const p=s.tokenization.getLineTokens(r),g=p.getStandardTokenType(p.findTokenIndexAtOffset(m));if(g===2||g===3)continue}m=Math.max(h,m),i[n++]=Rs.delete(new v(r,m,r,c))}return i}class rAe{constructor(e,t,i){this._selection=e,this._isCopyingDown=t,this._noop=i||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(e,t){let i=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._endLineNumberDelta=1,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const n=[];for(let l=i.startLineNumber;l<=i.endLineNumber;l++)n.push(e.getLineContent(l));const o=n.join(`
- `);o===""&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?t.addEditOperation(new v(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber+1,1),i.endLineNumber===e.getLineCount()?"":`
- `):this._isCopyingDown?t.addEditOperation(new v(i.startLineNumber,1,i.startLineNumber,1),o+`
- `):t.addEditOperation(new v(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),`
- `+o),this._selectionId=t.trackSelection(i),this._selectionDirection=this._selection.getDirection()}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);if(this._startLineNumberDelta!==0||this._endLineNumberDelta!==0){let n=i.startLineNumber,o=i.startColumn,l=i.endLineNumber,r=i.endColumn;this._startLineNumberDelta!==0&&(n=n+this._startLineNumberDelta,o=1),this._endLineNumberDelta!==0&&(l=l+this._endLineNumberDelta,r=1),i=dt.createWithDirection(n,o,l,r,this._selectionDirection)}return i}}var Frt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Zrt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let B8=class{constructor(e,t,i,n){this._languageConfigurationService=n,this._selection=e,this._isMovingDown=t,this._autoIndent=i,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(e,t){const i=()=>e.getLanguageId(),n=(h,u)=>e.getLanguageIdAtPosition(h,u),o=e.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===o){this._selectionId=t.trackSelection(this._selection);return}if(!this._isMovingDown&&this._selection.startLineNumber===1){this._selectionId=t.trackSelection(this._selection);return}this._moveEndPositionDown=!1;let l=this._selection;l.startLineNumber<l.endLineNumber&&l.endColumn===1&&(this._moveEndPositionDown=!0,l=l.setEndPosition(l.endLineNumber-1,e.getLineMaxColumn(l.endLineNumber-1)));const{tabSize:r,indentSize:a,insertSpaces:d}=e.getOptions(),c=this.buildIndentConverter(r,a,d);if(l.startLineNumber===l.endLineNumber&&e.getLineMaxColumn(l.startLineNumber)===1){const h=l.startLineNumber,u=this._isMovingDown?h+1:h-1;e.getLineMaxColumn(u)===1?t.addEditOperation(new v(1,1,1,1),null):(t.addEditOperation(new v(h,1,h,1),e.getLineContent(u)),t.addEditOperation(new v(u,1,u,e.getLineMaxColumn(u)),null)),l=new dt(u,1,u,1)}else{let h,u;if(this._isMovingDown){h=l.endLineNumber+1,u=e.getLineContent(h),t.addEditOperation(new v(h-1,e.getLineMaxColumn(h-1),h,e.getLineMaxColumn(h)),null);let m=u;if(this.shouldAutoIndent(e,l)){const p=this.matchEnterRule(e,c,r,h,l.startLineNumber-1);if(p!==null){const b=wn(e.getLineContent(h)),f=p+od(b,r);m=xC(f,r,d)+this.trimStart(u)}else{const b={tokenization:{getLineTokens:Z=>Z===l.startLineNumber?e.tokenization.getLineTokens(h):e.tokenization.getLineTokens(Z),getLanguageId:i,getLanguageIdAtPosition:n},getLineContent:Z=>Z===l.startLineNumber?e.getLineContent(h):e.getLineContent(Z)},f=yC(this._autoIndent,b,e.getLanguageIdAtPosition(h,1),l.startLineNumber,c,this._languageConfigurationService);if(f!==null){const Z=wn(e.getLineContent(h)),A=od(f,r),N=od(Z,r);A!==N&&(m=xC(A,r,d)+this.trimStart(u))}}t.addEditOperation(new v(l.startLineNumber,1,l.startLineNumber,1),m+`
- `);const g=this.matchEnterRuleMovingDown(e,c,r,l.startLineNumber,h,m);if(g!==null)g!==0&&this.getIndentEditsOfMovingBlock(e,t,l,r,d,g);else{const b={tokenization:{getLineTokens:Z=>Z===l.startLineNumber?e.tokenization.getLineTokens(h):Z>=l.startLineNumber+1&&Z<=l.endLineNumber+1?e.tokenization.getLineTokens(Z-1):e.tokenization.getLineTokens(Z),getLanguageId:i,getLanguageIdAtPosition:n},getLineContent:Z=>Z===l.startLineNumber?m:Z>=l.startLineNumber+1&&Z<=l.endLineNumber+1?e.getLineContent(Z-1):e.getLineContent(Z)},f=yC(this._autoIndent,b,e.getLanguageIdAtPosition(h,1),l.startLineNumber+1,c,this._languageConfigurationService);if(f!==null){const Z=wn(e.getLineContent(l.startLineNumber)),A=od(f,r),N=od(Z,r);if(A!==N){const W=A-N;this.getIndentEditsOfMovingBlock(e,t,l,r,d,W)}}}}else t.addEditOperation(new v(l.startLineNumber,1,l.startLineNumber,1),m+`
- `)}else if(h=l.startLineNumber-1,u=e.getLineContent(h),t.addEditOperation(new v(h,1,h+1,1),null),t.addEditOperation(new v(l.endLineNumber,e.getLineMaxColumn(l.endLineNumber),l.endLineNumber,e.getLineMaxColumn(l.endLineNumber)),`
- `+u),this.shouldAutoIndent(e,l)){const m={tokenization:{getLineTokens:g=>g===h?e.tokenization.getLineTokens(l.startLineNumber):e.tokenization.getLineTokens(g),getLanguageId:i,getLanguageIdAtPosition:n},getLineContent:g=>g===h?e.getLineContent(l.startLineNumber):e.getLineContent(g)},p=this.matchEnterRule(e,c,r,l.startLineNumber,l.startLineNumber-2);if(p!==null)p!==0&&this.getIndentEditsOfMovingBlock(e,t,l,r,d,p);else{const g=yC(this._autoIndent,m,e.getLanguageIdAtPosition(l.startLineNumber,1),h,c,this._languageConfigurationService);if(g!==null){const b=wn(e.getLineContent(l.startLineNumber)),f=od(g,r),Z=od(b,r);if(f!==Z){const A=f-Z;this.getIndentEditsOfMovingBlock(e,t,l,r,d,A)}}}}}this._selectionId=t.trackSelection(l)}buildIndentConverter(e,t,i){return{shiftIndent:n=>$c.shiftIndent(n,n.length+1,e,t,i),unshiftIndent:n=>$c.unshiftIndent(n,n.length+1,e,t,i)}}parseEnterResult(e,t,i,n,o){if(o){let l=o.indentation;o.indentAction===fo.None||o.indentAction===fo.Indent?l=o.indentation+o.appendText:o.indentAction===fo.IndentOutdent?l=o.indentation:o.indentAction===fo.Outdent&&(l=t.unshiftIndent(o.indentation)+o.appendText);const r=e.getLineContent(n);if(this.trimStart(r).indexOf(this.trimStart(l))>=0){const a=wn(e.getLineContent(n));let d=wn(l);const c=Ffe(e,n,this._languageConfigurationService);c!==null&&c&2&&(d=t.unshiftIndent(d));const h=od(d,i),u=od(a,i);return h-u}}return null}matchEnterRuleMovingDown(e,t,i,n,o,l){if(Xu(l)>=0){const r=e.getLineMaxColumn(o),a=MW(this._autoIndent,e,new v(o,r,o,r),this._languageConfigurationService);return this.parseEnterResult(e,t,i,n,a)}else{let r=n-1;for(;r>=1;){const c=e.getLineContent(r);if(Xu(c)>=0)break;r--}if(r<1||n>e.getLineCount())return null;const a=e.getLineMaxColumn(r),d=MW(this._autoIndent,e,new v(r,a,r,a),this._languageConfigurationService);return this.parseEnterResult(e,t,i,n,d)}}matchEnterRule(e,t,i,n,o,l){let r=o;for(;r>=1;){let c;if(r===o&&l!==void 0?c=l:c=e.getLineContent(r),Xu(c)>=0)break;r--}if(r<1||n>e.getLineCount())return null;const a=e.getLineMaxColumn(r),d=MW(this._autoIndent,e,new v(r,a,r,a),this._languageConfigurationService);return this.parseEnterResult(e,t,i,n,d)}trimStart(e){return e.replace(/^\s+/,"")}shouldAutoIndent(e,t){if(this._autoIndent<4||!e.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const i=e.getLanguageIdAtPosition(t.startLineNumber,1),n=e.getLanguageIdAtPosition(t.endLineNumber,1);return!(i!==n||this._languageConfigurationService.getLanguageConfiguration(i).indentRulesSupport===null)}getIndentEditsOfMovingBlock(e,t,i,n,o,l){for(let r=i.startLineNumber;r<=i.endLineNumber;r++){const a=e.getLineContent(r),d=wn(a),h=od(d,n)+l,u=xC(h,n,o);u!==d&&(t.addEditOperation(new v(r,1,r,d.length+1),u),r===i.endLineNumber&&i.endColumn<=d.length+1&&u===""&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&i.startLineNumber<i.endLineNumber&&(i=i.setEndPosition(i.endLineNumber,2)),i}};B8=Frt([Zrt(3,Qs)],B8);const rW=class rW{static getCollator(){return rW._COLLATOR||(rW._COLLATOR=new Intl.Collator),rW._COLLATOR}constructor(e,t){this.selection=e,this.descending=t,this.selectionId=null}getEditOperations(e,t){const i=Art(e,this.selection,this.descending);i&&t.addEditOperation(i.range,i.text),this.selectionId=t.trackSelection(this.selection)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}static canRun(e,t,i){if(e===null)return!1;const n=aAe(e,t,i);if(!n)return!1;for(let o=0,l=n.before.length;o<l;o++)if(n.before[o]!==n.after[o])return!0;return!1}};rW._COLLATOR=null;let UT=rW;function aAe(s,e,t){const i=e.startLineNumber;let n=e.endLineNumber;if(e.endColumn===1&&n--,i>=n)return null;const o=[];for(let r=i;r<=n;r++)o.push(s.getLineContent(r));let l=o.slice(0);return l.sort(UT.getCollator().compare),t===!0&&(l=l.reverse()),{startLineNumber:i,endLineNumber:n,before:o,after:l}}function Art(s,e,t){const i=aAe(s,e,t);return i?Rs.replace(new v(i.startLineNumber,1,i.endLineNumber,s.getLineMaxColumn(i.endLineNumber)),i.after.join(`
- `)):null}class dAe extends et{constructor(e,t){super(t),this.down=e}run(e,t){if(!t.hasModel())return;const i=t.getSelections().map((l,r)=>({selection:l,index:r,ignore:!1}));i.sort((l,r)=>v.compareRangesUsingStarts(l.selection,r.selection));let n=i[0];for(let l=1;l<i.length;l++){const r=i[l];n.selection.endLineNumber===r.selection.startLineNumber&&(n.index<r.index?r.ignore=!0:(n.ignore=!0,n=r))}const o=[];for(const l of i)o.push(new rAe(l.selection,this.down,l.ignore));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class Nrt extends dAe{constructor(){super(!1,{id:"editor.action.copyLinesUpAction",label:U("lines.copyUp","Copy Line Up"),alias:"Copy Line Up",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"2_line",title:U({key:"miCopyLinesUp",comment:["&& denotes a mnemonic"]},"&&Copy Line Up"),order:1}})}}class Rrt extends dAe{constructor(){super(!0,{id:"editor.action.copyLinesDownAction",label:U("lines.copyDown","Copy Line Down"),alias:"Copy Line Down",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"2_line",title:U({key:"miCopyLinesDown",comment:["&& denotes a mnemonic"]},"Co&&py Line Down"),order:2}})}}class Srt extends et{constructor(){super({id:"editor.action.duplicateSelection",label:U("duplicateSelection","Duplicate Selection"),alias:"Duplicate Selection",precondition:H.writable,menuOpts:{menuId:at.MenubarSelectionMenu,group:"2_line",title:U({key:"miDuplicateSelection",comment:["&& denotes a mnemonic"]},"&&Duplicate Selection"),order:5}})}run(e,t,i){if(!t.hasModel())return;const n=[],o=t.getSelections(),l=t.getModel();for(const r of o)if(r.isEmpty())n.push(new rAe(r,!0));else{const a=new dt(r.endLineNumber,r.endColumn,r.endLineNumber,r.endColumn);n.push(new c4e(a,l.getValueInRange(r)))}t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class cAe extends et{constructor(e,t){super(t),this.down=e}run(e,t){const i=e.get(Qs),n=[],o=t.getSelections()||[],l=t.getOption(12);for(const r of o)n.push(new B8(r,this.down,l,i));t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class Wrt extends cAe{constructor(){super(!1,{id:"editor.action.moveLinesUpAction",label:U("lines.moveUp","Move Line Up"),alias:"Move Line Up",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"2_line",title:U({key:"miMoveLinesUp",comment:["&& denotes a mnemonic"]},"Mo&&ve Line Up"),order:3}})}}class Vrt extends cAe{constructor(){super(!0,{id:"editor.action.moveLinesDownAction",label:U("lines.moveDown","Move Line Down"),alias:"Move Line Down",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"2_line",title:U({key:"miMoveLinesDown",comment:["&& denotes a mnemonic"]},"Move &&Line Down"),order:4}})}}class hAe extends et{constructor(e,t){super(t),this.descending=e}run(e,t){if(!t.hasModel())return;const i=t.getModel();let n=t.getSelections();n.length===1&&n[0].isEmpty()&&(n=[new dt(1,1,i.getLineCount(),i.getLineMaxColumn(i.getLineCount()))]);for(const l of n)if(!UT.canRun(t.getModel(),l,this.descending))return;const o=[];for(let l=0,r=n.length;l<r;l++)o[l]=new UT(n[l],this.descending);t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class Qrt extends hAe{constructor(){super(!1,{id:"editor.action.sortLinesAscending",label:U("lines.sortAscending","Sort Lines Ascending"),alias:"Sort Lines Ascending",precondition:H.writable})}}class yrt extends hAe{constructor(){super(!0,{id:"editor.action.sortLinesDescending",label:U("lines.sortDescending","Sort Lines Descending"),alias:"Sort Lines Descending",precondition:H.writable})}}class Crt extends et{constructor(){super({id:"editor.action.removeDuplicateLines",label:U("lines.deleteDuplicates","Delete Duplicate Lines"),alias:"Delete Duplicate Lines",precondition:H.writable})}run(e,t){if(!t.hasModel())return;const i=t.getModel();if(i.getLineCount()===1&&i.getLineMaxColumn(1)===1)return;const n=[],o=[];let l=0,r=!0,a=t.getSelections();a.length===1&&a[0].isEmpty()&&(a=[new dt(1,1,i.getLineCount(),i.getLineMaxColumn(i.getLineCount()))],r=!1);for(const d of a){const c=new Set,h=[];for(let g=d.startLineNumber;g<=d.endLineNumber;g++){const b=i.getLineContent(g);c.has(b)||(h.push(b),c.add(b))}const u=new dt(d.startLineNumber,1,d.endLineNumber,i.getLineMaxColumn(d.endLineNumber)),m=d.startLineNumber-l,p=new dt(m,1,m+h.length-1,h[h.length-1].length);n.push(Rs.replace(u,h.join(`
- `))),o.push(p),l+=d.endLineNumber-d.startLineNumber+1-h.length}t.pushUndoStop(),t.executeEdits(this.id,n,r?o:void 0),t.pushUndoStop()}}const U5=class U5 extends et{constructor(){super({id:U5.ID,label:U("lines.trimTrailingWhitespace","Trim Trailing Whitespace"),alias:"Trim Trailing Whitespace",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:Fo(2089,2102),weight:100}})}run(e,t,i){let n=[];i.reason==="auto-save"&&(n=(t.getSelections()||[]).map(c=>new oe(c.positionLineNumber,c.positionColumn)));const o=t.getSelection();if(o===null)return;const l=e.get(li),r=t.getModel(),a=l.getValue("files.trimTrailingWhitespaceInRegexAndStrings",{overrideIdentifier:r==null?void 0:r.getLanguageId(),resource:r==null?void 0:r.uri}),d=new Urt(o,n,a);t.pushUndoStop(),t.executeCommands(this.id,[d]),t.pushUndoStop()}};U5.ID="editor.action.trimTrailingWhitespace";let L8=U5;class wrt extends et{constructor(){super({id:"editor.action.deleteLines",label:U("lines.delete","Delete Line"),alias:"Delete Line",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:3113,weight:100}})}run(e,t){if(!t.hasModel())return;const i=this._getLinesToRemove(t),n=t.getModel();if(n.getLineCount()===1&&n.getLineMaxColumn(1)===1)return;let o=0;const l=[],r=[];for(let a=0,d=i.length;a<d;a++){const c=i[a];let h=c.startLineNumber,u=c.endLineNumber,m=1,p=n.getLineMaxColumn(u);u<n.getLineCount()?(u+=1,p=1):h>1&&(h-=1,m=n.getLineMaxColumn(h)),l.push(Rs.replace(new dt(h,m,u,p),"")),r.push(new dt(h-o,c.positionColumn,h-o,c.positionColumn)),o+=c.endLineNumber-c.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,l,r),t.pushUndoStop()}_getLinesToRemove(e){const t=e.getSelections().map(o=>{let l=o.endLineNumber;return o.startLineNumber<o.endLineNumber&&o.endColumn===1&&(l-=1),{startLineNumber:o.startLineNumber,selectionStartColumn:o.selectionStartColumn,endLineNumber:l,positionColumn:o.positionColumn}});t.sort((o,l)=>o.startLineNumber===l.startLineNumber?o.endLineNumber-l.endLineNumber:o.startLineNumber-l.startLineNumber);const i=[];let n=t[0];for(let o=1;o<t.length;o++)n.endLineNumber+1>=t[o].startLineNumber?n.endLineNumber=t[o].endLineNumber:(i.push(n),n=t[o]);return i.push(n),i}}class Mrt extends et{constructor(){super({id:"editor.action.indentLines",label:U("lines.indent","Indent Line"),alias:"Indent Line",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:2142,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,zb.indent(i.cursorConfig,t.getModel(),t.getSelections())),t.pushUndoStop())}}class Trt extends et{constructor(){super({id:"editor.action.outdentLines",label:U("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:2140,weight:100}})}run(e,t){TW.Outdent.runEditorCommand(e,t,null)}}class Brt extends et{constructor(){super({id:"editor.action.insertLineBefore",label:U("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:3075,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,tz.lineInsertBefore(i.cursorConfig,t.getModel(),t.getSelections())))}}class Lrt extends et{constructor(){super({id:"editor.action.insertLineAfter",label:U("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:2051,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,tz.lineInsertAfter(i.cursorConfig,t.getModel(),t.getSelections())))}}class uAe extends et{run(e,t){if(!t.hasModel())return;const i=t.getSelection(),n=this._getRangesToDelete(t),o=[];for(let a=0,d=n.length-1;a<d;a++){const c=n[a],h=n[a+1];v.intersectRanges(c,h)===null?o.push(c):n[a+1]=v.plusRange(c,h)}o.push(n[n.length-1]);const l=this._getEndCursorState(i,o),r=o.map(a=>Rs.replace(a,""));t.pushUndoStop(),t.executeEdits(this.id,r,l),t.pushUndoStop()}}class krt extends uAe{constructor(){super({id:"deleteAllLeft",label:U("lines.deleteAllLeft","Delete All Left"),alias:"Delete All Left",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(e,t){let i=null;const n=[];let o=0;return t.forEach(l=>{let r;if(l.endColumn===1&&o>0){const a=l.startLineNumber-o;r=new dt(a,l.startColumn,a,l.startColumn)}else r=new dt(l.startLineNumber,l.startColumn,l.startLineNumber,l.startColumn);o+=l.endLineNumber-l.startLineNumber,l.intersectRanges(e)?i=r:n.push(r)}),i&&n.unshift(i),n}_getRangesToDelete(e){const t=e.getSelections();if(t===null)return[];let i=t;const n=e.getModel();return n===null?[]:(i.sort(v.compareRangesUsingStarts),i=i.map(o=>{if(o.isEmpty())if(o.startColumn===1){const l=Math.max(1,o.startLineNumber-1),r=o.startLineNumber===1?1:n.getLineLength(l)+1;return new v(l,r,o.startLineNumber,1)}else return new v(o.startLineNumber,1,o.startLineNumber,o.startColumn);else return new v(o.startLineNumber,1,o.endLineNumber,o.endColumn)}),i)}}class Irt extends uAe{constructor(){super({id:"deleteAllRight",label:U("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(e,t){let i=null;const n=[];for(let o=0,l=t.length,r=0;o<l;o++){const a=t[o],d=new dt(a.startLineNumber-r,a.startColumn,a.startLineNumber-r,a.startColumn);a.intersectRanges(e)?i=d:n.push(d)}return i&&n.unshift(i),n}_getRangesToDelete(e){const t=e.getModel();if(t===null)return[];const i=e.getSelections();if(i===null)return[];const n=i.map(o=>{if(o.isEmpty()){const l=t.getLineMaxColumn(o.startLineNumber);return o.startColumn===l?new v(o.startLineNumber,o.startColumn,o.startLineNumber+1,1):new v(o.startLineNumber,o.startColumn,o.startLineNumber,l)}return o});return n.sort(v.compareRangesUsingStarts),n}}class Drt extends et{constructor(){super({id:"editor.action.joinLines",label:U("lines.joinLines","Join Lines"),alias:"Join Lines",precondition:H.writable,kbOpts:{kbExpr:H.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(e,t){const i=t.getSelections();if(i===null)return;let n=t.getSelection();if(n===null)return;i.sort(v.compareRangesUsingStarts);const o=[],l=i.reduce((u,m)=>u.isEmpty()?u.endLineNumber===m.startLineNumber?(n.equalsSelection(u)&&(n=m),m):m.startLineNumber>u.endLineNumber+1?(o.push(u),m):new dt(u.startLineNumber,u.startColumn,m.endLineNumber,m.endColumn):m.startLineNumber>u.endLineNumber?(o.push(u),m):new dt(u.startLineNumber,u.startColumn,m.endLineNumber,m.endColumn));o.push(l);const r=t.getModel();if(r===null)return;const a=[],d=[];let c=n,h=0;for(let u=0,m=o.length;u<m;u++){const p=o[u],g=p.startLineNumber,b=1;let f=0,Z,A;const N=r.getLineLength(p.endLineNumber)-p.endColumn;if(p.isEmpty()||p.startLineNumber===p.endLineNumber){const R=p.getStartPosition();R.lineNumber<r.getLineCount()?(Z=g+1,A=r.getLineMaxColumn(Z)):(Z=R.lineNumber,A=r.getLineMaxColumn(R.lineNumber))}else Z=p.endLineNumber,A=r.getLineMaxColumn(Z);let W=r.getLineContent(g);for(let R=g+1;R<=Z;R++){const M=r.getLineContent(R),w=r.getLineFirstNonWhitespaceColumn(R);if(w>=1){let Y=!0;W===""&&(Y=!1),Y&&(W.charAt(W.length-1)===" "||W.charAt(W.length-1)===" ")&&(Y=!1,W=W.replace(/[\s\uFEFF\xA0]+$/g," "));const G=M.substr(w-1);W+=(Y?" ":"")+G,Y?f=G.length+1:f=G.length}else f=0}const Q=new v(g,b,Z,A);if(!Q.isEmpty()){let R;p.isEmpty()?(a.push(Rs.replace(Q,W)),R=new dt(Q.startLineNumber-h,W.length-f+1,g-h,W.length-f+1)):p.startLineNumber===p.endLineNumber?(a.push(Rs.replace(Q,W)),R=new dt(p.startLineNumber-h,p.startColumn,p.endLineNumber-h,p.endColumn)):(a.push(Rs.replace(Q,W)),R=new dt(p.startLineNumber-h,p.startColumn,p.startLineNumber-h,W.length-N)),v.intersectRanges(Q,n)!==null?c=R:d.push(R)}h+=Q.endLineNumber-Q.startLineNumber}d.unshift(c),t.pushUndoStop(),t.executeEdits(this.id,a,d),t.pushUndoStop()}}class Grt extends et{constructor(){super({id:"editor.action.transpose",label:U("editor.transpose","Transpose Characters around the Cursor"),alias:"Transpose Characters around the Cursor",precondition:H.writable})}run(e,t){const i=t.getSelections();if(i===null)return;const n=t.getModel();if(n===null)return;const o=[];for(let l=0,r=i.length;l<r;l++){const a=i[l];if(!a.isEmpty())continue;const d=a.getStartPosition(),c=n.getLineMaxColumn(d.lineNumber);if(d.column>=c){if(d.lineNumber===n.getLineCount())continue;const h=new v(d.lineNumber,Math.max(1,d.column-1),d.lineNumber+1,1),u=n.getValueInRange(h).split("").reverse().join("");o.push(new Bl(new dt(d.lineNumber,Math.max(1,d.column-1),d.lineNumber+1,1),u))}else{const h=new v(d.lineNumber,Math.max(1,d.column-1),d.lineNumber,d.column+1),u=n.getValueInRange(h).split("").reverse().join("");o.push(new Ate(h,u,new dt(d.lineNumber,d.column+1,d.lineNumber,d.column+1)))}}t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class hN extends et{run(e,t){const i=t.getSelections();if(i===null)return;const n=t.getModel();if(n===null)return;const o=t.getOption(132),l=[];for(const r of i)if(r.isEmpty()){const a=r.getStartPosition(),d=t.getConfiguredWordAtPosition(a);if(!d)continue;const c=new v(a.lineNumber,d.startColumn,a.lineNumber,d.endColumn),h=n.getValueInRange(c);l.push(Rs.replace(c,this._modifyText(h,o)))}else{const a=n.getValueInRange(r);l.push(Rs.replace(r,this._modifyText(a,o)))}t.pushUndoStop(),t.executeEdits(this.id,l),t.pushUndoStop()}}class Ert extends hN{constructor(){super({id:"editor.action.transformToUppercase",label:U("editor.transformToUppercase","Transform to Uppercase"),alias:"Transform to Uppercase",precondition:H.writable})}_modifyText(e,t){return e.toLocaleUpperCase()}}class vrt extends hN{constructor(){super({id:"editor.action.transformToLowercase",label:U("editor.transformToLowercase","Transform to Lowercase"),alias:"Transform to Lowercase",precondition:H.writable})}_modifyText(e,t){return e.toLocaleLowerCase()}}class p0{constructor(e,t){this._pattern=e,this._flags=t,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch{}}return this._actual}isSupported(){return this.get()!==null}}const f5=class f5 extends hN{constructor(){super({id:"editor.action.transformToTitlecase",label:U("editor.transformToTitlecase","Transform to Title Case"),alias:"Transform to Title Case",precondition:H.writable})}_modifyText(e,t){const i=f5.titleBoundary.get();return i?e.toLocaleLowerCase().replace(i,n=>n.toLocaleUpperCase()):e}};f5.titleBoundary=new p0("(^|[^\\p{L}\\p{N}']|((^|\\P{L})'))\\p{L}","gmu");let aJ=f5;const aW=class aW extends hN{constructor(){super({id:"editor.action.transformToSnakecase",label:U("editor.transformToSnakecase","Transform to Snake Case"),alias:"Transform to Snake Case",precondition:H.writable})}_modifyText(e,t){const i=aW.caseBoundary.get(),n=aW.singleLetters.get();return!i||!n?e:e.replace(i,"$1_$2").replace(n,"$1_$2$3").toLocaleLowerCase()}};aW.caseBoundary=new p0("(\\p{Ll})(\\p{Lu})","gmu"),aW.singleLetters=new p0("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu");let JC=aW;const F5=class F5 extends hN{constructor(){super({id:"editor.action.transformToCamelcase",label:U("editor.transformToCamelcase","Transform to Camel Case"),alias:"Transform to Camel Case",precondition:H.writable})}_modifyText(e,t){const i=F5.wordBoundary.get();if(!i)return e;const n=e.split(i);return n.shift()+n.map(l=>l.substring(0,1).toLocaleUpperCase()+l.substring(1)).join("")}};F5.wordBoundary=new p0("[_\\s-]","gm");let dJ=F5;const dW=class dW extends hN{constructor(){super({id:"editor.action.transformToPascalcase",label:U("editor.transformToPascalcase","Transform to Pascal Case"),alias:"Transform to Pascal Case",precondition:H.writable})}_modifyText(e,t){const i=dW.wordBoundary.get(),n=dW.wordBoundaryToMaintain.get();return!i||!n?e:e.split(n).map(r=>r.split(i)).flat().map(r=>r.substring(0,1).toLocaleUpperCase()+r.substring(1)).join("")}};dW.wordBoundary=new p0("[_\\s-]","gm"),dW.wordBoundaryToMaintain=new p0("(?<=\\.)","gm");let cJ=dW;const Eb=class Eb extends hN{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every(t=>t.isSupported())}constructor(){super({id:"editor.action.transformToKebabcase",label:U("editor.transformToKebabcase","Transform to Kebab Case"),alias:"Transform to Kebab Case",precondition:H.writable})}_modifyText(e,t){const i=Eb.caseBoundary.get(),n=Eb.singleLetters.get(),o=Eb.underscoreBoundary.get();return!i||!n||!o?e:e.replace(o,"$1-$3").replace(i,"$1-$2").replace(n,"$1-$2").toLocaleLowerCase()}};Eb.caseBoundary=new p0("(\\p{Ll})(\\p{Lu})","gmu"),Eb.singleLetters=new p0("(\\p{Lu}|\\p{N})(\\p{Lu}\\p{Ll})","gmu"),Eb.underscoreBoundary=new p0("(\\S)(_)(\\S)","gm");let hJ=Eb;Me(Nrt);Me(Rrt);Me(Srt);Me(Wrt);Me(Vrt);Me(Qrt);Me(yrt);Me(Crt);Me(L8);Me(wrt);Me(Mrt);Me(Trt);Me(Brt);Me(Lrt);Me(krt);Me(Irt);Me(Drt);Me(Grt);Me(Ert);Me(vrt);JC.caseBoundary.isSupported()&&JC.singleLetters.isSupported()&&Me(JC);dJ.wordBoundary.isSupported()&&Me(dJ);cJ.wordBoundary.isSupported()&&Me(cJ);aJ.titleBoundary.isSupported()&&Me(aJ);hJ.isSupported()&&Me(hJ);var xrt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ik=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},CD;const mAe=new Ke("LinkedEditingInputVisible",!1),Jrt="linked-editing-decoration";var pA;let LV=(pA=class extends de{static get(e){return e.getContribution(CD.ID)}constructor(e,t,i,n,o){super(),this.languageConfigurationService=n,this._syncRangesToken=0,this._localToDispose=this._register(new Ze),this._editor=e,this._providers=i.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=mAe.bindTo(t),this._debounceInformation=o.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new Ze),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequestCts=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(l=>{(l.hasChanged(70)||l.hasChanged(94))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(e){const t=this._editor.getModel(),i=t!==null&&(this._editor.getOption(70)||this._editor.getOption(94))&&this._providers.has(t);if(i===this._enabled&&!e||(this._enabled=i,this.clearRanges(),this._localToDispose.clear(),!i||t===null))return;this._localToDispose.add(ve.runAndSubscribe(t.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(t.getLanguageId()).getWordDefinition()}));const n=new Hc(this._debounceInformation.get(t)),o=()=>{this._rangeUpdateTriggerPromise=n.trigger(()=>this.updateRanges(),this._debounceDuration??this._debounceInformation.get(t))},l=new Hc(0),r=a=>{this._rangeSyncTriggerPromise=l.trigger(()=>this._syncRanges(a))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{o()})),this._localToDispose.add(this._editor.onDidChangeModelContent(a=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const d=this._currentDecorations.getRange(0);if(d&&a.changes.every(c=>d.intersectRanges(c.range))){r(this._syncRangesToken);return}}o()})),this._localToDispose.add({dispose:()=>{n.dispose(),l.dispose()}}),this.updateRanges()}_syncRanges(e){if(!this._editor.hasModel()||e!==this._syncRangesToken||this._currentDecorations.length===0)return;const t=this._editor.getModel(),i=this._currentDecorations.getRange(0);if(!i||i.startLineNumber!==i.endLineNumber)return this.clearRanges();const n=t.getValueInRange(i);if(this._currentWordPattern){const l=n.match(this._currentWordPattern);if((l?l[0].length:0)!==n.length)return this.clearRanges()}const o=[];for(let l=1,r=this._currentDecorations.length;l<r;l++){const a=this._currentDecorations.getRange(l);if(a)if(a.startLineNumber!==a.endLineNumber)o.push({range:a,text:n});else{let d=t.getValueInRange(a),c=n,h=a.startColumn,u=a.endColumn;const m=OU(d,c);h+=m,d=d.substr(m),c=c.substr(m);const p=DE(d,c);u-=p,d=d.substr(0,d.length-p),c=c.substr(0,c.length-p),(h!==u||c.length!==0)&&o.push({range:new v(a.startLineNumber,h,a.endLineNumber,u),text:c})}}if(o.length!==0)try{this._editor.popUndoStop(),this._ignoreChangeEvent=!0;const l=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits("linkedEditing",o),this._editor._getViewModel().setPrevEditOperationType(l)}finally{this._ignoreChangeEvent=!1}}dispose(){this.clearRanges(),super.dispose()}clearRanges(){this._visibleContextKey.set(!1),this._currentDecorations.clear(),this._currentRequestCts&&(this._currentRequestCts.cancel(),this._currentRequestCts=null,this._currentRequestPosition=null)}async updateRanges(e=!1){if(!this._editor.hasModel()){this.clearRanges();return}const t=this._editor.getPosition();if(!this._enabled&&!e||this._editor.getSelections().length>1){this.clearRanges();return}const i=this._editor.getModel(),n=i.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===n){if(t.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const l=this._currentDecorations.getRange(0);if(l&&l.containsPosition(t))return}}this.clearRanges(),this._currentRequestPosition=t,this._currentRequestModelVersion=n;const o=this._currentRequestCts=new Ws;try{const l=new ol(!1),r=await pAe(this._providers,i,t,o.token);if(this._debounceInformation.update(i,l.elapsed()),o!==this._currentRequestCts||(this._currentRequestCts=null,n!==i.getVersionId()))return;let a=[];r!=null&&r.ranges&&(a=r.ranges),this._currentWordPattern=(r==null?void 0:r.wordPattern)||this._languageWordPattern;let d=!1;for(let h=0,u=a.length;h<u;h++)if(v.containsPosition(a[h],t)){if(d=!0,h!==0){const m=a[h];a.splice(h,1),a.unshift(m)}break}if(!d){this.clearRanges();return}const c=a.map(h=>({range:h,options:CD.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(c),this._syncRangesToken++}catch(l){th(l)||vt(l),(this._currentRequestCts===o||!this._currentRequestCts)&&this.clearRanges()}}},CD=pA,pA.ID="editor.contrib.linkedEditing",pA.DECORATION=Ot.register({description:"linked-editing",stickiness:0,className:Jrt}),pA);LV=CD=xrt([Ik(1,wt),Ik(2,lt),Ik(3,Qs),Ik(4,gc)],LV);class Xrt extends et{constructor(){super({id:"editor.action.linkedEditing",label:U("linkedEditing.label","Start Linked Editing"),alias:"Start Linked Editing",precondition:Ne.and(H.writable,H.hasRenameProvider),kbOpts:{kbExpr:H.editorTextFocus,primary:3132,weight:100}})}runCommand(e,t){const i=e.get(zi),[n,o]=Array.isArray(t)&&t||[void 0,void 0];return At.isUri(n)&&oe.isIPosition(o)?i.openCodeEditor({resource:n},i.getActiveCodeEditor()).then(l=>{l&&(l.setPosition(o),l.invokeWithinContext(r=>(this.reportTelemetry(r,l),this.run(r,l))))},vt):super.runCommand(e,t)}run(e,t){const i=LV.get(t);return i?Promise.resolve(i.updateRanges(!0)):Promise.resolve()}}const Yrt=Io.bindToContribution(LV.get);Oe(new Yrt({id:"cancelLinkedEditingInput",precondition:mAe,handler:s=>s.clearRanges(),kbOpts:{kbExpr:H.editorTextFocus,weight:100+99,primary:9,secondary:[1033]}}));function pAe(s,e,t,i){const n=s.ordered(e);return B$(n.map(o=>async()=>{try{return await o.provideLinkedEditingRanges(e,t,i)}catch(l){Os(l);return}}),o=>!!o&&Sr(o==null?void 0:o.ranges))}K("editor.linkedEditingBackground",{dark:Re.fromHex("#f00").transparent(.3),light:Re.fromHex("#f00").transparent(.3),hcDark:Re.fromHex("#f00").transparent(.3),hcLight:Re.white},U("editorLinkedEditingBackground","Background color when the editor auto renames on type."));Ya("_executeLinkedEditingProvider",(s,e,t)=>{const{linkedEditingRangeProvider:i}=s.get(lt);return pAe(i,e,t,$t.None)});Gi(LV.ID,LV,1);Me(Xrt);let zrt=class{constructor(e,t){this._link=e,this._provider=t}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}async resolve(e){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,e)).then(t=>(this._link=t||this._link,this._link.url?this.resolve(e):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))}};class uJ{constructor(e){this._disposables=new Ze;let t=[];for(const[i,n]of e){const o=i.links.map(l=>new zrt(l,n));t=uJ._union(t,o),H5(i)&&this._disposables.add(i)}this.links=t}dispose(){this._disposables.dispose(),this.links.length=0}static _union(e,t){const i=[];let n,o,l,r;for(n=0,l=0,o=e.length,r=t.length;n<o&&l<r;){const a=e[n],d=t[l];if(v.areIntersectingOrTouching(a.range,d.range)){n++;continue}v.compareRangesUsingStarts(a.range,d.range)<0?(i.push(a),n++):(i.push(d),l++)}for(;n<o;n++)i.push(e[n]);for(;l<r;l++)i.push(t[l]);return i}}function gAe(s,e,t){const i=[],n=s.ordered(e).reverse().map((o,l)=>Promise.resolve(o.provideLinks(e,t)).then(r=>{r&&(i[l]=[r,o])},Os));return Promise.all(n).then(()=>{const o=new uJ(Oh(i));return t.isCancellationRequested?(o.dispose(),new uJ([])):o})}Bi.registerCommand("_executeLinkProvider",async(s,...e)=>{let[t,i]=e;Yi(t instanceof At),typeof i!="number"&&(i=0);const{linkProvider:n}=s.get(lt),o=s.get(es).getModel(t);if(!o)return[];const l=await gAe(n,o,$t.None);if(!l)return[];for(let a=0;a<Math.min(i,l.links.length);a++)await l.links[a].resolve($t.None);const r=l.links.slice(0);return l.dispose(),r});var _rt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Dk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},k8,AQ;let fT=(AQ=class extends de{static get(e){return e.getContribution(k8.ID)}constructor(e,t,i,n,o){super(),this.editor=e,this.openerService=t,this.notificationService=i,this.languageFeaturesService=n,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=o.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new Rn(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const l=this._register(new bz(e));this._register(l.onMouseMoveOrRelevantKeyDown(([r,a])=>{this._onEditorMouseMove(r,a)})),this._register(l.onExecute(r=>{this.onEditorMouseUp(r)})),this._register(l.onCancel(r=>{this.cleanUpActiveLinkDecoration()})),this._register(e.onDidChangeConfiguration(r=>{r.hasChanged(71)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(e.onDidChangeModelContent(r=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(e.onDidChangeModel(r=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(e.onDidChangeModelLanguage(r=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(r=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}async computeLinksNow(){if(!this.editor.hasModel()||!this.editor.getOption(71))return;const e=this.editor.getModel();if(!e.isTooLargeForSyncing()&&this.providers.has(e)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=Xo(t=>gAe(this.providers,e,t));try{const t=new ol(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(e,t.elapsed()),e.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(t){vt(t)}finally{this.computePromise=null}}}updateDecorations(e){const t=this.editor.getOption(78)==="altKey",i=[],n=Object.keys(this.currentOccurrences);for(const l of n){const r=this.currentOccurrences[l];i.push(r.decorationId)}const o=[];if(e)for(const l of e)o.push(IW.decoration(l,t));this.editor.changeDecorations(l=>{const r=l.deltaDecorations(i,o);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let a=0,d=r.length;a<d;a++){const c=new IW(e[a],r[a]);this.currentOccurrences[c.decorationId]=c}})}_onEditorMouseMove(e,t){const i=this.editor.getOption(78)==="altKey";if(this.isEnabled(e,t)){this.cleanUpActiveLinkDecoration();const n=this.getLinkOccurrence(e.target.position);n&&this.editor.changeDecorations(o=>{n.activate(o,i),this.activeLinkDecorationId=n.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const e=this.editor.getOption(78)==="altKey";if(this.activeLinkDecorationId){const t=this.currentOccurrences[this.activeLinkDecorationId];t&&this.editor.changeDecorations(i=>{t.deactivate(i,e)}),this.activeLinkDecorationId=null}}onEditorMouseUp(e){if(!this.isEnabled(e))return;const t=this.getLinkOccurrence(e.target.position);t&&this.openLinkOccurrence(t,e.hasSideBySideModifier,!0)}openLinkOccurrence(e,t,i=!1){if(!this.openerService)return;const{link:n}=e;n.resolve($t.None).then(o=>{if(typeof o=="string"&&this.editor.hasModel()){const l=this.editor.getModel().uri;if(l.scheme===Xt.file&&o.startsWith(`${Xt.file}:`)){const r=At.parse(o);if(r.scheme===Xt.file){const a=Mm(r);let d=null;a.startsWith("/./")||a.startsWith("\\.\\")?d=`.${a.substr(1)}`:(a.startsWith("//./")||a.startsWith("\\\\.\\"))&&(d=`.${a.substr(2)}`),d&&(o=HYe(l,d))}}}return this.openerService.open(o,{openToSide:t,fromUserGesture:i,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},o=>{const l=o instanceof Error?o.message:o;l==="invalid"?this.notificationService.warn(U("invalid.url","Failed to open this link because it is not well-formed: {0}",n.url.toString())):l==="missing"?this.notificationService.warn(U("missing.url","Failed to open this link because its target is missing.")):vt(o)})}getLinkOccurrence(e){if(!this.editor.hasModel()||!e)return null;const t=this.editor.getModel().getDecorationsInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column},0,!0);for(const i of t){const n=this.currentOccurrences[i.id];if(n)return n}return null}isEnabled(e,t){return!!(e.target.type===6&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey))}stop(){var e;this.computeLinks.cancel(),this.activeLinksList&&((e=this.activeLinksList)==null||e.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}},k8=AQ,AQ.ID="editor.linkDetector",AQ);fT=k8=_rt([Dk(1,za),Dk(2,no),Dk(3,lt),Dk(4,gc)],fT);const Gce={general:Ot.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:Ot.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class IW{static decoration(e,t){return{range:e.range,options:IW._getOptions(e,t,!1)}}static _getOptions(e,t,i){const n={...i?Gce.active:Gce.general};return n.hoverMessage=Ort(e,t),n}constructor(e,t){this.link=e,this.decorationId=t}activate(e,t){e.changeDecorationOptions(this.decorationId,IW._getOptions(this.link,t,!0))}deactivate(e,t){e.changeDecorationOptions(this.decorationId,IW._getOptions(this.link,t,!1))}}function Ort(s,e){const t=s.url&&/^command:/i.test(s.url.toString()),i=s.tooltip?s.tooltip:t?U("links.navigate.executeCmd","Execute command"):U("links.navigate.follow","Follow link"),n=e?Fi?U("links.navigate.kb.meta.mac","cmd + click"):U("links.navigate.kb.meta","ctrl + click"):Fi?U("links.navigate.kb.alt.mac","option + click"):U("links.navigate.kb.alt","alt + click");if(s.url){let o="";if(/^command:/i.test(s.url.toString())){const r=s.url.toString().match(/^command:([^?#]+)/);if(r){const a=r[1];o=U("tooltip.explanation","Execute command {0}",a)}}return new tr("",!0).appendLink(s.url.toString(!0).replace(/ /g,"%20"),i,o).appendMarkdown(` (${n})`)}else return new tr().appendText(`${i} (${n})`)}class jrt extends et{constructor(){super({id:"editor.action.openLink",label:U("label","Open Link"),alias:"Open Link",precondition:void 0})}run(e,t){const i=fT.get(t);if(!i||!t.hasModel())return;const n=t.getSelections();for(const o of n){const l=i.getLinkOccurrence(o.getEndPosition());l&&i.openLinkOccurrence(l,!1)}}}Gi(fT.ID,fT,1);Me(jrt);const pne=class pne extends de{constructor(e){super(),this._editor=e,this._register(this._editor.onMouseDown(t=>{const i=this._editor.getOption(118);i>=0&&t.target.type===6&&t.target.position.column>=i&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}};pne.ID="editor.contrib.longLinesHelper";let mJ=pne;Gi(mJ.ID,mJ,2);const Hrt=K("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},U("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},U("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0);K("editor.wordHighlightTextBackground",Hrt,U("wordHighlightText","Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0);const Prt=K("editor.wordHighlightBorder",{light:null,dark:null,hcDark:hs,hcLight:hs},U("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable."));K("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:hs,hcLight:hs},U("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable."));K("editor.wordHighlightTextBorder",Prt,U("wordHighlightTextBorder","Border color of a textual occurrence for a symbol."));const Krt=K("editorOverviewRuler.wordHighlightForeground","#A0A0A0CC",U("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),qrt=K("editorOverviewRuler.wordHighlightStrongForeground","#C0A0C0CC",U("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),$rt=K("editorOverviewRuler.wordHighlightTextForeground",I0e,U("overviewRulerWordHighlightTextForeground","Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0),eat=Ot.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:Gs(qrt),position:lc.Center},minimap:{color:Gs(RY),position:1}}),tat=Ot.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:Gs($rt),position:lc.Center},minimap:{color:Gs(RY),position:1}}),iat=Ot.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:Gs(I0e),position:lc.Center},minimap:{color:Gs(RY),position:1}}),nat=Ot.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),sat=Ot.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:Gs(Krt),position:lc.Center},minimap:{color:Gs(RY),position:1}});function oat(s){return s===qW.Write?eat:s===qW.Text?tat:sat}function lat(s){return s?nat:iat}ih((s,e)=>{const t=s.getColor(lee);t&&e.addRule(`.monaco-editor .selectionHighlight { background-color: ${t.transparent(.5)}; }`)});var rat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},aat=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},I8;function Af(s,e){const t=e.filter(i=>!s.find(n=>n.equals(i)));if(t.length>=1){const i=t.map(o=>`line ${o.viewState.position.lineNumber} column ${o.viewState.position.column}`).join(", "),n=t.length===1?U("cursorAdded","Cursor added: {0}",i):U("cursorsAdded","Cursors added: {0}",i);Vp(n)}}class dat extends et{constructor(){super({id:"editor.action.insertCursorAbove",label:U("mutlicursor.insertAbove","Add Cursor Above"),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"3_multi",title:U({key:"miInsertCursorAbove",comment:["&& denotes a mnemonic"]},"&&Add Cursor Above"),order:2}})}run(e,t,i){if(!t.hasModel())return;let n=!0;i&&i.logicalLine===!1&&(n=!1);const o=t._getViewModel();if(o.cursorConfig.readOnly)return;o.model.pushStackElement();const l=o.getCursorStates();o.setCursorStates(i.source,3,ul.addCursorUp(o,l,n)),o.revealTopMostCursor(i.source),Af(l,o.getCursorStates())}}class cat extends et{constructor(){super({id:"editor.action.insertCursorBelow",label:U("mutlicursor.insertBelow","Add Cursor Below"),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"3_multi",title:U({key:"miInsertCursorBelow",comment:["&& denotes a mnemonic"]},"A&&dd Cursor Below"),order:3}})}run(e,t,i){if(!t.hasModel())return;let n=!0;i&&i.logicalLine===!1&&(n=!1);const o=t._getViewModel();if(o.cursorConfig.readOnly)return;o.model.pushStackElement();const l=o.getCursorStates();o.setCursorStates(i.source,3,ul.addCursorDown(o,l,n)),o.revealBottomMostCursor(i.source),Af(l,o.getCursorStates())}}class hat extends et{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:U("mutlicursor.insertAtEndOfEachLineSelected","Add Cursors to Line Ends"),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"3_multi",title:U({key:"miInsertCursorAtEndOfEachLineSelected",comment:["&& denotes a mnemonic"]},"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(e,t,i){if(!e.isEmpty()){for(let n=e.startLineNumber;n<e.endLineNumber;n++){const o=t.getLineMaxColumn(n);i.push(new dt(n,o,n,o))}e.endColumn>1&&i.push(new dt(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}}run(e,t){if(!t.hasModel())return;const i=t.getModel(),n=t.getSelections(),o=t._getViewModel(),l=o.getCursorStates(),r=[];n.forEach(a=>this.getCursorsForSelection(a,i,r)),r.length>0&&t.setSelections(r),Af(l,o.getCursorStates())}}class uat extends et{constructor(){super({id:"editor.action.addCursorsToBottom",label:U("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),n=t.getModel().getLineCount(),o=[];for(let a=i[0].startLineNumber;a<=n;a++)o.push(new dt(a,i[0].startColumn,a,i[0].endColumn));const l=t._getViewModel(),r=l.getCursorStates();o.length>0&&t.setSelections(o),Af(r,l.getCursorStates())}}class mat extends et{constructor(){super({id:"editor.action.addCursorsToTop",label:U("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),n=[];for(let r=i[0].startLineNumber;r>=1;r--)n.push(new dt(r,i[0].startColumn,r,i[0].endColumn));const o=t._getViewModel(),l=o.getCursorStates();n.length>0&&t.setSelections(n),Af(l,o.getCursorStates())}}class Gk{constructor(e,t,i){this.selections=e,this.revealRange=t,this.revealScrollType=i}}class FT{static create(e,t){if(!e.hasModel())return null;const i=t.getState();if(!e.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new FT(e,t,!1,i.searchString,i.wholeWord,i.matchCase,null);let n=!1,o,l;const r=e.getSelections();r.length===1&&r[0].isEmpty()?(n=!0,o=!0,l=!0):(o=i.wholeWord,l=i.matchCase);const a=e.getSelection();let d,c=null;if(a.isEmpty()){const h=e.getConfiguredWordAtPosition(a.getStartPosition());if(!h)return null;d=h.word,c=new dt(a.startLineNumber,h.startColumn,a.startLineNumber,h.endColumn)}else d=e.getModel().getValueInRange(a).replace(/\r\n/g,`
- `);return new FT(e,t,n,d,o,l,c)}constructor(e,t,i,n,o,l,r){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=i,this.searchText=n,this.wholeWord=o,this.matchCase=l,this.currentMatch=r}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new Gk(t.concat(e),e,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new Gk(t.slice(0,t.length-1).concat(e),e,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const n=this.currentMatch;return this.currentMatch=null,n}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findNextMatch(this.searchText,t.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1);return i?new dt(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new Gk(t.concat(e),e,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new Gk(t.slice(0,t.length-1).concat(e),e,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const n=this.currentMatch;return this.currentMatch=null,n}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,t.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1);return i?new dt(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}selectAll(e){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const t=this._editor.getModel();return e?t.findMatches(this.searchText,e,!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1,1073741824):t.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(132):null,!1,1073741824)}}const Z5=class Z5 extends de{static get(e){return e.getContribution(Z5.ID)}constructor(e){super(),this._sessionDispose=this._register(new Ze),this._editor=e,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(e){if(!this._session){const t=FT.create(this._editor,e);if(!t)return;this._session=t;const i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(n=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(e.getState().onFindReplaceStateChange(n=>{(n.matchCase||n.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null}_setSelections(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1}_expandEmptyToWord(e,t){if(!t.isEmpty())return t;const i=this._editor.getConfiguredWordAtPosition(t.getStartPosition());return i?new dt(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):t}_applySessionResult(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))}getSession(e){return this._session}addSelectionToNextFindMatch(e){if(this._editor.hasModel()){if(!this._session){const t=this._editor.getSelections();if(t.length>1){const n=e.getState().matchCase;if(!bAe(this._editor.getModel(),t,n)){const l=this._editor.getModel(),r=[];for(let a=0,d=t.length;a<d;a++)r[a]=this._expandEmptyToWord(l,t[a]);this._editor.setSelections(r);return}}}this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}addSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}moveSelectionToNextFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}moveSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}selectAll(e){if(!this._editor.hasModel())return;let t=null;const i=e.getState();if(i.isRevealed&&i.searchString.length>0&&i.isRegex){const n=this._editor.getModel();i.searchScope?t=n.findMatches(i.searchString,i.searchScope,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(132):null,!1,1073741824):t=n.findMatches(i.searchString,!0,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(132):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll(i.searchScope)}if(t.length>0){const n=this._editor.getSelection();for(let o=0,l=t.length;o<l;o++){const r=t[o];if(r.range.intersectRanges(n)){t[o]=t[0],t[0]=r;break}}this._setSelections(t.map(o=>new dt(o.range.startLineNumber,o.range.startColumn,o.range.endLineNumber,o.range.endColumn)))}}};Z5.ID="editor.contrib.multiCursorController";let kV=Z5;class d1 extends et{run(e,t){const i=kV.get(t);if(!i)return;const n=t._getViewModel();if(n){const o=n.getCursorStates(),l=Ja.get(t);if(l)this._run(i,l);else{const r=e.get(bt).createInstance(Ja,t);this._run(i,r),r.dispose()}Af(o,n.getCursorStates())}}}class pat extends d1{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:U("addSelectionToNextFindMatch","Add Selection To Next Find Match"),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:2082,weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"3_multi",title:U({key:"miAddSelectionToNextFindMatch",comment:["&& denotes a mnemonic"]},"Add &&Next Occurrence"),order:5}})}_run(e,t){e.addSelectionToNextFindMatch(t)}}class gat extends d1{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:U("addSelectionToPreviousFindMatch","Add Selection To Previous Find Match"),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:at.MenubarSelectionMenu,group:"3_multi",title:U({key:"miAddSelectionToPreviousFindMatch",comment:["&& denotes a mnemonic"]},"Add P&&revious Occurrence"),order:6}})}_run(e,t){e.addSelectionToPreviousFindMatch(t)}}class bat extends d1{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:U("moveSelectionToNextFindMatch","Move Last Selection To Next Find Match"),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:Fo(2089,2082),weight:100}})}_run(e,t){e.moveSelectionToNextFindMatch(t)}}class Uat extends d1{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:U("moveSelectionToPreviousFindMatch","Move Last Selection To Previous Find Match"),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(e,t){e.moveSelectionToPreviousFindMatch(t)}}class fat extends d1{constructor(){super({id:"editor.action.selectHighlights",label:U("selectAllOccurrencesOfFindMatch","Select All Occurrences of Find Match"),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:3114,weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"3_multi",title:U({key:"miSelectHighlights",comment:["&& denotes a mnemonic"]},"Select All &&Occurrences"),order:7}})}_run(e,t){e.selectAll(t)}}class Fat extends d1{constructor(){super({id:"editor.action.changeAll",label:U("changeAll.label","Change All Occurrences"),alias:"Change All Occurrences",precondition:Ne.and(H.writable,H.editorTextFocus),kbOpts:{kbExpr:H.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(e,t){e.selectAll(t)}}class Zat{constructor(e,t,i,n,o){this._model=e,this._searchText=t,this._matchCase=i,this._wordSeparators=n,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,o&&this._model===o._model&&this._searchText===o._searchText&&this._matchCase===o._matchCase&&this._wordSeparators===o._wordSeparators&&this._modelVersionId===o._modelVersionId&&(this._cachedFindMatches=o._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(e=>e.range),this._cachedFindMatches.sort(v.compareRangesUsingStarts)),this._cachedFindMatches}}var NQ;let pJ=(NQ=class extends de{constructor(e,t){super(),this._languageFeaturesService=t,this.editor=e,this._isEnabled=e.getOption(109),this._decorations=e.createDecorationsCollection(),this.updateSoon=this._register(new Rn(()=>this._update(),300)),this.state=null,this._register(e.onDidChangeConfiguration(n=>{this._isEnabled=e.getOption(109)})),this._register(e.onDidChangeCursorSelection(n=>{this._isEnabled&&(n.selection.isEmpty()?n.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(e.onDidChangeModel(n=>{this._setState(null)})),this._register(e.onDidChangeModelContent(n=>{this._isEnabled&&this.updateSoon.schedule()}));const i=Ja.get(e);i&&this._register(i.getState().onFindReplaceStateChange(n=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(I8._createState(this.state,this._isEnabled,this.editor))}static _createState(e,t,i){if(!t||!i.hasModel())return null;const n=i.getSelection();if(n.startLineNumber!==n.endLineNumber)return null;const o=kV.get(i);if(!o)return null;const l=Ja.get(i);if(!l)return null;let r=o.getSession(l);if(!r){const c=i.getSelections();if(c.length>1){const u=l.getState().matchCase;if(!bAe(i.getModel(),c,u))return null}r=FT.create(i,l)}if(!r||r.currentMatch||/^[ \t]+$/.test(r.searchText)||r.searchText.length>200)return null;const a=l.getState(),d=a.matchCase;if(a.isRevealed){let c=a.searchString;d||(c=c.toLowerCase());let h=r.searchText;if(d||(h=h.toLowerCase()),c===h&&r.matchCase===a.matchCase&&r.wholeWord===a.wholeWord&&!a.isRegex)return null}return new Zat(i.getModel(),r.searchText,r.matchCase,r.wholeWord?i.getOption(132):null,e)}_setState(e){if(this.state=e,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const t=this.editor.getModel();if(t.isTooLargeForTokenization())return;const i=this.state.findMatches(),n=this.editor.getSelections();n.sort(v.compareRangesUsingStarts);const o=[];for(let d=0,c=0,h=i.length,u=n.length;d<h;){const m=i[d];if(c>=u)o.push(m),d++;else{const p=v.compareRangesUsingStarts(m,n[c]);p<0?((n[c].isEmpty()||!v.areIntersecting(m,n[c]))&&o.push(m),d++):(p>0||d++,c++)}}const l=this.editor.getOption(81)!=="off",r=this._languageFeaturesService.documentHighlightProvider.has(t)&&l,a=o.map(d=>({range:d,options:lat(r)}));this._decorations.set(a)}dispose(){this._setState(null),super.dispose()}},I8=NQ,NQ.ID="editor.contrib.selectionHighlighter",NQ);pJ=I8=rat([aat(1,lt)],pJ);function bAe(s,e,t){const i=Ece(s,e[0],!t);for(let n=1,o=e.length;n<o;n++){const l=e[n];if(l.isEmpty())return!1;const r=Ece(s,l,!t);if(i!==r)return!1}return!0}function Ece(s,e,t){const i=s.getValueInRange(e);return t?i.toLowerCase():i}class Aat extends et{constructor(){super({id:"editor.action.focusNextCursor",label:U("mutlicursor.focusNextCursor","Focus Next Cursor"),metadata:{description:U("mutlicursor.focusNextCursor.description","Focuses the next cursor"),args:[]},alias:"Focus Next Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const n=t._getViewModel();if(n.cursorConfig.readOnly)return;n.model.pushStackElement();const o=Array.from(n.getCursorStates()),l=o.shift();l&&(o.push(l),n.setCursorStates(i.source,3,o),n.revealPrimaryCursor(i.source,!0),Af(o,n.getCursorStates()))}}class Nat extends et{constructor(){super({id:"editor.action.focusPreviousCursor",label:U("mutlicursor.focusPreviousCursor","Focus Previous Cursor"),metadata:{description:U("mutlicursor.focusPreviousCursor.description","Focuses the previous cursor"),args:[]},alias:"Focus Previous Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const n=t._getViewModel();if(n.cursorConfig.readOnly)return;n.model.pushStackElement();const o=Array.from(n.getCursorStates()),l=o.pop();l&&(o.unshift(l),n.setCursorStates(i.source,3,o),n.revealPrimaryCursor(i.source,!0),Af(o,n.getCursorStates()))}}Gi(kV.ID,kV,4);Gi(pJ.ID,pJ,1);Me(dat);Me(cat);Me(hat);Me(pat);Me(gat);Me(bat);Me(Uat);Me(fat);Me(Fat);Me(uat);Me(mat);Me(Aat);Me(Nat);const Rat="editor.action.inlineEdit.accept",Sat="editor.action.inlineEdit.reject",Wat="editor.action.inlineEdit.jumpTo",Vat="editor.action.inlineEdit.jumpBack";var Qat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},yat=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const M_="inline-edit";let D8=class extends de{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=oi(this,!1),this.currentTextModel=gn(this,this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=ht(this,n=>{var Z;if(this.isDisposed.read(n))return;const o=this.currentTextModel.read(n);if(o!==this.model.targetTextModel.read(n))return;const l=this.model.ghostText.read(n);if(!l)return;let r=(Z=this.model.range)==null?void 0:Z.read(n);r&&r.startLineNumber===r.endLineNumber&&r.startColumn===r.endColumn&&(r=void 0);const a=(r?r.startLineNumber===r.endLineNumber:!0)&&l.parts.length===1&&l.parts[0].lines.length===1,d=l.parts.length===1&&l.parts[0].lines.every(A=>A.length===0),c=[],h=[];function u(A,N){if(h.length>0){const W=h[h.length-1];N&&W.decorations.push(new qr(W.content.length+1,W.content.length+1+A[0].length,N,0)),W.content+=A[0],A=A.slice(1)}for(const W of A)h.push({content:W,decorations:N?[new qr(1,W.length+1,N,0)]:[]})}const m=o.getLineContent(l.lineNumber);let p,g=0;if(!d&&(a||!r)){for(const A of l.parts){let N=A.lines;r&&!a&&(u(N,M_),N=[]),p===void 0?(c.push({column:A.column,text:N[0],preview:A.preview}),N=N.slice(1)):u([m.substring(g,A.column-1)],void 0),N.length>0&&(u(N,M_),p===void 0&&A.column<=m.length&&(p=A.column)),g=A.column-1}p!==void 0&&u([m.substring(g)],void 0)}const b=p!==void 0?new KZe(p,m.length+1):void 0,f=a||!r?l.lineNumber:r.endLineNumber-1;return{inlineTexts:c,additionalLines:h,hiddenRange:b,lineNumber:f,additionalReservedLineCount:this.model.minReservedLineCount.read(n),targetTextModel:o,range:r,isSingleLine:a,isPureRemove:d}}),this.decorations=ht(this,n=>{const o=this.uiState.read(n);if(!o)return[];const l=[];if(o.hiddenRange&&l.push({range:o.hiddenRange.toRange(o.lineNumber),options:{inlineClassName:"inline-edit-hidden",description:"inline-edit-hidden"}}),o.range){const r=[];if(o.isSingleLine)r.push(o.range);else if(!o.isPureRemove){const a=o.range.endLineNumber-o.range.startLineNumber;for(let d=0;d<a;d++){const c=o.range.startLineNumber+d,h=o.targetTextModel.getLineFirstNonWhitespaceColumn(c),u=o.targetTextModel.getLineLastNonWhitespaceColumn(c),m=new v(c,h,c,u);r.push(m)}}for(const a of r)l.push({range:a,options:AV})}if(o.range&&!o.isSingleLine&&o.isPureRemove){const r=new v(o.range.startLineNumber,1,o.range.endLineNumber-1,1);l.push({range:r,options:PM})}for(const r of o.inlineTexts)l.push({range:v.fromPositions(new oe(o.lineNumber,r.column)),options:{description:M_,after:{content:r.text,inlineClassName:r.preview?"inline-edit-decoration-preview":"inline-edit-decoration",cursorStops:Xh.Left},showIfCollapsed:!0}});return l}),this._register(gt(()=>{this.isDisposed.set(!0,void 0)})),this._register(qZe(this.editor,this.decorations))}};D8=Qat([yat(2,Zs)],D8);var Die=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ip=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},wD;let G8=class extends de{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).showToolbar==="always"),this.sessionPosition=void 0,this.position=ht(this,n=>{var a,d;const o=(a=this.model.read(n))==null?void 0:a.model.ghostText.read(n);if(!this.alwaysShowToolbar.read(n)||!o||o.parts.length===0)return this.sessionPosition=void 0,null;const l=o.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==o.lineNumber&&(this.sessionPosition=void 0);const r=new oe(o.lineNumber,Math.min(l,((d=this.sessionPosition)==null?void 0:d.column)??Number.MAX_SAFE_INTEGER));return this.sessionPosition=r,r}),this._register(Ga((n,o)=>{if(!this.model.read(n)||!this.alwaysShowToolbar.read(n))return;const r=o.add(this.instantiationService.createInstance(E8,this.editor,!0,this.position));e.addContentWidget(r),o.add(gt(()=>e.removeContentWidget(r)))}))}};G8=Die([ip(2,bt)],G8);var gA;let E8=(gA=class extends de{constructor(e,t,i,n,o,l){super(),this.editor=e,this.withBorder=t,this._position=i,this._contextKeyService=o,this._menuService=l,this.id=`InlineEditHintsContentWidget${wD.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=gi("div.inlineEditHints",{className:this.withBorder?".withBorder":""},[gi("div@toolBar")]),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(at.InlineEditActions,this._contextKeyService)),this.toolBar=this._register(n.createInstance(v8,this.nodes.toolBar,this.editor,at.InlineEditToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:r=>r.startsWith("primary")},actionViewItemProvider:(r,a)=>{if(r instanceof Ud)return n.createInstance(Cat,r,void 0)},telemetrySource:"InlineEditToolbar"})),this._register(this.toolBar.onDidChangeDropdownVisibility(r=>{wD._dropDownVisible=r})),this._register(Gt(r=>{this._position.read(r),this.editor.layoutContentWidget(this)})),this._register(Gt(r=>{const a=[];for(const[d,c]of this.inlineCompletionsActionsMenus.getActions())for(const h of c)h instanceof Ud&&a.push(h);a.length>0&&a.unshift(new zo),this.toolBar.setAdditionalSecondaryActions(a)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}},wD=gA,gA._dropDownVisible=!1,gA.id=0,gA);E8=wD=Die([ip(3,bt),ip(4,wt),ip(5,pc)],E8);class Cat extends $U{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=gi("div.keybinding").root;this._register(new e1(t,pd,{disableTitle:!0,...YUe})).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineEditStatusBarItemLabel")}}updateTooltip(){}}let v8=class extends qM{constructor(e,t,i,n,o,l,r,a,d,c){super(e,{resetMenu:i,...n},o,l,r,a,d,c),this.editor=t,this.menuId=i,this.options2=n,this.menuService=o,this.contextKeyService=l,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this._store.add(this.editor.onDidChangeCursorPosition(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var i,n,o,l,r,a,d;const e=[],t=[];vY(this.menu,(i=this.options2)==null?void 0:i.menuOptions,{primary:e,secondary:t},(o=(n=this.options2)==null?void 0:n.toolbarOptions)==null?void 0:o.primaryGroup,(r=(l=this.options2)==null?void 0:l.toolbarOptions)==null?void 0:r.shouldInlineSubmenu,(d=(a=this.options2)==null?void 0:a.toolbarOptions)==null?void 0:d.useSeparatorsInPrimaryActions),t.push(...this.additionalActions),e.unshift(...this.prependedPrimaryActions),this.setActions(e,t)}setAdditionalSecondaryActions(e){Fs(this.additionalActions,e,(t,i)=>t===i)||(this.additionalActions=e,this.updateToolbar())}};v8=Die([ip(4,pc),ip(5,wt),ip(6,Vd),ip(7,dn),ip(8,On),ip(9,lr)],v8);var UAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},MD=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},o2,x8;function*wat(s,e,t=1){e===void 0&&([e,s]=[s,0]);for(let i=s;i<e;i+=t)yield i}function T_(s){var i;const e=((i=s[0].match(/^\s*/))==null?void 0:i[0])??"",t=e.length;return{text:s.map(n=>n.replace(new RegExp("^"+e),"")),shift:t}}var RQ;let J8=(RQ=class extends de{static _createUniqueUri(){return At.from({scheme:"inline-edit-widget",path:new Date().toString()+String(o2._modelId++)})}constructor(e,t,i,n,o){super(),this._editor=e,this._model=t,this._instantiationService=i,this._diffProviderFactoryService=n,this._modelService=o,this._position=ht(this,l=>{const r=this._model.read(l);if(!r||r.text.length===0||r.range.startLineNumber===r.range.endLineNumber&&!(r.range.startColumn===r.range.endColumn&&r.range.startColumn===1))return null;const a=this._editor.getModel();if(!a)return null;const d=Array.from(wat(r.range.startLineNumber,r.range.endLineNumber+1)),c=d.map(g=>a.getLineLastNonWhitespaceColumn(g)),h=Math.max(...c),u=d[c.indexOf(h)],m=new oe(u,h);return{top:r.range.startLineNumber,left:m}}),this._text=ht(this,l=>{const r=this._model.read(l);if(!r)return{text:"",shift:0};const a=T_(r.text.split(`
- `));return{text:a.text.join(`
- `),shift:a.shift}}),this._originalModel=Zr(()=>this._modelService.createModel("",null,o2._createUniqueUri())).keepObserved(this._store),this._modifiedModel=Zr(()=>this._modelService.createModel("",null,o2._createUniqueUri())).keepObserved(this._store),this._diff=ht(this,l=>{var r,a;return(a=(r=this._diffPromise.read(l))==null?void 0:r.promiseResult.read(l))==null?void 0:a.data}),this._diffPromise=ht(this,l=>{const r=this._model.read(l);if(!r)return;const a=this._editor.getModel();if(!a)return;const d=T_(a.getValueInRange(r.range).split(`
- `)).text.join(`
- `),c=T_(r.text.split(`
- `)).text.join(`
- `);this._originalModel.get().setValue(d),this._modifiedModel.get().setValue(c);const h=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:"advanced"});return DY.fromFn(async()=>{const u=await h.computeDiff(this._originalModel.get(),this._modifiedModel.get(),{computeMoves:!1,ignoreTrimWhitespace:!1,maxComputationTimeMs:1e3},$t.None);if(!u.identical)return u.changes})}),this._register(Ga((l,r)=>{if(!this._model.read(l)||this._position.get()===null)return;const d=r.add(this._instantiationService.createInstance(X8,this._editor,this._position,this._text.map(c=>c.text),this._text.map(c=>c.shift),this._diff));e.addOverlayWidget(d),r.add(gt(()=>e.removeOverlayWidget(d)))}))}},o2=RQ,RQ._modelId=0,RQ);J8=o2=UAe([MD(2,bt),MD(3,VB),MD(4,es)],J8);var SQ;let X8=(SQ=class extends de{constructor(e,t,i,n,o,l){var r;super(),this._editor=e,this._position=t,this._text=i,this._shift=n,this._diff=o,this._instantiationService=l,this.id=`InlineEditSideBySideContentWidget${x8.id++}`,this.allowEditorOverflow=!1,this._nodes=Ge("div.inlineEditSideBySide",void 0),this._scrollChanged=Tl("editor.onDidScrollChange",this._editor.onDidScrollChange),this._previewEditor=this._register(this._instantiationService.createInstance(tu,this._nodes,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0,scrollbar:{vertical:"hidden",horizontal:"hidden",alwaysConsumeMouseWheel:!1,handleMouseWheel:!1},readOnly:!0,wordWrap:"off",wordWrapOverride1:"off",wordWrapOverride2:"off",wrappingIndent:"none",wrappingStrategy:void 0},{contributions:[],isSimpleWidget:!0},this._editor)),this._previewEditorObs=md(this._previewEditor),this._editorObs=md(this._editor),this._previewTextModel=this._register(this._instantiationService.createInstance(Eu,"",((r=this._editor.getModel())==null?void 0:r.getLanguageId())??ia,Eu.DEFAULT_CREATION_OPTIONS,null)),this._setText=ht(a=>{const d=this._text.read(a);d&&this._previewTextModel.setValue(d)}).recomputeInitiallyAndOnChange(this._store),this._decorations=ht(this,a=>{this._setText.read(a);const d=this._position.read(a);if(!d)return{org:[],mod:[]};const c=this._diff.read(a);if(!c)return{org:[],mod:[]};const h=[],u=[];if(c.length===1&&c[0].innerChanges[0].modifiedRange.equalsRange(this._previewTextModel.getFullModelRange()))return{org:[],mod:[]};const m=this._shift.get(),p=g=>new v(g.startLineNumber+d.top-1,g.startColumn+m,g.endLineNumber+d.top-1,g.endColumn+m);for(const g of c)if(g.original.isEmpty||h.push({range:p(g.original.toInclusiveRange()),options:PM}),g.modified.isEmpty||u.push({range:g.modified.toInclusiveRange(),options:fx}),g.modified.isEmpty||g.original.isEmpty)g.original.isEmpty||h.push({range:p(g.original.toInclusiveRange()),options:Xte}),g.modified.isEmpty||u.push({range:g.modified.toInclusiveRange(),options:xte});else for(const b of g.innerChanges||[])g.original.contains(b.originalRange.startLineNumber)&&h.push({range:p(b.originalRange),options:b.originalRange.isEmpty()?Yte:AV}),g.modified.contains(b.modifiedRange.startLineNumber)&&u.push({range:b.modifiedRange,options:b.modifiedRange.isEmpty()?Jte:Fx});return{org:h,mod:u}}),this._originalDecorations=ht(this,a=>this._decorations.read(a).org),this._modifiedDecorations=ht(this,a=>this._decorations.read(a).mod),this._previewEditor.setModel(this._previewTextModel),this._register(this._editorObs.setDecorations(this._originalDecorations)),this._register(this._previewEditorObs.setDecorations(this._modifiedDecorations)),this._register(Gt(a=>{const d=this._previewEditorObs.contentWidth.read(a),c=this._text.read(a).split(`
- `).length-1,h=this._editor.getOption(67)*c;d<=0||this._previewEditor.layout({height:h,width:d})})),this._register(Gt(a=>{this._position.read(a),this._editor.layoutOverlayWidget(this)})),this._register(Gt(a=>{this._scrollChanged.read(a),this._position.read(a)&&this._editor.layoutOverlayWidget(this)}))}getId(){return this.id}getDomNode(){return this._nodes}getPosition(){const e=this._position.get();if(!e)return null;const t=this._editor.getLayoutInfo(),i=this._editor.getScrolledVisiblePosition(new oe(e.top,1));if(!i)return null;const n=i.top-1,o=this._editor.getOffsetForColumn(e.left.lineNumber,e.left.column);return{preference:{left:t.contentLeft+o+10,top:n}}}},x8=SQ,SQ.id=0,SQ);X8=x8=UAe([MD(5,bt)],X8);var Mat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Yf=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},l2,wh;let $r=(wh=class extends de{static get(e){return e.getContribution(l2.ID)}constructor(e,t,i,n,o,l,r,a){super(),this.editor=e,this.instantiationService=t,this.contextKeyService=i,this.languageFeaturesService=n,this._commandService=o,this._configurationService=l,this._diffProviderFactoryService=r,this._modelService=a,this._isVisibleContext=l2.inlineEditVisibleContext.bindTo(this.contextKeyService),this._isCursorAtInlineEditContext=l2.cursorAtInlineEditContext.bindTo(this.contextKeyService),this._currentEdit=oi(this,void 0),this._currentWidget=Zr(this._currentEdit,p=>{const g=this._currentEdit.read(p);if(!g)return;const b=g.range.endLineNumber,f=g.range.endColumn,Z=g.text.endsWith(`
- `)&&!(g.range.startLineNumber===g.range.endLineNumber&&g.range.startColumn===g.range.endColumn)?g.text.slice(0,-1):g.text,A=new mT(b,[new Ox(f,Z,!1)]),N=g.range.startLineNumber===g.range.endLineNumber&&A.parts.length===1&&A.parts[0].lines.length===1,W=g.text==="";return!N&&!W?void 0:this.instantiationService.createInstance(D8,this.editor,{ghostText:Xc(A),minReservedLineCount:Xc(0),targetTextModel:Xc(this.editor.getModel()??void 0),range:Xc(g.range)})}),this._isAccepting=oi(this,!1),this._enabled=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).enabled),this._fontFamily=gn(this,this.editor.onDidChangeConfiguration,()=>this.editor.getOption(63).fontFamily);const d=Tl("InlineEditController.modelContentChangedSignal",e.onDidChangeModelContent);this._register(Gt(p=>{this._enabled.read(p)&&(d.read(p),!this._isAccepting.read(p)&&this.getInlineEdit(e,!0))}));const c=gn(this,e.onDidChangeCursorPosition,()=>e.getPosition());this._register(Gt(p=>{if(!this._enabled.read(p))return;const g=c.read(p);g&&this.checkCursorPosition(g)})),this._register(Gt(p=>{const g=this._currentEdit.read(p);if(this._isCursorAtInlineEditContext.set(!1),!g){this._isVisibleContext.set(!1);return}this._isVisibleContext.set(!0);const b=e.getPosition();b&&this.checkCursorPosition(b)}));const h=Tl("InlineEditController.editorBlurSignal",e.onDidBlurEditorWidget);this._register(Gt(async p=>{var g;this._enabled.read(p)&&(h.read(p),!(this._configurationService.getValue("editor.experimentalInlineEdit.keepOnBlur")||e.getOption(63).keepOnBlur)&&((g=this._currentRequestCts)==null||g.dispose(!0),this._currentRequestCts=void 0,await this.clear(!1)))}));const u=Tl("InlineEditController.editorFocusSignal",e.onDidFocusEditorText);this._register(Gt(p=>{this._enabled.read(p)&&(u.read(p),this.getInlineEdit(e,!0))}));const m=this._register(Wge());this._register(Gt(p=>{const g=this._fontFamily.read(p);m.setStyle(g===""||g==="default"?"":`
- .monaco-editor .inline-edit-decoration,
- .monaco-editor .inline-edit-decoration-preview,
- .monaco-editor .inline-edit {
- font-family: ${g};
- }`)})),this._register(new G8(this.editor,this._currentWidget,this.instantiationService)),this._register(new J8(this.editor,this._currentEdit,this.instantiationService,this._diffProviderFactoryService,this._modelService))}checkCursorPosition(e){if(!this._currentEdit){this._isCursorAtInlineEditContext.set(!1);return}const t=this._currentEdit.get();if(!t){this._isCursorAtInlineEditContext.set(!1);return}this._isCursorAtInlineEditContext.set(v.containsPosition(t.range,e))}validateInlineEdit(e,t){var i;if(t.text.includes(`
- `)&&t.range.startLineNumber!==t.range.endLineNumber&&t.range.startColumn!==t.range.endColumn){if(t.range.startColumn!==1)return!1;const o=t.range.endLineNumber,l=t.range.endColumn,r=((i=e.getModel())==null?void 0:i.getLineLength(o))??0;if(l!==r+1)return!1}return!0}async fetchInlineEdit(e,t){this._currentRequestCts&&this._currentRequestCts.dispose(!0);const i=e.getModel();if(!i)return;const n=i.getVersionId(),o=this.languageFeaturesService.inlineEditProvider.all(i);if(o.length===0)return;const l=o[0];this._currentRequestCts=new Ws;const r=this._currentRequestCts.token,a=t?IE.Automatic:IE.Invoke;if(t&&await Tat(50,r),r.isCancellationRequested||i.isDisposed()||i.getVersionId()!==n)return;const c=await l.provideInlineEdit(i,{triggerKind:a},r);if(c&&!(r.isCancellationRequested||i.isDisposed()||i.getVersionId()!==n)&&this.validateInlineEdit(e,c))return c}async getInlineEdit(e,t){this._isCursorAtInlineEditContext.set(!1),await this.clear();const i=await this.fetchInlineEdit(e,t);i&&this._currentEdit.set(i,void 0)}async trigger(){await this.getInlineEdit(this.editor,!1)}async jumpBack(){this._jumpBackPosition&&(this.editor.setPosition(this._jumpBackPosition),this.editor.revealPositionInCenterIfOutsideViewport(this._jumpBackPosition))}async accept(){this._isAccepting.set(!0,void 0);const e=this._currentEdit.get();if(!e)return;let t=e.text;e.text.startsWith(`
- `)&&(t=e.text.substring(1)),this.editor.pushUndoStop(),this.editor.executeEdits("acceptCurrent",[Rs.replace(v.lift(e.range),t)]),e.accepted&&await this._commandService.executeCommand(e.accepted.id,...e.accepted.arguments||[]).then(void 0,Os),this.freeEdit(e),Ss(i=>{this._currentEdit.set(void 0,i),this._isAccepting.set(!1,i)})}jumpToCurrent(){var i;this._jumpBackPosition=(i=this.editor.getSelection())==null?void 0:i.getStartPosition();const e=this._currentEdit.get();if(!e)return;const t=oe.lift({lineNumber:e.range.startLineNumber,column:e.range.startColumn});this.editor.setPosition(t),this.editor.revealPositionInCenterIfOutsideViewport(t)}async clear(e=!0){const t=this._currentEdit.get();t&&(t!=null&&t.rejected)&&e&&await this._commandService.executeCommand(t.rejected.id,...t.rejected.arguments||[]).then(void 0,Os),t&&this.freeEdit(t),this._currentEdit.set(void 0,void 0)}freeEdit(e){const t=this.editor.getModel();if(!t)return;const i=this.languageFeaturesService.inlineEditProvider.all(t);i.length!==0&&i[0].freeInlineEdit(e)}},l2=wh,wh.ID="editor.contrib.inlineEditController",wh.inlineEditVisibleKey="inlineEditVisible",wh.inlineEditVisibleContext=new Ke(wh.inlineEditVisibleKey,!1),wh.cursorAtInlineEditKey="cursorAtInlineEdit",wh.cursorAtInlineEditContext=new Ke(wh.cursorAtInlineEditKey,!1),wh);$r=l2=Mat([Yf(1,bt),Yf(2,wt),Yf(3,lt),Yf(4,On),Yf(5,li),Yf(6,VB),Yf(7,es)],$r);function Tat(s,e){return new Promise(t=>{let i;const n=setTimeout(()=>{i&&i.dispose(),t()},s);e&&(i=e.onCancellationRequested(()=>{clearTimeout(n),i&&i.dispose(),t()}))})}let Bat=class extends et{constructor(){super({id:Rat,label:"Accept Inline Edit",alias:"Accept Inline Edit",precondition:Ne.and(H.writable,$r.inlineEditVisibleContext),kbOpts:[{weight:100+1,primary:2,kbExpr:Ne.and(H.writable,$r.inlineEditVisibleContext,$r.cursorAtInlineEditContext)}],menuOpts:[{menuId:at.InlineEditToolbar,title:"Accept",group:"primary",order:1}]})}async run(e,t){const i=$r.get(t);await(i==null?void 0:i.accept())}};class Lat extends et{constructor(){const e=Ne.and(H.writable,Ne.not($r.inlineEditVisibleKey));super({id:"editor.action.inlineEdit.trigger",label:"Trigger Inline Edit",alias:"Trigger Inline Edit",precondition:e,kbOpts:{weight:100+1,primary:2646,kbExpr:e}})}async run(e,t){const i=$r.get(t);i==null||i.trigger()}}class kat extends et{constructor(){const e=Ne.and(H.writable,$r.inlineEditVisibleContext,Ne.not($r.cursorAtInlineEditKey));super({id:Wat,label:"Jump to Inline Edit",alias:"Jump to Inline Edit",precondition:e,kbOpts:{weight:100+1,primary:2646,kbExpr:e},menuOpts:[{menuId:at.InlineEditToolbar,title:"Jump To Edit",group:"primary",order:3,when:e}]})}async run(e,t){const i=$r.get(t);i==null||i.jumpToCurrent()}}class Iat extends et{constructor(){const e=Ne.and(H.writable,$r.cursorAtInlineEditContext);super({id:Vat,label:"Jump Back from Inline Edit",alias:"Jump Back from Inline Edit",precondition:e,kbOpts:{weight:100+10,primary:2646,kbExpr:e},menuOpts:[{menuId:at.InlineEditToolbar,title:"Jump Back",group:"primary",order:3,when:e}]})}async run(e,t){const i=$r.get(t);i==null||i.jumpBack()}}class Dat extends et{constructor(){const e=Ne.and(H.writable,$r.inlineEditVisibleContext);super({id:Sat,label:"Reject Inline Edit",alias:"Reject Inline Edit",precondition:e,kbOpts:{weight:100,primary:9,kbExpr:e},menuOpts:[{menuId:at.InlineEditToolbar,title:"Reject",group:"secondary",order:2}]})}async run(e,t){const i=$r.get(t);await(i==null?void 0:i.clear())}}Me(Bat);Me(Dat);Me(kat);Me(Iat);Me(Lat);Gi($r.ID,$r,3);const Gat="editor.action.inlineEdits.accept",Eat="editor.action.inlineEdits.showPrevious",vat="editor.action.inlineEdits.showNext",IV=new Ke("inlineEditsVisible",!1,U("inlineEditsVisible","Whether an inline edit is visible")),xat=new Ke("inlineEditsIsPinned",!1,U("isPinned","Whether an inline edit is visible"));const gne=class gne extends de{constructor(e){super(),this._editor=e,this._editorObs=md(this._editor),this._placeholderText=this._editorObs.getOption(88),this._state=$d({owner:this,equalsFn:Fv},t=>{const i=this._placeholderText.read(t);if(i&&this._editorObs.valueIsEmpty.read(t))return{placeholder:i}}),this._shouldViewBeAlive=Jat(this,t=>{var i;return((i=this._state.read(t))==null?void 0:i.placeholder)!==void 0}),this._view=Uf((t,i)=>{if(!this._shouldViewBeAlive.read(t))return;const n=gi("div.editorPlaceholder");i.add(Gt(o=>{const l=this._state.read(o),r=(l==null?void 0:l.placeholder)!==void 0;n.root.style.display=r?"block":"none",n.root.innerText=(l==null?void 0:l.placeholder)??""})),i.add(Gt(o=>{const l=this._editorObs.layoutInfo.read(o);n.root.style.left=`${l.contentLeft}px`,n.root.style.width=l.contentWidth-l.verticalScrollbarWidth+"px",n.root.style.top=`${this._editor.getTopForLineNumber(0)}px`})),i.add(Gt(o=>{n.root.style.fontFamily=this._editorObs.getOption(49).read(o),n.root.style.fontSize=this._editorObs.getOption(52).read(o)+"px",n.root.style.lineHeight=this._editorObs.getOption(67).read(o)+"px"})),i.add(this._editorObs.createOverlayWidget({allowEditorOverflow:!1,minContentWidthInPx:Xc(0),position:Xc(null),domNode:n.root}))}),this._view.recomputeInitiallyAndOnChange(this._store)}};gne.ID="editor.contrib.placeholderText";let ZT=gne;function Jat(s,e){return UB(s,(t,i)=>i===!0?!0:e(t))}var Xat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Yat=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class zat{constructor(e,t,i){this.range=e,this.newLines=t,this.changes=i}}let Y8=class extends de{constructor(e,t,i,n){super(),this._editor=e,this._edit=t,this._userPrompt=i,this._instantiationService=n,this._editorObs=md(this._editor),this._elements=gi("div.inline-edits-widget",{style:{position:"absolute",overflow:"visible",top:"0px",left:"0px"}},[gi("div@editorContainer",{style:{position:"absolute",top:"0px",left:"0px",width:"500px",height:"500px"}},[gi("div.toolbar@toolbar",{style:{position:"absolute",top:"-25px",left:"0px"}}),gi("div.promptEditor@promptEditor",{style:{position:"absolute",top:"-25px",left:"80px",width:"300px",height:"22px"}}),gi("div.preview@editor",{style:{position:"absolute",top:"0px",left:"0px"}})]),VN("svg",{style:{overflow:"visible",pointerEvents:"none"}},[VN("defs",[VN("linearGradient",{id:"Gradient2",x1:"0",y1:"0",x2:"1",y2:"0"},[VN("stop",{offset:"0%",class:"gradient-stop"}),VN("stop",{offset:"100%",class:"gradient-stop"})])]),VN("path@path",{d:"",fill:"url(#Gradient2)"})])]),this._previewTextModel=this._register(this._instantiationService.createInstance(Eu,"",ia,Eu.DEFAULT_CREATION_OPTIONS,null)),this._setText=ht(l=>{const r=this._edit.read(l);r&&this._previewTextModel.setValue(r.newLines.join(`
- `))}).recomputeInitiallyAndOnChange(this._store),this._promptTextModel=this._register(this._instantiationService.createInstance(Eu,"",ia,Eu.DEFAULT_CREATION_OPTIONS,null)),this._promptEditor=this._register(this._instantiationService.createInstance(tu,this._elements.promptEditor,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0,placeholder:"Describe the change you want...",fontFamily:Qfe},{contributions:zZ.getSomeEditorContributions([Yh.ID,ZT.ID,yV.ID]),isSimpleWidget:!0},this._editor)),this._previewEditor=this._register(this._instantiationService.createInstance(tu,this._elements.editor,{glyphMargin:!1,lineNumbers:"off",minimap:{enabled:!1},guides:{indentation:!1,bracketPairs:!1,bracketPairsHorizontal:!1,highlightActiveIndentation:!1},folding:!1,selectOnLineNumbers:!1,selectionHighlight:!1,columnSelection:!1,overviewRulerBorder:!1,overviewRulerLanes:0,lineDecorationsWidth:0,lineNumbersMinChars:0},{contributions:[]},this._editor)),this._previewEditorObs=md(this._previewEditor),this._decorations=ht(this,l=>{var c;this._setText.read(l);const r=(c=this._edit.read(l))==null?void 0:c.changes;if(!r)return[];const a=[],d=[];if(r.length===1&&r[0].innerChanges[0].modifiedRange.equalsRange(this._previewTextModel.getFullModelRange()))return[];for(const h of r)if(h.original.isEmpty||a.push({range:h.original.toInclusiveRange(),options:PM}),h.modified.isEmpty||d.push({range:h.modified.toInclusiveRange(),options:fx}),h.modified.isEmpty||h.original.isEmpty)h.original.isEmpty||a.push({range:h.original.toInclusiveRange(),options:Xte}),h.modified.isEmpty||d.push({range:h.modified.toInclusiveRange(),options:xte});else for(const u of h.innerChanges||[])h.original.contains(u.originalRange.startLineNumber)&&a.push({range:u.originalRange,options:u.originalRange.isEmpty()?Yte:AV}),h.modified.contains(u.modifiedRange.startLineNumber)&&d.push({range:u.modifiedRange,options:u.modifiedRange.isEmpty()?Jte:Fx});return d}),this._layout1=ht(this,l=>{const r=this._editor.getModel(),a=this._edit.read(l);if(!a)return null;const d=a.range;let c=0;for(let m=d.startLineNumber;m<d.endLineNumberExclusive;m++){const p=r.getLineMaxColumn(m),g=this._editor.getOffsetForColumn(m,p);c=Math.max(c,g)}return{left:this._editor.getLayoutInfo().contentLeft+c}}),this._layout=ht(this,l=>{const r=this._edit.read(l);if(!r)return null;const a=r.range,d=this._editorObs.scrollLeft.read(l),c=this._layout1.read(l).left+20-d,h=this._editor.getTopForLineNumber(a.startLineNumber)-this._editorObs.scrollTop.read(l),u=this._editor.getTopForLineNumber(a.endLineNumberExclusive)-this._editorObs.scrollTop.read(l),m=new QS(c,h),p=new QS(c,u),g=u-h,b=50,f=this._editor.getOption(67)*r.newLines.length,Z=g-f,A=new QS(c+b,h+Z/2),N=new QS(c+b,u-Z/2);return{topCode:m,bottomCode:p,codeHeight:g,topEdit:A,bottomEdit:N,editHeight:f}});const o=ht(this,l=>this._edit.read(l)!==void 0||this._userPrompt.read(l)!==void 0);this._register(V0(this._elements.root,{display:ht(this,l=>o.read(l)?"block":"none")})),this._register(ZS(this._editor.getDomNode(),this._elements.root)),this._register(md(e).createOverlayWidget({domNode:this._elements.root,position:Xc(null),allowEditorOverflow:!1,minContentWidthInPx:ht(l=>{var d;const r=(d=this._layout1.read(l))==null?void 0:d.left;if(r===void 0)return 0;const a=this._previewEditorObs.contentWidth.read(l);return r+a})})),this._previewEditor.setModel(this._previewTextModel),this._register(this._previewEditorObs.setDecorations(this._decorations)),this._register(Gt(l=>{const r=this._layout.read(l);if(!r)return;const{topCode:a,bottomCode:d,topEdit:c,bottomEdit:h,editHeight:u}=r,m=10,p=0,g=40,b=new Oat().moveTo(a).lineTo(a.deltaX(m)).curveTo(a.deltaX(m+g),c.deltaX(-g-p),c.deltaX(-p)).lineTo(c).lineTo(h).lineTo(h.deltaX(-p)).curveTo(h.deltaX(-g-p),d.deltaX(m+g),d.deltaX(m)).lineTo(d).build();this._elements.path.setAttribute("d",b),this._elements.editorContainer.style.top=`${c.y}px`,this._elements.editorContainer.style.left=`${c.x}px`,this._elements.editorContainer.style.height=`${u}px`;const f=this._previewEditorObs.contentWidth.read(l);this._previewEditor.layout({height:u,width:f})})),this._promptEditor.setModel(this._promptTextModel),this._promptEditor.layout(),this._register(jat(_at(this._userPrompt,l=>l??"",l=>l),md(this._promptEditor).value)),this._register(Gt(l=>{const r=md(this._promptEditor).isFocused.read(l);this._elements.root.classList.toggle("focused",r)}))}};Y8=Xat([Yat(3,bt)],Y8);function _at(s,e,t){return pB(void 0,i=>e(s.read(i)),(i,n)=>s.set(t(i),n))}class QS{constructor(e,t){this.x=e,this.y=t}deltaX(e){return new QS(this.x+e,this.y)}}class Oat{constructor(){this._data=""}moveTo(e){return this._data+=`M ${e.x} ${e.y} `,this}lineTo(e){return this._data+=`L ${e.x} ${e.y} `,this}curveTo(e,t,i){return this._data+=`C ${e.x} ${e.y} ${t.x} ${t.y} ${i.x} ${i.y} `,this}build(){return this._data}}function jat(s,e){const t=new Ze;return t.add(Gt(i=>{const n=s.read(i);e.set(n,void 0)})),t.add(Gt(i=>{const n=e.read(i);s.set(n,void 0)})),t}var Hat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},B_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},r2,WQ;let z8=(WQ=class extends de{static _createUniqueUri(){return At.from({scheme:"inline-edits",path:new Date().toString()+String(r2._modelId++)})}constructor(e,t,i,n,o,l,r){super(),this.textModel=e,this._textModelVersionId=t,this._selection=i,this._debounceValue=n,this.languageFeaturesService=o,this._diffProviderFactoryService=l,this._modelService=r,this._forceUpdateExplicitlySignal=PQ(this),this._selectedInlineCompletionId=oi(this,void 0),this._isActive=oi(this,!1),this._originalModel=Zr(()=>this._modelService.createModel("",null,r2._createUniqueUri())).keepObserved(this._store),this._modifiedModel=Zr(()=>this._modelService.createModel("",null,r2._createUniqueUri())).keepObserved(this._store),this._pinnedRange=new Kat(this.textModel,this._textModelVersionId),this.isPinned=this._pinnedRange.range.map(a=>!!a),this.userPrompt=oi(this,void 0),this.inlineEdit=ht(this,a=>{var d,c;return(c=(d=this._inlineEdit.read(a))==null?void 0:d.promiseResult.read(a))==null?void 0:c.data}),this._inlineEdit=ht(this,a=>{const d=this.selectedInlineEdit.read(a);if(!d)return;const c=d.inlineCompletion.range;if(d.inlineCompletion.insertText.trim()==="")return;let h=d.inlineCompletion.insertText.split(/\r\n|\r|\n/);function u(b){var Z;const f=((Z=b[0].match(/^\s*/))==null?void 0:Z[0])??"";return b.map(A=>A.replace(new RegExp("^"+f),""))}h=u(h);let p=this.textModel.getValueInRange(c).split(/\r\n|\r|\n/);p=u(p),this._originalModel.get().setValue(p.join(`
- `)),this._modifiedModel.get().setValue(h.join(`
- `));const g=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:"advanced"});return DY.fromFn(async()=>{const b=await g.computeDiff(this._originalModel.get(),this._modifiedModel.get(),{computeMoves:!1,ignoreTrimWhitespace:!1,maxComputationTimeMs:1e3},$t.None);if(!b.identical)return new zat(jt.fromRangeInclusive(c),u(h),b.changes)})}),this._fetchStore=this._register(new Ze),this._inlineEditsFetchResult=QM(this,void 0),this._inlineEdits=$d({owner:this,equalsFn:Fv},a=>{var d;return((d=this._inlineEditsFetchResult.read(a))==null?void 0:d.completions.map(c=>new Pat(c)))??[]}),this._fetchInlineEditsPromise=Nbe({owner:this,createEmptyChangeSummary:()=>({inlineCompletionTriggerKind:Ju.Automatic}),handleChange:(a,d)=>(a.didChange(this._forceUpdateExplicitlySignal)&&(d.inlineCompletionTriggerKind=Ju.Explicit),!0)},async(a,d)=>{this._fetchStore.clear(),this._forceUpdateExplicitlySignal.read(a),this._textModelVersionId.read(a);function c(g,b){return b(g)}const h=this._pinnedRange.range.read(a)??c(this._selection.read(a),g=>g.isEmpty()?void 0:g);if(!h){this._inlineEditsFetchResult.set(void 0,void 0),this.userPrompt.set(void 0,void 0);return}const u={triggerKind:d.inlineCompletionTriggerKind,selectedSuggestionInfo:void 0,userPrompt:this.userPrompt.read(a)},m=fj(this._fetchStore);await A0(200,m);const p=await $Ze(this.languageFeaturesService.inlineCompletionsProvider,h,this.textModel,u,m);m.isCancellationRequested||this._inlineEditsFetchResult.set(p,void 0)}),this._filteredInlineEditItems=$d({owner:this,equalsFn:fv()},a=>this._inlineEdits.read(a)),this.selectedInlineCompletionIndex=ht(this,a=>{const d=this._selectedInlineCompletionId.read(a),c=this._filteredInlineEditItems.read(a),h=this._selectedInlineCompletionId===void 0?-1:c.findIndex(u=>u.semanticId===d);return h===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):h}),this.selectedInlineEdit=ht(this,a=>{const d=this._filteredInlineEditItems.read(a),c=this.selectedInlineCompletionIndex.read(a);return d[c]}),this._register(KQ(this._fetchInlineEditsPromise))}async triggerExplicitly(e){CA(e,t=>{this._isActive.set(!0,t),this._forceUpdateExplicitlySignal.trigger(t)}),await this._fetchInlineEditsPromise.get()}stop(e){CA(e,t=>{this.userPrompt.set(void 0,t),this._isActive.set(!1,t),this._inlineEditsFetchResult.set(void 0,t),this._pinnedRange.setRange(void 0,t)})}async _deltaSelectedInlineCompletionIndex(e){await this.triggerExplicitly();const t=this._filteredInlineEditItems.get()||[];if(t.length>0){const i=(this.selectedInlineCompletionIndex.get()+e+t.length)%t.length;this._selectedInlineCompletionId.set(t[i].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(e){if(e.getModel()!==this.textModel)throw new en;const t=this.selectedInlineEdit.get();t&&(e.pushUndoStop(),e.executeEdits("inlineSuggestion.accept",[t.inlineCompletion.toSingleTextEdit().toSingleEditOperation()]),this.stop())}},r2=WQ,WQ._modelId=0,WQ);z8=r2=Hat([B_(4,lt),B_(5,VB),B_(6,es)],z8);class Pat{constructor(e){this.inlineCompletion=e,this.semanticId=this.inlineCompletion.hash()}}class Kat extends de{constructor(e,t){super(),this._textModel=e,this._versionId=t,this._decorations=oi(this,[]),this.range=ht(this,i=>{this._versionId.read(i);const n=this._decorations.read(i)[0];return n?this._textModel.getDecorationRange(n)??null:null}),this._register(gt(()=>{this._textModel.deltaDecorations(this._decorations.get(),[])}))}setRange(e,t){this._decorations.set(this._textModel.deltaDecorations(this._decorations.get(),e?[{range:e,options:{description:"trackedRange"}}]:[]),t)}}var qat=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},q1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},_8,VQ;let w0=(VQ=class extends de{static get(e){return e.getContribution(_8.ID)}constructor(e,t,i,n,o,l){super(),this.editor=e,this._instantiationService=t,this._contextKeyService=i,this._debounceService=n,this._languageFeaturesService=o,this._configurationService=l,this._enabled=Z6e("editor.inlineEdits.enabled",!1,this._configurationService),this._editorObs=md(this.editor),this._selection=ht(this,r=>this._editorObs.cursorSelection.read(r)??new dt(1,1,1,1)),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineEditsDebounce",{min:50,max:50}),this.model=Zr(this,r=>{if(!this._enabled.read(r)||this._editorObs.isReadonly.read(r))return;const a=this._editorObs.model.read(r);return a?this._instantiationService.createInstance(dd(z8,r),a,this._editorObs.versionId,this._selection,this._debounceValue):void 0}),this._hadInlineEdit=UB(this,(r,a)=>{var d;return a||((d=this.model.read(r))==null?void 0:d.inlineEdit.read(r))!==void 0}),this._widget=Zr(this,r=>{if(this._hadInlineEdit.read(r))return this._instantiationService.createInstance(dd(Y8,r),this.editor,this.model.map((a,d)=>a==null?void 0:a.inlineEdit.read(d)),$at(a=>{var d;return((d=this.model.read(a))==null?void 0:d.userPrompt)??oi("empty","")}))}),this._register(Ru(IV,this._contextKeyService,r=>{var a;return!!((a=this.model.read(r))!=null&&a.inlineEdit.read(r))})),this._register(Ru(xat,this._contextKeyService,r=>{var a;return!!((a=this.model.read(r))!=null&&a.isPinned.read(r))})),this.model.recomputeInitiallyAndOnChange(this._store),this._widget.recomputeInitiallyAndOnChange(this._store)}},_8=VQ,VQ.ID="editor.contrib.inlineEditsController",VQ);w0=_8=qat([q1(1,bt),q1(2,wt),q1(3,gc),q1(4,lt),q1(5,li)],w0);function $at(s){return pB(void 0,e=>s(e).read(e),(e,t)=>{s(void 0).set(e,t)})}function GB(s){return{label:s.value,alias:s.original}}const A5=class A5 extends et{constructor(){super({id:A5.ID,...GB(kt("action.inlineEdits.showNext","Show Next Inline Edit")),precondition:Ne.and(H.writable,IV),kbOpts:{weight:100,primary:606}})}async run(e,t){var n;const i=w0.get(t);(n=i==null?void 0:i.model.get())==null||n.next()}};A5.ID=vat;let O8=A5;const N5=class N5 extends et{constructor(){super({id:N5.ID,...GB(kt("action.inlineEdits.showPrevious","Show Previous Inline Edit")),precondition:Ne.and(H.writable,IV),kbOpts:{weight:100,primary:604}})}async run(e,t){var n;const i=w0.get(t);(n=i==null?void 0:i.model.get())==null||n.previous()}};N5.ID=Eat;let j8=N5;class edt extends et{constructor(){super({id:"editor.action.inlineEdits.trigger",...GB(kt("action.inlineEdits.trigger","Trigger Inline Edit")),precondition:H.writable})}async run(e,t){const i=w0.get(t);await Abe(async n=>{var o;await((o=i==null?void 0:i.model.get())==null?void 0:o.triggerExplicitly(n))})}}class tdt extends et{constructor(){super({id:Gat,...GB(kt("action.inlineEdits.accept","Accept Inline Edit")),precondition:IV,menuOpts:{menuId:at.InlineEditsActions,title:U("inlineEditsActions","Accept Inline Edit"),group:"primary",order:1,icon:ke.check},kbOpts:{primary:2058,weight:2e4,kbExpr:IV}})}async run(e,t){var n;t instanceof tu&&(t=t.getParentEditor());const i=w0.get(t);i&&((n=i.model.get())==null||n.accept(i.editor),i.editor.focus())}}const R5=class R5 extends et{constructor(){super({id:R5.ID,...GB(kt("action.inlineEdits.hide","Hide Inline Edit")),precondition:IV,kbOpts:{weight:100,primary:9}})}async run(e,t){const i=w0.get(t);Ss(n=>{var o;(o=i==null?void 0:i.model.get())==null||o.stop(n)})}};R5.ID="editor.action.inlineEdits.hide";let H8=R5;Gi(w0.ID,w0,3);Me(edt);Me(O8);Me(j8);Me(tdt);Me(H8);const YA={Visible:new Ke("parameterHintsVisible",!1),MultipleSignatures:new Ke("parameterHintsMultipleSignatures",!1)};async function fAe(s,e,t,i,n){const o=s.ordered(e);for(const l of o)try{const r=await l.provideSignatureHelp(e,t,n,i);if(r)return r}catch(r){Os(r)}}Bi.registerCommand("_executeSignatureHelpProvider",async(s,...e)=>{const[t,i,n]=e;Yi(At.isUri(t)),Yi(oe.isIPosition(i)),Yi(typeof n=="string"||!n);const o=s.get(lt),l=await s.get(Xa).createModelReference(t);try{const r=await fAe(o.signatureHelpProvider,l.object.textEditorModel,oe.lift(i),{triggerKind:Fp.Invoke,isRetrigger:!1,triggerCharacter:n},$t.None);return r?(setTimeout(()=>r.dispose(),0),r.value):void 0}finally{l.dispose()}});var Sb;(function(s){s.Default={type:0};class e{constructor(n,o){this.request=n,this.previouslyActiveHints=o,this.type=2}}s.Pending=e;class t{constructor(n){this.hints=n,this.type=1}}s.Active=t})(Sb||(Sb={}));const S5=class S5 extends de{constructor(e,t,i=S5.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new re),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=Sb.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new _o),this.triggerChars=new PE,this.retriggerChars=new PE,this.triggerId=0,this.editor=e,this.providers=t,this.throttledDelayer=new Hc(i),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(n=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(n=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(n=>this.onCursorChange(n))),this._register(this.editor.onDidChangeModelContent(n=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(n=>this.onDidType(n))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(e){this._state.type===2&&this._state.request.cancel(),this._state=e}cancel(e=!1){this.state=Sb.Default,this.throttledDelayer.cancel(),e||this._onChangedHints.fire(void 0)}trigger(e,t){const i=this.editor.getModel();if(!i||!this.providers.has(i))return;const n=++this.triggerId;this._pendingTriggers.push(e),this.throttledDelayer.trigger(()=>this.doTrigger(n),t).catch(vt)}next(){if(this.state.type!==1)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t%e===e-1,n=this.editor.getOption(86).cycle;if((e<2||i)&&!n){this.cancel();return}this.updateActiveSignature(i&&n?0:t+1)}previous(){if(this.state.type!==1)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t===0,n=this.editor.getOption(86).cycle;if((e<2||i)&&!n){this.cancel();return}this.updateActiveSignature(i&&n?e-1:t-1)}updateActiveSignature(e){this.state.type===1&&(this.state=new Sb.Active({...this.state.hints,activeSignature:e}),this._onChangedHints.fire(this.state.hints))}async doTrigger(e){const t=this.state.type===1||this.state.type===2,i=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const n=this._pendingTriggers.reduce(idt);this._pendingTriggers=[];const o={triggerKind:n.triggerKind,triggerCharacter:n.triggerCharacter,isRetrigger:t,activeSignatureHelp:i};if(!this.editor.hasModel())return!1;const l=this.editor.getModel(),r=this.editor.getPosition();this.state=new Sb.Pending(Xo(a=>fAe(this.providers,l,r,o,a)),i);try{const a=await this.state.request;return e!==this.triggerId?(a==null||a.dispose(),!1):!a||!a.value.signatures||a.value.signatures.length===0?(a==null||a.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new Sb.Active(a.value),this._lastSignatureHelpResult.value=a,this._onChangedHints.fire(this.state.hints),!0)}catch(a){return e===this.triggerId&&(this.state=Sb.Default),vt(a),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const e=this.editor.getModel();if(e)for(const t of this.providers.ordered(e)){for(const i of t.signatureHelpTriggerCharacters||[])if(i.length){const n=i.charCodeAt(0);this.triggerChars.add(n),this.retriggerChars.add(n)}for(const i of t.signatureHelpRetriggerCharacters||[])i.length&&this.retriggerChars.add(i.charCodeAt(0))}}onDidType(e){if(!this.triggerOnType)return;const t=e.length-1,i=e.charCodeAt(t);(this.triggerChars.has(i)||this.isTriggered&&this.retriggerChars.has(i))&&this.trigger({triggerKind:Fp.TriggerCharacter,triggerCharacter:e.charAt(t)})}onCursorChange(e){e.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:Fp.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:Fp.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(86).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}};S5.DEFAULT_DELAY=120;let P8=S5;function idt(s,e){switch(e.triggerKind){case Fp.Invoke:return e;case Fp.ContentChange:return s;case Fp.TriggerCharacter:default:return e}}var ndt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ek=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},K8;const Td=Ge,sdt=ts("parameter-hints-next",ke.chevronDown,U("parameterHintsNextIcon","Icon for show next parameter hint.")),odt=ts("parameter-hints-previous",ke.chevronUp,U("parameterHintsPreviousIcon","Icon for show previous parameter hint."));var QQ;let q8=(QQ=class extends de{constructor(e,t,i,n,o,l){super(),this.editor=e,this.model=t,this.telemetryService=l,this.renderDisposeables=this._register(new Ze),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new W0({editor:e},o,n)),this.keyVisible=YA.Visible.bindTo(i),this.keyMultipleSignatures=YA.MultipleSignatures.bindTo(i)}createParameterHintDOMNodes(){const e=Td(".editor-widget.parameter-hints-widget"),t=ye(e,Td(".phwrapper"));t.tabIndex=-1;const i=ye(t,Td(".controls")),n=ye(i,Td(".button"+Qt.asCSSSelector(odt))),o=ye(i,Td(".overloads")),l=ye(i,Td(".button"+Qt.asCSSSelector(sdt)));this._register(ge(n,"click",u=>{yi.stop(u),this.previous()})),this._register(ge(l,"click",u=>{yi.stop(u),this.next()}));const r=Td(".body"),a=new dB(r,{alwaysConsumeMouseWheel:!0});this._register(a),t.appendChild(a.getDomNode());const d=ye(r,Td(".signature")),c=ye(r,Td(".docs"));e.style.userSelect="text",this.domNodes={element:e,signature:d,overloads:o,docs:c,scrollbar:a},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(u=>{this.visible&&this.editor.layoutContentWidget(this)}));const h=()=>{if(!this.domNodes)return;const u=this.editor.getOption(50),m=this.domNodes.element;m.style.fontSize=`${u.fontSize}px`,m.style.lineHeight=`${u.lineHeight/u.fontSize}`,m.style.setProperty("--vscode-parameterHintsWidget-editorFontFamily",u.fontFamily),m.style.setProperty("--vscode-parameterHintsWidget-editorFontFamilyDefault",ta.fontFamily)};h(),this._register(ve.chain(this.editor.onDidChangeConfiguration.bind(this.editor),u=>u.filter(m=>m.hasChanged(50)))(h)),this._register(this.editor.onDidLayoutChange(u=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var e;(e=this.domNodes)==null||e.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var e;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(e=this.domNodes)==null||e.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(e){if(this.renderDisposeables.clear(),!this.domNodes)return;const t=e.signatures.length>1;this.domNodes.element.classList.toggle("multiple",t),this.keyMultipleSignatures.set(t),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const i=e.signatures[e.activeSignature];if(!i)return;const n=ye(this.domNodes.signature,Td(".code")),o=i.parameters.length>0,l=i.activeParameter??e.activeParameter;if(o)this.renderParameters(n,i,l);else{const d=ye(n,Td("span"));d.textContent=i.label}const r=i.parameters[l];if(r!=null&&r.documentation){const d=Td("span.documentation");if(typeof r.documentation=="string")d.textContent=r.documentation;else{const c=this.renderMarkdownDocs(r.documentation);d.appendChild(c.element)}ye(this.domNodes.docs,Td("p",{},d))}if(i.documentation!==void 0)if(typeof i.documentation=="string")ye(this.domNodes.docs,Td("p",{},i.documentation));else{const d=this.renderMarkdownDocs(i.documentation);ye(this.domNodes.docs,d.element)}const a=this.hasDocs(i,r);if(this.domNodes.signature.classList.toggle("has-docs",a),this.domNodes.docs.classList.toggle("empty",!a),this.domNodes.overloads.textContent=String(e.activeSignature+1).padStart(e.signatures.length.toString().length,"0")+"/"+e.signatures.length,r){let d="";const c=i.parameters[l];Array.isArray(c.label)?d=i.label.substring(c.label[0],c.label[1]):d=c.label,c.documentation&&(d+=typeof c.documentation=="string"?`, ${c.documentation}`:`, ${c.documentation.value}`),i.documentation&&(d+=typeof i.documentation=="string"?`, ${i.documentation}`:`, ${i.documentation.value}`),this.announcedLabel!==d&&(ra(U("hint","{0}, hint",d)),this.announcedLabel=d)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(e){const t=new ol,i=this.renderDisposeables.add(this.markdownRenderer.render(e,{asyncRenderCallback:()=>{var o;(o=this.domNodes)==null||o.scrollbar.scanDomNode()}}));i.element.classList.add("markdown-docs");const n=t.elapsed();return n>300&&this.telemetryService.publicLog2("parameterHints.parseMarkdown",{renderDuration:n}),i}hasDocs(e,t){return!!(t&&typeof t.documentation=="string"&&rU(t.documentation).length>0||t&&typeof t.documentation=="object"&&rU(t.documentation).value.length>0||e.documentation&&typeof e.documentation=="string"&&rU(e.documentation).length>0||e.documentation&&typeof e.documentation=="object"&&rU(e.documentation.value).length>0)}renderParameters(e,t,i){const[n,o]=this.getParameterLabelOffsets(t,i),l=document.createElement("span");l.textContent=t.label.substring(0,n);const r=document.createElement("span");r.textContent=t.label.substring(n,o),r.className="parameter active";const a=document.createElement("span");a.textContent=t.label.substring(o),ye(e,l,r,a)}getParameterLabelOffsets(e,t){const i=e.parameters[t];if(i){if(Array.isArray(i.label))return i.label;if(i.label.length){const n=new RegExp(`(\\W|^)${dc(i.label)}(?=\\W|$)`,"g");n.test(e.label);const o=n.lastIndex-i.label.length;return o>=0?[o,n.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return K8.ID}updateMaxHeight(){if(!this.domNodes)return;const t=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=t;const i=this.domNodes.element.getElementsByClassName("phwrapper");i.length&&(i[0].style.maxHeight=t)}},K8=QQ,QQ.ID="editor.widget.parameterHintsWidget",QQ);q8=K8=ndt([Ek(2,wt),Ek(3,za),Ek(4,Zs),Ek(5,lr)],q8);K("editorHoverWidget.highlightForeground",cS,U("editorHoverWidgetHighlightForeground","Foreground color of the active item in the parameter hint."));var ldt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},$8,yQ;let DV=(yQ=class extends de{static get(e){return e.getContribution($8.ID)}constructor(e,t,i){super(),this.editor=e,this.model=this._register(new P8(e,i.signatureHelpProvider)),this._register(this.model.onChangedHints(n=>{var o;n?(this.widget.value.show(),this.widget.value.render(n)):(o=this.widget.rawValue)==null||o.hide()})),this.widget=new Hh(()=>this._register(t.createInstance(q8,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var e;(e=this.widget.rawValue)==null||e.previous()}next(){var e;(e=this.widget.rawValue)==null||e.next()}trigger(e){this.model.trigger(e,0)}},$8=yQ,yQ.ID="editor.controller.parameterHints",yQ);DV=$8=ldt([vce(1,bt),vce(2,lt)],DV);class rdt extends et{constructor(){super({id:"editor.action.triggerParameterHints",label:U("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:H.hasSignatureHelpProvider,kbOpts:{kbExpr:H.editorTextFocus,primary:3082,weight:100}})}run(e,t){const i=DV.get(t);i==null||i.trigger({triggerKind:Fp.Invoke})}}Gi(DV.ID,DV,2);Me(rdt);const Gie=100+75,Eie=Io.bindToContribution(DV.get);Oe(new Eie({id:"closeParameterHints",precondition:YA.Visible,handler:s=>s.cancel(),kbOpts:{weight:Gie,kbExpr:H.focus,primary:9,secondary:[1033]}}));Oe(new Eie({id:"showPrevParameterHint",precondition:Ne.and(YA.Visible,YA.MultipleSignatures),handler:s=>s.previous(),kbOpts:{weight:Gie,kbExpr:H.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}}));Oe(new Eie({id:"showNextParameterHint",precondition:Ne.and(YA.Visible,YA.MultipleSignatures),handler:s=>s.next(),kbOpts:{weight:Gie,kbExpr:H.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));var adt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ddt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class cdt{constructor(e){this.instantiationService=e}init(...e){}}function hdt(s,e){return class extends e{constructor(){super(...arguments),this._autorun=void 0}init(...i){this._autorun=Ga((n,o)=>{const l=dd(s(),n);o.add(this.instantiationService.createInstance(l,...i))})}dispose(){var i;(i=this._autorun)==null||i.dispose()}}}function udt(s){return sz()?hdt(s,e6):s()}let e6=class extends cdt{constructor(e,t){super(t),this.init(e)}};e6=adt([ddt(1,bt)],e6);Gi(ZT.ID,udt(()=>ZT),0);K("editor.placeholder.foreground",d_e,U("placeholderForeground","Foreground color of the placeholder text in the editor."));var mdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},vk=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const c1=new Ke("renameInputVisible",!1,U("renameInputVisible","Whether the rename input widget is visible"));new Ke("renameInputFocused",!1,U("renameInputFocused","Whether the rename input widget is focused"));let t6=class{constructor(e,t,i,n,o,l){this._editor=e,this._acceptKeybindings=t,this._themeService=i,this._keybindingService=n,this._logService=l,this.allowEditorOverflow=!0,this._disposables=new Ze,this._visibleContextKey=c1.bindTo(o),this._isEditingRenameCandidate=!1,this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,this._candidates=new Set,this._beforeFirstInputFieldEditSW=new ol,this._inputWithButton=new pdt,this._disposables.add(this._inputWithButton),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(r=>{r.hasChanged(50)&&this._updateFont()})),this._disposables.add(i.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._inputWithButton.domNode),this._renameCandidateListView=this._disposables.add(new vie(this._domNode,{fontInfo:this._editor.getOption(50),onFocusChange:e=>{this._inputWithButton.input.value=e,this._isEditingRenameCandidate=!1},onSelectionChange:()=>{this._isEditingRenameCandidate=!1,this.acceptInput(!1)}})),this._disposables.add(this._inputWithButton.onDidInputChange(()=>{var e,t,i;((e=this._renameCandidateListView)==null?void 0:e.focusedCandidate)!==void 0&&(this._isEditingRenameCandidate=!0),this._timeBeforeFirstInputFieldEdit??(this._timeBeforeFirstInputFieldEdit=this._beforeFirstInputFieldEditSW.elapsed()),((t=this._renameCandidateProvidersCts)==null?void 0:t.token.isCancellationRequested)===!1&&this._renameCandidateProvidersCts.cancel(),(i=this._renameCandidateListView)==null||i.clearFocus()})),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(e){if(!this._domNode)return;const t=e.getColor(zQ),i=e.getColor(L0e);this._domNode.style.backgroundColor=String(e.getColor(sc)??""),this._domNode.style.boxShadow=t?` 0 0 8px 2px ${t}`:"",this._domNode.style.border=i?`1px solid ${i}`:"",this._domNode.style.color=String(e.getColor(D0e)??"");const n=e.getColor(G0e);this._inputWithButton.domNode.style.backgroundColor=String(e.getColor(pP)??""),this._inputWithButton.input.style.backgroundColor=String(e.getColor(pP)??""),this._inputWithButton.domNode.style.borderWidth=n?"1px":"0px",this._inputWithButton.domNode.style.borderStyle=n?"solid":"none",this._inputWithButton.domNode.style.borderColor=(n==null?void 0:n.toString())??"none"}_updateFont(){if(this._domNode===void 0)return;Yi(this._label!==void 0,"RenameWidget#_updateFont: _label must not be undefined given _domNode is defined"),this._editor.applyFontInfo(this._inputWithButton.input);const e=this._editor.getOption(50);this._label.style.fontSize=`${this._computeLabelFontSize(e.fontSize)}px`}_computeLabelFontSize(e){return e*.8}getPosition(){if(!this._visible||!this._editor.hasModel()||!this._editor.getDomNode())return null;const e=N0(this.getDomNode().ownerDocument.body),t=_s(this._editor.getDomNode()),i=this._getTopForPosition();this._nPxAvailableAbove=i+t.top,this._nPxAvailableBelow=e.height-this._nPxAvailableAbove;const n=this._editor.getOption(67),{totalHeight:o}=AT.getLayoutInfo({lineHeight:n}),l=this._nPxAvailableBelow>o*6?[2,1]:[1,2];return{position:this._position,preference:l}}beforeRender(){var i,n;const[e,t]=this._acceptKeybindings;return this._label.innerText=U({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",(i=this._keybindingService.lookupKeybinding(e))==null?void 0:i.getLabel(),(n=this._keybindingService.lookupKeybinding(t))==null?void 0:n.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(e){if(e===null){this.cancelInput(!0,"afterRender (because position is null)");return}if(!this._editor.hasModel()||!this._editor.getDomNode())return;Yi(this._renameCandidateListView),Yi(this._nPxAvailableAbove!==void 0),Yi(this._nPxAvailableBelow!==void 0);const t=$g(this._inputWithButton.domNode),i=$g(this._label);let n;e===2?n=this._nPxAvailableBelow:n=this._nPxAvailableAbove,this._renameCandidateListView.layout({height:n-i-t,width:ld(this._inputWithButton.domNode)})}acceptInput(e){var t;this._trace("invoking acceptInput"),(t=this._currentAcceptInput)==null||t.call(this,e)}cancelInput(e,t){var i;(i=this._currentCancelInput)==null||i.call(this,e)}focusNextRenameSuggestion(){var e;(e=this._renameCandidateListView)!=null&&e.focusNext()||(this._inputWithButton.input.value=this._currentName)}focusPreviousRenameSuggestion(){var e;(e=this._renameCandidateListView)!=null&&e.focusPrevious()||(this._inputWithButton.input.value=this._currentName)}getInput(e,t,i,n,o){const{start:l,end:r}=this._getSelection(e,t);this._renameCts=o;const a=new Ze;this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,n===void 0?this._inputWithButton.button.style.display="none":(this._inputWithButton.button.style.display="flex",this._requestRenameCandidatesOnce=n,this._requestRenameCandidates(t,!1),a.add(ge(this._inputWithButton.button,"click",()=>this._requestRenameCandidates(t,!0))),a.add(ge(this._inputWithButton.button,De.KEY_DOWN,c=>{const h=new Jn(c);(h.equals(3)||h.equals(10))&&(h.stopPropagation(),h.preventDefault(),this._requestRenameCandidates(t,!0))}))),this._isEditingRenameCandidate=!1,this._domNode.classList.toggle("preview",i),this._position=new oe(e.startLineNumber,e.startColumn),this._currentName=t,this._inputWithButton.input.value=t,this._inputWithButton.input.setAttribute("selectionStart",l.toString()),this._inputWithButton.input.setAttribute("selectionEnd",r.toString()),this._inputWithButton.input.size=Math.max((e.endColumn-e.startColumn)*1.1,20),this._beforeFirstInputFieldEditSW.reset(),a.add(gt(()=>{this._renameCts=void 0,o.dispose(!0)})),a.add(gt(()=>{this._renameCandidateProvidersCts!==void 0&&(this._renameCandidateProvidersCts.dispose(!0),this._renameCandidateProvidersCts=void 0)})),a.add(gt(()=>this._candidates.clear()));const d=new EQ;return d.p.finally(()=>{a.dispose(),this._hide()}),this._currentCancelInput=c=>{var h;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,(h=this._renameCandidateListView)==null||h.clearCandidates(),d.complete(c),!0},this._currentAcceptInput=c=>{this._trace("invoking _currentAcceptInput"),Yi(this._renameCandidateListView!==void 0);const h=this._renameCandidateListView.nCandidates;let u,m;const p=this._renameCandidateListView.focusedCandidate;if(p!==void 0?(this._trace("using new name from renameSuggestion"),u=p,m={k:"renameSuggestion"}):(this._trace("using new name from inputField"),u=this._inputWithButton.input.value,m=this._isEditingRenameCandidate?{k:"userEditedRenameSuggestion"}:{k:"inputField"}),u===t||u.trim().length===0){this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)");return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._renameCandidateListView.clearCandidates(),d.complete({newName:u,wantsPreview:i&&c,stats:{source:m,nRenameSuggestions:h,timeBeforeFirstInputFieldEdit:this._timeBeforeFirstInputFieldEdit,nRenameSuggestionsInvocations:this._nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:this._hadAutomaticRenameSuggestionsInvocation}})},a.add(o.token.onCancellationRequested(()=>this.cancelInput(!0,"cts.token.onCancellationRequested"))),a.add(this._editor.onDidBlurEditorWidget(()=>{var c;return this.cancelInput(!((c=this._domNode)!=null&&c.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")})),this._show(),d.p}_requestRenameCandidates(e,t){if(this._requestRenameCandidatesOnce!==void 0&&(this._renameCandidateProvidersCts!==void 0&&this._renameCandidateProvidersCts.dispose(!0),Yi(this._renameCts),this._inputWithButton.buttonState!=="stop")){this._renameCandidateProvidersCts=new Ws;const i=t?nM.Invoke:nM.Automatic,n=this._requestRenameCandidatesOnce(i,this._renameCandidateProvidersCts.token);if(n.length===0){this._inputWithButton.setSparkleButton();return}t||(this._hadAutomaticRenameSuggestionsInvocation=!0),this._nRenameSuggestionsInvocations+=1,this._inputWithButton.setStopButton(),this._updateRenameCandidates(n,e,this._renameCts.token)}}_getSelection(e,t){Yi(this._editor.hasModel());const i=this._editor.getSelection();let n=0,o=t.length;return!v.isEmpty(i)&&!v.spansMultipleLines(i)&&v.containsRange(e,i)&&(n=Math.max(0,i.startColumn-e.startColumn),o=Math.min(e.endColumn,i.endColumn)-e.startColumn),{start:n,end:o}}_show(){this._trace("invoking _show"),this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._inputWithButton.input.focus(),this._inputWithButton.input.setSelectionRange(parseInt(this._inputWithButton.input.getAttribute("selectionStart")),parseInt(this._inputWithButton.input.getAttribute("selectionEnd")))},100)}async _updateRenameCandidates(e,t,i){const n=(...d)=>this._trace("_updateRenameCandidates",...d);n("start");const o=await sB(Promise.allSettled(e),i);if(this._inputWithButton.setSparkleButton(),o===void 0){n("returning early - received updateRenameCandidates results - undefined");return}const l=o.flatMap(d=>d.status==="fulfilled"&&fp(d.value)?d.value:[]);n(`received updateRenameCandidates results - total (unfiltered) ${l.length} candidates.`);const r=U0(l,d=>d.newSymbolName);n(`distinct candidates - ${r.length} candidates.`);const a=r.filter(({newSymbolName:d})=>d.trim().length>0&&d!==this._inputWithButton.input.value&&d!==t&&!this._candidates.has(d));if(n(`valid distinct candidates - ${l.length} candidates.`),a.forEach(d=>this._candidates.add(d.newSymbolName)),a.length<1){n("returning early - no valid distinct candidates");return}n("setting candidates"),this._renameCandidateListView.setCandidates(a),n("asking editor to re-layout"),this._editor.layoutContentWidget(this)}_hide(){this._trace("invoked _hide"),this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}_getTopForPosition(){const e=this._editor.getVisibleRanges();let t;return e.length>0?t=e[0].startLineNumber:(this._logService.warn("RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty"),t=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(t)}_trace(...e){this._logService.trace("RenameWidget",...e)}};t6=mdt([vk(2,Do),vk(3,dn),vk(4,wt),vk(5,El)],t6);class vie{constructor(e,t){this._disposables=new Ze,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=t.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=t.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),this._listContainer.className="rename-box rename-candidate-list-container",e.appendChild(this._listContainer),this._listWidget=vie._createListWidget(this._listContainer,this._candidateViewHeight,t.fontInfo),this._listWidget.onDidChangeFocus(i=>{i.elements.length===1&&t.onFocusChange(i.elements[0].newSymbolName)},this._disposables),this._listWidget.onDidChangeSelection(i=>{i.elements.length===1&&t.onSelectionChange()},this._disposables),this._disposables.add(this._listWidget.onDidBlur(i=>{this._listWidget.setFocus([])})),this._listWidget.style(eN({listInactiveFocusForeground:FM,listInactiveFocusBackground:ZM}))}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout({height:e,width:t}){this._availableHeight=e,this._minimumWidth=t}setCandidates(e){this._listWidget.splice(0,0,e);const t=this._pickListHeight(this._listWidget.length),i=this._pickListWidth(e);this._listWidget.layout(t,i),this._listContainer.style.height=`${t}px`,this._listContainer.style.width=`${i}px`,Vp(U("renameSuggestionsReceivedAria","Received {0} rename suggestions",e.length))}clearCandidates(){this._listContainer.style.height="0px",this._listContainer.style.width="0px",this._listWidget.splice(0,this._listWidget.length,[])}get nCandidates(){return this._listWidget.length}get focusedCandidate(){if(this._listWidget.length===0)return;const e=this._listWidget.getSelectedElements()[0];if(e!==void 0)return e.newSymbolName;const t=this._listWidget.getFocusedElements()[0];if(t!==void 0)return t.newSymbolName}focusNext(){if(this._listWidget.length===0)return!1;const e=this._listWidget.getFocus();if(e.length===0)return this._listWidget.focusFirst(),this._listWidget.reveal(0),!0;if(e[0]===this._listWidget.length-1)return this._listWidget.setFocus([]),this._listWidget.reveal(0),!1;{this._listWidget.focusNext();const t=this._listWidget.getFocus()[0];return this._listWidget.reveal(t),!0}}focusPrevious(){if(this._listWidget.length===0)return!1;const e=this._listWidget.getFocus();if(e.length===0){this._listWidget.focusLast();const t=this._listWidget.getFocus()[0];return this._listWidget.reveal(t),!0}else{if(e[0]===0)return this._listWidget.setFocus([]),!1;{this._listWidget.focusPrevious();const t=this._listWidget.getFocus()[0];return this._listWidget.reveal(t),!0}}}clearFocus(){this._listWidget.setFocus([])}get _candidateViewHeight(){const{totalHeight:e}=AT.getLayoutInfo({lineHeight:this._lineHeight});return e}_pickListHeight(e){const t=this._candidateViewHeight*e,i=7;return Math.min(t,this._availableHeight,this._candidateViewHeight*i)}_pickListWidth(e){const t=Math.ceil(Math.max(...e.map(n=>n.newSymbolName.length))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,4+16+5+t+10)}static _createListWidget(e,t,i){const n=new class{getTemplateId(l){return"candidate"}getHeight(l){return t}},o=new class{constructor(){this.templateId="candidate"}renderTemplate(l){return new AT(l,i)}renderElement(l,r,a){a.populate(l)}disposeTemplate(l){l.dispose()}};return new Uc("NewSymbolNameCandidates",e,n,[o],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1})}}class pdt{constructor(){this._onDidInputChange=new re,this.onDidInputChange=this._onDidInputChange.event,this._disposables=new Ze}get domNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="rename-input-with-button",this._domNode.style.display="flex",this._domNode.style.flexDirection="row",this._domNode.style.alignItems="center",this._inputNode=document.createElement("input"),this._inputNode.className="rename-input",this._inputNode.type="text",this._inputNode.style.border="none",this._inputNode.setAttribute("aria-label",U("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._inputNode),this._buttonNode=document.createElement("div"),this._buttonNode.className="rename-suggestions-button",this._buttonNode.setAttribute("tabindex","0"),this._buttonGenHoverText=U("generateRenameSuggestionsButton","Generate new name suggestions"),this._buttonCancelHoverText=U("cancelRenameSuggestionsButton","Cancel"),this._buttonHover=rm().setupManagedHover(ca("element"),this._buttonNode,this._buttonGenHoverText),this._disposables.add(this._buttonHover),this._domNode.appendChild(this._buttonNode),this._disposables.add(ge(this.input,De.INPUT,()=>this._onDidInputChange.fire())),this._disposables.add(ge(this.input,De.KEY_DOWN,e=>{const t=new Jn(e);(t.keyCode===15||t.keyCode===17)&&this._onDidInputChange.fire()})),this._disposables.add(ge(this.input,De.CLICK,()=>this._onDidInputChange.fire())),this._disposables.add(ge(this.input,De.FOCUS,()=>{this.domNode.style.outlineWidth="1px",this.domNode.style.outlineStyle="solid",this.domNode.style.outlineOffset="-1px",this.domNode.style.outlineColor="var(--vscode-focusBorder)"})),this._disposables.add(ge(this.input,De.BLUR,()=>{this.domNode.style.outline="none"}))),this._domNode}get input(){return Yi(this._inputNode),this._inputNode}get button(){return Yi(this._buttonNode),this._buttonNode}get buttonState(){return this._buttonState}setSparkleButton(){var e;this._buttonState="sparkle",this._sparkleIcon??(this._sparkleIcon=VA(ke.sparkle)),Fl(this.button),this.button.appendChild(this._sparkleIcon),this.button.setAttribute("aria-label","Generating new name suggestions"),(e=this._buttonHover)==null||e.update(this._buttonGenHoverText),this.input.focus()}setStopButton(){var e;this._buttonState="stop",this._stopIcon??(this._stopIcon=VA(ke.primitiveSquare)),Fl(this.button),this.button.appendChild(this._stopIcon),this.button.setAttribute("aria-label","Cancel generating new name suggestions"),(e=this._buttonHover)==null||e.update(this._buttonCancelHoverText),this.input.focus()}dispose(){this._disposables.dispose()}}const zw=class zw{constructor(e,t){this._domNode=document.createElement("div"),this._domNode.className="rename-box rename-candidate",this._domNode.style.display="flex",this._domNode.style.columnGap="5px",this._domNode.style.alignItems="center",this._domNode.style.height=`${t.lineHeight}px`,this._domNode.style.padding=`${zw._PADDING}px`;const i=document.createElement("div");i.style.display="flex",i.style.alignItems="center",i.style.width=i.style.height=`${t.lineHeight*.8}px`,this._domNode.appendChild(i),this._icon=VA(ke.sparkle),this._icon.style.display="none",i.appendChild(this._icon),this._label=document.createElement("div"),Al(this._label,t),this._domNode.appendChild(this._label),e.appendChild(this._domNode)}populate(e){this._updateIcon(e),this._updateLabel(e)}_updateIcon(e){var i;const t=!!((i=e.tags)!=null&&i.includes(Wj.AIGenerated));this._icon.style.display=t?"inherit":"none"}_updateLabel(e){this._label.innerText=e.newSymbolName}static getLayoutInfo({lineHeight:e}){return{totalHeight:e+zw._PADDING*2}}dispose(){}};zw._PADDING=2;let AT=zw;var gdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},H0=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},i6;class xie{constructor(e,t,i){this.model=e,this.position=t,this._providerRenameIdx=0,this._providers=i.ordered(e)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(e){const t=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const n=this._providers[this._providerRenameIdx];if(!n.resolveRenameLocation)break;const o=await n.resolveRenameLocation(this.model,this.position,e);if(o){if(o.rejectReason){t.push(o.rejectReason);continue}return o}}this._providerRenameIdx=0;const i=this.model.getWordAtPosition(this.position);return i?{range:new v(this.position.lineNumber,i.startColumn,this.position.lineNumber,i.endColumn),text:i.word,rejectReason:t.length>0?t.join(`
- `):void 0}:{range:v.fromPositions(this.position),text:"",rejectReason:t.length>0?t.join(`
- `):void 0}}async provideRenameEdits(e,t){return this._provideRenameEdits(e,this._providerRenameIdx,[],t)}async _provideRenameEdits(e,t,i,n){const o=this._providers[t];if(!o)return{edits:[],rejectReason:i.join(`
- `)};const l=await o.provideRenameEdits(this.model,this.position,e,n);if(l){if(l.rejectReason)return this._provideRenameEdits(e,t+1,i.concat(l.rejectReason),n)}else return this._provideRenameEdits(e,t+1,i.concat(U("no result","No result.")),n);return l}}async function bdt(s,e,t,i){const n=new xie(e,t,s),o=await n.resolveRenameLocation($t.None);return o!=null&&o.rejectReason?{edits:[],rejectReason:o.rejectReason}:n.provideRenameEdits(i,$t.None)}var CQ;let df=(CQ=class{static get(e){return e.getContribution(i6.ID)}constructor(e,t,i,n,o,l,r,a,d){this.editor=e,this._instaService=t,this._notificationService=i,this._bulkEditService=n,this._progressService=o,this._logService=l,this._configService=r,this._languageFeaturesService=a,this._telemetryService=d,this._disposableStore=new Ze,this._cts=new Ws,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(t6,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var p,g;const e=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new Ws,!this.editor.hasModel()){e("editor has no model");return}const t=this.editor.getPosition(),i=new xie(this.editor.getModel(),t,this._languageFeaturesService.renameProvider);if(!i.hasProvider()){e("skeleton has no provider");return}const n=new of(this.editor,5,void 0,this._cts.token);let o;try{e("resolving rename location");const b=i.resolveRenameLocation(n.token);this._progressService.showWhile(b,250),o=await b,e("resolved rename location")}catch(b){b instanceof jh?e("resolve rename location cancelled",JSON.stringify(b,null," ")):(e("resolve rename location failed",b instanceof Error?b:JSON.stringify(b,null," ")),(typeof b=="string"||Ou(b))&&((p=fd.get(this.editor))==null||p.showMessage(b||U("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),t)));return}finally{n.dispose()}if(!o){e("returning early - no loc");return}if(o.rejectReason){e(`returning early - rejected with reason: ${o.rejectReason}`,o.rejectReason),(g=fd.get(this.editor))==null||g.showMessage(o.rejectReason,t);return}if(n.token.isCancellationRequested){e("returning early - cts1 cancelled");return}const l=new of(this.editor,5,o.range,this._cts.token),r=this.editor.getModel(),a=this._languageFeaturesService.newSymbolNamesProvider.all(r),d=await Promise.all(a.map(async b=>[b,await b.supportsAutomaticNewSymbolNamesTriggerKind??!1])),c=(b,f)=>{let Z=d.slice();return b===nM.Automatic&&(Z=Z.filter(([A,N])=>N)),Z.map(([A])=>A.provideNewSymbolNames(r,o.range,b,f))};e("creating rename input field and awaiting its result");const h=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),u=await this._renameWidget.getInput(o.range,o.text,h,a.length>0?c:void 0,l);if(e("received response from rename input field"),a.length>0&&this._reportTelemetry(a.length,r.getLanguageId(),u),typeof u=="boolean"){e(`returning early - rename input field response - ${u}`),u&&this.editor.focus(),l.dispose();return}this.editor.focus(),e("requesting rename edits");const m=sB(i.provideRenameEdits(u.newName,l.token),l.token).then(async b=>{if(!b){e("returning early - no rename edits result");return}if(!this.editor.hasModel()){e("returning early - no model after rename edits are provided");return}if(b.rejectReason){e(`returning early - rejected with reason: ${b.rejectReason}`),this._notificationService.info(b.rejectReason);return}this.editor.setSelection(v.fromPositions(this.editor.getSelection().getPosition())),e("applying edits"),this._bulkEditService.apply(b,{editor:this.editor,showPreview:u.wantsPreview,label:U("label","Renaming '{0}' to '{1}'",o==null?void 0:o.text,u.newName),code:"undoredo.rename",quotableLabel:U("quotableLabel","Renaming {0} to {1}",o==null?void 0:o.text,u.newName),respectAutoSaveConfig:!0}).then(f=>{e("edits applied"),f.ariaSummary&&ra(U("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",o.text,u.newName,f.ariaSummary))}).catch(f=>{e(`error when applying edits ${JSON.stringify(f,null," ")}`),this._notificationService.error(U("rename.failedApply","Rename failed to apply edits")),this._logService.error(f)})},b=>{e("error when providing rename edits",JSON.stringify(b,null," ")),this._notificationService.error(U("rename.failed","Rename failed to compute edits")),this._logService.error(b)}).finally(()=>{l.dispose()});return e("returning rename operation"),this._progressService.showWhile(m,250),m}acceptRenameInput(e){this._renameWidget.acceptInput(e)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}_reportTelemetry(e,t,i){const n=typeof i=="boolean"?{kind:"cancelled",languageId:t,nRenameSuggestionProviders:e}:{kind:"accepted",languageId:t,nRenameSuggestionProviders:e,source:i.stats.source.k,nRenameSuggestions:i.stats.nRenameSuggestions,timeBeforeFirstInputFieldEdit:i.stats.timeBeforeFirstInputFieldEdit,wantsPreview:i.wantsPreview,nRenameSuggestionsInvocations:i.stats.nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:i.stats.hadAutomaticRenameSuggestionsInvocation};this._telemetryService.publicLog2("renameInvokedEvent",n)}},i6=CQ,CQ.ID="editor.contrib.renameController",CQ);df=i6=gdt([H0(1,bt),H0(2,no),H0(3,uB),H0(4,bf),H0(5,El),H0(6,UY),H0(7,lt),H0(8,lr)],df);class Udt extends et{constructor(){super({id:"editor.action.rename",label:U("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:Ne.and(H.writable,H.hasRenameProvider),kbOpts:{kbExpr:H.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(e,t){const i=e.get(zi),[n,o]=Array.isArray(t)&&t||[void 0,void 0];return At.isUri(n)&&oe.isIPosition(o)?i.openCodeEditor({resource:n},i.getActiveCodeEditor()).then(l=>{l&&(l.setPosition(o),l.invokeWithinContext(r=>(this.reportTelemetry(r,l),this.run(r,l))))},vt):super.runCommand(e,t)}run(e,t){const i=e.get(El),n=df.get(t);return n?(i.trace("[RenameAction] got controller, running..."),n.run()):(i.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}}Gi(df.ID,df,4);Me(Udt);const Jie=Io.bindToContribution(df.get);Oe(new Jie({id:"acceptRenameInput",precondition:c1,handler:s=>s.acceptRenameInput(!1),kbOpts:{weight:100+99,kbExpr:Ne.and(H.focus,Ne.not("isComposing")),primary:3}}));Oe(new Jie({id:"acceptRenameInputWithPreview",precondition:Ne.and(c1,Ne.has("config.editor.rename.enablePreview")),handler:s=>s.acceptRenameInput(!0),kbOpts:{weight:100+99,kbExpr:Ne.and(H.focus,Ne.not("isComposing")),primary:2048+3}}));Oe(new Jie({id:"cancelRenameInput",precondition:c1,handler:s=>s.cancelRenameInput(),kbOpts:{weight:100+99,kbExpr:H.focus,primary:9,secondary:[1033]}}));Xn(class extends da{constructor(){super({id:"focusNextRenameSuggestion",title:{...kt("focusNextRenameSuggestion","Focus Next Rename Suggestion")},precondition:c1,keybinding:[{primary:18,weight:100+99}]})}run(e){const t=e.get(zi).getFocusedCodeEditor();if(!t)return;const i=df.get(t);i&&i.focusNextRenameSuggestion()}});Xn(class extends da{constructor(){super({id:"focusPreviousRenameSuggestion",title:{...kt("focusPreviousRenameSuggestion","Focus Previous Rename Suggestion")},precondition:c1,keybinding:[{primary:16,weight:100+99}]})}run(e){const t=e.get(zi).getFocusedCodeEditor();if(!t)return;const i=df.get(t);i&&i.focusPreviousRenameSuggestion()}});Ya("_executeDocumentRenameProvider",function(s,e,t,...i){const[n]=i;Yi(typeof n=="string");const{renameProvider:o}=s.get(lt);return bdt(o,e,t,n)});Ya("_executePrepareRename",async function(s,e,t){const{renameProvider:i}=s.get(lt),o=await new xie(e,t,i).resolveRenameLocation($t.None);if(o!=null&&o.rejectReason)throw new Error(o.rejectReason);return o});Vs.as(nu.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:U("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var fdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},xce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},XT;let gJ=(XT=class extends de{constructor(e,t,i){super(),this.editor=e,this.languageConfigurationService=t,this.editorWorkerService=i,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(e.getOption(73)),this.computePromise=null,this.currentOccurrences={},this._register(e.onDidChangeModel(n=>{this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(e.onDidChangeModelLanguage(n=>{this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(t.onDidChange(n=>{var l;const o=(l=this.editor.getModel())==null?void 0:l.getLanguageId();o&&n.affects(o)&&(this.currentOccurrences={},this.options=this.createOptions(e.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(e.onDidChangeConfiguration(n=>{this.options&&!n.hasChanged(73)||(this.options=this.createOptions(e.getOption(73)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(this.editor.onDidChangeModelContent(n=>{this.computeSectionHeaders.schedule()})),this._register(e.onDidChangeModelTokens(n=>{this.computeSectionHeaders.isScheduled()||this.computeSectionHeaders.schedule(1e3)})),this.computeSectionHeaders=this._register(new Rn(()=>{this.findSectionHeaders()},250)),this.computeSectionHeaders.schedule(0)}createOptions(e){if(!e||!this.editor.hasModel())return;const t=this.editor.getModel().getLanguageId();if(!t)return;const i=this.languageConfigurationService.getLanguageConfiguration(t).comments,n=this.languageConfigurationService.getLanguageConfiguration(t).foldingRules;if(!(!i&&!(n!=null&&n.markers)))return{foldingRules:n,findMarkSectionHeaders:e.showMarkSectionHeaders,findRegionSectionHeaders:e.showRegionSectionHeaders}}findSectionHeaders(){var i,n;if(!this.editor.hasModel()||!((i=this.options)!=null&&i.findMarkSectionHeaders)&&!((n=this.options)!=null&&n.findRegionSectionHeaders))return;const e=this.editor.getModel();if(e.isDisposed()||e.isTooLargeForSyncing())return;const t=e.getVersionId();this.editorWorkerService.findSectionHeaders(e.uri,this.options).then(o=>{e.isDisposed()||e.getVersionId()!==t||this.updateDecorations(o)})}updateDecorations(e){const t=this.editor.getModel();t&&(e=e.filter(o=>{if(!o.shouldBeInComments)return!0;const l=t.validateRange(o.range),r=t.tokenization.getLineTokens(l.startLineNumber),a=r.findTokenIndexAtOffset(l.startColumn-1),d=r.getStandardTokenType(a);return r.getLanguageId(a)===t.getLanguageId()&&d===1}));const i=Object.values(this.currentOccurrences).map(o=>o.decorationId),n=e.map(o=>Fdt(o));this.editor.changeDecorations(o=>{const l=o.deltaDecorations(i,n);this.currentOccurrences={};for(let r=0,a=l.length;r<a;r++){const d={sectionHeader:e[r],decorationId:l[r]};this.currentOccurrences[d.decorationId]=d}})}stop(){this.computeSectionHeaders.cancel(),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop(),this.decorations.clear()}},XT.ID="editor.sectionHeaderDetector",XT);gJ=fdt([xce(1,Qs),xce(2,_a)],gJ);function Fdt(s){return{range:s.range,options:Ot.createDynamic({description:"section-header",stickiness:3,collapseOnReplaceEdit:!0,minimap:{color:void 0,position:1,sectionHeaderStyle:s.hasSeparatorLine?2:1,sectionHeaderText:s.text}})}}Gi(gJ.ID,gJ,1);function Zdt(s){for(let e=0,t=s.length;e<t;e+=4){const i=s[e+0],n=s[e+1],o=s[e+2],l=s[e+3];s[e+0]=l,s[e+1]=o,s[e+2]=n,s[e+3]=i}}function Adt(s){const e=new Uint8Array(s.buffer,s.byteOffset,s.length*4);return ype()||Zdt(e),pY.wrap(e)}function FAe(s){const e=new Uint32Array(Ndt(s));let t=0;if(e[t++]=s.id,s.type==="full")e[t++]=1,e[t++]=s.data.length,e.set(s.data,t),t+=s.data.length;else{e[t++]=2,e[t++]=s.deltas.length;for(const i of s.deltas)e[t++]=i.start,e[t++]=i.deleteCount,i.data?(e[t++]=i.data.length,e.set(i.data,t),t+=i.data.length):e[t++]=0}return Adt(e)}function Ndt(s){let e=0;if(e+=1+1,s.type==="full")e+=1+s.data.length;else{e+=1,e+=(1+1+1)*s.deltas.length;for(const t of s.deltas)t.data&&(e+=t.data.length)}return e}function Vz(s){return s&&!!s.data}function ZAe(s){return s&&Array.isArray(s.edits)}class Rdt{constructor(e,t,i){this.provider=e,this.tokens=t,this.error=i}}function AAe(s,e){return s.has(e)}function Sdt(s,e){const t=s.orderedGroups(e);return t.length>0?t[0]:[]}async function NAe(s,e,t,i,n){const o=Sdt(s,e),l=await Promise.all(o.map(async r=>{let a,d=null;try{a=await r.provideDocumentSemanticTokens(e,r===t?i:null,n)}catch(c){d=c,a=null}return(!a||!Vz(a)&&!ZAe(a))&&(a=null),new Rdt(r,a,d)}));for(const r of l){if(r.error)throw r.error;if(r.tokens)return r}return l.length>0?l[0]:null}function Wdt(s,e){const t=s.orderedGroups(e);return t.length>0?t[0]:null}class Vdt{constructor(e,t){this.provider=e,this.tokens=t}}function Qdt(s,e){return s.has(e)}function RAe(s,e){const t=s.orderedGroups(e);return t.length>0?t[0]:[]}async function Xie(s,e,t,i){const n=RAe(s,e),o=await Promise.all(n.map(async l=>{let r;try{r=await l.provideDocumentRangeSemanticTokens(e,t,i)}catch(a){Os(a),r=null}return(!r||!Vz(r))&&(r=null),new Vdt(l,r)}));for(const l of o)if(l.tokens)return l;return o.length>0?o[0]:null}Bi.registerCommand("_provideDocumentSemanticTokensLegend",async(s,...e)=>{const[t]=e;Yi(t instanceof At);const i=s.get(es).getModel(t);if(!i)return;const{documentSemanticTokensProvider:n}=s.get(lt),o=Wdt(n,i);return o?o[0].getLegend():s.get(On).executeCommand("_provideDocumentRangeSemanticTokensLegend",t)});Bi.registerCommand("_provideDocumentSemanticTokens",async(s,...e)=>{const[t]=e;Yi(t instanceof At);const i=s.get(es).getModel(t);if(!i)return;const{documentSemanticTokensProvider:n}=s.get(lt);if(!AAe(n,i))return s.get(On).executeCommand("_provideDocumentRangeSemanticTokens",t,i.getFullModelRange());const o=await NAe(n,i,null,null,$t.None);if(!o)return;const{provider:l,tokens:r}=o;if(!r||!Vz(r))return;const a=FAe({id:0,type:"full",data:r.data});return r.resultId&&l.releaseDocumentSemanticTokens(r.resultId),a});Bi.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(s,...e)=>{const[t,i]=e;Yi(t instanceof At);const n=s.get(es).getModel(t);if(!n)return;const{documentRangeSemanticTokensProvider:o}=s.get(lt),l=RAe(o,n);if(l.length===0)return;if(l.length===1)return l[0].getLegend();if(!i||!v.isIRange(i))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),l[0].getLegend();const r=await Xie(o,n,v.lift(i),$t.None);if(r)return r.provider.getLegend()});Bi.registerCommand("_provideDocumentRangeSemanticTokens",async(s,...e)=>{const[t,i]=e;Yi(t instanceof At),Yi(v.isIRange(i));const n=s.get(es).getModel(t);if(!n)return;const{documentRangeSemanticTokensProvider:o}=s.get(lt),l=await Xie(o,n,v.lift(i),$t.None);if(!(!l||!l.tokens))return FAe({id:0,type:"full",data:l.tokens.data})});const Yie="editor.semanticHighlighting";function TD(s,e,t){var n;const i=(n=t.getValue(Yie,{overrideIdentifier:s.getLanguageId(),resource:s.uri}))==null?void 0:n.enabled;return typeof i=="boolean"?i:e.getColorTheme().semanticHighlighting}var SAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},np=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},cb;let n6=class extends de{constructor(e,t,i,n,o,l){super(),this._watchers=Object.create(null);const r=c=>{this._watchers[c.uri.toString()]=new s6(c,e,i,o,l)},a=(c,h)=>{h.dispose(),delete this._watchers[c.uri.toString()]},d=()=>{for(const c of t.getModels()){const h=this._watchers[c.uri.toString()];TD(c,i,n)?h||r(c):h&&a(c,h)}};t.getModels().forEach(c=>{TD(c,i,n)&&r(c)}),this._register(t.onModelAdded(c=>{TD(c,i,n)&&r(c)})),this._register(t.onModelRemoved(c=>{const h=this._watchers[c.uri.toString()];h&&a(c,h)})),this._register(n.onDidChangeConfiguration(c=>{c.affectsConfiguration(Yie)&&d()})),this._register(i.onDidColorThemeChange(d))}dispose(){for(const e of Object.values(this._watchers))e.dispose();super.dispose()}};n6=SAe([np(0,FY),np(1,es),np(2,Do),np(3,li),np(4,gc),np(5,lt)],n6);var bA;let s6=(bA=class extends de{constructor(e,t,i,n,o){super(),this._semanticTokensStylingService=t,this._isDisposed=!1,this._model=e,this._provider=o.documentSemanticTokensProvider,this._debounceInformation=n.for(this._provider,"DocumentSemanticTokens",{min:cb.REQUEST_MIN_DELAY,max:cb.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new Rn(()=>this._fetchDocumentSemanticTokensNow(),cb.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const l=()=>{Tn(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const r of this._provider.all(e))typeof r.onDidChange=="function"&&this._documentProvidersChangeListeners.push(r.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};l(),this._register(this._provider.onDidChange(()=>{l(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(i.onDidColorThemeChange(r=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),Tn(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!AAe(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const e=new Ws,t=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,i=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,n=NAe(this._provider,this._model,t,i,e.token);this._currentDocumentRequestCancellationTokenSource=e,this._providersChangedDuringRequest=!1;const o=[],l=this._model.onDidChangeContent(a=>{o.push(a)}),r=new ol(!1);n.then(a=>{if(this._debounceInformation.update(this._model,r.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,l.dispose(),!a)this._setDocumentSemanticTokens(null,null,null,o);else{const{provider:d,tokens:c}=a,h=this._semanticTokensStylingService.getStyling(d);this._setDocumentSemanticTokens(d,c||null,h,o)}},a=>{a&&(th(a)||typeof a.message=="string"&&a.message.indexOf("busy")!==-1)||vt(a),this._currentDocumentRequestCancellationTokenSource=null,l.dispose(),(o.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(e,t,i,n,o){o=Math.min(o,i.length-n,e.length-t);for(let l=0;l<o;l++)i[n+l]=e[t+l]}_setDocumentSemanticTokens(e,t,i,n){const o=this._currentDocumentResponse,l=()=>{(n.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){e&&t&&e.releaseDocumentSemanticTokens(t.resultId);return}if(!e||!i){this._model.tokenization.setSemanticTokens(null,!1);return}if(!t){this._model.tokenization.setSemanticTokens(null,!0),l();return}if(ZAe(t)){if(!o){this._model.tokenization.setSemanticTokens(null,!0);return}if(t.edits.length===0)t={resultId:t.resultId,data:o.data};else{let r=0;for(const u of t.edits)r+=(u.data?u.data.length:0)-u.deleteCount;const a=o.data,d=new Uint32Array(a.length+r);let c=a.length,h=d.length;for(let u=t.edits.length-1;u>=0;u--){const m=t.edits[u];if(m.start>a.length){i.warnInvalidEditStart(o.resultId,t.resultId,u,m.start,a.length),this._model.tokenization.setSemanticTokens(null,!0);return}const p=c-(m.start+m.deleteCount);p>0&&(cb._copy(a,c-p,d,h-p,p),h-=p),m.data&&(cb._copy(m.data,0,d,h-m.data.length,m.data.length),h-=m.data.length),c=m.start}c>0&&cb._copy(a,0,d,0,c),t={resultId:t.resultId,data:d}}}if(Vz(t)){this._currentDocumentResponse=new ydt(e,t.resultId,t.data);const r=F0e(t,i,this._model.getLanguageId());if(n.length>0)for(const a of n)for(const d of r)for(const c of a.changes)d.applyEdit(c.range,c.text);this._model.tokenization.setSemanticTokens(r,!0)}else this._model.tokenization.setSemanticTokens(null,!0);l()}},cb=bA,bA.REQUEST_MIN_DELAY=300,bA.REQUEST_MAX_DELAY=2e3,bA);s6=cb=SAe([np(1,FY),np(2,Do),np(3,gc),np(4,lt)],s6);class ydt{constructor(e,t,i){this.provider=e,this.resultId=t,this.data=i}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}i1(n6);var Cdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},$1=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},YT;let bJ=(YT=class extends de{constructor(e,t,i,n,o,l){super(),this._semanticTokensStylingService=t,this._themeService=i,this._configurationService=n,this._editor=e,this._provider=l.documentRangeSemanticTokensProvider,this._debounceInformation=o.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new Rn(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const r=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange(()=>{r()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),r()})),this._register(this._editor.onDidChangeModelContent(a=>{this._cancelAll(),r()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),r()})),this._register(this._configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration(Yie)&&(this._cancelAll(),r())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),r()})),r()}_cancelAll(){for(const e of this._outstandingRequests)e.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(e){for(let t=0,i=this._outstandingRequests.length;t<i;t++)if(this._outstandingRequests[t]===e){this._outstandingRequests.splice(t,1);return}}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const e=this._editor.getModel();if(e.tokenization.hasCompleteSemanticTokens())return;if(!TD(e,this._themeService,this._configurationService)){e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1);return}if(!Qdt(this._provider,e)){e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1);return}const t=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(t.map(i=>this._requestRange(e,i)))}_requestRange(e,t){const i=e.getVersionId(),n=Xo(l=>Promise.resolve(Xie(this._provider,e,t,l))),o=new ol(!1);return n.then(l=>{if(this._debounceInformation.update(e,o.elapsed()),!l||!l.tokens||e.isDisposed()||e.getVersionId()!==i)return;const{provider:r,tokens:a}=l,d=this._semanticTokensStylingService.getStyling(r);e.tokenization.setPartialSemanticTokens(t,F0e(a,d,e.getLanguageId()))}).then(()=>this._removeOutstandingRequest(n),()=>this._removeOutstandingRequest(n)),n}},YT.ID="editor.contrib.viewportSemanticTokens",YT);bJ=Cdt([$1(1,FY),$1(2,Do),$1(3,li),$1(4,gc),$1(5,lt)],bJ);Gi(bJ.ID,bJ,1);class wdt{constructor(e=!0){this.selectSubwords=e}provideSelectionRanges(e,t){const i=[];for(const n of t){const o=[];i.push(o),this.selectSubwords&&this._addInWordRanges(o,e,n),this._addWordRanges(o,e,n),this._addWhitespaceLine(o,e,n),o.push({range:e.getFullModelRange()})}return i}_addInWordRanges(e,t,i){const n=t.getWordAtPosition(i);if(!n)return;const{word:o,startColumn:l}=n,r=i.column-l;let a=r,d=r,c=0;for(;a>=0;a--){const h=o.charCodeAt(a);if(a!==r&&(h===95||h===45))break;if(aU(h)&&$m(c))break;c=h}for(a+=1;d<o.length;d++){const h=o.charCodeAt(d);if($m(h)&&aU(c))break;if(h===95||h===45)break;c=h}a<d&&e.push({range:new v(i.lineNumber,l+a,i.lineNumber,l+d)})}_addWordRanges(e,t,i){const n=t.getWordAtPosition(i);n&&e.push({range:new v(i.lineNumber,n.startColumn,i.lineNumber,n.endColumn)})}_addWhitespaceLine(e,t,i){t.getLineLength(i.lineNumber)>0&&t.getLineFirstNonWhitespaceColumn(i.lineNumber)===0&&t.getLineLastNonWhitespaceColumn(i.lineNumber)===0&&e.push({range:new v(i.lineNumber,1,i.lineNumber,t.getLineMaxColumn(i.lineNumber))})}}var Mdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Tdt=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},o6;class zie{constructor(e,t){this.index=e,this.ranges=t}mov(e){const t=this.index+(e?1:-1);if(t<0||t>=this.ranges.length)return this;const i=new zie(t,this.ranges);return i.ranges[t].equalsRange(this.ranges[this.index])?i.mov(e):i}}var wQ;let NT=(wQ=class{static get(e){return e.getContribution(o6.ID)}constructor(e,t){this._editor=e,this._languageFeaturesService=t,this._ignoreSelection=!1}dispose(){var e;(e=this._selectionListener)==null||e.dispose()}async run(e){if(!this._editor.hasModel())return;const t=this._editor.getSelections(),i=this._editor.getModel();if(this._state||await VAe(this._languageFeaturesService.selectionRangeProvider,i,t.map(o=>o.getPosition()),this._editor.getOption(114),$t.None).then(o=>{var l;if(!(!Sr(o)||o.length!==t.length)&&!(!this._editor.hasModel()||!Fs(this._editor.getSelections(),t,(r,a)=>r.equalsSelection(a)))){for(let r=0;r<o.length;r++)o[r]=o[r].filter(a=>a.containsPosition(t[r].getStartPosition())&&a.containsPosition(t[r].getEndPosition())),o[r].unshift(t[r]);this._state=o.map(r=>new zie(0,r)),(l=this._selectionListener)==null||l.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var r;this._ignoreSelection||((r=this._selectionListener)==null||r.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(o=>o.mov(e));const n=this._state.map(o=>dt.fromPositions(o.ranges[o.index].getStartPosition(),o.ranges[o.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(n)}finally{this._ignoreSelection=!1}}},o6=wQ,wQ.ID="editor.contrib.smartSelectController",wQ);NT=o6=Mdt([Tdt(1,lt)],NT);class WAe extends et{constructor(e,t){super(t),this._forward=e}async run(e,t){const i=NT.get(t);i&&await i.run(this._forward)}}class Bdt extends WAe{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:U("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"1_basic",title:U({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}}Bi.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class Ldt extends WAe{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:U("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:at.MenubarSelectionMenu,group:"1_basic",title:U({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}}Gi(NT.ID,NT,4);Me(Bdt);Me(Ldt);async function VAe(s,e,t,i,n){const o=s.all(e).concat(new wdt(i.selectSubwords));o.length===1&&o.unshift(new eJ);const l=[],r=[];for(const a of o)l.push(Promise.resolve(a.provideSelectionRanges(e,t,n)).then(d=>{if(Sr(d)&&d.length===t.length)for(let c=0;c<t.length;c++){r[c]||(r[c]=[]);for(const h of d[c])v.isIRange(h.range)&&v.containsPosition(h.range,t[c])&&r[c].push(v.lift(h.range))}},Os));return await Promise.all(l),r.map(a=>{if(a.length===0)return[];a.sort((u,m)=>oe.isBefore(u.getStartPosition(),m.getStartPosition())?1:oe.isBefore(m.getStartPosition(),u.getStartPosition())||oe.isBefore(u.getEndPosition(),m.getEndPosition())?-1:oe.isBefore(m.getEndPosition(),u.getEndPosition())?1:0);const d=[];let c;for(const u of a)(!c||v.containsRange(u,c)&&!v.equalsRange(u,c))&&(d.push(u),c=u);if(!i.selectLeadingAndTrailingWhitespace)return d;const h=[d[0]];for(let u=1;u<d.length;u++){const m=d[u-1],p=d[u];if(p.startLineNumber!==m.startLineNumber||p.endLineNumber!==m.endLineNumber){const g=new v(m.startLineNumber,e.getLineFirstNonWhitespaceColumn(m.startLineNumber),m.endLineNumber,e.getLineLastNonWhitespaceColumn(m.endLineNumber));g.containsRange(m)&&!g.equalsRange(m)&&p.containsRange(g)&&!p.equalsRange(g)&&h.push(g);const b=new v(m.startLineNumber,1,m.endLineNumber,e.getLineMaxColumn(m.endLineNumber));b.containsRange(m)&&!b.equalsRange(g)&&p.containsRange(b)&&!p.equalsRange(b)&&h.push(b)}h.push(p)}return h})}Bi.registerCommand("_executeSelectionRangeProvider",async function(s,...e){const[t,i]=e;Yi(At.isUri(t));const n=s.get(lt).selectionRangeProvider,o=await s.get(Xa).createModelReference(t);try{return VAe(n,o.object.textEditorModel,i,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},$t.None)}finally{o.dispose()}});const kdt=Object.freeze({View:kt("view","View"),Help:kt("help","Help"),Test:kt("test","Test"),File:kt("file","File"),Preferences:kt("preferences","Preferences"),Developer:kt({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer")});class XC{constructor(e,t,i,n=null){this.startLineNumbers=e,this.endLineNumbers=t,this.lastLineRelativePosition=i,this.showEndForLine=n}equals(e){return!!e&&this.lastLineRelativePosition===e.lastLineRelativePosition&&this.showEndForLine===e.showEndForLine&&Fs(this.startLineNumbers,e.startLineNumbers)&&Fs(this.endLineNumbers,e.endLineNumbers)}static get Empty(){return new XC([],[],0)}}const Jce=B0("stickyScrollViewLayer",{createHTML:s=>s}),L_="data-sticky-line-index",Xce="data-sticky-is-line",Idt="data-sticky-is-line-number",Yce="data-sticky-is-folding-icon";class Ddt extends de{constructor(e){super(),this._editor=e,this._foldingIconStore=new Ze,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(67),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",e instanceof tu),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const t=()=>{this._linesDomNode.style.left=this._editor.getOption(116).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(116)&&t(),i.hasChanged(67)&&(this._lineHeight=this._editor.getOption(67))})),this._register(this._editor.onDidScrollChange(i=>{i.scrollLeftChanged&&t(),i.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{t(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),t(),this._register(this._editor.onDidLayoutChange(i=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(e){return this._renderedStickyLines.find(t=>t.lineNumber===e)}getCurrentLines(){return this._lineNumbers}setState(e,t,i){if(i===void 0&&(!this._previousState&&!e||this._previousState&&this._previousState.equals(e)))return;const n=this._isWidgetHeightZero(e),o=n?void 0:e,l=n?0:this._findLineToRebuildWidgetFrom(e,i);this._renderRootNode(o,t,l),this._previousState=e}_isWidgetHeightZero(e){if(!e)return!0;const t=e.startLineNumbers.length*this._lineHeight+e.lastLineRelativePosition;if(t>0){this._lastLineRelativePosition=e.lastLineRelativePosition;const i=[...e.startLineNumbers];e.showEndForLine!==null&&(i[e.showEndForLine]=e.endLineNumbers[e.showEndForLine]),this._lineNumbers=i}else this._lastLineRelativePosition=0,this._lineNumbers=[];return t===0}_findLineToRebuildWidgetFrom(e,t){if(!e||!this._previousState)return 0;if(t!==void 0)return t;const i=this._previousState,n=e.startLineNumbers.findIndex(o=>!i.startLineNumbers.includes(o));return n===-1?0:n}_updateWidgetWidth(){const e=this._editor.getLayoutInfo(),t=e.contentLeft;this._lineNumbersDomNode.style.width=`${t}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-e.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${e.width-e.verticalScrollbarWidth}px`}_clearStickyLinesFromLine(e){this._foldingIconStore.clear();for(let t=e;t<this._renderedStickyLines.length;t++){const i=this._renderedStickyLines[t];i.lineNumberDomNode.remove(),i.lineDomNode.remove()}this._renderedStickyLines=this._renderedStickyLines.slice(0,e),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(e){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${e?.5:0}s`)}_setFoldingIconsVisibility(e){for(const t of this._renderedStickyLines){const i=t.foldingIcon;i&&i.setVisible(e?!0:i.isCollapsed)}}async _renderRootNode(e,t,i){if(this._clearStickyLinesFromLine(i),!e)return;for(const r of this._renderedStickyLines)this._updateTopAndZIndexOfStickyLine(r);const n=this._editor.getLayoutInfo(),o=this._lineNumbers.slice(i);for(const[r,a]of o.entries()){const d=this._renderChildNode(r+i,a,t,n);d&&(this._linesDomNode.appendChild(d.lineDomNode),this._lineNumbersDomNode.appendChild(d.lineNumberDomNode),this._renderedStickyLines.push(d))}t&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const l=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height=`${l}px`,this._linesDomNodeScrollable.style.height=`${l}px`,this._rootDomNode.style.height=`${l}px`,this._rootDomNode.style.marginLeft="0px",this._minContentWidthInPx=Math.max(...this._renderedStickyLines.map(r=>r.scrollWidth))+n.verticalScrollbarWidth,this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){this._editor.getOption(111)==="mouseover"&&(this._foldingIconStore.add(ge(this._lineNumbersDomNode,De.MOUSE_ENTER,()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(ge(this._lineNumbersDomNode,De.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(e,t,i,n){const o=this._editor._getViewModel();if(!o)return;const l=o.coordinatesConverter.convertModelPositionToViewPosition(new oe(t,1)).lineNumber,r=o.getViewLineRenderingData(l),a=this._editor.getOption(68);let d;try{d=qr.filter(r.inlineDecorations,l,r.minColumn,r.maxColumn)}catch{d=[]}const c=new Zf(!0,!0,r.content,r.continuesWithWrappedLine,r.isBasicASCII,r.containsRTL,0,r.tokens,d,r.tabSize,r.startVisibleColumn,1,1,1,500,"none",!0,!0,null),h=new XQ(2e3),u=SB(c,h);let m;Jce?m=Jce.createHTML(h.build()):m=h.build();const p=document.createElement("span");p.setAttribute(L_,String(e)),p.setAttribute(Xce,""),p.setAttribute("role","listitem"),p.tabIndex=0,p.className="sticky-line-content",p.classList.add(`stickyLine${t}`),p.style.lineHeight=`${this._lineHeight}px`,p.innerHTML=m;const g=document.createElement("span");g.setAttribute(L_,String(e)),g.setAttribute(Idt,""),g.className="sticky-line-number",g.style.lineHeight=`${this._lineHeight}px`;const b=n.contentLeft;g.style.width=`${b}px`;const f=document.createElement("span");a.renderType===1||a.renderType===3&&t%10===0?f.innerText=t.toString():a.renderType===2&&(f.innerText=Math.abs(t-this._editor.getPosition().lineNumber).toString()),f.className="sticky-line-number-inner",f.style.lineHeight=`${this._lineHeight}px`,f.style.width=`${n.lineNumbersWidth}px`,f.style.paddingLeft=`${n.lineNumbersLeft}px`,g.appendChild(f);const Z=this._renderFoldingIconForLine(i,t);Z&&g.appendChild(Z.domNode),this._editor.applyFontInfo(p),this._editor.applyFontInfo(f),g.style.lineHeight=`${this._lineHeight}px`,p.style.lineHeight=`${this._lineHeight}px`,g.style.height=`${this._lineHeight}px`,p.style.height=`${this._lineHeight}px`;const A=new Gdt(e,t,p,g,Z,u.characterMapping,p.scrollWidth);return this._updateTopAndZIndexOfStickyLine(A)}_updateTopAndZIndexOfStickyLine(e){var c;const t=e.index,i=e.lineDomNode,n=e.lineNumberDomNode,o=t===this._lineNumbers.length-1,l="0",r="1";i.style.zIndex=o?l:r,n.style.zIndex=o?l:r;const a=`${t*this._lineHeight+this._lastLineRelativePosition+((c=e.foldingIcon)!=null&&c.isCollapsed?1:0)}px`,d=`${t*this._lineHeight}px`;return i.style.top=o?a:d,n.style.top=o?a:d,e}_renderFoldingIconForLine(e,t){const i=this._editor.getOption(111);if(!e||i==="never")return;const n=e.regions,o=n.findRange(t),l=n.getStartLineNumber(o);if(!(t===l))return;const a=n.isCollapsed(o),d=new Edt(a,l,n.getEndLineNumber(o),this._lineHeight);return d.setVisible(this._isOnGlyphMargin?!0:a||i==="always"),d.domNode.setAttribute(Yce,""),d}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(e){0<=e&&e<this._renderedStickyLines.length&&this._renderedStickyLines[e].lineDomNode.focus()}getEditorPositionFromNode(e){if(!e||e.children.length>0)return null;const t=this._getRenderedStickyLineFromChildDomNode(e);if(!t)return null;const i=Fte(t.characterMapping,e,0);return new oe(t.lineNumber,i)}getLineNumberFromChildDomNode(e){var t;return((t=this._getRenderedStickyLineFromChildDomNode(e))==null?void 0:t.lineNumber)??null}_getRenderedStickyLineFromChildDomNode(e){const t=this.getLineIndexFromChildDomNode(e);return t===null||t<0||t>=this._renderedStickyLines.length?null:this._renderedStickyLines[t]}getLineIndexFromChildDomNode(e){const t=this._getAttributeValue(e,L_);return t?parseInt(t,10):null}isInStickyLine(e){return this._getAttributeValue(e,Xce)!==void 0}isInFoldingIconDomNode(e){return this._getAttributeValue(e,Yce)!==void 0}_getAttributeValue(e,t){for(;e&&e!==this._rootDomNode;){const i=e.getAttribute(t);if(i!==null)return i;e=e.parentElement}}}class Gdt{constructor(e,t,i,n,o,l,r){this.index=e,this.lineNumber=t,this.lineDomNode=i,this.lineNumberDomNode=n,this.foldingIcon=o,this.characterMapping=l,this.scrollWidth=r}}class Edt{constructor(e,t,i,n){this.isCollapsed=e,this.foldingStartLine=t,this.foldingEndLine=i,this.dimension=n,this.domNode=document.createElement("div"),this.domNode.style.width=`${n}px`,this.domNode.style.height=`${n}px`,this.domNode.className=Qt.asClassName(e?Xx:Jx)}setVisible(e){this.domNode.style.cursor=e?"pointer":"default",this.domNode.style.opacity=e?"1":"0"}}class YC{constructor(e,t){this.startLineNumber=e,this.endLineNumber=t}}class UJ{constructor(e,t,i){this.range=e,this.children=t,this.parent=i}}class QAe{constructor(e,t,i,n){this.uri=e,this.version=t,this.element=i,this.outlineProviderId=n}}var Qz=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},RT=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},zC;(function(s){s.OUTLINE_MODEL="outlineModel",s.FOLDING_PROVIDER_MODEL="foldingProviderModel",s.INDENTATION_MODEL="indentationModel"})(zC||(zC={}));var ZU;(function(s){s[s.VALID=0]="VALID",s[s.INVALID=1]="INVALID",s[s.CANCELED=2]="CANCELED"})(ZU||(ZU={}));let l6=class extends de{constructor(e,t,i,n){switch(super(),this._editor=e,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new Hc(300)),this._updateOperation=this._register(new Ze),this._editor.getOption(116).defaultModel){case zC.OUTLINE_MODEL:this._modelProviders.push(new r6(this._editor,n));case zC.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new d6(this._editor,t,n));case zC.INDENTATION_MODEL:this._modelProviders.push(new a6(this._editor,i));break}}dispose(){this._modelProviders.forEach(e=>e.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(e){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const t of this._modelProviders){const{statusPromise:i,modelPromise:n}=t.computeStickyModel(e);this._modelPromise=n;const o=await i;if(this._modelPromise!==n)return null;switch(o){case ZU.CANCELED:return this._updateOperation.clear(),null;case ZU.VALID:return t.stickyModel}}return null}).catch(t=>(vt(t),null))}};l6=Qz([RT(2,bt),RT(3,lt)],l6);class yAe extends de{constructor(e){super(),this._editor=e,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,ZU.INVALID}computeStickyModel(e){if(e.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const t=Xo(i=>this.createModelFromProvider(i));return{statusPromise:t.then(i=>this.isModelValid(i)?e.isCancellationRequested?ZU.CANCELED:(this._stickyModel=this.createStickyModel(e,i),ZU.VALID):this._invalid()).then(void 0,i=>(vt(i),ZU.CANCELED)),modelPromise:t}}isModelValid(e){return!0}isProviderValid(){return!0}}let r6=class extends yAe{constructor(e,t){super(e),this._languageFeaturesService=t}createModelFromProvider(e){return Lg.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),e)}createStickyModel(e,t){var l;const{stickyOutlineElement:i,providerID:n}=this._stickyModelFromOutlineModel(t,(l=this._stickyModel)==null?void 0:l.outlineProviderId),o=this._editor.getModel();return new QAe(o.uri,o.getVersionId(),i,n)}isModelValid(e){return e&&e.children.size>0}_stickyModelFromOutlineModel(e,t){let i;if(Ti.first(e.children.values())instanceof HZe){const r=Ti.find(e.children.values(),a=>a.id===t);if(r)i=r.children;else{let a="",d=-1,c;for(const[h,u]of e.children.entries()){const m=this._findSumOfRangesOfGroup(u);m>d&&(c=u,d=m,a=u.id)}t=a,i=c.children}}else i=e.children;const n=[],o=Array.from(i.values()).sort((r,a)=>{const d=new YC(r.symbol.range.startLineNumber,r.symbol.range.endLineNumber),c=new YC(a.symbol.range.startLineNumber,a.symbol.range.endLineNumber);return this._comparator(d,c)});for(const r of o)n.push(this._stickyModelFromOutlineElement(r,r.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new UJ(void 0,n,void 0),providerID:t}}_stickyModelFromOutlineElement(e,t){const i=[];for(const o of e.children.values())if(o.symbol.selectionRange.startLineNumber!==o.symbol.range.endLineNumber)if(o.symbol.selectionRange.startLineNumber!==t)i.push(this._stickyModelFromOutlineElement(o,o.symbol.selectionRange.startLineNumber));else for(const l of o.children.values())i.push(this._stickyModelFromOutlineElement(l,o.symbol.selectionRange.startLineNumber));i.sort((o,l)=>this._comparator(o.range,l.range));const n=new YC(e.symbol.selectionRange.startLineNumber,e.symbol.range.endLineNumber);return new UJ(n,i,void 0)}_comparator(e,t){return e.startLineNumber!==t.startLineNumber?e.startLineNumber-t.startLineNumber:t.endLineNumber-e.endLineNumber}_findSumOfRangesOfGroup(e){let t=0;for(const i of e.children.values())t+=this._findSumOfRangesOfGroup(i);return e instanceof P7?t+e.symbol.range.endLineNumber-e.symbol.selectionRange.startLineNumber:t}};r6=Qz([RT(1,lt)],r6);class CAe extends yAe{constructor(e){super(e),this._foldingLimitReporter=new _Ze(e)}createStickyModel(e,t){const i=this._fromFoldingRegions(t),n=this._editor.getModel();return new QAe(n.uri,n.getVersionId(),i,void 0)}isModelValid(e){return e!==null}_fromFoldingRegions(e){const t=e.length,i=[],n=new UJ(void 0,[],void 0);for(let o=0;o<t;o++){const l=e.getParentIndex(o);let r;l!==-1?r=i[l]:r=n;const a=new UJ(new YC(e.getStartLineNumber(o),e.getEndLineNumber(o)+1),[],r);r.children.push(a),i.push(a)}return n}}let a6=class extends CAe{constructor(e,t){super(e),this._languageConfigurationService=t,this.provider=this._register(new wie(e.getModel(),this._languageConfigurationService,this._foldingLimitReporter))}async createModelFromProvider(e){return this.provider.compute(e)}};a6=Qz([RT(1,Qs)],a6);let d6=class extends CAe{constructor(e,t,i){super(e),this._languageFeaturesService=i;const n=af.getFoldingRangeProviders(this._languageFeaturesService,e.getModel());n.length>0&&(this.provider=this._register(new Mie(e.getModel(),n,t,this._foldingLimitReporter,void 0)))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(e){var t;return((t=this.provider)==null?void 0:t.compute(e))??null}};d6=Qz([RT(2,lt)],d6);var vdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class xdt{constructor(e,t,i){this.startLineNumber=e,this.endLineNumber=t,this.nestingDepth=i}}let c6=class extends de{constructor(e,t,i){super(),this._languageFeaturesService=t,this._languageConfigurationService=i,this._onDidChangeStickyScroll=this._register(new re),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=e,this._sessionStore=this._register(new Ze),this._updateSoon=this._register(new Rn(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(116)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(116).enabled&&(this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this.updateStickyModelProvider(),this._onDidChangeStickyScroll.fire(),this.update()})),this._sessionStore.add(this._editor.onDidChangeHiddenAreas(()=>this.update())),this._sessionStore.add(this._editor.onDidChangeModelContent(()=>this._updateSoon.schedule())),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>this.update())),this._sessionStore.add(gt(()=>{var t;(t=this._stickyModelProvider)==null||t.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){var e;return(e=this._model)==null?void 0:e.version}updateStickyModelProvider(){var t;(t=this._stickyModelProvider)==null||t.dispose(),this._stickyModelProvider=null;const e=this._editor;e.hasModel()&&(this._stickyModelProvider=new l6(e,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){var e;(e=this._cts)==null||e.dispose(!0),this._cts=new Ws,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(e){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const t=await this._stickyModelProvider.update(e);e.isCancellationRequested||(this._model=t)}updateIndex(e){return e===-1?e=0:e<0&&(e=-e-2),e}getCandidateStickyLinesIntersectingFromStickyModel(e,t,i,n,o){if(t.children.length===0)return;let l=o;const r=[];for(let c=0;c<t.children.length;c++){const h=t.children[c];h.range&&r.push(h.range.startLineNumber)}const a=this.updateIndex(Hw(r,e.startLineNumber,(c,h)=>c-h)),d=this.updateIndex(Hw(r,e.startLineNumber+n,(c,h)=>c-h));for(let c=a;c<=d;c++){const h=t.children[c];if(!h)return;if(h.range){const u=h.range.startLineNumber,m=h.range.endLineNumber;e.startLineNumber<=m+1&&u-1<=e.endLineNumber&&u!==l&&(l=u,i.push(new xdt(u,m-1,n+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(e,h,i,n+1,u))}else this.getCandidateStickyLinesIntersectingFromStickyModel(e,h,i,n,o)}}getCandidateStickyLinesIntersecting(e){var n,o;if(!((n=this._model)!=null&&n.element))return[];let t=[];this.getCandidateStickyLinesIntersectingFromStickyModel(e,this._model.element,t,0,-1);const i=(o=this._editor._getViewModel())==null?void 0:o.getHiddenAreas();if(i)for(const l of i)t=t.filter(r=>!(r.startLineNumber>=l.startLineNumber&&r.endLineNumber<=l.endLineNumber+1));return t}};c6=vdt([zce(1,lt),zce(2,Qs)],c6);var Jdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},zN=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},h6,MQ;let M0=(MQ=class extends de{constructor(e,t,i,n,o,l,r){super(),this._editor=e,this._contextMenuService=t,this._languageFeaturesService=i,this._instaService=n,this._contextKeyService=r,this._sessionStore=new Ze,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._stickyScrollWidget=new Ddt(this._editor),this._stickyLineCandidateProvider=new c6(this._editor,i,o),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=XC.Empty,this._onDidResize(),this._readConfiguration();const a=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(c=>{this._readConfigurationChange(c)})),this._register(ge(a,De.CONTEXT_MENU,async c=>{this._onContextMenu(Wt(a),c)})),this._stickyScrollFocusedContextKey=H.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=H.stickyScrollVisible.bindTo(this._contextKeyService);const d=this._register(Hu(a));this._register(d.onDidBlur(c=>{this._positionRevealed===!1&&a.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(d.onDidFocus(c=>{this.focus()})),this._registerMouseListeners(),this._register(ge(a,De.MOUSE_DOWN,c=>{this._onMouseDown=!0}))}static get(e){return e.getContribution(h6.ID)}_disposeFocusStickyScrollStore(){var e;this._stickyScrollFocusedContextKey.set(!1),(e=this._focusDisposableStore)==null||e.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new Ze,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex<this._stickyScrollWidget.lineNumberCount-1&&this._focusNav(!0)}focusPrevious(){this._focusedStickyElementIndex>0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(e){this._focusedStickyElementIndex=e?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const e=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:e[this._focusedStickyElementIndex],column:1})}_revealPosition(e){this._reveaInEditor(e,()=>this._editor.revealPosition(e))}_revealLineInCenterIfOutsideViewport(e){this._reveaInEditor(e,()=>this._editor.revealLineInCenterIfOutsideViewport(e.lineNumber,0))}_reveaInEditor(e,t){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,t(),this._editor.setSelection(v.fromPositions(e)),this._editor.focus()}_registerMouseListeners(){const e=this._register(new Ze),t=this._register(new bz(this._editor,{extractLineNumberFromMouseEvent:o=>{const l=this._stickyScrollWidget.getEditorPositionFromNode(o.target.element);return l?l.lineNumber:0}})),i=o=>{if(!this._editor.hasModel()||o.target.type!==12||o.target.detail!==this._stickyScrollWidget.getId())return null;const l=o.target.element;if(!l||l.innerText!==l.innerHTML)return null;const r=this._stickyScrollWidget.getEditorPositionFromNode(l);return r?{range:new v(r.lineNumber,r.column,r.lineNumber,r.column+l.innerText.length),textElement:l}:null},n=this._stickyScrollWidget.getDomNode();this._register(Ms(n,De.CLICK,o=>{if(o.ctrlKey||o.altKey||o.metaKey||!o.leftButton)return;if(o.shiftKey){const d=this._stickyScrollWidget.getLineIndexFromChildDomNode(o.target);if(d===null)return;const c=new oe(this._endLineNumbers[d],1);this._revealLineInCenterIfOutsideViewport(c);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(o.target)){const d=this._stickyScrollWidget.getLineNumberFromChildDomNode(o.target);this._toggleFoldingRegionForLine(d);return}if(!this._stickyScrollWidget.isInStickyLine(o.target))return;let a=this._stickyScrollWidget.getEditorPositionFromNode(o.target);if(!a){const d=this._stickyScrollWidget.getLineNumberFromChildDomNode(o.target);if(d===null)return;a=new oe(d,1)}this._revealPosition(a)})),this._register(Ms(n,De.MOUSE_MOVE,o=>{if(o.shiftKey){const l=this._stickyScrollWidget.getLineIndexFromChildDomNode(o.target);if(l===null||this._showEndForLine!==null&&this._showEndForLine===l)return;this._showEndForLine=l,this._renderStickyScroll();return}this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(ge(n,De.MOUSE_LEAVE,o=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(t.onMouseMoveOrRelevantKeyDown(([o,l])=>{const r=i(o);if(!r||!o.hasTriggerModifier||!this._editor.hasModel()){e.clear();return}const{range:a,textElement:d}=r;if(!a.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=a,e.clear();else if(d.style.textDecoration==="underline")return;const c=new Ws;e.add(gt(()=>c.dispose(!0)));let h;LB(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new oe(a.startLineNumber,a.startColumn+1),!1,c.token).then(u=>{if(!c.token.isCancellationRequested)if(u.length!==0){this._candidateDefinitionsLength=u.length;const m=d;h!==m?(e.clear(),h=m,h.style.textDecoration="underline",e.add(gt(()=>{h.style.textDecoration="none"}))):h||(h=m,h.style.textDecoration="underline",e.add(gt(()=>{h.style.textDecoration="none"})))}else e.clear()})})),this._register(t.onCancel(()=>{e.clear()})),this._register(t.onExecute(async o=>{if(o.target.type!==12||o.target.detail!==this._stickyScrollWidget.getId())return;const l=this._stickyScrollWidget.getEditorPositionFromNode(o.target.element);l&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:l.lineNumber,column:1})),this._instaService.invokeFunction(CZe,o,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(e,t){const i=new Jh(e,t);this._contextMenuService.showContextMenu({menuId:at.StickyScrollContext,getAnchor:()=>i})}_toggleFoldingRegionForLine(e){if(!this._foldingModel||e===null)return;const t=this._stickyScrollWidget.getRenderedStickyLine(e),i=t==null?void 0:t.foldingIcon;if(!i)return;Qie(this._foldingModel,Number.MAX_VALUE,[e]),i.isCollapsed=!i.isCollapsed;const n=(i.isCollapsed?this._editor.getTopForLineNumber(i.foldingEndLine):this._editor.getTopForLineNumber(i.foldingStartLine))-this._editor.getOption(67)*t.index+1;this._editor.setScrollTop(n),this._renderStickyScroll(e)}_readConfiguration(){const e=this._editor.getOption(116);if(e.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else e.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(i=>{i.scrollTopChanged&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(i=>this._onTokensChange(i))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=void 0,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(68).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(e){(e.hasChanged(116)||e.hasChanged(73)||e.hasChanged(67)||e.hasChanged(111)||e.hasChanged(68))&&this._readConfiguration(),e.hasChanged(68)&&this._renderStickyScroll(0)}_needsUpdate(e){const t=this._stickyScrollWidget.getCurrentLines();for(const i of t)for(const n of e.ranges)if(i>=n.fromLineNumber&&i<=n.toLineNumber)return!0;return!1}_onTokensChange(e){this._needsUpdate(e)&&this._renderStickyScroll(0)}_onDidResize(){const t=this._editor.getLayoutInfo().height/this._editor.getOption(67);this._maxStickyLines=Math.round(t*.25)}async _renderStickyScroll(e){const t=this._editor.getModel();if(!t||t.isTooLargeForTokenization()){this._resetState();return}const i=this._updateAndGetMinRebuildFromLine(e),n=this._stickyLineCandidateProvider.getVersionId();if(n===void 0||n===t.getVersionId())if(!this._focused)await this._updateState(i);else if(this._focusedStickyElementIndex===-1)await this._updateState(i),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const l=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(i),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(l)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(e){if(e!==void 0){const t=this._minRebuildFromLine!==void 0?this._minRebuildFromLine:1/0;this._minRebuildFromLine=Math.min(e,t)}return this._minRebuildFromLine}async _updateState(e){var i;this._minRebuildFromLine=void 0,this._foldingModel=await((i=af.get(this._editor))==null?void 0:i.getFoldingModel())??void 0,this._widgetState=this.findScrollWidgetState();const t=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(t),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=XC.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){const e=this._editor.getOption(67),t=Math.min(this._maxStickyLines,this._editor.getOption(116).maxLineCount),i=this._editor.getScrollTop();let n=0;const o=[],l=[],r=this._editor.getVisibleRanges();if(r.length!==0){const a=new YC(r[0].startLineNumber,r[r.length-1].endLineNumber),d=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(a);for(const c of d){const h=c.startLineNumber,u=c.endLineNumber,m=c.nestingDepth;if(u-h>0){const p=(m-1)*e,g=m*e,b=this._editor.getBottomForLineNumber(h)-i,f=this._editor.getTopForLineNumber(u)-i,Z=this._editor.getBottomForLineNumber(u)-i;if(p>f&&p<=Z){o.push(h),l.push(u+1),n=Z-g;break}else g>b&&g<=Z&&(o.push(h),l.push(u+1));if(o.length===t)break}}}return this._endLineNumbers=l,new XC(o,l,n,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}},h6=MQ,MQ.ID="store.contrib.stickyScrollController",MQ);M0=h6=Jdt([zN(1,Vd),zN(2,lt),zN(3,bt),zN(4,Qs),zN(5,gc),zN(6,wt)],M0);class Xdt extends da{constructor(){super({id:"editor.action.toggleStickyScroll",title:{...kt("toggleEditorStickyScroll","Toggle Editor Sticky Scroll"),mnemonicTitle:U({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Editor Sticky Scroll")},metadata:{description:kt("toggleEditorStickyScroll.description","Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport")},category:kdt.View,toggled:{condition:Ne.equals("config.editor.stickyScroll.enabled",!0),title:U("stickyScroll","Sticky Scroll"),mnemonicTitle:U({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:at.CommandPalette},{id:at.MenubarAppearanceMenu,group:"4_editor",order:3},{id:at.StickyScrollContext}]})}async run(e){const t=e.get(li),i=!t.getValue("editor.stickyScroll.enabled");return t.updateValue("editor.stickyScroll.enabled",i)}}const yz=100;class Ydt extends lm{constructor(){super({id:"editor.action.focusStickyScroll",title:{...kt("focusStickyScroll","Focus on the editor sticky scroll"),mnemonicTitle:U({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll")},precondition:Ne.and(Ne.has("config.editor.stickyScroll.enabled"),H.stickyScrollVisible),menu:[{id:at.CommandPalette}]})}runEditorCommand(e,t){var i;(i=M0.get(t))==null||i.focus()}}class zdt extends lm{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:kt("selectNextStickyScrollLine.title","Select the next editor sticky scroll line"),precondition:H.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:yz,primary:18}})}runEditorCommand(e,t){var i;(i=M0.get(t))==null||i.focusNext()}}class _dt extends lm{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:kt("selectPreviousStickyScrollLine.title","Select the previous sticky scroll line"),precondition:H.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:yz,primary:16}})}runEditorCommand(e,t){var i;(i=M0.get(t))==null||i.focusPrevious()}}class Odt extends lm{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:kt("goToFocusedStickyScrollLine.title","Go to the focused sticky scroll line"),precondition:H.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:yz,primary:3}})}runEditorCommand(e,t){var i;(i=M0.get(t))==null||i.goToFocused()}}class jdt extends lm{constructor(){super({id:"editor.action.selectEditor",title:kt("selectEditor.title","Select Editor"),precondition:H.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:yz,primary:9}})}runEditorCommand(e,t){var i;(i=M0.get(t))==null||i.selectEditor()}}Gi(M0.ID,M0,1);Xn(Xdt);Xn(Ydt);Xn(_dt);Xn(zdt);Xn(Odt);Xn(jdt);var wAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},a2=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class Hdt{constructor(e,t,i,n,o,l){this.range=e,this.insertText=t,this.filterText=i,this.additionalTextEdits=n,this.command=o,this.completion=l}}let u6=class extends SDe{constructor(e,t,i,n,o,l){super(o.disposable),this.model=e,this.line=t,this.word=i,this.completionModel=n,this._suggestMemoryService=l}canBeReused(e,t,i){return this.model===e&&this.line===t&&this.word.word.length>0&&this.word.startColumn===i.startColumn&&this.word.endColumn<i.endColumn&&this.completionModel.getIncompleteProvider().size===0}get items(){const e=[],{items:t}=this.completionModel,i=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},t),n=Ti.slice(t,i),o=Ti.slice(t,0,i);let l=5;for(const r of Ti.concat(n,o)){if(r.score===_u.Default)continue;const a=new v(r.editStart.lineNumber,r.editStart.column,r.editInsertEnd.lineNumber,r.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),d=r.completion.insertTextRules&&r.completion.insertTextRules&4?{snippet:r.completion.insertText}:r.completion.insertText;e.push(new Hdt(a,d,r.filterTextLow??r.labelLow,r.completion.additionalTextEdits,r.completion.command,r)),l-->=0&&r.resolve($t.None)}return e}};u6=wAe([a2(5,Rz)],u6);let m6=class extends de{constructor(e,t,i,n){super(),this._languageFeatureService=e,this._clipboardService=t,this._suggestMemoryService=i,this._editorService=n,this._store.add(e.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(e,t,i,n){var m;if(i.selectedSuggestionInfo)return;let o;for(const p of this._editorService.listCodeEditors())if(p.getModel()===e){o=p;break}if(!o)return;const l=o.getOption(90);if(VS.isAllOff(l))return;e.tokenization.tokenizeIfCheap(t.lineNumber);const r=e.tokenization.getLineTokens(t.lineNumber),a=r.getStandardTokenType(r.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if(VS.valueFor(l,a)!=="inline")return;let d=e.getWordAtPosition(t),c;if(d!=null&&d.word||(c=this._getTriggerCharacterInfo(e,t)),!(d!=null&&d.word)&&!c||(d||(d=e.getWordUntilPosition(t)),d.endColumn!==t.column))return;let h;const u=e.getValueInRange(new v(t.lineNumber,1,t.lineNumber,t.column));if(!c&&((m=this._lastResult)!=null&&m.canBeReused(e,t.lineNumber,d))){const p=new wce(u,t.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=p,this._lastResult.acquire(),h=this._lastResult}else{const p=await Tie(this._languageFeatureService.completionProvider,e,t,new pT(void 0,iJ.createSuggestFilter(o).itemKind,c==null?void 0:c.providers),c&&{triggerKind:1,triggerCharacter:c.ch},n);let g;p.needsClipboard&&(g=await this._clipboardService.readText());const b=new _b(p.items,t.column,new wce(u,0),tJ.None,o.getOption(119),o.getOption(113),{boostFullMatch:!1,firstMatchCanBeWeak:!1},g);h=new u6(e,t.lineNumber,d,b,p,this._suggestMemoryService)}return this._lastResult=h,h}handleItemDidShow(e,t){t.completion.resolve($t.None)}freeInlineCompletions(e){e.release()}_getTriggerCharacterInfo(e,t){var o;const i=e.getValueInRange(v.fromPositions({lineNumber:t.lineNumber,column:t.column-1},t)),n=new Set;for(const l of this._languageFeatureService.completionProvider.all(e))(o=l.triggerCharacters)!=null&&o.includes(i)&&n.add(l);if(n.size!==0)return{providers:n,ch:i}}};m6=wAe([a2(0,lt),a2(1,D0),a2(2,Rz),a2(3,zi)],m6);i1(m6);class Pdt extends et{constructor(){super({id:"editor.action.forceRetokenize",label:U("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getModel();i.tokenization.resetTokenization();const n=new ol;i.tokenization.forceTokenization(i.getLineCount()),n.stop(),console.log(`tokenization took ${n.elapsed()}`)}}Me(Pdt);const W5=class W5 extends da{constructor(){super({id:W5.ID,title:kt({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},metadata:{description:kt("tabMovesFocusDescriptions","Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.")},f1:!0})}run(){const t=!FV.getTabFocusMode();FV.setTabFocusMode(t),ra(t?U("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element"):U("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}};W5.ID="editor.action.toggleTabFocusMode";let p6=W5;Xn(p6);var Kdt=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_ce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let g6=class extends de{get enabled(){return this._enabled}set enabled(e){e?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=e}constructor(e,t,i={},n,o){super(),this._link=t,this._hoverService=n,this._enabled=!0,this.el=ye(e,Ge("a.monaco-link",{tabIndex:t.tabIndex??0,href:t.href},t.label)),this.hoverDelegate=i.hoverDelegate??ca("mouse"),this.setTooltip(t.title),this.el.setAttribute("role","button");const l=this._register(new Qi(this.el,"click")),r=this._register(new Qi(this.el,"keypress")),a=ve.chain(r.event,h=>h.map(u=>new Jn(u)).filter(u=>u.keyCode===3)),d=this._register(new Qi(this.el,_n.Tap)).event;this._register(nr.addTarget(this.el));const c=ve.any(l.event,a,d);this._register(c(h=>{this.enabled&&(yi.stop(h,!0),i!=null&&i.opener?i.opener(this._link.href):o.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}setTooltip(e){this.hoverDelegate.showNativeHover?this.el.title=e??"":!this.hover&&e?this.hover=this._register(this._hoverService.setupManagedHover(this.hoverDelegate,this.el,e)):this.hover&&this.hover.update(e)}};g6=Kdt([_ce(3,Gp),_ce(4,za)],g6);var MAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},TAe=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const qdt=26;let b6=class extends de{constructor(e,t){super(),this._editor=e,this.instantiationService=t,this.banner=this._register(this.instantiationService.createInstance(U6))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(e){this.banner.show({...e,onClose:()=>{var t;this.hide(),(t=e.onClose)==null||t.call(e)}}),this._editor.setBanner(this.banner.element,qdt)}};b6=MAe([TAe(1,bt)],b6);let U6=class extends de{constructor(e){super(),this.instantiationService=e,this.markdownRenderer=this.instantiationService.createInstance(W0,{}),this.element=Ge("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(e){if(e.ariaLabel)return e.ariaLabel;if(typeof e.message=="string")return e.message}getBannerMessage(e){if(typeof e=="string"){const t=Ge("span");return t.innerText=e,t}return this.markdownRenderer.render(e).element}clear(){Fl(this.element)}show(e){Fl(this.element);const t=this.getAriaLabel(e);t&&this.element.setAttribute("aria-label",t);const i=ye(this.element,Ge("div.icon-container"));i.setAttribute("aria-hidden","true"),e.icon&&i.appendChild(Ge(`div${Qt.asCSSSelector(e.icon)}`));const n=ye(this.element,Ge("div.message-container"));if(n.setAttribute("aria-hidden","true"),n.appendChild(this.getBannerMessage(e.message)),this.messageActionsContainer=ye(this.element,Ge("div.message-actions-container")),e.actions)for(const l of e.actions)this._register(this.instantiationService.createInstance(g6,this.messageActionsContainer,{...l,tabIndex:-1},{}));const o=ye(this.element,Ge("div.action-container"));this.actionBar=this._register(new ac(o)),this.actionBar.push(this._register(new bd("banner.close","Close Banner",Qt.asClassName($Ue),!0,()=>{typeof e.onClose=="function"&&e.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};U6=MAe([TAe(0,bt)],U6);var _ie=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},DW=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const $dt=ts("extensions-warning-message",ke.warning,U("warningIcon","Icon shown with a warning message in the extensions editor."));var zT;let ST=(zT=class extends de{constructor(e,t,i,n){super(),this._editor=e,this._editorWorkerService=t,this._workspaceTrustService=i,this._highlighter=null,this._bannerClosed=!1,this._updateState=o=>{if(o&&o.hasMore){if(this._bannerClosed)return;const l=Math.max(o.ambiguousCharacterCount,o.nonBasicAsciiCharacterCount,o.invisibleCharacterCount);let r;if(o.nonBasicAsciiCharacterCount>=l)r={message:U("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new VT};else if(o.ambiguousCharacterCount>=l)r={message:U("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new zA};else if(o.invisibleCharacterCount>=l)r={message:U("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new WT};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:r.message,icon:$dt,actions:[{label:r.command.shortLabel,href:`command:${r.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(n.createInstance(b6,e)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=e.getOption(126),this._register(i.onDidChangeTrust(o=>{this._updateHighlighter()})),this._register(e.onDidChangeConfiguration(o=>{o.hasChanged(126)&&(this._options=e.getOption(126),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const e=ect(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([e.nonBasicASCII,e.ambiguousCharacters,e.invisibleCharacters].every(i=>i===!1))return;const t={nonBasicASCII:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments,includeStrings:e.includeStrings,allowedCodePoints:Object.keys(e.allowedCharacters).map(i=>i.codePointAt(0)),allowedLocales:Object.keys(e.allowedLocales).map(i=>i==="_os"?new Intl.NumberFormat().resolvedOptions().locale:i==="_vscode"?NIe:i)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new f6(this._editor,t,this._updateState,this._editorWorkerService):this._highlighter=new tct(this._editor,t,this._updateState)}getDecorationInfo(e){return this._highlighter?this._highlighter.getDecorationInfo(e):null}},zT.ID="editor.contrib.unicodeHighlighter",zT);ST=_ie([DW(1,_a),DW(2,gbe),DW(3,bt)],ST);function ect(s,e){return{nonBasicASCII:e.nonBasicASCII===vd?!s:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments===vd?!s:e.includeComments,includeStrings:e.includeStrings===vd?!s:e.includeStrings,allowedCharacters:e.allowedCharacters,allowedLocales:e.allowedLocales}}let f6=class extends de{constructor(e,t,i,n){super(),this._editor=e,this._options=t,this._updateState=i,this._editorWorkerService=n,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Rn(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const e=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(t=>{if(this._model.isDisposed()||this._model.getVersionId()!==e)return;this._updateState(t);const i=[];if(!t.hasMore)for(const n of t.ranges)i.push({range:n,options:fJ.instance.getDecorationFromOptions(this._options)});this._decorations.set(i)})}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel();if(!Lte(t,e))return null;const i=t.getValueInRange(e.range);return{reason:LAe(i,this._options),inComment:kte(t,e),inString:Ite(t,e)}}};f6=_ie([DW(3,_a)],f6);class tct extends de{constructor(e,t,i){super(),this._editor=e,this._options=t,this._updateState=i,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Rn(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const e=this._editor.getVisibleRanges(),t=[],i={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const n of e){const o=O$.computeUnicodeHighlights(this._model,this._options,n);for(const l of o.ranges)i.ranges.push(l);i.ambiguousCharacterCount+=i.ambiguousCharacterCount,i.invisibleCharacterCount+=i.invisibleCharacterCount,i.nonBasicAsciiCharacterCount+=i.nonBasicAsciiCharacterCount,i.hasMore=i.hasMore||o.hasMore}if(!i.hasMore)for(const n of i.ranges)t.push({range:n,options:fJ.instance.getDecorationFromOptions(this._options)});this._updateState(i),this._decorations.set(t)}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel(),i=t.getValueInRange(e.range);return Lte(t,e)?{reason:LAe(i,this._options),inComment:kte(t,e),inString:Ite(t,e)}:null}}const BAe=U("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options");let F6=class{constructor(e,t,i){this._editor=e,this._languageService=t,this._openerService=i,this.hoverOrdinal=5}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1)return[];const i=this._editor.getModel(),n=this._editor.getContribution(ST.ID);if(!n)return[];const o=[],l=new Set;let r=300;for(const a of t){const d=n.getDecorationInfo(a);if(!d)continue;const h=i.getValueInRange(a.range).codePointAt(0),u=k_(h);let m;switch(d.reason.kind){case 0:{iB(d.reason.confusableWith)?m=U("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",u,k_(d.reason.confusableWith.codePointAt(0))):m=U("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",u,k_(d.reason.confusableWith.codePointAt(0)));break}case 1:m=U("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",u);break;case 2:m=U("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",u);break}if(l.has(m))continue;l.add(m);const p={codePoint:h,reason:d.reason,inComment:d.inComment,inString:d.inString},g=U("unicodeHighlight.adjustSettings","Adjust settings"),b=`command:${FJ.ID}?${encodeURIComponent(JSON.stringify(p))}`,f=new tr("",!0).appendMarkdown(m).appendText(" ").appendLink(b,g,BAe);o.push(new Eh(this,a.range,[f],!1,r++))}return o}renderHoverParts(e,t){return Cit(e,t,this._editor,this._languageService,this._openerService)}};F6=_ie([DW(1,Zs),DW(2,za)],F6);function Z6(s){return`U+${s.toString(16).padStart(4,"0")}`}function k_(s){let e=`\`${Z6(s)}\``;return xZ.isInvisibleCharacter(s)||(e+=` "${`${ict(s)}`}"`),e}function ict(s){return s===96?"`` ` ``":"`"+String.fromCodePoint(s)+"`"}function LAe(s,e){return O$.computeUnicodeHighlightReason(s,e)}const V5=class V5{constructor(){this.map=new Map}getDecorationFromOptions(e){return this.getDecoration(!e.includeComments,!e.includeStrings)}getDecoration(e,t){const i=`${e}${t}`;let n=this.map.get(i);return n||(n=Ot.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:e,hideInStringTokens:t}),this.map.set(i,n)),n}};V5.instance=new V5;let fJ=V5;class nct extends et{constructor(){super({id:zA.ID,label:U("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=U("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}async run(e,t,i){const n=e==null?void 0:e.get(li);n&&this.runAction(n)}async runAction(e){await e.updateValue(Ca.includeComments,!1,2)}}class sct extends et{constructor(){super({id:zA.ID,label:U("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=U("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}async run(e,t,i){const n=e==null?void 0:e.get(li);n&&this.runAction(n)}async runAction(e){await e.updateValue(Ca.includeStrings,!1,2)}}const Q5=class Q5 extends et{constructor(){super({id:Q5.ID,label:U("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=U("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}async run(e,t,i){const n=e==null?void 0:e.get(li);n&&this.runAction(n)}async runAction(e){await e.updateValue(Ca.ambiguousCharacters,!1,2)}};Q5.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";let zA=Q5;const y5=class y5 extends et{constructor(){super({id:y5.ID,label:U("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=U("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}async run(e,t,i){const n=e==null?void 0:e.get(li);n&&this.runAction(n)}async runAction(e){await e.updateValue(Ca.invisibleCharacters,!1,2)}};y5.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";let WT=y5;const C5=class C5 extends et{constructor(){super({id:C5.ID,label:U("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=U("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}async run(e,t,i){const n=e==null?void 0:e.get(li);n&&this.runAction(n)}async runAction(e){await e.updateValue(Ca.nonBasicASCII,!1,2)}};C5.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";let VT=C5;const w5=class w5 extends et{constructor(){super({id:w5.ID,label:U("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}async run(e,t,i){const{codePoint:n,reason:o,inString:l,inComment:r}=i,a=String.fromCodePoint(n),d=e.get(nh),c=e.get(li);function h(p){return xZ.isInvisibleCharacter(p)?U("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",Z6(p)):U("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted",`${Z6(p)} "${a}"`)}const u=[];if(o.kind===0)for(const p of o.notAmbiguousInLocales)u.push({label:U("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',p),run:async()=>{lct(c,[p])}});if(u.push({label:h(n),run:()=>oct(c,[n])}),r){const p=new nct;u.push({label:p.label,run:async()=>p.runAction(c)})}else if(l){const p=new sct;u.push({label:p.label,run:async()=>p.runAction(c)})}if(o.kind===0){const p=new zA;u.push({label:p.label,run:async()=>p.runAction(c)})}else if(o.kind===1){const p=new WT;u.push({label:p.label,run:async()=>p.runAction(c)})}else if(o.kind===2){const p=new VT;u.push({label:p.label,run:async()=>p.runAction(c)})}else rct(o);const m=await d.pick(u,{title:BAe});m&&await m.run()}};w5.ID="editor.action.unicodeHighlight.showExcludeOptions";let FJ=w5;async function oct(s,e){const t=s.getValue(Ca.allowedCharacters);let i;typeof t=="object"&&t?i=t:i={};for(const n of e)i[String.fromCodePoint(n)]=!0;await s.updateValue(Ca.allowedCharacters,i,2)}async function lct(s,e){var n;const t=(n=s.inspect(Ca.allowedLocales).user)==null?void 0:n.value;let i;typeof t=="object"&&t?i=Object.assign({},t):i={};for(const o of e)i[o]=!0;await s.updateValue(Ca.allowedLocales,i,2)}function rct(s){throw new Error(`Unexpected value: ${s}`)}Me(zA);Me(WT);Me(VT);Me(FJ);Gi(ST.ID,ST,1);aN.register(F6);var act=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Oce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};const kAe="ignoreUnusualLineTerminators";function dct(s,e,t){s.setModelProperty(e.uri,kAe,t)}function cct(s,e){return s.getModelProperty(e.uri,kAe)}var _T;let ZJ=(_T=class extends de{constructor(e,t,i){super(),this._editor=e,this._dialogService=t,this._codeEditorService=i,this._isPresentingDialog=!1,this._config=this._editor.getOption(127),this._register(this._editor.onDidChangeConfiguration(n=>{n.hasChanged(127)&&(this._config=this._editor.getOption(127),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(n=>{n.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const e=this._editor.getModel();if(!e.mightContainUnusualLineTerminators()||cct(this._codeEditorService,e)===!0||this._editor.getOption(92))return;if(this._config==="auto"){e.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let i;try{this._isPresentingDialog=!0,i=await this._dialogService.confirm({title:U("unusualLineTerminators.title","Unusual Line Terminators"),message:U("unusualLineTerminators.message","Detected unusual line terminators"),detail:U("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",qc(e.uri)),primaryButton:U({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:U("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}if(!i.confirmed){dct(this._codeEditorService,e,!0);return}e.removeUnusualLineTerminators(this._editor.getSelections())}},_T.ID="editor.contrib.unusualLineTerminatorsDetector",_T);ZJ=act([Oce(1,rB),Oce(2,zi)],ZJ);Gi(ZJ.ID,ZJ,1);var hct=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},uct=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};class jce{constructor(){this.selector={language:"*"}}provideDocumentHighlights(e,t,i){const n=[],o=e.getWordAtPosition({lineNumber:t.lineNumber,column:t.column});return o?e.isDisposed()?void 0:e.findMatches(o.word,!0,!1,!0,yE,!1).map(r=>({range:r.range,kind:qW.Text})):Promise.resolve(n)}provideMultiDocumentHighlights(e,t,i,n){const o=new sl,l=e.getWordAtPosition({lineNumber:t.lineNumber,column:t.column});if(!l)return Promise.resolve(o);for(const r of[e,...i]){if(r.isDisposed())continue;const d=r.findMatches(l.word,!0,!1,!0,yE,!1).map(c=>({range:c.range,kind:qW.Text}));d&&o.set(r.uri,d)}return o}}let A6=class extends de{constructor(e){super(),this._register(e.documentHighlightProvider.register("*",new jce)),this._register(e.multiDocumentHighlightProvider.register("*",new jce))}};A6=hct([uct(0,lt)],A6);var IAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},BD=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},Ps,N6;const Oie=new Ke("hasWordHighlights",!1);function DAe(s,e,t,i){const n=s.ordered(e);return B$(n.map(o=>()=>Promise.resolve(o.provideDocumentHighlights(e,t,i)).then(void 0,Os)),o=>o!=null).then(o=>{if(o){const l=new sl;return l.set(e.uri,o),l}return new sl})}function mct(s,e,t,i,n,o){const l=s.ordered(e);return B$(l.map(r=>()=>{const a=o.filter(d=>e0e(d)).filter(d=>iee(r.selector,d.uri,d.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(r.provideMultiDocumentHighlights(e,t,a,n)).then(void 0,Os)}),r=>r!=null)}class GAe{constructor(e,t,i){this._model=e,this._selection=t,this._wordSeparators=i,this._wordRange=this._getCurrentWordRange(e,t),this._result=null}get result(){return this._result||(this._result=Xo(e=>this._compute(this._model,this._selection,this._wordSeparators,e))),this._result}_getCurrentWordRange(e,t){const i=e.getWordAtPosition(t.getPosition());return i?new v(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):null}isValid(e,t,i){const n=t.startLineNumber,o=t.startColumn,l=t.endColumn,r=this._getCurrentWordRange(e,t);let a=!!(this._wordRange&&this._wordRange.equalsRange(r));for(let d=0,c=i.length;!a&&d<c;d++){const h=i.getRange(d);h&&h.startLineNumber===n&&h.startColumn<=o&&h.endColumn>=l&&(a=!0)}return a}cancel(){this.result.cancel()}}class pct extends GAe{constructor(e,t,i,n){super(e,t,i),this._providers=n}_compute(e,t,i,n){return DAe(this._providers,e,t.getPosition(),n).then(o=>o||new sl)}}class gct extends GAe{constructor(e,t,i,n,o){super(e,t,i),this._providers=n,this._otherModels=o}_compute(e,t,i,n){return mct(this._providers,e,t.getPosition(),i,n,this._otherModels).then(o=>o||new sl)}}function bct(s,e,t,i,n){return new pct(e,t,n,s)}function Uct(s,e,t,i,n,o){return new gct(e,t,n,s,o)}Ya("_executeDocumentHighlights",async(s,e,t)=>{const i=s.get(lt),n=await DAe(i.documentHighlightProvider,e,t,$t.None);return n==null?void 0:n.get(e.uri)});var UA;let R6=(UA=class{constructor(e,t,i,n,o){this.toUnhook=new Ze,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new sl,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.runDelayer=this.toUnhook.add(new Hc(50)),this.editor=e,this.providers=t,this.multiDocumentProviders=i,this.codeEditorService=o,this._hasWordHighlights=Oie.bindTo(n),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(81),this.model=this.editor.getModel(),this.toUnhook.add(e.onDidChangeCursorPosition(l=>{this._ignorePositionChangeEvent||this.occurrencesHighlight!=="off"&&this.runDelayer.trigger(()=>{this._onPositionChanged(l)})})),this.toUnhook.add(e.onDidFocusEditorText(l=>{this.occurrencesHighlight!=="off"&&(this.workerRequest||this.runDelayer.trigger(()=>{this._run()}))})),this.toUnhook.add(e.onDidChangeModelContent(l=>{K5(this.model.uri,"output")||this._stopAll()})),this.toUnhook.add(e.onDidChangeModel(l=>{!l.newModelUrl&&l.oldModelUrl?this._stopSingular():Ps.query&&this._run()})),this.toUnhook.add(e.onDidChangeConfiguration(l=>{var a,d;const r=this.editor.getOption(81);if(this.occurrencesHighlight!==r)switch(this.occurrencesHighlight=r,r){case"off":this._stopAll();break;case"singleFile":this._stopAll((d=(a=Ps.query)==null?void 0:a.modelInfo)==null?void 0:d.model);break;case"multiFile":Ps.query&&this._run(!0);break;default:console.warn("Unknown occurrencesHighlight setting value:",r);break}})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,Ps.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight!=="off"&&(this.runDelayer.cancel(),this._run())}_getSortedHighlights(){return this.decorations.getRanges().sort(v.compareRangesUsingStarts)}moveNext(){const e=this._getSortedHighlights(),i=(e.findIndex(o=>o.containsPosition(this.editor.getPosition()))+1)%e.length,n=e[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(n.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(n);const o=this._getWord();if(o){const l=this.editor.getModel().getLineContent(n.startLineNumber);ra(`${l}, ${i+1} of ${e.length} for '${o.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const e=this._getSortedHighlights(),i=(e.findIndex(o=>o.containsPosition(this.editor.getPosition()))-1+e.length)%e.length,n=e[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(n.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(n);const o=this._getWord();if(o){const l=this.editor.getModel().getLineContent(n.startLineNumber);ra(`${l}, ${i+1} of ${e.length} for '${o.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const e=Ps.storedDecorationIDs.get(this.editor.getModel().uri);e&&(this.editor.removeDecorations(e),Ps.storedDecorationIDs.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(e){const t=this.codeEditorService.listCodeEditors(),i=[];for(const n of t){if(!n.hasModel()||SM(n.getModel().uri,e==null?void 0:e.uri))continue;const o=Ps.storedDecorationIDs.get(n.getModel().uri);if(!o)continue;n.removeDecorations(o),i.push(n.getModel().uri);const l=cf.get(n);l!=null&&l.wordHighlighter&&l.wordHighlighter.decorations.length>0&&(l.wordHighlighter.decorations.clear(),l.wordHighlighter.workerRequest=null,l.wordHighlighter._hasWordHighlights.set(!1))}for(const n of i)Ps.storedDecorationIDs.delete(n)}_stopSingular(){var e,t,i,n;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((e=this.editor.getModel())==null?void 0:e.uri.scheme)!==Xt.vscodeNotebookCell&&((i=(t=Ps.query)==null?void 0:t.modelInfo)==null?void 0:i.model.uri.scheme)!==Xt.vscodeNotebookCell?(Ps.query=null,this._run()):(n=Ps.query)!=null&&n.modelInfo&&(Ps.query.modelInfo=null)),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(e){this._removeAllDecorations(e),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){var t;if(this.occurrencesHighlight==="off"){this._stopAll();return}if(e.reason!==3&&((t=this.editor.getModel())==null?void 0:t.uri.scheme)!==Xt.vscodeNotebookCell){this._stopAll();return}this._run()}_getWord(){const e=this.editor.getSelection(),t=e.startLineNumber,i=e.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:t,column:i})}getOtherModelsToHighlight(e){if(!e)return[];if(e.uri.scheme===Xt.vscodeNotebookCell){const o=[],l=this.codeEditorService.listCodeEditors();for(const r of l){const a=r.getModel();a&&a!==e&&a.uri.scheme===Xt.vscodeNotebookCell&&o.push(a)}return o}const i=[],n=this.codeEditorService.listCodeEditors();for(const o of n){if(!$te(o))continue;const l=o.getModel();l&&e===l.modified&&i.push(l.modified)}if(i.length)return i;if(this.occurrencesHighlight==="singleFile")return[];for(const o of n){const l=o.getModel();l&&l!==e&&i.push(l)}return i}_run(e){var n,o;let t;if(this.editor.hasTextFocus()){const l=this.editor.getSelection();if(!l||l.startLineNumber!==l.endLineNumber){Ps.query=null,this._stopAll();return}const r=l.startColumn,a=l.endColumn,d=this._getWord();if(!d||d.startColumn>r||d.endColumn<a){Ps.query=null,this._stopAll();return}t=this.workerRequest&&this.workerRequest.isValid(this.model,l,this.decorations),Ps.query={modelInfo:{model:this.model,selection:l},word:d}}else if(!Ps.query){this._stopAll();return}if(this.lastCursorPositionChangeTime=new Date().getTime(),t)this.workerRequestCompleted&&this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else if(SM(this.editor.getModel().uri,(n=Ps.query.modelInfo)==null?void 0:n.model.uri)){if(!e){const a=this.decorations.getRanges();for(const d of a)if(d.containsPosition(this.editor.getPosition()))return}this._stopAll(e?this.model:void 0);const l=++this.workerRequestTokenId;this.workerRequestCompleted=!1;const r=this.getOtherModelsToHighlight(this.editor.getModel());if(!Ps.query||!Ps.query.modelInfo||Ps.query.modelInfo.model.isDisposed())return;this.workerRequest=this.computeWithModel(Ps.query.modelInfo.model,Ps.query.modelInfo.selection,Ps.query.word,r),(o=this.workerRequest)==null||o.result.then(a=>{l===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=a||[],this._beginRenderDecorations())},vt)}}computeWithModel(e,t,i,n){return n.length?Uct(this.multiDocumentProviders,e,t,i,this.editor.getOption(132),n):bct(this.providers,e,t,i,this.editor.getOption(132))}_beginRenderDecorations(){const e=new Date().getTime(),t=this.lastCursorPositionChangeTime+250;e>=t?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},t-e)}renderDecorations(){var t,i,n;this.renderDecorationsTimer=-1;const e=this.codeEditorService.listCodeEditors();for(const o of e){const l=cf.get(o);if(!l)continue;const r=[],a=(t=o.getModel())==null?void 0:t.uri;if(a&&this.workerRequestValue.has(a)){const d=Ps.storedDecorationIDs.get(a),c=this.workerRequestValue.get(a);if(c)for(const u of c)u.range&&r.push({range:u.range,options:oat(u.kind)});let h=[];o.changeDecorations(u=>{h=u.deltaDecorations(d??[],r)}),Ps.storedDecorationIDs=Ps.storedDecorationIDs.set(a,h),r.length>0&&((i=l.wordHighlighter)==null||i.decorations.set(r),(n=l.wordHighlighter)==null||n._hasWordHighlights.set(!0))}}}dispose(){this._stopSingular(),this.toUnhook.dispose()}},Ps=UA,UA.storedDecorationIDs=new sl,UA.query=null,UA);R6=Ps=IAe([BD(4,zi)],R6);var TQ;let cf=(TQ=class extends de{static get(e){return e.getContribution(N6.ID)}constructor(e,t,i,n){super(),this._wordHighlighter=null;const o=()=>{e.hasModel()&&!e.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new R6(e,i.documentHighlightProvider,i.multiDocumentHighlightProvider,t,n))};this._register(e.onDidChangeModel(l=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),o()})),o()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var e;(e=this._wordHighlighter)==null||e.moveNext()}moveBack(){var e;(e=this._wordHighlighter)==null||e.moveBack()}restoreViewState(e){this._wordHighlighter&&e&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}},N6=TQ,TQ.ID="editor.contrib.wordHighlighter",TQ);cf=N6=IAe([BD(1,wt),BD(2,lt),BD(3,zi)],cf);class EAe extends et{constructor(e,t){super(t),this._isNext=e}run(e,t){const i=cf.get(t);i&&(this._isNext?i.moveNext():i.moveBack())}}class fct extends EAe{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:U("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:Oie,kbOpts:{kbExpr:H.editorTextFocus,primary:65,weight:100}})}}class Fct extends EAe{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:U("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:Oie,kbOpts:{kbExpr:H.editorTextFocus,primary:1089,weight:100}})}}class Zct extends et{constructor(){super({id:"editor.action.wordHighlight.trigger",label:U("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:void 0,kbOpts:{kbExpr:H.editorTextFocus,primary:0,weight:100}})}run(e,t,i){const n=cf.get(t);n&&n.restoreViewState(!0)}}Gi(cf.ID,cf,0);Me(fct);Me(Fct);Me(Zct);i1(A6);class Cz extends Io{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){if(!t.hasModel())return;const n=Kc(t.getOption(132),t.getOption(131)),o=t.getModel(),l=t.getSelections(),r=l.length>1,a=l.map(d=>{const c=new oe(d.positionLineNumber,d.positionColumn),h=this._move(n,o,c,this._wordNavigationType,r);return this._moveTo(d,h,this._inSelectionMode)});if(o.pushStackElement(),t._getViewModel().setCursorStates("moveWordCommand",3,a.map(d=>Xi.fromModelSelection(d))),a.length===1){const d=new oe(a[0].positionLineNumber,a[0].positionColumn);t.revealPosition(d,0)}}_moveTo(e,t,i){return i?new dt(e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new dt(t.lineNumber,t.column,t.lineNumber,t.column)}}class Nf extends Cz{_move(e,t,i,n,o){return ln.moveWordLeft(e,t,i,n,o)}}class Rf extends Cz{_move(e,t,i,n,o){return ln.moveWordRight(e,t,i,n)}}class Act extends Nf{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}class Nct extends Nf{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}class Rct extends Nf{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:Ne.and(H.textInputFocus,(e=Ne.and(hB,XY))==null?void 0:e.negate()),primary:2063,mac:{primary:527},weight:100}})}}class Sct extends Nf{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}class Wct extends Nf{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}class Vct extends Nf{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:Ne.and(H.textInputFocus,(e=Ne.and(hB,XY))==null?void 0:e.negate()),primary:3087,mac:{primary:1551},weight:100}})}}class Qct extends Nf{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(e,t,i,n,o){return super._move(Kc(om.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class yct extends Nf{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(e,t,i,n,o){return super._move(Kc(om.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class Cct extends Rf{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}class wct extends Rf{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:Ne.and(H.textInputFocus,(e=Ne.and(hB,XY))==null?void 0:e.negate()),primary:2065,mac:{primary:529},weight:100}})}}class Mct extends Rf{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}class Tct extends Rf{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}class Bct extends Rf{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:Ne.and(H.textInputFocus,(e=Ne.and(hB,XY))==null?void 0:e.negate()),primary:3089,mac:{primary:1553},weight:100}})}}class Lct extends Rf{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}class kct extends Rf{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(e,t,i,n,o){return super._move(Kc(om.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class Ict extends Rf{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(e,t,i,n,o){return super._move(Kc(om.wordSeparators.defaultValue,e.intlSegmenterLocales),t,i,n,o)}}class wz extends Io{constructor(e){super(e),this._whitespaceHeuristics=e.whitespaceHeuristics,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){const n=e.get(Qs);if(!t.hasModel())return;const o=Kc(t.getOption(132),t.getOption(131)),l=t.getModel(),r=t.getSelections(),a=t.getOption(6),d=t.getOption(11),c=n.getLanguageConfiguration(l.getLanguageId()).getAutoClosingPairs(),h=t._getViewModel(),u=r.map(m=>{const p=this._delete({wordSeparators:o,model:l,selection:m,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:t.getOption(9),autoClosingBrackets:a,autoClosingQuotes:d,autoClosingPairs:c,autoClosedCharacters:h.getCursorAutoClosedCharacters()},this._wordNavigationType);return new Bl(p,"")});t.pushUndoStop(),t.executeCommands(this.id,u),t.pushUndoStop()}}class jie extends wz{_delete(e,t){const i=ln.deleteWordLeft(e,t);return i||new v(1,1,1,1)}}class Hie extends wz{_delete(e,t){const i=ln.deleteWordRight(e,t);if(i)return i;const n=e.model.getLineCount(),o=e.model.getLineMaxColumn(n);return new v(n,o,n,o)}}class Dct extends jie{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:H.writable})}}class Gct extends jie{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:H.writable})}}class Ect extends jie{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}class vct extends Hie{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:H.writable})}}class xct extends Hie{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:H.writable})}}class Jct extends Hie{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}class Xct extends et{constructor(){super({id:"deleteInsideWord",precondition:H.writable,label:U("deleteInsideWord","Delete Word"),alias:"Delete Word"})}run(e,t,i){if(!t.hasModel())return;const n=Kc(t.getOption(132),t.getOption(131)),o=t.getModel(),r=t.getSelections().map(a=>{const d=ln.deleteInsideWord(n,o,a);return new Bl(d,"")});t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}Oe(new Act);Oe(new Nct);Oe(new Rct);Oe(new Sct);Oe(new Wct);Oe(new Vct);Oe(new Cct);Oe(new wct);Oe(new Mct);Oe(new Tct);Oe(new Bct);Oe(new Lct);Oe(new Qct);Oe(new yct);Oe(new kct);Oe(new Ict);Oe(new Dct);Oe(new Gct);Oe(new Ect);Oe(new vct);Oe(new xct);Oe(new Jct);Me(Xct);class Yct extends wz{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(e,t){const i=ez.deleteWordPartLeft(e);return i||new v(1,1,1,1)}}class zct extends wz{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:H.writable,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(e,t){const i=ez.deleteWordPartRight(e);if(i)return i;const n=e.model.getLineCount(),o=e.model.getLineMaxColumn(n);return new v(n,o,n,o)}}class vAe extends Cz{_move(e,t,i,n,o){return ez.moveWordPartLeft(e,t,i,o)}}class _ct extends vAe{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}Bi.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class Oct extends vAe{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}Bi.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class xAe extends Cz{_move(e,t,i,n,o){return ez.moveWordPartRight(e,t,i)}}class jct extends xAe{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}class Hct extends xAe{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:H.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}Oe(new Yct);Oe(new zct);Oe(new _ct);Oe(new Oct);Oe(new jct);Oe(new Hct);const bne=class bne extends de{constructor(e){super(),this.editor=e,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const e=fd.get(this.editor);if(e&&this.editor.hasModel()){let t=this.editor.getOptions().get(93);t||(this.editor.isSimpleWidget?t=new tr(U("editor.simple.readonly","Cannot edit in read-only input")):t=new tr(U("editor.readonly","Cannot edit in read-only editor"))),e.showMessage(t,this.editor.getPosition())}}};bne.ID="editor.contrib.readOnlyMessageController";let AJ=bne;Gi(AJ.ID,AJ,2);var Pct=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Hce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let S6=class extends de{constructor(e,t,i){super(),this._textModel=e,this._languageFeaturesService=t,this._outlineModelService=i,this._currentModel=oi(this,void 0);const n=Tl("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),o=Tl("_textModel.onDidChangeContent",ve.debounce(l=>this._textModel.onDidChangeContent(l),()=>{},100));this._register(Ga(async(l,r)=>{n.read(l),o.read(l);const a=r.add(new G8e),d=await this._outlineModelService.getOrCreate(this._textModel,a.token);r.isDisposed||this._currentModel.set(d,void 0)}))}getBreadcrumbItems(e,t){const i=this._currentModel.read(t);if(!i)return[];const n=i.asListOfDocumentSymbols().filter(o=>e.contains(o.range.startLineNumber)&&!e.contains(o.range.endLineNumber));return n.sort(fpe(ea(o=>o.range.endLineNumber-o.range.startLineNumber,zh))),n.map(o=>({name:o.name,kind:o.kind,startLineNumber:o.range.startLineNumber}))}};S6=Pct([Hce(1,lt),Hce(2,DB)],S6);Ax.setBreadcrumbsSourceFactory((s,e)=>e.createInstance(S6,s));const Une=class Une extends de{constructor(e){super(),this.editor=e,this.widget=null,ju&&(this._register(e.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const e=!this.editor.getOption(92);!this.widget&&e?this.widget=new W6(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}};Une.ID="editor.contrib.iPadShowKeyboard";let NJ=Une;const M5=class M5 extends de{constructor(e){super(),this.editor=e,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(ge(this._domNode,"touchstart",t=>{this.editor.focus()})),this._register(ge(this._domNode,"focus",t=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return M5.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}};M5.ID="editor.contrib.ShowKeyboardWidget";let W6=M5;Gi(NJ.ID,NJ,3);var Kct=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Pce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},V6,BQ;let QT=(BQ=class extends de{static get(e){return e.getContribution(V6.ID)}constructor(e,t,i){super(),this._editor=e,this._languageService=i,this._widget=null,this._register(this._editor.onDidChangeModel(n=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(n=>this.stop())),this._register(Ds.onDidChange(n=>this.stop())),this._register(this._editor.onKeyUp(n=>n.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new Q6(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}},V6=BQ,BQ.ID="editor.contrib.inspectTokens",BQ);QT=V6=Kct([Pce(1,fc),Pce(2,Zs)],QT);class qct extends et{constructor(){super({id:"editor.action.inspectTokens",label:LP.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(e,t){const i=QT.get(t);i==null||i.launch()}}function $ct(s){let e="";for(let t=0,i=s.length;t<i;t++){const n=s.charCodeAt(t);switch(n){case 9:e+="→";break;case 32:e+="·";break;default:e+=String.fromCharCode(n)}}return e}function eht(s,e){const t=Ds.get(e);if(t)return t;const i=s.encodeLanguageId(e);return{getInitialState:()=>cV,tokenize:(n,o,l)=>Wee(e,l),tokenizeEncoded:(n,o,l)=>BY(i,l)}}const T5=class T5 extends de{constructor(e,t){super(),this.allowEditorOverflow=!0,this._editor=e,this._languageService=t,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=eht(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(i=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return T5._ID}_compute(e){const t=this._getTokensAtLine(e.lineNumber);let i=0;for(let a=t.tokens1.length-1;a>=0;a--){const d=t.tokens1[a];if(e.column-1>=d.offset){i=a;break}}let n=0;for(let a=t.tokens2.length>>>1;a>=0;a--)if(e.column-1>=t.tokens2[a<<1]){n=a;break}const o=this._model.getLineContent(e.lineNumber);let l="";if(i<t.tokens1.length){const a=t.tokens1[i].offset,d=i+1<t.tokens1.length?t.tokens1[i+1].offset:o.length;l=o.substring(a,d)}Zl(this._domNode,Ge("h2.tm-token",void 0,$ct(l),Ge("span.tm-token-length",void 0,`${l.length} ${l.length===1?"char":"chars"}`))),ye(this._domNode,Ge("hr.tokens-inspect-separator",{style:"clear:both"}));const r=(n<<1)+1<t.tokens2.length?this._decodeMetadata(t.tokens2[(n<<1)+1]):null;ye(this._domNode,Ge("table.tm-metadata-table",void 0,Ge("tbody",void 0,Ge("tr",void 0,Ge("td.tm-metadata-key",void 0,"language"),Ge("td.tm-metadata-value",void 0,`${r?r.languageId:"-?-"}`)),Ge("tr",void 0,Ge("td.tm-metadata-key",void 0,"token type"),Ge("td.tm-metadata-value",void 0,`${r?this._tokenTypeToString(r.tokenType):"-?-"}`)),Ge("tr",void 0,Ge("td.tm-metadata-key",void 0,"font style"),Ge("td.tm-metadata-value",void 0,`${r?this._fontStyleToString(r.fontStyle):"-?-"}`)),Ge("tr",void 0,Ge("td.tm-metadata-key",void 0,"foreground"),Ge("td.tm-metadata-value",void 0,`${r?Re.Format.CSS.formatHex(r.foreground):"-?-"}`)),Ge("tr",void 0,Ge("td.tm-metadata-key",void 0,"background"),Ge("td.tm-metadata-value",void 0,`${r?Re.Format.CSS.formatHex(r.background):"-?-"}`))))),ye(this._domNode,Ge("hr.tokens-inspect-separator")),i<t.tokens1.length&&ye(this._domNode,Ge("span.tm-token-type",void 0,t.tokens1[i].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(e){const t=Ds.getColorMap(),i=Ta.getLanguageId(e),n=Ta.getTokenType(e),o=Ta.getFontStyle(e),l=Ta.getForeground(e),r=Ta.getBackground(e);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(i),tokenType:n,fontStyle:o,foreground:t[l],background:t[r]}}_tokenTypeToString(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 3:return"RegEx";default:return"??"}}_fontStyleToString(e){let t="";return e&1&&(t+="italic "),e&2&&(t+="bold "),e&4&&(t+="underline "),e&8&&(t+="strikethrough "),t.length===0&&(t="---"),t}_getTokensAtLine(e){const t=this._getStateBeforeLine(e),i=this._tokenizationSupport.tokenize(this._model.getLineContent(e),!0,t),n=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(e),!0,t);return{startState:t,tokens1:i.tokens,tokens2:n.tokens,endState:i.endState}}_getStateBeforeLine(e){let t=this._tokenizationSupport.getInitialState();for(let i=1;i<e;i++)t=this._tokenizationSupport.tokenize(this._model.getLineContent(i),!0,t).endState;return t}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}};T5._ID="editor.contrib.inspectTokensWidget";let Q6=T5;Gi(QT.ID,QT,4);Me(qct);var tht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Kce=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},d2,LQ;let y6=(LQ=class{constructor(e,t){this.quickInputService=e,this.keybindingService=t,this.registry=Vs.as(tN.Quickaccess)}provide(e){const t=new Ze;return t.add(e.onDidAccept(()=>{const[i]=e.selectedItems;i&&this.quickInputService.quickAccess.show(i.prefix,{preserveValue:!0})})),t.add(e.onDidChangeValue(i=>{const n=this.registry.getQuickAccessProvider(i.substr(d2.PREFIX.length));n&&n.prefix&&n.prefix!==d2.PREFIX&&this.quickInputService.quickAccess.show(n.prefix,{preserveValue:!0})})),e.items=this.getQuickAccessProviders().filter(i=>i.prefix!==d2.PREFIX),t}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((t,i)=>t.prefix.localeCompare(i.prefix)).flatMap(t=>this.createPicks(t))}createPicks(e){return e.helpEntries.map(t=>{const i=t.prefix||e.prefix,n=i||"…";return{prefix:i,label:n,keybinding:t.commandId?this.keybindingService.lookupKeybinding(t.commandId):void 0,ariaLabel:U("helpPickAriaLabel","{0}, {1}",n,t.description),description:t.description}})}},d2=LQ,LQ.PREFIX="?",LQ);y6=d2=tht([Kce(0,nh),Kce(1,dn)],y6);Vs.as(tN.Quickaccess).registerQuickAccessProvider({ctor:y6,prefix:"",helpEntries:[{description:kP.helpQuickAccessActionLabel}]});class JAe{constructor(e){this.options=e,this.rangeHighlightDecorationId=void 0}provide(e,t,i){var l;const n=new Ze;e.canAcceptInBackground=!!((l=this.options)!=null&&l.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const o=n.add(new _o);return o.value=this.doProvide(e,t,i),n.add(this.onDidActiveTextEditorControlChange(()=>{o.value=void 0,o.value=this.doProvide(e,t)})),n}doProvide(e,t,i){const n=new Ze,o=this.activeTextEditorControl;if(o&&this.canProvideWithTextEditor(o)){const l={editor:o},r=Hfe(o);if(r){let a=o.saveViewState()??void 0;n.add(r.onDidChangeCursorPosition(()=>{a=o.saveViewState()??void 0})),l.restoreViewState=()=>{a&&o===this.activeTextEditorControl&&o.restoreViewState(a)},n.add(zU(t.onCancellationRequested)(()=>{var d;return(d=l.restoreViewState)==null?void 0:d.call(l)}))}n.add(gt(()=>this.clearDecorations(o))),n.add(this.provideWithTextEditor(l,e,t,i))}else n.add(this.provideWithoutTextEditor(e,t));return n}canProvideWithTextEditor(e){return!0}gotoLocation({editor:e},t){e.setSelection(t.range,"code.jump"),e.revealRangeInCenter(t.range,0),t.preserveFocus||e.focus();const i=e.getModel();i&&"getLineContent"in i&&Vp(`${i.getLineContent(t.range.startLineNumber)}`)}getModel(e){var t;return $te(e)?(t=e.getModel())==null?void 0:t.modified:e.getModel()}addDecorations(e,t){e.changeDecorations(i=>{const n=[];this.rangeHighlightDecorationId&&(n.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),n.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const o=[{range:t,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:Gs(vbe),position:lc.Full}}}],[l,r]=i.deltaDecorations(n,o);this.rangeHighlightDecorationId={rangeHighlightId:l,overviewRulerDecorationId:r}})}clearDecorations(e){const t=this.rangeHighlightDecorationId;t&&(e.changeDecorations(i=>{i.deltaDecorations([t.overviewRulerDecorationId,t.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}const B5=class B5 extends JAe{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(e){const t=U("cannotRunGotoLine","Open a text editor first to go to a line.");return e.items=[{label:t}],e.ariaLabel=t,de.None}provideWithTextEditor(e,t,i){const n=e.editor,o=new Ze;o.add(t.onDidAccept(a=>{const[d]=t.selectedItems;if(d){if(!this.isValidLineNumber(n,d.lineNumber))return;this.gotoLocation(e,{range:this.toRange(d.lineNumber,d.column),keyMods:t.keyMods,preserveFocus:a.inBackground}),a.inBackground||t.hide()}}));const l=()=>{const a=this.parsePosition(n,t.value.trim().substr(B5.PREFIX.length)),d=this.getPickLabel(n,a.lineNumber,a.column);if(t.items=[{lineNumber:a.lineNumber,column:a.column,label:d}],t.ariaLabel=d,!this.isValidLineNumber(n,a.lineNumber)){this.clearDecorations(n);return}const c=this.toRange(a.lineNumber,a.column);n.revealRangeInCenter(c,0),this.addDecorations(n,c)};l(),o.add(t.onDidChangeValue(()=>l()));const r=Hfe(n);return r&&r.getOptions().get(68).renderType===2&&(r.updateOptions({lineNumbers:"on"}),o.add(gt(()=>r.updateOptions({lineNumbers:"relative"})))),o}toRange(e=1,t=1){return{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t}}parsePosition(e,t){const i=t.split(/,|:|#/).map(o=>parseInt(o,10)).filter(o=>!isNaN(o)),n=this.lineCount(e)+1;return{lineNumber:i[0]>0?i[0]:n+i[0],column:i[1]}}getPickLabel(e,t,i){if(this.isValidLineNumber(e,t))return this.isValidColumn(e,t,i)?U("gotoLineColumnLabel","Go to line {0} and character {1}.",t,i):U("gotoLineLabel","Go to line {0}.",t);const n=e.getPosition()||{lineNumber:1,column:1},o=this.lineCount(e);return o>1?U("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",n.lineNumber,n.column,o):U("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",n.lineNumber,n.column)}isValidLineNumber(e,t){return!t||typeof t!="number"?!1:t>0&&t<=this.lineCount(e)}isValidColumn(e,t,i){if(!i||typeof i!="number")return!1;const n=this.getModel(e);if(!n)return!1;const o={lineNumber:t,column:i};return n.validatePosition(o).equals(o)}lineCount(e){var t;return((t=this.getModel(e))==null?void 0:t.getLineCount())??0}};B5.PREFIX=":";let C6=B5;var iht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},nht=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let yT=class extends C6{constructor(e){super(),this.editorService=e,this.onDidActiveTextEditorControlChange=ve.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};yT=iht([nht(0,zi)],yT);var kQ;let XAe=(kQ=class extends et{constructor(){super({id:kQ.ID,label:bv.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:2085,mac:{primary:293},weight:100}})}run(e){e.get(nh).quickAccess.show(yT.PREFIX)}},kQ.ID="editor.action.gotoLine",kQ);Me(XAe);Vs.as(tN.Quickaccess).registerQuickAccessProvider({ctor:yT,prefix:yT.PREFIX,helpEntries:[{description:bv.gotoLineActionLabel,commandId:XAe.ID}]});const YAe=[void 0,[]];function I_(s,e,t=0,i=0){const n=e;return n.values&&n.values.length>1?sht(s,n.values,t,i):zAe(s,e,t,i)}function sht(s,e,t,i){let n=0;const o=[];for(const l of e){const[r,a]=zAe(s,l,t,i);if(typeof r!="number")return YAe;n+=r,o.push(...a)}return[n,oht(o)]}function zAe(s,e,t,i){const n=QA(e.original,e.originalLowercase,t,s,s.toLowerCase(),i,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return n?[n[0],cB(n)]:YAe}function oht(s){const e=s.sort((n,o)=>n.start-o.start),t=[];let i;for(const n of e)!i||!lht(i,n)?(i=n,t.push(n)):(i.start=Math.min(i.start,n.start),i.end=Math.max(i.end,n.end));return t}function lht(s,e){return!(s.end<e.start||e.end<s.start)}function qce(s){return s.startsWith('"')&&s.endsWith('"')}const _Ae=" ";function w6(s){typeof s!="string"&&(s="");const e=s.toLowerCase(),{pathNormalized:t,normalized:i,normalizedLowercase:n}=$ce(s),o=t.indexOf(xu)>=0,l=qce(s);let r;const a=s.split(_Ae);if(a.length>1)for(const d of a){const c=qce(d),{pathNormalized:h,normalized:u,normalizedLowercase:m}=$ce(d);u&&(r||(r=[]),r.push({original:d,originalLowercase:d.toLowerCase(),pathNormalized:h,normalized:u,normalizedLowercase:m,expectContiguousMatch:c}))}return{original:s,originalLowercase:e,pathNormalized:t,normalized:i,normalizedLowercase:n,values:r,containsPathSeparator:o,expectContiguousMatch:l}}function $ce(s){let e;Gl?e=s.replace(/\//g,xu):e=s.replace(/\\/g,xu);const t=UGe(e).replace(/\s|"/g,"");return{pathNormalized:e,normalized:t,normalizedLowercase:t.toLowerCase()}}function ehe(s){return Array.isArray(s)?w6(s.map(e=>e.original).join(_Ae)):w6(s.original)}var rht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},the=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},LD,ap;let eA=(ap=class extends JAe{constructor(e,t,i=Object.create(null)){super(i),this._languageFeaturesService=e,this._outlineModelService=t,this.options=i,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(e){return this.provideLabelPick(e,U("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),de.None}provideWithTextEditor(e,t,i,n){const o=e.editor,l=this.getModel(o);return l?this._languageFeaturesService.documentSymbolProvider.has(l)?this.doProvideWithEditorSymbols(e,l,t,i,n):this.doProvideWithoutEditorSymbols(e,l,t,i):de.None}doProvideWithoutEditorSymbols(e,t,i,n){const o=new Ze;return this.provideLabelPick(i,U("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(t,o)||n.isCancellationRequested||o.add(this.doProvideWithEditorSymbols(e,t,i,n)))(),o}provideLabelPick(e,t){e.items=[{label:t,index:0,kind:14}],e.ariaLabel=t}async waitForLanguageSymbolRegistry(e,t){if(this._languageFeaturesService.documentSymbolProvider.has(e))return!0;const i=new EQ,n=t.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(e)&&(n.dispose(),i.complete(!0))}));return t.add(gt(()=>i.complete(!1))),i.p}doProvideWithEditorSymbols(e,t,i,n,o){var h;const l=e.editor,r=new Ze;r.add(i.onDidAccept(u=>{var p;const[m]=i.selectedItems;m&&m.range&&(this.gotoLocation(e,{range:m.range.selection,keyMods:i.keyMods,preserveFocus:u.inBackground}),(p=o==null?void 0:o.handleAccept)==null||p.call(o,m),u.inBackground||i.hide())})),r.add(i.onDidTriggerItemButton(({item:u})=>{u&&u.range&&(this.gotoLocation(e,{range:u.range.selection,keyMods:i.keyMods,forceSideBySide:!0}),i.hide())}));const a=this.getDocumentSymbols(t,n);let d;const c=async u=>{d==null||d.dispose(!0),i.busy=!1,d=new Ws(n),i.busy=!0;try{const m=w6(i.value.substr(LD.PREFIX.length).trim()),p=await this.doGetSymbolPicks(a,m,void 0,d.token,t);if(n.isCancellationRequested)return;if(p.length>0){if(i.items=p,u&&m.original.length===0){const g=cM(p,b=>!!(b.type!=="separator"&&b.range&&v.containsPosition(b.range.decoration,u)));g&&(i.activeItems=[g])}}else m.original.length>0?this.provideLabelPick(i,U("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(i,U("noSymbolResults","No editor symbols"))}finally{n.isCancellationRequested||(i.busy=!1)}};return r.add(i.onDidChangeValue(()=>c(void 0))),c((h=l.getSelection())==null?void 0:h.getPosition()),r.add(i.onDidChangeActive(()=>{const[u]=i.activeItems;u&&u.range&&(l.revealRangeInCenter(u.range.selection,0),this.addDecorations(l,u.range.decoration))})),r}async doGetSymbolPicks(e,t,i,n,o){var b,f;const l=await e;if(n.isCancellationRequested)return[];const r=t.original.indexOf(LD.SCOPE_PREFIX)===0,a=r?1:0;let d,c;t.values&&t.values.length>1?(d=ehe(t.values[0]),c=ehe(t.values.slice(1))):d=t;let h;const u=(f=(b=this.options)==null?void 0:b.openSideBySideDirection)==null?void 0:f.call(b);u&&(h=[{iconClass:u==="right"?Qt.asClassName(ke.splitHorizontal):Qt.asClassName(ke.splitVertical),tooltip:u==="right"?U("openToSide","Open to the Side"):U("openToBottom","Open to the Bottom")}]);const m=[];for(let Z=0;Z<l.length;Z++){const A=l[Z],N=gGe(A.name),W=`$(${LE.toIcon(A.kind).id}) ${N}`,Q=W.length-N.length;let R=A.containerName;i!=null&&i.extraContainerLabel&&(R?R=`${i.extraContainerLabel} • ${R}`:R=i.extraContainerLabel);let M,w,Y,G;if(t.original.length>a){let j=!1;if(d!==t&&([M,w]=I_(W,{...t,values:void 0},a,Q),typeof M=="number"&&(j=!0)),typeof M!="number"&&([M,w]=I_(W,d,a,Q),typeof M!="number"))continue;if(!j&&c){if(R&&c.original.length>0&&([Y,G]=I_(R,c)),typeof Y!="number")continue;typeof M=="number"&&(M+=Y)}}const P=A.tags&&A.tags.indexOf(1)>=0;m.push({index:Z,kind:A.kind,score:M,label:W,ariaLabel:aGe(A.name,A.kind),description:R,highlights:P?void 0:{label:w,description:G},range:{selection:v.collapseToStart(A.selectionRange),decoration:A.range},uri:o.uri,symbolName:N,strikethrough:P,buttons:h})}const p=m.sort((Z,A)=>r?this.compareByKindAndScore(Z,A):this.compareByScore(Z,A));let g=[];if(r){let W=function(){A&&typeof Z=="number"&&N>0&&(A.label=FA(G_[Z]||D_,N))},Z,A,N=0;for(const Q of p)Z!==Q.kind?(W(),Z=Q.kind,N=1,A={type:"separator"},g.push(A)):N++,g.push(Q);W()}else p.length>0&&(g=[{label:U("symbols","symbols ({0})",m.length),type:"separator"},...p]);return g}compareByScore(e,t){if(typeof e.score!="number"&&typeof t.score=="number")return 1;if(typeof e.score=="number"&&typeof t.score!="number")return-1;if(typeof e.score=="number"&&typeof t.score=="number"){if(e.score>t.score)return-1;if(e.score<t.score)return 1}return e.index<t.index?-1:e.index>t.index?1:0}compareByKindAndScore(e,t){const i=G_[e.kind]||D_,n=G_[t.kind]||D_,o=i.localeCompare(n);return o===0?this.compareByScore(e,t):o}async getDocumentSymbols(e,t){const i=await this._outlineModelService.getOrCreate(e,t);return t.isCancellationRequested?[]:i.asListOfDocumentSymbols()}},LD=ap,ap.PREFIX="@",ap.SCOPE_PREFIX=":",ap.PREFIX_BY_CATEGORY=`${ap.PREFIX}${ap.SCOPE_PREFIX}`,ap);eA=LD=rht([the(0,lt),the(1,DB)],eA);const D_=U("property","properties ({0})"),G_={5:U("method","methods ({0})"),11:U("function","functions ({0})"),8:U("_constructor","constructors ({0})"),12:U("variable","variables ({0})"),4:U("class","classes ({0})"),22:U("struct","structs ({0})"),23:U("event","events ({0})"),24:U("operator","operators ({0})"),10:U("interface","interfaces ({0})"),2:U("namespace","namespaces ({0})"),3:U("package","packages ({0})"),25:U("typeParameter","type parameters ({0})"),1:U("modules","modules ({0})"),6:U("property","properties ({0})"),9:U("enum","enumerations ({0})"),21:U("enumMember","enumeration members ({0})"),14:U("string","strings ({0})"),0:U("file","files ({0})"),17:U("array","arrays ({0})"),15:U("number","numbers ({0})"),16:U("boolean","booleans ({0})"),18:U("object","objects ({0})"),19:U("key","keys ({0})"),7:U("field","fields ({0})"),13:U("constant","constants ({0})")};var aht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},E_=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let M6=class extends eA{constructor(e,t,i){super(t,i),this.editorService=e,this.onDidActiveTextEditorControlChange=ve.None}get activeTextEditorControl(){return this.editorService.getFocusedCodeEditor()??void 0}};M6=aht([E_(0,zi),E_(1,lt),E_(2,DB)],M6);const L5=class L5 extends et{constructor(){super({id:L5.ID,label:VM.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:H.hasDocumentSymbolProvider,kbOpts:{kbExpr:H.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(e){e.get(nh).quickAccess.show(eA.PREFIX,{itemActivation:wu.NONE})}};L5.ID="editor.action.quickOutline";let RJ=L5;Me(RJ);Vs.as(tN.Quickaccess).registerQuickAccessProvider({ctor:M6,prefix:eA.PREFIX,helpEntries:[{description:VM.quickOutlineActionLabel,prefix:eA.PREFIX,commandId:RJ.ID},{description:VM.quickOutlineByCategoryActionLabel,prefix:eA.PREFIX_BY_CATEGORY}]});function dht(s){const e=new Map;for(const t of s)e.set(t,(e.get(t)??0)+1);return e}class _C{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(e,t){const i=this.computeEmbedding(e),n=new Map,o=[];for(const[l,r]of this.documents){if(t.isCancellationRequested)return[];for(const a of r.chunks){const d=this.computeSimilarityScore(a,i,n);d>0&&o.push({key:l,score:d})}}return o}static termFrequencies(e){return dht(_C.splitTerms(e))}static*splitTerms(e){const t=i=>i.toLowerCase();for(const[i]of e.matchAll(/\b\p{Letter}[\p{Letter}\d]{2,}\b/gu)){yield t(i);const n=i.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(n.length>1)for(const o of n)o.length>2&&/\p{Letter}{3,}/gu.test(o)&&(yield t(o))}}updateDocuments(e){for(const{key:t}of e)this.deleteDocument(t);for(const t of e){const i=[];for(const n of t.textChunks){const o=_C.termFrequencies(n);for(const l of o.keys())this.chunkOccurrences.set(l,(this.chunkOccurrences.get(l)??0)+1);i.push({text:n,tf:o})}this.chunkCount+=i.length,this.documents.set(t.key,{chunks:i})}return this}deleteDocument(e){const t=this.documents.get(e);if(t){this.documents.delete(e),this.chunkCount-=t.chunks.length;for(const i of t.chunks)for(const n of i.tf.keys()){const o=this.chunkOccurrences.get(n);if(typeof o=="number"){const l=o-1;l<=0?this.chunkOccurrences.delete(n):this.chunkOccurrences.set(n,l)}}}}computeSimilarityScore(e,t,i){let n=0;for(const[o,l]of Object.entries(t)){const r=e.tf.get(o);if(!r)continue;let a=i.get(o);typeof a!="number"&&(a=this.computeIdf(o),i.set(o,a));const d=r*a;n+=d*l}return n}computeEmbedding(e){const t=_C.termFrequencies(e);return this.computeTfidf(t)}computeIdf(e){const t=this.chunkOccurrences.get(e)??0;return t>0?Math.log((this.chunkCount+1)/t):0}computeTfidf(e){const t=Object.create(null);for(const[i,n]of e){const o=this.computeIdf(i);o>0&&(t[i]=n*o)}return t}}function cht(s){var i;const e=s.slice(0);e.sort((n,o)=>o.score-n.score);const t=((i=e[0])==null?void 0:i.score)??0;if(t>0)for(const n of e)n.score/=t;return e}var yS;(function(s){s[s.NO_ACTION=0]="NO_ACTION",s[s.CLOSE_PICKER=1]="CLOSE_PICKER",s[s.REFRESH_PICKER=2]="REFRESH_PICKER",s[s.REMOVE_ITEM=3]="REMOVE_ITEM"})(yS||(yS={}));function v_(s){const e=s;return Array.isArray(e.items)}function ihe(s){const e=s;return!!e.picks&&e.additionalPicks instanceof Promise}class hht extends de{constructor(e,t){super(),this.prefix=e,this.options=t}provide(e,t,i){var d;const n=new Ze;e.canAcceptInBackground=!!((d=this.options)!=null&&d.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;let o;const l=n.add(new _o),r=async()=>{var b;const c=l.value=new Ze;o==null||o.dispose(!0),e.busy=!1,o=new Ws(t);const h=o.token;let u=e.value.substring(this.prefix.length);(b=this.options)!=null&&b.shouldSkipTrimPickFilter||(u=u.trim());const m=this._getPicks(u,c,h,i),p=(f,Z)=>{var W;let A,N;if(v_(f)?(A=f.items,N=f.active):A=f,A.length===0){if(Z)return!1;(u.length>0||e.hideInput)&&((W=this.options)!=null&&W.noResultsPick)&&(Kw(this.options.noResultsPick)?A=[this.options.noResultsPick(u)]:A=[this.options.noResultsPick])}return e.items=A,N&&(e.activeItems=[N]),!0},g=async f=>{let Z=!1,A=!1;await Promise.all([(async()=>{typeof f.mergeDelay=="number"&&(await A0(f.mergeDelay),h.isCancellationRequested)||A||(Z=p(f.picks,!0))})(),(async()=>{e.busy=!0;try{const N=await f.additionalPicks;if(h.isCancellationRequested)return;let W,Q;v_(f.picks)?(W=f.picks.items,Q=f.picks.active):W=f.picks;let R,M;if(v_(N)?(R=N.items,M=N.active):R=N,R.length>0||!Z){let w;if(!Q&&!M){const Y=e.activeItems[0];Y&&W.indexOf(Y)!==-1&&(w=Y)}p({items:[...W,...R],active:Q||M||w})}}finally{h.isCancellationRequested||(e.busy=!1),A=!0}})()])};if(m!==null)if(ihe(m))await g(m);else if(!(m instanceof Promise))p(m);else{e.busy=!0;try{const f=await m;if(h.isCancellationRequested)return;ihe(f)?await g(f):p(f)}finally{h.isCancellationRequested||(e.busy=!1)}}};n.add(e.onDidChangeValue(()=>r())),r(),n.add(e.onDidAccept(c=>{var u;if(i!=null&&i.handleAccept){c.inBackground||e.hide(),(u=i.handleAccept)==null||u.call(i,e.activeItems[0]);return}const[h]=e.selectedItems;typeof(h==null?void 0:h.accept)=="function"&&(c.inBackground||e.hide(),h.accept(e.keyMods,c))}));const a=async(c,h)=>{var m;if(typeof h.trigger!="function")return;const u=((m=h.buttons)==null?void 0:m.indexOf(c))??-1;if(u>=0){const p=h.trigger(u,e.keyMods),g=typeof p=="number"?p:await p;if(t.isCancellationRequested)return;switch(g){case yS.NO_ACTION:break;case yS.CLOSE_PICKER:e.hide();break;case yS.REFRESH_PICKER:r();break;case yS.REMOVE_ITEM:{const b=e.items.indexOf(h);if(b!==-1){const f=e.items.slice(),Z=f.splice(b,1),A=e.activeItems.filter(W=>W!==Z[0]),N=e.keepScrollPosition;e.keepScrollPosition=!0,e.items=f,A&&(e.activeItems=A),e.keepScrollPosition=N}break}}}};return n.add(e.onDidTriggerItemButton(({button:c,item:h})=>a(c,h))),n.add(e.onDidTriggerSeparatorButton(({button:c,separator:h})=>a(c,h))),n}}var OAe=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},Ob=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}},RF,Vo,Kg;let T6=(Kg=class extends hht{constructor(e,t,i,n,o,l){super(RF.PREFIX,e),this.instantiationService=t,this.keybindingService=i,this.commandService=n,this.telemetryService=o,this.dialogService=l,this.commandsHistory=this._register(this.instantiationService.createInstance(B6)),this.options=e}async _getPicks(e,t,i,n){var m,p;const o=await this.getCommandPicks(i);if(i.isCancellationRequested)return[];const l=zU(()=>{const g=new _C;g.updateDocuments(o.map(f=>({key:f.commandId,textChunks:[this.getTfIdfChunk(f)]})));const b=g.calculateScores(e,i);return cht(b).filter(f=>f.score>RF.TFIDF_THRESHOLD).slice(0,RF.TFIDF_MAX_RESULTS)}),r=[];for(const g of o){const b=RF.WORD_FILTER(e,g.label)??void 0,f=g.commandAlias?RF.WORD_FILTER(e,g.commandAlias)??void 0:void 0;if(b||f)g.highlights={label:b,detail:this.options.showAlias?f:void 0},r.push(g);else if(e===g.commandId)r.push(g);else if(e.length>=3){const Z=l();if(i.isCancellationRequested)return[];const A=Z.find(N=>N.key===g.commandId);A&&(g.tfIdfScore=A.score,r.push(g))}}const a=new Map;for(const g of r){const b=a.get(g.label);b?(g.description=g.commandId,b.description=b.commandId):a.set(g.label,g)}r.sort((g,b)=>{if(g.tfIdfScore&&b.tfIdfScore)return g.tfIdfScore===b.tfIdfScore?g.label.localeCompare(b.label):b.tfIdfScore-g.tfIdfScore;if(g.tfIdfScore)return 1;if(b.tfIdfScore)return-1;const f=this.commandsHistory.peek(g.commandId),Z=this.commandsHistory.peek(b.commandId);if(f&&Z)return f>Z?-1:1;if(f)return-1;if(Z)return 1;if(this.options.suggestedCommandIds){const A=this.options.suggestedCommandIds.has(g.commandId),N=this.options.suggestedCommandIds.has(b.commandId);if(A&&N)return 0;if(A)return-1;if(N)return 1}return g.label.localeCompare(b.label)});const d=[];let c=!1,h=!0,u=!!this.options.suggestedCommandIds;for(let g=0;g<r.length;g++){const b=r[g];g===0&&this.commandsHistory.peek(b.commandId)&&(d.push({type:"separator",label:U("recentlyUsed","recently used")}),c=!0),h&&b.tfIdfScore!==void 0&&(d.push({type:"separator",label:U("suggested","similar commands")}),h=!1),u&&b.tfIdfScore===void 0&&!this.commandsHistory.peek(b.commandId)&&((m=this.options.suggestedCommandIds)!=null&&m.has(b.commandId))&&(d.push({type:"separator",label:U("commonlyUsed","commonly used")}),c=!0,u=!1),c&&b.tfIdfScore===void 0&&!this.commandsHistory.peek(b.commandId)&&!((p=this.options.suggestedCommandIds)!=null&&p.has(b.commandId))&&(d.push({type:"separator",label:U("morecCommands","other commands")}),c=!1),d.push(this.toCommandPick(b,n))}return this.hasAdditionalCommandPicks(e,i)?{picks:d,additionalPicks:(async()=>{var f;const g=await this.getAdditionalCommandPicks(o,r,e,i);if(i.isCancellationRequested)return[];const b=g.map(Z=>this.toCommandPick(Z,n));return h&&((f=b[0])==null?void 0:f.type)!=="separator"&&b.unshift({type:"separator",label:U("suggested","similar commands")}),b})()}:d}toCommandPick(e,t){if(e.type==="separator")return e;const i=this.keybindingService.lookupKeybinding(e.commandId),n=i?U("commandPickAriaLabelWithKeybinding","{0}, {1}",e.label,i.getAriaLabel()):e.label;return{...e,ariaLabel:n,detail:this.options.showAlias&&e.commandAlias!==e.label?e.commandAlias:void 0,keybinding:i,accept:async()=>{var o;this.commandsHistory.push(e.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.commandId,from:(t==null?void 0:t.from)??"quick open"});try{(o=e.args)!=null&&o.length?await this.commandService.executeCommand(e.commandId,...e.args):await this.commandService.executeCommand(e.commandId)}catch(l){th(l)||this.dialogService.error(U("canNotRun","Command '{0}' resulted in an error",e.label),Cx(l))}}}}getTfIdfChunk({label:e,commandAlias:t,commandDescription:i}){let n=e;return t&&t!==e&&(n+=` - ${t}`),i&&i.value!==e&&(n+=` - ${i.value===i.original?i.value:`${i.value} (${i.original})`}`),n}},RF=Kg,Kg.PREFIX=">",Kg.TFIDF_THRESHOLD=.5,Kg.TFIDF_MAX_RESULTS=5,Kg.WORD_FILTER=bee(NM,yYe,q0e),Kg);T6=RF=OAe([Ob(1,bt),Ob(2,dn),Ob(3,On),Ob(4,lr),Ob(5,rB)],T6);var dp;let B6=(dp=class extends de{constructor(e,t,i){super(),this.storageService=e,this.configurationService=t,this.logService=i,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>this.updateConfiguration(e))),this._register(this.storageService.onWillSaveState(e=>{e.reason===wM.SHUTDOWN&&this.saveState()}))}updateConfiguration(e){e&&!e.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=Vo.getConfiguredCommandHistoryLength(this.configurationService),Vo.cache&&Vo.cache.limit!==this.configuredCommandsHistoryLength&&(Vo.cache.limit=this.configuredCommandsHistoryLength,Vo.hasChanges=!0))}load(){const e=this.storageService.get(Vo.PREF_KEY_CACHE,0);let t;if(e)try{t=JSON.parse(e)}catch(n){this.logService.error(`[CommandsHistory] invalid data: ${n}`)}const i=Vo.cache=new Ip(this.configuredCommandsHistoryLength,1);if(t){let n;t.usesLRU?n=t.entries:n=t.entries.sort((o,l)=>o.value-l.value),n.forEach(o=>i.set(o.key,o.value))}Vo.counter=this.storageService.getNumber(Vo.PREF_KEY_COUNTER,0,Vo.counter)}push(e){Vo.cache&&(Vo.cache.set(e,Vo.counter++),Vo.hasChanges=!0)}peek(e){var t;return(t=Vo.cache)==null?void 0:t.peek(e)}saveState(){if(!Vo.cache||!Vo.hasChanges)return;const e={usesLRU:!0,entries:[]};Vo.cache.forEach((t,i)=>e.entries.push({key:i,value:t})),this.storageService.store(Vo.PREF_KEY_CACHE,JSON.stringify(e),0,0),this.storageService.store(Vo.PREF_KEY_COUNTER,Vo.counter,0,0),Vo.hasChanges=!1}static getConfiguredCommandHistoryLength(e){var n,o;const i=(o=(n=e.getValue().workbench)==null?void 0:n.commandPalette)==null?void 0:o.history;return typeof i=="number"?i:Vo.DEFAULT_COMMANDS_HISTORY_LENGTH}},Vo=dp,dp.DEFAULT_COMMANDS_HISTORY_LENGTH=50,dp.PREF_KEY_CACHE="commandPalette.mru.cache",dp.PREF_KEY_COUNTER="commandPalette.mru.counter",dp.counter=1,dp.hasChanges=!1,dp);B6=Vo=OAe([Ob(0,su),Ob(1,li),Ob(2,El)],B6);class uht extends T6{constructor(e,t,i,n,o,l){super(e,t,i,n,o,l)}getCodeEditorCommandPicks(){var i;const e=this.activeTextEditorControl;if(!e)return[];const t=[];for(const n of e.getSupportedActions()){let o;(i=n.metadata)!=null&&i.description&&(Q3e(n.metadata.description)?o=n.metadata.description:o={original:n.metadata.description,value:n.metadata.description}),t.push({commandId:n.id,commandAlias:n.alias,commandDescription:o,label:Nee(n.label)||n.id})}return t}}var mht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},_N=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let CT=class extends uht{get activeTextEditorControl(){return this.codeEditorService.getFocusedCodeEditor()??void 0}constructor(e,t,i,n,o,l){super({showAlias:!1},e,i,n,o,l),this.codeEditorService=t}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};CT=mht([_N(0,bt),_N(1,zi),_N(2,dn),_N(3,On),_N(4,lr),_N(5,rB)],CT);const k5=class k5 extends et{constructor(){super({id:k5.ID,label:Uv.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:H.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(e){e.get(nh).quickAccess.show(CT.PREFIX)}};k5.ID="editor.action.quickCommand";let SJ=k5;Me(SJ);Vs.as(tN.Quickaccess).registerQuickAccessProvider({ctor:CT,prefix:CT.PREFIX,helpEntries:[{description:Uv.quickCommandHelp,commandId:SJ.ID}]});var pht=globalThis&&globalThis.__decorate||function(s,e,t,i){var n=arguments.length,o=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,i);else for(var r=s.length-1;r>=0;r--)(l=s[r])&&(o=(n<3?l(o):n>3?l(e,t,o):l(e,t))||o);return n>3&&o&&Object.defineProperty(e,t,o),o},ON=globalThis&&globalThis.__param||function(s,e){return function(t,i){e(t,i,s)}};let L6=class extends xA{constructor(e,t,i,n,o,l,r){super(!0,e,t,i,n,o,l,r)}};L6=pht([ON(1,wt),ON(2,zi),ON(3,no),ON(4,bt),ON(5,su),ON(6,li)],L6);Gi(xA.ID,L6,4);class ght extends et{constructor(){super({id:"editor.action.toggleHighContrast",label:DP.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(e,t){const i=e.get(fc),n=i.getColorTheme();Yu(n.type)?(i.setTheme(this._originalThemeName||(nV(n.type)?QW:Jg)),this._originalThemeName=null):(i.setTheme(nV(n.type)?HZ:PZ),this._originalThemeName=n.themeName)}}Me(ght);const bht={id:"editorContainer"},Uht={__name:"index",props:{value:String,language:String},emits:["change"],setup(s,{emit:e}){const t=s,i=()=>pQe(n.value).getValue(),n=x(null);return na(()=>{n.value=$fe.create(document.getElementById("editorContainer"),{value:t.value||"",language:t.language||"python",minimap:{enabled:!0},colorDecorators:!0,readOnly:!1,theme:"vs-dark",automaticLayout:!0}),n.value.onDidChangeModelContent(()=>{e("change",i())})}),(o,l)=>(ce(),we("div",bht))}};var fht=Object.defineProperty,jAe=s=>{throw TypeError(s)},Fht=(s,e,t)=>e in s?fht(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,Ii=(s,e,t)=>Fht(s,typeof e!="symbol"?e+"":e,t),Pie=(s,e,t)=>e.has(s)||jAe("Cannot "+t),F=(s,e,t)=>(Pie(s,e,"read from private field"),t?t.call(s):e.get(s)),J=(s,e,t)=>e.has(s)?jAe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),L=(s,e,t,i)=>(Pie(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),E=(s,e,t)=>(Pie(s,e,"access private method"),t),Ad=(s,e,t,i)=>({set _(n){L(s,e,n,t)},get _(){return F(s,e,i)}}),Zht={9306:(s,e,t)=>{var i=t(4901),n=t(6823),o=TypeError;s.exports=function(l){if(i(l))return l;throw new o(n(l)+" is not a function")}},3506:(s,e,t)=>{var i=t(3925),n=String,o=TypeError;s.exports=function(l){if(i(l))return l;throw new o("Can't set "+n(l)+" as a prototype")}},7080:(s,e,t)=>{var i=t(4402).has;s.exports=function(n){return i(n),n}},679:(s,e,t)=>{var i=t(1625),n=TypeError;s.exports=function(o,l){if(i(l,o))return o;throw new n("Incorrect invocation")}},8551:(s,e,t)=>{var i=t(34),n=String,o=TypeError;s.exports=function(l){if(i(l))return l;throw new o(n(l)+" is not an object")}},7811:s=>{s.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(s,e,t)=>{var i=t(4576),n=t(6706),o=t(2195),l=i.ArrayBuffer,r=i.TypeError;s.exports=l&&n(l.prototype,"byteLength","get")||function(a){if(o(a)!=="ArrayBuffer")throw new r("ArrayBuffer expected");return a.byteLength}},3238:(s,e,t)=>{var i=t(4576),n=t(7476),o=t(7394),l=i.ArrayBuffer,r=l&&l.prototype,a=r&&n(r.slice);s.exports=function(d){if(o(d)!==0||!a)return!1;try{return a(d,0,0),!1}catch{return!0}}},5169:(s,e,t)=>{var i=t(3238),n=TypeError;s.exports=function(o){if(i(o))throw new n("ArrayBuffer is detached");return o}},5636:(s,e,t)=>{var i=t(4576),n=t(9504),o=t(6706),l=t(7696),r=t(5169),a=t(7394),d=t(4483),c=t(1548),h=i.structuredClone,u=i.ArrayBuffer,m=i.DataView,p=Math.min,g=u.prototype,b=m.prototype,f=n(g.slice),Z=o(g,"resizable","get"),A=o(g,"maxByteLength","get"),N=n(b.getInt8),W=n(b.setInt8);s.exports=(c||d)&&function(Q,R,M){var w=a(Q),Y=R===void 0?w:l(R),G=!Z||!Z(Q),P;if(r(Q),c&&(Q=h(Q,{transfer:[Q]}),w===Y&&(M||G)))return Q;if(w>=Y&&(!M||G))P=f(Q,0,Y);else{var j=M&&!G&&A?{maxByteLength:A(Q)}:void 0;P=new u(Y,j);for(var X=new m(Q),ie=new m(P),se=p(Y,w),pe=0;pe<se;pe++)W(ie,pe,N(X,pe))}return c||d(Q),P}},4644:(s,e,t)=>{var i=t(7811),n=t(3724),o=t(4576),l=t(4901),r=t(34),a=t(9297),d=t(6955),c=t(6823),h=t(6699),u=t(6840),m=t(2106),p=t(1625),g=t(2787),b=t(2967),f=t(8227),Z=t(3392),A=t(1181),N=A.enforce,W=A.get,Q=o.Int8Array,R=Q&&Q.prototype,M=o.Uint8ClampedArray,w=M&&M.prototype,Y=Q&&g(Q),G=R&&g(R),P=Object.prototype,j=o.TypeError,X=f("toStringTag"),ie=Z("TYPED_ARRAY_TAG"),se="TypedArrayConstructor",pe=i&&!!b&&d(o.opera)!=="Opera",Ue=!1,Qe,He,Te,xe={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Je={BigInt64Array:8,BigUint64Array:8},Mt=function(yt){if(!r(yt))return!1;var fe=d(yt);return fe==="DataView"||a(xe,fe)||a(Je,fe)},St=function(yt){var fe=g(yt);if(r(fe)){var Vi=W(fe);return Vi&&a(Vi,se)?Vi[se]:St(fe)}},Pe=function(yt){if(!r(yt))return!1;var fe=d(yt);return a(xe,fe)||a(Je,fe)},Be=function(yt){if(Pe(yt))return yt;throw new j("Target is not a typed array")},rt=function(yt){if(l(yt)&&(!b||p(Y,yt)))return yt;throw new j(c(yt)+" is not a typed array constructor")},Tt=function(yt,fe,Vi,st){if(n){if(Vi)for(var Fn in xe){var qi=o[Fn];if(qi&&a(qi.prototype,yt))try{delete qi.prototype[yt]}catch{try{qi.prototype[yt]=fe}catch{}}}(!G[yt]||Vi)&&u(G,yt,Vi?fe:pe&&R[yt]||fe,st)}},qt=function(yt,fe,Vi){var st,Fn;if(n){if(b){if(Vi){for(st in xe)if(Fn=o[st],Fn&&a(Fn,yt))try{delete Fn[yt]}catch{}}if(!Y[yt]||Vi)try{return u(Y,yt,Vi?fe:pe&&Y[yt]||fe)}catch{}else return}for(st in xe)Fn=o[st],Fn&&(!Fn[yt]||Vi)&&u(Fn,yt,fe)}};for(Qe in xe)He=o[Qe],Te=He&&He.prototype,Te?N(Te)[se]=He:pe=!1;for(Qe in Je)He=o[Qe],Te=He&&He.prototype,Te&&(N(Te)[se]=He);if((!pe||!l(Y)||Y===Function.prototype)&&(Y=function(){throw new j("Incorrect invocation")},pe))for(Qe in xe)o[Qe]&&b(o[Qe],Y);if((!pe||!G||G===P)&&(G=Y.prototype,pe))for(Qe in xe)o[Qe]&&b(o[Qe].prototype,G);if(pe&&g(w)!==G&&b(w,G),n&&!a(G,X)){Ue=!0,m(G,X,{configurable:!0,get:function(){return r(this)?this[ie]:void 0}});for(Qe in xe)o[Qe]&&h(o[Qe],ie,Qe)}s.exports={NATIVE_ARRAY_BUFFER_VIEWS:pe,TYPED_ARRAY_TAG:Ue&&ie,aTypedArray:Be,aTypedArrayConstructor:rt,exportTypedArrayMethod:Tt,exportTypedArrayStaticMethod:qt,getTypedArrayConstructor:St,isView:Mt,isTypedArray:Pe,TypedArray:Y,TypedArrayPrototype:G}},5370:(s,e,t)=>{var i=t(6198);s.exports=function(n,o,l){for(var r=0,a=arguments.length>2?l:i(o),d=new n(a);a>r;)d[r]=o[r++];return d}},9617:(s,e,t)=>{var i=t(5397),n=t(5610),o=t(6198),l=function(r){return function(a,d,c){var h=i(a),u=o(h);if(u===0)return!r&&-1;var m=n(c,u),p;if(r&&d!==d){for(;u>m;)if(p=h[m++],p!==p)return!0}else for(;u>m;m++)if((r||m in h)&&h[m]===d)return r||m||0;return!r&&-1}};s.exports={includes:l(!0),indexOf:l(!1)}},4527:(s,e,t)=>{var i=t(3724),n=t(4376),o=TypeError,l=Object.getOwnPropertyDescriptor,r=i&&!function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(a){return a instanceof TypeError}}();s.exports=r?function(a,d){if(n(a)&&!l(a,"length").writable)throw new o("Cannot set read only .length");return a.length=d}:function(a,d){return a.length=d}},7680:(s,e,t)=>{var i=t(9504);s.exports=i([].slice)},7628:(s,e,t)=>{var i=t(6198);s.exports=function(n,o){for(var l=i(n),r=new o(l),a=0;a<l;a++)r[a]=n[l-a-1];return r}},9928:(s,e,t)=>{var i=t(6198),n=t(1291),o=RangeError;s.exports=function(l,r,a,d){var c=i(l),h=n(a),u=h<0?c+h:h;if(u>=c||u<0)throw new o("Incorrect index");for(var m=new r(c),p=0;p<c;p++)m[p]=p===u?d:l[p];return m}},6319:(s,e,t)=>{var i=t(8551),n=t(9539);s.exports=function(o,l,r,a){try{return a?l(i(r)[0],r[1]):l(r)}catch(d){n(o,"throw",d)}}},2195:(s,e,t)=>{var i=t(9504),n=i({}.toString),o=i("".slice);s.exports=function(l){return o(n(l),8,-1)}},6955:(s,e,t)=>{var i=t(2140),n=t(4901),o=t(2195),l=t(8227),r=l("toStringTag"),a=Object,d=o(function(){return arguments}())==="Arguments",c=function(h,u){try{return h[u]}catch{}};s.exports=i?o:function(h){var u,m,p;return h===void 0?"Undefined":h===null?"Null":typeof(m=c(u=a(h),r))=="string"?m:d?o(u):(p=o(u))==="Object"&&n(u.callee)?"Arguments":p}},7740:(s,e,t)=>{var i=t(9297),n=t(5031),o=t(7347),l=t(4913);s.exports=function(r,a,d){for(var c=n(a),h=l.f,u=o.f,m=0;m<c.length;m++){var p=c[m];!i(r,p)&&!(d&&i(d,p))&&h(r,p,u(a,p))}}},2211:(s,e,t)=>{var i=t(9039);s.exports=!i(function(){function n(){}return n.prototype.constructor=null,Object.getPrototypeOf(new n)!==n.prototype})},2529:s=>{s.exports=function(e,t){return{value:e,done:t}}},6699:(s,e,t)=>{var i=t(3724),n=t(4913),o=t(6980);s.exports=i?function(l,r,a){return n.f(l,r,o(1,a))}:function(l,r,a){return l[r]=a,l}},6980:s=>{s.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}},4659:(s,e,t)=>{var i=t(3724),n=t(4913),o=t(6980);s.exports=function(l,r,a){i?n.f(l,r,o(0,a)):l[r]=a}},2106:(s,e,t)=>{var i=t(283),n=t(4913);s.exports=function(o,l,r){return r.get&&i(r.get,l,{getter:!0}),r.set&&i(r.set,l,{setter:!0}),n.f(o,l,r)}},6840:(s,e,t)=>{var i=t(4901),n=t(4913),o=t(283),l=t(9433);s.exports=function(r,a,d,c){c||(c={});var h=c.enumerable,u=c.name!==void 0?c.name:a;if(i(d)&&o(d,u,c),c.global)h?r[a]=d:l(a,d);else{try{c.unsafe?r[a]&&(h=!0):delete r[a]}catch{}h?r[a]=d:n.f(r,a,{value:d,enumerable:!1,configurable:!c.nonConfigurable,writable:!c.nonWritable})}return r}},6279:(s,e,t)=>{var i=t(6840);s.exports=function(n,o,l){for(var r in o)i(n,r,o[r],l);return n}},9433:(s,e,t)=>{var i=t(4576),n=Object.defineProperty;s.exports=function(o,l){try{n(i,o,{value:l,configurable:!0,writable:!0})}catch{i[o]=l}return l}},3724:(s,e,t)=>{var i=t(9039);s.exports=!i(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})},4483:(s,e,t)=>{var i=t(4576),n=t(9429),o=t(1548),l=i.structuredClone,r=i.ArrayBuffer,a=i.MessageChannel,d=!1,c,h,u,m;if(o)d=function(p){l(p,{transfer:[p]})};else if(r)try{a||(c=n("worker_threads"),c&&(a=c.MessageChannel)),a&&(h=new a,u=new r(2),m=function(p){h.port1.postMessage(null,[p])},u.byteLength===2&&(m(u),u.byteLength===0&&(d=m)))}catch{}s.exports=d},4055:(s,e,t)=>{var i=t(4576),n=t(34),o=i.document,l=n(o)&&n(o.createElement);s.exports=function(r){return l?o.createElement(r):{}}},6837:s=>{var e=TypeError,t=9007199254740991;s.exports=function(i){if(i>t)throw e("Maximum allowed index exceeded");return i}},5002:s=>{s.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8727:s=>{s.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(s,e,t)=>{var i=t(4215);s.exports=i==="NODE"},2839:(s,e,t)=>{var i=t(4576),n=i.navigator,o=n&&n.userAgent;s.exports=o?String(o):""},9519:(s,e,t)=>{var i=t(4576),n=t(2839),o=i.process,l=i.Deno,r=o&&o.versions||l&&l.version,a=r&&r.v8,d,c;a&&(d=a.split("."),c=d[0]>0&&d[0]<4?1:+(d[0]+d[1])),!c&&n&&(d=n.match(/Edge\/(\d+)/),(!d||d[1]>=74)&&(d=n.match(/Chrome\/(\d+)/),d&&(c=+d[1]))),s.exports=c},4215:(s,e,t)=>{var i=t(4576),n=t(2839),o=t(2195),l=function(r){return n.slice(0,r.length)===r};s.exports=function(){return l("Bun/")?"BUN":l("Cloudflare-Workers")?"CLOUDFLARE":l("Deno/")?"DENO":l("Node.js/")?"NODE":i.Bun&&typeof Bun.version=="string"?"BUN":i.Deno&&typeof Deno.version=="object"?"DENO":o(i.process)==="process"?"NODE":i.window&&i.document?"BROWSER":"REST"}()},8574:(s,e,t)=>{var i=t(9504),n=Error,o=i("".replace),l=function(d){return String(new n(d).stack)}("zxcasd"),r=/\n\s*at [^:]*:[^\n]*/,a=r.test(l);s.exports=function(d,c){if(a&&typeof d=="string"&&!n.prepareStackTrace)for(;c--;)d=o(d,r,"");return d}},6518:(s,e,t)=>{var i=t(4576),n=t(7347).f,o=t(6699),l=t(6840),r=t(9433),a=t(7740),d=t(2796);s.exports=function(c,h){var u=c.target,m=c.global,p=c.stat,g,b,f,Z,A,N;if(m?b=i:p?b=i[u]||r(u,{}):b=i[u]&&i[u].prototype,b)for(f in h){if(A=h[f],c.dontCallGetSet?(N=n(b,f),Z=N&&N.value):Z=b[f],g=d(m?f:u+(p?".":"#")+f,c.forced),!g&&Z!==void 0){if(typeof A==typeof Z)continue;a(A,Z)}(c.sham||Z&&Z.sham)&&o(A,"sham",!0),l(b,f,A,c)}}},9039:s=>{s.exports=function(e){try{return!!e()}catch{return!0}}},8745:(s,e,t)=>{var i=t(616),n=Function.prototype,o=n.apply,l=n.call;s.exports=typeof Reflect=="object"&&Reflect.apply||(i?l.bind(o):function(){return l.apply(o,arguments)})},6080:(s,e,t)=>{var i=t(7476),n=t(9306),o=t(616),l=i(i.bind);s.exports=function(r,a){return n(r),a===void 0?r:o?l(r,a):function(){return r.apply(a,arguments)}}},616:(s,e,t)=>{var i=t(9039);s.exports=!i(function(){var n=(function(){}).bind();return typeof n!="function"||n.hasOwnProperty("prototype")})},9565:(s,e,t)=>{var i=t(616),n=Function.prototype.call;s.exports=i?n.bind(n):function(){return n.apply(n,arguments)}},350:(s,e,t)=>{var i=t(3724),n=t(9297),o=Function.prototype,l=i&&Object.getOwnPropertyDescriptor,r=n(o,"name"),a=r&&(function(){}).name==="something",d=r&&(!i||i&&l(o,"name").configurable);s.exports={EXISTS:r,PROPER:a,CONFIGURABLE:d}},6706:(s,e,t)=>{var i=t(9504),n=t(9306);s.exports=function(o,l,r){try{return i(n(Object.getOwnPropertyDescriptor(o,l)[r]))}catch{}}},7476:(s,e,t)=>{var i=t(2195),n=t(9504);s.exports=function(o){if(i(o)==="Function")return n(o)}},9504:(s,e,t)=>{var i=t(616),n=Function.prototype,o=n.call,l=i&&n.bind.bind(o,o);s.exports=i?l:function(r){return function(){return o.apply(r,arguments)}}},9429:(s,e,t)=>{var i=t(4576),n=t(6193);s.exports=function(o){if(n){try{return i.process.getBuiltinModule(o)}catch{}try{return Function('return require("'+o+'")')()}catch{}}}},7751:(s,e,t)=>{var i=t(4576),n=t(4901),o=function(l){return n(l)?l:void 0};s.exports=function(l,r){return arguments.length<2?o(i[l]):i[l]&&i[l][r]}},1767:s=>{s.exports=function(e){return{iterator:e,next:e.next,done:!1}}},8646:(s,e,t)=>{var i=t(9565),n=t(8551),o=t(1767),l=t(851);s.exports=function(r,a){(!a||typeof r!="string")&&n(r);var d=l(r);return o(n(d!==void 0?i(d,r):r))}},851:(s,e,t)=>{var i=t(6955),n=t(5966),o=t(4117),l=t(6269),r=t(8227),a=r("iterator");s.exports=function(d){if(!o(d))return n(d,a)||n(d,"@@iterator")||l[i(d)]}},81:(s,e,t)=>{var i=t(9565),n=t(9306),o=t(8551),l=t(6823),r=t(851),a=TypeError;s.exports=function(d,c){var h=arguments.length<2?r(d):c;if(n(h))return o(i(h,d));throw new a(l(d)+" is not iterable")}},5966:(s,e,t)=>{var i=t(9306),n=t(4117);s.exports=function(o,l){var r=o[l];return n(r)?void 0:i(r)}},3789:(s,e,t)=>{var i=t(9306),n=t(8551),o=t(9565),l=t(1291),r=t(1767),a="Invalid size",d=RangeError,c=TypeError,h=Math.max,u=function(m,p){this.set=m,this.size=h(p,0),this.has=i(m.has),this.keys=i(m.keys)};u.prototype={getIterator:function(){return r(n(o(this.keys,this.set)))},includes:function(m){return o(this.has,this.set,m)}},s.exports=function(m){n(m);var p=+m.size;if(p!==p)throw new c(a);var g=l(p);if(g<0)throw new d(a);return new u(m,g)}},4576:function(s){var e=function(t){return t&&t.Math===Math&&t};s.exports=e(typeof globalThis=="object"&&globalThis)||e(typeof window=="object"&&window)||e(typeof self=="object"&&self)||e(typeof global=="object"&&global)||e(typeof this=="object"&&this)||function(){return this}()||Function("return this")()},9297:(s,e,t)=>{var i=t(9504),n=t(8981),o=i({}.hasOwnProperty);s.exports=Object.hasOwn||function(l,r){return o(n(l),r)}},421:s=>{s.exports={}},397:(s,e,t)=>{var i=t(7751);s.exports=i("document","documentElement")},5917:(s,e,t)=>{var i=t(3724),n=t(9039),o=t(4055);s.exports=!i&&!n(function(){return Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a!==7})},7055:(s,e,t)=>{var i=t(9504),n=t(9039),o=t(2195),l=Object,r=i("".split);s.exports=n(function(){return!l("z").propertyIsEnumerable(0)})?function(a){return o(a)==="String"?r(a,""):l(a)}:l},3167:(s,e,t)=>{var i=t(4901),n=t(34),o=t(2967);s.exports=function(l,r,a){var d,c;return o&&i(d=r.constructor)&&d!==a&&n(c=d.prototype)&&c!==a.prototype&&o(l,c),l}},3706:(s,e,t)=>{var i=t(9504),n=t(4901),o=t(7629),l=i(Function.toString);n(o.inspectSource)||(o.inspectSource=function(r){return l(r)}),s.exports=o.inspectSource},1181:(s,e,t)=>{var i=t(8622),n=t(4576),o=t(34),l=t(6699),r=t(9297),a=t(7629),d=t(6119),c=t(421),h="Object already initialized",u=n.TypeError,m=n.WeakMap,p,g,b,f=function(W){return b(W)?g(W):p(W,{})},Z=function(W){return function(Q){var R;if(!o(Q)||(R=g(Q)).type!==W)throw new u("Incompatible receiver, "+W+" required");return R}};if(i||a.state){var A=a.state||(a.state=new m);A.get=A.get,A.has=A.has,A.set=A.set,p=function(W,Q){if(A.has(W))throw new u(h);return Q.facade=W,A.set(W,Q),Q},g=function(W){return A.get(W)||{}},b=function(W){return A.has(W)}}else{var N=d("state");c[N]=!0,p=function(W,Q){if(r(W,N))throw new u(h);return Q.facade=W,l(W,N,Q),Q},g=function(W){return r(W,N)?W[N]:{}},b=function(W){return r(W,N)}}s.exports={set:p,get:g,has:b,enforce:f,getterFor:Z}},4209:(s,e,t)=>{var i=t(8227),n=t(6269),o=i("iterator"),l=Array.prototype;s.exports=function(r){return r!==void 0&&(n.Array===r||l[o]===r)}},4376:(s,e,t)=>{var i=t(2195);s.exports=Array.isArray||function(n){return i(n)==="Array"}},1108:(s,e,t)=>{var i=t(6955);s.exports=function(n){var o=i(n);return o==="BigInt64Array"||o==="BigUint64Array"}},4901:s=>{var e=typeof document=="object"&&document.all;s.exports=typeof e>"u"&&e!==void 0?function(t){return typeof t=="function"||t===e}:function(t){return typeof t=="function"}},2796:(s,e,t)=>{var i=t(9039),n=t(4901),o=/#|\.prototype\./,l=function(h,u){var m=a[r(h)];return m===c?!0:m===d?!1:n(u)?i(u):!!u},r=l.normalize=function(h){return String(h).replace(o,".").toLowerCase()},a=l.data={},d=l.NATIVE="N",c=l.POLYFILL="P";s.exports=l},4117:s=>{s.exports=function(e){return e==null}},34:(s,e,t)=>{var i=t(4901);s.exports=function(n){return typeof n=="object"?n!==null:i(n)}},3925:(s,e,t)=>{var i=t(34);s.exports=function(n){return i(n)||n===null}},6395:s=>{s.exports=!1},757:(s,e,t)=>{var i=t(7751),n=t(4901),o=t(1625),l=t(7040),r=Object;s.exports=l?function(a){return typeof a=="symbol"}:function(a){var d=i("Symbol");return n(d)&&o(d.prototype,r(a))}},507:(s,e,t)=>{var i=t(9565);s.exports=function(n,o,l){for(var r=l?n:n.iterator,a=n.next,d,c;!(d=i(a,r)).done;)if(c=o(d.value),c!==void 0)return c}},2652:(s,e,t)=>{var i=t(6080),n=t(9565),o=t(8551),l=t(6823),r=t(4209),a=t(6198),d=t(1625),c=t(81),h=t(851),u=t(9539),m=TypeError,p=function(b,f){this.stopped=b,this.result=f},g=p.prototype;s.exports=function(b,f,Z){var A=Z&&Z.that,N=!!(Z&&Z.AS_ENTRIES),W=!!(Z&&Z.IS_RECORD),Q=!!(Z&&Z.IS_ITERATOR),R=!!(Z&&Z.INTERRUPTED),M=i(f,A),w,Y,G,P,j,X,ie,se=function(Ue){return w&&u(w,"normal",Ue),new p(!0,Ue)},pe=function(Ue){return N?(o(Ue),R?M(Ue[0],Ue[1],se):M(Ue[0],Ue[1])):R?M(Ue,se):M(Ue)};if(W)w=b.iterator;else if(Q)w=b;else{if(Y=h(b),!Y)throw new m(l(b)+" is not iterable");if(r(Y)){for(G=0,P=a(b);P>G;G++)if(j=pe(b[G]),j&&d(g,j))return j;return new p(!1)}w=c(b,Y)}for(X=W?b.next:w.next;!(ie=n(X,w)).done;){try{j=pe(ie.value)}catch(Ue){u(w,"throw",Ue)}if(typeof j=="object"&&j&&d(g,j))return j}return new p(!1)}},9539:(s,e,t)=>{var i=t(9565),n=t(8551),o=t(5966);s.exports=function(l,r,a){var d,c;n(l);try{if(d=o(l,"return"),!d){if(r==="throw")throw a;return a}d=i(d,l)}catch(h){c=!0,d=h}if(r==="throw")throw a;if(c)throw d;return n(d),a}},9462:(s,e,t)=>{var i=t(9565),n=t(2360),o=t(6699),l=t(6279),r=t(8227),a=t(1181),d=t(5966),c=t(7657).IteratorPrototype,h=t(2529),u=t(9539),m=r("toStringTag"),p="IteratorHelper",g="WrapForValidIterator",b=a.set,f=function(N){var W=a.getterFor(N?g:p);return l(n(c),{next:function(){var Q=W(this);if(N)return Q.nextHandler();try{var R=Q.done?void 0:Q.nextHandler();return h(R,Q.done)}catch(M){throw Q.done=!0,M}},return:function(){var Q=W(this),R=Q.iterator;if(Q.done=!0,N){var M=d(R,"return");return M?i(M,R):h(void 0,!0)}if(Q.inner)try{u(Q.inner.iterator,"normal")}catch(w){return u(R,"throw",w)}return R&&u(R,"normal"),h(void 0,!0)}})},Z=f(!0),A=f(!1);o(A,m,"Iterator Helper"),s.exports=function(N,W){var Q=function(R,M){M?(M.iterator=R.iterator,M.next=R.next):M=R,M.type=W?g:p,M.nextHandler=N,M.counter=0,M.done=!1,b(this,M)};return Q.prototype=W?Z:A,Q}},713:(s,e,t)=>{var i=t(9565),n=t(9306),o=t(8551),l=t(1767),r=t(9462),a=t(6319),d=r(function(){var c=this.iterator,h=o(i(this.next,c)),u=this.done=!!h.done;if(!u)return a(c,this.mapper,[h.value,this.counter++],!0)});s.exports=function(c){return o(this),n(c),new d(l(this),{mapper:c})}},7657:(s,e,t)=>{var i=t(9039),n=t(4901),o=t(34),l=t(2360),r=t(2787),a=t(6840),d=t(8227),c=t(6395),h=d("iterator"),u=!1,m,p,g;[].keys&&(g=[].keys(),"next"in g?(p=r(r(g)),p!==Object.prototype&&(m=p)):u=!0);var b=!o(m)||i(function(){var f={};return m[h].call(f)!==f});b?m={}:c&&(m=l(m)),n(m[h])||a(m,h,function(){return this}),s.exports={IteratorPrototype:m,BUGGY_SAFARI_ITERATORS:u}},6269:s=>{s.exports={}},6198:(s,e,t)=>{var i=t(8014);s.exports=function(n){return i(n.length)}},283:(s,e,t)=>{var i=t(9504),n=t(9039),o=t(4901),l=t(9297),r=t(3724),a=t(350).CONFIGURABLE,d=t(3706),c=t(1181),h=c.enforce,u=c.get,m=String,p=Object.defineProperty,g=i("".slice),b=i("".replace),f=i([].join),Z=r&&!n(function(){return p(function(){},"length",{value:8}).length!==8}),A=String(String).split("String"),N=s.exports=function(W,Q,R){g(m(Q),0,7)==="Symbol("&&(Q="["+b(m(Q),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),R&&R.getter&&(Q="get "+Q),R&&R.setter&&(Q="set "+Q),(!l(W,"name")||a&&W.name!==Q)&&(r?p(W,"name",{value:Q,configurable:!0}):W.name=Q),Z&&R&&l(R,"arity")&&W.length!==R.arity&&p(W,"length",{value:R.arity});try{R&&l(R,"constructor")&&R.constructor?r&&p(W,"prototype",{writable:!1}):W.prototype&&(W.prototype=void 0)}catch{}var M=h(W);return l(M,"source")||(M.source=f(A,typeof Q=="string"?Q:"")),W};Function.prototype.toString=N(function(){return o(this)&&u(this).source||d(this)},"toString")},741:s=>{var e=Math.ceil,t=Math.floor;s.exports=Math.trunc||function(i){var n=+i;return(n>0?t:e)(n)}},6043:(s,e,t)=>{var i=t(9306),n=TypeError,o=function(l){var r,a;this.promise=new l(function(d,c){if(r!==void 0||a!==void 0)throw new n("Bad Promise constructor");r=d,a=c}),this.resolve=i(r),this.reject=i(a)};s.exports.f=function(l){return new o(l)}},2603:(s,e,t)=>{var i=t(655);s.exports=function(n,o){return n===void 0?arguments.length<2?"":o:i(n)}},4149:s=>{var e=RangeError;s.exports=function(t){if(t===t)return t;throw new e("NaN is not allowed")}},2360:(s,e,t)=>{var i=t(8551),n=t(6801),o=t(8727),l=t(421),r=t(397),a=t(4055),d=t(6119),c=">",h="<",u="prototype",m="script",p=d("IE_PROTO"),g=function(){},b=function(W){return h+m+c+W+h+"/"+m+c},f=function(W){W.write(b("")),W.close();var Q=W.parentWindow.Object;return W=null,Q},Z=function(){var W=a("iframe"),Q="java"+m+":",R;return W.style.display="none",r.appendChild(W),W.src=String(Q),R=W.contentWindow.document,R.open(),R.write(b("document.F=Object")),R.close(),R.F},A,N=function(){try{A=new ActiveXObject("htmlfile")}catch{}N=typeof document<"u"?document.domain&&A?f(A):Z():f(A);for(var W=o.length;W--;)delete N[u][o[W]];return N()};l[p]=!0,s.exports=Object.create||function(W,Q){var R;return W!==null?(g[u]=i(W),R=new g,g[u]=null,R[p]=W):R=N(),Q===void 0?R:n.f(R,Q)}},6801:(s,e,t)=>{var i=t(3724),n=t(8686),o=t(4913),l=t(8551),r=t(5397),a=t(1072);e.f=i&&!n?Object.defineProperties:function(d,c){l(d);for(var h=r(c),u=a(c),m=u.length,p=0,g;m>p;)o.f(d,g=u[p++],h[g]);return d}},4913:(s,e,t)=>{var i=t(3724),n=t(5917),o=t(8686),l=t(8551),r=t(6969),a=TypeError,d=Object.defineProperty,c=Object.getOwnPropertyDescriptor,h="enumerable",u="configurable",m="writable";e.f=i?o?function(p,g,b){if(l(p),g=r(g),l(b),typeof p=="function"&&g==="prototype"&&"value"in b&&m in b&&!b[m]){var f=c(p,g);f&&f[m]&&(p[g]=b.value,b={configurable:u in b?b[u]:f[u],enumerable:h in b?b[h]:f[h],writable:!1})}return d(p,g,b)}:d:function(p,g,b){if(l(p),g=r(g),l(b),n)try{return d(p,g,b)}catch{}if("get"in b||"set"in b)throw new a("Accessors not supported");return"value"in b&&(p[g]=b.value),p}},7347:(s,e,t)=>{var i=t(3724),n=t(9565),o=t(8773),l=t(6980),r=t(5397),a=t(6969),d=t(9297),c=t(5917),h=Object.getOwnPropertyDescriptor;e.f=i?h:function(u,m){if(u=r(u),m=a(m),c)try{return h(u,m)}catch{}if(d(u,m))return l(!n(o.f,u,m),u[m])}},8480:(s,e,t)=>{var i=t(1828),n=t(8727),o=n.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(l){return i(l,o)}},3717:(s,e)=>{e.f=Object.getOwnPropertySymbols},2787:(s,e,t)=>{var i=t(9297),n=t(4901),o=t(8981),l=t(6119),r=t(2211),a=l("IE_PROTO"),d=Object,c=d.prototype;s.exports=r?d.getPrototypeOf:function(h){var u=o(h);if(i(u,a))return u[a];var m=u.constructor;return n(m)&&u instanceof m?m.prototype:u instanceof d?c:null}},1625:(s,e,t)=>{var i=t(9504);s.exports=i({}.isPrototypeOf)},1828:(s,e,t)=>{var i=t(9504),n=t(9297),o=t(5397),l=t(9617).indexOf,r=t(421),a=i([].push);s.exports=function(d,c){var h=o(d),u=0,m=[],p;for(p in h)!n(r,p)&&n(h,p)&&a(m,p);for(;c.length>u;)n(h,p=c[u++])&&(~l(m,p)||a(m,p));return m}},1072:(s,e,t)=>{var i=t(1828),n=t(8727);s.exports=Object.keys||function(o){return i(o,n)}},8773:(s,e)=>{var t={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,n=i&&!t.call({1:2},1);e.f=n?function(o){var l=i(this,o);return!!l&&l.enumerable}:t},2967:(s,e,t)=>{var i=t(6706),n=t(34),o=t(7750),l=t(3506);s.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,a={},d;try{d=i(Object.prototype,"__proto__","set"),d(a,[]),r=a instanceof Array}catch{}return function(c,h){return o(c),l(h),n(c)&&(r?d(c,h):c.__proto__=h),c}}():void 0)},4270:(s,e,t)=>{var i=t(9565),n=t(4901),o=t(34),l=TypeError;s.exports=function(r,a){var d,c;if(a==="string"&&n(d=r.toString)&&!o(c=i(d,r))||n(d=r.valueOf)&&!o(c=i(d,r))||a!=="string"&&n(d=r.toString)&&!o(c=i(d,r)))return c;throw new l("Can't convert object to primitive value")}},5031:(s,e,t)=>{var i=t(7751),n=t(9504),o=t(8480),l=t(3717),r=t(8551),a=n([].concat);s.exports=i("Reflect","ownKeys")||function(d){var c=o.f(r(d)),h=l.f;return h?a(c,h(d)):c}},8235:(s,e,t)=>{var i=t(9504),n=t(9297),o=SyntaxError,l=parseInt,r=String.fromCharCode,a=i("".charAt),d=i("".slice),c=i(/./.exec),h={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":`
- `,"\\r":"\r","\\t":" "},u=/^[\da-f]{4}$/i,m=/^[\u0000-\u001F]$/;s.exports=function(p,g){for(var b=!0,f="";g<p.length;){var Z=a(p,g);if(Z==="\\"){var A=d(p,g,g+2);if(n(h,A))f+=h[A],g+=2;else if(A==="\\u"){g+=2;var N=d(p,g,g+4);if(!c(u,N))throw new o("Bad Unicode escape at: "+g);f+=r(l(N,16)),g+=4}else throw new o('Unknown escape sequence: "'+A+'"')}else if(Z==='"'){b=!1,g++;break}else{if(c(m,Z))throw new o("Bad control character in string literal at: "+g);f+=Z,g++}}if(b)throw new o("Unterminated string at: "+g);return{value:f,end:g}}},1103:s=>{s.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},7750:(s,e,t)=>{var i=t(4117),n=TypeError;s.exports=function(o){if(i(o))throw new n("Can't call method on "+o);return o}},9286:(s,e,t)=>{var i=t(4402),n=t(8469),o=i.Set,l=i.add;s.exports=function(r){var a=new o;return n(r,function(d){l(a,d)}),a}},3440:(s,e,t)=>{var i=t(7080),n=t(4402),o=t(9286),l=t(5170),r=t(3789),a=t(8469),d=t(507),c=n.has,h=n.remove;s.exports=function(u){var m=i(this),p=r(u),g=o(m);return l(m)<=p.size?a(m,function(b){p.includes(b)&&h(g,b)}):d(p.getIterator(),function(b){c(m,b)&&h(g,b)}),g}},4402:(s,e,t)=>{var i=t(9504),n=Set.prototype;s.exports={Set,add:i(n.add),has:i(n.has),remove:i(n.delete),proto:n}},8750:(s,e,t)=>{var i=t(7080),n=t(4402),o=t(5170),l=t(3789),r=t(8469),a=t(507),d=n.Set,c=n.add,h=n.has;s.exports=function(u){var m=i(this),p=l(u),g=new d;return o(m)>p.size?a(p.getIterator(),function(b){h(m,b)&&c(g,b)}):r(m,function(b){p.includes(b)&&c(g,b)}),g}},4449:(s,e,t)=>{var i=t(7080),n=t(4402).has,o=t(5170),l=t(3789),r=t(8469),a=t(507),d=t(9539);s.exports=function(c){var h=i(this),u=l(c);if(o(h)<=u.size)return r(h,function(p){if(u.includes(p))return!1},!0)!==!1;var m=u.getIterator();return a(m,function(p){if(n(h,p))return d(m,"normal",!1)})!==!1}},3838:(s,e,t)=>{var i=t(7080),n=t(5170),o=t(8469),l=t(3789);s.exports=function(r){var a=i(this),d=l(r);return n(a)>d.size?!1:o(a,function(c){if(!d.includes(c))return!1},!0)!==!1}},8527:(s,e,t)=>{var i=t(7080),n=t(4402).has,o=t(5170),l=t(3789),r=t(507),a=t(9539);s.exports=function(d){var c=i(this),h=l(d);if(o(c)<h.size)return!1;var u=h.getIterator();return r(u,function(m){if(!n(c,m))return a(u,"normal",!1)})!==!1}},8469:(s,e,t)=>{var i=t(9504),n=t(507),o=t(4402),l=o.Set,r=o.proto,a=i(r.forEach),d=i(r.keys),c=d(new l).next;s.exports=function(h,u,m){return m?n({iterator:d(h),next:c},u):a(h,u)}},4916:(s,e,t)=>{var i=t(7751),n=function(o){return{size:o,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};s.exports=function(o){var l=i("Set");try{new l()[o](n(0));try{return new l()[o](n(-1)),!1}catch{return!0}}catch{return!1}}},5170:(s,e,t)=>{var i=t(6706),n=t(4402);s.exports=i(n.proto,"size","get")||function(o){return o.size}},3650:(s,e,t)=>{var i=t(7080),n=t(4402),o=t(9286),l=t(3789),r=t(507),a=n.add,d=n.has,c=n.remove;s.exports=function(h){var u=i(this),m=l(h).getIterator(),p=o(u);return r(m,function(g){d(u,g)?c(p,g):a(p,g)}),p}},4204:(s,e,t)=>{var i=t(7080),n=t(4402).add,o=t(9286),l=t(3789),r=t(507);s.exports=function(a){var d=i(this),c=l(a).getIterator(),h=o(d);return r(c,function(u){n(h,u)}),h}},6119:(s,e,t)=>{var i=t(5745),n=t(3392),o=i("keys");s.exports=function(l){return o[l]||(o[l]=n(l))}},7629:(s,e,t)=>{var i=t(6395),n=t(4576),o=t(9433),l="__core-js_shared__",r=s.exports=n[l]||o(l,{});(r.versions||(r.versions=[])).push({version:"3.39.0",mode:i?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(s,e,t)=>{var i=t(7629);s.exports=function(n,o){return i[n]||(i[n]=o||{})}},1548:(s,e,t)=>{var i=t(4576),n=t(9039),o=t(9519),l=t(4215),r=i.structuredClone;s.exports=!!r&&!n(function(){if(l==="DENO"&&o>92||l==="NODE"&&o>94||l==="BROWSER"&&o>97)return!1;var a=new ArrayBuffer(8),d=r(a,{transfer:[a]});return a.byteLength!==0||d.byteLength!==8})},4495:(s,e,t)=>{var i=t(9519),n=t(9039),o=t(4576),l=o.String;s.exports=!!Object.getOwnPropertySymbols&&!n(function(){var r=Symbol("symbol detection");return!l(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&i&&i<41})},5610:(s,e,t)=>{var i=t(1291),n=Math.max,o=Math.min;s.exports=function(l,r){var a=i(l);return a<0?n(a+r,0):o(a,r)}},5854:(s,e,t)=>{var i=t(2777),n=TypeError;s.exports=function(o){var l=i(o,"number");if(typeof l=="number")throw new n("Can't convert number to bigint");return BigInt(l)}},7696:(s,e,t)=>{var i=t(1291),n=t(8014),o=RangeError;s.exports=function(l){if(l===void 0)return 0;var r=i(l),a=n(r);if(r!==a)throw new o("Wrong length or index");return a}},5397:(s,e,t)=>{var i=t(7055),n=t(7750);s.exports=function(o){return i(n(o))}},1291:(s,e,t)=>{var i=t(741);s.exports=function(n){var o=+n;return o!==o||o===0?0:i(o)}},8014:(s,e,t)=>{var i=t(1291),n=Math.min;s.exports=function(o){var l=i(o);return l>0?n(l,9007199254740991):0}},8981:(s,e,t)=>{var i=t(7750),n=Object;s.exports=function(o){return n(i(o))}},9590:(s,e,t)=>{var i=t(1291),n=RangeError;s.exports=function(o){var l=i(o);if(l<0)throw new n("The argument can't be less than 0");return l}},2777:(s,e,t)=>{var i=t(9565),n=t(34),o=t(757),l=t(5966),r=t(4270),a=t(8227),d=TypeError,c=a("toPrimitive");s.exports=function(h,u){if(!n(h)||o(h))return h;var m=l(h,c),p;if(m){if(u===void 0&&(u="default"),p=i(m,h,u),!n(p)||o(p))return p;throw new d("Can't convert object to primitive value")}return u===void 0&&(u="number"),r(h,u)}},6969:(s,e,t)=>{var i=t(2777),n=t(757);s.exports=function(o){var l=i(o,"string");return n(l)?l:l+""}},2140:(s,e,t)=>{var i=t(8227),n=i("toStringTag"),o={};o[n]="z",s.exports=String(o)==="[object z]"},655:(s,e,t)=>{var i=t(6955),n=String;s.exports=function(o){if(i(o)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return n(o)}},6823:s=>{var e=String;s.exports=function(t){try{return e(t)}catch{return"Object"}}},3392:(s,e,t)=>{var i=t(9504),n=0,o=Math.random(),l=i(1 .toString);s.exports=function(r){return"Symbol("+(r===void 0?"":r)+")_"+l(++n+o,36)}},7040:(s,e,t)=>{var i=t(4495);s.exports=i&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},8686:(s,e,t)=>{var i=t(3724),n=t(9039);s.exports=i&&n(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})},2812:s=>{var e=TypeError;s.exports=function(t,i){if(t<i)throw new e("Not enough arguments");return t}},8622:(s,e,t)=>{var i=t(4576),n=t(4901),o=i.WeakMap;s.exports=n(o)&&/native code/.test(String(o))},8227:(s,e,t)=>{var i=t(4576),n=t(5745),o=t(9297),l=t(3392),r=t(4495),a=t(7040),d=i.Symbol,c=n("wks"),h=a?d.for||d:d&&d.withoutSetter||l;s.exports=function(u){return o(c,u)||(c[u]=r&&o(d,u)?d[u]:h("Symbol."+u)),c[u]}},6573:(s,e,t)=>{var i=t(3724),n=t(2106),o=t(3238),l=ArrayBuffer.prototype;i&&!("detached"in l)&&n(l,"detached",{configurable:!0,get:function(){return o(this)}})},7936:(s,e,t)=>{var i=t(6518),n=t(5636);n&&i({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return n(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(s,e,t)=>{var i=t(6518),n=t(5636);n&&i({target:"ArrayBuffer",proto:!0},{transfer:function(){return n(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(s,e,t)=>{var i=t(6518),n=t(8981),o=t(6198),l=t(4527),r=t(6837),a=t(9039),d=a(function(){return[].push.call({length:4294967296},1)!==4294967297}),c=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(u){return u instanceof TypeError}},h=d||!c();i({target:"Array",proto:!0,arity:1,forced:h},{push:function(u){var m=n(this),p=o(m),g=arguments.length;r(p+g);for(var b=0;b<g;b++)m[p]=arguments[b],p++;return l(m,p),p}})},8111:(s,e,t)=>{var i=t(6518),n=t(4576),o=t(679),l=t(8551),r=t(4901),a=t(2787),d=t(2106),c=t(4659),h=t(9039),u=t(9297),m=t(8227),p=t(7657).IteratorPrototype,g=t(3724),b=t(6395),f="constructor",Z="Iterator",A=m("toStringTag"),N=TypeError,W=n[Z],Q=b||!r(W)||W.prototype!==p||!h(function(){W({})}),R=function(){if(o(this,p),a(this)===p)throw new N("Abstract class Iterator not directly constructable")},M=function(w,Y){g?d(p,w,{configurable:!0,get:function(){return Y},set:function(G){if(l(this),this===p)throw new N("You can't redefine this property");u(this,w)?this[w]=G:c(this,w,G)}}):p[w]=Y};u(p,A)||M(A,Z),(Q||!u(p,f)||p[f]===Object)&&M(f,R),R.prototype=p,i({global:!0,constructor:!0,forced:Q},{Iterator:R})},9314:(s,e,t)=>{var i=t(6518),n=t(9565),o=t(8551),l=t(1767),r=t(4149),a=t(9590),d=t(9462),c=t(6395),h=d(function(){for(var u=this.iterator,m=this.next,p,g;this.remaining;)if(this.remaining--,p=o(n(m,u)),g=this.done=!!p.done,g)return;if(p=o(n(m,u)),g=this.done=!!p.done,!g)return p.value});i({target:"Iterator",proto:!0,real:!0,forced:c},{drop:function(u){o(this);var m=a(r(+u));return new h(l(this),{remaining:m})}})},1148:(s,e,t)=>{var i=t(6518),n=t(2652),o=t(9306),l=t(8551),r=t(1767);i({target:"Iterator",proto:!0,real:!0},{every:function(a){l(this),o(a);var d=r(this),c=0;return!n(d,function(h,u){if(!a(h,c++))return u()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},2489:(s,e,t)=>{var i=t(6518),n=t(9565),o=t(9306),l=t(8551),r=t(1767),a=t(9462),d=t(6319),c=t(6395),h=a(function(){for(var u=this.iterator,m=this.predicate,p=this.next,g,b,f;;){if(g=l(n(p,u)),b=this.done=!!g.done,b)return;if(f=g.value,d(u,m,[f,this.counter++],!0))return f}});i({target:"Iterator",proto:!0,real:!0,forced:c},{filter:function(u){return l(this),o(u),new h(r(this),{predicate:u})}})},531:(s,e,t)=>{var i=t(6518),n=t(9565),o=t(9306),l=t(8551),r=t(1767),a=t(8646),d=t(9462),c=t(9539),h=t(6395),u=d(function(){for(var m=this.iterator,p=this.mapper,g,b;;){if(b=this.inner)try{if(g=l(n(b.next,b.iterator)),!g.done)return g.value;this.inner=null}catch(f){c(m,"throw",f)}if(g=l(n(this.next,m)),this.done=!!g.done)return;try{this.inner=a(p(g.value,this.counter++),!1)}catch(f){c(m,"throw",f)}}});i({target:"Iterator",proto:!0,real:!0,forced:h},{flatMap:function(m){return l(this),o(m),new u(r(this),{mapper:m,inner:null})}})},1701:(s,e,t)=>{var i=t(6518),n=t(713),o=t(6395);i({target:"Iterator",proto:!0,real:!0,forced:o},{map:n})},3579:(s,e,t)=>{var i=t(6518),n=t(2652),o=t(9306),l=t(8551),r=t(1767);i({target:"Iterator",proto:!0,real:!0},{some:function(a){l(this),o(a);var d=r(this),c=0;return n(d,function(h,u){if(a(h,c++))return u()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},1689:(s,e,t)=>{var i=t(6518),n=t(4576),o=t(8745),l=t(7680),r=t(6043),a=t(9306),d=t(1103),c=n.Promise,h=!1,u=!c||!c.try||d(function(){c.try(function(m){h=m===8},8)}).error||!h;i({target:"Promise",stat:!0,forced:u},{try:function(m){var p=arguments.length>1?l(arguments,1):[],g=r.f(this),b=d(function(){return o(a(m),void 0,p)});return(b.error?g.reject:g.resolve)(b.value),g.promise}})},4628:(s,e,t)=>{var i=t(6518),n=t(6043);i({target:"Promise",stat:!0},{withResolvers:function(){var o=n.f(this);return{promise:o.promise,resolve:o.resolve,reject:o.reject}}})},7642:(s,e,t)=>{var i=t(6518),n=t(3440),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("difference")},{difference:n})},8004:(s,e,t)=>{var i=t(6518),n=t(9039),o=t(8750),l=t(4916),r=!l("intersection")||n(function(){return String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))!=="3,2"});i({target:"Set",proto:!0,real:!0,forced:r},{intersection:o})},3853:(s,e,t)=>{var i=t(6518),n=t(4449),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("isDisjointFrom")},{isDisjointFrom:n})},5876:(s,e,t)=>{var i=t(6518),n=t(3838),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("isSubsetOf")},{isSubsetOf:n})},2475:(s,e,t)=>{var i=t(6518),n=t(8527),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("isSupersetOf")},{isSupersetOf:n})},5024:(s,e,t)=>{var i=t(6518),n=t(3650),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("symmetricDifference")},{symmetricDifference:n})},1698:(s,e,t)=>{var i=t(6518),n=t(4204),o=t(4916);i({target:"Set",proto:!0,real:!0,forced:!o("union")},{union:n})},7467:(s,e,t)=>{var i=t(7628),n=t(4644),o=n.aTypedArray,l=n.exportTypedArrayMethod,r=n.getTypedArrayConstructor;l("toReversed",function(){return i(o(this),r(this))})},4732:(s,e,t)=>{var i=t(4644),n=t(9504),o=t(9306),l=t(5370),r=i.aTypedArray,a=i.getTypedArrayConstructor,d=i.exportTypedArrayMethod,c=n(i.TypedArrayPrototype.sort);d("toSorted",function(h){h!==void 0&&o(h);var u=r(this),m=l(a(u),u);return c(m,h)})},9577:(s,e,t)=>{var i=t(9928),n=t(4644),o=t(1108),l=t(1291),r=t(5854),a=n.aTypedArray,d=n.getTypedArrayConstructor,c=n.exportTypedArrayMethod,h=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(u){return u===8}}();c("with",function(u,m){var p=a(this),g=l(u),b=o(p)?r(m):+m;return i(p,d(p),g,b)},!h)},8992:(s,e,t)=>{t(8111)},4743:(s,e,t)=>{t(9314)},3215:(s,e,t)=>{t(1148)},4520:(s,e,t)=>{t(2489)},670:(s,e,t)=>{t(531)},1454:(s,e,t)=>{t(1701)},7550:(s,e,t)=>{t(3579)},8335:(s,e,t)=>{var i=t(6518),n=t(3724),o=t(4576),l=t(7751),r=t(9504),a=t(9565),d=t(4901),c=t(34),h=t(4376),u=t(9297),m=t(655),p=t(6198),g=t(4659),b=t(9039),f=t(8235),Z=t(4495),A=o.JSON,N=o.Number,W=o.SyntaxError,Q=A&&A.parse,R=l("Object","keys"),M=Object.getOwnPropertyDescriptor,w=r("".charAt),Y=r("".slice),G=r(/./.exec),P=r([].push),j=/^\d$/,X=/^[1-9]$/,ie=/^[\d-]$/,se=/^[\t\n\r ]$/,pe=0,Ue=1,Qe=function(Pe,Be){Pe=m(Pe);var rt=new Je(Pe,0),Tt=rt.parse(),qt=Tt.value,yt=rt.skip(se,Tt.end);if(yt<Pe.length)throw new W('Unexpected extra character: "'+w(Pe,yt)+'" after the parsed data at: '+yt);return d(Be)?He({"":qt},"",Be,Tt):qt},He=function(Pe,Be,rt,Tt){var qt=Pe[Be],yt=Tt&&qt===Tt.value,fe=yt&&typeof Tt.source=="string"?{source:Tt.source}:{},Vi,st,Fn,qi,Zo;if(c(qt)){var is=h(qt),Ao=yt?Tt.nodes:is?[]:{};if(is)for(Vi=Ao.length,Fn=p(qt),qi=0;qi<Fn;qi++)Te(qt,qi,He(qt,""+qi,rt,qi<Vi?Ao[qi]:void 0));else for(st=R(qt),Fn=p(st),qi=0;qi<Fn;qi++)Zo=st[qi],Te(qt,Zo,He(qt,Zo,rt,u(Ao,Zo)?Ao[Zo]:void 0))}return a(rt,Pe,Be,qt,fe)},Te=function(Pe,Be,rt){if(n){var Tt=M(Pe,Be);if(Tt&&!Tt.configurable)return}rt===void 0?delete Pe[Be]:g(Pe,Be,rt)},xe=function(Pe,Be,rt,Tt){this.value=Pe,this.end=Be,this.source=rt,this.nodes=Tt},Je=function(Pe,Be){this.source=Pe,this.index=Be};Je.prototype={fork:function(Pe){return new Je(this.source,Pe)},parse:function(){var Pe=this.source,Be=this.skip(se,this.index),rt=this.fork(Be),Tt=w(Pe,Be);if(G(ie,Tt))return rt.number();switch(Tt){case"{":return rt.object();case"[":return rt.array();case'"':return rt.string();case"t":return rt.keyword(!0);case"f":return rt.keyword(!1);case"n":return rt.keyword(null)}throw new W('Unexpected character: "'+Tt+'" at: '+Be)},node:function(Pe,Be,rt,Tt,qt){return new xe(Be,Tt,Pe?null:Y(this.source,rt,Tt),qt)},object:function(){for(var Pe=this.source,Be=this.index+1,rt=!1,Tt={},qt={};Be<Pe.length;){if(Be=this.until(['"',"}"],Be),w(Pe,Be)==="}"&&!rt){Be++;break}var yt=this.fork(Be).string(),fe=yt.value;Be=yt.end,Be=this.until([":"],Be)+1,Be=this.skip(se,Be),yt=this.fork(Be).parse(),g(qt,fe,yt),g(Tt,fe,yt.value),Be=this.until([",","}"],yt.end);var Vi=w(Pe,Be);if(Vi===",")rt=!0,Be++;else if(Vi==="}"){Be++;break}}return this.node(Ue,Tt,this.index,Be,qt)},array:function(){for(var Pe=this.source,Be=this.index+1,rt=!1,Tt=[],qt=[];Be<Pe.length;){if(Be=this.skip(se,Be),w(Pe,Be)==="]"&&!rt){Be++;break}var yt=this.fork(Be).parse();if(P(qt,yt),P(Tt,yt.value),Be=this.until([",","]"],yt.end),w(Pe,Be)===",")rt=!0,Be++;else if(w(Pe,Be)==="]"){Be++;break}}return this.node(Ue,Tt,this.index,Be,qt)},string:function(){var Pe=this.index,Be=f(this.source,this.index+1);return this.node(pe,Be.value,Pe,Be.end)},number:function(){var Pe=this.source,Be=this.index,rt=Be;if(w(Pe,rt)==="-"&&rt++,w(Pe,rt)==="0")rt++;else if(G(X,w(Pe,rt)))rt=this.skip(j,rt+1);else throw new W("Failed to parse number at: "+rt);if(w(Pe,rt)==="."&&(rt=this.skip(j,rt+1)),w(Pe,rt)==="e"||w(Pe,rt)==="E"){rt++,(w(Pe,rt)==="+"||w(Pe,rt)==="-")&&rt++;var Tt=rt;if(rt=this.skip(j,rt),Tt===rt)throw new W("Failed to parse number's exponent value at: "+rt)}return this.node(pe,N(Y(Pe,Be,rt)),Be,rt)},keyword:function(Pe){var Be=""+Pe,rt=this.index,Tt=rt+Be.length;if(Y(this.source,rt,Tt)!==Be)throw new W("Failed to parse value at: "+rt);return this.node(pe,Pe,rt,Tt)},skip:function(Pe,Be){for(var rt=this.source;Be<rt.length&&G(Pe,w(rt,Be));Be++);return Be},until:function(Pe,Be){Be=this.skip(se,Be);for(var rt=w(this.source,Be),Tt=0;Tt<Pe.length;Tt++)if(Pe[Tt]===rt)return Be;throw new W('Unexpected character: "'+rt+'" at: '+Be)}};var Mt=b(function(){var Pe="9007199254740993",Be;return Q(Pe,function(rt,Tt,qt){Be=qt.source}),Be!==Pe}),St=Z&&!b(function(){return 1/Q("-0 ")!==-1/0});i({target:"JSON",stat:!0,forced:Mt},{parse:function(Pe,Be){return St&&!d(Be)?Q(Pe):Qe(Pe,Be)}})},5247:(s,e,t)=>{t(1689)},4979:(s,e,t)=>{var i=t(6518),n=t(4576),o=t(7751),l=t(6980),r=t(4913).f,a=t(9297),d=t(679),c=t(3167),h=t(2603),u=t(5002),m=t(8574),p=t(3724),g=t(6395),b="DOMException",f=o("Error"),Z=o(b),A=function(){d(this,N);var ie=arguments.length,se=h(ie<1?void 0:arguments[0]),pe=h(ie<2?void 0:arguments[1],"Error"),Ue=new Z(se,pe),Qe=new f(se);return Qe.name=b,r(Ue,"stack",l(1,m(Qe.stack,1))),c(Ue,this,A),Ue},N=A.prototype=Z.prototype,W="stack"in new f(b),Q="stack"in new Z(1,2),R=Z&&p&&Object.getOwnPropertyDescriptor(n,b),M=!!R&&!(R.writable&&R.configurable),w=W&&!M&&!Q;i({global:!0,constructor:!0,forced:g||w},{DOMException:w?A:Z});var Y=o(b),G=Y.prototype;if(G.constructor!==Y){g||r(G,"constructor",l(1,Y));for(var P in u)if(a(u,P)){var j=u[P],X=j.s;a(Y,X)||r(Y,X,l(6,j.c))}}},4603:(s,e,t)=>{var i=t(6840),n=t(9504),o=t(655),l=t(2812),r=URLSearchParams,a=r.prototype,d=n(a.append),c=n(a.delete),h=n(a.forEach),u=n([].push),m=new r("a=1&a=2&b=3");m.delete("a",1),m.delete("b",void 0),m+""!="a=2"&&i(a,"delete",function(p){var g=arguments.length,b=g<2?void 0:arguments[1];if(g&&b===void 0)return c(this,p);var f=[];h(this,function(w,Y){u(f,{key:Y,value:w})}),l(g,1);for(var Z=o(p),A=o(b),N=0,W=0,Q=!1,R=f.length,M;N<R;)M=f[N++],Q||M.key===Z?(Q=!0,c(this,M.key)):W++;for(;W<R;)M=f[W++],M.key===Z&&M.value===A||d(this,M.key,M.value)},{enumerable:!0,unsafe:!0})},7566:(s,e,t)=>{var i=t(6840),n=t(9504),o=t(655),l=t(2812),r=URLSearchParams,a=r.prototype,d=n(a.getAll),c=n(a.has),h=new r("a=1");(h.has("a",2)||!h.has("a",void 0))&&i(a,"has",function(u){var m=arguments.length,p=m<2?void 0:arguments[1];if(m&&p===void 0)return c(this,u);var g=d(this,u);l(m,1);for(var b=o(p),f=0;f<g.length;)if(g[f++]===b)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:(s,e,t)=>{var i=t(3724),n=t(9504),o=t(2106),l=URLSearchParams.prototype,r=n(l.forEach);i&&!("size"in l)&&o(l,"size",{get:function(){var a=0;return r(this,function(){a++}),a},configurable:!0,enumerable:!0})}},nhe={};function cs(s){var e=nhe[s];if(e!==void 0)return e.exports;var t=nhe[s]={exports:{}};return Zht[s].call(t.exports,t,t.exports,cs),t.exports}cs.d=(s,e)=>{for(var t in e)cs.o(e,t)&&!cs.o(s,t)&&Object.defineProperty(s,t,{enumerable:!0,get:e[t]})};cs.o=(s,e)=>Object.prototype.hasOwnProperty.call(s,e);var sn=globalThis.pdfjsLib={};cs.d(sn,{AbortException:()=>hf,AnnotationEditorLayer:()=>kmt,AnnotationEditorParamsType:()=>Kn,AnnotationEditorType:()=>Nn,AnnotationEditorUIManager:()=>MT,AnnotationLayer:()=>Rmt,AnnotationMode:()=>jb,ColorPicker:()=>bRe,DOMSVGFactory:()=>one,DrawLayer:()=>Imt,FeatureTest:()=>Nd,GlobalWorkerOptions:()=>BS,ImageKind:()=>kD,InvalidPDFException:()=>I6,MissingPDFException:()=>wT,OPS:()=>Cu,OutputScale:()=>ine,PDFDataRangeTransport:()=>GNe,PDFDateString:()=>KAe,PDFWorker:()=>eG,PasswordResponses:()=>Sht,PermissionFlag:()=>Rht,PixelsPerInch:()=>GV,RenderingCancelledException:()=>$ie,TextLayer:()=>nq,TouchManager:()=>lNe,UnexpectedResponseException:()=>WJ,Util:()=>Ui,VerbosityLevel:()=>Mz,XfaLayer:()=>xNe,build:()=>imt,createValidAbsoluteUrl:()=>yht,fetchData:()=>kz,getDocument:()=>zut,getFilenameFromUrl:()=>Dht,getPdfFilenameFromUrl:()=>Ght,getXfaPageViewport:()=>Eht,isDataScheme:()=>Iz,isPdfFile:()=>ene,noContextMenu:()=>tm,normalizeUnicode:()=>Lht,setLayerDimensions:()=>_A,shadow:()=>Mn,stopEvent:()=>xc,version:()=>tmt});cs(4114);cs(6573);cs(8100);cs(7936);cs(7467);cs(4732);cs(9577);cs(5247);cs(4979);cs(4603);cs(7566);cs(8721);const ka=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),HAe=[1,0,0,1,0,0],k6=[.001,0,0,.001,0,0],Aht=1e7,x_=1.35,Bc={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},jb={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},Nht="pdfjs_internal_editor_",Nn={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},Kn={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35,DRAW_STEP:41},Rht={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},fa={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},kD={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},jl={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},ey={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},Mz={ERRORS:0,WARNINGS:1,INFOS:5},Cu={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93},Sht={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let Tz=Mz.WARNINGS;function Wht(s){Number.isInteger(s)&&(Tz=s)}function Vht(){return Tz}function Bz(s){Tz>=Mz.INFOS&&console.log(`Info: ${s}`)}function rn(s){Tz>=Mz.WARNINGS&&console.log(`Warning: ${s}`)}function uo(s){throw new Error(s)}function Ll(s,e){s||uo(e)}function Qht(s){switch(s==null?void 0:s.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function yht(s,e=null,t=null){if(!s)return null;try{if(t&&typeof s=="string"){if(t.addDefaultProtocol&&s.startsWith("www.")){const n=s.match(/\./g);(n==null?void 0:n.length)>=2&&(s=`http://${s}`)}if(t.tryConvertEncoding)try{s=Bht(s)}catch{}}const i=e?new URL(s,e):new URL(s);if(Qht(i))return i}catch{}return null}function Mn(s,e,t,i=!1){return Object.defineProperty(s,e,{value:t,enumerable:!i,configurable:!0,writable:!1}),t}const Sf=function(){function s(e,t){this.message=e,this.name=t}return s.prototype=new Error,s.constructor=s,s}();class she extends Sf{constructor(e,t){super(e,"PasswordException"),this.code=t}}class J_ extends Sf{constructor(e,t){super(e,"UnknownErrorException"),this.details=t}}let I6=class extends Sf{constructor(s){super(s,"InvalidPDFException")}},wT=class extends Sf{constructor(s){super(s,"MissingPDFException")}},WJ=class extends Sf{constructor(s,e){super(s,"UnexpectedResponseException"),this.status=e}};class Cht extends Sf{constructor(e){super(e,"FormatError")}}let hf=class extends Sf{constructor(s){super(s,"AbortException")}};function PAe(s){(typeof s!="object"||(s==null?void 0:s.length)===void 0)&&uo("Invalid argument for bytesToString");const e=s.length,t=8192;if(e<t)return String.fromCharCode.apply(null,s);const i=[];for(let n=0;n<e;n+=t){const o=Math.min(n+t,e),l=s.subarray(n,o);i.push(String.fromCharCode.apply(null,l))}return i.join("")}function Lz(s){typeof s!="string"&&uo("Invalid argument for stringToBytes");const e=s.length,t=new Uint8Array(e);for(let i=0;i<e;++i)t[i]=s.charCodeAt(i)&255;return t}function wht(s){return String.fromCharCode(s>>24&255,s>>16&255,s>>8&255,s&255)}function Kie(s){const e=Object.create(null);for(const[t,i]of s)e[t]=i;return e}function Mht(){const s=new Uint8Array(4);return s[0]=1,new Uint32Array(s.buffer,0,1)[0]===1}function Tht(){try{return new Function(""),!0}catch{return!1}}class Nd{static get isLittleEndian(){return Mn(this,"isLittleEndian",Mht())}static get isEvalSupported(){return Mn(this,"isEvalSupported",Tht())}static get isOffscreenCanvasSupported(){return Mn(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return Mn(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get platform(){return typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.platform)=="string"?Mn(this,"platform",{isMac:navigator.platform.includes("Mac"),isWindows:navigator.platform.includes("Win"),isFirefox:typeof(navigator==null?void 0:navigator.userAgent)=="string"&&navigator.userAgent.includes("Firefox")}):Mn(this,"platform",{isMac:!1,isWindows:!1,isFirefox:!1})}static get isCSSRoundSupported(){var e,t;return Mn(this,"isCSSRoundSupported",(t=(e=globalThis.CSS)==null?void 0:e.supports)==null?void 0:t.call(e,"width: round(1.5px, 1px)"))}}const X_=Array.from(Array(256).keys(),s=>s.toString(16).padStart(2,"0"));var zf,Y_,xk,z_;let Ui=(Y_=class{static makeHexColor(s,e,t){return`#${X_[s]}${X_[e]}${X_[t]}`}static scaleMinMax(s,e){let t;s[0]?(s[0]<0&&(t=e[0],e[0]=e[2],e[2]=t),e[0]*=s[0],e[2]*=s[0],s[3]<0&&(t=e[1],e[1]=e[3],e[3]=t),e[1]*=s[3],e[3]*=s[3]):(t=e[0],e[0]=e[1],e[1]=t,t=e[2],e[2]=e[3],e[3]=t,s[1]<0&&(t=e[1],e[1]=e[3],e[3]=t),e[1]*=s[1],e[3]*=s[1],s[2]<0&&(t=e[0],e[0]=e[2],e[2]=t),e[0]*=s[2],e[2]*=s[2]),e[0]+=s[4],e[1]+=s[5],e[2]+=s[4],e[3]+=s[5]}static transform(s,e){return[s[0]*e[0]+s[2]*e[1],s[1]*e[0]+s[3]*e[1],s[0]*e[2]+s[2]*e[3],s[1]*e[2]+s[3]*e[3],s[0]*e[4]+s[2]*e[5]+s[4],s[1]*e[4]+s[3]*e[5]+s[5]]}static applyTransform(s,e){const t=s[0]*e[0]+s[1]*e[2]+e[4],i=s[0]*e[1]+s[1]*e[3]+e[5];return[t,i]}static applyInverseTransform(s,e){const t=e[0]*e[3]-e[1]*e[2],i=(s[0]*e[3]-s[1]*e[2]+e[2]*e[5]-e[4]*e[3])/t,n=(-s[0]*e[1]+s[1]*e[0]+e[4]*e[1]-e[5]*e[0])/t;return[i,n]}static getAxialAlignedBoundingBox(s,e){const t=this.applyTransform(s,e),i=this.applyTransform(s.slice(2,4),e),n=this.applyTransform([s[0],s[3]],e),o=this.applyTransform([s[2],s[1]],e);return[Math.min(t[0],i[0],n[0],o[0]),Math.min(t[1],i[1],n[1],o[1]),Math.max(t[0],i[0],n[0],o[0]),Math.max(t[1],i[1],n[1],o[1])]}static inverseTransform(s){const e=s[0]*s[3]-s[1]*s[2];return[s[3]/e,-s[1]/e,-s[2]/e,s[0]/e,(s[2]*s[5]-s[4]*s[3])/e,(s[4]*s[1]-s[5]*s[0])/e]}static singularValueDecompose2dScale(s){const e=[s[0],s[2],s[1],s[3]],t=s[0]*e[0]+s[1]*e[2],i=s[0]*e[1]+s[1]*e[3],n=s[2]*e[0]+s[3]*e[2],o=s[2]*e[1]+s[3]*e[3],l=(t+o)/2,r=Math.sqrt((t+o)**2-4*(t*o-n*i))/2,a=l+r||1,d=l-r||1;return[Math.sqrt(a),Math.sqrt(d)]}static normalizeRect(s){const e=s.slice(0);return s[0]>s[2]&&(e[0]=s[2],e[2]=s[0]),s[1]>s[3]&&(e[1]=s[3],e[3]=s[1]),e}static intersect(s,e){const t=Math.max(Math.min(s[0],s[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(s[0],s[2]),Math.max(e[0],e[2]));if(t>i)return null;const n=Math.max(Math.min(s[1],s[3]),Math.min(e[1],e[3])),o=Math.min(Math.max(s[1],s[3]),Math.max(e[1],e[3]));return n>o?null:[t,n,i,o]}static bezierBoundingBox(s,e,t,i,n,o,l,r,a){return a?(a[0]=Math.min(a[0],s,l),a[1]=Math.min(a[1],e,r),a[2]=Math.max(a[2],s,l),a[3]=Math.max(a[3],e,r)):a=[Math.min(s,l),Math.min(e,r),Math.max(s,l),Math.max(e,r)],E(this,zf,z_).call(this,s,t,n,l,e,i,o,r,3*(-s+3*(t-n)+l),6*(s-2*t+n),3*(t-s),a),E(this,zf,z_).call(this,s,t,n,l,e,i,o,r,3*(-e+3*(i-o)+r),6*(e-2*i+o),3*(i-e),a),a}},zf=new WeakSet,xk=function(s,e,t,i,n,o,l,r,a,d){if(a<=0||a>=1)return;const c=1-a,h=a*a,u=h*a,m=c*(c*(c*s+3*a*e)+3*h*t)+u*i,p=c*(c*(c*n+3*a*o)+3*h*l)+u*r;d[0]=Math.min(d[0],m),d[1]=Math.min(d[1],p),d[2]=Math.max(d[2],m),d[3]=Math.max(d[3],p)},z_=function(s,e,t,i,n,o,l,r,a,d,c,h){if(Math.abs(a)<1e-12){Math.abs(d)>=1e-12&&E(this,zf,xk).call(this,s,e,t,i,n,o,l,r,-c/d,h);return}const u=d**2-4*c*a;if(u<0)return;const m=Math.sqrt(u),p=2*a;E(this,zf,xk).call(this,s,e,t,i,n,o,l,r,(-d+m)/p,h),E(this,zf,xk).call(this,s,e,t,i,n,o,l,r,(-d-m)/p,h)},J(Y_,zf),Y_);function Bht(s){return decodeURIComponent(escape(s))}let __=null,ohe=null;function Lht(s){return __||(__=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,ohe=new Map([["ſt","ſt"]])),s.replaceAll(__,(e,t,i)=>t?t.normalize("NFKC"):ohe.get(i))}function kht(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const s=new Uint8Array(32);return crypto.getRandomValues(s),PAe(s)}const qie="pdfjs_internal_id_";function Iht(s){return Uint8Array.prototype.toBase64?s.toBase64():btoa(PAe(s))}cs(4628);cs(7642);cs(8004);cs(3853);cs(5876);cs(2475);cs(5024);cs(1698);cs(1454);cs(8992);cs(4743);cs(3215);cs(7550);cs(8335);const og="http://www.w3.org/2000/svg";var _f;let GV=(_f=class{},Ii(_f,"CSS",96),Ii(_f,"PDF",72),Ii(_f,"PDF_TO_CSS_UNITS",_f.CSS/_f.PDF),_f);async function kz(s,e="text"){if(c2(s,document.baseURI)){const t=await fetch(s);if(!t.ok)throw new Error(t.statusText);switch(e){case"arraybuffer":return t.arrayBuffer();case"blob":return t.blob();case"json":return t.json()}return t.text()}return new Promise((t,i)=>{const n=new XMLHttpRequest;n.open("GET",s,!0),n.responseType=e,n.onreadystatechange=()=>{if(n.readyState===XMLHttpRequest.DONE){if(n.status===200||n.status===0){switch(e){case"arraybuffer":case"blob":case"json":t(n.response);return}t(n.responseText);return}i(new Error(n.statusText))}},n.send(null)})}class EB{constructor({viewBox:e,userUnit:t,scale:i,rotation:n,offsetX:o=0,offsetY:l=0,dontFlip:r=!1}){this.viewBox=e,this.userUnit=t,this.scale=i,this.rotation=n,this.offsetX=o,this.offsetY=l,i*=t;const a=(e[2]+e[0])/2,d=(e[3]+e[1])/2;let c,h,u,m;switch(n%=360,n<0&&(n+=360),n){case 180:c=-1,h=0,u=0,m=1;break;case 90:c=0,h=1,u=1,m=0;break;case 270:c=0,h=-1,u=-1,m=0;break;case 0:c=1,h=0,u=0,m=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}r&&(u=-u,m=-m);let p,g,b,f;c===0?(p=Math.abs(d-e[1])*i+o,g=Math.abs(a-e[0])*i+l,b=(e[3]-e[1])*i,f=(e[2]-e[0])*i):(p=Math.abs(a-e[0])*i+o,g=Math.abs(d-e[1])*i+l,b=(e[2]-e[0])*i,f=(e[3]-e[1])*i),this.transform=[c*i,h*i,u*i,m*i,p-c*i*a-u*i*d,g-h*i*a-m*i*d],this.width=b,this.height=f}get rawDims(){const{userUnit:e,viewBox:t}=this,i=t.map(n=>n*e);return Mn(this,"rawDims",{pageWidth:i[2]-i[0],pageHeight:i[3]-i[1],pageX:i[0],pageY:i[1]})}clone({scale:e=this.scale,rotation:t=this.rotation,offsetX:i=this.offsetX,offsetY:n=this.offsetY,dontFlip:o=!1}={}){return new EB({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:e,rotation:t,offsetX:i,offsetY:n,dontFlip:o})}convertToViewportPoint(e,t){return Ui.applyTransform([e,t],this.transform)}convertToViewportRectangle(e){const t=Ui.applyTransform([e[0],e[1]],this.transform),i=Ui.applyTransform([e[2],e[3]],this.transform);return[t[0],t[1],i[0],i[1]]}convertToPdfPoint(e,t){return Ui.applyInverseTransform([e,t],this.transform)}}let $ie=class extends Sf{constructor(s,e=0){super(s,"RenderingCancelledException"),this.extraDelay=e}};function Iz(s){const e=s.length;let t=0;for(;t<e&&s[t].trim()==="";)t++;return s.substring(t,t+5).toLowerCase()==="data:"}function ene(s){return typeof s=="string"&&/\.pdf$/i.test(s)}function Dht(s){return[s]=s.split(/[#?]/,1),s.substring(s.lastIndexOf("/")+1)}function Ght(s,e="document.pdf"){if(typeof s!="string")return e;if(Iz(s))return rn('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),e;const t=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/,i=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,n=t.exec(s);let o=i.exec(n[1])||i.exec(n[2])||i.exec(n[3]);if(o&&(o=o[0],o.includes("%")))try{o=i.exec(decodeURIComponent(o))[0]}catch{}return o||e}class lhe{constructor(){Ii(this,"started",Object.create(null)),Ii(this,"times",[])}time(e){e in this.started&&rn(`Timer is already running for ${e}`),this.started[e]=Date.now()}timeEnd(e){e in this.started||rn(`Timer has not been started for ${e}`),this.times.push({name:e,start:this.started[e],end:Date.now()}),delete this.started[e]}toString(){const e=[];let t=0;for(const{name:i}of this.times)t=Math.max(i.length,t);for(const{name:i,start:n,end:o}of this.times)e.push(`${i.padEnd(t)} ${o-n}ms
- `);return e.join("")}}function c2(s,e){try{const{protocol:t}=e?new URL(s,e):new URL(s);return t==="http:"||t==="https:"}catch{return!1}}function tm(s){s.preventDefault()}function xc(s){s.preventDefault(),s.stopPropagation()}var O_,ty;let KAe=(O_=class{static toDateObject(s){if(!s||typeof s!="string")return null;F(this,ty)||L(this,ty,new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const e=F(this,ty).exec(s);if(!e)return null;const t=parseInt(e[1],10);let i=parseInt(e[2],10);i=i>=1&&i<=12?i-1:0;let n=parseInt(e[3],10);n=n>=1&&n<=31?n:1;let o=parseInt(e[4],10);o=o>=0&&o<=23?o:0;let l=parseInt(e[5],10);l=l>=0&&l<=59?l:0;let r=parseInt(e[6],10);r=r>=0&&r<=59?r:0;const a=e[7]||"Z";let d=parseInt(e[8],10);d=d>=0&&d<=23?d:0;let c=parseInt(e[9],10)||0;return c=c>=0&&c<=59?c:0,a==="-"?(o+=d,l+=c):a==="+"&&(o-=d,l-=c),new Date(Date.UTC(t,i,n,o,l,r))}},ty=new WeakMap,J(O_,ty),O_);function Eht(s,{scale:e=1,rotation:t=0}){const{width:i,height:n}=s.attributes.style,o=[0,0,parseInt(i),parseInt(n)];return new EB({viewBox:o,userUnit:1,scale:e,rotation:t})}function tne(s){if(s.startsWith("#")){const e=parseInt(s.slice(1),16);return[(e&16711680)>>16,(e&65280)>>8,e&255]}return s.startsWith("rgb(")?s.slice(4,-1).split(",").map(e=>parseInt(e)):s.startsWith("rgba(")?s.slice(5,-1).split(",").map(e=>parseInt(e)).slice(0,3):(rn(`Not a valid color format: "${s}"`),[0,0,0])}function vht(s){const e=document.createElement("span");e.style.visibility="hidden",document.body.append(e);for(const t of s.keys()){e.style.color=t;const i=window.getComputedStyle(e).color;s.set(t,tne(i))}e.remove()}function To(s){const{a:e,b:t,c:i,d:n,e:o,f:l}=s.getTransform();return[e,t,i,n,o,l]}function Zm(s){const{a:e,b:t,c:i,d:n,e:o,f:l}=s.getTransform().invertSelf();return[e,t,i,n,o,l]}function _A(s,e,t=!1,i=!0){if(e instanceof EB){const{pageWidth:n,pageHeight:o}=e.rawDims,{style:l}=s,r=Nd.isCSSRoundSupported,a=`var(--scale-factor) * ${n}px`,d=`var(--scale-factor) * ${o}px`,c=r?`round(down, ${a}, var(--scale-round-x, 1px))`:`calc(${a})`,h=r?`round(down, ${d}, var(--scale-round-y, 1px))`:`calc(${d})`;!t||e.rotation%180===0?(l.width=c,l.height=h):(l.width=h,l.height=c)}i&&s.setAttribute("data-main-rotation",e.rotation)}let ine=class{constructor(){const s=window.devicePixelRatio||1;this.sx=s,this.sy=s}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}};var SF,VR,mp,CS,ID,OC,D6,qAe,sp,rhe,ahe,VJ,$Ae,G6;const DD=class GD{constructor(e){J(this,sp),J(this,SF,null),J(this,VR,null),J(this,mp),J(this,CS,null),J(this,ID,null),L(this,mp,e),F(GD,OC)||L(GD,OC,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button"}))}render(){const e=L(this,SF,document.createElement("div"));e.classList.add("editToolbar","hidden"),e.setAttribute("role","toolbar");const t=F(this,mp)._uiManager._signal;e.addEventListener("contextmenu",tm,{signal:t}),e.addEventListener("pointerdown",E(GD,D6,qAe),{signal:t});const i=L(this,CS,document.createElement("div"));i.className="buttons",e.append(i);const n=F(this,mp).toolbarPosition;if(n){const{style:o}=e,l=F(this,mp)._uiManager.direction==="ltr"?1-n[0]:n[0];o.insetInlineEnd=`${100*l}%`,o.top=`calc(${100*n[1]}% + var(--editor-toolbar-vert-offset))`}return E(this,sp,$Ae).call(this),e}get div(){return F(this,SF)}hide(){var e;F(this,SF).classList.add("hidden"),(e=F(this,VR))==null||e.hideDropdown()}show(){var e;F(this,SF).classList.remove("hidden"),(e=F(this,ID))==null||e.shown()}async addAltText(e){const t=await e.render();E(this,sp,VJ).call(this,t),F(this,CS).prepend(t,F(this,sp,G6)),L(this,ID,e)}addColorPicker(e){L(this,VR,e);const t=e.renderButton();E(this,sp,VJ).call(this,t),F(this,CS).prepend(t,F(this,sp,G6))}remove(){var e;F(this,SF).remove(),(e=F(this,VR))==null||e.destroy(),L(this,VR,null)}};SF=new WeakMap,VR=new WeakMap,mp=new WeakMap,CS=new WeakMap,ID=new WeakMap,OC=new WeakMap,D6=new WeakSet,qAe=function(s){s.stopPropagation()},sp=new WeakSet,rhe=function(s){F(this,mp)._focusEventsAllowed=!1,xc(s)},ahe=function(s){F(this,mp)._focusEventsAllowed=!0,xc(s)},VJ=function(s){const e=F(this,mp)._uiManager._signal;s.addEventListener("focusin",E(this,sp,rhe).bind(this),{capture:!0,signal:e}),s.addEventListener("focusout",E(this,sp,ahe).bind(this),{capture:!0,signal:e}),s.addEventListener("contextmenu",tm,{signal:e})},$Ae=function(){const{editorType:s,_uiManager:e}=F(this,mp),t=document.createElement("button");t.className="delete",t.tabIndex=0,t.setAttribute("data-l10n-id",F(DD,OC)[s]),E(this,sp,VJ).call(this,t),t.addEventListener("click",i=>{e.delete()},{signal:e._signal}),F(this,CS).append(t)},G6=function(){const s=document.createElement("div");return s.className="divider",s},J(DD,D6),J(DD,OC,null);let xht=DD;var ED,cZ,wS,jC,eNe,tNe,dhe;class Jht{constructor(e){J(this,jC),J(this,ED,null),J(this,cZ,null),J(this,wS),L(this,wS,e)}show(e,t,i){const[n,o]=E(this,jC,tNe).call(this,t,i),{style:l}=F(this,cZ)||L(this,cZ,E(this,jC,eNe).call(this));e.append(F(this,cZ)),l.insetInlineEnd=`${100*n}%`,l.top=`calc(${100*o}% + var(--editor-toolbar-vert-offset))`}hide(){F(this,cZ).remove()}}ED=new WeakMap,cZ=new WeakMap,wS=new WeakMap,jC=new WeakSet,eNe=function(){const s=L(this,cZ,document.createElement("div"));s.className="editToolbar",s.setAttribute("role","toolbar"),s.addEventListener("contextmenu",tm,{signal:F(this,wS)._signal});const e=L(this,ED,document.createElement("div"));return e.className="buttons",s.append(e),E(this,jC,dhe).call(this),s},tNe=function(s,e){let t=0,i=0;for(const n of s){const o=n.y+n.height;if(o<t)continue;const l=n.x+(e?n.width:0);if(o>t){i=l,t=o;continue}e?l>i&&(i=l):l<i&&(i=l)}return[e?1-i:i,t]},dhe=function(){const s=document.createElement("button");s.className="highlightButton",s.tabIndex=0,s.setAttribute("data-l10n-id","pdfjs-highlight-floating-button1");const e=document.createElement("span");s.append(e),e.className="visuallyHidden",e.setAttribute("data-l10n-id","pdfjs-highlight-floating-button-label");const t=F(this,wS)._signal;s.addEventListener("contextmenu",tm,{signal:t}),s.addEventListener("click",()=>{F(this,wS).highlightSelection("floating_button")},{signal:t}),F(this,ED).append(s)};function QJ(s,e,t){for(const i of t)e.addEventListener(i,s[i].bind(s))}var E6;class Xht{constructor(){J(this,E6,0)}get id(){return`${Nht}${Ad(this,E6)._++}`}}E6=new WeakMap;var HC,yJ,Hl,h2,vD;const iNe=class{constructor(){J(this,h2),J(this,HC,kht()),J(this,yJ,0),J(this,Hl,null)}static get _isSVGFittingCanvas(){const e='data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>',t=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),i=new Image;i.src=e;const n=i.decode().then(()=>(t.drawImage(i,0,0,1,1,0,0,1,3),new Uint32Array(t.getImageData(0,0,1,1).data.buffer)[0]===0));return Mn(this,"_isSVGFittingCanvas",n)}async getFromFile(e){const{lastModified:t,name:i,size:n,type:o}=e;return E(this,h2,vD).call(this,`${t}_${i}_${n}_${o}`,e)}async getFromUrl(e){return E(this,h2,vD).call(this,e,e)}async getFromBlob(e,t){const i=await t;return E(this,h2,vD).call(this,e,i)}async getFromId(e){F(this,Hl)||L(this,Hl,new Map);const t=F(this,Hl).get(e);if(!t)return null;if(t.bitmap)return t.refCounter+=1,t;if(t.file)return this.getFromFile(t.file);if(t.blobPromise){const{blobPromise:i}=t;return delete t.blobPromise,this.getFromBlob(t.id,i)}return this.getFromUrl(t.url)}getFromCanvas(e,t){F(this,Hl)||L(this,Hl,new Map);let i=F(this,Hl).get(e);if(i!=null&&i.bitmap)return i.refCounter+=1,i;const n=new OffscreenCanvas(t.width,t.height);return n.getContext("2d").drawImage(t,0,0),i={bitmap:n.transferToImageBitmap(),id:`image_${F(this,HC)}_${Ad(this,yJ)._++}`,refCounter:1,isSvg:!1},F(this,Hl).set(e,i),F(this,Hl).set(i.id,i),i}getSvgUrl(e){const t=F(this,Hl).get(e);return t!=null&&t.isSvg?t.svgUrl:null}deleteId(e){var t;F(this,Hl)||L(this,Hl,new Map);const i=F(this,Hl).get(e);if(!i||(i.refCounter-=1,i.refCounter!==0))return;const{bitmap:n}=i;if(!i.url&&!i.file){const o=new OffscreenCanvas(n.width,n.height);o.getContext("bitmaprenderer").transferFromImageBitmap(n),i.blobPromise=o.convertToBlob()}(t=n.close)==null||t.call(n),i.bitmap=null}isValidId(e){return e.startsWith(`image_${F(this,HC)}_`)}};HC=new WeakMap,yJ=new WeakMap,Hl=new WeakMap,h2=new WeakSet,vD=async function(s,e){F(this,Hl)||L(this,Hl,new Map);let t=F(this,Hl).get(s);if(t===null)return null;if(t!=null&&t.bitmap)return t.refCounter+=1,t;try{t||(t={bitmap:null,id:`image_${F(this,HC)}_${Ad(this,yJ)._++}`,refCounter:0,isSvg:!1});let i;if(typeof e=="string"?(t.url=e,i=await kz(e,"blob")):e instanceof File?i=t.file=e:e instanceof Blob&&(i=e),i.type==="image/svg+xml"){const n=iNe._isSVGFittingCanvas,o=new FileReader,l=new Image,r=new Promise((a,d)=>{l.onload=()=>{t.bitmap=l,t.isSvg=!0,a()},o.onload=async()=>{const c=t.svgUrl=o.result;l.src=await n?`${c}#svgView(preserveAspectRatio(none))`:c},l.onerror=o.onerror=d});o.readAsDataURL(i),await r}else t.bitmap=await createImageBitmap(i);t.refCounter=1}catch(i){rn(i),t=null}return F(this,Hl).set(s,t),t&&F(this,Hl).set(t.id,t),t};let Yht=iNe;var Sl,WF,xD,Mo;class zht{constructor(e=128){J(this,Sl,[]),J(this,WF,!1),J(this,xD),J(this,Mo,-1),L(this,xD,e)}add({cmd:e,undo:t,post:i,mustExec:n,type:o=NaN,overwriteIfSameType:l=!1,keepUndo:r=!1}){if(n&&e(),F(this,WF))return;const a={cmd:e,undo:t,post:i,type:o};if(F(this,Mo)===-1){F(this,Sl).length>0&&(F(this,Sl).length=0),L(this,Mo,0),F(this,Sl).push(a);return}if(l&&F(this,Sl)[F(this,Mo)].type===o){r&&(a.undo=F(this,Sl)[F(this,Mo)].undo),F(this,Sl)[F(this,Mo)]=a;return}const d=F(this,Mo)+1;d===F(this,xD)?F(this,Sl).splice(0,1):(L(this,Mo,d),d<F(this,Sl).length&&F(this,Sl).splice(d)),F(this,Sl).push(a)}undo(){if(F(this,Mo)===-1)return;L(this,WF,!0);const{undo:e,post:t}=F(this,Sl)[F(this,Mo)];e(),t==null||t(),L(this,WF,!1),L(this,Mo,F(this,Mo)-1)}redo(){if(F(this,Mo)<F(this,Sl).length-1){L(this,Mo,F(this,Mo)+1),L(this,WF,!0);const{cmd:e,post:t}=F(this,Sl)[F(this,Mo)];e(),t==null||t(),L(this,WF,!1)}}hasSomethingToUndo(){return F(this,Mo)!==-1}hasSomethingToRedo(){return F(this,Mo)<F(this,Sl).length-1}cleanType(e){if(F(this,Mo)!==-1){for(let t=F(this,Mo);t>=0;t--)if(F(this,Sl)[t].type!==e){F(this,Sl).splice(t+1,F(this,Mo)-t),L(this,Mo,t);return}F(this,Sl).length=0,L(this,Mo,-1)}}destroy(){L(this,Sl,null)}}Sl=new WeakMap,WF=new WeakMap,xD=new WeakMap,Mo=new WeakMap;var v6,nNe;class vB{constructor(e){J(this,v6),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:t}=Nd.platform;for(const[i,n,o={}]of e)for(const l of i){const r=l.startsWith("mac+");t&&r?(this.callbacks.set(l.slice(4),{callback:n,options:o}),this.allKeys.add(l.split("+").at(-1))):!t&&!r&&(this.callbacks.set(l,{callback:n,options:o}),this.allKeys.add(l.split("+").at(-1)))}}exec(e,t){if(!this.allKeys.has(t.key))return;const i=this.callbacks.get(E(this,v6,nNe).call(this,t));if(!i)return;const{callback:n,options:{bubbles:o=!1,args:l=[],checker:r=null}}=i;r&&!r(e,t)||(n.bind(e,...l,t)(),o||xc(t))}}v6=new WeakSet,nNe=function(s){s.altKey&&this.buffer.push("alt"),s.ctrlKey&&this.buffer.push("ctrl"),s.metaKey&&this.buffer.push("meta"),s.shiftKey&&this.buffer.push("shift"),this.buffer.push(s.key);const e=this.buffer.join("+");return this.buffer.length=0,e};const sNe=class oNe{get _colors(){const e=new Map([["CanvasText",null],["Canvas",null]]);return vht(e),Mn(this,"_colors",e)}convert(e){const t=tne(e);if(!window.matchMedia("(forced-colors: active)").matches)return t;for(const[i,n]of this._colors)if(n.every((o,l)=>o===t[l]))return oNe._colorsMapping.get(i);return t}getHexCode(e){const t=this._colors.get(e);return t?Ui.makeHexColor(...t):e}};Ii(sNe,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let _ht=sNe;var iy,ch,hr,ba,ny,P0,jN,du,Of,HN,sy,PN,Kp,Am,KN,Jk,Xk,oy,Yk,qp,jf,ly,Hf,Nm,j_,Pf,zk,Kf,qN,_k,Ok,Br,Hs,K0,$N,ry,jk,qf,$p,q0,Hk,cu,eR,Si,Pk,H_,che,hhe,Kk,uhe,mhe,phe,P_,ghe,K_,q_,bhe,ed,eg,Uhe,fhe,$_,Fhe,ay,eO;let MT=(eR=class{constructor(s,e,t,i,n,o,l,r,a,d,c,h,u){J(this,Si),J(this,iy,new AbortController),J(this,ch,null),J(this,hr,new Map),J(this,ba,new Map),J(this,ny,null),J(this,P0,null),J(this,jN,null),J(this,du,new zht),J(this,Of,null),J(this,HN,null),J(this,sy,0),J(this,PN,new Set),J(this,Kp,null),J(this,Am,null),J(this,KN,new Set),Ii(this,"_editorUndoBar",null),J(this,Jk,!1),J(this,Xk,!1),J(this,oy,!1),J(this,Yk,null),J(this,qp,null),J(this,jf,null),J(this,ly,null),J(this,Hf,!1),J(this,Nm,null),J(this,j_,new Xht),J(this,Pf,!1),J(this,zk,!1),J(this,Kf,null),J(this,qN,null),J(this,_k,null),J(this,Ok,null),J(this,Br,Nn.NONE),J(this,Hs,new Set),J(this,K0,null),J(this,$N,null),J(this,ry,null),J(this,jk,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),J(this,qf,[0,0]),J(this,$p,null),J(this,q0,null),J(this,Hk,null),J(this,cu,null);const m=this._signal=F(this,iy).signal;L(this,q0,s),L(this,Hk,e),L(this,ny,t),this._eventBus=i,i._on("editingaction",this.onEditingAction.bind(this),{signal:m}),i._on("pagechanging",this.onPageChanging.bind(this),{signal:m}),i._on("scalechanging",this.onScaleChanging.bind(this),{signal:m}),i._on("rotationchanging",this.onRotationChanging.bind(this),{signal:m}),i._on("setpreference",this.onSetPreference.bind(this),{signal:m}),i._on("switchannotationeditorparams",p=>this.updateParams(p.type,p.value),{signal:m}),E(this,Si,uhe).call(this),E(this,Si,bhe).call(this),E(this,Si,P_).call(this),L(this,P0,n.annotationStorage),L(this,Yk,n.filterFactory),L(this,$N,o),L(this,ly,l||null),L(this,Jk,r),L(this,Xk,a),L(this,oy,d),L(this,Ok,c||null),this.viewParameters={realScale:GV.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=h||null,this._supportsPinchToZoom=u!==!1}static get _keyboardManager(){const s=eR.prototype,e=o=>F(o,q0).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&o.hasSomethingToControl(),t=(o,{target:l})=>{if(l instanceof HTMLInputElement){const{type:r}=l;return r!=="text"&&r!=="number"}return!0},i=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return Mn(this,"_keyboardManager",new vB([[["ctrl+a","mac+meta+a"],s.selectAll,{checker:t}],[["ctrl+z","mac+meta+z"],s.undo,{checker:t}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],s.redo,{checker:t}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],s.delete,{checker:t}],[["Enter","mac+Enter"],s.addNewEditorFromKeyboard,{checker:(o,{target:l})=>!(l instanceof HTMLButtonElement)&&F(o,q0).contains(l)&&!o.isEnterHandled}],[[" ","mac+ "],s.addNewEditorFromKeyboard,{checker:(o,{target:l})=>!(l instanceof HTMLButtonElement)&&F(o,q0).contains(document.activeElement)}],[["Escape","mac+Escape"],s.unselectAll],[["ArrowLeft","mac+ArrowLeft"],s.translateSelectedEditors,{args:[-i,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],s.translateSelectedEditors,{args:[-n,0],checker:e}],[["ArrowRight","mac+ArrowRight"],s.translateSelectedEditors,{args:[i,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],s.translateSelectedEditors,{args:[n,0],checker:e}],[["ArrowUp","mac+ArrowUp"],s.translateSelectedEditors,{args:[0,-i],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],s.translateSelectedEditors,{args:[0,-n],checker:e}],[["ArrowDown","mac+ArrowDown"],s.translateSelectedEditors,{args:[0,i],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],s.translateSelectedEditors,{args:[0,n],checker:e}]]))}destroy(){var s,e,t,i,n;(s=F(this,cu))==null||s.resolve(),L(this,cu,null),(e=F(this,iy))==null||e.abort(),L(this,iy,null),this._signal=null;for(const o of F(this,ba).values())o.destroy();F(this,ba).clear(),F(this,hr).clear(),F(this,KN).clear(),L(this,ch,null),F(this,Hs).clear(),F(this,du).destroy(),(t=F(this,ny))==null||t.destroy(),(i=F(this,Nm))==null||i.hide(),L(this,Nm,null),F(this,qp)&&(clearTimeout(F(this,qp)),L(this,qp,null)),F(this,$p)&&(clearTimeout(F(this,$p)),L(this,$p,null)),(n=this._editorUndoBar)==null||n.destroy()}combinedSignal(s){return AbortSignal.any([this._signal,s.signal])}get mlManager(){return F(this,Ok)}get useNewAltTextFlow(){return F(this,Xk)}get useNewAltTextWhenAddingImage(){return F(this,oy)}get hcmFilter(){return Mn(this,"hcmFilter",F(this,$N)?F(this,Yk).addHCMFilter(F(this,$N).foreground,F(this,$N).background):"none")}get direction(){return Mn(this,"direction",getComputedStyle(F(this,q0)).direction)}get highlightColors(){return Mn(this,"highlightColors",F(this,ly)?new Map(F(this,ly).split(",").map(s=>s.split("=").map(e=>e.trim()))):null)}get highlightColorNames(){return Mn(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,s=>s.reverse())):null)}setCurrentDrawingSession(s){s?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),L(this,HN,s)}setMainHighlightColorPicker(s){L(this,_k,s)}editAltText(s,e=!1){var t;(t=F(this,ny))==null||t.editAltText(this,s,e)}switchToMode(s,e){this._eventBus.on("annotationeditormodechanged",e,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:s})}setPreference(s,e){this._eventBus.dispatch("setpreference",{source:this,name:s,value:e})}onSetPreference({name:s,value:e}){switch(s){case"enableNewAltTextWhenAddingImage":L(this,oy,e);break}}onPageChanging({pageNumber:s}){L(this,sy,s-1)}focusMainContainer(){F(this,q0).focus()}findParent(s,e){for(const t of F(this,ba).values()){const{x:i,y:n,width:o,height:l}=t.div.getBoundingClientRect();if(s>=i&&s<=i+o&&e>=n&&e<=n+l)return t}return null}disableUserSelect(s=!1){F(this,Hk).classList.toggle("noUserSelect",s)}addShouldRescale(s){F(this,KN).add(s)}removeShouldRescale(s){F(this,KN).delete(s)}onScaleChanging({scale:s}){var e;this.commitOrRemove(),this.viewParameters.realScale=s*GV.PDF_TO_CSS_UNITS;for(const t of F(this,KN))t.onScaleChanging();(e=F(this,HN))==null||e.onScaleChanging()}onRotationChanging({pagesRotation:s}){this.commitOrRemove(),this.viewParameters.rotation=s}highlightSelection(s=""){const e=document.getSelection();if(!e||e.isCollapsed)return;const{anchorNode:t,anchorOffset:i,focusNode:n,focusOffset:o}=e,l=e.toString(),r=E(this,Si,Pk).call(this,e).closest(".textLayer"),a=this.getSelectionBoxes(r);if(!a)return;e.empty();const d=E(this,Si,H_).call(this,r),c=F(this,Br)===Nn.NONE,h=()=>{d==null||d.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:s,boxes:a,anchorNode:t,anchorOffset:i,focusNode:n,focusOffset:o,text:l}),c&&this.showAllEditors("highlight",!0,!0)};if(c){this.switchToMode(Nn.HIGHLIGHT,h);return}h()}addToAnnotationStorage(s){!s.isEmpty()&&F(this,P0)&&!F(this,P0).has(s.id)&&F(this,P0).setValue(s.id,s)}blur(){if(this.isShiftKeyDown=!1,F(this,Hf)&&(L(this,Hf,!1),E(this,Si,Kk).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:s}=document;for(const e of F(this,Hs))if(e.div.contains(s)){L(this,qN,[e,s]),e._focusEventsAllowed=!1;break}}focus(){if(!F(this,qN))return;const[s,e]=F(this,qN);L(this,qN,null),e.addEventListener("focusin",()=>{s._focusEventsAllowed=!0},{once:!0,signal:this._signal}),e.focus()}addEditListeners(){E(this,Si,P_).call(this),E(this,Si,K_).call(this)}removeEditListeners(){E(this,Si,ghe).call(this),E(this,Si,q_).call(this)}dragOver(s){for(const{type:e}of s.dataTransfer.items)for(const t of F(this,Am))if(t.isHandlingMimeForPasting(e)){s.dataTransfer.dropEffect="copy",s.preventDefault();return}}drop(s){for(const e of s.dataTransfer.items)for(const t of F(this,Am))if(t.isHandlingMimeForPasting(e.type)){t.paste(e,this.currentLayer),s.preventDefault();return}}copy(s){var e;if(s.preventDefault(),(e=F(this,ch))==null||e.commitOrRemove(),!this.hasSelection)return;const t=[];for(const i of F(this,Hs)){const n=i.serialize(!0);n&&t.push(n)}t.length!==0&&s.clipboardData.setData("application/pdfjs",JSON.stringify(t))}cut(s){this.copy(s),this.delete()}async paste(s){s.preventDefault();const{clipboardData:e}=s;for(const n of e.items)for(const o of F(this,Am))if(o.isHandlingMimeForPasting(n.type)){o.paste(n,this.currentLayer);return}let t=e.getData("application/pdfjs");if(!t)return;try{t=JSON.parse(t)}catch(n){rn(`paste: "${n.message}".`);return}if(!Array.isArray(t))return;this.unselectAll();const i=this.currentLayer;try{const n=[];for(const r of t){const a=await i.deserialize(r);if(!a)return;n.push(a)}const o=()=>{for(const r of n)E(this,Si,$_).call(this,r);E(this,Si,eO).call(this,n)},l=()=>{for(const r of n)r.remove()};this.addCommands({cmd:o,undo:l,mustExec:!0})}catch(n){rn(`paste: "${n.message}".`)}}keydown(s){!this.isShiftKeyDown&&s.key==="Shift"&&(this.isShiftKeyDown=!0),F(this,Br)!==Nn.NONE&&!this.isEditorHandlingKeyboard&&eR._keyboardManager.exec(this,s)}keyup(s){this.isShiftKeyDown&&s.key==="Shift"&&(this.isShiftKeyDown=!1,F(this,Hf)&&(L(this,Hf,!1),E(this,Si,Kk).call(this,"main_toolbar")))}onEditingAction({name:s}){switch(s){case"undo":case"redo":case"delete":case"selectAll":this[s]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(s){s?(E(this,Si,mhe).call(this),E(this,Si,K_).call(this),E(this,Si,ed).call(this,{isEditing:F(this,Br)!==Nn.NONE,isEmpty:E(this,Si,ay).call(this),hasSomethingToUndo:F(this,du).hasSomethingToUndo(),hasSomethingToRedo:F(this,du).hasSomethingToRedo(),hasSelectedEditor:!1})):(E(this,Si,phe).call(this),E(this,Si,q_).call(this),E(this,Si,ed).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(s){if(!F(this,Am)){L(this,Am,s);for(const e of F(this,Am))E(this,Si,eg).call(this,e.defaultPropertiesToUpdate)}}getId(){return F(this,j_).id}get currentLayer(){return F(this,ba).get(F(this,sy))}getLayer(s){return F(this,ba).get(s)}get currentPageIndex(){return F(this,sy)}addLayer(s){F(this,ba).set(s.pageIndex,s),F(this,Pf)?s.enable():s.disable()}removeLayer(s){F(this,ba).delete(s.pageIndex)}async updateMode(s,e=null,t=!1){var i;if(F(this,Br)!==s&&!(F(this,cu)&&(await F(this,cu).promise,!F(this,cu)))){if(L(this,cu,Promise.withResolvers()),L(this,Br,s),s===Nn.NONE){this.setEditingState(!1),E(this,Si,fhe).call(this),(i=this._editorUndoBar)==null||i.hide(),F(this,cu).resolve();return}this.setEditingState(!0),await E(this,Si,Uhe).call(this),this.unselectAll();for(const n of F(this,ba).values())n.updateMode(s);if(!e){t&&this.addNewEditorFromKeyboard(),F(this,cu).resolve();return}for(const n of F(this,hr).values())n.annotationElementId===e?(this.setSelected(n),n.enterInEditMode()):n.unselect();F(this,cu).resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(s){s!==F(this,Br)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:s})}updateParams(s,e){var t;if(F(this,Am)){switch(s){case Kn.CREATE:this.currentLayer.addNewEditor();return;case Kn.HIGHLIGHT_DEFAULT_COLOR:(t=F(this,_k))==null||t.updateColor(e);break;case Kn.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(F(this,ry)||L(this,ry,new Map)).set(s,e),this.showAllEditors("highlight",e);break}for(const i of F(this,Hs))i.updateParams(s,e);for(const i of F(this,Am))i.updateDefaultParams(s,e)}}showAllEditors(s,e,t=!1){var i;for(const n of F(this,hr).values())n.editorType===s&&n.show(e);(((i=F(this,ry))==null?void 0:i.get(Kn.HIGHLIGHT_SHOW_ALL))??!0)!==e&&E(this,Si,eg).call(this,[[Kn.HIGHLIGHT_SHOW_ALL,e]])}enableWaiting(s=!1){if(F(this,zk)!==s){L(this,zk,s);for(const e of F(this,ba).values())s?e.disableClick():e.enableClick(),e.div.classList.toggle("waiting",s)}}getEditors(s){const e=[];for(const t of F(this,hr).values())t.pageIndex===s&&e.push(t);return e}getEditor(s){return F(this,hr).get(s)}addEditor(s){F(this,hr).set(s.id,s)}removeEditor(s){var e;s.div.contains(document.activeElement)&&(F(this,qp)&&clearTimeout(F(this,qp)),L(this,qp,setTimeout(()=>{this.focusMainContainer(),L(this,qp,null)},0))),F(this,hr).delete(s.id),this.unselect(s),(!s.annotationElementId||!F(this,PN).has(s.annotationElementId))&&((e=F(this,P0))==null||e.remove(s.id))}addDeletedAnnotationElement(s){F(this,PN).add(s.annotationElementId),this.addChangedExistingAnnotation(s),s.deleted=!0}isDeletedAnnotationElement(s){return F(this,PN).has(s)}removeDeletedAnnotationElement(s){F(this,PN).delete(s.annotationElementId),this.removeChangedExistingAnnotation(s),s.deleted=!1}setActiveEditor(s){F(this,ch)!==s&&(L(this,ch,s),s&&E(this,Si,eg).call(this,s.propertiesToUpdate))}updateUI(s){F(this,Si,Fhe)===s&&E(this,Si,eg).call(this,s.propertiesToUpdate)}updateUIForDefaultProperties(s){E(this,Si,eg).call(this,s.defaultPropertiesToUpdate)}toggleSelected(s){if(F(this,Hs).has(s)){F(this,Hs).delete(s),s.unselect(),E(this,Si,ed).call(this,{hasSelectedEditor:this.hasSelection});return}F(this,Hs).add(s),s.select(),E(this,Si,eg).call(this,s.propertiesToUpdate),E(this,Si,ed).call(this,{hasSelectedEditor:!0})}setSelected(s){var e;(e=F(this,HN))==null||e.commitOrRemove();for(const t of F(this,Hs))t!==s&&t.unselect();F(this,Hs).clear(),F(this,Hs).add(s),s.select(),E(this,Si,eg).call(this,s.propertiesToUpdate),E(this,Si,ed).call(this,{hasSelectedEditor:!0})}isSelected(s){return F(this,Hs).has(s)}get firstSelectedEditor(){return F(this,Hs).values().next().value}unselect(s){s.unselect(),F(this,Hs).delete(s),E(this,Si,ed).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return F(this,Hs).size!==0}get isEnterHandled(){return F(this,Hs).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){var s;F(this,du).undo(),E(this,Si,ed).call(this,{hasSomethingToUndo:F(this,du).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:E(this,Si,ay).call(this)}),(s=this._editorUndoBar)==null||s.hide()}redo(){F(this,du).redo(),E(this,Si,ed).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:F(this,du).hasSomethingToRedo(),isEmpty:E(this,Si,ay).call(this)})}addCommands(s){F(this,du).add(s),E(this,Si,ed).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:E(this,Si,ay).call(this)})}cleanUndoStack(s){F(this,du).cleanType(s)}delete(){var s;this.commitOrRemove();const e=(s=this.currentLayer)==null?void 0:s.endDrawingSession(!0);if(!this.hasSelection&&!e)return;const t=e?[e]:[...F(this,Hs)],i=()=>{var o;(o=this._editorUndoBar)==null||o.show(n,t.length===1?t[0].editorType:t.length);for(const l of t)l.remove()},n=()=>{for(const o of t)E(this,Si,$_).call(this,o)};this.addCommands({cmd:i,undo:n,mustExec:!0})}commitOrRemove(){var s;(s=F(this,ch))==null||s.commitOrRemove()}hasSomethingToControl(){return F(this,ch)||this.hasSelection}selectAll(){for(const s of F(this,Hs))s.commit();E(this,Si,eO).call(this,F(this,hr).values())}unselectAll(){var s;if(!(F(this,ch)&&(F(this,ch).commitOrRemove(),F(this,Br)!==Nn.NONE))&&!((s=F(this,HN))!=null&&s.commitOrRemove())&&this.hasSelection){for(const e of F(this,Hs))e.unselect();F(this,Hs).clear(),E(this,Si,ed).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(s,e,t=!1){if(t||this.commitOrRemove(),!this.hasSelection)return;F(this,qf)[0]+=s,F(this,qf)[1]+=e;const[i,n]=F(this,qf),o=[...F(this,Hs)],l=1e3;F(this,$p)&&clearTimeout(F(this,$p)),L(this,$p,setTimeout(()=>{L(this,$p,null),F(this,qf)[0]=F(this,qf)[1]=0,this.addCommands({cmd:()=>{for(const r of o)F(this,hr).has(r.id)&&r.translateInPage(i,n)},undo:()=>{for(const r of o)F(this,hr).has(r.id)&&r.translateInPage(-i,-n)},mustExec:!1})},l));for(const r of o)r.translateInPage(s,e)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),L(this,Kp,new Map);for(const s of F(this,Hs))F(this,Kp).set(s,{savedX:s.x,savedY:s.y,savedPageIndex:s.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!F(this,Kp))return!1;this.disableUserSelect(!1);const s=F(this,Kp);L(this,Kp,null);let e=!1;for(const[{x:i,y:n,pageIndex:o},l]of s)l.newX=i,l.newY=n,l.newPageIndex=o,e||(e=i!==l.savedX||n!==l.savedY||o!==l.savedPageIndex);if(!e)return!1;const t=(i,n,o,l)=>{if(F(this,hr).has(i.id)){const r=F(this,ba).get(l);r?i._setParentAndPosition(r,n,o):(i.pageIndex=l,i.x=n,i.y=o)}};return this.addCommands({cmd:()=>{for(const[i,{newX:n,newY:o,newPageIndex:l}]of s)t(i,n,o,l)},undo:()=>{for(const[i,{savedX:n,savedY:o,savedPageIndex:l}]of s)t(i,n,o,l)},mustExec:!0}),!0}dragSelectedEditors(s,e){if(F(this,Kp))for(const t of F(this,Kp).keys())t.drag(s,e)}rebuild(s){if(s.parent===null){const e=this.getLayer(s.pageIndex);e?(e.changeParent(s),e.addOrRebuild(s)):(this.addEditor(s),this.addToAnnotationStorage(s),s.rebuild())}else s.parent.addOrRebuild(s)}get isEditorHandlingKeyboard(){var s;return((s=this.getActive())==null?void 0:s.shouldGetKeyboardEvents())||F(this,Hs).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(s){return F(this,ch)===s}getActive(){return F(this,ch)}getMode(){return F(this,Br)}get imageManager(){return Mn(this,"imageManager",new Yht)}getSelectionBoxes(s){if(!s)return null;const e=document.getSelection();for(let a=0,d=e.rangeCount;a<d;a++)if(!s.contains(e.getRangeAt(a).commonAncestorContainer))return null;const{x:t,y:i,width:n,height:o}=s.getBoundingClientRect();let l;switch(s.getAttribute("data-main-rotation")){case"90":l=(a,d,c,h)=>({x:(d-i)/o,y:1-(a+c-t)/n,width:h/o,height:c/n});break;case"180":l=(a,d,c,h)=>({x:1-(a+c-t)/n,y:1-(d+h-i)/o,width:c/n,height:h/o});break;case"270":l=(a,d,c,h)=>({x:1-(d+h-i)/o,y:(a-t)/n,width:h/o,height:c/n});break;default:l=(a,d,c,h)=>({x:(a-t)/n,y:(d-i)/o,width:c/n,height:h/o});break}const r=[];for(let a=0,d=e.rangeCount;a<d;a++){const c=e.getRangeAt(a);if(!c.collapsed)for(const{x:h,y:u,width:m,height:p}of c.getClientRects())m===0||p===0||r.push(l(h,u,m,p))}return r.length===0?null:r}addChangedExistingAnnotation({annotationElementId:s,id:e}){(F(this,jN)||L(this,jN,new Map)).set(s,e)}removeChangedExistingAnnotation({annotationElementId:s}){var e;(e=F(this,jN))==null||e.delete(s)}renderAnnotationElement(s){var e;const t=(e=F(this,jN))==null?void 0:e.get(s.data.id);if(!t)return;const i=F(this,P0).getRawValue(t);i&&(F(this,Br)===Nn.NONE&&!i.hasBeenModified||i.renderAnnotationElement(s))}},iy=new WeakMap,ch=new WeakMap,hr=new WeakMap,ba=new WeakMap,ny=new WeakMap,P0=new WeakMap,jN=new WeakMap,du=new WeakMap,Of=new WeakMap,HN=new WeakMap,sy=new WeakMap,PN=new WeakMap,Kp=new WeakMap,Am=new WeakMap,KN=new WeakMap,Jk=new WeakMap,Xk=new WeakMap,oy=new WeakMap,Yk=new WeakMap,qp=new WeakMap,jf=new WeakMap,ly=new WeakMap,Hf=new WeakMap,Nm=new WeakMap,j_=new WeakMap,Pf=new WeakMap,zk=new WeakMap,Kf=new WeakMap,qN=new WeakMap,_k=new WeakMap,Ok=new WeakMap,Br=new WeakMap,Hs=new WeakMap,K0=new WeakMap,$N=new WeakMap,ry=new WeakMap,jk=new WeakMap,qf=new WeakMap,$p=new WeakMap,q0=new WeakMap,Hk=new WeakMap,cu=new WeakMap,Si=new WeakSet,Pk=function({anchorNode:s}){return s.nodeType===Node.TEXT_NODE?s.parentElement:s},H_=function(s){const{currentLayer:e}=this;if(e.hasTextLayer(s))return e;for(const t of F(this,ba).values())if(t.hasTextLayer(s))return t;return null},che=function(){const s=document.getSelection();if(!s||s.isCollapsed)return;const e=E(this,Si,Pk).call(this,s).closest(".textLayer"),t=this.getSelectionBoxes(e);t&&(F(this,Nm)||L(this,Nm,new Jht(this)),F(this,Nm).show(e,t,this.direction==="ltr"))},hhe=function(){var s,e,t;const i=document.getSelection();if(!i||i.isCollapsed){F(this,K0)&&((s=F(this,Nm))==null||s.hide(),L(this,K0,null),E(this,Si,ed).call(this,{hasSelectedText:!1}));return}const{anchorNode:n}=i;if(n===F(this,K0))return;const o=E(this,Si,Pk).call(this,i).closest(".textLayer");if(!o){F(this,K0)&&((e=F(this,Nm))==null||e.hide(),L(this,K0,null),E(this,Si,ed).call(this,{hasSelectedText:!1}));return}if((t=F(this,Nm))==null||t.hide(),L(this,K0,n),E(this,Si,ed).call(this,{hasSelectedText:!0}),!(F(this,Br)!==Nn.HIGHLIGHT&&F(this,Br)!==Nn.NONE)&&(F(this,Br)===Nn.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),L(this,Hf,this.isShiftKeyDown),!this.isShiftKeyDown)){const l=F(this,Br)===Nn.HIGHLIGHT?E(this,Si,H_).call(this,o):null;l==null||l.toggleDrawing();const r=new AbortController,a=this.combinedSignal(r),d=c=>{c.type==="pointerup"&&c.button!==0||(r.abort(),l==null||l.toggleDrawing(!0),c.type==="pointerup"&&E(this,Si,Kk).call(this,"main_toolbar"))};window.addEventListener("pointerup",d,{signal:a}),window.addEventListener("blur",d,{signal:a})}},Kk=function(s=""){F(this,Br)===Nn.HIGHLIGHT?this.highlightSelection(s):F(this,Jk)&&E(this,Si,che).call(this)},uhe=function(){document.addEventListener("selectionchange",E(this,Si,hhe).bind(this),{signal:this._signal})},mhe=function(){if(F(this,jf))return;L(this,jf,new AbortController);const s=this.combinedSignal(F(this,jf));window.addEventListener("focus",this.focus.bind(this),{signal:s}),window.addEventListener("blur",this.blur.bind(this),{signal:s})},phe=function(){var s;(s=F(this,jf))==null||s.abort(),L(this,jf,null)},P_=function(){if(F(this,Kf))return;L(this,Kf,new AbortController);const s=this.combinedSignal(F(this,Kf));window.addEventListener("keydown",this.keydown.bind(this),{signal:s}),window.addEventListener("keyup",this.keyup.bind(this),{signal:s})},ghe=function(){var s;(s=F(this,Kf))==null||s.abort(),L(this,Kf,null)},K_=function(){if(F(this,Of))return;L(this,Of,new AbortController);const s=this.combinedSignal(F(this,Of));document.addEventListener("copy",this.copy.bind(this),{signal:s}),document.addEventListener("cut",this.cut.bind(this),{signal:s}),document.addEventListener("paste",this.paste.bind(this),{signal:s})},q_=function(){var s;(s=F(this,Of))==null||s.abort(),L(this,Of,null)},bhe=function(){const s=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:s}),document.addEventListener("drop",this.drop.bind(this),{signal:s})},ed=function(s){Object.entries(s).some(([e,t])=>F(this,jk)[e]!==t)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(F(this,jk),s)}),F(this,Br)===Nn.HIGHLIGHT&&s.hasSelectedEditor===!1&&E(this,Si,eg).call(this,[[Kn.HIGHLIGHT_FREE,!0]]))},eg=function(s){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:s})},Uhe=async function(){if(!F(this,Pf)){L(this,Pf,!0);const s=[];for(const e of F(this,ba).values())s.push(e.enable());await Promise.all(s);for(const e of F(this,hr).values())e.enable()}},fhe=function(){if(this.unselectAll(),F(this,Pf)){L(this,Pf,!1);for(const s of F(this,ba).values())s.disable();for(const s of F(this,hr).values())s.disable()}},$_=function(s){const e=F(this,ba).get(s.pageIndex);e?e.addOrRebuild(s):(this.addEditor(s),this.addToAnnotationStorage(s))},Fhe=function(){let s=null;for(s of F(this,Hs));return s},ay=function(){if(F(this,hr).size===0)return!0;if(F(this,hr).size===1)for(const s of F(this,hr).values())return s.isEmpty();return!1},eO=function(s){for(const e of F(this,Hs))e.unselect();F(this,Hs).clear();for(const e of s)e.isEmpty()||(F(this,Hs).add(e),e.select());E(this,Si,ed).call(this,{hasSelectedEditor:this.hasSelection})},Ii(eR,"TRANSLATE_SMALL",1),Ii(eR,"TRANSLATE_BIG",10),eR);var Jr,kg,Im,PC,Ag,Qh,u2,lg,kc,hb,QR,Ng,AU,Ig,KC,JD;const m2=class ub{constructor(e){J(this,Ig),J(this,Jr,null),J(this,kg,!1),J(this,Im,null),J(this,PC,null),J(this,Ag,null),J(this,Qh,null),J(this,u2,!1),J(this,lg,null),J(this,kc,null),J(this,hb,null),J(this,QR,null),J(this,Ng,!1),L(this,kc,e),L(this,Ng,e._uiManager.useNewAltTextFlow),F(ub,AU)||L(ub,AU,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(e){ub._l10n??(ub._l10n=e)}async render(){const e=L(this,Im,document.createElement("button"));e.className="altText",e.tabIndex="0";const t=L(this,PC,document.createElement("span"));e.append(t),F(this,Ng)?(e.classList.add("new"),e.setAttribute("data-l10n-id",F(ub,AU).missing),t.setAttribute("data-l10n-id",F(ub,AU)["missing-label"])):(e.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const i=F(this,kc)._uiManager._signal;e.addEventListener("contextmenu",tm,{signal:i}),e.addEventListener("pointerdown",o=>o.stopPropagation(),{signal:i});const n=o=>{o.preventDefault(),F(this,kc)._uiManager.editAltText(F(this,kc)),F(this,Ng)&&F(this,kc)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:F(this,Ig,KC)}})};return e.addEventListener("click",n,{capture:!0,signal:i}),e.addEventListener("keydown",o=>{o.target===e&&o.key==="Enter"&&(L(this,u2,!0),n(o))},{signal:i}),await E(this,Ig,JD).call(this),e}finish(){F(this,Im)&&(F(this,Im).focus({focusVisible:F(this,u2)}),L(this,u2,!1))}isEmpty(){return F(this,Ng)?F(this,Jr)===null:!F(this,Jr)&&!F(this,kg)}hasData(){return F(this,Ng)?F(this,Jr)!==null||!!F(this,hb):this.isEmpty()}get guessedText(){return F(this,hb)}async setGuessedText(e){F(this,Jr)===null&&(L(this,hb,e),L(this,QR,await ub._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:e})),E(this,Ig,JD).call(this))}toggleAltTextBadge(e=!1){var t;if(!F(this,Ng)||F(this,Jr)){(t=F(this,lg))==null||t.remove(),L(this,lg,null);return}if(!F(this,lg)){const i=L(this,lg,document.createElement("div"));i.className="noAltTextBadge",F(this,kc).div.append(i)}F(this,lg).classList.toggle("hidden",!e)}serialize(e){let t=F(this,Jr);return!e&&F(this,hb)===t&&(t=F(this,QR)),{altText:t,decorative:F(this,kg),guessedText:F(this,hb),textWithDisclaimer:F(this,QR)}}get data(){return{altText:F(this,Jr),decorative:F(this,kg)}}set data({altText:e,decorative:t,guessedText:i,textWithDisclaimer:n,cancel:o=!1}){i&&(L(this,hb,i),L(this,QR,n)),!(F(this,Jr)===e&&F(this,kg)===t)&&(o||(L(this,Jr,e),L(this,kg,t)),E(this,Ig,JD).call(this))}toggle(e=!1){F(this,Im)&&(!e&&F(this,Qh)&&(clearTimeout(F(this,Qh)),L(this,Qh,null)),F(this,Im).disabled=!e)}shown(){F(this,kc)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:F(this,Ig,KC)}})}destroy(){var e,t;(e=F(this,Im))==null||e.remove(),L(this,Im,null),L(this,PC,null),L(this,Ag,null),(t=F(this,lg))==null||t.remove(),L(this,lg,null)}};Jr=new WeakMap,kg=new WeakMap,Im=new WeakMap,PC=new WeakMap,Ag=new WeakMap,Qh=new WeakMap,u2=new WeakMap,lg=new WeakMap,kc=new WeakMap,hb=new WeakMap,QR=new WeakMap,Ng=new WeakMap,AU=new WeakMap,Ig=new WeakSet,KC=function(){return F(this,Jr)&&"added"||F(this,Jr)===null&&this.guessedText&&"review"||"missing"},JD=async function(){var s,e,t;const i=F(this,Im);if(!i)return;if(F(this,Ng)){if(i.classList.toggle("done",!!F(this,Jr)),i.setAttribute("data-l10n-id",F(m2,AU)[F(this,Ig,KC)]),(s=F(this,PC))==null||s.setAttribute("data-l10n-id",F(m2,AU)[`${F(this,Ig,KC)}-label`]),!F(this,Jr)){(e=F(this,Ag))==null||e.remove();return}}else{if(!F(this,Jr)&&!F(this,kg)){i.classList.remove("done"),(t=F(this,Ag))==null||t.remove();return}i.classList.add("done"),i.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let n=F(this,Ag);if(!n){L(this,Ag,n=document.createElement("span")),n.className="tooltip",n.setAttribute("role","tooltip"),n.id=`alt-text-tooltip-${F(this,kc).id}`;const l=100,r=F(this,kc)._uiManager._signal;r.addEventListener("abort",()=>{clearTimeout(F(this,Qh)),L(this,Qh,null)},{once:!0}),i.addEventListener("mouseenter",()=>{L(this,Qh,setTimeout(()=>{L(this,Qh,null),F(this,Ag).classList.add("show"),F(this,kc)._reportTelemetry({action:"alt_text_tooltip"})},l))},{signal:r}),i.addEventListener("mouseleave",()=>{var a;F(this,Qh)&&(clearTimeout(F(this,Qh)),L(this,Qh,null)),(a=F(this,Ag))==null||a.classList.remove("show")},{signal:r})}F(this,kg)?n.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(n.removeAttribute("data-l10n-id"),n.textContent=F(this,Jr)),n.parentNode||i.append(n);const o=F(this,kc).getImageForAltText();o==null||o.setAttribute("aria-describedby",n.id)},J(m2,AU,null),Ii(m2,"_l10n",null);let Zhe=m2;var qk,tR,$k,eI,tI,iI,nI,dy,$0,iR,$f,nR,Ahe,Nhe,tO,iO;let lNe=(iO=class{constructor({container:s,isPinchingDisabled:e=null,isPinchingStopped:t=null,onPinchStart:i=null,onPinching:n=null,onPinchEnd:o=null,signal:l}){J(this,nR),J(this,qk),J(this,tR,!1),J(this,$k,null),J(this,eI),J(this,tI),J(this,iI),J(this,nI),J(this,dy),J(this,$0,null),J(this,iR),J(this,$f,null),L(this,qk,s),L(this,$k,t),L(this,eI,e),L(this,tI,i),L(this,iI,n),L(this,nI,o),L(this,iR,new AbortController),L(this,dy,AbortSignal.any([l,F(this,iR).signal])),s.addEventListener("touchstart",E(this,nR,Ahe).bind(this),{passive:!1,signal:F(this,dy)})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return Mn(this,"MIN_TOUCH_DISTANCE_TO_PINCH",35/(window.devicePixelRatio||1))}destroy(){var s;(s=F(this,iR))==null||s.abort(),L(this,iR,null)}},qk=new WeakMap,tR=new WeakMap,$k=new WeakMap,eI=new WeakMap,tI=new WeakMap,iI=new WeakMap,nI=new WeakMap,dy=new WeakMap,$0=new WeakMap,iR=new WeakMap,$f=new WeakMap,nR=new WeakSet,Ahe=function(s){var e,t,i;if((e=F(this,eI))!=null&&e.call(this)||s.touches.length<2)return;if(!F(this,$f)){L(this,$f,new AbortController);const l=AbortSignal.any([F(this,dy),F(this,$f).signal]),r=F(this,qk),a={signal:l,passive:!1};r.addEventListener("touchmove",E(this,nR,Nhe).bind(this),a),r.addEventListener("touchend",E(this,nR,tO).bind(this),a),r.addEventListener("touchcancel",E(this,nR,tO).bind(this),a),(t=F(this,tI))==null||t.call(this)}if(xc(s),s.touches.length!==2||(i=F(this,$k))!=null&&i.call(this)){L(this,$0,null);return}let[n,o]=s.touches;n.identifier>o.identifier&&([n,o]=[o,n]),L(this,$0,{touch0X:n.screenX,touch0Y:n.screenY,touch1X:o.screenX,touch1Y:o.screenY})},Nhe=function(s){var e;if(!F(this,$0)||s.touches.length!==2)return;let[t,i]=s.touches;t.identifier>i.identifier&&([t,i]=[i,t]);const{screenX:n,screenY:o}=t,{screenX:l,screenY:r}=i,a=F(this,$0),{touch0X:d,touch0Y:c,touch1X:h,touch1Y:u}=a,m=h-d,p=u-c,g=l-n,b=r-o,f=Math.hypot(g,b)||1,Z=Math.hypot(m,p)||1;if(!F(this,tR)&&Math.abs(Z-f)<=iO.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(a.touch0X=n,a.touch0Y=o,a.touch1X=l,a.touch1Y=r,s.preventDefault(),!F(this,tR)){L(this,tR,!0);return}const A=[(n+l)/2,(o+r)/2];(e=F(this,iI))==null||e.call(this,A,Z,f)},tO=function(s){var e;F(this,$f).abort(),L(this,$f,null),(e=F(this,nI))==null||e.call(this),F(this,$0)&&(s.preventDefault(),L(this,$0,null),L(this,tR,!1))},iO);var yR,Om,Bo,p2,VF,XD,CR,Va,wR,Wb,wZ,CJ,MS,Sa,YD,MR,NU,rg,g2,b2,ph,hZ,zD,x6,Us,J6,wJ,X6,sI,rNe,Rhe,nO,oI,Y6,aNe,dNe,cNe,z6,hNe,_6,uNe,mNe,pNe,O6,qC;const hl=class Lr{constructor(e){J(this,Us),J(this,yR,null),J(this,Om,null),J(this,Bo,null),J(this,p2,!1),J(this,VF,null),J(this,XD,""),J(this,CR,!1),J(this,Va,null),J(this,wR,null),J(this,Wb,null),J(this,wZ,null),J(this,CJ,""),J(this,MS,!1),J(this,Sa,null),J(this,YD,!1),J(this,MR,!1),J(this,NU,!1),J(this,rg,null),J(this,g2,0),J(this,b2,0),J(this,ph,null),J(this,hZ,null),Ii(this,"_editToolbar",null),Ii(this,"_initialOptions",Object.create(null)),Ii(this,"_initialData",null),Ii(this,"_isVisible",!0),Ii(this,"_uiManager",null),Ii(this,"_focusEventsAllowed",!0),J(this,zD,!1),J(this,x6,Lr._zIndex++),this.parent=e.parent,this.id=e.id,this.width=this.height=null,this.pageIndex=e.parent.pageIndex,this.name=e.name,this.div=null,this._uiManager=e.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=e.isCentered,this._structTreeParentId=null;const{rotation:t,rawDims:{pageWidth:i,pageHeight:n,pageX:o,pageY:l}}=this.parent.viewport;this.rotation=t,this.pageRotation=(360+t-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[i,n],this.pageTranslation=[o,l];const[r,a]=this.parentDimensions;this.x=e.x/r,this.y=e.y/a,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const e=Lr.prototype._resizeWithKeyboard,t=MT.TRANSLATE_SMALL,i=MT.TRANSLATE_BIG;return Mn(this,"_resizerKeyboardManager",new vB([[["ArrowLeft","mac+ArrowLeft"],e,{args:[-t,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e,{args:[-i,0]}],[["ArrowRight","mac+ArrowRight"],e,{args:[t,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e,{args:[i,0]}],[["ArrowUp","mac+ArrowUp"],e,{args:[0,-t]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e,{args:[0,-i]}],[["ArrowDown","mac+ArrowDown"],e,{args:[0,t]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e,{args:[0,i]}],[["Escape","mac+Escape"],Lr.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get isDrawer(){return!1}static get _defaultLineColor(){return Mn(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(e){const t=new Oht({id:e.parent.getNextId(),parent:e.parent,uiManager:e._uiManager});t.annotationElementId=e.annotationElementId,t.deleted=!0,t._uiManager.addToAnnotationStorage(t)}static initialize(e,t){if(Lr._l10n??(Lr._l10n=e),Lr._l10nResizer||(Lr._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),Lr._borderLineWidth!==-1)return;const i=getComputedStyle(document.documentElement);Lr._borderLineWidth=parseFloat(i.getPropertyValue("--outline-width"))||0}static updateDefaultParams(e,t){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(e){return!1}static paste(e,t){uo("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return F(this,zD)}set _isDraggable(e){var t;L(this,zD,e),(t=this.div)==null||t.classList.toggle("draggable",e)}get isEnterHandled(){return!0}center(){const[e,t]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*t/(e*2),this.y+=this.width*e/(t*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*t/(e*2),this.y-=this.width*e/(t*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(e){this._uiManager.addCommands(e)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=F(this,x6)}setParent(e){e!==null?(this.pageIndex=e.pageIndex,this.pageDimensions=e.pageDimensions):E(this,Us,qC).call(this),this.parent=e}focusin(e){this._focusEventsAllowed&&(F(this,MS)?L(this,MS,!1):this.parent.setSelected(this))}focusout(e){var t;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const i=e.relatedTarget;i!=null&&i.closest(`#${this.id}`)||(e.preventDefault(),(t=this.parent)!=null&&t.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(e,t,i,n){const[o,l]=this.parentDimensions;[i,n]=this.screenToPageTranslation(i,n),this.x=(e+i)/o,this.y=(t+n)/l,this.fixAndSetPosition()}translate(e,t){E(this,Us,J6).call(this,this.parentDimensions,e,t)}translateInPage(e,t){F(this,Sa)||L(this,Sa,[this.x,this.y,this.width,this.height]),E(this,Us,J6).call(this,this.pageDimensions,e,t),this.div.scrollIntoView({block:"nearest"})}drag(e,t){F(this,Sa)||L(this,Sa,[this.x,this.y,this.width,this.height]);const{div:i,parentDimensions:[n,o]}=this;if(this.x+=e/n,this.y+=t/o,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:h,y:u}=this.div.getBoundingClientRect();this.parent.findNewParent(this,h,u)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:l,y:r}=this;const[a,d]=this.getBaseTranslation();l+=a,r+=d;const{style:c}=i;c.left=`${(100*l).toFixed(2)}%`,c.top=`${(100*r).toFixed(2)}%`,this._onTranslating(l,r),i.scrollIntoView({block:"nearest"})}_onTranslating(e,t){}_onTranslated(e,t){}get _hasBeenMoved(){return!!F(this,Sa)&&(F(this,Sa)[0]!==this.x||F(this,Sa)[1]!==this.y)}get _hasBeenResized(){return!!F(this,Sa)&&(F(this,Sa)[2]!==this.width||F(this,Sa)[3]!==this.height)}getBaseTranslation(){const[e,t]=this.parentDimensions,{_borderLineWidth:i}=Lr,n=i/e,o=i/t;switch(this.rotation){case 90:return[-n,o];case 180:return[n,o];case 270:return[n,-o];default:return[-n,-o]}}get _mustFixPosition(){return!0}fixAndSetPosition(e=this.rotation){const{div:{style:t},pageDimensions:[i,n]}=this;let{x:o,y:l,width:r,height:a}=this;if(r*=i,a*=n,o*=i,l*=n,this._mustFixPosition)switch(e){case 0:o=Math.max(0,Math.min(i-r,o)),l=Math.max(0,Math.min(n-a,l));break;case 90:o=Math.max(0,Math.min(i-a,o)),l=Math.min(n,Math.max(r,l));break;case 180:o=Math.min(i,Math.max(r,o)),l=Math.min(n,Math.max(a,l));break;case 270:o=Math.min(i,Math.max(a,o)),l=Math.max(0,Math.min(n-r,l));break}this.x=o/=i,this.y=l/=n;const[d,c]=this.getBaseTranslation();o+=d,l+=c,t.left=`${(100*o).toFixed(2)}%`,t.top=`${(100*l).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(e,t){var i;return E(i=Lr,wJ,X6).call(i,e,t,this.parentRotation)}pageTranslationToScreen(e,t){var i;return E(i=Lr,wJ,X6).call(i,e,t,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:e,pageDimensions:[t,i]}=this;return[t*e,i*e]}setDims(e,t){const[i,n]=this.parentDimensions,{style:o}=this.div;o.width=`${(100*e/i).toFixed(2)}%`,F(this,CR)||(o.height=`${(100*t/n).toFixed(2)}%`)}fixDims(){const{style:e}=this.div,{height:t,width:i}=e,n=i.endsWith("%"),o=!F(this,CR)&&t.endsWith("%");if(n&&o)return;const[l,r]=this.parentDimensions;n||(e.width=`${(100*parseFloat(i)/l).toFixed(2)}%`),!F(this,CR)&&!o&&(e.height=`${(100*parseFloat(t)/r).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}_onResized(){}static _round(e){return Math.round(e*1e4)/1e4}_onResizing(){}altTextFinish(){var e;(e=F(this,Bo))==null||e.finish()}async addEditToolbar(){return this._editToolbar||F(this,MR)?this._editToolbar:(this._editToolbar=new xht(this),this.div.append(this._editToolbar.render()),F(this,Bo)&&await this._editToolbar.addAltText(F(this,Bo)),this._editToolbar)}removeEditToolbar(){var e;this._editToolbar&&(this._editToolbar.remove(),this._editToolbar=null,(e=F(this,Bo))==null||e.destroy())}addContainer(e){var t;const i=(t=this._editToolbar)==null?void 0:t.div;i?i.before(e):this.div.append(e)}getClientDimensions(){return this.div.getBoundingClientRect()}async addAltTextButton(){F(this,Bo)||(Zhe.initialize(Lr._l10n),L(this,Bo,new Zhe(this)),F(this,yR)&&(F(this,Bo).data=F(this,yR),L(this,yR,null)),await this.addEditToolbar())}get altTextData(){var e;return(e=F(this,Bo))==null?void 0:e.data}set altTextData(e){F(this,Bo)&&(F(this,Bo).data=e)}get guessedAltText(){var e;return(e=F(this,Bo))==null?void 0:e.guessedText}async setGuessedAltText(e){var t;await((t=F(this,Bo))==null?void 0:t.setGuessedText(e))}serializeAltText(e){var t;return(t=F(this,Bo))==null?void 0:t.serialize(e)}hasAltText(){return!!F(this,Bo)&&!F(this,Bo).isEmpty()}hasAltTextData(){var e;return((e=F(this,Bo))==null?void 0:e.hasData())??!1}render(){var e;this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=F(this,p2)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),E(this,Us,_6).call(this);const[t,i]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*i/t).toFixed(2)}%`,this.div.style.maxHeight=`${(100*t/i).toFixed(2)}%`);const[n,o]=this.getInitialTranslation();return this.translate(n,o),QJ(this,this.div,["pointerdown"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(F(this,hZ)||L(this,hZ,new lNe({container:this.div,isPinchingDisabled:()=>!this.isSelected,onPinchStart:E(this,Us,aNe).bind(this),onPinching:E(this,Us,dNe).bind(this),onPinchEnd:E(this,Us,cNe).bind(this),signal:this._uiManager._signal}))),(e=this._uiManager._editorUndoBar)==null||e.hide(),this.div}pointerdown(e){const{isMac:t}=Nd.platform;if(e.button!==0||e.ctrlKey&&t){e.preventDefault();return}if(L(this,MS,!0),this._isDraggable){E(this,Us,hNe).call(this,e);return}E(this,Us,z6).call(this,e)}get isSelected(){return this._uiManager.isSelected(this)}_onStartDragging(){}_onStopDragging(){}moveInDOM(){F(this,rg)&&clearTimeout(F(this,rg)),L(this,rg,setTimeout(()=>{var e;L(this,rg,null),(e=this.parent)==null||e.moveEditorInDOM(this)},0))}_setParentAndPosition(e,t,i){e.changeParent(this),this.x=t,this.y=i,this.fixAndSetPosition(),this._onTranslated()}getRect(e,t,i=this.rotation){const n=this.parentScale,[o,l]=this.pageDimensions,[r,a]=this.pageTranslation,d=e/n,c=t/n,h=this.x*o,u=this.y*l,m=this.width*o,p=this.height*l;switch(i){case 0:return[h+d+r,l-u-c-p+a,h+d+m+r,l-u-c+a];case 90:return[h+c+r,l-u+d+a,h+c+p+r,l-u+d+m+a];case 180:return[h-d-m+r,l-u+c+a,h-d+r,l-u+c+p+a];case 270:return[h-c-p+r,l-u-d-m+a,h-c+r,l-u-d+a];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(e,t){const[i,n,o,l]=e,r=o-i,a=l-n;switch(this.rotation){case 0:return[i,t-l,r,a];case 90:return[i,t-n,a,r];case 180:return[o,t-n,r,a];case 270:return[o,t-l,a,r];default:throw new Error("Invalid rotation")}}onceAdded(e){}isEmpty(){return!1}enableEditMode(){L(this,MR,!0)}disableEditMode(){L(this,MR,!1)}isInEditMode(){return F(this,MR)}shouldGetKeyboardEvents(){return F(this,NU)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:e,left:t,bottom:i,right:n}=this.getClientDimensions(),{innerHeight:o,innerWidth:l}=window;return t<l&&n>0&&e<o&&i>0}rebuild(){E(this,Us,_6).call(this)}rotate(e){}resize(){}serializeDeleted(){var e;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:((e=this._initialData)==null?void 0:e.popupRef)||""}}serialize(e=!1,t=null){uo("An editor must be serializable")}static async deserialize(e,t,i){const n=new this.prototype.constructor({parent:t,id:t.getNextId(),uiManager:i});n.rotation=e.rotation,L(n,yR,e.accessibilityData);const[o,l]=n.pageDimensions,[r,a,d,c]=n.getRectInCurrentCoords(e.rect,l);return n.x=r/o,n.y=a/l,n.width=d/o,n.height=c/l,n}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){var e,t;if((e=F(this,wZ))==null||e.abort(),L(this,wZ,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),F(this,rg)&&(clearTimeout(F(this,rg)),L(this,rg,null)),E(this,Us,qC).call(this),this.removeEditToolbar(),F(this,ph)){for(const i of F(this,ph).values())clearTimeout(i);L(this,ph,null)}this.parent=null,(t=F(this,hZ))==null||t.destroy(),L(this,hZ,null)}get isResizable(){return!1}makeResizable(){this.isResizable&&(E(this,Us,rNe).call(this),F(this,Va).classList.remove("hidden"),QJ(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(e){if(!this.isResizable||e.target!==this.div||e.key!=="Enter")return;this._uiManager.setSelected(this),L(this,Wb,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const t=F(this,Va).children;if(!F(this,Om)){L(this,Om,Array.from(t));const l=E(this,Us,uNe).bind(this),r=E(this,Us,mNe).bind(this),a=this._uiManager._signal;for(const d of F(this,Om)){const c=d.getAttribute("data-resizer-name");d.setAttribute("role","spinbutton"),d.addEventListener("keydown",l,{signal:a}),d.addEventListener("blur",r,{signal:a}),d.addEventListener("focus",E(this,Us,pNe).bind(this,c),{signal:a}),d.setAttribute("data-l10n-id",Lr._l10nResizer[c])}}const i=F(this,Om)[0];let n=0;for(const l of t){if(l===i)break;n++}const o=(360-this.rotation+this.parentRotation)%360/90*(F(this,Om).length/4);if(o!==n){if(o<n)for(let r=0;r<n-o;r++)F(this,Va).append(F(this,Va).firstChild);else if(o>n)for(let r=0;r<o-n;r++)F(this,Va).firstChild.before(F(this,Va).lastChild);let l=0;for(const r of t){const a=F(this,Om)[l++].getAttribute("data-resizer-name");r.setAttribute("data-l10n-id",Lr._l10nResizer[a])}}E(this,Us,O6).call(this,0),L(this,NU,!0),F(this,Va).firstChild.focus({focusVisible:!0}),e.preventDefault(),e.stopImmediatePropagation()}_resizeWithKeyboard(e,t){F(this,NU)&&E(this,Us,Y6).call(this,F(this,CJ),{deltaX:e,deltaY:t,fromKeyboard:!0})}_stopResizingWithKeyboard(){E(this,Us,qC).call(this),this.div.focus()}select(){var e,t,i;if(this.makeResizable(),(e=this.div)==null||e.classList.add("selectedEditor"),!this._editToolbar){this.addEditToolbar().then(()=>{var n,o;(n=this.div)!=null&&n.classList.contains("selectedEditor")&&((o=this._editToolbar)==null||o.show())});return}(t=this._editToolbar)==null||t.show(),(i=F(this,Bo))==null||i.toggleAltTextBadge(!1)}unselect(){var e,t,i,n,o;(e=F(this,Va))==null||e.classList.add("hidden"),(t=this.div)==null||t.classList.remove("selectedEditor"),(i=this.div)!=null&&i.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),(n=this._editToolbar)==null||n.hide(),(o=F(this,Bo))==null||o.toggleAltTextBadge(!0)}updateParams(e,t){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return F(this,YD)}set isEditing(e){L(this,YD,e),this.parent&&(e?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(e,t){L(this,CR,!0);const i=e/t,{style:n}=this.div;n.aspectRatio=i,n.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(e,t=!1){if(t){F(this,ph)||L(this,ph,new Map);const{action:i}=e;let n=F(this,ph).get(i);n&&clearTimeout(n),n=setTimeout(()=>{this._reportTelemetry(e),F(this,ph).delete(i),F(this,ph).size===0&&L(this,ph,null)},Lr._telemetryTimeout),F(this,ph).set(i,n);return}e.type||(e.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:e}})}show(e=this._isVisible){this.div.classList.toggle("hidden",!e),this._isVisible=e}enable(){this.div&&(this.div.tabIndex=0),L(this,p2,!1)}disable(){this.div&&(this.div.tabIndex=-1),L(this,p2,!0)}renderAnnotationElement(e){let t=e.container.querySelector(".annotationContent");if(!t)t=document.createElement("div"),t.classList.add("annotationContent",this.editorType),e.container.prepend(t);else if(t.nodeName==="CANVAS"){const i=t;t=document.createElement("div"),t.classList.add("annotationContent",this.editorType),i.before(t)}return t}resetAnnotationElement(e){const{firstChild:t}=e.container;(t==null?void 0:t.nodeName)==="DIV"&&t.classList.contains("annotationContent")&&t.remove()}};yR=new WeakMap,Om=new WeakMap,Bo=new WeakMap,p2=new WeakMap,VF=new WeakMap,XD=new WeakMap,CR=new WeakMap,Va=new WeakMap,wR=new WeakMap,Wb=new WeakMap,wZ=new WeakMap,CJ=new WeakMap,MS=new WeakMap,Sa=new WeakMap,YD=new WeakMap,MR=new WeakMap,NU=new WeakMap,rg=new WeakMap,g2=new WeakMap,b2=new WeakMap,ph=new WeakMap,hZ=new WeakMap,zD=new WeakMap,x6=new WeakMap,Us=new WeakSet,J6=function([s,e],t,i){[t,i]=this.screenToPageTranslation(t,i),this.x+=t/s,this.y+=i/e,this._onTranslating(this.x,this.y),this.fixAndSetPosition()},wJ=new WeakSet,X6=function(s,e,t){switch(t){case 90:return[e,-s];case 180:return[-s,-e];case 270:return[-e,s];default:return[s,e]}},sI=function(s){switch(s){case 90:{const[e,t]=this.pageDimensions;return[0,-e/t,t/e,0]}case 180:return[-1,0,0,-1];case 270:{const[e,t]=this.pageDimensions;return[0,e/t,-t/e,0]}default:return[1,0,0,1]}},rNe=function(){if(F(this,Va))return;L(this,Va,document.createElement("div")),F(this,Va).classList.add("resizers");const s=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],e=this._uiManager._signal;for(const t of s){const i=document.createElement("div");F(this,Va).append(i),i.classList.add("resizer",t),i.setAttribute("data-resizer-name",t),i.addEventListener("pointerdown",E(this,Us,Rhe).bind(this,t),{signal:e}),i.addEventListener("contextmenu",tm,{signal:e}),i.tabIndex=-1}this.div.prepend(F(this,Va))},Rhe=function(s,e){var t;e.preventDefault();const{isMac:i}=Nd.platform;if(e.button!==0||e.ctrlKey&&i)return;(t=F(this,Bo))==null||t.toggle(!1);const n=this._isDraggable;this._isDraggable=!1,L(this,wR,[e.screenX,e.screenY]);const o=new AbortController,l=this._uiManager.combinedSignal(o);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",E(this,Us,Y6).bind(this,s),{passive:!0,capture:!0,signal:l}),window.addEventListener("touchmove",xc,{passive:!1,signal:l}),window.addEventListener("contextmenu",tm,{signal:l}),L(this,Wb,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const r=this.parent.div.style.cursor,a=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(e.target).cursor;const d=()=>{var c;o.abort(),this.parent.togglePointerEvents(!0),(c=F(this,Bo))==null||c.toggle(!0),this._isDraggable=n,this.parent.div.style.cursor=r,this.div.style.cursor=a,E(this,Us,oI).call(this)};window.addEventListener("pointerup",d,{signal:l}),window.addEventListener("blur",d,{signal:l})},nO=function(s,e,t,i){this.width=t,this.height=i,this.x=s,this.y=e;const[n,o]=this.parentDimensions;this.setDims(n*t,o*i),this.fixAndSetPosition(),this._onResized()},oI=function(){if(!F(this,Wb))return;const{savedX:s,savedY:e,savedWidth:t,savedHeight:i}=F(this,Wb);L(this,Wb,null);const n=this.x,o=this.y,l=this.width,r=this.height;n===s&&o===e&&l===t&&r===i||this.addCommands({cmd:E(this,Us,nO).bind(this,n,o,l,r),undo:E(this,Us,nO).bind(this,s,e,t,i),mustExec:!0})},Y6=function(s,e){const[t,i]=this.parentDimensions,n=this.x,o=this.y,l=this.width,r=this.height,a=hl.MIN_SIZE/t,d=hl.MIN_SIZE/i,c=E(this,Us,sI).call(this,this.rotation),h=(ie,se)=>[c[0]*ie+c[2]*se,c[1]*ie+c[3]*se],u=E(this,Us,sI).call(this,360-this.rotation),m=(ie,se)=>[u[0]*ie+u[2]*se,u[1]*ie+u[3]*se];let p,g,b=!1,f=!1;switch(s){case"topLeft":b=!0,p=(ie,se)=>[0,0],g=(ie,se)=>[ie,se];break;case"topMiddle":p=(ie,se)=>[ie/2,0],g=(ie,se)=>[ie/2,se];break;case"topRight":b=!0,p=(ie,se)=>[ie,0],g=(ie,se)=>[0,se];break;case"middleRight":f=!0,p=(ie,se)=>[ie,se/2],g=(ie,se)=>[0,se/2];break;case"bottomRight":b=!0,p=(ie,se)=>[ie,se],g=(ie,se)=>[0,0];break;case"bottomMiddle":p=(ie,se)=>[ie/2,se],g=(ie,se)=>[ie/2,0];break;case"bottomLeft":b=!0,p=(ie,se)=>[0,se],g=(ie,se)=>[ie,0];break;case"middleLeft":f=!0,p=(ie,se)=>[0,se/2],g=(ie,se)=>[ie,se/2];break}const Z=p(l,r),A=g(l,r);let N=h(...A);const W=hl._round(n+N[0]),Q=hl._round(o+N[1]);let R=1,M=1,w,Y;if(e.fromKeyboard)({deltaX:w,deltaY:Y}=e);else{const{screenX:ie,screenY:se}=e,[pe,Ue]=F(this,wR);[w,Y]=this.screenToPageTranslation(ie-pe,se-Ue),F(this,wR)[0]=ie,F(this,wR)[1]=se}if([w,Y]=m(w/t,Y/i),b){const ie=Math.hypot(l,r);R=M=Math.max(Math.min(Math.hypot(A[0]-Z[0]-w,A[1]-Z[1]-Y)/ie,1/l,1/r),a/l,d/r)}else f?R=Math.max(a,Math.min(1,Math.abs(A[0]-Z[0]-w)))/l:M=Math.max(d,Math.min(1,Math.abs(A[1]-Z[1]-Y)))/r;const G=hl._round(l*R),P=hl._round(r*M);N=h(...g(G,P));const j=W-N[0],X=Q-N[1];F(this,Sa)||L(this,Sa,[this.x,this.y,this.width,this.height]),this.width=G,this.height=P,this.x=j,this.y=X,this.setDims(t*G,i*P),this.fixAndSetPosition(),this._onResizing()},aNe=function(){var s;L(this,Wb,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height}),(s=F(this,Bo))==null||s.toggle(!1),this.parent.togglePointerEvents(!1)},dNe=function(s,e,t){let i=.7*(t/e)+1-.7;if(i===1)return;const n=E(this,Us,sI).call(this,this.rotation),o=(N,W)=>[n[0]*N+n[2]*W,n[1]*N+n[3]*W],[l,r]=this.parentDimensions,a=this.x,d=this.y,c=this.width,h=this.height,u=hl.MIN_SIZE/l,m=hl.MIN_SIZE/r;i=Math.max(Math.min(i,1/c,1/h),u/c,m/h);const p=hl._round(c*i),g=hl._round(h*i);if(p===c&&g===h)return;F(this,Sa)||L(this,Sa,[a,d,c,h]);const b=o(c/2,h/2),f=hl._round(a+b[0]),Z=hl._round(d+b[1]),A=o(p/2,g/2);this.x=f-A[0],this.y=Z-A[1],this.width=p,this.height=g,this.setDims(l*p,r*g),this.fixAndSetPosition(),this._onResizing()},cNe=function(){var s;(s=F(this,Bo))==null||s.toggle(!0),this.parent.togglePointerEvents(!0),E(this,Us,oI).call(this)},z6=function(s){const{isMac:e}=Nd.platform;s.ctrlKey&&!e||s.shiftKey||s.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this)},hNe=function(s){const{isSelected:e}=this;this._uiManager.setUpDragSession();let t=!1;const i=new AbortController,n=this._uiManager.combinedSignal(i),o={capture:!0,passive:!1,signal:n},l=a=>{i.abort(),L(this,VF,null),L(this,MS,!1),this._uiManager.endDragSession()||E(this,Us,z6).call(this,a),t&&this._onStopDragging()};e&&(L(this,g2,s.clientX),L(this,b2,s.clientY),L(this,VF,s.pointerId),L(this,XD,s.pointerType),window.addEventListener("pointermove",a=>{t||(t=!0,this._onStartDragging());const{clientX:d,clientY:c,pointerId:h}=a;if(h!==F(this,VF)){xc(a);return}const[u,m]=this.screenToPageTranslation(d-F(this,g2),c-F(this,b2));L(this,g2,d),L(this,b2,c),this._uiManager.dragSelectedEditors(u,m)},o),window.addEventListener("touchmove",xc,o),window.addEventListener("pointerdown",a=>{a.pointerType===F(this,XD)&&(F(this,hZ)||a.isPrimary)&&l(a),xc(a)},o));const r=a=>{if(!F(this,VF)||F(this,VF)===a.pointerId){l(a);return}xc(a)};window.addEventListener("pointerup",r,{signal:n}),window.addEventListener("blur",r,{signal:n})},_6=function(){if(F(this,wZ)||!this.div)return;L(this,wZ,new AbortController);const s=this._uiManager.combinedSignal(F(this,wZ));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:s}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:s})},uNe=function(s){hl._resizerKeyboardManager.exec(this,s)},mNe=function(s){var e;F(this,NU)&&((e=s.relatedTarget)==null?void 0:e.parentNode)!==F(this,Va)&&E(this,Us,qC).call(this)},pNe=function(s){L(this,CJ,F(this,NU)?s:"")},O6=function(s){if(F(this,Om))for(const e of F(this,Om))e.tabIndex=s},qC=function(){L(this,NU,!1),E(this,Us,O6).call(this,-1),E(this,Us,oI).call(this)},J(hl,wJ),Ii(hl,"_l10n",null),Ii(hl,"_l10nResizer",null),Ii(hl,"_borderLineWidth",-1),Ii(hl,"_colorManager",new _ht),Ii(hl,"_zIndex",1),Ii(hl,"_telemetryTimeout",1e3);let fl=hl;class Oht extends fl{constructor(e){super(e),this.annotationElementId=e.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const She=3285377520,hh=4294901760,Rm=65535;class gNe{constructor(e){this.h1=e?e&4294967295:She,this.h2=e?e&4294967295:She}update(e){let t,i;if(typeof e=="string"){t=new Uint8Array(e.length*2),i=0;for(let g=0,b=e.length;g<b;g++){const f=e.charCodeAt(g);f<=255?t[i++]=f:(t[i++]=f>>>8,t[i++]=f&255)}}else if(ArrayBuffer.isView(e))t=e.slice(),i=t.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const n=i>>2,o=i-n*4,l=new Uint32Array(t.buffer,0,n);let r=0,a=0,d=this.h1,c=this.h2;const h=3432918353,u=461845907,m=h&Rm,p=u&Rm;for(let g=0;g<n;g++)g&1?(r=l[g],r=r*h&hh|r*m&Rm,r=r<<15|r>>>17,r=r*u&hh|r*p&Rm,d^=r,d=d<<13|d>>>19,d=d*5+3864292196):(a=l[g],a=a*h&hh|a*m&Rm,a=a<<15|a>>>17,a=a*u&hh|a*p&Rm,c^=a,c=c<<13|c>>>19,c=c*5+3864292196);switch(r=0,o){case 3:r^=t[n*4+2]<<16;case 2:r^=t[n*4+1]<<8;case 1:r^=t[n*4],r=r*h&hh|r*m&Rm,r=r<<15|r>>>17,r=r*u&hh|r*p&Rm,n&1?d^=r:c^=r}this.h1=d,this.h2=c}hexdigest(){let e=this.h1,t=this.h2;return e^=t>>>1,e=e*3981806797&hh|e*36045&Rm,t=t*4283543511&hh|((t<<16|e>>>16)*2950163797&hh)>>>16,e^=t>>>1,e=e*444984403&hh|e*60499&Rm,t=t*3301882366&hh|((t<<16|e>>>16)*3120437893&hh)>>>16,e^=t>>>1,(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}const j6=Object.freeze({map:null,hash:"",transfer:void 0});var GW,TR,kr,H6,bNe;class nne{constructor(){J(this,H6),J(this,GW,!1),J(this,TR,null),J(this,kr,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(e,t){const i=F(this,kr).get(e);return i===void 0?t:Object.assign(t,i)}getRawValue(e){return F(this,kr).get(e)}remove(e){if(F(this,kr).delete(e),F(this,kr).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const t of F(this,kr).values())if(t instanceof fl)return;this.onAnnotationEditor(null)}}setValue(e,t){const i=F(this,kr).get(e);let n=!1;if(i!==void 0)for(const[o,l]of Object.entries(t))i[o]!==l&&(n=!0,i[o]=l);else n=!0,F(this,kr).set(e,t);n&&E(this,H6,bNe).call(this),t instanceof fl&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(t.constructor._type)}has(e){return F(this,kr).has(e)}getAll(){return F(this,kr).size>0?Kie(F(this,kr)):null}setAll(e){for(const[t,i]of Object.entries(e))this.setValue(t,i)}get size(){return F(this,kr).size}resetModified(){F(this,GW)&&(L(this,GW,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new UNe(this)}get serializable(){if(F(this,kr).size===0)return j6;const e=new Map,t=new gNe,i=[],n=Object.create(null);let o=!1;for(const[l,r]of F(this,kr)){const a=r instanceof fl?r.serialize(!1,n):r;a&&(e.set(l,a),t.update(`${l}:${JSON.stringify(a)}`),o||(o=!!a.bitmap))}if(o)for(const l of e.values())l.bitmap&&i.push(l.bitmap);return e.size>0?{map:e,hash:t.hexdigest(),transfer:i}:j6}get editorStats(){let e=null;const t=new Map;for(const i of F(this,kr).values()){if(!(i instanceof fl))continue;const n=i.telemetryFinalData;if(!n)continue;const{type:o}=n;t.has(o)||t.set(o,Object.getPrototypeOf(i).constructor),e||(e=Object.create(null));const l=e[o]||(e[o]=new Map);for(const[r,a]of Object.entries(n)){if(r==="type")continue;let d=l.get(r);d||(d=new Map,l.set(r,d));const c=d.get(a)??0;d.set(a,c+1)}}for(const[i,n]of t)e[i]=n.computeTelemetryFinalData(e[i]);return e}resetModifiedIds(){L(this,TR,null)}get modifiedIds(){if(F(this,TR))return F(this,TR);const e=[];for(const t of F(this,kr).values())!(t instanceof fl)||!t.annotationElementId||!t.serialize()||e.push(t.annotationElementId);return L(this,TR,{ids:new Set(e),hash:e.join(",")})}}GW=new WeakMap,TR=new WeakMap,kr=new WeakMap,H6=new WeakSet,bNe=function(){F(this,GW)||(L(this,GW,!0),typeof this.onSetModified=="function"&&this.onSetModified())};var _D;class UNe extends nne{constructor(e){super(),J(this,_D);const{map:t,hash:i,transfer:n}=e.serializable,o=structuredClone(t,n?{transfer:n}:null);L(this,_D,{map:o,hash:i,transfer:n})}get print(){uo("Should not call PrintAnnotationStorage.print")}get serializable(){return F(this,_D)}get modifiedIds(){return Mn(this,"modifiedIds",{ids:new Set,hash:""})}}_D=new WeakMap;var U2;class jht{constructor({ownerDocument:e=globalThis.document,styleElement:t=null}){J(this,U2,new Set),this._document=e,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(e){this.nativeFontFaces.add(e),this._document.fonts.add(e)}removeNativeFontFace(e){this.nativeFontFaces.delete(e),this._document.fonts.delete(e)}insertRule(e){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const t=this.styleElement.sheet;t.insertRule(e,t.cssRules.length)}clear(){for(const e of this.nativeFontFaces)this._document.fonts.delete(e);this.nativeFontFaces.clear(),F(this,U2).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:e,_inspectFont:t}){if(!(!e||F(this,U2).has(e.loadedName))){if(Ll(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:i,src:n,style:o}=e,l=new FontFace(i,n,o);this.addNativeFontFace(l);try{await l.load(),F(this,U2).add(i),t==null||t(e)}catch{rn(`Cannot load system font: ${e.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(l)}return}uo("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(e){if(e.attached||e.missingFile&&!e.systemFontInfo)return;if(e.attached=!0,e.systemFontInfo){await this.loadSystemFont(e);return}if(this.isFontLoadingAPISupported){const i=e.createNativeFontFace();if(i){this.addNativeFontFace(i);try{await i.loaded}catch(n){throw rn(`Failed to load font '${i.family}': '${n}'.`),e.disableFontFace=!0,n}}return}const t=e.createFontFaceRule();if(t){if(this.insertRule(t),this.isSyncFontLoadingSupported)return;await new Promise(i=>{const n=this._queueLoadingCallback(i);this._prepareFontLoadEvent(e,n)})}}get isFontLoadingAPISupported(){var e;const t=!!((e=this._document)!=null&&e.fonts);return Mn(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){let e=!1;return(ka||typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.userAgent)=="string"&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(e=!0),Mn(this,"isSyncFontLoadingSupported",e)}_queueLoadingCallback(e){function t(){for(Ll(!n.done,"completeRequest() cannot be called twice."),n.done=!0;i.length>0&&i[0].done;){const o=i.shift();setTimeout(o.callback,0)}}const{loadingRequests:i}=this,n={done:!1,complete:t,callback:e};return i.push(n),n}get _loadTestFont(){const e=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return Mn(this,"_loadTestFont",e)}_prepareFontLoadEvent(e,t){function i(A,N){return A.charCodeAt(N)<<24|A.charCodeAt(N+1)<<16|A.charCodeAt(N+2)<<8|A.charCodeAt(N+3)&255}function n(A,N,W,Q){const R=A.substring(0,N),M=A.substring(N+W);return R+Q+M}let o,l;const r=this._document.createElement("canvas");r.width=1,r.height=1;const a=r.getContext("2d");let d=0;function c(A,N){if(++d>30){rn("Load test font never loaded."),N();return}if(a.font="30px "+A,a.fillText(".",0,20),a.getImageData(0,0,1,1).data[3]>0){N();return}setTimeout(c.bind(null,A,N))}const h=`lt${Date.now()}${this.loadTestFontId++}`;let u=this._loadTestFont;u=n(u,976,h.length,h);const m=16,p=1482184792;let g=i(u,m);for(o=0,l=h.length-3;o<l;o+=4)g=g-p+i(h,o)|0;o<h.length&&(g=g-p+i(h+"XXX",o)|0),u=n(u,m,4,wht(g));const b=`url(data:font/opentype;base64,${btoa(u)});`,f=`@font-face {font-family:"${h}";src:${b}}`;this.insertRule(f);const Z=this._document.createElement("div");Z.style.visibility="hidden",Z.style.width=Z.style.height="10px",Z.style.position="absolute",Z.style.top=Z.style.left="0px";for(const A of[e.loadedName,h]){const N=this._document.createElement("span");N.textContent="Hi",N.style.fontFamily=A,Z.append(N)}this._document.body.append(Z),c(h,()=>{Z.remove(),t.complete()})}}U2=new WeakMap;class Hht{constructor(e,{disableFontFace:t=!1,fontExtraProperties:i=!1,inspectFont:n=null}){this.compiledGlyphs=Object.create(null);for(const o in e)this[o]=e[o];this.disableFontFace=t===!0,this.fontExtraProperties=i===!0,this._inspectFont=n}createNativeFontFace(){var e;if(!this.data||this.disableFontFace)return null;let t;if(!this.cssFontInfo)t=new FontFace(this.loadedName,this.data,{});else{const i={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(i.style=`oblique ${this.cssFontInfo.italicAngle}deg`),t=new FontFace(this.cssFontInfo.fontFamily,this.data,i)}return(e=this._inspectFont)==null||e.call(this,this),t}createFontFaceRule(){var e;if(!this.data||this.disableFontFace)return null;const t=`url(data:${this.mimetype};base64,${Iht(this.data)});`;let i;if(!this.cssFontInfo)i=`@font-face {font-family:"${this.loadedName}";src:${t}}`;else{let n=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(n+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),i=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${n}src:${t}}`}return(e=this._inspectFont)==null||e.call(this,this,t),i}getPathGenerator(e,t){if(this.compiledGlyphs[t]!==void 0)return this.compiledGlyphs[t];const i=this.loadedName+"_path_"+t;let n;try{n=e.get(i)}catch(l){rn(`getPathGenerator - ignoring character: "${l}".`)}const o=new Path2D(n||"");return this.fontExtraProperties||e.delete(i),this.compiledGlyphs[t]=o}}const lI={DATA:1,ERROR:2},Ql={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Whe(){}function Jd(s){if(s instanceof hf||s instanceof I6||s instanceof wT||s instanceof she||s instanceof WJ||s instanceof J_)return s;switch(s instanceof Error||typeof s=="object"&&s!==null||uo('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),s.name){case"AbortException":return new hf(s.message);case"InvalidPDFException":return new I6(s.message);case"MissingPDFException":return new wT(s.message);case"PasswordException":return new she(s.message,s.code);case"UnexpectedResponseException":return new WJ(s.message,s.status);case"UnknownErrorException":return new J_(s.message,s.details)}return new J_(s.message,s.toString())}var f2,Vb,fNe,Vhe,Qhe,rI;class F2{constructor(e,t,i){J(this,Vb),J(this,f2,new AbortController),this.sourceName=e,this.targetName=t,this.comObj=i,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),i.addEventListener("message",E(this,Vb,fNe).bind(this),{signal:F(this,f2).signal})}on(e,t){const i=this.actionHandler;if(i[e])throw new Error(`There is already an actionName called "${e}"`);i[e]=t}send(e,t,i){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},i)}sendWithPromise(e,t,i){const n=this.callbackId++,o=Promise.withResolvers();this.callbackCapabilities[n]=o;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},i)}catch(l){o.reject(l)}return o.promise}sendWithStream(e,t,i,n){const o=this.streamId++,l=this.sourceName,r=this.targetName,a=this.comObj;return new ReadableStream({start:d=>{const c=Promise.withResolvers();return this.streamControllers[o]={controller:d,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},a.postMessage({sourceName:l,targetName:r,action:e,streamId:o,data:t,desiredSize:d.desiredSize},n),c.promise},pull:d=>{const c=Promise.withResolvers();return this.streamControllers[o].pullCall=c,a.postMessage({sourceName:l,targetName:r,stream:Ql.PULL,streamId:o,desiredSize:d.desiredSize}),c.promise},cancel:d=>{Ll(d instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[o].cancelCall=c,this.streamControllers[o].isClosed=!0,a.postMessage({sourceName:l,targetName:r,stream:Ql.CANCEL,streamId:o,reason:Jd(d)}),c.promise}},i)}destroy(){var e;(e=F(this,f2))==null||e.abort(),L(this,f2,null)}}f2=new WeakMap,Vb=new WeakSet,fNe=function({data:s}){if(s.targetName!==this.sourceName)return;if(s.stream){E(this,Vb,Qhe).call(this,s);return}if(s.callback){const t=s.callbackId,i=this.callbackCapabilities[t];if(!i)throw new Error(`Cannot resolve callback ${t}`);if(delete this.callbackCapabilities[t],s.callback===lI.DATA)i.resolve(s.data);else if(s.callback===lI.ERROR)i.reject(Jd(s.reason));else throw new Error("Unexpected callback case");return}const e=this.actionHandler[s.action];if(!e)throw new Error(`Unknown action from worker: ${s.action}`);if(s.callbackId){const t=this.sourceName,i=s.sourceName,n=this.comObj;Promise.try(e,s.data).then(function(o){n.postMessage({sourceName:t,targetName:i,callback:lI.DATA,callbackId:s.callbackId,data:o})},function(o){n.postMessage({sourceName:t,targetName:i,callback:lI.ERROR,callbackId:s.callbackId,reason:Jd(o)})});return}if(s.streamId){E(this,Vb,Vhe).call(this,s);return}e(s.data)},Vhe=function(s){const e=s.streamId,t=this.sourceName,i=s.sourceName,n=this.comObj,o=this,l=this.actionHandler[s.action],r={enqueue(a,d=1,c){if(this.isCancelled)return;const h=this.desiredSize;this.desiredSize-=d,h>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),n.postMessage({sourceName:t,targetName:i,stream:Ql.ENQUEUE,streamId:e,chunk:a},c)},close(){this.isCancelled||(this.isCancelled=!0,n.postMessage({sourceName:t,targetName:i,stream:Ql.CLOSE,streamId:e}),delete o.streamSinks[e])},error(a){Ll(a instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,n.postMessage({sourceName:t,targetName:i,stream:Ql.ERROR,streamId:e,reason:Jd(a)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:s.desiredSize,ready:null};r.sinkCapability.resolve(),r.ready=r.sinkCapability.promise,this.streamSinks[e]=r,Promise.try(l,s.data,r).then(function(){n.postMessage({sourceName:t,targetName:i,stream:Ql.START_COMPLETE,streamId:e,success:!0})},function(a){n.postMessage({sourceName:t,targetName:i,stream:Ql.START_COMPLETE,streamId:e,reason:Jd(a)})})},Qhe=function(s){const e=s.streamId,t=this.sourceName,i=s.sourceName,n=this.comObj,o=this.streamControllers[e],l=this.streamSinks[e];switch(s.stream){case Ql.START_COMPLETE:s.success?o.startCall.resolve():o.startCall.reject(Jd(s.reason));break;case Ql.PULL_COMPLETE:s.success?o.pullCall.resolve():o.pullCall.reject(Jd(s.reason));break;case Ql.PULL:if(!l){n.postMessage({sourceName:t,targetName:i,stream:Ql.PULL_COMPLETE,streamId:e,success:!0});break}l.desiredSize<=0&&s.desiredSize>0&&l.sinkCapability.resolve(),l.desiredSize=s.desiredSize,Promise.try(l.onPull||Whe).then(function(){n.postMessage({sourceName:t,targetName:i,stream:Ql.PULL_COMPLETE,streamId:e,success:!0})},function(a){n.postMessage({sourceName:t,targetName:i,stream:Ql.PULL_COMPLETE,streamId:e,reason:Jd(a)})});break;case Ql.ENQUEUE:if(Ll(o,"enqueue should have stream controller"),o.isClosed)break;o.controller.enqueue(s.chunk);break;case Ql.CLOSE:if(Ll(o,"close should have stream controller"),o.isClosed)break;o.isClosed=!0,o.controller.close(),E(this,Vb,rI).call(this,o,e);break;case Ql.ERROR:Ll(o,"error should have stream controller"),o.controller.error(Jd(s.reason)),E(this,Vb,rI).call(this,o,e);break;case Ql.CANCEL_COMPLETE:s.success?o.cancelCall.resolve():o.cancelCall.reject(Jd(s.reason)),E(this,Vb,rI).call(this,o,e);break;case Ql.CANCEL:if(!l)break;const r=Jd(s.reason);Promise.try(l.onCancel||Whe,r).then(function(){n.postMessage({sourceName:t,targetName:i,stream:Ql.CANCEL_COMPLETE,streamId:e,success:!0})},function(a){n.postMessage({sourceName:t,targetName:i,stream:Ql.CANCEL_COMPLETE,streamId:e,reason:Jd(a)})}),l.sinkCapability.reject(r),l.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}},rI=async function(s,e){var t,i,n;await Promise.allSettled([(t=s.startCall)==null?void 0:t.promise,(i=s.pullCall)==null?void 0:i.promise,(n=s.cancelCall)==null?void 0:n.promise]),delete this.streamControllers[e]};var OD;class FNe{constructor({enableHWA:e=!1}){J(this,OD,!1),L(this,OD,e)}create(e,t){if(e<=0||t<=0)throw new Error("Invalid canvas size");const i=this._createCanvas(e,t);return{canvas:i,context:i.getContext("2d",{willReadFrequently:!F(this,OD)})}}reset(e,t,i){if(!e.canvas)throw new Error("Canvas is not specified");if(t<=0||i<=0)throw new Error("Invalid canvas size");e.canvas.width=t,e.canvas.height=i}destroy(e){if(!e.canvas)throw new Error("Canvas is not specified");e.canvas.width=0,e.canvas.height=0,e.canvas=null,e.context=null}_createCanvas(e,t){uo("Abstract method `_createCanvas` called.")}}OD=new WeakMap;class Pht extends FNe{constructor({ownerDocument:e=globalThis.document,enableHWA:t=!1}){super({enableHWA:t}),this._document=e}_createCanvas(e,t){const i=this._document.createElement("canvas");return i.width=e,i.height=t,i}}class ZNe{constructor({baseUrl:e=null,isCompressed:t=!0}){this.baseUrl=e,this.isCompressed=t}async fetch({name:e}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!e)throw new Error("CMap name must be specified.");const t=this.baseUrl+e+(this.isCompressed?".bcmap":"");return this._fetch(t).then(i=>({cMapData:i,isCompressed:this.isCompressed})).catch(i=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${t}`)})}async _fetch(e){uo("Abstract method `_fetch` called.")}}class ANe extends ZNe{async _fetch(e){const t=await kz(e,this.isCompressed?"arraybuffer":"text");return t instanceof ArrayBuffer?new Uint8Array(t):Lz(t)}}cs(4520);class NNe{addFilter(e){return"none"}addHCMFilter(e,t){return"none"}addAlphaFilter(e){return"none"}addLuminosityFilter(e){return"none"}addHighlightHCMFilter(e,t,i,n,o){return"none"}destroy(e=!1){}}var BR,EW,Hb,mb,id,MZ,LR,Wi,Fa,Z2,TS,jD,kR,RNe,P6,IR,cy,A2,K6,N2;class Kht extends NNe{constructor({docId:e,ownerDocument:t=globalThis.document}){super(),J(this,Wi),J(this,BR),J(this,EW),J(this,Hb),J(this,mb),J(this,id),J(this,MZ),J(this,LR,0),L(this,mb,e),L(this,id,t)}addFilter(e){if(!e)return"none";let t=F(this,Wi,Fa).get(e);if(t)return t;const[i,n,o]=E(this,Wi,jD).call(this,e),l=e.length===1?i:`${i}${n}${o}`;if(t=F(this,Wi,Fa).get(l),t)return F(this,Wi,Fa).set(e,t),t;const r=`g_${F(this,mb)}_transfer_map_${Ad(this,LR)._++}`,a=E(this,Wi,kR).call(this,r);F(this,Wi,Fa).set(e,a),F(this,Wi,Fa).set(l,a);const d=E(this,Wi,IR).call(this,r);return E(this,Wi,A2).call(this,i,n,o,d),a}addHCMFilter(e,t){var i;const n=`${e}-${t}`,o="base";let l=F(this,Wi,Z2).get(o);if((l==null?void 0:l.key)===n||(l?((i=l.filter)==null||i.remove(),l.key=n,l.url="none",l.filter=null):(l={key:n,url:"none",filter:null},F(this,Wi,Z2).set(o,l)),!e||!t))return l.url;const r=E(this,Wi,N2).call(this,e);e=Ui.makeHexColor(...r);const a=E(this,Wi,N2).call(this,t);if(t=Ui.makeHexColor(...a),F(this,Wi,TS).style.color="",e==="#000000"&&t==="#ffffff"||e===t)return l.url;const d=new Array(256);for(let p=0;p<=255;p++){const g=p/255;d[p]=g<=.03928?g/12.92:((g+.055)/1.055)**2.4}const c=d.join(","),h=`g_${F(this,mb)}_hcm_filter`,u=l.filter=E(this,Wi,IR).call(this,h);E(this,Wi,A2).call(this,c,c,c,u),E(this,Wi,P6).call(this,u);const m=(p,g)=>{const b=r[p]/255,f=a[p]/255,Z=new Array(g+1);for(let A=0;A<=g;A++)Z[A]=b+A/g*(f-b);return Z.join(",")};return E(this,Wi,A2).call(this,m(0,5),m(1,5),m(2,5),u),l.url=E(this,Wi,kR).call(this,h),l.url}addAlphaFilter(e){let t=F(this,Wi,Fa).get(e);if(t)return t;const[i]=E(this,Wi,jD).call(this,[e]),n=`alpha_${i}`;if(t=F(this,Wi,Fa).get(n),t)return F(this,Wi,Fa).set(e,t),t;const o=`g_${F(this,mb)}_alpha_map_${Ad(this,LR)._++}`,l=E(this,Wi,kR).call(this,o);F(this,Wi,Fa).set(e,l),F(this,Wi,Fa).set(n,l);const r=E(this,Wi,IR).call(this,o);return E(this,Wi,K6).call(this,i,r),l}addLuminosityFilter(e){let t=F(this,Wi,Fa).get(e||"luminosity");if(t)return t;let i,n;if(e?([i]=E(this,Wi,jD).call(this,[e]),n=`luminosity_${i}`):n="luminosity",t=F(this,Wi,Fa).get(n),t)return F(this,Wi,Fa).set(e,t),t;const o=`g_${F(this,mb)}_luminosity_map_${Ad(this,LR)._++}`,l=E(this,Wi,kR).call(this,o);F(this,Wi,Fa).set(e,l),F(this,Wi,Fa).set(n,l);const r=E(this,Wi,IR).call(this,o);return E(this,Wi,RNe).call(this,r),e&&E(this,Wi,K6).call(this,i,r),l}addHighlightHCMFilter(e,t,i,n,o){var l;const r=`${t}-${i}-${n}-${o}`;let a=F(this,Wi,Z2).get(e);if((a==null?void 0:a.key)===r||(a?((l=a.filter)==null||l.remove(),a.key=r,a.url="none",a.filter=null):(a={key:r,url:"none",filter:null},F(this,Wi,Z2).set(e,a)),!t||!i))return a.url;const[d,c]=[t,i].map(E(this,Wi,N2).bind(this));let h=Math.round(.2126*d[0]+.7152*d[1]+.0722*d[2]),u=Math.round(.2126*c[0]+.7152*c[1]+.0722*c[2]),[m,p]=[n,o].map(E(this,Wi,N2).bind(this));u<h&&([h,u,m,p]=[u,h,p,m]),F(this,Wi,TS).style.color="";const g=(Z,A,N)=>{const W=new Array(256),Q=(u-h)/N,R=Z/255,M=(A-Z)/(255*N);let w=0;for(let Y=0;Y<=N;Y++){const G=Math.round(h+Y*Q),P=R+Y*M;for(let j=w;j<=G;j++)W[j]=P;w=G+1}for(let Y=w;Y<256;Y++)W[Y]=W[w-1];return W.join(",")},b=`g_${F(this,mb)}_hcm_${e}_filter`,f=a.filter=E(this,Wi,IR).call(this,b);return E(this,Wi,P6).call(this,f),E(this,Wi,A2).call(this,g(m[0],p[0],5),g(m[1],p[1],5),g(m[2],p[2],5),f),a.url=E(this,Wi,kR).call(this,b),a.url}destroy(e=!1){var t,i,n,o;e&&(t=F(this,MZ))!=null&&t.size||((i=F(this,Hb))==null||i.parentNode.parentNode.remove(),L(this,Hb,null),(n=F(this,EW))==null||n.clear(),L(this,EW,null),(o=F(this,MZ))==null||o.clear(),L(this,MZ,null),L(this,LR,0))}}BR=new WeakMap,EW=new WeakMap,Hb=new WeakMap,mb=new WeakMap,id=new WeakMap,MZ=new WeakMap,LR=new WeakMap,Wi=new WeakSet,Fa=function(){return F(this,EW)||L(this,EW,new Map)},Z2=function(){return F(this,MZ)||L(this,MZ,new Map)},TS=function(){if(!F(this,Hb)){const s=F(this,id).createElement("div"),{style:e}=s;e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const t=F(this,id).createElementNS(og,"svg");t.setAttribute("width",0),t.setAttribute("height",0),L(this,Hb,F(this,id).createElementNS(og,"defs")),s.append(t),t.append(F(this,Hb)),F(this,id).body.append(s)}return F(this,Hb)},jD=function(s){if(s.length===1){const r=s[0],a=new Array(256);for(let c=0;c<256;c++)a[c]=r[c]/255;const d=a.join(",");return[d,d,d]}const[e,t,i]=s,n=new Array(256),o=new Array(256),l=new Array(256);for(let r=0;r<256;r++)n[r]=e[r]/255,o[r]=t[r]/255,l[r]=i[r]/255;return[n.join(","),o.join(","),l.join(",")]},kR=function(s){if(F(this,BR)===void 0){L(this,BR,"");const e=F(this,id).URL;e!==F(this,id).baseURI&&(Iz(e)?rn('#createUrl: ignore "data:"-URL for performance reasons.'):L(this,BR,e.split("#",1)[0]))}return`url(${F(this,BR)}#${s})`},RNe=function(s){const e=F(this,id).createElementNS(og,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),s.append(e)},P6=function(s){const e=F(this,id).createElementNS(og,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),s.append(e)},IR=function(s){const e=F(this,id).createElementNS(og,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",s),F(this,Wi,TS).append(e),e},cy=function(s,e,t){const i=F(this,id).createElementNS(og,e);i.setAttribute("type","discrete"),i.setAttribute("tableValues",t),s.append(i)},A2=function(s,e,t,i){const n=F(this,id).createElementNS(og,"feComponentTransfer");i.append(n),E(this,Wi,cy).call(this,n,"feFuncR",s),E(this,Wi,cy).call(this,n,"feFuncG",e),E(this,Wi,cy).call(this,n,"feFuncB",t)},K6=function(s,e){const t=F(this,id).createElementNS(og,"feComponentTransfer");e.append(t),E(this,Wi,cy).call(this,t,"feFuncA",s)},N2=function(s){return F(this,Wi,TS).style.color=s,tne(getComputedStyle(F(this,Wi,TS)).getPropertyValue("color"))};class SNe{constructor({baseUrl:e=null}){this.baseUrl=e}async fetch({filename:e}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!e)throw new Error("Font filename must be specified.");const t=`${this.baseUrl}${e}`;return this._fetch(t).catch(i=>{throw new Error(`Unable to load font data at: ${t}`)})}async _fetch(e){uo("Abstract method `_fetch` called.")}}class WNe extends SNe{async _fetch(e){const t=await kz(e,"arraybuffer");return new Uint8Array(t)}}if(ka){let s;try{const e=process.getBuiltinModule("module").createRequire(import.meta.url);try{s=e("@napi-rs/canvas")}catch(t){rn(`Cannot load "@napi-rs/canvas" package: "${t}".`)}}catch(e){rn(`Cannot access the \`require\` function: "${e}".`)}globalThis.DOMMatrix||(s!=null&&s.DOMMatrix?globalThis.DOMMatrix=s.DOMMatrix:rn("Cannot polyfill `DOMMatrix`, rendering may be broken.")),globalThis.ImageData||(s!=null&&s.ImageData?globalThis.ImageData=s.ImageData:rn("Cannot polyfill `ImageData`, rendering may be broken.")),globalThis.Path2D||(s!=null&&s.Path2D?globalThis.Path2D=s.Path2D:rn("Cannot polyfill `Path2D`, rendering may be broken."))}async function VNe(s){const e=await process.getBuiltinModule("fs").promises.readFile(s);return new Uint8Array(e)}class qht extends NNe{}class $ht extends FNe{_createCanvas(e,t){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(e,t)}}class eut extends ZNe{async _fetch(e){return VNe(e)}}class tut extends SNe{async _fetch(e){return VNe(e)}}const wa={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function q6(s,e){if(!e)return;const t=e[2]-e[0],i=e[3]-e[1],n=new Path2D;n.rect(e[0],e[1],t,i),s.clip(n)}class sne{getPattern(){uo("Abstract method `getPattern` called.")}}class iut extends sne{constructor(e){super(),this._type=e[1],this._bbox=e[2],this._colorStops=e[3],this._p0=e[4],this._p1=e[5],this._r0=e[6],this._r1=e[7],this.matrix=null}_createGradient(e){let t;this._type==="axial"?t=e.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):this._type==="radial"&&(t=e.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const i of this._colorStops)t.addColorStop(i[0],i[1]);return t}getPattern(e,t,i,n){let o;if(n===wa.STROKE||n===wa.FILL){const l=t.current.getClippedPathBoundingBox(n,To(e))||[0,0,0,0],r=Math.ceil(l[2]-l[0])||1,a=Math.ceil(l[3]-l[1])||1,d=t.cachedCanvases.getCanvas("pattern",r,a),c=d.context;c.clearRect(0,0,c.canvas.width,c.canvas.height),c.beginPath(),c.rect(0,0,c.canvas.width,c.canvas.height),c.translate(-l[0],-l[1]),i=Ui.transform(i,[1,0,0,1,l[0],l[1]]),c.transform(...t.baseTransform),this.matrix&&c.transform(...this.matrix),q6(c,this._bbox),c.fillStyle=this._createGradient(c),c.fill(),o=e.createPattern(d.canvas,"no-repeat");const h=new DOMMatrix(i);o.setTransform(h)}else q6(e,this._bbox),o=this._createGradient(e);return o}}function sO(s,e,t,i,n,o,l,r){const a=e.coords,d=e.colors,c=s.data,h=s.width*4;let u;a[t+1]>a[i+1]&&(u=t,t=i,i=u,u=o,o=l,l=u),a[i+1]>a[n+1]&&(u=i,i=n,n=u,u=l,l=r,r=u),a[t+1]>a[i+1]&&(u=t,t=i,i=u,u=o,o=l,l=u);const m=(a[t]+e.offsetX)*e.scaleX,p=(a[t+1]+e.offsetY)*e.scaleY,g=(a[i]+e.offsetX)*e.scaleX,b=(a[i+1]+e.offsetY)*e.scaleY,f=(a[n]+e.offsetX)*e.scaleX,Z=(a[n+1]+e.offsetY)*e.scaleY;if(p>=Z)return;const A=d[o],N=d[o+1],W=d[o+2],Q=d[l],R=d[l+1],M=d[l+2],w=d[r],Y=d[r+1],G=d[r+2],P=Math.round(p),j=Math.round(Z);let X,ie,se,pe,Ue,Qe,He,Te;for(let xe=P;xe<=j;xe++){if(xe<b){const Be=xe<p?0:(p-xe)/(p-b);X=m-(m-g)*Be,ie=A-(A-Q)*Be,se=N-(N-R)*Be,pe=W-(W-M)*Be}else{let Be;xe>Z?Be=1:b===Z?Be=0:Be=(b-xe)/(b-Z),X=g-(g-f)*Be,ie=Q-(Q-w)*Be,se=R-(R-Y)*Be,pe=M-(M-G)*Be}let Je;xe<p?Je=0:xe>Z?Je=1:Je=(p-xe)/(p-Z),Ue=m-(m-f)*Je,Qe=A-(A-w)*Je,He=N-(N-Y)*Je,Te=W-(W-G)*Je;const Mt=Math.round(Math.min(X,Ue)),St=Math.round(Math.max(X,Ue));let Pe=h*xe+Mt*4;for(let Be=Mt;Be<=St;Be++)Je=(X-Be)/(X-Ue),Je<0?Je=0:Je>1&&(Je=1),c[Pe++]=ie-(ie-Qe)*Je|0,c[Pe++]=se-(se-He)*Je|0,c[Pe++]=pe-(pe-Te)*Je|0,c[Pe++]=255}}function nut(s,e,t){const i=e.coords,n=e.colors;let o,l;switch(e.type){case"lattice":const r=e.verticesPerRow,a=Math.floor(i.length/r)-1,d=r-1;for(o=0;o<a;o++){let c=o*r;for(let h=0;h<d;h++,c++)sO(s,t,i[c],i[c+1],i[c+r],n[c],n[c+1],n[c+r]),sO(s,t,i[c+r+1],i[c+1],i[c+r],n[c+r+1],n[c+1],n[c+r])}break;case"triangles":for(o=0,l=i.length;o<l;o+=3)sO(s,t,i[o],i[o+1],i[o+2],n[o],n[o+1],n[o+2]);break;default:throw new Error("illegal figure")}}class sut extends sne{constructor(e){super(),this._coords=e[2],this._colors=e[3],this._figures=e[4],this._bounds=e[5],this._bbox=e[7],this._background=e[8],this.matrix=null}_createMeshCanvas(e,t,i){const n=Math.floor(this._bounds[0]),o=Math.floor(this._bounds[1]),l=Math.ceil(this._bounds[2])-n,r=Math.ceil(this._bounds[3])-o,a=Math.min(Math.ceil(Math.abs(l*e[0]*1.1)),3e3),d=Math.min(Math.ceil(Math.abs(r*e[1]*1.1)),3e3),c=l/a,h=r/d,u={coords:this._coords,colors:this._colors,offsetX:-n,offsetY:-o,scaleX:1/c,scaleY:1/h},m=a+2*2,p=d+2*2,g=i.getCanvas("mesh",m,p),b=g.context,f=b.createImageData(a,d);if(t){const Z=f.data;for(let A=0,N=Z.length;A<N;A+=4)Z[A]=t[0],Z[A+1]=t[1],Z[A+2]=t[2],Z[A+3]=255}for(const Z of this._figures)nut(f,Z,u);return b.putImageData(f,2,2),{canvas:g.canvas,offsetX:n-2*c,offsetY:o-2*h,scaleX:c,scaleY:h}}getPattern(e,t,i,n){q6(e,this._bbox);let o;if(n===wa.SHADING)o=Ui.singularValueDecompose2dScale(To(e));else if(o=Ui.singularValueDecompose2dScale(t.baseTransform),this.matrix){const r=Ui.singularValueDecompose2dScale(this.matrix);o=[o[0]*r[0],o[1]*r[1]]}const l=this._createMeshCanvas(o,n===wa.SHADING?null:this._background,t.cachedCanvases);return n!==wa.SHADING&&(e.setTransform(...t.baseTransform),this.matrix&&e.transform(...this.matrix)),e.translate(l.offsetX,l.offsetY),e.scale(l.scaleX,l.scaleY),e.createPattern(l.canvas,"no-repeat")}}class out extends sne{getPattern(){return"hotpink"}}function lut(s){switch(s[0]){case"RadialAxial":return new iut(s);case"Mesh":return new sut(s);case"Dummy":return new out}throw new Error(`Unknown IR type: ${s[0]}`)}const yhe={COLORED:1,UNCOLORED:2},QNe=class yNe{constructor(e,t,i,n,o){this.operatorList=e[2],this.matrix=e[3],this.bbox=e[4],this.xstep=e[5],this.ystep=e[6],this.paintType=e[7],this.tilingType=e[8],this.color=t,this.ctx=i,this.canvasGraphicsFactory=n,this.baseTransform=o}createPatternCanvas(e){const{bbox:t,operatorList:i,paintType:n,tilingType:o,color:l,canvasGraphicsFactory:r}=this;let{xstep:a,ystep:d}=this;a=Math.abs(a),d=Math.abs(d),Bz("TilingType: "+o);const c=t[0],h=t[1],u=t[2],m=t[3],p=u-c,g=m-h,b=Ui.singularValueDecompose2dScale(this.matrix),f=Ui.singularValueDecompose2dScale(this.baseTransform),Z=b[0]*f[0],A=b[1]*f[1];let N=p,W=g,Q=!1,R=!1;const M=Math.ceil(a*Z),w=Math.ceil(d*A),Y=Math.ceil(p*Z),G=Math.ceil(g*A);M>=Y?N=a:Q=!0,w>=G?W=d:R=!0;const P=this.getSizeAndScale(N,this.ctx.canvas.width,Z),j=this.getSizeAndScale(W,this.ctx.canvas.height,A),X=e.cachedCanvases.getCanvas("pattern",P.size,j.size),ie=X.context,se=r.createCanvasGraphics(ie);if(se.groupLevel=e.groupLevel,this.setFillAndStrokeStyleToContext(se,n,l),ie.translate(-P.scale*c,-j.scale*h),se.transform(P.scale,0,0,j.scale,0,0),ie.save(),this.clipBbox(se,c,h,u,m),se.baseTransform=To(se.ctx),se.executeOperatorList(i),se.endDrawing(),ie.restore(),Q||R){const pe=X.canvas;Q&&(N=a),R&&(W=d);const Ue=this.getSizeAndScale(N,this.ctx.canvas.width,Z),Qe=this.getSizeAndScale(W,this.ctx.canvas.height,A),He=Ue.size,Te=Qe.size,xe=e.cachedCanvases.getCanvas("pattern-workaround",He,Te),Je=xe.context,Mt=Q?Math.floor(p/a):0,St=R?Math.floor(g/d):0;for(let Pe=0;Pe<=Mt;Pe++)for(let Be=0;Be<=St;Be++)Je.drawImage(pe,He*Pe,Te*Be,He,Te,0,0,He,Te);return{canvas:xe.canvas,scaleX:Ue.scale,scaleY:Qe.scale,offsetX:c,offsetY:h}}return{canvas:X.canvas,scaleX:P.scale,scaleY:j.scale,offsetX:c,offsetY:h}}getSizeAndScale(e,t,i){const n=Math.max(yNe.MAX_PATTERN_SIZE,t);let o=Math.ceil(e*i);return o>=n?o=n:i=o/e,{scale:i,size:o}}clipBbox(e,t,i,n,o){const l=n-t,r=o-i;e.ctx.rect(t,i,l,r),e.current.updateRectMinMax(To(e.ctx),[t,i,n,o]),e.clip(),e.endPath()}setFillAndStrokeStyleToContext(e,t,i){const n=e.ctx,o=e.current;switch(t){case yhe.COLORED:const l=this.ctx;n.fillStyle=l.fillStyle,n.strokeStyle=l.strokeStyle,o.fillColor=l.fillStyle,o.strokeColor=l.strokeStyle;break;case yhe.UNCOLORED:const r=Ui.makeHexColor(i[0],i[1],i[2]);n.fillStyle=r,n.strokeStyle=r,o.fillColor=r,o.strokeColor=r;break;default:throw new Cht(`Unsupported paint type: ${t}`)}}getPattern(e,t,i,n){let o=i;n!==wa.SHADING&&(o=Ui.transform(o,t.baseTransform),this.matrix&&(o=Ui.transform(o,this.matrix)));const l=this.createPatternCanvas(t);let r=new DOMMatrix(o);r=r.translate(l.offsetX,l.offsetY),r=r.scale(1/l.scaleX,1/l.scaleY);const a=e.createPattern(l.canvas,"repeat");return a.setTransform(r),a}};Ii(QNe,"MAX_PATTERN_SIZE",3e3);let rut=QNe;function aut({src:s,srcPos:e=0,dest:t,width:i,height:n,nonBlackColor:o=4294967295,inverseDecode:l=!1}){const r=Nd.isLittleEndian?4278190080:255,[a,d]=l?[o,r]:[r,o],c=i>>3,h=i&7,u=s.length;t=new Uint32Array(t.buffer);let m=0;for(let p=0;p<n;p++){for(const b=e+c;e<b;e++){const f=e<u?s[e]:255;t[m++]=f&128?d:a,t[m++]=f&64?d:a,t[m++]=f&32?d:a,t[m++]=f&16?d:a,t[m++]=f&8?d:a,t[m++]=f&4?d:a,t[m++]=f&2?d:a,t[m++]=f&1?d:a}if(h===0)continue;const g=e<u?s[e++]:255;for(let b=0;b<h;b++)t[m++]=g&1<<7-b?d:a}return{srcPos:e,destPos:m}}const Che=16,whe=100,dut=15,Mhe=10,The=1e3,Yd=16;function cut(s,e){if(s._removeMirroring)throw new Error("Context is already forwarding operations.");s.__originalSave=s.save,s.__originalRestore=s.restore,s.__originalRotate=s.rotate,s.__originalScale=s.scale,s.__originalTranslate=s.translate,s.__originalTransform=s.transform,s.__originalSetTransform=s.setTransform,s.__originalResetTransform=s.resetTransform,s.__originalClip=s.clip,s.__originalMoveTo=s.moveTo,s.__originalLineTo=s.lineTo,s.__originalBezierCurveTo=s.bezierCurveTo,s.__originalRect=s.rect,s.__originalClosePath=s.closePath,s.__originalBeginPath=s.beginPath,s._removeMirroring=()=>{s.save=s.__originalSave,s.restore=s.__originalRestore,s.rotate=s.__originalRotate,s.scale=s.__originalScale,s.translate=s.__originalTranslate,s.transform=s.__originalTransform,s.setTransform=s.__originalSetTransform,s.resetTransform=s.__originalResetTransform,s.clip=s.__originalClip,s.moveTo=s.__originalMoveTo,s.lineTo=s.__originalLineTo,s.bezierCurveTo=s.__originalBezierCurveTo,s.rect=s.__originalRect,s.closePath=s.__originalClosePath,s.beginPath=s.__originalBeginPath,delete s._removeMirroring},s.save=function(){e.save(),this.__originalSave()},s.restore=function(){e.restore(),this.__originalRestore()},s.translate=function(t,i){e.translate(t,i),this.__originalTranslate(t,i)},s.scale=function(t,i){e.scale(t,i),this.__originalScale(t,i)},s.transform=function(t,i,n,o,l,r){e.transform(t,i,n,o,l,r),this.__originalTransform(t,i,n,o,l,r)},s.setTransform=function(t,i,n,o,l,r){e.setTransform(t,i,n,o,l,r),this.__originalSetTransform(t,i,n,o,l,r)},s.resetTransform=function(){e.resetTransform(),this.__originalResetTransform()},s.rotate=function(t){e.rotate(t),this.__originalRotate(t)},s.clip=function(t){e.clip(t),this.__originalClip(t)},s.moveTo=function(t,i){e.moveTo(t,i),this.__originalMoveTo(t,i)},s.lineTo=function(t,i){e.lineTo(t,i),this.__originalLineTo(t,i)},s.bezierCurveTo=function(t,i,n,o,l,r){e.bezierCurveTo(t,i,n,o,l,r),this.__originalBezierCurveTo(t,i,n,o,l,r)},s.rect=function(t,i,n,o){e.rect(t,i,n,o),this.__originalRect(t,i,n,o)},s.closePath=function(){e.closePath(),this.__originalClosePath()},s.beginPath=function(){e.beginPath(),this.__originalBeginPath()}}class hut{constructor(e){this.canvasFactory=e,this.cache=Object.create(null)}getCanvas(e,t,i){let n;return this.cache[e]!==void 0?(n=this.cache[e],this.canvasFactory.reset(n,t,i)):(n=this.canvasFactory.create(t,i),this.cache[e]=n),n}delete(e){delete this.cache[e]}clear(){for(const e in this.cache){const t=this.cache[e];this.canvasFactory.destroy(t),delete this.cache[e]}}}function aI(s,e,t,i,n,o,l,r,a,d){const[c,h,u,m,p,g]=To(s);if(h===0&&u===0){const Z=l*c+p,A=Math.round(Z),N=r*m+g,W=Math.round(N),Q=(l+a)*c+p,R=Math.abs(Math.round(Q)-A)||1,M=(r+d)*m+g,w=Math.abs(Math.round(M)-W)||1;return s.setTransform(Math.sign(c),0,0,Math.sign(m),A,W),s.drawImage(e,t,i,n,o,0,0,R,w),s.setTransform(c,h,u,m,p,g),[R,w]}if(c===0&&m===0){const Z=r*u+p,A=Math.round(Z),N=l*h+g,W=Math.round(N),Q=(r+d)*u+p,R=Math.abs(Math.round(Q)-A)||1,M=(l+a)*h+g,w=Math.abs(Math.round(M)-W)||1;return s.setTransform(0,Math.sign(h),Math.sign(u),0,A,W),s.drawImage(e,t,i,n,o,0,0,w,R),s.setTransform(c,h,u,m,p,g),[w,R]}s.drawImage(e,t,i,n,o,l,r,a,d);const b=Math.hypot(c,h),f=Math.hypot(u,m);return[b*a,f*d]}function uut(s){const{width:e,height:t}=s;if(e>The||t>The)return null;const i=1e3,n=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),o=e+1;let l=new Uint8Array(o*(t+1)),r,a,d;const c=e+7&-8;let h=new Uint8Array(c*t),u=0;for(const b of s.data){let f=128;for(;f>0;)h[u++]=b&f?0:255,f>>=1}let m=0;for(u=0,h[u]!==0&&(l[0]=1,++m),a=1;a<e;a++)h[u]!==h[u+1]&&(l[a]=h[u]?2:1,++m),u++;for(h[u]!==0&&(l[a]=2,++m),r=1;r<t;r++){u=r*c,d=r*o,h[u-c]!==h[u]&&(l[d]=h[u]?1:8,++m);let b=(h[u]?4:0)+(h[u-c]?8:0);for(a=1;a<e;a++)b=(b>>2)+(h[u+1]?4:0)+(h[u-c+1]?8:0),n[b]&&(l[d+a]=n[b],++m),u++;if(h[u-c]!==h[u]&&(l[d+a]=h[u]?2:4,++m),m>i)return null}for(u=c*(t-1),d=r*o,h[u]!==0&&(l[d]=8,++m),a=1;a<e;a++)h[u]!==h[u+1]&&(l[d+a]=h[u]?4:8,++m),u++;if(h[u]!==0&&(l[d+a]=4,++m),m>i)return null;const p=new Int32Array([0,o,-1,0,-o,0,0,0,1]),g=new Path2D;for(r=0;m&&r<=t;r++){let b=r*o;const f=b+e;for(;b<f&&!l[b];)b++;if(b===f)continue;g.moveTo(b%o,r);const Z=b;let A=l[b];do{const N=p[A];do b+=N;while(!l[b]);const W=l[b];W!==5&&W!==10?(A=W,l[b]=0):(A=W&51*A>>4,l[b]&=A>>2|A<<2),g.lineTo(b%o,b/o|0),l[b]||--m}while(Z!==b);--r}return h=null,l=null,function(b){b.save(),b.scale(1/e,-1/t),b.translate(0,-t),b.fill(g),b.beginPath(),b.restore()}}class Bhe{constructor(e,t){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=HAe,this.textMatrixScale=1,this.fontMatrix=k6,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=fa.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.patternStroke=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,e,t])}clone(){const e=Object.create(this);return e.clipBox=this.clipBox.slice(),e}setCurrentPoint(e,t){this.x=e,this.y=t}updatePathMinMax(e,t,i){[t,i]=Ui.applyTransform([t,i],e),this.minX=Math.min(this.minX,t),this.minY=Math.min(this.minY,i),this.maxX=Math.max(this.maxX,t),this.maxY=Math.max(this.maxY,i)}updateRectMinMax(e,t){const i=Ui.applyTransform(t,e),n=Ui.applyTransform(t.slice(2),e),o=Ui.applyTransform([t[0],t[3]],e),l=Ui.applyTransform([t[2],t[1]],e);this.minX=Math.min(this.minX,i[0],n[0],o[0],l[0]),this.minY=Math.min(this.minY,i[1],n[1],o[1],l[1]),this.maxX=Math.max(this.maxX,i[0],n[0],o[0],l[0]),this.maxY=Math.max(this.maxY,i[1],n[1],o[1],l[1])}updateScalingPathMinMax(e,t){Ui.scaleMinMax(e,t),this.minX=Math.min(this.minX,t[0]),this.minY=Math.min(this.minY,t[1]),this.maxX=Math.max(this.maxX,t[2]),this.maxY=Math.max(this.maxY,t[3])}updateCurvePathMinMax(e,t,i,n,o,l,r,a,d,c){const h=Ui.bezierBoundingBox(t,i,n,o,l,r,a,d,c);c||this.updateRectMinMax(e,h)}getPathBoundingBox(e=wa.FILL,t=null){const i=[this.minX,this.minY,this.maxX,this.maxY];if(e===wa.STROKE){t||uo("Stroke bounding box must include transform.");const n=Ui.singularValueDecompose2dScale(t),o=n[0]*this.lineWidth/2,l=n[1]*this.lineWidth/2;i[0]-=o,i[1]-=l,i[2]+=o,i[3]+=l}return i}updateClipFromPath(){const e=Ui.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(e||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(e){this.clipBox=e,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(e=wa.FILL,t=null){return Ui.intersect(this.clipBox,this.getPathBoundingBox(e,t))}}function Lhe(s,e){if(e instanceof ImageData){s.putImageData(e,0,0);return}const t=e.height,i=e.width,n=t%Yd,o=(t-n)/Yd,l=n===0?o:o+1,r=s.createImageData(i,Yd);let a=0,d;const c=e.data,h=r.data;let u,m,p,g;if(e.kind===kD.GRAYSCALE_1BPP){const b=c.byteLength,f=new Uint32Array(h.buffer,0,h.byteLength>>2),Z=f.length,A=i+7>>3,N=4294967295,W=Nd.isLittleEndian?4278190080:255;for(u=0;u<l;u++){for(p=u<o?Yd:n,d=0,m=0;m<p;m++){const Q=b-a;let R=0;const M=Q>A?i:Q*8-7,w=M&-8;let Y=0,G=0;for(;R<w;R+=8)G=c[a++],f[d++]=G&128?N:W,f[d++]=G&64?N:W,f[d++]=G&32?N:W,f[d++]=G&16?N:W,f[d++]=G&8?N:W,f[d++]=G&4?N:W,f[d++]=G&2?N:W,f[d++]=G&1?N:W;for(;R<M;R++)Y===0&&(G=c[a++],Y=128),f[d++]=G&Y?N:W,Y>>=1}for(;d<Z;)f[d++]=0;s.putImageData(r,0,u*Yd)}}else if(e.kind===kD.RGBA_32BPP){for(m=0,g=i*Yd*4,u=0;u<o;u++)h.set(c.subarray(a,a+g)),a+=g,s.putImageData(r,0,m),m+=Yd;u<l&&(g=i*n*4,h.set(c.subarray(a,a+g)),s.putImageData(r,0,m))}else if(e.kind===kD.RGB_24BPP)for(p=Yd,g=i*p,u=0;u<l;u++){for(u>=o&&(p=n,g=i*p),d=0,m=g;m--;)h[d++]=c[a++],h[d++]=c[a++],h[d++]=c[a++],h[d++]=255;s.putImageData(r,0,u*Yd)}else throw new Error(`bad image kind: ${e.kind}`)}function khe(s,e){if(e.bitmap){s.drawImage(e.bitmap,0,0);return}const t=e.height,i=e.width,n=t%Yd,o=(t-n)/Yd,l=n===0?o:o+1,r=s.createImageData(i,Yd);let a=0;const d=e.data,c=r.data;for(let h=0;h<l;h++){const u=h<o?Yd:n;({srcPos:a}=aut({src:d,srcPos:a,dest:c,width:i,height:u,nonBlackColor:0})),s.putImageData(r,0,h*Yd)}}function hy(s,e){const t=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"];for(const i of t)s[i]!==void 0&&(e[i]=s[i]);s.setLineDash!==void 0&&(e.setLineDash(s.getLineDash()),e.lineDashOffset=s.lineDashOffset)}function dI(s){if(s.strokeStyle=s.fillStyle="#000000",s.fillRule="nonzero",s.globalAlpha=1,s.lineWidth=1,s.lineCap="butt",s.lineJoin="miter",s.miterLimit=10,s.globalCompositeOperation="source-over",s.font="10px sans-serif",s.setLineDash!==void 0&&(s.setLineDash([]),s.lineDashOffset=0),!ka){const{filter:e}=s;e!=="none"&&e!==""&&(s.filter="none")}}function Ihe(s,e){if(e)return!0;const t=Ui.singularValueDecompose2dScale(s);t[0]=Math.fround(t[0]),t[1]=Math.fround(t[1]);const i=Math.fround((globalThis.devicePixelRatio||1)*GV.PDF_TO_CSS_UNITS);return t[0]<=i&&t[1]<=i}const mut=["butt","round","square"],put=["miter","round","bevel"],gut={},Dhe={};var pb,$6,eq,tq;const but=class CNe{constructor(e,t,i,n,o,{optionalContentConfig:l,markedContentStack:r=null},a,d){J(this,pb),this.ctx=e,this.current=new Bhe(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=t,this.objs=i,this.canvasFactory=n,this.filterFactory=o,this.groupStack=[],this.processingType3=null,this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=r||[],this.optionalContentConfig=l,this.cachedCanvases=new hut(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=a,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=d,this._cachedScaleForStroking=[-1,0],this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map}getObject(e,t=null){return typeof e=="string"?e.startsWith("g_")?this.commonObjs.get(e):this.objs.get(e):t}beginDrawing({transform:e,viewport:t,transparency:i=!1,background:n=null}){const o=this.ctx.canvas.width,l=this.ctx.canvas.height,r=this.ctx.fillStyle;if(this.ctx.fillStyle=n||"#ffffff",this.ctx.fillRect(0,0,o,l),this.ctx.fillStyle=r,i){const a=this.cachedCanvases.getCanvas("transparent",o,l);this.compositeCtx=this.ctx,this.transparentCanvas=a.canvas,this.ctx=a.context,this.ctx.save(),this.ctx.transform(...To(this.compositeCtx))}this.ctx.save(),dI(this.ctx),e&&(this.ctx.transform(...e),this.outputScaleX=e[0],this.outputScaleY=e[0]),this.ctx.transform(...t.transform),this.viewportScale=t.scale,this.baseTransform=To(this.ctx)}executeOperatorList(e,t,i,n){const o=e.argsArray,l=e.fnArray;let r=t||0;const a=o.length;if(a===r)return r;const d=a-r>Mhe&&typeof i=="function",c=d?Date.now()+dut:0;let h=0;const u=this.commonObjs,m=this.objs;let p;for(;;){if(n!==void 0&&r===n.nextBreakPoint)return n.breakIt(r,i),r;if(p=l[r],p!==Cu.dependency)this[p].apply(this,o[r]);else for(const g of o[r]){const b=g.startsWith("g_")?u:m;if(!b.has(g))return b.get(g,i),r}if(r++,r===a)return r;if(d&&++h>Mhe){if(Date.now()>c)return i(),r;h=0}}}endDrawing(){E(this,pb,$6).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const e of this._cachedBitmapsMap.values()){for(const t of e.values())typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement&&(t.width=t.height=0);e.clear()}this._cachedBitmapsMap.clear(),E(this,pb,eq).call(this)}_scaleImage(e,t){const i=e.width??e.displayWidth,n=e.height??e.displayHeight;let o=Math.max(Math.hypot(t[0],t[1]),1),l=Math.max(Math.hypot(t[2],t[3]),1),r=i,a=n,d="prescale1",c,h;for(;o>2&&r>1||l>2&&a>1;){let u=r,m=a;o>2&&r>1&&(u=r>=16384?Math.floor(r/2)-1||1:Math.ceil(r/2),o/=r/u),l>2&&a>1&&(m=a>=16384?Math.floor(a/2)-1||1:Math.ceil(a)/2,l/=a/m),c=this.cachedCanvases.getCanvas(d,u,m),h=c.context,h.clearRect(0,0,u,m),h.drawImage(e,0,0,r,a,0,0,u,m),e=c.canvas,r=u,a=m,d=d==="prescale1"?"prescale2":"prescale1"}return{img:e,paintWidth:r,paintHeight:a}}_createMaskCanvas(e){const t=this.ctx,{width:i,height:n}=e,o=this.current.fillColor,l=this.current.patternFill,r=To(t);let a,d,c,h;if((e.bitmap||e.data)&&e.count>1){const M=e.bitmap||e.data.buffer;d=JSON.stringify(l?r:[r.slice(0,4),o]),a=this._cachedBitmapsMap.get(M),a||(a=new Map,this._cachedBitmapsMap.set(M,a));const w=a.get(d);if(w&&!l){const Y=Math.round(Math.min(r[0],r[2])+r[4]),G=Math.round(Math.min(r[1],r[3])+r[5]);return{canvas:w,offsetX:Y,offsetY:G}}c=w}c||(h=this.cachedCanvases.getCanvas("maskCanvas",i,n),khe(h.context,e));let u=Ui.transform(r,[1/i,0,0,-1/n,0,0]);u=Ui.transform(u,[1,0,0,1,0,-n]);const[m,p,g,b]=Ui.getAxialAlignedBoundingBox([0,0,i,n],u),f=Math.round(g-m)||1,Z=Math.round(b-p)||1,A=this.cachedCanvases.getCanvas("fillCanvas",f,Z),N=A.context,W=m,Q=p;N.translate(-W,-Q),N.transform(...u),c||(c=this._scaleImage(h.canvas,Zm(N)),c=c.img,a&&l&&a.set(d,c)),N.imageSmoothingEnabled=Ihe(To(N),e.interpolate),aI(N,c,0,0,c.width,c.height,0,0,i,n),N.globalCompositeOperation="source-in";const R=Ui.transform(Zm(N),[1,0,0,1,-W,-Q]);return N.fillStyle=l?o.getPattern(t,this,R,wa.FILL):o,N.fillRect(0,0,i,n),a&&!l&&(this.cachedCanvases.delete("fillCanvas"),a.set(d,A.canvas)),{canvas:A.canvas,offsetX:Math.round(W),offsetY:Math.round(Q)}}setLineWidth(e){e!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=e,this.ctx.lineWidth=e}setLineCap(e){this.ctx.lineCap=mut[e]}setLineJoin(e){this.ctx.lineJoin=put[e]}setMiterLimit(e){this.ctx.miterLimit=e}setDash(e,t){const i=this.ctx;i.setLineDash!==void 0&&(i.setLineDash(e),i.lineDashOffset=t)}setRenderingIntent(e){}setFlatness(e){}setGState(e){for(const[t,i]of e)switch(t){case"LW":this.setLineWidth(i);break;case"LC":this.setLineCap(i);break;case"LJ":this.setLineJoin(i);break;case"ML":this.setMiterLimit(i);break;case"D":this.setDash(i[0],i[1]);break;case"RI":this.setRenderingIntent(i);break;case"FL":this.setFlatness(i);break;case"Font":this.setFont(i[0],i[1]);break;case"CA":this.current.strokeAlpha=i;break;case"ca":this.current.fillAlpha=i,this.ctx.globalAlpha=i;break;case"BM":this.ctx.globalCompositeOperation=i;break;case"SMask":this.current.activeSMask=i?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(i);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const e=this.inSMaskMode;this.current.activeSMask&&!e?this.beginSMaskMode():!this.current.activeSMask&&e&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const e=this.ctx.canvas.width,t=this.ctx.canvas.height,i="smaskGroupAt"+this.groupLevel,n=this.cachedCanvases.getCanvas(i,e,t);this.suspendedCtx=this.ctx,this.ctx=n.context;const o=this.ctx;o.setTransform(...To(this.suspendedCtx)),hy(this.suspendedCtx,o),cut(o,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),hy(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(e){if(!this.current.activeSMask)return;e?(e[0]=Math.floor(e[0]),e[1]=Math.floor(e[1]),e[2]=Math.ceil(e[2]),e[3]=Math.ceil(e[3])):e=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const t=this.current.activeSMask,i=this.suspendedCtx;this.composeSMask(i,t,this.ctx,e),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(e,t,i,n){const o=n[0],l=n[1],r=n[2]-o,a=n[3]-l;r===0||a===0||(this.genericComposeSMask(t.context,i,r,a,t.subtype,t.backdrop,t.transferMap,o,l,t.offsetX,t.offsetY),e.save(),e.globalAlpha=1,e.globalCompositeOperation="source-over",e.setTransform(1,0,0,1,0,0),e.drawImage(i.canvas,0,0),e.restore())}genericComposeSMask(e,t,i,n,o,l,r,a,d,c,h){let u=e.canvas,m=a-c,p=d-h;if(l){const b=Ui.makeHexColor(...l);if(m<0||p<0||m+i>u.width||p+n>u.height){const f=this.cachedCanvases.getCanvas("maskExtension",i,n),Z=f.context;Z.drawImage(u,-m,-p),Z.globalCompositeOperation="destination-atop",Z.fillStyle=b,Z.fillRect(0,0,i,n),Z.globalCompositeOperation="source-over",u=f.canvas,m=p=0}else{e.save(),e.globalAlpha=1,e.setTransform(1,0,0,1,0,0);const f=new Path2D;f.rect(m,p,i,n),e.clip(f),e.globalCompositeOperation="destination-atop",e.fillStyle=b,e.fillRect(m,p,i,n),e.restore()}}t.save(),t.globalAlpha=1,t.setTransform(1,0,0,1,0,0),o==="Alpha"&&r?t.filter=this.filterFactory.addAlphaFilter(r):o==="Luminosity"&&(t.filter=this.filterFactory.addLuminosityFilter(r));const g=new Path2D;g.rect(a,d,i,n),t.clip(g),t.globalCompositeOperation="destination-in",t.drawImage(u,m,p,i,n,a,d,i,n),t.restore()}save(){this.inSMaskMode?(hy(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const e=this.current;this.stateStack.push(e),this.current=e.clone()}restore(){this.stateStack.length===0&&this.inSMaskMode&&this.endSMaskMode(),this.stateStack.length!==0&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),hy(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(e,t,i,n,o,l){this.ctx.transform(e,t,i,n,o,l),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(e,t,i){const n=this.ctx,o=this.current;let l=o.x,r=o.y,a,d;const c=To(n),h=c[0]===0&&c[3]===0||c[1]===0&&c[2]===0,u=h?i.slice(0):null;for(let m=0,p=0,g=e.length;m<g;m++)switch(e[m]|0){case Cu.rectangle:l=t[p++],r=t[p++];const b=t[p++],f=t[p++],Z=l+b,A=r+f;n.moveTo(l,r),b===0||f===0?n.lineTo(Z,A):(n.lineTo(Z,r),n.lineTo(Z,A),n.lineTo(l,A)),h||o.updateRectMinMax(c,[l,r,Z,A]),n.closePath();break;case Cu.moveTo:l=t[p++],r=t[p++],n.moveTo(l,r),h||o.updatePathMinMax(c,l,r);break;case Cu.lineTo:l=t[p++],r=t[p++],n.lineTo(l,r),h||o.updatePathMinMax(c,l,r);break;case Cu.curveTo:a=l,d=r,l=t[p+4],r=t[p+5],n.bezierCurveTo(t[p],t[p+1],t[p+2],t[p+3],l,r),o.updateCurvePathMinMax(c,a,d,t[p],t[p+1],t[p+2],t[p+3],l,r,u),p+=6;break;case Cu.curveTo2:a=l,d=r,n.bezierCurveTo(l,r,t[p],t[p+1],t[p+2],t[p+3]),o.updateCurvePathMinMax(c,a,d,l,r,t[p],t[p+1],t[p+2],t[p+3],u),l=t[p+2],r=t[p+3],p+=4;break;case Cu.curveTo3:a=l,d=r,l=t[p+2],r=t[p+3],n.bezierCurveTo(t[p],t[p+1],l,r,l,r),o.updateCurvePathMinMax(c,a,d,t[p],t[p+1],l,r,l,r,u),p+=4;break;case Cu.closePath:n.closePath();break}h&&o.updateScalingPathMinMax(c,u),o.setCurrentPoint(l,r)}closePath(){this.ctx.closePath()}stroke(e=!0){const t=this.ctx,i=this.current.strokeColor;t.globalAlpha=this.current.strokeAlpha,this.contentVisible&&(typeof i=="object"&&i!=null&&i.getPattern?(t.save(),t.strokeStyle=i.getPattern(t,this,Zm(t),wa.STROKE),this.rescaleAndStroke(!1),t.restore()):this.rescaleAndStroke(!0)),e&&this.consumePath(this.current.getClippedPathBoundingBox()),t.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath(),this.stroke()}fill(e=!0){const t=this.ctx,i=this.current.fillColor,n=this.current.patternFill;let o=!1;n&&(t.save(),t.fillStyle=i.getPattern(t,this,Zm(t),wa.FILL),o=!0);const l=this.current.getClippedPathBoundingBox();this.contentVisible&&l!==null&&(this.pendingEOFill?(t.fill("evenodd"),this.pendingEOFill=!1):t.fill()),o&&t.restore(),e&&this.consumePath(l)}eoFill(){this.pendingEOFill=!0,this.fill()}fillStroke(){this.fill(!1),this.stroke(!1),this.consumePath()}eoFillStroke(){this.pendingEOFill=!0,this.fillStroke()}closeFillStroke(){this.closePath(),this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0,this.closePath(),this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=gut}eoClip(){this.pendingClip=Dhe}beginText(){this.current.textMatrix=HAe,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}endText(){const e=this.pendingTextPaths,t=this.ctx;if(e===void 0){t.beginPath();return}const i=new Path2D,n=t.getTransform().invertSelf();for(const{transform:o,x:l,y:r,fontSize:a,path:d}of e)i.addPath(d,new DOMMatrix(o).preMultiplySelf(n).translate(l,r).scale(a,-a));t.clip(i),t.beginPath(),delete this.pendingTextPaths}setCharSpacing(e){this.current.charSpacing=e}setWordSpacing(e){this.current.wordSpacing=e}setHScale(e){this.current.textHScale=e/100}setLeading(e){this.current.leading=-e}setFont(e,t){var i;const n=this.commonObjs.get(e),o=this.current;if(!n)throw new Error(`Can't find font for ${e}`);if(o.fontMatrix=n.fontMatrix||k6,(o.fontMatrix[0]===0||o.fontMatrix[3]===0)&&rn("Invalid font matrix for font "+e),t<0?(t=-t,o.fontDirection=-1):o.fontDirection=1,this.current.font=n,this.current.fontSize=t,n.isType3Font)return;const l=n.loadedName||"sans-serif",r=((i=n.systemFontInfo)==null?void 0:i.css)||`"${l}", ${n.fallbackName}`;let a="normal";n.black?a="900":n.bold&&(a="bold");const d=n.italic?"italic":"normal";let c=t;t<Che?c=Che:t>whe&&(c=whe),this.current.fontSizeScale=t/c,this.ctx.font=`${d} ${a} ${c}px ${r}`}setTextRenderingMode(e){this.current.textRenderingMode=e}setTextRise(e){this.current.textRise=e}moveText(e,t){this.current.x=this.current.lineX+=e,this.current.y=this.current.lineY+=t}setLeadingMoveText(e,t){this.setLeading(-t),this.moveText(e,t)}setTextMatrix(e,t,i,n,o,l){this.current.textMatrix=[e,t,i,n,o,l],this.current.textMatrixScale=Math.hypot(e,t),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(e,t,i,n,o){const l=this.ctx,r=this.current,a=r.font,d=r.textRenderingMode,c=r.fontSize/r.fontSizeScale,h=d&fa.FILL_STROKE_MASK,u=!!(d&fa.ADD_TO_PATH_FLAG),m=r.patternFill&&!a.missingFile,p=r.patternStroke&&!a.missingFile;let g;if((a.disableFontFace||u||m||p)&&(g=a.getPathGenerator(this.commonObjs,e)),a.disableFontFace||m||p){if(l.save(),l.translate(t,i),l.scale(c,-c),h===fa.FILL||h===fa.FILL_STROKE)if(n){const b=l.getTransform();l.setTransform(...n),l.fill(E(this,pb,tq).call(this,g,b,n))}else l.fill(g);if(h===fa.STROKE||h===fa.FILL_STROKE)if(o){const b=l.getTransform();l.setTransform(...o),l.stroke(E(this,pb,tq).call(this,g,b,o))}else l.lineWidth/=c,l.stroke(g);l.restore()}else(h===fa.FILL||h===fa.FILL_STROKE)&&l.fillText(e,t,i),(h===fa.STROKE||h===fa.FILL_STROKE)&&l.strokeText(e,t,i);u&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:To(l),x:t,y:i,fontSize:c,path:g})}get isFontSubpixelAAEnabled(){const{context:e}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);e.scale(1.5,1),e.fillText("I",0,10);const t=e.getImageData(0,0,10,10).data;let i=!1;for(let n=3;n<t.length;n+=4)if(t[n]>0&&t[n]<255){i=!0;break}return Mn(this,"isFontSubpixelAAEnabled",i)}showText(e){const t=this.current,i=t.font;if(i.isType3Font)return this.showType3Text(e);const n=t.fontSize;if(n===0)return;const o=this.ctx,l=t.fontSizeScale,r=t.charSpacing,a=t.wordSpacing,d=t.fontDirection,c=t.textHScale*d,h=e.length,u=i.vertical,m=u?1:-1,p=i.defaultVMetrics,g=n*t.fontMatrix[0],b=t.textRenderingMode===fa.FILL&&!i.disableFontFace&&!t.patternFill;o.save(),o.transform(...t.textMatrix),o.translate(t.x,t.y+t.textRise),d>0?o.scale(c,-1):o.scale(c,1);let f,Z;if(t.patternFill){o.save();const R=t.fillColor.getPattern(o,this,Zm(o),wa.FILL);f=To(o),o.restore(),o.fillStyle=R}if(t.patternStroke){o.save();const R=t.strokeColor.getPattern(o,this,Zm(o),wa.STROKE);Z=To(o),o.restore(),o.strokeStyle=R}let A=t.lineWidth;const N=t.textMatrixScale;if(N===0||A===0){const R=t.textRenderingMode&fa.FILL_STROKE_MASK;(R===fa.STROKE||R===fa.FILL_STROKE)&&(A=this.getSinglePixelWidth())}else A/=N;if(l!==1&&(o.scale(l,l),A/=l),o.lineWidth=A,i.isInvalidPDFjsFont){const R=[];let M=0;for(const w of e)R.push(w.unicode),M+=w.width;o.fillText(R.join(""),0,0),t.x+=M*g*c,o.restore(),this.compose();return}let W=0,Q;for(Q=0;Q<h;++Q){const R=e[Q];if(typeof R=="number"){W+=m*R*n/1e3;continue}let M=!1;const w=(R.isSpace?a:0)+r,Y=R.fontChar,G=R.accent;let P,j,X=R.width;if(u){const se=R.vmetric||p,pe=-(R.vmetric?se[1]:X*.5)*g,Ue=se[2]*g;X=se?-se[0]:X,P=pe/l,j=(W+Ue)/l}else P=W/l,j=0;if(i.remeasure&&X>0){const se=o.measureText(Y).width*1e3/n*l;if(X<se&&this.isFontSubpixelAAEnabled){const pe=X/se;M=!0,o.save(),o.scale(pe,1),P/=pe}else X!==se&&(P+=(X-se)/2e3*n/l)}if(this.contentVisible&&(R.isInFont||i.missingFile)){if(b&&!G)o.fillText(Y,P,j);else if(this.paintChar(Y,P,j,f,Z),G){const se=P+n*G.offset.x/l,pe=j-n*G.offset.y/l;this.paintChar(G.fontChar,se,pe,f,Z)}}const ie=u?X*g-w*d:X*g+w*d;W+=ie,M&&o.restore()}u?t.y-=W:t.x+=W*c,o.restore(),this.compose()}showType3Text(e){const t=this.ctx,i=this.current,n=i.font,o=i.fontSize,l=i.fontDirection,r=n.vertical?1:-1,a=i.charSpacing,d=i.wordSpacing,c=i.textHScale*l,h=i.fontMatrix||k6,u=e.length,m=i.textRenderingMode===fa.INVISIBLE;let p,g,b,f;if(!(m||o===0)){for(this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,t.save(),t.transform(...i.textMatrix),t.translate(i.x,i.y),t.scale(c,l),p=0;p<u;++p){if(g=e[p],typeof g=="number"){f=r*g*o/1e3,this.ctx.translate(f,0),i.x+=f*c;continue}const Z=(g.isSpace?d:0)+a,A=n.charProcOperatorList[g.operatorListId];if(!A){rn(`Type3 character "${g.operatorListId}" is not available.`);continue}this.contentVisible&&(this.processingType3=g,this.save(),t.scale(o,o),t.transform(...h),this.executeOperatorList(A),this.restore()),b=Ui.applyTransform([g.width,0],h)[0]*o+Z,t.translate(b,0),i.x+=b*c}t.restore(),this.processingType3=null}}setCharWidth(e,t){}setCharWidthAndBounds(e,t,i,n,o,l){this.ctx.rect(i,n,o-i,l-n),this.ctx.clip(),this.endPath()}getColorN_Pattern(e){let t;if(e[0]==="TilingPattern"){const i=e[1],n=this.baseTransform||To(this.ctx),o={createCanvasGraphics:l=>new CNe(l,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};t=new rut(e,i,this.ctx,o,n)}else t=this._getPattern(e[1],e[2]);return t}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments),this.current.patternStroke=!0}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(e,t,i){this.ctx.strokeStyle=this.current.strokeColor=Ui.makeHexColor(e,t,i),this.current.patternStroke=!1}setStrokeTransparent(){this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(e,t,i){this.ctx.fillStyle=this.current.fillColor=Ui.makeHexColor(e,t,i),this.current.patternFill=!1}setFillTransparent(){this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(e,t=null){let i;return this.cachedPatterns.has(e)?i=this.cachedPatterns.get(e):(i=lut(this.getObject(e)),this.cachedPatterns.set(e,i)),t&&(i.matrix=t),i}shadingFill(e){if(!this.contentVisible)return;const t=this.ctx;this.save();const i=this._getPattern(e);t.fillStyle=i.getPattern(t,this,Zm(t),wa.SHADING);const n=Zm(t);if(n){const{width:o,height:l}=t.canvas,[r,a,d,c]=Ui.getAxialAlignedBoundingBox([0,0,o,l],n);this.ctx.fillRect(r,a,d-r,c-a)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){uo("Should not call beginInlineImage")}beginImageData(){uo("Should not call beginImageData")}paintFormXObjectBegin(e,t){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),e&&this.transform(...e),this.baseTransform=To(this.ctx),t)){const i=t[2]-t[0],n=t[3]-t[1];this.ctx.rect(t[0],t[1],i,n),this.current.updateRectMinMax(To(this.ctx),t),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(e){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const t=this.ctx;e.isolated||Bz("TODO: Support non-isolated groups."),e.knockout&&rn("Knockout groups not supported.");const i=To(t);if(e.matrix&&t.transform(...e.matrix),!e.bbox)throw new Error("Bounding box is required.");let n=Ui.getAxialAlignedBoundingBox(e.bbox,To(t));const o=[0,0,t.canvas.width,t.canvas.height];n=Ui.intersect(n,o)||[0,0,0,0];const l=Math.floor(n[0]),r=Math.floor(n[1]),a=Math.max(Math.ceil(n[2])-l,1),d=Math.max(Math.ceil(n[3])-r,1);this.current.startNewPathAndClipBox([0,0,a,d]);let c="groupAt"+this.groupLevel;e.smask&&(c+="_smask_"+this.smaskCounter++%2);const h=this.cachedCanvases.getCanvas(c,a,d),u=h.context;u.translate(-l,-r),u.transform(...i),e.smask?this.smaskStack.push({canvas:h.canvas,context:u,offsetX:l,offsetY:r,subtype:e.smask.subtype,backdrop:e.smask.backdrop,transferMap:e.smask.transferMap||null,startTransformInverse:null}):(t.setTransform(1,0,0,1,0,0),t.translate(l,r),t.save()),hy(t,u),this.ctx=u,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(t),this.groupLevel++}endGroup(e){if(!this.contentVisible)return;this.groupLevel--;const t=this.ctx,i=this.groupStack.pop();if(this.ctx=i,this.ctx.imageSmoothingEnabled=!1,e.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const n=To(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...n);const o=Ui.getAxialAlignedBoundingBox([0,0,t.canvas.width,t.canvas.height],n);this.ctx.drawImage(t.canvas,0,0),this.ctx.restore(),this.compose(o)}}beginAnnotation(e,t,i,n,o){if(E(this,pb,$6).call(this),dI(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),t){const l=t[2]-t[0],r=t[3]-t[1];if(o&&this.annotationCanvasMap){i=i.slice(),i[4]-=t[0],i[5]-=t[1],t=t.slice(),t[0]=t[1]=0,t[2]=l,t[3]=r;const[a,d]=Ui.singularValueDecompose2dScale(To(this.ctx)),{viewportScale:c}=this,h=Math.ceil(l*this.outputScaleX*c),u=Math.ceil(r*this.outputScaleY*c);this.annotationCanvas=this.canvasFactory.create(h,u);const{canvas:m,context:p}=this.annotationCanvas;this.annotationCanvasMap.set(e,m),this.annotationCanvas.savedCtx=this.ctx,this.ctx=p,this.ctx.save(),this.ctx.setTransform(a,0,0,-d,0,r*d),dI(this.ctx)}else dI(this.ctx),this.endPath(),this.ctx.rect(t[0],t[1],l,r),this.ctx.clip(),this.ctx.beginPath()}this.current=new Bhe(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...i),this.transform(...n)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),E(this,pb,eq).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(e){if(!this.contentVisible)return;const t=e.count;e=this.getObject(e.data,e),e.count=t;const i=this.ctx,n=this.processingType3;if(n&&(n.compiled===void 0&&(n.compiled=uut(e)),n.compiled)){n.compiled(i);return}const o=this._createMaskCanvas(e),l=o.canvas;i.save(),i.setTransform(1,0,0,1,0,0),i.drawImage(l,o.offsetX,o.offsetY),i.restore(),this.compose()}paintImageMaskXObjectRepeat(e,t,i=0,n=0,o,l){if(!this.contentVisible)return;e=this.getObject(e.data,e);const r=this.ctx;r.save();const a=To(r);r.transform(t,i,n,o,0,0);const d=this._createMaskCanvas(e);r.setTransform(1,0,0,1,d.offsetX-a[4],d.offsetY-a[5]);for(let c=0,h=l.length;c<h;c+=2){const u=Ui.transform(a,[t,i,n,o,l[c],l[c+1]]),[m,p]=Ui.applyTransform([0,0],u);r.drawImage(d.canvas,m,p)}r.restore(),this.compose()}paintImageMaskXObjectGroup(e){if(!this.contentVisible)return;const t=this.ctx,i=this.current.fillColor,n=this.current.patternFill;for(const o of e){const{data:l,width:r,height:a,transform:d}=o,c=this.cachedCanvases.getCanvas("maskCanvas",r,a),h=c.context;h.save();const u=this.getObject(l,o);khe(h,u),h.globalCompositeOperation="source-in",h.fillStyle=n?i.getPattern(h,this,Zm(t),wa.FILL):i,h.fillRect(0,0,r,a),h.restore(),t.save(),t.transform(...d),t.scale(1,-1),aI(t,c.canvas,0,0,r,a,0,-1,1,1),t.restore()}this.compose()}paintImageXObject(e){if(!this.contentVisible)return;const t=this.getObject(e);if(!t){rn("Dependent image isn't ready yet");return}this.paintInlineImageXObject(t)}paintImageXObjectRepeat(e,t,i,n){if(!this.contentVisible)return;const o=this.getObject(e);if(!o){rn("Dependent image isn't ready yet");return}const l=o.width,r=o.height,a=[];for(let d=0,c=n.length;d<c;d+=2)a.push({transform:[t,0,0,i,n[d],n[d+1]],x:0,y:0,w:l,h:r});this.paintInlineImageXObjectGroup(o,a)}applyTransferMapsToCanvas(e){return this.current.transferMaps!=="none"&&(e.filter=this.current.transferMaps,e.drawImage(e.canvas,0,0),e.filter="none"),e.canvas}applyTransferMapsToBitmap(e){if(this.current.transferMaps==="none")return e.bitmap;const{bitmap:t,width:i,height:n}=e,o=this.cachedCanvases.getCanvas("inlineImage",i,n),l=o.context;return l.filter=this.current.transferMaps,l.drawImage(t,0,0),l.filter="none",o.canvas}paintInlineImageXObject(e){if(!this.contentVisible)return;const t=e.width,i=e.height,n=this.ctx;if(this.save(),!ka){const{filter:r}=n;r!=="none"&&r!==""&&(n.filter="none")}n.scale(1/t,-1/i);let o;if(e.bitmap)o=this.applyTransferMapsToBitmap(e);else if(typeof HTMLElement=="function"&&e instanceof HTMLElement||!e.data)o=e;else{const r=this.cachedCanvases.getCanvas("inlineImage",t,i).context;Lhe(r,e),o=this.applyTransferMapsToCanvas(r)}const l=this._scaleImage(o,Zm(n));n.imageSmoothingEnabled=Ihe(To(n),e.interpolate),aI(n,l.img,0,0,l.paintWidth,l.paintHeight,0,-i,t,i),this.compose(),this.restore()}paintInlineImageXObjectGroup(e,t){if(!this.contentVisible)return;const i=this.ctx;let n;if(e.bitmap)n=e.bitmap;else{const o=e.width,l=e.height,r=this.cachedCanvases.getCanvas("inlineImage",o,l).context;Lhe(r,e),n=this.applyTransferMapsToCanvas(r)}for(const o of t)i.save(),i.transform(...o.transform),i.scale(1,-1),aI(i,n,o.x,o.y,o.w,o.h,0,-1,1,1),i.restore();this.compose()}paintSolidColorImageMask(){this.contentVisible&&(this.ctx.fillRect(0,0,1,1),this.compose())}markPoint(e){}markPointProps(e,t){}beginMarkedContent(e){this.markedContentStack.push({visible:!0})}beginMarkedContentProps(e,t){e==="OC"?this.markedContentStack.push({visible:this.optionalContentConfig.isVisible(t)}):this.markedContentStack.push({visible:!0}),this.contentVisible=this.isContentVisible()}endMarkedContent(){this.markedContentStack.pop(),this.contentVisible=this.isContentVisible()}beginCompat(){}endCompat(){}consumePath(e){const t=this.current.isEmptyClip();this.pendingClip&&this.current.updateClipFromPath(),this.pendingClip||this.compose(e);const i=this.ctx;this.pendingClip&&(t||(this.pendingClip===Dhe?i.clip("evenodd"):i.clip()),this.pendingClip=null),this.current.startNewPathAndClipBox(this.current.clipBox),i.beginPath()}getSinglePixelWidth(){if(!this._cachedGetSinglePixelWidth){const e=To(this.ctx);if(e[1]===0&&e[2]===0)this._cachedGetSinglePixelWidth=1/Math.min(Math.abs(e[0]),Math.abs(e[3]));else{const t=Math.abs(e[0]*e[3]-e[2]*e[1]),i=Math.hypot(e[0],e[2]),n=Math.hypot(e[1],e[3]);this._cachedGetSinglePixelWidth=Math.max(i,n)/t}}return this._cachedGetSinglePixelWidth}getScaleForStroking(){if(this._cachedScaleForStroking[0]===-1){const{lineWidth:e}=this.current,{a:t,b:i,c:n,d:o}=this.ctx.getTransform();let l,r;if(i===0&&n===0){const a=Math.abs(t),d=Math.abs(o);if(a===d)if(e===0)l=r=1/a;else{const c=a*e;l=r=c<1?1/c:1}else if(e===0)l=1/a,r=1/d;else{const c=a*e,h=d*e;l=c<1?1/c:1,r=h<1?1/h:1}}else{const a=Math.abs(t*o-i*n),d=Math.hypot(t,i),c=Math.hypot(n,o);if(e===0)l=c/a,r=d/a;else{const h=e*a;l=c>h?c/h:1,r=d>h?d/h:1}}this._cachedScaleForStroking[0]=l,this._cachedScaleForStroking[1]=r}return this._cachedScaleForStroking}rescaleAndStroke(e){const{ctx:t}=this,{lineWidth:i}=this.current,[n,o]=this.getScaleForStroking();if(t.lineWidth=i||1,n===1&&o===1){t.stroke();return}const l=t.getLineDash();if(e&&t.save(),t.scale(n,o),l.length>0){const r=Math.max(n,o);t.setLineDash(l.map(a=>a/r)),t.lineDashOffset/=r}t.stroke(),e&&t.restore()}isContentVisible(){for(let e=this.markedContentStack.length-1;e>=0;e--)if(!this.markedContentStack[e].visible)return!1;return!0}};pb=new WeakSet,$6=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},eq=function(){if(this.pageColors){const s=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(s!=="none"){const e=this.ctx.filter;this.ctx.filter=s,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=e}}},tq=function(s,e,t){const i=new Path2D;return i.addPath(s,new DOMMatrix(t).invertSelf().multiplySelf(e)),i};let HD=but;for(const s in Cu)HD.prototype[s]!==void 0&&(HD.prototype[Cu[s]]=HD.prototype[s]);var cI,hI,uI;let BS=(cI=class{static get workerPort(){return F(this,hI)}static set workerPort(s){if(!(typeof Worker<"u"&&s instanceof Worker)&&s!==null)throw new Error("Invalid `workerPort` type.");L(this,hI,s)}static get workerSrc(){return F(this,uI)}static set workerSrc(s){if(typeof s!="string")throw new Error("Invalid `workerSrc` type.");L(this,uI,s)}},hI=new WeakMap,uI=new WeakMap,J(cI,hI,null),J(cI,uI,""),cI);var DR,PD;class Uut{constructor({parsedData:e,rawData:t}){J(this,DR),J(this,PD),L(this,DR,e),L(this,PD,t)}getRaw(){return F(this,PD)}get(e){return F(this,DR).get(e)??null}getAll(){return Kie(F(this,DR))}has(e){return F(this,DR).has(e)}}DR=new WeakMap,PD=new WeakMap;const GR=Symbol("INTERNAL");var KD,qD,$D,R2;class fut{constructor(e,{name:t,intent:i,usage:n,rbGroups:o}){J(this,KD,!1),J(this,qD,!1),J(this,$D,!1),J(this,R2,!0),L(this,KD,!!(e&Bc.DISPLAY)),L(this,qD,!!(e&Bc.PRINT)),this.name=t,this.intent=i,this.usage=n,this.rbGroups=o}get visible(){if(F(this,$D))return F(this,R2);if(!F(this,R2))return!1;const{print:e,view:t}=this.usage;return F(this,KD)?(t==null?void 0:t.viewState)!=="OFF":F(this,qD)?(e==null?void 0:e.printState)!=="OFF":!0}_setVisible(e,t,i=!1){e!==GR&&uo("Internal method `_setVisible` called."),L(this,$D,i),L(this,R2,t)}}KD=new WeakMap,qD=new WeakMap,$D=new WeakMap,R2=new WeakMap;var QF,qs,S2,W2,MJ,iq;class Fut{constructor(e,t=Bc.DISPLAY){if(J(this,MJ),J(this,QF,null),J(this,qs,new Map),J(this,S2,null),J(this,W2,null),this.renderingIntent=t,this.name=null,this.creator=null,e!==null){this.name=e.name,this.creator=e.creator,L(this,W2,e.order);for(const i of e.groups)F(this,qs).set(i.id,new fut(t,i));if(e.baseState==="OFF")for(const i of F(this,qs).values())i._setVisible(GR,!1);for(const i of e.on)F(this,qs).get(i)._setVisible(GR,!0);for(const i of e.off)F(this,qs).get(i)._setVisible(GR,!1);L(this,S2,this.getHash())}}isVisible(e){if(F(this,qs).size===0)return!0;if(!e)return Bz("Optional content group not defined."),!0;if(e.type==="OCG")return F(this,qs).has(e.id)?F(this,qs).get(e.id).visible:(rn(`Optional content group not found: ${e.id}`),!0);if(e.type==="OCMD"){if(e.expression)return E(this,MJ,iq).call(this,e.expression);if(!e.policy||e.policy==="AnyOn"){for(const t of e.ids){if(!F(this,qs).has(t))return rn(`Optional content group not found: ${t}`),!0;if(F(this,qs).get(t).visible)return!0}return!1}else if(e.policy==="AllOn"){for(const t of e.ids){if(!F(this,qs).has(t))return rn(`Optional content group not found: ${t}`),!0;if(!F(this,qs).get(t).visible)return!1}return!0}else if(e.policy==="AnyOff"){for(const t of e.ids){if(!F(this,qs).has(t))return rn(`Optional content group not found: ${t}`),!0;if(!F(this,qs).get(t).visible)return!0}return!1}else if(e.policy==="AllOff"){for(const t of e.ids){if(!F(this,qs).has(t))return rn(`Optional content group not found: ${t}`),!0;if(F(this,qs).get(t).visible)return!1}return!0}return rn(`Unknown optional content policy ${e.policy}.`),!0}return rn(`Unknown group type ${e.type}.`),!0}setVisibility(e,t=!0,i=!0){var n;const o=F(this,qs).get(e);if(!o){rn(`Optional content group not found: ${e}`);return}if(i&&t&&o.rbGroups.length)for(const l of o.rbGroups)for(const r of l)r!==e&&((n=F(this,qs).get(r))==null||n._setVisible(GR,!1,!0));o._setVisible(GR,!!t,!0),L(this,QF,null)}setOCGState({state:e,preserveRB:t}){let i;for(const n of e){switch(n){case"ON":case"OFF":case"Toggle":i=n;continue}const o=F(this,qs).get(n);if(o)switch(i){case"ON":this.setVisibility(n,!0,t);break;case"OFF":this.setVisibility(n,!1,t);break;case"Toggle":this.setVisibility(n,!o.visible,t);break}}L(this,QF,null)}get hasInitialVisibility(){return F(this,S2)===null||this.getHash()===F(this,S2)}getOrder(){return F(this,qs).size?F(this,W2)?F(this,W2).slice():[...F(this,qs).keys()]:null}getGroups(){return F(this,qs).size>0?Kie(F(this,qs)):null}getGroup(e){return F(this,qs).get(e)||null}getHash(){if(F(this,QF)!==null)return F(this,QF);const e=new gNe;for(const[t,i]of F(this,qs))e.update(`${t}:${i.visible}`);return L(this,QF,e.hexdigest())}}QF=new WeakMap,qs=new WeakMap,S2=new WeakMap,W2=new WeakMap,MJ=new WeakSet,iq=function(s){const e=s.length;if(e<2)return!0;const t=s[0];for(let i=1;i<e;i++){const n=s[i];let o;if(Array.isArray(n))o=E(this,MJ,iq).call(this,n);else if(F(this,qs).has(n))o=F(this,qs).get(n).visible;else return rn(`Optional content group not found: ${n}`),!0;switch(t){case"And":if(!o)return!1;break;case"Or":if(o)return!0;break;case"Not":return!o;default:return!0}}return t==="And"};class Zut{constructor(e,{disableRange:t=!1,disableStream:i=!1}){Ll(e,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:n,initialData:o,progressiveDone:l,contentDispositionFilename:r}=e;if(this._queuedChunks=[],this._progressiveDone=l,this._contentDispositionFilename=r,(o==null?void 0:o.length)>0){const a=o instanceof Uint8Array&&o.byteLength===o.buffer.byteLength?o.buffer:new Uint8Array(o).buffer;this._queuedChunks.push(a)}this._pdfDataRangeTransport=e,this._isStreamingSupported=!i,this._isRangeSupported=!t,this._contentLength=n,this._fullRequestReader=null,this._rangeReaders=[],e.addRangeListener((a,d)=>{this._onReceiveData({begin:a,chunk:d})}),e.addProgressListener((a,d)=>{this._onProgress({loaded:a,total:d})}),e.addProgressiveReadListener(a=>{this._onReceiveData({chunk:a})}),e.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),e.transportReady()}_onReceiveData({begin:e,chunk:t}){const i=t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t.buffer:new Uint8Array(t).buffer;if(e===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(i):this._queuedChunks.push(i);else{const n=this._rangeReaders.some(function(o){return o._begin!==e?!1:(o._enqueue(i),!0)});Ll(n,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var e;return((e=this._fullRequestReader)==null?void 0:e._loaded)??0}_onProgress(e){var t,i,n,o;e.total===void 0?(i=(t=this._rangeReaders[0])==null?void 0:t.onProgress)==null||i.call(t,{loaded:e.loaded}):(o=(n=this._fullRequestReader)==null?void 0:n.onProgress)==null||o.call(n,{loaded:e.loaded,total:e.total})}_onProgressiveDone(){var e;(e=this._fullRequestReader)==null||e.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(e){const t=this._rangeReaders.indexOf(e);t>=0&&this._rangeReaders.splice(t,1)}getFullReader(){Ll(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const e=this._queuedChunks;return this._queuedChunks=null,new Aut(this,e,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const i=new Nut(this,e,t);return this._pdfDataRangeTransport.requestDataRange(e,t),this._rangeReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeReaders.slice(0))i.cancel(e);this._pdfDataRangeTransport.abort()}}class Aut{constructor(e,t,i=!1,n=null){this._stream=e,this._done=i||!1,this._filename=ene(n)?n:null,this._queuedChunks=t||[],this._loaded=0;for(const o of this._queuedChunks)this._loaded+=o.byteLength;this._requests=[],this._headersReady=Promise.resolve(),e._fullRequestReader=this,this.onProgress=null}_enqueue(e){this._done||(this._requests.length>0?this._requests.shift().resolve({value:e,done:!1}):this._queuedChunks.push(e),this._loaded+=e.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class Nut{constructor(e,t,i){this._stream=e,this._begin=t,this._end=i,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(e){if(!this._done){if(this._requests.length===0)this._queuedChunk=e;else{this._requests.shift().resolve({value:e,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function Rut(s){let e=!0,t=i("filename\\*","i").exec(s);if(t){t=t[1];let c=r(t);return c=unescape(c),c=a(c),c=d(c),o(c)}if(t=l(s),t){const c=d(t);return o(c)}if(t=i("filename","i").exec(s),t){t=t[1];let c=r(t);return c=d(c),o(c)}function i(c,h){return new RegExp("(?:^|;)\\s*"+c+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',h)}function n(c,h){if(c){if(!/^[\x00-\xFF]+$/.test(h))return h;try{const u=new TextDecoder(c,{fatal:!0}),m=Lz(h);h=u.decode(m),e=!1}catch{}}return h}function o(c){return e&&/[\x80-\xff]/.test(c)&&(c=n("utf-8",c),e&&(c=n("iso-8859-1",c))),c}function l(c){const h=[];let u;const m=i("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(u=m.exec(c))!==null;){let[,g,b,f]=u;if(g=parseInt(g,10),g in h){if(g===0)break;continue}h[g]=[b,f]}const p=[];for(let g=0;g<h.length&&g in h;++g){let[b,f]=h[g];f=r(f),b&&(f=unescape(f),g===0&&(f=a(f))),p.push(f)}return p.join("")}function r(c){if(c.startsWith('"')){const h=c.slice(1).split('\\"');for(let u=0;u<h.length;++u){const m=h[u].indexOf('"');m!==-1&&(h[u]=h[u].slice(0,m),h.length=u+1),h[u]=h[u].replaceAll(/\\(.)/g,"$1")}c=h.join('"')}return c}function a(c){const h=c.indexOf("'");if(h===-1)return c;const u=c.slice(0,h),m=c.slice(h+1).replace(/^[^']*'/,"");return n(u,m)}function d(c){return!c.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(c)?c:c.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,function(h,u,m,p){if(m==="q"||m==="Q")return p=p.replaceAll("_"," "),p=p.replaceAll(/=([0-9a-fA-F]{2})/g,function(g,b){return String.fromCharCode(parseInt(b,16))}),n(u,p);try{p=atob(p)}catch{}return n(u,p)})}return""}function wNe(s,e){const t=new Headers;if(!s||!e||typeof e!="object")return t;for(const i in e){const n=e[i];n!==void 0&&t.append(i,n)}return t}function Dz(s){try{return new URL(s).origin}catch{}return null}function MNe({responseHeaders:s,isHttp:e,rangeChunkSize:t,disableRange:i}){const n={allowRangeRequests:!1,suggestedLength:void 0},o=parseInt(s.get("Content-Length"),10);return!Number.isInteger(o)||(n.suggestedLength=o,o<=2*t)||i||!e||s.get("Accept-Ranges")!=="bytes"||(s.get("Content-Encoding")||"identity")!=="identity"||(n.allowRangeRequests=!0),n}function TNe(s){const e=s.get("Content-Disposition");if(e){let t=Rut(e);if(t.includes("%"))try{t=decodeURIComponent(t)}catch{}if(ene(t))return t}return null}function Gz(s,e){return s===404||s===0&&e.startsWith("file:")?new wT('Missing PDF "'+e+'".'):new WJ(`Unexpected server response (${s}) while retrieving PDF "${e}".`,s)}function BNe(s){return s===200||s===206}function LNe(s,e,t){return{method:"GET",headers:s,signal:t.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"}}function kNe(s){return s instanceof Uint8Array?s.buffer:s instanceof ArrayBuffer?s:(rn(`getArrayBuffer - unexpected data format: ${s}`),new Uint8Array(s).buffer)}class Ghe{constructor(e){Ii(this,"_responseOrigin",null),this.source=e,this.isHttp=/^https?:/i.test(e.url),this.headers=wNe(this.isHttp,e.httpHeaders),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var e;return((e=this._fullRequestReader)==null?void 0:e._loaded)??0}getFullReader(){return Ll(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new Sut(this),this._fullRequestReader}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const i=new Wut(this,e,t);return this._rangeRequestReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeRequestReaders.slice(0))i.cancel(e)}}class Sut{constructor(e){this._stream=e,this._reader=null,this._loaded=0,this._filename=null;const t=e.source;this._withCredentials=t.withCredentials||!1,this._contentLength=t.length,this._headersCapability=Promise.withResolvers(),this._disableRange=t.disableRange||!1,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!t.disableStream,this._isRangeSupported=!t.disableRange;const i=new Headers(e.headers),n=t.url;fetch(n,LNe(i,this._withCredentials,this._abortController)).then(o=>{if(e._responseOrigin=Dz(o.url),!BNe(o.status))throw Gz(o.status,n);this._reader=o.body.getReader(),this._headersCapability.resolve();const l=o.headers,{allowRangeRequests:r,suggestedLength:a}=MNe({responseHeaders:l,isHttp:e.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=r,this._contentLength=a||this._contentLength,this._filename=TNe(l),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new hf("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;await this._headersCapability.promise;const{value:t,done:i}=await this._reader.read();return i?{value:t,done:i}:(this._loaded+=t.byteLength,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded,total:this._contentLength}),{value:kNe(t),done:!1})}cancel(e){var t;(t=this._reader)==null||t.cancel(e),this._abortController.abort()}}class Wut{constructor(e,t,i){this._stream=e,this._reader=null,this._loaded=0;const n=e.source;this._withCredentials=n.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!n.disableStream,this._abortController=new AbortController;const o=new Headers(e.headers);o.append("Range",`bytes=${t}-${i-1}`);const l=n.url;fetch(l,LNe(o,this._withCredentials,this._abortController)).then(r=>{const a=Dz(r.url);if(a!==e._responseOrigin)throw new Error(`Expected range response-origin "${a}" to match "${e._responseOrigin}".`);if(!BNe(r.status))throw Gz(r.status,l);this._readCapability.resolve(),this._reader=r.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;await this._readCapability.promise;const{value:t,done:i}=await this._reader.read();return i?{value:t,done:i}:(this._loaded+=t.byteLength,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded}),{value:kNe(t),done:!1})}cancel(e){var t;(t=this._reader)==null||t.cancel(e),this._abortController.abort()}}const oO=200,lO=206;function Vut(s){const e=s.response;return typeof e!="string"?e:Lz(e).buffer}class Qut{constructor({url:e,httpHeaders:t,withCredentials:i}){Ii(this,"_responseOrigin",null),this.url=e,this.isHttp=/^https?:/i.test(e),this.headers=wNe(this.isHttp,t),this.withCredentials=i||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}request(e){const t=new XMLHttpRequest,i=this.currXhrId++,n=this.pendingRequests[i]={xhr:t};t.open("GET",this.url),t.withCredentials=this.withCredentials;for(const[o,l]of this.headers)t.setRequestHeader(o,l);return this.isHttp&&"begin"in e&&"end"in e?(t.setRequestHeader("Range",`bytes=${e.begin}-${e.end-1}`),n.expectedStatus=lO):n.expectedStatus=oO,t.responseType="arraybuffer",Ll(e.onError,"Expected `onError` callback to be provided."),t.onerror=()=>{e.onError(t.status)},t.onreadystatechange=this.onStateChange.bind(this,i),t.onprogress=this.onProgress.bind(this,i),n.onHeadersReceived=e.onHeadersReceived,n.onDone=e.onDone,n.onError=e.onError,n.onProgress=e.onProgress,t.send(null),i}onProgress(e,t){var i;const n=this.pendingRequests[e];n&&((i=n.onProgress)==null||i.call(n,t))}onStateChange(e,t){const i=this.pendingRequests[e];if(!i)return;const n=i.xhr;if(n.readyState>=2&&i.onHeadersReceived&&(i.onHeadersReceived(),delete i.onHeadersReceived),n.readyState!==4||!(e in this.pendingRequests))return;if(delete this.pendingRequests[e],n.status===0&&this.isHttp){i.onError(n.status);return}const o=n.status||oO;if(!(o===oO&&i.expectedStatus===lO)&&o!==i.expectedStatus){i.onError(n.status);return}const l=Vut(n);if(o===lO){const r=n.getResponseHeader("Content-Range"),a=/bytes (\d+)-(\d+)\/(\d+)/.exec(r);a?i.onDone({begin:parseInt(a[1],10),chunk:l}):(rn('Missing or invalid "Content-Range" header.'),i.onError(0))}else l?i.onDone({begin:0,chunk:l}):i.onError(n.status)}getRequestXhr(e){return this.pendingRequests[e].xhr}isPendingRequest(e){return e in this.pendingRequests}abortRequest(e){const t=this.pendingRequests[e].xhr;delete this.pendingRequests[e],t.abort()}}class yut{constructor(e){this._source=e,this._manager=new Qut(e),this._rangeChunkSize=e.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(e){const t=this._rangeRequestReaders.indexOf(e);t>=0&&this._rangeRequestReaders.splice(t,1)}getFullReader(){return Ll(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new Cut(this._manager,this._source),this._fullRequestReader}getRangeReader(e,t){const i=new wut(this._manager,e,t);return i.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeRequestReaders.slice(0))i.cancel(e)}}class Cut{constructor(e,t){this._manager=e,this._url=t.url,this._fullRequestId=e.request({onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._headersCapability=Promise.withResolvers(),this._disableRange=t.disableRange||!1,this._contentLength=t.length,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const e=this._fullRequestId,t=this._manager.getRequestXhr(e);this._manager._responseOrigin=Dz(t.responseURL);const i=t.getAllResponseHeaders(),n=new Headers(i?i.trimStart().replace(/[^\S ]+$/,"").split(/[\r\n]+/).map(r=>{const[a,...d]=r.split(": ");return[a,d.join(": ")]}):[]),{allowRangeRequests:o,suggestedLength:l}=MNe({responseHeaders:n,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});o&&(this._isRangeSupported=!0),this._contentLength=l||this._contentLength,this._filename=TNe(n),this._isRangeSupported&&this._manager.abortRequest(e),this._headersCapability.resolve()}_onDone(e){if(e&&(this._requests.length>0?this._requests.shift().resolve({value:e.chunk,done:!1}):this._cachedChunks.push(e.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(e){this._storedError=Gz(e,this._url),this._headersCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(e){var t;(t=this.onProgress)==null||t.call(this,{loaded:e.loaded,total:e.lengthComputable?e.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0,this._headersCapability.reject(e);for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class wut{constructor(e,t,i){this._manager=e,this._url=e.url,this._requestId=e.request({begin:t,end:i,onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_onHeadersReceived(){var e;const t=Dz((e=this._manager.getRequestXhr(this._requestId))==null?void 0:e.responseURL);t!==this._manager._responseOrigin&&(this._storedError=new Error(`Expected range response-origin "${t}" to match "${this._manager._responseOrigin}".`),this._onError(0))}_close(){var e;(e=this.onClosed)==null||e.call(this,this)}_onDone(e){const t=e.chunk;this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunk=t,this._done=!0;for(const i of this._requests)i.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(e){this._storedError??(this._storedError=Gz(e,this._url));for(const t of this._requests)t.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(e){var t;this.isStreamingSupported||(t=this.onProgress)==null||t.call(this,{loaded:e.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const e=Promise.withResolvers();return this._requests.push(e),e.promise}cancel(e){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const Mut=/^[a-z][a-z0-9\-+.]+:/i;function Tut(s){if(Mut.test(s))return new URL(s);const e=process.getBuiltinModule("url");return new URL(e.pathToFileURL(s))}class But{constructor(e){this.source=e,this.url=Tut(e.url),Ll(this.url.protocol==="file:","PDFNodeStream only supports file:// URLs."),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var e;return((e=this._fullRequestReader)==null?void 0:e._loaded)??0}getFullReader(){return Ll(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new Lut(this),this._fullRequestReader}getRangeReader(e,t){if(t<=this._progressiveDataLength)return null;const i=new kut(this,e,t);return this._rangeRequestReaders.push(i),i}cancelAllRequests(e){var t;(t=this._fullRequestReader)==null||t.cancel(e);for(const i of this._rangeRequestReaders.slice(0))i.cancel(e)}}class Lut{constructor(e){this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null;const t=e.source;this._contentLength=t.length,this._loaded=0,this._filename=null,this._disableRange=t.disableRange||!1,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!t.disableStream,this._isRangeSupported=!t.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers();const i=process.getBuiltinModule("fs");i.promises.lstat(this._url).then(n=>{this._contentLength=n.size,this._setReadableStream(i.createReadStream(this._url)),this._headersCapability.resolve()},n=>{n.code==="ENOENT"&&(n=new wT(`Missing PDF "${this._url}".`)),this._storedError=n,this._headersCapability.reject(n)})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();return t===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=t.length,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(t).buffer,done:!1})}cancel(e){if(!this._readableStream){this._error(e);return}this._readableStream.destroy(e)}_error(e){this._storedError=e,this._readCapability.resolve()}_setReadableStream(e){this._readableStream=e,e.on("readable",()=>{this._readCapability.resolve()}),e.on("end",()=>{e.destroy(),this._done=!0,this._readCapability.resolve()}),e.on("error",t=>{this._error(t)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new hf("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class kut{constructor(e,t,i){this._url=e.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const n=e.source;this._isStreamingSupported=!n.disableStream;const o=process.getBuiltinModule("fs");this._setReadableStream(o.createReadStream(this._url,{start:t,end:i-1}))}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();return t===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=t.length,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded}),{value:new Uint8Array(t).buffer,done:!1})}cancel(e){if(!this._readableStream){this._error(e);return}this._readableStream.destroy(e)}_error(e){this._storedError=e,this._readCapability.resolve()}_setReadableStream(e){this._readableStream=e,e.on("readable",()=>{this._readCapability.resolve()}),e.on("end",()=>{e.destroy(),this._done=!0,this._readCapability.resolve()}),e.on("error",t=>{this._error(t)}),this._storedError&&this._readableStream.destroy(this._storedError)}}const Iut=1e5,Bd=30,Dut=.8;var Ehe,eF,Nc,mI,pI,tF,eb,gI,bI,sR,uy,my,iF,py,UI,gy,oR,fI,FI,_l,lR,rR,ZI,nF,by,aR,vhe,xhe,rO,tg,AI,aO,Jhe,Xhe;let nq=(_l=class{constructor({textContentSource:s,container:e,viewport:t}){J(this,aR),J(this,eF,Promise.withResolvers()),J(this,Nc,null),J(this,mI,!1),J(this,pI,!!((Ehe=globalThis.FontInspector)!=null&&Ehe.enabled)),J(this,tF,null),J(this,eb,null),J(this,gI,0),J(this,bI,0),J(this,sR,null),J(this,uy,null),J(this,my,0),J(this,iF,0),J(this,py,Object.create(null)),J(this,UI,[]),J(this,gy,null),J(this,oR,[]),J(this,fI,new WeakMap),J(this,FI,null);var i;if(s instanceof ReadableStream)L(this,gy,s);else if(typeof s=="object")L(this,gy,new ReadableStream({start(a){a.enqueue(s),a.close()}}));else throw new Error('No "textContentSource" parameter specified.');L(this,Nc,L(this,uy,e)),L(this,iF,t.scale*(globalThis.devicePixelRatio||1)),L(this,my,t.rotation),L(this,eb,{div:null,properties:null,ctx:null});const{pageWidth:n,pageHeight:o,pageX:l,pageY:r}=t.rawDims;L(this,FI,[1,0,0,-1,-l,r+o]),L(this,bI,n),L(this,gI,o),E(i=_l,tg,Jhe).call(i),_A(e,t),F(this,eF).promise.finally(()=>{F(_l,by).delete(this),L(this,eb,null),L(this,py,null)}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:s,isFirefox:e}=Nd.platform;return Mn(this,"fontFamilyMap",new Map([["sans-serif",`${s&&e?"Calibri, ":""}sans-serif`],["monospace",`${s&&e?"Lucida Console, ":""}monospace`]]))}render(){const s=()=>{F(this,sR).read().then(({value:e,done:t})=>{if(t){F(this,eF).resolve();return}F(this,tF)??L(this,tF,e.lang),Object.assign(F(this,py),e.styles),E(this,aR,vhe).call(this,e.items),s()},F(this,eF).reject)};return L(this,sR,F(this,gy).getReader()),F(_l,by).add(this),s(),F(this,eF).promise}update({viewport:s,onBefore:e=null}){var t;const i=s.scale*(globalThis.devicePixelRatio||1),n=s.rotation;if(n!==F(this,my)&&(e==null||e(),L(this,my,n),_A(F(this,uy),{rotation:n})),i!==F(this,iF)){e==null||e(),L(this,iF,i);const o={div:null,properties:null,ctx:E(t=_l,tg,AI).call(t,F(this,tF))};for(const l of F(this,oR))o.properties=F(this,fI).get(l),o.div=l,E(this,aR,rO).call(this,o)}}cancel(){var s;const e=new hf("TextLayer task cancelled.");(s=F(this,sR))==null||s.cancel(e).catch(()=>{}),L(this,sR,null),F(this,eF).reject(e)}get textDivs(){return F(this,oR)}get textContentItemsStr(){return F(this,UI)}static cleanup(){if(!(F(this,by).size>0)){F(this,lR).clear();for(const{canvas:s}of F(this,rR).values())s.remove();F(this,rR).clear()}}},eF=new WeakMap,Nc=new WeakMap,mI=new WeakMap,pI=new WeakMap,tF=new WeakMap,eb=new WeakMap,gI=new WeakMap,bI=new WeakMap,sR=new WeakMap,uy=new WeakMap,my=new WeakMap,iF=new WeakMap,py=new WeakMap,UI=new WeakMap,gy=new WeakMap,oR=new WeakMap,fI=new WeakMap,FI=new WeakMap,lR=new WeakMap,rR=new WeakMap,ZI=new WeakMap,nF=new WeakMap,by=new WeakMap,aR=new WeakSet,vhe=function(s){var e,t;if(F(this,mI))return;(t=F(this,eb)).ctx??(t.ctx=E(e=_l,tg,AI).call(e,F(this,tF)));const i=F(this,oR),n=F(this,UI);for(const o of s){if(i.length>Iut){rn("Ignoring additional textDivs for performance reasons."),L(this,mI,!0);return}if(o.str===void 0){if(o.type==="beginMarkedContentProps"||o.type==="beginMarkedContent"){const l=F(this,Nc);L(this,Nc,document.createElement("span")),F(this,Nc).classList.add("markedContent"),o.id!==null&&F(this,Nc).setAttribute("id",`${o.id}`),l.append(F(this,Nc))}else o.type==="endMarkedContent"&&L(this,Nc,F(this,Nc).parentNode);continue}n.push(o.str),E(this,aR,xhe).call(this,o)}},xhe=function(s){var e;const t=document.createElement("span"),i={angle:0,canvasWidth:0,hasText:s.str!=="",hasEOL:s.hasEOL,fontSize:0};F(this,oR).push(t);const n=Ui.transform(F(this,FI),s.transform);let o=Math.atan2(n[1],n[0]);const l=F(this,py)[s.fontName];l.vertical&&(o+=Math.PI/2);let r=F(this,pI)&&l.fontSubstitution||l.fontFamily;r=_l.fontFamilyMap.get(r)||r;const a=Math.hypot(n[2],n[3]),d=a*E(e=_l,tg,Xhe).call(e,r,F(this,tF));let c,h;o===0?(c=n[4],h=n[5]-d):(c=n[4]+d*Math.sin(o),h=n[5]-d*Math.cos(o));const u="calc(var(--scale-factor)*",m=t.style;F(this,Nc)===F(this,uy)?(m.left=`${(100*c/F(this,bI)).toFixed(2)}%`,m.top=`${(100*h/F(this,gI)).toFixed(2)}%`):(m.left=`${u}${c.toFixed(2)}px)`,m.top=`${u}${h.toFixed(2)}px)`),m.fontSize=`${u}${(F(_l,nF)*a).toFixed(2)}px)`,m.fontFamily=r,i.fontSize=a,t.setAttribute("role","presentation"),t.textContent=s.str,t.dir=s.dir,F(this,pI)&&(t.dataset.fontName=l.fontSubstitutionLoadedName||s.fontName),o!==0&&(i.angle=o*(180/Math.PI));let p=!1;if(s.str.length>1)p=!0;else if(s.str!==" "&&s.transform[0]!==s.transform[3]){const g=Math.abs(s.transform[0]),b=Math.abs(s.transform[3]);g!==b&&Math.max(g,b)/Math.min(g,b)>1.5&&(p=!0)}if(p&&(i.canvasWidth=l.vertical?s.height:s.width),F(this,fI).set(t,i),F(this,eb).div=t,F(this,eb).properties=i,E(this,aR,rO).call(this,F(this,eb)),i.hasText&&F(this,Nc).append(t),i.hasEOL){const g=document.createElement("br");g.setAttribute("role","presentation"),F(this,Nc).append(g)}},rO=function(s){var e;const{div:t,properties:i,ctx:n}=s,{style:o}=t;let l="";if(F(_l,nF)>1&&(l=`scale(${1/F(_l,nF)})`),i.canvasWidth!==0&&i.hasText){const{fontFamily:r}=o,{canvasWidth:a,fontSize:d}=i;E(e=_l,tg,aO).call(e,n,d*F(this,iF),r);const{width:c}=n.measureText(t.textContent);c>0&&(l=`scaleX(${a*F(this,iF)/c}) ${l}`)}i.angle!==0&&(l=`rotate(${i.angle}deg) ${l}`),l.length>0&&(o.transform=l)},tg=new WeakSet,AI=function(s=null){let e=F(this,rR).get(s||(s=""));if(!e){const t=document.createElement("canvas");t.className="hiddenCanvasElement",t.lang=s,document.body.append(t),e=t.getContext("2d",{alpha:!1,willReadFrequently:!0}),F(this,rR).set(s,e),F(this,ZI).set(e,{size:0,family:""})}return e},aO=function(s,e,t){const i=F(this,ZI).get(s);e===i.size&&t===i.family||(s.font=`${e}px ${t}`,i.size=e,i.family=t)},Jhe=function(){if(F(this,nF)!==null)return;const s=document.createElement("div");s.style.opacity=0,s.style.lineHeight=1,s.style.fontSize="1px",s.style.position="absolute",s.textContent="X",document.body.append(s),L(this,nF,s.getBoundingClientRect().height),s.remove()},Xhe=function(s,e){const t=F(this,lR).get(s);if(t)return t;const i=E(this,tg,AI).call(this,e);i.canvas.width=i.canvas.height=Bd,E(this,tg,aO).call(this,i,Bd,s);const n=i.measureText("");let o=n.fontBoundingBoxAscent,l=Math.abs(n.fontBoundingBoxDescent);if(o){const d=o/(o+l);return F(this,lR).set(s,d),i.canvas.width=i.canvas.height=0,d}i.strokeStyle="red",i.clearRect(0,0,Bd,Bd),i.strokeText("g",0,0);let r=i.getImageData(0,0,Bd,Bd).data;l=0;for(let d=r.length-1-3;d>=0;d-=4)if(r[d]>0){l=Math.ceil(d/4/Bd);break}i.clearRect(0,0,Bd,Bd),i.strokeText("A",0,Bd),r=i.getImageData(0,0,Bd,Bd).data,o=0;for(let d=0,c=r.length;d<c;d+=4)if(r[d]>0){o=Bd-Math.floor(d/4/Bd);break}i.canvas.width=i.canvas.height=0;const a=o?o/(o+l):Dut;return F(this,lR).set(s,a),a},J(_l,tg),J(_l,lR,new Map),J(_l,rR,new Map),J(_l,ZI,new WeakMap),J(_l,nF,null),J(_l,by,new Set),_l);class TT{static textContent(e){const t=[],i={items:t,styles:Object.create(null)};function n(o){var l;if(!o)return;let r=null;const a=o.name;if(a==="#text")r=o.value;else if(TT.shouldBuildText(a))(l=o==null?void 0:o.attributes)!=null&&l.textContent?r=o.attributes.textContent:o.value&&(r=o.value);else return;if(r!==null&&t.push({str:r}),!!o.children)for(const d of o.children)n(d)}return n(e),i}static shouldBuildText(e){return!(e==="textarea"||e==="input"||e==="option"||e==="select")}}const Gut=65536,Eut=100,vut=5e3,xut=ka?$ht:Pht,Jut=ka?eut:ANe,Xut=ka?qht:Kht,Yut=ka?tut:WNe;function zut(s={}){typeof s=="string"||s instanceof URL?s={url:s}:(s instanceof ArrayBuffer||ArrayBuffer.isView(s))&&(s={data:s});const e=new jut,{docId:t}=e,i=s.url?_ut(s.url):null,n=s.data?Out(s.data):null,o=s.httpHeaders||null,l=s.withCredentials===!0,r=s.password??null,a=s.range instanceof GNe?s.range:null,d=Number.isInteger(s.rangeChunkSize)&&s.rangeChunkSize>0?s.rangeChunkSize:Gut;let c=s.worker instanceof eG?s.worker:null;const h=s.verbosity,u=typeof s.docBaseUrl=="string"&&!Iz(s.docBaseUrl)?s.docBaseUrl:null,m=typeof s.cMapUrl=="string"?s.cMapUrl:null,p=s.cMapPacked!==!1,g=s.CMapReaderFactory||Jut,b=typeof s.standardFontDataUrl=="string"?s.standardFontDataUrl:null,f=s.StandardFontDataFactory||Yut,Z=s.stopAtErrors!==!0,A=Number.isInteger(s.maxImageSize)&&s.maxImageSize>-1?s.maxImageSize:-1,N=s.isEvalSupported!==!1,W=typeof s.isOffscreenCanvasSupported=="boolean"?s.isOffscreenCanvasSupported:!ka,Q=typeof s.isImageDecoderSupported=="boolean"?s.isImageDecoderSupported:!ka&&(Nd.platform.isFirefox||!globalThis.chrome),R=Number.isInteger(s.canvasMaxAreaInBytes)?s.canvasMaxAreaInBytes:-1,M=typeof s.disableFontFace=="boolean"?s.disableFontFace:ka,w=s.fontExtraProperties===!0,Y=s.enableXfa===!0,G=s.ownerDocument||globalThis.document,P=s.disableRange===!0,j=s.disableStream===!0,X=s.disableAutoFetch===!0,ie=s.pdfBug===!0,se=s.CanvasFactory||xut,pe=s.FilterFactory||Xut,Ue=s.enableHWA===!0,Qe=a?a.length:s.length??NaN,He=typeof s.useSystemFonts=="boolean"?s.useSystemFonts:!ka&&!M,Te=typeof s.useWorkerFetch=="boolean"?s.useWorkerFetch:g===ANe&&f===WNe&&m&&b&&c2(m,document.baseURI)&&c2(b,document.baseURI),xe=null;Wht(h);const Je={canvasFactory:new se({ownerDocument:G,enableHWA:Ue}),filterFactory:new pe({docId:t,ownerDocument:G}),cMapReaderFactory:Te?null:new g({baseUrl:m,isCompressed:p}),standardFontDataFactory:Te?null:new f({baseUrl:b})};if(!c){const Pe={verbosity:h,port:BS.workerPort};c=Pe.port?eG.fromPort(Pe):new eG(Pe),e._worker=c}const Mt={docId:t,apiVersion:"4.10.38",data:n,password:r,disableAutoFetch:X,rangeChunkSize:d,length:Qe,docBaseUrl:u,enableXfa:Y,evaluatorOptions:{maxImageSize:A,disableFontFace:M,ignoreErrors:Z,isEvalSupported:N,isOffscreenCanvasSupported:W,isImageDecoderSupported:Q,canvasMaxAreaInBytes:R,fontExtraProperties:w,useSystemFonts:He,cMapUrl:Te?m:null,standardFontDataUrl:Te?b:null}},St={disableFontFace:M,fontExtraProperties:w,ownerDocument:G,pdfBug:ie,styleElement:xe,loadingParams:{disableAutoFetch:X,enableXfa:Y}};return c.promise.then(function(){if(e.destroyed)throw new Error("Loading aborted");if(c.destroyed)throw new Error("Worker was destroyed");const Pe=c.messageHandler.sendWithPromise("GetDocRequest",Mt,n?[n.buffer]:null);let Be;if(a)Be=new Zut(a,{disableRange:P,disableStream:j});else if(!n){if(!i)throw new Error("getDocument - no `url` parameter provided.");let rt;if(ka)if(c2(i)){if(typeof fetch>"u"||typeof Response>"u"||!("body"in Response.prototype))throw new Error("getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.");rt=Ghe}else rt=But;else rt=c2(i)?Ghe:yut;Be=new rt({url:i,length:Qe,httpHeaders:o,withCredentials:l,rangeChunkSize:d,disableRange:P,disableStream:j})}return Pe.then(rt=>{if(e.destroyed)throw new Error("Loading aborted");if(c.destroyed)throw new Error("Worker was destroyed");const Tt=new F2(t,rt,c.port),qt=new qut(Tt,e,Be,St,Je);e._transport=qt,Tt.send("Ready",null)})}).catch(e._capability.reject),e}function _ut(s){if(s instanceof URL)return s.href;try{return new URL(s,window.location).href}catch{if(ka&&typeof s=="string")return s}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function Out(s){if(ka&&typeof Buffer<"u"&&s instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(s instanceof Uint8Array&&s.byteLength===s.buffer.byteLength)return s;if(typeof s=="string")return Lz(s);if(s instanceof ArrayBuffer||ArrayBuffer.isView(s)||typeof s=="object"&&!isNaN(s==null?void 0:s.length))return new Uint8Array(s);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function Yhe(s){return typeof s=="object"&&Number.isInteger(s==null?void 0:s.num)&&s.num>=0&&Number.isInteger(s==null?void 0:s.gen)&&s.gen>=0}var sq;const INe=class DNe{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId=`d${Ad(DNe,sq)._++}`,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}async destroy(){var e,t,i,n;this.destroyed=!0;try{(e=this._worker)!=null&&e.port&&(this._worker._pendingDestroy=!0),await((t=this._transport)==null?void 0:t.destroy())}catch(o){throw(i=this._worker)!=null&&i.port&&delete this._worker._pendingDestroy,o}this._transport=null,(n=this._worker)==null||n.destroy(),this._worker=null}};sq=new WeakMap,J(INe,sq,0);let jut=INe,GNe=class{constructor(s,e,t=!1,i=null){this.length=s,this.initialData=e,this.progressiveDone=t,this.contentDispositionFilename=i,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(s){this._rangeListeners.push(s)}addProgressListener(s){this._progressListeners.push(s)}addProgressiveReadListener(s){this._progressiveReadListeners.push(s)}addProgressiveDoneListener(s){this._progressiveDoneListeners.push(s)}onDataRange(s,e){for(const t of this._rangeListeners)t(s,e)}onDataProgress(s,e){this._readyCapability.promise.then(()=>{for(const t of this._progressListeners)t(s,e)})}onDataProgressiveRead(s){this._readyCapability.promise.then(()=>{for(const e of this._progressiveReadListeners)e(s)})}onDataProgressiveDone(){this._readyCapability.promise.then(()=>{for(const s of this._progressiveDoneListeners)s()})}transportReady(){this._readyCapability.resolve()}requestDataRange(s,e){uo("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}};class Hut{constructor(e,t){this._pdfInfo=e,this._transport=t}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return Mn(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(e){return this._transport.getPage(e)}getPageIndex(e){return this._transport.getPageIndex(e)}getDestinations(){return this._transport.getDestinations()}getDestination(e){return this._transport.getDestination(e)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:e="display"}={}){const{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getOptionalContentConfig(t)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(e=!1){return this._transport.startCleanup(e||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(e){return this._transport.cachedPageNumber(e)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var yF,Pb,jm,LS,TJ;class Put{constructor(e,t,i,n=!1){J(this,jm),J(this,yF,null),J(this,Pb,!1),this._pageIndex=e,this._pageInfo=t,this._transport=i,this._stats=n?new lhe:null,this._pdfBug=n,this.commonObjs=i.commonObjs,this.objs=new ENe,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:e,rotation:t=this.rotate,offsetX:i=0,offsetY:n=0,dontFlip:o=!1}={}){return new EB({viewBox:this.view,userUnit:this.userUnit,scale:e,rotation:t,offsetX:i,offsetY:n,dontFlip:o})}getAnnotations({intent:e="display"}={}){const{renderingIntent:t}=this._transport.getRenderingIntent(e);return this._transport.getAnnotations(this._pageIndex,t)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return Mn(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){var e;return((e=this._transport._htmlForXfa)==null?void 0:e.children[this._pageIndex])||null}render({canvasContext:e,viewport:t,intent:i="display",annotationMode:n=jb.ENABLE,transform:o=null,background:l=null,optionalContentConfigPromise:r=null,annotationCanvasMap:a=null,pageColors:d=null,printAnnotationStorage:c=null,isEditing:h=!1}){var u,m;(u=this._stats)==null||u.time("Overall");const p=this._transport.getRenderingIntent(i,n,c,h),{renderingIntent:g,cacheKey:b}=p;L(this,Pb,!1),E(this,jm,TJ).call(this),r||(r=this._transport.getOptionalContentConfig(g));let f=this._intentStates.get(b);f||(f=Object.create(null),this._intentStates.set(b,f)),f.streamReaderCancelTimeout&&(clearTimeout(f.streamReaderCancelTimeout),f.streamReaderCancelTimeout=null);const Z=!!(g&Bc.PRINT);f.displayReadyCapability||(f.displayReadyCapability=Promise.withResolvers(),f.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(m=this._stats)==null||m.time("Page Request"),this._pumpOperatorList(p));const A=Q=>{var R;f.renderTasks.delete(N),(this._maybeCleanupAfterRender||Z)&&L(this,Pb,!0),E(this,jm,LS).call(this,!Z),Q?(N.capability.reject(Q),this._abortOperatorList({intentState:f,reason:Q instanceof Error?Q:new Error(Q)})):N.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(R=globalThis.Stats)!=null&&R.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},N=new emt({callback:A,params:{canvasContext:e,viewport:t,transform:o,background:l},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:a,operatorList:f.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!Z,pdfBug:this._pdfBug,pageColors:d});(f.renderTasks||(f.renderTasks=new Set)).add(N);const W=N.task;return Promise.all([f.displayReadyCapability.promise,r]).then(([Q,R])=>{var M;if(this.destroyed){A();return}if((M=this._stats)==null||M.time("Rendering"),!(R.renderingIntent&g))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");N.initializeGraphics({transparency:Q,optionalContentConfig:R}),N.operatorListChanged()}).catch(A),W}getOperatorList({intent:e="display",annotationMode:t=jb.ENABLE,printAnnotationStorage:i=null,isEditing:n=!1}={}){var o;function l(){a.operatorList.lastChunk&&(a.opListReadCapability.resolve(a.operatorList),a.renderTasks.delete(d))}const r=this._transport.getRenderingIntent(e,t,i,n,!0);let a=this._intentStates.get(r.cacheKey);a||(a=Object.create(null),this._intentStates.set(r.cacheKey,a));let d;return a.opListReadCapability||(d=Object.create(null),d.operatorListChanged=l,a.opListReadCapability=Promise.withResolvers(),(a.renderTasks||(a.renderTasks=new Set)).add(d),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(o=this._stats)==null||o.time("Page Request"),this._pumpOperatorList(r)),a.opListReadCapability.promise}streamTextContent({includeMarkedContent:e=!1,disableNormalization:t=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:e===!0,disableNormalization:t===!0},{highWaterMark:100,size(i){return i.items.length}})}getTextContent(e={}){if(this._transport._htmlForXfa)return this.getXfa().then(i=>TT.textContent(i));const t=this.streamTextContent(e);return new Promise(function(i,n){function o(){l.read().then(function({value:a,done:d}){if(d){i(r);return}r.lang??(r.lang=a.lang),Object.assign(r.styles,a.styles),r.items.push(...a.items),o()},n)}const l=t.getReader(),r={items:[],styles:Object.create(null),lang:null};o()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const e=[];for(const t of this._intentStates.values())if(this._abortOperatorList({intentState:t,reason:new Error("Page was destroyed."),force:!0}),!t.opListReadCapability)for(const i of t.renderTasks)e.push(i.completed),i.cancel();return this.objs.clear(),L(this,Pb,!1),E(this,jm,TJ).call(this),Promise.all(e)}cleanup(e=!1){L(this,Pb,!0);const t=E(this,jm,LS).call(this,!1);return e&&t&&this._stats&&(this._stats=new lhe),t}_startRenderPage(e,t){var i,n;const o=this._intentStates.get(t);o&&((i=this._stats)==null||i.timeEnd("Page Request"),(n=o.displayReadyCapability)==null||n.resolve(e))}_renderPageChunk(e,t){for(let i=0,n=e.length;i<n;i++)t.operatorList.fnArray.push(e.fnArray[i]),t.operatorList.argsArray.push(e.argsArray[i]);t.operatorList.lastChunk=e.lastChunk,t.operatorList.separateAnnots=e.separateAnnots;for(const i of t.renderTasks)i.operatorListChanged();e.lastChunk&&E(this,jm,LS).call(this,!0)}_pumpOperatorList({renderingIntent:e,cacheKey:t,annotationStorageSerializable:i,modifiedIds:n}){const{map:o,transfer:l}=i,r=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:e,cacheKey:t,annotationStorage:o,modifiedIds:n},l).getReader(),a=this._intentStates.get(t);a.streamReader=r;const d=()=>{r.read().then(({value:c,done:h})=>{if(h){a.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(c,a),d())},c=>{if(a.streamReader=null,!this._transport.destroyed){if(a.operatorList){a.operatorList.lastChunk=!0;for(const h of a.renderTasks)h.operatorListChanged();E(this,jm,LS).call(this,!0)}if(a.displayReadyCapability)a.displayReadyCapability.reject(c);else if(a.opListReadCapability)a.opListReadCapability.reject(c);else throw c}})};d()}_abortOperatorList({intentState:e,reason:t,force:i=!1}){if(e.streamReader){if(e.streamReaderCancelTimeout&&(clearTimeout(e.streamReaderCancelTimeout),e.streamReaderCancelTimeout=null),!i){if(e.renderTasks.size>0)return;if(t instanceof $ie){let n=Eut;t.extraDelay>0&&t.extraDelay<1e3&&(n+=t.extraDelay),e.streamReaderCancelTimeout=setTimeout(()=>{e.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:e,reason:t,force:!0})},n);return}}if(e.streamReader.cancel(new hf(t.message)).catch(()=>{}),e.streamReader=null,!this._transport.destroyed){for(const[n,o]of this._intentStates)if(o===e){this._intentStates.delete(n);break}this.cleanup()}}}get stats(){return this._stats}}yF=new WeakMap,Pb=new WeakMap,jm=new WeakSet,LS=function(s=!1){if(E(this,jm,TJ).call(this),!F(this,Pb)||this.destroyed)return!1;if(s)return L(this,yF,setTimeout(()=>{L(this,yF,null),E(this,jm,LS).call(this,!1)},vut)),!1;for(const{renderTasks:e,operatorList:t}of this._intentStates.values())if(e.size>0||!t.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),L(this,Pb,!1),!0},TJ=function(){F(this,yF)&&(clearTimeout(F(this,yF)),L(this,yF,null))};var gb,oq;class Kut{constructor(){J(this,gb,new Map),J(this,oq,Promise.resolve())}postMessage(e,t){const i={data:structuredClone(e,t?{transfer:t}:null)};F(this,oq).then(()=>{for(const[n]of F(this,gb))n.call(this,i)})}addEventListener(e,t,i=null){let n=null;if((i==null?void 0:i.signal)instanceof AbortSignal){const{signal:o}=i;if(o.aborted){rn("LoopbackPort - cannot use an `aborted` signal.");return}const l=()=>this.removeEventListener(e,t);n=()=>o.removeEventListener("abort",l),o.addEventListener("abort",l)}F(this,gb).set(t,n)}removeEventListener(e,t){const i=F(this,gb).get(t);i==null||i(),F(this,gb).delete(t)}terminate(){for(const[,e]of F(this,gb))e==null||e();F(this,gb).clear()}}gb=new WeakMap,oq=new WeakMap;var Eo,dO,dR,sF,Uy,NI,fy,RI;let eG=(Eo=class{constructor({name:s=null,port:e=null,verbosity:t=Vht()}={}){J(this,Uy);var i;if(this.name=s,this.destroyed=!1,this.verbosity=t,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,e){if((i=F(Eo,sF))!=null&&i.has(e))throw new Error("Cannot use more than one PDFWorker per port.");(F(Eo,sF)||L(Eo,sF,new WeakMap)).set(e,this),this._initializeFromPort(e);return}this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(s){this._port=s,this._messageHandler=new F2("main","worker",s),this._messageHandler.on("ready",function(){}),E(this,Uy,NI).call(this)}_initialize(){if(F(Eo,dR)||F(Eo,fy,RI)){this._setupFakeWorker();return}let{workerSrc:s}=Eo;try{Eo._isSameOrigin(window.location.href,s)||(s=Eo._createCDNWrapper(new URL(s,window.location).href));const e=new Worker(s,{type:"module"}),t=new F2("main","worker",e),i=()=>{n.abort(),t.destroy(),e.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},n=new AbortController;e.addEventListener("error",()=>{this._webWorker||i()},{signal:n.signal}),t.on("test",l=>{if(n.abort(),this.destroyed||!l){i();return}this._messageHandler=t,this._port=e,this._webWorker=e,E(this,Uy,NI).call(this)}),t.on("ready",l=>{if(n.abort(),this.destroyed){i();return}try{o()}catch{this._setupFakeWorker()}});const o=()=>{const l=new Uint8Array;t.send("test",l,[l.buffer])};o();return}catch{Bz("The worker has been disabled.")}this._setupFakeWorker()}_setupFakeWorker(){F(Eo,dR)||(rn("Setting up fake worker."),L(Eo,dR,!0)),Eo._setupFakeWorkerGlobal.then(s=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const e=new Kut;this._port=e;const t=`fake${Ad(Eo,dO)._++}`,i=new F2(t+"_worker",t,e);s.setup(i,e),this._messageHandler=new F2(t,t+"_worker",e),E(this,Uy,NI).call(this)}).catch(s=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${s.message}".`))})}destroy(){var s,e,t;this.destroyed=!0,(s=this._webWorker)==null||s.terminate(),this._webWorker=null,(e=F(Eo,sF))==null||e.delete(this._port),this._port=null,(t=this._messageHandler)==null||t.destroy(),this._messageHandler=null}static fromPort(s){var e;if(!(s!=null&&s.port))throw new Error("PDFWorker.fromPort - invalid method signature.");const t=(e=F(this,sF))==null?void 0:e.get(s.port);if(t){if(t._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return t}return new Eo(s)}static get workerSrc(){if(BS.workerSrc)return BS.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return Mn(this,"_setupFakeWorkerGlobal",(async()=>F(this,fy,RI)?F(this,fy,RI):(await Ut(()=>import(this.workerSrc),[],import.meta.url)).WorkerMessageHandler)())}},dO=new WeakMap,dR=new WeakMap,sF=new WeakMap,Uy=new WeakSet,NI=function(){this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})},fy=new WeakSet,RI=function(){var s;try{return((s=globalThis.pdfjsWorker)==null?void 0:s.WorkerMessageHandler)||null}catch{return null}},J(Eo,fy),J(Eo,dO,0),J(Eo,dR,!1),J(Eo,sF),ka&&(L(Eo,dR,!0),BS.workerSrc||(BS.workerSrc="./pdf.worker.mjs")),Eo._isSameOrigin=(s,e)=>{let t;try{if(t=new URL(s),!t.origin||t.origin==="null")return!1}catch{return!1}const i=new URL(e,t);return t.origin===i.origin},Eo._createCDNWrapper=s=>{const e=`await import("${s}");`;return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},Eo);var Kb,ag,V2,Q2,bb,ER,y2;class qut{constructor(e,t,i,n,o){J(this,ER),J(this,Kb,new Map),J(this,ag,new Map),J(this,V2,new Map),J(this,Q2,new Map),J(this,bb,null),this.messageHandler=e,this.loadingTask=t,this.commonObjs=new ENe,this.fontLoader=new jht({ownerDocument:n.ownerDocument,styleElement:n.styleElement}),this.loadingParams=n.loadingParams,this._params=n,this.canvasFactory=o.canvasFactory,this.filterFactory=o.filterFactory,this.cMapReaderFactory=o.cMapReaderFactory,this.standardFontDataFactory=o.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=i,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}get annotationStorage(){return Mn(this,"annotationStorage",new nne)}getRenderingIntent(e,t=jb.ENABLE,i=null,n=!1,o=!1){let l=Bc.DISPLAY,r=j6;switch(e){case"any":l=Bc.ANY;break;case"display":break;case"print":l=Bc.PRINT;break;default:rn(`getRenderingIntent - invalid intent: ${e}`)}const a=l&Bc.PRINT&&i instanceof UNe?i:this.annotationStorage;switch(t){case jb.DISABLE:l+=Bc.ANNOTATIONS_DISABLE;break;case jb.ENABLE:break;case jb.ENABLE_FORMS:l+=Bc.ANNOTATIONS_FORMS;break;case jb.ENABLE_STORAGE:l+=Bc.ANNOTATIONS_STORAGE,r=a.serializable;break;default:rn(`getRenderingIntent - invalid annotationMode: ${t}`)}n&&(l+=Bc.IS_EDITING),o&&(l+=Bc.OPLIST);const{ids:d,hash:c}=a.modifiedIds,h=[l,r.hash,c];return{renderingIntent:l,cacheKey:h.join("_"),annotationStorageSerializable:r,modifiedIds:d}}destroy(){var e;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(e=F(this,bb))==null||e.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const n of F(this,ag).values())t.push(n._destroy());F(this,ag).clear(),F(this,V2).clear(),F(this,Q2).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const i=this.messageHandler.sendWithPromise("Terminate",null);return t.push(i),Promise.all(t).then(()=>{var n,o;this.commonObjs.clear(),this.fontLoader.clear(),F(this,Kb).clear(),this.filterFactory.destroy(),nq.cleanup(),(n=this._networkStream)==null||n.cancelAllRequests(new hf("Worker was terminated.")),(o=this.messageHandler)==null||o.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:e,loadingTask:t}=this;e.on("GetReader",(i,n)=>{Ll(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=o=>{this._lastProgress={loaded:o.loaded,total:o.total}},n.onPull=()=>{this._fullReader.read().then(function({value:o,done:l}){if(l){n.close();return}Ll(o instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),n.enqueue(new Uint8Array(o),1,[o])}).catch(o=>{n.error(o)})},n.onCancel=o=>{this._fullReader.cancel(o),n.ready.catch(l=>{if(!this.destroyed)throw l})}}),e.on("ReaderHeadersReady",async i=>{var n;await this._fullReader.headersReady;const{isStreamingSupported:o,isRangeSupported:l,contentLength:r}=this._fullReader;return(!o||!l)&&(this._lastProgress&&((n=t.onProgress)==null||n.call(t,this._lastProgress)),this._fullReader.onProgress=a=>{var d;(d=t.onProgress)==null||d.call(t,{loaded:a.loaded,total:a.total})}),{isStreamingSupported:o,isRangeSupported:l,contentLength:r}}),e.on("GetRangeReader",(i,n)=>{Ll(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const o=this._networkStream.getRangeReader(i.begin,i.end);if(!o){n.close();return}n.onPull=()=>{o.read().then(function({value:l,done:r}){if(r){n.close();return}Ll(l instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),n.enqueue(new Uint8Array(l),1,[l])}).catch(l=>{n.error(l)})},n.onCancel=l=>{o.cancel(l),n.ready.catch(r=>{if(!this.destroyed)throw r})}}),e.on("GetDoc",({pdfInfo:i})=>{this._numPages=i.numPages,this._htmlForXfa=i.htmlForXfa,delete i.htmlForXfa,t._capability.resolve(new Hut(i,this))}),e.on("DocException",i=>{t._capability.reject(Jd(i))}),e.on("PasswordRequest",i=>{L(this,bb,Promise.withResolvers());try{if(!t.onPassword)throw Jd(i);const n=o=>{o instanceof Error?F(this,bb).reject(o):F(this,bb).resolve({password:o})};t.onPassword(n,i.code)}catch(n){F(this,bb).reject(n)}return F(this,bb).promise}),e.on("DataLoaded",i=>{var n;(n=t.onProgress)==null||n.call(t,{loaded:i.length,total:i.length}),this.downloadInfoCapability.resolve(i)}),e.on("StartRenderPage",i=>{this.destroyed||F(this,ag).get(i.pageIndex)._startRenderPage(i.transparency,i.cacheKey)}),e.on("commonobj",([i,n,o])=>{var l;if(this.destroyed||this.commonObjs.has(i))return null;switch(n){case"Font":const{disableFontFace:r,fontExtraProperties:a,pdfBug:d}=this._params;if("error"in o){const m=o.error;rn(`Error during font loading: ${m}`),this.commonObjs.resolve(i,m);break}const c=d&&(l=globalThis.FontInspector)!=null&&l.enabled?(m,p)=>globalThis.FontInspector.fontAdded(m,p):null,h=new Hht(o,{disableFontFace:r,fontExtraProperties:a,inspectFont:c});this.fontLoader.bind(h).catch(()=>e.sendWithPromise("FontFallback",{id:i})).finally(()=>{!a&&h.data&&(h.data=null),this.commonObjs.resolve(i,h)});break;case"CopyLocalImage":const{imageRef:u}=o;Ll(u,"The imageRef must be defined.");for(const m of F(this,ag).values())for(const[,p]of m.objs)if((p==null?void 0:p.ref)===u)return p.dataLen?(this.commonObjs.resolve(i,structuredClone(p)),p.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(i,o);break;default:throw new Error(`Got unknown common object type ${n}`)}return null}),e.on("obj",([i,n,o,l])=>{var r;if(this.destroyed)return;const a=F(this,ag).get(n);if(!a.objs.has(i)){if(a._intentStates.size===0){(r=l==null?void 0:l.bitmap)==null||r.close();return}switch(o){case"Image":a.objs.resolve(i,l),(l==null?void 0:l.dataLen)>Aht&&(a._maybeCleanupAfterRender=!0);break;case"Pattern":a.objs.resolve(i,l);break;default:throw new Error(`Got unknown object type ${o}`)}}}),e.on("DocProgress",i=>{var n;this.destroyed||(n=t.onProgress)==null||n.call(t,{loaded:i.loaded,total:i.total})}),e.on("FetchBuiltInCMap",async i=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.cMapReaderFactory)throw new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.");return this.cMapReaderFactory.fetch(i)}),e.on("FetchStandardFontData",async i=>{if(this.destroyed)throw new Error("Worker was destroyed.");if(!this.standardFontDataFactory)throw new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.");return this.standardFontDataFactory.fetch(i)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var e;this.annotationStorage.size<=0&&rn("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfer:i}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:((e=this._fullReader)==null?void 0:e.filename)??null},i).finally(()=>{this.annotationStorage.resetModified()})}getPage(e){if(!Number.isInteger(e)||e<=0||e>this._numPages)return Promise.reject(new Error("Invalid page request."));const t=e-1,i=F(this,V2).get(t);if(i)return i;const n=this.messageHandler.sendWithPromise("GetPage",{pageIndex:t}).then(o=>{if(this.destroyed)throw new Error("Transport destroyed");o.refStr&&F(this,Q2).set(o.refStr,e);const l=new Put(t,o,this,this._params.pdfBug);return F(this,ag).set(t,l),l});return F(this,V2).set(t,n),n}getPageIndex(e){return Yhe(e)?this.messageHandler.sendWithPromise("GetPageIndex",{num:e.num,gen:e.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(e,t){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:e,intent:t})}getFieldObjects(){return E(this,ER,y2).call(this,"GetFieldObjects")}hasJSActions(){return E(this,ER,y2).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(e){return typeof e!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:e})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return E(this,ER,y2).call(this,"GetDocJSActions")}getPageJSActions(e){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:e})}getStructTree(e){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:e})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(e){return E(this,ER,y2).call(this,"GetOptionalContentConfig").then(t=>new Fut(t,e))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const e="GetMetadata",t=F(this,Kb).get(e);if(t)return t;const i=this.messageHandler.sendWithPromise(e,null).then(n=>{var o,l;return{info:n[0],metadata:n[1]?new Uut(n[1]):null,contentDispositionFilename:((o=this._fullReader)==null?void 0:o.filename)??null,contentLength:((l=this._fullReader)==null?void 0:l.contentLength)??null}});return F(this,Kb).set(e,i),i}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(e=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of F(this,ag).values())if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`);this.commonObjs.clear(),e||this.fontLoader.clear(),F(this,Kb).clear(),this.filterFactory.destroy(!0),nq.cleanup()}}cachedPageNumber(e){if(!Yhe(e))return null;const t=e.gen===0?`${e.num}R`:`${e.num}R${e.gen}`;return F(this,Q2).get(t)??null}}Kb=new WeakMap,ag=new WeakMap,V2=new WeakMap,Q2=new WeakMap,bb=new WeakMap,ER=new WeakSet,y2=function(s,e=null){const t=F(this,Kb).get(s);if(t)return t;const i=this.messageHandler.sendWithPromise(s,e);return F(this,Kb).set(s,i),i};const C2=Symbol("INITIAL_DATA");var fh,tG,lq;class ENe{constructor(){J(this,tG),J(this,fh,Object.create(null))}get(e,t=null){if(t){const n=E(this,tG,lq).call(this,e);return n.promise.then(()=>t(n.data)),null}const i=F(this,fh)[e];if(!i||i.data===C2)throw new Error(`Requesting object that isn't resolved yet ${e}.`);return i.data}has(e){const t=F(this,fh)[e];return!!t&&t.data!==C2}delete(e){const t=F(this,fh)[e];return!t||t.data===C2?!1:(delete F(this,fh)[e],!0)}resolve(e,t=null){const i=E(this,tG,lq).call(this,e);i.data=t,i.resolve()}clear(){var e;for(const t in F(this,fh)){const{data:i}=F(this,fh)[t];(e=i==null?void 0:i.bitmap)==null||e.close()}L(this,fh,Object.create(null))}*[Symbol.iterator](){for(const e in F(this,fh)){const{data:t}=F(this,fh)[e];t!==C2&&(yield[e,t])}}}fh=new WeakMap,tG=new WeakSet,lq=function(s){var e;return(e=F(this,fh))[s]||(e[s]={...Promise.withResolvers(),data:C2})};var CF;class $ut{constructor(e){J(this,CF,null),L(this,CF,e),this.onContinue=null}get promise(){return F(this,CF).capability.promise}cancel(e=0){F(this,CF).cancel(null,e)}get separateAnnots(){const{separateAnnots:e}=F(this,CF).operatorList;if(!e)return!1;const{annotationCanvasMap:t}=F(this,CF);return e.form||e.canvas&&(t==null?void 0:t.size)>0}}CF=new WeakMap;var wF,kS;const vNe=class w2{constructor({callback:e,params:t,objs:i,commonObjs:n,annotationCanvasMap:o,operatorList:l,pageIndex:r,canvasFactory:a,filterFactory:d,useRequestAnimationFrame:c=!1,pdfBug:h=!1,pageColors:u=null}){J(this,wF,null),this.callback=e,this.params=t,this.objs=i,this.commonObjs=n,this.annotationCanvasMap=o,this.operatorListIdx=null,this.operatorList=l,this._pageIndex=r,this.canvasFactory=a,this.filterFactory=d,this._pdfBug=h,this.pageColors=u,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=c===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new $ut(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=t.canvasContext.canvas}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:e=!1,optionalContentConfig:t}){var i,n;if(this.cancelled)return;if(this._canvas){if(F(w2,kS).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");F(w2,kS).add(this._canvas)}this._pdfBug&&(i=globalThis.StepperManager)!=null&&i.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:o,viewport:l,transform:r,background:a}=this.params;this.gfx=new HD(o,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:t},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:r,viewport:l,transparency:e,background:a}),this.operatorListIdx=0,this.graphicsReady=!0,(n=this.graphicsReadyCallback)==null||n.call(this)}cancel(e=null,t=0){var i;this.running=!1,this.cancelled=!0,(i=this.gfx)==null||i.endDrawing(),F(this,wF)&&(window.cancelAnimationFrame(F(this,wF)),L(this,wF,null)),F(w2,kS).delete(this._canvas),this.callback(e||new $ie(`Rendering cancelled, page ${this._pageIndex+1}`,t))}operatorListChanged(){var e;if(!this.graphicsReady){this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound);return}(e=this.stepper)==null||e.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?L(this,wF,window.requestAnimationFrame(()=>{L(this,wF,null),this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),F(w2,kS).delete(this._canvas),this.callback())))}};wF=new WeakMap,kS=new WeakMap,J(vNe,kS,new WeakSet);let emt=vNe;const tmt="4.10.38",imt="f9bea397f";cs(670);function zhe(s){return Math.floor(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0")}function Fy(s){return Math.max(0,Math.min(255,255*s))}class _he{static CMYK_G([e,t,i,n]){return["G",1-Math.min(1,.3*e+.59*i+.11*t+n)]}static G_CMYK([e]){return["CMYK",0,0,0,1-e]}static G_RGB([e]){return["RGB",e,e,e]}static G_rgb([e]){return e=Fy(e),[e,e,e]}static G_HTML([e]){const t=zhe(e);return`#${t}${t}${t}`}static RGB_G([e,t,i]){return["G",.3*e+.59*t+.11*i]}static RGB_rgb(e){return e.map(Fy)}static RGB_HTML(e){return`#${e.map(zhe).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([e,t,i,n]){return["RGB",1-Math.min(1,e+n),1-Math.min(1,i+n),1-Math.min(1,t+n)]}static CMYK_rgb([e,t,i,n]){return[Fy(1-Math.min(1,e+n)),Fy(1-Math.min(1,i+n)),Fy(1-Math.min(1,t+n))]}static CMYK_HTML(e){const t=this.CMYK_RGB(e).slice(1);return this.RGB_HTML(t)}static RGB_CMYK([e,t,i]){const n=1-e,o=1-t,l=1-i,r=Math.min(n,o,l);return["CMYK",n,o,l,r]}}class nmt{create(e,t,i=!1){if(e<=0||t<=0)throw new Error("Invalid SVG dimensions");const n=this._createSVG("svg:svg");return n.setAttribute("version","1.1"),i||(n.setAttribute("width",`${e}px`),n.setAttribute("height",`${t}px`)),n.setAttribute("preserveAspectRatio","none"),n.setAttribute("viewBox",`0 0 ${e} ${t}`),n}createElement(e){if(typeof e!="string")throw new Error("Invalid SVG element type");return this._createSVG(e)}_createSVG(e){uo("Abstract method `_createSVG` called.")}}let one=class extends nmt{_createSVG(s){return document.createElementNS(og,s)}},xNe=class{static setupStorage(s,e,t,i,n){const o=i.getValue(e,{value:null});switch(t.name){case"textarea":if(o.value!==null&&(s.textContent=o.value),n==="print")break;s.addEventListener("input",l=>{i.setValue(e,{value:l.target.value})});break;case"input":if(t.attributes.type==="radio"||t.attributes.type==="checkbox"){if(o.value===t.attributes.xfaOn?s.setAttribute("checked",!0):o.value===t.attributes.xfaOff&&s.removeAttribute("checked"),n==="print")break;s.addEventListener("change",l=>{i.setValue(e,{value:l.target.checked?l.target.getAttribute("xfaOn"):l.target.getAttribute("xfaOff")})})}else{if(o.value!==null&&s.setAttribute("value",o.value),n==="print")break;s.addEventListener("input",l=>{i.setValue(e,{value:l.target.value})})}break;case"select":if(o.value!==null){s.setAttribute("value",o.value);for(const l of t.children)l.attributes.value===o.value?l.attributes.selected=!0:l.attributes.hasOwnProperty("selected")&&delete l.attributes.selected}s.addEventListener("input",l=>{const r=l.target.options,a=r.selectedIndex===-1?"":r[r.selectedIndex].value;i.setValue(e,{value:a})});break}}static setAttributes({html:s,element:e,storage:t=null,intent:i,linkService:n}){const{attributes:o}=e,l=s instanceof HTMLAnchorElement;o.type==="radio"&&(o.name=`${o.name}-${i}`);for(const[r,a]of Object.entries(o))if(a!=null)switch(r){case"class":a.length&&s.setAttribute(r,a.join(" "));break;case"dataId":break;case"id":s.setAttribute("data-element-id",a);break;case"style":Object.assign(s.style,a);break;case"textContent":s.textContent=a;break;default:(!l||r!=="href"&&r!=="newWindow")&&s.setAttribute(r,a)}l&&n.addLinkAttributes(s,o.href,o.newWindow),t&&o.dataId&&this.setupStorage(s,o.dataId,e,t)}static render(s){var e,t;const i=s.annotationStorage,n=s.linkService,o=s.xfaHtml,l=s.intent||"display",r=document.createElement(o.name);o.attributes&&this.setAttributes({html:r,element:o,intent:l,linkService:n});const a=l!=="richText",d=s.div;if(d.append(r),s.viewport){const u=`matrix(${s.viewport.transform.join(",")})`;d.style.transform=u}a&&d.setAttribute("class","xfaLayer xfaFont");const c=[];if(o.children.length===0){if(o.value){const u=document.createTextNode(o.value);r.append(u),a&&TT.shouldBuildText(o.name)&&c.push(u)}return{textDivs:c}}const h=[[o,-1,r]];for(;h.length>0;){const[u,m,p]=h.at(-1);if(m+1===u.children.length){h.pop();continue}const g=u.children[++h.at(-1)[1]];if(g===null)continue;const{name:b}=g;if(b==="#text"){const Z=document.createTextNode(g.value);c.push(Z),p.append(Z);continue}const f=(e=g==null?void 0:g.attributes)!=null&&e.xmlns?document.createElementNS(g.attributes.xmlns,b):document.createElement(b);if(p.append(f),g.attributes&&this.setAttributes({html:f,element:g,storage:i,intent:l,linkService:n}),((t=g.children)==null?void 0:t.length)>0)h.push([g,-1,f]);else if(g.value){const Z=document.createTextNode(g.value);a&&TT.shouldBuildText(b)&&c.push(Z),f.append(Z)}}for(const u of d.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))u.setAttribute("readOnly",!0);return{textDivs:c}}static update(s){const e=`matrix(${s.viewport.transform.join(",")})`;s.div.style.transform=e,s.div.hidden=!1}};const xB=1e3,smt=9,OA=new WeakSet;function uf(s){return{width:s[2]-s[0],height:s[3]-s[1]}}class omt{static create(e){switch(e.data.annotationType){case jl.LINK:return new zNe(e);case jl.TEXT:return new rmt(e);case jl.WIDGET:switch(e.data.fieldType){case"Tx":return new amt(e);case"Btn":return e.data.radioButton?new _Ne(e):e.data.checkBox?new cmt(e):new hmt(e);case"Ch":return new umt(e);case"Sig":return new dmt(e)}return new uN(e);case jl.POPUP:return new aq(e);case jl.FREETEXT:return new HNe(e);case jl.LINE:return new pmt(e);case jl.SQUARE:return new gmt(e);case jl.CIRCLE:return new bmt(e);case jl.POLYLINE:return new PNe(e);case jl.CARET:return new fmt(e);case jl.INK:return new lne(e);case jl.POLYGON:return new Umt(e);case jl.HIGHLIGHT:return new KNe(e);case jl.UNDERLINE:return new Fmt(e);case jl.SQUIGGLY:return new Zmt(e);case jl.STRIKEOUT:return new Amt(e);case jl.STAMP:return new qNe(e);case jl.FILEATTACHMENT:return new Nmt(e);default:return new or(e)}}}var MF,M2,T2,iG,rq;const lmt=class JNe{constructor(e,{isRenderable:t=!1,ignoreBorder:i=!1,createQuadrilaterals:n=!1}={}){J(this,iG),J(this,MF,null),J(this,M2,!1),J(this,T2,null),this.isRenderable=t,this.data=e.data,this.layer=e.layer,this.linkService=e.linkService,this.downloadManager=e.downloadManager,this.imageResourcesPath=e.imageResourcesPath,this.renderForms=e.renderForms,this.svgFactory=e.svgFactory,this.annotationStorage=e.annotationStorage,this.enableScripting=e.enableScripting,this.hasJSActions=e.hasJSActions,this._fieldObjects=e.fieldObjects,this.parent=e.parent,t&&(this.container=this._createContainer(i)),n&&this._createQuadrilaterals()}static _hasPopupData({titleObj:e,contentsObj:t,richText:i}){return!!(e!=null&&e.str||t!=null&&t.str||i!=null&&i.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return JNe._hasPopupData(this.data)}updateEdited(e){var t;if(!this.container)return;F(this,MF)||L(this,MF,{rect:this.data.rect.slice(0)});const{rect:i}=e;i&&E(this,iG,rq).call(this,i),(t=F(this,T2))==null||t.popup.updateEdited(e)}resetEdited(){var e;F(this,MF)&&(E(this,iG,rq).call(this,F(this,MF).rect),(e=F(this,T2))==null||e.popup.resetEdited(),L(this,MF,null))}_createContainer(e){const{data:t,parent:{page:i,viewport:n}}=this,o=document.createElement("section");o.setAttribute("data-annotation-id",t.id),this instanceof uN||(o.tabIndex=xB);const{style:l}=o;if(l.zIndex=this.parent.zIndex++,t.alternativeText&&(o.title=t.alternativeText),t.noRotate&&o.classList.add("norotate"),!t.rect||this instanceof aq){const{rotation:g}=t;return!t.hasOwnCanvas&&g!==0&&this.setRotation(g,o),o}const{width:r,height:a}=uf(t.rect);if(!e&&t.borderStyle.width>0){l.borderWidth=`${t.borderStyle.width}px`;const g=t.borderStyle.horizontalCornerRadius,b=t.borderStyle.verticalCornerRadius;if(g>0||b>0){const Z=`calc(${g}px * var(--scale-factor)) / calc(${b}px * var(--scale-factor))`;l.borderRadius=Z}else if(this instanceof _Ne){const Z=`calc(${r}px * var(--scale-factor)) / calc(${a}px * var(--scale-factor))`;l.borderRadius=Z}switch(t.borderStyle.style){case ey.SOLID:l.borderStyle="solid";break;case ey.DASHED:l.borderStyle="dashed";break;case ey.BEVELED:rn("Unimplemented border style: beveled");break;case ey.INSET:rn("Unimplemented border style: inset");break;case ey.UNDERLINE:l.borderBottomStyle="solid";break}const f=t.borderColor||null;f?(L(this,M2,!0),l.borderColor=Ui.makeHexColor(f[0]|0,f[1]|0,f[2]|0)):l.borderWidth=0}const d=Ui.normalizeRect([t.rect[0],i.view[3]-t.rect[1]+i.view[1],t.rect[2],i.view[3]-t.rect[3]+i.view[1]]),{pageWidth:c,pageHeight:h,pageX:u,pageY:m}=n.rawDims;l.left=`${100*(d[0]-u)/c}%`,l.top=`${100*(d[1]-m)/h}%`;const{rotation:p}=t;return t.hasOwnCanvas||p===0?(l.width=`${100*r/c}%`,l.height=`${100*a/h}%`):this.setRotation(p,o),o}setRotation(e,t=this.container){if(!this.data.rect)return;const{pageWidth:i,pageHeight:n}=this.parent.viewport.rawDims,{width:o,height:l}=uf(this.data.rect);let r,a;e%180===0?(r=100*o/i,a=100*l/n):(r=100*l/i,a=100*o/n),t.style.width=`${r}%`,t.style.height=`${a}%`,t.setAttribute("data-main-rotation",(360-e)%360)}get _commonActions(){const e=(t,i,n)=>{const o=n.detail[t],l=o[0],r=o.slice(1);n.target.style[i]=_he[`${l}_HTML`](r),this.annotationStorage.setValue(this.data.id,{[i]:_he[`${l}_rgb`](r)})};return Mn(this,"_commonActions",{display:t=>{const{display:i}=t.detail,n=i%2===1;this.container.style.visibility=n?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:n,noPrint:i===1||i===2})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:i}=t.detail;this.container.style.visibility=i?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:i,noView:i})},focus:t=>{setTimeout(()=>t.target.focus({preventScroll:!1}),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{e("bgColor","backgroundColor",t)},fillColor:t=>{e("fillColor","backgroundColor",t)},fgColor:t=>{e("fgColor","color",t)},textColor:t=>{e("textColor","color",t)},borderColor:t=>{e("borderColor","borderColor",t)},strokeColor:t=>{e("strokeColor","borderColor",t)},rotation:t=>{const i=t.detail.rotation;this.setRotation(i),this.annotationStorage.setValue(this.data.id,{rotation:i})}})}_dispatchEventFromSandbox(e,t){const i=this._commonActions;for(const n of Object.keys(t.detail)){const o=e[n]||i[n];o==null||o(t)}}_setDefaultPropertiesFromJS(e){if(!this.enableScripting)return;const t=this.annotationStorage.getRawValue(this.data.id);if(!t)return;const i=this._commonActions;for(const[n,o]of Object.entries(t)){const l=i[n];if(l){const r={detail:{[n]:o},target:e};l(r),delete t[n]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:e}=this.data;if(!e)return;const[t,i,n,o]=this.data.rect.map(g=>Math.fround(g));if(e.length===8){const[g,b,f,Z]=e.subarray(2,6);if(n===g&&o===b&&t===f&&i===Z)return}const{style:l}=this.container;let r;if(F(this,M2)){const{borderColor:g,borderWidth:b}=l;l.borderWidth=0,r=["url('data:image/svg+xml;utf8,",'<svg xmlns="http://www.w3.org/2000/svg"',' preserveAspectRatio="none" viewBox="0 0 1 1">',`<g fill="transparent" stroke="${g}" stroke-width="${b}">`],this.container.classList.add("hasBorder")}const a=n-t,d=o-i,{svgFactory:c}=this,h=c.createElement("svg");h.classList.add("quadrilateralsContainer"),h.setAttribute("width",0),h.setAttribute("height",0);const u=c.createElement("defs");h.append(u);const m=c.createElement("clipPath"),p=`clippath_${this.data.id}`;m.setAttribute("id",p),m.setAttribute("clipPathUnits","objectBoundingBox"),u.append(m);for(let g=2,b=e.length;g<b;g+=8){const f=e[g],Z=e[g+1],A=e[g+2],N=e[g+3],W=c.createElement("rect"),Q=(A-t)/a,R=(o-Z)/d,M=(f-A)/a,w=(Z-N)/d;W.setAttribute("x",Q),W.setAttribute("y",R),W.setAttribute("width",M),W.setAttribute("height",w),m.append(W),r==null||r.push(`<rect vector-effect="non-scaling-stroke" x="${Q}" y="${R}" width="${M}" height="${w}"/>`)}F(this,M2)&&(r.push("</g></svg>')"),l.backgroundImage=r.join("")),this.container.append(h),this.container.style.clipPath=`url(#${p})`}_createPopup(){const{data:e}=this,t=L(this,T2,new aq({data:{color:e.color,titleObj:e.titleObj,modificationDate:e.modificationDate,contentsObj:e.contentsObj,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(t.render())}render(){uo("Abstract method `AnnotationElement.render` called")}_getElementsByName(e,t=null){const i=[];if(this._fieldObjects){const n=this._fieldObjects[e];if(n)for(const{page:o,id:l,exportValues:r}of n){if(o===-1||l===t)continue;const a=typeof r=="string"?r:null,d=document.querySelector(`[data-element-id="${l}"]`);if(d&&!OA.has(d)){rn(`_getElementsByName - element not allowed: ${l}`);continue}i.push({id:l,exportValue:a,domElement:d})}return i}for(const n of document.getElementsByName(e)){const{exportValue:o}=n,l=n.getAttribute("data-element-id");l!==t&&OA.has(n)&&i.push({id:l,exportValue:o,domElement:n})}return i}show(){var e;this.container&&(this.container.hidden=!1),(e=this.popup)==null||e.maybeShow()}hide(){var e;this.container&&(this.container.hidden=!0),(e=this.popup)==null||e.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const e=this.getElementsToTriggerPopup();if(Array.isArray(e))for(const t of e)t.classList.add("highlightArea");else e.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:e,data:{id:t}}=this;this.container.addEventListener("dblclick",()=>{var i;(i=this.linkService.eventBus)==null||i.dispatch("switchannotationeditormode",{source:this,mode:e,editId:t})})}};MF=new WeakMap,M2=new WeakMap,T2=new WeakMap,iG=new WeakSet,rq=function(s){const{container:{style:e},data:{rect:t,rotation:i},parent:{viewport:{rawDims:{pageWidth:n,pageHeight:o,pageX:l,pageY:r}}}}=this;t==null||t.splice(0,4,...s);const{width:a,height:d}=uf(s);e.left=`${100*(s[0]-l)/n}%`,e.top=`${100*(o-s[3]+r)/o}%`,i===0?(e.width=`${100*a/n}%`,e.height=`${100*d/o}%`):this.setRotation(i)};let or=lmt;var Hm,TZ,XNe,YNe;class zNe extends or{constructor(e,t=null){super(e,{isRenderable:!0,ignoreBorder:!!(t!=null&&t.ignoreBorder),createQuadrilaterals:!0}),J(this,Hm),this.isTooltipOnly=e.data.isTooltipOnly}render(){const{data:e,linkService:t}=this,i=document.createElement("a");i.setAttribute("data-element-id",e.id);let n=!1;return e.url?(t.addLinkAttributes(i,e.url,e.newWindow),n=!0):e.action?(this._bindNamedAction(i,e.action),n=!0):e.attachment?(E(this,Hm,XNe).call(this,i,e.attachment,e.attachmentDest),n=!0):e.setOCGState?(E(this,Hm,YNe).call(this,i,e.setOCGState),n=!0):e.dest?(this._bindLink(i,e.dest),n=!0):(e.actions&&(e.actions.Action||e.actions["Mouse Up"]||e.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(i,e),n=!0),e.resetForm?(this._bindResetFormAction(i,e.resetForm),n=!0):this.isTooltipOnly&&!n&&(this._bindLink(i,""),n=!0)),this.container.classList.add("linkAnnotation"),n&&this.container.append(i),this.container}_bindLink(e,t){e.href=this.linkService.getDestinationHash(t),e.onclick=()=>(t&&this.linkService.goToDestination(t),!1),(t||t==="")&&E(this,Hm,TZ).call(this)}_bindNamedAction(e,t){e.href=this.linkService.getAnchorUrl(""),e.onclick=()=>(this.linkService.executeNamedAction(t),!1),E(this,Hm,TZ).call(this)}_bindJSAction(e,t){e.href=this.linkService.getAnchorUrl("");const i=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const n of Object.keys(t.actions)){const o=i.get(n);o&&(e[o]=()=>{var l;return(l=this.linkService.eventBus)==null||l.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t.id,name:n}}),!1})}e.onclick||(e.onclick=()=>!1),E(this,Hm,TZ).call(this)}_bindResetFormAction(e,t){const i=e.onclick;if(i||(e.href=this.linkService.getAnchorUrl("")),E(this,Hm,TZ).call(this),!this._fieldObjects){rn('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),i||(e.onclick=()=>!1);return}e.onclick=()=>{var n;i==null||i();const{fields:o,refs:l,include:r}=t,a=[];if(o.length!==0||l.length!==0){const h=new Set(l);for(const u of o){const m=this._fieldObjects[u]||[];for(const{id:p}of m)h.add(p)}for(const u of Object.values(this._fieldObjects))for(const m of u)h.has(m.id)===r&&a.push(m)}else for(const h of Object.values(this._fieldObjects))a.push(...h);const d=this.annotationStorage,c=[];for(const h of a){const{id:u}=h;switch(c.push(u),h.type){case"text":{const p=h.defaultValue||"";d.setValue(u,{value:p});break}case"checkbox":case"radiobutton":{const p=h.defaultValue===h.exportValues;d.setValue(u,{value:p});break}case"combobox":case"listbox":{const p=h.defaultValue||"";d.setValue(u,{value:p});break}default:continue}const m=document.querySelector(`[data-element-id="${u}"]`);if(m){if(!OA.has(m)){rn(`_bindResetFormAction - element not allowed: ${u}`);continue}}else continue;m.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((n=this.linkService.eventBus)==null||n.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:c,name:"ResetForm"}})),!1}}}Hm=new WeakSet,TZ=function(){this.container.setAttribute("data-internal-link","")},XNe=function(s,e,t=null){s.href=this.linkService.getAnchorUrl(""),e.description&&(s.title=e.description),s.onclick=()=>{var i;return(i=this.downloadManager)==null||i.openOrDownloadData(e.content,e.filename,t),!1},E(this,Hm,TZ).call(this)},YNe=function(s,e){s.href=this.linkService.getAnchorUrl(""),s.onclick=()=>(this.linkService.executeSetOCGState(e),!1),E(this,Hm,TZ).call(this)};class rmt extends or{constructor(e){super(e,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const e=document.createElement("img");return e.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",e.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),e.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(e),this.container}}class uN extends or{render(){return this.container}showElementAndHideCanvas(e){var t;this.data.hasOwnCanvas&&(((t=e.previousSibling)==null?void 0:t.nodeName)==="CANVAS"&&(e.previousSibling.hidden=!0),e.hidden=!1)}_getKeyModifier(e){return Nd.platform.isMac?e.metaKey:e.ctrlKey}_setEventListener(e,t,i,n,o){i.includes("mouse")?e.addEventListener(i,l=>{var r;(r=this.linkService.eventBus)==null||r.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:o(l),shift:l.shiftKey,modifier:this._getKeyModifier(l)}})}):e.addEventListener(i,l=>{var r;if(i==="blur"){if(!t.focused||!l.relatedTarget)return;t.focused=!1}else if(i==="focus"){if(t.focused)return;t.focused=!0}o&&((r=this.linkService.eventBus)==null||r.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:o(l)}}))})}_setEventListeners(e,t,i,n){var o,l,r;for(const[a,d]of i)(d==="Action"||(o=this.data.actions)!=null&&o[d])&&((d==="Focus"||d==="Blur")&&(t||(t={focused:!1})),this._setEventListener(e,t,a,d,n),d==="Focus"&&!((l=this.data.actions)!=null&&l.Blur)?this._setEventListener(e,t,"blur","Blur",null):d==="Blur"&&!((r=this.data.actions)!=null&&r.Focus)&&this._setEventListener(e,t,"focus","Focus",null))}_setBackgroundColor(e){const t=this.data.backgroundColor||null;e.style.backgroundColor=t===null?"transparent":Ui.makeHexColor(t[0],t[1],t[2])}_setTextStyle(e){const t=["left","center","right"],{fontColor:i}=this.data.defaultAppearanceData,n=this.data.defaultAppearanceData.fontSize||smt,o=e.style;let l;const r=2,a=d=>Math.round(10*d)/10;if(this.data.multiLine){const d=Math.abs(this.data.rect[3]-this.data.rect[1]-r),c=Math.round(d/(x_*n))||1,h=d/c;l=Math.min(n,a(h/x_))}else{const d=Math.abs(this.data.rect[3]-this.data.rect[1]-r);l=Math.min(n,a(d/x_))}o.fontSize=`calc(${l}px * var(--scale-factor))`,o.color=Ui.makeHexColor(i[0],i[1],i[2]),this.data.textAlignment!==null&&(o.textAlign=t[this.data.textAlignment])}_setRequired(e,t){t?e.setAttribute("required",!0):e.removeAttribute("required"),e.setAttribute("aria-required",t)}}class amt extends uN{constructor(e){const t=e.renderForms||e.data.hasOwnCanvas||!e.data.hasAppearance&&!!e.data.fieldValue;super(e,{isRenderable:t})}setPropertyOnSiblings(e,t,i,n){const o=this.annotationStorage;for(const l of this._getElementsByName(e.name,e.id))l.domElement&&(l.domElement[t]=i),o.setValue(l.id,{[n]:i})}render(){var e,t;const i=this.annotationStorage,n=this.data.id;this.container.classList.add("textWidgetAnnotation");let o=null;if(this.renderForms){const l=i.getValue(n,{value:this.data.fieldValue});let r=l.value||"";const a=i.getValue(n,{charLimit:this.data.maxLen}).charLimit;a&&r.length>a&&(r=r.slice(0,a));let d=l.formattedValue||((e=this.data.textContent)==null?void 0:e.join(`
- `))||null;d&&this.data.comb&&(d=d.replaceAll(/\s+/g,""));const c={userValue:r,formattedValue:d,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(o=document.createElement("textarea"),o.textContent=d??r,this.data.doNotScroll&&(o.style.overflowY="hidden")):(o=document.createElement("input"),o.type="text",o.setAttribute("value",d??r),this.data.doNotScroll&&(o.style.overflowX="hidden")),this.data.hasOwnCanvas&&(o.hidden=!0),OA.add(o),o.setAttribute("data-element-id",n),o.disabled=this.data.readOnly,o.name=this.data.fieldName,o.tabIndex=xB,this._setRequired(o,this.data.required),a&&(o.maxLength=a),o.addEventListener("input",u=>{i.setValue(n,{value:u.target.value}),this.setPropertyOnSiblings(o,"value",u.target.value,"value"),c.formattedValue=null}),o.addEventListener("resetform",u=>{const m=this.data.defaultFieldValue??"";o.value=c.userValue=m,c.formattedValue=null});let h=u=>{const{formattedValue:m}=c;m!=null&&(u.target.value=m),u.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){o.addEventListener("focus",m=>{var p;if(c.focused)return;const{target:g}=m;c.userValue&&(g.value=c.userValue),c.lastCommittedValue=g.value,c.commitKey=1,(p=this.data.actions)!=null&&p.Focus||(c.focused=!0)}),o.addEventListener("updatefromsandbox",m=>{this.showElementAndHideCanvas(m.target);const p={value(g){c.userValue=g.detail.value??"",i.setValue(n,{value:c.userValue.toString()}),g.target.value=c.userValue},formattedValue(g){const{formattedValue:b}=g.detail;c.formattedValue=b,b!=null&&g.target!==document.activeElement&&(g.target.value=b),i.setValue(n,{formattedValue:b})},selRange(g){g.target.setSelectionRange(...g.detail.selRange)},charLimit:g=>{var b;const{charLimit:f}=g.detail,{target:Z}=g;if(f===0){Z.removeAttribute("maxLength");return}Z.setAttribute("maxLength",f);let A=c.userValue;!A||A.length<=f||(A=A.slice(0,f),Z.value=c.userValue=A,i.setValue(n,{value:A}),(b=this.linkService.eventBus)==null||b.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:A,willCommit:!0,commitKey:1,selStart:Z.selectionStart,selEnd:Z.selectionEnd}}))}};this._dispatchEventFromSandbox(p,m)}),o.addEventListener("keydown",m=>{var p;c.commitKey=1;let g=-1;if(m.key==="Escape"?g=0:m.key==="Enter"&&!this.data.multiLine?g=2:m.key==="Tab"&&(c.commitKey=3),g===-1)return;const{value:b}=m.target;c.lastCommittedValue!==b&&(c.lastCommittedValue=b,c.userValue=b,(p=this.linkService.eventBus)==null||p.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:b,willCommit:!0,commitKey:g,selStart:m.target.selectionStart,selEnd:m.target.selectionEnd}}))});const u=h;h=null,o.addEventListener("blur",m=>{var p,g;if(!c.focused||!m.relatedTarget)return;(p=this.data.actions)!=null&&p.Blur||(c.focused=!1);const{value:b}=m.target;c.userValue=b,c.lastCommittedValue!==b&&((g=this.linkService.eventBus)==null||g.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:b,willCommit:!0,commitKey:c.commitKey,selStart:m.target.selectionStart,selEnd:m.target.selectionEnd}})),u(m)}),(t=this.data.actions)!=null&&t.Keystroke&&o.addEventListener("beforeinput",m=>{var p;c.lastCommittedValue=null;const{data:g,target:b}=m,{value:f,selectionStart:Z,selectionEnd:A}=b;let N=Z,W=A;switch(m.inputType){case"deleteWordBackward":{const Q=f.substring(0,Z).match(/\w*[^\w]*$/);Q&&(N-=Q[0].length);break}case"deleteWordForward":{const Q=f.substring(Z).match(/^[^\w]*\w*/);Q&&(W+=Q[0].length);break}case"deleteContentBackward":Z===A&&(N-=1);break;case"deleteContentForward":Z===A&&(W+=1);break}m.preventDefault(),(p=this.linkService.eventBus)==null||p.dispatch("dispatcheventinsandbox",{source:this,detail:{id:n,name:"Keystroke",value:f,change:g||"",willCommit:!1,selStart:N,selEnd:W}})}),this._setEventListeners(o,c,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],m=>m.target.value)}if(h&&o.addEventListener("blur",h),this.data.comb){const u=(this.data.rect[2]-this.data.rect[0])/a;o.classList.add("comb"),o.style.letterSpacing=`calc(${u}px * var(--scale-factor) - 1ch)`}}else o=document.createElement("div"),o.textContent=this.data.fieldValue,o.style.verticalAlign="middle",o.style.display="table-cell",this.data.hasOwnCanvas&&(o.hidden=!0);return this._setTextStyle(o),this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class dmt extends uN{constructor(e){super(e,{isRenderable:!!e.data.hasOwnCanvas})}}class cmt extends uN{constructor(e){super(e,{isRenderable:e.renderForms})}render(){const e=this.annotationStorage,t=this.data,i=t.id;let n=e.getValue(i,{value:t.exportValue===t.fieldValue}).value;typeof n=="string"&&(n=n!=="Off",e.setValue(i,{value:n})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const o=document.createElement("input");return OA.add(o),o.setAttribute("data-element-id",i),o.disabled=t.readOnly,this._setRequired(o,this.data.required),o.type="checkbox",o.name=t.fieldName,n&&o.setAttribute("checked",!0),o.setAttribute("exportValue",t.exportValue),o.tabIndex=xB,o.addEventListener("change",l=>{const{name:r,checked:a}=l.target;for(const d of this._getElementsByName(r,i)){const c=a&&d.exportValue===t.exportValue;d.domElement&&(d.domElement.checked=c),e.setValue(d.id,{value:c})}e.setValue(i,{value:a})}),o.addEventListener("resetform",l=>{const r=t.defaultFieldValue||"Off";l.target.checked=r===t.exportValue}),this.enableScripting&&this.hasJSActions&&(o.addEventListener("updatefromsandbox",l=>{const r={value(a){a.target.checked=a.detail.value!=="Off",e.setValue(i,{value:a.target.checked})}};this._dispatchEventFromSandbox(r,l)}),this._setEventListeners(o,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],l=>l.target.checked)),this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class _Ne extends uN{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const e=this.annotationStorage,t=this.data,i=t.id;let n=e.getValue(i,{value:t.fieldValue===t.buttonValue}).value;if(typeof n=="string"&&(n=n!==t.buttonValue,e.setValue(i,{value:n})),n)for(const l of this._getElementsByName(t.fieldName,i))e.setValue(l.id,{value:!1});const o=document.createElement("input");if(OA.add(o),o.setAttribute("data-element-id",i),o.disabled=t.readOnly,this._setRequired(o,this.data.required),o.type="radio",o.name=t.fieldName,n&&o.setAttribute("checked",!0),o.tabIndex=xB,o.addEventListener("change",l=>{const{name:r,checked:a}=l.target;for(const d of this._getElementsByName(r,i))e.setValue(d.id,{value:!1});e.setValue(i,{value:a})}),o.addEventListener("resetform",l=>{const r=t.defaultFieldValue;l.target.checked=r!=null&&r===t.buttonValue}),this.enableScripting&&this.hasJSActions){const l=t.buttonValue;o.addEventListener("updatefromsandbox",r=>{const a={value:d=>{const c=l===d.detail.value;for(const h of this._getElementsByName(d.target.name)){const u=c&&h.id===i;h.domElement&&(h.domElement.checked=u),e.setValue(h.id,{value:u})}}};this._dispatchEventFromSandbox(a,r)}),this._setEventListeners(o,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],r=>r.target.checked)}return this._setBackgroundColor(o),this._setDefaultPropertiesFromJS(o),this.container.append(o),this.container}}class hmt extends zNe{constructor(e){super(e,{ignoreBorder:e.data.hasAppearance})}render(){const e=super.render();e.classList.add("buttonWidgetAnnotation","pushButton");const t=e.lastChild;return this.enableScripting&&this.hasJSActions&&t&&(this._setDefaultPropertiesFromJS(t),t.addEventListener("updatefromsandbox",i=>{this._dispatchEventFromSandbox({},i)})),e}}class umt extends uN{constructor(e){super(e,{isRenderable:e.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const e=this.annotationStorage,t=this.data.id,i=e.getValue(t,{value:this.data.fieldValue}),n=document.createElement("select");OA.add(n),n.setAttribute("data-element-id",t),n.disabled=this.data.readOnly,this._setRequired(n,this.data.required),n.name=this.data.fieldName,n.tabIndex=xB;let o=this.data.combo&&this.data.options.length>0;this.data.combo||(n.size=this.data.options.length,this.data.multiSelect&&(n.multiple=!0)),n.addEventListener("resetform",c=>{const h=this.data.defaultFieldValue;for(const u of n.options)u.selected=u.value===h});for(const c of this.data.options){const h=document.createElement("option");h.textContent=c.displayValue,h.value=c.exportValue,i.value.includes(c.exportValue)&&(h.setAttribute("selected",!0),o=!1),n.append(h)}let l=null;if(o){const c=document.createElement("option");c.value=" ",c.setAttribute("hidden",!0),c.setAttribute("selected",!0),n.prepend(c),l=()=>{c.remove(),n.removeEventListener("input",l),l=null},n.addEventListener("input",l)}const r=c=>{const h=c?"value":"textContent",{options:u,multiple:m}=n;return m?Array.prototype.filter.call(u,p=>p.selected).map(p=>p[h]):u.selectedIndex===-1?null:u[u.selectedIndex][h]};let a=r(!1);const d=c=>{const h=c.target.options;return Array.prototype.map.call(h,u=>({displayValue:u.textContent,exportValue:u.value}))};return this.enableScripting&&this.hasJSActions?(n.addEventListener("updatefromsandbox",c=>{const h={value(u){l==null||l();const m=u.detail.value,p=new Set(Array.isArray(m)?m:[m]);for(const g of n.options)g.selected=p.has(g.value);e.setValue(t,{value:r(!0)}),a=r(!1)},multipleSelection(u){n.multiple=!0},remove(u){const m=n.options,p=u.detail.remove;m[p].selected=!1,n.remove(p),m.length>0&&Array.prototype.findIndex.call(m,g=>g.selected)===-1&&(m[0].selected=!0),e.setValue(t,{value:r(!0),items:d(u)}),a=r(!1)},clear(u){for(;n.length!==0;)n.remove(0);e.setValue(t,{value:null,items:[]}),a=r(!1)},insert(u){const{index:m,displayValue:p,exportValue:g}=u.detail.insert,b=n.children[m],f=document.createElement("option");f.textContent=p,f.value=g,b?b.before(f):n.append(f),e.setValue(t,{value:r(!0),items:d(u)}),a=r(!1)},items(u){const{items:m}=u.detail;for(;n.length!==0;)n.remove(0);for(const p of m){const{displayValue:g,exportValue:b}=p,f=document.createElement("option");f.textContent=g,f.value=b,n.append(f)}n.options.length>0&&(n.options[0].selected=!0),e.setValue(t,{value:r(!0),items:d(u)}),a=r(!1)},indices(u){const m=new Set(u.detail.indices);for(const p of u.target.options)p.selected=m.has(p.index);e.setValue(t,{value:r(!0)}),a=r(!1)},editable(u){u.target.disabled=!u.detail.editable}};this._dispatchEventFromSandbox(h,c)}),n.addEventListener("input",c=>{var h;const u=r(!0),m=r(!1);e.setValue(t,{value:u}),c.preventDefault(),(h=this.linkService.eventBus)==null||h.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:a,change:m,changeEx:u,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(n,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],c=>c.target.value)):n.addEventListener("input",function(c){e.setValue(t,{value:r(!0)})}),this.data.combo&&this._setTextStyle(n),this._setBackgroundColor(n),this._setDefaultPropertiesFromJS(n),this.container.append(n),this.container}}class aq extends or{constructor(e){const{data:t,elements:i}=e;super(e,{isRenderable:or._hasPopupData(t)}),this.elements=i,this.popup=null}render(){this.container.classList.add("popupAnnotation");const e=this.popup=new mmt({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),t=[];for(const i of this.elements)i.popup=e,i.container.ariaHasPopup="dialog",t.push(i.data.id),i.addHighlightArea();return this.container.setAttribute("aria-controls",t.map(i=>`${qie}${i}`).join(",")),this.container}}var $C,dq,cq,ew,vR,ml,Qb,B2,BJ,LJ,tw,Ub,Dm,qb,kJ,$b,nG,TF,xR,Kl,sG,cO,Ohe,ONe,jNe,jhe,IJ,DJ,hq;class mmt{constructor({container:e,color:t,elements:i,titleObj:n,modificationDate:o,contentsObj:l,richText:r,parent:a,rect:d,parentRect:c,open:h}){J(this,Kl),J(this,$C,E(this,Kl,jNe).bind(this)),J(this,dq,E(this,Kl,hq).bind(this)),J(this,cq,E(this,Kl,DJ).bind(this)),J(this,ew,E(this,Kl,IJ).bind(this)),J(this,vR,null),J(this,ml,null),J(this,Qb,null),J(this,B2,null),J(this,BJ,null),J(this,LJ,null),J(this,tw,null),J(this,Ub,!1),J(this,Dm,null),J(this,qb,null),J(this,kJ,null),J(this,$b,null),J(this,nG,null),J(this,TF,null),J(this,xR,!1);var u;L(this,ml,e),L(this,nG,n),L(this,Qb,l),L(this,$b,r),L(this,LJ,a),L(this,vR,t),L(this,kJ,d),L(this,tw,c),L(this,BJ,i),L(this,B2,KAe.toDateObject(o)),this.trigger=i.flatMap(m=>m.getElementsToTriggerPopup());for(const m of this.trigger)m.addEventListener("click",F(this,ew)),m.addEventListener("mouseenter",F(this,cq)),m.addEventListener("mouseleave",F(this,dq)),m.classList.add("popupTriggerArea");for(const m of i)(u=m.container)==null||u.addEventListener("keydown",F(this,$C));F(this,ml).hidden=!0,h&&E(this,Kl,IJ).call(this)}render(){if(F(this,Dm))return;const e=L(this,Dm,document.createElement("div"));if(e.className="popup",F(this,vR)){const o=e.style.outlineColor=Ui.makeHexColor(...F(this,vR));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?e.style.backgroundColor=`color-mix(in srgb, ${o} 30%, white)`:e.style.backgroundColor=Ui.makeHexColor(...F(this,vR).map(l=>Math.floor(.7*(255-l)+l)))}const t=document.createElement("span");t.className="header";const i=document.createElement("h1");if(t.append(i),{dir:i.dir,str:i.textContent}=F(this,nG),e.append(t),F(this,B2)){const o=document.createElement("span");o.classList.add("popupDate"),o.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),o.setAttribute("data-l10n-args",JSON.stringify({dateObj:F(this,B2).valueOf()})),t.append(o)}const n=F(this,Kl,sG);if(n)xNe.render({xfaHtml:n,intent:"richText",div:e}),e.lastChild.classList.add("richText","popupContent");else{const o=this._formatContents(F(this,Qb));e.append(o)}F(this,ml).append(e)}_formatContents({str:e,dir:t}){const i=document.createElement("p");i.classList.add("popupContent"),i.dir=t;const n=e.split(/(?:\r\n?|\n)/);for(let o=0,l=n.length;o<l;++o){const r=n[o];i.append(document.createTextNode(r)),o<l-1&&i.append(document.createElement("br"))}return i}updateEdited({rect:e,popupContent:t}){var i;F(this,TF)||L(this,TF,{contentsObj:F(this,Qb),richText:F(this,$b)}),e&&L(this,qb,null),t&&(L(this,$b,E(this,Kl,ONe).call(this,t)),L(this,Qb,null)),(i=F(this,Dm))==null||i.remove(),L(this,Dm,null)}resetEdited(){var e;F(this,TF)&&({contentsObj:Ad(this,Qb)._,richText:Ad(this,$b)._}=F(this,TF),L(this,TF,null),(e=F(this,Dm))==null||e.remove(),L(this,Dm,null),L(this,qb,null))}forceHide(){L(this,xR,this.isVisible),F(this,xR)&&(F(this,ml).hidden=!0)}maybeShow(){F(this,xR)&&(F(this,Dm)||E(this,Kl,DJ).call(this),L(this,xR,!1),F(this,ml).hidden=!1)}get isVisible(){return F(this,ml).hidden===!1}}$C=new WeakMap,dq=new WeakMap,cq=new WeakMap,ew=new WeakMap,vR=new WeakMap,ml=new WeakMap,Qb=new WeakMap,B2=new WeakMap,BJ=new WeakMap,LJ=new WeakMap,tw=new WeakMap,Ub=new WeakMap,Dm=new WeakMap,qb=new WeakMap,kJ=new WeakMap,$b=new WeakMap,nG=new WeakMap,TF=new WeakMap,xR=new WeakMap,Kl=new WeakSet,sG=function(){const s=F(this,$b),e=F(this,Qb);return s!=null&&s.str&&(!(e!=null&&e.str)||e.str===s.str)&&F(this,$b).html||null},cO=function(){var s,e,t;return((t=(e=(s=F(this,Kl,sG))==null?void 0:s.attributes)==null?void 0:e.style)==null?void 0:t.fontSize)||0},Ohe=function(){var s,e,t;return((t=(e=(s=F(this,Kl,sG))==null?void 0:s.attributes)==null?void 0:e.style)==null?void 0:t.color)||null},ONe=function(s){const e=[],t={str:s,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:e}]}},i={style:{color:F(this,Kl,Ohe),fontSize:F(this,Kl,cO)?`calc(${F(this,Kl,cO)}px * var(--scale-factor))`:""}};for(const n of s.split(`
- `))e.push({name:"span",value:n,attributes:i});return t},jNe=function(s){s.altKey||s.shiftKey||s.ctrlKey||s.metaKey||(s.key==="Enter"||s.key==="Escape"&&F(this,Ub))&&E(this,Kl,IJ).call(this)},jhe=function(){if(F(this,qb)!==null)return;const{page:{view:s},viewport:{rawDims:{pageWidth:e,pageHeight:t,pageX:i,pageY:n}}}=F(this,LJ);let o=!!F(this,tw),l=o?F(this,tw):F(this,kJ);for(const u of F(this,BJ))if(!l||Ui.intersect(u.data.rect,l)!==null){l=u.data.rect,o=!0;break}const r=Ui.normalizeRect([l[0],s[3]-l[1]+s[1],l[2],s[3]-l[3]+s[1]]),a=o?l[2]-l[0]+5:0,d=r[0]+a,c=r[1];L(this,qb,[100*(d-i)/e,100*(c-n)/t]);const{style:h}=F(this,ml);h.left=`${F(this,qb)[0]}%`,h.top=`${F(this,qb)[1]}%`},IJ=function(){L(this,Ub,!F(this,Ub)),F(this,Ub)?(E(this,Kl,DJ).call(this),F(this,ml).addEventListener("click",F(this,ew)),F(this,ml).addEventListener("keydown",F(this,$C))):(E(this,Kl,hq).call(this),F(this,ml).removeEventListener("click",F(this,ew)),F(this,ml).removeEventListener("keydown",F(this,$C)))},DJ=function(){F(this,Dm)||this.render(),this.isVisible?F(this,Ub)&&F(this,ml).classList.add("focused"):(E(this,Kl,jhe).call(this),F(this,ml).hidden=!1,F(this,ml).style.zIndex=parseInt(F(this,ml).style.zIndex)+1e3)},hq=function(){F(this,ml).classList.remove("focused"),!(F(this,Ub)||!this.isVisible)&&(F(this,ml).hidden=!0,F(this,ml).style.zIndex=parseInt(F(this,ml).style.zIndex)-1e3)};class HNe extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.textContent=e.data.textContent,this.textPosition=e.data.textPosition,this.annotationEditorType=Nn.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const e=document.createElement("div");e.classList.add("annotationTextContent"),e.setAttribute("role","comment");for(const t of this.textContent){const i=document.createElement("span");i.textContent=t,e.append(i)}this.container.append(e)}return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var oG;class pmt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),J(this,oG,null)}render(){this.container.classList.add("lineAnnotation");const e=this.data,{width:t,height:i}=uf(e.rect),n=this.svgFactory.create(t,i,!0),o=L(this,oG,this.svgFactory.createElement("svg:line"));return o.setAttribute("x1",e.rect[2]-e.lineCoordinates[0]),o.setAttribute("y1",e.rect[3]-e.lineCoordinates[1]),o.setAttribute("x2",e.rect[2]-e.lineCoordinates[2]),o.setAttribute("y2",e.rect[3]-e.lineCoordinates[3]),o.setAttribute("stroke-width",e.borderStyle.width||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),n.append(o),this.container.append(n),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,oG)}addHighlightArea(){this.container.classList.add("highlightArea")}}oG=new WeakMap;var lG;class gmt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),J(this,lG,null)}render(){this.container.classList.add("squareAnnotation");const e=this.data,{width:t,height:i}=uf(e.rect),n=this.svgFactory.create(t,i,!0),o=e.borderStyle.width,l=L(this,lG,this.svgFactory.createElement("svg:rect"));return l.setAttribute("x",o/2),l.setAttribute("y",o/2),l.setAttribute("width",t-o),l.setAttribute("height",i-o),l.setAttribute("stroke-width",o||1),l.setAttribute("stroke","transparent"),l.setAttribute("fill","transparent"),n.append(l),this.container.append(n),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,lG)}addHighlightArea(){this.container.classList.add("highlightArea")}}lG=new WeakMap;var rG;class bmt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),J(this,rG,null)}render(){this.container.classList.add("circleAnnotation");const e=this.data,{width:t,height:i}=uf(e.rect),n=this.svgFactory.create(t,i,!0),o=e.borderStyle.width,l=L(this,rG,this.svgFactory.createElement("svg:ellipse"));return l.setAttribute("cx",t/2),l.setAttribute("cy",i/2),l.setAttribute("rx",t/2-o/2),l.setAttribute("ry",i/2-o/2),l.setAttribute("stroke-width",o||1),l.setAttribute("stroke","transparent"),l.setAttribute("fill","transparent"),n.append(l),this.container.append(n),!e.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,rG)}addHighlightArea(){this.container.classList.add("highlightArea")}}rG=new WeakMap;var aG;class PNe extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),J(this,aG,null),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:e,vertices:t,borderStyle:i,popupRef:n}}=this;if(!t)return this.container;const{width:o,height:l}=uf(e),r=this.svgFactory.create(o,l,!0);let a=[];for(let c=0,h=t.length;c<h;c+=2){const u=t[c]-e[0],m=e[3]-t[c+1];a.push(`${u},${m}`)}a=a.join(" ");const d=L(this,aG,this.svgFactory.createElement(this.svgElementName));return d.setAttribute("points",a),d.setAttribute("stroke-width",i.width||1),d.setAttribute("stroke","transparent"),d.setAttribute("fill","transparent"),r.append(d),this.container.append(r),!n&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,aG)}addHighlightArea(){this.container.classList.add("highlightArea")}}aG=new WeakMap;class Umt extends PNe{constructor(e){super(e),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class fmt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}var dG,JR,cG,uq;class lne extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),J(this,cG),J(this,dG,null),J(this,JR,[]),this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=this.data.it==="InkHighlight"?Nn.HIGHLIGHT:Nn.INK}render(){this.container.classList.add(this.containerClassName);const{data:{rect:e,rotation:t,inkLists:i,borderStyle:n,popupRef:o}}=this,{transform:l,width:r,height:a}=E(this,cG,uq).call(this,t,e),d=this.svgFactory.create(r,a,!0),c=L(this,dG,this.svgFactory.createElement("svg:g"));d.append(c),c.setAttribute("stroke-width",n.width||1),c.setAttribute("stroke-linecap","round"),c.setAttribute("stroke-linejoin","round"),c.setAttribute("stroke-miterlimit",10),c.setAttribute("stroke","transparent"),c.setAttribute("fill","transparent"),c.setAttribute("transform",l);for(let h=0,u=i.length;h<u;h++){const m=this.svgFactory.createElement(this.svgElementName);F(this,JR).push(m),m.setAttribute("points",i[h].join(",")),c.append(m)}return!o&&this.hasPopupData&&this._createPopup(),this.container.append(d),this._editOnDoubleClick(),this.container}updateEdited(e){super.updateEdited(e);const{thickness:t,points:i,rect:n}=e,o=F(this,dG);if(t>=0&&o.setAttribute("stroke-width",t||1),i)for(let l=0,r=F(this,JR).length;l<r;l++)F(this,JR)[l].setAttribute("points",i[l].join(","));if(n){const{transform:l,width:r,height:a}=E(this,cG,uq).call(this,this.data.rotation,n);o.parentElement.setAttribute("viewBox",`0 0 ${r} ${a}`),o.setAttribute("transform",l)}}getElementsToTriggerPopup(){return F(this,JR)}addHighlightArea(){this.container.classList.add("highlightArea")}}dG=new WeakMap,JR=new WeakMap,cG=new WeakSet,uq=function(s,e){switch(s){case 90:return{transform:`rotate(90) translate(${-e[0]},${e[1]}) scale(1,-1)`,width:e[3]-e[1],height:e[2]-e[0]};case 180:return{transform:`rotate(180) translate(${-e[2]},${e[1]}) scale(1,-1)`,width:e[2]-e[0],height:e[3]-e[1]};case 270:return{transform:`rotate(270) translate(${-e[2]},${e[3]}) scale(1,-1)`,width:e[3]-e[1],height:e[2]-e[0]};default:return{transform:`translate(${-e[0]},${e[3]}) scale(1,-1)`,width:e[2]-e[0],height:e[3]-e[1]}}};class KNe extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0}),this.annotationEditorType=Nn.HIGHLIGHT}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("highlightAnnotation"),this._editOnDoubleClick(),this.container}}class Fmt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("underlineAnnotation"),this.container}}class Zmt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("squigglyAnnotation"),this.container}}class Amt extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("strikeoutAnnotation"),this.container}}class qNe extends or{constructor(e){super(e,{isRenderable:!0,ignoreBorder:!0}),this.annotationEditorType=Nn.STAMP}render(){return this.container.classList.add("stampAnnotation"),this.container.setAttribute("role","img"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var hG,uG,mq;class Nmt extends or{constructor(e){var t;super(e,{isRenderable:!0}),J(this,uG),J(this,hG,null);const{file:i}=this.data;this.filename=i.filename,this.content=i.content,(t=this.linkService.eventBus)==null||t.dispatch("fileattachmentannotation",{source:this,...i})}render(){this.container.classList.add("fileAttachmentAnnotation");const{container:e,data:t}=this;let i;t.hasAppearance||t.fillAlpha===0?i=document.createElement("div"):(i=document.createElement("img"),i.src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(t.name)?"paperclip":"pushpin"}.svg`,t.fillAlpha&&t.fillAlpha<1&&(i.style=`filter: opacity(${Math.round(t.fillAlpha*100)}%);`)),i.addEventListener("dblclick",E(this,uG,mq).bind(this)),L(this,hG,i);const{isMac:n}=Nd.platform;return e.addEventListener("keydown",o=>{o.key==="Enter"&&(n?o.metaKey:o.ctrlKey)&&E(this,uG,mq).call(this)}),!t.popupRef&&this.hasPopupData?this._createPopup():i.classList.add("popupTriggerArea"),e.append(i),e}getElementsToTriggerPopup(){return F(this,hG)}addHighlightArea(){this.container.classList.add("highlightArea")}}hG=new WeakMap,uG=new WeakSet,mq=function(){var s;(s=this.downloadManager)==null||s.openOrDownloadData(this.content,this.filename)};var SI,cR,hR,WI,Zy,Hhe,hO,Phe;let Rmt=(Phe=class{constructor({div:s,accessibilityManager:e,annotationCanvasMap:t,annotationEditorUIManager:i,page:n,viewport:o,structTreeLayer:l}){J(this,Zy),J(this,SI,null),J(this,cR,null),J(this,hR,new Map),J(this,WI,null),this.div=s,L(this,SI,e),L(this,cR,t),L(this,WI,l||null),this.page=n,this.viewport=o,this.zIndex=0,this._annotationEditorUIManager=i}hasEditableAnnotations(){return F(this,hR).size>0}async render(s){var e;const{annotations:t}=s,i=this.div;_A(i,this.viewport);const n=new Map,o={data:null,layer:i,linkService:s.linkService,downloadManager:s.downloadManager,imageResourcesPath:s.imageResourcesPath||"",renderForms:s.renderForms!==!1,svgFactory:new one,annotationStorage:s.annotationStorage||new nne,enableScripting:s.enableScripting===!0,hasJSActions:s.hasJSActions,fieldObjects:s.fieldObjects,parent:this,elements:null};for(const l of t){if(l.noHTML)continue;const r=l.annotationType===jl.POPUP;if(r){const c=n.get(l.id);if(!c)continue;o.elements=c}else{const{width:c,height:h}=uf(l.rect);if(c<=0||h<=0)continue}o.data=l;const a=omt.create(o);if(!a.isRenderable)continue;if(!r&&l.popupRef){const c=n.get(l.popupRef);c?c.push(a):n.set(l.popupRef,[a])}const d=a.render();l.hidden&&(d.style.visibility="hidden"),await E(this,Zy,Hhe).call(this,d,l.id),a._isEditable&&(F(this,hR).set(a.data.id,a),(e=this._annotationEditorUIManager)==null||e.renderAnnotationElement(a))}E(this,Zy,hO).call(this)}update({viewport:s}){const e=this.div;this.viewport=s,_A(e,{rotation:s.rotation}),E(this,Zy,hO).call(this),e.hidden=!1}getEditableAnnotations(){return Array.from(F(this,hR).values())}getEditableAnnotation(s){return F(this,hR).get(s)}},SI=new WeakMap,cR=new WeakMap,hR=new WeakMap,WI=new WeakMap,Zy=new WeakSet,Hhe=async function(s,e){var t,i;const n=s.firstChild||s,o=n.id=`${qie}${e}`,l=await((t=F(this,WI))==null?void 0:t.getAriaAttributes(o));if(l)for(const[r,a]of l)n.setAttribute(r,a);this.div.append(s),(i=F(this,SI))==null||i.moveElementInDOM(this.div,s,n,!1)},hO=function(){if(!F(this,cR))return;const s=this.div;for(const[e,t]of F(this,cR)){const i=s.querySelector(`[data-annotation-id="${e}"]`);if(!i)continue;t.className="annotationContent";const{firstChild:n}=i;n?n.nodeName==="CANVAS"?n.replaceWith(t):n.classList.contains("annotationContent")?n.after(t):n.before(t):i.append(t)}F(this,cR).clear()},Phe);const mG=/\r\n?|\n/g;var Pm,yh,pG,XR,Ch,yc,$Ne,eRe,tRe,GJ,BZ,EJ,gG,iRe,pq,nRe;const dg=class Ir extends fl{constructor(e){super({...e,name:"freeTextEditor"}),J(this,yc),J(this,Pm),J(this,yh,""),J(this,pG,`${this.id}-editor`),J(this,XR,null),J(this,Ch),L(this,Pm,e.color||Ir._defaultColor||fl._defaultLineColor),L(this,Ch,e.fontSize||Ir._defaultFontSize)}static get _keyboardManager(){const e=Ir.prototype,t=o=>o.isEmpty(),i=MT.TRANSLATE_SMALL,n=MT.TRANSLATE_BIG;return Mn(this,"_keyboardManager",new vB([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],e.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],e.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],e._translateEmpty,{args:[-i,0],checker:t}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],e._translateEmpty,{args:[-n,0],checker:t}],[["ArrowRight","mac+ArrowRight"],e._translateEmpty,{args:[i,0],checker:t}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],e._translateEmpty,{args:[n,0],checker:t}],[["ArrowUp","mac+ArrowUp"],e._translateEmpty,{args:[0,-i],checker:t}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],e._translateEmpty,{args:[0,-n],checker:t}],[["ArrowDown","mac+ArrowDown"],e._translateEmpty,{args:[0,i],checker:t}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],e._translateEmpty,{args:[0,n],checker:t}]]))}static initialize(e,t){fl.initialize(e,t);const i=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(i.getPropertyValue("--freetext-padding"))}static updateDefaultParams(e,t){switch(e){case Kn.FREETEXT_SIZE:Ir._defaultFontSize=t;break;case Kn.FREETEXT_COLOR:Ir._defaultColor=t;break}}updateParams(e,t){switch(e){case Kn.FREETEXT_SIZE:E(this,yc,$Ne).call(this,t);break;case Kn.FREETEXT_COLOR:E(this,yc,eRe).call(this,t);break}}static get defaultPropertiesToUpdate(){return[[Kn.FREETEXT_SIZE,Ir._defaultFontSize],[Kn.FREETEXT_COLOR,Ir._defaultColor||fl._defaultLineColor]]}get propertiesToUpdate(){return[[Kn.FREETEXT_SIZE,F(this,Ch)],[Kn.FREETEXT_COLOR,F(this,Pm)]]}_translateEmpty(e,t){this._uiManager.translateSelectedEditors(e,t,!0)}getInitialTranslation(){const e=this.parentScale;return[-Ir._internalPadding*e,-(Ir._internalPadding+F(this,Ch))*e]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(this.isInEditMode())return;this.parent.setEditingState(!1),this.parent.updateToolbar(Nn.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),L(this,XR,new AbortController);const e=this._uiManager.combinedSignal(F(this,XR));this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:e}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:e}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:e}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:e}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:e})}disableEditMode(){var e;this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",F(this,pG)),this._isDraggable=!0,(e=F(this,XR))==null||e.abort(),L(this,XR,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(e){this._focusEventsAllowed&&(super.focusin(e),e.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(e){var t;this.width||(this.enableEditMode(),e&&this.editorDiv.focus(),(t=this._initialOptions)!=null&&t.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const e=F(this,yh),t=L(this,yh,E(this,yc,tRe).call(this).trimEnd());if(e===t)return;const i=n=>{if(L(this,yh,n),!n){this.remove();return}E(this,yc,gG).call(this),this._uiManager.rebuild(this),E(this,yc,GJ).call(this)};this.addCommands({cmd:()=>{i(t)},undo:()=>{i(e)},mustExec:!1}),E(this,yc,GJ).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(e){this.enterInEditMode()}keydown(e){e.target===this.div&&e.key==="Enter"&&(this.enterInEditMode(),e.preventDefault())}editorDivKeydown(e){Ir._keyboardManager.exec(this,e)}editorDivFocus(e){this.isEditing=!0}editorDivBlur(e){this.isEditing=!1}editorDivInput(e){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let e,t;this.width&&(e=this.x,t=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",F(this,pG)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:i}=this.editorDiv;if(i.fontSize=`calc(${F(this,Ch)}px * var(--scale-factor))`,i.color=F(this,Pm),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),QJ(this,this.div,["dblclick","keydown"]),this.width){const[n,o]=this.parentDimensions;if(this.annotationElementId){const{position:l}=this._initialData;let[r,a]=this.getInitialTranslation();[r,a]=this.pageTranslationToScreen(r,a);const[d,c]=this.pageDimensions,[h,u]=this.pageTranslation;let m,p;switch(this.rotation){case 0:m=e+(l[0]-h)/d,p=t+this.height-(l[1]-u)/c;break;case 90:m=e+(l[0]-h)/d,p=t-(l[1]-u)/c,[r,a]=[a,-r];break;case 180:m=e-this.width+(l[0]-h)/d,p=t-(l[1]-u)/c,[r,a]=[-r,-a];break;case 270:m=e+(l[0]-h-this.height*c)/d,p=t+(l[1]-u-this.width*d)/c,[r,a]=[-a,r];break}this.setAt(m*n,p*o,r,a)}else this.setAt(e*n,t*o,this.width*n,this.height*o);E(this,yc,gG).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(e){var t,i,n;const o=e.clipboardData||window.clipboardData,{types:l}=o;if(l.length===1&&l[0]==="text/plain")return;e.preventDefault();const r=E(t=Ir,BZ,pq).call(t,o.getData("text")||"").replaceAll(mG,`
- `);if(!r)return;const a=window.getSelection();if(!a.rangeCount)return;this.editorDiv.normalize(),a.deleteFromDocument();const d=a.getRangeAt(0);if(!r.includes(`
- `)){d.insertNode(document.createTextNode(r)),this.editorDiv.normalize(),a.collapseToStart();return}const{startContainer:c,startOffset:h}=d,u=[],m=[];if(c.nodeType===Node.TEXT_NODE){const b=c.parentElement;if(m.push(c.nodeValue.slice(h).replaceAll(mG,"")),b!==this.editorDiv){let f=u;for(const Z of this.editorDiv.childNodes){if(Z===b){f=m;continue}f.push(E(i=Ir,BZ,EJ).call(i,Z))}}u.push(c.nodeValue.slice(0,h).replaceAll(mG,""))}else if(c===this.editorDiv){let b=u,f=0;for(const Z of this.editorDiv.childNodes)f++===h&&(b=m),b.push(E(n=Ir,BZ,EJ).call(n,Z))}L(this,yh,`${u.join(`
- `)}${r}${m.join(`
- `)}`),E(this,yc,gG).call(this);const p=new Range;let g=u.reduce((b,f)=>b+f.length,0);for(const{firstChild:b}of this.editorDiv.childNodes)if(b.nodeType===Node.TEXT_NODE){const f=b.nodeValue.length;if(g<=f){p.setStart(b,g),p.setEnd(b,g);break}g-=f}a.removeAllRanges(),a.addRange(p)}get contentDiv(){return this.editorDiv}static async deserialize(e,t,i){var n;let o=null;if(e instanceof HNe){const{data:{defaultAppearanceData:{fontSize:r,fontColor:a},rect:d,rotation:c,id:h,popupRef:u},textContent:m,textPosition:p,parent:{page:{pageNumber:g}}}=e;if(!m||m.length===0)return null;o=e={annotationType:Nn.FREETEXT,color:Array.from(a),fontSize:r,value:m.join(`
- `),position:p,pageIndex:g-1,rect:d.slice(0),rotation:c,id:h,deleted:!1,popupRef:u}}const l=await super.deserialize(e,t,i);return L(l,Ch,e.fontSize),L(l,Pm,Ui.makeHexColor(...e.color)),L(l,yh,E(n=Ir,BZ,pq).call(n,e.value)),l.annotationElementId=e.id||null,l._initialData=o,l}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const t=Ir._internalPadding*this.parentScale,i=this.getRect(t,t),n=fl._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:F(this,Pm)),o={annotationType:Nn.FREETEXT,color:n,fontSize:F(this,Ch),value:E(this,yc,iRe).call(this),pageIndex:this.pageIndex,rect:i,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return e?o:this.annotationElementId&&!E(this,yc,nRe).call(this,o)?null:(o.id=this.annotationElementId,o)}renderAnnotationElement(e){const t=super.renderAnnotationElement(e);if(this.deleted)return t;const{style:i}=t;i.fontSize=`calc(${F(this,Ch)}px * var(--scale-factor))`,i.color=F(this,Pm),t.replaceChildren();for(const o of F(this,yh).split(`
- `)){const l=document.createElement("div");l.append(o?document.createTextNode(o):document.createElement("br")),t.append(l)}const n=Ir._internalPadding*this.parentScale;return e.updateEdited({rect:this.getRect(n,n),popupContent:F(this,yh)}),t}resetAnnotationElement(e){super.resetAnnotationElement(e),e.resetEdited()}};Pm=new WeakMap,yh=new WeakMap,pG=new WeakMap,XR=new WeakMap,Ch=new WeakMap,yc=new WeakSet,$Ne=function(s){const e=i=>{this.editorDiv.style.fontSize=`calc(${i}px * var(--scale-factor))`,this.translate(0,-(i-F(this,Ch))*this.parentScale),L(this,Ch,i),E(this,yc,GJ).call(this)},t=F(this,Ch);this.addCommands({cmd:e.bind(this,s),undo:e.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Kn.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},eRe=function(s){const e=i=>{L(this,Pm,this.editorDiv.style.color=i)},t=F(this,Pm);this.addCommands({cmd:e.bind(this,s),undo:e.bind(this,t),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Kn.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},tRe=function(){var s;const e=[];this.editorDiv.normalize();let t=null;for(const i of this.editorDiv.childNodes)(t==null?void 0:t.nodeType)===Node.TEXT_NODE&&i.nodeName==="BR"||(e.push(E(s=dg,BZ,EJ).call(s,i)),t=i);return e.join(`
- `)},GJ=function(){const[s,e]=this.parentDimensions;let t;if(this.isAttachedToDOM)t=this.div.getBoundingClientRect();else{const{currentLayer:i,div:n}=this,o=n.style.display,l=n.classList.contains("hidden");n.classList.remove("hidden"),n.style.display="hidden",i.div.append(this.div),t=n.getBoundingClientRect(),n.remove(),n.style.display=o,n.classList.toggle("hidden",l)}this.rotation%180===this.parentRotation%180?(this.width=t.width/s,this.height=t.height/e):(this.width=t.height/s,this.height=t.width/e),this.fixAndSetPosition()},BZ=new WeakSet,EJ=function(s){return(s.nodeType===Node.TEXT_NODE?s.nodeValue:s.innerText).replaceAll(mG,"")},gG=function(){if(this.editorDiv.replaceChildren(),!!F(this,yh))for(const s of F(this,yh).split(`
- `)){const e=document.createElement("div");e.append(s?document.createTextNode(s):document.createElement("br")),this.editorDiv.append(e)}},iRe=function(){return F(this,yh).replaceAll(" "," ")},pq=function(s){return s.replaceAll(" "," ")},nRe=function(s){const{value:e,fontSize:t,color:i,pageIndex:n}=this._initialData;return this._hasBeenMoved||s.value!==e||s.fontSize!==t||s.color.some((o,l)=>o!==i[l])||s.pageIndex!==n},J(dg,BZ),Ii(dg,"_freeTextDefaultContent",""),Ii(dg,"_internalPadding",0),Ii(dg,"_defaultColor",null),Ii(dg,"_defaultFontSize",10),Ii(dg,"_type","freetext"),Ii(dg,"_editorType",Nn.FREETEXT);let Smt=dg;class Pt{toSVGPath(){uo("Abstract method `toSVGPath` must be implemented.")}get box(){uo("Abstract getter `box` must be implemented.")}serialize(e,t){uo("Abstract method `serialize` must be implemented.")}static _rescale(e,t,i,n,o,l){l||(l=new Float32Array(e.length));for(let r=0,a=e.length;r<a;r+=2)l[r]=t+e[r]*n,l[r+1]=i+e[r+1]*o;return l}static _rescaleAndSwap(e,t,i,n,o,l){l||(l=new Float32Array(e.length));for(let r=0,a=e.length;r<a;r+=2)l[r]=t+e[r+1]*n,l[r+1]=i+e[r]*o;return l}static _translate(e,t,i,n){n||(n=new Float32Array(e.length));for(let o=0,l=e.length;o<l;o+=2)n[o]=t+e[o],n[o+1]=i+e[o+1];return n}static svgRound(e){return Math.round(e*1e4)}static _normalizePoint(e,t,i,n,o){switch(o){case 90:return[1-t/i,e/n];case 180:return[1-e/i,1-t/n];case 270:return[t/i,1-e/n];default:return[e/i,t/n]}}static _normalizePagePoint(e,t,i){switch(i){case 90:return[1-t,e];case 180:return[1-e,1-t];case 270:return[t,1-e];default:return[e,t]}}static createBezierPoints(e,t,i,n,o,l){return[(e+5*i)/6,(t+5*n)/6,(5*i+o)/6,(5*n+l)/6,(i+o)/2,(n+l)/2]}}Ii(Pt,"PRECISION",1e-4);var Th,Km,iw,nw,cg,En,vW,xW,bG,UG,sw,L2,BF,fG,uO,gq,Bh,Ay,sRe,oRe,lRe,rRe,aRe,dRe;const YR=class bq{constructor({x:e,y:t},i,n,o,l,r=0){J(this,Bh),J(this,Th),J(this,Km,[]),J(this,iw),J(this,nw),J(this,cg,[]),J(this,En,new Float32Array(18)),J(this,vW),J(this,xW),J(this,bG),J(this,UG),J(this,sw),J(this,L2),J(this,BF,[]),L(this,Th,i),L(this,L2,o*n),L(this,nw,l),F(this,En).set([NaN,NaN,NaN,NaN,e,t],6),L(this,iw,r),L(this,UG,F(bq,fG)*n),L(this,bG,F(bq,gq)*n),L(this,sw,n),F(this,BF).push(e,t)}isEmpty(){return isNaN(F(this,En)[8])}add({x:e,y:t}){var i;L(this,vW,e),L(this,xW,t);const[n,o,l,r]=F(this,Th);let[a,d,c,h]=F(this,En).subarray(8,12);const u=e-c,m=t-h,p=Math.hypot(u,m);if(p<F(this,bG))return!1;const g=p-F(this,UG),b=g/p,f=b*u,Z=b*m;let A=a,N=d;a=c,d=h,c+=f,h+=Z,(i=F(this,BF))==null||i.push(e,t);const W=-Z/g,Q=f/g,R=W*F(this,L2),M=Q*F(this,L2);return F(this,En).set(F(this,En).subarray(2,8),0),F(this,En).set([c+R,h+M],4),F(this,En).set(F(this,En).subarray(14,18),12),F(this,En).set([c-R,h-M],16),isNaN(F(this,En)[6])?(F(this,cg).length===0&&(F(this,En).set([a+R,d+M],2),F(this,cg).push(NaN,NaN,NaN,NaN,(a+R-n)/l,(d+M-o)/r),F(this,En).set([a-R,d-M],14),F(this,Km).push(NaN,NaN,NaN,NaN,(a-R-n)/l,(d-M-o)/r)),F(this,En).set([A,N,a,d,c,h],6),!this.isEmpty()):(F(this,En).set([A,N,a,d,c,h],6),Math.abs(Math.atan2(N-d,A-a)-Math.atan2(Z,f))<Math.PI/2?([a,d,c,h]=F(this,En).subarray(2,6),F(this,cg).push(NaN,NaN,NaN,NaN,((a+c)/2-n)/l,((d+h)/2-o)/r),[a,d,A,N]=F(this,En).subarray(14,18),F(this,Km).push(NaN,NaN,NaN,NaN,((A+a)/2-n)/l,((N+d)/2-o)/r),!0):([A,N,a,d,c,h]=F(this,En).subarray(0,6),F(this,cg).push(((A+5*a)/6-n)/l,((N+5*d)/6-o)/r,((5*a+c)/6-n)/l,((5*d+h)/6-o)/r,((a+c)/2-n)/l,((d+h)/2-o)/r),[c,h,a,d,A,N]=F(this,En).subarray(12,18),F(this,Km).push(((A+5*a)/6-n)/l,((N+5*d)/6-o)/r,((5*a+c)/6-n)/l,((5*d+h)/6-o)/r,((a+c)/2-n)/l,((d+h)/2-o)/r),!0))}toSVGPath(){if(this.isEmpty())return"";const e=F(this,cg),t=F(this,Km);if(isNaN(F(this,En)[6])&&!this.isEmpty())return E(this,Bh,sRe).call(this);const i=[];i.push(`M${e[4]} ${e[5]}`);for(let n=6;n<e.length;n+=6)isNaN(e[n])?i.push(`L${e[n+4]} ${e[n+5]}`):i.push(`C${e[n]} ${e[n+1]} ${e[n+2]} ${e[n+3]} ${e[n+4]} ${e[n+5]}`);E(this,Bh,lRe).call(this,i);for(let n=t.length-6;n>=6;n-=6)isNaN(t[n])?i.push(`L${t[n+4]} ${t[n+5]}`):i.push(`C${t[n]} ${t[n+1]} ${t[n+2]} ${t[n+3]} ${t[n+4]} ${t[n+5]}`);return E(this,Bh,oRe).call(this,i),i.join(" ")}newFreeDrawOutline(e,t,i,n,o,l){return new uRe(e,t,i,n,o,l)}getOutlines(){var e;const t=F(this,cg),i=F(this,Km),n=F(this,En),[o,l,r,a]=F(this,Th),d=new Float32Array((((e=F(this,BF))==null?void 0:e.length)??0)+2);for(let u=0,m=d.length-2;u<m;u+=2)d[u]=(F(this,BF)[u]-o)/r,d[u+1]=(F(this,BF)[u+1]-l)/a;if(d[d.length-2]=(F(this,vW)-o)/r,d[d.length-1]=(F(this,xW)-l)/a,isNaN(n[6])&&!this.isEmpty())return E(this,Bh,rRe).call(this,d);const c=new Float32Array(F(this,cg).length+24+F(this,Km).length);let h=t.length;for(let u=0;u<h;u+=2){if(isNaN(t[u])){c[u]=c[u+1]=NaN;continue}c[u]=t[u],c[u+1]=t[u+1]}h=E(this,Bh,dRe).call(this,c,h);for(let u=i.length-6;u>=6;u-=6)for(let m=0;m<6;m+=2){if(isNaN(i[u+m])){c[h]=c[h+1]=NaN,h+=2;continue}c[h]=i[u+m],c[h+1]=i[u+m+1],h+=2}return E(this,Bh,aRe).call(this,c,h),this.newFreeDrawOutline(c,d,F(this,Th),F(this,sw),F(this,iw),F(this,nw))}};Th=new WeakMap,Km=new WeakMap,iw=new WeakMap,nw=new WeakMap,cg=new WeakMap,En=new WeakMap,vW=new WeakMap,xW=new WeakMap,bG=new WeakMap,UG=new WeakMap,sw=new WeakMap,L2=new WeakMap,BF=new WeakMap,fG=new WeakMap,uO=new WeakMap,gq=new WeakMap,Bh=new WeakSet,Ay=function(){const s=F(this,En).subarray(4,6),e=F(this,En).subarray(16,18),[t,i,n,o]=F(this,Th);return[(F(this,vW)+(s[0]-e[0])/2-t)/n,(F(this,xW)+(s[1]-e[1])/2-i)/o,(F(this,vW)+(e[0]-s[0])/2-t)/n,(F(this,xW)+(e[1]-s[1])/2-i)/o]},sRe=function(){const[s,e,t,i]=F(this,Th),[n,o,l,r]=E(this,Bh,Ay).call(this);return`M${(F(this,En)[2]-s)/t} ${(F(this,En)[3]-e)/i} L${(F(this,En)[4]-s)/t} ${(F(this,En)[5]-e)/i} L${n} ${o} L${l} ${r} L${(F(this,En)[16]-s)/t} ${(F(this,En)[17]-e)/i} L${(F(this,En)[14]-s)/t} ${(F(this,En)[15]-e)/i} Z`},oRe=function(s){const e=F(this,Km);s.push(`L${e[4]} ${e[5]} Z`)},lRe=function(s){const[e,t,i,n]=F(this,Th),o=F(this,En).subarray(4,6),l=F(this,En).subarray(16,18),[r,a,d,c]=E(this,Bh,Ay).call(this);s.push(`L${(o[0]-e)/i} ${(o[1]-t)/n} L${r} ${a} L${d} ${c} L${(l[0]-e)/i} ${(l[1]-t)/n}`)},rRe=function(s){const e=F(this,En),[t,i,n,o]=F(this,Th),[l,r,a,d]=E(this,Bh,Ay).call(this),c=new Float32Array(36);return c.set([NaN,NaN,NaN,NaN,(e[2]-t)/n,(e[3]-i)/o,NaN,NaN,NaN,NaN,(e[4]-t)/n,(e[5]-i)/o,NaN,NaN,NaN,NaN,l,r,NaN,NaN,NaN,NaN,a,d,NaN,NaN,NaN,NaN,(e[16]-t)/n,(e[17]-i)/o,NaN,NaN,NaN,NaN,(e[14]-t)/n,(e[15]-i)/o],0),this.newFreeDrawOutline(c,s,F(this,Th),F(this,sw),F(this,iw),F(this,nw))},aRe=function(s,e){const t=F(this,Km);return s.set([NaN,NaN,NaN,NaN,t[4],t[5]],e),e+=6},dRe=function(s,e){const t=F(this,En).subarray(4,6),i=F(this,En).subarray(16,18),[n,o,l,r]=F(this,Th),[a,d,c,h]=E(this,Bh,Ay).call(this);return s.set([NaN,NaN,NaN,NaN,(t[0]-n)/l,(t[1]-o)/r,NaN,NaN,NaN,NaN,a,d,NaN,NaN,NaN,NaN,c,h,NaN,NaN,NaN,NaN,(i[0]-n)/l,(i[1]-o)/r],e),e+=24},J(YR,fG,8),J(YR,uO,2),J(YR,gq,F(YR,fG)+F(YR,uO));let cRe=YR;var k2,IS,eU,FG,gh,ZG,yl,Uq,hRe;class uRe extends Pt{constructor(e,t,i,n,o,l){super(),J(this,Uq),J(this,k2),J(this,IS,new Float32Array(4)),J(this,eU),J(this,FG),J(this,gh),J(this,ZG),J(this,yl),L(this,yl,e),L(this,gh,t),L(this,k2,i),L(this,ZG,n),L(this,eU,o),L(this,FG,l),this.lastPoint=[NaN,NaN],E(this,Uq,hRe).call(this,l);const[r,a,d,c]=F(this,IS);for(let h=0,u=e.length;h<u;h+=2)e[h]=(e[h]-r)/d,e[h+1]=(e[h+1]-a)/c;for(let h=0,u=t.length;h<u;h+=2)t[h]=(t[h]-r)/d,t[h+1]=(t[h+1]-a)/c}toSVGPath(){const e=[`M${F(this,yl)[4]} ${F(this,yl)[5]}`];for(let t=6,i=F(this,yl).length;t<i;t+=6){if(isNaN(F(this,yl)[t])){e.push(`L${F(this,yl)[t+4]} ${F(this,yl)[t+5]}`);continue}e.push(`C${F(this,yl)[t]} ${F(this,yl)[t+1]} ${F(this,yl)[t+2]} ${F(this,yl)[t+3]} ${F(this,yl)[t+4]} ${F(this,yl)[t+5]}`)}return e.push("Z"),e.join(" ")}serialize([e,t,i,n],o){const l=i-e,r=n-t;let a,d;switch(o){case 0:a=Pt._rescale(F(this,yl),e,n,l,-r),d=Pt._rescale(F(this,gh),e,n,l,-r);break;case 90:a=Pt._rescaleAndSwap(F(this,yl),e,t,l,r),d=Pt._rescaleAndSwap(F(this,gh),e,t,l,r);break;case 180:a=Pt._rescale(F(this,yl),i,t,-l,r),d=Pt._rescale(F(this,gh),i,t,-l,r);break;case 270:a=Pt._rescaleAndSwap(F(this,yl),i,n,-l,-r),d=Pt._rescaleAndSwap(F(this,gh),i,n,-l,-r);break}return{outline:Array.from(a),points:[Array.from(d)]}}get box(){return F(this,IS)}newOutliner(e,t,i,n,o,l=0){return new cRe(e,t,i,n,o,l)}getNewOutline(e,t){const[i,n,o,l]=F(this,IS),[r,a,d,c]=F(this,k2),h=o*d,u=l*c,m=i*d+r,p=n*c+a,g=this.newOutliner({x:F(this,gh)[0]*h+m,y:F(this,gh)[1]*u+p},F(this,k2),F(this,ZG),e,F(this,FG),t??F(this,eU));for(let b=2;b<F(this,gh).length;b+=2)g.add({x:F(this,gh)[b]*h+m,y:F(this,gh)[b+1]*u+p});return g.getOutlines()}}k2=new WeakMap,IS=new WeakMap,eU=new WeakMap,FG=new WeakMap,gh=new WeakMap,ZG=new WeakMap,yl=new WeakMap,Uq=new WeakSet,hRe=function(s){const e=F(this,yl);let t=e[4],i=e[5],n=t,o=i,l=t,r=i,a=t,d=i;const c=s?Math.max:Math.min;for(let u=6,m=e.length;u<m;u+=6){if(isNaN(e[u]))n=Math.min(n,e[u+4]),o=Math.min(o,e[u+5]),l=Math.max(l,e[u+4]),r=Math.max(r,e[u+5]),d<e[u+5]?(a=e[u+4],d=e[u+5]):d===e[u+5]&&(a=c(a,e[u+4]));else{const p=Ui.bezierBoundingBox(t,i,...e.slice(u,u+6));n=Math.min(n,p[0]),o=Math.min(o,p[1]),l=Math.max(l,p[2]),r=Math.max(r,p[3]),d<p[3]?(a=p[2],d=p[3]):d===p[3]&&(a=c(a,p[2]))}t=e[u+4],i=e[u+5]}const h=F(this,IS);h[0]=n-F(this,eU),h[1]=o-F(this,eU),h[2]=l-n+2*F(this,eU),h[3]=r-o+2*F(this,eU),this.lastPoint=[a,d]};var vJ,xJ,LF,Bm,op,mRe,VI,pRe,gRe,fq;class Fq{constructor(e,t=0,i=0,n=!0){J(this,op),J(this,vJ),J(this,xJ),J(this,LF,[]),J(this,Bm,[]);let o=1/0,l=-1/0,r=1/0,a=-1/0;const d=10**-4;for(const{x:b,y:f,width:Z,height:A}of e){const N=Math.floor((b-t)/d)*d,W=Math.ceil((b+Z+t)/d)*d,Q=Math.floor((f-t)/d)*d,R=Math.ceil((f+A+t)/d)*d,M=[N,Q,R,!0],w=[W,Q,R,!1];F(this,LF).push(M,w),o=Math.min(o,N),l=Math.max(l,W),r=Math.min(r,Q),a=Math.max(a,R)}const c=l-o+2*i,h=a-r+2*i,u=o-i,m=r-i,p=F(this,LF).at(n?-1:-2),g=[p[0],p[2]];for(const b of F(this,LF)){const[f,Z,A]=b;b[0]=(f-u)/c,b[1]=(Z-m)/h,b[2]=(A-m)/h}L(this,vJ,new Float32Array([u,m,c,h])),L(this,xJ,g)}getOutlines(){F(this,LF).sort((t,i)=>t[0]-i[0]||t[1]-i[1]||t[2]-i[2]);const e=[];for(const t of F(this,LF))t[3]?(e.push(...E(this,op,fq).call(this,t)),E(this,op,pRe).call(this,t)):(E(this,op,gRe).call(this,t),e.push(...E(this,op,fq).call(this,t)));return E(this,op,mRe).call(this,e)}}vJ=new WeakMap,xJ=new WeakMap,LF=new WeakMap,Bm=new WeakMap,op=new WeakSet,mRe=function(s){const e=[],t=new Set;for(const o of s){const[l,r,a]=o;e.push([l,r,o],[l,a,o])}e.sort((o,l)=>o[1]-l[1]||o[0]-l[0]);for(let o=0,l=e.length;o<l;o+=2){const r=e[o][2],a=e[o+1][2];r.push(a),a.push(r),t.add(r),t.add(a)}const i=[];let n;for(;t.size>0;){const o=t.values().next().value;let[l,r,a,d,c]=o;t.delete(o);let h=l,u=r;for(n=[l,a],i.push(n);;){let m;if(t.has(d))m=d;else if(t.has(c))m=c;else break;t.delete(m),[l,r,a,d,c]=m,h!==l&&(n.push(h,u,l,u===r?r:a),h=l),u=u===r?a:r}n.push(h,u)}return new Wmt(i,F(this,vJ),F(this,xJ))},VI=function(s){const e=F(this,Bm);let t=0,i=e.length-1;for(;t<=i;){const n=t+i>>1,o=e[n][0];if(o===s)return n;o<s?t=n+1:i=n-1}return i+1},pRe=function([,s,e]){const t=E(this,op,VI).call(this,s);F(this,Bm).splice(t,0,[s,e])},gRe=function([,s,e]){const t=E(this,op,VI).call(this,s);for(let i=t;i<F(this,Bm).length;i++){const[n,o]=F(this,Bm)[i];if(n!==s)break;if(n===s&&o===e){F(this,Bm).splice(i,1);return}}for(let i=t-1;i>=0;i--){const[n,o]=F(this,Bm)[i];if(n!==s)break;if(n===s&&o===e){F(this,Bm).splice(i,1);return}}},fq=function(s){const[e,t,i]=s,n=[[e,t,i]],o=E(this,op,VI).call(this,i);for(let l=0;l<o;l++){const[r,a]=F(this,Bm)[l];for(let d=0,c=n.length;d<c;d++){const[,h,u]=n[d];if(!(a<=h||u<=r)){if(h>=r){if(u>a)n[d][1]=a;else{if(c===1)return[];n.splice(d,1),d--,c--}continue}n[d][2]=r,u>a&&n.push([e,a,u])}}}return n};var AG,I2;class Wmt extends Pt{constructor(e,t,i){super(),J(this,AG),J(this,I2),L(this,I2,e),L(this,AG,t),this.lastPoint=i}toSVGPath(){const e=[];for(const t of F(this,I2)){let[i,n]=t;e.push(`M${i} ${n}`);for(let o=2;o<t.length;o+=2){const l=t[o],r=t[o+1];l===i?(e.push(`V${r}`),n=r):r===n&&(e.push(`H${l}`),i=l)}e.push("Z")}return e.join(" ")}serialize([e,t,i,n],o){const l=[],r=i-e,a=n-t;for(const d of F(this,I2)){const c=new Array(d.length);for(let h=0;h<d.length;h+=2)c[h]=e+d[h]*r,c[h+1]=n-d[h+1]*a;l.push(c)}return l}get box(){return F(this,AG)}get classNamesForOutlining(){return["highlightOutline"]}}AG=new WeakMap,I2=new WeakMap;class Zq extends cRe{newFreeDrawOutline(e,t,i,n,o,l){return new Vmt(e,t,i,n,o,l)}}class Vmt extends uRe{newOutliner(e,t,i,n,o,l=0){return new Zq(e,t,i,n,o,l)}}var Sm,uR,Ny,ur,QI,Ry,yI,CI,oF,Wm,Sy,Rc,Wy,Ho,mO,pO,gO,lF,Khe,tb;let bRe=(Rc=class{constructor({editor:s=null,uiManager:e=null}){J(this,Ho),J(this,Sm,null),J(this,uR,null),J(this,Ny),J(this,ur,null),J(this,QI,!1),J(this,Ry,!1),J(this,yI,null),J(this,CI),J(this,oF,null),J(this,Wm,null),J(this,Sy);var t;s?(L(this,Ry,!1),L(this,Sy,Kn.HIGHLIGHT_COLOR),L(this,yI,s)):(L(this,Ry,!0),L(this,Sy,Kn.HIGHLIGHT_DEFAULT_COLOR)),L(this,Wm,(s==null?void 0:s._uiManager)||e),L(this,CI,F(this,Wm)._eventBus),L(this,Ny,(s==null?void 0:s.color)||((t=F(this,Wm))==null?void 0:t.highlightColors.values().next().value)||"#FFFF98"),F(Rc,Wy)||L(Rc,Wy,Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"}))}static get _keyboardManager(){return Mn(this,"_keyboardManager",new vB([[["Escape","mac+Escape"],Rc.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],Rc.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],Rc.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],Rc.prototype._moveToPrevious],[["Home","mac+Home"],Rc.prototype._moveToBeginning],[["End","mac+End"],Rc.prototype._moveToEnd]]))}renderButton(){const s=L(this,Sm,document.createElement("button"));s.className="colorPicker",s.tabIndex="0",s.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),s.setAttribute("aria-haspopup",!0);const e=F(this,Wm)._signal;s.addEventListener("click",E(this,Ho,lF).bind(this),{signal:e}),s.addEventListener("keydown",E(this,Ho,gO).bind(this),{signal:e});const t=L(this,uR,document.createElement("span"));return t.className="swatch",t.setAttribute("aria-hidden",!0),t.style.backgroundColor=F(this,Ny),s.append(t),s}renderMainDropdown(){const s=L(this,ur,E(this,Ho,mO).call(this));return s.setAttribute("aria-orientation","horizontal"),s.setAttribute("aria-labelledby","highlightColorPickerLabel"),s}_colorSelectFromKeyboard(s){if(s.target===F(this,Sm)){E(this,Ho,lF).call(this,s);return}const e=s.target.getAttribute("data-color");e&&E(this,Ho,pO).call(this,e,s)}_moveToNext(s){var e,t;if(!F(this,Ho,tb)){E(this,Ho,lF).call(this,s);return}if(s.target===F(this,Sm)){(e=F(this,ur).firstChild)==null||e.focus();return}(t=s.target.nextSibling)==null||t.focus()}_moveToPrevious(s){var e,t;if(s.target===((e=F(this,ur))==null?void 0:e.firstChild)||s.target===F(this,Sm)){F(this,Ho,tb)&&this._hideDropdownFromKeyboard();return}F(this,Ho,tb)||E(this,Ho,lF).call(this,s),(t=s.target.previousSibling)==null||t.focus()}_moveToBeginning(s){var e;if(!F(this,Ho,tb)){E(this,Ho,lF).call(this,s);return}(e=F(this,ur).firstChild)==null||e.focus()}_moveToEnd(s){var e;if(!F(this,Ho,tb)){E(this,Ho,lF).call(this,s);return}(e=F(this,ur).lastChild)==null||e.focus()}hideDropdown(){var s,e;(s=F(this,ur))==null||s.classList.add("hidden"),(e=F(this,oF))==null||e.abort(),L(this,oF,null)}_hideDropdownFromKeyboard(){var s;if(!F(this,Ry)){if(!F(this,Ho,tb)){(s=F(this,yI))==null||s.unselect();return}this.hideDropdown(),F(this,Sm).focus({preventScroll:!0,focusVisible:F(this,QI)})}}updateColor(s){if(F(this,uR)&&(F(this,uR).style.backgroundColor=s),!F(this,ur))return;const e=F(this,Wm).highlightColors.values();for(const t of F(this,ur).children)t.setAttribute("aria-selected",e.next().value===s)}destroy(){var s,e;(s=F(this,Sm))==null||s.remove(),L(this,Sm,null),L(this,uR,null),(e=F(this,ur))==null||e.remove(),L(this,ur,null)}},Sm=new WeakMap,uR=new WeakMap,Ny=new WeakMap,ur=new WeakMap,QI=new WeakMap,Ry=new WeakMap,yI=new WeakMap,CI=new WeakMap,oF=new WeakMap,Wm=new WeakMap,Sy=new WeakMap,Wy=new WeakMap,Ho=new WeakSet,mO=function(){const s=document.createElement("div"),e=F(this,Wm)._signal;s.addEventListener("contextmenu",tm,{signal:e}),s.className="dropdown",s.role="listbox",s.setAttribute("aria-multiselectable",!1),s.setAttribute("aria-orientation","vertical"),s.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[t,i]of F(this,Wm).highlightColors){const n=document.createElement("button");n.tabIndex="0",n.role="option",n.setAttribute("data-color",i),n.title=t,n.setAttribute("data-l10n-id",F(Rc,Wy)[t]);const o=document.createElement("span");n.append(o),o.className="swatch",o.style.backgroundColor=i,n.setAttribute("aria-selected",i===F(this,Ny)),n.addEventListener("click",E(this,Ho,pO).bind(this,i),{signal:e}),s.append(n)}return s.addEventListener("keydown",E(this,Ho,gO).bind(this),{signal:e}),s},pO=function(s,e){e.stopPropagation(),F(this,CI).dispatch("switchannotationeditorparams",{source:this,type:F(this,Sy),value:s})},gO=function(s){Rc._keyboardManager.exec(this,s)},lF=function(s){if(F(this,Ho,tb)){this.hideDropdown();return}if(L(this,QI,s.detail===0),F(this,oF)||(L(this,oF,new AbortController),window.addEventListener("pointerdown",E(this,Ho,Khe).bind(this),{signal:F(this,Wm).combinedSignal(F(this,oF))})),F(this,ur)){F(this,ur).classList.remove("hidden");return}const e=L(this,ur,E(this,Ho,mO).call(this));F(this,Sm).append(e)},Khe=function(s){var e;(e=F(this,ur))!=null&&e.contains(s.target)||this.hideDropdown()},tb=function(){return F(this,ur)&&!F(this,ur).classList.contains("hidden")},J(Rc,Wy,null),Rc);var ow,JJ,RU,DS,lw,Cc,XJ,YJ,JW,Vu,Wh,Qa,rw,SU,rd,D2,Bu,NG,Ys,Aq,zJ,URe,fRe,qhe,Nq,kF,Yg,XW,FRe,RG,aw,ZRe,ARe,NRe,RRe,SRe;const Id=class Za extends fl{constructor(e){super({...e,name:"highlightEditor"}),J(this,Ys),J(this,ow,null),J(this,JJ,0),J(this,RU),J(this,DS,null),J(this,lw,null),J(this,Cc,null),J(this,XJ,null),J(this,YJ,0),J(this,JW,null),J(this,Vu,null),J(this,Wh,null),J(this,Qa,!1),J(this,rw,null),J(this,SU),J(this,rd,null),J(this,D2,""),J(this,Bu),J(this,NG,""),this.color=e.color||Za._defaultColor,L(this,Bu,e.thickness||Za._defaultThickness),L(this,SU,e.opacity||Za._defaultOpacity),L(this,RU,e.boxes||null),L(this,NG,e.methodOfCreation||""),L(this,D2,e.text||""),this._isDraggable=!1,e.highlightId>-1?(L(this,Qa,!0),E(this,Ys,zJ).call(this,e),E(this,Ys,kF).call(this)):F(this,RU)&&(L(this,ow,e.anchorNode),L(this,JJ,e.anchorOffset),L(this,XJ,e.focusNode),L(this,YJ,e.focusOffset),E(this,Ys,Aq).call(this),E(this,Ys,kF).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const e=Za.prototype;return Mn(this,"_keyboardManager",new vB([[["ArrowLeft","mac+ArrowLeft"],e._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],e._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],e._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],e._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:F(this,Qa)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:F(this,Bu),methodOfCreation:F(this,NG)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(e){return{numberOfColors:e.get("color").size}}static initialize(e,t){var i;fl.initialize(e,t),Za._defaultColor||(Za._defaultColor=((i=t.highlightColors)==null?void 0:i.values().next().value)||"#fff066")}static updateDefaultParams(e,t){switch(e){case Kn.HIGHLIGHT_DEFAULT_COLOR:Za._defaultColor=t;break;case Kn.HIGHLIGHT_THICKNESS:Za._defaultThickness=t;break}}translateInPage(e,t){}get toolbarPosition(){return F(this,rw)}updateParams(e,t){switch(e){case Kn.HIGHLIGHT_COLOR:E(this,Ys,URe).call(this,t);break;case Kn.HIGHLIGHT_THICKNESS:E(this,Ys,fRe).call(this,t);break}}static get defaultPropertiesToUpdate(){return[[Kn.HIGHLIGHT_DEFAULT_COLOR,Za._defaultColor],[Kn.HIGHLIGHT_THICKNESS,Za._defaultThickness]]}get propertiesToUpdate(){return[[Kn.HIGHLIGHT_COLOR,this.color||Za._defaultColor],[Kn.HIGHLIGHT_THICKNESS,F(this,Bu)||Za._defaultThickness],[Kn.HIGHLIGHT_FREE,F(this,Qa)]]}async addEditToolbar(){const e=await super.addEditToolbar();return e?(this._uiManager.highlightColors&&(L(this,lw,new bRe({editor:this})),e.addColorPicker(F(this,lw))),e):null}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(E(this,Ys,aw).call(this))}getBaseTranslation(){return[0,0]}getRect(e,t){return super.getRect(e,t,E(this,Ys,aw).call(this))}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),e&&this.div.focus()}remove(){E(this,Ys,Nq).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(E(this,Ys,kF).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){var t;let i=!1;this.parent&&!e?E(this,Ys,Nq).call(this):e&&(E(this,Ys,kF).call(this,e),i=!this.parent&&((t=this.div)==null?void 0:t.classList.contains("selectedEditor"))),super.setParent(e),this.show(this._isVisible),i&&this.select()}rotate(e){var t,i,n;const{drawLayer:o}=this.parent;let l;F(this,Qa)?(e=(e-this.rotation+360)%360,l=E(t=Za,Yg,XW).call(t,F(this,Vu).box,e)):l=E(i=Za,Yg,XW).call(i,[this.x,this.y,this.width,this.height],e),o.updateProperties(F(this,Wh),{bbox:l,root:{"data-main-rotation":e}}),o.updateProperties(F(this,rd),{bbox:E(n=Za,Yg,XW).call(n,F(this,Cc).box,e),root:{"data-main-rotation":e}})}render(){if(this.div)return this.div;const e=super.render();F(this,D2)&&(e.setAttribute("aria-label",F(this,D2)),e.setAttribute("role","mark")),F(this,Qa)?e.classList.add("free"):this.div.addEventListener("keydown",E(this,Ys,FRe).bind(this),{signal:this._uiManager._signal});const t=L(this,JW,document.createElement("div"));e.append(t),t.setAttribute("aria-hidden","true"),t.className="internal",t.style.clipPath=F(this,DS);const[i,n]=this.parentDimensions;return this.setDims(this.width*i,this.height*n),QJ(this,F(this,JW),["pointerover","pointerleave"]),this.enableEditing(),e}pointerover(){var e;this.isSelected||(e=this.parent)==null||e.drawLayer.updateProperties(F(this,rd),{rootClass:{hovered:!0}})}pointerleave(){var e;this.isSelected||(e=this.parent)==null||e.drawLayer.updateProperties(F(this,rd),{rootClass:{hovered:!1}})}_moveCaret(e){switch(this.parent.unselect(this),e){case 0:case 2:E(this,Ys,RG).call(this,!0);break;case 1:case 3:E(this,Ys,RG).call(this,!1);break}}select(){var e;super.select(),F(this,rd)&&((e=this.parent)==null||e.drawLayer.updateProperties(F(this,rd),{rootClass:{hovered:!1,selected:!0}}))}unselect(){var e;super.unselect(),F(this,rd)&&((e=this.parent)==null||e.drawLayer.updateProperties(F(this,rd),{rootClass:{selected:!1}}),F(this,Qa)||E(this,Ys,RG).call(this,!1))}get _mustFixPosition(){return!F(this,Qa)}show(e=this._isVisible){super.show(e),this.parent&&(this.parent.drawLayer.updateProperties(F(this,Wh),{rootClass:{hidden:!e}}),this.parent.drawLayer.updateProperties(F(this,rd),{rootClass:{hidden:!e}}))}static startHighlighting(e,t,{target:i,x:n,y:o}){const{x:l,y:r,width:a,height:d}=i.getBoundingClientRect(),c=new AbortController,h=e.combinedSignal(c),u=m=>{c.abort(),E(this,Yg,RRe).call(this,e,m)};window.addEventListener("blur",u,{signal:h}),window.addEventListener("pointerup",u,{signal:h}),window.addEventListener("pointerdown",xc,{capture:!0,passive:!1,signal:h}),window.addEventListener("contextmenu",tm,{signal:h}),i.addEventListener("pointermove",E(this,Yg,NRe).bind(this,e),{signal:h}),this._freeHighlight=new Zq({x:n,y:o},[l,r,a,d],e.scale,this._defaultThickness/2,t,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static async deserialize(e,t,i){var n,o,l,r;let a=null;if(e instanceof KNe){const{data:{quadPoints:Z,rect:A,rotation:N,id:W,color:Q,opacity:R,popupRef:M},parent:{page:{pageNumber:w}}}=e;a=e={annotationType:Nn.HIGHLIGHT,color:Array.from(Q),opacity:R,quadPoints:Z,boxes:null,pageIndex:w-1,rect:A.slice(0),rotation:N,id:W,deleted:!1,popupRef:M}}else if(e instanceof lne){const{data:{inkLists:Z,rect:A,rotation:N,id:W,color:Q,borderStyle:{rawWidth:R},popupRef:M},parent:{page:{pageNumber:w}}}=e;a=e={annotationType:Nn.HIGHLIGHT,color:Array.from(Q),thickness:R,inkLists:Z,boxes:null,pageIndex:w-1,rect:A.slice(0),rotation:N,id:W,deleted:!1,popupRef:M}}const{color:d,quadPoints:c,inkLists:h,opacity:u}=e,m=await super.deserialize(e,t,i);m.color=Ui.makeHexColor(...d),L(m,SU,u||1),h&&L(m,Bu,e.thickness),m.annotationElementId=e.id||null,m._initialData=a;const[p,g]=m.pageDimensions,[b,f]=m.pageTranslation;if(c){const Z=L(m,RU,[]);for(let A=0;A<c.length;A+=8)Z.push({x:(c[A]-b)/p,y:1-(c[A+1]-f)/g,width:(c[A+2]-c[A])/p,height:(c[A+1]-c[A+5])/g});E(n=m,Ys,Aq).call(n),E(o=m,Ys,kF).call(o),m.rotate(m.rotation)}else if(h){L(m,Qa,!0);const Z=h[0],A={x:Z[0]-b,y:g-(Z[1]-f)},N=new Zq(A,[0,0,p,g],1,F(m,Bu)/2,!0,.001);for(let R=0,M=Z.length;R<M;R+=2)A.x=Z[R]-b,A.y=g-(Z[R+1]-f),N.add(A);const{id:W,clipPathId:Q}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:m.color,"fill-opacity":m._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:N.toSVGPath()}},!0,!0);E(l=m,Ys,zJ).call(l,{highlightOutlines:N.getOutlines(),highlightId:W,clipPathId:Q}),E(r=m,Ys,kF).call(r)}return m}serialize(e=!1){if(this.isEmpty()||e)return null;if(this.deleted)return this.serializeDeleted();const t=this.getRect(0,0),i=fl._colorManager.convert(this.color),n={annotationType:Nn.HIGHLIGHT,color:i,opacity:F(this,SU),thickness:F(this,Bu),quadPoints:E(this,Ys,ZRe).call(this),outlines:E(this,Ys,ARe).call(this,t),pageIndex:this.pageIndex,rect:t,rotation:E(this,Ys,aw).call(this),structTreeParentId:this._structTreeParentId};return this.annotationElementId&&!E(this,Ys,SRe).call(this,n)?null:(n.id=this.annotationElementId,n)}renderAnnotationElement(e){return e.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};ow=new WeakMap,JJ=new WeakMap,RU=new WeakMap,DS=new WeakMap,lw=new WeakMap,Cc=new WeakMap,XJ=new WeakMap,YJ=new WeakMap,JW=new WeakMap,Vu=new WeakMap,Wh=new WeakMap,Qa=new WeakMap,rw=new WeakMap,SU=new WeakMap,rd=new WeakMap,D2=new WeakMap,Bu=new WeakMap,NG=new WeakMap,Ys=new WeakSet,Aq=function(){const s=new Fq(F(this,RU),.001);L(this,Vu,s.getOutlines()),[this.x,this.y,this.width,this.height]=F(this,Vu).box;const e=new Fq(F(this,RU),.0025,.001,this._uiManager.direction==="ltr");L(this,Cc,e.getOutlines());const{lastPoint:t}=F(this,Cc);L(this,rw,[(t[0]-this.x)/this.width,(t[1]-this.y)/this.height])},zJ=function({highlightOutlines:s,highlightId:e,clipPathId:t}){var i,n;if(L(this,Vu,s),L(this,Cc,s.getNewOutline(F(this,Bu)/2+1.5,.0025)),e>=0)L(this,Wh,e),L(this,DS,t),this.parent.drawLayer.finalizeDraw(e,{bbox:s.box,path:{d:s.toSVGPath()}}),L(this,rd,this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:F(this,Cc).box,path:{d:F(this,Cc).toSVGPath()}},!0));else if(this.parent){const c=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(F(this,Wh),{bbox:E(i=Id,Yg,XW).call(i,F(this,Vu).box,(c-this.rotation+360)%360),path:{d:s.toSVGPath()}}),this.parent.drawLayer.updateProperties(F(this,rd),{bbox:E(n=Id,Yg,XW).call(n,F(this,Cc).box,c),path:{d:F(this,Cc).toSVGPath()}})}const[o,l,r,a]=s.box;switch(this.rotation){case 0:this.x=o,this.y=l,this.width=r,this.height=a;break;case 90:{const[c,h]=this.parentDimensions;this.x=l,this.y=1-o,this.width=r*h/c,this.height=a*c/h;break}case 180:this.x=1-o,this.y=1-l,this.width=r,this.height=a;break;case 270:{const[c,h]=this.parentDimensions;this.x=1-l,this.y=o,this.width=r*h/c,this.height=a*c/h;break}}const{lastPoint:d}=F(this,Cc);L(this,rw,[(d[0]-o)/r,(d[1]-l)/a])},URe=function(s){const e=(n,o)=>{var l,r;this.color=n,L(this,SU,o),(l=this.parent)==null||l.drawLayer.updateProperties(F(this,Wh),{root:{fill:n,"fill-opacity":o}}),(r=F(this,lw))==null||r.updateColor(n)},t=this.color,i=F(this,SU);this.addCommands({cmd:e.bind(this,s,Id._defaultOpacity),undo:e.bind(this,t,i),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Kn.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(s)},!0)},fRe=function(s){const e=F(this,Bu),t=i=>{L(this,Bu,i),E(this,Ys,qhe).call(this,i)};this.addCommands({cmd:t.bind(this,s),undo:t.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Kn.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:s},!0)},qhe=function(s){if(!F(this,Qa))return;E(this,Ys,zJ).call(this,{highlightOutlines:F(this,Vu).getNewOutline(s/2)}),this.fixAndSetPosition();const[e,t]=this.parentDimensions;this.setDims(this.width*e,this.height*t)},Nq=function(){F(this,Wh)===null||!this.parent||(this.parent.drawLayer.remove(F(this,Wh)),L(this,Wh,null),this.parent.drawLayer.remove(F(this,rd)),L(this,rd,null))},kF=function(s=this.parent){F(this,Wh)===null&&({id:Ad(this,Wh)._,clipPathId:Ad(this,DS)._}=s.drawLayer.draw({bbox:F(this,Vu).box,root:{viewBox:"0 0 1 1",fill:this.color,"fill-opacity":F(this,SU)},rootClass:{highlight:!0,free:F(this,Qa)},path:{d:F(this,Vu).toSVGPath()}},!1,!0),L(this,rd,s.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:F(this,Qa)},bbox:F(this,Cc).box,path:{d:F(this,Cc).toSVGPath()}},F(this,Qa))),F(this,JW)&&(F(this,JW).style.clipPath=F(this,DS)))},Yg=new WeakSet,XW=function([s,e,t,i],n){switch(n){case 90:return[1-e-i,s,i,t];case 180:return[1-s-t,1-e-i,t,i];case 270:return[e,1-s-t,i,t]}return[s,e,t,i]},FRe=function(s){Id._keyboardManager.exec(this,s)},RG=function(s){if(!F(this,ow))return;const e=window.getSelection();s?e.setPosition(F(this,ow),F(this,JJ)):e.setPosition(F(this,XJ),F(this,YJ))},aw=function(){return F(this,Qa)?this.rotation:0},ZRe=function(){if(F(this,Qa))return null;const[s,e]=this.pageDimensions,[t,i]=this.pageTranslation,n=F(this,RU),o=new Float32Array(n.length*8);let l=0;for(const{x:r,y:a,width:d,height:c}of n){const h=r*s+t,u=(1-a)*e+i;o[l]=o[l+4]=h,o[l+1]=o[l+3]=u,o[l+2]=o[l+6]=h+d*s,o[l+5]=o[l+7]=u-c*e,l+=8}return o},ARe=function(s){return F(this,Vu).serialize(s,E(this,Ys,aw).call(this))},NRe=function(s,e){this._freeHighlight.add(e)&&s.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})},RRe=function(s,e){this._freeHighlight.isEmpty()?s.drawLayer.remove(this._freeHighlightId):s.createAndAddNewEditor(e,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},SRe=function(s){const{color:e}=this._initialData;return s.color.some((t,i)=>t!==e[i])},J(Id,Yg),Ii(Id,"_defaultColor",null),Ii(Id,"_defaultOpacity",1),Ii(Id,"_defaultThickness",12),Ii(Id,"_type","highlight"),Ii(Id,"_editorType",Nn.HIGHLIGHT),Ii(Id,"_freeHighlightId",-1),Ii(Id,"_freeHighlight",null),Ii(Id,"_freeHighlightClipId","");let $he=Id;var zR;class Qmt{constructor(){J(this,zR,Object.create(null))}updateProperty(e,t){this[e]=t,this.updateSVGProperty(e,t)}updateProperties(e){if(e)for(const[t,i]of Object.entries(e))this.updateProperty(t,i)}updateSVGProperty(e,t){F(this,zR)[e]=t}toSVGProperties(){const e=F(this,zR);return L(this,zR,Object.create(null)),{root:e}}reset(){L(this,zR,Object.create(null))}updateAll(e=this){this.updateProperties(e)}clone(){uo("Not implemented")}}zR=new WeakMap;var Vh,G2,vr,GS,ES,yb,Cb,wb,vS,Qo,Rq,bO,Sq,E2,eue,SG,dw,_R;const bh=class Ji extends fl{constructor(e){super(e),J(this,Qo),J(this,Vh,null),J(this,G2),Ii(this,"_drawId",null),L(this,G2,e.mustBeCommitted||!1),e.drawOutlines&&(E(this,Qo,Rq).call(this,e),E(this,Qo,E2).call(this))}static _mergeSVGProperties(e,t){const i=new Set(Object.keys(e));for(const[n,o]of Object.entries(t))i.has(n)?Object.assign(e[n],o):e[n]=o;return e}static getDefaultDrawingOptions(e){uo("Not implemented")}static get typesMap(){uo("Not implemented")}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(e,t){const i=this.typesMap.get(e);i&&this._defaultDrawingOptions.updateProperty(i,t),this._currentParent&&(F(Ji,vr).updateProperty(i,t),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(e,t){const i=this.constructor.typesMap.get(e);i&&this._updateProperty(e,i,t)}static get defaultPropertiesToUpdate(){const e=[],t=this._defaultDrawingOptions;for(const[i,n]of this.typesMap)e.push([i,t[n]]);return e}get propertiesToUpdate(){const e=[],{_drawingOptions:t}=this;for(const[i,n]of this.constructor.typesMap)e.push([i,t[n]]);return e}_updateProperty(e,t,i){const n=this._drawingOptions,o=n[t],l=r=>{var a;n.updateProperty(t,r);const d=F(this,Vh).updateProperty(t,r);d&&E(this,Qo,dw).call(this,d),(a=this.parent)==null||a.drawLayer.updateProperties(this._drawId,n.toSVGProperties())};this.addCommands({cmd:l.bind(this,i),undo:l.bind(this,o),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:e,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,Ji._mergeSVGProperties(F(this,Vh).getPathResizingSVGProperties(E(this,Qo,SG).call(this)),{bbox:E(this,Qo,_R).call(this)}))}_onResized(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,Ji._mergeSVGProperties(F(this,Vh).getPathResizedSVGProperties(E(this,Qo,SG).call(this)),{bbox:E(this,Qo,_R).call(this)}))}_onTranslating(e,t){var i;(i=this.parent)==null||i.drawLayer.updateProperties(this._drawId,{bbox:E(this,Qo,_R).call(this,e,t)})}_onTranslated(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,Ji._mergeSVGProperties(F(this,Vh).getPathTranslatedSVGProperties(E(this,Qo,SG).call(this),this.parentDimensions),{bbox:E(this,Qo,_R).call(this)}))}_onStartDragging(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){var e;(e=this.parent)==null||e.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(e){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,F(this,G2)&&(L(this,G2,!1),this.commit(),this.parent.setSelected(this),e&&this.isOnScreen&&this.div.focus())}remove(){E(this,Qo,Sq).call(this),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(E(this,Qo,E2).call(this),E(this,Qo,dw).call(this,F(this,Vh).box),this.isAttachedToDOM||this.parent.add(this)))}setParent(e){var t;let i=!1;this.parent&&!e?(this._uiManager.removeShouldRescale(this),E(this,Qo,Sq).call(this)):e&&(this._uiManager.addShouldRescale(this),E(this,Qo,E2).call(this,e),i=!this.parent&&((t=this.div)==null?void 0:t.classList.contains("selectedEditor"))),super.setParent(e),i&&this.select()}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,Ji._mergeSVGProperties({bbox:E(this,Qo,_R).call(this)},F(this,Vh).updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&E(this,Qo,dw).call(this,F(this,Vh).updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}render(){if(this.div)return this.div;const e=super.render();e.classList.add("draw");const t=document.createElement("div");e.append(t),t.setAttribute("aria-hidden","true"),t.className="internal";const[i,n]=this.parentDimensions;return this.setDims(this.width*i,this.height*n),this._uiManager.addShouldRescale(this),this.disableEditing(),e}static createDrawerInstance(e,t,i,n,o){uo("Not implemented")}static startDrawing(e,t,i,n){var o;const{target:l,offsetX:r,offsetY:a,pointerId:d,pointerType:c}=n;if(F(Ji,Cb)&&F(Ji,Cb)!==c)return;const{viewport:{rotation:h}}=e,{width:u,height:m}=l.getBoundingClientRect(),p=L(Ji,GS,new AbortController),g=e.combinedSignal(p);if(F(Ji,yb)||L(Ji,yb,d),F(Ji,Cb)??L(Ji,Cb,c),window.addEventListener("pointerup",b=>{var f;F(Ji,yb)===b.pointerId?this._endDraw(b):(f=F(Ji,wb))==null||f.delete(b.pointerId)},{signal:g}),window.addEventListener("pointercancel",b=>{var f;F(Ji,yb)===b.pointerId?this._currentParent.endDrawingSession():(f=F(Ji,wb))==null||f.delete(b.pointerId)},{signal:g}),window.addEventListener("pointerdown",b=>{F(Ji,Cb)===b.pointerType&&((F(Ji,wb)||L(Ji,wb,new Set)).add(b.pointerId),F(Ji,vr).isCancellable()&&(F(Ji,vr).removeLastElement(),F(Ji,vr).isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:g}),window.addEventListener("contextmenu",tm,{signal:g}),l.addEventListener("pointermove",this._drawMove.bind(this),{signal:g}),l.addEventListener("touchmove",b=>{b.timeStamp===F(Ji,vS)&&xc(b)},{signal:g}),e.toggleDrawing(),(o=t._editorUndoBar)==null||o.hide(),F(Ji,vr)){e.drawLayer.updateProperties(this._currentDrawId,F(Ji,vr).startNew(r,a,u,m,h));return}t.updateUIForDefaultProperties(this),L(Ji,vr,this.createDrawerInstance(r,a,u,m,h)),L(Ji,ES,this.getDefaultDrawingOptions()),this._currentParent=e,{id:this._currentDrawId}=e.drawLayer.draw(this._mergeSVGProperties(F(Ji,ES).toSVGProperties(),F(Ji,vr).defaultSVGProperties),!0,!1)}static _drawMove(e){var t;if(L(Ji,vS,-1),!F(Ji,vr))return;const{offsetX:i,offsetY:n,pointerId:o}=e;if(F(Ji,yb)===o){if(((t=F(Ji,wb))==null?void 0:t.size)>=1){this._endDraw(e);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,F(Ji,vr).add(i,n)),L(Ji,vS,e.timeStamp),xc(e)}}static _cleanup(e){e&&(this._currentDrawId=-1,this._currentParent=null,L(Ji,vr,null),L(Ji,ES,null),L(Ji,Cb,null),L(Ji,vS,NaN)),F(Ji,GS)&&(F(Ji,GS).abort(),L(Ji,GS,null),L(Ji,yb,NaN),L(Ji,wb,null))}static _endDraw(e){const t=this._currentParent;if(t){if(t.toggleDrawing(!0),this._cleanup(!1),e&&t.drawLayer.updateProperties(this._currentDrawId,F(Ji,vr).end(e.offsetX,e.offsetY)),this.supportMultipleDrawings){const i=F(Ji,vr),n=this._currentDrawId,o=i.getLastElement();t.addCommands({cmd:()=>{t.drawLayer.updateProperties(n,i.setLastElement(o))},undo:()=>{t.drawLayer.updateProperties(n,i.removeLastElement())},mustExec:!1,type:Kn.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(e){const t=this._currentParent;if(!t)return null;if(t.toggleDrawing(!0),t.cleanUndoStack(Kn.DRAW_STEP),!F(Ji,vr).isEmpty()){const{pageDimensions:[i,n],scale:o}=t,l=t.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:F(Ji,vr).getOutlines(i*o,n*o,o,this._INNER_MARGIN),drawingOptions:F(Ji,ES),mustBeCommitted:!e});return this._cleanup(!0),l}return t.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(e){}static deserializeDraw(e,t,i,n,o,l){uo("Not implemented")}static async deserialize(e,t,i){var n,o;const{rawDims:{pageWidth:l,pageHeight:r,pageX:a,pageY:d}}=t.viewport,c=this.deserializeDraw(a,d,l,r,this._INNER_MARGIN,e),h=await super.deserialize(e,t,i);return h.createDrawingOptions(e),E(n=h,Qo,Rq).call(n,{drawOutlines:c}),E(o=h,Qo,E2).call(o),h.onScaleChanging(),h.rotate(),h}serializeDraw(e){const[t,i]=this.pageTranslation,[n,o]=this.pageDimensions;return F(this,Vh).serialize([t,i,n,o],e)}renderAnnotationElement(e){return e.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};Vh=new WeakMap,G2=new WeakMap,vr=new WeakMap,GS=new WeakMap,ES=new WeakMap,yb=new WeakMap,Cb=new WeakMap,wb=new WeakMap,vS=new WeakMap,Qo=new WeakSet,Rq=function({drawOutlines:s,drawId:e,drawingOptions:t}){L(this,Vh,s),this._drawingOptions||(this._drawingOptions=t),e>=0?(this._drawId=e,this.parent.drawLayer.finalizeDraw(e,s.defaultProperties)):this._drawId=E(this,Qo,bO).call(this,s,this.parent),E(this,Qo,dw).call(this,s.box)},bO=function(s,e){const{id:t}=e.drawLayer.draw(bh._mergeSVGProperties(this._drawingOptions.toSVGProperties(),s.defaultSVGProperties),!1,!1);return t},Sq=function(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())},E2=function(s=this.parent){if(!(this._drawId!==null&&this.parent===s)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,s.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=E(this,Qo,bO).call(this,F(this,Vh),s)}},eue=function([s,e,t,i]){const{parentDimensions:[n,o],rotation:l}=this;switch(l){case 90:return[e,1-s,t*(o/n),i*(n/o)];case 180:return[1-s,1-e,t,i];case 270:return[1-e,s,t*(o/n),i*(n/o)];default:return[s,e,t,i]}},SG=function(){const{x:s,y:e,width:t,height:i,parentDimensions:[n,o],rotation:l}=this;switch(l){case 90:return[1-e,s,t*(n/o),i*(o/n)];case 180:return[1-s,1-e,t,i];case 270:return[e,1-s,t*(n/o),i*(o/n)];default:return[s,e,t,i]}},dw=function(s){if([this.x,this.y,this.width,this.height]=E(this,Qo,eue).call(this,s),this.div){this.fixAndSetPosition();const[e,t]=this.parentDimensions;this.setDims(this.width*e,this.height*t)}this._onResized()},_R=function(){const{x:s,y:e,width:t,height:i,rotation:n,parentRotation:o,parentDimensions:[l,r]}=this;switch((n*4+o)/90){case 1:return[1-e-i,s,i,t];case 2:return[1-s-t,1-e-i,t,i];case 3:return[e,1-s-t,i,t];case 4:return[s,e-t*(l/r),i*(r/l),t*(l/r)];case 5:return[1-e,s,t*(l/r),i*(r/l)];case 6:return[1-s-i*(r/l),1-e,i*(r/l),t*(l/r)];case 7:return[e-t*(l/r),1-s-i*(r/l),t*(l/r),i*(r/l)];case 8:return[s-t,e-i,t,i];case 9:return[1-e,s-t,i,t];case 10:return[1-s,1-e,t,i];case 11:return[e-i,1-s,i,t];case 12:return[s-i*(r/l),e,i*(r/l),t*(l/r)];case 13:return[1-e-t*(l/r),s-i*(r/l),t*(l/r),i*(r/l)];case 14:return[1-s,1-e-t*(l/r),i*(r/l),t*(l/r)];case 15:return[e,1-s,t*(l/r),i*(r/l)];default:return[s,e,t,i]}},Ii(bh,"_currentDrawId",-1),Ii(bh,"_currentParent",null),J(bh,vr,null),J(bh,GS,null),J(bh,ES,null),J(bh,yb,NaN),J(bh,Cb,null),J(bh,wb,null),J(bh,vS,NaN),Ii(bh,"_INNER_MARGIN",3);let ymt=bh;var hg,Dr,Gr,xS,v2,Dd,Er,Zu,OR,JS,XS,x2,WG;class Cmt{constructor(e,t,i,n,o,l){J(this,x2),J(this,hg,new Float64Array(6)),J(this,Dr),J(this,Gr),J(this,xS),J(this,v2),J(this,Dd),J(this,Er,""),J(this,Zu,0),J(this,OR,new CRe),J(this,JS),J(this,XS),L(this,JS,i),L(this,XS,n),L(this,xS,o),L(this,v2,l),[e,t]=E(this,x2,WG).call(this,e,t);const r=L(this,Dr,[NaN,NaN,NaN,NaN,e,t]);L(this,Dd,[e,t]),L(this,Gr,[{line:r,points:F(this,Dd)}]),F(this,hg).set(r,0)}updateProperty(e,t){e==="stroke-width"&&L(this,v2,t)}isEmpty(){return!F(this,Gr)||F(this,Gr).length===0}isCancellable(){return F(this,Dd).length<=10}add(e,t){[e,t]=E(this,x2,WG).call(this,e,t);const[i,n,o,l]=F(this,hg).subarray(2,6),r=e-o,a=t-l;return Math.hypot(F(this,JS)*r,F(this,XS)*a)<=2?null:(F(this,Dd).push(e,t),isNaN(i)?(F(this,hg).set([o,l,e,t],2),F(this,Dr).push(NaN,NaN,NaN,NaN,e,t),{path:{d:this.toSVGPath()}}):(isNaN(F(this,hg)[0])&&F(this,Dr).splice(6,6),F(this,hg).set([i,n,o,l,e,t],0),F(this,Dr).push(...Pt.createBezierPoints(i,n,o,l,e,t)),{path:{d:this.toSVGPath()}}))}end(e,t){return this.add(e,t)||(F(this,Dd).length===2?{path:{d:this.toSVGPath()}}:null)}startNew(e,t,i,n,o){L(this,JS,i),L(this,XS,n),L(this,xS,o),[e,t]=E(this,x2,WG).call(this,e,t);const l=L(this,Dr,[NaN,NaN,NaN,NaN,e,t]);L(this,Dd,[e,t]);const r=F(this,Gr).at(-1);return r&&(r.line=new Float32Array(r.line),r.points=new Float32Array(r.points)),F(this,Gr).push({line:l,points:F(this,Dd)}),F(this,hg).set(l,0),L(this,Zu,0),this.toSVGPath(),null}getLastElement(){return F(this,Gr).at(-1)}setLastElement(e){return F(this,Gr)?(F(this,Gr).push(e),L(this,Dr,e.line),L(this,Dd,e.points),L(this,Zu,0),{path:{d:this.toSVGPath()}}):F(this,OR).setLastElement(e)}removeLastElement(){if(!F(this,Gr))return F(this,OR).removeLastElement();F(this,Gr).pop(),L(this,Er,"");for(let e=0,t=F(this,Gr).length;e<t;e++){const{line:i,points:n}=F(this,Gr)[e];L(this,Dr,i),L(this,Dd,n),L(this,Zu,0),this.toSVGPath()}return{path:{d:F(this,Er)}}}toSVGPath(){const e=Pt.svgRound(F(this,Dr)[4]),t=Pt.svgRound(F(this,Dr)[5]);if(F(this,Dd).length===2)return L(this,Er,`${F(this,Er)} M ${e} ${t} Z`),F(this,Er);if(F(this,Dd).length<=6){const n=F(this,Er).lastIndexOf("M");L(this,Er,`${F(this,Er).slice(0,n)} M ${e} ${t}`),L(this,Zu,6)}if(F(this,Dd).length===4){const n=Pt.svgRound(F(this,Dr)[10]),o=Pt.svgRound(F(this,Dr)[11]);return L(this,Er,`${F(this,Er)} L ${n} ${o}`),L(this,Zu,12),F(this,Er)}const i=[];F(this,Zu)===0&&(i.push(`M ${e} ${t}`),L(this,Zu,6));for(let n=F(this,Zu),o=F(this,Dr).length;n<o;n+=6){const[l,r,a,d,c,h]=F(this,Dr).slice(n,n+6).map(Pt.svgRound);i.push(`C${l} ${r} ${a} ${d} ${c} ${h}`)}return L(this,Er,F(this,Er)+i.join(" ")),L(this,Zu,F(this,Dr).length),F(this,Er)}getOutlines(e,t,i,n){const o=F(this,Gr).at(-1);return o.line=new Float32Array(o.line),o.points=new Float32Array(o.points),F(this,OR).build(F(this,Gr),e,t,i,F(this,xS),F(this,v2),n),L(this,hg,null),L(this,Dr,null),L(this,Gr,null),L(this,Er,null),F(this,OR)}get defaultSVGProperties(){return{root:{viewBox:"0 0 10000 10000"},rootClass:{draw:!0},bbox:[0,0,1,1]}}}hg=new WeakMap,Dr=new WeakMap,Gr=new WeakMap,xS=new WeakMap,v2=new WeakMap,Dd=new WeakMap,Er=new WeakMap,Zu=new WeakMap,OR=new WeakMap,JS=new WeakMap,XS=new WeakMap,x2=new WeakSet,WG=function(s,e){return Pt._normalizePoint(s,e,F(this,JS),F(this,XS),F(this,xS))};var Xd,VG,_J,Fh,Dg,Gg,cw,hw,uw,Ic,zg,WRe,VRe,QRe;const wmt=class yRe extends Pt{constructor(){super(...arguments),J(this,Ic),J(this,Xd),J(this,VG,0),J(this,_J),J(this,Fh),J(this,Dg),J(this,Gg),J(this,cw),J(this,hw),J(this,uw)}build(e,t,i,n,o,l,r){L(this,Dg,t),L(this,Gg,i),L(this,cw,n),L(this,hw,o),L(this,uw,l),L(this,_J,r??0),L(this,Fh,e),E(this,Ic,VRe).call(this)}setLastElement(e){return F(this,Fh).push(e),{path:{d:this.toSVGPath()}}}removeLastElement(){return F(this,Fh).pop(),{path:{d:this.toSVGPath()}}}toSVGPath(){const e=[];for(const{line:t}of F(this,Fh)){if(e.push(`M${Pt.svgRound(t[4])} ${Pt.svgRound(t[5])}`),t.length===6){e.push("Z");continue}if(t.length===12){e.push(`L${Pt.svgRound(t[10])} ${Pt.svgRound(t[11])}`);continue}for(let i=6,n=t.length;i<n;i+=6){const[o,l,r,a,d,c]=t.subarray(i,i+6).map(Pt.svgRound);e.push(`C${o} ${l} ${r} ${a} ${d} ${c}`)}}return e.join("")}serialize([e,t,i,n],o){const l=[],r=[],[a,d,c,h]=E(this,Ic,WRe).call(this);let u,m,p,g,b,f,Z,A,N;switch(F(this,hw)){case 0:N=Pt._rescale,u=e,m=t+n,p=i,g=-n,b=e+a*i,f=t+(1-d-h)*n,Z=e+(a+c)*i,A=t+(1-d)*n;break;case 90:N=Pt._rescaleAndSwap,u=e,m=t,p=i,g=n,b=e+d*i,f=t+a*n,Z=e+(d+h)*i,A=t+(a+c)*n;break;case 180:N=Pt._rescale,u=e+i,m=t,p=-i,g=n,b=e+(1-a-c)*i,f=t+d*n,Z=e+(1-a)*i,A=t+(d+h)*n;break;case 270:N=Pt._rescaleAndSwap,u=e+i,m=t+n,p=-i,g=-n,b=e+(1-d-h)*i,f=t+(1-a-c)*n,Z=e+(1-d)*i,A=t+(1-a)*n;break}for(const{line:W,points:Q}of F(this,Fh))l.push(N(W,u,m,p,g,o?new Array(W.length):null)),r.push(N(Q,u,m,p,g,o?new Array(Q.length):null));return{lines:l,points:r,rect:[b,f,Z,A]}}static deserialize(e,t,i,n,o,{paths:{lines:l,points:r},rotation:a,thickness:d}){const c=[];let h,u,m,p,g;switch(a){case 0:g=Pt._rescale,h=-e/i,u=t/n+1,m=1/i,p=-1/n;break;case 90:g=Pt._rescaleAndSwap,h=-t/n,u=-e/i,m=1/n,p=1/i;break;case 180:g=Pt._rescale,h=e/i+1,u=-t/n,m=-1/i,p=1/n;break;case 270:g=Pt._rescaleAndSwap,h=t/n+1,u=e/i+1,m=-1/n,p=-1/i;break}if(!l){l=[];for(const f of r){const Z=f.length;if(Z===2){l.push(new Float32Array([NaN,NaN,NaN,NaN,f[0],f[1]]));continue}if(Z===4){l.push(new Float32Array([NaN,NaN,NaN,NaN,f[0],f[1],NaN,NaN,NaN,NaN,f[2],f[3]]));continue}const A=new Float32Array(3*(Z-2));l.push(A);let[N,W,Q,R]=f.subarray(0,4);A.set([NaN,NaN,NaN,NaN,N,W],0);for(let M=4;M<Z;M+=2){const w=f[M],Y=f[M+1];A.set(Pt.createBezierPoints(N,W,Q,R,w,Y),(M-2)*3),[N,W,Q,R]=[Q,R,w,Y]}}}for(let f=0,Z=l.length;f<Z;f++)c.push({line:g(l[f].map(A=>A??NaN),h,u,m,p),points:g(r[f].map(A=>A??NaN),h,u,m,p)});const b=new yRe;return b.build(c,i,n,1,a,d,o),b}get box(){return F(this,Xd)}updateProperty(e,t){return e==="stroke-width"?E(this,Ic,QRe).call(this,t):null}updateParentDimensions([e,t],i){const[n,o]=E(this,Ic,zg).call(this);L(this,Dg,e),L(this,Gg,t),L(this,cw,i);const[l,r]=E(this,Ic,zg).call(this),a=l-n,d=r-o,c=F(this,Xd);return c[0]-=a,c[1]-=d,c[2]+=2*a,c[3]+=2*d,c}updateRotation(e){return L(this,VG,e),{path:{transform:this.rotationTransform}}}get viewBox(){return F(this,Xd).map(Pt.svgRound).join(" ")}get defaultProperties(){const[e,t]=F(this,Xd);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${Pt.svgRound(e)} ${Pt.svgRound(t)}`}}}get rotationTransform(){const[,,e,t]=F(this,Xd);let i=0,n=0,o=0,l=0,r=0,a=0;switch(F(this,VG)){case 90:n=t/e,o=-e/t,r=e;break;case 180:i=-1,l=-1,r=e,a=t;break;case 270:n=-t/e,o=e/t,a=t;break;default:return""}return`matrix(${i} ${n} ${o} ${l} ${Pt.svgRound(r)} ${Pt.svgRound(a)})`}getPathResizingSVGProperties([e,t,i,n]){const[o,l]=E(this,Ic,zg).call(this),[r,a,d,c]=F(this,Xd);if(Math.abs(d-o)<=Pt.PRECISION||Math.abs(c-l)<=Pt.PRECISION){const g=e+i/2-(r+d/2),b=t+n/2-(a+c/2);return{path:{"transform-origin":`${Pt.svgRound(e)} ${Pt.svgRound(t)}`,transform:`${this.rotationTransform} translate(${g} ${b})`}}}const h=(i-2*o)/(d-2*o),u=(n-2*l)/(c-2*l),m=d/i,p=c/n;return{path:{"transform-origin":`${Pt.svgRound(r)} ${Pt.svgRound(a)}`,transform:`${this.rotationTransform} scale(${m} ${p}) translate(${Pt.svgRound(o)} ${Pt.svgRound(l)}) scale(${h} ${u}) translate(${Pt.svgRound(-o)} ${Pt.svgRound(-l)})`}}}getPathResizedSVGProperties([e,t,i,n]){const[o,l]=E(this,Ic,zg).call(this),r=F(this,Xd),[a,d,c,h]=r;if(r[0]=e,r[1]=t,r[2]=i,r[3]=n,Math.abs(c-o)<=Pt.PRECISION||Math.abs(h-l)<=Pt.PRECISION){const b=e+i/2-(a+c/2),f=t+n/2-(d+h/2);for(const{line:Z,points:A}of F(this,Fh))Pt._translate(Z,b,f,Z),Pt._translate(A,b,f,A);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${Pt.svgRound(e)} ${Pt.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}const u=(i-2*o)/(c-2*o),m=(n-2*l)/(h-2*l),p=-u*(a+o)+e+o,g=-m*(d+l)+t+l;if(u!==1||m!==1||p!==0||g!==0)for(const{line:b,points:f}of F(this,Fh))Pt._rescale(b,p,g,u,m,b),Pt._rescale(f,p,g,u,m,f);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${Pt.svgRound(e)} ${Pt.svgRound(t)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([e,t],i){const[n,o]=i,l=F(this,Xd),r=e-l[0],a=t-l[1];if(F(this,Dg)===n&&F(this,Gg)===o)for(const{line:d,points:c}of F(this,Fh))Pt._translate(d,r,a,d),Pt._translate(c,r,a,c);else{const d=F(this,Dg)/n,c=F(this,Gg)/o;L(this,Dg,n),L(this,Gg,o);for(const{line:h,points:u}of F(this,Fh))Pt._rescale(h,r,a,d,c,h),Pt._rescale(u,r,a,d,c,u);l[2]*=d,l[3]*=c}return l[0]=e,l[1]=t,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${Pt.svgRound(e)} ${Pt.svgRound(t)}`}}}get defaultSVGProperties(){const e=F(this,Xd);return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${Pt.svgRound(e[0])} ${Pt.svgRound(e[1])}`,transform:this.rotationTransform||null},bbox:e}}};Xd=new WeakMap,VG=new WeakMap,_J=new WeakMap,Fh=new WeakMap,Dg=new WeakMap,Gg=new WeakMap,cw=new WeakMap,hw=new WeakMap,uw=new WeakMap,Ic=new WeakSet,zg=function(s=F(this,uw)){const e=F(this,_J)+s/2*F(this,cw);return F(this,hw)%180===0?[e/F(this,Dg),e/F(this,Gg)]:[e/F(this,Gg),e/F(this,Dg)]},WRe=function(){const[s,e,t,i]=F(this,Xd),[n,o]=E(this,Ic,zg).call(this,0);return[s+n,e+o,t-2*n,i-2*o]},VRe=function(){const s=L(this,Xd,new Float32Array([1/0,1/0,-1/0,-1/0]));for(const{line:i}of F(this,Fh)){if(i.length<=12){for(let l=4,r=i.length;l<r;l+=6){const[a,d]=i.subarray(l,l+2);s[0]=Math.min(s[0],a),s[1]=Math.min(s[1],d),s[2]=Math.max(s[2],a),s[3]=Math.max(s[3],d)}continue}let n=i[4],o=i[5];for(let l=6,r=i.length;l<r;l+=6){const[a,d,c,h,u,m]=i.subarray(l,l+6);Ui.bezierBoundingBox(n,o,a,d,c,h,u,m,s),n=u,o=m}}const[e,t]=E(this,Ic,zg).call(this);s[0]=Math.min(1,Math.max(0,s[0]-e)),s[1]=Math.min(1,Math.max(0,s[1]-t)),s[2]=Math.min(1,Math.max(0,s[2]+e)),s[3]=Math.min(1,Math.max(0,s[3]+t)),s[2]-=s[0],s[3]-=s[1]},QRe=function(s){const[e,t]=E(this,Ic,zg).call(this);L(this,uw,s);const[i,n]=E(this,Ic,zg).call(this),[o,l]=[i-e,n-t],r=F(this,Xd);return r[0]-=o,r[1]-=l,r[2]+=2*o,r[3]+=2*l,r};let CRe=wmt;var J2;const Mmt=class wRe extends Qmt{constructor(e){super(),J(this,J2),L(this,J2,e),super.updateProperties({fill:"none",stroke:fl._defaultLineColor,"stroke-opacity":1,"stroke-width":1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-miterlimit":10})}updateSVGProperty(e,t){e==="stroke-width"&&(t??(t=this["stroke-width"]),t*=F(this,J2).realScale),super.updateSVGProperty(e,t)}clone(){const e=new wRe(F(this,J2));return e.updateAll(this),e}};J2=new WeakMap;let Tmt=Mmt;var Wq,MRe;const QG=class TRe extends ymt{constructor(e){super({...e,name:"inkEditor"}),J(this,Wq),this._willKeepAspectRatio=!0}static initialize(e,t){fl.initialize(e,t),this._defaultDrawingOptions=new Tmt(t.viewParameters)}static getDefaultDrawingOptions(e){const t=this._defaultDrawingOptions.clone();return t.updateProperties(e),t}static get supportMultipleDrawings(){return!0}static get typesMap(){return Mn(this,"typesMap",new Map([[Kn.INK_THICKNESS,"stroke-width"],[Kn.INK_COLOR,"stroke"],[Kn.INK_OPACITY,"stroke-opacity"]]))}static createDrawerInstance(e,t,i,n,o){return new Cmt(e,t,i,n,o,this._defaultDrawingOptions["stroke-width"])}static deserializeDraw(e,t,i,n,o,l){return CRe.deserialize(e,t,i,n,o,l)}static async deserialize(e,t,i){let n=null;if(e instanceof lne){const{data:{inkLists:l,rect:r,rotation:a,id:d,color:c,opacity:h,borderStyle:{rawWidth:u},popupRef:m},parent:{page:{pageNumber:p}}}=e;n=e={annotationType:Nn.INK,color:Array.from(c),thickness:u,opacity:h,paths:{points:l},boxes:null,pageIndex:p-1,rect:r.slice(0),rotation:a,id:d,deleted:!1,popupRef:m}}const o=await super.deserialize(e,t,i);return o.annotationElementId=e.id||null,o._initialData=n,o}onScaleChanging(){if(!this.parent)return;super.onScaleChanging();const{_drawId:e,_drawingOptions:t,parent:i}=this;t.updateSVGProperty("stroke-width"),i.drawLayer.updateProperties(e,t.toSVGProperties())}static onScaleChangingWhenDrawing(){const e=this._currentParent;e&&(super.onScaleChangingWhenDrawing(),this._defaultDrawingOptions.updateSVGProperty("stroke-width"),e.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}createDrawingOptions({color:e,thickness:t,opacity:i}){this._drawingOptions=TRe.getDefaultDrawingOptions({stroke:Ui.makeHexColor(...e),"stroke-width":t,"stroke-opacity":i})}serialize(e=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const{lines:t,points:i,rect:n}=this.serializeDraw(e),{_drawingOptions:{stroke:o,"stroke-opacity":l,"stroke-width":r}}=this,a={annotationType:Nn.INK,color:fl._colorManager.convert(o),opacity:l,thickness:r,paths:{lines:t,points:i},pageIndex:this.pageIndex,rect:n,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return e?a:this.annotationElementId&&!E(this,Wq,MRe).call(this,a)?null:(a.id=this.annotationElementId,a)}renderAnnotationElement(e){const{points:t,rect:i}=this.serializeDraw(!1);return e.updateEdited({rect:i,thickness:this._drawingOptions["stroke-width"],points:t}),null}};Wq=new WeakSet,MRe=function(s){const{color:e,thickness:t,opacity:i,pageIndex:n}=this._initialData;return this._hasBeenMoved||this._hasBeenResized||s.color.some((o,l)=>o!==e[l])||s.thickness!==t||s.opacity!==i||s.pageIndex!==n},Ii(QG,"_type","ink"),Ii(QG,"_editorType",Nn.INK),Ii(QG,"_defaultDrawingOptions",null);let Bmt=QG;var Ko,Wa,uZ,WU,LZ,X2,_g,ug,Lh,mw,Lo,Vy,Qy,yG,Vq,OJ,Qq,CG,BRe;const wG=class extends fl{constructor(e){super({...e,name:"stampEditor"}),J(this,Lo),J(this,Ko,null),J(this,Wa,null),J(this,uZ,null),J(this,WU,null),J(this,LZ,null),J(this,X2,""),J(this,_g,null),J(this,ug,null),J(this,Lh,!1),J(this,mw,!1),L(this,WU,e.bitmapUrl),L(this,LZ,e.bitmapFile)}static initialize(e,t){fl.initialize(e,t)}static get supportedTypes(){return Mn(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map(e=>`image/${e}`))}static get supportedTypesStr(){return Mn(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(e){return this.supportedTypes.includes(e)}static paste(e,t){t.pasteEditor(Nn.STAMP,{bitmapFile:e.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){var e;return{type:"stamp",hasAltText:!!((e=this.altTextData)!=null&&e.altText)}}static computeTelemetryFinalData(e){const t=e.get("hasAltText");return{hasAltText:t.get(!0)??0,hasNoAltText:t.get(!1)??0}}async mlGuessAltText(e=null,t=!0){if(this.hasAltTextData())return null;const{mlManager:i}=this._uiManager;if(!i)throw new Error("No ML.");if(!await i.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:n,width:o,height:l}=e||this.copyCanvas(null,null,!0).imageData,r=await i.guess({name:"altText",request:{data:n,width:o,height:l,channels:n.length/(o*l)}});if(!r)throw new Error("No response from the AI service.");if(r.error)throw new Error("Error from the AI service.");if(r.cancel)return null;if(!r.output)throw new Error("No valid response from the AI service.");const a=r.output;return await this.setGuessedAltText(a),t&&!this.hasAltTextData()&&(this.altTextData={alt:a,decorative:!1}),a}remove(){var e;F(this,Wa)&&(L(this,Ko,null),this._uiManager.imageManager.deleteId(F(this,Wa)),(e=F(this,_g))==null||e.remove(),L(this,_g,null),F(this,ug)&&(clearTimeout(F(this,ug)),L(this,ug,null))),super.remove()}rebuild(){if(!this.parent){F(this,Wa)&&E(this,Lo,yG).call(this);return}super.rebuild(),this.div!==null&&(F(this,Wa)&&F(this,_g)===null&&E(this,Lo,yG).call(this),this.isAttachedToDOM||this.parent.add(this))}onceAdded(e){this._isDraggable=!0,e&&this.div.focus()}isEmpty(){return!(F(this,uZ)||F(this,Ko)||F(this,WU)||F(this,LZ)||F(this,Wa))}get isResizable(){return!0}render(){if(this.div)return this.div;let e,t;if(this.width&&(e=this.x,t=this.y),super.render(),this.div.hidden=!0,this.div.setAttribute("role","figure"),this.addAltTextButton(),F(this,Ko)?E(this,Lo,Vq).call(this):E(this,Lo,yG).call(this),this.width&&!this.annotationElementId){const[i,n]=this.parentDimensions;this.setAt(e*i,t*n,this.width*i,this.height*n)}return this._uiManager.addShouldRescale(this),this.div}_onResized(){this.onScaleChanging()}onScaleChanging(){this.parent&&(F(this,ug)!==null&&clearTimeout(F(this,ug)),L(this,ug,setTimeout(()=>{L(this,ug,null),E(this,Lo,Qq).call(this)},200)))}copyCanvas(e,t,i=!1){var n;e||(e=224);const{width:o,height:l}=F(this,Ko),r=new ine;let a=F(this,Ko),d=o,c=l,h=null;if(t){if(o>t||l>t){const R=Math.min(t/o,t/l);d=Math.floor(o*R),c=Math.floor(l*R)}h=document.createElement("canvas");const m=h.width=Math.ceil(d*r.sx),p=h.height=Math.ceil(c*r.sy);F(this,Lh)||(a=E(this,Lo,OJ).call(this,m,p));const g=h.getContext("2d");g.filter=this._uiManager.hcmFilter;let b="white",f="#cfcfd8";this._uiManager.hcmFilter!=="none"?f="black":(n=window.matchMedia)!=null&&n.call(window,"(prefers-color-scheme: dark)").matches&&(b="#8f8f9d",f="#42414d");const Z=15,A=Z*r.sx,N=Z*r.sy,W=new OffscreenCanvas(A*2,N*2),Q=W.getContext("2d");Q.fillStyle=b,Q.fillRect(0,0,A*2,N*2),Q.fillStyle=f,Q.fillRect(0,0,A,N),Q.fillRect(A,N,A,N),g.fillStyle=g.createPattern(W,"repeat"),g.fillRect(0,0,m,p),g.drawImage(a,0,0,a.width,a.height,0,0,m,p)}let u=null;if(i){let m,p;if(r.symmetric&&a.width<e&&a.height<e)m=a.width,p=a.height;else if(a=F(this,Ko),o>e||l>e){const b=Math.min(e/o,e/l);m=Math.floor(o*b),p=Math.floor(l*b),F(this,Lh)||(a=E(this,Lo,OJ).call(this,m,p))}const g=new OffscreenCanvas(m,p).getContext("2d",{willReadFrequently:!0});g.drawImage(a,0,0,a.width,a.height,0,0,m,p),u={width:m,height:p,data:g.getImageData(0,0,m,p).data}}return{canvas:h,width:d,height:c,imageData:u}}getImageForAltText(){return F(this,_g)}static async deserialize(e,t,i){var n;let o=null;if(e instanceof qNe){const{data:{rect:g,rotation:b,id:f,structParent:Z,popupRef:A},container:N,parent:{page:{pageNumber:W}}}=e,Q=N.querySelector("canvas"),R=i.imageManager.getFromCanvas(N.id,Q);Q.remove();const M=((n=await t._structTree.getAriaAttributes(`${qie}${f}`))==null?void 0:n.get("aria-label"))||"";o=e={annotationType:Nn.STAMP,bitmapId:R.id,bitmap:R.bitmap,pageIndex:W-1,rect:g.slice(0),rotation:b,id:f,deleted:!1,accessibilityData:{decorative:!1,altText:M},isSvg:!1,structParent:Z,popupRef:A}}const l=await super.deserialize(e,t,i),{rect:r,bitmap:a,bitmapUrl:d,bitmapId:c,isSvg:h,accessibilityData:u}=e;c&&i.imageManager.isValidId(c)?(L(l,Wa,c),a&&L(l,Ko,a)):L(l,WU,d),L(l,Lh,h);const[m,p]=l.pageDimensions;return l.width=(r[2]-r[0])/m,l.height=(r[3]-r[1])/p,l.annotationElementId=e.id||null,u&&(l.altTextData=u),l._initialData=o,L(l,mw,!!o),l}serialize(e=!1,t=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const i={annotationType:Nn.STAMP,bitmapId:F(this,Wa),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:F(this,Lh),structTreeParentId:this._structTreeParentId};if(e)return i.bitmapUrl=E(this,Lo,CG).call(this,!0),i.accessibilityData=this.serializeAltText(!0),i;const{decorative:n,altText:o}=this.serializeAltText(!1);if(!n&&o&&(i.accessibilityData={type:"Figure",alt:o}),this.annotationElementId){const r=E(this,Lo,BRe).call(this,i);if(r.isSame)return null;r.isSameAltText?delete i.accessibilityData:i.accessibilityData.structParent=this._initialData.structParent??-1}if(i.id=this.annotationElementId,t===null)return i;t.stamps||(t.stamps=new Map);const l=F(this,Lh)?(i.rect[2]-i.rect[0])*(i.rect[3]-i.rect[1]):null;if(!t.stamps.has(F(this,Wa)))t.stamps.set(F(this,Wa),{area:l,serialized:i}),i.bitmap=E(this,Lo,CG).call(this,!1);else if(F(this,Lh)){const r=t.stamps.get(F(this,Wa));l>r.area&&(r.area=l,r.serialized.bitmap.close(),r.serialized.bitmap=E(this,Lo,CG).call(this,!1))}return i}renderAnnotationElement(e){return e.updateEdited({rect:this.getRect(0,0)}),null}};Ko=new WeakMap,Wa=new WeakMap,uZ=new WeakMap,WU=new WeakMap,LZ=new WeakMap,X2=new WeakMap,_g=new WeakMap,ug=new WeakMap,Lh=new WeakMap,mw=new WeakMap,Lo=new WeakSet,Vy=function(s,e=!1){if(!s){this.remove();return}L(this,Ko,s.bitmap),e||(L(this,Wa,s.id),L(this,Lh,s.isSvg)),s.file&&L(this,X2,s.file.name),E(this,Lo,Vq).call(this)},Qy=function(){if(L(this,uZ,null),this._uiManager.enableWaiting(!1),!!F(this,_g)){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&F(this,Ko)){this._editToolbar.hide(),this._uiManager.editAltText(this,!0);return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&F(this,Ko)){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}},yG=function(){if(F(this,Wa)){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(F(this,Wa)).then(t=>E(this,Lo,Vy).call(this,t,!0)).finally(()=>E(this,Lo,Qy).call(this));return}if(F(this,WU)){const t=F(this,WU);L(this,WU,null),this._uiManager.enableWaiting(!0),L(this,uZ,this._uiManager.imageManager.getFromUrl(t).then(i=>E(this,Lo,Vy).call(this,i)).finally(()=>E(this,Lo,Qy).call(this)));return}if(F(this,LZ)){const t=F(this,LZ);L(this,LZ,null),this._uiManager.enableWaiting(!0),L(this,uZ,this._uiManager.imageManager.getFromFile(t).then(i=>E(this,Lo,Vy).call(this,i)).finally(()=>E(this,Lo,Qy).call(this)));return}const s=document.createElement("input");s.type="file",s.accept=wG.supportedTypesStr;const e=this._uiManager._signal;L(this,uZ,new Promise(t=>{s.addEventListener("change",async()=>{if(!s.files||s.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const i=await this._uiManager.imageManager.getFromFile(s.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),E(this,Lo,Vy).call(this,i)}t()},{signal:e}),s.addEventListener("cancel",()=>{this.remove(),t()},{signal:e})}).finally(()=>E(this,Lo,Qy).call(this))),s.click()},Vq=function(){var s;const{div:e}=this;let{width:t,height:i}=F(this,Ko);const[n,o]=this.pageDimensions,l=.75;if(this.width)t=this.width*n,i=this.height*o;else if(t>l*n||i>l*o){const c=Math.min(l*n/t,l*o/i);t*=c,i*=c}const[r,a]=this.parentDimensions;this.setDims(t*r/n,i*a/o),this._uiManager.enableWaiting(!1);const d=L(this,_g,document.createElement("canvas"));d.setAttribute("role","img"),this.addContainer(d),this.width=t/n,this.height=i/o,(s=this._initialOptions)!=null&&s.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(e.hidden=!1),E(this,Lo,Qq).call(this),F(this,mw)||(this.parent.addUndoableEditor(this),L(this,mw,!0)),this._reportTelemetry({action:"inserted_image"}),F(this,X2)&&d.setAttribute("aria-label",F(this,X2))},OJ=function(s,e){const{width:t,height:i}=F(this,Ko);let n=t,o=i,l=F(this,Ko);for(;n>2*s||o>2*e;){const r=n,a=o;n>2*s&&(n=n>=16384?Math.floor(n/2)-1:Math.ceil(n/2)),o>2*e&&(o=o>=16384?Math.floor(o/2)-1:Math.ceil(o/2));const d=new OffscreenCanvas(n,o);d.getContext("2d").drawImage(l,0,0,r,a,0,0,n,o),l=d.transferToImageBitmap()}return l},Qq=function(){const[s,e]=this.parentDimensions,{width:t,height:i}=this,n=new ine,o=Math.ceil(t*s*n.sx),l=Math.ceil(i*e*n.sy),r=F(this,_g);if(!r||r.width===o&&r.height===l)return;r.width=o,r.height=l;const a=F(this,Lh)?F(this,Ko):E(this,Lo,OJ).call(this,o,l),d=r.getContext("2d");d.filter=this._uiManager.hcmFilter,d.drawImage(a,0,0,a.width,a.height,0,0,o,l)},CG=function(s){if(s){if(F(this,Lh)){const t=this._uiManager.imageManager.getSvgUrl(F(this,Wa));if(t)return t}const e=document.createElement("canvas");return{width:e.width,height:e.height}=F(this,Ko),e.getContext("2d").drawImage(F(this,Ko),0,0),e.toDataURL()}if(F(this,Lh)){const[e,t]=this.pageDimensions,i=Math.round(this.width*e*GV.PDF_TO_CSS_UNITS),n=Math.round(this.height*t*GV.PDF_TO_CSS_UNITS),o=new OffscreenCanvas(i,n);return o.getContext("2d").drawImage(F(this,Ko),0,0,F(this,Ko).width,F(this,Ko).height,0,0,i,n),o.transferToImageBitmap()}return structuredClone(F(this,Ko))},BRe=function(s){var e;const{pageIndex:t,accessibilityData:{altText:i}}=this._initialData,n=s.pageIndex===t,o=(((e=s.accessibilityData)==null?void 0:e.alt)||"")===i;return{isSame:!this._hasBeenMoved&&!this._hasBeenResized&&n&&o,isSameAltText:o}},Ii(wG,"_type","stamp"),Ii(wG,"_editorType",Nn.STAMP);let Lmt=wG;var mR,yy,ig,rF,ib,hu,aF,Cy,pR,Vm,nb,td,sb,pi,uu,dF,Ol,tue,Qm,UO,fO,wI;let kmt=(uu=class{constructor({uiManager:s,pageIndex:e,div:t,structTreeLayer:i,accessibilityManager:n,annotationLayer:o,drawLayer:l,textLayer:r,viewport:a,l10n:d}){J(this,Ol),J(this,mR),J(this,yy,!1),J(this,ig,null),J(this,rF,null),J(this,ib,null),J(this,hu,new Map),J(this,aF,!1),J(this,Cy,!1),J(this,pR,!1),J(this,Vm,null),J(this,nb,null),J(this,td,null),J(this,sb,null),J(this,pi);const c=[...F(uu,dF).values()];if(!uu._initialized){uu._initialized=!0;for(const h of c)h.initialize(d,s)}s.registerEditorTypes(c),L(this,pi,s),this.pageIndex=e,this.div=t,L(this,mR,n),L(this,ig,o),this.viewport=a,L(this,td,r),this.drawLayer=l,this._structTree=i,F(this,pi).addLayer(this)}get isEmpty(){return F(this,hu).size===0}get isInvisible(){return this.isEmpty&&F(this,pi).getMode()===Nn.NONE}updateToolbar(s){F(this,pi).updateToolbar(s)}updateMode(s=F(this,pi).getMode()){switch(E(this,Ol,wI).call(this),s){case Nn.NONE:this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case Nn.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case Nn.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:e}=this.div;for(const t of F(uu,dF).values())e.toggle(`${t._type}Editing`,s===t._editorType);this.div.hidden=!1}hasTextLayer(s){var e;return s===((e=F(this,td))==null?void 0:e.div)}setEditingState(s){F(this,pi).setEditingState(s)}addCommands(s){F(this,pi).addCommands(s)}cleanUndoStack(s){F(this,pi).cleanUndoStack(s)}toggleDrawing(s=!1){this.div.classList.toggle("drawing",!s)}togglePointerEvents(s=!1){this.div.classList.toggle("disabled",!s)}toggleAnnotationLayerPointerEvents(s=!1){var e;(e=F(this,ig))==null||e.div.classList.toggle("disabled",!s)}async enable(){L(this,pR,!0),this.div.tabIndex=0,this.togglePointerEvents(!0);const s=new Set;for(const t of F(this,hu).values())t.enableEditing(),t.show(!0),t.annotationElementId&&(F(this,pi).removeChangedExistingAnnotation(t),s.add(t.annotationElementId));if(!F(this,ig)){L(this,pR,!1);return}const e=F(this,ig).getEditableAnnotations();for(const t of e){if(t.hide(),F(this,pi).isDeletedAnnotationElement(t.data.id)||s.has(t.data.id))continue;const i=await this.deserialize(t);i&&(this.addOrRebuild(i),i.enableEditing())}L(this,pR,!1)}disable(){var s;L(this,Cy,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const e=new Map,t=new Map;for(const n of F(this,hu).values())if(n.disableEditing(),!!n.annotationElementId){if(n.serialize()!==null){e.set(n.annotationElementId,n);continue}else t.set(n.annotationElementId,n);(s=this.getEditableAnnotation(n.annotationElementId))==null||s.show(),n.remove()}if(F(this,ig)){const n=F(this,ig).getEditableAnnotations();for(const o of n){const{id:l}=o.data;if(F(this,pi).isDeletedAnnotationElement(l))continue;let r=t.get(l);if(r){r.resetAnnotationElement(o),r.show(!1),o.show();continue}r=e.get(l),r&&(F(this,pi).addChangedExistingAnnotation(r),r.renderAnnotationElement(o)&&r.show(!1)),o.show()}}E(this,Ol,wI).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:i}=this.div;for(const n of F(uu,dF).values())i.remove(`${n._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),L(this,Cy,!1)}getEditableAnnotation(s){var e;return((e=F(this,ig))==null?void 0:e.getEditableAnnotation(s))||null}setActiveEditor(s){F(this,pi).getActive()!==s&&F(this,pi).setActiveEditor(s)}enableTextSelection(){var s;if(this.div.tabIndex=-1,(s=F(this,td))!=null&&s.div&&!F(this,sb)){L(this,sb,new AbortController);const e=F(this,pi).combinedSignal(F(this,sb));F(this,td).div.addEventListener("pointerdown",E(this,Ol,tue).bind(this),{signal:e}),F(this,td).div.classList.add("highlighting")}}disableTextSelection(){var s;this.div.tabIndex=0,(s=F(this,td))!=null&&s.div&&F(this,sb)&&(F(this,sb).abort(),L(this,sb,null),F(this,td).div.classList.remove("highlighting"))}enableClick(){if(F(this,rF))return;L(this,rF,new AbortController);const s=F(this,pi).combinedSignal(F(this,rF));this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:s});const e=this.pointerup.bind(this);this.div.addEventListener("pointerup",e,{signal:s}),this.div.addEventListener("pointercancel",e,{signal:s})}disableClick(){var s;(s=F(this,rF))==null||s.abort(),L(this,rF,null)}attach(s){F(this,hu).set(s.id,s);const{annotationElementId:e}=s;e&&F(this,pi).isDeletedAnnotationElement(e)&&F(this,pi).removeDeletedAnnotationElement(s)}detach(s){var e;F(this,hu).delete(s.id),(e=F(this,mR))==null||e.removePointerInTextLayer(s.contentDiv),!F(this,Cy)&&s.annotationElementId&&F(this,pi).addDeletedAnnotationElement(s)}remove(s){this.detach(s),F(this,pi).removeEditor(s),s.div.remove(),s.isAttachedToDOM=!1}changeParent(s){var e;s.parent!==this&&(s.parent&&s.annotationElementId&&(F(this,pi).addDeletedAnnotationElement(s.annotationElementId),fl.deleteAnnotationElement(s),s.annotationElementId=null),this.attach(s),(e=s.parent)==null||e.detach(s),s.setParent(this),s.div&&s.isAttachedToDOM&&(s.div.remove(),this.div.append(s.div)))}add(s){if(!(s.parent===this&&s.isAttachedToDOM)){if(this.changeParent(s),F(this,pi).addEditor(s),this.attach(s),!s.isAttachedToDOM){const e=s.render();this.div.append(e),s.isAttachedToDOM=!0}s.fixAndSetPosition(),s.onceAdded(!F(this,pR)),F(this,pi).addToAnnotationStorage(s),s._reportTelemetry(s.telemetryInitialData)}}moveEditorInDOM(s){var e;if(!s.isAttachedToDOM)return;const{activeElement:t}=document;s.div.contains(t)&&!F(this,ib)&&(s._focusEventsAllowed=!1,L(this,ib,setTimeout(()=>{L(this,ib,null),s.div.contains(document.activeElement)?s._focusEventsAllowed=!0:(s.div.addEventListener("focusin",()=>{s._focusEventsAllowed=!0},{once:!0,signal:F(this,pi)._signal}),t.focus())},0))),s._structTreeParentId=(e=F(this,mR))==null?void 0:e.moveElementInDOM(this.div,s.div,s.contentDiv,!0)}addOrRebuild(s){s.needsToBeRebuilt()?(s.parent||(s.parent=this),s.rebuild(),s.show()):this.add(s)}addUndoableEditor(s){const e=()=>s._uiManager.rebuild(s),t=()=>{s.remove()};this.addCommands({cmd:e,undo:t,mustExec:!1})}getNextId(){return F(this,pi).getId()}combinedSignal(s){return F(this,pi).combinedSignal(s)}canCreateNewEmptyEditor(){var s;return(s=F(this,Ol,Qm))==null?void 0:s.canCreateNewEmptyEditor()}pasteEditor(s,e){F(this,pi).updateToolbar(s),F(this,pi).updateMode(s);const{offsetX:t,offsetY:i}=E(this,Ol,fO).call(this),n=this.getNextId(),o=E(this,Ol,UO).call(this,{parent:this,id:n,x:t,y:i,uiManager:F(this,pi),isCentered:!0,...e});o&&this.add(o)}async deserialize(s){var e;return await((e=F(uu,dF).get(s.annotationType??s.annotationEditorType))==null?void 0:e.deserialize(s,this,F(this,pi)))||null}createAndAddNewEditor(s,e,t={}){const i=this.getNextId(),n=E(this,Ol,UO).call(this,{parent:this,id:i,x:s.offsetX,y:s.offsetY,uiManager:F(this,pi),isCentered:e,...t});return n&&this.add(n),n}addNewEditor(){this.createAndAddNewEditor(E(this,Ol,fO).call(this),!0)}setSelected(s){F(this,pi).setSelected(s)}toggleSelected(s){F(this,pi).toggleSelected(s)}unselect(s){F(this,pi).unselect(s)}pointerup(s){var e;const{isMac:t}=Nd.platform;if(!(s.button!==0||s.ctrlKey&&t)&&s.target===this.div&&F(this,aF)&&(L(this,aF,!1),!((e=F(this,Ol,Qm))!=null&&e.isDrawer&&F(this,Ol,Qm).supportMultipleDrawings))){if(!F(this,yy)){L(this,yy,!0);return}if(F(this,pi).getMode()===Nn.STAMP){F(this,pi).unselectAll();return}this.createAndAddNewEditor(s,!1)}}pointerdown(s){var e;if(F(this,pi).getMode()===Nn.HIGHLIGHT&&this.enableTextSelection(),F(this,aF)){L(this,aF,!1);return}const{isMac:t}=Nd.platform;if(s.button!==0||s.ctrlKey&&t||s.target!==this.div)return;if(L(this,aF,!0),(e=F(this,Ol,Qm))!=null&&e.isDrawer){this.startDrawingSession(s);return}const i=F(this,pi).getActive();L(this,yy,!i||i.isEmpty())}startDrawingSession(s){if(this.div.focus(),F(this,Vm)){F(this,Ol,Qm).startDrawing(this,F(this,pi),!1,s);return}F(this,pi).setCurrentDrawingSession(this),L(this,Vm,new AbortController);const e=F(this,pi).combinedSignal(F(this,Vm));this.div.addEventListener("blur",({relatedTarget:t})=>{t&&!this.div.contains(t)&&(L(this,nb,null),this.commitOrRemove())},{signal:e}),F(this,Ol,Qm).startDrawing(this,F(this,pi),!1,s)}pause(s){if(s){const{activeElement:e}=document;this.div.contains(e)&&L(this,nb,e);return}F(this,nb)&&setTimeout(()=>{var e;(e=F(this,nb))==null||e.focus(),L(this,nb,null)},0)}endDrawingSession(s=!1){return F(this,Vm)?(F(this,pi).setCurrentDrawingSession(null),F(this,Vm).abort(),L(this,Vm,null),L(this,nb,null),F(this,Ol,Qm).endDrawing(s)):null}findNewParent(s,e,t){const i=F(this,pi).findParent(e,t);return i===null||i===this?!1:(i.changeParent(s),!0)}commitOrRemove(){return F(this,Vm)?(this.endDrawingSession(),!0):!1}onScaleChanging(){F(this,Vm)&&F(this,Ol,Qm).onScaleChangingWhenDrawing(this)}destroy(){var s,e;this.commitOrRemove(),((s=F(this,pi).getActive())==null?void 0:s.parent)===this&&(F(this,pi).commitOrRemove(),F(this,pi).setActiveEditor(null)),F(this,ib)&&(clearTimeout(F(this,ib)),L(this,ib,null));for(const t of F(this,hu).values())(e=F(this,mR))==null||e.removePointerInTextLayer(t.contentDiv),t.setParent(null),t.isAttachedToDOM=!1,t.div.remove();this.div=null,F(this,hu).clear(),F(this,pi).removeLayer(this)}render({viewport:s}){this.viewport=s,_A(this.div,s);for(const e of F(this,pi).getEditors(this.pageIndex))this.add(e),e.rebuild();this.updateMode()}update({viewport:s}){F(this,pi).commitOrRemove(),E(this,Ol,wI).call(this);const e=this.viewport.rotation,t=s.rotation;if(this.viewport=s,_A(this.div,{rotation:t}),e!==t)for(const i of F(this,hu).values())i.rotate(t)}get pageDimensions(){const{pageWidth:s,pageHeight:e}=this.viewport.rawDims;return[s,e]}get scale(){return F(this,pi).viewParameters.realScale}},mR=new WeakMap,yy=new WeakMap,ig=new WeakMap,rF=new WeakMap,ib=new WeakMap,hu=new WeakMap,aF=new WeakMap,Cy=new WeakMap,pR=new WeakMap,Vm=new WeakMap,nb=new WeakMap,td=new WeakMap,sb=new WeakMap,pi=new WeakMap,dF=new WeakMap,Ol=new WeakSet,tue=function(s){F(this,pi).unselectAll();const{target:e}=s;if(e===F(this,td).div||(e.getAttribute("role")==="img"||e.classList.contains("endOfContent"))&&F(this,td).div.contains(e)){const{isMac:t}=Nd.platform;if(s.button!==0||s.ctrlKey&&t)return;F(this,pi).showAllEditors("highlight",!0,!0),F(this,td).div.classList.add("free"),this.toggleDrawing(),$he.startHighlighting(this,F(this,pi).direction==="ltr",{target:F(this,td).div,x:s.x,y:s.y}),F(this,td).div.addEventListener("pointerup",()=>{F(this,td).div.classList.remove("free"),this.toggleDrawing(!0)},{once:!0,signal:F(this,pi)._signal}),s.preventDefault()}},Qm=function(){return F(uu,dF).get(F(this,pi).getMode())},UO=function(s){const e=F(this,Ol,Qm);return e?new e.prototype.constructor(s):null},fO=function(){const{x:s,y:e,width:t,height:i}=this.div.getBoundingClientRect(),n=Math.max(0,s),o=Math.max(0,e),l=Math.min(window.innerWidth,s+t),r=Math.min(window.innerHeight,e+i),a=(n+l)/2-s,d=(o+r)/2-e,[c,h]=this.viewport.rotation%180===0?[a,d]:[d,a];return{offsetX:c,offsetY:h}},wI=function(){for(const s of F(this,hu).values())s.isEmpty()&&s.remove()},Ii(uu,"_initialized",!1),J(uu,dF,new Map([Smt,Bmt,Lmt,$he].map(s=>[s._editorType,s]))),uu);var ym,MI,Ld,gR,FO,Ua,iue,cF,ZO,nue,AO;let Imt=(Ua=class{constructor({pageIndex:s}){J(this,cF),J(this,ym,null),J(this,MI,0),J(this,Ld,new Map),J(this,gR,new Map),this.pageIndex=s}setParent(s){if(!F(this,ym)){L(this,ym,s);return}if(F(this,ym)!==s){if(F(this,Ld).size>0)for(const e of F(this,Ld).values())e.remove(),s.append(e);L(this,ym,s)}}static get _svgFactory(){return Mn(this,"_svgFactory",new one)}draw(s,e=!1,t=!1){const i=Ad(this,MI)._++,n=E(this,cF,ZO).call(this),o=Ua._svgFactory.createElement("defs");n.append(o);const l=Ua._svgFactory.createElement("path");o.append(l);const r=`path_p${this.pageIndex}_${i}`;l.setAttribute("id",r),l.setAttribute("vector-effect","non-scaling-stroke"),e&&F(this,gR).set(i,l);const a=t?E(this,cF,nue).call(this,o,r):null,d=Ua._svgFactory.createElement("use");return n.append(d),d.setAttribute("href",`#${r}`),this.updateProperties(n,s),F(this,Ld).set(i,n),{id:i,clipPathId:`url(#${a})`}}drawOutline(s,e){const t=Ad(this,MI)._++,i=E(this,cF,ZO).call(this),n=Ua._svgFactory.createElement("defs");i.append(n);const o=Ua._svgFactory.createElement("path");n.append(o);const l=`path_p${this.pageIndex}_${t}`;o.setAttribute("id",l),o.setAttribute("vector-effect","non-scaling-stroke");let r;if(e){const c=Ua._svgFactory.createElement("mask");n.append(c),r=`mask_p${this.pageIndex}_${t}`,c.setAttribute("id",r),c.setAttribute("maskUnits","objectBoundingBox");const h=Ua._svgFactory.createElement("rect");c.append(h),h.setAttribute("width","1"),h.setAttribute("height","1"),h.setAttribute("fill","white");const u=Ua._svgFactory.createElement("use");c.append(u),u.setAttribute("href",`#${l}`),u.setAttribute("stroke","none"),u.setAttribute("fill","black"),u.setAttribute("fill-rule","nonzero"),u.classList.add("mask")}const a=Ua._svgFactory.createElement("use");i.append(a),a.setAttribute("href",`#${l}`),r&&a.setAttribute("mask",`url(#${r})`);const d=a.cloneNode();return i.append(d),a.classList.add("mainOutline"),d.classList.add("secondaryOutline"),this.updateProperties(i,s),F(this,Ld).set(t,i),t}finalizeDraw(s,e){F(this,gR).delete(s),this.updateProperties(s,e)}updateProperties(s,e){var t;if(!e)return;const{root:i,bbox:n,rootClass:o,path:l}=e,r=typeof s=="number"?F(this,Ld).get(s):s;if(r){if(i&&E(this,cF,AO).call(this,r,i),n&&E(t=Ua,FO,iue).call(t,r,n),o){const{classList:a}=r;for(const[d,c]of Object.entries(o))a.toggle(d,c)}if(l){const a=r.firstChild.firstChild;E(this,cF,AO).call(this,a,l)}}}updateParent(s,e){if(e===this)return;const t=F(this,Ld).get(s);t&&(F(e,ym).append(t),F(this,Ld).delete(s),F(e,Ld).set(s,t))}remove(s){F(this,gR).delete(s),F(this,ym)!==null&&(F(this,Ld).get(s).remove(),F(this,Ld).delete(s))}destroy(){L(this,ym,null);for(const s of F(this,Ld).values())s.remove();F(this,Ld).clear(),F(this,gR).clear()}},ym=new WeakMap,MI=new WeakMap,Ld=new WeakMap,gR=new WeakMap,FO=new WeakSet,iue=function(s,[e,t,i,n]){const{style:o}=s;o.top=`${100*t}%`,o.left=`${100*e}%`,o.width=`${100*i}%`,o.height=`${100*n}%`},cF=new WeakSet,ZO=function(){const s=Ua._svgFactory.create(1,1,!0);return F(this,ym).append(s),s.setAttribute("aria-hidden",!0),s},nue=function(s,e){const t=Ua._svgFactory.createElement("clipPath");s.append(t);const i=`clip_${e}`;t.setAttribute("id",i),t.setAttribute("clipPathUnits","objectBoundingBox");const n=Ua._svgFactory.createElement("use");return t.append(n),n.setAttribute("href",`#${e}`),n.classList.add("clip"),i},AO=function(s,e){for(const[t,i]of Object.entries(e))i===null?s.removeAttribute(t):s.setAttribute(t,i)},J(Ua,FO),Ua);globalThis.pdfjsTestingUtils={HighlightOutliner:Fq};sn.AbortException;sn.AnnotationEditorLayer;sn.AnnotationEditorParamsType;sn.AnnotationEditorType;sn.AnnotationEditorUIManager;var Dmt=sn.AnnotationLayer;sn.AnnotationMode;sn.ColorPicker;sn.DOMSVGFactory;sn.DrawLayer;sn.FeatureTest;var NO=sn.GlobalWorkerOptions;sn.ImageKind;sn.InvalidPDFException;sn.MissingPDFException;sn.OPS;sn.OutputScale;sn.PDFDataRangeTransport;sn.PDFDateString;sn.PDFWorker;var Gmt=sn.PasswordResponses;sn.PermissionFlag;sn.PixelsPerInch;sn.RenderingCancelledException;var Emt=sn.TextLayer;sn.TouchManager;sn.UnexpectedResponseException;sn.Util;sn.VerbosityLevel;sn.XfaLayer;sn.build;sn.createValidAbsoluteUrl;sn.fetchData;var vmt=sn.getDocument;sn.getFilenameFromUrl;sn.getPdfFilenameFromUrl;sn.getXfaPageViewport;sn.isDataScheme;sn.isPdfFile;sn.noContextMenu;sn.normalizeUnicode;sn.setLayerDimensions;sn.shadow;sn.stopEvent;sn.version;const xmt="data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNjcwNikscz1pKDIxOTUpLG49YS5BcnJheUJ1ZmZlcixvPWEuVHlwZUVycm9yO2UuZXhwb3J0cz1uJiZyKG4ucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1zKGUpKXRocm93IG5ldyBvKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg3NDc2KSxzPWkoNzM5NCksbj1hLkFycmF5QnVmZmVyLG89biYmbi5wcm90b3R5cGUsZz1vJiZyKG8uc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09cyhlKSlyZXR1cm4hMTtpZighZylyZXR1cm4hMTt0cnl7ZyhlLDAsMCk7cmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNTE2OTooZSx0LGkpPT57dmFyIGE9aSgzMjM4KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoYShlKSl0aHJvdyBuZXcgcigiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtyZXR1cm4gZX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDUxNjkpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksbD1pKDE1NDgpLGg9YS5zdHJ1Y3R1cmVkQ2xvbmUsQz1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPU1hdGgubWluLHU9Qy5wcm90b3R5cGUsZD1RLnByb3RvdHlwZSxmPXIodS5zbGljZSkscD1zKHUsInJlc2l6YWJsZSIsImdldCIpLG09cyh1LCJtYXhCeXRlTGVuZ3RoIiwiZ2V0IikseT1yKGQuZ2V0SW50OCksdz1yKGQuc2V0SW50OCk7ZS5leHBvcnRzPShsfHxjKSYmZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI9ZyhlKSxzPXZvaWQgMD09PXQ/cjpuKHQpLHU9IXB8fCFwKGUpO28oZSk7aWYobCl7ZT1oKGUse3RyYW5zZmVyOltlXX0pO2lmKHI9PT1zJiYoaXx8dSkpcmV0dXJuIGV9aWYocj49cyYmKCFpfHx1KSlhPWYoZSwwLHMpO2Vsc2V7dmFyIGQ9aSYmIXUmJm0/e21heEJ5dGVMZW5ndGg6bShlKX06dm9pZCAwO2E9bmV3IEMocyxkKTtmb3IodmFyIGI9bmV3IFEoZSksRD1uZXcgUShhKSxTPUUocyxyKSxrPTA7azxTO2srKyl3KEQsayx5KGIsaykpfWx8fGMoZSk7cmV0dXJuIGF9fSw0NjQ0OihlLHQsaSk9Pnt2YXIgYSxyLHMsbj1pKDc4MTEpLG89aSgzNzI0KSxnPWkoNDU3NiksYz1pKDQ5MDEpLGw9aSgzNCksaD1pKDkyOTcpLEM9aSg2OTU1KSxRPWkoNjgyMyksRT1pKDY2OTkpLHU9aSg2ODQwKSxkPWkoMjEwNiksZj1pKDE2MjUpLHA9aSgyNzg3KSxtPWkoMjk2NykseT1pKDgyMjcpLHc9aSgzMzkyKSxiPWkoMTE4MSksRD1iLmVuZm9yY2UsUz1iLmdldCxrPWcuSW50OEFycmF5LFI9ayYmay5wcm90b3R5cGUsTj1nLlVpbnQ4Q2xhbXBlZEFycmF5LEc9TiYmTi5wcm90b3R5cGUsTT1rJiZwKGspLFU9UiYmcChSKSx4PU9iamVjdC5wcm90b3R5cGUsTD1nLlR5cGVFcnJvcixIPXkoInRvU3RyaW5nVGFnIiksSj13KCJUWVBFRF9BUlJBWV9UQUciKSx2PSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFk9biYmISFtJiYiT3BlcmEiIT09QyhnLm9wZXJhKSxLPSExLFQ9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxxPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7aWYobCh0KSl7dmFyIGk9Uyh0KTtyZXR1cm4gaSYmaChpLHYpP2lbdl06Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKHQpfX0saXNUeXBlZEFycmF5PWZ1bmN0aW9uKGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIGgoVCx0KXx8aChxLHQpfTtmb3IoYSBpbiBUKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSk/RChzKVt2XT1yOlk9ITE7Zm9yKGEgaW4gcSkocz0ocj1nW2FdKSYmci5wcm90b3R5cGUpJiYoRChzKVt2XT1yKTtpZighWXx8IWMoTSl8fE09PT1GdW5jdGlvbi5wcm90b3R5cGUpe009ZnVuY3Rpb24gVHlwZWRBcnJheSgpe3Rocm93IG5ldyBMKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihZKWZvcihhIGluIFQpZ1thXSYmbShnW2FdLE0pfWlmKCFZfHwhVXx8VT09PXgpe1U9TS5wcm90b3R5cGU7aWYoWSlmb3IoYSBpbiBUKWdbYV0mJm0oZ1thXS5wcm90b3R5cGUsVSl9WSYmcChHKSE9PVUmJm0oRyxVKTtpZihvJiYhaChVLEgpKXtLPSEwO2QoVSxILHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcyk/dGhpc1tKXTp2b2lkIDB9fSk7Zm9yKGEgaW4gVClnW2FdJiZFKGdbYV0sSixhKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6WSxUWVBFRF9BUlJBWV9UQUc6SyYmSixhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IEwoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKGMoZSkmJighbXx8ZihNLGUpKSlyZXR1cm4gZTt0aHJvdyBuZXcgTChRKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQsaSxhKXtpZihvKXtpZihpKWZvcih2YXIgciBpbiBUKXt2YXIgcz1nW3JdO2lmKHMmJmgocy5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBzLnByb3RvdHlwZVtlXX1jYXRjaChpKXt0cnl7cy5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1VW2VdJiYhaXx8dShVLGUsaT90OlkmJlJbZV18fHQsYSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxyO2lmKG8pe2lmKG0pe2lmKGkpZm9yKGEgaW4gVClpZigocj1nW2FdKSYmaChyLGUpKXRyeXtkZWxldGUgcltlXX1jYXRjaChlKXt9aWYoTVtlXSYmIWkpcmV0dXJuO3RyeXtyZXR1cm4gdShNLGUsaT90OlkmJk1bZV18fHQpfWNhdGNoKGUpe319Zm9yKGEgaW4gVCkhKHI9Z1thXSl8fHJbZV0mJiFpfHx1KHIsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcixpc1ZpZXc6ZnVuY3Rpb24gaXNWaWV3KGUpe2lmKCFsKGUpKXJldHVybiExO3ZhciB0PUMoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGgoVCx0KXx8aChxLHQpfSxpc1R5cGVkQXJyYXksVHlwZWRBcnJheTpNLFR5cGVkQXJyYXlQcm90b3R5cGU6VX19LDUzNzA6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9pOmEodCksbj1uZXcgZShzKTtzPnI7KW5bcl09dFtyKytdO3JldHVybiBufX0sOTYxNzooZSx0LGkpPT57dmFyIGE9aSg1Mzk3KSxyPWkoNTYxMCkscz1pKDYxOTgpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxpLG4pe3ZhciBvPWEodCksZz1zKG8pO2lmKDA9PT1nKXJldHVybiFlJiYtMTt2YXIgYyxsPXIobixnKTtpZihlJiZpIT1pKXtmb3IoO2c+bDspaWYoKGM9b1tsKytdKSE9YylyZXR1cm4hMH1lbHNlIGZvcig7Zz5sO2wrKylpZigoZXx8bCBpbiBvKSYmb1tsXT09PWkpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LDQ1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQzNzYpLHM9VHlwZUVycm9yLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihyKGUpJiYhbihlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgcygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sNzY4MDooZSx0LGkpPT57dmFyIGE9aSg5NTA0KTtlLmV4cG9ydHM9YShbXS5zbGljZSl9LDc2Mjg6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPWEoZSkscj1uZXcgdChpKSxzPTA7czxpO3MrKylyW3NdPWVbaS1zLTFdO3JldHVybiByfX0sOTkyODooZSx0LGkpPT57dmFyIGE9aSg2MTk4KSxyPWkoMTI5MSkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxuKXt2YXIgbz1hKGUpLGc9cihpKSxjPWc8MD9vK2c6ZztpZihjPj1vfHxjPDApdGhyb3cgbmV3IHMoIkluY29ycmVjdCBpbmRleCIpO2Zvcih2YXIgbD1uZXcgdChvKSxoPTA7aDxvO2grKylsW2hdPWg9PT1jP246ZVtoXTtyZXR1cm4gbH19LDYzMTk6KGUsdCxpKT0+e3ZhciBhPWkoODU1MSkscj1pKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxzKXt0cnl7cmV0dXJuIHM/dChhKGkpWzBdLGlbMV0pOnQoaSl9Y2F0Y2godCl7cihlLCJ0aHJvdyIsdCl9fX0sMjE5NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWEoe30udG9TdHJpbmcpLHM9YSgiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzKHIoZSksOCwtMSl9fSw2OTU1OihlLHQsaSk9Pnt2YXIgYT1pKDIxNDApLHI9aSg0OTAxKSxzPWkoMjE5NSksbj1pKDgyMjcpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGc9IkFyZ3VtZW50cyI9PT1zKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7ZS5leHBvcnRzPWE/czpmdW5jdGlvbihlKXt2YXIgdCxpLGE7cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2YoaT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fSh0PW8oZSksbikpP2k6Zz9zKHQpOiJPYmplY3QiPT09KGE9cyh0KSkmJnIodC5jYWxsZWUpPyJBcmd1bWVudHMiOmF9fSw3NzQwOihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg1MDMxKSxzPWkoNzM0Nyksbj1pKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciBvPXIodCksZz1uLmYsYz1zLmYsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgaD1vW2xdO2EoZSxoKXx8aSYmYShpLGgpfHxnKGUsaCxjKHQsaCkpfX19LDIyMTE6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbDtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKSE9PUYucHJvdG90eXBlfSkpfSwyNTI5OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sNjY5OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1hP2Z1bmN0aW9uKGUsdCxpKXtyZXR1cm4gci5mKGUsdCxzKDEsaSkpfTpmdW5jdGlvbihlLHQsaSl7ZVt0XT1pO3JldHVybiBlfX0sNjk4MDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNDY1OTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDkxMykscz1pKDY5ODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7YT9yLmYoZSx0LHMoMCxpKSk6ZVt0XT1pfX0sMjEwNjooZSx0LGkpPT57dmFyIGE9aSgyODMpLHI9aSg0OTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2kuZ2V0JiZhKGkuZ2V0LHQse2dldHRlcjohMH0pO2kuc2V0JiZhKGkuc2V0LHQse3NldHRlcjohMH0pO3JldHVybiByLmYoZSx0LGkpfX0sNjg0MDooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNDkxMykscz1pKDI4Myksbj1pKDk0MzMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtvfHwobz17fSk7dmFyIGc9by5lbnVtZXJhYmxlLGM9dm9pZCAwIT09by5uYW1lP28ubmFtZTp0O2EoaSkmJnMoaSxjLG8pO2lmKG8uZ2xvYmFsKWc/ZVt0XT1pOm4odCxpKTtlbHNle3RyeXtvLnVuc2FmZT9lW3RdJiYoZz0hMCk6ZGVsZXRlIGVbdF19Y2F0Y2goZSl7fWc/ZVt0XT1pOnIuZihlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW8ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFvLm5vbldyaXRhYmxlfSl9cmV0dXJuIGV9fSw2Mjc5OihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciByIGluIHQpYShlLHIsdFtyXSxpKTtyZXR1cm4gZX19LDk0MzM6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e3IoYSxlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKGkpe2FbZV09dH1yZXR1cm4gdH19LDM3MjQ6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSw0NDgzOihlLHQsaSk9Pnt2YXIgYSxyLHMsbixvPWkoNDU3NiksZz1pKDk0MjkpLGM9aSgxNTQ4KSxsPW8uc3RydWN0dXJlZENsb25lLGg9by5BcnJheUJ1ZmZlcixDPW8uTWVzc2FnZUNoYW5uZWwsUT0hMTtpZihjKVE9ZnVuY3Rpb24oZSl7bChlLHt0cmFuc2ZlcjpbZV19KX07ZWxzZSBpZihoKXRyeXtDfHwoYT1nKCJ3b3JrZXJfdGhyZWFkcyIpKSYmKEM9YS5NZXNzYWdlQ2hhbm5lbCk7aWYoQyl7cj1uZXcgQztzPW5ldyBoKDIpO249ZnVuY3Rpb24oZSl7ci5wb3J0MS5wb3N0TWVzc2FnZShudWxsLFtlXSl9O2lmKDI9PT1zLmJ5dGVMZW5ndGgpe24ocyk7MD09PXMuYnl0ZUxlbmd0aCYmKFE9bil9fX1jYXRjaChlKXt9ZS5leHBvcnRzPVF9LDQwNTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDM0KSxzPWEuZG9jdW1lbnQsbj1yKHMpJiZyKHMuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuP3MuY3JlYXRlRWxlbWVudChlKTp7fX19LDY4Mzc6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT45MDA3MTk5MjU0NzQwOTkxKXRocm93IHQoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBlfX0sNTAwMjplPT57ZS5leHBvcnRzPXtJbmRleFNpemVFcnJvcjp7czoiSU5ERVhfU0laRV9FUlIiLGM6MSxtOjF9LERPTVN0cmluZ1NpemVFcnJvcjp7czoiRE9NU1RSSU5HX1NJWkVfRVJSIixjOjIsbTowfSxIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6e3M6IkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsYzozLG06MX0sV3JvbmdEb2N1bWVudEVycm9yOntzOiJXUk9OR19ET0NVTUVOVF9FUlIiLGM6NCxtOjF9LEludmFsaWRDaGFyYWN0ZXJFcnJvcjp7czoiSU5WQUxJRF9DSEFSQUNURVJfRVJSIixjOjUsbToxfSxOb0RhdGFBbGxvd2VkRXJyb3I6e3M6Ik5PX0RBVEFfQUxMT1dFRF9FUlIiLGM6NixtOjB9LE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOntzOiJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLGM6NyxtOjF9LE5vdEZvdW5kRXJyb3I6e3M6Ik5PVF9GT1VORF9FUlIiLGM6OCxtOjF9LE5vdFN1cHBvcnRlZEVycm9yOntzOiJOT1RfU1VQUE9SVEVEX0VSUiIsYzo5LG06MX0sSW5Vc2VBdHRyaWJ1dGVFcnJvcjp7czoiSU5VU0VfQVRUUklCVVRFX0VSUiIsYzoxMCxtOjF9LEludmFsaWRTdGF0ZUVycm9yOntzOiJJTlZBTElEX1NUQVRFX0VSUiIsYzoxMSxtOjF9LFN5bnRheEVycm9yOntzOiJTWU5UQVhfRVJSIixjOjEyLG06MX0sSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOntzOiJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLGM6MTMsbToxfSxOYW1lc3BhY2VFcnJvcjp7czoiTkFNRVNQQUNFX0VSUiIsYzoxNCxtOjF9LEludmFsaWRBY2Nlc3NFcnJvcjp7czoiSU5WQUxJRF9BQ0NFU1NfRVJSIixjOjE1LG06MX0sVmFsaWRhdGlvbkVycm9yOntzOiJWQUxJREFUSU9OX0VSUiIsYzoxNixtOjB9LFR5cGVNaXNtYXRjaEVycm9yOntzOiJUWVBFX01JU01BVENIX0VSUiIsYzoxNyxtOjF9LFNlY3VyaXR5RXJyb3I6e3M6IlNFQ1VSSVRZX0VSUiIsYzoxOCxtOjF9LE5ldHdvcmtFcnJvcjp7czoiTkVUV09SS19FUlIiLGM6MTksbToxfSxBYm9ydEVycm9yOntzOiJBQk9SVF9FUlIiLGM6MjAsbToxfSxVUkxNaXNtYXRjaEVycm9yOntzOiJVUkxfTUlTTUFUQ0hfRVJSIixjOjIxLG06MX0sUXVvdGFFeGNlZWRlZEVycm9yOntzOiJRVU9UQV9FWENFRURFRF9FUlIiLGM6MjIsbToxfSxUaW1lb3V0RXJyb3I6e3M6IlRJTUVPVVRfRVJSIixjOjIzLG06MX0sSW52YWxpZE5vZGVUeXBlRXJyb3I6e3M6IklOVkFMSURfTk9ERV9UWVBFX0VSUiIsYzoyNCxtOjF9LERhdGFDbG9uZUVycm9yOntzOiJEQVRBX0NMT05FX0VSUiIsYzoyNSxtOjF9fX0sODcyNzplPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDYxOTM6KGUsdCxpKT0+e3ZhciBhPWkoNDIxNSk7ZS5leHBvcnRzPSJOT0RFIj09PWF9LDI4Mzk6KGUsdCxpKT0+e3ZhciBhPWkoNDU3NikubmF2aWdhdG9yLHI9YSYmYS51c2VyQWdlbnQ7ZS5leHBvcnRzPXI/U3RyaW5nKHIpOiIifSw5NTE5OihlLHQsaSk9Pnt2YXIgYSxyLHM9aSg0NTc2KSxuPWkoMjgzOSksbz1zLnByb2Nlc3MsZz1zLkRlbm8sYz1vJiZvLnZlcnNpb25zfHxnJiZnLnZlcnNpb24sbD1jJiZjLnY4O2wmJihyPShhPWwuc3BsaXQoIi4iKSlbMF0+MCYmYVswXTw0PzE6KyhhWzBdK2FbMV0pKTshciYmbiYmKCEoYT1uLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8YVsxXT49NzQpJiYoYT1uLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocj0rYVsxXSk7ZS5leHBvcnRzPXJ9LDQyMTU6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDI4MzkpLHM9aSgyMTk1KSx1c2VyQWdlbnRTdGFydHNXaXRoPWZ1bmN0aW9uKGUpe3JldHVybiByLnNsaWNlKDAsZS5sZW5ndGgpPT09ZX07ZS5leHBvcnRzPXVzZXJBZ2VudFN0YXJ0c1dpdGgoIkJ1bi8iKT8iQlVOIjp1c2VyQWdlbnRTdGFydHNXaXRoKCJDbG91ZGZsYXJlLVdvcmtlcnMiKT8iQ0xPVURGTEFSRSI6dXNlckFnZW50U3RhcnRzV2l0aCgiRGVuby8iKT8iREVOTyI6dXNlckFnZW50U3RhcnRzV2l0aCgiTm9kZS5qcy8iKT8iTk9ERSI6YS5CdW4mJiJzdHJpbmciPT10eXBlb2YgQnVuLnZlcnNpb24/IkJVTiI6YS5EZW5vJiYib2JqZWN0Ij09dHlwZW9mIERlbm8udmVyc2lvbj8iREVOTyI6InByb2Nlc3MiPT09cyhhLnByb2Nlc3MpPyJOT0RFIjphLndpbmRvdyYmYS5kb2N1bWVudD8iQlJPV1NFUiI6IlJFU1QifSw4NTc0OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9RXJyb3Iscz1hKCIiLnJlcGxhY2UpLG49U3RyaW5nKG5ldyByKCJ6eGNhc2QiKS5zdGFjayksbz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGc9by50ZXN0KG4pO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGcmJiJzdHJpbmciPT10eXBlb2YgZSYmIXIucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9cyhlLG8sIiIpO3JldHVybiBlfX0sNjUxODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNzM0NykuZixzPWkoNjY5OSksbj1pKDY4NDApLG89aSg5NDMzKSxnPWkoNzc0MCksYz1pKDI3OTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpLGwsaCxDLFEsRT1lLnRhcmdldCx1PWUuZ2xvYmFsLGQ9ZS5zdGF0O2lmKGk9dT9hOmQ/YVtFXXx8byhFLHt9KTphW0VdJiZhW0VdLnByb3RvdHlwZSlmb3IobCBpbiB0KXtDPXRbbF07aD1lLmRvbnRDYWxsR2V0U2V0PyhRPXIoaSxsKSkmJlEudmFsdWU6aVtsXTtpZighYyh1P2w6RSsoZD8iLiI6IiMiKStsLGUuZm9yY2VkKSYmdm9pZCAwIT09aCl7aWYodHlwZW9mIEM9PXR5cGVvZiBoKWNvbnRpbnVlO2coQyxoKX0oZS5zaGFtfHxoJiZoLnNoYW0pJiZzKEMsInNoYW0iLCEwKTtuKGksbCxDLGUpfX19LDkwMzk6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sODc0NTooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5hcHBseSxuPXIuY2FsbDtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwoYT9uLmJpbmQocyk6ZnVuY3Rpb24oKXtyZXR1cm4gbi5hcHBseShzLGFyZ3VtZW50cyl9KX0sNjA4MDooZSx0LGkpPT57dmFyIGE9aSg3NDc2KSxyPWkoOTMwNikscz1pKDYxNiksbj1hKGEuYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cihlKTtyZXR1cm4gdm9pZCAwPT09dD9lOnM/bihlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LDYxNjooZSx0LGkpPT57dmFyIGE9aSg5MDM5KTtlLmV4cG9ydHM9IWEoKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LDk1NjU6KGUsdCxpKT0+e3ZhciBhPWkoNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1hP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19LDM1MDooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTI5Nykscz1GdW5jdGlvbi5wcm90b3R5cGUsbj1hJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89cihzLCJuYW1lIiksZz1vJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uIHNvbWV0aGluZygpe30ubmFtZSxjPW8mJighYXx8YSYmbihzLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpvLFBST1BFUjpnLENPTkZJR1VSQUJMRTpjfX0sNjcwNjooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTMwNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt0cnl7cmV0dXJuIGEocihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdClbaV0pKX1jYXRjaChlKXt9fX0sNzQ3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KSxyPWkoOTUwNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJGdW5jdGlvbiI9PT1hKGUpKXJldHVybiByKGUpfX0sOTUwNDooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5jYWxsLG49YSYmci5iaW5kLmJpbmQocyxzKTtlLmV4cG9ydHM9YT9uOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KGUsYXJndW1lbnRzKX19fSw5NDI5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg2MTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocil7dHJ5e3JldHVybiBhLnByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZShlKX1jYXRjaChlKXt9dHJ5e3JldHVybiBGdW5jdGlvbigncmV0dXJuIHJlcXVpcmUoIicrZSsnIiknKSgpfWNhdGNoKGUpe319fX0sNzc1MTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oaT1hW2VdLHIoaSk/aTp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIGl9fSwxNzY3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJue2l0ZXJhdG9yOmUsbmV4dDplLm5leHQsZG9uZTohMX19fSw4NTE6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1pKDU5NjYpLHM9aSg0MTE3KSxuPWkoNjI2OSksbz1pKDgyMjcpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gcihlLG8pfHxyKGUsIkBAaXRlcmF0b3IiKXx8blthKGUpXX19LDgxOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg4NTEpLGc9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYocihpKSlyZXR1cm4gcyhhKGksZSkpO3Rocm93IG5ldyBnKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDU5NjY6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDQxMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOmEoaSl9fSwzNzg5OihlLHQsaSk9Pnt2YXIgYT1pKDkzMDYpLHI9aSg4NTUxKSxzPWkoOTU2NSksbj1pKDEyOTEpLG89aSgxNzY3KSxnPSJJbnZhbGlkIHNpemUiLGM9UmFuZ2VFcnJvcixsPVR5cGVFcnJvcixoPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQpe3RoaXMuc2V0PWU7dGhpcy5zaXplPWgodCwwKTt0aGlzLmhhcz1hKGUuaGFzKTt0aGlzLmtleXM9YShlLmtleXMpfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBvKHIocyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LGUpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3IoZSk7dmFyIHQ9K2Uuc2l6ZTtpZih0IT10KXRocm93IG5ldyBsKGcpO3ZhciBpPW4odCk7aWYoaTwwKXRocm93IG5ldyBjKGcpO3JldHVybiBuZXcgU2V0UmVjb3JkKGUsaSl9fSw0NTc2OmZ1bmN0aW9uKGUpe3ZhciBjaGVjaz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPWNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB0aGlzJiZ0aGlzKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sOTI5NzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoODk4MSkscz1hKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIHMocihlKSx0KX19LDQyMTplPT57ZS5leHBvcnRzPXt9fSwzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSk7ZS5leHBvcnRzPWEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDU5MTc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpLHM9aSg0MDU1KTtlLmV4cG9ydHM9IWEmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sNzA1NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDIxOTUpLG49T2JqZWN0LG89YSgiIi5zcGxpdCk7ZS5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIW4oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTpuKGUpfTpufSwzMTY3OihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSgzNCkscz1pKDI5NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztzJiZhKG49dC5jb25zdHJ1Y3RvcikmJm4hPT1pJiZyKG89bi5wcm90b3R5cGUpJiZvIT09aS5wcm90b3R5cGUmJnMoZSxvKTtyZXR1cm4gZX19LDM3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDQ5MDEpLHM9aSg3NjI5KSxuPWEoRnVuY3Rpb24udG9TdHJpbmcpO3Iocy5pbnNwZWN0U291cmNlKXx8KHMuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pO2UuZXhwb3J0cz1zLmluc3BlY3RTb3VyY2V9LDExODE6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoODYyMiksbz1pKDQ1NzYpLGc9aSgzNCksYz1pKDY2OTkpLGw9aSg5Mjk3KSxoPWkoNzYyOSksQz1pKDYxMTkpLFE9aSg0MjEpLEU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix1PW8uVHlwZUVycm9yLGQ9by5XZWFrTWFwO2lmKG58fGguc3RhdGUpe3ZhciBmPWguc3RhdGV8fChoLnN0YXRlPW5ldyBkKTtmLmdldD1mLmdldDtmLmhhcz1mLmhhcztmLnNldD1mLnNldDthPWZ1bmN0aW9uKGUsdCl7aWYoZi5oYXMoZSkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtmLnNldChlLHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBmLmdldChlKXx8e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuaGFzKGUpfX1lbHNle3ZhciBwPUMoInN0YXRlIik7UVtwXT0hMDthPWZ1bmN0aW9uKGUsdCl7aWYobChlLHApKXRocm93IG5ldyB1KEUpO3QuZmFjYWRlPWU7YyhlLHAsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSxwKT9lW3BdOnt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBsKGUscCl9fWUuZXhwb3J0cz17c2V0OmEsZ2V0OnIsaGFzOnMsZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9yKGUpOmEoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk7aWYoIWcodCl8fChpPXIodCkpLnR5cGUhPT1lKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIGl9fX19LDQyMDk6KGUsdCxpKT0+e3ZhciBhPWkoODIyNykscj1pKDYyNjkpLHM9YSgiaXRlcmF0b3IiKSxuPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihyLkFycmF5PT09ZXx8bltzXT09PWUpfX0sNDM3NjooZSx0LGkpPT57dmFyIGE9aSgyMTk1KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24gaXNBcnJheShlKXtyZXR1cm4iQXJyYXkiPT09YShlKX19LDExMDg6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09PXR9fSw0OTAxOmU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSkscj1pKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT1vW24oZSldO3JldHVybiBpPT09Y3x8aSE9PWcmJihyKHQpP2EodCk6ISF0KX0sbj1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sZz1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGM9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNzplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfX0sMzQ6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTphKGUpfX0sMzkyNTooZSx0LGkpPT57dmFyIGE9aSgzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfHxudWxsPT09ZX19LDYzOTU6ZT0+e2UuZXhwb3J0cz0hMX0sNzU3OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg0OTAxKSxzPWkoMTYyNSksbj1pKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIscyxuPWk/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8sbikpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MjooZSx0LGkpPT57dmFyIGE9aSg2MDgwKSxyPWkoOTU2NSkscz1pKDg1NTEpLG49aSg2ODIzKSxvPWkoNDIwOSksZz1pKDYxOTgpLGM9aSgxNjI1KSxsPWkoODEpLGg9aSg4NTEpLEM9aSg5NTM5KSxRPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxFPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgdSxkLGYscCxtLHksdyxiPWkmJmkudGhhdCxEPSEoIWl8fCFpLkFTX0VOVFJJRVMpLFM9ISghaXx8IWkuSVNfUkVDT1JEKSxrPSEoIWl8fCFpLklTX0lURVJBVE9SKSxSPSEoIWl8fCFpLklOVEVSUlVQVEVEKSxOPWEodCxiKSxzdG9wPWZ1bmN0aW9uKGUpe3UmJkModSwibm9ybWFsIixlKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKEQpe3MoZSk7cmV0dXJuIFI/TihlWzBdLGVbMV0sc3RvcCk6TihlWzBdLGVbMV0pfXJldHVybiBSP04oZSxzdG9wKTpOKGUpfTtpZihTKXU9ZS5pdGVyYXRvcjtlbHNlIGlmKGspdT1lO2Vsc2V7aWYoIShkPWgoZSkpKXRocm93IG5ldyBRKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGQpKXtmb3IoZj0wLHA9ZyhlKTtwPmY7ZisrKWlmKChtPWNhbGxGbihlW2ZdKSkmJmMoRSxtKSlyZXR1cm4gbTtyZXR1cm4gbmV3IFJlc3VsdCghMSl9dT1sKGUsZCl9eT1TP2UubmV4dDp1Lm5leHQ7Zm9yKDshKHc9cih5LHUpKS5kb25lOyl7dHJ5e209Y2FsbEZuKHcudmFsdWUpfWNhdGNoKGUpe0ModSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgbSYmbSYmYyhFLG0pKXJldHVybiBtfXJldHVybiBuZXcgUmVzdWx0KCExKX19LDk1Mzk6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDg1NTEpLHM9aSg1OTY2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG87cihlKTt0cnl7aWYoIShuPXMoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBpO3JldHVybiBpfW49YShuLGUpfWNhdGNoKGUpe289ITA7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IGk7aWYobyl0aHJvdyBuO3Iobik7cmV0dXJuIGl9fSw5NDYyOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgyMzYwKSxzPWkoNjY5OSksbj1pKDYyNzkpLG89aSg4MjI3KSxnPWkoMTE4MSksYz1pKDU5NjYpLGw9aSg3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxoPWkoMjUyOSksQz1pKDk1MzkpLFE9bygidG9TdHJpbmdUYWciKSxFPSJJdGVyYXRvckhlbHBlciIsdT0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLGQ9Zy5zZXQsY3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZT1mdW5jdGlvbihlKXt2YXIgdD1nLmdldHRlckZvcihlP3U6RSk7cmV0dXJuIG4ocihsKSx7bmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGk9dCh0aGlzKTtpZihlKXJldHVybiBpLm5leHRIYW5kbGVyKCk7dHJ5e3ZhciBhPWkuZG9uZT92b2lkIDA6aS5uZXh0SGFuZGxlcigpO3JldHVybiBoKGEsaS5kb25lKX1jYXRjaChlKXtpLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscj1pLml0ZXJhdG9yO2kuZG9uZT0hMDtpZihlKXt2YXIgcz1jKHIsInJldHVybiIpO3JldHVybiBzP2EocyxyKTpoKHZvaWQgMCwhMCl9aWYoaS5pbm5lcil0cnl7QyhpLmlubmVyLml0ZXJhdG9yLCJub3JtYWwiKX1jYXRjaChlKXtyZXR1cm4gQyhyLCJ0aHJvdyIsZSl9ciYmQyhyLCJub3JtYWwiKTtyZXR1cm4gaCh2b2lkIDAsITApfX0pfSxmPWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITApLHA9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMSk7cyhwLFEsIkl0ZXJhdG9yIEhlbHBlciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWZ1bmN0aW9uIEl0ZXJhdG9yKGksYSl7aWYoYSl7YS5pdGVyYXRvcj1pLml0ZXJhdG9yO2EubmV4dD1pLm5leHR9ZWxzZSBhPWk7YS50eXBlPXQ/dTpFO2EubmV4dEhhbmRsZXI9ZTthLmNvdW50ZXI9MDthLmRvbmU9ITE7ZCh0aGlzLGEpfTtpLnByb3RvdHlwZT10P2Y6cDtyZXR1cm4gaX19LDcxMzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoOTMwNikscz1pKDg1NTEpLG49aSgxNzY3KSxvPWkoOTQ2MiksZz1pKDYzMTkpLGM9bygoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9cyhhKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBnKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pKTtlLmV4cG9ydHM9ZnVuY3Rpb24gbWFwKGUpe3ModGhpcyk7cihlKTtyZXR1cm4gbmV3IGMobih0aGlzKSx7bWFwcGVyOmV9KX19LDc2NTc6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoOTAzOSksbz1pKDQ5MDEpLGc9aSgzNCksYz1pKDIzNjApLGw9aSgyNzg3KSxoPWkoNjg0MCksQz1pKDgyMjcpLFE9aSg2Mzk1KSxFPUMoIml0ZXJhdG9yIiksdT0hMTtbXS5rZXlzJiYoIm5leHQiaW4ocz1bXS5rZXlzKCkpPyhyPWwobChzKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGE9cik6dT0hMCk7IWcoYSl8fG4oKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbRV0uY2FsbChlKSE9PWV9KSk/YT17fTpRJiYoYT1jKGEpKTtvKGFbRV0pfHxoKGEsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp1fX0sNjI2OTplPT57ZS5leHBvcnRzPXt9fSw2MTk4OihlLHQsaSk9Pnt2YXIgYT1pKDgwMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShlLmxlbmd0aCl9fSwyODM6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkwMzkpLHM9aSg0OTAxKSxuPWkoOTI5Nyksbz1pKDM3MjQpLGc9aSgzNTApLkNPTkZJR1VSQUJMRSxjPWkoMzcwNiksbD1pKDExODEpLGg9bC5lbmZvcmNlLEM9bC5nZXQsUT1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1hKCIiLnNsaWNlKSxkPWEoIiIucmVwbGFjZSksZj1hKFtdLmpvaW4pLHA9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1FKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLG09U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHk9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXsiU3ltYm9sKCI9PT11KFEodCksMCw3KSYmKHQ9IlsiK2QoUSh0KSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpO2kmJmkuZ2V0dGVyJiYodD0iZ2V0ICIrdCk7aSYmaS5zZXR0ZXImJih0PSJzZXQgIit0KTsoIW4oZSwibmFtZSIpfHxnJiZlLm5hbWUhPT10KSYmKG8/RShlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCk7cCYmaSYmbihpLCJhcml0eSIpJiZlLmxlbmd0aCE9PWkuYXJpdHkmJkUoZSwibGVuZ3RoIix7dmFsdWU6aS5hcml0eX0pO3RyeXtpJiZuKGksImNvbnN0cnVjdG9yIikmJmkuY29uc3RydWN0b3I/byYmRShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIGE9aChlKTtuKGEsInNvdXJjZSIpfHwoYS5zb3VyY2U9ZihtLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSk7cmV0dXJuIGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15KChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZDKHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSw3NDE6ZT0+e3ZhciB0PU1hdGguY2VpbCxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/aTp0KShhKX19LDYwNDM6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsaTt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsYSl7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09aSl0aHJvdyBuZXcgcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWU7aT1hfSkpO3RoaXMucmVzb2x2ZT1hKHQpO3RoaXMucmVqZWN0PWEoaSl9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoZSl9fSwyNjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6YShlKX19LDIzNjA6KGUsdCxpKT0+e3ZhciBhLHI9aSg4NTUxKSxzPWkoNjgwMSksbj1pKDg3MjcpLG89aSg0MjEpLGc9aSgzOTcpLGM9aSg0MDU1KSxsPWkoNjExOSksaD0icHJvdG90eXBlIixDPSJzY3JpcHQiLFE9bCgiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK0MrIj4iK2UrIjwvIitDKyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbihlKXtlLndyaXRlKHNjcmlwdFRhZygiIikpO2UuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7ZT1udWxsO3JldHVybiB0fSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChlKXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk6ZnVuY3Rpb24oKXt2YXIgZSx0PWMoImlmcmFtZSIpLGk9ImphdmEiK0MrIjoiO3Quc3R5bGUuZGlzcGxheT0ibm9uZSI7Zy5hcHBlbmRDaGlsZCh0KTt0LnNyYz1TdHJpbmcoaSk7KGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7ZS53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO2UuY2xvc2UoKTtyZXR1cm4gZS5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk7Zm9yKHZhciBlPW4ubGVuZ3RoO2UtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtoXVtuW2VdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bUV09ITA7ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZShlLHQpe3ZhciBpO2lmKG51bGwhPT1lKXtFbXB0eUNvbnN0cnVjdG9yW2hdPXIoZSk7aT1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2hdPW51bGw7aVtRXT1lfWVsc2UgaT1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09dD9pOnMuZihpLHQpfX0sNjgwMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoODY4Nikscz1pKDQ5MTMpLG49aSg4NTUxKSxvPWkoNTM5NyksZz1pKDEwNzIpO3QuZj1hJiYhcj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7bihlKTtmb3IodmFyIGksYT1vKHQpLHI9Zyh0KSxjPXIubGVuZ3RoLGw9MDtjPmw7KXMuZihlLGk9cltsKytdLGFbaV0pO3JldHVybiBlfX0sNDkxMzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNTkxNykscz1pKDg2ODYpLG49aSg4NTUxKSxvPWkoNjk2OSksZz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9ImVudW1lcmFibGUiLEM9ImNvbmZpZ3VyYWJsZSIsUT0id3JpdGFibGUiO3QuZj1hP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIGkmJlEgaW4gaSYmIWlbUV0pe3ZhciBhPWwoZSx0KTtpZihhJiZhW1FdKXtlW3RdPWkudmFsdWU7aT17Y29uZmlndXJhYmxlOkMgaW4gaT9pW0NdOmFbQ10sZW51bWVyYWJsZTpoIGluIGk/aVtoXTphW2hdLHdyaXRhYmxlOiExfX19cmV0dXJuIGMoZSx0LGkpfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxpKXtuKGUpO3Q9byh0KTtuKGkpO2lmKHIpdHJ5e3JldHVybiBjKGUsdCxpKX1jYXRjaChlKXt9aWYoImdldCJpbiBpfHwic2V0ImluIGkpdGhyb3cgbmV3IGcoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7InZhbHVlImluIGkmJihlW3RdPWkudmFsdWUpO3JldHVybiBlfX0sNzM0NzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTU2NSkscz1pKDg3NzMpLG49aSg2OTgwKSxvPWkoNTM5NyksZz1pKDY5NjkpLGM9aSg5Mjk3KSxsPWkoNTkxNyksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1hP2g6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7ZT1vKGUpO3Q9Zyh0KTtpZihsKXRyeXtyZXR1cm4gaChlLHQpfWNhdGNoKGUpe31pZihjKGUsdCkpcmV0dXJuIG4oIXIocy5mLGUsdCksZVt0XSl9fSw4NDgwOihlLHQsaSk9Pnt2YXIgYT1pKDE4MjgpLHI9aSg4NzI3KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gYShlLHIpfX0sMzcxNzooZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwyNzg3OihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg0OTAxKSxzPWkoODk4MSksbj1pKDYxMTkpLG89aSgyMjExKSxnPW4oIklFX1BST1RPIiksYz1PYmplY3QsbD1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bz9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7aWYoYSh0LGcpKXJldHVybiB0W2ddO3ZhciBpPXQuY29uc3RydWN0b3I7cmV0dXJuIHIoaSkmJnQgaW5zdGFuY2VvZiBpP2kucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBjP2w6bnVsbH19LDE2MjU6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCk7ZS5leHBvcnRzPWEoe30uaXNQcm90b3R5cGVPZil9LDE4Mjg6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkyOTcpLHM9aSg1Mzk3KSxuPWkoOTYxNykuaW5kZXhPZixvPWkoNDIxKSxnPWEoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksYT1zKGUpLGM9MCxsPVtdO2ZvcihpIGluIGEpIXIobyxpKSYmcihhLGkpJiZnKGwsaSk7Zm9yKDt0Lmxlbmd0aD5jOylyKGEsaT10W2MrK10pJiYofm4obCxpKXx8ZyhsLGkpKTtyZXR1cm4gbH19LDEwNzI6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyhlKXtyZXR1cm4gYShlLHIpfX0sODc3MzooZSx0KT0+e3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWEmJiFpLmNhbGwoezE6Mn0sMSk7dC5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSl7dmFyIHQ9YSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTppfSwyOTY3OihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSgzNCkscz1pKDc3NTApLG49aSgzNTA2KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxpPXt9O3RyeXsoZT1hKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShpLFtdKTt0PWkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKGksYSl7cyhpKTtuKGEpO2lmKCFyKGkpKXJldHVybiBpO3Q/ZShpLGEpOmkuX19wcm90b19fPWE7cmV0dXJuIGl9fSgpOnZvaWQgMCl9LDQyNzA6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDQ5MDEpLHM9aSgzNCksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksbztpZigic3RyaW5nIj09PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO2lmKHIoaT1lLnZhbHVlT2YpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZyKGk9ZS50b1N0cmluZykmJiFzKG89YShpLGUpKSlyZXR1cm4gbzt0aHJvdyBuZXcgbigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw1MDMxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg5NTA0KSxzPWkoODQ4MCksbj1pKDM3MTcpLG89aSg4NTUxKSxnPXIoW10uY29uY2F0KTtlLmV4cG9ydHM9YSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1zLmYobyhlKSksaT1uLmY7cmV0dXJuIGk/Zyh0LGkoZSkpOnR9fSwxMTAzOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKGUpe3JldHVybntlcnJvcjohMCx2YWx1ZTplfX19fSw3OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWEodGhpcyksdD0iIjtlLmhhc0luZGljZXMmJih0Kz0iZCIpO2UuZ2xvYmFsJiYodCs9ImciKTtlLmlnbm9yZUNhc2UmJih0Kz0iaSIpO2UubXVsdGlsaW5lJiYodCs9Im0iKTtlLmRvdEFsbCYmKHQrPSJzIik7ZS51bmljb2RlJiYodCs9InUiKTtlLnVuaWNvZGVTZXRzJiYodCs9InYiKTtlLnN0aWNreSYmKHQrPSJ5Iik7cmV0dXJuIHR9fSw3NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NjooZSx0LGkpPT57dmFyIGE9aSg0NDAyKSxyPWkoODQ2OSkscz1hLlNldCxuPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsKGZ1bmN0aW9uKGUpe24odCxlKX0pKTtyZXR1cm4gdH19LDM0NDA6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLHM9aSg5Mjg2KSxuPWkoNTE3MCksbz1pKDM3ODkpLGc9aSg4NDY5KSxjPWkoNTA3KSxsPXIuaGFzLGg9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxpPW8oZSkscj1zKHQpO24odCk8PWkuc2l6ZT9nKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmgocixlKX0pKTpjKGkuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7bCh0LGUpJiZoKHIsZSl9KSk7cmV0dXJuIHJ9fSw0NDAyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDUxNzApLG49aSgzNzg5KSxvPWkoODQ2OSksZz1pKDUwNyksYz1yLlNldCxsPXIuYWRkLGg9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKSxyPW5ldyBjO3ModCk+aS5zaXplP2coaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtoKHQsZSkmJmwocixlKX0pKTpvKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmwocixlKX0pKTtyZXR1cm4gcn19LDQ0NDk6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8PWkuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgbD1pLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1nKGwsKGZ1bmN0aW9uKGUpe2lmKHIodCxlKSlyZXR1cm4gYyhsLCJub3JtYWwiLCExKX0pKX19LDM4Mzg6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDUxNzApLHM9aSg4NDY5KSxuPWkoMzc4OSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7cmV0dXJuIShyKHQpPmkuc2l6ZSkmJiExIT09cyh0LChmdW5jdGlvbihlKXtpZighaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LDg1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg1MDcpLGc9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8aS5zaXplKXJldHVybiExO3ZhciBjPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8oYywoZnVuY3Rpb24oZSl7aWYoIXIodCxlKSlyZXR1cm4gZyhjLCJub3JtYWwiLCExKX0pKX19LDg0Njk6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDUwNykscz1pKDQ0MDIpLG49cy5TZXQsbz1zLnByb3RvLGc9YShvLmZvckVhY2gpLGM9YShvLmtleXMpLGw9YyhuZXcgbikubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpP3Ioe2l0ZXJhdG9yOmMoZSksbmV4dDpsfSx0KTpnKGUsdCl9fSw0OTE2OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoIlNldCIpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19Y2F0Y2goZSl7cmV0dXJuITF9fX0sNTE3MDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDQwMik7ZS5leHBvcnRzPWEoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sMzY1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KSxnPXIuYWRkLGM9ci5oYXMsbD1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9bihlKS5nZXRJdGVyYXRvcigpLHI9cyh0KTtvKGksKGZ1bmN0aW9uKGUpe2ModCxlKT9sKHIsZSk6ZyhyLGUpfSkpO3JldHVybiByfX0sNDIwNDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuYWRkLHM9aSg5Mjg2KSxuPWkoMzc4OSksbz1pKDUwNyk7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCksZz1zKHQpO28oaSwoZnVuY3Rpb24oZSl7cihnLGUpfSkpO3JldHVybiBnfX0sNjExOTooZSx0LGkpPT57dmFyIGE9aSg1NzQ1KSxyPWkoMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNjM5NSkscj1pKDQ1NzYpLHM9aSg5NDMzKSxuPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbbl18fHMobix7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy4zOS4wIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM5LjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNTc0NTooZSx0LGkpPT57dmFyIGE9aSg3NjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVtlXXx8KGFbZV09dHx8e30pfX0sMTU0ODooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoOTAzOSkscz1pKDk1MTkpLG49aSg0MjE1KSxvPWEuc3RydWN0dXJlZENsb25lO2UuZXhwb3J0cz0hIW8mJiFyKChmdW5jdGlvbigpe2lmKCJERU5PIj09PW4mJnM+OTJ8fCJOT0RFIj09PW4mJnM+OTR8fCJCUk9XU0VSIj09PW4mJnM+OTcpcmV0dXJuITE7dmFyIGU9bmV3IEFycmF5QnVmZmVyKDgpLHQ9byhlLHt0cmFuc2ZlcjpbZV19KTtyZXR1cm4gMCE9PWUuYnl0ZUxlbmd0aHx8OCE9PXQuYnl0ZUxlbmd0aH0pKX0sNDQ5NTooZSx0LGkpPT57dmFyIGE9aSg5NTE5KSxyPWkoOTAzOSkscz1pKDQ1NzYpLlN0cmluZztlLmV4cG9ydHM9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhcigoZnVuY3Rpb24oKXt2YXIgZT1TeW1ib2woInN5bWJvbCBkZXRlY3Rpb24iKTtyZXR1cm4hcyhlKXx8IShPYmplY3QoZSlpbnN0YW5jZW9mIFN5bWJvbCl8fCFTeW1ib2wuc2hhbSYmYSYmYTw0MX0pKX0sNTYxMDooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPU1hdGgubWF4LHM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9YShlKTtyZXR1cm4gaTwwP3IoaSt0LDApOnMoaSx0KX19LDU4NTQ6KGUsdCxpKT0+e3ZhciBhPWkoMjc3Nykscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwibnVtYmVyIik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyByKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sNzY5NjooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPWkoODAxNCkscz1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PWEoZSksaT1yKHQpO2lmKHQhPT1pKXRocm93IG5ldyBzKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gaX19LDUzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzA1NSkscj1pKDc3NTApO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShyKGUpKX19LDEyOTE6KGUsdCxpKT0+e3ZhciBhPWkoNzQxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6YSh0KX19LDgwMTQ6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4gdD4wP3IodCw5MDA3MTk5MjU0NzQwOTkxKTowfX0sODk4MTooZSx0LGkpPT57dmFyIGE9aSg3NzUwKSxyPU9iamVjdDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIoYShlKSl9fSwyNzc3OihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgzNCkscz1pKDc1Nyksbj1pKDU5NjYpLG89aSg0MjcwKSxnPWkoODIyNyksYz1UeXBlRXJyb3IsbD1nKCJ0b1ByaW1pdGl2ZSIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCFyKGUpfHxzKGUpKXJldHVybiBlO3ZhciBpLGc9bihlLGwpO2lmKGcpe3ZvaWQgMD09PXQmJih0PSJkZWZhdWx0Iik7aT1hKGcsZSx0KTtpZighcihpKXx8cyhpKSlyZXR1cm4gaTt0aHJvdyBuZXcgYygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9dm9pZCAwPT09dCYmKHQ9Im51bWJlciIpO3JldHVybiBvKGUsdCl9fSw2OTY5OihlLHQsaSk9Pnt2YXIgYT1pKDI3NzcpLHI9aSg3NTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUsInN0cmluZyIpO3JldHVybiByKHQpP3Q6dCsiIn19LDIxNDA6KGUsdCxpKT0+e3ZhciBhPXt9O2FbaSg4MjI3KSgidG9TdHJpbmdUYWciKV09InoiO2UuZXhwb3J0cz0iW29iamVjdCB6XSI9PT1TdHJpbmcoYSl9LDY1NTooZSx0LGkpPT57dmFyIGE9aSg2OTU1KSxyPVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIlN5bWJvbCI9PT1hKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIHIoZSl9fSw2ODIzOmU9Pnt2YXIgdD1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdChlKX1jYXRjaChlKXtyZXR1cm4iT2JqZWN0In19fSwzMzkyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9MCxzPU1hdGgucmFuZG9tKCksbj1hKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiKyh2b2lkIDA9PT1lPyIiOmUpKyIpXyIrbigrK3IrcywzNil9fSw3MDQwOihlLHQsaSk9Pnt2YXIgYT1pKDQ0OTUpO2UuZXhwb3J0cz1hJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSw4Njg2OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg5MDM5KTtlLmV4cG9ydHM9YSYmcigoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSwyODEyOmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7aWYoZTxpKXRocm93IG5ldyB0KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiBlfX0sODYyMjooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNDkwMSkscz1hLldlYWtNYXA7ZS5leHBvcnRzPXIocykmJi9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcocykpfSw4MjI3OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg1NzQ1KSxzPWkoOTI5Nyksbj1pKDMzOTIpLG89aSg0NDk1KSxnPWkoNzA0MCksYz1hLlN5bWJvbCxsPXIoIndrcyIpLGg9Zz9jLmZvcnx8YzpjJiZjLndpdGhvdXRTZXR0ZXJ8fG47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3MobCxlKXx8KGxbZV09byYmcyhjLGUpP2NbZV06aCgiU3ltYm9sLiIrZSkpO3JldHVybiBsW2VdfX0sNjU3MzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoMjEwNikscz1pKDMyMzgpLG49QXJyYXlCdWZmZXIucHJvdG90eXBlO2EmJiEoImRldGFjaGVkImluIG4pJiZyKG4sImRldGFjaGVkIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbiBkZXRhY2hlZCgpe3JldHVybiBzKHRoaXMpfX0pfSw3OTM2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg1NjM2KTtyJiZhKHt0YXJnZXQ6IkFycmF5QnVmZmVyIixwcm90bzohMH0se3RyYW5zZmVyVG9GaXhlZExlbmd0aDpmdW5jdGlvbiB0cmFuc2ZlclRvRml4ZWRMZW5ndGgoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMSl9fSl9LDgxMDA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXI6ZnVuY3Rpb24gdHJhbnNmZXIoKXtyZXR1cm4gcih0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMCl9fSl9LDQxMTQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg5ODEpLHM9aSg2MTk4KSxuPWkoNDUyNyksbz1pKDY4MzcpO2Eoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGFyaXR5OjEsZm9yY2VkOmkoOTAzOSkoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2fSwxKX0pKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5wdXNoKCl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7cHVzaDpmdW5jdGlvbiBwdXNoKGUpe3ZhciB0PXIodGhpcyksaT1zKHQpLGE9YXJndW1lbnRzLmxlbmd0aDtvKGkrYSk7Zm9yKHZhciBnPTA7ZzxhO2crKyl7dFtpXT1hcmd1bWVudHNbZ107aSsrfW4odCxpKTtyZXR1cm4gaX19KX0sODExMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDY3OSksbj1pKDg1NTEpLG89aSg0OTAxKSxnPWkoMjc4NyksYz1pKDIxMDYpLGw9aSg0NjU5KSxoPWkoOTAzOSksQz1pKDkyOTcpLFE9aSg4MjI3KSxFPWkoNzY1NykuSXRlcmF0b3JQcm90b3R5cGUsdT1pKDM3MjQpLGQ9aSg2Mzk1KSxmPSJjb25zdHJ1Y3RvciIscD0iSXRlcmF0b3IiLG09USgidG9TdHJpbmdUYWciKSx5PVR5cGVFcnJvcix3PXJbcF0sYj1kfHwhbyh3KXx8dy5wcm90b3R5cGUhPT1FfHwhaCgoZnVuY3Rpb24oKXt3KHt9KX0pKSxEPWZ1bmN0aW9uIEl0ZXJhdG9yKCl7cyh0aGlzLEUpO2lmKGcodGhpcyk9PT1FKXRocm93IG5ldyB5KCJBYnN0cmFjdCBjbGFzcyBJdGVyYXRvciBub3QgZGlyZWN0bHkgY29uc3RydWN0YWJsZSIpfSxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yPWZ1bmN0aW9uKGUsdCl7dT9jKEUsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24odCl7bih0aGlzKTtpZih0aGlzPT09RSl0aHJvdyBuZXcgeSgiWW91IGNhbid0IHJlZGVmaW5lIHRoaXMgcHJvcGVydHkiKTtDKHRoaXMsZSk/dGhpc1tlXT10OmwodGhpcyxlLHQpfX0pOkVbZV09dH07QyhFLG0pfHxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yKG0scCk7IWImJkMoRSxmKSYmRVtmXSE9PU9iamVjdHx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihmLEQpO0QucHJvdG90eXBlPUU7YSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpifSx7SXRlcmF0b3I6RH0pfSwxMTQ4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZXZlcnk6ZnVuY3Rpb24gZXZlcnkoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiFyKHQsKGZ1bmN0aW9uKHQsYSl7aWYoIWUodCxpKyspKXJldHVybiBhKCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sMjQ4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoOTU2NSkscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1pKDk0NjIpLGM9aSg2MzE5KSxsPWkoNjM5NSksaD1nKChmdW5jdGlvbigpe2Zvcih2YXIgZSx0LGk9dGhpcy5pdGVyYXRvcixhPXRoaXMucHJlZGljYXRlLHM9dGhpcy5uZXh0Ozspe2U9bihyKHMsaSkpO2lmKHRoaXMuZG9uZT0hIWUuZG9uZSlyZXR1cm47dD1lLnZhbHVlO2lmKGMoaSxhLFt0LHRoaXMuY291bnRlcisrXSwhMCkpcmV0dXJuIHR9fSkpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmx9LHtmaWx0ZXI6ZnVuY3Rpb24gZmlsdGVyKGUpe24odGhpcyk7cyhlKTtyZXR1cm4gbmV3IGgobyh0aGlzKSx7cHJlZGljYXRlOmV9KX19KX0sMTE2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7ZmluZDpmdW5jdGlvbiBmaW5kKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4gcih0LChmdW5jdGlvbih0LGEpe2lmKGUodCxpKyspKXJldHVybiBhKHQpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnJlc3VsdH19KX0sNzU4ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2ZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaChlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cih0LChmdW5jdGlvbih0KXtlKHQsaSsrKX0pLHtJU19SRUNPUkQ6ITB9KX19KX0sMTcwMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNzEzKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDppKDYzOTUpfSx7bWFwOnJ9KX0sODIzNzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2NyksZz1UeXBlRXJyb3I7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3JlZHVjZTpmdW5jdGlvbiByZWR1Y2UoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT1hcmd1bWVudHMubGVuZ3RoPDIsYT1pP3ZvaWQgMDphcmd1bWVudHNbMV0sYz0wO3IodCwoZnVuY3Rpb24odCl7aWYoaSl7aT0hMTthPXR9ZWxzZSBhPWUoYSx0LGMpO2MrK30pLHtJU19SRUNPUkQ6ITB9KTtpZihpKXRocm93IG5ldyBnKCJSZWR1Y2Ugb2YgZW1wdHkgaXRlcmF0b3Igd2l0aCBubyBpbml0aWFsIHZhbHVlIik7cmV0dXJuIGF9fSl9LDM1Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtzb21lOmZ1bmN0aW9uIHNvbWUoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEoKX0pLHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5zdG9wcGVkfX0pfSwxODA2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTUxKSxzPWkoMjY1Miksbj1pKDE3NjcpLG89W10ucHVzaDthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7dG9BcnJheTpmdW5jdGlvbiB0b0FycmF5KCl7dmFyIGU9W107cyhuKHIodGhpcykpLG8se3RoYXQ6ZSxJU19SRUNPUkQ6ITB9KTtyZXR1cm4gZX19KX0sMTY4OTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDg3NDUpLG49aSg3NjgwKSxvPWkoNjA0MyksZz1pKDkzMDYpLGM9aSgxMTAzKSxsPXIuUHJvbWlzZSxoPSExO2Eoe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6IWx8fCFsLnRyeXx8YygoZnVuY3Rpb24oKXtsLnRyeSgoZnVuY3Rpb24oZSl7aD04PT09ZX0pLDgpfSkpLmVycm9yfHwhaH0se3RyeTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjE/bihhcmd1bWVudHMsMSk6W10saT1vLmYodGhpcyksYT1jKChmdW5jdGlvbigpe3JldHVybiBzKGcoZSksdm9pZCAwLHQpfSkpOyhhLmVycm9yP2kucmVqZWN0OmkucmVzb2x2ZSkoYS52YWx1ZSk7cmV0dXJuIGkucHJvbWlzZX19KX0sNDYyODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNjA0Myk7YSh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwfSx7d2l0aFJlc29sdmVyczpmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCl7dmFyIGU9ci5mKHRoaXMpO3JldHVybntwcm9taXNlOmUucHJvbWlzZSxyZXNvbHZlOmUucmVzb2x2ZSxyZWplY3Q6ZS5yZWplY3R9fX0pfSw5NDc5OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSgzNzI0KSxzPWkoMjEwNiksbj1pKDc5NzkpLG89aSg5MDM5KSxnPWEuUmVnRXhwLGM9Zy5wcm90b3R5cGU7ciYmbygoZnVuY3Rpb24oKXt2YXIgZT0hMDt0cnl7ZygiLiIsImQiKX1jYXRjaCh0KXtlPSExfXZhciB0PXt9LGk9IiIsYT1lPyJkZ2ltc3kiOiJnaW1zeSIsYWRkR2V0dGVyPWZ1bmN0aW9uKGUsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OmZ1bmN0aW9uKCl7aSs9YTtyZXR1cm4hMH19KX0scj17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07ZSYmKHIuaGFzSW5kaWNlcz0iZCIpO2Zvcih2YXIgcyBpbiByKWFkZEdldHRlcihzLHJbc10pO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGMsImZsYWdzIikuZ2V0LmNhbGwodCkhPT1hfHxpIT09YX0pKSYmcyhjLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6bn0pfSw3NjQyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNDQwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImRpZmZlcmVuY2UiKX0se2RpZmZlcmVuY2U6cn0pfSw4MDA0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg5MDM5KSxzPWkoODc1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpbnRlcnNlY3Rpb24iKXx8cigoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9PVN0cmluZyhBcnJheS5mcm9tKG5ldyBTZXQoWzEsMiwzXSkuaW50ZXJzZWN0aW9uKG5ldyBTZXQoWzMsMl0pKSkpfSkpfSx7aW50ZXJzZWN0aW9uOnN9KX0sMzg1MzooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDQ0OSk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJpc0Rpc2pvaW50RnJvbSIpfSx7aXNEaXNqb2ludEZyb206cn0pfSw1ODc2OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzODM4KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3Vic2V0T2YiKX0se2lzU3Vic2V0T2Y6cn0pfSwyNDc1OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg4NTI3KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzU3VwZXJzZXRPZiIpfSx7aXNTdXBlcnNldE9mOnJ9KX0sNTAyNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMzY1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJzeW1tZXRyaWNEaWZmZXJlbmNlIil9LHtzeW1tZXRyaWNEaWZmZXJlbmNlOnJ9KX0sMTY5ODooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDIwNCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFpKDQ5MTYpKCJ1bmlvbiIpfSx7dW5pb246cn0pfSw3NDY3OihlLHQsaSk9Pnt2YXIgYT1pKDc2MjgpLHI9aSg0NjQ0KSxzPXIuYVR5cGVkQXJyYXksbj1yLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Qsbz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtuKCJ0b1JldmVyc2VkIiwoZnVuY3Rpb24gdG9SZXZlcnNlZCgpe3JldHVybiBhKHModGhpcyksbyh0aGlzKSl9KSl9LDQ3MzI6KGUsdCxpKT0+e3ZhciBhPWkoNDY0NCkscj1pKDk1MDQpLHM9aSg5MzA2KSxuPWkoNTM3MCksbz1hLmFUeXBlZEFycmF5LGc9YS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsYz1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsbD1yKGEuVHlwZWRBcnJheVByb3RvdHlwZS5zb3J0KTtjKCJ0b1NvcnRlZCIsKGZ1bmN0aW9uIHRvU29ydGVkKGUpe3ZvaWQgMCE9PWUmJnMoZSk7dmFyIHQ9byh0aGlzKSxpPW4oZyh0KSx0KTtyZXR1cm4gbChpLGUpfSkpfSw5NTc3OihlLHQsaSk9Pnt2YXIgYT1pKDk5MjgpLHI9aSg0NjQ0KSxzPWkoMTEwOCksbj1pKDEyOTEpLG89aSg1ODU0KSxnPXIuYVR5cGVkQXJyYXksYz1yLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixsPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxoPSEhZnVuY3Rpb24oKXt0cnl7bmV3IEludDhBcnJheSgxKS53aXRoKDIse3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyA4fX0pfWNhdGNoKGUpe3JldHVybiA4PT09ZX19KCk7bCgid2l0aCIse3dpdGg6ZnVuY3Rpb24oZSx0KXt2YXIgaT1nKHRoaXMpLHI9bihlKSxsPXMoaSk/byh0KTordDtyZXR1cm4gYShpLGMoaSkscixsKX19LndpdGgsIWgpfSw4OTkyOihlLHQsaSk9PntpKDgxMTEpfSwzMjE1OihlLHQsaSk9PntpKDExNDgpfSw0NTIwOihlLHQsaSk9PntpKDI0ODkpfSwyNTc3OihlLHQsaSk9PntpKDExNil9LDM5NDk6KGUsdCxpKT0+e2koNzU4OCl9LDE0NTQ6KGUsdCxpKT0+e2koMTcwMSl9LDg4NzI6KGUsdCxpKT0+e2koODIzNyl9LDc1NTA6KGUsdCxpKT0+e2koMzU3OSl9LDE3OTU6KGUsdCxpKT0+e2koMTgwNil9LDUyNDc6KGUsdCxpKT0+e2koMTY4OSl9LDQ5Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ1NzYpLHM9aSg3NzUxKSxuPWkoNjk4MCksbz1pKDQ5MTMpLmYsZz1pKDkyOTcpLGM9aSg2NzkpLGw9aSgzMTY3KSxoPWkoMjYwMyksQz1pKDUwMDIpLFE9aSg4NTc0KSxFPWkoMzcyNCksdT1pKDYzOTUpLGQ9IkRPTUV4Y2VwdGlvbiIsZj1zKCJFcnJvciIpLHA9cyhkKSxtPWZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpe2ModGhpcyx5KTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9aChlPDE/dm9pZCAwOmFyZ3VtZW50c1swXSksaT1oKGU8Mj92b2lkIDA6YXJndW1lbnRzWzFdLCJFcnJvciIpLGE9bmV3IHAodCxpKSxyPW5ldyBmKHQpO3IubmFtZT1kO28oYSwic3RhY2siLG4oMSxRKHIuc3RhY2ssMSkpKTtsKGEsdGhpcyxtKTtyZXR1cm4gYX0seT1tLnByb3RvdHlwZT1wLnByb3RvdHlwZSx3PSJzdGFjayJpbiBuZXcgZihkKSxiPSJzdGFjayJpbiBuZXcgcCgxLDIpLEQ9cCYmRSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGQpLFM9ISghRHx8RC53cml0YWJsZSYmRC5jb25maWd1cmFibGUpLGs9dyYmIVMmJiFiO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6dXx8a30se0RPTUV4Y2VwdGlvbjprP206cH0pO3ZhciBSPXMoZCksTj1SLnByb3RvdHlwZTtpZihOLmNvbnN0cnVjdG9yIT09Uil7dXx8byhOLCJjb25zdHJ1Y3RvciIsbigxLFIpKTtmb3IodmFyIEcgaW4gQylpZihnKEMsRykpe3ZhciBNPUNbR10sVT1NLnM7ZyhSLFUpfHxvKFIsVSxuKDYsTS5jKSl9fX0sMzYxMTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNDU3Nikscz1pKDIxMDYpLG49aSgzNzI0KSxvPVR5cGVFcnJvcixnPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPXIuc2VsZiE9PXI7dHJ5e2lmKG4pe3ZhciBsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iociwic2VsZiIpOyFjJiZsJiZsLmdldCYmbC5lbnVtZXJhYmxlfHxzKHIsInNlbGYiLHtnZXQ6ZnVuY3Rpb24gc2VsZigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24gc2VsZihlKXtpZih0aGlzIT09cil0aHJvdyBuZXcgbygiSWxsZWdhbCBpbnZvY2F0aW9uIik7ZyhyLCJzZWxmIix7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfWVsc2UgYSh7Z2xvYmFsOiEwLHNpbXBsZTohMCxmb3JjZWQ6Y30se3NlbGY6cn0pfWNhdGNoKGUpe319LDQ2MDM6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmFwcGVuZCksbD1yKGcuZGVsZXRlKSxoPXIoZy5mb3JFYWNoKSxDPXIoW10ucHVzaCksUT1uZXcgbygiYT0xJmE9MiZiPTMiKTtRLmRlbGV0ZSgiYSIsMSk7US5kZWxldGUoImIiLHZvaWQgMCk7USsiIiE9ImE9MiImJmEoZywiZGVsZXRlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIGwodGhpcyxlKTt2YXIgYT1bXTtoKHRoaXMsKGZ1bmN0aW9uKGUsdCl7QyhhLHtrZXk6dCx2YWx1ZTplfSl9KSk7bih0LDEpO2Zvcih2YXIgcixvPXMoZSksZz1zKGkpLFE9MCxFPTAsdT0hMSxkPWEubGVuZ3RoO1E8ZDspe3I9YVtRKytdO2lmKHV8fHIua2V5PT09byl7dT0hMDtsKHRoaXMsci5rZXkpfWVsc2UgRSsrfWZvcig7RTxkOykocj1hW0UrK10pLmtleT09PW8mJnIudmFsdWU9PT1nfHxjKHRoaXMsci5rZXksci52YWx1ZSl9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sNzU2NjooZSx0LGkpPT57dmFyIGE9aSg2ODQwKSxyPWkoOTUwNCkscz1pKDY1NSksbj1pKDI4MTIpLG89VVJMU2VhcmNoUGFyYW1zLGc9by5wcm90b3R5cGUsYz1yKGcuZ2V0QWxsKSxsPXIoZy5oYXMpLGg9bmV3IG8oImE9MSIpOyFoLmhhcygiYSIsMikmJmguaGFzKCJhIix2b2lkIDApfHxhKGcsImhhcyIsKGZ1bmN0aW9uIGhhcyhlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGk9dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09aSlyZXR1cm4gbCh0aGlzLGUpO3ZhciBhPWModGhpcyxlKTtuKHQsMSk7Zm9yKHZhciByPXMoaSksbz0wO288YS5sZW5ndGg7KWlmKGFbbysrXT09PXIpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sODcyMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTUwNCkscz1pKDIxMDYpLG49VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxvPXIobi5mb3JFYWNoKTthJiYhKCJzaXplImluIG4pJiZzKG4sInNpemUiLHtnZXQ6ZnVuY3Rpb24gc2l6ZSgpe3ZhciBlPTA7byh0aGlzLChmdW5jdGlvbigpe2UrK30pKTtyZXR1cm4gZX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX19LHQ9e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhpKXt2YXIgYT10W2ldO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuZXhwb3J0czt2YXIgcj10W2ldPXtleHBvcnRzOnt9fTtlW2ldLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pO3JldHVybiByLmV4cG9ydHN9X193ZWJwYWNrX3JlcXVpcmVfXy5kPShlLHQpPT57Zm9yKHZhciBpIGluIHQpX193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsaSkmJiFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZSxpKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7ZW51bWVyYWJsZTohMCxnZXQ6dFtpXX0pfTtfX3dlYnBhY2tfcmVxdWlyZV9fLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpO3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gZ2xvYmFsVGhpcy5wZGZqc1dvcmtlciA9IHt9O19fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLHtXb3JrZXJNZXNzYWdlSGFuZGxlcjooKT0+V29ya2VyTWVzc2FnZUhhbmRsZXJ9KTtfX3dlYnBhY2tfcmVxdWlyZV9fKDQxMTQpLF9fd2VicGFja19yZXF1aXJlX18oNjU3MyksX193ZWJwYWNrX3JlcXVpcmVfXyg4MTAwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc5MzYpLF9fd2VicGFja19yZXF1aXJlX18oNDYyOCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NjQyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMDQpLF9fd2VicGFja19yZXF1aXJlX18oMzg1MyksX193ZWJwYWNrX3JlcXVpcmVfXyg1ODc2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NzUpLF9fd2VicGFja19yZXF1aXJlX18oNTAyNCksX193ZWJwYWNrX3JlcXVpcmVfXygxNjk4KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDc0NjcpLF9fd2VicGFja19yZXF1aXJlX18oNDczMiksX193ZWJwYWNrX3JlcXVpcmVfXyg5NTc3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg5OTIpLF9fd2VicGFja19yZXF1aXJlX18oMTQ1NCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTUwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNTI0NyksX193ZWJwYWNrX3JlcXVpcmVfXyg0OTc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MDMpLF9fd2VicGFja19yZXF1aXJlX18oNzU2NiksX193ZWJwYWNrX3JlcXVpcmVfXyg4NzIxKTtjb25zdCBpPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSxhPVsxLDAsMCwxLDAsMF0scj1bLjAwMSwwLDAsLjAwMSwwLDBdLHM9MS4zNSxuPS4zNSxvPS4yNTkyNTkyNTkyNTkyNTkyNCxnPTEsYz0yLGw9NCxoPTgsQz0xNixRPTY0LEU9MTI4LHU9MjU2LGQ9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iLGY9MyxwPTksbT0xMyx5PTE1LHc9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH0sYj0wLEQ9NCxTPTEsaz0yLFI9MyxOPTEsRz0yLE09MyxVPTQseD01LEw9NixIPTcsSj04LHY9OSxZPTEwLEs9MTEsVD0xMixxPTEzLE89MTQsVz0xNSxqPTE2LFg9MTcsVj0yMCxaPSJHcm91cCIsXz0iUiIsej0xLCQ9MixBQT00LGVBPTE2LHRBPTMyLGlBPTEyOCxhQT01MTIsckE9MSxzQT0yLG5BPTQwOTYsb0E9ODE5MixnQT0zMjc2OCxJQT02NTUzNixjQT0xMzEwNzIsbEE9MTA0ODU3NixoQT0yMDk3MTUyLENBPTgzODg2MDgsQkE9MTY3NzcyMTYsUUE9MSxFQT0yLHVBPTMsZEE9NCxmQT01LHBBPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSxtQT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0seUE9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSx3QT0xLGJBPTUsREE9MSxGQT0yLFNBPTMsa0E9NCxSQT01LE5BPTYsR0E9NyxNQT04LFVBPTkseEE9MTAsTEE9MTEsSEE9MTIsSkE9MTMsdkE9MTQsWUE9MTUsS0E9MTYsVEE9MTcscUE9MTgsT0E9MTksUEE9MjAsV0E9MjEsakE9MjIsWEE9MjMsVkE9MjQsWkE9MjUsX0E9MjYsekE9MjcsJEE9MjgsQWU9MjksZWU9MzAsdGU9MzEsaWU9MzIsYWU9MzMscmU9MzQsc2U9MzUsbmU9MzYsb2U9MzcsZ2U9MzgsSWU9MzksY2U9NDAsbGU9NDEsaGU9NDIsQ2U9NDMsQmU9NDQsUWU9NDUsRWU9NDYsdWU9NDcsZGU9NDgsZmU9NDkscGU9NTAsbWU9NTEseWU9NTIsd2U9NTMsYmU9NTQsRGU9NTUsRmU9NTYsU2U9NTcsa2U9NTgsUmU9NTksTmU9NjAsR2U9NjEsTWU9NjIsVWU9NjMseGU9NjQsTGU9NjUsSGU9NjYsSmU9NjcsdmU9NjgsWWU9NjksS2U9NzAsVGU9NzEscWU9NzIsT2U9NzMsUGU9NzQsV2U9NzUsamU9NzYsWGU9NzcsVmU9ODAsWmU9ODEsX2U9ODMsemU9ODQsJGU9ODUsQXQ9ODYsZXQ9ODcsdHQ9ODgsaXQ9ODksYXQ9OTAscnQ9OTEsc3Q9OTIsbnQ9OTMsb3Q9MSxndD0yO2xldCBJdD13QTtmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBJdH1mdW5jdGlvbiBpbmZvKGUpe0l0Pj1iQSYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe0l0Pj13QSYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxpPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihpJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGkuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGkudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IGE9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKSlyZXR1cm4gYX1jYXRjaHt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxpLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gaX1jb25zdCBjdD1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLm5hbWU9dH1CYXNlRXhjZXB0aW9uLnByb3RvdHlwZT1uZXcgRXJyb3I7QmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3Rvcj1CYXNlRXhjZXB0aW9uO3JldHVybiBCYXNlRXhjZXB0aW9ufSgpO2NsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX1jbGFzcyBJbnZhbGlkUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiTWlzc2luZ1BERkV4Y2VwdGlvbiIpfX1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIpO3RoaXMuc3RhdHVzPXR9fWNsYXNzIEZvcm1hdEVycm9yIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT04MTkyO2lmKHQ8aSlyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IGE9W107Zm9yKGxldCByPTA7cjx0O3IrPWkpe2NvbnN0IHM9TWF0aC5taW4ocitpLHQpLG49ZS5zdWJhcnJheShyLHMpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7KythKWlbYV09MjU1JmUuY2hhckNvZGVBdChhKTtyZXR1cm4gaX1mdW5jdGlvbiBzdHJpbmczMihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfXN0YXRpYyBnZXQgaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGVjb2Rlcil9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcj8ucGxhdGZvcm0/c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJXaW4iKSxpc0ZpcmVmb3g6InN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3I/LnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygiRmlyZWZveCIpfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6ITEsaXNXaW5kb3dzOiExLGlzRmlyZWZveDohMX0pfXN0YXRpYyBnZXQgaXNDU1NSb3VuZFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNDU1NSb3VuZFN1cHBvcnRlZCIsZ2xvYmFsVGhpcy5DU1M/LnN1cHBvcnRzPy4oIndpZHRoOiByb3VuZCgxLjVweCwgMXB4KSIpKX19Y29uc3QgbHQ9QXJyYXkuZnJvbShBcnJheSgyNTYpLmtleXMoKSwoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxpKXtyZXR1cm5gIyR7bHRbZV19JHtsdFt0XX0ke2x0W2ldfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGk7aWYoZVswXSl7aWYoZVswXTwwKXtpPXRbMF07dFswXT10WzJdO3RbMl09aX10WzBdKj1lWzBdO3RbMl0qPWVbMF07aWYoZVszXTwwKXtpPXRbMV07dFsxXT10WzNdO3RbM109aX10WzFdKj1lWzNdO3RbM10qPWVbM119ZWxzZXtpPXRbMF07dFswXT10WzFdO3RbMV09aTtpPXRbMl07dFsyXT10WzNdO3RbM109aTtpZihlWzFdPDApe2k9dFsxXTt0WzFdPXRbM107dFszXT1pfXRbMV0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2k9dFswXTt0WzBdPXRbMl07dFsyXT1pfXRbMF0qPWVbMl07dFsyXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNV07dFsyXSs9ZVs0XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGk9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvaSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvaV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgaT10aGlzLmFwcGx5VHJhbnNmb3JtKGUsdCksYT10aGlzLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxyPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCkscz10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1pbihpWzFdLGFbMV0sclsxXSxzWzFdKSxNYXRoLm1heChpWzBdLGFbMF0sclswXSxzWzBdKSxNYXRoLm1heChpWzFdLGFbMV0sclsxXSxzWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGk9ZVswXSp0WzBdK2VbMV0qdFsyXSxhPWVbMF0qdFsxXStlWzFdKnRbM10scj1lWzJdKnRbMF0rZVszXSp0WzJdLHM9ZVsyXSp0WzFdK2VbM10qdFszXSxuPShpK3MpLzIsbz1NYXRoLnNxcnQoKGkrcykqKjItNCooaSpzLXIqYSkpLzIsZz1uK298fDEsYz1uLW98fDE7cmV0dXJuW01hdGguc3FydChnKSxNYXRoLnNxcnQoYyldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBpPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSksYT1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGk+YSlyZXR1cm4gbnVsbDtjb25zdCByPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSkscz1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiByPnM/bnVsbDpbaSxyLGEsc119c3RhdGljI0EoZSx0LGksYSxyLHMsbixvLGcsYyl7aWYoZzw9MHx8Zz49MSlyZXR1cm47Y29uc3QgbD0xLWcsaD1nKmcsQz1oKmcsUT1sKihsKihsKmUrMypnKnQpKzMqaCppKStDKmEsRT1sKihsKihsKnIrMypnKnMpKzMqaCpuKStDKm87Y1swXT1NYXRoLm1pbihjWzBdLFEpO2NbMV09TWF0aC5taW4oY1sxXSxFKTtjWzJdPU1hdGgubWF4KGNbMl0sUSk7Y1szXT1NYXRoLm1heChjWzNdLEUpfXN0YXRpYyNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihNYXRoLmFicyhnKTwxZS0xMil7TWF0aC5hYnMoYyk+PTFlLTEyJiZ0aGlzLiNBKGUsdCxpLGEscixzLG4sbywtbC9jLGgpO3JldHVybn1jb25zdCBDPWMqKjItNCpsKmc7aWYoQzwwKXJldHVybjtjb25zdCBRPU1hdGguc3FydChDKSxFPTIqZzt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMrUSkvRSxoKTt0aGlzLiNBKGUsdCxpLGEscixzLG4sbywoLWMtUSkvRSxoKX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LGksYSxyLHMsbixvLGcpe2lmKGcpe2dbMF09TWF0aC5taW4oZ1swXSxlLG4pO2dbMV09TWF0aC5taW4oZ1sxXSx0LG8pO2dbMl09TWF0aC5tYXgoZ1syXSxlLG4pO2dbM109TWF0aC5tYXgoZ1szXSx0LG8pfWVsc2UgZz1bTWF0aC5taW4oZSxuKSxNYXRoLm1pbih0LG8pLE1hdGgubWF4KGUsbiksTWF0aC5tYXgodCxvKV07dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooaS1yKS1lK24pLDYqKGUtMippK3IpLDMqKGktZSksZyk7dGhpcy4jZShlLGkscixuLHQsYSxzLG8sMyooMyooYS1zKS10K28pLDYqKHQtMiphK3MpLDMqKGEtdCksZyk7cmV0dXJuIGd9fWNvbnN0IGh0PVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyhlKXtpZihlWzBdPj0iw68iKXtsZXQgdDtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0pe3Q9InV0Zi0xNmJlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIGlmKCLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXSl7dD0idXRmLTE2bGUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2Uiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBpPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLGE9c3RyaW5nVG9CeXRlcyhlKSxyPWkuZGVjb2RlKGEpO3JldHVybiByLmluY2x1ZGVzKCIbIik/ci5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpOnJ9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGkpO2lmKDI3PT09cil7Zm9yKDsrK2k8YSYmMjchPT1lLmNoYXJDb2RlQXQoaSk7KTtjb250aW51ZX1jb25zdCBzPWh0W3JdO3QucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQoaSkpfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKWlmKGVbaV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7cmV0dXJuW2UuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLChlLmdldFVUQ01vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpXS5qb2luKCIiKX1sZXQgQ3Q9bnVsbCxCdD1udWxsO2Z1bmN0aW9uIHRvSGV4VXRpbChlKXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUudG9IZXg/ZS50b0hleCgpOkFycmF5LmZyb20oZSwoZT0+bHRbZV0pKS5qb2luKCIiKX1fX3dlYnBhY2tfcmVxdWlyZV9fKDMyMTUpO2NvbnN0IFF0PVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIiksRXQ9U3ltYm9sKCJFT0YiKTtsZXQgdXQ9T2JqZWN0LmNyZWF0ZShudWxsKSxkdD1PYmplY3QuY3JlYXRlKG51bGwpLGZ0PU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBkdFtlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiB1dFtlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IHB0PWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gcHR9O2NsYXNzIERpY3R7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9tYXA9bmV3IE1hcDt0aGlzLnhyZWY9ZTt0aGlzLm9iaklkPW51bGw7dGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITE7dGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPXB0fWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWFzeW5jIGdldEFzeW5jKGUsdCxpKXtsZXQgYT10aGlzLl9tYXAuZ2V0KGUpO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwLmdldCh0KTt2b2lkIDA9PT1hJiZ2b2lkIDAhPT1pJiYoYT10aGlzLl9tYXAuZ2V0KGkpKX1yZXR1cm4gYSBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaEFzeW5jKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOmF9Z2V0QXJyYXkoZSx0LGkpe2xldCBhPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcC5nZXQoaSkpfWEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKGE9dGhpcy54cmVmLmZldGNoKGEsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KGEpKXthPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXWluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhW2VdPXRoaXMueHJlZi5mZXRjaChhW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIGF9Z2V0UmF3KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfWdldEtleXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLmtleXMoKV19Z2V0UmF3VmFsdWVzKCl7cmV0dXJuWy4uLnRoaXMuX21hcC52YWx1ZXMoKV19c2V0KGUsdCl7dGhpcy5fbWFwLnNldChlLHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZS5fbWFwKXtsZXQgZT1yLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO3Iuc2V0KHQsZSl9ZWxzZSBpZighKGkmJmEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2goYSl9Zm9yKGNvbnN0W3QsaV1vZiByKXtpZigxPT09aS5sZW5ndGh8fCEoaVswXWluc3RhbmNlb2YgRGljdCkpe2EuX21hcC5zZXQodCxpWzBdKTtjb250aW51ZX1jb25zdCByPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBlLl9tYXApci5fbWFwLmhhcyh0KXx8ci5fbWFwLnNldCh0LGkpO3Iuc2l6ZT4wJiZhLl9tYXAuc2V0KHQscil9ci5jbGVhcigpO3JldHVybiBhLnNpemU+MD9hOkRpY3QuZW1wdHl9Y2xvbmUoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRLZXlzKCkpZS5zZXQodCx0aGlzLmdldFJhdyh0KSk7cmV0dXJuIGV9ZGVsZXRlKGUpe2RlbGV0ZSB0aGlzLl9tYXBbZV19fWNsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWZ0W2VdO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT0vXihcZCspUihcZCopJC8uZXhlYyhlKTtyZXR1cm4gaSYmIjAiIT09aVsxXT9mdFtlXT1uZXcgUmVmKHBhcnNlSW50KGlbMV0pLGlbMl0/cGFyc2VJbnQoaVsyXSk6MCk6bnVsbH1zdGF0aWMgZ2V0KGUsdCl7Y29uc3QgaT0wPT09dD9gJHtlfVJgOmAke2V9UiR7dH1gO3JldHVybiBmdFtpXXx8PW5ldyBSZWYoZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX21hcC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfSp2YWx1ZXMoKXt5aWVsZCp0aGlzLl9tYXAudmFsdWVzKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBhc3luY0dldEJ5dGVzYCBjYWxsZWQiKX1nZXQgaXNBc3luYygpe3JldHVybiExfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiExfWFzeW5jIGdldFRyYW5zZmVyYWJsZUltYWdlKCl7cmV0dXJuIG51bGx9cGVla0J5dGUoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpOy0xIT09ZSYmdGhpcy5wb3MtLTtyZXR1cm4gZX1wZWVrQnl0ZXMoZSl7Y29uc3QgdD10aGlzLmdldEJ5dGVzKGUpO3RoaXMucG9zLT10Lmxlbmd0aDtyZXR1cm4gdH1nZXRVaW50MTYoKXtjb25zdCBlPXRoaXMuZ2V0Qnl0ZSgpLHQ9dGhpcy5nZXRCeXRlKCk7cmV0dXJuLTE9PT1lfHwtMT09PXQ/LTE6KGU8PDgpK3R9Z2V0SW50MzIoKXtyZXR1cm4odGhpcy5nZXRCeXRlKCk8PDI0KSsodGhpcy5nZXRCeXRlKCk8PDE2KSsodGhpcy5nZXRCeXRlKCk8PDgpK3RoaXMuZ2V0Qnl0ZSgpfWdldEJ5dGVSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVSYW5nZWAgY2FsbGVkIil9Z2V0U3RyaW5nKGUpe3JldHVybiBieXRlc1RvU3RyaW5nKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fWNvbnN0IG10PS9eWzEtOV1cLlxkJC8seXQ9MioqMzEtMTtmdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaSs9ZVthXS5ieXRlTGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbaV0pO2Euc2V0KHQscik7cis9dC5ieXRlTGVuZ3RofXJldHVybiBhfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCByO2NvbnN0IHM9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFzLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZzLnB1dChlLm9iaklkKTtjb25zdCBuPWk/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1uKXtpZihhKXJldHVybiBuOyhyfHw9W10pLnB1c2gobil9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHJ9Y29uc3Qgd3Q9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgaT0iTSIucmVwZWF0KGUvMWUzfDApK3d0W2UlMWUzLzEwMHwwXSt3dFsxMCsoZSUxMDAvMTB8MCldK3d0WzIwK2UlMTBdO3JldHVybiB0P2kudG9Mb3dlckNhc2UoKTppfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU+MD9NYXRoLmNlaWwoTWF0aC5sb2cyKGUpKTowfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIHJlYWRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/KG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJigwPT09ZS5sZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgZVswXSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT97bmFtZTppWzFdLHBvczpwYXJzZUludChpWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPDMzfHxyPjEyNnx8MzU9PT1yfHw0MD09PXJ8fDQxPT09cnx8NjA9PT1yfHw2Mj09PXJ8fDkxPT09cnx8OTM9PT1yfHwxMjM9PT1yfHwxMjU9PT1yfHw0Nz09PXJ8fDM3PT09cil7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKGAjJHtyLnRvU3RyaW5nKDE2KX1gKTtpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfWZ1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGksYSl7aWYoIWUpcmV0dXJuO2xldCByPW51bGw7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpcmV0dXJuO3I9ZTthLnB1dChyKTtlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKV9jb2xsZWN0SlMocix0LGksYSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgYTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYoYT10KTthJiY9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiZpLnB1c2goYSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsaSxhKX1yJiZhLnJlbW92ZShyKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihyKWZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBzPXJbdF07aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygcy5nZXRLZXlzKCkpe2NvbnN0IHI9aVt0XTtpZighciljb250aW51ZTtjb25zdCBuPVtdO19jb2xsZWN0SlMocy5nZXRSYXcodCksZSxuLG5ldyBSZWZTZXQpO24ubGVuZ3RoPjAmJihhW3JdPW4pfX1pZih0LmhhcygiQSIpKXtjb25zdCBpPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGksbmV3IFJlZlNldCk7aS5sZW5ndGg+MCYmKGEuQWN0aW9uPWkpfXJldHVybiBvYmplY3RTaXplKGEpPjA/YTpudWxsfWNvbnN0IGJ0PXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUuY29kZVBvaW50QXQodCk7aT41NTI5NSYmKGk8NTczNDR8fGk+NjU1MzMpJiZ0Kys7eWllbGQgaX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KGEpO2lmKDMyPD1yJiZyPD0xMjYpe2NvbnN0IHM9YnRbcl07aWYocyl7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKHMpO2k9YSsxfX1lbHNle2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgJiN4JHtyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtyPjU1Mjk1JiYocjw1NzM0NHx8cj42NTUzMykmJmErKztpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGk9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGkmJmlbMV09PT1pWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHtpWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7aVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGkgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChpKXx8IS9eW1x3LVxcXSskLy50ZXN0KGkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTppLGZvbnRXZWlnaHQ6YSxpdGFsaWNBbmdsZTpyfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGksITApKXJldHVybiExO2NvbnN0IHM9YT9hLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHMpP3M6IjQwMCI7Y29uc3Qgbj1wYXJzZUZsb2F0KHIpO2UuaXRhbGljQW5nbGU9aXNOYU4obil8fG48LTkwfHxuPjkwPyIxNCI6ci50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtpLGFdb2YgZSl7aWYoIWkuc3RhcnRzV2l0aChkKSljb250aW51ZTtsZXQgZT10LmdldChhLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoYS5wYWdlSW5kZXgsZSl9ZS5wdXNoKGEpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4vXltceDAwLVx4N0ZdKiQvLnRlc3QoZSl9KGUpP2U6c3RyaW5nVG9VVEYxNlN0cmluZyhlLCEwKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTt0LnB1c2gobHRbYT4+OCYyNTVdLGx0WzI1NSZhXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGk9W107dCYmaS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY2hhckNvZGVBdCh0KTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmYSkpfXJldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxpKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsaV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsaV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCtpfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9YX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGk9dGhpcy5wb3MsYT10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShpLGEpO2xldCByPWkrZTtyPmEmJihyPWEpO3RoaXMucG9zPXI7cmV0dXJuIHQuc3ViYXJyYXkoaSxyKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGkpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1pO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxpPXRoaXMubnVtQ2h1bmtzO3Q8aTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBpPXRoaXMuY2h1bmtTaXplO2lmKGUlaSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBhPWUrdC5ieXRlTGVuZ3RoO2lmKGElaSE9MCYmYSE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7YX1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCByPU1hdGguZmxvb3IoZS9pKSxzPU1hdGguZmxvb3IoKGEtMSkvaSkrMTtmb3IobGV0IGU9cjtlPHM7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGk9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBhPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWk7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgaT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGk+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCByPWk7cjxhOysrcilpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgaT0wO2k8dDsrK2kpe2NvbnN0IGE9KGUraSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhhKSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpe2E+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxhKTtyZXR1cm4gdC5zdWJhcnJheShpLGEpfWxldCByPWkrZTtyPmEmJihyPWEpO3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxyKTt0aGlzLnBvcz1yO3JldHVybiB0LnN1YmFycmF5KGkscil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksaT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLGE9W107Zm9yKGxldCBlPXQ7ZTxpOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxhLnB1c2goZSk7cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IGE9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07YS5wb3M9YS5zdGFydD1lO2EuZW5kPWUrdHx8dGhpcy5lbmQ7YS5kaWN0PWk7cmV0dXJuIGF9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgaT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtpLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoaS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgYT1bXSxyPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHJlYWRDaHVuaz0oe3ZhbHVlOnMsZG9uZTpufSk9Pnt0cnl7aWYobil7Y29uc3QgdD1hcnJheUJ1ZmZlcnNUb0J5dGVzKGEpO2E9bnVsbDtlKHQpO3JldHVybn1yKz1zLmJ5dGVMZW5ndGg7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6cn0pO2EucHVzaChzKTtpLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxpPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LGkpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fGkuYWRkKHQpO2lmKDA9PT1pLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsYSk7Y29uc3Qgcj1bXTtmb3IoY29uc3QgZSBvZiBpKXtsZXQgaT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFpKXtpPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxpKTtyLnB1c2goZSl9aS5wdXNoKHQpfWlmKHIubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhyKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxpPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxpKS5jYXRjaChhLnJlamVjdCl9fXJldHVybiBhLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgaT10aGlzLmdldEJlZ2luQ2h1bmsoZSksYT10aGlzLmdldEVuZENodW5rKHQpLHI9W107Zm9yKGxldCBlPWk7ZTxhOysrZSlyLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGkuYmVnaW4pLGE9dGhpcy5nZXRFbmRDaHVuayhpLmVuZCk7Zm9yKGxldCBpPWU7aTxhOysraSl0LmluY2x1ZGVzKGkpfHx0LnB1c2goaSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgaT0tMSxhPS0xO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzOysrcil7Y29uc3Qgcz1lW3JdO2k8MCYmKGk9cyk7aWYoYT49MCYmYSsxIT09cyl7dC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6YSsxfSk7aT1zfXIrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6aSxlbmRDaHVuazpzKzF9KTthPXN9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssaT12b2lkIDA9PT1lLmJlZ2luLGE9aT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLHI9YSt0LmJ5dGVMZW5ndGgscz1NYXRoLmZsb29yKGEvdGhpcy5jaHVua1NpemUpLG49cjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChyL3RoaXMuY2h1bmtTaXplKTtpZihpKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9cn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEoYSx0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9cztlPG47KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoaSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goaSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhuKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSl9fV9fd2VicGFja19yZXF1aXJlX18oNDUyMCksX193ZWJwYWNrX3JlcXVpcmVfXyg5NDc5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI1NzcpLF9fd2VicGFja19yZXF1aXJlX18oODg3Mik7Y2xhc3MgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGksMCk7cmV0dXJuIGl9Z2V0UmdiSXRlbShlLHQsaSxhKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsaSxhLHIscyxuLG8sZyl7Y29uc3QgYz10Kmk7bGV0IGw9bnVsbDtjb25zdCBoPTE8PG4sQz1pIT09cnx8dCE9PWE7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKG4pKWw9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZjPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9bjw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxpLDAsbiwwKTtpZihDKXtsPW5ldyBVaW50OEFycmF5KDMqYyk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGM7Kyt0KXtjb25zdCBhPTMqb1t0XTtsW2UrK109aVthXTtsW2UrK109aVthKzFdO2xbZSsrXT1pW2ErMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGM7KythKXtjb25zdCByPTMqb1thXTtlW3QrK109aVtyXTtlW3QrK109aVtyKzFdO2VbdCsrXT1pW3IrMl07dCs9Z319fWVsc2UgaWYoQyl7bD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypjKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYyxsLDAsbiwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxhKnMsZSwwLG4sZyk7aWYobClpZihDKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsaSxhLHIscyxuKXtuPTEhPT1uPzA6bjtjb25zdCBvPWkvcixnPWEvcztsZXQgYyxsPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkociksQz0zKmk7Zm9yKGxldCBlPTA7ZTxyO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IGE9TWF0aC5mbG9vcihpKmcpKkM7Zm9yKGxldCBpPTA7aTxyO2krKyl7Yz1hK2hbaV07dFtsKytdPWVbYysrXTt0W2wrK109ZVtjKytdO3RbbCsrXT1lW2MrK107bCs9bn19fShsLGUsdCxpLGEscixnKTtlbHNle2xldCB0PTAsaT0wO2ZvcihsZXQgcj0wLG49YSpzO3I8bjtyKyspe2VbdCsrXT1sW2krK107ZVt0KytdPWxbaSsrXTtlW3QrK109bFtpKytdO3QrPWd9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgX2NhY2hlKGUsdCxpLGEpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkQ29sb3JTcGFjZSIgYXJndW1lbnQuJyk7bGV0IHIscztpZihlIGluc3RhbmNlb2YgUmVmKXtzPWU7ZT10LmZldGNoKGUpfWUgaW5zdGFuY2VvZiBOYW1lJiYocj1lLm5hbWUpOyhyfHxzKSYmaS5zZXQocixzLGEpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGkpe2lmKCFpKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGE9aS5nZXRCeVJlZihlKTtpZihhKXJldHVybiBhO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGV9fWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWkuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixzKTtyZXR1cm4gc31zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczppPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pe2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQoZSx0LHIpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbj10aGlzLl9wYXJzZShlLHQsaSxhKTt0aGlzLl9jYWNoZShlLHQscixuKTtyZXR1cm4gbn1zdGF0aWMgX3BhcnNlKGUsdCxpPW51bGwsYSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIlBhdHRlcm4iOnJldHVybiBuZXcgUGF0dGVybkNTKG51bGwpO2RlZmF1bHQ6aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9aS5nZXQoIkNvbG9yU3BhY2UiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBOYW1lKXJldHVybiB0aGlzLl9wYXJzZShzLHQsaSxhKTtlPXM7YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbixvLGcsYyxsO3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIkNhbEdyYXkiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2w9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MoZyxjLGwpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtsPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgaD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGcsYyxsLGgpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IEM9dC5mZXRjaElmUmVmKGVbMV0pLmRpY3Q7bj1DLmdldCgiTiIpO2NvbnN0IFE9Qy5nZXQoIkFsdGVybmF0ZSIpO2lmKFEpe2NvbnN0IGU9dGhpcy5fcGFyc2UoUSx0LGksYSk7aWYoZS5udW1Db21wcz09PW4pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1uKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpvPWVbMV18fG51bGw7byYmKG89dGhpcy5fcGFyc2Uobyx0LGksYSkpO3JldHVybiBuZXcgUGF0dGVybkNTKG8pO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpvPXRoaXMuX3BhcnNlKGVbMV0sdCxpLGEpO2NvbnN0IEU9TWF0aC5tYXgoMCxNYXRoLm1pbih0LmZldGNoSWZSZWYoZVsyXSksMjU1KSksdT10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobyxFLHUpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBkPXQuZmV0Y2hJZlJlZihlWzFdKTtuPUFycmF5LmlzQXJyYXkoZCk/ZC5sZW5ndGg6MTtvPXRoaXMuX3BhcnNlKGVbMl0sdCxpLGEpO2NvbnN0IGY9YS5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhuLG8sZik7Y2FzZSJMYWIiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHA9cy5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGcsYyxwKTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7cn1gKTtyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMip0IT09ZS5sZW5ndGgpe3dhcm4oIlRoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgiKTtyZXR1cm4hMH1mb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBnZXQgc2luZ2xldG9ucygpe3JldHVybiBzaGFkb3codGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX0sZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfSxnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxyLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHIsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHMpLTEpLGw9Zy5udW1Db21wcyxoPWcudXNlc1plcm9Ub09uZVJhbmdlLEM9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09bjtsZXQgUT1DP3I6MDtjb25zdCBFPUM/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkobCppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShsKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihoKWZvcihtPTA7bTxsO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9bH19Q3x8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxyLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTtjb25zdCBhPWUubnVtQ29tcHMqKHQrMSk7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoYSk7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9aS5nZXRCeXRlcyhhKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2l9YCk7Zm9yKGxldCBlPTA7ZTxhOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmaS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9dGhpcy5iYXNlLm51bUNvbXBzLHM9ZVt0XSpyO3RoaXMuYmFzZS5nZXRSZ2JCdWZmZXIodGhpcy5sb29rdXAscywxLGksYSw4LDApfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMuYmFzZSxnPW8ubnVtQ29tcHMsYz1vLmdldE91dHB1dExlbmd0aChnLG4pLGw9dGhpcy5sb29rdXA7Zm9yKGxldCBzPTA7czxpOysrcyl7Y29uc3QgaT1lW3QrK10qZztvLmdldFJnYkJ1ZmZlcihsLGksMSxhLHIsOCxuKTtyKz1jfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcyx0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyIT09ZS5sZW5ndGgpe3dhcm4oIkRlY29kZSBtYXAgbGVuZ3RoIGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MSl7d2FybigiQml0cyBwZXIgY29tcG9uZW50IGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9cmV0dXJuIDA9PT1lWzBdJiZlWzFdPT09KDE8PHQpLTF9fWNsYXNzIERldmljZUdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlR3JheSIsMSl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPTI1NSplW3RdO2lbYV09aVthKzFdPWlbYSsyXT1yfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2NvbnN0IHQ9byplW2crK107YVtjKytdPXQ7YVtjKytdPXQ7YVtjKytdPXQ7Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIERldmljZVJnYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LGksYSl7aVthXT0yNTUqZVt0XTtpW2ErMV09MjU1KmVbdCsxXTtpW2ErMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7aWYoOD09PXMmJjA9PT1uKXthLnNldChlLnN1YmFycmF5KHQsdCszKmkpLHIpO3JldHVybn1jb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107YVtjKytdPW8qZVtnKytdO2MrPW59fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX19Y2xhc3MgRGV2aWNlUmdiYUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0JBIiw0KX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gNCplfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfWZpbGxSZ2IoZSx0LGksYSxyLHMsbixvLGcpe2khPT1yfHx0IT09YT9mdW5jdGlvbiByZXNpemVSZ2JhSW1hZ2UoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz1pL3IsZz1hL3M7bGV0IGM9MDtjb25zdCBsPW5ldyBVaW50MTZBcnJheShyKTtpZigxPT09bil7Zm9yKGxldCBlPTA7ZTxyO2UrKylsW2VdPU1hdGguZmxvb3IoZSpvKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksbj1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLGg9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCB0PWEuc3ViYXJyYXkoTWF0aC5mbG9vcihlKmcpKmkpO2ZvcihsZXQgZT0wO2U8cjtlKyspbltjKytdfD10W2xbZV1dJmh9fWVsc2V7Y29uc3QgYT00LG49aSphO2ZvcihsZXQgZT0wO2U8cjtlKyspbFtlXT1NYXRoLmZsb29yKGUqbykqYTtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBhPWUuc3ViYXJyYXkoTWF0aC5mbG9vcihpKmcpKm4pO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IGk9bFtlXTt0W2MrK109YVtpXTt0W2MrK109YVtpKzFdO3RbYysrXT1hW2krMl19fX19KG8sZSx0LGksYSxyLGcpOmZ1bmN0aW9uIGNvcHlSZ2JhSW1hZ2UoZSx0LGkpe2lmKDE9PT1pKXtjb25zdCBpPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksYT1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLHI9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspYVtlXXw9aVtlXSZyfWVsc2V7bGV0IGk9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz00KXt0W2krK109ZVthXTt0W2krK109ZVthKzFdO3RbaSsrXT1lW2ErMl19fX0obyxlLGcpfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtyXT0yNTUrcyooLTQuMzg3MzMyMzg0NjA5OTg4KnMrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcisxXT0yNTUrcyooOC44NDEwNDE0MjIwMzYxNDkqcys2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtyKzJdPTI1NStzKiguODg0MjUyMjQzMDAwMzI5NipzKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTQ7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHIpe2NvbnN0IHM9KGVbdF0qcikqKnRoaXMuRyxuPXRoaXMuWVcqcyxvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0aGlzLiN0KGUsdCxhLHIsbyk7dCs9MTtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNzPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI0k9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtyLHMsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHI8MHx8bjwwfHwxIT09cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2MoZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNsKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jaChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jQyhlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNJfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHI9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscz0xLXIsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpyK3M7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jbChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLiNCKDAsMSxlW3RdKnIpLG49dGhpcy4jQigwLDEsZVt0KzFdKnIpLG89dGhpcy4jQigwLDEsZVt0KzJdKnIpLGc9MT09PXM/MTpzKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLGw9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKmwsQz10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqbCxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypsLEU9Q2FsUkdCQ1MuI287RVswXT1oO0VbMV09QztFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3MsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI2MoQ2FsUkdCQ1MuI3IsZixwKTtpW2FdPTI1NSp0aGlzLiNDKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jQyhwWzFdKTtpW2ErMl09MjU1KnRoaXMuI0MocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscil7bGV0IHM9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3M9dGhpcy4jcChzLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShzKzE2KS8xMTYsYz1nK24vNTAwLGw9Zy1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jZihjKSxDPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihsKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpoKy0xLjYxNypDKy0uNDkwNipRO3U9LS45Nzg1KmgrMS45MTYqQysuMDMzMypRO2Q9LjA3MipoKy0uMjI5KkMrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipoKy0xLjUzNzIqQystLjQ5ODYqUTt1PS0uOTY4OSpoKzEuODc1OCpDKy4wNDE1KlE7ZD0uMDU1NypoKy0uMjA0KkMrMS4wNTcqUX1hW3JdPTI1NSpNYXRoLnNxcnQoRSk7YVtyKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtyKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPSgxPDxzKS0xO2ZvcihsZXQgcz0wO3M8aTtzKyspe3RoaXMuI3QoZSx0LG8sYSxyKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDM5NDkpO2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGk9MDtmb3IobGV0IGE9MDthPD10O2ErKylpPWk8PDh8ZVthXTtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZSguLi5lLnN1YmFycmF5KDAsdCsxKSl9ZnVuY3Rpb24gYWRkSGV4KGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj1pO3I+PTA7ci0tKXthKz1lW3JdK3Rbcl07ZVtyXT0yNTUmYTthPj49OH19ZnVuY3Rpb24gaW5jSGV4KGUsdCl7bGV0IGk9MTtmb3IobGV0IGE9dDthPj0wJiZpPjA7YS0tKXtpKz1lW2FdO2VbYV09MjU1Jmk7aT4+PTh9fWNvbnN0IER0PTE2O2NsYXNzIEJpbmFyeUNNYXBTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnBvcz0wO3RoaXMuZW5kPWUubGVuZ3RoO3RoaXMudG1wQnVmPW5ldyBVaW50OEFycmF5KDE5KX1yZWFkQnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5idWZmZXJbdGhpcy5wb3MrK119cmVhZE51bWJlcigpe2xldCBlLHQ9MDtkb3tjb25zdCBpPXRoaXMucmVhZEJ5dGUoKTtpZihpPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmaSk7dD10PDw3fDEyNyZpfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgaTtjb25zdCBhPXRoaXMudG1wQnVmO2xldCByPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtpPSEoMTI4JmUpO2FbcisrXT0xMjcmZX13aGlsZSghaSk7bGV0IHM9dCxuPTAsbz0wO2Zvcig7cz49MDspe2Zvcig7bzw4JiZhLmxlbmd0aD4wOyl7bnw9YVstLXJdPDxvO28rPTd9ZVtzXT0yNTUmbjtzLS07bj4+PTg7by09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IGk9MSZlW3RdPzI1NTowO2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspe2E9KDEmYSk8PDh8ZVtyXTtlW3JdPWE+PjFeaX19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlO2krKyl0W2ldPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LGkpe2NvbnN0IGE9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSkscj1hLnJlYWRCeXRlKCk7dC52ZXJ0aWNhbD0hISgxJnIpO2xldCBzPW51bGw7Y29uc3Qgbj1uZXcgVWludDhBcnJheShEdCksbz1uZXcgVWludDhBcnJheShEdCksZz1uZXcgVWludDhBcnJheShEdCksYz1uZXcgVWludDhBcnJheShEdCksbD1uZXcgVWludDhBcnJheShEdCk7bGV0IGgsQztmb3IoOyhDPWEucmVhZEJ5dGUoKSk+PTA7KXtjb25zdCBlPUM+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZDKXtjYXNlIDA6YS5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnM9YS5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3QgaT0hISgxNiZDKSxyPTE1JkM7aWYocisxPkR0KXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IFE9MSxFPWEucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTt0LmFkZENvZGVzcGFjZVJhbmdlKHIrMSxoZXhUb0ludChuLHIpLGhleFRvSW50KG8scikpfWJyZWFrO2Nhc2UgMTphLnJlYWRIZXgobixyKTthLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2EucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2EucmVhZEhleE51bWJlcihuLHIpO2FkZEhleChuLG8scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6YS5yZWFkSGV4KGcscik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChnLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChnLHIpO2lmKCFpKXthLnJlYWRIZXhOdW1iZXIobCxyKTthZGRIZXgoZyxsLHIpfWg9YS5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxoKX1icmVhaztjYXNlIDM6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTtoPWEucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpLGgpO2ZvcihsZXQgZT0xO2U8RTtlKyspe2luY0hleChvLHIpO2lmKGkpbi5zZXQobyk7ZWxzZXthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpfWEucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxoKX1icmVhaztjYXNlIDQ6YS5yZWFkSGV4KGcsUSk7YS5yZWFkSGV4KGMscik7dC5tYXBPbmUoaGV4VG9JbnQoZyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxRKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKGwsUSk7YWRkSGV4KGcsbCxRKX1pbmNIZXgoYyxyKTthLnJlYWRIZXhTaWduZWQobCxyKTthZGRIZXgoYyxsLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7Y2FzZSA1OmEucmVhZEhleChuLFEpO2EucmVhZEhleE51bWJlcihvLFEpO2FkZEhleChvLG4sUSk7YS5yZWFkSGV4KGMscik7dC5tYXBCZlJhbmdlKGhleFRvSW50KG4sUSksaGV4VG9JbnQobyxRKSxoZXhUb1N0cihjLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxRKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4sUSk7YWRkSGV4KG4sbyxRKX1hLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcz9pKHMpOnR9fWNvbnN0IEZ0PW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDt0aGlzLnBvcz0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5lb2Y9ITE7dGhpcy5idWZmZXI9RnQ7dGhpcy5taW5CdWZmZXJMZW5ndGg9NTEyO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IGk9dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDtpPGU7KWkqPTI7Y29uc3QgYT1uZXcgVWludDhBcnJheShpKTthLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9YX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IGk9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIoaStlKTthPWkrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aDthPnImJihhPXIpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkoaSxhKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0PW51bGwpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmdldEJ5dGVzKGUsdCk7Y29uc3QgaT1hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIHRoaXMuZGVjb2RlSW1hZ2UoaSx0KX1yZXNldCgpe3RoaXMucG9zPTB9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3QgaT1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9aSYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxpKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7ZT1lLmZpbHRlcigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKTtsZXQgaT0wO2Zvcihjb25zdCB0IG9mIGUpaSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoaSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBpO3RyeXtpPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWEraS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGksYSk7dGhpcy5idWZmZXJMZW5ndGg9cn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBpPXQuZ2V0QmFzZVN0cmVhbXMoKTtpJiZlLnB1c2goLi4uaSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscjtpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKGkrNCk7Zm9yKHI9MDtyPDQ7KytyKWFbaStyXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3Iocj0xO3I8NTsrK3Ipe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7c1tyXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKGkrci0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9ci0xO2lmKHI8NSl7Zm9yKDtyPDU7KytyKXNbcl09MTE3O3RoaXMuZW9mPSEwfWxldCBuPTA7Zm9yKHI9MDtyPDU7KytyKW49ODUqbisoc1tyXS0zMyk7Zm9yKHI9MztyPj0wOy0tcil7YVtpK3JdPTI1NSZuO24+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsaT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYocjwwKXI9ZTtlbHNle2lbYSsrXT1yPDw0fGU7cj0tMX19aWYocj49MCYmdGhpcy5lb2Ype2lbYSsrXT1yPDw0O3I9LTF9dGhpcy5maXJzdERpZ2l0PXI7dGhpcy5idWZmZXJMZW5ndGg9YX19Y29uc3QgU3Q9LTEsa3Q9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sUnQ9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxOdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sR3Q9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sTXQ9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sVXQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGk7Zm9yKDswPT09KGk9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09aSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGk9dGhpcy5jb2x1bW5zO2xldCBhLHIscyxuLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgcyxvLGc7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iobj0wO3Rbbl08aTsrK24pZVtuXT10W25dO2VbbisrXT1pO2Vbbl09aTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDthPTA7cj0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3M9dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChzKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbYSsxXSxyKTtlW2ErMV08aSYmKGErPTIpO2JyZWFrO2Nhc2UgMTpzPW89MDtpZihyKXtkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KX1lbHNle2Rve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3RbdGhpcy5jb2RpbmdQb3NdPGkmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFecik7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVthXSszLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMixyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2FdKzEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVthXSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTMscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTIscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSBTdDp0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3I9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtzPTA7aWYocilkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtlbHNlIGRve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3JePTF9fWxldCBjPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe3M9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7cyE9PVN0JiYxIT09czspe3RoaXMuX2VhdEJpdHMoMSk7cz10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1zOyl7dGhpcy5fZWF0Qml0cygxKTtzPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09cyl7dGhpcy5fZWF0Qml0cygxMik7Yz0hMH1lbHNlIHM9PT1TdCYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZjJiZ0aGlzLmJ5dGVBbGlnbil7cz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PXMpe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihuPTA7bjw0Oysrbil7cz10aGlzLl9sb29rQml0cygxMik7MSE9PXMmJmluZm8oImJhZCBydGMgY29kZTogIitzKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtzPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihzPT09U3Qpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKHM+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZzKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtzPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPnMpe288PD1zOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtcyk7dGhpcy5vdXRwdXRCaXRzLT1zO3M9MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO3MtPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYocz4wKXtvPDw9cztzPTB9fX13aGlsZShzKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX1lbHNlIGlmKGU8aVthXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDthPjAmJmU8aVthLTFdOyktLWE7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2ZpbmRUYWJsZUNvZGUoZSx0LGksYSl7Y29uc3Qgcj1hfHwwO2ZvcihsZXQgYT1lO2E8PXQ7KythKXtsZXQgZT10aGlzLl9sb29rQml0cyhhKTtpZihlPT09U3QpcmV0dXJuWyEwLDEsITFdO2E8dCYmKGU8PD10LWEpO2lmKCFyfHxlPj1yKXtjb25zdCB0PWlbZS1yXTtpZih0WzBdPT09YSl7dGhpcy5fZWF0Qml0cyhhKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9a3RbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxrdCk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIFN0fV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09U3QpcmV0dXJuIDE7ZT10Pj41P050W3Q+PjNdOlJ0W3RdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxOdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIsUnQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PVN0KXJldHVybiAxO3Q9ZT4+Nz8hKGU+PjkpJiZlPj43P010WyhlPj4xKS02NF06VXRbZT4+N106R3RbZV07aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LFV0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLE10LDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxHdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP1N0OnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7aSBpbnN0YW5jZW9mIERpY3R8fChpPURpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGEse0s6aS5nZXQoIksiKSxFbmRPZkxpbmU6aS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246aS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmkuZ2V0KCJDb2x1bW5zIiksUm93czppLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6aS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTppLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgeHQ9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxMdD1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxIdD1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEp0PVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSx2dD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGk9ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PWl8fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDghPSgxNSZpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKCgoaTw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBpPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBpPy5zdWJhcnJheSgwLGUpfHx0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt0aGlzLnN0ci5yZXNldCgpO2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoKTt0cnl7Y29uc3R7cmVhZGFibGU6dCx3cml0YWJsZTppfT1uZXcgRGVjb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLGE9aS5nZXRXcml0ZXIoKTthd2FpdCBhLnJlYWR5O2Eud3JpdGUoZSkudGhlbigoYXN5bmMoKT0+e2F3YWl0IGEucmVhZHk7YXdhaXQgYS5jbG9zZSgpfSkpLmNhdGNoKCgoKT0+e30pKTtjb25zdCByPVtdO2xldCBzPTA7Zm9yIGF3YWl0KGNvbnN0IGUgb2YgdCl7ci5wdXNoKGUpO3MrPWUuYnl0ZUxlbmd0aH1jb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2Ygcil7bi5zZXQoZSxvKTtvKz1lLmJ5dGVMZW5ndGh9cmV0dXJuIG59Y2F0Y2h7dGhpcy5zdHI9bmV3IFN0cmVhbShlLDIsZS5sZW5ndGgsdGhpcy5zdHIuZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfX1nZXQgaXNBc3luYygpe3JldHVybiEwfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cjtsZXQgaSxhPXRoaXMuY29kZVNpemUscj10aGlzLmNvZGVCdWY7Zm9yKDthPGU7KXtpZigtMT09PShpPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtyfD1pPDxhO2ErPTh9aT1yJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1yPj5lO3RoaXMuY29kZVNpemU9YS09ZTtyZXR1cm4gaX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsaT1lWzBdLGE9ZVsxXTtsZXQgcixzPXRoaXMuY29kZVNpemUsbj10aGlzLmNvZGVCdWY7Zm9yKDtzPGEmJi0xIT09KHI9dC5nZXRCeXRlKCkpOyl7bnw9cjw8cztzKz04fWNvbnN0IG89aVtuJigxPDxhKS0xXSxnPW8+PjE2LGM9NjU1MzUmbztpZihnPDF8fHM8Zyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9bj4+Zzt0aGlzLmNvZGVTaXplPXMtZztyZXR1cm4gY31nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpLGE9MDtmb3IoaT0wO2k8dDsrK2kpZVtpXT5hJiYoYT1lW2ldKTtjb25zdCByPTE8PGEscz1uZXcgSW50MzJBcnJheShyKTtmb3IobGV0IG49MSxvPTAsZz0yO248PWE7KytuLG88PD0xLGc8PD0xKWZvcihsZXQgYT0wO2E8dDsrK2EpaWYoZVthXT09PW4pe2xldCBlPTAsdD1vO2ZvcihpPTA7aTxuOysraSl7ZT1lPDwxfDEmdDt0Pj49MX1mb3IoaT1lO2k8cjtpKz1nKXNbaV09bjw8MTZ8YTsrK299cmV0dXJuW3MsYV19I20oZSl7aW5mbyhlKTt0aGlzLmVvZj0hMH1yZWFkQmxvY2soKXtsZXQgZSx0LGk7Y29uc3QgYT10aGlzLnN0cjt0cnl7dD10aGlzLmdldEJpdHMoMyl9Y2F0Y2goZSl7dGhpcy4jbShlLm1lc3NhZ2UpO3JldHVybn0xJnQmJih0aGlzLmVvZj0hMCk7dD4+PTE7aWYoMD09PXQpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1pfD10PDw4O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgcj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNtKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1yfD10PDw4O2lmKHIhPT0oNjU1MzUmfmkpJiYoMCE9PWl8fDAhPT1yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLG49cytpO2U9dGhpcy5lbnN1cmVCdWZmZXIobik7dGhpcy5idWZmZXJMZW5ndGg9bjtpZigwPT09aSktMT09PWEucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9YS5nZXRCeXRlcyhpKTtlLnNldCh0LHMpO3QubGVuZ3RoPGkmJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCByLHM7aWYoMT09PXQpe3I9SnQ7cz12dH1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxhPXRoaXMuZ2V0Qml0cyg0KSs0LG49bmV3IFVpbnQ4QXJyYXkoeHQubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288YTsrK28pblt4dFtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGc9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShuKTtpPTA7bz0wO2NvbnN0IGM9ZSt0LGw9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsQyxRO2Zvcig7bzxjOyl7Y29uc3QgZT10aGlzLmdldENvZGUoZyk7aWYoMTY9PT1lKXtoPTI7Qz0zO1E9aX1lbHNlIGlmKDE3PT09ZSl7aD0zO0M9MztRPWk9MH1lbHNle2lmKDE4IT09ZSl7bFtvKytdPWk9ZTtjb250aW51ZX1oPTc7Qz0xMTtRPWk9MH1sZXQgdD10aGlzLmdldEJpdHMoaCkrQztmb3IoO3QtLSA+MDspbFtvKytdPVF9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoMCxlKSk7cz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGwuc3ViYXJyYXkoZSxjKSl9fWU9dGhpcy5idWZmZXI7bGV0IG49ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUocik7aWYodDwyNTYpe2lmKG8rMT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO249ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9THRbdF07bGV0IGE9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO2k9KDY1NTM1JnQpK2E7dD10aGlzLmdldENvZGUocyk7dD1IdFt0XTthPXQ+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtjb25zdCBnPSg2NTUzNSZ0KSthO2lmKG8raT49bil7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK2kpO249ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxpOysrdCwrK28pZVtvXT1lW28tZ119fX1jb25zdCBZdD1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTtjbGFzcyBBcml0aG1ldGljRGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5icD10O3RoaXMuZGF0YUVuZD1pO3RoaXMuY2hpZ2g9ZVt0XTt0aGlzLmNsb3c9MDt0aGlzLmJ5dGVJbigpO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8NyY2NTUzNXx0aGlzLmNsb3c+PjkmMTI3O3RoaXMuY2xvdz10aGlzLmNsb3c8PDcmNjU1MzU7dGhpcy5jdC09Nzt0aGlzLmE9MzI3Njh9Ynl0ZUluKCl7Y29uc3QgZT10aGlzLmRhdGE7bGV0IHQ9dGhpcy5icDtpZigyNTU9PT1lW3RdKWlmKGVbdCsxXT4xNDMpe3RoaXMuY2xvdys9NjUyODA7dGhpcy5jdD04fWVsc2V7dCsrO3RoaXMuY2xvdys9ZVt0XTw8OTt0aGlzLmN0PTc7dGhpcy5icD10fWVsc2V7dCsrO3RoaXMuY2xvdys9dDx0aGlzLmRhdGFFbmQ/ZVt0XTw8ODo2NTI4MDt0aGlzLmN0PTg7dGhpcy5icD10fWlmKHRoaXMuY2xvdz42NTUzNSl7dGhpcy5jaGlnaCs9dGhpcy5jbG93Pj4xNjt0aGlzLmNsb3cmPTY1NTM1fX1yZWFkQml0KGUsdCl7bGV0IGk9ZVt0XT4+MSxhPTEmZVt0XTtjb25zdCByPVl0W2ldLHM9ci5xZTtsZXQgbixvPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cylpZihvPHMpe289cztuPWE7aT1yLm5tcHN9ZWxzZXtvPXM7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXt0aGlzLmNoaWdoLT1zO2lmKDMyNzY4Jm8pe3RoaXMuYT1vO3JldHVybiBhfWlmKG88cyl7bj0xXmE7MT09PXIuc3dpdGNoRmxhZyYmKGE9bik7aT1yLm5scHN9ZWxzZXtuPWE7aT1yLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO288PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoISgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKHQpO2xldCByPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IHM9MDtzPGU7cysrKXtjb25zdCBlPWkucmVhZEJpdChhLHIpO3I9cjwyNTY/cjw8MXxlOjUxMSYocjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IHM9cmVhZEJpdHMoMSksbj1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7bGV0IG87MD09PXM/bz1uOm4+MCYmKG89LW4pO3JldHVybiBvPj0tMjE0NzQ4MzY0OCYmbzw9eXQ/bzpudWxsfWZ1bmN0aW9uIGRlY29kZUlBSUQoZSx0LGkpe2NvbnN0IGE9ZS5nZXRDb250ZXh0cygiSUFJRCIpO2xldCByPTE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cj1yPDwxfHQucmVhZEJpdChhLHIpfXJldHVybiBpPDMxP3ImKDE8PGkpLTE6MjE0NzQ4MzY0NyZyfWNvbnN0IEt0PVsiU3ltYm9sRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZVRleHRSZWdpb24iLG51bGwsIkltbWVkaWF0ZVRleHRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiUGF0dGVybkRpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbiIsIkludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsIlBhZ2VJbmZvcm1hdGlvbiIsIkVuZE9mUGFnZSIsIkVuZE9mU3RyaXBlIiwiRW5kT2ZGaWxlIiwiUHJvZmlsZXMiLCJUYWJsZXMiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiRXh0ZW5zaW9uIl0sVHQ9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLHF0PVt7Y29kaW5nOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4Oi0xLHk6MX0se3g6MCx5OjF9LHt4OjEseToxfV19LHtjb2Rpbmc6W3t4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6LTEseTowfSx7eDowLHk6MH0se3g6MSx5OjB9LHt4OjAseToxfSx7eDoxLHk6MX1dfV0sT3Q9WzM5NzE3LDE5NDEsMjI5LDQwNV0sUHQ9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsaSxhLHIscyxuLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxpLCExKX1pZigwPT09YSYmIXMmJiFyJiY0PT09bi5sZW5ndGgmJjM9PT1uWzBdLngmJi0xPT09blswXS55JiYtMz09PW5bMV0ueCYmLTE9PT1uWzFdLnkmJjI9PT1uWzJdLngmJi0yPT09blsyXS55JiYtMj09PW5bM10ueCYmLTI9PT1uWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsaSl7Y29uc3QgYT1pLmRlY29kZXIscj1pLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxzPVtdO2xldCBuLG8sZyxjLGwsaCxDO2ZvcihvPTA7bzx0O28rKyl7bD1zW29dPW5ldyBVaW50OEFycmF5KGUpO2g9bzwxP2w6c1tvLTFdO0M9bzwyP2w6c1tvLTJdO249Q1swXTw8MTN8Q1sxXTw8MTJ8Q1syXTw8MTF8aFswXTw8N3xoWzFdPDw2fGhbMl08PDV8aFszXTw8NDtmb3IoZz0wO2c8ZTtnKyspe2xbZ109Yz1hLnJlYWRCaXQocixuKTtuPSgzMTczNSZuKTw8MXwoZyszPGU/Q1tnKzNdPDwxMTowKXwoZys0PGU/aFtnKzRdPDw0OjApfGN9fXJldHVybiBzfSh0LGksbyk7Y29uc3QgZz0hIXMsYz1UdFthXS5jb25jYXQobik7Yy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLnktdC55fHxlLngtdC54fSkpO2NvbnN0IGw9Yy5sZW5ndGgsaD1uZXcgSW50OEFycmF5KGwpLEM9bmV3IEludDhBcnJheShsKSxRPVtdO2xldCBFLHUsZD0wLGY9MCxwPTAsbT0wO2Zvcih1PTA7dTxsO3UrKyl7aFt1XT1jW3VdLng7Q1t1XT1jW3VdLnk7Zj1NYXRoLm1pbihmLGNbdV0ueCk7cD1NYXRoLm1heChwLGNbdV0ueCk7bT1NYXRoLm1pbihtLGNbdV0ueSk7dTxsLTEmJmNbdV0ueT09PWNbdSsxXS55JiZjW3VdLng9PT1jW3UrMV0ueC0xP2R8PTE8PGwtMS11OlEucHVzaCh1KX1jb25zdCB5PVEubGVuZ3RoLHc9bmV3IEludDhBcnJheSh5KSxiPW5ldyBJbnQ4QXJyYXkoeSksRD1uZXcgVWludDE2QXJyYXkoeSk7Zm9yKEU9MDtFPHk7RSsrKXt1PVFbRV07d1tFXT1jW3VdLng7YltFXT1jW3VdLnk7RFtFXT0xPDxsLTEtdX1jb25zdCBTPS1mLGs9LW0sUj10LXAsTj1PdFthXTtsZXQgRz1uZXcgVWludDhBcnJheSh0KTtjb25zdCBNPVtdLFU9by5kZWNvZGVyLHg9by5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIik7bGV0IEwsSCxKLHYsWSxLPTAsVD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspe2lmKHIpe0tePVUucmVhZEJpdCh4LE4pO2lmKEspe00ucHVzaChHKTtjb250aW51ZX19Rz1uZXcgVWludDhBcnJheShHKTtNLnB1c2goRyk7Zm9yKEw9MDtMPHQ7TCsrKXtpZihnJiZzW2VdW0xdKXtHW0xdPTA7Y29udGludWV9aWYoTD49UyYmTDxSJiZlPj1rKXtUPVQ8PDEmZDtmb3IodT0wO3U8eTt1Kyspe0g9ZStiW3VdO0o9TCt3W3VdO3Y9TVtIXVtKXTtpZih2KXt2PURbdV07VHw9dn19fWVsc2V7VD0wO1k9bC0xO2Zvcih1PTA7dTxsO3UrKyxZLS0pe0o9TCtoW3VdO2lmKEo+PTAmJko8dCl7SD1lK0NbdV07aWYoSD49MCl7dj1NW0hdW0pdO3YmJihUfD12PDxZKX19fX1jb25zdCBpPVUucmVhZEJpdCh4LFQpO0dbTF09aX19cmV0dXJuIE19ZnVuY3Rpb24gZGVjb2RlUmVmaW5lbWVudChlLHQsaSxhLHIscyxuLG8sZyl7bGV0IGM9cXRbaV0uY29kaW5nOzA9PT1pJiYoYz1jLmNvbmNhdChbb1swXV0pKTtjb25zdCBsPWMubGVuZ3RoLGg9bmV3IEludDMyQXJyYXkobCksQz1uZXcgSW50MzJBcnJheShsKTtsZXQgUTtmb3IoUT0wO1E8bDtRKyspe2hbUV09Y1tRXS54O0NbUV09Y1tRXS55fWxldCBFPXF0W2ldLnJlZmVyZW5jZTswPT09aSYmKEU9RS5jb25jYXQoW29bMV1dKSk7Y29uc3QgdT1FLmxlbmd0aCxkPW5ldyBJbnQzMkFycmF5KHUpLGY9bmV3IEludDMyQXJyYXkodSk7Zm9yKFE9MDtRPHU7USsrKXtkW1FdPUVbUV0ueDtmW1FdPUVbUV0ueX1jb25zdCBwPWFbMF0ubGVuZ3RoLG09YS5sZW5ndGgseT1QdFtpXSx3PVtdLGI9Zy5kZWNvZGVyLEQ9Zy5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdSIik7bGV0IFM9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtpZihuKXtTXj1iLnJlYWRCaXQoRCx5KTtpZihTKXRocm93IG5ldyBKYmlnMkVycm9yKCJwcmVkaWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKX1jb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO3cucHVzaCh0KTtmb3IobGV0IG49MDtuPGU7bisrKXtsZXQgbyxnLGM9MDtmb3IoUT0wO1E8bDtRKyspe289aStDW1FdO2c9bitoW1FdO288MHx8ZzwwfHxnPj1lP2M8PD0xOmM9Yzw8MXx3W29dW2ddfWZvcihRPTA7UTx1O1ErKyl7bz1pK2ZbUV0tcztnPW4rZFtRXS1yO288MHx8bz49bXx8ZzwwfHxnPj1wP2M8PD0xOmM9Yzw8MXxhW29dW2ddfWNvbnN0IEU9Yi5yZWFkQml0KEQsYyk7dFtuXT1FfX1yZXR1cm4gd31mdW5jdGlvbiBkZWNvZGVUZXh0UmVnaW9uKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoLEMsUSxFLHUsZCxmLHApe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBtPVtdO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXt3PW5ldyBVaW50OEFycmF5KGkpO2lmKHIpZm9yKGxldCBlPTA7ZTxpO2UrKyl3W2VdPXI7bS5wdXNoKHcpfWNvbnN0IGI9ZC5kZWNvZGVyLEQ9ZC5jb250ZXh0Q2FjaGU7bGV0IFM9ZT8tUS50YWJsZURlbHRhVC5kZWNvZGUocCk6LWRlY29kZUludGVnZXIoRCwiSUFEVCIsYiksaz0wO3k9MDtmb3IoO3k8czspe1MrPWU/US50YWJsZURlbHRhVC5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQURUIixiKTtrKz1lP1EudGFibGVGaXJzdFMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFGUyIsYik7bGV0IGE9aztmb3IoOzspe2xldCByPTA7bj4xJiYocj1lP3AucmVhZEJpdHMoZik6ZGVjb2RlSW50ZWdlcihELCJJQUlUIixiKSk7Y29uc3Qgcz1uKlMrcixrPWU/US5zeW1ib2xJRFRhYmxlLmRlY29kZShwKTpkZWNvZGVJQUlEKEQsYixnKSxSPXQmJihlP3AucmVhZEJpdCgpOmRlY29kZUludGVnZXIoRCwiSUFSSSIsYikpO2xldCBOPW9ba10sRz1OWzBdLmxlbmd0aCxNPU4ubGVuZ3RoO2lmKFIpe2NvbnN0IGU9ZGVjb2RlSW50ZWdlcihELCJJQVJEVyIsYiksdD1kZWNvZGVJbnRlZ2VyKEQsIklBUkRIIixiKTtHKz1lO00rPXQ7Tj1kZWNvZGVSZWZpbmVtZW50KEcsTSxFLE4sKGU+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFgiLGIpLCh0Pj4xKStkZWNvZGVJbnRlZ2VyKEQsIklBUkRZIixiKSwhMSx1LGQpfWxldCBVPTA7Yz8xJmg/VT1NLTE6YSs9TS0xOmg+MT9hKz1HLTE6VT1HLTE7Y29uc3QgeD1zLSgxJmg/MDpNLTEpLEw9YS0oMiZoP0ctMTowKTtsZXQgSCxKLHY7aWYoYylmb3IoSD0wO0g8TTtIKyspe3c9bVtMK0hdO2lmKCF3KWNvbnRpbnVlO3Y9TltIXTtjb25zdCBlPU1hdGgubWluKGkteCxHKTtzd2l0Y2goQyl7Y2FzZSAwOmZvcihKPTA7SjxlO0orKyl3W3grSl18PXZbSl07YnJlYWs7Y2FzZSAyOmZvcihKPTA7SjxlO0orKyl3W3grSl1ePXZbSl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtDfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWVsc2UgZm9yKEo9MDtKPE07SisrKXt3PW1beCtKXTtpZih3KXt2PU5bSl07c3dpdGNoKEMpe2Nhc2UgMDpmb3IoSD0wO0g8RztIKyspd1tMK0hdfD12W0hdO2JyZWFrO2Nhc2UgMjpmb3IoSD0wO0g8RztIKyspd1tMK0hdXj12W0hdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7Q30gaXMgbm90IHN1cHBvcnRlZGApfX19eSsrO2NvbnN0IFk9ZT9RLnRhYmxlRGVsdGFTLmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFMiLGIpO2lmKG51bGw9PT1ZKWJyZWFrO2ErPVUrWStsfX1yZXR1cm4gbX1mdW5jdGlvbiByZWFkU2VnbWVudEhlYWRlcihlLHQpe2NvbnN0IGk9e307aS5udW1iZXI9cmVhZFVpbnQzMihlLHQpO2NvbnN0IGE9ZVt0KzRdLHI9NjMmYTtpZighS3Rbcl0pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgc2VnbWVudCB0eXBlOiAiK3IpO2kudHlwZT1yO2kudHlwZU5hbWU9S3Rbcl07aS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmYSk7Y29uc3Qgcz0hISg2NCZhKSxuPWVbdCs1XTtsZXQgbz1uPj41Jjc7Y29uc3QgZz1bMzEmbl07bGV0IGM9dCs2O2lmKDc9PT1uKXtvPTUzNjg3MDkxMSZyZWFkVWludDMyKGUsYy0xKTtjKz0zO2xldCB0PW8rNz4+MztnWzBdPWVbYysrXTtmb3IoOy0tdD4wOylnLnB1c2goZVtjKytdKX1lbHNlIGlmKDU9PT1ufHw2PT09bil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2kucmV0YWluQml0cz1nO2xldCBsPTQ7aS5udW1iZXI8PTI1Nj9sPTE6aS5udW1iZXI8PTY1NTM2JiYobD0yKTtjb25zdCBoPVtdO2xldCBDLFE7Zm9yKEM9MDtDPG87QysrKXtsZXQgdDt0PTE9PT1sP2VbY106Mj09PWw/cmVhZFVpbnQxNihlLGMpOnJlYWRVaW50MzIoZSxjKTtoLnB1c2godCk7Yys9bH1pLnJlZmVycmVkVG89aDtpZihzKXtpLnBhZ2VBc3NvY2lhdGlvbj1yZWFkVWludDMyKGUsYyk7Yys9NH1lbHNlIGkucGFnZUFzc29jaWF0aW9uPWVbYysrXTtpLmxlbmd0aD1yZWFkVWludDMyKGUsYyk7Yys9NDtpZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpe2lmKDM4IT09cil0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLGMpLGE9ISEoMSZlW2MrV3RdKSxyPTYscz1uZXcgVWludDhBcnJheShyKTtpZighYSl7c1swXT0yNTU7c1sxXT0xNzJ9c1syXT10LmhlaWdodD4+PjI0JjI1NTtzWzNdPXQuaGVpZ2h0Pj4xNiYyNTU7c1s0XT10LmhlaWdodD4+OCYyNTU7c1s1XT0yNTUmdC5oZWlnaHQ7Zm9yKEM9YyxRPWUubGVuZ3RoO0M8UTtDKyspe2xldCB0PTA7Zm9yKDt0PHImJnNbdF09PT1lW0MrdF07KXQrKztpZih0PT09cil7aS5sZW5ndGg9QytyO2JyZWFrfX1pZig0Mjk0OTY3Mjk1PT09aS5sZW5ndGgpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQiKX19aS5oZWFkZXJFbmQ9YztyZXR1cm4gaX1mdW5jdGlvbiByZWFkU2VnbWVudHMoZSx0LGksYSl7Y29uc3Qgcj1bXTtsZXQgcz1pO2Zvcig7czxhOyl7Y29uc3QgaT1yZWFkU2VnbWVudEhlYWRlcih0LHMpO3M9aS5oZWFkZXJFbmQ7Y29uc3QgYT17aGVhZGVyOmksZGF0YTp0fTtpZighZS5yYW5kb21BY2Nlc3Mpe2Euc3RhcnQ9cztzKz1pLmxlbmd0aDthLmVuZD1zfXIucHVzaChhKTtpZig1MT09PWkudHlwZSlicmVha31pZihlLnJhbmRvbUFjY2Vzcylmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe3JbZV0uc3RhcnQ9cztzKz1yW2VdLmhlYWRlci5sZW5ndGg7cltlXS5lbmQ9c31yZXR1cm4gcn1mdW5jdGlvbiByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsdCl7cmV0dXJue3dpZHRoOnJlYWRVaW50MzIoZSx0KSxoZWlnaHQ6cmVhZFVpbnQzMihlLHQrNCkseDpyZWFkVWludDMyKGUsdCs4KSx5OnJlYWRVaW50MzIoZSx0KzEyKSxjb21iaW5hdGlvbk9wZXJhdG9yOjcmZVt0KzE2XX19Y29uc3QgV3Q9MTc7ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnQoZSx0KXtjb25zdCBpPWUuaGVhZGVyLGE9ZS5kYXRhLHI9ZS5lbmQ7bGV0IHMsbixvLGcsYz1lLnN0YXJ0O3N3aXRjaChpLnR5cGUpe2Nhc2UgMDpjb25zdCBlPXt9LHQ9cmVhZFVpbnQxNihhLGMpO2UuaHVmZm1hbj0hISgxJnQpO2UucmVmaW5lbWVudD0hISgyJnQpO2UuaHVmZm1hbkRIU2VsZWN0b3I9dD4+MiYzO2UuaHVmZm1hbkRXU2VsZWN0b3I9dD4+NCYzO2UuYml0bWFwU2l6ZVNlbGVjdG9yPXQ+PjYmMTtlLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9dD4+NyYxO2UuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JnQpO2UuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZ0KTtlLnRlbXBsYXRlPXQ+PjEwJjM7ZS5yZWZpbmVtZW50VGVtcGxhdGU9dD4+MTImMTtjKz0yO2lmKCFlLmh1ZmZtYW4pe2c9MD09PWUudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5hdD1ufWlmKGUucmVmaW5lbWVudCYmIWUucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWUucmVmaW5lbWVudEF0PW59ZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtlLm51bWJlck9mTmV3U3ltYm9scz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtlLGkubnVtYmVyLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSA2OmNhc2UgNzpjb25zdCBsPXt9O2wuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9V3Q7Y29uc3QgaD1yZWFkVWludDE2KGEsYyk7Yys9MjtsLmh1ZmZtYW49ISEoMSZoKTtsLnJlZmluZW1lbnQ9ISEoMiZoKTtsLmxvZ1N0cmlwU2l6ZT1oPj4yJjM7bC5zdHJpcFNpemU9MTw8bC5sb2dTdHJpcFNpemU7bC5yZWZlcmVuY2VDb3JuZXI9aD4+NCYzO2wudHJhbnNwb3NlZD0hISg2NCZoKTtsLmNvbWJpbmF0aW9uT3BlcmF0b3I9aD4+NyYzO2wuZGVmYXVsdFBpeGVsVmFsdWU9aD4+OSYxO2wuZHNPZmZzZXQ9aDw8MTc+PjI3O2wucmVmaW5lbWVudFRlbXBsYXRlPWg+PjE1JjE7aWYobC5odWZmbWFuKXtjb25zdCBlPXJlYWRVaW50MTYoYSxjKTtjKz0yO2wuaHVmZm1hbkZTPTMmZTtsLmh1ZmZtYW5EUz1lPj4yJjM7bC5odWZmbWFuRFQ9ZT4+NCYzO2wuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7bC5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMztsLmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMztsLmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKGwucmVmaW5lbWVudCYmIWwucmVmaW5lbWVudFRlbXBsYXRlKXtuPVtdO2ZvcihvPTA7bzwyO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWwucmVmaW5lbWVudEF0PW59bC5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtsLGkucmVmZXJyZWRUbyxhLGMscl07YnJlYWs7Y2FzZSAxNjpjb25zdCBDPXt9LFE9YVtjKytdO0MubW1yPSEhKDEmUSk7Qy50ZW1wbGF0ZT1RPj4xJjM7Qy5wYXR0ZXJuV2lkdGg9YVtjKytdO0MucGF0dGVybkhlaWdodD1hW2MrK107Qy5tYXhQYXR0ZXJuSW5kZXg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7cz1bQyxpLm51bWJlcixhLGMscl07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IEU9e307RS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz1XdDtjb25zdCB1PWFbYysrXTtFLm1tcj0hISgxJnUpO0UudGVtcGxhdGU9dT4+MSYzO0UuZW5hYmxlU2tpcD0hISg4JnUpO0UuY29tYmluYXRpb25PcGVyYXRvcj11Pj40Jjc7RS5kZWZhdWx0UGl4ZWxWYWx1ZT11Pj43JjE7RS5ncmlkV2lkdGg9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkSGVpZ2h0PXJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFg9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRPZmZzZXRZPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkVmVjdG9yWD1yZWFkVWludDE2KGEsYyk7Yys9MjtFLmdyaWRWZWN0b3JZPXJlYWRVaW50MTYoYSxjKTtjKz0yO3M9W0UsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDM4OmNhc2UgMzk6Y29uc3QgZD17fTtkLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPVd0O2NvbnN0IGY9YVtjKytdO2QubW1yPSEhKDEmZik7ZC50ZW1wbGF0ZT1mPj4xJjM7ZC5wcmVkaWN0aW9uPSEhKDgmZik7aWYoIWQubW1yKXtnPTA9PT1kLnRlbXBsYXRlPzQ6MTtuPVtdO2ZvcihvPTA7bzxnO28rKyl7bi5wdXNoKHt4OnJlYWRJbnQ4KGEsYykseTpyZWFkSW50OChhLGMrMSl9KTtjKz0yfWQuYXQ9bn1zPVtkLGEsYyxyXTticmVhaztjYXNlIDQ4OmNvbnN0IHA9e3dpZHRoOnJlYWRVaW50MzIoYSxjKSxoZWlnaHQ6cmVhZFVpbnQzMihhLGMrNCkscmVzb2x1dGlvblg6cmVhZFVpbnQzMihhLGMrOCkscmVzb2x1dGlvblk6cmVhZFVpbnQzMihhLGMrMTIpfTs0Mjk0OTY3Mjk1PT09cC5oZWlnaHQmJmRlbGV0ZSBwLmhlaWdodDtjb25zdCBtPWFbYysxNl07cmVhZFVpbnQxNihhLGMrMTcpO3AubG9zc2xlc3M9ISEoMSZtKTtwLnJlZmluZW1lbnQ9ISEoMiZtKTtwLmRlZmF1bHRQaXhlbFZhbHVlPW0+PjImMTtwLmNvbWJpbmF0aW9uT3BlcmF0b3I9bT4+MyYzO3AucmVxdWlyZXNCdWZmZXI9ISEoMzImbSk7cC5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU9ISEoNjQmbSk7cz1bcF07YnJlYWs7Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA2MjpicmVhaztjYXNlIDUzOnM9W2kubnVtYmVyLGEsYyxyXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzZWdtZW50IHR5cGUgJHtpLnR5cGVOYW1lfSgke2kudHlwZX0pIGlzIG5vdCBpbXBsZW1lbnRlZGApfWNvbnN0IGw9Im9uIitpLnR5cGVOYW1lO2wgaW4gdCYmdFtsXS5hcHBseSh0LHMpfWZ1bmN0aW9uIHByb2Nlc3NTZWdtZW50cyhlLHQpe2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylwcm9jZXNzU2VnbWVudChlW2ldLHQpfWNsYXNzIFNpbXBsZVNlZ21lbnRWaXNpdG9ye29uUGFnZUluZm9ybWF0aW9uKGUpe3RoaXMuY3VycmVudFBhZ2VJbmZvPWU7Y29uc3QgdD1lLndpZHRoKzc+PjMsaT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCplLmhlaWdodCk7ZS5kZWZhdWx0UGl4ZWxWYWx1ZSYmaS5maWxsKDI1NSk7dGhpcy5idWZmZXI9aX1kcmF3Qml0bWFwKGUsdCl7Y29uc3QgaT10aGlzLmN1cnJlbnRQYWdlSW5mbyxhPWUud2lkdGgscj1lLmhlaWdodCxzPWkud2lkdGgrNz4+MyxuPWkuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlP2UuY29tYmluYXRpb25PcGVyYXRvcjppLmNvbWJpbmF0aW9uT3BlcmF0b3Isbz10aGlzLmJ1ZmZlcixnPTEyOD4+KDcmZS54KTtsZXQgYyxsLGgsQyxRPWUueSpzKyhlLng+PjMpO3N3aXRjaChuKXtjYXNlIDA6Zm9yKGM9MDtjPHI7YysrKXtoPWc7Qz1RO2ZvcihsPTA7bDxhO2wrKyl7dFtjXVtsXSYmKG9bQ118PWgpO2g+Pj0xO2lmKCFoKXtoPTEyODtDKyt9fVErPXN9YnJlYWs7Y2FzZSAyOmZvcihjPTA7YzxyO2MrKyl7aD1nO0M9UTtmb3IobD0wO2w8YTtsKyspe3RbY11bbF0mJihvW0NdXj1oKTtoPj49MTtpZighaCl7aD0xMjg7QysrfX1RKz1zfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7bn0gaXMgbm90IHN1cHBvcnRlZGApfX1vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oZSx0LGksYSl7Y29uc3Qgcj1lLmluZm8scz1uZXcgRGVjb2RpbmdDb250ZXh0KHQsaSxhKSxuPWRlY29kZUJpdG1hcChlLm1tcixyLndpZHRoLHIuaGVpZ2h0LGUudGVtcGxhdGUsZS5wcmVkaWN0aW9uLG51bGwsZS5hdCxzKTt0aGlzLmRyYXdCaXRtYXAocixuKX1vbkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25TeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzKXtsZXQgbixvO2lmKGUuaHVmZm1hbil7bj1mdW5jdGlvbiBnZXRTeW1ib2xEaWN0aW9uYXJ5SHVmZm1hblRhYmxlcyhlLHQsaSl7bGV0IGEscixzLG4sbz0wO3N3aXRjaChlLmh1ZmZtYW5ESFNlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOmE9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5ESFNlbGVjdG9yKzQpO2JyZWFrO2Nhc2UgMzphPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBESCBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EV1NlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOnI9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EV1NlbGVjdG9yKzIpO2JyZWFrO2Nhc2UgMzpyPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVyBzZWxlY3RvciIpfWlmKGUuYml0bWFwU2l6ZVNlbGVjdG9yKXtzPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk7bysrfWVsc2Ugcz1nZXRTdGFuZGFyZFRhYmxlKDEpO249ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yP2dldEN1c3RvbUh1ZmZtYW5UYWJsZShvLHQsaSk6Z2V0U3RhbmRhcmRUYWJsZSgxKTtyZXR1cm57dGFibGVEZWx0YUhlaWdodDphLHRhYmxlRGVsdGFXaWR0aDpyLHRhYmxlQml0bWFwU2l6ZTpzLHRhYmxlQWdncmVnYXRlSW5zdGFuY2VzOm59fShlLGksdGhpcy5jdXN0b21UYWJsZXMpO289bmV3IFJlYWRlcihhLHIscyl9bGV0IGc9dGhpcy5zeW1ib2xzO2d8fCh0aGlzLnN5bWJvbHM9Zz17fSk7Y29uc3QgYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bmV3IERlY29kaW5nQ29udGV4dChhLHIscyk7Z1t0XT1mdW5jdGlvbiBkZWNvZGVTeW1ib2xEaWN0aW9uYXJ5KGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJzeW1ib2wgcmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IEM9W107bGV0IFE9MCxFPWxvZzIoaS5sZW5ndGgrYSk7Y29uc3QgdT1sLmRlY29kZXIsZD1sLmNvbnRleHRDYWNoZTtsZXQgZixwO2lmKGUpe2Y9Z2V0U3RhbmRhcmRUYWJsZSgxKTtwPVtdO0U9TWF0aC5tYXgoRSwxKX1mb3IoO0MubGVuZ3RoPGE7KXtRKz1lP3MudGFibGVEZWx0YUhlaWdodC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURIIix1KTtsZXQgYT0wLHI9MDtjb25zdCBmPWU/cC5sZW5ndGg6MDtmb3IoOzspe2NvbnN0IGY9ZT9zLnRhYmxlRGVsdGFXaWR0aC5kZWNvZGUoaCk6ZGVjb2RlSW50ZWdlcihkLCJJQURXIix1KTtpZihudWxsPT09ZilicmVhazthKz1mO3IrPWE7bGV0IG07aWYodCl7Y29uc3Qgcj1kZWNvZGVJbnRlZ2VyKGQsIklBQUkiLHUpO2lmKHI+MSltPWRlY29kZVRleHRSZWdpb24oZSx0LGEsUSwwLHIsMSxpLmNvbmNhdChDKSxFLDAsMCwxLDAscyxnLGMsbCwwLGgpO2Vsc2V7Y29uc3QgZT1kZWNvZGVJQUlEKGQsdSxFKSx0PWRlY29kZUludGVnZXIoZCwiSUFSRFgiLHUpLHI9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWSIsdSk7bT1kZWNvZGVSZWZpbmVtZW50KGEsUSxnLGU8aS5sZW5ndGg/aVtlXTpDW2UtaS5sZW5ndGhdLHQsciwhMSxjLGwpfUMucHVzaChtKX1lbHNlIGlmKGUpcC5wdXNoKGEpO2Vsc2V7bT1kZWNvZGVCaXRtYXAoITEsYSxRLG4sITEsbnVsbCxvLGwpO0MucHVzaChtKX19aWYoZSYmIXQpe2NvbnN0IGU9cy50YWJsZUJpdG1hcFNpemUuZGVjb2RlKGgpO2guYnl0ZUFsaWduKCk7bGV0IHQ7aWYoMD09PWUpdD1yZWFkVW5jb21wcmVzc2VkQml0bWFwKGgscixRKTtlbHNle2NvbnN0IGk9aC5lbmQsYT1oLnBvc2l0aW9uK2U7aC5lbmQ9YTt0PWRlY29kZU1NUkJpdG1hcChoLHIsUSwhMSk7aC5lbmQ9aTtoLnBvc2l0aW9uPWF9Y29uc3QgaT1wLmxlbmd0aDtpZihmPT09aS0xKUMucHVzaCh0KTtlbHNle2xldCBlLGEscixzLG4sbz0wO2ZvcihlPWY7ZTxpO2UrKyl7cz1wW2VdO3I9bytzO249W107Zm9yKGE9MDthPFE7YSsrKW4ucHVzaCh0W2FdLnN1YmFycmF5KG8scikpO0MucHVzaChuKTtvPXJ9fX19Y29uc3QgbT1bXSx5PVtdO2xldCB3LGIsRD0hMTtjb25zdCBTPWkubGVuZ3RoK2E7Zm9yKDt5Lmxlbmd0aDxTOyl7bGV0IHQ9ZT9mLmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBRVgiLHUpO2Zvcig7dC0tOyl5LnB1c2goRCk7RD0hRH1mb3Iodz0wLGI9aS5sZW5ndGg7dzxiO3crKyl5W3ddJiZtLnB1c2goaVt3XSk7Zm9yKGxldCBlPTA7ZTxhO3crKyxlKyspeVt3XSYmbS5wdXNoKENbZV0pO3JldHVybiBtfShlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGMsZS5udW1iZXJPZk5ld1N5bWJvbHMsZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scyxuLGUudGVtcGxhdGUsZS5hdCxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxsLG8pfW9uSW1tZWRpYXRlVGV4dFJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9ZS5pbmZvO2xldCBuLG87Y29uc3QgZz10aGlzLnN5bWJvbHMsYz1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PWdbZV07dCYmYy5wdXNoKC4uLnQpfWNvbnN0IGw9bG9nMihjLmxlbmd0aCk7aWYoZS5odWZmbWFuKXtvPW5ldyBSZWFkZXIoaSxhLHIpO249ZnVuY3Rpb24gZ2V0VGV4dFJlZ2lvbkh1ZmZtYW5UYWJsZXMoZSx0LGksYSxyKXtjb25zdCBzPVtdO2ZvcihsZXQgZT0wO2U8PTM0O2UrKyl7Y29uc3QgdD1yLnJlYWRCaXRzKDQpO3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSl9Y29uc3Qgbj1uZXcgSHVmZm1hblRhYmxlKHMsITEpO3MubGVuZ3RoPTA7Zm9yKGxldCBlPTA7ZTxhOyl7Y29uc3QgdD1uLmRlY29kZShyKTtpZih0Pj0zMil7bGV0IGksYSxuO3N3aXRjaCh0KXtjYXNlIDMyOmlmKDA9PT1lKXRocm93IG5ldyBKYmlnMkVycm9yKCJubyBwcmV2aW91cyB2YWx1ZSBpbiBzeW1ib2wgSUQgdGFibGUiKTthPXIucmVhZEJpdHMoMikrMztpPXNbZS0xXS5wcmVmaXhMZW5ndGg7YnJlYWs7Y2FzZSAzMzphPXIucmVhZEJpdHMoMykrMztpPTA7YnJlYWs7Y2FzZSAzNDphPXIucmVhZEJpdHMoNykrMTE7aT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgY29kZSBsZW5ndGggaW4gc3ltYm9sIElEIHRhYmxlIil9Zm9yKG49MDtuPGE7bisrKXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLGksMCwwXSkpO2UrK319ZWxzZXtzLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpO2UrK319ci5ieXRlQWxpZ24oKTtjb25zdCBvPW5ldyBIdWZmbWFuVGFibGUocywhMSk7bGV0IGcsYyxsLGg9MDtzd2l0Y2goZS5odWZmbWFuRlMpe2Nhc2UgMDpjYXNlIDE6Zz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkZTKzYpO2JyZWFrO2Nhc2UgMzpnPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBGUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EUyl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6Yz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRTKzgpO2JyZWFrO2Nhc2UgMzpjPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6bD1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUoaCx0LGkpO2grKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFQgc2VsZWN0b3IiKX1pZihlLnJlZmluZW1lbnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm57c3ltYm9sSURUYWJsZTpvLHRhYmxlRmlyc3RTOmcsdGFibGVEZWx0YVM6Yyx0YWJsZURlbHRhVDpsfX0oZSx0LHRoaXMuY3VzdG9tVGFibGVzLGMubGVuZ3RoLG8pfWNvbnN0IGg9bmV3IERlY29kaW5nQ29udGV4dChpLGEsciksQz1kZWNvZGVUZXh0UmVnaW9uKGUuaHVmZm1hbixlLnJlZmluZW1lbnQscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsZS5zdHJpcFNpemUsYyxsLGUudHJhbnNwb3NlZCxlLmRzT2Zmc2V0LGUucmVmZXJlbmNlQ29ybmVyLGUuY29tYmluYXRpb25PcGVyYXRvcixuLGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGgsZS5sb2dTdHJpcFNpemUsbyk7dGhpcy5kcmF3Qml0bWFwKHMsQyl9b25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbiguLi5hcmd1bWVudHMpfW9uUGF0dGVybkRpY3Rpb25hcnkoZSx0LGksYSxyKXtsZXQgcz10aGlzLnBhdHRlcm5zO3N8fCh0aGlzLnBhdHRlcm5zPXM9e30pO2NvbnN0IG49bmV3IERlY29kaW5nQ29udGV4dChpLGEscik7c1t0XT1mdW5jdGlvbiBkZWNvZGVQYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHIscyl7Y29uc3Qgbj1bXTtpZighZSl7bi5wdXNoKHt4Oi10LHk6MH0pOzA9PT1yJiZuLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3Qgbz1kZWNvZGVCaXRtYXAoZSwoYSsxKSp0LGksciwhMSxudWxsLG4scyksZz1bXTtmb3IobGV0IGU9MDtlPD1hO2UrKyl7Y29uc3QgYT1bXSxyPXQqZSxzPXIrdDtmb3IobGV0IGU9MDtlPGk7ZSsrKWEucHVzaChvW2VdLnN1YmFycmF5KHIscykpO2cucHVzaChhKX1yZXR1cm4gZ30oZS5tbXIsZS5wYXR0ZXJuV2lkdGgsZS5wYXR0ZXJuSGVpZ2h0LGUubWF4UGF0dGVybkluZGV4LGUudGVtcGxhdGUsbil9b25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5wYXR0ZXJuc1t0WzBdXSxuPWUuaW5mbyxvPW5ldyBEZWNvZGluZ0NvbnRleHQoaSxhLHIpLGc9ZnVuY3Rpb24gZGVjb2RlSGFsZnRvbmVSZWdpb24oZSx0LGksYSxyLHMsbixvLGcsYyxsLGgsQyxRLEUpe2lmKG4pdGhyb3cgbmV3IEpiaWcyRXJyb3IoInNraXAgaXMgbm90IHN1cHBvcnRlZCIpO2lmKDAhPT1vKXRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAiJHtvfSIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb25gKTtjb25zdCB1PVtdO2xldCBkLGYscDtmb3IoZD0wO2Q8cjtkKyspe3A9bmV3IFVpbnQ4QXJyYXkoYSk7aWYocylmb3IoZj0wO2Y8YTtmKyspcFtmXT1zO3UucHVzaChwKX1jb25zdCBtPXQubGVuZ3RoLHk9dFswXSx3PXlbMF0ubGVuZ3RoLGI9eS5sZW5ndGgsRD1sb2cyKG0pLFM9W107aWYoIWUpe1MucHVzaCh7eDppPD0xPzM6Mix5Oi0xfSk7MD09PWkmJlMucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBrPVtdO2xldCBSLE4sRyxNLFUseCxMLEgsSix2LFk7ZSYmKFI9bmV3IFJlYWRlcihFLmRhdGEsRS5zdGFydCxFLmVuZCkpO2ZvcihkPUQtMTtkPj0wO2QtLSl7Tj1lP2RlY29kZU1NUkJpdG1hcChSLGcsYywhMCk6ZGVjb2RlQml0bWFwKCExLGcsYyxpLCExLG51bGwsUyxFKTtrW2RdPU59Zm9yKEc9MDtHPGM7RysrKWZvcihNPTA7TTxnO00rKyl7VT0wO3g9MDtmb3IoZj1ELTE7Zj49MDtmLS0pe1VePWtbZl1bR11bTV07eHw9VTw8Zn1MPXRbeF07SD1sK0cqUStNKkM+Pjg7Sj1oK0cqQy1NKlE+Pjg7aWYoSD49MCYmSCt3PD1hJiZKPj0wJiZKK2I8PXIpZm9yKGQ9MDtkPGI7ZCsrKXtZPXVbSitkXTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKVlbSCtmXXw9dltmXX1lbHNle2xldCBlLHQ7Zm9yKGQ9MDtkPGI7ZCsrKXt0PUorZDtpZighKHQ8MHx8dD49cikpe1k9dVt0XTt2PUxbZF07Zm9yKGY9MDtmPHc7ZisrKXtlPUgrZjtlPj0wJiZlPGEmJihZW2VdfD12W2ZdKX19fX19cmV0dXJuIHV9KGUubW1yLHMsZS50ZW1wbGF0ZSxuLndpZHRoLG4uaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5lbmFibGVTa2lwLGUuY29tYmluYXRpb25PcGVyYXRvcixlLmdyaWRXaWR0aCxlLmdyaWRIZWlnaHQsZS5ncmlkT2Zmc2V0WCxlLmdyaWRPZmZzZXRZLGUuZ3JpZFZlY3RvclgsZS5ncmlkVmVjdG9yWSxvKTt0aGlzLmRyYXdCaXRtYXAobixnKX1vbkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oLi4uYXJndW1lbnRzKX1vblRhYmxlcyhlLHQsaSxhKXtsZXQgcj10aGlzLmN1c3RvbVRhYmxlcztyfHwodGhpcy5jdXN0b21UYWJsZXM9cj17fSk7cltlXT1mdW5jdGlvbiBkZWNvZGVUYWJsZXNTZWdtZW50KGUsdCxpKXtjb25zdCBhPWVbdF0scj00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzEpLHM9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCs1KSxuPW5ldyBSZWFkZXIoZSx0KzksaSksbz0xKyhhPj4xJjcpLGc9MSsoYT4+NCY3KSxjPVtdO2xldCBsLGgsQz1yO2Rve2w9bi5yZWFkQml0cyhvKTtoPW4ucmVhZEJpdHMoZyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbQyxsLGgsMF0pKTtDKz0xPDxofXdoaWxlKEM8cyk7bD1uLnJlYWRCaXRzKG8pO2MucHVzaChuZXcgSHVmZm1hbkxpbmUoW3ItMSxsLDMyLDAsImxvd2VyIl0pKTtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbcyxsLDMyLDBdKSk7aWYoMSZhKXtsPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbbCwwXSkpfXJldHVybiBuZXcgSHVmZm1hblRhYmxlKGMsITEpfSh0LGksYSl9fWNsYXNzIEh1ZmZtYW5MaW5le2NvbnN0cnVjdG9yKGUpe2lmKDI9PT1lLmxlbmd0aCl7dGhpcy5pc09PQj0hMDt0aGlzLnJhbmdlTG93PTA7dGhpcy5wcmVmaXhMZW5ndGg9ZVswXTt0aGlzLnJhbmdlTGVuZ3RoPTA7dGhpcy5wcmVmaXhDb2RlPWVbMV07dGhpcy5pc0xvd2VyUmFuZ2U9ITF9ZWxzZXt0aGlzLmlzT09CPSExO3RoaXMucmFuZ2VMb3c9ZVswXTt0aGlzLnByZWZpeExlbmd0aD1lWzFdO3RoaXMucmFuZ2VMZW5ndGg9ZVsyXTt0aGlzLnByZWZpeENvZGU9ZVszXTt0aGlzLmlzTG93ZXJSYW5nZT0ibG93ZXIiPT09ZVs0XX19fWNsYXNzIEh1ZmZtYW5UcmVlTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNoaWxkcmVuPVtdO2lmKGUpe3RoaXMuaXNMZWFmPSEwO3RoaXMucmFuZ2VMZW5ndGg9ZS5yYW5nZUxlbmd0aDt0aGlzLnJhbmdlTG93PWUucmFuZ2VMb3c7dGhpcy5pc0xvd2VyUmFuZ2U9ZS5pc0xvd2VyUmFuZ2U7dGhpcy5pc09PQj1lLmlzT09CfWVsc2UgdGhpcy5pc0xlYWY9ITF9YnVpbGRUcmVlKGUsdCl7Y29uc3QgaT1lLnByZWZpeENvZGU+PnQmMTtpZih0PD0wKXRoaXMuY2hpbGRyZW5baV09bmV3IEh1ZmZtYW5UcmVlTm9kZShlKTtlbHNle2xldCBhPXRoaXMuY2hpbGRyZW5baV07YXx8KHRoaXMuY2hpbGRyZW5baV09YT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpKTthLmJ1aWxkVHJlZShlLHQtMSl9fWRlY29kZU5vZGUoZSl7aWYodGhpcy5pc0xlYWYpe2lmKHRoaXMuaXNPT0IpcmV0dXJuIG51bGw7Y29uc3QgdD1lLnJlYWRCaXRzKHRoaXMucmFuZ2VMZW5ndGgpO3JldHVybiB0aGlzLnJhbmdlTG93Kyh0aGlzLmlzTG93ZXJSYW5nZT8tdDp0KX1jb25zdCB0PXRoaXMuY2hpbGRyZW5bZS5yZWFkQml0KCldO2lmKCF0KXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gZGF0YSIpO3JldHVybiB0LmRlY29kZU5vZGUoZSl9fWNsYXNzIEh1ZmZtYW5UYWJsZXtjb25zdHJ1Y3RvcihlLHQpe3R8fHRoaXMuYXNzaWduUHJlZml4Q29kZXMoZSk7dGhpcy5yb290Tm9kZT1uZXcgSHVmZm1hblRyZWVOb2RlKG51bGwpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lW3RdO2kucHJlZml4TGVuZ3RoPjAmJnRoaXMucm9vdE5vZGUuYnVpbGRUcmVlKGksaS5wcmVmaXhMZW5ndGgtMSl9fWRlY29kZShlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfWFzc2lnblByZWZpeENvZGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MDtmb3IobGV0IGE9MDthPHQ7YSsrKWk9TWF0aC5tYXgoaSxlW2FdLnByZWZpeExlbmd0aCk7Y29uc3QgYT1uZXcgVWludDMyQXJyYXkoaSsxKTtmb3IobGV0IGk9MDtpPHQ7aSsrKWFbZVtpXS5wcmVmaXhMZW5ndGhdKys7bGV0IHIscyxuLG89MSxnPTA7YVswXT0wO2Zvcig7bzw9aTspe2c9ZythW28tMV08PDE7cj1nO3M9MDtmb3IoO3M8dDspe249ZVtzXTtpZihuLnByZWZpeExlbmd0aD09PW8pe24ucHJlZml4Q29kZT1yO3IrK31zKyt9bysrfX19Y29uc3QganQ9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxpPWp0W2VdO2lmKGkpcmV0dXJuIGk7c3dpdGNoKGUpe2Nhc2UgMTp0PVtbMCwxLDQsMF0sWzE2LDIsOCwyXSxbMjcyLDMsMTYsNl0sWzY1ODA4LDMsMzIsN11dO2JyZWFrO2Nhc2UgMjp0PVtbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFs3NSw2LDMyLDYyXSxbNiw2M11dO2JyZWFrO2Nhc2UgMzp0PVtbLTI1Niw4LDgsMjU0XSxbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFstMjU3LDgsMzIsMjU1LCJsb3dlciJdLFs3NSw3LDMyLDEyNl0sWzYsNjJdXTticmVhaztjYXNlIDQ6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbNzYsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgNTp0PVtbLTI1NSw3LDgsMTI2XSxbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFstMjU2LDcsMzIsMTI3LCJsb3dlciJdLFs3Niw2LDMyLDYyXV07YnJlYWs7Y2FzZSA2OnQ9W1stMjA0OCw1LDEwLDI4XSxbLTEwMjQsNCw5LDhdLFstNTEyLDQsOCw5XSxbLTI1Niw0LDcsMTBdLFstMTI4LDUsNiwyOV0sWy02NCw1LDUsMzBdLFstMzIsNCw1LDExXSxbMCwyLDcsMF0sWzEyOCwzLDcsMl0sWzI1NiwzLDgsM10sWzUxMiw0LDksMTJdLFsxMDI0LDQsMTAsMTNdLFstMjA0OSw2LDMyLDYyLCJsb3dlciJdLFsyMDQ4LDYsMzIsNjNdXTticmVhaztjYXNlIDc6dD1bWy0xMDI0LDQsOSw4XSxbLTUxMiwzLDgsMF0sWy0yNTYsNCw3LDldLFstMTI4LDUsNiwyNl0sWy02NCw1LDUsMjddLFstMzIsNCw1LDEwXSxbMCw0LDUsMTFdLFszMiw1LDUsMjhdLFs2NCw1LDYsMjldLFsxMjgsNCw3LDEyXSxbMjU2LDMsOCwxXSxbNTEyLDMsOSwyXSxbMTAyNCwzLDEwLDNdLFstMTAyNSw1LDMyLDMwLCJsb3dlciJdLFsyMDQ4LDUsMzIsMzFdXTticmVhaztjYXNlIDg6dD1bWy0xNSw4LDMsMjUyXSxbLTcsOSwxLDUwOF0sWy01LDgsMSwyNTNdLFstMyw5LDAsNTA5XSxbLTIsNywwLDEyNF0sWy0xLDQsMCwxMF0sWzAsMiwxLDBdLFsyLDUsMCwyNl0sWzMsNiwwLDU4XSxbNCwzLDQsNF0sWzIwLDYsMSw1OV0sWzIyLDQsNCwxMV0sWzM4LDQsNSwxMl0sWzcwLDUsNiwyN10sWzEzNCw1LDcsMjhdLFsyNjIsNiw3LDYwXSxbMzkwLDcsOCwxMjVdLFs2NDYsNiwxMCw2MV0sWy0xNiw5LDMyLDUxMCwibG93ZXIiXSxbMTY3MCw5LDMyLDUxMV0sWzIsMV1dO2JyZWFrO2Nhc2UgOTp0PVtbLTMxLDgsNCwyNTJdLFstMTUsOSwyLDUwOF0sWy0xMSw4LDIsMjUzXSxbLTcsOSwxLDUwOV0sWy01LDcsMSwxMjRdLFstMyw0LDEsMTBdLFstMSwzLDEsMl0sWzEsMywxLDNdLFszLDUsMSwyNl0sWzUsNiwxLDU4XSxbNywzLDUsNF0sWzM5LDYsMiw1OV0sWzQzLDQsNSwxMV0sWzc1LDQsNiwxMl0sWzEzOSw1LDcsMjddLFsyNjcsNSw4LDI4XSxbNTIzLDYsOCw2MF0sWzc3OSw3LDksMTI1XSxbMTI5MSw2LDExLDYxXSxbLTMyLDksMzIsNTEwLCJsb3dlciJdLFszMzM5LDksMzIsNTExXSxbMiwwXV07YnJlYWs7Y2FzZSAxMDp0PVtbLTIxLDcsNCwxMjJdLFstNSw4LDAsMjUyXSxbLTQsNywwLDEyM10sWy0zLDUsMCwyNF0sWy0yLDIsMiwwXSxbMiw1LDAsMjVdLFszLDYsMCw1NF0sWzQsNywwLDEyNF0sWzUsOCwwLDI1M10sWzYsMiw2LDFdLFs3MCw1LDUsMjZdLFsxMDIsNiw1LDU1XSxbMTM0LDYsNiw1Nl0sWzE5OCw2LDcsNTddLFszMjYsNiw4LDU4XSxbNTgyLDYsOSw1OV0sWzEwOTQsNiwxMCw2MF0sWzIxMTgsNywxMSwxMjVdLFstMjIsOCwzMiwyNTQsImxvd2VyIl0sWzQxNjYsOCwzMiwyNTVdLFsyLDJdXTticmVhaztjYXNlIDExOnQ9W1sxLDEsMCwwXSxbMiwyLDEsMl0sWzQsNCwwLDEyXSxbNSw0LDEsMTNdLFs3LDUsMSwyOF0sWzksNSwyLDI5XSxbMTMsNiwyLDYwXSxbMTcsNywyLDEyMl0sWzIxLDcsMywxMjNdLFsyOSw3LDQsMTI0XSxbNDUsNyw1LDEyNV0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDEyOnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywxLDZdLFs1LDUsMCwyOF0sWzYsNSwxLDI5XSxbOCw2LDEsNjBdLFsxMCw3LDAsMTIyXSxbMTEsNywxLDEyM10sWzEzLDcsMiwxMjRdLFsxNyw3LDMsMTI1XSxbMjUsNyw0LDEyNl0sWzQxLDgsNSwyNTRdLFs3Myw4LDMyLDI1NV1dO2JyZWFrO2Nhc2UgMTM6dD1bWzEsMSwwLDBdLFsyLDMsMCw0XSxbMyw0LDAsMTJdLFs0LDUsMCwyOF0sWzUsNCwxLDEzXSxbNywzLDMsNV0sWzE1LDYsMSw1OF0sWzE3LDYsMiw1OV0sWzIxLDYsMyw2MF0sWzI5LDYsNCw2MV0sWzQ1LDYsNSw2Ml0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDE0OnQ9W1stMiwzLDAsNF0sWy0xLDMsMCw1XSxbMCwxLDAsMF0sWzEsMywwLDZdLFsyLDMsMCw3XV07YnJlYWs7Y2FzZSAxNTp0PVtbLTI0LDcsNCwxMjRdLFstOCw2LDIsNjBdLFstNCw1LDEsMjhdLFstMiw0LDAsMTJdLFstMSwzLDAsNF0sWzAsMSwwLDBdLFsxLDMsMCw1XSxbMiw0LDAsMTNdLFszLDUsMSwyOV0sWzUsNiwyLDYxXSxbOSw3LDQsMTI1XSxbLTI1LDcsMzIsMTI2LCJsb3dlciJdLFsyNSw3LDMyLDEyN11dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHN0YW5kYXJkIHRhYmxlIEIuJHtlfSBkb2VzIG5vdCBleGlzdGApfWZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0W2VdPW5ldyBIdWZmbWFuTGluZSh0W2VdKTtpPW5ldyBIdWZmbWFuVGFibGUodCwhMCk7anRbZV09aTtyZXR1cm4gaX1jbGFzcyBSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuZGF0YT1lO3RoaXMuc3RhcnQ9dDt0aGlzLmVuZD1pO3RoaXMucG9zaXRpb249dDt0aGlzLnNoaWZ0PS0xO3RoaXMuY3VycmVudEJ5dGU9MH1yZWFkQml0KCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdO3RoaXMuc2hpZnQ9N31jb25zdCBlPXRoaXMuY3VycmVudEJ5dGU+PnRoaXMuc2hpZnQmMTt0aGlzLnNoaWZ0LS07cmV0dXJuIGV9cmVhZEJpdHMoZSl7bGV0IHQsaT0wO2Zvcih0PWUtMTt0Pj0wO3QtLSlpfD10aGlzLnJlYWRCaXQoKTw8dDtyZXR1cm4gaX1ieXRlQWxpZ24oKXt0aGlzLnNoaWZ0PS0xfW5leHQoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5lbmQ/LTE6dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK119fWZ1bmN0aW9uIGdldEN1c3RvbUh1ZmZtYW5UYWJsZShlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9aVt0W3JdXTtpZihzKXtpZihlPT09YSlyZXR1cm4gczthKyt9fXRocm93IG5ldyBKYmlnMkVycm9yKCJjYW4ndCBmaW5kIGN1c3RvbSBIdWZmbWFuIHRhYmxlIil9ZnVuY3Rpb24gcmVhZFVuY29tcHJlc3NlZEJpdG1hcChlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO2EucHVzaChpKTtmb3IobGV0IGE9MDthPHQ7YSsrKWlbYV09ZS5yZWFkQml0KCk7ZS5ieXRlQWxpZ24oKX1yZXR1cm4gYX1mdW5jdGlvbiBkZWNvZGVNTVJCaXRtYXAoZSx0LGksYSl7Y29uc3Qgcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGUse0s6LTEsQ29sdW1uczp0LFJvd3M6aSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOmF9KSxzPVtdO2xldCBuLG89ITE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtzLnB1c2goZSk7bGV0IGk9LTE7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYoaTwwKXtuPXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1uKXtuPTA7bz0hMH1pPTd9ZVthXT1uPj5pJjE7aS0tfX1pZihhJiYhbyl7Y29uc3QgZT01O2ZvcihsZXQgdD0wO3Q8ZSYmLTEhPT1yLnJlYWROZXh0Q2hhcigpO3QrKyk7fXJldHVybiBzfWNsYXNzIEpiaWcySW1hZ2V7cGFyc2VDaHVua3MoZSl7cmV0dXJuIGZ1bmN0aW9uIHBhcnNlSmJpZzJDaHVua3MoZSl7Y29uc3QgdD1uZXcgU2ltcGxlU2VnbWVudFZpc2l0b3I7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07cHJvY2Vzc1NlZ21lbnRzKHJlYWRTZWdtZW50cyh7fSxhLmRhdGEsYS5zdGFydCxhLmVuZCksdCl9cmV0dXJuIHQuYnVmZmVyfShlKX1wYXJzZShlKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogSmJpZzJJbWFnZS5wYXJzZSIpfX1jbGFzcyBKYmlnMlN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7Y29uc3QgdD1uZXcgSmJpZzJJbWFnZSxpPVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKTtpLnB1c2goe2RhdGE6dCxzdGFydDowLGVuZDp0Lmxlbmd0aH0pfX1pLnB1c2goe2RhdGE6ZSxzdGFydDowLGVuZDplLmxlbmd0aH0pO2NvbnN0IGE9dC5wYXJzZUNodW5rcyhpKSxyPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cjtlKyspYVtlXV49MjU1O3RoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBTOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIGs6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLGRlc3RQb3M6YT0wLHdpZHRoOnIsaGVpZ2h0OnN9KXtsZXQgbj0wO2NvbnN0IG89cipzKjMsZz1vPj4yLGM9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsZyk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT00Mjc4MTkwMDgwfGU7aVthKzFdPWU+Pj4yNHx0PDw4fDQyNzgxOTAwODA7aVthKzJdPXQ+Pj4xNnxyPDwxNnw0Mjc4MTkwMDgwO2lbYSszXT1yPj4+OHw0Mjc4MTkwMDgwfWZvcihsZXQgcj00Km4scz10K287cjxzO3IrPTMpaVthKytdPWVbcl18ZVtyKzFdPDw4fGVbcisyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7bjxnLTI7bis9MyxhKz00KXtjb25zdCBlPWNbbl0sdD1jW24rMV0scj1jW24rMl07aVthXT0yNTV8ZTtpW2ErMV09ZTw8MjR8dD4+Pjh8MjU1O2lbYSsyXT10PDwxNnxyPj4+MTZ8MjU1O2lbYSszXT1yPDw4fDI1NX1mb3IobGV0IHI9NCpuLHM9dCtvO3I8cztyKz0zKWlbYSsrXT1lW3JdPDwyNHxlW3IrMV08PDE2fGVbcisyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0K28sZGVzdFBvczphfX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLHdpZHRoOmEsaGVpZ2h0OnIsbm9uQmxhY2tDb2xvcjpzPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpuPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbZyxjXT1uP1tzLG9dOltvLHNdLGw9YT4+MyxoPTcmYSxDPWUubGVuZ3RoO2k9bmV3IFVpbnQzMkFycmF5KGkuYnVmZmVyKTtsZXQgUT0wO2ZvcihsZXQgYT0wO2E8cjthKyspe2Zvcihjb25zdCBhPXQrbDt0PGE7dCsrKXtjb25zdCBhPXQ8Qz9lW3RdOjI1NTtpW1ErK109MTI4JmE/YzpnO2lbUSsrXT02NCZhP2M6ZztpW1ErK109MzImYT9jOmc7aVtRKytdPTE2JmE/YzpnO2lbUSsrXT04JmE/YzpnO2lbUSsrXT00JmE/YzpnO2lbUSsrXT0yJmE/YzpnO2lbUSsrXT0xJmE/YzpnfWlmKDA9PT1oKWNvbnRpbnVlO2NvbnN0IGE9dDxDP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTxoO2UrKylpW1ErK109YSYxPDw3LWU/YzpnfXJldHVybntzcmNQb3M6dCxkZXN0UG9zOlF9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IFh0PW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksVnQ9NDAxNyxadD03OTksX3Q9MzQwNix6dD0yMjc2LCR0PTE1NjcsQWk9Mzc4NCxlaT01NzkzLHRpPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgaSxhLHI9MCxzPTE2O2Zvcig7cz4wJiYhZVtzLTFdOylzLS07Y29uc3Qgbj1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxnPW5bMF07Zm9yKGk9MDtpPHM7aSsrKXtmb3IoYT0wO2E8ZVtpXTthKyspe2c9bi5wb3AoKTtnLmNoaWxkcmVuW2cuaW5kZXhdPXRbcl07Zm9yKDtnLmluZGV4PjA7KWc9bi5wb3AoKTtnLmluZGV4Kys7bi5wdXNoKGcpO2Zvcig7bi5sZW5ndGg8PWk7KXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99cisrfWlmKGkrMTxzKXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99fXJldHVybiBuWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxpKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtpKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxpLGEscixzLG4sbyxnLGM9ITEpe2NvbnN0IGw9aS5tY3VzUGVyTGluZSxoPWkucHJvZ3Jlc3NpdmUsQz10O2xldCBRPTAsRT0wO2Z1bmN0aW9uIHJlYWRCaXQoKXtpZihFPjApe0UtLTtyZXR1cm4gUT4+RSYxfVE9ZVt0KytdO2lmKDI1NT09PVEpe2NvbnN0IGE9ZVt0KytdO2lmKGEpe2lmKDIyMD09PWEmJmMpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQrPTIpO3QrPTI7aWYoYT4wJiZhIT09aS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixhKX1lbHNlIGlmKDIxNz09PWEpe2lmKGMpe2NvbnN0IGU9cCooOD09PWkucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGkuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KFE8PDh8YSkudG9TdHJpbmcoMTYpfWApfX1FPTc7cmV0dXJuIFE+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IHU9MDtsZXQgZCxmPTA7bGV0IHA9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGksYSxyKXtjb25zdCBzPWklbDtwPShpL2x8MCkqZS52K2E7Y29uc3Qgbj1zKmUuaCtyO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHAsbikpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxpKXtwPWkvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3QgYT1pJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLGEpKX1jb25zdCBtPWEubGVuZ3RoO2xldCB5LHcsYixELFMsaztrPWg/MD09PXM/MD09PW8/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTw8ZztlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWF9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGd9OjA9PT1vP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZih1PjApe3UtLTtyZXR1cm59bGV0IGk9cztjb25zdCBhPW47Zm9yKDtpPD1hOyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxzPWE+PjQ7aWYoMD09PXIpe2lmKHM8MTUpe3U9cmVjZWl2ZShzKSsoMTw8cyktMTticmVha31pKz0xNjtjb250aW51ZX1pKz1zO2NvbnN0IG49WHRbaV07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKHIpKigxPDxnKTtpKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgaT1zO2NvbnN0IGE9bjtsZXQgcixvLGM9MDtmb3IoO2k8PWE7KXtjb25zdCBhPXQrWHRbaV0scz1lLmJsb2NrRGF0YVthXTwwPy0xOjE7c3dpdGNoKGYpe2Nhc2UgMDpvPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cj0xNSZvO2M9bz4+NDtpZigwPT09cilpZihjPDE1KXt1PXJlY2VpdmUoYykrKDE8PGMpO2Y9NH1lbHNle2M9MTY7Zj0xfWVsc2V7aWYoMSE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtkPXJlY2VpdmVBbmRFeHRlbmQocik7Zj1jPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpO2Vsc2V7Yy0tOzA9PT1jJiYoZj0yPT09Zj8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKTtlbHNle2UuYmxvY2tEYXRhW2FdPWQ8PGc7Zj0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVthXSYmKGUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpKX1pKyt9aWYoND09PWYpe3UtLTswPT09dSYmKGY9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWE7bGV0IHI9MTtmb3IoO3I8NjQ7KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksYT0xNSZpLHM9aT4+NDtpZigwPT09YSl7aWYoczwxNSlicmVhaztyKz0xNjtjb250aW51ZX1yKz1zO2NvbnN0IG49WHRbcl07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKGEpO3IrK319O2xldCBSLE49MDtjb25zdCBHPTE9PT1tP2FbMF0uYmxvY2tzUGVyTGluZSphWzBdLmJsb2Nrc1BlckNvbHVtbjpsKmkubWN1c1BlckNvbHVtbjtsZXQgTSxVO2Zvcig7Tjw9Rzspe2NvbnN0IGk9cj9NYXRoLm1pbihHLU4scik6RztpZihpPjApe2Zvcih3PTA7dzxtO3crKylhW3ddLnByZWQ9MDt1PTA7aWYoMT09PW0pe3k9YVswXTtmb3IoUz0wO1M8aTtTKyspe2RlY29kZUJsb2NrKHksayxOKTtOKyt9fWVsc2UgZm9yKFM9MDtTPGk7UysrKXtmb3Iodz0wO3c8bTt3Kyspe3k9YVt3XTtNPXkuaDtVPXkudjtmb3IoYj0wO2I8VTtiKyspZm9yKEQ9MDtEPE07RCsrKWRlY29kZU1jdSh5LGssTixiLEQpfU4rK319RT0wO1I9ZmluZE5leHRGaWxlTWFya2VyKGUsdCk7aWYoIVIpYnJlYWs7aWYoUi5pbnZhbGlkKXt3YXJuKGBkZWNvZGVTY2FuIC0gJHtpPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUifSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7Ui5pbnZhbGlkfWApO3Q9Ui5vZmZzZXR9aWYoIShSLm1hcmtlcj49NjU0ODgmJlIubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1DfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsaSl7Y29uc3QgYT1lLnF1YW50aXphdGlvblRhYmxlLHI9ZS5ibG9ja0RhdGE7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkLGYscCxtLHksdztpZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe1E9clt0K2VdO0U9clt0K2UrMV07dT1yW3QrZSsyXTtkPXJbdCtlKzNdO2Y9clt0K2UrNF07cD1yW3QrZSs1XTttPXJbdCtlKzZdO3k9clt0K2UrN107USo9YVtlXTtpZihFfHV8ZHxmfHB8bXx5KXtFKj1hW2UrMV07dSo9YVtlKzJdO2QqPWFbZSszXTtmKj1hW2UrNF07cCo9YVtlKzVdO20qPWFbZSs2XTt5Kj1hW2UrN107cz1laSpRKzEyOD4+ODtuPWVpKmYrMTI4Pj44O289dTtnPW07Yz10aSooRS15KSsxMjg+Pjg7Qz10aSooRSt5KSsxMjg+Pjg7bD1kPDw0O2g9cDw8NDtzPXMrbisxPj4xO249cy1uO3c9bypBaStnKiR0KzEyOD4+ODtvPW8qJHQtZypBaSsxMjg+Pjg7Zz13O2M9YytoKzE+PjE7aD1jLWg7Qz1DK2wrMT4+MTtsPUMtbDtzPXMrZysxPj4xO2c9cy1nO249bitvKzE+PjE7bz1uLW87dz1jKnp0K0MqX3QrMjA0OD4+MTI7Yz1jKl90LUMqenQrMjA0OD4+MTI7Qz13O3c9bCpadCtoKlZ0KzIwNDg+PjEyO2w9bCpWdC1oKlp0KzIwNDg+PjEyO2g9dztpW2VdPXMrQztpW2UrN109cy1DO2lbZSsxXT1uK2g7aVtlKzZdPW4taDtpW2UrMl09bytsO2lbZSs1XT1vLWw7aVtlKzNdPWcrYztpW2UrNF09Zy1jfWVsc2V7dz1laSpRKzUxMj4+MTA7aVtlXT13O2lbZSsxXT13O2lbZSsyXT13O2lbZSszXT13O2lbZSs0XT13O2lbZSs1XT13O2lbZSs2XT13O2lbZSs3XT13fX1mb3IobGV0IGU9MDtlPDg7KytlKXtRPWlbZV07RT1pW2UrOF07dT1pW2UrMTZdO2Q9aVtlKzI0XTtmPWlbZSszMl07cD1pW2UrNDBdO209aVtlKzQ4XTt5PWlbZSs1Nl07aWYoRXx1fGR8ZnxwfG18eSl7cz1laSpRKzIwNDg+PjEyO249ZWkqZisyMDQ4Pj4xMjtvPXU7Zz1tO2M9dGkqKEUteSkrMjA0OD4+MTI7Qz10aSooRSt5KSsyMDQ4Pj4xMjtsPWQ7aD1wO3M9NDExMisocytuKzE+PjEpO249cy1uO3c9bypBaStnKiR0KzIwNDg+PjEyO289byokdC1nKkFpKzIwNDg+PjEyO2c9dztjPWMraCsxPj4xO2g9Yy1oO0M9QytsKzE+PjE7bD1DLWw7cz1zK2crMT4+MTtnPXMtZztuPW4rbysxPj4xO289bi1vO3c9Yyp6dCtDKl90KzIwNDg+PjEyO2M9YypfdC1DKnp0KzIwNDg+PjEyO0M9dzt3PWwqWnQraCpWdCsyMDQ4Pj4xMjtsPWwqVnQtaCpadCsyMDQ4Pj4xMjtoPXc7UT1zK0M7eT1zLUM7RT1uK2g7bT1uLWg7dT1vK2w7cD1vLWw7ZD1nK2M7Zj1nLWM7UTwxNj9RPTA6UT49NDA4MD9RPTI1NTpRPj49NDtFPDE2P0U9MDpFPj00MDgwP0U9MjU1OkU+Pj00O3U8MTY/dT0wOnU+PTQwODA/dT0yNTU6dT4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7bTwxNj9tPTA6bT49NDA4MD9tPTI1NTptPj49NDt5PDE2P3k9MDp5Pj00MDgwP3k9MjU1Onk+Pj00O3JbdCtlXT1RO3JbdCtlKzhdPUU7clt0K2UrMTZdPXU7clt0K2UrMjRdPWQ7clt0K2UrMzJdPWY7clt0K2UrNDBdPXA7clt0K2UrNDhdPW07clt0K2UrNTZdPXl9ZWxzZXt3PWVpKlErODE5Mj4+MTQ7dz13PC0yMDQwPzA6dz49MjAyND8yNTU6dysyMDU2Pj40O3JbdCtlXT13O3JbdCtlKzhdPXc7clt0K2UrMTZdPXc7clt0K2UrMjRdPXc7clt0K2UrMzJdPXc7clt0K2UrNDBdPXc7clt0K2UrNDhdPXc7clt0K2UrNTZdPXd9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBpPXQuYmxvY2tzUGVyTGluZSxhPXQuYmxvY2tzUGVyQ29sdW1uLHI9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBhPTA7YTxpO2ErKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLGEpLHIpfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGk9dCl7Y29uc3QgYT1lLmxlbmd0aC0xO2xldCByPWk8dD9pOnQ7aWYodD49YSlyZXR1cm4gbnVsbDtjb25zdCBzPXJlYWRVaW50MTYoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG49cmVhZFVpbnQxNihlLHIpO2Zvcig7IShuPj02NTQ3MiYmbjw9NjU1MzQpOyl7aWYoKytyPj1hKXJldHVybiBudWxsO249cmVhZFVpbnQxNihlLHIpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpuLG9mZnNldDpyfX1mdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhlKXtjb25zdCB0PU1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgvZS5tYXhIKSxpPU1hdGguY2VpbChlLnNjYW5MaW5lcy84L2UubWF4Vik7Zm9yKGNvbnN0IGEgb2YgZS5jb21wb25lbnRzKXtjb25zdCByPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84KSphLmgvZS5tYXhIKSxzPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zY2FuTGluZXMvOCkqYS52L2UubWF4Viksbj10KmEuaCxvPTY0KihpKmEudikqKG4rMSk7YS5ibG9ja0RhdGE9bmV3IEludDE2QXJyYXkobyk7YS5ibG9ja3NQZXJMaW5lPXI7YS5ibG9ja3NQZXJDb2x1bW49c31lLm1jdXNQZXJMaW5lPXQ7ZS5tY3VzUGVyQ29sdW1uPWl9ZnVuY3Rpb24gcmVhZERhdGFCbG9jayhlLHQpe2NvbnN0IGk9cmVhZFVpbnQxNihlLHQpO2xldCBhPSh0Kz0yKStpLTI7Y29uc3Qgcj1maW5kTmV4dEZpbGVNYXJrZXIoZSxhLHQpO2lmKHI/LmludmFsaWQpe3dhcm4oInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIityLmludmFsaWQpO2E9ci5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KHQsYSk7cmV0dXJue2FwcERhdGE6cyxuZXdPZmZzZXQ6dCs9cy5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCl7Y29uc3QgaT1yZWFkVWludDE2KGUsdCksYT0odCs9MikraS0yLHI9ZmluZE5leHRGaWxlTWFya2VyKGUsYSx0KTtyZXR1cm4gcj8uaW52YWxpZD9yLm9mZnNldDphfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1zdGF0aWMgY2FuVXNlSW1hZ2VEZWNvZGVyKGUsdD0tMSl7bGV0IGk9MCxhPW51bGwscj1yZWFkVWludDE2KGUsaSk7aSs9MjtpZig2NTQ5NiE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO3I9cmVhZFVpbnQxNihlLGkpO2krPTI7QTpmb3IoOzY1NDk3IT09cjspe3N3aXRjaChyKXtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDphPWVbaSs3XTticmVhayBBO2Nhc2UgNjU1MzU6MjU1IT09ZVtpXSYmaS0tfWk9c2tpcERhdGEoZSxpKTtyPXJlYWRVaW50MTYoZSxpKTtpKz0yfXJldHVybiA0IT09YSYmKDMhPT1hfHwwIT09dCl9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBpLGEscj0wLHM9bnVsbCxuPW51bGwsbz0wO2NvbnN0IGc9W10sYz1bXSxsPVtdO2xldCBoPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09aCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7aD1yZWFkVWludDE2KGUscik7cis9MjtBOmZvcig7NjU0OTchPT1oOyl7bGV0IEMsUSxFO3N3aXRjaChoKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTp1LG5ld09mZnNldDpkfT1yZWFkRGF0YUJsb2NrKGUscik7cj1kOzY1NTA0PT09aCYmNzQ9PT11WzBdJiY3MD09PXVbMV0mJjczPT09dVsyXSYmNzA9PT11WzNdJiYwPT09dVs0XSYmKHM9e3ZlcnNpb246e21ham9yOnVbNV0sbWlub3I6dVs2XX0sZGVuc2l0eVVuaXRzOnVbN10seERlbnNpdHk6dVs4XTw8OHx1WzldLHlEZW5zaXR5OnVbMTBdPDw4fHVbMTFdLHRodW1iV2lkdGg6dVsxMl0sdGh1bWJIZWlnaHQ6dVsxM10sdGh1bWJEYXRhOnUuc3ViYXJyYXkoMTQsMTQrMyp1WzEyXSp1WzEzXSl9KTs2NTUxOD09PWgmJjY1PT09dVswXSYmMTAwPT09dVsxXSYmMTExPT09dVsyXSYmOTg9PT11WzNdJiYxMDE9PT11WzRdJiYobj17dmVyc2lvbjp1WzVdPDw4fHVbNl0sZmxhZ3MwOnVbN108PDh8dVs4XSxmbGFnczE6dVs5XTw8OHx1WzEwXSx0cmFuc2Zvcm1Db2RlOnVbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBmPXJlYWRVaW50MTYoZSxyKTtyKz0yO2NvbnN0IHA9ZityLTI7bGV0IG07Zm9yKDtyPHA7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoUT0wO1E8NjQ7USsrKXttPVh0W1FdO2lbbV09cmVhZFVpbnQxNihlLHIpO3IrPTJ9fWVsc2UgZm9yKFE9MDtRPDY0O1ErKyl7bT1YdFtRXTtpW21dPWVbcisrXX1nWzE1JnRdPWl9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoaSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtyKz0yO2k9e307aS5leHRlbmRlZD02NTQ3Mz09PWg7aS5wcm9ncmVzc2l2ZT02NTQ3ND09PWg7aS5wcmVjaXNpb249ZVtyKytdO2NvbnN0IHk9cmVhZFVpbnQxNihlLHIpO3IrPTI7aS5zY2FuTGluZXM9dHx8eTtpLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxyKTtyKz0yO2kuY29tcG9uZW50cz1bXTtpLmNvbXBvbmVudElkcz17fTtjb25zdCB3PWVbcisrXTtsZXQgYj0wLEQ9MDtmb3IoQz0wO0M8dztDKyspe2NvbnN0IHQ9ZVtyXSxhPWVbcisxXT4+NCxzPTE1JmVbcisxXTtiPGEmJihiPWEpO0Q8cyYmKEQ9cyk7Y29uc3Qgbj1lW3IrMl07RT1pLmNvbXBvbmVudHMucHVzaCh7aDphLHY6cyxxdWFudGl6YXRpb25JZDpuLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtpLmNvbXBvbmVudElkc1t0XT1FLTE7cis9M31pLm1heEg9YjtpLm1heFY9RDtwcmVwYXJlQ29tcG9uZW50cyhpKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IFM9cmVhZFVpbnQxNihlLHIpO3IrPTI7Zm9yKEM9MjtDPFM7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgYT0wO2ZvcihRPTA7UTwxNjtRKysscisrKWErPWlbUV09ZVtyXTtjb25zdCBzPW5ldyBVaW50OEFycmF5KGEpO2ZvcihRPTA7UTxhO1ErKyxyKyspc1tRXT1lW3JdO0MrPTE3K2E7KHQ+PjQ/YzpsKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShpLHMpfWJyZWFrO2Nhc2UgNjU1MDE6cis9MjthPXJlYWRVaW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3Qgaz0xPT0rK28mJiF0O3IrPTI7Y29uc3QgUj1lW3IrK10sTj1bXTtmb3IoQz0wO0M8UjtDKyspe2NvbnN0IHQ9ZVtyKytdLGE9aS5jb21wb25lbnRJZHNbdF0scz1pLmNvbXBvbmVudHNbYV07cy5pbmRleD10O2NvbnN0IG49ZVtyKytdO3MuaHVmZm1hblRhYmxlREM9bFtuPj40XTtzLmh1ZmZtYW5UYWJsZUFDPWNbMTUmbl07Ti5wdXNoKHMpfWNvbnN0IEc9ZVtyKytdLE09ZVtyKytdLFU9ZVtyKytdO3RyeXtyKz1kZWNvZGVTY2FuKGUscixpLE4sYSxHLE0sVT4+NCwxNSZVLGspfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgQX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6cis9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbcl0mJnItLTticmVhaztkZWZhdWx0OmNvbnN0IHg9ZmluZE5leHRGaWxlTWFya2VyKGUsci0yLHItMyk7aWYoeD8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIit4LmludmFsaWQpO3I9eC5vZmZzZXQ7YnJlYWt9aWYoIXh8fHI+PWUubGVuZ3RoLTEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBBfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK2gudG9TdHJpbmcoMTYpKX1oPXJlYWRVaW50MTYoZSxyKTtyKz0yfWlmKCFpKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1pLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWkuc2NhbkxpbmVzO3RoaXMuamZpZj1zO3RoaXMuYWRvYmU9bjt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgaS5jb21wb25lbnRzKXtjb25zdCB0PWdbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvaS5tYXhILHNjYWxlWTplLnYvaS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxpPSExKXtjb25zdCBhPXRoaXMud2lkdGgvZSxyPXRoaXMuaGVpZ2h0L3Q7bGV0IHMsbixvLGcsYyxsLGgsQyxRLEUsdSxkPTA7Y29uc3QgZj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHA9ZSp0KmYsbT1uZXcgVWludDhDbGFtcGVkQXJyYXkocCkseT1uZXcgVWludDMyQXJyYXkoZSksdz00Mjk0OTY3Mjg4O2xldCBiO2ZvcihoPTA7aDxmO2grKyl7cz10aGlzLmNvbXBvbmVudHNbaF07bj1zLnNjYWxlWCphO289cy5zY2FsZVkqcjtkPWg7dT1zLm91dHB1dDtnPXMuYmxvY2tzUGVyTGluZSsxPDwzO2lmKG4hPT1iKXtmb3IoYz0wO2M8ZTtjKyspe0M9MHxjKm47eVtjXT0oQyZ3KTw8M3w3JkN9Yj1ufWZvcihsPTA7bDx0O2wrKyl7Qz0wfGwqbztFPWcqKEMmdyl8KDcmQyk8PDM7Zm9yKGM9MDtjPGU7YysrKXttW2RdPXVbRSt5W2NdXTtkKz1mfX19bGV0IEQ9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2l8fDQhPT1mfHxEfHwoRD1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoRClmb3IoaD0wO2g8cDspZm9yKEM9MCxRPTA7QzxmO0MrKyxoKyssUSs9MiltW2hdPShtW2hdKkRbUV0+PjgpK0RbUSsxXTtyZXR1cm4gbX1nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxpLGE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cis9Myl7dD1lW3JdO2k9ZVtyKzFdO2E9ZVtyKzJdO2Vbcl09dC0xNzkuNDU2KzEuNDAyKmE7ZVtyKzFdPXQrMTM1LjQ1OS0uMzQ0KmktLjcxNCphO2VbcisyXT10LTIyNi44MTYrMS43NzIqaX1yZXR1cm4gZX1fY29udmVydFljY1RvUmdiYShlLHQpe2ZvcihsZXQgaT0wLGE9MCxyPWUubGVuZ3RoO2k8cjtpKz0zLGErPTQpe2NvbnN0IHI9ZVtpXSxzPWVbaSsxXSxuPWVbaSsyXTt0W2FdPXItMTc5LjQ1NisxLjQwMipuO3RbYSsxXT1yKzEzNS40NTktLjM0NCpzLS43MTQqbjt0W2ErMl09ci0yMjYuODE2KzEuNzcyKnM7dFthKzNdPTI1NX1yZXR1cm4gdH1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxpLGEscixzPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3I9ZVtuKzNdO2VbcysrXT1pKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSppKy4wMDA0MzcxMzA0NzU5MjYyMzIqYS01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqci0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrYSooLS4wMDA5NTc5NjQzNzg0NDU3NzMqYSsuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3KnIrMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypyKy40ODM1NzA4ODQ1MTI2NSkrciooLS4wMDAzMzYxOTcxNzc2MTgzOTQqcisuNDg0NzkxNTYxNDkwNzc2KTtlW3MrK109MTA3LjI2ODAzOTM5NzcyNCtpKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmktLjAwMDY0MDk5MjAxODI5Nzk0NSphKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3KnItLjE3NjQ5MTc5MjQ2Mjg3NSkrYSooLS4wMDA3NzgyNjk5NDE1MTM2ODMqYSsuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKnItLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4KnIrLjI1ODAyOTEwMjA2ODQ1KStyKigtLjAwMDMxODkxMzExNzU4ODMyOCpyLS4yMTM3NDI0MDAzMjM2NjUpO2VbcysrXT1pKigtLjAwMDU3MDExNTE5Njk3MzY3NyppLTI2MzQwOTA1MTAwNDU4OWUtMTkqYSsuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipyKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NythKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSphLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKnItLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3KnIrLjExNjkzNTAyMDQ2NTE0NSkrciooLS4wMDAzNDM1MzE5OTY1MTA1NTUqcisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAscyl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxyPWVbdCsyXSxzPWVbdCszXTtlW3RdPWEqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmErLjAwMDQzNzEzMDQ3NTkyNjIzMipyLTU0MDgwNjEwMDY0NTk5ZS0xOCppKy4wMDA0ODQ0OTc5NzEyMDI4MSpzLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCtyKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MypyKy4wMDA4MTcwNzY5MTEzNDY2MjUqaS0uMDA0NzcyNzE0MDU0MDg3NDcqcysxLjUzMzgwMjUzMjIxNzM0KStpKiguMDAwOTYxMjUwMTg0MTMwNjg4KmktLjAwMjY2MjU3MzMyMjgzOTMzKnMrLjQ4MzU3MDg4NDUxMjY1KStzKigtLjAwMDMzNjE5NzE3NzYxODM5NCpzKy40ODQ3OTE1NjE0OTA3NzYpO2VbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K2EqKDIxOTkyNzEwNDUyNTc0MWUtMTkqYS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KnIrLjAwMDY1OTM5NzAwMTI0NTU3NyppKy4wMDA0MjYxMDU2NTI5Mzg4Mzcqcy0uMTc2NDkxNzkyNDYyODc1KStyKigtLjAwMDc3ODI2OTk0MTUxMzY4MypyKy4wMDEzMDg3MjI2MTQwODI3NSppKy4wMDA3NzA0ODI2MzE4MDExMzIqcy0uMTUxMDUxNDkyNzc1NTYyKStpKiguMDAxMjY5MzUzNjgxMTQ4NDMqaS0uMDAyNjUwOTAxODkwMTA4OTgqcysuMjU4MDI5MTAyMDY4NDUpK3MqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnMtLjIxMzc0MjQwMDMyMzY2NSk7ZVt0KzJdPWEqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmEtMjYzNDA5MDUxMDA0NTg5ZS0xOSpyKy4wMDIwNzQxMDg4MTE1MDEyKmktLjAwMjg4MjYwMjM2ODUzNDQyKnMrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K3IqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KnItLjAwMDEzMjY4OTA0Mzk2MTQ0NippKy4wMDA1NjA4MzM2OTEyNDI4MTIqcy0uMTk1MTUyMDI3NTM0MDQ5KStpKiguMDAxNzQ0MTgxMzI5Mjc1ODIqaS0uMDAyNTUyNDMzMjE0MzkzNDcqcysuMTE2OTM1MDIwNDY1MTQ1KStzKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpzKy4yNDE2NTI2MDIzMjQwNyk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsaSxhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTQpe3Q9ZVtyXTtpPWVbcisxXTthPWVbcisyXTtlW3JdPTQzNC40NTYtdC0xLjQwMiphO2VbcisxXT0xMTkuNTQxLXQrLjM0NCppKy43MTQqYTtlW3IrMl09NDgxLjgxNi10LTEuNzcyKml9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7bGV0IHQsaSxhLHIscz0wO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rPTQpe3Q9ZVtuXTtpPWVbbisxXTthPWVbbisyXTtyPWVbbiszXTtlW3MrK109MjU1K3QqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCp0Ky4wMDA4Mzc5MjYyMTIxMDEzNzI3KmkrLjAwMDI4OTQ3MTgxODg2NDMyOTQqYSsuMDAzMjY0MjMxMDU3NTM3ODA2KnItMS4xMTg1NjExODY3MjAzOTM3KStpKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqaS04NjI2OTQ5MTU4NjM4NTcyZS0yMCphLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKnItLjAyMTU1Njg4Nzk0OTc4OTY3KSthKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqYS0uMDAwMzI2NzgwODI3OTQ4NTI4NipyKy4wNjg2NzQyMjM4NTk1MzQ1KS1yKiguMDAwMzM2MTk3MTc3NjE4MzkzNypyKy43NDMwNjU5MTUxMzQyMjU0KTtlW3MrK109MjU1K3QqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCp0Ky4wMDA5MjQ1MzcxMzI1NzM1ODUqaSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqYSsuMDAwNDc5MTg2NDY4NzQzNjUxMipyLS4zMTA5Njg5NTg3NTE1ODc1KStpKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmkrLjAwMDI3MDI4NDUyNTM1MzQ3MTQqYSsuMDAyMDIwMDMwODk3NzMwNzE1NipyLS43NDg4MDUyMTY3MDE1NDk0KSthKig2ODM0ODE1OTk4MjM1NjYyZS0yMCphKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypyLS4wOTc1MTkyNzc3NDcyODkzMyktciooLjAwMDMxODkxMzExNzU4ODMyODEqcisuNzM2NDg4MzgwNzczMzE2OCk7ZVtzKytdPTI1NSt0KigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqdCsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqaSsuMDAwNDc1MTk4NTA5NzU4MzU4OSphLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipyLS4wNTU2MjE4Njk4MDI2NDAzNCkraSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmkrLjAwMDk2OTIyMzkxMzA3MjUxODYqYSsuMDAwNzc4MjY5MjQ1MDAzNjI1MypyLS40NDAxNTIzMjM2NzUyNjQ2MykrYSooNS4wNjg4ODI5MTQwNjg3NjllLTcqYSsuMDAxNzc3ODM2OTAxMTM3NTA3MSpyLS43NTkxNDU0NjQ5NzQ5NjA5KS1yKiguMDAwMzQzNTMxOTk2NTEwNTU1MypyKy43MDYzNzcwMTg2MTYwMTQ0KX1yZXR1cm4gZS5zdWJhcnJheSgwLHMpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz00KXtjb25zdCBpPWVbdF0sYT1lW3QrMV0scj1lW3QrMl0scz1lW3QrM107ZVt0XT0yNTUraSooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKmkrLjAwMDgzNzkyNjIxMjEwMTM3MjcqYSsuMDAwMjg5NDcxODE4ODY0MzI5NCpyKy4wMDMyNjQyMzEwNTc1Mzc4MDYqcy0xLjExODU2MTE4NjcyMDM5MzcpK2EqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSphLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKnItLjAwMDI3NDg3NjkwNjc0OTk0OTEqcy0uMDIxNTU2ODg3OTQ5Nzg5NjcpK3IqKC0zODc4MDk5MjEyODY5MzYzZS0yMCpyLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnMrLjA2ODY3NDIyMzg1OTUzNDUpLXMqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnMrLjc0MzA2NTkxNTEzNDIyNTQpO2VbdCsxXT0yNTUraSooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KmkrLjAwMDkyNDUzNzEzMjU3MzU4NSphKy4wMDAxMDU2NzM1OTYxODY4MzU5MypyKy4wMDA0NzkxODY0Njg3NDM2NTEyKnMtLjMxMDk2ODk1ODc1MTU4NzUpK2EqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqYSsuMDAwMjcwMjg0NTI1MzUzNDcxNCpyKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnMtLjc0ODgwNTIxNjcwMTU0OTQpK3IqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKnIrLjAwMDE1MTY4NDUyMzYzNDYwOTczKnMtLjA5NzUxOTI3Nzc0NzI4OTMzKS1zKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpzKy43MzY0ODgzODA3NzMzMTY4KTtlW3QrMl09MjU1K2kqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSppKy4wMDAxMjQyMzk1NjE3NTQ5MDg1MSphKy4wMDA0NzUxOTg1MDk3NTgzNTg5KnItMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnMtLjA1NTYyMTg2OTgwMjY0MDM0KSthKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqYSsuMDAwOTY5MjIzOTEzMDcyNTE4NipyKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnMtLjQ0MDE1MjMyMzY3NTI2NDYzKStyKig1LjA2ODg4MjkxNDA2ODc2OWUtNypyKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnMtLjc1OTE0NTQ2NDk3NDk2MDkpLXMqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnMrLjcwNjM3NzAxODYxNjAxNDQpO2VbdCszXT0yNTV9cmV0dXJuIGV9Z2V0RGF0YSh7d2lkdGg6ZSxoZWlnaHQ6dCxmb3JjZVJHQkE6aT0hMSxmb3JjZVJHQjphPSExLGlzU291cmNlUERGOnI9ITF9KXtpZih0aGlzLm51bUNvbXBvbmVudHM+NCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3Qgcz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxyKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYoaXx8YSkpe2NvbnN0IGU9cy5sZW5ndGgqKGk/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgYT0wO2lmKGkpIWZ1bmN0aW9uIGdyYXlUb1JHQkEoZSx0KXtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT02NTc5MyplW2ldfDQyNzgxOTAwODA7ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspdFtpXT0xNjg0MzAwOCplW2ldfDI1NX0ocyxuZXcgVWludDMyQXJyYXkodC5idWZmZXIpKTtlbHNlIGZvcihjb25zdCBlIG9mIHMpe3RbYSsrXT1lO3RbYSsrXT1lO3RbYSsrXT1lfXJldHVybiB0fWlmKDM9PT10aGlzLm51bUNvbXBvbmVudHMmJnRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXtpZihpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShzLmxlbmd0aC8zKjQpO3JldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2JhKHMsZSl9cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihzKX1pZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gaT90aGlzLl9jb252ZXJ0WWNja1RvUmdiYShzKTphP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2Iocyk6dGhpcy5fY29udmVydFljY2tUb0NteWsocyk7aWYoaSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEocyk7aWYoYSlyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYihzKX1yZXR1cm4gc319Y2xhc3MgSnBlZ1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtzdGF0aWMjeT1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvanBlZyIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBzZXRPcHRpb25zKHtpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDplPSExfSl7dGhpcy4jeT1lfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe3RoaXMuZGVjb2RlSW1hZ2UoKX1nZXQganBlZ09wdGlvbnMoKXtjb25zdCBlPXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0sdD10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxhPXQubGVuZ3RoLHI9bmV3IEludDMyQXJyYXkoYSk7bGV0IHM9ITE7Y29uc3Qgbj0oMTw8aSktMTtmb3IobGV0IGU9MDtlPGE7ZSs9Mil7cltlXT0yNTYqKHRbZSsxXS10W2VdKXwwO3JbZSsxXT10W2VdKm58MDsyNTY9PT1yW2VdJiYwPT09cltlKzFdfHwocz0hMCl9cyYmKGUuZGVjb2RlVHJhbnNmb3JtPXIpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqcGVnT3B0aW9ucyIsZSl9I3coZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aC0xO3Q8aTt0KyspaWYoMjU1PT09ZVt0XSYmMjE2PT09ZVt0KzFdKXt0PjAmJihlPWUuc3ViYXJyYXkodCkpO2JyZWFrfXJldHVybiBlfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPXRoaXMuI3coZXx8dGhpcy5ieXRlcyk7Y29uc3QgdD1uZXcgSnBlZ0ltYWdlKHRoaXMuanBlZ09wdGlvbnMpO3QucGFyc2UoZSk7Y29uc3QgaT10LmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1pO3RoaXMuYnVmZmVyTGVuZ3RoPWkubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe2lmKCFhd2FpdCBKcGVnU3RyZWFtLmNhblVzZUltYWdlRGVjb2RlcilyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuanBlZ09wdGlvbnM7aWYoZS5kZWNvZGVUcmFuc2Zvcm0pcmV0dXJuIG51bGw7bGV0IHQ7dHJ5e2NvbnN0IGk9dGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlciYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy4jdyhpKTtpZighSnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihhLGUuY29sb3JUcmFuc2Zvcm0pKXJldHVybiBudWxsO3Q9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19fXZhciBpaSxhaT0oaWk9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmM6dm9pZCAwLGZ1bmN0aW9uKGU9e30pe3ZhciB0LGksYT1lO25ldyBQcm9taXNlKCgoZSxhKT0+e3Q9ZTtpPWF9KSk7YS5kZWNvZGU9ZnVuY3Rpb24oZSx7bnVtQ29tcG9uZW50czp0PTQsaXNJbmRleGVkQ29sb3JtYXA6aT0hMSxzbWFza0luRGF0YTpyPSExfSl7Y29uc3Qgcz1lLmxlbmd0aCxuPWEuX21hbGxvYyhzKTthLkhFQVBVOC5zZXQoZSxuKTtjb25zdCBvPWEuX2pwMl9kZWNvZGUobixzLHQ+MD90OjAsISFpLCEhcik7YS5fZnJlZShuKTtpZihvKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PWE7aWYoZSl7ZGVsZXRlIGEuZXJyb3JNZXNzYWdlcztyZXR1cm4gZX1yZXR1cm4iVW5rbm93biBlcnJvciJ9Y29uc3R7aW1hZ2VEYXRhOmd9PWE7YS5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZ307dmFyIHI9T2JqZWN0LmFzc2lnbih7fSxhKSxzPSIuL3RoaXMucHJvZ3JhbSIscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxuPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihuPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKTtpaSYmKG49aWkpO249bi5zdGFydHNXaXRoKCJibG9iOiIpPyIiOm4uc3Vic3RyKDAsbi5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpO3ZhciBvPWEucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZz1hLnByaW50RXJyfHxjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihhLHIpO3I9bnVsbDthLmFyZ3VtZW50cyYmYS5hcmd1bWVudHM7YS50aGlzUHJvZ3JhbSYmKHM9YS50aGlzUHJvZ3JhbSk7dmFyIGMsbD1hLndhc21CaW5hcnk7ZnVuY3Rpb24gdHJ5UGFyc2VBc0RhdGFVUkkoZSl7aWYoaXNEYXRhVVJJKGUpKXJldHVybiBmdW5jdGlvbiBpbnRBcnJheUZyb21CYXNlNjQoZSl7Zm9yKHZhciB0PWF0b2IoZSksaT1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksYT0wO2E8dC5sZW5ndGg7KythKWlbYV09dC5jaGFyQ29kZUF0KGEpO3JldHVybiBpfShlLnNsaWNlKEQubGVuZ3RoKSl9dmFyIGgsQyxRLEUsdT0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWMuYnVmZmVyO2EuSEVBUDg9Qz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUFU4PVE9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVAzMj1uZXcgSW50MzJBcnJheShlKTthLkhFQVBVMzI9RT1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIGQsZj1bXSxwPVtdLG09W10seT0wLHc9bnVsbCxiPW51bGwsRD0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIsaXNEYXRhVVJJPWU9PmUuc3RhcnRzV2l0aChEKTtmdW5jdGlvbiBpbnN0YW50aWF0ZVN5bmMoZSx0KXt2YXIgaSxhPWZ1bmN0aW9uIGdldEJpbmFyeVN5bmMoZSl7aWYoZT09ZCYmbClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobCk7dmFyIHQ9dHJ5UGFyc2VBc0RhdGFVUkkoZSk7aWYodClyZXR1cm4gdDt0aHJvdydzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZDogeW91IGNhbiBwcmVsb2FkIGl0IHRvIE1vZHVsZVsid2FzbUJpbmFyeSJdIG1hbnVhbGx5LCBvciBlbWNjLnB5IHdpbGwgZG8gdGhhdCBmb3IgeW91IHdoZW4gZ2VuZXJhdGluZyBIVE1MIChidXQgbm90IEpTKSd9KGUpO2k9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShhKTtyZXR1cm5bbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGksdCksaV19Y2xhc3MgRXhpdFN0YXR1c3tuYW1lPSJFeGl0U3RhdHVzIjtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtlfSlgO3RoaXMuc3RhdHVzPWV9fXZhciBTLGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShhKX0saz1hLm5vRXhpdFJ1bnRpbWV8fCEwLFI9MCxOPXt9LGhhbmRsZUV4Y2VwdGlvbj1lPT57aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXN8fCJ1bndpbmQiPT1lKXJldHVybiBoO3F1aXRfKDAsZSl9LGtlZXBSdW50aW1lQWxpdmU9KCk9Pmt8fFI+MCxfcHJvY19leGl0PWU9PntoPWU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7YS5vbkV4aXQ/LihlKTt1PSEwfXF1aXRfKDAsbmV3IEV4aXRTdGF0dXMoZSkpfSxfZXhpdD0oZSx0KT0+e2g9ZTtfcHJvY19leGl0KGUpfSxjYWxsVXNlckNhbGxiYWNrPWU9PntpZighdSl0cnl7ZSgpOygoKT0+e2lmKCFrZWVwUnVudGltZUFsaXZlKCkpdHJ5e19leGl0KGgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19KSgpfWNhdGNoKGUpe2hhbmRsZUV4Y2VwdGlvbihlKX19LGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLWMuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2fDA7dHJ5e2MuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319LEc9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpzfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gRyl2b2lkIDA9PT1HW3RdP2RlbGV0ZSBlW3RdOmVbdF09R1t0XTt2YXIgaT1bXTtmb3IodmFyIHQgaW4gZSlpLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1pfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LE09W251bGwsW10sW11dLFU9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXI6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxpPU5hTik9Pntmb3IodmFyIGE9dCtpLHI9dDtlW3JdJiYhKHI+PWEpOykrK3I7aWYoci10PjE2JiZlLmJ1ZmZlciYmVSlyZXR1cm4gVS5kZWNvZGUoZS5zdWJhcnJheSh0LHIpKTtmb3IodmFyIHM9IiI7dDxyOyl7dmFyIG49ZVt0KytdO2lmKDEyOCZuKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0Jm4pKXt2YXIgZz02MyZlW3QrK107aWYoKG49MjI0PT0oMjQwJm4pPygxNSZuKTw8MTJ8bzw8NnxnOig3Jm4pPDwxOHxvPDwxMnxnPDw2fDYzJmVbdCsrXSk8NjU1MzYpcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtlbHNle3ZhciBjPW4tNjU1MzY7cys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHwxMDIzJmMpfX1lbHNlIHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fG8pfWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4gc30scHJpbnRDaGFyPShlLHQpPT57dmFyIGk9TVtlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/bzpnKShVVEY4QXJyYXlUb1N0cmluZyhpKSk7aS5sZW5ndGg9MH1lbHNlIGkucHVzaCh0KX0sVVRGOFRvU3RyaW5nPShlLHQpPT5lP1VURjhBcnJheVRvU3RyaW5nKFEsZSx0KToiIix4PXttOigpPT5mdW5jdGlvbiBhYm9ydChlKXthLm9uQWJvcnQ/LihlKTtnKGU9IkFib3J0ZWQoIitlKyIpIik7dT0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIHQ9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKTtpKHQpO3Rocm93IHR9KCIiKSxjOihlLHQsaSk9PlEuY29weVdpdGhpbihlLHQsdCtpKSxsOigpPT57az0hMTtSPTB9LG46KGUsdCk9PntpZihOW2VdKXtjbGVhclRpbWVvdXQoTltlXS5pZCk7ZGVsZXRlIE5bZV19aWYoIXQpcmV0dXJuIDA7dmFyIGk9c2V0VGltZW91dCgoKCk9PntkZWxldGUgTltlXTtjYWxsVXNlckNhbGxiYWNrKCgoKT0+SChlLHBlcmZvcm1hbmNlLm5vdygpKSkpfSksdCk7TltlXT17aWQ6aSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxnOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsdCl7ZT4+PTI7Y29uc3QgaT1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCkscj1hLkhFQVAzMi5zdWJhcnJheShlLGUrdCk7aS5zZXQocil9LGY6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzMoZSx0LGkscil7ZT4+PTI7dD4+PTI7aT4+PTI7Y29uc3Qgcz1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypyKSxuPWEuSEVBUDMyLnN1YmFycmF5KGUsZStyKSxvPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtyKSxnPWEuSEVBUDMyLnN1YmFycmF5KGksaStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtzWzMqZV09bltlXTtzWzMqZSsxXT1vW2VdO3NbMyplKzJdPWdbZV19fSxlOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc180KGUsdCxpLHIscyl7ZT4+PTI7dD4+PTI7aT4+PTI7cj4+PTI7Y29uc3Qgbj1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCpzKSxvPWEuSEVBUDMyLnN1YmFycmF5KGUsZStzKSxnPWEuSEVBUDMyLnN1YmFycmF5KHQsdCtzKSxjPWEuSEVBUDMyLnN1YmFycmF5KGksaStzKSxsPWEuSEVBUDMyLnN1YmFycmF5KHIscitzKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtuWzQqZV09b1tlXTtuWzQqZSsxXT1nW2VdO25bNCplKzJdPWNbZV07bls0KmUrM109bFtlXX19LG86ZT0+e3ZhciB0LGksYT1RLmxlbmd0aCxyPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+cilyZXR1cm4hMTtmb3IodmFyIHM9MTtzPD00O3MqPTIpe3ZhciBuPWEqKDErLjIvcyk7bj1NYXRoLm1pbihuLGUrMTAwNjYzMjk2KTt2YXIgbz1NYXRoLm1pbihyLCh0PU1hdGgubWF4KGUsbiksaT02NTUzNixNYXRoLmNlaWwodC9pKSppKSk7aWYoZ3Jvd01lbW9yeShvKSlyZXR1cm4hMH1yZXR1cm4hMX0scDooZSx0KT0+e3ZhciBpPTA7Z2V0RW52U3RyaW5ncygpLmZvckVhY2goKChhLHIpPT57dmFyIHM9dCtpO0VbZSs0KnI+PjJdPXM7KChlLHQpPT57Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDsrK2kpQ1t0KytdPWUuY2hhckNvZGVBdChpKTtDW3RdPTB9KShhLHMpO2krPWEubGVuZ3RoKzF9KSk7cmV0dXJuIDB9LHE6KGUsdCk9Pnt2YXIgaT1nZXRFbnZTdHJpbmdzKCk7RVtlPj4yXT1pLmxlbmd0aDt2YXIgYT0wO2kuZm9yRWFjaCgoZT0+YSs9ZS5sZW5ndGgrMSkpO0VbdD4+Ml09YTtyZXR1cm4gMH0scjplPT41MixqOmZ1bmN0aW9uIF9mZF9zZWVrKGUsdCxpLGEscil7cmV0dXJuIDcwfSxiOihlLHQsaSxhKT0+e2Zvcih2YXIgcj0wLHM9MDtzPGk7cysrKXt2YXIgbj1FW3Q+PjJdLG89RVt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBnPTA7ZzxvO2crKylwcmludENoYXIoZSxRW24rZ10pO3IrPW99RVthPj4yXT1yO3JldHVybiAwfSxzOmZ1bmN0aW9uIF9ncmF5X3RvX3JnYmEoZSx0KXtlPj49Mjtjb25zdCBpPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnQpLHI9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3QpO2ZvcihsZXQgZT0wO2U8dDtlKyspe2lbNCplXT1pWzQqZSsxXT1pWzQqZSsyXT1yW2VdO2lbNCplKzNdPTI1NX19LGk6ZnVuY3Rpb24gX2dyYXlhX3RvX3JnYmEoZSx0LGkpe2U+Pj0yO3Q+Pj0yO2NvbnN0IHI9YS5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1hLkhFQVAzMi5zdWJhcnJheShlLGUraSksbj1hLkhFQVAzMi5zdWJhcnJheSh0LHQraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7cls0KmVdPXJbNCplKzFdPXJbNCplKzJdPXNbZV07cls0KmUrM109bltlXX19LGQ6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpOyhhLndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke3R9YCl9LGs6X3Byb2NfZXhpdCxoOmZ1bmN0aW9uIF9yZ2JfdG9fcmdiYShlLHQsaSxyKXtlPj49Mjt0Pj49MjtpPj49Mjtjb25zdCBzPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3IpLG89YS5IRUFQMzIuc3ViYXJyYXkodCx0K3IpLGc9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbNCplXT1uW2VdO3NbNCplKzFdPW9bZV07c1s0KmUrMl09Z1tlXTtzWzQqZSszXT0yNTV9fSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTthLmVycm9yTWVzc2FnZXM/YS5lcnJvck1lc3NhZ2VzKz0iXG4iK3Q6YS5lcnJvck1lc3NhZ2VzPXR9fSxMPWZ1bmN0aW9uIGNyZWF0ZVdhc20oKXtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoZSx0KXtMPWUuZXhwb3J0cztjPUwudDt1cGRhdGVNZW1vcnlWaWV3cygpOyFmdW5jdGlvbiBhZGRPbkluaXQoZSl7cC51bnNoaWZ0KGUpfShMLnUpOyFmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGUpe3ktLTthLm1vbml0b3JSdW5EZXBlbmRlbmNpZXM/Lih5KTtpZigwPT15KXtpZihudWxsIT09dyl7Y2xlYXJJbnRlcnZhbCh3KTt3PW51bGx9aWYoYil7dmFyIHQ9YjtiPW51bGw7dCgpfX19KCk7cmV0dXJuIEx9IWZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koZSl7eSsrO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKHkpfSgpO3ZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6eH19KCk7aWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShlLHJlY2VpdmVJbnN0YW5jZSl9Y2F0Y2goZSl7ZyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApO2koZSl9ZD8/PSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCMlFFY1lBTi9mMzhCZjJBRWYzOS9md0YvWUFGL0FHQUNmMzhBWUFGL0FYOWdBMzkvZndCZ0FuOS9BWDlnQkg5L2YzOEFZQU4vZm44QmZtQUZmMzkvZjM4QmYyQUFBR0FDZm44QmYyQURmMzUvQVg5Z0FuNS9BWDVnQlg5L2YzOS9BR0FIZjM5L2YzOS9md0YvWUFsL2YzOS9mMzkvZjM4QmYyQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzOS9mMzkvQVg5Z0FBRi9ZQVovZjM5L2YzOEFZQVovZkg5L2YzOEJmMkFDZjN3QmYyQUlmMzkvZjM5L2YzOEFZQWgvZjM5L2YzOS9md0YvWUFkL2YzOS9mMzkvQUdBQ2ZIOEJmR0FDZjN3QUFuTVRBV0VCWVFBQ0FXRUJZZ0FCQVdFQll3QUZBV0VCWkFBQ0FXRUJaUUFPQVdFQlpnQUhBV0VCWndBREFXRUJhQUFIQVdFQmFRQUZBV0VCYWdBSkFXRUJhd0FDQVdFQmJBQUtBV0VCYlFBS0FXRUJiZ0FXQVdFQmJ3QUVBV0VCY0FBR0FXRUJjUUFHQVdFQmNnQUVBV0VCY3dBREE4MEJ5d0VIQWdVQUJnUUFCUVlFQVFVRURnVVhCZ0lDQWdJQUJoQUdFUVFDQ3d3U0FnVUNCQWNFQWhNREZBTUNBZ1lDR0FNSEJRQUFCQU1CQ2drSkF3QUpCZ0VFQkFVRkV3OEJBUU1BQXdZQ0VBUVVHUUlIQmdNSEJ3RUJBZ0FFQ2dZYUJ3UUVEdzREQmdRQUJBSUNBZ0FHQmdBQkFRRUJBUUVCQVFBQUFBQUFCZ01DQWdJREF3TURBd29LQWdJYkFBTVZDQVFFQUFnREF3a0VDQXNOQUFnQUFRRUJBUUVCQVFFQkRBQUVCQVVKRHdFU0VRRUFBQVlEQXdFRkJRVUZCUVVGQlFFTkFRRUJBUUVCQVFFQkN3UUZBWEFCY25JRkJ3RUJnZ0tBZ0FJR0NBRi9BVUhRNEFVTEJ5QUhBWFFDQUFGMUFFb0JkZ0NwQVFGM0FCUUJlQUVBQVhrQXFBRUJlZ0NkQVFuUkFRRUFRUUVMY1ZyZEFkTUJnUUdCQVRDNUFhNEJxZ0dZQVpjQmxnR1ZBWlFCa3dHU0FaRUJXNDRCalFHTUFZc0JLNG9CaVFHSUFZY0JoZ0dGQVlRQmd3R0NBZHdCMndIYUFka0IyQUhYQVVuV0FkVUJTVW5VQWRJQjBRSFFBYzhCemdITkFjd0J5d0hLQWNRQnVBRzNBYllCdFFHMEFiTUJzZ0d4QWJBQnJ3R3RBYXdCcXdGU1UxVmJVWkFCWEVCWmp3RllUazlYTVN5OEFic0J2UUhGQWNrQnhnSEFBYm9CdmdHL0FjY0J5QUY5d1FIQ0FjTUJXcWNCcGdHZUFhQUJud0dhQWFNQnBBR2xBYUlCb1FHYkFad0JDc210RHNzQmdnSUJBMzhqQUVHUUJHc2lCQ1FBQWtBZ0FFVU5BQUpBQWtBQ1FBSkFJQUZCQVdzT0JBQUJCQUlFQ3lBQVFReHFJUUVNQWdzZ0FFRVFhaUVCSUFCQkJHb2hBQXdCQ3lBQVFSUnFJUUVnQUVFSWFpRUFDeUFCS0FJQUlnVkZEUUFnQWtVTkFDQUFLQUlBSVFZZ0JFRUFRWUFFRUJraUFTQUROZ0tNQkNNQVFhQUJheUlBSkFBZ0FDQUJOZ0tVQVNBQVFmOEROZ0tZQVNBQVFRQkJrQUVRR1NJQVFYODJBa3dnQUVIbkFEWUNKQ0FBUVg4MkFsQWdBQ0FBUVo4QmFqWUNMQ0FBSUFCQmxBRnFOZ0pVSUFGQkFEb0FBQ0FBSUFJZ0EwSG9BRUhwQUJCMUlBQkJvQUZxSkFBZ0FVRUFPZ0QvQXlBQklBWWdCUkVEQUFzZ0JFR1FCR29rQUF2UUFnRUZmeUFBQkVBZ0FFRUVheUlES0FJQUlnUWhBU0FESVFJZ0FFRUlheWdDQUNJQUlBQkJmbkVpQUVjRVFDQUNJQUJySWdJb0FnUWlBU0FDS0FJSUlnVTJBZ2dnQlNBQk5nSUVJQUFnQkdvaEFRc2dBeUFFYWlJQUtBSUFJZ01nQUNBRGFrRUVheWdDQUVjRVFDQUFLQUlFSWdRZ0FDZ0NDQ0lBTmdJSUlBQWdCRFlDQkNBQklBTnFJUUVMSUFJZ0FUWUNBQ0FDSUFGQmZIRnFRUVJySUFGQkFYSTJBZ0FnQWdKL0lBSW9BZ0JCQ0dzaUFFSC9BRTBFUUNBQVFRTjJRUUZyREFFTElBQm5JUU1nQUVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FFSC9IMDBOQUJwQlB5QUFRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlBSUFCQlAwOGJDeUlCUVFSMElnQkI0TTBCYWpZQ0JDQUNJQUJCNk0wQmFpSUFLQUlBTmdJSUlBQWdBallDQUNBQ0tBSUlJQUkyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxDOGtDQVFSL0lBRkJBRFlDQUFKQUlBSkZEUUFnQVNBQ2FpRURBa0FnQWtFUVNRUkFJQUFoQVF3QkN3SkFJQUVnQUNBQ2FrOE5BQ0FBSUFOUERRQWdBQ0VCREFFTElBTkJFR3NoQmlBQUlBSkJjSEVpQldvaEFTQURJQVZySVFNRFFDQUdJQVJySUFBZ0JHcjlBQUFBL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwUERnME1Dd29KQ0FjR0JRUURBZ0VBL1FzQUFDQUVRUkJxSWdRZ0JVY05BQXNnQWlBRlJnMEJDd0pBSUFKQkEzRWlCa1VFUUNBRklRUU1BUXRCQUNFQUlBVWhCQU5BSUFOQkFXc2lBeUFCTFFBQU9nQUFJQVJCQVdvaEJDQUJRUUZxSVFFZ0FFRUJhaUlBSUFaSERRQUxDeUFGSUFKclFYeExEUUFEUUNBRFFRRnJJQUV0QUFBNkFBQWdBMEVDYXlBQkxRQUJPZ0FBSUFOQkEyc2dBUzBBQWpvQUFDQURRUVJySWdNZ0FTMEFBem9BQUNBQlFRUnFJUUVnQkVFRWFpSUVJQUpIRFFBTEN3dUNCQUVEZnlBQ1FZQUVUd1JBSUFBZ0FTQUNFQUlnQUE4TElBQWdBbW9oQXdKQUlBQWdBWE5CQTNGRkJFQUNRQ0FBUVFOeFJRUkFJQUFoQWd3QkN5QUNSUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDeUFEUVh4eElRUUNRQ0FEUWNBQVNRMEFJQUlnQkVGQWFpSUZTdzBBQTBBZ0FpQUJLQUlBTmdJQUlBSWdBU2dDQkRZQ0JDQUNJQUVvQWdnMkFnZ2dBaUFCS0FJTU5nSU1JQUlnQVNnQ0VEWUNFQ0FDSUFFb0FoUTJBaFFnQWlBQktBSVlOZ0lZSUFJZ0FTZ0NIRFlDSENBQ0lBRW9BaUEyQWlBZ0FpQUJLQUlrTmdJa0lBSWdBU2dDS0RZQ0tDQUNJQUVvQWl3MkFpd2dBaUFCS0FJd05nSXdJQUlnQVNnQ05EWUNOQ0FDSUFFb0FqZzJBamdnQWlBQktBSThOZ0k4SUFGQlFHc2hBU0FDUVVCcklnSWdCVTBOQUFzTElBSWdCRThOQVFOQUlBSWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0FrRUVhaUlDSUFSSkRRQUxEQUVMSUFOQkJFa0VRQ0FBSVFJTUFRc2dBMEVFYXlJRUlBQkpCRUFnQUNFQ0RBRUxJQUFoQWdOQUlBSWdBUzBBQURvQUFDQUNJQUV0QUFFNkFBRWdBaUFCTFFBQ09nQUNJQUlnQVMwQUF6b0FBeUFCUVFScUlRRWdBa0VFYWlJQ0lBUk5EUUFMQ3lBQ0lBTkpCRUFEUUNBQ0lBRXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2lBaUFEUncwQUN3c2dBQXN3QVFGL0FrQWdBRVVOQUNBQlJRMEFRUWdnQUNBQmJDSUJFQ2tpQUFSQUlBQkJBQ0FCRUJrYUN5QUFJUUlMSUFJTEVRQWdBRVVFUUVFQUR3dEJDQ0FBRUNrTDhnSUNBbjhCZmdKQUlBSkZEUUFnQUNBQk9nQUFJQUFnQW1vaUEwRUJheUFCT2dBQUlBSkJBMGtOQUNBQUlBRTZBQUlnQUNBQk9nQUJJQU5CQTJzZ0FUb0FBQ0FEUVFKcklBRTZBQUFnQWtFSFNRMEFJQUFnQVRvQUF5QURRUVJySUFFNkFBQWdBa0VKU1EwQUlBQkJBQ0FBYTBFRGNTSUVhaUlESUFGQi93RnhRWUdDaEFoc0lnRTJBZ0FnQXlBQ0lBUnJRWHh4SWdScUlnSkJCR3NnQVRZQ0FDQUVRUWxKRFFBZ0F5QUJOZ0lJSUFNZ0FUWUNCQ0FDUVFocklBRTJBZ0FnQWtFTWF5QUJOZ0lBSUFSQkdVa05BQ0FESUFFMkFoZ2dBeUFCTmdJVUlBTWdBVFlDRUNBRElBRTJBZ3dnQWtFUWF5QUJOZ0lBSUFKQkZHc2dBVFlDQUNBQ1FSaHJJQUUyQWdBZ0FrRWNheUFCTmdJQUlBUWdBMEVFY1VFWWNpSUVheUlDUVNCSkRRQWdBYTFDZ1lDQWdCQitJUVVnQXlBRWFpRUJBMEFnQVNBRk53TVlJQUVnQlRjREVDQUJJQVUzQXdnZ0FTQUZOd01BSUFGQklHb2hBU0FDUVNCcklnSkJIMHNOQUFzTElBQUxKd0VCZnlNQVFSQnJJZ01rQUNBRElBSTJBZ3dnQUNBQklBSkJBRUVBRUhVZ0EwRVFhaVFBQytnRkFRbC9JQUZGQkVCQkFBOExBbjhnQUVVRVFFRUlJQUVRS1F3QkN5QUJSUVJBSUFBUUZFRUFEQUVMQWtBZ0FVRkhTdzBBSUFBQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUIwRUlhaUVCQWtBQ2Z3SkFJQUJCQkdzaUNpSUVLQUlBSWdVZ0JHb2lBaWdDQUNJSklBSWdDV29pQ0VFRWF5Z0NBRWNFUUNBSUlBRWdCR29pQTBFUWFrOEVRQ0FDS0FJRUlnVWdBaWdDQ0NJQ05nSUlJQUlnQlRZQ0JDQURJQWdnQTJzaUFqWUNBQ0FESUFKQmZIRnFRUVJySUFKQkFYSTJBZ0FnQXdKL0lBTW9BZ0JCQ0dzaUFrSC9BRTBFUUNBQ1FRTjJRUUZyREFFTElBSkJIU0FDWnlJRmEzWkJCSE1nQlVFQ2RHdEI3Z0JxSUFKQi94OU5EUUFhUVQ4Z0FrRWVJQVZyZGtFQ2N5QUZRUUYwYTBISEFHb2lBaUFDUVQ5UEd3c2lBa0VFZENJRlFlRE5BV28yQWdRZ0F5QUZRZWpOQVdvaUJTZ0NBRFlDQ0NBRklBTTJBZ0FnQXlnQ0NDQUROZ0lFUWVqVkFVSG8xUUVwQXdCQ0FTQUNyWWFFTndNQUlBUWdBVFlDQUF3RUN5QURJQWhMRFFFZ0FpZ0NCQ0lCSUFJb0FnZ2lBellDQ0NBRElBRTJBZ1FnQkNBRklBbHFJZ0UyQWdBTUF3c2dCU0FCUVJCcVR3UkFJQVFnQVRZQ0FDQUVJQUZCZkhGcVFRUnJJQUUyQWdBZ0FTQUVhaUlESUFVZ0FXc2lBVFlDQUNBRElBRkJmSEZxUVFScklBRkJBWEkyQWdBZ0F3Si9JQU1vQWdCQkNHc2lBVUgvQUUwRVFDQUJRUU4yUVFGckRBRUxJQUZCSFNBQlp5SUVhM1pCQkhNZ0JFRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFScmRrRUNjeUFFUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSUVRZUROQVdvMkFnUWdBeUFFUWVqTkFXb2lCQ2dDQURZQ0NDQUVJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFlalZBVUhvMVFFcEF3QkNBU0FCcllhRU53TUFRUUVNQkF0QkFTQUJJQVZORFFFYUMwRUFDd3dCQ3lBRUlBRkJmSEZxUVFScklBRTJBZ0JCQVFzTkFScEJDQ0FIRUNraUFVVU5BQ0FCSUFBZ0J5QUtLQUlBUVFocklnWWdCaUFIU3hzUUZob2dBQkFVSUFFaEJnc2dCZ3NMTXdFQmZ5TUFRUkJySWdFa0FDQUFCSDhnQVVFTWFrRVFJQUFRZVNFQVFRQWdBU2dDRENBQUd3VkJBQXNnQVVFUWFpUUFDN3dFQVFWL0lBSWdBQ2dDTUNJRlRRUkFJQUVnQUNnQ0pDQUNFQllhSUFBZ0FDZ0NKQ0FDYWpZQ0pDQUFJQUFvQWpBZ0FtczJBakFnQUNBQUtRTTRJQUt0ZkRjRE9DQUNEd3NnQUMwQVJFRUVjUVJBSUFFZ0FDZ0NKQ0FGRUJZYUlBQW9BakFoQVNBQVFRQTJBakFnQUNBQklBQW9BaVJxTmdJa0lBQWdBQ2tET0NBQnJYdzNBemdnQlVGL0lBVWJEd3NDUUNBRkJFQWdBU0FBS0FJa0lBVVFGaUVFSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQVNBQVFRQTJBakFnQUNBQUtRTTRJQUd0ZkRjRE9DQUNJQUZySVFJZ0FTQUVhaUVCREFFTElBQWdBQ2dDSUNJSE5nSWtDd0pBQWtBRFFBSkFJQUFvQWdBaEJDQUFLQUlRSVFZQ1FDQUFLQUpBSWdnZ0Frc0VRQ0FBSUFjZ0NDQUVJQVlSQUFBaUJqWUNNQ0FHUVg5R0JFQU1CZ3NnQWlBR1RRMENJQUVnQUNnQ0pDQUdFQllhSUFBZ0FDZ0NJQ0lITmdJa0lBQW9BakFoQkF3QkN5QUFJQUVnQWlBRUlBWVJBQUFpQkRZQ01DQUVRWDlHQkVBTUJRc2dBaUFFVFEwRElBQWdBQ2dDSUNJSE5nSWtJQVFoQmdzZ0FFRUFOZ0l3SUFBZ0FDa0RPQ0FFclh3M0F6Z2dBU0FFYWlFQklBSWdCR3NoQWlBRklBWnFJUVVNQVFzTElBRWdBQ2dDSkNBQ0VCWWFJQUFnQUNnQ0pDQUNhallDSkNBQUlBQW9BakFnQW1zMkFqQWdBQ0FBS1FNNElBS3RmRGNET0NBQ0lBVnFEd3NnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dCSzE4TndNNElBUWdCV29QQ3lBRFFRUkI2ZmtBUVFBUUV5QUFRUUEyQWpBZ0FDQUFLQUpFUVFSeU5nSkVJQVZCZnlBRkd3c1hBQ0FBTFFBQVFTQnhSUVJBSUFFZ0FpQUFFRVlhQ3d1REJ3SUxmd0YrSUFBb0FoQWlCMEVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlZSWdKQkJFNEVRQ0FBS0FJQUlnRW9BZ0FoQkNBQUlBSkJCR3NpQlRZQ0dDQUFJQUZCQkdvMkFnQU1BUXRCZjBFQUlBQW9BaHdiSVFRZ0FrRUFUQVJBSUFJaEJRd0JDeUFDUVFGeElBQW9BZ0FoQVFKQUlBSkJBVVlFUUNBQklRWU1BUXNnQWtIKy8vLy9CM0VoQ2dOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFrZ0FDQUJRUUpxSWdZMkFnQWdBQ0FDUVFGck5nSVlJQUV0QUFFaEFTQUFJQUpCQW1zaUFqWUNHQ0FFUWY4QklBTjBRWDl6Y1NBSklBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFRZ0EwRVFhaUVESUFZaEFTQUZRUUpxSWdVZ0NrY05BQXNMUVFBaEJVVU5BQ0FBSUFaQkFXbzJBZ0FnQmkwQUFDRUJJQUFnQWtFQmF6WUNHQ0FFUWY4QklBTjBRWDl6Y1NBQklBTjBjaUVFQ3lBQUtBSVVJUUVnQUNBRVFSaDJJZ3BCL3dGR05nSVVJQUJCQjBFSUlBRWJJZ0ZCQjBFSUlBUkIvd0Z4SWdaQi93RkdHMm9pQWtFSFFRZ2dCRUVJZGtIL0FYRWlBMEgvQVVZYmFpSUpRUWRCQ0NBRVFSQjJRZjhCY1NJRVFmOEJSaHNnQjJwcUlnZzJBaEFnQUNBQUtRTUlJQU1nQVhRZ0JDQUNkSElnQ2lBSmRISWdCbkt0SUFldGhvUWlERGNEQ0NBSVFSOU5CRUFDUUNBRlFRUk9CRUFnQUNnQ0FDSUJLQUlBSVFJZ0FDQUZRUVJyTmdJWUlBQWdBVUVFYWpZQ0FBd0JDMEVBSVFOQmYwRUFJQUFvQWh3YklRSWdCVUVBVEEwQUlBVkJBWEVnQUNnQ0FDRUJBa0FnQlVFQlJnUkFJQUVoQkF3QkN5QUZRZjcvLy84SGNTRUpRUUFoQmdOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFzZ0FDQUJRUUpxSWdRMkFnQWdBQ0FGUVFGck5nSVlJQUV0QUFFaEFTQUFJQVZCQW1zaUJUWUNHQ0FDUWY4QklBTjBRWDl6Y1NBTElBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFJZ0EwRVFhaUVESUFRaEFTQUdRUUpxSWdZZ0NVY05BQXNMUlEwQUlBQWdCRUVCYWpZQ0FDQUVMUUFBSVFFZ0FDQUZRUUZyTmdJWUlBSkIvd0VnQTNSQmYzTnhJQUVnQTNSeUlRSUxJQUFnQWtFWWRpSUJRZjhCUmpZQ0ZDQUFRUWRCQ0NBS1FmOEJSaHNpQkVFSFFRZ2dBa0gvQVhFaUJrSC9BVVliYWlJRlFRZEJDQ0FDUVFoMlFmOEJjU0lEUWY4QlJodHFJZ2RCQjBFSUlBSkJFSFpCL3dGeElnSkIvd0ZHR3lBSWFtbzJBaEFnQUNBRElBUjBJQUlnQlhSeUlBRWdCM1J5SUFaeXJTQUlyWVlnRElRaUREY0RDQXNnREtjTGF3RUJmeU1BUVlBQ2F5SUZKQUFDUUNBQ0lBTk1EUUFnQkVHQXdBUnhEUUFnQlNBQklBSWdBMnNpQTBHQUFpQURRWUFDU1NJQkd4QVpHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VCNGdBMEdBQW1zaUEwSC9BVXNOQUFzTElBQWdCU0FERUI0TElBVkJnQUpxSkFBTE1RQWdBUUovSUFJb0FreEJBRWdFUUNBQUlBRWdBaEJHREFFTElBQWdBU0FDRUVZTElnQkdCRUFQQ3lBQUlBRnVHZ3NYQUNBQUlBRWdBaUFESUFRZ0JTQUdJQWRCQVJBcUdndWhBUUVFZnlBQlFRQk1CRUJCQUE4TElBQW9BZ3doQWlBQUtBSVFJUU1EUUNBQklRVUNRQ0FERFFBZ0FDQUNRUWgwUVlEK0EzRWlBallDRENBQVFRZEJDQ0FDUVlEK0EwWWJJZ00yQWhBZ0FDZ0NDQ0lCSUFBb0FnUlBEUUFnQUNBQlFRRnFOZ0lJSUFBZ0FpQUJMUUFBY2lJQ05nSU1DeUFBSUFOQkFXc2lBellDRUNBQ0lBTjJRUUZ4SUFWQkFXc2lBWFFnQkhJaEJDQUZRUUZMRFFBTElBUUxIZ0FnQUNnQ0RBUkFJQUJCQURZQ0tBTkFJQUFvQWhoQkFFb05BQXNMQzJvQkEzOGdBQVJBSUFBb0FoZ2lBUVJBSUFBb0FoQWlBZ1IvUVFBaEFRTkFJQUFvQWhnZ0FVRTBiR29vQWl3aUF3UkFJQU1RRkNBQUtBSVFJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUlZQlNBQkN4QVVDeUFBS0FJY0lnRUVRQ0FCRUJRTElBQVFGQXNMa2hVQkQzOENRQUpBSUFBb0FneEZCRUJCQVNFUElBQW9BZ1JCQUVvTkFTQUFLQUlJUVFGS0RRRU1BZ3RCQVNFTklBQW9BZ2hCQUVvTkFDQUFLQUlFUVFKSURRRUxJQUFvQWdBaUNDQU5RUVYwYWlFRUFrQWdBQ2dDRUNJSElBQW9BaFFpQ2s4TkFDQUVJQWRCQm5ScUlRRUNRQ0FLSUFkclFRTnhJZ1pGQkVBZ0J5RUNEQUVMSUFjaEFnTkFJQUVnQWYwQUJBRDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dRQUlBRWdBZjBBQkJEOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1FRSUFGQlFHc2hBU0FDUVFGcUlRSWdBMEVCYWlJRElBWkhEUUFMQ3lBSElBcHJRWHhMRFFBRFFDQUJJQUg5QUFRQS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFQUNBQklBSDlBQVFRL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VFQ0FCSUFIOUFBUkEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRVFDQUJJQUg5QUFSUS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFVUNBQklBSDlBQVNBQWYwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCSUFCSUFFZ0FmMEFCSkFCL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VrQUVnQVNBQi9RQUV3QUg5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3VEFBU0FCSUFIOUFBVFFBZjBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJOQUJJQUZCZ0FKcUlRRWdBa0VFYWlJQ0lBcEhEUUFMQ3lBSUlBOUJCWFJxSVFVQ1FDQUFLQUlZSWdZZ0FDZ0NIQ0lMVHcwQUlBVWdCa0VHZEdvaEFRSkFJQXNnQm10QkEzRWlDRVVFUUNBR0lRSU1BUXRCQUNFRElBWWhBZ05BSUFFZ0FmMEFCQUQ5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3UUFJQUVnQWYwQUJCRDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dRUUlBRkJRR3NoQVNBQ1FRRnFJUUlnQTBFQmFpSURJQWhIRFFBTEN5QUdJQXRyUVh4TERRQURRQ0FCSUFIOUFBUUEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRUFDQUJJQUg5QUFRUS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFRUNBQklBSDlBQVJBL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VRQ0FCSUFIOUFBUlEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRVVDQUJJQUg5QUFTQUFmME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQklBQklBRWdBZjBBQkpBQi9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFa0FFZ0FTQUIvUUFFd0FIOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1RBQVNBQklBSDlBQVRRQWYwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCTkFCSUFGQmdBSnFJUUVnQWtFRWFpSUNJQXRIRFFBTEN5QUtJQUFvQWdnaUNTQUFLQUlFSWc0Z0RXc2lBQ0FBSUFsS0d5SUlJQWdnQ2tzYklRd2dCRUVnYWlFQkFuOGdCMFVFUUNBTVJRUkFRUUFoQXlBQkRBSUxJQVFnQlAwQUJBQWdCZjBBQkFBZ0JQMEFCQ0Q5NUFIOURGVVQ0ejVWRStNK1ZSUGpQbFVUNHo3OTVnSDk1UUg5Q3dRQUlBUWdCUDBBQkJBZ0JmMEFCQkFnQlAwQUJERDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FRUVFFaEF5QUVRZUFBYWd3QkN5QUJJQWNpQTBFR2RHb0xJUUlnQXlBTVNRUkFBMEFnQWtFZ2F5SUFJQUQ5QUFRQUlBSkJRR3I5QUFRQUlBTDlBQVFBL2VRQi9ReFZFK00rVlJQalBsVVQ0ejVWRStNKy9lWUIvZVVCL1FzRUFDQUNRUkJySWdBZ0FQMEFCQUFnQWtFd2EvMEFCQUFnQXYwQUJCRDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FBSUFKQlFHc2hBaUFEUVFGcUlnTWdERWNOQUFzTElBZ2dDazhpRFVVRVFDQUNRU0JySWdBZ0FQMEFCQUFnQWtGQWF2MEFCQUQ5REZVVFl6OVZFMk0vVlJOalAxVVRZei85NWdIOTVRSDlDd1FBSUFKQkVHc2lBQ0FBL1FBRUFDQUNRVEJyL1FBRUFQME1WUk5qUDFVVFl6OVZFMk0vVlJOalAvM21BZjNsQWYwTEJBQUxJQXNnRGlBSklBOXJJZ0FnQUNBT1Noc2lEaUFMSUE1Skd5RUpJQVZCSUdvaEFpQUpBbjhnQmtVRVFDQUpSUVJBSUFJaEEwRUFEQUlMSUFVZ0JmMEFCQUFnQlAwQUJBQWdCZjBBQkNEOTVBSDlESFlHWWo5MkJtSS9kZ1ppUDNZR1lqLzk1Z0g5NVFIOUN3UUFJQVVnQmYwQUJCQWdCUDBBQkJBZ0JmMEFCREQ5NUFIOURIWUdZajkyQm1JL2RnWmlQM1lHWWovOTVnSDk1UUg5Q3dRUUlBVkI0QUJxSVFOQkFRd0JDeUFDSUFaQkJuUnFJUU1nQmdzaUFFc0VRQU5BSUFOQklHc2lDQ0FJL1FBRUFDQURRVUJxL1FBRUFDQUQvUUFFQVAza0FmME1kZ1ppUDNZR1lqOTJCbUkvZGdaaVAvM21BZjNsQWYwTEJBQWdBMEVRYXlJSUlBajlBQVFBSUFOQk1HdjlBQVFBSUFQOUFBUVEvZVFCL1F4MkJtSS9kZ1ppUDNZR1lqOTJCbUkvL2VZQi9lVUIvUXNFQUNBRFFVQnJJUU1nQUVFQmFpSUFJQWxIRFFBTEN5QUxJQTVOSWdoRkJFQWdBMEVnYXlJQUlBRDlBQVFBSUFOQlFHcjlBQVFBL1F4MkJ1SS9kZ2JpUDNZRzRqOTJCdUkvL2VZQi9lVUIvUXNFQUNBRFFSQnJJZ0FnQVAwQUJBQWdBMEV3YS8wQUJBRDlESFlHNGo5MkJ1SS9kZ2JpUDNZRzRqLzk1Z0g5NVFIOUN3UUFDd0pBSUFkRkJFQWdERVVFUUVFQUlRY01BZ3NnQkNBRS9RQUVBQ0FGL1FBRUFDQUUvUUFFSVAza0FmME1yZ0ZaUGE0QldUMnVBVms5cmdGWlBmM21BZjNrQWYwTEJBQWdCQ0FFL1FBRUVDQUYvUUFFRUNBRS9RQUVNUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkJBZ0JFSGdBR29oQVVFQklRY01BUXNnQVNBSFFRWjBhaUVCQ3lBSElBeEpCRUFEUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBQWdBZjBBQkFEOTVBSDlESzRCV1QydUFWazlyZ0ZaUGE0QldUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQUNBQi9RQUVFUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkFBZ0FVRkFheUVCSUFkQkFXb2lCeUFNUncwQUN3c2dEVVVFUUNBQlFTQnJJZ0FnQVAwQUJBQWdBVUZBYXYwQUJBRDlESzRCMlQydUFkazlyZ0haUGE0QjJUMzk1Z0g5NUFIOUN3UUFJQUZCRUdzaUFDQUEvUUFFQUNBQlFUQnIvUUFFQVAwTXJnSFpQYTRCMlQydUFkazlyZ0haUGYzbUFmM2tBZjBMQkFBTEFrQWdCa1VFUUNBSlJRUkFRUUFoQmd3Q0N5QUZJQVg5QUFRQUlBVDlBQVFBSUFYOUFBUWcvZVFCL1F4ekJzcy9jd2JMUDNNR3l6OXpCc3MvL2VZQi9lUUIvUXNFQUNBRklBWDlBQVFRSUFUOUFBUVFJQVg5QUFRdy9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VFQ0FGUWVBQWFpRUNRUUVoQmd3QkN5QUNJQVpCQm5ScUlRSUxJQVlnQ1VrRVFBTkFJQUpCSUdzaUFDQUEvUUFFQUNBQ1FVQnEvUUFFQUNBQy9RQUVBUDNrQWYwTWN3YkxQM01HeXo5ekJzcy9jd2JMUC8zbUFmM2tBZjBMQkFBZ0FrRVFheUlBSUFEOUFBUUFJQUpCTUd2OUFBUUFJQUw5QUFRUS9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VBQ0FDUVVCcklRSWdCa0VCYWlJR0lBbEhEUUFMQ3lBSURRQWdBa0VnYXlJQUlBRDlBQVFBSUFKQlFHcjlBQVFBL1F4ekJrdEFjd1pMUUhNR1MwQnpCa3RBL2VZQi9lUUIvUXNFQUNBQ1FSQnJJZ0FnQVAwQUJBQWdBa0V3YS8wQUJBRDlESE1HUzBCekJrdEFjd1pMUUhNR1MwRDk1Z0g5NUFIOUN3UUFDd3RkQVFSL0lBQUVRQ0FBS0FJVUlnRWdBQ2dDRUNJQ2JBUkFBMEFnQUNnQ0dDQURRUUowYWlnQ0FDSUVCRUFnQkJBVUlBQW9BaEFoQWlBQUtBSVVJUUVMSUFOQkFXb2lBeUFCSUFKc1NRMEFDd3NnQUNnQ0dCQVVJQUFRRkFzTGhRRUJBbjhDUUFKQUlBQW9BZ1FpQXlBQUtBSUFJZ1JIQkVBZ0FDZ0NDQ0VEREFFTElBQWdBMEVLYWlJRU5nSUVJQUFvQWdnZ0JFRUNkQkFiSWdORkRRRWdBQ0FETmdJSUlBQW9BZ0FoQkFzZ0F5QUVRUUowYWlBQk5nSUFJQUFnQkVFQmFqWUNBRUVCRHdzZ0FDZ0NDQkFVSUFCQ0FEY0NBQ0FDUVFGQnhpOUJBQkFUUVFBTGt3UUNCbjhDZmdKQUFrQURRQ0FBSUFCQkFXdHhEUUVnQVVGSFN3MEJJQUJCQ0NBQVFRaExJZ2NiSVFCQjZOVUJLUU1BSWdnQ2YwRUlJQUZCQTJwQmZIRWdBVUVJVFJzaUFVSC9BRTBFUUNBQlFRTjJRUUZyREFFTElBRm5JUU1nQVVFZElBTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlESUFOQlAwOGJDeUlEcllnaUNVSUFVZ1JBQTBBZ0NTQUplaUlJaUNFSkFuNGdBeUFJcDJvaUEwRUVkQ0lFUWVqTkFXb29BZ0FpQWlBRVFlRE5BV29pQlVjRVFDQUNJQUFnQVJCRklnUU5CaUFDS0FJRUlnUWdBaWdDQ0NJR05nSUlJQVlnQkRZQ0JDQUNJQVUyQWdnZ0FpQUZLQUlFTmdJRUlBVWdBallDQkNBQ0tBSUVJQUkyQWdnZ0EwRUJhaUVESUFsQ0FZZ01BUXRCNk5VQlFlalZBU2tEQUVKK0lBT3RpWU0zQXdBZ0NVSUJoUXNpQ1VJQVVnMEFDMEhvMVFFcEF3QWhDQXRCUHlBSWVhZHJJUVVDUUNBSVVBUkFRUUFoQWd3QkN5QUZRUVIwSWdSQjZNMEJhaWdDQUNFQ0lBaENnSUNBZ0FSVURRQkI0d0FoQXlBQ0lBUkI0TTBCYWlJR1JnMEFBMEFnQTBVTkFTQUNJQUFnQVJCRklnUU5CQ0FEUVFGcklRTWdBaWdDQ0NJQ0lBWkhEUUFMQ3lBQklBQkJNR3BCTUNBSEcyb1FlZzBBQ3lBQ1JRMEFJQUlnQlVFRWRFSGd6UUZxSWdOR0RRQURRQ0FDSUFBZ0FSQkZJZ1FOQWlBQ0tBSUlJZ0lnQTBjTkFBc0xRUUFoQkFzZ0JBdVdJd0luZndON0FrQWdBeUFBS0FJQUlnbExEUUFnQVNBRFR3MEFJQUVnQ1U4TkFDQUVJQUFvQWdRaUNVc05BQ0FDSUFSUERRQWdBaUFKVHcwQUlBVkJIR3NoSnlBQUtBSUlJaGxCQW5RaEVTQUhRUUowSVE4Z0JrRUNkQ0VmSUFWQkJHc2hLQ0FDSUFBb0FneHVJUjRnR1NBWklBRWdHVzRpS1d3Z0FXdHFJU29nQmtFSVJ5RWpJQUloSFFOQUlBQW9BZ3dpQ1NFS0lBSWdIVVlFUUNBSklBSWdDWEJySVFvTElBb2dCQ0FkYXlJTUlBb2dERWtiSWhOQmZIRWhHeUFUUVFOeElSWWdFMEY0Y1NFcklCTkJCM0VoSkNBVFFRRnJJUm9nR1NBSlFRSjBJQXBCQW5SclFRUnFiQ0VnSUFaQkFrWWdFMEVCUm5FaExDQUpJQXBySUJsc0lTVWdKeUFQSUIwZ0Ftc2lER3dpQ1dvaEppQUpJQ2hxSVMwZ0JTQUphaUV1SUFVZ0J5QU1iRUVDZEdvaEhDQXBJU0VnQVNFWUEwQWdLaUFaSUFFZ0dFWWJJZ3dnQXlBWWF5SUpJQWtnREVzYklSQWdHU0FNYXlFSklDRkJBblFpRFNBQUtBSVlJQUFvQWhBZ0hteEJBblJxYWlnQ0FDRVNBa0FDUUNBSUJFQUNRQUpBQWtBQ1FBSkFJQklFUUNBU0lDVkJBblJxSUFsQkFuUnFJUW9nR0NBQmF5RU5JQVpCQVVZTkJDQWNJQVlnRFd4QkFuUnFJUXNnRUVFQlJnMERJQ3dOQWlBakRRRWdFRUVIVFEwQklCTkZEUWdnSmlBTklCOXNhaUFRUVFWMGFpRVZJQklnSUNBUVFRSjBhaUFNUVFKMGEyb2hJaUFRUVh4eElRMUJBQ0VTREFVTElBWkJBVWNFUUNBVFJRMElJQkJCZkhFaERTQVFRUU54SVF3Z0hDQVlJQUZySUFac1FRSjBhaUVMUVFBaEVpQVFRUUZyUVFOSklSUURRQUpBSUJCRkRRQkJBQ0VKUVFBaENrRUFJUTRnRkVVRVFBTkFJQXNnQmlBS2JFRUNkR3BCQURZQ0FDQUxJQXBCQVhJZ0JteEJBblJxUVFBMkFnQWdDeUFLUVFKeUlBWnNRUUowYWtFQU5nSUFJQXNnQ2tFRGNpQUdiRUVDZEdwQkFEWUNBQ0FLUVFScUlRb2dEa0VFYWlJT0lBMUhEUUFMQ3lBTVJRMEFBMEFnQ3lBR0lBcHNRUUowYWtFQU5nSUFJQXBCQVdvaENpQUpRUUZxSWdrZ0RFY05BQXNMSUFzZ0Qyb2hDeUFUSUJKQkFXb2lFa2NOQUFzTUNBc2dFMFVOQnlBUVFRSjBJUXdnSENBWUlBRnJRUUowYWlFTFFRQWhDU0FhUVFkUEJFQURRQ0FMUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxUVFBZ0RCQVpJQTlxSVFzZ0NVRUlhaUlKSUN0SERRQUxDMEVBSVFrZ0pFVU5Cd05BSUF0QkFDQU1FQmtnRDJvaEN5QUpRUUZxSWdrZ0pFY05BQXNNQndzZ0UwVU5CaUFRUVh4eElSUWdFRUVEY1NFU1FRQWhEU0FRUVFGclFRTkpJUmNNQlF0QkFDRUpJQkJCZkhFaURnUkFBMEFnQ3lBSlFRTjBhaUFLSUFsQkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVDY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBc2dDVUVEY2lJVVFRTjBhaUFLSUJSQkFuUnFLQUlBTmdJQUlBbEJCR29pQ1NBT1NRMEFDd3NnQ1NBUVR3MEZBa0FnRUNBSmF5SVVRUTlORFFBZ0xpQU5JQjlzSWcxcUlBbEJBM1JxSUJJZ0lHb2lEaUFRSUF4clFRSjBha2tFUUNBT0lBa2dER3RCQW5ScUlBMGdMV29nRUVFRGRHcEpEUUVMSUFvZ0NVRUNkR29oRFNBSi9SSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBRDlyZ0VoTUNBSklCUkJmSEVpREdvaENVRUFJUTREUUNBTElEQkJBLzJyQVNJeC9Sc0FhaUFOSUE1QkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQU1SdzBBQ3lBTUlCUkdEUVlMUVFBaERDQUpJUTRnRUNBSmEwRURjU0lOQkVBRFFDQUxJQTVCQTNScUlBb2dEa0VDZEdvb0FnQTJBZ0FnRGtFQmFpRU9JQXhCQVdvaURDQU5SdzBBQ3dzZ0NTQVFhMEY4U3cwRkEwQWdDeUFPUVFOMGFpQUtJQTVCQW5ScUtBSUFOZ0lBSUFzZ0RrRUJhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRUNhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRURhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUE1QkJHb2lEaUFRUncwQUN3d0ZDeUFUUlEwRVFRQWhDU0FhUVFOUEJFQURRQ0FMSUFvb0FnQTJBZ0FnQ3lBUGFpSU1JQW9nRVdvaURTZ0NBRFlDQUNBTUlBOXFJZ3dnRFNBUmFpSU5LQUlBTmdJQUlBd2dEMm9pRENBTklCRnFJZzBvQWdBMkFnQWdEU0FSYWlFS0lBd2dEMm9oQ3lBSlFRUnFJZ2tnRzBjTkFBc0xRUUFoQ1NBV1JRMEVBMEFnQ3lBS0tBSUFOZ0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFRTElCd2dEVUVDZEdvaEN5QVFRUVJIQkVBZ0UwVU5CQ0FRUVFKMElRbEJBQ0VPSUJwQkEwOEVRQU5BSUFzZ0NpQUpFQllnQ2lBUmFpSU5JQkZxSWdzZ0VXb2lFaUFSYWlFS0lBOXFJQTBnQ1JBV0lBOXFJQXNnQ1JBV0lBOXFJQklnQ1JBV0lBOXFJUXNnRGtFRWFpSU9JQnRIRFFBTEMwRUFJUTRnRmtVTkJBTkFJQXNnQ2lBSkVCWWdDaUFSYWlFS0lBOXFJUXNnRGtFQmFpSU9JQlpIRFFBTERBUUxJQk5GRFFOQkFDRUpJQnBCQTA4RVFBTkFJQXNnQ3YwQUFnRDlDd0lBSUFzZ0Qyb2lEQ0FLSUJGcUlnMzlBQUlBL1FzQ0FDQU1JQTlxSWd3Z0RTQVJhaUlOL1FBQ0FQMExBZ0FnRENBUGFpSU1JQTBnRVdvaURmMEFBZ0Q5Q3dJQUlBMGdFV29oQ2lBTUlBOXFJUXNnQ1VFRWFpSUpJQnRIRFFBTEMwRUFJUWtnRmtVTkF3TkFJQXNnQ3YwQUFnRDlDd0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFNTEEwQkJBQ0VKSUEwRVFBTkFJQXNnQ1VFRmRHb2dDaUFKUVFKMGFpZ0NBRFlDQUNBTElBbEJBWElpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBM0lpREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBSlFRUnFJZ2tnRFVrTkFBc0xBa0FnQ1NBUVR3MEFBa0FDUUNBUUlBbHJJaFJCQjAwTkFDQUxJQWxCQlhScUlDSWdFU0FTYkdwSkJFQWdDaUFKUVFKMGFpQVZJQThnRW14cVNRMEJDeUFKL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhNQ0FKSUJSQmZIRWlGMm9oREVFQUlRNERRQ0FMSURCQkJmMnJBU0l4L1JzQWFpQUtJQWtnRG1wQkFuUnEvUUFDQUNJeS9Wb0NBQUFnQ3lBeC9Sc0JhaUF5L1ZvQ0FBRWdDeUF4L1JzQ2FpQXkvVm9DQUFJZ0N5QXgvUnNEYWlBeS9Wb0NBQU1nTVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRXdJQTVCQkdvaURpQVhSdzBBQ3lBVUlCZEhEUUVNQWdzZ0NTRU1DMEVBSVE0Z0VDQU1JZ2xyUVFOeEloUUVRQU5BSUFzZ0NVRUZkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUpRUUZxSVFrZ0RrRUJhaUlPSUJSSERRQUxDeUFNSUJCclFYeExEUUFEUUNBTElBbEJCWFJxSUFvZ0NVRUNkR29vQWdBMkFnQWdDeUFKUVFGcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFKcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDeUFKUVFOcUlneEJCWFJxSUFvZ0RFRUNkR29vQWdBMkFnQWdDVUVFYWlJSklCQkhEUUFMQ3lBS0lCRnFJUW9nQ3lBUGFpRUxJQk1nRWtFQmFpSVNSdzBBQ3d3Q0N5QVNSUVJBUVFFZ0FDZ0NDQ0FBS0FJTWJFRUNkQkFYSWhKRkJFQkJBQThMSUFBb0FoZ2dBQ2dDRUNBZWJFRUNkR29nRFdvZ0VqWUNBQXNnRWlBbFFRSjBhaUFKUVFKMGFpRUxJQmdnQVdzaENRSkFJQVpCQVVjRVFDQWNJQVlnQ1d4QkFuUnFJUW9nRUVFQlJ3UkFBa0FnSXcwQUlCQkJCMDBOQUNBVFJRMEZJQ1lnQ1NBZmJHb2dFRUVGZEdvaElpQWdJQkJCQW5ScUlBeEJBblJySVM4Z0VFRjhjU0VVUVFBaERBTkFRUUFoQ1NBVUJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0N5QUpRUUZ5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUUp5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUU55SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0NVRUVhaUlKSUJSSkRRQUxDd0pBSUFrZ0VFOE5BQUpBQWtBZ0VDQUpheUlYUVFkTkRRQWdDeUFKUVFKMGFpQWlJQXdnRDJ4cVNRUkFJQW9nQ1VFRmRHb2dFaUF2SUF3Z0VXeHFha2tOQVFzZ0NmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVRBZ0NTQVhRWHh4SWhWcUlRMUJBQ0VPQTBBZ0N5QUpJQTVxUVFKMGFpQUtJREJCQmYyckFTSXgvUnNEYWlBS0lESDlHd0pxSUFvZ01mMGJBV29nQ2lBeC9Sc0FhdjFjQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlERDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTUNBT1FRUnFJZzRnRlVjTkFBc2dGU0FYUncwQkRBSUxJQWtoRFF0QkFDRU9JQkFnRFNJSmEwRURjU0lYQkVBRFFDQUxJQWxCQW5ScUlBb2dDVUVGZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVhSdzBBQ3dzZ0RTQVFhMEY4U3cwQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FRUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBeEJBV29pREVjTkFBc01CUXNnRTBVTkJDQVFRWHh4SVJRZ0VFRURjU0VTUVFBaERTQVFRUUZyUVFOSklSY01BZ3NnRTBVTkEwRUFJUWtnR2tFRFR3UkFBMEFnQ3lBS0tBSUFOZ0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMG9BZ0EyQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaEN5QU5JQTlxSVFvZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5Bd05BSUFzZ0NpZ0NBRFlDQUNBTElCRnFJUXNnQ2lBUGFpRUtJQWxCQVdvaUNTQVdSdzBBQ3d3REN5QWNJQWxCQW5ScUlRb2dFRUVFUndSQUlCTkZEUU1nRUVFQ2RDRUpRUUFoRGlBYVFRTlBCRUFEUUNBTElBb2dDUkFXSUFvZ0Qyb2lEU0FQYWlJTElBOXFJaElnRDJvaENpQVJhaUFOSUFrUUZpQVJhaUFMSUFrUUZpQVJhaUFTSUFrUUZpQVJhaUVMSUE1QkJHb2lEaUFiUncwQUN3dEJBQ0VPSUJaRkRRTURRQ0FMSUFvZ0NSQVdJQW9nRDJvaENpQVJhaUVMSUE1QkFXb2lEaUFXUncwQUN3d0RDeUFUUlEwQ1FRQWhDU0FhUVFOUEJFQURRQ0FMSUFyOUFBSUEvUXNDQUNBTElCRnFJZ3dnQ2lBUGFpSU4vUUFDQVAwTEFnQWdEQ0FSYWlJTUlBMGdEMm9pRGYwQUFnRDlDd0lBSUF3Z0VXb2lEQ0FOSUE5cUlnMzlBQUlBL1FzQ0FDQU5JQTlxSVFvZ0RDQVJhaUVMSUFsQkJHb2lDU0FiUncwQUN3dEJBQ0VKSUJaRkRRSURRQ0FMSUFyOUFBSUEvUXNDQUNBS0lBOXFJUW9nQ3lBUmFpRUxJQWxCQVdvaUNTQVdSdzBBQ3d3Q0N3TkFBa0FnRUVVTkFFRUFJUTVCQUNFSlFRQWhEQ0FYUlFSQUEwQWdDeUFKUVFKMGFpQUtJQVlnQ1d4QkFuUnFLQUlBTmdJQUlBc2dDVUVCY2lJVlFRSjBhaUFLSUFZZ0ZXeEJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSVZRUUowYWlBS0lBWWdGV3hCQW5ScUtBSUFOZ0lBSUFzZ0NVRURjaUlWUVFKMGFpQUtJQVlnRld4QkFuUnFLQUlBTmdJQUlBbEJCR29oQ1NBTVFRUnFJZ3dnRkVjTkFBc0xJQkpGRFFBRFFDQUxJQWxCQW5ScUlBb2dCaUFKYkVFQ2RHb29BZ0EyQWdBZ0NVRUJhaUVKSUE1QkFXb2lEaUFTUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBMUJBV29pRFVjTkFBc01BUXNEUUFKQUlCQkZEUUJCQUNFT1FRQWhDVUVBSVF3Z0YwVUVRQU5BSUFzZ0JpQUpiRUVDZEdvZ0NpQUpRUUowYWlnQ0FEWUNBQ0FMSUFsQkFYSWlGU0FHYkVFQ2RHb2dDaUFWUVFKMGFpZ0NBRFlDQUNBTElBbEJBbklpRlNBR2JFRUNkR29nQ2lBVlFRSjBhaWdDQURZQ0FDQUxJQWxCQTNJaUZTQUdiRUVDZEdvZ0NpQVZRUUowYWlnQ0FEWUNBQ0FKUVFScUlRa2dERUVFYWlJTUlCUkhEUUFMQ3lBU1JRMEFBMEFnQ3lBR0lBbHNRUUowYWlBS0lBbEJBblJxS0FJQU5nSUFJQWxCQVdvaENTQU9RUUZxSWc0Z0VrY05BQXNMSUFvZ0VXb2hDaUFMSUE5cUlRc2dEVUVCYWlJTklCTkhEUUFMQ3lBaFFRRnFJU0VnRUNBWWFpSVlJQU5KRFFBTElCNUJBV29oSGlBVElCMXFJaDBnQkVrTkFBc0xRUUVMR1FFQ2ZpQUFLUU1BSWdJZ0FTa0RBQ0lEVlNBQ0lBTlRhd3UwTmdVbmZ3OStBWHNCZlFGOEl3QkIwQUJySWc4a0FDQVBRWkQvQXpZQ0tDQUFLQUtFQVNBQUtBS0FBV3doR0FKL0FrQUNRQUpBSUFBb0FnZ2lDMEVJUndSQVFRQWdDMEdBQWtjTkJCb2dEMEhaL3dNMkFpZ01BUXNnQUMwQVhFRUJjUTBBSUJoQmZIRWhEU0FQUWMwQWFpRW9JQTlCekFCcUlTa2dEMEhJQUdvaE1FR1Evd01oQ3dKQUFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQ2dDVkNJTVJRMEFJQXdnQUNnQ1VDSU9UUTBBSUFBb0FsZ2dEa0VEZEdvcEF3QWhNaUFBSUE1QkFXbzJBbEFnQ1NBeUlBb1FNRVVFUUNBS1FRRkJteXBCQUJBVFFRQU1Ed3NnQ1NBQUtBSVFRUUlnQ2hBZFFRSkhCRUFnQ2tFQlFZTVRRUUFRRTBFQURBOExJQUFvQWhBZ0QwRW9ha0VDRUJVZ0R5Z0NLRUdRL3dOR0RRRWdDa0VCUWNRZlFRQVFFMEVBREE0TElBdEJrLzhEUmcwQkN3TkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzFBRVFDQUFRY0FBTmdJSURBSUxJQWtnQUNnQ0VFRUNJQW9RSFVFQ1J3UkFJQXBCQVVHREUwRUFFQk5CQUF3T0N5QUFLQUlRSUE5QkpHcEJBaEFWSUE4b0FpUkJBVTBFUUNBS1FRRkIreTVCQUJBVFFRQU1EZ3NDUUNBUEtBSW9RWUNCQWtjTkFDQUpLUU1JSWpKUUJINUNBQVVnTWlBSktRTTRmUXRDQUZJTkFDQUFRY0FBTmdJSURBSUxBa0FnQUNnQ0NDSVRRUkJ4UlFSQUlBOG9BaVFoQ3d3QkN5QVBLQUlrSVFzZ0FDZ0NHQ0lPUlEwQUlBdEJBbW9pRENBT1N3UkFJQXBCQVVHTndRQkJBQkFUUVFBTUR3c2dBQ0FPSUF4ck5nSVlDeUFQSUF0QkFtc2lFRFlDSkVHZ3dnRWhEQ0FQS0FJb0lRNERRQ0FNSWdzb0FnQWlHd1JBSUF0QkRHb2hEQ0FPSUJ0SERRRUxDeUFMS0FJRUlCTnhSUVJBSUFwQkFVSHdLVUVBRUJOQkFBd09Dd0pBSUFBb0FoUWdFRThFUUNBQUtBSVFJUXdNQVFzZ0NTa0RDQ0l5VUFSK1FnQUZJRElnQ1NrRE9IMExJQkN0VXdSQUlBcEJBVUdBTFVFQUVCTkJBQXdQQ3lBQUtBSVFJQThvQWlRUUd5SU1SUVJBSUFBb0FoQVFGQ0FBUWdBM0F4QWdDa0VCUWNnbVFRQVFFMEVBREE4TElBQWdERFlDRUNBQUlBOG9BaVFpRURZQ0ZBc2dDU0FNSUJBZ0NoQWRJZ3dnRHlnQ0pFY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dDeWdDQ0NJTFJRUkFJQXBCQVVHbzJ3QkJBQkFUUVFBTURnc2dBQ0FBS0FJUUlBd2dDaUFMRVFFQVJRUkFJQThnRHlnQ0tEWUNJQ0FLUVFGQjR1d0FJQTlCSUdvUUUwRUFEQTRMSUFrcEF6Z2hNaUFQS0FJa0lSSWdBQ2dDNEFFaUV5Z0NLQ0lRSUFBb0F1UUJJZ3hCS0d3aURtb2lGU2dDRkNJZVFRRnFJaHdnRlNnQ0hDSUxTd1JBSUJVQ2Z5QUxzME1BQU1oQ2tpSkNRd0FBZ0U5ZElFSkRBQUFBQUdCeEJFQWdRcWtNQVF0QkFBc2lDellDSENBVktBSVlJQXRCR0d3UUd5RUxJQk1vQWlnaUVDQU9haUVWSUF0RkRRTWdGU0FMTmdJWUlCVW9BaFFpSGtFQmFpRWNDeUFPSUJCcUloTW9BaGdnSGtFWWJHb2lDeUFTUVFScU5nSVFJQXNnTXFjZ0VtdEJCR3NpRHF3M0F3Z2dDeUFiT3dFQUlCTWdIRFlDRkFKQUlCdEJrUDhEUncwQUFrQWdFeWdDRUNJTVJRMEFJQk1vQWd3aUN5QVRLQUlFVHcwQUlBd2dDMEVZYkdvZ0RxMDNBd0FMSUFrcEF6aW5JQThvQWlSclFRUnJyU0l5SUFBcEF6QlhEUUFnQUNBeU53TXdDeUFBTFFCY1FRUnhCRUFnQ1NBQU5RSVlJQW9nQ1NnQ0tCRUlBQ0FBTlFJWVVnUkFJQXBCQVVHREUwRUFFQk5CQUF3UEN5QVBRWlAvQXpZQ0tBd0NDeUFKSUFBb0FoQkJBaUFLRUIxQkFrY0VRQ0FLUVFGQmd4TkJBQkFUUVFBTURnc2dBQ2dDRUNBUFFTaHFRUUlRRlNBUEtBSW9RWlAvQTBjTkFBc0xBa0FnQ1NrRENDSXlVQVIrUWdBRklESWdDU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUVMSUFBdEFGd2lDMEVFY1VVRVFDQUFLQUxrQVVHTUxHd2hEQ0FBS0FLMEFRSkFBa0FnQUNnQ09BUkFJQWtwQXdnaU1sQUVma0lBQlNBeUlBa3BBemg5QzZjaEVBd0JDeUFBS0FJWUloQkJBa2tOQVFzZ0FDQVFRUUpySWhBMkFoZ0xJQXhxSVJZZ0VFVU5BeUFKS1FNSUlqSlFCSDVDQUFVZ01pQUpLUU00ZlFzZ0VLMVRCRUFnQUNnQzBBRUVRQ0FLUVFGQnJTMUJBQkFUUVFBTUR3c2dDa0VDUWEwdFFRQVFFd3NnQUNnQ0dDSU9RWDVQQkVBZ0NrRUJRYU1MUVFBUUUwRUFEQTRMQWtBZ0ZpZ0MzQ3NpREFSQUlCWW9BdUFySWd0QmZTQU9hMHNFUUNBS1FRRkJsZ2xCQUJBVFFRQU1FQXNnRENBTElBNXFRUUpxRUJzaUN3UkFJQllnQ3pZQzNDc01CZ3NnRmlnQzNDc1FGQ0FXUVFBMkF0d3JEQUVMSUJZZ0RrRUNhaEFZSWdzMkF0d3JJQXNOQkFzZ0NrRUJRZnN2UVFBUUUwRUFEQTBMSUFCQkNEWUNDQ0FBSUF0QitnRnhPZ0JjREFNTElBOG9BaWdoQ3d3RUN5QVZLQUlZRUJRZ0V5Z0NLQ0FNUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVSHlIVUVBRUJOQkFBd0tDeUFBS0FMZ0FTSWJLQUlvSWhVZ0FDZ0M1QUVpRTBFb2JDSVNhaUlNS0FJUUlBd29BZ3hCR0d4cUlnc2dDU2tET0NJelFnSjlJakkzQXdnZ0N5QXpJQUExQWhoOE53TVFJQUFvQWhnaERnSkFJQXdvQWhRaUhrRUJhaUljSUF3b0Fod2lDMDBFUUNBTUtBSVlJUXdNQVFzZ0RBSi9JQXV6UXdBQXlFS1NJa0pEQUFDQVQxMGdRa01BQUFBQVlIRUVRQ0JDcVF3QkMwRUFDeUlMTmdJY0lBd29BaGdnQzBFWWJCQWJJUXdnR3lnQ0tDSVZJQkpxSVFzZ0RFVU5CU0FMSUF3MkFoZ2dDeWdDRkNJZVFRRnFJUndMSUF3Z0hrRVliR29pQ3lBT1FRSnFOZ0lRSUFzZ01zUTNBd2dnQzBHVC93TTdBUUFnRWlBVmFpQWNOZ0lVSUFBQ2Z5QVFCRUJCQ0NBSklCWW9BdHdySUJZb0F1QXJhaUFBS0FJWUlBb1FIU0lRSUFBb0FoaEdEUUVhUWNBQUlCQkJmMGNOQVJvZ0NrRUJRWU1UUVFBUUUwRUFEQXNMUVFBaEVFSEFBRUVJSUFBb0FoZ2JDellDQ0NBV0lCWW9BdUFySUJCcU5nTGdLd0pBSUFBdEFGeEJBWEVOQUNBQUtBSXNJZ3RCQUVnTkFDQUFLQUxrQVNJTUlBdEhEUUFnQUNnQ1RBMEFJQWtvQWh4QkFrWU5BQ0FBS0FLMEFTQU1RWXdzYkdvaUN5Z0MyQ3NpRGlBQUtBTGdBU2dDS0NBTVFTaHNhaUlNS0FJRVJ3MEFJQTRnQ3lnQzFDdEJBV29pQzAwTkFBSkFJQXdvQWhBZ0MwRVliR29wQXdBaU1pQUpLUU00VVEwQUlBa2dNaUFLRURBTkFDQUtRUUZCbXlwQkFCQVRRUUFNQ3dzZ0NTQUFLQUlRUVFJZ0NoQWRRUUpIQkVBZ0NrRUJRWU1UUVFBUUUwRUFEQXNMSUFBb0FoQWdEMEVvYWtFQ0VCVWdEeWdDS0VHUS93TkdEUUlnQ2tFQlFjUWZRUUFRRTBFQURBb0xJQUF0QUZ3aUMwRUpjVUVCUncwQUlBQWdDMEVJY2pvQVhDQUFLQUswQVNBQUtBTGtBU0lPUVl3c2JHb29BdGdyUVFGR0RRQWdDU2dDSEVFQ1JnMEFJQWtwQXpnaU1rSi9VUTBBQWtBRFFFRUJJUXdnQ1NBUFFjWUFhaUlMUVFJZ0NoQWRRUUpIRFFFZ0N5QVBRVUJyUVFJUUZTQVBLQUpBUVpEL0EwY05BVUdERXlFUUlBa2dDMEVDSUFvUUhVRUNSdzBKSUFzZ0QwRThha0VDRUJVZ0R5Z0NQRUVLUndSQVFmc3VJUkFNQ2dzZ0QwRUlOZ0k4SUFrZ0QwSEdBR3BCQ0NBS0VCMGlDeUFQS0FJOFJ3MEpJQXRCQ0VjRVFFR3FIeUVRREFvTElBOUJ4Z0JxSUE5Qk9HcEJBaEFWSURBZ0QwRTBha0VFRUJVZ0tTQVBRVEJxUVFFUUZTQW9JQTlCTEdwQkFSQVZJQTRnRHlnQ09FY0VRQ0FQS0FJMElndEJEa2tOQWlBUElBdEJER3NpQ3pZQ05DQUpJQXV0SUFvZ0NTZ0NLQkVJQUNBUE5RSTBVUTBCREFJTEN5QVBLQUl3SUE4b0FpeEhJUXdMSUFrZ01pQUtJQWtvQWl3UkRBQkZEUWdnREEwQUlBQWdBQzBBWEVIdUFYRkJFSEk2QUZ3Q1FDQVlSUTBBSUFBb0FyUUJJUlpCQUNFTElCaEJCRThFUUFOQUlCWWdDMEdNTEd4cUloNG9BdGdySWh6OUVTQVdJQXRCQVhKQmpDeHNhaUliS0FMWUt5SVYvUndCSUJZZ0MwRUNja0dNTEd4cUloSW9BdGdySWhQOUhBSWdGaUFMUVFOeVFZd3NiR29pRGlnQzJDc2lEUDBjQS8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNElrSDlHd0JCQVhFRVFDQWVRZGdyYWlBY1FRRnFOZ0lBQ3lCQi9Sc0JRUUZ4QkVBZ0cwSFlLMm9nRlVFQmFqWUNBQXNnUWYwYkFrRUJjUVJBSUJKQjJDdHFJQk5CQVdvMkFnQUxJRUg5R3dOQkFYRUVRQ0FPUWRncmFpQU1RUUZxTmdJQUN5QUxRUVJxSWdzZ0RVY05BQXNnR0NBTklndEdEUUVMQTBBZ0ZpQUxRWXdzYkdvaURpZ0MyQ3NpREFSQUlBNUIyQ3RxSUF4QkFXbzJBZ0FMSUF0QkFXb2lDeUFZUncwQUN3c2dDa0VDUWFiR0FFRUFFQk1MSUFBdEFGeEJBWEVOQUNBSklBQW9BaEJCQWlBS0VCMUJBa2NFUUFKQUlBQW9BdVFCUVFGcUlCaEhEUUFnR0VVTkFDQUFLQUswQVNFTlFRQWhDd05BSUEwZ0MwR01MR3hxSWdrb0F0UXJSUVJBSUFrb0F0Z3JSUTBJQ3lBTFFRRnFJZ3NnR0VjTkFBc0xJQXBCQVVHREUwRUFFQk5CQUF3SkN5QUFLQUlRSUE5QktHcEJBaEFWQ3lBUEtBSW9JUXNnQUMwQVhFRUJjUTBBSUF0QjJmOERSdzBCQ3dzZ0MwSFovd05IRFFJZ0FDZ0NDRUdBQWtZTkFpQUFRWUFDTmdJSUlBQkJBRFlDNUFFTUFnc2dDeWdDR0JBVUlCc29BaWdnRTBFb2JHb2lBRUVBTmdJY0lBQkNBRGNDRkNBS1FRRkI4aDFCQUJBVFFRQU1CQXNnRHlBTE5nSVFJQXBCQkVIWDFRQWdEMEVRYWhBVElBQWdDellDNUFFZ0QwSFovd00yQWlnZ0FFR0FBallDQ0FzZ0FDZ0M1QUVoQ3lBQUtBSzBBU0VKQWtBQ1FDQUFMUUJjUVFGeERRQUNRQUpBSUFzZ0dFOE5BQ0FKSUF0QmpDeHNhaUVRQTBBZ0VDZ0MzQ3NOQVNBQUlBdEJBV29pQ3pZQzVBRWdFRUdNTEdvaEVDQUxJQmhIRFFBTERBRUxJQXNnR0VjTkFRc2dDRUVBTmdJQURBRUxBa0FDUUNBS1FRRWdDU0FMUVl3c2JHb2lFaWdDdENnRWYwR1FOUVVnRWkwQWlDeEJBbkZGRFFJQ1FDQVNLQUtvS0NJT1JRUkFRUUFoREF3QkN5QVNLQUtzS0NFSlFRQWhERUVBSVFzZ0RrRUVUd1JBSUE1QmZIRWhDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZCUVFBaEVBTkFJQWtnRUVFRGRHb2lEVUVjYWlBTlFSUnFJQTFCREdvZ0RmMWNBZ1Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdRZjJ1QVNGQklCQkJCR29pRUNBTFJ3MEFDeUJCSUVFZ1FmME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMnVBU0pCSUVFZ1FmME5CQVVHQndBQkFnTUFBUUlEQUFFQ0EvMnVBZjBiQUNFTUlBc2dEa1lOQVFzRFFDQUpJQXRCQTNScUtBSUVJQXhxSVF3Z0MwRUJhaUlMSUE1SERRQUxDeUFTSUF3UUdDSUpOZ0swS0NBSkRRRkJoQjhMUVFBUUV5QUtRUUZCMWo1QkFCQVRRUUFNQlFzZ0VpQU1OZ0s4S0NBU0tBS3NLQ0VKSUJJb0FxZ29JZ3dFUUVFQUlSQkJBQ0VMQTBBZ0NTQUxRUU4wSWhOcUlnNG9BZ0FpRFFSQUlCSW9BclFvSUJCcUlBMGdEaWdDQkJBV0dpQVNLQUtzS0NBVGFpSUpLQUlFSUFrb0FnQVFGQ0FTS0FLc0tDSUpJQk5xUWdBM0FnQWdFR29oRUNBU0tBS29LQ0VNQ3lBTFFRRnFJZ3NnREVrTkFBc0xJQkpCQURZQ3FDZ2dDUkFVSUJKQkFEWUNyQ2dnRWlBU0tBSzBLRFlDc0NnZ0VpQVNLQUs4S0RZQ3VDZ0xBbjhnQUNnQzZBRWlDeWdDSENJaUtBSk1JQUFvQXVRQklnbEJqQ3hzYWlnQzBDc2hHaUFMS0FJWUloTW9BaGdoSXlBTEtBSVVLQUlBSWgwZ0lpZ0NCQ0FpS0FJTUlnc2dDU0FKSUNJb0FoZ2lDVzRpRFNBSmJHdHNhaUlPSUJNb0FnQWlDU0FKSUE1Skd5SU1OZ0lBSUIxQmZ5QUxJQTVxSWdrZ0NTQU9TUnNpQ3lBVEtBSUlJZ2tnQ1NBTFN4c2lDVFlDQ0FKQUlBa2dERW9nREVFQVRuRkZCRUFnQ2tFQlFmVXpRUUFRRXd3QkN5QWRLQUlVSVJFZ0hTQWlLQUlJSUEwZ0lpZ0NFQ0lMYkdvaURDQVRLQUlFSWdrZ0NTQU1TUnNpRFRZQ0JDQWRRWDhnQ3lBTWFpSUpJQWtnREVrYklnc2dFeWdDRENJSklBa2dDMHNiSWdrMkFnd2dDU0FOU2lBTlFRQk9jVVVFUUNBS1FRRkJ6ek5CQUJBVERBRUxBa0FnR2lnQ0JBUkFJQjBvQWhBTkFVRUJEQU1MSUFwQkFVSEpLVUVBRUJNTUFRc0NRQUpBQTBBZ0kwRUFOZ0lrSUJFZ0l6UUNBQ0kyUWdGOUlqSWdIVFFDQUh3Z05uOCtBZ0FnRVNBak5BSUVJalZDQVgwaU15QWROQUlFZkNBMWZ6NENCQ0FSSURJZ0hUUUNDSHdnTm44K0FnZ2dIVFFDRENFeUlCRWdNVFlDRUNBUklESWdNM3dnTlg4K0Fnd2dFU0FhS0FJRUlnczJBaFFnRVVFQklBc2dJaWdDVUNJSmF5QUpJQXRMR3pZQ0dDQVJLQUkwRUJRZ0VVRUFOZ0pFSUJIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3STBJQXRCbUFGc0lRMENRQ0FSS0FJY0lnbEZCRUFnRVNBTkVCZ2lDVFlDSENBSlJRMEZJQkVnRFRZQ0lDQUpRUUFnRFJBWkdnd0JDeUFOSUJFb0FpQk5EUUFnQ1NBTkVCc2lDMFVFUUNBS1FRRkI3UmRCQUJBVElCRW9BaHdRRkNBUlFnQTNBaHdNQlFzZ0VTQUxOZ0ljSUFzZ0VTZ0NJQ0lKYWtFQUlBMGdDV3NRR1JvZ0VTQU5OZ0lnQ3lBUktBSVVJZ3NFUUNBYVFiQUhhaUV3SUJwQnJBWnFJUjRnR2tFY2FpRXFJQkVvQWh3aEdVRUFJU1FEUUNBWlFuOGdDMEVCYXlJSnJTSTBoa0ovaFNJeklCRTBBZ0I4SURTSHB5SVZOZ0lBSUJrZ015QVJOQUlFZkNBMGg2Y2lFallDQkNBWklETWdFVFFDQ0h3Z05JY2lNcWNpRXpZQ0NDQVpJRE1nRVRRQ0RId2dOSWNpTmFjaURqWUNEQ0F5eEVJQklCNGdKRUVDZENJTmFpZ0NBQ0lmclNJeWhueENBWDBnTW9lbklCOTBJZ3hCQUVnTkJDQTF4RUovSUEwZ01Hb29BZ0FpSUswaU1vWkNmNFY4SURLSHB5QWdkQ0lOUVFCSURRUWdHU0FOUVg4Z0lIUWdFbkVpSzJzZ0lIVkJBQ0FPSUJKSEd5SU5OZ0lVSUJrZ0RFRi9JQjkwSUJWeElpeHJJQjkxUVFBZ0V5QVZSeHNpRERZQ0VBSkFJQXhGRFFBZ0RLMGdEYTErUWlDSVVBMEFEQVFMSUF3Z0RXd2lMVUhuekprelR3MERJQzFCS0d3aElTQVpJQ1FFZnlBZ1FRRnJJU0FnSDBFQmF5RWZJQ3VzUWdGOFFnR0lweUVySUN5c1FnRjhRZ0dJcHlFc1FRTUZRUUVMTmdJWUlCbEJIR29oRkNBclFRRWdJSFJxSVJ3Z0xFRUJJQjkwYWlFYlFnRWdDNjBpTjRZaE9FSi9JQm9vQWd3aUN5QWdJQXNnSUVrYklpV3RJajJHUW4rRklUNUNmeUFhS0FJSUlnc2dIeUFMSUI5Skd5SW1yU0kvaGtKL2hTRkFRUUFoRUFOQUFuNGdKRVVFUUNBeklCRTBBZ1I4SURTSElUa2dNeUFSTkFJQWZDQTBoeUU2UVFBaEN5QXpJakloT3lBMERBRUxJRGdnRUVFQmFpSUxRUUYyclNBMGhrSi9oWHdpT3lBUk5BSUVmQ0EzaHlFNUlEZ2dDMEVCY2EwZ05JWkNmNFY4SWpJZ0VUUUNBSHdnTjRjaE9pQTNDeUU4SUJFMEFnZ2hOaUFSTkFJTUlUVWdGQ0E1UGdJRUlCUWdPajRDQUNBVUlBczJBaEFnRkNBMUlEdDhJRHlIUGdJTUlCUWdNaUEyZkNBOGh6NENDRUVBSVEwQ1FDQWFLQUlVUlEwQUlBdEZEUUJCQWtFQklBdEJBMFliSVEwTFJBQUFBQUFBQVBBL0lVTUNRQ0FqS0FJWUlBMXFJQ29vQWdBaURXc2lDMEdBQ0U0RVFFUUFBQUFBQUFEZ2Z5RkRJQXRCL3c5SkJFQWdDMEgvQjJzaEN3d0NDMFFBQUFBQUFBRHdmeUZEUWYwWElBc2dDMEg5RjA4YlFmNFBheUVMREFFTElBdEJnWGhLRFFCRUFBQUFBQUFBWUFNaFF5QUxRYmh3U3dSQUlBdEJ5UWRxSVFzTUFRdEVBQUFBQUFBQUFBQWhRMEh3YUNBTElBdEI4R2hORzBHU0Qyb2hDd3NnRkNBcUtBSUV0MFFBQUFBQUFBQkFQNkpFQUFBQUFBQUE4RCtnSUVNZ0MwSC9CMnF0UWpTR3Y2S2l0amdDSUNBVUlBMGdHaWdDcEFacVFRRnJOZ0ljSUJRb0FoUWhDd0pBQWtBQ1FDQXRSUTBBSUFzTkFDQVVJQ0VRR0NJTE5nSVVJQXRGQkVBZ0NrRUJRWUVXUVFBUUV3d0tDeUFMUVFBZ0lSQVpHaUFVSUNFMkFoZ01BUXNnSVNBVUtBSVlTd1JBSUFzZ0lSQWJJZzFGQkVBZ0NrRUJRWUVXUVFBUUV5QVVLQUlVRUJRZ0ZFSUFOd0lVREFvTElCUWdEVFlDRkNBTklCUW9BaGdpQzJwQkFDQWhJQXRyRUJrYUlCUWdJVFlDR0FzZ0xVVU5BUXNnRkNnQ0ZDRUxRUUFoTGdOQUlBc2dMaUF1SUJrb0FoQWlEVzRpRXlBTmJHc2dIM1FpRGlBc2FpSU1JQlFvQWdBaURTQU1JQTFLR3lJVk5nSUFJQXNnRXlBZ2RDSVNJQ3RxSWd3Z0ZDZ0NCQ0lOSUF3Z0RVb2JJaE0yQWdRZ0N5QU9JQnRxSWd3Z0ZDZ0NDQ0lOSUF3Z0RVZ2JJZzQyQWdnZ0N5QVNJQnhxSWd3Z0ZDZ0NEQ0lOSUF3Z0RVZ2JJZzAyQWd3Z0N5QkFJQTZzZkNBL2g2Y2dGU0FtZFNJb2F5QW1kQ0FtZFNJTU5nSVFJQXNnUGlBTnJId2dQWWVuSUJNZ0pYVWlLV3NnSlhRZ0pYVWlEVFlDRkNBTUlBMXNJaSt0UXNRQWZrSWdpRUlBVWdSQUlBcEJBVUhTRmtFQUVCTU1DUXNnTDBIRUFHd2hEZ0pBQWtBQ1FDQUxLQUlZSWcwTkFDQXZSUTBBSUFzZ0RoQVlJZzAyQWhnZ0RVVU5DeUFOUVFBZ0RoQVpHZ3dCQ3lBT0lBc29BaHhORFFFZ0RTQU9FQnNpREVVRVFDQUxLQUlZRUJRZ0MwSUFOd0lZSUFwQkFVSFFFMEVBRUJNTUN3c2dDeUFNTmdJWUlBd2dDeWdDSENJTmFrRUFJQTRnRFdzUUdSb0xJQXNnRGpZQ0hBc2dDeWdDRkNFT0lBc29BaEFoRENBTEFuOGdDeWdDSUNJTlJRUkFJQXdnRGlBS0VHd01BUXNnRFNBTUlBNGdDaEJxQ3pZQ0lDQUxLQUlVSVE0Z0N5Z0NFQ0VNSUFzQ2Z5QUxLQUlrSWcxRkJFQWdEQ0FPSUFvUWJBd0JDeUFOSUF3Z0RpQUtFR29MTmdJa0lDOEVRQ0FwUVFGcUlSSWdLRUVCYWlFVFFRQWhKd05BSUNjZ0N5Z0NFQ0lPYmlFWUFrQWdDeWdDR0NBblFjUUFiR29pRnlnQ0FDSVZCRUFnRnlnQ09DRU1JQmNvQWdRaERTQVhLQUl3SVJZZ0Z5Z0NQQkFVSUJmOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SW9JQmRCUUd0QkFEWUNBQ0FYUWdBM0FqZ2dGLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWhnZ0YvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMExBZ2dnRnlBVk5nSUFJQmNnRmpZQ01DQVdCRUFnRlVFQUlCWkJHR3dRR1JvTElCY2dERFlDT0NBWElBMDJBZ1FNQVFzZ0YwRUtRUmdRRnlJTk5nSUFJQTFGRFFzZ0YwRUtOZ0l3Q3lBWElDY2dEaUFZYkdzaURpQW9haUFtZENJTUlBc29BZ0FpRFNBTUlBMUtHellDQ0NBWElCZ2dLV29nSlhRaURDQUxLQUlFSWcwZ0RDQU5TaHMyQWd3Z0Z5QU9JQk5xSUNaMElnd2dDeWdDQ0NJTklBd2dEVWdiTmdJUUlCY2dFaUFZYWlBbGRDSU1JQXNvQWd3aURTQU1JQTFJR3pZQ0ZDQW5RUUZxSWljZ0wwY05BQXNMSUF0QktHb2hDeUF1UVFGcUlpNGdMVWNOQUFzTElDcEJDR29oS2lBVVFTUnFJUlFnRUVFQmFpSVFJQmtvQWhoSkRRQUxJQmxCbUFGcUlSa2dDU0VMSUNSQkFXb2lKQ0FSS0FJVVNRMEFDd3NnSTBFMGFpRWpJQkZCekFCcUlSRWdHa0c0Q0dvaEdpQXhRUUZxSWpFZ0hTZ0NFRWtOQUF0QkFRd0RDeUFLUVFGQmdSZEJBQkFUREFFTElBcEJBVUdnRWtFQUVCTUxRUUFMUlFSQUlBcEJBVUd2SEVFQUVCTkJBQXdFQ3lBQUtBTGtBU0VKSUE4Z0FDZ0NnQUVnQUNnQ2hBRnNOZ0lFSUE4Z0NVRUJhallDQUNBS1FRUkJqTndBSUE4UUV5QUJJQUFvQXVRQk5nSUFJQWhCQVRZQ0FDQUNCRUFnQWlBQUtBTG9BVUVBRUYwaUFUWUNBRUVBSUFGQmYwWU5CQm9MSUFNZ0FDZ0M2QUVvQWhRb0FnQWlBU2dDQURZQ0FDQUVJQUVvQWdRMkFnQWdCU0FCS0FJSU5nSUFJQVlnQVNnQ0REWUNBQ0FISUFFb0FoQTJBZ0FnQUNBQUtBSUlRWUFCY2pZQ0NBdEJBUXdDQ3lBS1FRRWdFRUVBRUJNTElBcEJBVUhSSEVFQUVCTkJBQXNnRDBIUUFHb2tBQXZ1RUFJTWZ3SitBa0FnQUNnQ0lDSUNEUUFDUUNBQUtBSVFJZ2xCQlVvRVFDQUpJUUlNQVFzQ1FBSkFJQUFvQWhRaUJrRUZUZ1JBSUFBb0FnQWlBU2dDQUNFQ0lBQWdBVUVFYWpZQ0FDQUdRUVJySVFjTUFRc2dCa0VBVEFSQVFYOGhBZ3dDQ3lBQUtBSUFJUUVDZnlBR1FRRkdCRUJCZnlFRlFRQU1BUXRCZnlFRklBWkJBV3NpQkVFQmNRSkFJQVpCQWtZRVFFRUFJUUlnQmlFRURBRUxJQVJCZm5FaEMwRUFJUUlnQVNFRElBWWhCQU5BSUFBZ0EwRUJhallDQUNBRExRQUFJUXdnQUNBRFFRSnFJZ0UyQWdBZ0FDQUVRUUZyTmdJVUlBTXRBQUVoQXlBQUlBUkJBbXNpQkRZQ0ZDQUZRZjhCSUFKMFFYOXpjU0FNSUFKMGNrR0EvZ01nQW5SQmYzTnhJQU1nQWtFSWNuUnlJUVVnQWtFUWFpRUNJQUVoQXlBSVFRSnFJZ2dnQzBjTkFBc0xCRUFnQUNBQlFRRnFJZ00yQWdBZ0FTMEFBQ0VCSUFBZ0JFRUJhellDRkNBRlFmOEJJQUowUVg5emNTQUJJQUowY2lFRklBTWhBUXNnQmtFRGRFRUlhd3NoQWlBQUlBRkJBV28yQWdBZ0JVSC9BU0FDZEVGL2MzRWdBUzBBQUVFUGNpQUNkSEloQWdzZ0FDQUhOZ0lVQ3lBQUtBSVlJUUVnQUNBQ1FSaDJJZ1JCL3dGR05nSVlJQUFnQ1NBQ1FSQjJRZjhCY1NJRFFmOEJSaUlHSUFKQkNIWkIvd0Z4SWdWQi93RkdJZ2NnQVNBQ1FmOEJjU0lJUWY4QlJpSUthbXBxSWdGclFTQnFJZ0kyQWhBZ0FDQUFLUU1JSUFoQkIwRUlJQW9iZENBRmNrRUhRUWdnQnh0MElBTnlRUWRCQ0NBR0czUWdCSEt0SUFFZ0NXdEJJR3F0aG9RM0F3Z2dBa0VHVGcwQVFRQWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQWF3Z0FDa0RLRUpBZzRRM0F5Z2dBa0VHU0FSQVFRRWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC9RSU1nQWF4Q0I0YUVOd01vSUFKQkJrZ0VRRUVDSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhBd0orSUFBcEF3Z2lEVUlBVXdSQVFRd2dBVUVCYWlBQlFRdE9HeUVFSUFKQkFXc2hBa0YvSUFOMFFYOXpRUUYwSVFGQ0FRd0JDeUFCUVFGclFRQWdBVUVCU2hzaEJDQU5RVDhnQTJ1dGlLZEJmeUFEZEVGL2MzRkJBWFJCQVhJaEFTQUNJQU5CQVdvaUEyc2hBaUFEclFzaERpQUFJQUkyQWhBZ0FDQUVOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy85QWd5QUJyRUlPaG9RM0F5Z2dBa0VHU0FSQVFRTWhBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLzlBZ3lBQnJFSVZob1EzQXlnZ0FrRUdTQVJBUVFRaEFnd0JDeUFBS0FJY0lnRkJBblJCNEtFQmFpZ0NBQ0VEQW40Z0FDa0RDQ0lOUWdCVEJFQkJEQ0FCUVFGcUlBRkJDMDRiSVFRZ0FrRUJheUVDUVg4Z0EzUkJmM05CQVhRaEFVSUJEQUVMSUFGQkFXdEJBQ0FCUVFGS0d5RUVJQTFCUHlBRGE2MklwMEYvSUFOMFFYOXpjVUVCZEVFQmNpRUJJQUlnQTBFQmFpSURheUVDSUFPdEN5RU9JQUFnQWpZQ0VDQUFJQVEyQWh3Z0FDQU5JQTZHTndNSUlBQWdBQ2tES0VMLy8vLy9RSU1nQWF4Q0hJYUVOd01vSUFKQkJrZ0VRRUVGSVFJTUFRc2dBQ2dDSENJQlFRSjBRZUNoQVdvb0FnQWhCQUovSUFBcEF3Z2lEVUlBVXdSQUlBSkJBV3NoQTBGL0lBUjBRWDl6UVFGMElRVkNBU0VPUVF3Z0FVRUJhaUFCUVF0T0d3d0JDeUFOUVQ4Z0JHdXRpS2RCZnlBRWRFRi9jM0ZCQVhSQkFYSWhCU0FDSUFSQkFXb2lCR3NoQXlBRXJTRU9JQUZCQVd0QkFDQUJRUUZLR3dzaEFTQUFJQU0yQWhBZ0FDQUJOZ0ljSUFBZ0RTQU9oamNEQ0NBQUlBQXBBeWhDLy8vLy8vOUFneUFGclVJamhvUTNBeWhCQmlFQ0lBTkJCa2dOQUNBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFRUFuOGdBQ2tEQ0NJTlFnQlRCRUFnQTBFQmF5RUNRWDhnQkhSQmYzTkJBWFFoQlVJQklRNUJEQ0FCUVFGcUlBRkJDMDRiREFFTElBMUJQeUFFYTYySXAwRi9JQVIwUVg5emNVRUJkRUVCY2lFRklBTWdCRUVCYWlJRWF5RUNJQVN0SVE0Z0FVRUJhMEVBSUFGQkFVb2JDeUVCSUFBZ0FqWUNFQ0FBSUFFMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy85QWd5QUZyVUlxaG9RM0F5Z2dBa0VHU0FSQVFRY2hBZ3dCQ3lBQUtBSWNJZ0ZCQW5SQjRLRUJhaWdDQUNFREFuNGdBQ2tEQ0NJTlFnQlRCRUJCRENBQlFRRnFJQUZCQzA0YklRUWdBa0VCYXlFQ1FYOGdBM1JCZjNOQkFYUWhBVUlCREFFTElBRkJBV3RCQUNBQlFRRktHeUVFSUExQlB5QURhNjJJcDBGL0lBTjBRWDl6Y1VFQmRFRUJjaUVCSUFJZ0EwRUJhaUlEYXlFQ0lBT3RDeUVPSUFBZ0FqWUNFQ0FBSUFRMkFod2dBQ0FOSUE2R053TUlJQUFnQUNrREtFTC8vLy8vLy8vL1FJTWdBYTFDTVlhRU53TW9RUWdoQWdzZ0FDQUNRUUZyTmdJZ0lBQWdBQ2tES0NJT1FnZUlOd01vSUE2blFmOEFjUXNpQVFGL0lBQUVRQ0FBS0FJTUlnRUVRQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUUxDNElCQWdGK0EzOENRQ0FBUW9DQWdJQVFWQVJBSUFBaEFnd0JDd05BSUFGQkFXc2lBU0FBUWdxQUlnSkM5Z0YrSUFCOHAwRXdjam9BQUNBQVF2Ly8vLytmQVZZZ0FpRUFEUUFMQ3lBQ1FnQlNCRUFnQXFjaEF3TkFJQUZCQVdzaUFTQURRUXB1SWdSQjlnRnNJQU5xUVRCeU9nQUFJQU5CQ1VzZ0JDRUREUUFMQ3lBQkMwOEJBWDhnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFKRkJFQWdBQ0FDUVFSeU5nSkVRUUFQQ3lBQUlBRTNBemdnQUNBQ1FYdHhOZ0pFUVFFTDN0NEJCSEIvQm5zSWZnRjlJd0JCRUdzaVRDUUFBa0FnQUMwQUNFR0FBWEZGRFFBZ0FTQUFLQUxrQVVjTkFDQUFLQUswQVNBQlFZd3NiR29pVFNnQzNDc2lGMFVFUUNCTkVEUU1BUXNnQUNnQzRBRWFJQUFvQXVnQklSc2dBQ2dDWkNJSFJRUkFJQUFvQW1BaEJ3c2dCeWdDQUNFR0lBY29BZ1FoQ3lBSEtBSUlJUWtnQnlnQ0RDRVBJQUFvQWp3aEJ5QUFLQUpBSVE0Z1RTZ0M0Q3NoQ0NNQVFSQnJJajhrQUNBYklBRTJBaVFnR3lnQ0hDZ0NUQ0VNSUJ0QkFUWUNRQ0FiSUE4MkFqd2dHeUFKTmdJNElCc2dDellDTkNBYklBWTJBakFnR3lBTUlBRkJqQ3hzYWpZQ0lDQWJLQUpFRUJSQkFDRUxJQnRCQURZQ1JBSkFJQWNFUUVFRUlCc29BaGdvQWhBUUZ5SUxSUVJBREFJTElBZEJCRThFUUNBSFFYeHhJUWxCQUNFQkEwQWdDeUFPSUNKQkFuUnFJZ1lvQWdCQkFuUnFRUUUyQWdBZ0N5QUdLQUlFUVFKMGFrRUJOZ0lBSUFzZ0JpZ0NDRUVDZEdwQkFUWUNBQ0FMSUFZb0FneEJBblJxUVFFMkFnQWdJa0VFYWlFaUlBRkJCR29pQVNBSlJ3MEFDd3NnQjBFRGNTSUJCRUFEUUNBTElBNGdJa0VDZEdvb0FnQkJBblJxUVFFMkFnQWdJa0VCYWlFaUlCbEJBV29pR1NBQlJ3MEFDd3NnR3lBTE5nSkVDd0pBQWtBZ0d5Z0NHQ0lHS0FJUUlnNUZEUUJCQUNFaUFrQURRQUpBSUFzRVFDQUxJQ0pCQW5ScUtBSUFSUTBCQ3lBR0tBSVlJQ0pCTkd4cUlnRTFBZ1FpZkVJQmZTS0FBU0FiTlFJOGZDQjhnQ0dCQVNBQk5RSUFJbjFDQVgwaWZpQWJOUUk0ZkNCOWdDR0NBU0NBQVNBYk5RSTBmQ0I4Z0NGOElCc29BaFFvQWdBb0FoUWdJa0hNQUd4cUlnRW9BaFFnQVNnQ0dHc2lCMEVmU3cwQUFrQWdmaUFiTlFJd2ZDQjlnS2NpQ1NBQktBSUFheUlQUVFBZ0NTQVBUeHNnQjNZTkFDQjhweUlKSUFFb0FnUnJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ2dpQ1NDQ0FhZHJJZzlCQUNBSklBOVBHeUFIZGcwQUlBRW9BZ3dpQVNDQkFhZHJJZ2xCQUNBQklBbFBHeUFIZGtVTkFRc2dHMEVBTmdKQURBSUxJQ0pCQVdvaUlpQU9SdzBBQ3lBYktBSkFSUTBBUVFBaEdRTkFJQnNvQWhRb0FnQW9BaFFnR1VITUFHeHFJZ0VvQWh3Z0FTZ0NHRUdZQVd4cUlnZEJsQUZyS0FJQUlRWWdCMEdNQVdzb0FnQWhDeUFIUVpnQmF5Z0NBQ0VPSUFkQmtBRnJLQUlBSVFrQ1FDQWJLQUpFSWdjRVFDQUhJQmxCQW5ScUtBSUFSUTBCQ3lBTElBWnJJUWNnQ1NBT2F5RU9Ba0FnQmlBTFJnMEFJQWV0SUE2dGZrSWdpRkFOQUVFQUlTSWdCVUVCUVlFWFFRQVFFd3dHQ3lBSElBNXNJZ2RCZ0lDQWdBUlBCRUJCQUNFaUlBVkJBVUdCRjBFQUVCTU1CZ3NnQVNBSFFRSjBJZ2MyQWl3Q1FBSkFBa0FnQVNnQ0pDSUdCRUFnQnlBQktBSXdUUTBFSUFFb0FpZ05BUXNnQVNBSEVCd2lCellDSkNBSFFRRWdBU2dDTENJSEcwVU5BU0FCUVFFMkFpZ2dBU0FITmdJd0RBTUxJQVlRRkNBQklBRW9BaXdRSENJSE5nSWtJQWNOQVNBQlFRQTJBakFnQVVJQU53SW9DMEVBSVNJZ0JVRUJRWUVYUVFBUUV3d0dDeUFCUVFFMkFpZ2dBU0FCS0FJc05nSXdDeUFaUVFGcUloa2dHeWdDR0NJR0tBSVFTUTBBQ3d3QkN5QUdLQUlZSVJrZ0d5Z0NGQ2dDQUNnQ0ZDRU5RUUFoQVFOQUFrQWdDd1JBSUFzZ0FVRUNkR29vQWdCRkRRRUxJQTBnQVVITUFHeHFJZ2NnQnlnQ0FDSUpJQmtnQVVFMGJHb2lEelVDQUNKOFFnRjlJb0FCSUJzMUFqQjhJSHlBcHlJTUlBa2dERXNiSWdrMkFqZ2dCeUFIS0FJRUlnd2dEelVDQkNKOVFnRjlJb0VCSUJzMUFqUjhJSDJBcHlJUElBd2dEMHNiSWc4MkFqd2dCeUFIS0FJSUlnd2dnQUVnR3pVQ09Id2dmSUNuSWdvZ0NpQU1TeHNpRERZQ1FDQUhJQWNvQWd3aUNpQ0JBU0FiTlFJOGZDQjlnS2NpRlNBS0lCVkpHeUlLTmdKRUlBa2dERXNOQXlBS0lBOUpEUU1nQnlnQ0ZDSVZSUTBBSUFxdFFnRjlJWUVCSUF5dFFnRjlJWDRnRDYxQ0FYMGhnZ0VnQ2ExQ0FYMGhnd0VnRmEwaGZ5QUhLQUljSVFsQ0FDRjlBMEFnQ1NCOXB5SVBRWmdCYkdvaUIwSUJJQlVnRDBGL2MycXRJbnlHSW9BQklJRUJmQ0I4aUQ0Q2xBRWdCeUIrSUlBQmZDQjhpRDRDa0FFZ0J5Q0FBU0NDQVh3Z2ZJZytBb3dCSUFjZ2dBRWdnd0Y4SUh5SVBnS0lBU0I5UWdGOEluMGdmMUlOQUFzTElBRkJBV29pQVNBT1J3MEFDd3RCQUNFaUlEOUJBRFlDQ0NBYktBSWNJUUZCQVVFSUVCY2lJd1JBSUNNZ0FUWUNCQ0FqSUFZMkFnQUxJQ05GRFFFZ0d5Z0NKQ0VVSUJzb0FoUW9BZ0FoSHlNQVFaQUJheUlRSkFBZ0ZFR01MR3dpQVNBaktBSUVJZ2tvQWt4cUloNG9BcVFESVM0Q2Z5QWpLQUlBSWlnaEZTQUZJVE5CQUNFT0l3QkJJR3NpRFNRQUlBRWdDU2dDVEdvaUdDZ0NwQU1oSFFKQUlCVW9BaEFpRmtHUUJHd1FHQ0lQUlEwQUFrQWdGa0VDZEJBWUlndEZCRUFnRHlFTERBRUxBa0FDUUFKL0lBa29Ba3dnRkVHTUxHeHFJZ29vQXFRRElobEJBV29pQVVId0FSQVhJZ2NFUUFKQUlBRUVRQ0FWS0FJUUlRd2dCeUVCQTBBZ0FTQXpOZ0xzQVNBQklBeEJFQkFYSWdZMkFzZ0JJQVpGRFFJZ0FTQVZLQUlRSWhvMkFzUUJRUUFoQmtFQUlRd2dHZ1JBQTBBZ0FTZ0N5QUVnQmtFRWRHb2lEQ0FLS0FMUUt5QUdRYmdJYkdvaUdpZ0NCRUVRRUJjaUpqWUNEQ0FtUlEwRUlBd2dHaWdDQkRZQ0NDQUdRUUZxSWdZZ0ZTZ0NFQ0lNU1EwQUN3c2dBVUh3QVdvaEFTQVRJQmxHSUJOQkFXb2hFMFVOQUFzTElBY01BZ3NnQnlnQ0JDSUJCRUFnQVJBVUlBZEJBRFlDQkFzZ0J5RUJRUUFoQ2dOQUlBRW9Bc2dCSWdZRVFFRUFJUXdnQVNnQ3hBRWlFd1IvQTBBZ0JpZ0NEQ0lhQkVBZ0doQVVJQVpCQURZQ0RDQUJLQUxFQVNFVEN5QUdRUkJxSVFZZ0RFRUJhaUlNSUJOSkRRQUxJQUVvQXNnQkJTQUdDeEFVSUFGQkFEWUN5QUVMSUFGQjhBRnFJUUVnQ2lBWlJpQUtRUUZxSVFwRkRRQUxJQWNRRkF0QkFBc2lCd1JBSUJaRkRRSkJBQ0VLSUE4aEJpQVdRUU5ORFFFZ0JpQVdRWHh4SWdwQmtBUnNhaUVHSUE4aEFRTkFJQXNnRVVFQ2RHb2dBZjBSL1F3QUFBQUFFQUlBQUNBRUFBQXdCZ0FBL2E0Qi9Rc0NBQ0FCUWNBUWFpRUJJQkZCQkdvaUVTQUtSdzBBQ3lBS0lCWkhEUUVNQWdzZ0R4QVVEQUlMQTBBZ0N5QUtRUUowYWlBR05nSUFJQVpCa0FScUlRWWdDa0VCYWlJS0lCWkhEUUFMQ3lBTElSbEJBQ0VUSUFrb0Frd2dGRUdNTEd4cUtBTFFLeUVCSUJVb0FoZ2hDaUFOSUFrb0FnUWdDU2dDRENBVUlCUWdDU2dDR0NJR2JpSUxJQVpzYTJ4cUlnWWdGU2dDQUNJTUlBWWdERXNiTmdJVUlBMUJmeUFHSUFrb0FneHFJZ3dnQmlBTVN4c2lCaUFWS0FJSUlnd2dCaUFNU1JzMkFoQWdEU0FKS0FJSUlBa29BaEFnQzJ4cUlnWWdGU2dDQkNJTElBWWdDMHNiTmdJTUlBMUJmeUFHSUFrb0FoQnFJZ3NnQmlBTFN4c2lCaUFWS0FJTUlnc2dCaUFMU1JzMkFnZ2dEVUVBTmdJWUlBMUJBRFlDSENBTlFmLy8vLzhITmdJRUlBMUIvLy8vL3djMkFnQWdGU2dDRUFSQUEwQWdHUVIvSUJrZ0UwRUNkR29vQWdBRlFRQUxJUXNnQ2pVQ0JDSjhRZ0Y5SW9BQklBMDFBZ2g4SUh5QUlZRUJJQW8xQWdBaWZVSUJmU0orSUEwMUFoQjhJSDJBSVlJQklJQUJJQTAxQWd4OElIeUFJWHdnZmlBTk5RSVVmQ0I5Z0NGOUlBRW9BZ1FpQ1NBTktBSWNTd1JBSUEwZ0NUWUNIQ0FCS0FJRUlRa0xJQWtFUUNBQlFiQUhhaUVhSUFGQnJBWnFJU1lnZ1FGQy8vLy8vdytEUWdGOUlZQUJJSUlCUXYvLy8vOFBnMElCZlNHQkFTQjhRdi8vLy84UGcwSUJmU0YrSUgxQy8vLy8vdytEUWdGOUlZSUJRUUFoRkFOQUlCb2dGRUVDZENJTWFpZ0NBQ0VHSUF3Z0ptb29BZ0FoREVFQUlSRWdDd1JBSUFzZ0JqWUNCQ0FMSUF3MkFnQWdDMEVJYWlFUkN3SkFJQXdnQ1VFQmF5SUphaUlMUVI5TERRQWdDaWdDQUNJa1FYOGdDM1pMRFFBZ0RTQU5LQUlFSWl3Z0pDQUxkQ0lMSUFzZ0xFc2JOZ0lFQ3dKQUlBWWdDV29pQzBFZlN3MEFJQW9vQWdRaUpFRi9JQXQyU3cwQUlBMGdEU2dDQUNJc0lDUWdDM1FpQ3lBTElDeExHellDQUF0QkFDRUxRZ0VnQ2EwaWZJWWlmU0NBQVh3Z2ZJZ2lnd0ZDLy8vLy93K0RRZ0VnQnEwaWY0WjhRZ0Y5SUgrSXB5QjlJSDU4SUh5SXB5SWtJQVoyYTBGL0lBWjJjVUVBSUNRZ2d3R25SeHNoQmlCOUlJRUJmQ0I4aUNLREFVTC8vLy8vRDROQ0FTQU1yU0ovaG54Q0FYMGdmNGluSUgwZ2dnRjhJSHlJcHlJa0lBeDJhMEYvSUF4MmNVRUFJQ1FnZ3dHblJ4c2hEQ0FSQkVBZ0VTQUdOZ0lFSUJFZ0REWUNBQ0FSUVFocUlRc0xJQVlnREd3aUJpQU5LQUlZU3dSQUlBMGdCallDR0FzZ0ZFRUJhaUlVSUFFb0FnUkpEUUFMQ3lBS1FUUnFJUW9nQVVHNENHb2hBU0FUUVFGcUloTWdGU2dDRUVrTkFBc0xJQjFCQVdvaEppQU5LQUljSVJNZ0RTZ0NHQ0VVSUFkQkFEWUNCQUpBSUJnb0FnaEJBV29pQWEwZ0V5QVVJQlpzSWlSc0locXRma0lnaUZBRVFDQUhJQUVnR213aUFUWUNDQ0FISUFGQkFoQVhJZ0UyQWdRZ0FRMEJDeUFQRUJRZ0dSQVVJQWNvQWdRaUFRUkFJQUVRRkNBSFFRQTJBZ1FMSUNaRkJFQWdCeUVMREFJTFFRQWhDeUFISVFFRFFDQUJLQUxJQVNJS0JFQkJBQ0VHSUFFb0FzUUJJaEVFZndOQUlBb29BZ3dpQ1FSQUlBa1FGQ0FLUVFBMkFnd2dBU2dDeEFFaEVRc2dDa0VRYWlFS0lBWkJBV29pQmlBUlNRMEFDeUFCS0FMSUFRVWdDZ3NRRkNBQlFRQTJBc2dCQ3lBQlFmQUJhaUVCSUFzZ0hVWWdDMEVCYWlFTFJRMEFDeUFISVFzTUFRc2dGU2dDR0NFTUlBY2dEU2dDRkNJc05nTE1BU0FISUEwb0Fnd2lMVFlDMEFFZ0J5QU5LQUlRSWlBMkF0UUJJQWNnRFNnQ0NDSTROZ0xZQVNBSElCbzJBZ3dnQnlBa05nSVFJQWNnRkRZQ0ZFRUJJUlVnQjBFQk5nSVlJQllFUUNBSEtBTElBU0VCUVFBaENTQU1JUXNEUUNBWklBbEJBblJxS0FJQUlRb2dBU0FMS0FJQU5nSUFJQUVnQ3lnQ0JEWUNCQUpBSUFFb0FnZ2lEa1VOQUNBQktBSU1JUVlnRGtFQlJ3UkFJQTVCZm5FaFBFRUFJUkVEUUNBR0lBb29BZ0EyQWdBZ0JpQUtLQUlFTmdJRUlBWWdDaWdDQ0RZQ0NDQUdJQW9vQWd3MkFnd2dCaUFLS0FJUU5nSVFJQVlnQ2lnQ0ZEWUNGQ0FHSUFvb0FoZzJBaGdnQmlBS0tBSWNOZ0ljSUFaQklHb2hCaUFLUVNCcUlRb2dFVUVDYWlJUklEeEhEUUFMQ3lBT1FRRnhSUTBBSUFZZ0NpZ0NBRFlDQUNBR0lBb29BZ1EyQWdRZ0JpQUtLQUlJTmdJSUlBWWdDaWdDRERZQ0RBc2dDMEUwYWlFTElBRkJFR29oQVNBSlFRRnFJZ2tnRmtjTkFBc0xJQ1pCQVVzRVFDQUhJUTREUUNBT0lEZzJBc2dESUE0Z0lEWUN4QU1nRGlBdE5nTEFBeUFPSUN3MkFyd0RJQTVCQVRZQ2lBSWdEaUFVTmdLRUFpQU9JQ1EyQW9BQ0lBNGdHallDL0FFZ0ZnUkFJQTRvQXJnRElRRkJBQ0VKSUF3aEN3TkFJQmtnQ1VFQ2RHb29BZ0FoQ2lBQklBc29BZ0EyQWdBZ0FTQUxLQUlFTmdJRUFrQWdBU2dDQ0NJbVJRMEFJQUVvQWd3aEJpQW1RUUZIQkVBZ0prRitjU0U4UVFBaEVRTkFJQVlnQ2lnQ0FEWUNBQ0FHSUFvb0FnUTJBZ1FnQmlBS0tBSUlOZ0lJSUFZZ0NpZ0NERFlDRENBR0lBb29BaEEyQWhBZ0JpQUtLQUlVTmdJVUlBWWdDaWdDR0RZQ0dDQUdJQW9vQWh3MkFod2dCa0VnYWlFR0lBcEJJR29oQ2lBUlFRSnFJaEVnUEVjTkFBc0xJQ1pCQVhGRkRRQWdCaUFLS0FJQU5nSUFJQVlnQ2lnQ0JEWUNCQ0FHSUFvb0FnZzJBZ2dnQmlBS0tBSU1OZ0lNQ3lBTFFUUnFJUXNnQVVFUWFpRUJJQWxCQVdvaUNTQVdSdzBBQ3dzZ0RpQU9LUUlFTndMMEFTQVZJQjFISUE1QjhBRnFJUTRnRlVFQmFpRVZEUUFMQ3lBUEVCUWdHUkFVSUJnb0FxUURJUXNDUUNBWUxRQ0lMRUVFY1FSQUlBdEJmMFlOQVNBWVFhZ0RhaUVHSUJnb0FnZ2hBVUVBSVJFZ0J5RUtBMEFnQmlnQ0pDRU9JQXBCQVRZQ0xDQUtJQTQyQWxRZ0NpQUdLQUlBTmdJd0lBWW9BZ1FoRGlBS1FnQTNBa1FnQ2lBT05nSTBJQW9nQmlnQ0REWUNQQ0FLSUFZb0FoQTJBa0FnQmlnQ0NDRU9JQW9nRkRZQ1RDQUtJQTRnQVNBQklBNUxHellDT0NBR1FaUUJhaUVHSUFwQjhBRnFJUW9nQ3lBUlJpQVJRUUZxSVJGRkRRQUxEQUVMSUF0QmYwWU5BQ0FZS0FJSUlRWWdHQ2dDQkNFT0lBY2hDaUFMQkVBZ0MwRUJha0YrY1NFSlFRQWhBUU5BSUFwQ0FEY0NSQ0FLUVFBMkFqUWdDa0lCTndJc0lBb2dEallDVkNBS0lCTTJBandnQ2lBT05nTEVBaUFLSUJRMkFrd2dDaUFHTmdJNElBcENBRGNDdEFJZ0NrRUFOZ0trQWlBS1FnRTNBcHdDSUFvZ0V6WUNyQUlnQ2lBR05nS29BaUFLSUJRMkFyd0NJQW9nQ2lnQ3hBRTJBa0FnQ2lBS0tBSzBBellDc0FJZ0NrSGdBMm9oQ2lBQlFRSnFJZ0VnQ1VjTkFBc0xJQXRCQVhFTkFDQUtRZ0EzQWtRZ0NrRUFOZ0kwSUFwQ0FUY0NMQ0FLSUE0MkFsUWdDaUFUTmdJOElBb2dGRFlDVENBS0lBWTJBamdnQ2lBS0tBTEVBVFlDUUFzZ0J5RU9EQUVMSUFzUUZBc2dEVUVnYWlRQUFrQWdEa1VOQUNBdVFRRnFJU1lnRnlFWklBNGhGUUpBQWtBRFFDQVZLQUpVUVg5R0RRSWdLQ2dDRUVFQ2RCQVlJZ0ZGRFFJZ0FVRUJJQ2dvQWhCQkFuUVFHU0VhSUJVUVlBUkFBMEFnSHlnQ0ZDRUpBa0FDUUNBVktBSW9JQjRvQWd4UERRQWdGU2dDSUNJQklBa2dGU2dDSEVITUFHeHFJZ2NvQWhoUERRQWdCeWdDSENBQlFaZ0JiR29pQnlnQ0dFVU5BQ0FIUVJ4cUlRWkJBQ0VOQWtBRFFDQWJJQlVvQWh3Z0ZTZ0NJQ0FHSUExQkpHeHFJZ0VvQWhBZ0FTZ0NGQ0FWS0FJa1FTaHNhaUlCS0FJQUlBRW9BZ1FnQVNnQ0NDQUJLQUlNRUVGRkJFQWdEVUVCYWlJTklBY29BaGhKRFFFTUFnc0xJQm9nRlNnQ0hFRUNkR3BCQURZQ0FDQVFRUUEyQW9nQklDTW9BZ1FnSHlnQ0ZDQWVJQlVnRUVHTUFXb2dHU0FRUVlnQmFpQUlJRE1RWDBVTkJpQVZLQUlnSVEwZ0ZTZ0NIQ0VQSUJBb0FvZ0JJUkVnRUNnQ2pBRUVRQ0FRUVFBMkFvZ0JJQjhvQWhRZ0QwSE1BR3hxS0FJY0lBMUJtQUZzYWlJZEtBSVlJZ2tFZnlBSUlCRnJJUVlnQ0NBWmFpRWtJQjFCSEdvaEQwRUFJUXBCQUNFWUlCRWdHV29pTGlFVUEwQUNRQ0FQS0FJSUlBOG9BZ0JHRFFBZ0R5Z0NEQ0FQS0FJRVJnMEFJQThvQWhRZ0ZTZ0NKRUVvYkdvaUFTZ0NGQ0FCS0FJUWJDSXNSUTBBSUFFb0FoZ2hDVUVBSVJNRFFDQUpLQUlrSWdzRVFBSi9Ba0FnR0VVRVFDQUpLQUpBUlEwQkN5QUpRUUEyQWpSQkFTRU5RY0FBREFFTElBa29BZ0FoRFFKQUlBa2dDU2dDS0NJQkJIOGdEU0FCUVJoc2FpSU5RUlJyS0FJQUlBMUJER3NvQWdCSEJFQWdEVUVZYXlFTkRBSUxJQUZCQVdvRlFRRUxOZ0lvQ3dKL0FrQWdEU2dDRkNJQklCUkJmM05MRFFBZ0RVRVVhaUVNQTBBZ0FTQVVhaUFrU3cwQklBa29BZ1FoRmlBSktBSTBJaGdnQ1NnQ09FY0VmeUFMQlNBV0lCaEJBWFJCQVhJaUFVRURkQkFiSWhaRkJFQWdNMEVCUVlBSVFRQVFFd3dTQ3lBSklBRTJBamdnQ1NBV05nSUVJQWtvQWpRaEdDQU1LQUlBSVFFZ0NTZ0NKQXNoQnlBV0lCaEJBM1JxSWdzZ0FUWUNCQ0FMSUJRMkFnQWdDU0FZUVFGcU5nSTBJQTBnRFNnQ0FDQUJhallDQUNBTklBMG9BaEFpRENBTktBSUVhaUlXTmdJRUlBa2dCeUFNYXlJTE5nSWtJQTBnRmpZQ0NDQUJJQlJxSVJSQkFDQUhJQXhHRFFJYUlBa2dDU2dDS0VFQmFqWUNLQ0FOUVN4cUlRd2dEU2dDTENFQklBMUJHR29oRFNBQklCUkJmM05ORFFBTEN5QVZLQUljSVFjZ0ZTZ0NJQ0VMSUJVb0FpUWhEQ0FqS0FJRUtBSm9CRUFnRUNBSE5nSjRJQkFnQ3pZQ2RDQVFJQW8yQW5BZ0VDQU1OZ0pzSUJBZ0V6WUNhQ0FRSUFZMkFtUWdFQ0FCTmdKZ0lETkJBVUhBOGdBZ0VFSGdBR29RRXd3UEN5QVFJQWMyQWxnZ0VDQUxOZ0pVSUJBZ0NqWUNVQ0FRSUF3MkFrd2dFQ0FUTmdKSUlCQWdCallDUkNBUUlBRTJBa0FnTTBFQ1FjRHlBQ0FRUVVCckVCTWdDVUVBTmdJMElBbEJBVFlDUUVFQkN5RVlJQWtvQWlnaERVRXNDeUFKYWlBTk5nSUFDeUFKUWNRQWFpRUpJQk5CQVdvaUV5QXNSdzBBQ3lBZEtBSVlJUWtMSUE5QkpHb2hEeUFLUVFGcUlnb2dDVWtOQUFzZ0ZTZ0NJQ0VOSUJVb0Fod2hEeUFHSUJRZ0xtc2dHQnNGUVFBTElCRnFJUkVMSUNnb0FoZ2dEMEUwYkdvaUFTQU5JQUVvQWlRaUFTQUJJQTFKR3pZQ0pBd0NDeUFmS0FJVUlRa0xJQkJCQURZQ2lBRWdJeWdDQkNBSklCNGdGU0FRUVl3QmFpQVpJQkJCaUFGcUlBZ2dNeEJmUlEwRUlCVW9BaHdoRHlBUUtBS0lBU0VSSUJBb0Fvd0JSUTBBSUI4b0FoUWdEMEhNQUd4cUtBSWNJQlVvQWlBaUdFR1lBV3hxSWdFb0FoZ2lKRVVOQUNBSUlCRnJJUVlnQVVFY2FpRVdJQlVvQWlRaERFRUFJUTFCQUNFZEFrQUNRQU5BQWtBZ0ZpZ0NDQ0FXS0FJQVJnMEFJQllvQWd3Z0ZpZ0NCRVlOQUNBV0tBSVVJQXhCS0d4cUlnRW9BaFFnQVNnQ0VHd2lMa1VOQUNBQktBSVlJUXRCQUNFS0EwQWdDeWdDSkNJQkJFQWdDeWdDQUNFSkFrQWdDeUFMS0FJb0loTUVmeUFKSUJOQkdHeHFJZ2xCRkdzb0FnQWdDVUVNYXlnQ0FFY0VRQ0FKUVJocklRa01BZ3NnRTBFQmFnVkJBUXNpRXpZQ0tBc2dDU2dDRkNJVUlBMXFJZzBnRkVrTkJTQUdJQTFKRFFVRFFBSkFJQWtnQ1NnQ0VDSVVJQWtvQWdScU5nSUVJQUVnRkdzaEJ5QUJJQlJHRFFBZ0N5QVRRUUZxSWhNMkFpZ2dDU2dDTENJVUlBMXFJZzBnRkVrTkJpQUpRUmhxSVFrZ0J5RUJJQVlnRFU4TkFRd0dDd3NnQ3lBSE5nSWtDeUFMUWNRQWFpRUxJQXBCQVdvaUNpQXVSdzBBQ3dzZ0ZrRWthaUVXSUIxQkFXb2lIU0FrUncwQUN5QU5JQkZxSVJFTUFnc2dDeUFITmdJa0N5QWpLQUlFS0FKb1JRUkFJQkFnRHpZQ0dDQVFJQmcyQWhRZ0VDQWROZ0lRSUJBZ0REWUNEQ0FRSUFvMkFnZ2dFQ0FHTmdJRUlCQWdGRFlDQUNBelFRSkI2L0VBSUJBUUV5QVZLQUljSVE4Z0JpQVJhaUVSREFFTElCQWdEellDT0NBUUlCZzJBalFnRUNBZE5nSXdJQkFnRERZQ0xDQVFJQW8yQWlnZ0VDQUdOZ0lrSUJBZ0ZEWUNJQ0F6UVFGQjYvRUFJQkJCSUdvUUV3d0VDd0pBSUJvZ0QwRUNkR29vQWdCRkRRQWdLQ2dDR0NBUFFUUnNhaUlCS0FJa0RRQWdBU0FmS0FJVUlBOUJ6QUJzYWlnQ0dFRUJhellDSkFzZ0NDQVJheUVJSUJFZ0dXb2hHU0FWRUdBTkFBc0xJQm9RRkNBVlFmQUJhaUVWSUJ4QkFXb2lIQ0FlS0FLa0EwME5BQXNnRGlBbUVFSWdQeUFaSUJkck5nSUlRUUVNQXdzZ0RpQW1FRUlnR2hBVURBRUxJQTRnSmhCQ0MwRUFDeUFRUVpBQmFpUUFJQ01RTWtVTkFTQWJLQUlnS0FMUUt5RWlJQnNvQWhRb0FnQWlFQ2dDRkNFT0lEOUJBVFlDREVFQUlSbEJBQ0VNSUJzb0FpQWlBU2dDRENBQktBSUlSZ1JBSUNJb0FoQkJCSFpCQVhFaERBc0NRQ0FRS0FJUUlncEZEUUFEUUFKQUlCc29Ba1FpQVFSQUlBRWdHVUVDZEdvb0FnQkZEUUVMSUQ5QkRHb2hGRUVBSVFvQ1FDQU9LQUlZSWdGRkRRQWdHeWdDTENFUkEwQWdEaWdDSENBS1FaZ0JiR29pRHlnQ0dDSUxCRUFnRDBFY2FpRVRJQThvQWhRaEFTQVBLQUlRSVJWQkFDRVhBMEFnQVNBVmJBUkFJQk1nRjBFa2JHb2hEVUVBSVFrRFFDQWJJQTRvQWhBZ0NpQU5LQUlRSUEwb0FoUWdDVUVvYkdvaUJ5Z0NBQ0FIS0FJRUlBY29BZ2dnQnlnQ0RCQkJJUVlnQnlnQ0ZDSUxJQWNvQWhBaUNHd2hBUUpBSUFZRVFDQUJSUTBCUVFBaENBTkFBa0FnR3lBT0tBSVFJQW9nRFNnQ0VDQUhLQUlZSUFoQnhBQnNhaUlHS0FJSUlBWW9BZ3dnQmlnQ0VDQUdLQUlVRUVGRkJFQWdCaWdDUENJQlJRMEJJQUVRRkNBR1FRQTJBandNQVFzZ0d5Z0NRRVVFUUNBR0tBSThEUUVnQmlnQ0VDQUdLQUlJUmcwQklBWW9BaFFnQmlnQ0RFWU5BUXRCQVVFc0VCY2lBVVVFUUNBL1FRQTJBZ3dNQ2dzZ0d5Z0NRQ0VMSUFGQkFEWUNKQ0FCSUJRMkFod2dBU0FpTmdJVUlBRWdEallDRUNBQklBMDJBZ3dnQVNBR05nSUlJQUVnQ2pZQ0JDQUJJQXMyQWdBZ0FTQU1OZ0lvSUFFZ016WUNJQ0FCSUJFb0FnUkJBVW8yQWhnZ0VVRU9JQUVRTXlBL0tBSU1SUTBKQ3lBSVFRRnFJZ2dnQnlnQ0ZDQUhLQUlRYkVrTkFBc01BUXNnQVVVTkFFRUFJUlVEUUNBSEtBSVlJQlZCeEFCc2FpSUJLQUk4SWdZRVFDQUdFQlFnQVVFQU5nSThJQWNvQWhRaEN5QUhLQUlRSVFnTElCVkJBV29pRlNBSUlBdHNTUTBBQ3dzZ0NVRUJhaUlKSUE4b0FoUWlBU0FQS0FJUUloVnNTUTBBQ3lBUEtBSVlJUXNMSUJkQkFXb2lGeUFMU1EwQUN5QU9LQUlZSVFFTElBcEJBV29pQ2lBQlNRMEFDd3NnUHlnQ0RFVU5BaUFRS0FJUUlRb0xJQ0pCdUFocUlTSWdEa0hNQUdvaERpQVpRUUZxSWhrZ0Nra05BQXNMUVFBaElpQWJLQUlzRUNRZ1B5Z0NERVVOQVFKQUlCc29Ba0FOQUNBYktBSVlJaGtvQWhCRkRRQkJBQ0VPQTBBZ0d5Z0NGQ2dDQUNnQ0ZDQU9RY3dBYkdvaUFTZ0NIQ0FaS0FJWUlBNUJOR3hxS0FJa1FaZ0JiR29pQnlnQ2lBRWhCaUFIS0FLUUFTRUlJQWNvQW93QklRc2dCeWdDbEFFaEJ5QUJLQUkwRUJRZ0FVRUFOZ0kwQWtBZ0d5Z0NSQ0lKQkVBZ0NTQU9RUUowYWlnQ0FFVU5BUXNnQmlBSVJnMEFJQWNnQzBZTkFDQUhJQXRySWdldElBZ2dCbXNpQnExK1FpQ0lRZ0JTQkVBZ00wRUJRWUVYUVFBUUV3d0ZDeUFHSUFkc0lnZEJnSUNBZ0FSUEJFQWdNMEVCUVlFWFFRQVFFd3dGQ3lBQklBZEJBblFRSENJQk5nSTBJQUVOQUNBelFRRkJnUmRCQUJBVERBUUxJQTVCQVdvaURpQWJLQUlZSWhrb0FoQkpEUUFMQ3lBYktBSWdJUmtnR3lnQ0ZDZ0NBQ0lWS0FJUUJFQWdGU2dDRkNFT0lCa29BdEFySVJrZ0d5Z0NHQ2dDR0NFS1FRQWhDd05BQWtBZ0d5Z0NSQ0lCQkVBZ0FTQUxRUUowYWlnQ0FFVU5BUXNnQ2lnQ0pFRUJhaUVCSUJrb0FoUkJBVVlFUUNBQklSNUJBQ0VJUVFBaEJ2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDRjJJd0JCSUdzaUp5UUFBa0FDUUNBYktBSkFCRUJCQVNFSElBRkJBVVlOQWlBT0tBSWNJZ1lnRGlnQ0dFR1lBV3hxSWdGQmtBRnJLQUlBSWc4Z0FVR1lBV3NvQWdBaUVVWU5BaUFHS0FJRUlSUWdCaWdDRENFV0lBWW9BZ0FoR0NBR0tBSUlJUjBnR3lnQ0xDSVhLQUlFSVJBZ0hrRUJheUlOSVF3Z0JpRUhBa0FnRFVFRVR3UkFJQTFCQTNFaERDQUhJQTFCZkhFaUNVR1lBV3hxSVFkQkFDRUJBMEFnZGlBR0lBRkJtQUZzYWlJSVFlZ0VhaUFJUWRBRGFpQUlRYmdDYWlBSS9Wd0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhnQkdvZ0NFSElBMm9nQ0VHd0Ftb2dDUDFjQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQWhCN0FScUlBaEIxQU5xSUFoQnZBSnFJQWo5WEFLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlUUVhaUFJUWN3RGFpQUlRYlFDYWlBSS9Wd0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGRpQUJRUVJxSWdFZ0NVY05BQXNnZGlCMklIYjlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZGlCMklIYjlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDl1UUg5R3dBaENDQUpJQTFHRFFFTEEwQWdDQ0FIS0FLZ0FTQUhLQUtZQVdzaUFTQUJJQWhKR3lJQklBY29BcVFCSUFjb0Fwd0JheUlJSUFFZ0NFc2JJUWdnQjBHWUFXb2hCeUFNUVFGcklnd05BQXNMUVFBaEJ5QUlRZi8vL3o5TERRSWdKeUFJUVFWMEloTVFOeUlNTmdJUUlBeEZEUUlnSnlBTU5nSUFJQTBFUUNBUElCRnJJUkVnRmlBVWF5RUpJQjBnR0dzaEFRTkFJQTRvQWlRaEZDQW5JQWtpRHpZQ0NDQW5JQUVpQnpZQ0dDQUdLQUtjQVNFSUlBWW9BcVFCSVFrZ0JpZ0NvQUVoQVNBbklBWW9BcGdCSWhaQkFtODJBaHdnSnlBQklCWnJJZ0VnQjJzMkFoUUNRQ0FRUVFKSUloMUZJQWtnQ0dzaUNVRUJTM0ZGQkVCQkFDRUlJQWxGRFFFRFFDQW5RUkJxSUJRZ0NDQVJiRUVDZEdvUVppQUlRUUZxSWdnZ0NVY05BQXNNQVFzZ0NTQVFJQWtnRUVrYkloWkJBV3NoSXlBSklCWnVJUmhCQUNFSEEwQkJKQkFZSWdoRkRRVWdKLzBBQWhBaGRpQUlJQlEyQWhnZ0NDQVJOZ0lVSUFnZ0FUWUNFQ0FJSUhiOUN3SUFJQWdnQnlBWWJEWUNIQ0FISUNOR0lSOGdDQ0FKSUFkQkFXb2lCeUFZYkNBZkd6WUNJQ0FJSUJNUU55SWZOZ0lBSUI5RkJFQkJBQ0VISUJjUUpDQUlFQlFnREJBVURBY0xJQmRCQ2lBSUVETWdCeUFXUncwQUN5QVhFQ1FMSUNjZ0NTQVBhellDQkNBbklBWW9BcHdCUVFKdk5nSU1Ba0FnSFVVZ0FVRUJTM0ZGQkVCQkNDRUhRUUFoQ0NBQlFRaFBCRUFEUUNBbklCUWdDRUVDZEdvZ0VVRUlFRFlnQnlJSVFRaHFJZ2NnQVUwTkFBc0xJQUVnQ0UwTkFTQW5JQlFnQ0VFQ2RHb2dFU0FCSUFockVEWU1BUXNnQVNBUUlBRWdFRWtiSWc5QkFXc2hHQ0FCSUE5dUlSWkJBQ0VIQTBCQkpCQVlJZ2hGRFFVZ0ovMEFBZ0FoZGlBSUlCUTJBaGdnQ0NBUk5nSVVJQWdnQ1RZQ0VDQUlJSGI5Q3dJQUlBZ2dCeUFXYkRZQ0hDQUhJQmhHSVIwZ0NDQUJJQWRCQVdvaUJ5QVdiQ0FkR3pZQ0lDQUlJQk1RTnlJZE5nSUFJQjFGQkVCQkFDRUhJQmNRSkNBSUVCUWdEQkFVREFjTElCZEJDeUFJRURNZ0J5QVBSdzBBQ3lBWEVDUUxJQVpCbUFGcUlRWWdEVUVCYXlJTkRRQUxDMEVCSVFjZ0RCQVVEQUlMUVFFaEJ5QU9LQUljSWdrZ0hrR1lBV3hxSWl0Qm1BRnJJbDBvQWdBZ0swR1FBV3NvQWdCR0RRRWdLMEdVQVdzaVhpZ0NBQ0FyUVl3QmF5Z0NBRVlOQVNBSktBSUVJUmNnQ1NnQ0RDRU5JQWtvQWdBaEVDQUpLQUlJSVJFZ0RpZ0NSQ0VvSUE0b0FrQWhHaUFPS0FJOElTWWdEaWdDT0NFdUlBNGdIaEJsSWpsRkJFQkJBQ0VIREFJTEFrQUNRQ0FlUVFGSEJFQUNRQUpBSUI1QkFXc2lEMEVFU1FSQUlBOGhBU0FKSVFjTUFRc2dEMEVEY1NFQklBa2dEMEY4Y1NJTVFaZ0JiR29oQndOQUlIWWdDU0FHUVpnQmJHb2lDRUhvQkdvZ0NFSFFBMm9nQ0VHNEFtb2dDUDFjQXFBQi9WWUNBQUg5VmdJQUF2MVdBZ0FESUFoQjRBUnFJQWhCeUFOcUlBaEJzQUpxSUFqOVhBS1lBZjFXQWdBQi9WWUNBQUw5VmdJQUEvMnhBZjI1QVNBSVFld0VhaUFJUWRRRGFpQUlRYndDYWlBSS9Wd0NwQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdDRUhrQkdvZ0NFSE1BMm9nQ0VHMEFtb2dDUDFjQXB3Qi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJWFlnQmtFRWFpSUdJQXhIRFFBTElIWWdkaUIyL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQkluWWdkaUIyL1EwRUJRWUhBQUVDQXdBQkFnTUFBUUlEL2JrQi9Sc0FJUWdnRENBUFJnMEJDd05BSUFnZ0J5Z0NvQUVnQnlnQ21BRnJJZ1lnQmlBSVNSc2lCaUFIS0FLa0FTQUhLQUtjQVdzaUNDQUdJQWhMR3lFSUlBZEJtQUZxSVFjZ0FVRUJheUlCRFFBTEN5QUlRWUNBZ0lBQlR3MENJQWhCQkhRUU55SVNSUTBDQWtBZ0hrVU5BQ0FOSUJkcklSWWdFU0FRYXlFVElCSkJCR3NoT2lBU1FSeHFJVTRnRWtFWWFpRTRJQkpCRkdvaFBDQVNRUXhySVVFZ0VrRU1haUVwSUJKQkNHb2hKU0FTUVJCcklVSWdFa0VJYXlGQUlCSkJCR29oSVNBb3JTRjhJQnF0SVgwZ0pxMGhnQUVnTHEwaGdRRkJBU0ZEQTBBZ0NTZ0NuQUVpQVVFQ2J5RTNJQWtvQXBnQklnZEJBbThoUGlBSktBS2tBU0FCYXlJa0lCWnJJUzhnQ1NnQ29BRWdCMnNpTENBVGF5RXhJQzRpQmlFSElDWWlIU0VVSUJvaUFTRXdJQ2dpQ0NFUkFrQWdEaWdDRkNJUElFTkdEUUFnRHlCRGF5RVBRUUFoRkVFQUlRY2dCZ1JBUW44Z0Q2MGlmb1pDZjRVZ2dRRjhJSDZJcHlFSEN5QW1CRUJDZnlBUHJTSitoa0ovaFNDQUFYd2dmb2luSVJRTFFRQWhDRUVBSVFFZ0dnUkFRbjhnRDYwaWZvWkNmNFVnZlh3Z2ZvaW5JUUVMSUNnRVFFSi9JQSt0SW42R1FuK0ZJSHg4SUg2SXB5RUlDMEVBSVRCQkFDRUdRUUVnRDBFQmEzUWlEQ0F1U1FSQUlDNGdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVHQ3lBTUlCcEpCRUFnR2lBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklUQUxRUUFoRVVFQUlSMGdEQ0FtU1FSQUlDWWdER3V0UW44Z0Q2MGlmb1pDZjRWOElINklweUVkQ3lBTUlDaFBEUUFnS0NBTWE2MUNmeUFQclNKK2hrSi9oWHdnZm9pbklSRUxRWDhnTUNBSktBSzBBU0lQYXlJTVFRQWdEQ0F3VFJzaURFRUNhaUlYSUF3Z0Ywc2JJZ3dnTVNBTUlERkpHeUkxUVg4Z0FTQUpLQUxZQVNJdGF5SU1RUUFnQVNBTVR4c2lBVUVDYWlJTUlBRWdERXNiSWdFZ0V5QUJJQk5KR3lJMklENGJRUUYwSWdFZ05pQTFJRDRiUVFGMFFRRnlJZ3dnQVNBTVN4c2lSaUFzU1NFWUlBWWdEMnNpQVVFQUlBRWdCazBiSWdGQkFtc2lCa0VBSUFFZ0JrOGJJaEFnQnlBdGF5SUJRUUFnQVNBSFRSc2lBVUVDYXlJR1FRQWdBU0FHVHhzaURTQStHMEVCZENJR0lBMGdFQ0ErRzBFQmRFRUJjaUlQU1NFZ0lCUWdDU2dDdUFFaUkyc2lERUVBSUF3Z0ZFMGJJZ3hCQW1zaUYwRUFJQXdnRjA4Yklnd2hIQ0FkSUFrb0F0d0JJaFJySWhkQkFDQVhJQjFOR3lJWFFRSnJJaDFCQUNBWElCMVBHeUlYSVNwQmZ5QUlJQ05ySWgxQkFDQUlJQjFQR3lJSVFRSnFJaDBnQ0NBZFN4c2lDQ0FXSUFnZ0Zra2JJaU1oTWtGL0lCRWdGR3NpQ0VFQUlBZ2dFVTBiSWdoQkFtb2lFU0FJSUJGTEd5SUlJQzhnQ0NBdlNSc2lIeUU3SURjRVFDQU1JU29nSHlFeUlDTWhPeUFYSVJ3TElFWWdMQ0FZR3lGSElBWWdEeUFnR3lFUElCWWdIMm9oVHlBV0lCZHFJVkFnSkFSQUlCSWdEVUVEZEdvaVJFRUVhaUE2SURGQkEzUWlCbW9pVVNBTklERklJZ2diSVZJZ05TQVRRUUZySUJNZ05Vb2JJU0JCQUNFWUlCTkJBVW9nTVVFQVNuSWhVeUFoSUQ1QkFuUWlFV3NnRUVFRGRHb2hWQ0FSSUVScUlWVWdEU0EySURFZ01TQTJTaHNpRVNBSElDMGdCeUF0U1J0cVFRSWdBU0FCUVFKUEcyb2dCMEYvYzJvaVNFRjhjU0pGYWlFMElBMUJBV29pRkNCRmFpRTlJQk1nTldvaFZpQVFJQk5xSVZjZ0RmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVhrZ0VpQVBRUUowYWlGWUlFQWdFMEVEZENJQmFpRkpJQUVnT21vaFNpQUdJRUJxSVVzZ0UwVWdNVUVCUm5FaFdTQVNJRWRCQW5RaUFXb2hXaUFCSURwcUlWc2dGUDBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklYb2dPaUFOSURFZ0NCdEJBM1JxSVZ3RFFBSkFBa0FnR0NBalNTQU1JQmhOY1EwQUlCZ2dUMGtnR0NCUVQzRU5BQ0FZUVFGcUlTME1BUXNnTENCR1N3UkFJRnRCQURZQ0FDQmFRUUEyQWdBTElEa2dEU0FZSURZZ0dFRUJhaUl0SUZWQkFrRUFFQ0lnT1NCWElCZ2dWaUF0SUZSQkFrRUFFQ0lDUUFKQUFrQWdQa1VFUUNCVFJRMERJQTBnTms0TkFnSkFBa0FnRFVFQVNnUkFJRndvQWdBaEJ3d0JDeUFoS0FJQUlnY2hBU0FOUVFCSURRRUxJQWNoQVNCU0tBSUFJUWNMSUVRZ1JDZ0NBQ0FCSUFkcVFRSnFRUUoxYXpZQ0FDQVVJZ2NnRVU0TkFVRUFJUWNnRkNFQklBMGhDQ0I2SVhZZ2VTRjRJRWhCQTBzRVFBTkFJQklnZGtFQi9hc0JJbmY5R3dCQkFuUnFJZ0VnRWlCMy9Sc0RRUUowYWlJR0lCSWdkLzBiQWtFQ2RHb2lDQ0FTSUhmOUd3RkJBblJxSWgwZ0FmMWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUI0UVFIOXF3SDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0o3L1JzRFFRSjBhaUFTSUh2OUd3SkJBblJxSUJJZ2UvMGJBVUVDZEdvZ0VpQjcvUnNBUVFKMGF2MWNBZ0Q5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdFaUIzL1F3QkFBQUFBUUFBQUFFQUFBQUJBQUFBL1ZBaWQvMGJBMEVDZEdvZ0VpQjMvUnNDUVFKMGFpQVNJSGY5R3dGQkFuUnFJQklnZC8wYkFFRUNkR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlkLzFhQWdBQUlCMGdkLzFhQWdBQklBZ2dkLzFhQWdBQ0lBWWdkLzFhQWdBRElIajlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoZUNCMi9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJWFlnQjBFRWFpSUhJRVZIRFFBTElEMGhBU0EwSVFnZ0VTRUhJRVVnU0VZTkFnc0RRQ0FTSUFGQkEzUnFJZ2NnQnlnQ0FDQVNJQWhCQTNScUtBSUVJQWNvQWdScVFRSnFRUUoxYXpZQ0FDQUJJZ2hCQVdvaUFTQVJSdzBBQ3lBUklRY01BUXNDUUNCWlJRUkFJQTBpQnlBMlRnMEJBMEFnRWlBSFFRTjBhaUlCS0FJRUlRWWdBU0FHQW44Q1FDQUhRUUJPQkVBZ0FTQkxJQWNnTVVnYktBSUFJVEFnQjBFQmFpRUJEQUVMSUJJb0FnQWhNRUVBSVFFZ0VpQUhRUUZxSWdjTkFSb0xJQUVnTVU0RVFDQUJJUWNnU3d3QkN5QVNJQUVpQjBFRGRHb0xLQUlBSURCcVFRSnFRUUoxYXpZQ0JDQUhJRFpJRFFBTERBRUxJQklnRWlnQ0FFRUNiVFlDQUF3REN5QVFJZ2NnTlU0TkFnTkFJQklnQjBFRGRDSUJhaUlHS0FJQUlRZ0NmeUFIUVFCSUJFQWdJU2dDQUNFZElDRU1BUXNnRWlBSFFRTjBha0VFYWlCS0lBY2dFMGdiS0FJQUlSMGdJU0FIUlEwQUdpQktJQWNnRTBvTkFCb2dBU0E2YWdzaEFTQUdJQUVvQWdBZ0hXcEJBWFVnQ0dvMkFnQWdCMEVCYWlJSElEVkhEUUFMREFJTElBY2dOazROQUFOQUlCSWdCMEVEZEdvaUFTQUJLQUlBQW44Q1FDQUhRUUJLQkVBZ09pQUhJREVnQnlBeFNCdEJBM1JxS0FJQUlRZ01BUXNnSVNnQ0FDRUlJQ0VnQjBFQVNBMEJHZ3NnVVNBSElERk9EUUFhSUJJZ0IwRURkR3BCQkdvTEtBSUFJQWhxUVFKcVFRSjFhellDQUNBSFFRRnFJZ2NnTmtjTkFBc0xJQkFnTlU0TkFDQWdJQkFpQVNJSFNnUkFBMEFnRWlBSFFRTjBhaUlCSUFFb0FnUWdFaUFIUVFGcUlnZEJBM1JxS0FJQUlBRW9BZ0JxUVFGMWFqWUNCQ0FISUNCSERRQUxJQ0FoQVFzZ0FTQTFUZzBBQTBBQ2Z3SkFJQUVpQjBFQVRnUkFJQklnQVVFRGRHb2dTU0FCSUJOSUd5Z0NBQ0VHSUFGQkFXb2hDQXdCQ3lBU0tBSUFJUVpCQUNFSUlCSWdCMEVCYWlJQkRRRWFDeUFJSUJOT0JFQWdDQ0VCSUVrTUFRc2dFaUFJSWdGQkEzUnFDeUVJSUJJZ0IwRURkR29pQnlBSEtBSUVJQWdvQWdBZ0JtcEJBWFZxTmdJRUlBRWdOVWdOQUFzTElEa2dEeUFZSUVjZ0xTQllRUUZCQUVFQUVDcEZEUVlMSUMwaUdDQWtSdzBBQ3dzZ0NVR1lBV29oQ1NBeVFRRjBJZ0VnTzBFQmRFRUJjaUlISUFFZ0Iwc2JJZ0VnSkNBQklDUkpHeUUrSUNrZ0RFRUZkQ0lCUVJCeUlnWnFJRG9nTDBFRmRDSUlhaUFNSUM5SUlnY2JJVVFnQmlBbGFpQUlJRUJxSUFjYklVVWdCaUFoYWlBSUlFRnFJQWNiSVVZZ0JpQVNhaUFJSUVKcUlBY2JJVWdnSHlBV1FRRnJJQllnSDBvYklRMGdMMEVBU2lJUUlCWkJBVXB5SVVrZ0FTQVNhaUlkSURkQkJIUnFJVW9nS1NBV1FRTjBJZ1pCQ0dzaU1rRUFJQlpCQUV3YlFRSjBJZ2hxSVVzZ0NDQWxhaUZSSUFnZ0lXb2hVaUFJSUJKcUlWTWdLVUVBSUM5QkEzUWlDRUVJYXlJN0lCQWJRUUowSWhCcUlWUWdFQ0FsYWlGVklCQWdJV29oVmlBUUlCSnFJVmNnRWtFRUlEZEJBblJyUVFKMGFpQVhRUVYwYWlGWUlDTWdMeUFqSUM5SUd5RVFJQXhCQVdvaEZDQVNJQnhCQVhRaUVTQXFRUUYwUVFGeUloTWdFU0FUU1JzaVdVRUVkR29oV2lBQklDbHFJVFFnQVNBbGFpRWNJQUVnSVdvaExTQXBJQlpCQlhRaUFXb2hXeUFHUVFGcklUMGdBU0FsYWlGY0lBWkJBbXNoTVNBQklDRnFJVjhnQmtFRGF5RTFJQUVnRW1vaFlDQUdRUVJySVRZZ0NFRUZheUZoSUFoQkJtc2hZaUFJUVFkcklXTWdGa1VnTDBFQlJuRWhaQ0FwSURKQkFuUWlBV29oWmlBQklDVnFJV2NnQVNBaGFpRm9JQUVnRW1vaGFTQXBJQWhCQkdzaWFrRUNkQ0lCYWlGcklBRWdKV29oYkNBQklDRnFJVzBnQVNBU2FpRnVJRG9nRENBdklBY2JRUVYwSWdGcUlXOGdBU0JBYWlFVElBRWdRV29oR0NBQklFSnFJWEFnS1NBN1FRSjBJZ0ZxSVhFZ0FTQWxhaUZ5SUFFZ0lXb2hjeUFCSUJKcUlYUURRQUpBQWtBQ2Z3SkFJQThpRVNCSFNRUkFJRGtnRHlBTVFRUWdSeUFQYXlJQklBRkJCRThiSUE5cUlnOGdJeUJLUVFGQkNCQWlJRGtnRVNCUUlBOGdUeUJZUVFGQkNCQWlJRGRGQkVBZ1NVVU5CU0FNSUNOT0RRUUNmeUFNUVFCS0JFQWdjQ2dDQUNFSElCTWhCaUFZSVFnZ2J3d0JDeUFTS0FJUUlRY2dERUVBU0EwRElEZ2hCaUE4SVFnZ1Rnc2dIU0FkS0FJQUlBY2dTQ2dDQUdwQkFtcEJBblZyTmdJQUlDMGdMU2dDQUNBSUtBSUFJRVlvQWdCcVFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ0JpZ0NBQ0JGS0FJQWFrRUNha0VDZFdzMkFnQWdSQ2dDQUNFSEtBSUFEQU1MSUdRRVFDQVNJQklvQWdCQkFtMDJBZ0FnRWlBU0tBSUVRUUp0TmdJRUlDVWdKU2dDQUVFQ2JUWUNBQ0FwSUNrb0FnQkJBbTAyQWdBTUJRc2dJeUFNSWdkS0JFQURRQ0FIUVFOMElRWUNRQUpBSUFkQkFFZ0VRQ0FIUVg5R0RRRWdFaUFHUVFKMGFpSUJJQUg5QUFJUUlCTDlBQUlBUVFIOXF3SDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFnc2dFaUFHUVFKMGFpSUJLQUlRSVFnZ0x5QUhRUUZxSWlCTUJFQWdBU0FJSUJJZ0JpQTdJQWNnTDBnaUNCdEJBblJxS0FJQUlIUW9BZ0JxUVFKcVFRSjFhellDRUNBQklBRW9BaFFnRWlBR1FRRnlJR01nQ0J0QkFuUnFLQUlBSUhNb0FnQnFRUUpxUVFKMWF6WUNGQ0FCSUFFb0FoZ2dFaUFHUVFKeUlHSWdDQnRCQW5ScUtBSUFJSElvQWdCcVFRSnFRUUoxYXpZQ0dDQUJJQUVvQWh3Z0VpQUdRUU55SUdFZ0NCdEJBblJxS0FJQUlIRW9BZ0JxUVFKcVFRSjFhellDSEF3Q0N5QUJJQUZCRkdvZ0NQMFIvVllDQUFFZ0FVRVlhdjFkQWdEOURRQUJBZ01FQlFZSEVCRVNFeFFWRmhjZ0FmMEFBZ0FnRWlBZ1FRVjBhdjBBQWdEOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBZjBMQWhBTUFRc2dRaUJDS0FJQUlCSW9BZ0FnVnlnQ0FHcEJBbXBCQW5Wck5nSUFJRUVnUVNnQ0FDQVNLQUlFSUZZb0FnQnFRUUpxUVFKMWF6WUNBQ0JBSUVBb0FnQWdKU2dDQUNCVktBSUFha0VDYWtFQ2RXczJBZ0FnT2lBNktBSUFJQ2tvQWdBZ1ZDZ0NBR3BCQW1wQkFuVnJOZ0lBQ3lBSFFRRnFJZ2NnSTBjTkFBc0xJQjhnRnlJSFRBMEVBMEFnQjBFRGRDRUdBa0FnQjBFQVNBUkFJQklnQmtFQ2RHb2lBU0FTL1FBQ0VFRUIvYXNCUVFIOXJBRWdBZjBBQWdEOXJnSDlDd0lBREFFTElBY0VRQ0FTSUFaQkFuUWlDR29pQVNBQktBSUFJR0FnQVNBSElCWktJaUFiUVJCcktBSUFJQklnQmtFRWNpQTJJQWNnRmtnaUtodEJBblJxS0FJQWFrRUJkV28yQWdBZ0FTQUJLQUlFSUY4Z0NDQWhhaUFnRzBFUWF5Z0NBQ0FTSUFaQkJYSWdOU0FxRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FCSUFFb0FnZ2dYQ0FJSUNWcUlDQWJRUkJyS0FJQUlCSWdCa0VHY2lBeElDb2JRUUowYWlnQ0FHcEJBWFZxTmdJSUlBRWdBU2dDRENCYklBZ2dLV29nSUJ0QkVHc29BZ0FnRWlBR1FRZHlJRDBnS2h0QkFuUnFLQUlBYWtFQmRXbzJBZ3dNQVFzZ0VpQVNLQUlBSUJJb0FoQWdFa0VFSURZZ0J5QVdTQ0lCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FTSUJJb0FnUWdFaWdDRkNBU1FRVWdOU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNCQ0FsSUNVb0FnQWdFaWdDR0NBU1FRWWdNU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FwSUNrb0FnQWdFaWdDSENBU1FRY2dQU0FCRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQXNnQjBFQmFpSUhJQjlIRFFBTERBUUxJQ3doRXlBa0lSWWdRMEVCYWlKRElCNUhEUVVNQmdzZ0hTQWRLQUlBSUFkQkFYUkJBbXBCQW5Wck5nSUFJQzBnTFNnQ0FDQThLQUlBUVFGMFFRSnFRUUoxYXpZQ0FDQWNJQndvQWdBZ09DZ0NBRUVCZEVFQ2FrRUNkV3MyQWdBZ1RpZ0NBQ0lIQ3lFQklEUWdOQ2dDQUNBQklBZHFRUUpxUVFKMWF6WUNBQ0FNSVFZZ0VDQVVJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0FDQVNJQVpCQlhScS9RQUNFQ0FIL1FBQ0VQMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCL1FzQ0FDQUJJZ1pCQVdvaUFTQVFSdzBBQ3lBUUlRY0xJQWNnSTA0TkFBTkFJQWRCQTNRaUJrRUVjaUVnSUFjZ0wwZ2hDQUovSUFkQkFFd0VRQ0FTS0FJUUlTb2dCMEVBVGdSQUlCSWdCa0VDZENJd2FpSUJJQUVvQWdBZ0tpQVNJQ0FnYWlBSUcwRUNkQ0lCYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ0VnTUdvaUNDQUlLQUlBSUJJb0FoUWdBU0FoYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQ1VnTUdvaUNDQUlLQUlBSUJJb0FoZ2dBU0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQklvQWh3Z0FTQXBhaWdDQUdwQkFtb01BZ3NnRWlBR1FRSjBJZ0ZxSWdnZ0NDZ0NBQ0FxUVFGMFFRSnFRUUoxYXpZQ0FDQUJJQ0ZxSWdnZ0NDZ0NBQ0FTS0FJVVFRRjBRUUpxUVFKMWF6WUNBQ0FCSUNWcUlnRWdBU2dDQUNBU0tBSVlRUUYwUVFKcVFRSjFhellDQUNBU0tBSWNRUUYwUVFKcURBRUxJQklnQnlBdklBZ2JRUU4wUVFSclFRSjBJZ0ZxS0FJQUlTb2dDRVVFUUNBU0lBWkJBblFpQ0dvaUlDQWdLQUlBSUNvZ2JpZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0lXb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ2JTZ0NBR3BCQW1wQkFuVnJOZ0lBSUFnZ0pXb2lDQ0FJS0FJQUlBRWdKV29vQWdBZ2JDZ0NBR3BCQW1wQkFuVnJOZ0lBSUFFZ0tXb29BZ0FnYXlnQ0FHcEJBbW9NQVFzZ0VpQUdRUUowSWpCcUlnZ2dDQ2dDQUNBcUlCSWdJRUVDZENJSWFpZ0NBR3BCQW1wQkFuVnJOZ0lBSUNFZ01Hb2lJQ0FnS0FJQUlBRWdJV29vQWdBZ0NDQWhhaWdDQUdwQkFtcEJBblZyTmdJQUlDVWdNR29pSUNBZ0tBSUFJQUVnSldvb0FnQWdDQ0FsYWlnQ0FHcEJBbXBCQW5Wck5nSUFJQUVnS1dvb0FnQWdDQ0FwYWlnQ0FHcEJBbW9MSVFFZ0tTQUdRUUowYWlJR0lBWW9BZ0FnQVVFQ2RXczJBZ0FnQjBFQmFpSUhJQ05IRFFBTEN5QVhJQjlPRFFBZ0RTQVhJZ0VpQjBvRVFBTkFJQklnQVVFRmRHb2lCeUFIL1FBQ0lDQUgvUUFDQVAydUFVRUIvYXdCSUFmOUFBSVEvYTRCL1FzQ0VDQUJRUUZxSWdFZ0RVY05BQXNnRFNFSEN5QUhJQjlPRFFBRFFDQXBJQWRCQTNRaUFVRUVjaUlHUVFKMGFpSXFBbjhnQjBFQVNBUkFJQklvQWdBaEFTQUhRWDlIQkVBZ0VpQUdRUUowSWdacUlnZ2dDQ2dDQUNBQmFqWUNBQ0FHSUNGcUlnRWdBU2dDQUNBaEtBSUFhallDQUNBR0lDVnFJZ0VnQVNnQ0FDQWxLQUlBYWpZQ0FDQXBLQUlBREFJTElCSWdCa0VDZENJR2FpSUlJQWdvQWdBZ1V5Z0NBQ0FCYWtFQmRXbzJBZ0FnQmlBaGFpSUJJQUVvQWdBZ1VpZ0NBQ0FoS0FJQWFrRUJkV28yQWdBZ0JpQWxhaUlCSUFFb0FnQWdVU2dDQUNBbEtBSUFha0VCZFdvMkFnQWdTeWdDQUNBcEtBSUFha0VCZFF3QkN5QVNJQUVnTWlBSElCWklHMEVDZEdvaUFTZ0NBQ0VJSUJZZ0IwRUJhaUl3VEFSQUlCSWdCa0VDZENJR2FpSWdJQ0FvQWdBZ2FTZ0NBQ0FJYWtFQmRXbzJBZ0FnQmlBaGFpSUlJQWdvQWdBZ2FDZ0NBQ0FCS0FJRWFrRUJkV28yQWdBZ0JpQWxhaUlHSUFZb0FnQWdaeWdDQUNBQktBSUlha0VCZFdvMkFnQWdaaWdDQUNBQktBSU1ha0VCZFF3QkN5QVNJQVpCQW5RaUlHb2lCaUFHS0FJQUlBZ2dFaUF3UVFWMGFpSUdLQUlBYWtFQmRXbzJBZ0FnSUNBaGFpSUlJQWdvQWdBZ0JpZ0NCQ0FCS0FJRWFrRUJkV28yQWdBZ0lDQWxhaUlJSUFnb0FnQWdCaWdDQ0NBQktBSUlha0VCZFdvMkFnQWdCaWdDRENBQktBSU1ha0VCZFFzZ0tpZ0NBR28yQWdBZ0IwRUJhaUlISUI5SERRQUxDeUE1SUJFZ1dTQVBJRDRnV2tFQlFRUkJBQkFxRFFBTEN3d0NDeUFTRUJSQkFTRUhDeUE1SUN0QkVHc29BZ0FpQVNCZEtBSUFJZ1pySUN0QkRHc29BZ0FnWGlnQ0FDSUlheUFyUVFocktBSUFJZ2tnQm1zZ0swRUVheWdDQUNBSWF5QU9LQUkwUVFFZ0NTQUJheEFpSURrUUp3d0RDeUE1RUNjZ0VoQVVRUUFoQnd3Q0N5QTVFQ2RCQUNFSERBRUxRUUFoQnlBWEVDUWdEQkFVQ3lBblFTQnFKQUFnQncwQkRBVUxJQUVoQjBFQUlRejlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhkaU1BUVVCcUloNGtBQUpBQW44Q1FDQWJLQUpBQkVBZ0RpZ0NIQ0lYSUE0b0FoaEJtQUZzYWlJQlFaZ0JheWdDQUNFWUlBRkJrQUZyS0FJQUlSMGdGeWdDQkNFTklCY29BZ3dnRnlnQ0FDRVJJQmNvQWdnaEZFRUJJUVlnR3lnQ0xDSWpLQUlFSVNZZ0IwRUJSZzBEUVFBaENDQUhRUUZySWc4aENTQVhJUUVDUUNBUFFRUlBCRUFnRDBFRGNTRUpJQUVnRDBGOGNTSU1RWmdCYkdvaEFVRUFJUVlEUUNCMklCY2dCa0dZQVd4cUlnZEI2QVJxSUFkQjBBTnFJQWRCdUFKcUlBZjlYQUtnQWYxV0FnQUIvVllDQUFMOVZnSUFBeUFIUWVBRWFpQUhRY2dEYWlBSFFiQUNhaUFIL1Z3Q21BSDlWZ0lBQWYxV0FnQUMvVllDQUFQOXNRSDl1UUVnQjBIc0JHb2dCMEhVQTJvZ0IwRzhBbW9nQi8xY0FxUUIvVllDQUFIOVZnSUFBdjFXQWdBRElBZEI1QVJxSUFkQnpBTnFJQWRCdEFKcUlBZjlYQUtjQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTRjJJQVpCQkdvaUJpQU1SdzBBQ3lCMklIWWdkdjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNKMklIWWdkdjBOQkFVR0J3QUJBZ01BQVFJREFBRUNBLzI1QWYwYkFDRUlJQXdnRDBZTkFRc0RRQ0FJSUFFb0FxQUJJQUVvQXBnQmF5SUhJQWNnQ0VrYklnY2dBU2dDcEFFZ0FTZ0NuQUZySWdZZ0JpQUhTUnNoQ0NBQlFaZ0JhaUVCSUFsQkFXc2lDUTBBQ3d0QkFDRUdJQWhCLy8vL1Awc05BeUFlSUFoQkJYUWlSeEFjSWdFMkFpQWdBVVVOQXlBZUlBRTJBZ0FnRDBVRVFFRUJJUVlnQVJBVURBUUxJQTFySVEwZ0ZDQVJheUVNUVFJZ0prRUJkaUlCSUFGQkFrMGJJVVFnRGlnQ0pDSUhJQjFCSEd3aVhTQVlRUnhzSWw1cmFpRWtJQWNnSFVFWWJDSlJJQmhCR0d3aVVtdHFJUzRnQnlBZFFSUnNJbE1nR0VFVWJDSlVhMm9oTENBSElCMUJCSFFpVlNBWVFRUjBJbFpyYWlFdElBY2dIVUVNYkNKWElCaEJER3dpV0d0cUlTQWdCeUFkUVFOMElsa2dHRUVEZENKYWEyb2hPQ0FkSUJockloRkJCWFFoUlNBUlFRZHNJVTRnRVVFR2JDRkdJQkZCQld3aFR5QVJRUU5zSVZBZ0VVRUJkQ0ZJSUFjZ0VVRUNkQ0pBYWlFOElCSDlFU0Y2QTBBZ0hpQU5OZ0lJSUI0Z0RDSUJOZ0lvSUJjb0Fwd0JJUjhnRnlnQ3BBRWhLQ0FYS0FLZ0FTRXFJQmNvQXBnQklSb2dIa0VBTmdJNElCNGdBVFlDTkNBZVFRQTJBakFnSGlBYVFRSnZJaHcyQWl3Z0hpQXFJQnBySWd3Z0FXc2lGRFlDUENBZUlCUTJBaVFDUUNBbVFRSklJbHRGSUNnZ0gyc2lEVUVQUzNGRkJFQkJBQ0VHSUFjaENDQU5RUWhKRFFFZ0xDQUhJRkVnS2tFQ2RDSUJhaUJTSUJwQkFuUWlDV3ByYWlJK1NTQXVJQWNnQVNCVGFpQUpJRlJxYTJvaVFVbHhJQ1FnUVVrZ0xDQUhJQUVnWFdvZ0NTQmVhbXRxSWtKSmNYSWhYQ0E4SUFjZ0FTQlphaUFKSUZwcWEyb2lTVWtnT0NBSElCMGdLbW9nR0NBYWFtdEJBblJxSWtwSmNTQWdJRXBKSUR3Z0J5QUJJRmRxSUFrZ1dHcHJhaUpMU1hGeUlWOGdMU0JCU1NBc0lBY2dBU0JWYWlBSklGWnFhMm9pUTBseElDMGdQa2tnTGlCRFNYRnlJQzBnUWtrZ0pDQkRTWEZ5SVdBZ0xpQkNTU0FrSUQ1SmNTRmhJRGdnUzBrZ0lDQkpTWEVoWWlBSElBRWdDV3RxSVRJZ0RFRjhjU0VKSUI0b0FpQWlGRUVNYWlFN0lCUkJDR29oTkNBVVFRUnFJVDBnRkVFY2FpRVNJQlJCR0dvaElTQVVRUlJxSVNVZ0ZFRVFhaUVwSUJRZ0RFRUZkR29pRmtFUWF5RW5JQlpCRkdzaEx5QVdRUmhySVRFZ0ZrRWNheUU1SUJaQkJHc2hPaUFXUVFocklUVWdGa0VNYXlFMlFRQWhIQ0FNUWF3QlNTRmpJQXhCTEVraFpBTkFJQVloRUNBZVFTQnFJZ0VnQ0NBUlFRZ1FReUFCRUNZQ1FDQU1SUTBBSUJ3Z1JXd2hCa0VBSVFFQ1FBSkFJR01OQUNCaUlBZ2dPVWtnRkNBR0lESnFJamRKY1NBZ0lESkpJQWdnQmlCTGFpSVRTWEVnQ0NBR0lFcHFJaXRKSURJZ1BFdHhJQWdnQmlCSmFpSXdTU0F5SURoTGNYSnljaUFJSURGSklEY2dQVXR4Y2lBSUlDOUpJRFFnTjBseGNpQUlJQ2RKSURjZ08wdHhjaUJmY2lBVUlDdEpJQVlnUEdvaU55QTVTWEZ5SUNzZ1BVc2dNU0EzUzNGeUlDc2dORXNnTHlBM1MzRnlJQ3NnTzBzZ0p5QTNTM0Z5Y2cwQUlCUWdNRWtnQmlBNGFpSXJJRGxKY1EwQUlDc2dNVWtnTUNBOVMzRU5BQ0FySUM5SklEQWdORXR4RFFBZ01DQTdTeUFuSUN0TGNRMEFJQVlnSUdvaUt5QTVTU0FUSUJSTGNRMEFJQ3NnTVVrZ0V5QTlTM0VOQUNBcklDOUpJQk1nTkV0eERRQWdFeUE3U3lBbklDdExjUTBBQTBBZ0NDQUJRUUowYWlBVUlBRkJCWFJxSWhOQjRBQnFJQk5CUUdzZ0UwRWdhaUFUL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdDQ0FCSUJGcVFRSjBhaUFUUWVRQWFpQVRRY1FBYWlBVFFTUnFJQlA5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnU0dwQkFuUnFJQk5CNkFCcUlCTkJ5QUJxSUJOQktHb2dFLzFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JRYWtFQ2RHb2dFMEhzQUdvZ0UwSE1BR29nRTBFc2FpQVQvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FVRUVhaUlCSUFsSERRQUxJQWtpQVNBTVJnMEJDd05BSUFnZ0FVRUNkR29nRkNBQlFRVjBhaUlUS2dJQU9BSUFJQWdnQVNBUmFrRUNkR29nRXlvQ0JEZ0NBQ0FJSUFFZ1NHcEJBblJxSUJNcUFnZzRBZ0FnQ0NBQklGQnFRUUowYWlBVEtnSU1PQUlBSUFGQkFXb2lBU0FNUncwQUN3dEJBQ0VCQWtBZ1pBMEFJR0VnQmlBc2FpSVRJRFpKSUNrZ0JpQkJhaUlyU1hFZ1lDQUdJQzFxSWpBZ05ra2dLU0FHSUVOcUlqZEpjWElnSlNBM1NTQXdJRFZKY1hJZ0lTQTNTU0F3SURwSmNYSWdFaUEzU1NBV0lEQkxjWElnWEhKeUlDVWdLMGtnRXlBMVNYRnlJQ0VnSzBrZ0V5QTZTWEZ5SUJJZ0swa2dFeUFXU1hGeWNnMEFJQVlnTG1vaUV5QTJTU0FwSUFZZ1Btb2lLMGx4RFFBZ0pTQXJTU0FUSURWSmNRMEFJQ0VnSzBrZ0V5QTZTWEVOQUNBU0lDdEpJQk1nRmtseERRQWdCaUFrYWlJVElEWkpJQ2tnQmlCQ2FpSUdTWEVOQUNBVElEVkpJQVlnSlV0eERRQWdFeUE2U1NBR0lDRkxjUTBBSUJNZ0Zra2dCaUFTUzNFTkFBTkFJQWdnQVNCQWFrRUNkR29nRkNBQlFRVjBhaUlHUWZBQWFpQUdRZEFBYWlBR1FUQnFJQWI5WEFJUS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUlJQUVnVDJwQkFuUnFJQVpCOUFCcUlBWkIxQUJxSUFaQk5Hb2dCdjFjQWhUOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBZ2dBU0JHYWtFQ2RHb2dCa0g0QUdvZ0JrSFlBR29nQmtFNGFpQUcvVndDR1AxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0NDQUJJRTVxUVFKMGFpQUdRZndBYWlBR1Fkd0FhaUFHUVR4cUlBYjlYQUljL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQlFRUnFJZ0VnQ1VjTkFBc2dDU0lCSUF4R0RRRUxBMEFnQ0NBQklFQnFRUUowYWlBVUlBRkJCWFJxSWdZcUFoQTRBZ0FnQ0NBQklFOXFRUUowYWlBR0tnSVVPQUlBSUFnZ0FTQkdha0VDZEdvZ0Jpb0NHRGdDQUNBSUlBRWdUbXBCQW5ScUlBWXFBaHc0QWdBZ0FVRUJhaUlCSUF4SERRQUxDeUFjUVFGcUlSd2dFRUVJYWlFR0lBZ2dSV29oQ0NBUVFROXFJQTFKRFFBTERBRUxJQTBnRFVFRGRpSUdJQ1lnQmlBbVNSc2lFMjVCZUhFaEZpQU5RWGh4SVFaQkFDRUpJQWNoQ0FOQVFUQVFHQ0lRUlEwRUlCQWdSeEFjSWpJMkFnQWdNa1VFUUNBakVDUWdFQkFVUVFBTUJnc2dFQ0FJTmdJb0lCQWdFVFlDSkNBUUlBdzJBaUFnRUNBVU5nSWNJQkJCQURZQ0dDQVFJQUUyQWhRZ0VFRUFOZ0lRSUJBZ0hEWUNEQ0FRSUFFMkFnZ2dFQ0FVTmdJRUlCQWdCaUFKSUJac2F5QVdJQWxCQVdvaUNTQVRSaHNpTWpZQ0xDQWpRUXdnRUJBeklBZ2dFU0F5YkVFQ2RHb2hDQ0FKSUJOSERRQUxJQ01RSkFzQ1FDQUdJQTFQRFFBZ0hrRWdhaUlCSUFnZ0VTQU5JQVpySWhRUVF5QUJFQ1lnREVVTkFDQWVLQUlnSWhZZ0trRUZkQ0FvUVFKMGFpQUdJQjlxUVFKMElCcEJCWFJxYTJwQklHc2hHaUFVUVh4eElSQWdRQ0FvSUFaQmYzTnFJQjlyYkNFcVFRQWhDUU5BSUJZZ0NVRUZkR29oSEVFQUlRRUNRQUpBSUJSQkJFa05BQ0FhSUFnZ0NVRUNkQ0lCYWlJR0lBZ2dBU0FxYW1vaUV5QUdJQk5KRzBzRVFFRUFJUUVnRmlBR0lCTWdCaUFUU3h0QkJHcEpEUUVMSUFuOUVTRjMvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUFJWFpCQUNFQkEwQWdDQ0IySUhyOXRRRWdkLzJ1QVNKNC9Sc0FRUUowYWlBY0lBRkJBblJxL1FBQ0FDSjUvUjhBT0FJQUlBZ2dlUDBiQVVFQ2RHb2dlZjBmQVRnQ0FDQUlJSGo5R3dKQkFuUnFJSG45SHdJNEFnQWdDQ0I0L1JzRFFRSjBhaUI1L1I4RE9BSUFJSGI5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaGRpQUJRUVJxSWdFZ0VFY05BQXNnRUNJQklCUkdEUUVMQTBBZ0NDQUJJQkZzSUFscVFRSjBhaUFjSUFGQkFuUnFLZ0lBT0FJQUlBRkJBV29pQVNBVVJ3MEFDd3NnQ1VFQmFpSUpJQXhIRFFBTEN5QWVJQTBnSGlnQ0NDSVFheUlUTmdJRUlCY29BcHdCSVFFZ0hpQVROZ0ljSUI3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FVRUNieUlxL1J3QUlCRDlIQUlpZHYwTEFnd0NRQ0JiUlNBTVFROUxjVVVFUUNBSElRRWdERUVJU1EwQklBMUJmbkVoT3lBTlFRRnhJVFFnRTBGK2NTRTlJQk5CQVhFaEVpQVFRWDV4SVNFZ0VFRUJjU0VsSUNnZ0gwRi9jMm9oTWlBZUtBSUFJaFFnS2tFRmRDSUdhaUVXSUJRZ0JtdEJJR29oSENBUUlCRnNRUUowSVNrZ0RDRUpBMEJCQUNFSVFRQWhCZ0pBQWtBQ1FDQVFEZ0lDQVFBTEEwQWdGaUFJUVFaMGFpSWFJQUVnQ0NBUmJFRUNkR29pSi8wQUFnRDlDd0lBSUJvZ0ovMEFBaEQ5Q3dJUUlCWWdDRUVCY2lJYVFRWjBhaUluSUFFZ0VTQWFiRUVDZEdvaUd2MEFBaEQ5Q3dJUUlDY2dHdjBBQWdEOUN3SUFJQWhCQW1vaENDQUdRUUpxSWdZZ0lVY05BQXNMSUNWRkRRQWdGaUFJUVFaMGFpSUdJQUVnQ0NBUmJFRUNkR29pQ1AwQUFnRDlDd0lBSUFZZ0NQMEFBaEQ5Q3dJUUN3SkFJQTBnRUVZTkFDQUJJQ2xxSVJwQkFDRUlRUUFoQmlBUUlESkhCRUFEUUNBY0lBaEJCblJxSWljZ0dpQUlJQkZzUVFKMGFpSXYvUUFDQVAwTEFnQWdKeUF2L1FBQ0VQMExBaEFnSENBSVFRRnlJaWRCQm5ScUlpOGdHaUFSSUNkc1FRSjBhaUluL1FBQ0VQMExBaEFnTHlBbi9RQUNBUDBMQWdBZ0NFRUNhaUVJSUFaQkFtb2lCaUE5UncwQUN3c2dFa1VOQUNBY0lBaEJCblJxSWdZZ0dpQUlJQkZzUVFKMGFpSUkvUUFDQVAwTEFnQWdCaUFJL1FBQ0VQMExBaEFMSUI0UUpnSkFJQTFGRFFCQkFDRUlRUUFoQmlBeUJFQURRQ0FCSUFnZ0VXeEJBblJxSWhvZ0ZDQUlRUVYwYWlJbi9RQUNBUDBMQWdBZ0dpQW4vUUFDRVAwTEFoQWdBU0FJUVFGeUlob2dFV3hCQW5ScUlpY2dGQ0FhUVFWMGFpSWEvUUFDRVAwTEFoQWdKeUFhL1FBQ0FQMExBZ0FnQ0VFQ2FpRUlJQVpCQW1vaUJpQTdSdzBBQ3dzZ05FVU5BQ0FCSUFnZ0VXeEJBblJxSWdZZ0ZDQUlRUVYwYWlJSS9RQUNBUDBMQWdBZ0JpQUkvUUFDRVAwTEFoQUxJQUZCSUdvaEFTQUpRUWhySWdsQkIwc05BQXNNQVF0QkFTQU1RUU4ySWdFZ1JDQUJJRVJKR3lJSklBbEJBVTBiSVJZZ0RDQUpia0Y0Y1NFVUlBeEJlSEVoSEVFQUlRWWdCeUVCQTBCQk1CQVlJZ2hGRFFRZ0NDQkhFQndpR2pZQ0FDQWFSUVJBSUNNUUpDQUlFQlJCQUF3R0N5QUlJQUUyQWlnZ0NDQVJOZ0lrSUFnZ0RUWUNJQ0FJSUJNMkFod2dDQ0IyL1FzQ0RDQUlJQkEyQWdnZ0NDQVROZ0lFSUFnZ0hDQUdJQlJzYXlBVUlBWkJBV29pQmlBSlJoc2lHallDTENBalFRMGdDQkF6SUFFZ0drRUNkR29oQVNBR0lCWkhEUUFMSUNNUUpBc0NRQ0FNUVFkeElnWkZEUUFnS2tFRmRDRWFJQjRvQWdBaENRSkFJQkJGRFFBZ0NTQWFhaUVVSUFaQkFuUWhGa0VBSVFnZ0VFRUJSd1JBSUJCQmZuRWhLa0VBSVJ3RFFDQVVJQWhCQm5ScUlBRWdDQ0FSYkVFQ2RHb2dGaEFXR2lBVUlBaEJBWElpTWtFR2RHb2dBU0FSSURKc1FRSjBhaUFXRUJZYUlBaEJBbW9oQ0NBY1FRSnFJaHdnS2tjTkFBc0xJQkJCQVhGRkRRQWdGQ0FJUVFaMGFpQUJJQWdnRVd4QkFuUnFJQllRRmhvTEFrQWdEU0FRUmcwQUlBa2dHbXRCSUdvaEZpQUJJQkFnRVd4QkFuUnFJUndnQmtFQ2RDRWFRUUFoQ0NBUUlDZ2dIMEYvYzJwSEJFQWdFMEYrY1NFUVFRQWhGQU5BSUJZZ0NFRUdkR29nSENBSUlCRnNRUUowYWlBYUVCWWFJQllnQ0VFQmNpSXFRUVowYWlBY0lCRWdLbXhCQW5ScUlCb1FGaG9nQ0VFQ2FpRUlJQlJCQW1vaUZDQVFSdzBBQ3dzZ0UwRUJjVVVOQUNBV0lBaEJCblJxSUJ3Z0NDQVJiRUVDZEdvZ0doQVdHZ3NnSGhBbUlBMUZEUUFnQmtFQ2RDRVFRUUFoQ0NBZlFRRnFJQ2hIQkVBZ0RVRitjU0VVUVFBaEJnTkFJQUVnQ0NBUmJFRUNkR29nQ1NBSVFRVjBhaUFRRUJZYUlBRWdDRUVCY2lJVElCRnNRUUowYWlBSklCTkJCWFJxSUJBUUZob2dDRUVDYWlFSUlBWkJBbW9pQmlBVVJ3MEFDd3NnRFVFQmNVVU5BQ0FCSUFnZ0VXeEJBblJxSUFrZ0NFRUZkR29nRUJBV0dnc2dGMEdZQVdvaEZ5QVBRUUZySWc4TkFBdEJBUXdDQzBFQklRWWdEaWdDSENJWElBZEJtQUZzYWlJYVFaZ0JheUk4S0FJQUlCcEJrQUZyS0FJQVJnMENJQnBCbEFGcklpb29BZ0FnR2tHTUFXc29BZ0JHRFFJZ0Z5Z0NCQ0VOSUJjb0Fnd2hFQ0FYS0FJQUlSRWdGeWdDQ0NFWUlBNG9Ba1FoRkNBT0tBSkFJUk1nRGlnQ1BDRVdJQTRvQWpnaEhTQU9JQWNRWlNJb1JRUkFRUUFoQmd3REN5QUhRUUZHQkVBZ0tDQWFRUkJyS0FJQUlnRWdQQ2dDQUNJSGF5QWFRUXhyS0FJQUlDb29BZ0FpQ0dzZ0drRUlheWdDQUNJSklBZHJJQnBCQkdzb0FnQWdDR3NnRGlnQ05FRUJJQWtnQVdzUUlpQW9FQ2NNQXd0QkFDRUlBa0FDUUNBSFFRRnJJZ2xCQkVrRVFDQUpJUVlnRnlFQkRBRUxJQWxCQTNFaEJpQVhJQWxCZkhFaUQwR1lBV3hxSVFFRFFDQjJJQmNnREVHWUFXeHFJZ2hCNkFScUlBaEIwQU5xSUFoQnVBSnFJQWo5WEFLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBSVFlQUVhaUFJUWNnRGFpQUlRYkFDYWlBSS9Wd0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0NFSHNCR29nQ0VIVUEyb2dDRUc4QW1vZ0NQMWNBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQWhCNUFScUlBaEJ6QU5xSUFoQnRBSnFJQWo5WEFLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0YySUF4QkJHb2lEQ0FQUncwQUN5QjJJSFlnZHYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8yNUFTSjJJSFlnZHYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VJSUFrZ0QwWU5BUXNEUUNBSUlBRW9BcUFCSUFFb0FwZ0JheUlKSUFnZ0NVc2JJZ2dnQVNnQ3BBRWdBU2dDbkFGcklna2dDQ0FKU3hzaENDQUJRWmdCYWlFQklBWkJBV3NpQmcwQUN3c0NRQ0FJUVlDQWdNQUFUdzBBSUI0Z0NFRUZkQkFjSWlZMkFpQWdKa1VOQUNBZUlDWTJBZ0FDUUNBSEJFQWdFQ0FOYXlFTklCZ2dFV3NoQ0NBbVFTQnFJVElnQjYwaGZTQVVyU0dBQVNBVHJTR0JBU0FXclNGK0lCMnRJWUlCSUE0b0FoUWlQYTBoZ3dGQ0FTRjhBMEFnSGlBTk5nSUlJQjRnQ0RZQ0tDQVhLQUtrQVNFSElCY29BcUFCSVFZZ0Z5Z0NuQUVoQVNBZUlCY29BcGdCSWdsQkFtOGlKRFlDTENBZUlBRkJBbThpT3pZQ0RDQWVJQVlnQ1dzaUl5QUlheUl1TmdJa0lCNGdCeUFCYXlJUUlBMXJJalEyQWdRZ0hTSVBJUWtnRmlJQklRd2dFeUlHSVJ3Z0ZDSUhJUkVDUUNCOElJTUJVUTBBSUQwZ2ZLZHJJUmhCQUNFTVFRQWhDU0FQQkVCQ2Z5QVlyU0ovaGtKL2hTQ0NBWHdnZjRpbklRa0xJQllFUUVKL0lCaXRJbitHUW4rRklINThJSCtJcHlFTUMwRUFJUWRCQUNFR0lCTUVRRUovSUJpdEluK0dRbitGSUlFQmZDQi9pS2NoQmdzZ0ZBUkFRbjhnR0swaWY0WkNmNFVnZ0FGOElIK0lweUVIQzBFQUlSeEJBQ0VQUVFFZ0dFRUJhM1FpSHlBZFNRUkFJQjBnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFUEN5QVRJQjlMQkVBZ0V5QWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUndMUVFBaEVVRUFJUUVnRmlBZlN3UkFJQllnSDJ1dFFuOGdHSzBpZjRaQ2Y0VjhJSCtJcHlFQkN5QVVJQjlORFFBZ0ZDQWZhNjFDZnlBWXJTSi9oa0ovaFh3Z2Y0aW5JUkVMUVg4Z0hDQVhLQUswQVNJWWF5SWZRUUFnSENBZlR4c2lIMEVFYWlJY0lCd2dIMGtiSWg4Z0xpQWZJQzVKR3lJZ1FYOGdCaUFYS0FMWUFTSWZheUljUVFBZ0JpQWNUeHNpQmtFRWFpSWNJQVlnSEVzYklnWWdDQ0FHSUFoSkd5STRJQ1FiUVFGMElnWWdPQ0FnSUNRYlFRRjBRUUZ5SWh3Z0JpQWNTeHNpSENBalNTRXVJQThnR0dzaUJrRUFJQVlnRDAwYklnWkJCR3NpRDBFQUlBWWdEMDhiSWl3Z0NTQWZheUlHUVFBZ0JpQUpUUnNpQmtFRWF5SUpRUUFnQmlBSlR4c2lMU0FrRzBFQmRDSVNJQzBnTENBa0cwRUJkRUVCY2lJaFNTRWxJQXdnRnlnQ3VBRWlDV3NpQmtFQUlBWWdERTBiSWdaQkJHc2lEMEVBSUFZZ0QwOGJJZ1loRHlBQklCY29BdHdCSWd4ckloaEJBQ0FCSUJoUEd5SUJRUVJySWhoQkFDQUJJQmhQR3lJQklSOUJmeUFISUFscklnbEJBQ0FISUFsUEd5SUhRUVJxSWdrZ0J5QUpTeHNpQnlBTklBY2dEVWtiSWdraEIwRi9JQkVnREdzaURFRUFJQXdnRVUwYklneEJCR29pRVNBTUlCRkxHeUlNSURRZ0RDQTBTUnNpR0NFUklEc0VRQ0FCSVE4Z0JpRWZJQWtoRVNBWUlRY0xJQndnSXlBdUd5RXVJQklnSVNBbEd5RWNJQjRnSURZQ1BDQWVJQ3cyQWpnZ0hpQTROZ0kwSUI0Z0xUWUNNQUpBSUJCQkNFa0VRRUVISVFoQkFDRU1EQUVMSURJZ0pFRUZkQ0lNYXlBc1FRWjBhaUUwSUF3Z0ptb2dMVUVHZEdvaEVpQUlJQ0JxSVNBZ0NDQXNhaUVzSUEwZ0dHb2hJU0FCSUExcUlTVWdKaUFjUVFWMGFpRXBRUUFoREFOQUFrQUNRQ0FKSUF4TElBeEJCM0lpQ0NBR1QzRU5BQ0FNSUNGSklBZ2dKVTl4RFFBZ0RFRUlhaUVNREFFTFFRZ2dFQ0FNYXlJSUlBaEJDRThiSVNkQkFDRUlBMEFnS0NBdElBZ2dER29pSkNBNElDUkJBV29pTHlBU0lBaEJBblFpTVdwQkVFRUFFQ0lnS0NBc0lDUWdJQ0F2SURFZ05HcEJFRUVBRUNJZ0NFRUJhaUlJSUNkSERRQUxJQjVCSUdvUUppQW9JQndnRENBdUlBeEJDR29pRENBcFFRaEJBVUVBRUNwRkRRVUxJQXhCQjNJaUNDQVFTUTBBQ3dzQ1FDQU1JQkJQRFFBZ0JpQUlUU0FKSUF4TGNVVUVRQ0FNSUEwZ0dHcFBEUUVnQ0NBQklBMXFTUTBCQ3lBZVFTQnFJUWhCQUNFa0lCQWdER3NpTFFSQUEwQWdLQ0FJS0FJUUlpQWdEQ0FrYWlJc0lBZ29BaFFnTEVFQmFpSTRJQ1JCQW5RaU5DQUlLQUlBSUFnb0FneEJCWFJxSUNCQkJuUnFha0VRUVFBUUlpQW9JQWdvQWhnaUlDQUlLQUlJSWhKcUlDd2dDQ2dDSENBU2FpQTRJQWdvQWdBZ0NDZ0NERUVGZEdzZ0lFRUdkR29nTkdwQklHcEJFRUVBRUNJZ0pFRUJhaUlrSUMxSERRQUxDeUFJRUNZZ0tDQWNJQXdnTGlBUUlDWWdIRUVGZEdwQkNFRUJRUUFRS2tVTkF3c2dIaUFZTmdJY0lCNGdBVFlDR0NBZUlBazJBaFFnSGlBR05nSVFJQndnTGtrRVFDQUhRUUYwSWdjZ0VVRUJkRUVCY2lJSUlBY2dDRXNiSWdjZ0VDQUhJQkJKR3lFSElESWdPMEVGZENJSWF5QUJRUVowYWlFTUlBZ2dKbW9nQmtFR2RHb2hDQ0FOSUJocUlSRWdBU0FOYWlFTklDWWdEMEVCZENJQklCOUJBWFJCQVhJaUR5QUJJQTlKR3lJUFFRVjBhaUVZQTBBZ0tDQWNJQVpCQ0NBdUlCeHJJZ0VnQVVFSVR4c2dIR29pQVNBSklBaEJBVUVRRUNJZ0tDQWNJQTBnQVNBUklBeEJBVUVRRUNJZ0hoQW1JQ2dnSENBUElBRWdCeUFZUVFGQkNFRUFFQ3BGRFFRZ0hFRUlhaUljSUM1SkRRQUxDeUFYUVpnQmFpRVhJQ01oQ0NBUUlRMGdmRUlCZkNKOElIMVNEUUFMQzBFQklRWWdLQ0FhUVJCcktBSUFJZ0VnUENnQ0FDSUhheUFhUVF4cktBSUFJQ29vQWdBaUNHc2dHa0VJYXlnQ0FDSUpJQWRySUJwQkJHc29BZ0FnQ0dzZ0RpZ0NORUVCSUFrZ0FXc1FJaUFvRUNjZ0poQVVEQVFMSUNnUUp5QW1FQlJCQUNFR0RBTUxJQ2dRSjBFQUlRWU1BZ3NnSXhBa1FRQUxJUVlnSGlnQ0lCQVVDeUFlUVVCckpBQWdCZzBBREFRTElCbEJ1QWhxSVJrZ0NrRTBhaUVLSUE1QnpBQnFJUTRnQzBFQmFpSUxJQlVvQWhCSkRRQUxJQnNvQWlBaEdTQWJLQUlVS0FJQUlSVUxBa0FnR1NnQ0VDSU9SUTBBSUJzb0FrUU5BQ0FWS0FJVUlnb29BaHdoQVFKQUFrQUNRQUpBQWtBZ0d5Z0NRQ0lHQkVBZ0ZTZ0NFQ0lMUVFOSkRRSUNRQ0FLS0FJWUlnY2dDaWdDWkVZRVFDQUhJQW9vQXJBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SkN3SkFJQnNvQWhnb0FoZ2lDQ2dDSkNJSklBZ29BbGhIRFFBZ0NTQUlLQUtNQVVjTkFDQUJJQWRCbUFGc0lnaHFJZ0ZCakFGcktBSUFJQUZCbEFGcktBSUFheUFCUVpBQmF5Z0NBQ0FCUVpnQmF5Z0NBR3RzSWdFZ0NpZ0NhQ0FJYWlJSFFZd0JheWdDQUNBSFFaUUJheWdDQUdzZ0IwR1FBV3NvQWdBZ0IwR1lBV3NvQWdCcmJFY05BQ0FLS0FLMEFTQUlhaUlIUVl3QmF5Z0NBQ0FIUVpRQmF5Z0NBR3NnQjBHUUFXc29BZ0FnQjBHWUFXc29BZ0JyYkNBQlJnMENDeUF6UVFGQnhNNEFRUUFRRXd3SUN5QVZLQUlRSWd0QkEwa05BUUpBSUJzb0FoZ29BaGdpQnlnQ0pDSUlJQWNvQWxoSERRQWdDQ0FIS0FLTUFTSUpSdzBBSUFFZ0NFR1lBV3dpQjJvaUFTZ0NsQUVnQVNnQ2pBRnJJQUVvQXBBQklBRW9Bb2dCYTJ3aUFTQUhJQW9vQW1ocUlnY29BcFFCSUFjb0Fvd0JheUFIS0FLUUFTQUhLQUtJQVd0c1J3MEFJQW9vQXJRQklBbEJtQUZzYWlJSEtBS1VBU0FIS0FLTUFXc2dCeWdDa0FFZ0J5Z0NpQUZyYkNBQlJnMEJDeUF6UVFGQnhNNEFRUUFRRXd3SEN5QU9RUUpHQkVBZ0dTZ0M2Q3RGRFFVZ0MwRUNkQkFZSWd0RkRRY2dGU2dDRUNJSlJRMEVJQnNvQWtBRVFFRUFJUlVnQ1VFTFRRMERJQXBCSkdvaUNDQUxJQWxCQW5ScVNRUi9JQW9nQ1VITUFHeHFRU1JySUF0TEJVRUFDdzBESUFwQmlBSnFJUThnQ2tHOEFXb2hEQ0FLUWZBQWFpRVhJQW9nQ1VGOGNTSUdRY3dBYkdvaENrRUFJUTREUUNBTElBNUJBblJxSUE4Z0RrSE1BR3dpQjJvZ0J5QU1haUFISUJkcUlBY2dDR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQU9RUVJxSWc0Z0JrY05BQXNnQmlBSlJ3MEVEQVVMUVFBaEZRSkFJQWxCREVrRVFFRUFJUVlNQVFzZ0NrRTBhaUVJQWtBZ0N5QUtJQWxCekFCc2FrRVVhMDhOQUNBSUlBc2dDVUVDZEdwUERRQkJBQ0VHREFFTElBcEJtQUpxSVE4Z0NrSE1BV29oRENBS1FZQUJhaUVYSUFvZ0NVRjhjU0lHUWN3QWJHb2hDa0VBSVE0RFFDQUxJQTVCQW5ScUlBOGdEa0hNQUd3aUIyb2dCeUFNYWlBSElCZHFJQWNnQ0dyOVhBSUEvVllDQUFIOVZnSUFBdjFXQWdBRC9Rc0NBQ0FPUVFScUlnNGdCa2NOQUFzZ0JpQUpSZzBGQ3dKQUlBbEJBM0VpQjBVRVFDQUdJUTRNQVFzZ0JpRU9BMEFnQ3lBT1FRSjBhaUFLS0FJME5nSUFJQTVCQVdvaERpQUtRY3dBYWlFS0lCVkJBV29pRlNBSFJ3MEFDd3NnQmlBSmEwRjhTdzBFSUF0QkRHb2hCaUFMUVFocUlRZ2dDMEVFYWlFUEEwQWdDeUFPUVFKMElnZHFJQW9vQWpRMkFnQWdCeUFQYWlBS0tBS0FBVFlDQUNBSElBaHFJQW9vQXN3Qk5nSUFJQVlnQjJvZ0NpZ0NtQUkyQWdBZ0NrR3dBbW9oQ2lBT1FRUnFJZzRnQ1VjTkFBc01CQXNnR1NnQzBDc29BaFJCQVVZRVFDQUdCRUFnQ2lnQ0pDQUtLQUp3SUFvb0Fyd0JJQUVRYUF3R0N5QUtLQUkwSUFvb0FvQUJJQW9vQXN3QklBRVFhQXdGQ3lBR0JFQWdDaWdDSkNBS0tBSndJQW9vQXJ3QklBRVFad3dGQ3lBS0tBSTBJQW9vQW9BQklBb29Bc3dCSUFFUVp3d0VDeUEvSUFzMkFnQWdNMEVCUVlIUEFDQS9FQk1NQXd0QkFDRUdDd0pBSUFsQkEzRWlCMFVFUUNBR0lRNE1BUXNnQmlFT0EwQWdDeUFPUVFKMGFpQUtLQUlrTmdJQUlBNUJBV29oRGlBS1Fjd0FhaUVLSUJWQkFXb2lGU0FIUncwQUN3c2dCaUFKYTBGOFN3MEFJQXRCREdvaEJpQUxRUWhxSVFnZ0MwRUVhaUVQQTBBZ0N5QU9RUUowSWdkcUlBb29BaVEyQWdBZ0J5QVBhaUFLS0FKd05nSUFJQWNnQ0dvZ0NpZ0N2QUUyQWdBZ0JpQUhhaUFLS0FLSUFqWUNBQ0FLUWJBQ2FpRUtJQTVCQkdvaURpQUpSdzBBQ3dzZ0d5Z0NHQ2dDR0NnQ0lCb0NmeUFaS0FMb0t5RUhRUUFoRjBFQUlBbEJBM1FRR0NJT1JRMEFHZ0pBSUFGRkRRQWdDVVVOQUNBT0lBbEJBblJxSVJFZ0NVRjhjU0VOSUFsQkEzRWhHU0FKUVFGcklSQURRRUVBSVJWQkFDRUlJQkJCQTA4RVFBTkFJQTRnRlVFQ2RDSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlBNGdCa0VFY2lJUGFpQUxJQTlxS0FJQUtnSUFPQUlBSUE0Z0JrRUljaUlQYWlBTElBOXFLQUlBS2dJQU9BSUFJQTRnQmtFTWNpSUdhaUFHSUF0cUtBSUFLZ0lBT0FJQUlCVkJCR29oRlNBSVFRUnFJZ2dnRFVjTkFBc0xRUUFoQ2lBWkJFQURRQ0FPSUJWQkFuUWlCbW9nQmlBTGFpZ0NBQ29DQURnQ0FDQVZRUUZxSVJVZ0NrRUJhaUlLSUJsSERRQUxDMEVBSVFZZ0J5RVZBMEFnRVNBR1FRSjBJaFJxSWdoQkFEWUNBRU1BQUFBQUlZUUJRUUFoQ2tFQUlROGdFRUVDU3dSQUEwQWdDQ0FWS2dJQUlBNGdDa0VDZEdvaURDb0NBSlFnaEFHU0lvUUJPQUlBSUFnZ0ZTb0NCQ0FNS2dJRWxDQ0VBWklpaEFFNEFnQWdDQ0FWS2dJSUlBd3FBZ2lVSUlRQmtpS0VBVGdDQUNBSUlCVXFBZ3dnRENvQ0RKUWdoQUdTSW9RQk9BSUFJQXBCQkdvaENpQVZRUkJxSVJVZ0QwRUVhaUlQSUExSERRQUxDMEVBSVF3Z0dRUkFBMEFnQ0NBVktnSUFJQTRnQ2tFQ2RHb3FBZ0NVSUlRQmtpS0VBVGdDQUNBS1FRRnFJUW9nRlVFRWFpRVZJQXhCQVdvaURDQVpSdzBBQ3dzZ0N5QVVhaUlJSUFnb0FnQWlDRUVFYWpZQ0FDQUlJSVFCT0FJQUlBWkJBV29pQmlBSlJ3MEFDeUFYUVFGcUloY2dBVWNOQUFzTElBNFFGRUVCQ3lBTEVCUkZEUUlMSUJzb0FoUW9BZ0FpRUNnQ0VFVUVRRUVCSVNJTUFnc2dHeWdDSUNnQzBDc2lGVUc0Q0dvaEZDQVZRYlFJYWlFVElCc29Ba1FoRVNBUUtBSVVJUWNnR3lnQ0dDZ0NHQ0VJUVFBaEZ3TkFBa0FnRVFSQUlCRWdGMEVDZEdvb0FnQkZEUUVMSUFjb0Fod2lBU0FJS0FJa1FaZ0JiR29oQ3dKL0lCc29Ba0JGQkVBZ0N5Z0NsQUVnQ3lnQ2pBRnJJUVlnQ3lnQ2tBRWdDeWdDaUFGcklRRkJBQ0VKUVRRTUFRc2dBU0FIS0FJWVFaZ0JiR29pQmtHUUFXc29BZ0FnQ3lnQ0NDQUxLQUlBYXlJQklBWkJtQUZyS0FJQWFtc2hDU0FMS0FJTUlBc29BZ1JySVFaQkpBc2hEeUFJS0FJWUlRc0NmeUFJS0FJZ0JFQkJBU0FMUVFGcmRDSUxRUUZySVE1QkFDQUxhd3dCQzBGL0lBdDBRWDl6SVE1QkFBc2hEU0FCUlEwQUlBWkZEUUFnQnlBUGFpZ0NBQ0VpSUJVb0FoUkJBVVlFUUNBVUlCZEJ1QWhzSWd0cUlSWWdDeUFUYWlFWUlBRkJBWEVoTXlBQlFRSjBJUjBnQVVGOGNTSVBRUUowSVNNZ0R2MFJJWGdnRGYwUklYWkJBQ0VNSUFGQkJFa2hId05BQWtBQ1FBSkFJQjhOQUNBWUlCMGdJbXBKSUJZZ0lrdHhEUUFnSWlBamFpRVpJQlg5Q1FLMENDRjVRUUFoQ3dOQUlDSWdDMEVDZEdvaUNpQjJJSGtnQ3YwQUFnRDlyZ0VpZWlCNC9iWUJJSG9nZHYwNS9WTDlDd0lBSUF0QkJHb2lDeUFQUncwQUN5QVBJZ3NnQVVZTkFnd0JDeUFpSVJsQkFDRUxDeUFMUVFGeUlRb2dNd1JBSUJrZ0RTQVZLQUswQ0NBWktBSUFhaUlMSUE0Z0N5QU9TQnNnQ3lBTlNCczJBZ0FnR1VFRWFpRVpJQW9oQ3dzZ0FTQUtSZzBBQTBBZ0dTQU5JQlVvQXJRSUlCa29BZ0JxSWdvZ0RpQUtJQTVJR3lBS0lBMUlHellDQUNBWklBMGdGU2dDdEFnZ0dTZ0NCR29pQ2lBT0lBb2dEa2diSUFvZ0RVZ2JOZ0lFSUJsQkNHb2hHU0FMUVFKcUlnc2dBVWNOQUFzTElCa2dDVUVDZEdvaElpQU1RUUZxSWd3Z0JrY05BQXNNQVFzZ0RxMGhmQ0FOckNHQUFVRUFJUXdEUUVFQUlRc0RRQ0FpQW44Z0RpQWlLZ0lBSW9RQlF3QUFBRTllRFFBYUlBMGdoQUZEQUFBQXoxME5BQm9nRFNBVk5BSzBDQUovSUlRQmtDS0VBWXREQUFBQVQxMEVRQ0NFQWFnTUFRdEJnSUNBZ0hnTHJId2lmU0I4SUh3Z2ZWVWJweUI5SUlBQlV4c0xOZ0lBSUNKQkJHb2hJaUFMUVFGcUlnc2dBVWNOQUFzZ0lpQUpRUUowYWlFaUlBeEJBV29pRENBR1J3MEFDd3NnQjBITUFHb2hCeUFWUWJnSWFpRVZJQWhCTkdvaENFRUJJU0lnRjBFQmFpSVhJQkFvQWhCSkRRQUxEQUVMUVFBaElpQUZRUUZCaHhwQkFCQVRDeUEvUVJCcUpBQWdJa1VFUUNCTkVEUWdBQ0FBS0FJSVFZQ0FBbkkyQWdnZ0JVRUJRWmJaQUVFQUVCTU1BUXNDUUNBQ1JRMEFBbjhnQWlFSFFRQWhCZ0pBSUFBb0F1Z0JJZ3BCQVJCZElnRkJmMFlOQUNBQklBTkxEUUJCQVNBS0tBSVlJZ0VvQWhCRkRRRWFJQUVvQWhnaER5QUtLQUlVS0FJQUtBSVVJUmNEUUNBUEtBSVlJZ0ZCQjNFaEFpQUJRUU4ySVFNZ0Z5Z0NIQ0lHSUE4b0FpUkJtQUZzYWlFQkFuOGdDaWdDUUFSQUlBWWdGeWdDR0VHWUFXeHFJZ1pCa0FGcktBSUFJQUVvQWdnZ0FTZ0NBR3NpQ0NBR1FaZ0JheWdDQUdwcklRd2dBU2dDRENBQktBSUVheUVPUVNRTUFRc2dBU2dDbEFFZ0FTZ0NqQUZySVE0Z0FTZ0NrQUVnQVNnQ2lBRnJJUWhCQUNFTVFUUUxJQmRxS0FJQUlRRUNRQUpBQWtBQ1FBSkFRUVFnQXlBQ1FRQkhhaUlDSUFKQkEwWWJRUUZyRGdRQkFnUUFCQXNnRGtVTkF5QUlJQXhxSVFZZ0NFRUNkQ0VDSUE1QkJFOEVRQ0FPUVh4eElRdEJBQ0VJQTBBZ0J5QUJJQUlRRmlFSElBRWdCa0VDZENJRGFpSUpJQU5xSWd3Z0Eyb2lGU0FEYWlFQklBSWdCMm9nQ1NBQ0VCWWdBbW9nRENBQ0VCWWdBbW9nRlNBQ0VCWWdBbW9oQnlBSVFRUnFJZ2dnQzBjTkFBc0xRUUFoQ0NBT1FRTnhJZ05GRFFNRFFDQUhJQUVnQWhBV0lRY2dBU0FHUVFKMGFpRUJJQUlnQjJvaEJ5QUlRUUZxSWdnZ0EwY05BQXNNQXdzZ0RrVWdDRVZ5SVFJZ0R5Z0NJRVVOQVNBQ0RRSWdDRUVDZENFVklBaEJmSEVpQTBFQ2RDRVpRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0NHcEpJQUVnRldvZ0IwdHhEUUFnQXlBSGFpQUJJQmxxSVFaQkFDRUxBMEFnQnlBTGFpQUJJQXRCQW5ScS9RQUNBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBOQUFRSURBQUFBQUFBQUFBQUFBQUFBUDFhQUFBQUlBdEJCR29pQ3lBRFJ3MEFDeUVISUFNaUFpQUlSZzBDREFFTElBRWhCa0VBSVFJTFFRQWhDeUFJSUFJaUFXdEJCM0VpRFFSQUEwQWdCeUFHS0FJQU9nQUFJQUZCQVdvaEFTQUhRUUZxSVFjZ0JrRUVhaUVHSUF0QkFXb2lDeUFOUncwQUN3c2dBaUFJYTBGNFN3MEFBMEFnQnlBR0tBSUFPZ0FBSUFjZ0JpZ0NCRG9BQVNBSElBWW9BZ2c2QUFJZ0J5QUdLQUlNT2dBRElBY2dCaWdDRURvQUJDQUhJQVlvQWhRNkFBVWdCeUFHS0FJWU9nQUdJQWNnQmlnQ0hEb0FCeUFIUVFocUlRY2dCa0VnYWlFR0lBRkJDR29pQVNBSVJ3MEFDd3NnQmlBTVFRSjBhaUVCSUFsQkFXb2lDU0FPUncwQUN3d0NDeUFPUlNBSVJYSWhBaUFQS0FJZ0JFQWdBZzBDSUFoQkFuUWhGU0FJUVFGMElSa2dDRUY4Y1NJRFFRSjBJUTBnQTBFQmRDRVFRUUFoQ1FOQUFrQUNRQUpBSUFoQkJFa05BQ0FCSUFjZ0dXcEpJQUVnRldvZ0IwdHhEUUFnQVNBTmFpRUdJQWNnRUdwQkFDRUxBMEFnQnlBTFFRRjBhaUFCSUF0QkFuUnEvUUFDQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkFBRUVCUWdKREEwQUFRQUJBQUVBQWYxYkFRQUFJQXRCQkdvaUN5QURSdzBBQ3lFSElBTWlBaUFJUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ3lBSUlBSWlBV3RCQjNFaUVRUkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBdEJBV29pQ3lBUlJ3MEFDd3NnQWlBSWEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUlSdzBBQ3dzZ0JpQU1RUUowYWlFQklBbEJBV29pQ1NBT1J3MEFDd3dDQ3lBQ0RRRWdDRUVDZENFVklBaEJBWFFoR1NBSVFYeHhJZ05CQW5RaERTQURRUUYwSVJCQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFaYWtrZ0FTQVZhaUFIUzNFTkFDQUJJQTFxSVFZZ0J5QVFha0VBSVFzRFFDQUhJQXRCQVhScUlBRWdDMEVDZEdyOUFBSUEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBBQVFRRkNBa01EUUFCQUFFQUFRQUIvVnNCQUFBZ0MwRUVhaUlMSUFOSERRQUxJUWNnQXlJQ0lBaEdEUUlNQVFzZ0FTRUdRUUFoQWd0QkFDRUxJQWdnQWlJQmEwRUhjU0lSQkVBRFFDQUhJQVlvQWdBN0FRQWdBVUVCYWlFQklBZEJBbW9oQnlBR1FRUnFJUVlnQzBFQmFpSUxJQkZIRFFBTEN5QUNJQWhyUVhoTERRQURRQ0FISUFZb0FnQTdBUUFnQnlBR0tBSUVPd0VDSUFjZ0JpZ0NDRHNCQkNBSElBWW9BZ3c3QVFZZ0J5QUdLQUlRT3dFSUlBY2dCaWdDRkRzQkNpQUhJQVlvQWhnN0FRd2dCeUFHS0FJY093RU9JQWRCRUdvaEJ5QUdRU0JxSVFZZ0FVRUlhaUlCSUFoSERRQUxDeUFHSUF4QkFuUnFJUUVnQ1VFQmFpSUpJQTVIRFFBTERBRUxJQUlOQUNBSVFRSjBJUlVnQ0VGOGNTSURRUUowSVJsQkFDRUpBMEFDUUFKQUFrQWdDRUVFU1EwQUlBRWdCeUFJYWtrZ0FTQVZhaUFIUzNFTkFDQURJQWRxSUFFZ0dXb2hCa0VBSVFzRFFDQUhJQXRxSUFFZ0MwRUNkR3I5QUFJQS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9RMEFCQWdNQUFBQUFBQUFBQUFBQUFBQS9Wb0FBQUFnQzBFRWFpSUxJQU5IRFFBTElRY2dBeUlDSUFoR0RRSU1BUXNnQVNFR1FRQWhBZ3RCQUNFTElBZ2dBaUlCYTBFSGNTSU5CRUFEUUNBSElBWW9BZ0E2QUFBZ0FVRUJhaUVCSUFkQkFXb2hCeUFHUVFScUlRWWdDMEVCYWlJTElBMUhEUUFMQ3lBQ0lBaHJRWGhMRFFBRFFDQUhJQVlvQWdBNkFBQWdCeUFHS0FJRU9nQUJJQWNnQmlnQ0NEb0FBaUFISUFZb0FndzZBQU1nQnlBR0tBSVFPZ0FFSUFjZ0JpZ0NGRG9BQlNBSElBWW9BaGc2QUFZZ0J5QUdLQUljT2dBSElBZEJDR29oQnlBR1FTQnFJUVlnQVVFSWFpSUJJQWhIRFFBTEN5QUdJQXhCQW5ScUlRRWdDVUVCYWlJSklBNUhEUUFMQ3lBWFFjd0FhaUVYSUE5Qk5Hb2hEMEVCSVFZZ2RVRUJhaUoxSUFvb0FoZ29BaEJKRFFBTEN5QUdDMFVOQVNCTktBTGNLeUlCUlEwQUlBRVFGQ0JOUWdBM0F0d3JDeUFBSUFBdEFGeEIvZ0Z4T2dCY0lBQWdBQ2dDQ0VIL2ZuRTJBZ2hCQVNGbElBUXBBd2dpZkZBRWZrSUFCU0I4SUFRcEF6aDlDMUFnQUNnQ0NDSUJRY0FBUm5FTkFDQUJRWUFDUmcwQUlBUWdURUVLYWtFQ0lBVVFIVUVDUndSQUlBVkJBVUVDSUFBb0F0QUJHMEdERTBFQUVCTWdBQ2dDMEFGRklXVU1BUXNnVEVFS2FpQk1RUXhxUVFJUUZTQk1LQUlNSWdGQmtQOERSZzBBSUFGQjJmOERSZ1JBSUFCQmdBSTJBZ2dnQUVFQU5nTGtBUXdCQ3lBRUtRTUlJbnhRQkg1Q0FBVWdmQ0FFS1FNNGZRdFFCRUFnQUVIQUFEWUNDQ0FGUVFKQnZzRUFRUUFRRXd3QkMwRUFJV1VnQlVFQlFjM0FBRUVBRUJNTElFeEJFR29rQUNCbEN3c0FJQUFFUUNBQUVCUUxDN1FCQVFGL0lBQW9BZ3hGQkVBZ0FpQUFLQUlrSUFFUkF3QVBDd0pBUVFnUUdDSURSUTBBSUFNZ0FqWUNCQ0FESUFFMkFnQkJDQkFZSWdGRkJFQWdBeEFVRHdzZ0FTQUROZ0lBSUFBZ0FDZ0NCRUhrQUd3aUFqWUNLQU5BSUFBb0FoZ2dBa29OQUFzZ0FTQUFLQUlVTmdJRUlBQWdBVFlDRkNBQUlBQW9BaGhCQVdvMkFoZ2dBQ2dDSENJQlJRMEFJQUVvQWdCQkFEWUNDQ0FBSUFFb0FnUTJBaHdnQUNBQUtBSWdRUUZyTmdJZ0lBRVFGQXNMK2dJQkJIOENRQ0FBUlEwQUlBQW9BcXdvSWdFRVFDQUFLQUtvS0NJQ0JFQkJBQ0VCQTBBZ0FDZ0NyQ2dnQVVFRGRHb29BZ0FpQXdSQUlBTVFGQ0FBS0FLb0tDRUNDeUFCUVFGcUlnRWdBa2tOQUFzZ0FDZ0NyQ2doQVFzZ0FFRUFOZ0tvS0NBQkVCUWdBRUVBTmdLc0tBc2dBQ2dDdENnaUFRUkFJQUVRRkNBQVFRQTJBclFvQ3lBQUtBTFFLeUlCQkVBZ0FSQVVJQUJCQURZQzBDc0xJQUFvQXV3cklnRUVRQ0FCRUJRZ0FFRUFOZ0xzS3dzZ0FDZ0M2Q3NpQVFSQUlBRVFGQ0FBUVFBMkF1Z3JDeUFBS0FMOEt5SUJCRUFnQVJBVUlBQkJBRFlDaEN3Z0FFSUFOd0w4S3dzZ0FDZ0M4Q3NpQVFSQUlBQW9BdlFySWdNRWYwRUFJUUlEUUNBQktBSU1JZ1FFUUNBRUVCUWdBVUVBTmdJTUlBQW9BdlFySVFNTElBRkJGR29oQVNBQ1FRRnFJZ0lnQTBrTkFBc2dBQ2dDOENzRklBRUxFQlFnQUVFQU5nTHdLd3NnQUNnQzVDc2lBUVJBSUFFUUZDQUFRUUEyQXVRckN5QUFLQUxjS3lJQlJRMEFJQUVRRkNBQVFnQTNBdHdyQ3d1d0J3SUxmd0YrSUFBb0FoQWlDRUVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlVSWdOQkJFNEVRQ0FBS0FJQUlnSkJBMnNvQWdBaEFTQUFJQU5CQkdzaUF6WUNGQ0FBSUFKQkJHczJBZ0FNQVFzZ0EwRUFUQVJBREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkF3QkN5QURRZjcvLy84SGNTRUpRUmdoQkFOQUlBQWdBa0VCYXlJR05nSUFJQUl0QUFBZ0FDQUNRUUpySWdJMkFnQWdBQ0FEUVFGck5nSVVJQVl0QUFBaEJpQUFJQU5CQW1zaUF6WUNGQ0FFZENBQmNpQUdJQVJCQ0d0MGNpRUJJQVJCRUdzaEJDQUZRUUpxSWdVZ0NVY05BQXNMQkVBZ0FDQUNRUUZyTmdJQUlBSXRBQUFnQUNBRFFRRnJOZ0lVSUFSMElBRnlJUUVMUVFBaEF3c2dBQ2dDR0NFQ0lBQWdBVUgvQVhFaUNVR1BBVXMyQWhnZ0FFRUhRUWdnQVVHQWdJRDRCM0ZCZ0lDQStBZEdHMEVJSUFJYklnSkJDRUVIUVFnZ0FVR0FnUHdEY1VHQWdQd0RSaHNnQVVILy8vLy9lRTBiYWlJRVFRaEJCMEVJSUFGQmdQNEJjVUdBL2dGR0d5QUJRUkIyUWY4QmNTSUZRWThCVFJ0cUlnWkJDRUVIUVFnZ0FVSC9BSEZCL3dCR0d5QUJRUWgyUWY4QmNTSUhRWThCVFJzZ0NHcHFJZ28yQWhBZ0FDQUFLUU1JSUFVZ0FuUWdBVUVZZG5JZ0J5QUVkSElnQ1NBR2RIS3RJQWl0aG9RaUREY0RDQ0FLUVI5TkJFQUNRQ0FEUVFST0JFQWdBQ2dDQUNJQ1FRTnJLQUlBSVFFZ0FDQURRUVJyTmdJVUlBQWdBa0VFYXpZQ0FBd0JDeUFEUVFCTUJFQkJBQ0VCREFFTElBTkJBWEVnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkVFQUlRRU1BUXNnQTBIKy8vLy9CM0VoQmtFWUlRUkJBQ0VCUVFBaEJRTkFJQUFnQWtFQmF5SUhOZ0lBSUFJdEFBQWdBQ0FDUVFKcklnSTJBZ0FnQUNBRFFRRnJOZ0lVSUFjdEFBQWhCeUFBSUFOQkFtc2lBellDRkNBRWRDQUJjaUFISUFSQkNHdDBjaUVCSUFSQkVHc2hCQ0FGUVFKcUlnVWdCa2NOQUFzTFJRMEFJQUFnQWtFQmF6WUNBQ0FDTFFBQUlBQWdBMEVCYXpZQ0ZDQUVkQ0FCY2lFQkN5QUFJQUZCL3dGeElnSkJqd0ZMTmdJWUlBQkJDRUVIUVFnZ0FVR0FnSUQ0QjNGQmdJQ0ErQWRHR3lBSlFZOEJUUnNpQTBFSVFRZEJDQ0FCUVlDQS9BTnhRWUNBL0FOR0d5QUJRZi8vLy85NFRSdHFJZ1JCQ0VFSFFRZ2dBVUdBL2dGeFFZRCtBVVliSUFGQkVIWkIvd0Z4SWdWQmp3Rk5HMm9pQ0VFSVFRZEJDQ0FCUWY4QWNVSC9BRVliSUFGQkNIWkIvd0Z4SWdsQmp3Rk5HeUFLYW1vMkFoQWdBQ0FGSUFOMElBRkJHSFp5SUFrZ0JIUnlJQUlnQ0hSeXJTQUtyWVlnRElRaUREY0RDQXNnREtjTHdSUUNHMzhHZXlBQUtBSUlJZ29nQUNnQ0JHb2hDQUpBSUFBb0FneEZCRUFnQ0VFQ1NBMEJJQU5CQUV3TkFTQUFLQUlBSWdVZ0NFRUVheUlHUVFGMklneEJBblFpQ1NBQklBcEJBblJxSWdjZ0EwRUNkQ0lFYW1wQkJHcEpJQVVnREVFRGRHcEJDR29pQUNBSFFRUnFTM0VnQlNBQklBUnFJQWxxUVFScVNTQUJRUVJxSUFCSmNYSWhFaUFJUVFSSkloUWdBa0VCUjNJaEZTQUNRUUZHSUFaQkJVdHhJUllnQ0VIOC8vLy9CM0VoRXlBSVFRRnhJUmNnQ2tFQmFpRVBJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWlFWklBVWdDRUVCYXlJQVFRSjBhaUVhSUF4QkFXb2lHMEY4Y1NJUVFRRjBJUXNnQWlBS2JFRUNkQ0VjSUFCQkFYWWdBbXhCQW5RaEhRTkFJQUVvQWdBZ0FTQWNhaWdDQUNJSlFRRnFRUUYxYXlFSEFrQWdGQVJBSUFraEJFRUFJUVlNQVF0QkFDRUdBa0FDZjBFQUlCWkZEUUFhUVFBZ0VnMEFHaUFKL1JFaElDQUgvUkVoSC8wTUFBQUFBQUlBQUFBRUFBQUFCZ0FBQUNFalFRQWhBQU5BSUFFZ0FFRUNkR3I5QUFJRUlTSWdBU0FBSUE5cVFRSjBhdjBBQWdBaElTQUZJQUJCQTNScUlnUWdILzFhQWdBRElBUkJDR29nSWlBaElDQWdJZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlpL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlJUDFhQWdBQUlBUkJFR29nSVAxYUFnQUJJQVJCR0dvZ0lQMWFBZ0FDSUFVZ0kvME1BUUFBQUFFQUFBQUJBQUFBQVFBQUFQMVFJaVQ5R3dCQkFuUnFJQ0FnSHlBZy9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYi9hNEJRUUg5ckFFZ0l2MnVBU0lmL1ZvQ0FBQWdCU0FrL1JzQlFRSjBhaUFmL1ZvQ0FBRWdCU0FrL1JzQ1FRSjBhaUFmL1ZvQ0FBSWdCU0FrL1JzRFFRSjBhaUFmL1ZvQ0FBTWdJLzBNQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBUDJ1QVNFaklDQWhIeUFoSVNBZ0FFRUVhaUlBSUJCSERRQUxJQ0Q5R3dNaEJDQWYvUnNESVFjZ0VDQWJSZzBCSUFzaEJpQUVJUWtnRUFzaEFBTkFJQUVnQUVFQmFpSUtJQUpzUVFKMGFpZ0NBQ0VlSUFFZ0FDQVBhaUFDYkVFQ2RHb29BZ0FoQkNBRklBWkJBblJxSWc0Z0J6WUNBQ0FPSUFjZ0hpQUVJQWxxUVFKcVFRSjFheUlIYWtFQmRTQUphallDQkNBR1FRSnFJUVlnQUNBTVJ5QUVJUWtnQ2lFQURRQUxEQUVMSUFzaEJnc2dCU0FHUVFKMGFpQUhOZ0lBUVh3aEFDQVhCSDhnR2lBQklCMXFLQUlBSUFSQkFXcEJBWFZySWdBMkFnQWdBQ0FIYWtFQmRTRUhRWGdGUVh3TElCbHFJQVFnQjJvMkFnQkJBQ0VHUVFBaEFFRUFJUVFDUUNBVklCZ2dEVUVDZEdwQkVFbHlSUVJBQTBBZ0FTQUFRUUowSWdScUlBUWdCV3I5QUFJQS9Rc0NBQ0FBUVFScUlnQWdFMGNOQUFzZ0V5SUVJQWhHRFFFTElBUWhBQ0FSQkVBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FFRUJhaUVBSUFaQkFXb2lCaUFSUncwQUN3c2dCQ0FJYTBGOFN3MEFBMEFnQVNBQUlBSnNRUUowYWlBRklBQkJBblJxS0FJQU5nSUFJQUVnQUVFQmFpSUVJQUpzUVFKMGFpQUZJQVJCQW5ScUtBSUFOZ0lBSUFFZ0FFRUNhaUlFSUFKc1FRSjBhaUFGSUFSQkFuUnFLQUlBTmdJQUlBRWdBRUVEYWlJRUlBSnNRUUowYWlBRklBUkJBblJxS0FJQU5nSUFJQUJCQkdvaUFDQUlSdzBBQ3dzZ0FVRUVhaUVCSUExQkFXb2lEU0FEUncwQUN3d0JDd0pBQWtBQ1FDQUlRUUZyRGdJQUFRSUxJQU5CQUV3TkFrRUFJUUlDUUNBRFFRUkpCRUFnQVNFQURBRUxJQUVnQTBIOC8vLy9CM0VpQWtFQ2RHb2hBQU5BSUFFZ0JrRUNkR29pQkNBRS9RQUNBQ0lmL1JzQVFRSnQvUkVnSC8wYkFVRUNiZjBjQVNBZi9Sc0NRUUp0L1J3Q0lCLzlHd05CQW0zOUhBUDlDd0lBSUFaQkJHb2lCaUFDUncwQUN5QUNJQU5HRFFNTEEwQWdBQ0FBS0FJQVFRSnROZ0lBSUFCQkJHb2hBQ0FDUVFGcUlnSWdBMGNOQUFzTUFnc2dBMEVBVEEwQklBQW9BZ0FoQ1NBQ0lBcHNRUUowSVFjRFFDQUpJQUVvQWdBZ0FTQUhhaUlFS0FJQVFRRnFRUUYxYXlJQU5nSUVJQWtnQUNBRUtBSUFhaUlBTmdJQUlBRWdBRFlDQUNBQklBSkJBblJxSUFrb0FnUTJBZ0FnQVVFRWFpRUJJQVpCQVdvaUJpQURSdzBBQ3d3QkN5QUlRUU5JRFFBZ0EwRUFUQTBBSUFBb0FnQWlCU0FJSUFoQkFYRWlGRVVpQm10QkJHc2lDVUVCZGlJTFFRSjBJZ2NnQVNBRFFRSjBJZ0JxYWtrZ0JTQUxRUU4wYWtFTWFpSUVJQUZCQkdwTGNTQUZRUVJxSUFBZ0FTQUtRUUowYWlJQWFpQUhha0VJYWtrZ0FFRUlhaUFFU1hGeUlSVWdBa0VCUnlBSVFRUkpjaUVXSUFKQkFVWWdDVUVGUzNFaEZ5QUlRZnovLy84SGNTRVFJQWhCQTNFaEVTQUJJQVZySVJnZ0JTQUlRUUowYWtFRWF5RVpJQVVnQ0VFQ2F5SUFRUUowYWlFYUlBdEJBV29pRWtGOGNTSU1RUUZ5SVJNZ0RFRUJkRUVCY2lFTElBSWdDbXhCQW5RaEd5QUFJQVpyUVFKSklSd2dDRUVCZGtFQmF5QUNiRUVDZENFZEEwQWdCU0FCS0FJQUlBRWdHMm9pRHlBQ1FRSjBhaWdDQUNJSklBOG9BZ0FpQUdwQkFtcEJBblZySWdjZ0FHbzJBZ0JCQVNFRUFrQWdIQVJBSUFraEJnd0JDd0pBQW45QkFTQVhSUTBBR2tFQklCVU5BQm9nQ2YwUklSOGdCLzBSSVNCQkFDRUFBMEFnQlNBQVFRTjBhaUlISUFFZ0FFRUNkQ0lFYXYwQUFnUWdIeUFFSUE5cS9RQUNDQ0lmL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iSWlJZ0gvMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCSWlFZ0lTQWdJQ0g5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHY5cmdGQkFmMnNBU0FpL2E0QklpTDlEUVFGQmdjWUdSb2JDQWtLQ3h3ZEhoLzlDd0lVSUFjZ0lDQWkvUTBNRFE0UEVCRVNFd0FCQWdNVUZSWVhJQ0g5RFFBQkFnTUVCUVlIRUJFU0V3d05EZy85Q3dJRUlDRWhJQ0FBUVFScUlnQWdERWNOQUFzZ0gvMGJBeUVHSUNEOUd3TWhCeUFNSUJKR0RRRWdDeUVFSUFZaENTQVRDeUVBQTBBZ0FTQUFJQUpzUVFKMGFpZ0NBQ0VlSUE4Z0FFRUJhaUlLSUFKc1FRSjBhaWdDQUNFR0lBVWdCRUVDZEdvaURpQUhOZ0lBSUE0Z0J5QWVJQVlnQ1dwQkFtcEJBblZySWdkcVFRRjFJQWxxTmdJRUlBUkJBbW9oQkNBQUlCSkhJQW9oQUNBR0lRa05BQXNNQVFzZ0N5RUVDeUFZSUExQkFuUnFJUWtnQlNBRVFRSjBhaUFITmdJQUFrQWdGRVVFUUNBYUlBRWdIV29vQWdBZ0JrRUJha0VCZFdzaUFDQUhha0VCZFNBR2FqWUNBQXdCQ3lBR0lBZHFJUUFMSUJrZ0FEWUNBRUVBSVFaQkFDRUFRUUFoQkFKQUlCWWdDVUVRU1hKRkJFQURRQ0FCSUFCQkFuUWlCR29nQkNBRmF2MEFBZ0Q5Q3dJQUlBQkJCR29pQUNBUVJ3MEFDeUFRSWdRZ0NFWU5BUXNnQkNFQUlCRUVRQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FBUVFGcUlRQWdCa0VCYWlJR0lCRkhEUUFMQ3lBRUlBaHJRWHhMRFFBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUZxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFKcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQVNBQVFRTnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FFRUVhaUlBSUFoSERRQUxDeUFCUVFScUlRRWdEVUVCYWlJTklBTkhEUUFMQ3dzekFRRi9Jd0JCRUdzaUFTUUFJQUFFZnlBQlFReHFRU0FnQUJCNUlRQkJBQ0FCS0FJTUlBQWJCVUVBQ3lBQlFSQnFKQUFMR3dFQmZ5QUFCRUFnQUNnQ0NDSUJCRUFnQVJBVUN5QUFFQlFMQ3pFQkFuOUJBVUVNRUJjaUFBUkFJQUJCQ2pZQ0JDQUFRUXBCQkJBWElnRTJBZ2dnQVFSQUlBQVBDeUFBRUJRTFFRQUxTQUVDZndKL0lBRkJIMDBFUUNBQUtBSUFJUUlnQUVFRWFnd0JDeUFCUVNCcklRRWdBQXNvQWdBaEF5QUFJQUlnQVhRMkFnQWdBQ0FESUFGMElBSkJJQ0FCYTNaeU5nSUVDNjhDQVFaL0l3QkI4QUZySWdZa0FDQUdJQUkyQXV3QklBWWdBVFlDNkFFZ0JpQUFOZ0lBSUFSRklRa0NRQUpBQWtBQ1FDQUJRUUZIQkVBZ0FDRUhRUUVoQ0F3QkN5QUFJUWRCQVNFSUlBSU5BQ0FBSVFRTUFRc0RRQ0FISUFVZ0EwRUNkR29pQ2lnQ0FHc2lCQ0FBRUN0QkFFd0VRQ0FISVFRTUFnc2dDVUYvY3lFTFFRRWhDUUpBSUFzZ0EwRUNTSEpCQVhGRkJFQWdDa0VJYXlnQ0FDRUtJQWRCQ0dzaUN5QUVFQ3RCQUU0TkFTQUxJQXBySUFRUUswRUFUZzBCQ3lBR0lBaEJBblJxSUFRMkFnQWdCa0hvQVdvZ0FTQUNFSGNpQVJBOElBaEJBV29oQ0NBQklBTnFJUU1nQmlnQzdBRWhBaUFFSVFjZ0JpZ0M2QUVpQVVFQlJ3MEJJQUlOQVF3REN3c2dCeUVFREFFTElBbEZEUUVMSUFZZ0NCQjJJQVFnQXlBRkVFUUxJQVpCOEFGcUpBQUxTd0VDZnlBQUtBSUVJUUlnQUFKL0lBRkJIMDBFUUNBQUtBSUFJUU1nQWd3QkN5QUJRU0JySVFFZ0FpRURRUUFMSWdJZ0FYWTJBZ1FnQUNBQ1FTQWdBV3QwSUFNZ0FYWnlOZ0lBQ3k4QkFYOGdBQVJBSUFBb0FnUWlBUVJBSUFBb0FnQWdBUkVDQUFzZ0FDZ0NJQkFVSUFCQkFEWUNJQ0FBRUJRTEN5b0FJQUFFUUNBQUtBSXdJQUJCRkVFUUlBQW9Ba3diYWlnQ0FCRUNBQ0FBUVFBMkFqQWdBQkFVQ3d1R0F3SUZmd3ArSXdCQklHc2lBeVFBQWtBZ0FDZ0NFQ0lGUlFSQVFRRWhBZ3dCQ3dKQUlBQTBBZ0FpQjBJQVV3MEFJQUEwQWdRaUNFSUFVdzBBSUFBMEFnZ2lDVUlBVXcwQUlBQTBBZ3dpQ2tJQVV3MEFJQUFvQWhnaEFDQUhRZ0Y5SVF3Z0NFSUJmU0VOSUFsQ0FYMGhDU0FLUWdGOUlRb0RRQ0FBSUF3Z0FDZ0NBQ0lDclNJSGZDQUhnQ0lMUGdJUUlBQWdEU0FBS0FJRUlnYXRJZ2Q4SUFlQUlnNCtBaFJDQVNBQU5RSW9JZ2VHSWc5Q0FYMGlDQ0FKSUFLc0loQjhJQkIveEh3Z0I0ZW5JQWdnQzhSOElBZUhwMnNpQWtFQVNBUkFJQU1nQWpZQ0JDQURJQVEyQWdBZ0FVRUJRYUhwQUNBREVCTkJBQ0VDREFNTElBQWdBallDQ0NBSUlBb2dCcXdpQzN3Z0MzL0VmQ0FIaDZjZ0RzUWdEM3hDQVgwZ0I0ZW5heUlDUVFCSUJFQWdBeUFDTmdJVUlBTWdCRFlDRUNBQlFRRkI1dWtBSUFOQkVHb1FFMEVBSVFJTUF3c2dBQ0FDTmdJTUlBQkJOR29oQUVFQklRSWdCRUVCYWlJRUlBVkhEUUFMREFFTElBRkJBVUdiTkVFQUVCTUxJQU5CSUdva0FDQUNDLzBHQVFaL0lBQUVRQUpBSUFBb0FnQUVRQ0FBS0FJTUlnRUVRQ0FCRURRZ0FDZ0NEQkFVSUFCQkFEWUNEQXNnQUNnQ0VDSUJCRUFnQVJBVUlBQkNBRGNERUFzZ0FDZ0NRQkFVSUFCQ0FEY0NQQ0FBS0FKSUVCUWdBRUVBTmdKSUlBQW9BbGdRRkNBQVFRQTJBbGdNQVFzZ0FDZ0NMQ0lCQkVBZ0FSQVVJQUJCQURZQ0xBc2dBQ2dDSUNJQkJFQWdBUkFVSUFCQ0FEY0RJQXNnQUNnQ05DSUJSUTBBSUFFUUZDQUFRZ0EzQWpRTElBQW9BdWdCRUY0Z0FDZ0N0QUVpQVFSQUlBQW9Bb0FCSUFBb0FvUUJiQ0lEQkg4RFFDQUJFRFFnQVVHTUxHb2hBU0FDUVFGcUlnSWdBMGNOQUFzZ0FDZ0N0QUVGSUFFTEVCUWdBRUVBTmdLMEFRc2dBQ2dDakFFaUFRUkFJQUFvQW9nQklnSUVRRUVBSVFFRFFDQUFLQUtNQVNBQlFRTjBhaWdDQUNJREJFQWdBeEFVSUFBb0FvZ0JJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUtNQVNFQkN5QUFRUUEyQW9nQklBRVFGQ0FBUVFBMkFvd0JDeUFBS0FLZ0FSQVVJQUJCQURZQ2tBRWdBRUVBTmdLZ0FTQUFLQUo4RUJRZ0FFRUFOZ0o4SUFBdEFOUUJRUUp4UlFSQUlBQW9Bc0FCRUJRTElBQkI2QUJxUVFCQjhBQVFHUm9nQUNnQzJBRVFPQ0FBUVFBMkF0Z0JJQUFvQXR3QkVEZ2dBRUVBTmdMWUFTQUFLQUxnQVNJQkJFQWdBU2dDSENJQ0JFQWdBaEFVSUFGQkFEWUNIQXNnQVNnQ0tDSUNCRUFnQVNnQ0pBUkFBMEFnQWlBRlFTaHNJZ05xS0FJa0lnUUVRQ0FFRUJRZ0FTZ0NLQ0lDSUFOcVFRQTJBaVFMSUFJZ0Eyb29BaEFpQkFSQUlBUVFGQ0FCS0FJb0lnSWdBMnBCQURZQ0VBc2dBaUFEYWlnQ0dDSUVCRUFnQkJBVUlBRW9BaWdpQWlBRGFrRUFOZ0lZQ3lBRlFRRnFJZ1VnQVNnQ0pFa05BQXNMSUFJUUZDQUJRUUEyQWlnTElBRVFGQXNnQUVFQU5nTGdBU0FBS0FKZ0VDVWdBRUVBTmdKZ0lBQW9BbVFRSlNBQVFRQTJBbVFnQUNnQzdBRWlBd1JBQWtBZ0F5Z0NDRVVOQUNBREtBSU1CRUFnQTBFQU5nSW9BMEFnQXlnQ0dFRUFTZzBBQ3dzZ0EwRUJOZ0lRSUFNb0FnQVFGQ0FES0FJY0lnSkZEUUFEUUNBQ0tBSUVJUUVnQWhBVUlBTWdBVFlDSENBQklnSU5BQXNMSUFNb0FpUWlBZ1JBSUFJb0FnUWlCVUVBU2dSQVFRQWhBUU5BSUFJb0FnQWdBVUVNYkdvaUJDZ0NDQ0lHQkVBZ0JDZ0NCQ0FHRVFJQUlBSW9BZ1FoQlFzZ0FVRUJhaUlCSUFWSURRQUxDeUFDS0FJQUVCUWdBaEFVQ3lBREVCUUxJQUJCQURZQzdBRWdBQkFVQ3d2bUF3SUlmd1IrSUFBb0FoUW9BZ0FvQWhRZ0FVSE1BR3hxSWdrb0Fnd2lDQ0FBS0FJWUtBSVlJQUZCTkd4cUlnbzFBZ1FpRUVJQmZTSVNJQUExQWp4OElCQ0FweUlMSUFnZ0Mwa2JJUXdnQ1NnQ0NDSUlJQW8xQWdBaUVVSUJmU0lUSUFBMUFqaDhJQkdBcHlJS0lBZ2dDa2tiSVFvZ0NTZ0NCQ0lJSUJJZ0FEVUNOSHdnRUlDbklnc2dDQ0FMU3hzaEN5QUpLQUlBSWdnZ0V5QUFOUUl3ZkNBUmdLY2lEU0FJSUExTEd5RU5RUUFoQ0NBQUtBSWdLQUxRS3lBQlFiZ0liR29vQWhRaERnSkFJQWtvQWhSQkFDQUNhMEYvSUFJYmFpSUNSUVJBSUFvaEFDQU5JUWdnQ3lFQkRBRUxJQU5CQVhFZ0FrRUJheUlQZENJSklBMUpCRUFnRFNBSmE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRZ0xRUUFoQUVFQUlRRWdBMEVCZGlBUGRDSURJQXRKQkVBZ0N5QURhNjFDZnlBQ3JTSVFoa0ovaFh3Z0VJaW5JUUVMSUFrZ0Nra0VRQ0FLSUFscnJVSi9JQUt0SWhDR1FuK0ZmQ0FRaUtjaEFBc2dBeUFNVHdSQVFRQWhEQXdCQ3lBTUlBTnJyVUovSUFLdEloQ0dRbitGZkNBUWlLY2hEQXNnQkVGL0lBQkJBa0VESUE1QkFVWWJJZ0pxSWdNZ0FDQURTeHRKSUFWQmZ5QUNJQXhxSWdBZ0FDQU1TUnRKY1NBR0lBZ2dBbXNpQUVFQUlBQWdDRTBiUzNFZ0J5QUJJQUpySWdCQkFDQUFJQUZORzB0eEM2SUJBUVovSUFBRVFDQUFLQUlFSWdJRVFDQUNFQlFnQUVFQU5nSUVDeUFCQkVBZ0FDRUNBMEFnQWlnQ3lBRWlBd1JBUVFBaEJTQUNLQUxFQVNJRUJIOERRQ0FES0FJTUlnWUVRQ0FHRUJRZ0EwRUFOZ0lNSUFJb0FzUUJJUVFMSUFOQkVHb2hBeUFGUVFGcUlnVWdCRWtOQUFzZ0FpZ0N5QUVGSUFNTEVCUWdBa0VBTmdMSUFRc2dBa0h3QVdvaEFpQUhRUUZxSWdjZ0FVY05BQXNMSUFBUUZBc0x3QmdDRzM4RGV5QUNRUWRzSVE4Z0FrRUdiQ0VRSUFKQkJXd2hFU0FDUVFKMElRd2dBa0VEYkNFU0lBSkJBWFFoRXlBQUtBSUFJZ29nQUNnQ0RDSVpRUVYwSWdScUlRWWdDaUFFYXlBQUtBSVFJUVVnQUNnQ0hDRUxJQUFvQWhRaEJ5QUFLQUlJSVEwQ1FBSkFBa0FDUUFKQUFrQUNRQ0FEUVFoSkRRQWdBVUVQY1EwQUlBWkJEM0ZGRFFFTElBVWdCMDhOQlFKQUFrQWdBMEVCYXc0Q0FBRURDeUFISUFWcklnaEJGMDBOQlNBQklBVkJBblJxSVFrZ0dVRUZkQ0lFSUFvZ0JVRUdkR3BxSUFFZ0IwRUNkR3BKQkVBZ0NTQUtJQWRCQm5ScUlBUnFRVHhyU1EwR0N5QUYvUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaElDQUZJQWhCZkhFaURtb2hCVUVBSVFRRFFDQUdJQ0JCQnYyckFTSWYvUnNBYWlBSklBUkJBblJxL1FBQ0FDSWgvUjhBT0FJQUlBWWdILzBiQVdvZ0lmMGZBVGdDQUNBR0lCLzlHd0pxSUNIOUh3STRBZ0FnQmlBZi9Sc0RhaUFoL1I4RE9BSUFJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUVRUVJxSWdRZ0RrY05BQXNnQ0NBT1J3MEZEQVlMSUFFZ0FrRUNkR29oQ0NBSElBVnJJZzVCRzAwTkFpQVpRUVYwSWdRZ0NpQUZRUVowYW1vaUNTQUJJQUlnQjJwQkFuUnFTU0FLSUFkQkJuUnFJQVJxUVRocklnUWdBU0FDSUFWcVFRSjBha3R4RFFJZ0NTQUJJQWRCQW5ScVNTQUJJQVZCQW5ScUlBUkpjUTBDSUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VnSUFVZ0RrRjhjU0lVYWlFRVFRQWhDUU5BSUFZZ0lFRUcvYXNCSWgvOUd3QnFJaFVnQVNBRklBbHFRUUowSWhacS9RQUNBQ0loL1I4QU9BSUFJQVlnSC8wYkFXb2lGeUFoL1I4Qk9BSUFJQVlnSC8wYkFtb2lHQ0FoL1I4Q09BSUFJQVlnSC8wYkEyb2lHaUFoL1I4RE9BSUFJQlVnQ0NBV2F2MEFBZ0FpSC8wZkFEZ0NCQ0FYSUIvOUh3RTRBZ1FnR0NBZi9SOENPQUlFSUJvZ0gvMGZBemdDQkNBZy9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJU0FnQ1VFRWFpSUpJQlJIRFFBTElBNGdGRWNOQXd3RkN5QUZJQWRQRFFRZ0FTQVBRUUowYWlFSklBRWdFRUVDZEdvaERpQUJJQkZCQW5ScUlSUWdBU0FNUVFKMGFpRVZJQUVnRWtFQ2RHb2hGaUFCSUJOQkFuUnFJUmNnQVNBQ1FRSjBhaUVZQTBBZ0JpQUZRUVowYWlJRUlBRWdCVUVDZENJSWFpb0NBRGdDQUNBRUlBZ2dHR29xQWdBNEFnUWdCQ0FJSUJkcUtnSUFPQUlJSUFRZ0NDQVdhaW9DQURnQ0RDQUVJQWdnRldvcUFnQTRBaEFnQkNBSUlCUnFLZ0lBT0FJVUlBUWdDQ0FPYWlvQ0FEZ0NHQ0FFSUFnZ0NXb3FBZ0E0QWh3Z0JVRUJhaUlGSUFkSERRQUxEQVFMSUFFZ0QwRUNkR29oQ1NBQklCQkJBblJxSVE0Z0FTQVJRUUowYWlFVUlBRWdERUVDZEdvaEZTQUJJQkpCQW5ScUlSWWdBU0FUUVFKMGFpRVhJQUVnQWtFQ2RHb2hHQ0FEUVFOR0lSb2dBMEVFUmlFY0lBTkJCVVloSFNBRFFRZEdJUjREUUNBR0lBVkJCblJxSWdRZ0FTQUZRUUowSWdocUtnSUFPQUlBSUFRZ0NDQVlhaW9DQURnQ0JDQUVJQWdnRjJvcUFnQTRBZ2dDUUNBYURRQWdCQ0FJSUJacUtnSUFPQUlNSUJ3TkFDQUVJQWdnRldvcUFnQTRBaEFnSFEwQUlBUWdDQ0FVYWlvQ0FEZ0NGQ0FEUVFaR0RRQWdCQ0FJSUE1cUtnSUFPQUlZSUI0TkFDQUVJQWdnQ1dvcUFnQTRBaHdMSUFWQkFXb2lCU0FIUncwQUN3d0RDeUFGSVFRTElBUkJBV29oQlNBSElBUnJRUUZ4QkVBZ0JpQUVRUVowYWlJSklBRWdCRUVDZENJRWFpb0NBRGdDQUNBSklBUWdDR29xQWdBNEFnUWdCU0VFQ3lBRklBZEdEUUVEUUNBR0lBUkJCblJxSWdVZ0FTQUVRUUowSWdscUtnSUFPQUlBSUFVZ0NDQUphaW9DQURnQ0JDQUdJQVJCQVdvaUJVRUdkR29pQ1NBQklBVkJBblFpQldvcUFnQTRBZ0FnQ1NBRklBaHFLZ0lBT0FJRUlBUkJBbW9pQkNBSFJ3MEFDd3dCQ3lBSElBVWlCR3RCQTNFaUNRUkFRUUFoQ0FOQUlBWWdCRUVHZEdvZ0FTQUVRUUowYWlvQ0FEZ0NBQ0FFUVFGcUlRUWdDRUVCYWlJSUlBbEhEUUFMQ3lBRklBZHJRWHhMRFFBRFFDQUdJQVJCQm5ScUlBRWdCRUVDZEdvcUFnQTRBZ0FnQmlBRVFRRnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRSnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQmlBRVFRTnFJZ1ZCQm5ScUlBRWdCVUVDZEdvcUFnQTRBZ0FnQkVFRWFpSUVJQWRIRFFBTEMwRWdhaUVISUFFZ0RVRUNkR29oQmlBQUtBSVlJUVVDUUFKQUFrQUNRQ0FEUVFoSkRRQWdCa0VQY1EwQUlBZEJEM0ZGRFFFTElBVWdDMDhOQWdKQUFrQUNRQ0FEUVFGckRnSUFBUUlMSUFzZ0JXc2lBRUViVFEwRElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdKcmFpQUJJQXNnRFdwQkFuUnFTUVJBSUFFZ0JTQU5ha0VDZEdvZ0MwRUdkQ0FDYXlBS2FrRWNhMGtOQkFzZ0JpQUZRUUowYWlFQ0lBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFZ0lBVWdBRUY4Y1NJQmFpRUZRUUFoQkFOQUlBY2dJRUVHL2FzQkloLzlHd0JxSUFJZ0JFRUNkR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlBaC9SOEJPQUlBSUFjZ0gvMGJBbW9nSWYwZkFqZ0NBQ0FISUIvOUd3TnFJQ0g5SHdNNEFnQWdJUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFZ0lBUkJCR29pQkNBQlJ3MEFDeUFBSUFGSERRTU1CQXNnQmlBQ1FRSjBhaUVEQWtBZ0N5QUZheUlBUVNSSkJFQWdCU0VFREFFTElBb2dCVUVHZEVFZ2NpQVpRUVYwSWdScmFpSUlJQUVnQWlBTElBMXFJZ0pxUVFKMGFra2dDMEVHZENBRWF5QUtha0VZYXlJRUlBRWdEVUVDZEdvZ0JVRUNkR29pQ2lBTWFrdHhCRUFnQlNFRURBRUxJQWdnQVNBQ1FRSjBha2tnQkNBS1MzRUVRQ0FGSVFRTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklTQWdCU0FBUVh4eElnSnFJUVJCQUNFQkEwQWdCeUFnUVFiOXF3RWlILzBiQUdvaUNpQUdJQUVnQldwQkFuUWlDR3I5QUFJQUlpSDlId0E0QWdBZ0J5QWYvUnNCYWlJTUlDSDlId0U0QWdBZ0J5QWYvUnNDYWlJTklDSDlId0k0QWdBZ0J5QWYvUnNEYWlJUElDSDlId000QWdBZ0NpQURJQWhxL1FBQ0FDSWYvUjhBT0FJRUlBd2dILzBmQVRnQ0JDQU5JQi85SHdJNEFnUWdEeUFmL1I4RE9BSUVJQ0Q5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaElDQUJRUVJxSWdFZ0FrY05BQXNnQUNBQ1JnMEVDeUFFUVFGcUlRQWdDeUFFYTBFQmNRUkFJQWNnQkVFR2RHb2lBU0FHSUFSQkFuUWlBbW9xQWdBNEFnQWdBU0FDSUFOcUtnSUFPQUlFSUFBaEJBc2dBQ0FMUmcwREEwQWdCeUFFUVFaMGFpSUFJQVlnQkVFQ2RDSUJhaW9DQURnQ0FDQUFJQUVnQTJvcUFnQTRBZ1FnQnlBRVFRRnFJZ0JCQm5ScUlnRWdCaUFBUVFKMElnQnFLZ0lBT0FJQUlBRWdBQ0FEYWlvQ0FEZ0NCQ0FFUVFKcUlnUWdDMGNOQUFzTUF3c2dCaUFQUVFKMGFpRUVJQVlnRUVFQ2RHb2hDaUFHSUJGQkFuUnFJUWdnQmlBTVFRSjBhaUVNSUFZZ0VrRUNkR29oRFNBR0lCTkJBblJxSVE4Z0JpQUNRUUowYWlFQ0lBTkJBMFloRUNBRFFRUkdJUkVnQTBFRlJpRVNJQU5CQjBZaEV3TkFJQWNnQlVFR2RHb2lBQ0FHSUFWQkFuUWlBV29xQWdBNEFnQWdBQ0FCSUFKcUtnSUFPQUlFSUFBZ0FTQVBhaW9DQURnQ0NBSkFJQkFOQUNBQUlBRWdEV29xQWdBNEFnd2dFUTBBSUFBZ0FTQU1haW9DQURnQ0VDQVNEUUFnQUNBQklBaHFLZ0lBT0FJVUlBTkJCa1lOQUNBQUlBRWdDbW9xQWdBNEFoZ2dFdzBBSUFBZ0FTQUVhaW9DQURnQ0hBc2dCVUVCYWlJRklBdEhEUUFMREFJTElBVWdDMDhOQVNBR0lBOUJBblJxSVFNZ0JpQVFRUUowYWlFRUlBWWdFVUVDZEdvaENpQUdJQXhCQW5ScUlRZ2dCaUFTUVFKMGFpRU1JQVlnRTBFQ2RHb2hEU0FHSUFKQkFuUnFJUUlEUUNBSElBVkJCblJxSWdBZ0JpQUZRUUowSWdGcUtnSUFPQUlBSUFBZ0FTQUNhaW9DQURnQ0JDQUFJQUVnRFdvcUFnQTRBZ2dnQUNBQklBeHFLZ0lBT0FJTUlBQWdBU0FJYWlvQ0FEZ0NFQ0FBSUFFZ0Ntb3FBZ0E0QWhRZ0FDQUJJQVJxS2dJQU9BSVlJQUFnQVNBRGFpb0NBRGdDSENBRlFRRnFJZ1VnQzBjTkFBc01BUXNnQ3lBRklnUnJRUU54SWdBRVFFRUFJUWdEUUNBSElBUkJCblJxSUFZZ0JFRUNkR29xQWdBNEFnQWdCRUVCYWlFRUlBaEJBV29pQ0NBQVJ3MEFDd3NnQlNBTGEwRjhTdzBBQTBBZ0J5QUVRUVowYWlBR0lBUkJBblJxS2dJQU9BSUFJQWNnQkVFQmFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFQ2FpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQWNnQkVFRGFpSUFRUVowYWlBR0lBQkJBblJxS2dJQU9BSUFJQVJCQkdvaUJDQUxSdzBBQ3dzTG5BRUJCWDhqQUVId0FXc2lCQ1FBSUFRZ0FEWUNBRUVCSVFVQ1FDQUJRUUpJRFFBZ0FDRURBMEFnQUNBRFFRaHJJZ01nQWlBQlFRSnJJZ2RCQW5ScUtBSUFheUlHRUN0QkFFNEVRQ0FBSUFNUUswRUFUZzBDQ3lBRUlBVkJBblJxSUFZZ0F5QUdJQU1RSzBFQVRpSUdHeUlETmdJQUlBVkJBV29oQlNBQlFRRnJJQWNnQmhzaUFVRUJTZzBBQ3dzZ0JDQUZFSFlnQkVId0FXb2tBQXVkQXdFRWZ5QUJJQUJCQkdvaUJHcEJBV3RCQUNBQmEzRWlCU0FDYWlBQUlBQW9BZ0FpQVdwQkJHdE5CSDhnQUNnQ0JDSURJQUFvQWdnaUJqWUNDQ0FHSUFNMkFnUWdCQ0FGUndSQUlBQWdBRUVFYXlnQ0FFRitjV3NpQXlBRklBUnJJZ1FnQXlnQ0FHb2lCVFlDQUNBRElBVkJmSEZxUVFScklBVTJBZ0FnQUNBRWFpSUFJQUVnQkdzaUFUWUNBQXNDZnlBQklBSkJHR3BQQkVBZ0FDQUNhaUlFSUFFZ0FtdEJDR3NpQVRZQ0NDQUVRUWhxSWdVZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBRUFuOGdCQ2dDQ0VFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBV2NoQXlBQlFSMGdBMnQyUVFSeklBTkJBblJyUWU0QWFpQUJRZjhmVFEwQUdrRS9JQUZCSGlBRGEzWkJBbk1nQTBFQmRHdEJ4d0JxSWdFZ0FVRS9UeHNMSWdOQkJIUWlBVUhnelFGcU5nSU1JQVFnQVVIb3pRRnFJZ0VvQWdBMkFoQWdBU0FGTmdJQUlBUW9BaEFnQlRZQ0JFSG8xUUZCNk5VQktRTUFRZ0VnQTYyR2hEY0RBQ0FBSUFKQkNHb2lBVFlDQUNBQUlBRkJmSEZxREFFTElBQWdBV29MUVFScklBRTJBZ0FnQUVFRWFnVkJBQXNMd2dFQkEzOENRQ0FDS0FJUUlnTUVmeUFEQlNBQ0VFY05BU0FDS0FJUUN5QUNLQUlVSWdScklBRkpCRUFnQWlBQUlBRWdBaWdDSkJFQUFBOExBa0FDUUNBQ0tBSlFRUUJJRFFBZ0FVVU5BQ0FCSVFNRFFDQUFJQU5xSWdWQkFXc3RBQUJCQ2tjRVFDQURRUUZySWdNTkFRd0NDd3NnQWlBQUlBTWdBaWdDSkJFQUFDSUVJQU5KRFFJZ0FTQURheUVCSUFJb0FoUWhCQXdCQ3lBQUlRVkJBQ0VEQ3lBRUlBVWdBUkFXR2lBQ0lBSW9BaFFnQVdvMkFoUWdBU0FEYWlFRUN5QUVDMWtCQVg4Z0FDQUFLQUpJSWdGQkFXc2dBWEkyQWtnZ0FDZ0NBQ0lCUVFoeEJFQWdBQ0FCUVNCeU5nSUFRWDhQQ3lBQVFnQTNBZ1FnQUNBQUtBSXNJZ0UyQWh3Z0FDQUJOZ0lVSUFBZ0FTQUFLQUl3YWpZQ0VFRUFDOHdDQVFSL0lBRWdBUDBBQWdEOUN3SUFJQUVvQWhnaUFnUkFJQUVvQWhBaUF3Ui9RUUFoQWdOQUlBRW9BaGdnQWtFMGJHb29BaXdpQkFSQUlBUVFGQ0FCS0FJUUlRTUxJQUpCQVdvaUFpQURTUTBBQ3lBQktBSVlCU0FDQ3hBVUlBRkJBRFlDR0FzZ0FTQUFLQUlRSWdJMkFoQWdBU0FDUVRSc0VCZ2lBallDR0NBQ0JFQWdBU2dDRUFSQVFRQWhBd05BSUFJZ0EwRTBiQ0lGYWlJQ0lBQW9BaGdnQldvaUJQMEFBZ0Q5Q3dJQUlBSWdCQ2dDTURZQ01DQUNJQVQ5QUFJZy9Rc0NJQ0FDSUFUOUFBSVEvUXNDRUNBQktBSVlJZ0lnQldwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUVrTkFBc0xJQUVnQUNnQ0ZEWUNGQ0FCSUFBb0FpQWlBallDSUNBQ0JFQWdBU0FDRUJnaUFqWUNIQ0FDUlFSQUlBRkNBRGNDSEE4TElBSWdBQ2dDSENBQUtBSWdFQllhRHdzZ0FVRUFOZ0ljRHdzZ0FVRUFOZ0lRSUFGQkFEWUNHQXNFQUVFQkM4WUJBUU4vQTBBZ0FFRUVkQ0lCUWVUTkFXb2dBVUhnelFGcUlnSTJBZ0FnQVVIb3pRRnFJQUkyQWdBZ0FFRUJhaUlBUWNBQVJ3MEFDMEV3RUhvYUl3QkJFR3NpQUNRQUFrQWdBRUVNYWlBQVFRaHFFQkFOQUVIdzFRRkJDQ0FBS0FJTVFRSjBRUVJxRUNraUFUWUNBQ0FCUlEwQVFRZ2dBQ2dDQ0JBcElnRUVRRUh3MVFFb0FnQWlBaUFBS0FJTVFRSjBha0VBTmdJQUlBSWdBUkFQUlEwQkMwSHcxUUZCQURZQ0FBc2dBRUVRYWlRQVFZeldBVUVxTmdJQVFkVFdBVUdZMXdFMkFnQUxrZ1lDQkg4RGV5TUFRUkJySWdZa0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLMEFTQUFLQUxrQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUUFDUUNBREtBSUFJZ1ZGQkVCQkFDRUNJQVJCQVVHdEZFRUFFQk1NQVFzZ0FDZ0MwQ3NnQXlBRlFRRnJOZ0lBSUFJZ0JrRU1ha0VCRUJVZ0FVRzRDR3hxSWdjZ0JpZ0NEQ0lBUVFWMk5nS2tCaUFISUFCQkgzRWlBVFlDR0NBQ1FRRnFJUUFnQXdKL0FuOENRQUovQWtBQ1FDQUJEZ0lBQXdFTElBTW9BZ0FNQVFzZ0F5Z0NBRUVCZGdzaUJVSGlBRThFZnlBR1F1R0FnSUNRRERjQ0JDQUdJQVUyQWdBZ0JFRUNRWlA5QUNBR0VCTWdCeWdDR0FVZ0FRc0VRQ0FGSWdFTkFVRUFEQUlMSUFVRVFDQUhRUnhxSVFGQkFDRUNBMEFnQUNBR1FReHFRUUVRRlNBQ1FlQUFUUVJBSUFZb0Fnd2hCQ0FCSUFKQkEzUnFJZ2hCQURZQ0JDQUlJQVJCQTNZMkFnQUxJQUJCQVdvaEFDQUNRUUZxSWdJZ0JVY05BQXNMSUFVZ0F5Z0NBQ0lBU3dSQVFRQWhBZ3dFQ3lBQUlBVnJEQUlMSUFkQkhHb2hCRUVBSVFJRFFDQUFJQVpCREdwQkFoQVZJQUpCNEFCTkJFQWdCQ0FDUVFOMGFpSUZJQVlvQWd3aUNFSC9EM0UyQWdRZ0JTQUlRUXQyTmdJQUN5QUFRUUpxSVFBZ0FrRUJhaUlDSUFGSERRQUxJQUZCQVhRTElRQWdBQ0FES0FJQUlnRkxCRUJCQUNFQ0RBSUxJQUVnQUdzTE5nSUFRUUVoQWlBSEtBSVlRUUZIRFFBZ0IwRWNhaUVFSUFmOUNRSWNJUXNnQnlnQ0lDRUQvUXdCQUFBQUFnQUFBQU1BQUFBRUFBQUFJUXBCQUNFQkEwQWdCQ0FCUVFOMGFpSUFRUmhxSUFzZ0N2ME0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMnVBU0lKL1JzQVFRTnUvUkVnQ2YwYkFVRURidjBjQVNBSi9Sc0NRUU51L1J3Q0lBbjlHd05CQTI3OUhBUDlzUUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5dUFFaUNmMWFBZ0FDSUFCQkVHb2dDZjFhQWdBQklBQkJDR29nQ2YxYUFnQUFJQVFnQVVFRWFpSUJRUU4wYWlJRklBbjlXZ0lBQXlBQUlBTTJBaHdnQUNBRE5nSVVJQUFnQXpZQ0RDQUZJQU0yQWdRZ0N2ME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0VLSUFGQjRBQkhEUUFMQ3lBR1FSQnFKQUFnQWd1RUJ3RUdmeU1BUVNCcklnWWtBQUovSUFBb0FnaEJFRVlFUUNBQUtBSzBBU0FBS0FMa0FVR01MR3hxREFFTElBQW9BZ3dMSVFVQ1FDQURLQUlBUVFSTkJFQkJBQ0VBSUFSQkFVR0tGRUVBRUJNTUFRc2dBaUFGS0FMUUt5QUJRYmdJYkdvaUJTSUpRUVJxUVFFUUZTQUZJQVVvQWdSQkFXb2lCellDQkNBSFFTSlBCRUFnQmtFaE5nSUVJQVlnQnpZQ0FDQUVRUUZCcmpzZ0JoQVRRUUFoQUF3QkN5QUhJQUFvQXJnQklnaE5CRUFnQmlBSE5nSVlJQVlnQ0RZQ0ZDQUdJQUUyQWhBZ0JFRUJRWUtBQVNBR1FSQnFFQk1nQUNBQUtBSUlRWUNBQW5JMkFnaEJBQ0VBREFFTElBSkJBV29nQlVFSWFrRUJFQlVnQlNBRktBSUlRUUpxTmdJSUlBSkJBbW9nQlVFTWFrRUJFQlVnQlNBRktBSU1RUUpxSWdBMkFnd0NRQUpBSUFVb0FnZ2lBVUVLU3cwQUlBQkJDa3NOQUNBQUlBRnFRUTFKRFFFTFFRQWhBQ0FFUVFGQnR5cEJBQkFUREFFTElBSkJBMm9nQlVFUWFrRUJFQlVnQlMwQUVFR0FBWEVFUUVFQUlRQWdCRUVCUWY4eVFRQVFFd3dCQ3lBQ1FRUnFJQVZCRkdwQkFSQVZJQVVvQWhSQkFrOEVRRUVBSVFBZ0JFRUJRYjR5UVFBUUV3d0JDeUFESUFNb0FnQkJCV3NpQnpZQ0FFRUJJUUFnQlNnQ0JDRUJBa0FnQlMwQUFFRUJjVVVFUUNBQlJRMENJQVZCc0FkcUlRSWdCVUdzQm1vaEJFRUFJUVVnQVVFRFRRMEJJQUZCZkhFaEJVRUFJUU1EUUNBRUlBTkJBblFpQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQUlnQjJyOURBOEFBQUFQQUFBQUR3QUFBQThBQUFEOUN3SUFJQU5CQkdvaUF5QUZSdzBBQ3lBQklBVkhEUUVNQWdzZ0FTQUhUUVJBQWtBZ0FVVUVRRUVBSVFFTUFRc2dBa0VGYWlBR1FSeHFRUUVRRlNBRklBWW9BaHdpQUVFRWRqWUNzQWNnQlNBQVFROXhOZ0tzQmlBRktBSUVJZ0ZCQWs4RVFDQUZRYkFIYWlFSElBVkJyQVpxSVFnZ0FrRUdhaUVBUVFFaEJRTkFJQUFnQmtFY2FrRUJFQlVDUUNBR0tBSWNJZ0ZCRUU4RVFDQUJRUTl4SWdJTkFRdEJBQ0VBSUFSQkFVSGtMa0VBRUJNTUJnc2dDQ0FGUVFKMElncHFJQUkyQWdBZ0J5QUthaUFCUVFSMk5nSUFJQUJCQVdvaEFDQUZRUUZxSWdVZ0NTZ0NCQ0lCU1EwQUN3c2dBeWdDQUNFSEN5QURJQWNnQVdzMkFnQkJBU0VBREFJTFFRQWhBQ0FFUVFGQmloUkJBQkFUREFFTEEwQWdCQ0FGUVFKMElnQnFRUTgyQWdBZ0FDQUNha0VQTmdJQVFRRWhBQ0FGUVFGcUlnVWdBVWtOQUFzTElBWkJJR29rQUNBQUMxSUFJQUVnQUMwQUFEb0FCeUFCSUFBdEFBRTZBQVlnQVNBQUxRQUNPZ0FGSUFFZ0FDMEFBem9BQkNBQklBQXRBQVE2QUFNZ0FTQUFMUUFGT2dBQ0lBRWdBQzBBQmpvQUFTQUJJQUF0QUFjNkFBQUxrZ0VCQkg4Z0FDQUJOZ0s0QVFKQUlBQW9BbUFpQTBVTkFDQURLQUlZSWdaRkRRQWdBQ2dDRENJRVJRMEFJQVFvQXRBclJRMEFJQU1vQWhBaUJFVUVRRUVCRHd0QkFDRURBMEFnQUNnQ0RDZ0MwQ3NnQTBHNENHeHFLQUlFSUFGTkJFQWdBa0VCUWJUSEFFRUFFQk5CQUE4TElBWWdBMEUwYkdvZ0FUWUNLRUVCSVFVZ0EwRUJhaUlESUFSSERRQUxDeUFGQzZVSEFnbC9DSDRqQUVFUWF5SUxKQUFDUUNBQ1JRUkFJQU5CQVVISTJnQkJBQkFUREFFTElBSW9BaEFpQ1NBQUtBSmdJZ2NvQWhCSkJFQWdBMEVCUWFYU0FFRUFFQk1NQVFzZ0FDZ0NnQUVpQlNBQUtBS0VBV3dpQmlBRVRRUkFJQXNnQkRZQ0FDQUxJQVpCQVdzMkFnUWdBMEVCUWNYL0FDQUxFQk5CQUNFRkRBRUxJQUlnQUNnQ2JDQUVJQVVnQkNBRmJpSUdiR3NpQ0NBQUtBSjBiR29pQlRZQ0FDQUNJQVVnQnlnQ0FDSUhJQVVnQjBzYklnYzJBZ0FnQWlBQUtBSnNJQUFvQW5RZ0NFRUJhbXhxSWdVMkFnZ2dBaUFGSUFBb0FtQW9BZ2dpQ0NBRklBaEpHeUlJTmdJSUlBSWdBQ2dDY0NBQUtBSjRJQVpzYWlJRk5nSUVJQUlnQlNBQUtBSmdLQUlFSWdvZ0JTQUtTeHNpQ2pZQ0JDQUNJQUFvQW5BZ0FDZ0NlQ0FHUVFGcWJHb2lCVFlDRENBQ0lBVWdBQ2dDWUNnQ0RDSUdJQVVnQmtrYklnVTJBZ3dnQUNnQ1lDSU1LQUlRSWdZRVFDQUZyRUlCZlNFUklBaXNRZ0Y5SVJJZ0NxMUNBWDBoRXlBSHJVSUJmU0VVSUF3b0FoZ2hDQ0FDS0FJWUlRVkJBQ0VIQTBBZ0JTQUlJQWRCTkd4cUtBSW9JZ28yQWlnZ0JTQVVJQVVvQWdBaURLMGlEbndnRG9BaUZUNENFQ0FGSUJNZ0JTZ0NCQ0lOclNJT2ZDQU9nQ0lRUGdJVUlBVkNmeUFLclNJT2hpSVBJQkRFZlNBT2g2Y2dEeUFSSUEyc0loQjhJQkIveEgwZ0RvZW5hellDRENBRklBOGdGY1I5SUE2SHB5QVBJQklnREt3aUQzd2dEMy9FZlNBT2g2ZHJOZ0lJSUFWQk5Hb2hCU0FIUVFGcUlnY2dCa2NOQUFzTElBWWdDVWtFUUNBQ0tBSVlJUVVEUUNBRklBWkJOR3dpQjJvb0Fpd1FGQ0FDS0FJWUlnVWdCMnBCQURZQ0xDQUdRUUZxSWdZZ0FpZ0NFRWtOQUFzZ0FpQUFLQUpnS0FJUU5nSVFDeUFBS0FKa0lnVUVRQ0FGRUNVTElBQkJBVUVrRUJjaUJqWUNaRUVBSVFVZ0JrVU5BQ0FDSUFZUVNDQUFJQVEyQWl3Z0FDZ0MyQUZCR0NBREVDaEZEUUFnQUNnQzJBRWlDU2dDQUNFRUlBa29BZ2doQmdKQUlBUUVRRUVCSVFVZ0JFRUJjU0VJSUFSQkFVWUVmMEVBQlNBRVFYNXhJUVJCQUNFSEEwQUNmMEVBSUFWRkRRQWFRUUFnQUNBQklBTWdCaWdDQUJFQUFFVU5BQm9nQUNBQklBTWdCaWdDQkJFQUFFRUFSd3NoQlNBR1FRaHFJUVlnQjBFQ2FpSUhJQVJIRFFBTElBVkZDeUVFUVFBZ0JTQUlHeUVGQWtBZ0NFVU5BQ0FFRFFBZ0FDQUJJQU1nQmlnQ0FCRUFBRUVBUnlFRkN5QUpRUUEyQWdBZ0JRMEJJQUFvQW1BUUpVRUFJUVVnQUVFQU5nSmdEQUlMSUFsQkFEWUNBQXNnQUNBQ0VGQWhCUXNnQzBFUWFpUUFJQVVMOGdNQkJYOENRQUpBSUFBb0Fqd2lBa1VFUUNBQktBSVFEUUZCQVE4TElBSkJOR3dRR0NJRlJRMEJJQUVvQWhBRVFDQUJLQUlZSVFJRFFDQUNJQU5CTkd3aUJHb29BaXdRRkNBQktBSVlJZ0lnQkdwQkFEWUNMQ0FEUVFGcUlnTWdBU2dDRUNJRVNRMEFDd3NnQVNBQUtBSThCSDhnQUNnQ1pDZ0NHQ0VEUVFBaEFnTkFJQVVnQWtFMGJHb2lCQ0FESUFBb0FrQWdBa0VDZEdvb0FnQkJOR3dpQm1vaUEvMEFBZ0Q5Q3dJQUlBUWdBeWdDTURZQ01DQUVJQVA5QUFJZy9Rc0NJQ0FFSUFQOUFBSVEvUXNDRUNBRUlBQW9BbVFvQWhnaUF5QUdhaUlHS0FJa05nSWtJQVFnQmlnQ0xEWUNMQ0FHUVFBMkFpd2dBa0VCYWlJQ0lBQW9BandpQmtrTkFBc2dBU2dDRUFVZ0JBc0VmeUFBS0FKa0tBSVlJUUpCQUNFREEwQWdBaUFEUVRSc0lnUnFLQUlzRUJRZ0FDZ0NaQ2dDR0NJQ0lBUnFRUUEyQWl3Z0EwRUJhaUlESUFFb0FoQkpEUUFMSUFBb0Fqd0ZJQVlMTmdJUUlBRW9BaGdRRkNBQklBVTJBaGhCQVE4TElBRW9BaGdoQkNBQUtBSmtLQUlZSVFOQkFDRUNBMEFnQkNBQ1FUUnNJZ1ZxSWdRZ0F5QUZhaWdDSkRZQ0pDQUVLQUlzRUJRZ0FTZ0NHQ0lFSUFWcUlBQW9BbVFvQWhnaUF5QUZhaUlGS0FJc05nSXNJQVZCQURZQ0xDQUNRUUZxSWdJZ0FTZ0NFRWtOQUF0QkFROExJQUFvQW1BUUpTQUFRUUEyQW1CQkFBdkZCQUVJZndKQUlBSkZEUUFDUUNBQUtBSzRBU0lGUlEwQUlBQW9BbUFpQkVVTkFDQUVLQUlRUlEwQUlBUW9BaGdvQWlnZ0JVY05BQ0FDS0FJUUlnaEZEUUFnQWlnQ0dDSUdLQUlvRFFBZ0JpZ0NMQTBBUVFBaEJDQUlRUWhQQkVBZ0NFRjRjU0VKQTBBZ0JpQUVRVFJzYWlBRk5nSW9JQVlnQkVFQmNrRTBiR29nQlRZQ0tDQUdJQVJCQW5KQk5HeHFJQVUyQWlnZ0JpQUVRUU55UVRSc2FpQUZOZ0lvSUFZZ0JFRUVja0UwYkdvZ0JUWUNLQ0FHSUFSQkJYSkJOR3hxSUFVMkFpZ2dCaUFFUVFaeVFUUnNhaUFGTmdJb0lBWWdCRUVIY2tFMGJHb2dCVFlDS0NBRVFRaHFJUVFnQ2tFSWFpSUtJQWxIRFFBTEN5QUlRUWR4SWdnRVFBTkFJQVlnQkVFMGJHb2dCVFlDS0NBRVFRRnFJUVFnQzBFQmFpSUxJQWhIRFFBTEN5QUNJQU1RUHcwQVFRQVBDeUFBS0FKa0lnVkZCRUFnQUVFQlFTUVFGeUlGTmdKa0lBVkZEUUVMSUFJZ0JSQklJQUFvQXRnQlFSWWdBeEFvUlEwQUlBQW9BdGdCSWdZb0FnQWhCQ0FHS0FJSUlRVUNRQ0FFQkVCQkFTRUhJQVJCQVhFaENDQUVRUUZHQkg5QkFBVWdCRUYrY1NFSlFRQWhCQU5BQW45QkFDQUhSUTBBR2tFQUlBQWdBU0FESUFVb0FnQVJBQUJGRFFBYUlBQWdBU0FESUFVb0FnUVJBQUJCQUVjTElRY2dCVUVJYWlFRklBUkJBbW9pQkNBSlJ3MEFDeUFIUlFzaEJFRUFJQWNnQ0JzaEJ3SkFJQWhGRFFBZ0JBMEFJQUFnQVNBRElBVW9BZ0FSQUFCQkFFY2hCd3NnQmtFQU5nSUFJQWNOQVNBQUtBSmdFQ1VnQUVFQU5nSmdRUUFQQ3lBR1FRQTJBZ0FMSUFBZ0FoQlFJUWNMSUFjTCtBUUJCbjhDUUVFQlFUQVFGeUlDQkg4Z0FpQUFLQUxnQVNJQi9RQURBUDBMQXdBZ0FpQUJLUU1RTndNUUlBSWdBU2dDR0NJQk5nSVlJQUlnQVVFWWJCQVlJZ0UyQWh3Z0FVVUVRQ0FDRUJSQkFBOExBa0FnQUNnQzRBRW9BaHdpQXdSQUlBRWdBeUFDS0FJWVFSaHNFQllhREFFTElBRVFGQ0FDUVFBMkFod0xJQUlnQUNnQzRBRW9BaVFpQVRZQ0pDQUNJQUZCS0JBWElnRTJBaWdnQVVVRVFDQUNLQUljRUJRZ0FoQVVRUUFQQ3dKQUlBQW9BdUFCS0FJb0JFQWdBaWdDSkVVTkFRTkFJQUVnQlVFb2JDSURhaUFBS0FMZ0FTZ0NLQ0FEYWlnQ0ZDSUJOZ0lVSUFGQkdHd1FHQ0VCSUFJb0FpZ2lCQ0FEYWlJR0lBRTJBaGdnQVVVRVFDQUZCSDlCQUNFQkEwQWdBaWdDS0NBQlFTaHNhaWdDR0JBVUlBRkJBV29pQVNBRlJ3MEFDeUFDS0FJb0JTQUVDeEFVREFVTEFrQWdBQ2dDNEFFb0FpZ2dBMm9vQWhnaUJBUkFJQUVnQkNBR0tBSVVRUmhzRUJZYUlBSW9BaWdoQVF3QkN5QUJFQlFnQWlnQ0tDSUJJQU5xUVFBMkFoZ0xJQUVnQTJvZ0FDZ0M0QUVvQWlnZ0Eyb29BZ1FpQVRZQ0JDQUJRUmhzRUJnaEFTQUNLQUlvSWdRZ0Eyb2lCaUFCTmdJUUlBRkZCRUFnQlFSL1FRQWhBUU5BSUFGQktHd2lBQ0FDS0FJb2FpZ0NHQkFVSUFJb0FpZ2dBR29vQWhBUUZDQUJRUUZxSWdFZ0JVY05BQXNnQWlnQ0tBVWdCQXNRRkF3RkN3SkFJQUFvQXVBQktBSW9JQU5xS0FJUUlnUUVRQ0FCSUFRZ0JpZ0NCRUVZYkJBV0dpQUNLQUlvSVFFTUFRc2dBUkFVSUFJb0FpZ2lBU0FEYWtFQU5nSVFDeUFCSUFOcVFnQTNBaUFnQlVFQmFpSUZJQUlvQWlSSkRRQUxEQUVMSUFFUUZDQUNRUUEyQWlnTElBSUZRUUFMRHdzZ0FpZ0NIQkFVSUFJUUZFRUFDNkFHQVE1L0l3QkJFR3NpQ0NRQUlBQW9BbUFvQWhBaERTQUlRUUZCT0JBWElnRTJBZ3dDUUNBQlJRMEFJQUVnQUNnQ1lDZ0NFQ0lKTmdJWUlBRWdBUDBBQW16OUN3SUFJQUVnQUNnQ2dBRTJBaEFnQUNnQ2hBRWhBeUFCUVFBMkFqUWdBU0FETmdJVUlBRWdBQ2dDRENJTUtBSUFOZ0lnSUFFZ0RDZ0NCRFlDSkNBQklBd29BZ2cyQWlnZ0FTQU1LQUlRTmdJc0lBRWdDVUc0Q0JBWElnQTJBakFnQUFSQUlBMEVRQU5BSUE1QnVBaHNJZ0FnRENnQzBDdHFJZ1FvQWdRaEFpQUJLQUl3SUFCcUlnVWdCUDBBQWdEOUN3SUVJQVVnQkNnQ0VEWUNGQ0FGSUFRb0FoUTJBaGdnQWtFZ1RRUkFJQVZCdEFkcUlBUkJzQWRxSUFJUUZob2dCVUd3Qm1vZ0JFR3NCbW9nQkNnQ0JCQVdHZ3NnQlNBRUtBSVlJZ0EyQWh3Z0JTQUVLQUtrQmpZQ3FBWkJBU0VHQWtBZ0FFRUJSd1JBSUFRb0FnUkJBMndpQUVFRGEwSGZBRXNOQVNBQVFRSnJJUVlMSUFWQnBBTnFJUWtnQlVFZ2FpRUtJQVJCSEdvaEMwRUFJUUFDUUNBR1FRaEpEUUFnQkNBR1FRTjBha0VjYWlBS1N3UkFJQXNnQlNBR1FRSjBha0drQTJwSkRRRUxJQVpCZkhFaEFFRUFJUU1EUUNBS0lBTkJBblFpQW1vZ0N5QURRUU4wYWlJSFFSeHFJQWRCRkdvZ0IwRU1haUFIL1Z3Q0JQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBaUFKYWlBSFFSaHFJQWRCRUdvZ0IwRUlhaUFIL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBMEVFYWlJRElBQkhEUUFMSUFBZ0JrWU5BUXNnQUVFQmNpRUNJQVpCQVhFRVFDQUtJQUJCQW5RaUEyb2dDeUFBUVFOMGFpSUFLQUlFTmdJQUlBTWdDV29nQUNnQ0FEWUNBQ0FDSVFBTElBSWdCa1lOQUFOQUlBb2dBRUVDZENJRGFpQUxJQUJCQTNScUlnSW9BZ1EyQWdBZ0F5QUphaUFDS0FJQU5nSUFJQW9nQUVFQmFpSUNRUUowSWdOcUlBc2dBa0VEZEdvaUFpZ0NCRFlDQUNBRElBbHFJQUlvQWdBMkFnQWdBRUVDYWlJQUlBWkhEUUFMQ3lBRklBUW9BcWdHTmdLc0JpQU9RUUZxSWc0Z0RVY05BQXNMSUFFaEFnd0JDeUFJUVF4cUJFQWdDQ2dDRENJQktBSXdJZ0FFZnlBQUVCUWdDQ2dDREFVZ0FRc1FGQ0FJUVFBMkFnd0xDeUFJUVJCcUpBQWdBZ3Y1QkFFSWZ5TUFRWUFDYXlJREpBQWdBQVJBUWVrTlFSRWdBaEFoSUFNZ0FDZ0NBRFlDOEFFZ0FrR0hFaUFEUWZBQmFoQWFJQU1nQUNnQ0JEWUM0QUVnQWtHVUVpQURRZUFCYWhBYUlBTWdBQ2dDQ0RZQzBBRWdBa0czT0NBRFFkQUJhaEFhSUFNZ0FDZ0NFRFlDd0FFZ0FrSHFFU0FEUWNBQmFoQWFJQUZCQUVvRVFBTkFJQUFvQXRBcklRUWdBeUFITmdLd0FTQUNRWThPSUFOQnNBRnFFQm9nQXlBRUlBZEJ1QWhzYWlJRUtBSUFOZ0tnQVNBQ1FZWVNJQU5Cb0FGcUVCb2dBeUFFS0FJRU5nS1FBU0FDUWFrNUlBTkJrQUZxRUJvZ0F5QUVLQUlJTmdLQUFTQUNRZFUzSUFOQmdBRnFFQm9nQXlBRUtBSU1OZ0p3SUFKQjVUY2dBMEh3QUdvUUdpQURJQVFvQWhBMkFtQWdBa0gxRVNBRFFlQUFhaEFhSUFNZ0JDZ0NGRFlDVUNBQ1FlczVJQU5CMEFCcUVCcEIrZ3RCRnlBQ0VDRWdCQ2dDQkFSQUlBUkJzQWRxSVFZZ0JFR3NCbW9oQ0VFQUlRVURRQ0FJSUFWQkFuUWlDV29vQWdBaENpQURJQVlnQ1dvb0FnQTJBa1FnQXlBS05nSkFJQUpCK0F3Z0EwRkFheEFhSUFWQkFXb2lCU0FFS0FJRVNRMEFDd3NnQWhCN0lBTWdCQ2dDR0RZQ01DQUNRZlUzSUFOQk1Hb1FHaUFESUFRb0FxUUdOZ0lnSUFKQnBqZ2dBMEVnYWhBYVFRRWhCa0dTREVFVUlBSVFJUUpBSUFRb0FoaEJBVWNFUUNBRUtBSUVJZ1ZCQUV3TkFTQUZRUU5zUVFKcklRWUxJQVJCSEdvaENFRUFJUVVEUUNBRElBZ2dCVUVEZEdvcEFnQkNJSWszQXhBZ0FrSDREQ0FEUVJCcUVCb2dCVUVCYWlJRklBWkhEUUFMQ3lBQ0VIc2dBeUFFS0FLb0JqWUNBQ0FDUVpVNElBTVFHa0dHRFVFRklBSVFJU0FIUVFGcUlnY2dBVWNOQUFzTFFZY05RUVFnQWhBaEN5QURRWUFDYWlRQUMrc0pBd2wvQVg0QmV5TUFRYkFCYXlJRkpBQUNRQ0FCUVlBRGNRUkFRWkl1UVFzZ0FoQWhEQUVMQWtBZ0FVRUJjVVVOQUNBQUtBSmdJZ1pGRFFBakFFSFFBR3NpQXlRQVFkc05RUTBnQWhBaElBTkJBRG9BVHlBRFFRazZBRTRnQXlBR0tRSUFOd0pFSUFNZ0EwSE9BR29pQkRZQ1FDQUNRYnM2SUFOQlFHc1FHaUFESUFZcEFnZzNBalFnQXlBRU5nSXdJQUpCcWpvZ0EwRXdhaEFhSUFNZ0JpZ0NFRFlDSkNBRElBUTJBaUFnQWtISU9DQURRU0JxRUJvQ1FDQUdLQUlZUlEwQUlBWW9BaEJGRFFBRFFDQURJQU5CemdCcUlnczJBaEFnQXlBSU5nSVVJQUpCK3cwZ0EwRVFhaEFhSUFZb0FoZ2dDRUUwYkdvaENTTUFRVEJySWdRa0FDQUVRUWs3QUM0Z0JFRUpPZ0F0SUFRZ0NTa0NBRGNDSkNBRUlBUkJMV29pQ2pZQ0lDQUNRWVE0SUFSQklHb1FHaUFFSUFrb0FoZzJBaFFnQkNBS05nSVFJQUpCK2prZ0JFRVFhaEFhSUFRZ0NTZ0NJRFlDQkNBRUlBbzJBZ0FnQWtIZk9TQUVFQm9nQkVFd2FpUUFJQU1nQ3pZQ0FDQUNRWUVOSUFNUUdpQUlRUUZxSWdnZ0JpZ0NFRWtOQUFzTFFZa05RUUlnQWhBaElBTkIwQUJxSkFBTEFrQWdBVUVDY1VVTkFDQUFLQUpnUlEwQVFlWU9RU1FnQWhBaElBVWdBQ2tDYkRjRG9BRWdBa0hVRWlBRlFhQUJhaEFhSUFVZ0FDa0NkRGNEa0FFZ0FrR3lFaUFGUVpBQmFoQWFJQVVnQUNrRGdBRTNBNEFCSUFKQnhCSWdCVUdBQVdvUUdpQUFLQUlNSUFBb0FtQW9BaEFnQWhCVVFZa05RUUlnQWhBaEN3SkFJQUZCQ0hGRkRRQWdBQ2dDWUVVTkFDQUFLQUtBQVNBQUtBS0VBV3dpQkVVTkFDQUFLQUswQVNFREEwQWdBeUFBS0FKZ0tBSVFJQUlRVkNBRFFZd3NhaUVESUFkQkFXb2lCeUFFUncwQUN3c2dBVUVRY1VVTkFDQUFLQUxnQVNFQVFjQU9RU1VnQWhBaElBVWdBUDBBQXdEOUN3UndJQUpCdlN3Z0JVSHdBR29RR2tHdURrRVJJQUlRSVFKQUlBQW9BaHhGRFFBZ0FDZ0NHRVVOQUVFQUlRTURRQ0FBS0FJY0lBTkJHR3hxSWdFdkFRQWhCQ0FCS1FNSUlRd2dCU0FCS0FJUU5nSmdJQVVnRERjRFdDQUZJQVEyQWxBZ0FrSEFPU0FGUWRBQWFoQWFJQU5CQVdvaUF5QUFLQUlZU1EwQUN3dEJodzFCQkNBQ0VDRUNRQ0FBS0FJb0lnUkZEUUFnQUNnQ0pDSUdSUTBBUVFBaEIwRUFJUU1EUUFKQUlBUWdBMEVvYkdvaUFTZ0NCQ0lJUlEwQUlBRW9BaEFpQVVVTkFDQUJLUU1BUWdCWERRQWdBU2tEQ0VJQVVnMEFRZm9LRUhnTkFnc2dCeUFJYWlFSElBTkJBV29pQXlBR1J3MEFDeUFIUlEwQVFaME9RUkFnQWhBaElBQW9BaVFFUUNBQUtBSW9JUUZCQUNFSEEwQWdCU0FCSUFkQktHd2lCR29vQWdRaUJqWUNSQ0FGSUFjMkFrQWdBa0dHT2lBRlFVQnJFQm9nQUNnQ0tDRUJBa0FnQmtVTkFFRUFJUU1nQVNBRWFpZ0NFRVVOQUFOQUlBQW9BaWdnQkdvb0FoQWdBMEVZYkdvaUFmMEFBd0FoRFNBRklBRXBBeEEzQXpnZ0JTQU4vUXNES0NBRklBTTJBaUFnQWtHVjFRQWdCVUVnYWhBYUlBTkJBV29pQXlBR1J3MEFDeUFBS0FJb0lRRUxBa0FnQVNBRWFpSUdLQUlZUlEwQVFRQWhBeUFHS0FJVVJRMEFBMEFnQVNBRWFpZ0NHQ0FEUVJoc2FpSUJMd0VBSVFZZ0FTa0RDQ0VNSUFVZ0FTZ0NFRFlDRUNBRklBdzNBd2dnQlNBR05nSUFJQUpCd0RrZ0JSQWFJQU5CQVdvaUF5QUFLQUlvSWdFZ0JHb29BaFJKRFFBTEN5QUhRUUZxSWdjZ0FDZ0NKRWtOQUFzTFFZY05RUVFnQWhBaEMwR0pEVUVDSUFJUUlRc2dCVUd3QVdva0FBdVJBZ0VEZndKQVFRRkJnQUlRRnlJQkJIOGdBVUVCTmdJQUlBRkJBVFlDMEFFZ0FTQUJMUURVQVVFR2Nqb0ExQUVnQVVFQlFZd3NFQmNpQURZQ0RDQUFSUTBCSUFGQkFVSG9CeEFYSWdBMkFoQWdBRVVOQVNBQlFnQTNBekFnQVVGL05nSXNJQUZCNkFjMkFoUUNRRUVCUVRBUUZ5SUFCRUFnQUVFQU5nSVlJQUJCNUFBMkFpQWdBRUhrQUVFWUVCY2lBallDSENBQ0RRRWdBQkFVQ3lBQlFRQTJBdUFCREFJTElBQkJBRFlDS0NBQklBQTJBdUFCSUFFUU9TSUFOZ0xjQVNBQVJRMEJJQUVRT1NJQU5nTFlBU0FBUlEwQkFrQkI1Z29RZUVVTkFBc2dBVUVBRUhNaUFEWUM3QUVnQUVVRVFDQUJRUUFRY3lJQU5nTHNBU0FBUlEwQ0N5QUJCVUVBQ3c4TElBRVFRRUVBQzVBSkFnbC9BWDRqQUVIUUFXc2lCeVFBSUFBb0FtQWhDUUpBQWtBQ1FDQUFLQUtBQVVFQlJ3MEFJQUFvQW9RQlFRRkhEUUFnQUNnQ3RBRW9BdHdyRFFFTElBQW9BZ2hCQ0VZTkFDQUdRUUZCMGRJQVFRQVFFd3dCQ3dKQUlBRW9BaEFpREVVTkFDQUFLQUs0QVNFS0lBRW9BaGdoQ3lBTVFRaFBCRUFnREVGNGNTRVBBMEFnQ3lBSVFUUnNhaUFLTmdJb0lBc2dDRUVCY2tFMGJHb2dDallDS0NBTElBaEJBbkpCTkd4cUlBbzJBaWdnQ3lBSVFRTnlRVFJzYWlBS05nSW9JQXNnQ0VFRWNrRTBiR29nQ2pZQ0tDQUxJQWhCQlhKQk5HeHFJQW8yQWlnZ0N5QUlRUVp5UVRSc2FpQUtOZ0lvSUFzZ0NFRUhja0UwYkdvZ0NqWUNLQ0FJUVFocUlRZ2dEa0VJYWlJT0lBOUhEUUFMQ3lBTVFRZHhJZ3hGRFFBRFFDQUxJQWhCTkd4cUlBbzJBaWdnQ0VFQmFpRUlJQTFCQVdvaURTQU1SdzBBQ3dzZ0FpQURjaUFFY2lBRmNrVUVRQ0FHUVFSQm96RkJBQkFUSUFCQ0FEY0NIQ0FBSUFBcEFvQUJOd0lrSUFFZ0NmMEFBZ0Q5Q3dJQUlBRWdCaEEvSVFnTUFRc2dBa0VBU0FSQUlBY2dBallDQUNBR1FRRkJsZUlBSUFjUUUwRUFJUWdNQVFzZ0NTZ0NDQ0lJSUFKSkJFQWdCeUFJTmdJVUlBY2dBallDRUNBR1FRRkI2ZVVBSUFkQkVHb1FFMEVBSVFnTUFRc0NRQ0FKS0FJQUlnZ2dBa3NFUUNBSElBZzJBc1FCSUFjZ0FqWUN3QUVnQmtFQ1Fjbm9BQ0FIUWNBQmFoQVRJQUJCQURZQ0hDQUpLQUlBSVFJTUFRc2dBQ0FDSUFBb0FteHJJQUFvQW5SdU5nSWNDeUFCSUFJMkFnQWdBMEVBU0FSQUlBY2dBellDSUNBR1FRRkIxZUVBSUFkQklHb1FFMEVBSVFnTUFRc2dDU2dDRENJQ0lBTkpCRUFnQnlBQ05nSTBJQWNnQXpZQ01DQUdRUUZCdk9RQUlBZEJNR29RRTBFQUlRZ01BUXNDUUNBSktBSUVJZ0lnQTBzRVFDQUhJQUkyQXJRQklBY2dBellDc0FFZ0JrRUNRWnJuQUNBSFFiQUJhaEFUSUFCQkFEWUNJQ0FKS0FJRUlRTU1BUXNnQUNBRElBQW9BbkJySUFBb0FuaHVOZ0lnQ3lBQklBTTJBZ1JCQUNFSUlBUkJBRXdFUUNBSElBUTJBa0FnQmtFQlFaUGhBQ0FIUVVCckVCTU1BUXNnQ1NnQ0FDSUNJQVJMQkVBZ0J5QUNOZ0pVSUFjZ0JEWUNVQ0FHUVFGQjhPY0FJQWRCMEFCcUVCTU1BUXNDUUNBSktBSUlJZ0lnQkVrRVFDQUhJQUkyQXFRQklBY2dCRFlDb0FFZ0JrRUNRWkhsQUNBSFFhQUJhaEFUSUFBZ0FDZ0NnQUUyQWlRZ0NTZ0NDQ0VFREFFTElBQWdBRFVDZENJUUlBUWdBQ2dDYkd1dGZFSUJmU0FRZ0Q0Q0pBc2dBU0FFTmdJSUlBVkJBRXdFUUNBSElBVTJBbUFnQmtFQlFkRGdBQ0FIUWVBQWFoQVREQUVMSUFrb0FnUWlBaUFGU3dSQUlBY2dBallDZENBSElBVTJBbkFnQmtFQlFjRG1BQ0FIUWZBQWFoQVREQUVMQWtBZ0NTZ0NEQ0lDSUFWSkJFQWdCeUFDTmdLVUFTQUhJQVUyQXBBQklBWkJBa0hqNHdBZ0IwR1FBV29RRXlBQUlBQW9Bb1FCTmdJb0lBa29BZ3doQlF3QkN5QUFJQUExQW5naUVDQUZJQUFvQW5CcnJYeENBWDBnRUlBK0FpZ0xJQUVnQlRZQ0RDQUFJQUF0QUZ4QkFuSTZBRndnQVNBR0VEOUZCRUFNQVFzZ0J5QUIvUUFDQVAwTEJJQUJJQVpCQkVIcE9pQUhRWUFCYWhBVFFRRWhDQXNnQjBIUUFXb2tBQ0FJQzVFQ0FRWi9Jd0JCSUdzaUJTUUFBbjhnQUNnQ1lDSUVSUVJBSUFOQkFVR1Q2d0JCQUJBVFFRQU1BUXRCQUVFRUlBUW9BaEFRRnlJRVJRMEFHaUFCQkVBZ0FDZ0NZQ0VJQTBBQ1FBSkFJQUlnQmtFQ2RHb29BZ0FpQnlBSUtBSVFUd1JBSUFVZ0J6WUNFQ0FEUVFGQjVoSWdCVUVRYWhBVERBRUxJQVFnQjBFQ2RHb2lDU2dDQUVVTkFTQUZJQWMyQWdBZ0EwRUJRZm9hSUFVUUV3c2dCQkFVUVFBTUF3c2dDVUVCTmdJQUlBWkJBV29pQmlBQlJ3MEFDd3NnQkJBVUlBQW9Ba0FRRkFKQUlBRUVRQ0FBSUFGQkFuUWlCQkFZSWdNMkFrQWdBMFVFUUNBQVFRQTJBanhCQUF3REN5QURJQUlnQkJBV0dnd0JDeUFBUVFBMkFrQUxJQUFnQVRZQ1BFRUJDeUFGUVNCcUpBQUxtZ1FCQjM4Z0FVRUJRU1FRRnlJRU5nSmdBa0FDUUNBRVJRMEFBa0FnQVNnQzNBRkJFaUFERUNnRVFDQUJLQUxjQVVFVElBTVFLQTBCQ3d3Q0N5QUJLQUxjQVNJSEtBSUFJUVVnQnlnQ0NDRUdBa0FnQlFSQVFRRWhCQ0FGUVFGeElRZ2dCVUVCUmdSL1FRQUZJQVZCZm5FaEJRTkFBbjlCQUNBRVJRMEFHa0VBSUFFZ0FDQURJQVlvQWdBUkFBQkZEUUFhSUFFZ0FDQURJQVlvQWdRUkFBQkJBRWNMSVFRZ0JrRUlhaUVHSUFsQkFtb2lDU0FGUncwQUN5QUVSUXNoQlVFQUlBUWdDQnNoQkFKQUlBaEZEUUFnQlEwQUlBRWdBQ0FESUFZb0FnQVJBQUJCQUVjaEJBc2dCMEVBTmdJQUlBUU5BUXdEQ3lBSFFRQTJBZ0FMQWtBZ0FTZ0MyQUZCRkNBREVDZ0VRQ0FCS0FMWUFVRVZJQU1RS0EwQkN3d0NDeUFCS0FMWUFTSUhLQUlBSVFVZ0J5Z0NDQ0VHQWtBZ0JRUkFRUUVoQkNBRlFRRnhJUWdnQlVFQlJnUi9RUUFGSUFWQmZuRWhCVUVBSVFrRFFBSi9RUUFnQkVVTkFCcEJBQ0FCSUFBZ0F5QUdLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUdLQUlFRVFBQVFRQkhDeUVFSUFaQkNHb2hCaUFKUVFKcUlna2dCVWNOQUFzZ0JFVUxJUVZCQUNBRUlBZ2JJUVFDUUNBSVJRMEFJQVVOQUNBQklBQWdBeUFHS0FJQUVRQUFRUUJISVFRTElBZEJBRFlDQUNBRURRRU1Bd3NnQjBFQU5nSUFDeUFDUVFGQkpCQVhJZ0EyQWdBZ0FFVU5BQ0FCS0FKZ0lBQVFTRUVCSVFvTElBb1BDeUFCS0FKZ0VDVWdBVUVBTmdKZ1FRQUxBZ0FMQkFCQkFRczBBQUpBSUFCRkRRQWdBVVVOQUNBQUlBRW9BZ1EyQXJ3QklBQWdBU2dDQURZQ3VBRWdBQ0FCS0FLNFFFRUNjVFlDK0FFTEM3UUZBUWgvSUFBb0FoZ2lCQ2dDRUNJSlJRUkFRUUFQQ3lBRUtBSVlJUVVnQUNnQ0ZDZ0NBQ2dDRkNFRUFrQUNRQ0FCUlFSQVFRQWhBUU5BSUFVb0FoZ2hBaUFFS0FJY0lBUW9BaGhCbUFGc2FpSUFRWXdCYXlnQ0FDSUhJQUJCbEFGcktBSUFJZ2hySVFNZ0FFR1FBV3NvQWdBZ0FFR1lBV3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXRCQUNFQklBQW9Ba0JGQkVBRFFDQUZLQUlZSVFJZ0JDZ0NIQ0FFS0FJWVFaZ0JiR29pQUVFRWF5Z0NBQ0lISUFCQkRHc29BZ0FpQ0dzaEF5QUFRUWhyS0FJQUlBQkJFR3NvQWdCcklRQUNRQ0FISUFoR0RRQWdBSzBnQTYxK1FpQ0lVQTBBREFRTElBQWdBMndoQXdKQVFRUWdBa0VEZGlBQ1FRZHhRUUJIYWlJQUlBQkJBMFliSWdKRkRRQWdBcTBnQTYxK1FpQ0lVQTBBREFRTFFYOGhBQ0FDSUFOc0lnSWdBVUYvYzBzTkFpQUVRY3dBYWlFRUlBVkJOR29oQlNBQklBSnFJZ0VoQUNBR1FRRnFJZ1lnQ1VjTkFBc01BUXNEUUNBRktBSVlJUUlnQkNnQ0hDQUVLQUlZUVpnQmJHb2lBRUdNQVdzb0FnQWlCeUFBUVpRQmF5Z0NBQ0lJYXlFRElBQkJrQUZyS0FJQUlBQkJtQUZyS0FJQWF5RUFBa0FnQnlBSVJnMEFJQUN0SUFPdGZrSWdpRkFOQUF3REN5QUFJQU5zSVFNQ1FFRUVJQUpCQTNZZ0FrRUhjVUVBUjJvaUFDQUFRUU5HR3lJQ1JRMEFJQUt0SUFPdGZrSWdpRkFOQUF3REMwRi9JUUFnQWlBRGJDSUNJQUZCZjNOTERRRWdCRUhNQUdvaEJDQUZRVFJxSVFVZ0FTQUNhaUlCSVFBZ0JrRUJhaUlHSUFsSERRQUxDeUFBRHd0QmZ3dmFCQUVMZnlBQUJFQWdBQ2dDRkNJQkJFQWdBU2dDQUNJRkJFQWdCU2dDRkNFRElBVW9BaEFFZjBFUVFSRWdBQzBBS0VFQmNSc2hDQU5BSUFNb0Fod2lBZ1JBSUFNb0FpQWlBVUdZQVc0aENrRUFJUWtnQVVHWUFVOEVmd05BSUFJb0FqQWlBUVJBSUFJb0FqUWlCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ01BVWdBUXNRRkNBQ1FRQTJBakFMSUFJb0FsUWlBUVJBSUFJb0FsZ2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ1ZBVWdBUXNRRkNBQ1FRQTJBbFFMSUFJb0FuZ2lBUVJBSUFJb0Fud2lCa0VvYmlFSFFRQWhCQ0FHUVNoUEJIOERRQ0FCS0FJZ0VDNGdBVUVBTmdJZ0lBRW9BaVFRTGlBQlFRQTJBaVFnQVNBSUVRSUFJQUZCS0dvaEFTQUVRUUZxSWdRZ0IwY05BQXNnQWlnQ2VBVWdBUXNRRkNBQ1FRQTJBbmdMSUFKQm1BRnFJUUlnQ1VFQmFpSUpJQXBIRFFBTElBTW9BaHdGSUFJTEVCUWdBMEVBTmdJY0N3SkFJQU1vQWloRkRRQWdBeWdDSkNJQlJRMEFJQUVRRkNBRC9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NKQXNnQXlnQ05CQVVJQU5CekFCcUlRTWdDMEVCYWlJTElBVW9BaEJKRFFBTElBVW9BaFFGSUFNTEVCUWdCVUVBTmdJVUlBQW9BaFFvQWdBUUZDQUFLQUlVSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDRkFzZ0FDZ0NSQkFVSUFBUUZBc0wyUk1CRVg4akFFRWdheUlQSkFBZ0R5QUZOZ0lZSUFFZ0F5Z0NIRUhNQUd4cUtBSWNJQU1vQWlCQm1BRnNhaUVRQWtBQ1FDQURLQUlvRFFBZ0VDZ0NHRVVOQUNBUVFSeHFJUWtEUUFKQUlBa29BZ2dnQ1NnQ0FFY0VmeUFKS0FJTUlBa29BZ1JHQlVFQkN3MEFJQU1vQWlRaUFTQUpLQUlZUVNodVR3UkFJQWhCQVVIdkZVRUFFQk1NQkFzZ0NTZ0NGQ0FCUVNoc2FpSUJLQUlnRUdzZ0FTZ0NKQkJySUFFb0FoUWdBU2dDRUd3aURFVU5BQ0FCS0FJWUlRRWdERUVJVHdSQUlBeEJlSEVoQzBFQUlRb0RRQ0FCUWdBM0FvUUVJQUZDQURjQ3dBTWdBVUlBTndMOEFpQUJRZ0EzQXJnQ0lBRkNBRGNDOUFFZ0FVSUFOd0t3QVNBQlFnQTNBbXdnQVVJQU53SW9JQUZCb0FScUlRRWdDa0VJYWlJS0lBdEhEUUFMQzBFQUlRb2dERUVIY1NJTVJRMEFBMEFnQVVJQU53SW9JQUZCeEFCcUlRRWdDa0VCYWlJS0lBeEhEUUFMQ3lBSlFTUnFJUWtnRFVFQmFpSU5JQkFvQWhoSkRRQUxDeUFGSVF3Q1FDQUNMUUFBUVFKeFJRMEFJQWRCQlUwRVFDQUlRUUpCdnlCQkFCQVREQUVMQWtBZ0JTMEFBRUgvQVVZRVFDQUZMUUFCUVpFQlJnMEJDeUFJUVFKQjZTQkJBQkFUREFFTElBOGdCVUVHYWlJTU5nSVlDMEVVRUJnaUMwVU5BQUovSUFBdEFHeEJBWEVFUUNBQVFTaHFJUkVnQUNnQ0tDRU1JQUJCTEdvTUFRc2dBaTBBaUN4QkFuRUVRQ0FDUWJBb2FpRVJJQUlvQXJBb0lRd2dBa0c4S0dvTUFRc2dEeUFGSUFkcUlBeHJOZ0ljSUE5QkdHb2hFU0FQUVJ4cUN5SVNLQUlBSVFBZ0MwSUFOd0lNSUFzZ0REWUNDQ0FMSUF3MkFnQWdDeUFBSUF4cU5nSUVJQXRCQVJBalJRUkFJQXNRYlJvZ0N5Z0NDQ0FMS0FJQWF5QUxFRElnREdvaEFDQVJLQUlBSVFFZ0VpQVNLQUlBSWdNZ0FpMEFBRUVFY1FSL0lBTWdBR3NnQVdwQkFVMEVRQ0FJUVFGQm9TSkJBQkFUREFNTEFrQWdBQzBBQUVIL0FVWUVRQ0FBTFFBQlFaSUJSZzBCQ3lBSVFRRkJqQ0pCQUJBVERBTUxJQUJCQW1vRklBQUxJQUZySWdCck5nSUFJQkVnQUNBQmFqWUNBQ0FFUVFBMkFnQWdCaUFQS0FJWUlBVnJOZ0lBUVFFaEZ3d0JDeUFRS0FJWUJFQWdFRUVjYWlFSEEwQWdBeWdDSkNFQUlBY29BaFFoQVFKQUlBY29BZ2dnQnlnQ0FFY0VmeUFIS0FJTUlBY29BZ1JHQlVFQkN3MEFJQUVnQUVFb2JHb2lGQ2dDRkNBVUtBSVFiQ0lZUlEwQUlCUW9BaGdoQ1VFQUlSVURRQUpBQW44Z0NTZ0NLRVVFUUNBTElCUW9BaUFnRlNBREtBSW9RUUZxRUdrTUFRc2dDMEVCRUNNTFJRUkFJQWxCQURZQ0pBd0JDeUFKS0FJb1JRUkFRUUFoQVFOQUlBRWlBRUVCYWlFQklBc2dGQ2dDSkNBVklBQVFhVVVOQUFzZ0J5Z0NIQ0VCSUFsQkF6WUNJQ0FKSUFFMkFoZ2dDU0FCSUFCclFRRnFOZ0ljQ3lBSkFuOUJBU0FMUVFFUUkwVU5BQnBCQWlBTFFRRVFJMFVOQUJvZ0MwRUNFQ01pQUVFRFJ3UkFJQUJCQTJvTUFRc2dDMEVGRUNNaUFFRWZSd1JBSUFCQkJtb01BUXNnQzBFSEVDTkJKV29MTmdJa1FRQWhBUU5BSUFFaUFFRUJhaUVCSUF0QkFSQWpEUUFMSUFrZ0NTZ0NJQ0FBYWpZQ0lBSkFBa0FDZnlBSktBSW9JZ0JGQkVBZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRQWdDU2dDTUVVRVFDQUpLQUlBUWZBQkVCc2lBVVVOQkNBSklBRTJBZ0FnQVNBSktBSXdRUmhzYWtFQVFmQUJFQmthSUFsQkNqWUNNQXNnQ1NnQ0FDSUtJZ0g5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJQUlBRkNBRGNDRUVFQlFRcEI3UUFnQUVFQmNSc2dBRUVFY1JzaEFVRUFEQUVMSUFrb0FnQWlBU0FBUVFGcklnMUJHR3hxSWdvb0FnUWdDaWdDREVjTkFTQUNLQUxRS3lBREtBSWNRYmdJYkdvb0FoQWhEU0FKS0FJd0lnb2dBRUVCYWtrRWZ5QUJJQXBCQ21vaUNrRVliQkFiSWdGRkRRTWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBWkdpQUpJQW8yQWpBZ0NTZ0NBQVVnQVFzZ0FFRVliR29pQ2lJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQUNmMEVCSUExQkJIRU5BQnBCN1FBZ0RVRUJjVVVOQUJwQkFrRUNRUUVnQ2tFTWF5Z0NBQ0lCUVFwR0d5QUJRUUZHR3dzaEFTQUFDeUVOSUFvZ0FUWUNEQXNnQ1NnQ0pDRUFJQUlvQXRBcklBTW9BaHhCdUFoc2FpMEFFRUhBQUhFRVFBTkFJQTFCR0d3aURpQUpLQUlBYWlBQVFRRWdEUnNpRXpZQ0VDQUpLQUlnSVJaQkFDRUtJQUFoQVNBVFFRSlBCRUFEUUNBS1FRRnFJUW9nQVVFRFN5QUJRUUYySVFFTkFBc0xJQW9nRm1vaUFVRWhUd1JBSUE4Z0FUWUNFQ0FJUVFGQml2a0FJQTlCRUdvUUV3d0RDeUFMSUFFUUl5RUtJQWtvQWdBaUFTQU9haUlPSUFvMkFoUWdBQ0FPS0FJUWF5SUFRUUJNRFFNZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJT0lBMUJBbXBKQkVBZ0FTQU9RUXBxSWc1QkdHd1FHeUlCUlEwRElBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRR1JvZ0NTQU9OZ0l3SUFrb0FnQWhBUXNnQVNBTlFRRnFJZzFCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQ0FLUVFSeEJFQWdBVUVCTmdJTURBRUxJQXBCQVhFRVFDQUJRUUpCQWtFQklBRkJER3NvQWdBaUFVRUtSaHNnQVVFQlJoczJBZ3dGSUFGQjdRQTJBZ3dMREFBTEFBc0RRQ0FOUVJoc0lnNGdDU2dDQUdvaUFTQUJLQUlNSUFFb0FnUnJJZ0VnQUNBQUlBRktHeUlCTmdJUUlBa29BaUFoRTBFQUlRb2dBVUVDVHdSQUEwQWdDa0VCYWlFS0lBRkJBMHNnQVVFQmRpRUJEUUFMQ3lBS0lCTnFJZ0ZCSVU4RVFDQVBJQUUyQWdBZ0NFRUJRWXI1QUNBUEVCTU1BZ3NnQ3lBQkVDTWhDaUFKS0FJQUlnRWdEbW9pRGlBS05nSVVJQUFnRGlnQ0VHc2lBRUVBVEEwQ0lBSW9BdEFySUFNb0FoeEJ1QWhzYWlnQ0VDRUtJQWtvQWpBaURpQU5RUUpxU1FSQUlBRWdEa0VLYWlJT1FSaHNFQnNpQVVVTkFpQUpJQUUyQWdBZ0FTQUpLQUl3UVJoc2FrRUFRZkFCRUJrYUlBa2dEallDTUNBSktBSUFJUUVMSUFFZ0RVRUJhaUlOUVJoc2FpSUIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDQUNBQlFnQTNBaEFnQ2tFRWNRUkFJQUZCQVRZQ0RBd0JDeUFLUVFGeEJFQWdBVUVDUVFKQkFTQUJRUXhyS0FJQUlnRkJDa1liSUFGQkFVWWJOZ0lNQlNBQlFlMEFOZ0lNQ3d3QUN3QUxJQXNRTWd3RkN5QUpRY1FBYWlFSklCVkJBV29pRlNBWVJ3MEFDd3NnQjBFa2FpRUhJQmxCQVdvaUdTQVFLQUlZU1EwQUN3c2dDeEJ0UlFSQUlBc1FNZ3dCQ3lBTEtBSUlJQXNvQWdCcklBc1FNaUFNYWlFQklCRW9BZ0FoQUNBQ0xRQUFRUVJ4QkVBZ0VpZ0NBQ0FCYXlBQWFrRUJUUVJBSUFoQkFVR2hJa0VBRUJNTUFnc0NRQ0FCTFFBQVFmOEJSZ1JBSUFFdEFBRkJrZ0ZHRFFFTElBaEJBVUdNSWtFQUVCTU1BZ3NnQVVFQ2FpRUJDeUFBSUFGR0RRQWdFaUFTS0FJQUlBQWdBV3RxTmdJQUlCRWdBVFlDQUVFQklSY2dCRUVCTmdJQUlBWWdEeWdDR0NBRmF6WUNBQXNnRDBFZ2FpUUFJQmNMbHlRQ0ZIOE9mZ0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUNnQ1ZBNEZBQUVDQXdRS0N3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUJ5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFZYkNBRUVBRUJNTURBc2dBQ2dDTEVVRVFDQUFLQUlrSVFKQkFDRUJEQVVMSUFCQkFEWUNMQ0FBS0FKRUlRTkJBU0VCREFRTEFrQWdBQ2dDTkNJR0lBQW9Bc1FCSWdGSkJFQWdBQ2dDUUNJSElBRkJBV3BKRFFFTElBQW9BdXdCUVFGQnM4SUFRUUFRRXd3TEN5QUFLQUlzUlFSQUlBQW9BaVFoQkVFQUlRRU1DQXNnQUVFQU5nSXNJQUFvQWpBaEEwRUJJUUVNQndzQ1FDQUFLQUkwSWdRZ0FDZ0N4QUVpQ2trRVFDQUFLQUpBSWc0Z0NrRUJha2tOQVFzZ0FDZ0M3QUZCQVVHNnd3QkJBQkFUREFvTElBQW9BaXhGQkVBZ0FDZ0NLQ0VMREFZTElBQkNBRGNDNUFFZ0FFRUFOZ0lzSUFBb0FzZ0JJUXdEUUNBTUlBZEJCSFJxSWdVb0FnZ2lEd1JBSUFVb0Fnd2hFa0VBSVFFRFFBSkFJQThnQVVGL2Myb2lFQ0FTSUFGQkJIUnFJaEVvQWdCcUlnbEJIMHNOQUNBRktBSUFJaE5CZnlBSmRrc05BQ0FBSUFJZ0V5QUpkQ0lKSUFJZ0NVa2JJQWtnQWhzaUFqWUM1QUVMQWtBZ0VTZ0NCQ0FRYWlJSlFSOUxEUUFnQlNnQ0JDSVFRWDhnQ1haTERRQWdBQ0FESUJBZ0NYUWlDU0FESUFsSkd5QUpJQU1iSWdNMkF1Z0JDeUFCUVFGcUlnRWdEMGNOQUFzTElBZEJBV29pQnlBS1J3MEFDeUFDUlEwSElBTkZEUWNnQUMwQUFFVUVRQ0FBSUFBb0F0QUJOZ0pzSUFBZ0FDZ0N6QUUyQW1RZ0FDQUFLQUxZQVRZQ2NDQUFJQUFvQXRRQk5nSm9DeUFBS0FJd0lRVkJBU0VCREFVTEFrQWdBQ2dDTkNJRklBQW9Bc1FCSWdsSkJFQWdBQ2dDUUNJU0lBbEJBV3BKRFFFTElBQW9BdXdCUVFGQmpjTUFRUUFRRXd3SkN5QUFLQUlzUlFSQUlBQW9Bc2dCSWcwZ0FDZ0NIQ0lFUVFSMGFpRUxJQUFvQWlnaENBd0VDeUFBUWdBM0F1UUJJQUJCQURZQ0xDQUFLQUxJQVNFTkEwQWdEU0FHUVFSMGFpSUtLQUlJSWc0RVFDQUtLQUlNSVJCQkFDRUJBMEFDUUNBT0lBRkJmM05xSWhFZ0VDQUJRUVIwYWlJVEtBSUFhaUlNUVI5TERRQWdDaWdDQUNJVVFYOGdESFpMRFFBZ0FDQUNJQlFnREhRaURDQUNJQXhKR3lBTUlBSWJJZ0kyQXVRQkN3SkFJQk1vQWdRZ0VXb2lERUVmU3cwQUlBb29BZ1FpRVVGL0lBeDJTdzBBSUFBZ0F5QVJJQXgwSWd3Z0F5QU1TUnNnRENBREd5SUROZ0xvQVFzZ0FVRUJhaUlCSUE1SERRQUxDeUFHUVFGcUlnWWdDVWNOQUFzZ0FrVU5CaUFEUlEwR0FrQWdBQzBBQUFSQUlBQW9BbXdoQmd3QkN5QUFJQUFvQXRBQklnWTJBbXdnQUNBQUtBTE1BVFlDWkNBQUlBQW9BdGdCTmdKd0lBQWdBQ2dDMUFFMkFtZ0xRUUVoQVF3REN3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUR5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFlRENBRUVBRUJNTUJnc2dBQ2dDTEVVRVFDQUFLQUxJQVNBQUtBSWNJZ1pCQkhScUlRVWdBQ2dDS0NFSFFRQWhBUXdDQ3lBQUlBWTJBaHdnQUVFQU5nSXNRUUVoQVF3QkN3TkFBbjhDUUNBQlJRUkFJQUpCQVdvaEFnd0JDeUFBSUFNMkFpZ2dBQ2dDT0NBRFRRMEpJQUFvQWpBaEJFRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUVOZ0lnSUFRZ0FDZ0NQRThOQVNBQUlBWTJBaHdnQmlFQlFRQWhCUXdFQ3lBQUlBSTJBaVFnQUNnQ1RDQUNUUVJBSUFBb0Fod2hBVUVCSVFVTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBQW9BaWhzYWlBQUtBSVVJQUFvQWh4c2FpQUFLQUlZSUFKc2FpSUJJQUFvQWdoUEJFQU1EQXNnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNRFFzZ0FDZ0NLRUVCYWlFRERBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUNBRlJRUkFJQUVnQjA4TkFTQUFLQUlnSWdVZ0FDZ0N5QUVnQVVFRWRHb2lEU2dDQ0U4TkF5QUFMUUFBUlFSQUlBQWdEU2dDRENBRlFRUjBhaUlCS0FJTUlBRW9BZ2hzTmdKTUN5QUFLQUpJSVFKQkFTRUJEQVVMSUFBZ0FVRUJhaUlCTmdJY0RBRUxJQUFvQWlCQkFXb2hCRUVBSVFFTUF3dEJBQ0VGREFFTFFRRWhCUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0IwRUJhaUlITmdJb0RBRUxJQVlnRDA4TkNDQUFRZ0EzQXVRQklBQW9Bc2dCSUFaQkJIUnFJZ1VvQWdnaUMwVU5DQ0FGS0FJTUlRcEJBQ0VDUVFBaEJFRUFJUUVEUUFKQUlBc2dBVUYvYzJvaUNTQUtJQUZCQkhScUlnNG9BZ0JxSWdoQkgwc05BQ0FGS0FJQUlneEJmeUFJZGtzTkFDQUFJQVFnRENBSWRDSUlJQVFnQ0VrYklBZ2dCQnNpQkRZQzVBRUxBa0FnRGlnQ0JDQUphaUlJUVI5TERRQWdCU2dDQkNJSlFYOGdDSFpMRFFBZ0FDQUNJQWtnQ0hRaUNDQUNJQWhKR3lBSUlBSWJJZ0kyQXVnQkN5QUJRUUZxSWdFZ0MwY05BQXNnQkVVTkJpQUNSUTBHQWtBZ0FDMEFBQVJBSUFBb0Ftd2hBZ3dCQ3lBQUlBQW9BdEFCSWdJMkFtd2dBQ0FBS0FMTUFUWUNaQ0FBSUFBb0F0Z0JOZ0p3SUFBZ0FDZ0MxQUUyQW1nTFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBSTJBdUFCSUFJZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0IwMEVRQ0FBS0FJZ0lRTkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBSGJHb2dBQ2dDRkNBR2JHb2dBQ2dDR0NBQUtBSWtiR29pQVNBQUtBSUlUd1JBREFzTElBQW9BZ1FnQVVFQmRHb2lBUzhCQUEwQkRBd0xJQUFnQmtFQmFpSUdOZ0ljREFFTFFRQWhBUXdEQzBFQklRRU1BZ3NEUUFKQUFrQUNRQ0FBQW44Z0FVVUVRQ0FBSUEwMkF0d0JJQTBnQUNnQ2FFOE5BaUFBS0FJd0RBRUxJQU5CQVdvTElnTTJBaUFnQUNnQ1BDSUJJQVVvQWdnaUJDQUJJQVJKR3lBRFN3UkFJQVVvQWdBaUFTQUJyU0llSUFRZ0EwRi9jMm9pQ0swaUZvWWlGeUFXaUtkSERRTWdCU2dDQkNJRVFuOGdGb2luY1NBRVJ3MERJQVN0SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlDYTE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlEcTE4SUJlQUlSd2dBVUovSUFVb0Fnd2dBMEVFZEdvaUN5Z0NBQ0lLSUFocXJTSWRpS2R4SUFGSERRTWdCQ0FWSUFzb0FnUWlBU0FJYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUJLMGlJaUFoZ2tJQVVnUkFJQVFnQ1VjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQkswaUZTQWVJQjJHZ2tJQVVnUkFJQVFnRGtjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0N5Z0NDQ0lFUlEwRElBc29BZ3hGRFFNZ0hLY2lDeUFncDBZTkF5QWFweUlJSUIrblJnMERJQUFnQUNnQ1JDSUhOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0NuWWdDeUFLZG1zZ0dTQWlmQ0FZZ0tjZ0FYWWdDQ0FCZG1zZ0JHeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnUnFJQUVnQkhCcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUVhaUFCSUFSd2F5RUNRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQUNBSVFRRnFJZ2cyQWlnTUFRc2dBQ0FHTmdMZ0FTQUFLQUp3SUFaTkRRY2dBQ2dDWkNFUFFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBODJBdHdCSUE4Z0FDZ0NhRThOQVNBQUlBVTJBaHdnQlNFRVFRQWhBUXdFQ3lBQUtBSTRJQWhOQkVBZ0FDZ0NJQ0VIUVFFaEFRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dDR3hxSUFBb0FoUWdCR3hxSUFBb0FoZ2dBQ2dDSkd4cUlnRWdBQ2dDQ0U4RVFBd0tDeUFBS0FJRUlBRkJBWFJxSWdFdkFRQU5BUXdMQ3lBQUtBTGdBU0lCSUFBb0F1Z0JJZ1pxSUFFZ0JuQnJJUVlNQVF0QkFDRUJEQU1MUVFFaEFRd0NDd05BQWtBQ1FBSkFBa0FnQVVVRVFDQUVJQkpQRFFJZ0FDQUFLQUl3SWdjMkFpQWdEU0FFUVFSMGFpRUxEQUVMSUFBZ0IwRUJhaUlITmdJZ0N5QUFLQUk4SWdFZ0N5Z0NDQ0lDSUFFZ0Fra2JJQWRMQkVBZ0N5Z0NBQ0lCSUFHdEloNGdBaUFIUVg5emFpSUtyU0lXaGlJWElCYUlwMGNOQXlBTEtBSUVJZ0pDZnlBV2lLZHhJQUpIRFFNZ0FxMGlGU0FXaGlJWVFnRjlJaGtnQURVQzJBRjhJQmlBSVI4Z0dTQUFLQUxRQVNJT3JYd2dHSUFoR2lBWFFnRjlJaHNnQURVQzFBRjhJQmVBSVNBZ0d5QUFLQUxNQVNJTXJYd2dGNEFoSENBQlFuOGdDeWdDRENBSFFRUjBhaUlES0FJQUlna2dDbXF0SWgySXAzRWdBVWNOQXlBQ0lCVWdBeWdDQkNJQklBcHFyU0lWaGlJaElCV0lwMGNOQXlBQUtBTGdBU0lDclNJaUlDR0NRZ0JTQkVBZ0FpQU9SdzBFUW44Z0ZZWkNmNFVnR2tMLy8vLy9ENE1nRm9hRFVBMEVDeUFBS0FMY0FTSUNyU0lWSUI0Z0hZYUNRZ0JTQkVBZ0FpQU1SdzBFUW44Z0hZWkNmNFVnSEVMLy8vLy9ENE1nRm9hRFVBMEVDeUFES0FJSUlnSkZEUU1nQXlnQ0RFVU5BeUFjcHlJRElDQ25SZzBESUJxbklnb2dINmRHRFFNZ0FDQUFLQUpFSWdnMkFpZ2dBQ0FWSUJ0OElCZUFweUFKZGlBRElBbDJheUFaSUNKOElCaUFweUFCZGlBS0lBRjJheUFDYkdvMkFpUkJBU0VCREFVTElBQWdCRUVCYWlJRU5nSWNEQUVMSUFBb0F0d0JJZ0VnQUNnQzVBRWlBbW9nQVNBQ2NHc2hEMEVBSVFFTUF3dEJBQ0VCREFFTFFRRWhBUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0MwRUJhaUlMTmdJb0RBRUxJQUFnQlRZQ0lDQUFLQUk4SUFWTkRRWWdBQ2dDYkNFSVFRQU1BUXRCQVFzaEFRTkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBZzJBdUFCSUFnZ0FDZ0NjRThOQVNBQUtBSmtJUTFCQUNFQkRBUUxJQUFvQWpnZ0MwMEVRQ0FBS0FJY0lRWkJBU0VCREFRTElBQW9BaEFnQUNnQ0lHd2dBQ2dDRENBTGJHb2dBQ2dDRkNBQUtBSWNiR29nQUNnQ0dDQUFLQUlrYkdvaUFTQUFLQUlJVHdSQURBa0xJQUFvQWdRZ0FVRUJkR29pQVM4QkFBMEJEQW9MSUFBb0FpQkJBV29oQlF3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQUFnRFRZQzNBRWdEU0FBS0FKb1R3MENJQUFnQkRZQ0hDQUVJUVlNQVFzZ0FDQUdRUUZxSWdZMkFod0xJQVlnRGtrRVFDQUFLQUlnSWdjZ0FDZ0N5QUVnQmtFRWRHb2lBU2dDQ0NJRFR3MERJQUVvQWdBaUFpQUNyU0llSUFNZ0IwRi9jMm9pQ3EwaUZvWWlGeUFXaUtkSERRTWdBU2dDQkNJRFFuOGdGb2luY1NBRFJ3MERJQU90SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlENjE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlDYTE4SUJlQUlSd2dBa0ovSUFFb0Fnd2dCMEVFZEdvaUFTZ0NBQ0lISUFwcXJTSWRpS2R4SUFKSERRTWdBeUFWSUFFb0FnUWlBaUFLYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUE2MGlJaUFoZ2tJQVVnUkFJQU1nRDBjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQTYwaUZTQWVJQjJHZ2tJQVVnUkFJQU1nQ1VjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0FTZ0NDQ0lEUlEwRElBRW9BZ3hGRFFNZ0hLY2lBU0FncDBZTkF5QWFweUlLSUIrblJnMERJQUFnQUNnQ1JDSUxOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0IzWWdBU0FIZG1zZ0dTQWlmQ0FZZ0tjZ0FuWWdDaUFDZG1zZ0EyeHFOZ0lrUVFFaEFRd0ZDeUFBS0FMY0FTSUJJQUFvQXVRQklnSnFJQUVnQW5CcklRME1BUXNnQUNnQzRBRWlBU0FBS0FMb0FTSUNhaUFCSUFKd2F5RUlRUUFoQVF3REMwRUFJUUVNQVF0QkFTRUJEQUFMQUFzQUN3QUxBMEFDZndKQUlBRkZCRUFnQkVFQmFpRUVEQUVMSUFBZ0F6WUNJQ0FBS0FJOElBTk5EUVVnQUNnQ1JDRUNRUUFNQVF0QkFRc2hBUU5BQWtBQ1FBSkFBa0FnQVVVRVFDQUFJQUkyQWlnZ0FpQUFLQUk0VHcwQklBQWdCallDSENBR0lRRkJBQ0VGREFRTElBQWdCRFlDSkNBQUtBSk1JQVJOQkVBZ0FDZ0NIQ0VCUVFFaEJRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dBQ2dDS0d4cUlBQW9BaFFnQUNnQ0hHeHFJQUFvQWhnZ0JHeHFJZ0VnQUNnQ0NFOEVRQXdJQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3SkN5QUFLQUlnUVFGcUlRTU1BUXRCQUNFQkRBTUxRUUVoQVF3Q0N3TkFBa0FDUUFKQUlBVkZCRUFnQVNBSFR3MEJJQUFvQWlBaUJTQUFLQUxJQVNBQlFRUjBhaUlOS0FJSVR3MERJQUF0QUFCRkJFQWdBQ0FOS0FJTUlBVkJCSFJxSWdFb0Fnd2dBU2dDQ0d3MkFrd0xJQUFvQWtnaEJFRUJJUUVNQlFzZ0FDQUJRUUZxSWdFMkFod01BUXNnQUNnQ0tFRUJhaUVDUVFBaEFRd0RDMEVBSVFVTUFRdEJBU0VGREFBTEFBc0FDd0FMUVFBUEN5QUFLQUxzQVVFQlFab0tRUUFRRXd0QkFBOExJQUZCQVRzQkFFRUJDNVlMQVFwL0FrQWdBU2dDQUNBRVFRTnNJZ3gySWdaQmtJQ0FBWEVOQUNBQUlBQkJIR29pRGlBQUtBSnNJQVpCN3dOeGFpMEFBRUVDZEdvaUNqWUNhQ0FBSUFBb0FnUWdDaWdDQUNJSktBSUFJZ2hySWdZMkFnUUNRQ0FJSUFBb0FnQWlCMEVRZGtzRVFDQUpLQUlFSVFzZ0FDQUlOZ0lFSUFvZ0NVRUlRUXdnQmlBSVNTSUdHMm9vQWdBMkFnQWdDeUFMUlNBR0d5RUpJQUFvQWdnaEJnTkFBa0FnQmcwQUlBQW9BaEFpQmtFQmFpRUxJQVl0QUFFaENpQUdMUUFBUWY4QlJnUkFJQXBCa0FGUEJFQWdBQ0FBS0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaEJnd0NDeUFBSUFzMkFoQWdCeUFLUVFsMGFpRUhRUWNoQmd3QkN5QUFJQXMyQWhCQkNDRUdJQWNnQ2tFSWRHb2hCd3NnQUNBR1FRRnJJZ1kyQWdnZ0FDQUhRUUYwSWdjMkFnQWdBQ0FJUVFGMElnZzJBZ1FnQ0VHQWdBSkpEUUFMSUFnaEJnd0JDeUFBSUFjZ0NFRVFkR3NpQnpZQ0FDQUdRWUNBQW5GRkJFQWdDU2dDQkNFTElBb2dDVUVNUVFnZ0JpQUlTU0lJRzJvb0FnQTJBZ0FnQzBVZ0N5QUlHeUVKSUFBb0FnZ2hDQU5BQWtBZ0NBMEFJQUFvQWhBaUNFRUJhaUVMSUFndEFBRWhDaUFJTFFBQVFmOEJSZ1JBSUFwQmtBRlBCRUFnQUNBQUtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBQUlBczJBaEFnQnlBS1FRbDBhaUVIUVFjaENBd0JDeUFBSUFzMkFoQkJDQ0VJSUFjZ0NrRUlkR29oQndzZ0FDQUlRUUZySWdnMkFnZ2dBQ0FIUVFGMElnYzJBZ0FnQUNBR1FRRjBJZ1kyQWdRZ0JrR0FnQUpKRFFBTERBRUxJQWtvQWdRaENRc2dDVVVOQUNBQUlBNGdBU2dDQkNBTVFSRnFka0VFY1NBQlFRUnJJZzBvQWdBZ0RFRVRhblpCQVhFZ0FTZ0NBQ0lJSUF4QkVHcDJRY0FBY1NBSUlBeDJRYW9CY1hJZ0NDQU1RUXhxUVE0Z0JCdDJRUkJ4Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ3pZQ2FDQUFJQVlnQ3lnQ0FDSUtLQUlBSWdocklnWTJBZ1FDUUNBSUlBZEJFSFpMQkVBZ0NpZ0NCQ0VKSUFBZ0NEWUNCQ0FMSUFwQkNFRU1JQVlnQ0VraUJodHFLQUlBTmdJQUlBa2dDVVVnQmhzaENpQUFLQUlJSVFZRFFBSkFJQVlOQUNBQUtBSVFJZ1pCQVdvaEN5QUdMUUFCSVFrZ0JpMEFBRUgvQVVZRVFDQUpRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFZTUFnc2dBQ0FMTmdJUUlBY2dDVUVKZEdvaEIwRUhJUVlNQVFzZ0FDQUxOZ0lRUVFnaEJpQUhJQWxCQ0hScUlRY0xJQUFnQmtFQmF5SUdOZ0lJSUFBZ0IwRUJkQ0lITmdJQUlBQWdDRUVCZENJSU5nSUVJQWhCZ0lBQ1NRMEFDd3dCQ3lBQUlBY2dDRUVRZEdzaUNUWUNBQ0FHUVlDQUFuRkZCRUFnQ2lnQ0JDRUhJQXNnQ2tFTVFRZ2dCaUFJU1NJSUcyb29BZ0EyQWdBZ0IwVWdCeUFJR3lFS0lBQW9BZ2doQndOQUFrQWdCdzBBSUFBb0FoQWlCMEVCYWlFTElBY3RBQUVoQ0NBSExRQUFRZjhCUmdSQUlBaEJrQUZQQkVBZ0FDQUFLQUlNUVFGcU5nSU1JQWxCZ1A0RGFpRUpRUWdoQnd3Q0N5QUFJQXMyQWhBZ0NTQUlRUWwwYWlFSlFRY2hCd3dCQ3lBQUlBczJBaEJCQ0NFSElBa2dDRUVJZEdvaENRc2dBQ0FIUVFGcklnYzJBZ2dnQUNBSlFRRjBJZ2syQWdBZ0FDQUdRUUYwSWdZMkFnUWdCa0dBZ0FKSkRRQUxEQUVMSUFvb0FnUWhDZ3NnQWlBRFFRQWdBMnNnQ2lBUFFaREFBV290QUFBaUFrWWJOZ0lBSUEwZ0RTZ0NBRUVnSUF4MGNqWUNBQ0FCSUFFb0FnQWdBaUFLY3lJRFFSTjBRUkJ5SUF4MGNqWUNBQ0FCSUFFb0FnUkJDQ0FNZEhJMkFnUWdCQ0FGY2tVRVFDQUJRWDRnQUNnQ2ZHdEJBblJxSWdJZ0FpZ0NCRUdBZ0FKeU5nSUVJQUlnQWlnQ0FDQURRUjkwY2tHQWdBUnlOZ0lBSUFKQkJHc2lBaUFDS0FJQVFZQ0FDSEkyQWdBTElBUkJBMGNOQUNBQklBQW9BbnhCQW5ScUlnQkJCR29nQUNnQ0JFRUVjallDQUNBQUlBQW9BZ3hCQVhJMkFnd2dBQ0FBS0FJSUlBTkJFblJ5UVFKeU5nSUlDd3V1Q3dFSmZ3SkFJQUVvQWdBZ0JFRURiQ0lOZGlJSFFaQ0FnQUZ4RFFBZ0IwSHZBM0VpQjBVTkFDQUFJQUJCSEdvaURpQUFLQUpzSUFkcUxRQUFRUUowYWlJTE5nSm9JQUFnQUNnQ0JDQUxLQUlBSWdvb0FnQWlDV3NpQnpZQ0JBSkFJQWtnQUNnQ0FDSUlRUkIyU3dSQUlBb29BZ1FoRENBQUlBazJBZ1FnQ3lBS1FRaEJEQ0FISUFsSklnY2JhaWdDQURZQ0FDQU1JQXhGSUFjYklRb2dBQ2dDQ0NFSEEwQUNRQ0FIRFFBZ0FDZ0NFQ0lIUVFGcUlRd2dCeTBBQVNFTElBY3RBQUJCL3dGR0JFQWdDMEdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ0VHQS9nTnFJUWhCQ0NFSERBSUxJQUFnRERZQ0VDQUlJQXRCQ1hScUlRaEJCeUVIREFFTElBQWdERFlDRUVFSUlRY2dDQ0FMUVFoMGFpRUlDeUFBSUFkQkFXc2lCellDQ0NBQUlBaEJBWFFpQ0RZQ0FDQUFJQWxCQVhRaUNUWUNCQ0FKUVlDQUFra05BQXNnQ1NFSERBRUxJQUFnQ0NBSlFSQjBheUlJTmdJQUlBZEJnSUFDY1VVRVFDQUtLQUlFSVF3Z0N5QUtRUXhCQ0NBSElBbEpJZ2tiYWlnQ0FEWUNBQ0FNUlNBTUlBa2JJUW9nQUNnQ0NDRUpBMEFDUUNBSkRRQWdBQ2dDRUNJSlFRRnFJUXdnQ1MwQUFTRUxJQWt0QUFCQi93RkdCRUFnQzBHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUpEQUlMSUFBZ0REWUNFQ0FJSUF0QkNYUnFJUWhCQnlFSkRBRUxJQUFnRERZQ0VFRUlJUWtnQ0NBTFFRaDBhaUVJQ3lBQUlBbEJBV3NpQ1RZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFkQkFYUWlCellDQkNBSFFZQ0FBa2tOQUFzTUFRc2dDaWdDQkNFS0N3SkFJQXBGRFFBZ0FDQU9JQUVvQWdRZ0RVRVJhblpCQkhFZ0FVRUVheUlQS0FJQUlBMUJFMnAyUVFGeElBRW9BZ0FpQ1NBTlFSQnFka0hBQUhFZ0NTQU5ka0dxQVhGeUlBa2dEVUVNYWtFT0lBUWJka0VRY1hKeWNpSUtRWkMrQVdvdEFBQkJBblJxSWd3MkFtZ2dBQ0FISUF3b0FnQWlDeWdDQUNJSmF5SUhOZ0lFSUFwQmtNQUJhaTBBQUNFT0FrQWdDU0FJUVJCMlN3UkFJQXNvQWdRaENpQUFJQWsyQWdRZ0RDQUxRUWhCRENBSElBbEpJZ2NiYWlnQ0FEWUNBQ0FLSUFwRklBY2JJUXNnQUNnQ0NDRUhBMEFDUUNBSERRQWdBQ2dDRUNJSFFRRnFJUXdnQnkwQUFTRUtJQWN0QUFCQi93RkdCRUFnQ2tHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0NFR0EvZ05xSVFoQkNDRUhEQUlMSUFBZ0REWUNFQ0FJSUFwQkNYUnFJUWhCQnlFSERBRUxJQUFnRERZQ0VFRUlJUWNnQ0NBS1FRaDBhaUVJQ3lBQUlBZEJBV3NpQnpZQ0NDQUFJQWhCQVhRaUNEWUNBQ0FBSUFsQkFYUWlDVFlDQkNBSlFZQ0FBa2tOQUFzTUFRc2dBQ0FJSUFsQkVIUnJJZ28yQWdBZ0IwR0FnQUp4UlFSQUlBc29BZ1FoQ0NBTUlBdEJERUVJSUFjZ0NVa2lDUnRxS0FJQU5nSUFJQWhGSUFnZ0NSc2hDeUFBS0FJSUlRZ0RRQUpBSUFnTkFDQUFLQUlRSWdoQkFXb2hEQ0FJTFFBQklRa2dDQzBBQUVIL0FVWUVRQ0FKUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBS1FZRCtBMm9oQ2tFSUlRZ01BZ3NnQUNBTU5nSVFJQW9nQ1VFSmRHb2hDa0VISVFnTUFRc2dBQ0FNTmdJUVFRZ2hDQ0FLSUFsQkNIUnFJUW9MSUFBZ0NFRUJheUlJTmdJSUlBQWdDa0VCZENJS05nSUFJQUFnQjBFQmRDSUhOZ0lFSUFkQmdJQUNTUTBBQ3d3QkN5QUxLQUlFSVFzTElBSWdBMEVBSUFOcklBc2dEa1liTmdJQUlBOGdEeWdDQUVFZ0lBMTBjallDQUNBQklBRW9BZ0FnQ3lBT2N5SUNRUk4wUVJCeUlBMTBjallDQUNBQklBRW9BZ1JCQ0NBTmRISTJBZ1FnQkNBR2NrVUVRQ0FCSUFWQkFuUnJJZ0FnQUNnQ0JFR0FnQUp5TmdJRUlBQWdBQ2dDQUNBQ1FSOTBja0dBZ0FSeU5nSUFJQUJCQkdzaUFDQUFLQUlBUVlDQUNISTJBZ0FMSUFSQkEwY05BQ0FCSUFWQkFuUnFJZ0FnQUNnQ0JFRUJjallDQkNBQUlBQW9BZ0FnQWtFU2RISkJBbkkyQWdBZ0FFRUVheUlBSUFBb0FnQkJCSEkyQWdBTElBRWdBU2dDQUVHQWdJQUJJQTEwY2pZQ0FBc0xyUUVBSUFCQnNLSUJOZ0prSUFCQnNLSUJOZ0pnSUFCQnNLSUJOZ0pjSUFCQnNLSUJOZ0pZSUFCQnNLSUJOZ0pVSUFCQnNLSUJOZ0pRSUFCQnNLSUJOZ0pNSUFCQnNLSUJOZ0pJSUFCQnNLSUJOZ0pFSUFCQnNLSUJOZ0pBSUFCQnNLSUJOZ0k4SUFCQnNLSUJOZ0k0SUFCQnNLSUJOZ0kwSUFCQnNLSUJOZ0l3SUFCQnNLSUJOZ0lzSUFCQnNLSUJOZ0lvSUFCQnNLSUJOZ0lrSUFCQnNLSUJOZ0lnSUFCQnNLSUJOZ0ljQy9RRkFnbC9BWDRnQUNBQk5nSUFJQUQ5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dNSUlBQWdBellDSENBQUlBSkJBV3NpQmpZQ0dDQUJRUU54SVFvQ2Z5QUNRUUJNQkVBZ0FTRUVJQU1NQVFzZ0FDQUJRUUZxSWdRMkFnQWdBUzBBQUFzaEFVRUlJUWdnQUVFSU5nSVFJQUFnQVVIL0FVWWlDVFlDRkNBQUlBR3RJZzAzQXdnQ1FDQUtRUU5HRFFBZ0FDQUNRUUpySWdzMkFoZ2dBQUovSUFKQkFrZ0VRQ0FFSVFVZ0F3d0JDeUFBSUFSQkFXb2lCVFlDQUNBRUxRQUFDeUlFUWY4QlJpSUpOZ0lVSUFCQkQwRVFJQUZCL3dGR0d5SUlOZ0lRSUFBZ0JFRUlkQ0FCY3EwaURUY0RDQ0FLUVFKR0JFQWdCU0VFSUFZaEFpQUxJUVlNQVFzZ0FDQUNRUU5ySWd3MkFoZ2dBQUovSUFKQkEwZ0VRQ0FGSVFjZ0F3d0JDeUFBSUFWQkFXb2lCellDQUNBRkxRQUFDeUlCUWY4QlJpSUpOZ0lVSUFCQkIwRUlJQVJCL3dGR0d5QUlhaUlGTmdJUUlBQWdBYTBnQ0syR0lBMkVJZzAzQXdnZ0NrRUJSZ1JBSUFjaEJDQUZJUWdnQ3lFQ0lBd2hCZ3dCQ3lBQUlBSkJCR3NpQmpZQ0dDQUFBbjhnQWtFRVNBUkFJQWNoQkNBRERBRUxJQUFnQjBFQmFpSUVOZ0lBSUFjdEFBQUxJZ0pCL3dGR0lnazJBaFFnQUVFSFFRZ2dBVUgvQVVZYklBVnFJZ2cyQWhBZ0FDQUNyU0FGcllZZ0RZUWlEVGNEQ0NBTUlRSUxBa0FnQWtFRlRnUkFJQVFvQWdBaEF5QUFJQUpCQldzMkFoZ2dBQ0FFUVFScU5nSUFEQUVMUVFBaEFVRi9RUUFnQXhzaEF5QUNRUUpJRFFBRFFDQUFJQVJCQVdvaUFqWUNBQ0FFTFFBQUlRUWdBQ0FHUVFGcklnVTJBaGdnQTBIL0FTQUJkRUYvYzNFZ0JDQUJkSEloQXlBQlFRaHFJUUVnQmtFQlN5QUNJUVFnQlNFR0RRQUxDeUFBSUFOQkdIWWlBVUgvQVVZMkFoUWdBRUVIUVFnZ0NSc2lBa0VIUVFnZ0EwSC9BWEVpQkVIL0FVWWJhaUlHUVFkQkNDQURRUWgyUWY4QmNTSUZRZjhCUmh0cUlnZEJCMEVJSUFOQkVIWkIvd0Z4SWdOQi93RkdHeUFJYW1vMkFoQWdBQ0FGSUFKMElBTWdCblJ5SUFFZ0IzUnlJQVJ5clNBSXJZWWdEWVEzQXdnTHR3VUNFbjhDZmdKL0lBQW9BaHdnQVVHWUFXeHFJZ0pCa0FGcktBSUFJQUpCbUFGcktBSUFheUlESVFVZ0FrR01BV3NvQWdBZ0FrR1VBV3NvQWdCcklnSWhCa0hBQUNBRElBTkJ3QUJQR3lFRFFjQUFJQUlnQWtIQUFFOGJJUVFDUUNBRlJRMEFJQVpGRFFBZ0EwVU5BQ0FFUlEwQUlBTkJmeUFFYmtFQ2Rrc05BRUVCUVJ3UUZ5SUNJQVEyQWd3Z0FpQUROZ0lJSUFJZ0JqWUNCQ0FDSUFVMkFnQWdBaUFFclNJVUlBYXRmRUlCZlNBVWdDSVVweUlFTmdJVUlBSWdBNjBpRlNBRnJYeENBWDBnRllBaUZhY2lBellDRUFKQUlCUkMvLy8vL3crRElCVkMvLy8vL3crRGZrSWdpS2NOQUNBQ1FRUWdBeUFFYkJBWElnTTJBaGdnQTBVTkFDQUNEQUlMSUFJUUZBdEJBQXNpQ1VVRVFFRUFEd3NDUUNBQkJFQURRQ0FPUVpnQmJDSVBJQUFvQWh4cUlnVW9BaGdpQWdSQUlBVkJIR29oRUNBRktBSVVJUU1nQlNnQ0VDRUVRUUFoQ2dOQUlBTWdCR3dFUUNBUUlBcEJKR3hxSVFaQkFDRUxBMEFnQmlnQ0ZDQUxRU2hzYWlJSUtBSVVJZ0lnQ0NnQ0VDSUhiQVJBUVFBaEJBTkFJQWdvQWhnZ0JFSEVBR3hxSWdNb0Fqd2lFUVJBSUFNb0Fnd2hCeUFES0FJVUlSSWdBeWdDRUNFTUlBTW9BZ2dpRXlBR0tBSUFheUVESUFZb0FoQWlEVUVCY1FSQUlBQW9BaHdnRDJvaUFrR1FBV3NvQWdBZ0Eyb2dBa0dZQVdzb0FnQnJJUU1MSUFjZ0JpZ0NCR3NoQWlBTlFRSnhCRUFnQWlBQUtBSWNJQTlxSWcxQmpBRnJLQUlBYWlBTlFaUUJheWdDQUdzaEFnc2dDU0FESUFJZ0F5QU1JQk5ySWd4cUlCSWdCMnNnQW1vZ0VVRUJJQXhCQUJBcVJRMEpJQWdvQWhBaEJ5QUlLQUlVSVFJTElBUkJBV29pQkNBQ0lBZHNTUTBBQ3lBRktBSVFJUVFnQlNnQ0ZDRURDeUFMUVFGcUlnc2dBeUFFYkVrTkFBc2dCU2dDR0NFQ0N5QUtRUUZxSWdvZ0Fra05BQXNMSUE1QkFXb2lEaUFCUncwQUN3c2dDUThMSUFrUUowRUFDOGdNQWc1L0Juc2dBQ2dDQ0NJTElBQW9BZ1JxSVFjQ1FDQUFLQUlNUlFSQUlBZEJBa2dOQVNBQktBSUFJQUVnQzBFQ2RHb2lEU2dDQUNJRVFRRnFRUUYxYXlFRElBQW9BZ0FoQmdKQUlBZEJCRWtFUUNBRUlRSU1BUXNnQjBFRWF5SUFRUUYySWdsQkFXb2hEQUpBSUFCQkZra0VRRUVCSVFBTUFRc2dCaUFCSUF0QkFuUnFJZ1VnQ1VFQ2RDSUNha0VJYWtrZ0JpQUpRUU4wYWtFSWFpSUFJQVZCQkdwTGNRUkFRUUVoQUF3QkN5QUdJQUVnQW1wQkNHcEpJQUZCQkdvZ0FFbHhCRUJCQVNFQURBRUxJQXhCL1AvLy93ZHhJZ1ZCQVhJaEFDQUZRUUYwSVFnZ0JQMFJJUkFnQS8wUklSSDlEQUFBQUFBQ0FBQUFCQUFBQUFZQUFBQWhGRUVBSVFJRFFDQUJJQUpCQW5SQkJISWlBMnI5QUFJQUlSTWdBeUFOYXYwQUFnQWhFaUFHSUFKQkEzUnFJZ01nRWYxYUFnQURJQU5CQ0dvZ0V5QVNJQkFnRXYwTkRBME9EeEFSRWhNVUZSWVhHQmthR3lJVC9hNEIvUXdDQUFBQUFnQUFBQUlBQUFBQ0FBQUEvYTRCUVFMOXJBSDlzUUVpRVAxYUFnQUFJQU5CRUdvZ0VQMWFBZ0FCSUFOQkdHb2dFUDFhQWdBQ0lBWWdGUDBNQVFBQUFBRUFBQUFCQUFBQUFRQUFBUDFRSWhYOUd3QkJBblJxSUJBZ0VTQVEvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJUi9Wb0NBQUFnQmlBVi9Sc0JRUUowYWlBUi9Wb0NBQUVnQmlBVi9Sc0NRUUowYWlBUi9Wb0NBQUlnQmlBVi9Sc0RRUUowYWlBUi9Wb0NBQU1nRlAwTUNBQUFBQWdBQUFBSUFBQUFDQUFBQVAydUFTRVVJQkFoRVNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJEOUd3TWhBaUFSL1JzRElRTWdCU0FNUmcwQklBSWhCQXNEUUNBQklBQkJBblFpQW1vb0FnQWhDU0FDSUExcUtBSUFJUUlnQmlBSVFRSjBhaUlGSUFNMkFnQWdCU0FESUFrZ0FpQUVha0VDYWtFQ2RXc2lBMnBCQVhVZ0JHbzJBZ1FnQ0VFQ2FpRUlJQUFnREVjZ0FpRUVJQUJCQVdvaEFBMEFDd3NnQmlBSVFRSjBhaUFETmdJQVFYd2hBQ0FIUVFGeEJIOGdCaUFIUVFGcklnQkJBblJxSUFFZ0FFRUJkR29vQWdBZ0FrRUJha0VCZFdzaUFEWUNBQ0FBSUFOcVFRRjFJUU5CZUFWQmZBc2dCaUFIUVFKMElnQnFhaUFDSUFOcU5nSUFJQUVnQmlBQUVCWWFEd3NDUUFKQUFrQWdCMEVCYXc0Q0FBRUNDeUFCSUFFb0FnQkJBbTAyQWdBUEN5QUFLQUlBSWdRZ0FTZ0NBQ0FCSUF0QkFuUnFJZ01vQWdCQkFXcEJBWFZySWdBMkFnUWdCQ0FBSUFNb0FnQnFOZ0lBSUFFZ0JDa0NBRGNDQUE4TElBZEJBMGdOQUNBQUtBSUFJZ29nQVNnQ0FDQUJJQXRCQW5ScUlnNG9BZ1FpQkNBT0tBSUFJZ0JxUVFKcVFRSjFheUlESUFCcU5nSUFRUUVoQ0FKQUlBZEJBbXNpQmlBSFFRRnhJZ3hGSWdCclFRSkpCRUFnQkNFQ0RBRUxJQWNnQUd0QkJHc2lBRUVCZGlJQ1FRRnFJUThDUUFKQUlBQkJGa2tOQUNBS1FRUnFJZ1VnQVNBQ1FRSjBJZ0JxUVFocVNTQUtJQUpCQTNScVFReHFJZ0lnQVVFRWFrdHhEUUFnQlNBQUlBRWdDMEVDZEdvaUFHcEJER3BKSUFCQkNHb2dBa2x4RFFBZ0QwRjhjU0lGUVFGeUlRQWdCVUVCZEVFQmNpRUlJQVQ5RVNFUklBUDlFU0VRUVFBaEFnTkFJQW9nQWtFRGRHb2lCQ0FCSUFKQkFuUWlBMnI5QUFJRUlCRWdBeUFPYXYwQUFnZ2lFZjBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlUSUJIOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBU0lTSUJJZ0VDQVMvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdFLzJ1QVNJVC9RMEVCUVlIR0JrYUd3Z0pDZ3NjSFI0Zi9Rc0NGQ0FFSUJBZ0UvME5EQTBPRHhBUkVoTUFBUUlERkJVV0Z5QVMvUTBBQVFJREJBVUdCeEFSRWhNTURRNFAvUXNDQkNBU0lSQWdBa0VFYWlJQ0lBVkhEUUFMSUJIOUd3TWhBaUFRL1JzRElRTWdCU0FQUmcwQ0lBSWhCQXdCQzBFQklRQUxBMEFnQVNBQVFRSjBhaWdDQUNFTklBNGdBRUVCYWlJRlFRSjBhaWdDQUNFQ0lBb2dDRUVDZEdvaUNTQUROZ0lBSUFrZ0F5QU5JQUlnQkdwQkFtcEJBblZySWdOcVFRRjFJQVJxTmdJRUlBaEJBbW9oQ0NBQUlBOUhJQUloQkNBRklRQU5BQXNMSUFvZ0NFRUNkR29nQXpZQ0FBSkFJQXhGQkVBZ0NpQUdRUUowYWlBQklBZEJBWFJxUVFScktBSUFJQUpCQVdwQkFYVnJJZ0FnQTJwQkFYVWdBbW8yQWdBTUFRc2dBaUFEYWlFQUN5QUtJQWRCQW5RaUEycEJCR3NnQURZQ0FDQUJJQW9nQXhBV0dnc0xvQWNEQTMwRGV3Si9JQU5CQ0U4RVFDQURRUU4ySVFzRFFDQUIvUUFFQUNFSElBQWdBUDBBQkFBaUNDQUMvUUFFQUNJSi9ReThkTE0vdkhTelA3eDBzeis4ZExNLy9lWUIvZVFCL1FzRUFDQUJJQWdnQi8wTXp6R3dQczh4c0Q3UE1iQSt6ekd3UHYzbUFmM2xBU0FKL1F6aDBUWS80ZEUyUCtIUk5qL2gwVFkvL2VZQi9lVUIvUXNFQUNBQ0lBZ2dCLzBNNWREaVArWFE0ai9sME9JLzVkRGlQLzNtQWYza0FmMExCQUFnQWYwQUJCQWhCeUFBSUFEOUFBUVFJZ2dnQXYwQUJCQWlDZjBNdkhTelA3eDBzeis4ZExNL3ZIU3pQLzNtQWYza0FmMExCQkFnQVNBSUlBZjlETTh4c0Q3UE1iQSt6ekd3UHM4eHNENzk1Z0g5NVFFZ0NmME00ZEUyUCtIUk5qL2gwVFkvNGRFMlAvM21BZjNsQWYwTEJCQWdBaUFJSUFmOURPWFE0ai9sME9JLzVkRGlQK1hRNGovOTVnSDk1QUg5Q3dRUUlBSkJJR29oQWlBQlFTQnFJUUVnQUVFZ2FpRUFJQXBCQVdvaUNpQUxSdzBBQ3dzQ1FDQURRUWR4SWdORkRRQWdBU29DQUNFRUlBQWdBaW9DQUNJR1E3eDBzeitVSUFBcUFnQWlCWkk0QWdBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlBSUFJZ0JTQUVRK1hRNGorVWtqZ0NBQ0FEUVFGR0RRQWdBU29DQkNFRUlBQWdBaW9DQkNJR1E3eDBzeitVSUFBcUFnUWlCWkk0QWdRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlFSUFJZ0JTQUVRK1hRNGorVWtqZ0NCQ0FEUVFKR0RRQWdBU29DQ0NFRUlBQWdBaW9DQ0NJR1E3eDBzeitVSUFBcUFnZ2lCWkk0QWdnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlJSUFJZ0JTQUVRK1hRNGorVWtqZ0NDQ0FEUVFOR0RRQWdBU29DRENFRUlBQWdBaW9DRENJR1E3eDBzeitVSUFBcUFnd2lCWkk0QWd3Z0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlNSUFJZ0JTQUVRK1hRNGorVWtqZ0NEQ0FEUVFSR0RRQWdBU29DRUNFRUlBQWdBaW9DRUNJR1E3eDBzeitVSUFBcUFoQWlCWkk0QWhBZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlRSUFJZ0JTQUVRK1hRNGorVWtqZ0NFQ0FEUVFWR0RRQWdBU29DRkNFRUlBQWdBaW9DRkNJR1E3eDBzeitVSUFBcUFoUWlCWkk0QWhRZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlVSUFJZ0JTQUVRK1hRNGorVWtqZ0NGQ0FEUVFaR0RRQWdBU29DR0NFRUlBQWdBaW9DR0NJR1E3eDBzeitVSUFBcUFoZ2lCWkk0QWhnZ0FTQUZJQVJEenpHd3ZwU1NJQVpENGRFMnY1U1NPQUlZSUFJZ0JTQUVRK1hRNGorVWtqZ0NHQXNMNEFFQ0JuOERld0pBSUFORkRRQWdBMEVFVHdSQUlBTkJmSEVoQmdOQUlBQWdCRUVDZENJRmFpSUhJQWY5QUFJQUlBSWdCV29pQi8wQUFnQWlDeUFCSUFWcUlnWDlBQUlBSWd6OXJnRkJBdjJzQWYyeEFTSUtJQXY5cmdIOUN3SUFJQVVnQ3YwTEFnQWdCeUFLSUF6OXJnSDlDd0lBSUFSQkJHb2lCQ0FHUncwQUN5QURJQVpHRFFFTEEwQWdBQ0FHUVFKMElnUnFJZ1VnQlNnQ0FDQUNJQVJxSWdVb0FnQWlCeUFCSUFScUlnZ29BZ0FpQ1dwQkFuVnJJZ1FnQjJvMkFnQWdDQ0FFTmdJQUlBVWdCQ0FKYWpZQ0FDQUdRUUZxSWdZZ0EwY05BQXNMQzlrQkFRTi9Jd0JCZ0FGcklnWWtBQ0FHSVFVQ1FDQUJLQUlNSUFKQkJIUnFJZ0lvQWdBaUJFVUVRQ0FDSVFFTUFRc0RRQ0FGSUFJMkFnQWdCVUVFYWlFRklBUWlBU0lDS0FJQUlnUU5BQXNMUVFBaEJBTkFJQUVvQWdnaUFpQUVTQVJBSUFFZ0JEWUNDQ0FFSVFJTEFrQWdBaUFEVGcwQUEwQWdBaUFCS0FJRVRnMEJBa0FnQUVFQkVDTUVRQ0FCSUFJMkFnUU1BUXNnQWtFQmFpRUNDeUFDSUFOSURRQUxDeUFCSUFJMkFnZ2dCU0FHUndSQUlBVkJCR3NpQlNnQ0FDRUJJQUloQkF3QkN3c2dBU2dDQkNBR1FZQUJhaVFBSUFOSUM4UUpBZzkvQTNzakFFR0FBbXNpQ1NRQUFrQWdBRVVFUUVFQUlRQU1BUXNDUUNBQklBQW9BZ0JHQkVBZ0FDZ0NCQ0FDUmcwQkN5QUFJQUkyQWdRZ0FDQUJOZ0lBSUFrZ0FqWUNBQ0FKSUFFMkFvQUJJQUloQkNBQklRWURRQ0FKSUFnaUQwRUJhaUlJUVFKMElncHFJQVJCQVdwQkFtMGlCellDQUNBSlFZQUJhaUFLYWlBR1FRRnFRUUp0SWdvMkFnQWdCU0FFSUFac0lneHFJUVVnQnlFRUlBb2hCaUFNUVFGTERRQUxJQUFnQlRZQ0NBSkFBa0FDUUNBRlJRUkFJQUFvQWd3aUFVVU5BU0FCRUJRZ0FFRUFOZ0lNREFFTElBVkJCSFFpQlNBQUtBSVFUUTBDSUFBb0Fnd2dCUkFiSWdJTkFTQURRUUZCampKQkFCQVRJQUFvQWd3aUFVVU5BQ0FCRUJRZ0FFRUFOZ0lNQ3lBQUVCUkJBQ0VBREFNTElBQWdBallDRENBQ0lBQW9BaEFpQVdwQkFDQUZJQUZyRUJrYUlBQWdCVFlDRUNBQUtBSUVJUUlnQUNnQ0FDRUJDeUFBS0FJTUlRWWdEd1JBSUFZZ0FTQUNiRUVFZEdvaUJDRUZBMEFDUUNBSklCQkJBblFpQVdvb0FnQWlDMEVBVEEwQUlBdEJBV3NoRFFKQUFrQWdDVUdBQVdvZ0FXb29BZ0FpQjBFQVRBUkFJQXRCQVhFaENrRUFJUWdnQzBFQlJ3MEJJQVVoQVF3Q0N5QUhRUUlnQnlBSFFRSk9HMnRCQVdwQkFYWWlBaUFIUVlHQWdJQjRiRUgvLy8vL0IycEJBWFlpQVNBQklBSkxHeUlDUVFGcUlnRWdBVUVEY1NJQlFRUWdBUnRySWc1QkJIUWhFU0FPUVFWMElSSWdCeUFPUVFGMGF5RU1JQUpCQTBzZ0IzRWhDRUVBSVFFZ0JTRUNBMEFnQ0FSL0lBUWdFV29nQmlBU2FrRUFJUVVEUUNBRy9SRWlGUDBNQUFBQUFDQUFBQUJBQUFBQVlBQUFBUDJ1QVNJVi9Sc0FJQVQ5RWYwTUFBQUFBQkFBQUFBZ0FBQUFNQUFBQVAydUFTSVQvVm9DQUFBZ0ZmMGJBU0FUL1ZvQ0FBRWdGZjBiQWlBVC9Wb0NBQUlnRmYwYkF5QVQvVm9DQUFNZ0ZQME1FQUFBQURBQUFBQlFBQUFBY0FBQUFQMnVBU0lVL1JzQUlCUDlXZ0lBQUNBVS9Sc0JJQlA5V2dJQUFTQVUvUnNDSUJQOVdnSUFBaUFVL1JzRElCUDlXZ0lBQXlBRVFVQnJJUVFnQmtHQUFXb2hCaUFGUVFScUlnVWdEa2NOQUFzaEJpRUVJQXdGSUFjTElRVURRQUpBSUFZZ0JEWUNBQ0FGUVFGR0JFQWdCa0VRYWlFR0lBUkJFR29oQkF3QkN5QUdJQVEyQWhBZ0JFRVFhaUVFSUFaQklHb2hCaUFGUVFKS0lBVkJBbXNoQlEwQkN3c2dCQ0FDSUFkQkJIUnFJQUVnQVNBTlJuSkJBWEVpQXhzaEJTQUVJQUlnQXhzaEJDQUZJUUlnQVVFQmFpSUJJQXRIRFFBTERBSUxJQXRCL3YvLy93ZHhJUU5CQUNFQ0EwQWdDQ0FOUmlFQklBaEJBbW9oQ0NBRUlBVWdBUnNpQkNFRklBUWhBU0FDUVFKcUlnSWdBMGNOQUFzTElBcEZCRUFnQkNFRkRBRUxJQVFnQVNBSFFRUjBhaUFJSUFnZ0RVWnlRUUZ4SWdJYklRVWdCQ0FCSUFJYklRUUxJQkJCQVdvaUVDQVBSdzBBQ3dzZ0JrRUFOZ0lBQ3lBQUtBSUlJZ0pGRFFBZ0FDZ0NEQ0VFSUFKQkJFOEVRQ0FDUVh4eElRRkJBQ0VHQTBBZ0JFRUFOZ0k4SUFSQzV3YzNBalFnQkVFQU5nSXNJQVJDNXdjM0FpUWdCRUVBTmdJY0lBUkM1d2MzQWhRZ0JFRUFOZ0lNSUFSQzV3YzNBZ1FnQkVGQWF5RUVJQVpCQkdvaUJpQUJSdzBBQ3dzZ0FrRURjU0lCUlEwQVFRQWhCZ05BSUFSQkFEWUNEQ0FFUXVjSE53SUVJQVJCRUdvaEJDQUdRUUZxSWdZZ0FVY05BQXNMSUFsQmdBSnFKQUFnQUF1eEFRRURmd0pBSUFCRkRRQWdBQ2dDQ0NJQlJRMEFJQUFvQWd3aEFDQUJRUVJQQkVBZ0FVRjhjU0VEQTBBZ0FFRUFOZ0k4SUFCQzV3YzNBalFnQUVFQU5nSXNJQUJDNXdjM0FpUWdBRUVBTmdJY0lBQkM1d2MzQWhRZ0FFRUFOZ0lNSUFCQzV3YzNBZ1FnQUVGQWF5RUFJQUpCQkdvaUFpQURSdzBBQ3dzZ0FVRURjU0lCUlEwQVFRQWhBZ05BSUFCQkFEWUNEQ0FBUXVjSE53SUVJQUJCRUdvaEFDQUNRUUZxSWdJZ0FVY05BQXNMQzhrSUFoSi9BM3NqQUVHQUFtc2lDU1FBQW45QkFVRVVFQmNpQjBVRVFDQUNRUUZCNkRGQkFCQVRRUUFNQVFzZ0J5QUJOZ0lFSUFjZ0FEWUNBQ0FKSUFFMkFnQWdDU0FBTmdLQUFRTkFJQWtnQmlJUFFRRnFJZ1pCQW5RaUJXb2dBVUVCYWtFQ2JTSUROZ0lBSUFsQmdBRnFJQVZxSUFCQkFXcEJBbTBpQlRZQ0FDQUVJQUFnQVd3aUNHb2hCQ0FESVFFZ0JTRUFJQWhCQVVzTkFBc2dCeUFFTmdJSUlBUkZCRUFnQnhBVVFRQU1BUXNnQnlBRVFSQVFGeUlETmdJTUlBTkZCRUFnQWtFQlFjY2JRUUFRRXlBSEVCUkJBQXdCQ3lBSElBY29BZ2dpREVFRWREWUNFQ0FESVFFZ0R3UkFJQU1nQnlnQ0JDQUhLQUlBYkVFRWRHb2lBQ0VHQTBBQ1FDQUpJQkJCQW5RaUFtb29BZ0FpQzBFQVRBMEFJQXRCQVdzaERRSkFJQWxCZ0FGcUlBSnFLQUlBSWdoQkFFd0VRRUVBSVFRZ0MwRUJSd1JBSUF0Qi92Ly8vd2R4SVFWQkFDRUNBMEFnQkNBTlJpRUtJQVJCQW1vaEJDQUdJQUFnQ2hzaUFDRUdJQUpCQW1vaUFpQUZSdzBBQ3dzZ0MwRUJjUTBCSUFBaEJnd0NDeUFJUVFJZ0NDQUlRUUpPRzJ0QkFXcEJBWFlpQWlBSVFZR0FnSUI0YkVILy8vLy9CMnBCQVhZaUJTQUNJQVZKR3lJQ1FRRnFJZ1VnQlVFRGNTSUZRUVFnQlJ0cklnNUJCWFFoRVNBT1FRUjBJUklnQ0NBT1FRRjBheUVUSUFKQkEwc2dDSEVoRkVFQUlRb2dBQ0VDQTBBQ2Z5QVVSUVJBSUFZaEFDQUlEQUVMSUFFZ0VXb2dCaUFTYWlFQVFRQWhCQU5BSUFIOUVTSVgvUXdBQUFBQUlBQUFBRUFBQUFCZ0FBQUEvYTRCSWhYOUd3QWdCdjBSL1F3QUFBQUFFQUFBQUNBQUFBQXdBQUFBL2E0QkloYjlXZ0lBQUNBVi9Sc0JJQmI5V2dJQUFTQVYvUnNDSUJiOVdnSUFBaUFWL1JzRElCYjlXZ0lBQXlBWC9Rd1FBQUFBTUFBQUFGQUFBQUJ3QUFBQS9hNEJJaFg5R3dBZ0Z2MWFBZ0FBSUJYOUd3RWdGdjFhQWdBQklCWDlHd0lnRnYxYUFnQUNJQlg5R3dNZ0Z2MWFBZ0FESUFGQmdBRnFJUUVnQmtGQWF5RUdJQVJCQkdvaUJDQU9SdzBBQ3lFQklCTUxJUVFEUUFKQUlBRWdBRFlDQUNBRVFRRkdCRUFnQVVFUWFpRUJJQUJCRUdvaEFBd0JDeUFCSUFBMkFoQWdBRUVRYWlFQUlBRkJJR29oQVNBRVFRSktJQVJCQW1zaEJBMEJDd3NnQUNBQ0lBb2dDaUFOUm5KQkFYRWlCUnNoQmlBQUlBSWdDRUVFZEdvZ0JSc2lBQ0VDSUFwQkFXb2lDaUFMUncwQUN3d0JDeUFHSUFBZ0NFRUVkR29nQkNBRUlBMUdja0VCY1NJRkd5QUdJQUFnQlJzaEJpRUFDeUFRUVFGcUloQWdEMGNOQUFzTElBRkJBRFlDQUFKQUlBeEZEUUFnREVFRVR3UkFJQXhCZkhFaEFFRUFJUUVEUUNBRFFRQTJBandnQTBMbkJ6Y0NOQ0FEUVFBMkFpd2dBMExuQnpjQ0pDQURRUUEyQWh3Z0EwTG5CemNDRkNBRFFRQTJBZ3dnQTBMbkJ6Y0NCQ0FEUVVCcklRTWdBVUVFYWlJQklBQkhEUUFMQ3lBTVFRTnhJZ0JGRFFCQkFDRUJBMEFnQTBFQU5nSU1JQU5DNXdjM0FnUWdBMEVRYWlFRElBRkJBV29pQVNBQVJ3MEFDd3NnQndzZ0NVR0FBbW9rQUF0VEFRRi9BbjhnQUMwQURFSC9BVVlFUUNBQVFvRCtnNER3QURjQ0RFRUFJQUFvQWdnaUFTQUFLQUlFVHcwQkdpQUFJQUZCQVdvMkFnZ2dBQ0FCTFFBQVFZRCtBM0kyQWd3TElBQkJBRFlDRUVFQkN3c0ZBQkFNQUF1QkFnQUNRQ0FCUWY4QVRRMEFBa0JCMU5ZQktBSUFLQUlBUlFSQUlBRkJnSDl4UVlDL0EwWU5BZ3dCQ3lBQlFmOFBUUVJBSUFBZ0FVRS9jVUdBQVhJNkFBRWdBQ0FCUVFaMlFjQUJjam9BQUVFQ0R3c2dBVUdBUUhGQmdNQURSeUFCUVlDd0EwOXhSUVJBSUFBZ0FVRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFlQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FCUVFNUEN5QUJRWUNBQkd0Qi8vOC9UUVJBSUFBZ0FVRS9jVUdBQVhJNkFBTWdBQ0FCUVJKMlFmQUJjam9BQUNBQUlBRkJCblpCUDNGQmdBRnlPZ0FDSUFBZ0FVRU1ka0UvY1VHQUFYSTZBQUZCQkE4TEMwSFV6UUZCR1RZQ0FFRi9Ed3NnQUNBQk9nQUFRUUVMZmdJQmZ3RitJQUM5SWdOQ05JaW5RZjhQY1NJQ1FmOFBSd1I4SUFKRkJFQWdBU0FBUkFBQUFBQUFBQUFBWVFSL1FRQUZJQUJFQUFBQUFBQUE4RU9pSUFFUWNDRUFJQUVvQWdCQlFHb0xOZ0lBSUFBUEN5QUJJQUpCL2dkck5nSUFJQU5DLy8vLy8vLy8vNGVBZjROQ2dJQ0FnSUNBZ1BBL2hMOEZJQUFMQzd3Q0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFSmF3NFNBQWdKQ2dnSkFRSURCQW9KQ2dvSUNRVUdCd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCS0FJQU5nSUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTWdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTXdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTUFBQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTVFBQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkF3QUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUMyOEJCWDhnQUNnQ0FDSURMQUFBUVRCcklnRkJDVXNFUUVFQUR3c0RRRUYvSVFRZ0FrSE1tYlBtQUUwRVFFRi9JQUVnQWtFS2JDSUZhaUFCSUFWQi8vLy8vd2R6U3hzaEJBc2dBQ0FEUVFGcUlnVTJBZ0FnQXl3QUFTQUVJUUlnQlNFRFFUQnJJZ0ZCQ2trTkFBc2dBZ3RKQVFGL0FrQkJBVUVzRUJjaUFRUkFJQUZCQURZQ0VBSkFJQUJCQUV3RVFDQUJRUUZCQ0JBWElnQTJBaVFnQUVVTkFRd0RDeUFCUVFBMkFnd0xJQUVRRkF0QkFDRUJDeUFCQzY0VUFoSi9BbjRqQUVGQWFpSUlKQUFnQ0NBQk5nSThJQWhCSjJvaEZ5QUlRU2hxSVJJQ1FBSkFBa0FDUUFOQVFRQWhCd05BSUFFaERTQUhJQTVCLy8vLy93ZHpTZzBDSUFjZ0Rtb2hEZ0pBQWtBQ1FBSkFJQUVpQnkwQUFDSU1CRUFEUUFKQUFrQWdERUgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hEQU5BSUF3dEFBRkJKVWNFUUNBTUlRRU1BZ3NnQjBFQmFpRUhJQXd0QUFJZ0RFRUNhaUlCSVF4QkpVWU5BQXNMSUFjZ0RXc2lCeUFPUWYvLy8vOEhjeUlZU2cwSklBQUVRQ0FBSUEwZ0J4QWVDeUFIRFFjZ0NDQUJOZ0k4SUFGQkFXb2hCMEYvSVJFQ1FDQUJMQUFCUVRCcklndEJDVXNOQUNBQkxRQUNRU1JIRFFBZ0FVRURhaUVIUVFFaEV5QUxJUkVMSUFnZ0J6WUNQRUVBSVFrQ1FDQUhMQUFBSWd4QklHc2lBVUVmU3dSQUlBY2hDd3dCQ3lBSElRdEJBU0FCZENJQlFZblJCSEZGRFFBRFFDQUlJQWRCQVdvaUN6WUNQQ0FCSUFseUlRa2dCeXdBQVNJTVFTQnJJZ0ZCSUU4TkFTQUxJUWRCQVNBQmRDSUJRWW5SQkhFTkFBc0xBa0FnREVFcVJnUkFBbjhDUUNBTExBQUJRVEJySWdGQkNVc05BQ0FMTFFBQ1FTUkhEUUFDZnlBQVJRUkFJQVFnQVVFQ2RHcEJDallDQUVFQURBRUxJQU1nQVVFRGRHb29BZ0FMSVJBZ0MwRURhaUVCUVFFTUFRc2dFdzBHSUF0QkFXb2hBU0FBUlFSQUlBZ2dBVFlDUEVFQUlSTkJBQ0VRREFNTElBSWdBaWdDQUNJSFFRUnFOZ0lBSUFjb0FnQWhFRUVBQ3lFVElBZ2dBVFlDUENBUVFRQk9EUUZCQUNBUWF5RVFJQWxCZ01BQWNpRUpEQUVMSUFoQlBHb1FjaUlRUVFCSURRb2dDQ2dDUENFQkMwRUFJUWRCZnlFS0FuOUJBQ0FCTFFBQVFTNUhEUUFhSUFFdEFBRkJLa1lFUUFKL0FrQWdBU3dBQWtFd2F5SUxRUWxMRFFBZ0FTMEFBMEVrUncwQUlBRkJCR29oQVFKL0lBQkZCRUFnQkNBTFFRSjBha0VLTmdJQVFRQU1BUXNnQXlBTFFRTjBhaWdDQUFzTUFRc2dFdzBHSUFGQkFtb2hBVUVBSUFCRkRRQWFJQUlnQWlnQ0FDSUxRUVJxTmdJQUlBc29BZ0FMSVFvZ0NDQUJOZ0k4SUFwQkFFNE1BUXNnQ0NBQlFRRnFOZ0k4SUFoQlBHb1FjaUVLSUFnb0Fqd2hBVUVCQ3lFVUEwQWdCeUVWUVJ3aEN5QUJJZzhzQUFBaUIwSDdBR3RCUmtrTkN5QUJRUUZxSVFFZ0J5QVZRVHBzYWtIL3hBRnFMUUFBSWdkQkFXdEIvd0Z4UVFoSkRRQUxJQWdnQVRZQ1BBSkFJQWRCRzBjRVFDQUhSUTBNSUJGQkFFNEVRQ0FBUlFSQUlBUWdFVUVDZEdvZ0J6WUNBQXdNQ3lBSUlBTWdFVUVEZEdvcEF3QTNBekFNQWdzZ0FFVU5DQ0FJUVRCcUlBY2dBaUFHRUhFTUFRc2dFVUVBVGcwTFFRQWhCeUFBUlEwSUN5QUFMUUFBUVNCeERRc2dDVUgvLzN0eElnd2dDU0FKUVlEQUFIRWJJUWxCQUNFUlFiQUlJUllnRWlFTEFrQUNRQUovQWtBQ1FBSkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBUExRQUFJZ2ZBSWc5QlUzRWdEeUFIUVE5eFFRTkdHeUFQSUJVYklnZEIyQUJyRGlFRUZoWVdGaFlXRmhZUUZna0dFQkFRRmdZV0ZoWVdBZ1VERmhZS0ZnRVdGZ1FBQ3dKQUlBZEJ3UUJyRGdjUUZnc1dFQkFRQUFzZ0IwSFRBRVlOQ3d3VkN5QUlLUU13SVJwQnNBZ01CUXRCQUNFSEFrQUNRQUpBQWtBQ1FBSkFBa0FnRlE0SUFBRUNBd1FjQlFZY0N5QUlLQUl3SUE0MkFnQU1Hd3NnQ0NnQ01DQU9OZ0lBREJvTElBZ29BakFnRHF3M0F3QU1HUXNnQ0NnQ01DQU9Pd0VBREJnTElBZ29BakFnRGpvQUFBd1hDeUFJS0FJd0lBNDJBZ0FNRmdzZ0NDZ0NNQ0FPckRjREFBd1ZDMEVJSUFvZ0NrRUlUUnNoQ2lBSlFRaHlJUWxCK0FBaEJ3c2dFaUVCSUFncEF6QWlHaUlaUWdCU0JFQWdCMEVnY1NFTUEwQWdBVUVCYXlJQklCbW5RUTl4UVpESkFXb3RBQUFnREhJNkFBQWdHVUlQVmlBWlFnU0lJUmtOQUFzTElBRWhEU0FhVUEwRElBbEJDSEZGRFFNZ0IwRUVka0d3Q0dvaEZrRUNJUkVNQXdzZ0VpRUJJQWdwQXpBaUdpSVpRZ0JTQkVBRFFDQUJRUUZySWdFZ0dhZEJCM0ZCTUhJNkFBQWdHVUlIVmlBWlFnT0lJUmtOQUFzTElBRWhEU0FKUVFoeFJRMENJQW9nRWlBQmF5SUJRUUZxSUFFZ0NrZ2JJUW9NQWdzZ0NDa0RNQ0lhUWdCVEJFQWdDRUlBSUJwOUlobzNBekJCQVNFUlFiQUlEQUVMSUFsQmdCQnhCRUJCQVNFUlFiRUlEQUVMUWJJSVFiQUlJQWxCQVhFaUVSc0xJUllnR2lBU0VDOGhEUXNnRkNBS1FRQkljUTBSSUFsQi8vOTdjU0FKSUJRYklRa0NRQ0FhUWdCU0RRQWdDZzBBSUJJaERVRUFJUW9NRGdzZ0NpQWFVQ0FTSUExcmFpSUJJQUVnQ2tnYklRb01EUXNnQ0MwQU1DRUhEQXNMQW45Qi8vLy8vd2NnQ2lBS1FmLy8vLzhIVHhzaUJ5SUpRUUJISVFzQ1FBSkFBa0FnQ0NnQ01DSUJRZkVNSUFFYklnMGlEMEVEY1VVTkFDQUpSUTBBQTBBZ0R5MEFBRVVOQWlBSlFRRnJJZ2xCQUVjaEN5QVBRUUZxSWc5QkEzRkZEUUVnQ1EwQUN3c2dDMFVOQVFKQUlBOHRBQUJGRFFBZ0NVRUVTUTBBQTBCQmdJS0VDQ0FQS0FJQUlnRnJJQUZ5UVlDQmdvUjRjVUdBZ1lLRWVFY05BaUFQUVFScUlROGdDVUVFYXlJSlFRTkxEUUFMQ3lBSlJRMEJDd05BSUE4Z0R5MEFBRVVOQWhvZ0QwRUJhaUVQSUFsQkFXc2lDUTBBQ3d0QkFBc2lBU0FOYXlBSElBRWJJZ0VnRFdvaEN5QUtRUUJPQkVBZ0RDRUpJQUVoQ2d3TUN5QU1JUWtnQVNFS0lBc3RBQUFORHd3TEN5QUlLUU13SWhsQ0FGSU5BVUVBSVFjTUNRc2dDZ1JBSUFnb0FqQU1BZ3RCQUNFSElBQkJJQ0FRUVFBZ0NSQWdEQUlMSUFoQkFEWUNEQ0FJSUJrK0FnZ2dDQ0FJUVFocUlnYzJBakJCZnlFS0lBY0xJUXhCQUNFSEEwQUNRQ0FNS0FJQUlnMUZEUUFnQ0VFRWFpQU5FRzhpRFVFQVNBMFBJQTBnQ2lBSGEwc05BQ0FNUVFScUlRd2dCeUFOYWlJSElBcEpEUUVMQzBFOUlRc2dCMEVBU0EwTUlBQkJJQ0FRSUFjZ0NSQWdJQWRGQkVCQkFDRUhEQUVMUVFBaEN5QUlLQUl3SVF3RFFDQU1LQUlBSWcxRkRRRWdDRUVFYWlJS0lBMFFieUlOSUF0cUlnc2dCMHNOQVNBQUlBb2dEUkFlSUF4QkJHb2hEQ0FISUF0TERRQUxDeUFBUVNBZ0VDQUhJQWxCZ01BQWN4QWdJQkFnQnlBSElCQklHeUVIREFnTElCUWdDa0VBU0hFTkNVRTlJUXNnQUNBSUt3TXdJQkFnQ2lBSklBY2dCUkVWQUNJSFFRQk9EUWNNQ2dzZ0J5MEFBU0VNSUFkQkFXb2hCd3dBQ3dBTElBQU5DU0FUUlEwRFFRRWhCd05BSUFRZ0IwRUNkR29vQWdBaUFBUkFJQU1nQjBFRGRHb2dBQ0FDSUFZUWNVRUJJUTRnQjBFQmFpSUhRUXBIRFFFTUN3c0xJQWRCQ2s4RVFFRUJJUTRNQ2dzRFFDQUVJQWRCQW5ScUtBSUFEUUZCQVNFT0lBZEJBV29pQjBFS1J3MEFDd3dKQzBFY0lRc01CZ3NnQ0NBSE9nQW5RUUVoQ2lBWElRMGdEQ0VKQ3lBS0lBc2dEV3NpRENBS0lBeEtHeUlCSUJGQi8vLy8vd2R6U2cwRFFUMGhDeUFRSUFFZ0VXb2lDaUFLSUJCSUd5SUhJQmhLRFFRZ0FFRWdJQWNnQ2lBSkVDQWdBQ0FXSUJFUUhpQUFRVEFnQnlBS0lBbEJnSUFFY3hBZ0lBQkJNQ0FCSUF4QkFCQWdJQUFnRFNBTUVCNGdBRUVnSUFjZ0NpQUpRWURBQUhNUUlDQUlLQUk4SVFFTUFRc0xDMEVBSVE0TUF3dEJQU0VMQzBIVXpRRWdDellDQUF0QmZ5RU9DeUFJUVVCckpBQWdEZ3VrQWdFRGZ5TUFRZEFCYXlJRkpBQWdCU0FDTmdMTUFTQUZRYUFCYWlJQ1FRQkJLQkFaR2lBRklBVW9Bc3dCTmdMSUFRSkFRUUFnQVNBRlFjZ0JhaUFGUWRBQWFpQUNJQU1nQkJCMFFRQklEUUFnQUNnQ1RFRUFTQ0FBSUFBb0FnQWlCMEZmY1RZQ0FBSi9Ba0FDUUNBQUtBSXdSUVJBSUFCQjBBQTJBakFnQUVFQU5nSWNJQUJDQURjREVDQUFLQUlzSVFZZ0FDQUZOZ0lzREFFTElBQW9BaEFOQVF0QmZ5QUFFRWNOQVJvTElBQWdBU0FGUWNnQmFpQUZRZEFBYWlBRlFhQUJhaUFESUFRUWRBc2hBU0FHQkg4Z0FFRUFRUUFnQUNnQ0pCRUFBQm9nQUVFQU5nSXdJQUFnQmpZQ0xDQUFRUUEyQWh3Z0FDZ0NGQm9nQUVJQU53TVFRUUFGSUFFTEdpQUFJQUFvQWdBZ0IwRWdjWEkyQWdBTkFBc2dCVUhRQVdva0FBdVZBUUVHZjBFSUlRSWpBRUdBQW1zaUJTUUFJQUZCQWs0RVFDQUFJQUZCQW5ScUlnY2dCVFlDQUFOQUlBY29BZ0FnQUNnQ0FFR0FBaUFDSUFKQmdBSlBHeUlFRUJZYVFRQWhBd05BSUFBZ0EwRUNkR29pQmlnQ0FDQUFJQU5CQVdvaUEwRUNkR29vQWdBZ0JCQVdHaUFHSUFZb0FnQWdCR28yQWdBZ0FTQURSdzBBQ3lBQ0lBUnJJZ0lOQUFzTElBVkJnQUpxSkFBTEtRQWdBRUVCYXlJQWFFRUFJQUFiSWdBRWZ5QUFCU0FCYUVFQUlBRWJJZ0JCSUhKQkFDQUFHd3NMblFNQkNYOENRQ0FBSWdGQkEzRUVRQU5BSUFFdEFBQWlBa1VOQWlBQ1FUMUdEUUlnQVVFQmFpSUJRUU54RFFBTEN3SkFBa0JCZ0lLRUNDQUJLQUlBSWdOcklBTnlRWUNCZ29SNGNVR0FnWUtFZUVjTkFBTkFRWUNDaEFnZ0EwRzkrdlRwQTNNaUFtc2dBbkpCZ0lHQ2hIaHhRWUNCZ29SNFJ3MEJJQUVvQWdRaEF5QUJRUVJxSWdJaEFTQURRWUNDaEFnZ0EydHlRWUNCZ29SNGNVR0FnWUtFZUVZTkFBc01BUXNnQVNFQ0N3TkFJQUlpQVMwQUFDSURSUTBCSUFGQkFXb2hBaUFEUVQxSERRQUxDeUFBSUFGR0JFQkJBQThMQWtBZ0FDQUJJQUJySWdacUxRQUFEUUJCOE5VQktBSUFJZ1ZGRFFBZ0JTZ0NBQ0lCUlEwQUEwQUNRQUovSUFBaEF5QUJJUUpCQUNBR0lnZEZEUUFhSUFNdEFBQWlCQVIvQWtBRFFDQUVJQUl0QUFBaUNFY05BU0FJUlEwQklBZEJBV3NpQjBVTkFTQUNRUUZxSVFJZ0F5MEFBU0VFSUFOQkFXb2hBeUFFRFFBTFFRQWhCQXNnQkFWQkFBc2dBaTBBQUdzTFJRUkFJQUVnQm1vaUFTMEFBRUU5UmcwQkN5QUZLQUlFSVFFZ0JVRUVhaUVGSUFFTkFRd0NDd3NnQVVFQmFpRUpDeUFKQ3ljQkFYOUJIQ0VESUFGQkEzRUVmMEVjQlNBQUlBRWdBaEFwSWdBMkFnQkJBRUV3SUFBYkN3djlBd0VGZndKL1FhakxBU2dDQUNJQ0lBQkJCMnBCZUhFaUFVRUhha0Y0Y1NJRGFpRUFBa0FnQTBFQUlBQWdBazBiUlFSQUlBQS9BRUVRZEUwTkFTQUFFQTROQVF0QjFNMEJRVEEyQWdCQmZ3d0JDMEdveXdFZ0FEWUNBQ0FDQ3lJQ1FYOUhCRUFnQVNBQ2FpSUFRUVJyUVJBMkFnQWdBRUVRYXlJRFFSQTJBZ0FDUUFKL1FlRFZBU2dDQUNJQkJIOGdBU2dDQ0FWQkFBc2dBa1lFUUNBQ0lBSkJCR3NvQWdCQmZuRnJJZ1JCQkdzb0FnQWhCU0FCSUFBMkFnZ2dCQ0FGUVg1eGF5SUFJQUFvQWdCcVFRUnJMUUFBUVFGeEJFQWdBQ2dDQkNJQklBQW9BZ2dpQkRZQ0NDQUVJQUUyQWdRZ0FDQURJQUJySWdFMkFnQU1Bd3NnQWtFUWF3d0JDeUFDUVJBMkFnQWdBaUFBTmdJSUlBSWdBVFlDQkNBQ1FSQTJBZ3hCNE5VQklBSTJBZ0FnQWtFUWFnc2lBQ0FESUFCcklnRTJBZ0FMSUFBZ0FVRjhjV3BCQkdzZ0FVRUJjallDQUNBQUFuOGdBQ2dDQUVFSWF5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBVUVkSUFGbklnTnJka0VFY3lBRFFRSjBhMEh1QUdvZ0FVSC9IMDBOQUJwQlB5QUJRUjRnQTJ0MlFRSnpJQU5CQVhSclFjY0FhaUlCSUFGQlAwOGJDeUlCUVFSMElnTkI0TTBCYWpZQ0JDQUFJQU5CNk0wQmFpSURLQUlBTmdJSUlBTWdBRFlDQUNBQUtBSUlJQUEyQWdSQjZOVUJRZWpWQVNrREFFSUJJQUd0aG9RM0F3QUxJQUpCZjBjTHZRRUJBbjhDUUNBQUtBSk1JZ0ZCQUU0RVFDQUJSUTBCUVl6V0FTZ0NBQ0FCUWYvLy8vOERjVWNOQVFzQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQklBQW9BaEJHRFFBZ0FDQUJRUUZxTmdJVUlBRkJDam9BQUE4TElBQVFmQThMSUFCQnpBQnFJZ0VnQVNnQ0FDSUNRZi8vLy84RElBSWJOZ0lBQWtBQ1FDQUFLQUpRUVFwR0RRQWdBQ2dDRkNJQ0lBQW9BaEJHRFFBZ0FDQUNRUUZxTmdJVUlBSkJDam9BQUF3QkN5QUFFSHdMSUFFb0FnQWFJQUZCQURZQ0FBdDhBUUovSXdCQkVHc2lBU1FBSUFGQkNqb0FEd0pBQWtBZ0FDZ0NFQ0lDQkg4Z0FnVWdBQkJIRFFJZ0FDZ0NFQXNnQUNnQ0ZDSUNSZzBBSUFBb0FsQkJDa1lOQUNBQUlBSkJBV28yQWhRZ0FrRUtPZ0FBREFFTElBQWdBVUVQYWtFQklBQW9BaVFSQUFCQkFVY05BQ0FCTFFBUEdnc2dBVUVRYWlRQUM3QUNBUUovSUFBRVFDQUFLQUlBRUVBZ0FFRUFOZ0lBSUFBb0FrZ2lBUVJBSUFFUUZDQUFRUUEyQWtnTElBQW9Ba1FpQVFSQUlBRVFGQ0FBUVFBMkFrUUxJQUFvQW13aUFRUkFJQUVRRkNBQVFRQTJBbXdMSUFBb0FuUWlBUVJBSUFFb0FnQWlBZ1JBSUFJUUZDQUFLQUowSWdGQkFEWUNBQXNnQVJBVUlBQkJBRFlDZEFzZ0FDZ0NlQ0lCQkVBZ0FTZ0NEQ0lDQkVBZ0FoQVVJQUFvQW5naUFVRUFOZ0lNQ3lBQktBSUVJZ0lFUUNBQ0VCUWdBQ2dDZUNJQlFRQTJBZ1FMSUFFb0FnZ2lBZ1JBSUFJUUZDQUFLQUo0SWdGQkFEWUNDQXNnQVNnQ0FDSUNCRUFnQWhBVUlBQW9BbmdpQVVFQU5nSUFDeUFCRUJRZ0FFRUFOZ0o0Q3lBQUtBSUVJZ0VFUUNBQkVEZ2dBRUVBTmdJRUN5QUFLQUlJSWdFRVFDQUJFRGdnQUVFQU5nSUlDeUFBRUJRTEM0c2FBaDUvQlhzakFFSHdBV3NpQ0NRQVFRRWhEZ0pBSUFBb0FnQW9BandOQUNBQUtBS0FBUTBBQWtBQ1FDQUFLQUowSWdsRkJFQWdBQ2dDZUNFRkRBRUxJQUVvQWhBaEJpQUpMd0VFSVFRQ1FDQUFLQUo0SWdWRkRRQWdCU2dDREVVTkFDQUZMUUFTSVFZTEFrQWdCQVJBSUFrb0FnQWhDUU5BSUFrZ0EwRUdiR29pQ2k4QkFDSUhJQVpQQkVBZ0NDQUdOZ0swQVNBSUlBYzJBckFCSUFKQkFVSHU2Z0FnQ0VHd0FXb1FFMEVBSVE0TUJnc0NRQ0FLTHdFRUlncEZEUUFnQ2tILy93TkdEUUFnQ2tFQmF5SUtJQVpKRFFBZ0NDQUdOZ0trQVNBSUlBbzJBcUFCSUFKQkFVSHU2Z0FnQ0VHZ0FXb1FFMEVBSVE0TUJnc2dBMEVCYWlJRElBUkhEUUFMREFFTElBWU5BZ3dCQ3dOQUlBWkJBV3NoQmtFQUlRTURRQ0FKSUFOQkJteHFMd0VBSUFaSEJFQWdBMEVCYWlJRElBUkhEUUVNQkFzTElBWU5BQXNMQWtBZ0JVVU5BQ0FGS0FJTUlncEZEUUFDUUFKQUlBVXRBQklpQlFSQVFRQWhBMEVCSVFjRFFDQUJLQUlRSWdRZ0NpQURRUUowYWk4QkFDSUdUUVJBSUFnZ0JEWUNsQUVnQ0NBR05nS1FBU0FDUVFGQjd1b0FJQWhCa0FGcUVCTkJBQ0VIQ3lBRFFRRnFJZ01nQlVjTkFBc2dCVUVFRUJjaUJFVU5BVUVBSVFNRFFBSkFJQW9nQTBFQ2RHb2lCaTBBQWlJSlFRSlBCRUFnQ0NBSk5nSkVJQWdnQXpZQ1FDQUNRUUZCbWQ0QUlBaEJRR3NRRTBFQUlRY01BUXNnQlNBR0xRQURJZ1pOQkVBZ0NDQUdOZ0tBQVNBQ1FRRkI0ZDBBSUFoQmdBRnFFQk5CQUNFSERBRUxJQVFnQmtFQ2RHb2hDd0pBSUFsQkFVY2lEQTBBSUFzb0FnQkZEUUFnQ0NBR05nSlFJQUpCQVVIaTJRQWdDRUhRQUdvUUUwRUFJUWNNQVFzQ1FDQUpEUUFnQmtVTkFDQUlJQVkyQW1RZ0NDQUROZ0pnSUFKQkFVSFkzQUFnQ0VIZ0FHb1FFMEVBSVFjTUFRc0NRQ0FNRFFBZ0F5QUdSZzBBSUFnZ0JqWUNlQ0FJSUFNMkFuUWdDQ0FETmdKd0lBSkJBVUg4M0FBZ0NFSHdBR29RRTBFQUlRY01BUXNnQzBFQk5nSUFDeUFEUVFGcUlnTWdCVWNOQUFzZ0IwVWhCMEVBSVFNRFFBSkFBa0FnQkNBRFFRSjBJZ1pxS0FJQVJRUkFJQVlnQ21vdEFBSU5BUXNnQTBFQmFpSURJQVZIRFFJZ0IwRUJjUTBCSUFFb0FoQkJBVWNOQlVFQUlRTURRQ0FFSUFOQkFuUnFLQUlBQkVBZ0JTQURRUUZxSWdOSERRRU1Cd3NMUVFBaENTQUNRUUpCZ01nQVFRQVFFMEVBSVFNZ0JVRUVUd1JBSUFWQi9BRnhJUWRCQUNFR0EwQWdDaUFEUVFKMGFpSUxJQU02QUFNZ0MwRUJPZ0FDSUFvZ0EwRUJjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRUNjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFvZ0EwRURjaUlMUVFKMGFpSU1JQXM2QUFNZ0RFRUJPZ0FDSUFOQkJHb2hBeUFHUVFScUlnWWdCMGNOQUFzTElBVkJBM0VpQlVVTkJRTkFJQW9nQTBFQ2RHb2lCaUFET2dBRElBWkJBVG9BQWlBRFFRRnFJUU1nQ1VFQmFpSUpJQVZIRFFBTERBVUxJQWdnQXpZQ01FRUJJUWNnQWtFQlFialdBQ0FJUVRCcUVCTWdBMEVCYWlJRElBVkhEUUVMQ3lBRUVCUkJBQ0VPREFVTElBVkJCQkFYSWdRTkFRdEJBQ0VPSUFKQkFVSFkzd0JCQUJBVERBTUxJQVFRRkFzQ1FDQUFLQUo0SWdWRkRRQWdCU2dDRENJUFJRUkFJQVVvQWdRUUZDQUFLQUo0S0FJSUVCUWdBQ2dDZUNnQ0FCQVVJQUFvQW5naUJTZ0NEQ0lFQkg4Z0JCQVVJQUFvQW5nRklBVUxFQlFnQUVFQU5nSjREQUVMSUFFb0FoZ2hEUUpBQWtBZ0JTMEFFaUlMQkVBZ0JTZ0NBQ0VVSUFVb0FnUWhCaUFGS0FJSUlRcEJBQ0VEQWtBRFFDQU5JQThnQTBFQ2RHb3ZBUUJCTkd4cUtBSXNCRUFnQ3lBRFFRRnFJZ05IRFFFTUFnc0xJQWdnQXpZQ0lDQUNRUUZCa093QUlBaEJJR29RRTBFQUlRNE1CZ3NnQzBFMGJCQVlJZ2xGRFFGQkFDRURBMEFnRHlBRFFRSjBhaUlGTHdFQUlRY2dDU0FGTFFBQ0JIOGdCUzBBQXdVZ0F3dEJOR3hxSWdRZ0RTQUhRVFJzYWlJRi9RQUNBUDBMQWdBZ0JDQUZLQUl3TmdJd0lBUWdCZjBBQWlEOUN3SWdJQVFnQmYwQUFoRDlDd0lRSUFrZ0EwRTBiR29pQkNBRktBSUlJQVVvQWd4c1FRSjBFQndpQlRZQ0xDQUZSUVJBSUFNRVFDQURRZi8vQTNFaEFBTkFJQUJCTkd3Z0NXcEJDR3NvQWdBUUZDQUFRUUZySWdBTkFBc0xJQWtRRkVFQUlRNGdBa0VCUWR6ckFFRUFFQk1NQndzZ0JDQURJQXBxTFFBQU5nSVlJQVFnQXlBR2FpMEFBRFlDSUNBRFFRRnFJZ01nQzBjTkFBc2dBQ2dDZUM4QkVDSVFRUUZySVJJRFFDQUpJQk5CTkd4cUlnVW9BZ3dnQlNnQ0NHd2hCQ0FOSUE4Z0UwRUNkR29pQmk4QkFFRTBiR29vQWl3aENnSkFJQVl0QUFKRkJFQWdCRVVOQVNBRktBSXNJUU5CQUNFSFFRQWhCUUpBSUFSQkJFa05BQ0FESUFwclFSQkpEUUFnQkVGOGNTRUZRUUFoQmdOQUlBTWdCa0VDZENJTWFpQUtJQXhxL1FBQ0FQMExBZ0FnQmtFRWFpSUdJQVZIRFFBTElBUWdCVVlOQWdzZ0JTRUdJQVJCQTNFaURBUkFBMEFnQXlBR1FRSjBJaEZxSUFvZ0VXb29BZ0EyQWdBZ0JrRUJhaUVHSUFkQkFXb2lCeUFNUncwQUN3c2dCU0FFYTBGOFN3MEJBMEFnQXlBR1FRSjBJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0F5QUZRUVJxSWdkcUlBY2dDbW9vQWdBMkFnQWdBeUFGUVFocUlnZHFJQWNnQ21vb0FnQTJBZ0FnQXlBRlFReHFJZ1ZxSUFVZ0Ntb29BZ0EyQWdBZ0JrRUVhaUlHSUFSSERRQUxEQUVMSUFSRkRRQWdGQ0FHTFFBRElnWkJBblJxSVFVZ0NTQUdRVFJzYWlnQ0xDRURRUUFoQmlBRVFRRkhCRUFnQkVGK2NTRVZRUUFoREFOQUlBTWdCa0VDZENJSGFpQUZJQWNnQ21vb0FnQWlFU0FTSUJBZ0VVb2JRUUFnRVVFQVRoc2dDMnhCQW5ScUtBSUFOZ0lBSUFNZ0IwRUVjaUlIYWlBRklBY2dDbW9vQWdBaUJ5QVNJQWNnRUVnYlFRQWdCMEVBVGhzZ0MyeEJBblJxS0FJQU5nSUFJQVpCQW1vaEJpQU1RUUpxSWd3Z0ZVY05BQXNMSUFSQkFYRkZEUUFnQXlBR1FRSjBJZ1JxSUFVZ0JDQUthaWdDQUNJRUlCSWdCQ0FRU0J0QkFDQUVRUUJPR3lBTGJFRUNkR29vQWdBMkFnQUxJQk5CQVdvaUV5QUxSdzBBQ3d3Q0N5QUxRVFJzRUJnaUNRMEJDMEVBSVE0Z0FrRUJRZHpyQUVFQUVCTU1Bd3NnQVNnQ0VDSUZCRUJCQUNFREEwQWdEU0FEUVRSc2FpZ0NMQ0lFQkVBZ0JCQVVDeUFEUVFGcUlnTWdCVWNOQUFzTElBMFFGQ0FCSUFzMkFoQWdBU0FKTmdJWUN5QUFLQUowSWdORkRRRWdBeWdDQUNFSElBTXZBUVFpQ3dSQUlBZEJLbW9oRWlBSFFTUnFJUk1nQjBFZWFpRVJJQWRCR0dvaEZDQUhRUkpxSVJVZ0IwRU1haUVXSUFkQkJtb2hGeUFMUVFKcklSaEJBQ0VEUVFFaEJRTkFBa0FnQVNnQ0VDSUVJQWNnQTBFR2JHb2lEUzhCQUNJR1RRUkFJQWdnQkRZQ0ZDQUlJQVkyQWhBZ0FrRUNRWUU1SUFoQkVHb1FFd3dCQ3lBTkx3RUVJZ2xCQVdwQi8vOERjVUVCVFFSQUlBRW9BaGdnQmtFMGJHb2dEUzhCQWpzQk1Bd0JDeUFKUVFGcklncEIvLzhEY1NJUElBUlBCRUFnQ0NBRU5nSUVJQWdnRHpZQ0FDQUNRUUpCMkRnZ0NCQVREQUVMQWtBZ0JpQVBSZzBBSUEwdkFRSU5BQ0FJSUFFb0FoZ2lDU0FHUVRSc2FpSUVLQUl3TmdMb0FTQUlJQVQ5QUFJZy9Rc0QyQUVnQ0NBRS9RQUNFUDBMQThnQklBZ2dCUDBBQWdEOUN3TzRBU0FFSUFrZ0QwRTBiQ0lNYWlJSktRSUlOd0lJSUFRZ0NTa0NFRGNDRUNBRUlBa3BBaGczQWhnZ0JDQUpLUUlnTndJZ0lBUWdDU2tDS0RjQ0tDQUVJQWtvQWpBMkFqQWdCQ0FKS1FJQU53SUFJQUVvQWhnZ0RHb2lCQ0FJL1FBRHVBSDlDd0lBSUFRZ0NQMEFBOWdCL1FzQ0lDQUVJQWo5QUFQSUFmMExBaEFnQkNBSUtBTG9BVFlDTUNBRFFRRnFJQXRQRFFBZ0JTRUpJQmdnQTJ0Qi8vOERjU0lFUVFkUEJFQWdCU0FFUVFGcUlobEIrUDhIY1NJUWFpRUpJQXI5RUNFa0lBYjlFQ0VqUVFBaERBTkFJQ01nSkNBSElBVWdER3BCQm13aUJHb2lHaThCQVAwUUlBUWdGMm9pR3k4QkFQMGFBU0FFSUJacUlod3ZBUUQ5R2dJZ0JDQVZhaUlkTHdFQS9Sb0RJQVFnRkdvaUhpOEJBUDBhQkNBRUlCRnFJaDh2QVFEOUdnVWdCQ0FUYWlJZ0x3RUEvUm9HSUFRZ0Vtb2lCQzhCQVAwYUJ5SWhJQ1A5TGlBaElDVDlMU0lsL1U1QkQvMkxBVUVQL1l3Qi9WSWhJaUFoSUNQOUxTQWwvVkFpSWYwWkFFRUJjUVJBSUJvZ0l2MVpBUUFBQ3lBaC9Sa0JRUUZ4QkVBZ0d5QWkvVmtCQUFFTElDSDlHUUpCQVhFRVFDQWNJQ0w5V1FFQUFnc2dJZjBaQTBFQmNRUkFJQjBnSXYxWkFRQURDeUFoL1JrRVFRRnhCRUFnSGlBaS9Wa0JBQVFMSUNIOUdRVkJBWEVFUUNBZklDTDlXUUVBQlFzZ0lmMFpCa0VCY1FSQUlDQWdJdjFaQVFBR0N5QWgvUmtIUVFGeEJFQWdCQ0FpL1ZrQkFBY0xJQXhCQ0dvaURDQVFSdzBBQ3lBUUlCbEdEUUVMQTBBZ0NpRUVBa0FnQmlBSElBbEJCbXhxSWd3dkFRQWlFRWNFUUNBR0lRUWdEeUFRUncwQkN5QU1JQVE3QVFBTElBc2dDVUVCYWlJSlFmLy9BM0ZIRFFBTEN5QUJLQUlZSUFaQk5HeHFJQTB2QVFJN0FUQUxJQVZCQVdvaEJTQURRUUZxSWdNZ0MwY05BQXNnQUNnQ2RDSURLQUlBSVFjTElBY0VmeUFIRUJRZ0FDZ0NkQVVnQXdzUUZDQUFRUUEyQW5RTUFRdEJBQ0VPSUFKQkFVSDJ5UUJCQUJBVEN5QUlRZkFCYWlRQUlBNEw1UUVCQlg4akFFRWdheUlFSkFBQ2Z3SkFJQUFvQWp3aUF3UkFRUUVoQlFOQUlBQW9BbVFvQWhnZ0FDZ0NRQ0FDUVFKMGFpZ0NBQ0lHUVRSc2FpZ0NMRVVFUUNBRUlBWTJBaEFnQVVFQ1FZODdJQVJCRUdvUUUwRUFJUVVnQUNnQ1BDRURDeUFDUVFGcUlnSWdBMGtOQUFzTUFRdEJBU0VGUVFFZ0FDZ0NaQ0lES0FJUVJRMEJHZ05BSUFNb0FoZ2dBa0UwYkdvb0FpeEZCRUFnQkNBQ05nSUFJQUZCQWtHUE95QUVFQk5CQUNFRklBQW9BbVFoQXdzZ0FrRUJhaUlDSUFNb0FoQkpEUUFMQzBFQklBVU5BQm9nQVVFQlFhd1dRUUFRRTBFQUN5QUVRU0JxSkFBTCtnWUNFMzhDZmlBQUtBSVlJaEFvQWhCRkJFQkJBUThMSUJBb0FoZ2hEU0FBS0FJVUtBSUFLQUlVSVFzRFFDQUJJQTBvQWlRaUFqWUNKQ0FMS0FJY0lnWWdBa0dZQVd4cUlRTUNRQUpBQW44Z0FDZ0NRQ0lSQkVBZ0JpQUxLQUlZUVpnQmJHb2lBa0dRQVdzb0FnQWdBa0dZQVdzb0FnQnJJUXdnQTBFTWFpRUdJQU5CQkdvaEJDQURLQUlJSVFJZ0F5Z0NBQ0VGUVNRTUFRc2dBMEdVQVdvaEJpQURRWXdCYWlFRUlBTW9BcEFCSWdJZ0F5Z0NpQUVpQldzaERFRTBDeUFMYWlnQ0FDSVNSUTBBSUFRb0FnQWhCeUFHS0FJQUlRa2dBaUFGYXlFR0lBRW9BZ2dpQTBKL0lBRTFBaWdpRllaQ2Y0VWlGaUFCTlFJUWZDQVZpS2NpQ0dvaEJBSi9JQVVnQ0VzRVFDQUZJQWhySVE1QkFDRUlRUUFnQWlBRVRRMEJHaUFHSUFRZ0JXc2lCbXNNQVFzZ0NDQUZheUVJSUFJZ0JFMEVRQ0FHSUFocklRWkJBQ0VPUVFBTUFRdEJBQ0VPSUFNaEJpQUNJQVJyQ3lBSklBZHJJUUlnQVNnQ0RDSUVJQllnQVRVQ0ZId2dGWWluSWdwcUlRVUNmeUFISUFwTEJFQWdCeUFLYXlFUFFRQWhDa0VBSUFVZ0NVOE5BUm9nQWlBRklBZHJJZ0pyREFFTElBb2dCMnNoQ2lBRklBbFBCRUFnQWlBS2F5RUNRUUFoRDBFQURBRUxRUUFoRHlBRUlRSWdDU0FGYXdzaEIwRUFJUVVnQ0VFQVNBMEJJQXBCQUVnTkFVRUFTQTBCSUFkQkFFZ05BU0FHUVFCSURRRWdBa0VBU0EwQklBTWdEMndnRG1vaEJ5QUtJQXhzSUFocUlRa0NRQUpBQWtBZ0FTZ0NMQ0lJRFFBZ0NRMEFJQWNOQUNBRElBeEhEUUFnQXlBR1J3MEFJQUlnQkVjTkFTQUJJQXRCSkVFMElCRWJhaUlDS0FJQU5nSXNJQUpCQURZQ0FBd0RDeUFJRFFFTElBUkZEUUlnQkswZ0E2MStRaUNJcHcwQ0lBTWdCR3dpQTBILy8vLy9BMHNOQWlBQklBTkJBblFRSENJRE5nSXNJQU5GRFFJZ0JpQUJLQUlJSWdSR0lBRW9BZ3dpQlNBQ1JuRU5BQ0FEUVFBZ0JDQUZiRUVDZEJBWkdnc2dBa1VOQUNBQ1FRRnhJQVpCQW5RaEJpQUJLQUlzSUFkQkFuUnFJUVFnRWlBSlFRSjBhaUVGSUFKQkFVY0VRQ0FDUWY3Ly8vOEhjU0VIUVFBaEFnTkFJQVFnQlNBR0VCWWdCU0FNUVFKMElnbHFJZ2dnQ1dvaEJTQUJLQUlJUVFKMGFpQUlJQVlRRmlBQktBSUlRUUowYWlFRUlBSkJBbW9pQWlBSFJ3MEFDd3RGRFFBZ0JDQUZJQVlRRmhvTElBdEJ6QUJxSVFzZ0RVRTBhaUVOSUFGQk5Hb2hBVUVCSVFVZ0ZFRUJhaUlVSUJBb0FoQkpEUUVMQ3lBRkN3UUFRWDhMZ0JRQ0NYOEtmaU1BUWFBQmF5SUZKQUFDUUNBQ1FTTk5CRUJCQUNFQ0lBTkJBVUdxTDBFQUVCTU1BUXNnQWtFa2F5SUNJQUpCQTI0aUNVRURiRWNFUUVFQUlRSWdBMEVCUWFvdlFRQVFFd3dCQ3lBQUtBSmdJUVlnQVNBRlFad0JhaUlDUVFJUUZTQUFJQVVvQXB3Qk93Rm9JQUZCQW1vZ0JrRUlha0VFRUJVZ0FVRUdhaUFHUVF4cVFRUVFGU0FCUVFwcUlBWkJCQkFWSUFGQkRtb2dCa0VFYWtFRUVCVWdBVUVTYWlBQVFmUUFha0VFRUJVZ0FVRVdhaUFBUWZnQWFrRUVFQlVnQVVFYWFpQUFRZXdBYWtFRUVCVWdBVUVlYWlBQVFmQUFha0VFRUJVZ0FVRWlhaUFDUVFJUUZRSkFBa0FDUUNBRktBS2NBU0lDUVlDQUFVMEVRQ0FHSUFJMkFoQWdBaUFKUndSQUlBVWdDVFlDaEFFZ0JTQUNOZ0tBQVNBRFFRRkIzL1FBSUFWQmdBRnFFQk5CQUNFQ0RBVUxJQVlvQWdRaUFpQUdLQUlNSWdkSklBWW9BZ2dpQ3lBR0tBSUFJZ1JMY1VVRVFDQUZJQWV0SUFLdGZUY0RlQ0FGSUF1dElBU3RmVGNEY0NBRFFRRkJxZkVBSUFWQjhBQnFFQk5CQUNFQ0RBVUxJQUFvQW5RaUNFRUFJQUFvQW5naUNodEZCRUFnQlNBS05nSUVJQVVnQ0RZQ0FDQURRUUZCMGZVQUlBVVFFMEVBSVFJTUJRc0NRQUpBSUFBb0Ftd2lEQ0FFU3cwQVFYOGdDQ0FNYWlJSUlBZ2dERWtiSUFSTkRRQWdBQ2dDY0NJSUlBSkxEUUJCZnlBSUlBcHFJZ29nQ0NBS1N4c2dBa3NOQVF0QkFDRUNJQU5CQVVIREZVRUFFQk1NQlFzQ1FDQUFLQUw0QVEwQUlBQW9BdkFCSWdoRkRRQWdBQ2dDOUFFaUNrVU5BQ0FMSUFScklnUWdDRVlnQnlBQ2F5SUNJQXBHY1EwQUlBVWdBallDYkNBRklBUTJBbWdnQlNBS05nSmtJQVVnQ0RZQ1lDQURRUUZCa2UwQUlBVkI0QUJxRUJOQkFDRUNEQVVMSUFZZ0NVRTBFQmNpQkRZQ0dDQUVSUTBCQWtBZ0JpZ0NFRVVOQUNBQlFTUnFJQVZCbUFGcUlnSkJBUkFWSUFRZ0JTZ0NtQUVpQ1VFSGRpSUtOZ0lnSUFRZ0NVSC9BSEZCQVdvaUREWUNHQ0FBS0FMNEFTRUxJQUZCSldvZ0FrRUJFQlVnQkNBRktBS1lBVFlDQUNBQlFTWnFJQUpCQVJBVklBUWdCU2dDbUFFaUJ6WUNCRUVBSVFJZ0JDZ0NBQ0lJUVlBQ2EwR0Jma2tFUUVFQUlRa01CUXRCQUNFSklBZEJnQUpyUVlGK1NRMEVJQVFvQWhnaUIwRWZTdzBESUFSQkFEWUNKQ0FFSUFBb0FyZ0JOZ0lvUVFFaENTQUdLQUlRUVFGTkRRQkJBQ0FLSUFzYklRcEJBQ0FNSUFzYklRc2dBVUVuYWlFQkEwQWdBU0FGUVpnQmFrRUJFQlVnQkNBRktBS1lBU0lJUVFkMklnYzJBbFFnQkNBSVFmOEFjVUVCYWlJSU5nSk1Ba0FnQUNnQytBRU5BQ0FBTFFEVUFVRUVjUTBBSUFnZ0MwWWdCeUFLUm5FTkFDQUZJQWMyQWxRZ0JTQUlOZ0pRSUFVZ0NUWUNUQ0FGSUFvMkFrZ2dCU0FMTmdKRUlBVWdDVFlDUUNBRFFRSkJsZk1BSUFWQlFHc1FFd3NnQVVFQmFpQUZRWmdCYWlJSFFRRVFGU0FFSUFVb0FwZ0JOZ0kwSUFGQkFtb2dCMEVCRUJVZ0JDQUZLQUtZQVNJSE5nSTRJQVFvQWpRaUNFR0FBbXRCZ1g1SkRRVWdCMEdBQW10QmdINU5EUVVnQkNnQ1RDSUhRU0JQRFFRZ0FVRURhaUVCSUFSQkFEWUNXQ0FFSUFBb0FyZ0JOZ0pjSUFSQk5Hb2hCQ0FKUVFGcUlna2dCaWdDRUVrTkFBc0xRUUFoQWlBQUtBSjBJZ2RGRFFRZ0FDZ0NlQ0lMUlEwRUlBQWdCNjBpRFVJQmZTSVBJQVlvQWdnZ0FDZ0NiQ0lJYTYxOElBMkFweUlCTmdLQUFTQUFJQXV0SWc1Q0FYMGlFQ0FHS0FJTUlBQW9BbkFpQ211dGZDQU9nS2NpQkRZQ2hBRUNRQUpBSUFGRkRRQWdCRVVOQUVILy93TWdCRzRnQVU4TkFRc2dCU0FFTmdJVUlBVWdBVFlDRUNBRFFRRkJnKzRBSUFWQkVHb1FFd3dGQ3lBQklBUnNJUWtDUUNBQUxRQmNRUUp4QkVBZ0FDQUFLQUljSUFocklBZHVOZ0ljSUFBZ0FDZ0NJQ0FLYXlBTGJqWUNJQ0FBSUE4Z0FDZ0NKQ0FJYTYxOElBMkFQZ0lrSUFBZ0VDQUFLQUlvSUFwcnJYd2dEb0ErQWlnTUFRc2dBQ0FFTmdJb0lBQWdBVFlDSkNBQVFnQTNBaHdMSUFBZ0NVR01MQkFYSWdFMkFyUUJJQUZGQkVBZ0EwRUJRYm9lUVFBUUV3d0ZDeUFHS0FJUVFiZ0lFQmNoQVNBQUtBSU1JQUUyQXRBcklBQW9BZ3dvQXRBclJRUkFJQU5CQVVHNkhrRUFFQk1NQlF0QkNrRVVFQmNoQVNBQUtBSU1JQUUyQXZBcklBQW9BZ3dpQVNnQzhDdEZCRUFnQTBFQlFib2VRUUFRRXd3RkN5QUJRUW8yQXZnclFRcEJGQkFYSVFFZ0FDZ0NEQ0FCTmdMOEt5QUFLQUlNSWdFb0F2d3JSUVJBSUFOQkFVRzZIa0VBRUJNTUJRc2dBVUVLTmdLRUxBSkFJQVlvQWhBaUIwVU5BQ0FHS0FJWUlRdEJBQ0VCSUFkQkFVY0VRQ0FIUVg1eElRaEJBQ0VFQTBBZ0N5QUJRVFJzYWlJS0tBSWdSUVJBSUFBb0Fnd29BdEFySUFGQnVBaHNha0VCSUFvb0FoaEJBV3QwTmdLMENBc2dDeUFCUVFGeUlncEJOR3hxSWd3b0FpQkZCRUFnQUNnQ0RDZ0MwQ3NnQ2tHNENHeHFRUUVnRENnQ0dFRUJhM1EyQXJRSUN5QUJRUUpxSVFFZ0JFRUNhaUlFSUFoSERRQUxDeUFIUVFGeFJRMEFJQXNnQVVFMGJHb2lCQ2dDSUEwQUlBQW9BZ3dvQXRBcklBRkJ1QWhzYWtFQklBUW9BaGhCQVd0ME5nSzBDQXNnQ1FSQUlBQW9BclFCSVFGQkFDRUVBMEFnQVNBR0tBSVFRYmdJRUJjaUJ6WUMwQ3NnQjBVRVFDQURRUUZCdWg1QkFCQVREQWNMSUFGQmpDeHFJUUVnQkVFQmFpSUVJQWxKRFFBTEN3Si9JQUFvQXVBQklBQW9Bb1FCSUFBb0FvQUJiQ0lCTmdJa0lBRkJLQkFYSVFFZ0FDZ0M0QUVpQXlBQk5nSW9RUUFnQVVVTkFCcEJBU0FES0FJa1JRMEFHa0VBSVFNRFFBSkFRUUFoQkNBQklBTkJLR3dpQjJvaUFVRUFOZ0lVSUFGQjVBQTJBaHhCNUFCQkdCQVhJUWtnQnlBQUtBTGdBU0lMS0FJb0lnRnFJQWsyQWhnZ0NVVU5BRUVCSVFRZ0EwRUJhaUlESUFzb0FpUkpEUUVMQ3lBRUMwVU5CQ0FBUVFRMkFnZ2dCaWdDRUNJREJFQkJmeUFBS0FKd0lnRWdBQ2dDZUNJQ0lBQW9Bb1FCUVFGcmJHb2lCQ0FDYWlJQ0lBSWdCRWtiSWdJZ0JpZ0NEQ0lFSUFJZ0JFa2JyVUlCZlNFUVFYOGdBQ2dDYkNJQ0lBQW9BblFpQkNBQUtBS0FBVUVCYTJ4cUlnQWdCR29pQkNBQUlBUkxHeUlBSUFZb0FnZ2lCQ0FBSUFSSkc2MUNBWDBoRVNBQklBWW9BZ1FpQUNBQUlBRkpHNjFDQVgwaEVpQUNJQVlvQWdBaUFDQUFJQUpKRzYxQ0FYMGhFeUFHS0FJWUlRQkJBQ0VCQTBBZ0FDQVNJQUExQWdRaURYd2dEWUFpRkQ0Q0ZDQUFJQk1nQURVQ0FDSU9mQ0FPZ0NJVlBnSVFJQUJDZnlBQU5RSW9JZytHUW4rRkloWWdEU0FRZkNBTmdDQVVmVUwvLy8vL0Q0TjhJQStJUGdJTUlBQWdEaUFSZkNBT2dDQVZmVUwvLy8vL0Q0TWdGbndnRDRnK0FnZ2dBRUUwYWlFQUlBRkJBV29pQVNBRFJ3MEFDd3RCQVNFQ0RBUUxJQVVnQWpZQ2tBRWdBMEVCUWRjOUlBVkJrQUZxRUJOQkFDRUNEQU1MUVFBaEFpQUdRUUEyQWhBZ0EwRUJRYm9lUVFBUUV3d0NDeUFGSUFjMkFqUWdCU0FKTmdJd0lBTkJBVUdGK0FBZ0JVRXdhaEFUREFFTElBVWdCellDS0NBRklBZzJBaVFnQlNBSk5nSWdJQU5CQVVIZjd3QWdCVUVnYWhBVEN5QUZRYUFCYWlRQUlBSUxtZ01CQm44akFFRVFheUlHSkFBQ2Z5QUNJQUpCQVVFQ0lBQW9BbUFvQWhBaUNFR0JBa2tiSWdkQkFYUkJCV29pQkc0aUJTQUViRVlnQWlBRVQzRkZCRUFnQTBFQlFmNGpRUUFRRTBFQURBRUxBbjhnQUNnQ0NFRVFSZ1JBSUFBb0FyUUJJQUFvQXVRQlFZd3NiR29NQVFzZ0FDZ0NEQXNoQkVFQUlRQWdCQzBBaUN3aUFrRUVjUVJBSUFRb0FxUURRUUZxSVFBTElBQWdCV29pQlVFZ1R3UkFJQVlnQlRZQ0FDQURRUUZCd0R3Z0JoQVRRUUFNQVFzZ0JDQUNRUVJ5T2dDSUxDQUFJQVZKQkVBZ0JDQUFRWlFCYkdwQnFBTnFJUUlEUUNBQklBSkJBUkFWSUFGQkFXb2lBU0FDUVFScUlBY1FGU0FCSUFkcUlnRWdBa0VJYWtFQ0VCVWdBaUFDS0FJSUlnTWdCQ2dDQ0NJSklBTWdDVWtiTmdJSUlBRkJBbW9nQWtFTWFrRUJFQlVnQVVFRGFpSUJJQUpCRUdvZ0J4QVZJQUVnQjJvaUFTQUdRUXhxUVFFUUZTQUNJQVlvQWd3MkFpUWdBaUFDS0FJUUlnTWdDQ0FESUFoSkd6WUNFQ0FDUVpRQmFpRUNJQUZCQVdvaEFTQUFRUUZxSWdBZ0JVY05BQXNMSUFRZ0JVRUJhellDcEFOQkFRc2dCa0VRYWlRQUMrZ0JBUU4vSXdCQkVHc2lCQ1FBQW44Q1FDQUJJQVJCQ0dvQ2Z5QUFLQUpnS0FJUVFZQUNUUVJBSUFJRVFFRi9JUVZCQVF3Q0N5QURRUUZCc2lSQkFCQVRRUUFNQXdzZ0FrRUJUUTBCUVg0aEJVRUNDeUlHRUJVZ0JDQUNJQVZxTmdJTUlBUW9BZ2dpQWlBQUtBSmdLQUlRSWdWUEJFQWdCQ0FGTmdJRUlBUWdBallDQUNBRFFRRkIrenNnQkJBVFFRQU1BZ3NnQUNBQ0lBRWdCbW9nQkVFTWFpQURFRXRGQkVBZ0EwRUJRYklrUVFBUUUwRUFEQUlMUVFFZ0JDZ0NERVVOQVJvZ0EwRUJRYklrUVFBUUUwRUFEQUVMSUFOQkFVR3lKRUVBRUJOQkFBc2dCRUVRYWlRQUM5VUJBUU4vSXdCQkVHc2lCQ1FBSUFRZ0FqWUNEQUpBQWtBZ0FFRUFJQUVnQkVFTWFpQURFRXRGRFFBZ0JDZ0NEQTBBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREF0QkFTRUZJQUFvQW1Bb0FoQkJBa2tOQVNnQzBDc2lBa0VjYWlFR1FRRWhBU0FDSVFNRFFDQURJQUlvQWhnMkF0QUlJQU1nQWlnQ3BBWTJBdHdPSUFOQjFBaHFJQVpCaUFZUUZob2dBMEc0Q0dvaEF5QUJRUUZxSWdFZ0FDZ0NZQ2dDRUVrTkFBc01BUXNnQTBFQlFjb2pRUUFRRXdzZ0JFRVFhaVFBSUFVTDFnRUJBMzhqQUVFUWF5SUVKQUFDUUNBQ1FRRkJBaUFBS0FKZ0tBSVFJZ0pCZ1FKSkd5SUZRUUpxUndSQVFRQWhBQ0FEUVFGQm1DRkJBQkFUREFFTEFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXJRQklBQW9BdVFCUVl3c2JHb01BUXNnQUNnQ0RBc2hCaUFCSUFSQkRHb2dCUkFWUVFFaEFDQUJJQVZxSWdVZ0JFRUlha0VCRUJVZ0FpQUVLQUlNSWdGTkJFQWdCQ0FDTmdJRUlBUWdBVFlDQUNBRFFRRkJwdlFBSUFRUUUwRUFJUUFNQVFzZ0JVRUJhaUFHS0FMUUt5QUJRYmdJYkdwQnFBWnFRUUVRRlFzZ0JFRVFhaVFBSUFBTGhBSUJCWDhqQUVFUWF5SUVKQUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0N0QUVnQUNnQzVBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFR0FrQkJBVUVDSUFBb0FtQWlCeWdDRUVHQkFra2JJZ1VnQWs4RVFFRUFJUUlnQTBFQlFaZ2tRUUFRRXd3QkN5QUVJQUlnQlVGL2MybzJBZ3dnQVNBRVFRaHFJQVVRRlNBRUtBSUlJZ2dnQnlnQ0VFOEVRRUVBSVFJZ0EwRUJRYzd0QUVFQUVCTU1BUXRCQVNFQ0lBRWdCV29pQVNBR0tBTFFLeUFJUWJnSWJHcEJBUkFWSUFBZ0JDZ0NDQ0FCUVFGcUlBUkJER29nQXhCTVJRUkFRUUFoQWlBRFFRRkJtQ1JCQUJBVERBRUxJQVFvQWd4RkRRQkJBQ0VDSUFOQkFVR1lKRUVBRUJNTElBUkJFR29rQUNBQ0M2d0dBUWQvSXdCQkVHc2lCaVFBSUFZZ0FqWUNEQ0FBS0FKZ0lRa0NmeUFBS0FJSVFSQkdCRUFnQUNnQ3RBRWdBQ2dDNUFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUlFSUFRdEFJZ3NRUUZ5T2dDSUxBSkFJQUpCQkUwRVFDQURRUUZCc0NOQkFCQVREQUVMSUFFZ0JFRUJFQlVnQkNnQ0FFRUlUd1JBSUFOQkFVR09JMEVBRUJNTUFRc2dBVUVCYWlBR1FRaHFRUUVRRlNBRUlBWW9BZ2dpQWpZQ0JDQUNRUVZPQkVBZ0EwRUJRZVVpUVFBUUV5QUVRWDgyQWdRTElBRkJBbW9nQkVFSWFrRUNFQlVnQkNnQ0NDSUhRWUNBQkd0QmdJQjhUUVJBSUFZZ0J6WUNBQ0FEUVFGQmlqOGdCaEFUREFFTElBUWdBQ2dDdkFFaUFpQUhJQUliTmdJTUlBRkJCR29nQkVFUWFrRUJFQlVnQkNnQ0VFRUNUd1JBSUFOQkFVSDdLa0VBRUJNTUFRc2dBVUVGYWlFQ0lBWWdCaWdDREVFRmF6WUNEQUpBSUFrb0FoQWlCMFVOQUNBRUtBSUFRUUZ4SVFnZ0JDZ0MwQ3NoQkVFQUlRa2dCMEVJVHdSQUlBZEJlSEVoQVFOQUlBUWdCVUc0Q0d4cUlBZzJBZ0FnQkNBRlFRRnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkFuSkJ1QWhzYWlBSU5nSUFJQVFnQlVFRGNrRzRDR3hxSUFnMkFnQWdCQ0FGUVFSeVFiZ0liR29nQ0RZQ0FDQUVJQVZCQlhKQnVBaHNhaUFJTmdJQUlBUWdCVUVHY2tHNENHeHFJQWcyQWdBZ0JDQUZRUWR5UWJnSWJHb2dDRFlDQUNBRlFRaHFJUVVnQ2tFSWFpSUtJQUZIRFFBTEN5QUhRUWR4SWdGRkRRQURRQ0FFSUFWQnVBaHNhaUFJTmdJQUlBVkJBV29oQlNBSlFRRnFJZ2tnQVVjTkFBc0xRUUFoQlNBQVFRQWdBaUFHUVF4cUlBTVFURVVFUUNBRFFRRkJzQ05CQUJBVERBRUxJQVlvQWd3RVFDQURRUUZCc0NOQkFCQVREQUVMQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEFTQUFLQUpnS0FJUVFRSlBCRUFnQVNnQzBDc2lBU2dDQkVFQ2RDRUhJQUZCc0FkcUlRb2dBVUdzQm1vaEEwRUJJUWtnQVNFQ0EwQWdBaUFCL1FBQ0JQMExBcndJSUFJZ0FTZ0NGRFlDekFnZ0FrSGtEbW9nQXlBSEVCWWFJQUpCNkE5cUlBb2dCeEFXR2lBQ1FiZ0lhaUVDSUFsQkFXb2lDU0FBS0FKZ0tBSVFTUTBBQ3d0QkFTRUZDeUFHUVJCcUpBQWdCUXZyQ2dFR2Z5TUFRWUFCYXlJRkpBQWdCVUVBTmdKNEFrQWdBa0VJUndSQUlBTkJBVUdxSDBFQUVCTWdBMEVCUWFvZlFRQVFFd3dCQ3lBQklBQkI1QUZxUVFJUUZTQUJRUUpxSUFWQi9BQnFRUVFRRlNBQlFRWnFJQVZCOUFCcVFRRVFGU0FCUVFkcUlBVkIrQUJxUVFFUUZTQUFLQUxrQVNJQklBQW9Bb0FCSWdnZ0FDZ0NoQUZzVHdSQUlBVWdBVFlDY0NBRFFRRkIvandnQlVId0FHb1FFd3dCQ3lBQUtBSzBBU0FCUVl3c2JHb2hBaUFCSUFodUlRY2dCU2dDZENFRUFrQWdBQ2dDTENJR1FRQk9JQUVnQmtkeERRQWdBaWdDMUN0QkFXb2lCaUFFUmcwQUlBVWdCallDYUNBRklBUTJBbVFnQlNBQk5nSmdJQU5CQVVHV1BTQUZRZUFBYWhBVFFRQWhCQXdCQ3lBQ0lBUTJBdFFyQWtBZ0JTZ0NmQ0lFUVFGclFReE5CSDhnQkVFTVJ3MEJJQVZCRERZQ1FDQURRUUpCczl3QUlBVkJRR3NRRXlBRktBSjhCU0FFQzBVRVFDQURRUVJCb3RNQVFRQVFFeUFBUVFFMkFqZ0xBa0FDUUFKQUFrQWdBaWdDMkNzaUJnUkFJQVVvQW5RaUJDQUdTUTBCSUFVZ0JqWUNOQ0FGSUFRMkFqQWdBMEVCUWZrbklBVkJNR29RRXlBQVFRRTJBamhCQUNFRURBWUxJQVVvQW5naUJBMEJEQU1MSUFVb0FuZ2lCRVVOQVFzZ0JTQUVJQUF0QUZ4QkJIWkJBWEZxSWdZMkFuZ2dCU2dDZENJRUlBSW9BdGdySWdsQkFXdExCRUFnQlNBSk5nSVVJQVVnQkRZQ0VDQURRUUZCbGljZ0JVRVFhaEFUSUFCQkFUWUNPRUVBSVFRTUJBc2dCQ0FHVHdSQUlBVWdCallDSkNBRklBUTJBaUFnQTBFQlFkMG9JQVZCSUdvUUV5QUFRUUUyQWpoQkFDRUVEQVFMSUFJZ0JqWUMyQ3NMSUFZZ0JTZ0NkRUVCYWtjTkFDQUFJQUF0QUZ4QkFYSTZBRndMSUFVb0Fud2hBaUFBUVJBMkFnZ2dBRUVBSUFKQkRHc2dBQ2dDT0JzMkFoZ0NRQ0FBS0FJc0lnSkJmMFlFUUVFRUlRUUNRQ0FCSUFjZ0NHeHJJZ0VnQUNnQ0hFa05BQ0FCSUFBb0FpUlBEUUFnQnlBQUtBSWdTUTBBSUFjZ0FDZ0NLRTlCQW5RaEJBc2dBQ0FBTFFCY1Fmc0JjU0FFY2pvQVhDQUFLQUxrQVNFQkRBRUxJQUFnQUMwQVhFSDdBWEVnQUNnQzVBRWlBU0FDUjBFQ2RISTZBRndMSUFBb0F1QUJLQUlvSUFGQktHeHFJZ0lnQVRZQ0FDQUNJQVVvQW5RMkFnd2dCU2dDZUNFRUlBQW9Ba3hGQkVBZ0FpZ0NCQ0FFVHdSQVFRRWhCQXdEQ3lBRklBRTJBZ0FnQTBFQ1FhY01JQVVRRXlBQVFRRTJBa3dnQlNnQ2VDRUVDeUFBS0FMa0FTRUJJQUFvQXVBQktBSW9JUUlnQkFSQUlBSWdBVUVvYkdvaUFTQUVOZ0lFSUFFZ0JTZ0NlQ0lDTmdJSUlBRW9BaEFpQVVVRVFDQUNRUmdRRnlFQklBQW9BdUFCS0FJb0lBQW9BdVFCUVNoc2FpQUJOZ0lRSUFFRVFFRUJJUVFNQkF0QkFDRUVJQU5CQVVIK05VRUFFQk1NQXdzZ0FTQUNRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0RDeUFDSUFFMkFoQkJBU0VFREFJTEFrQWdBaUFCUVNoc2FpSUVLQUlRSWdZTkFDQUVRUW8yQWdoQkNrRVlFQmNoQmlBQUtBTGdBU2dDS0NJQ0lBQW9BdVFCSWdGQktHeHFJQVkyQWhBZ0JnMEFRUUFoQkNBQ0lBRkJLR3hxUVFBMkFnZ2dBMEVCUWY0MVFRQVFFd3dDQ3lBRktBSjBJZ2NnQWlBQlFTaHNhaUlCS0FJSVNRUkFRUUVoQkF3Q0MwRUJJUVFnQVNBSFFRRnFJZ0UyQWdnZ0JpQUJRUmhzRUJzaEFTQUFLQUxnQVNnQ0tDQUFLQUxrQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRkVFQUlRUWdBQ2dDNEFFb0FpZ2dBQ2dDNUFGQktHeHFJZ0JCQURZQ0NDQUFRUUEyQWhBZ0EwRUJRZjQxUVFBUUV3d0NDeUFDSUFFMkFoQU1BUXNnQlNBRU5nSlFJQU5CQVVIQTNnQWdCVUhRQUdvUUUwRUFJUVFMSUFWQmdBRnFKQUFnQkF2YUJnRUlmeU1BUWRBQWF5SURKQUFnQTBFQk5nSk1JQUFvQWl3aENRSkFBa0FnQUNnQzRBRW9BaWdpQkVVTkFDQUVLQUlRUlEwQUFrQWdCQ0FKUVNoc2FpSUVLQUlFUlFSQUlBRWdBQ2tETUVJQ2ZDQUNFREFOQVNBQ1FRRkJteXBCQUJBVERBTUxJQUVnQkNnQ0VDa0RBQ0FDRURCRkJFQWdBa0VCUVpzcVFRQVFFd3dEQ3lBQklBQW9BaEJCQWlBQ0VCMUJBa2NFUUNBQ1FRRkJneE5CQUJBVERBTUxJQUFvQWhBZ0EwSElBR3BCQWhBVklBTW9Ba2hCa1A4RFJnMEFJQUpCQVVIRUgwRUFFQk1NQWdzZ0FDZ0NDRUdBQWtjTkFDQUFRUWcyQWdnTEFrQWdBQ2dDaEFFZ0FDZ0NnQUZzSWdkRkRRQWdBQ2dDdEFFaEJVRUFJUVFnQjBFSVR3UkFJQWRCZUhFaENBTkFJQVVnQkVHTUxHeHFRWDgyQXRRcklBVWdCRUVCY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVDY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVEY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVFY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVGY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVHY2tHTUxHeHFRWDgyQXRRcklBVWdCRUVIY2tHTUxHeHFRWDgyQXRRcklBUkJDR29oQkNBS1FRaHFJZ29nQ0VjTkFBc0xJQWRCQjNFaUIwVU5BQU5BSUFVZ0JFR01MR3hxUVg4MkF0UXJJQVJCQVdvaEJDQUdRUUZxSWdZZ0IwY05BQXNMUVFBaEJpQUFJQU5CeUFCcVFRQWdBMEhFQUdvZ0EwRkFheUFEUVR4cUlBTkJPR29nQTBFMGFpQURRY3dBYWlBQklBSVFMRVVOQUNBSlFRRnFJUWNEUUFKQUlBTW9Ba3hGRFFBZ0FDQURLQUpJSWdSQkFFRUFJQUVnQWhBeFJRMENJQUFvQW9BQklRZ2dBQ2dDaEFFaENpQURJQVJCQVdvaUJUWUNJQ0FESUFnZ0NtdzJBaVFnQWtFRVFlN2JBQ0FEUVNCcUVCTWdBQ2dDNkFFZ0FDZ0NaQ2dDR0JDQUFVVU5BaUFBS0FLMEFTQUVRWXdzYkdvaUJpZ0MzQ3NpQ0FSQUlBZ1FGQ0FHUWdBM0F0d3JDeUFESUFVMkFoQWdBa0VFUWJTQkFTQURRUkJxRUJNZ0JDQUpSZ1JBSUFFZ0FDZ0M0QUVwQXdoQ0Fud2dBaEF3RFFGQkFDRUdJQUpCQVVHYktrRUFFQk1NQXdzZ0F5QUhOZ0lFSUFNZ0JUWUNBQ0FDUVFKQnErb0FJQU1RRTBFQUlRWWdBQ0FEUWNnQWFrRUFJQU5CeEFCcUlBTkJRR3NnQTBFOGFpQURRVGhxSUFOQk5Hb2dBMEhNQUdvZ0FTQUNFQ3dOQVF3Q0N3c2dBQ0FDRUg4aEJnc2dBMEhRQUdva0FDQUdDNFlVQXc1L0FuNEJleU1BUWRBQWF5SUpKQUFnQ1VFQk5nSk1Ba0FDUUNBQUtBS0FBVUVCUncwQUlBQW9Bb1FCUVFGSERRQWdBQ2dDYkEwQUlBQW9BbkFOQUNBQUtBSmtJZ01vQWdBTkFDQURLQUlFRFFBZ0F5Z0NDQ0FBS0FKMFJ3MEFJQU1vQWd3Z0FDZ0NlRWNOQUVFQUlRTWdBQ0FKUWNnQWFrRUFJQWxCeEFCcUlBbEJRR3NnQ1VFOGFpQUpRVGhxSUFsQk5Hb2dDVUhNQUdvZ0FTQUNFQ3hGRFFFQ1FBSkFJQWtvQWt4RkRRQWdBQ0FKS0FKSVFRQkJBQ0FCSUFJUU1VVU5BQ0FBS0FKa0lnRW9BaEFOQVVFQklRTU1Bd3NnQWtFQlFhUEVBRUVBRUJNTUFnc2dBU2dDR0NFRkEwQWdCU0FFUVRSc0lnRnFLQUlzRUJRZ0FDZ0NaQ0lDS0FJWUlnVWdBV29pQXlBQUtBTG9BU0lIS0FJVUtBSUFLQUlVSUFSQnpBQnNhaUlHS0FJa05nSXNJQU1nQnlnQ0dDZ0NHQ0FCYWlnQ0pEWUNKQ0FHUVFBMkFpUkJBU0VESUFSQkFXb2lCQ0FDS0FJUVNRMEFDd3dCQ3lBQVFnQTNBMUFnQUNnQ1dCQVVJQUJCQURZQ1dBSkFBa0FnQUNnQ0hBMEFJQUFvQWlBTkFDQUFLQUlrSUFBb0FvQUJSdzBBUWdJaEVTQUFLQUlvSUFBb0FvUUJSZzBCQzBJQ0lSRWdBQ2dDVEEwQUlBRW9BaHhCQWtZTkFDQUFLQUtBQVNJTklBQW9Bb1FCYkNJREJINGdBMEVCY1NFRUlBQW9BdUFCS0FJb0lRY0NRQ0FEUVFGR0JFQkJBQ0VEUWdBaEVRd0JDeUFEUVg1eElRWkJBQ0VEUWdBaEVRTkFJQWNnQTBFb2JHb2lDQ2dDQkNJS0JFQWdDQ2dDRUNBS1FSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnQnlBRFFRRnlRU2hzYWlJSUtBSUVJZ29FUUNBSUtBSVFJQXBCR0d4cVFRaHJLUU1BSWhJZ0VTQVJJQkpUR3lFUkN5QURRUUpxSVFNZ0JVRUNhaUlGSUFaSERRQUxDd0pBSUFSRkRRQWdCeUFEUVNoc2FpSURLQUlFSWdWRkRRQWdBeWdDRUNBRlFSaHNha0VJYXlrREFDSVNJQkVnRVNBU1V4c2hFUXNnRVVJQ2ZBVkNBZ3NoRVVFQUlRUUNRQ0FBS0FJZ0lnWWdBQ2dDS0NJT1R3MEFJQUFvQWlRaUNDQUFLQUljSWdWTkRRQWdCU0FJSUFWcklncEJmSEVpQzJvaEJ5QUFLQUxnQVNnQ0tDRVBJQXBCQkVraEVBTkFJQThnQmlBTmJFRW9iR29oREFKQUFrQWdFQVJBSUFVaEF3d0JDLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFL1J3QUlSTkJBQ0VFQTBBZ0RDQUVJQVZxUVNoc2FpSURRZndBYWlBRFFkUUFhaUFEUVN4cUlBTkJCR3I5WEFJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESUJQOXJnRWhFeUFFUVFScUlnUWdDMGNOQUFzZ0V5QVRJQlA5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5cmdFaUV5QVRJQlA5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5cmdIOUd3QWhCQ0FISVFNZ0NpQUxSZzBCQ3dOQUlBd2dBMEVvYkdvb0FnUWdCR29oQkNBRFFRRnFJZ01nQ0VjTkFBc0xJQVpCQVdvaUJpQU9SdzBBQ3dzZ0FDQUVRUU4wRUJnaUJ6WUNXQ0FFUlEwQUlBZEZEUUJCQUNFRUFrQWdBQ2dDSUNJR0lBQW9BaWdpQTA4TkFDQUFLQUlrSWdVZ0FDZ0NIRTBOQUFOQUlBVWdBQ2dDSENJSFN3UkFJQUFvQXVBQktBSW9JQUFvQW9BQklBWnNRU2hzYWlFTkEwQWdEU0FIUVNoc2FpSUlLQUlFSWdNRVFDQURRUU54SVFvZ0NDZ0NFQ0VGUVFBaEN3SkFJQU5CQkVrRVFFRUFJUU1NQVFzZ0EwRjhjU0VPUVFBaEEwRUFJUXdEUUNBRVFRTjBJZ2dnQUNnQ1dHb2dCU0FEUVJoc2Fpa0RBRGNEQUNBQUtBSllJQWhxSUFVZ0EwRUJja0VZYkdvcEF3QTNBd2dnQUNnQ1dDQUlhaUFGSUFOQkFuSkJHR3hxS1FNQU53TVFJQUFvQWxnZ0NHb2dCU0FEUVFOeVFSaHNhaWtEQURjREdDQURRUVJxSVFNZ0JFRUVhaUVFSUF4QkJHb2lEQ0FPUncwQUN3c2dDZ1JBQTBBZ0FDZ0NXQ0FFUVFOMGFpQUZJQU5CR0d4cUtRTUFOd01BSUFOQkFXb2hBeUFFUVFGcUlRUWdDMEVCYWlJTElBcEhEUUFMQ3lBQUtBSWtJUVVMSUFkQkFXb2lCeUFGU1EwQUN5QUFLQUlvSVFNTElBWkJBV29pQmlBRFNRMEFDeUFBS0FKWUlRY0xJQUFnQkRZQ1ZDTUFRZEFCYXlJR0pBQWdCa0lCTndNSUFrQWdCRUVEZENJS1JRMEFJQVpCQ0RZQ0VDQUdRUWcyQWhSQkNDSUZJUVJCQWlFSUEwQWdCa0VRYWlBSVFRSjBhaUFGSWdNZ0JFRUlhbW9pQlRZQ0FDQUlRUUZxSVFnZ0F5RUVJQVVnQ2trTkFBc0NmeUFISUFwcVFRaHJJZ01nQjAwRVFFRUJJUWhCQVNFRlFRQU1BUXRCQVNFSVFRRWhCUU5BQW44Z0NFRURjVUVEUmdSQUlBY2dCU0FHUVJCcUVFUWdCa0VJYWtFQ0VEd2dCVUVDYWd3QkN3SkFJQVpCRUdvaUJDQUZRUUZySWdwQkFuUnFLQUlBSUFNZ0IydFBCRUFnQnlBSUlBWW9BZ3dnQlVFQUlBUVFPd3dCQ3lBSElBVWdCa0VRYWhCRUN5QUZRUUZHQkVBZ0JrRUlha0VCRURwQkFBd0JDeUFHUVFocUlBb1FPa0VCQ3lFRklBWWdCaWdDQ0VFQmNpSUlOZ0lJSUFkQkNHb2lCeUFEU1EwQUN5QUdLQUlNQ3lFRElBY2dDQ0FESUFWQkFDQUdRUkJxRURzZ0JpZ0NEQ0VFSUFZb0FnZ2hDQUpBSUFWQkFVY05BQ0FJUVFGSERRQWdCRVVOQVFzRFFBSi9JQVZCQVV3RVFDQUdRUWhxSUFnZ0JCQjNJZ01RUENBRElBVnFEQUVMSUFaQkNHb2lBMEVDRURvZ0JpQUdLQUlJUVFkek5nSUlJQU5CQVJBOElBZEJDR3NpQ2lBR1FSQnFJZ1FnQlVFQ2F5SUlRUUowYWlnQ0FHc2dCaWdDQ0NBR0tBSU1JQVZCQVd0QkFTQUVFRHNnQTBFQkVEb2dCaUFHS0FJSVFRRnlJZ00yQWdnZ0NpQURJQVlvQWd3Z0NFRUJJQVFRT3lBSUN5RUZJQWRCQ0dzaEJ5QUdLQUlNSVFRZ0JpZ0NDQ0VJSUFWQkFVY05BQ0FJUVFGSERRQWdCQTBBQ3dzZ0JrSFFBV29rQUFzZ0FDZ0NnQUVoQTBFQUlRVUNRQU5BQW44Q1FDQURRUUZIRFFBZ0FDZ0NoQUZCQVVjTkFDQUFLQUswQVNnQzNDdEZEUUFnQ1VFQU5nSklJQUJCQURZQzVBRWdBQ0FBS0FJSVFZQUJjallDQ0VFQURBRUxRUUFoQXlBQUlBbEJ5QUJxUVFBZ0NVSEVBR29nQ1VGQWF5QUpRVHhxSUFsQk9Hb2dDVUUwYWlBSlFjd0FhaUFCSUFJUUxFVU5BeUFKS0FKTVJRMENJQWtvQWtnTElnWkJBV29oQXlBQUlBWkJBRUVBSUFFZ0FoQXhJQUFvQW9BQklBQW9Bb1FCYkNFSFJRUkFJQWtnQnpZQ0JDQUpJQU0yQWdBZ0FrRUJRY3c2SUFrUUUwRUFJUU1NQXdzZ0NTQUhOZ0lrSUFrZ0F6WUNJQ0FDUVFSQjd0c0FJQWxCSUdvUUV5QUFLQUxvQVNBQUtBSmtLQUlZRUlBQlJRUkFRUUFoQXd3REN3SkFBa0FnQUNnQ2dBRkJBVWNOQUNBQUtBS0VBVUVCUncwQUlBQW9BbVFpQnlnQ0FDQUFLQUpnSWdRb0FnQkhEUUVnQnlnQ0JDQUVLQUlFUncwQklBY29BZ2dnQkNnQ0NFY05BU0FIS0FJTUlBUW9BZ3hIRFFFTElBQW9BclFCSUFaQmpDeHNhaUlIS0FMY0t5SUVSUTBBSUFRUUZDQUhRZ0EzQXR3ckN5QUpJQU0yQWhBZ0FrRUVRYlNCQVNBSlFSQnFFQk1nQVNrRENDSVNVQVIrUWdBRklCSWdBU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUlMSUFWQkFXb2lCU0FBS0FLQUFTSURJQUFvQW9RQmJFWU5BU0FBS0FKVUlnZEZEUUFnQUNnQ1VDQUhSdzBBQ3lBQklCRWdBaUFCS0FJc0VRd0FHZ3NnQUNBQ0VIOGhBd3NnQ1VIUUFHb2tBQ0FEQzdjR0FReC9JQUFvQW1BaENRSkFJQUFvQW9BQklBQW9Bb1FCYkNJTUJFQWdDU2dDRUNJQlFiZ0liQ0VOSUFFZ0FXeEJBblFoQ2lBQUtBSU1JUVFnQUNnQ3RBRWhBd05BSUFNb0F0QXJJUXNnQXlBRVFZd3NFQllpQVVFQU5nTG9LeUFCUVg4MkF0UXJJQUZCQURZQ3NDZ2dBVUVBTmdLRUxDQUJRUUEyQXZBcklBRkNBRGNDK0NzZ0FTQUxOZ0xRS3lBQklBRXRBSWdzUWZ3QmNUb0FpQ3dnQkNnQzZDc0VRQ0FCSUFvUUdDSUROZ0xvS3lBRFJRUkFRUUFQQ3lBRElBUW9BdWdySUFvUUZob0xJQUVnQkNnQytDdEJGR3dpQlJBWUlnTTJBdkFyUVFBaENDQURSUTBDSUFNZ0JDZ0M4Q3NnQlJBV0dpQUVLQUwwS3lJR0JFQWdCQ2dDOENzaEF5QUJLQUx3S3lFRlFRQWhCd05BSUFNb0Fnd0VRQ0FGSUFNb0FoQVFHQ0lHTmdJTUlBWkZCRUJCQUE4TElBWWdBeWdDRENBREtBSVFFQllhSUFRb0F2UXJJUVlMSUFFZ0FTZ0MrQ3RCQVdvMkF2Z3JJQVZCRkdvaEJTQURRUlJxSVFNZ0IwRUJhaUlISUFaSkRRQUxDeUFCSUFRb0FvUXNRUlJzSWdVUUdDSUROZ0w4S3lBRFJRMENJQU1nQkNnQy9Dc2dCUkFXR2lBQklBUW9Bb1FzSWdnMkFvUXNJQWdFUUNBRUtBTDhLeUVESUFFb0F2d3JJUVZCQUNFSEEwQWdBeWdDQ0NJR0JFQWdCU0FCS0FMd0t5QUdJQVFvQXZBcmEybzJBZ2dMSUFNb0Fnd2lCZ1JBSUFVZ0FTZ0M4Q3NnQmlBRUtBTHdLMnRxTmdJTUN5QUZRUlJxSVFVZ0EwRVVhaUVESUFkQkFXb2lCeUFJUncwQUN3c2dDeUFFS0FMUUt5QU5FQllhSUFGQmpDeHFJUU1nRGtFQmFpSU9JQXhIRFFBTEMwRUJJUWdnQUFKL1FRQkJBVUhJQUJBWElnRkZEUUFhSUFFZ0FTMEFLRUgrQVhGQkFYSTZBQ2dnQVVFQlFRUVFGeUlFTmdJVUlBRWdCQTBBR2lBQkVCUkJBQXNpQVRZQzZBRWdBVVVFUUVFQUR3c2dBQ2dDN0FFaEJVRUFJUVFnQVNBQVFlZ0FhallDSENBQklBazJBaGhCQVVIUUJoQVhJUU1nQVNnQ0ZDQUROZ0lBQWtBZ0EwVU5BQ0FKS0FJUVFjd0FFQmNoQXlBQktBSVVLQUlBSWdjZ0F6WUNGQ0FEUlEwQUlBY2dDU2dDRURZQ0VDQUFLQUs4QVNFRUlBRWdCVFlDTENBQklBUTJBZ0JCQVNFRUN5QUVEUUFnQUNnQzZBRVFYa0VBSVFnZ0FFRUFOZ0xvQVNBQ1FRRkJyeHhCQUJBVEN5QUlDNVFYQXd0L0FYNEJmU01BUVRCcklnb2tBQ0FBUVFFMkFnZ0Nmd0pBQWtBZ0FTQUtRU2hxSWdOQkFpQUNFQjFCQWtjTkFDQURJQXBCTEdwQkFoQVZJQW9vQWl4QnovNERSdzBBSUFCQkFqWUNDQ0FBS0FMZ0FTQUJLUU00UWdKOUlnNDNBd0FnQ2lBT053TVFJQUpCQkVHODR3QWdDa0VRYWhBVElBQW9BdUFCSWdjcEF3QWhEaUFIS0FJWUlnVkJBV29pQXlBSEtBSWdJZ1JOQkVBZ0J5Z0NIQ0VFREFJTElBY0NmeUFFczBNQUFNaENraUlQUXdBQWdFOWRJQTlEQUFBQUFHQnhCRUFnRDZrTUFRdEJBQXNpQXpZQ0lDQUhLQUljSUFOQkdHd1FHeUlFQkVBZ0J5QUVOZ0ljSUFjb0FoZ2lCVUVCYWlFRERBSUxJQWNvQWh3UUZDQUhRUUEyQWlBZ0IwSUFOd01ZSUFKQkFVR1dIa0VBRUJNTElBSkJBVUdEK2dCQkFCQVRRUUFNQVFzZ0JDQUZRUmhzYWlJRVFRSTJBaEFnQkNBT3hEY0RDQ0FFUWMvK0F6c0JBQ0FISUFNMkFoZ2dBU0FBS0FJUVFRSWdBaEFkUVFKSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFFTElBQW9BaEFnQ2tFb2FrRUNFQlVDUUFKQUlBb29BaWdpQkVHUS93TkhCRUFEUUVHZ3dnRWhCU0FFUWYvOUEwMEVRQ0FLSUFRMkFnQWdBa0VCUWJjUklBb1FFMEVBREFVTEEwQWdCU0lES0FJQUlnY0VRQ0FEUVF4cUlRVWdCQ0FIUncwQkN3c0NRQUpBSUFjTkFFRUNJUVlnQWtFQ1FlSWRRUUFRRTBHREV5RUZBa0FDUUNBQklBQW9BaEJCQWlBQ0VCMUJBa2NOQUFOQUlBQW9BaEFnQ2tFc2FrRUNFQlZCb01JQklRY2dDaWdDTENJRVFZRCtBMDhFUUFOQUlBY2lBeWdDQUNJSUJFQWdBMEVNYWlFSElBUWdDRWNOQVFzTElBTW9BZ1FnQUNnQ0NIRkZCRUJCOENraEJRd0RDeUFJQkVBZ0NFR1Evd05HQkVBZ0NrR1Evd00yQWlnTUJ3c2dBU2tET0NFT0lBQW9BdUFCSWdjb0FoZ2lBMEVCYWlJRUlBY29BaUFpQlUwRVFDQUhLQUljSVFVTUJRc2dCd0ovSUFXelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRE5nSWdJQWNvQWh3Z0EwRVliQkFiSWdVRVFDQUhJQVUyQWh3Z0J5Z0NHQ0lEUVFGcUlRUU1CUXNnQnlnQ0hCQVVJQWRCQURZQ0lDQUhRZ0EzQXhoQmxoNGhCUXdEQ3lBR1FRSnFJUVlMSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSZzBBQ3dzZ0FrRUJJQVZCQUJBVElBSkJBVUhTekFCQkFCQVRRUUFNQndzZ0JTQURRUmhzYWlJRElBWTJBaEFnQXlBT3B5QUdhNnczQXdnZ0EwRUFPd0VBSUFjZ0JEWUNHQ0FLSUFnMkFpaEJvTUlCSVFRRFFDQUVJZ01vQWdBaUIwVU5BU0FEUVF4cUlRUWdCeUFJUncwQUN3c2dBeWdDQkNBQUtBSUljVVVFUUNBQ1FRRkI4Q2xCQUJBVFFRQU1CZ3NnQVNBQUtBSVFRUUlnQWhBZFFRSkhCRUFnQWtFQlFZTVRRUUFRRTBFQURBWUxJQUFvQWhBZ0NrRWtha0VDRUJVZ0NpZ0NKQ0lFUVFGTkJFQWdBa0VCUVpVdlFRQVFFMEVBREFZTElBb2dCRUVDYXlJRk5nSWtJQUFvQWhBaEJDQUFLQUlVSUFWSkJFQWdCQ0FGRUJzaUJFVUVRQ0FBS0FJUUVCUWdBRUlBTndNUUlBSkJBVUhJSmtFQUVCTkJBQXdIQ3lBQUlBUTJBaEFnQUNBS0tBSWtJZ1UyQWhRTElBRWdCQ0FGSUFJUUhTSUVJQW9vQWlSSEJFQWdBa0VCUVlNVFFRQVFFMEVBREFZTElBQWdBQ2dDRUNBRUlBSWdBeWdDQ0JFQkFFVUVRQ0FDUVFGQmxSTkJBQkFUUVFBTUJnc2dBU2tET0NFT0lBb29BaVFoQ0FKQUlBQW9BdUFCSWdNb0FoZ2lCa0VCYWlJRklBTW9BaUFpQkUwRVFDQURLQUljSVFRTUFRc2dBd0ovSUFTelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRU5nSWdJQU1vQWh3Z0JFRVliQkFiSWdSRkRRVWdBeUFFTmdJY0lBTW9BaGdpQmtFQmFpRUZDeUFFSUFaQkdHeHFJZ1FnQ0VFRWFqWUNFQ0FFSUE2bklBaHJRUVJyckRjRENDQUVJQWM3QVFBZ0F5QUZOZ0lZSUFFZ0FDZ0NFRUVDSUFJUUhVRUNSd1JBSUFKQkFVR0RFMEVBRUJOQkFBd0dDMEVCSUF3Z0IwSGMvZ05HR3lFTVFRRWdDU0FIUWRMK0EwWWJJUWxCQVNBTElBZEIwZjREUmhzaEN5QUFLQUlRSUFwQktHcEJBaEFWSUFvb0FpZ2lCRUdRL3dOSERRRUxDeUFMRFFFTElBSkJBVUdNSlVFQUVCTkJBQXdDQ3lBSlJRUkFJQUpCQVVHNkpVRUFFQk5CQUF3Q0N5QU1SUVJBSUFKQkFVSG9KVUVBRUJOQkFBd0NDMEVBSVFOQkFDRUZRUUFoQ1NNQVFSQnJJZ2NrQUVFQklRd0NRQ0FBTFFEVUFVRUJjVVVOQUFKQUlBQW9Bb2dCSWdaRkRRQUNRQU5BSUFBb0Fvd0JJQWxCQTNScUlnUW9BZ0FpQ3dSQUlBTWdCQ2dDQkNJSWF5SUVRUUFnQXlBRVR4c2hCQ0FESUFoSkJFQWdDQ0FEYXlFR0lBTWdDMm9oQ0FOQUlBWkJCRWtFUUVHQ0xDRUREQVVMSUFnZ0IwRU1ha0VFRUJVZ0J5Z0NEQ0lEUVg5eklBVkpCRUJCNkNzaEF3d0ZDeUFESUFaQkJHc2lDMnNnQkNBRElBdExJZzBiSVFRZ0F5QUZhaUVGSUFzZ0Eyc2hCaUFJUVFBZ0F5QU5HMnBCQkdvaENDQURJQXRKRFFBTElBQW9Bb2dCSVFZTElBUWhBd3NnQ1VFQmFpSUpJQVpKRFFBTElBTkZEUUZCQUNFTUlBSkJBVUhXRjBFQUVCTU1BZ3RCQUNFTUlBSkJBU0FEUVFBUUV3d0JDeUFBSUFVUUdDSUROZ0tnQVNBRFJRUkFRUUFoRENBQ1FRRkJ6Q0ZCQUJBVERBRUxJQUFnQlRZQ2xBRWdBQ2dDakFFaEJnSkFJQUFvQW9nQklnZ0VRRUVBSVFWQkFDRURRUUFoQkFOQUlBWWdCRUVEZENJTGFpSU5LQUlBSWdrRVFDQUFLQUtnQVNBRGFpRUlBbjhnRFNnQ0JDSUdJQVZOQkVBZ0NDQUpJQVlRRmhvZ0F5QUdhaUVESUFVZ0Jtc01BUXNnQ0NBSklBVVFGaG9nQXlBRmFpRURJQVlnQldzaEJpQUZJQWxxSVFVRFFDQUdRUVJKRFFVZ0JTQUhRUWhxUVFRUUZTQUZRUVJxSVFVZ0FDZ0NvQUVnQTJvaENTQUdRUVJySWdZZ0J5Z0NDQ0lJU1FSQUlBa2dCU0FHRUJZYUlBTWdCbW9oQXlBSEtBSUlJQVpyREFJTElBa2dCU0FJRUJZYUlBY29BZ2dpQ1NBRGFpRURJQVVnQ1dvaEJTQUdJQWxySWdZTkFBdEJBQXNoQlNBQUtBS01BU0FMYWlnQ0FCQVVJQUFvQW93QklnWWdDMnBDQURjQ0FDQUFLQUtJQVNFSUN5QUVRUUZxSWdRZ0NFa05BQXNnQUNnQ2xBRWhCU0FBS0FLZ0FTRURDeUFBSUFVMkFxZ0JJQUFnQXpZQ2tBRWdBRUVBTmdLSUFTQUdFQlFnQUVFQU5nS01BUXdCQzBFQUlRd2dBa0VCUVlJc1FRQVFFd3NnQjBFUWFpUUFJQXhGQkVBZ0FrRUJRZkErUVFBUUUwRUFEQUlMSUFKQkJFSEYyd0JCQUJBVElBQW9BdUFCSUFFcEF6aEMvdi8vL3c5OFF2Ly8vLzhQZ3pjRENFRUFJUUZCQUNFR0l3QkJFR3NpQnlRQUFrQWdBQ2dDUkNJRVJRUkFJQUJCQVRZQ1RBd0JDeUFBS0FKTURRQWdBQ2dDU0NFRElBQW9BdUFCSWd3b0FpZ2hCU0FFUVFGSEJFQWdCRUYrY1NFSUEwQWdCU0FESUFGQkEzUnFJZ3N2QVFBaURVRW9iR29pQ1NBTk5nSUFJQWtnQ1NnQ0NFRUJhallDQ0NBRklBc3ZBUWdpQzBFb2JHb2lDU0FMTmdJQUlBa2dDU2dDQ0VFQmFqWUNDQ0FCUVFKcUlRRWdCa0VDYWlJR0lBaEhEUUFMQ3lBRVFRRnhCRUFnQlNBRElBRkJBM1JxTHdFQUlnWkJLR3hxSWdFZ0JqWUNBQ0FCSUFFb0FnaEJBV28yQWdnTEFrQWdEQ2dDSkNJR0JFQkJBQ0VCQTBBZ0JTQUJRU2hzYWlnQ0NFVUVRQ0FISUFFMkFnQWdBa0VCUWJQSUFDQUhFQk1NQXdzZ0FVRUJhaUlCSUFaSERRQUxDeUFNS1FNSUlRNUJBQ0VGQTBBQ1FDQUFLQUxnQVNnQ0tDQURJQVZCQTNRaURHb3ZBUUJCS0d4cUlnRW9BaEFpQmtVRVFDQUJJQUVvQWdoQkdCQVhJZ1kyQWhBZ0JrVU5BU0FBS0FKRUlRUWdBQ2dDU0NFREN5QUdJQUVvQWdRaUNVRVliR29pQmlBT053TUFJQVlnRGlBRElBeHFOUUlFZkNJT053TVFJQUVnQ1VFQmFqWUNCQ0FGUVFGcUlnVWdCRWtOQVF3REN3c2dBa0VCUWIwMVFRQVFFd3NnQUVFQk5nSk1JQUFvQWtSRkRRQWdBQ2dDNEFFb0FpZ2hBMEVBSVFFRFFDQURJQUFvQWtnZ0FVRURkR292QVFCQktHd2lBbW9pQTBFQU5nSUlJQU1vQWhBUUZDQUFLQUxnQVNnQ0tDSURJQUpxUVFBMkFoQWdBVUVCYWlJQklBQW9Ba1JKRFFBTEN5QUhRUkJxSkFBZ0FFRUlOZ0lJUVFFTUFRc2dBeWdDSEJBVUlBTkJBRFlDSUNBRFFnQTNBeGdnQWtFQlFaWWVRUUFRRTBFQUN5QUtRVEJxSkFBTEhBQWdBQ2dDQ0VVZ0FDZ0MyQUZCQUVjZ0FDZ0MzQUZCQUVkeGNRc0VBRUVBQ3lRQUFrQWdBRVVOQUNBQUlBRTJBdEFCSUFGRkRRQWdBQ0FBTFFCY1FRaHlPZ0JjQ3d1UEFRRUVmeUFBS0FJWUlnRUVRQ0FBS0FJY0lnTkJORzRoQkNBRFFUUlBCSDlCQUNFREEwQWdBU2dDQUNJQ0JFQWdBa0VCYXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lDQkVBZ0FoQVVJQUZCQURZQ0JBc2dBU2dDQ0NJQ0JFQWdBaEFVSUFGQkFEWUNDQXNnQVVFMGFpRUJJQU5CQVdvaUF5QUVSdzBBQ3lBQUtBSVlCU0FCQ3hBVUlBQkJBRFlDR0FzTGlBRUJCSDhnQUNnQ0dDSUJCRUFnQUNnQ0hDSUNRY1FBYmlFRUlBSkJ4QUJQQkg5QkFDRUNBMEFnQVNnQ0FDSURCRUFnQXhBVUlBRkJBRFlDQUFzZ0FTZ0NCQ0lEQkVBZ0F4QVVJQUZCQURZQ0JBc2dBU2dDUEJBVUlBRkJBRFlDUENBQlFjUUFhaUVCSUFKQkFXb2lBaUFFUncwQUN5QUFLQUlZQlNBQkN4QVVJQUJCQURZQ0dBc0xQd0VCZnlBQUJFQWdBQ2dDZENJQkJFQWdBUkFVSUFCQkFEWUNkQXNnQUNnQ2VDSUJCRUFnQVJBVUlBQkJBRFlDZUFzZ0FDZ0NsQUVRRkNBQUVCUUxDOFNaQlFSRmZ3SjdCSDRCZlNNQVFlQUFheUltSkFBZ0FDZ0NDQ0VhQWtBQ1FBSkFBa0FnQUNnQ0FFVUVRQ0FhSUJvb0FoQWdHaWdDQ0dzZ0dpZ0NGQ0FhS0FJTWEyeEJBblFpQmhBY0lnVTJBandnQlVVRVFDQUFLQUlrR2lBQUtBSWdRUUZCc2o1QkFCQVRJQUFvQWlRYUlBQkJIR29oQlF3REN5QUZRUUFnQmhBWkdnd0JDeUFhS0FJOElnVkZEUUFnQlJBVUlCcEJBRFlDUEFzZ0FDZ0NFQ0l5S0FJY0lESW9BaGhCbUFGc2FpSUZRWmdCYXlnQ0FDRTJJQVZCa0FGcktBSUFJVGNnQUNnQ0ZDRXZJQUFvQWd3aE1DQUFLQUlFSVRnZ0FDZ0NIQ2dDQUVVTkFpQUFRUnhxSVFVQ1FBSi9RUUFnQVNnQ0JDSUhRUUJNRFFBYUlBRW9BZ0FoQ0VFQUlRWUNRQU5BSUFnZ0JrRU1iR29pQkNnQ0FFVU5BU0FHUVFGcUlnWWdCMGNOQUF0QkFBd0JDeUFFS0FJRUN5SUREUUJCQVVHY0FSQVhJZ05GQkVBZ0FDZ0NJRUVCUVlReFFRQVFFd3dDQ3lBRFFRQTJBb3dCQW45QkFDRUdRUUFnQVNnQ0JDSUhRZi8vLy84SFJnMEFHaUFCS0FJQUlRZ2dCMEVBU2dSQUEwQWdDQ0FHUVF4c2FpSUVLQUlBUlFSQUlBUW9BZ2dpQndSL0lBUW9BZ1FnQnhFQ0FDQUJLQUlBQlNBSUN5QUdRUXhzYWlJQlFRODJBZ2dnQVNBRE5nSUVRUUVNQXdzZ0JrRUJhaUlHSUFkSERRQUxDMEVBSUFnZ0IwRU1iRUVNYWhBYklnWkZEUUFhSUFFZ0JqWUNBQ0FHSUFFb0FnUWlCMEVNYkdvaUJrRVBOZ0lJSUFZZ0F6WUNCQ0FHUVFBMkFnQWdBU0FIUVFGcU5nSUVRUUVMRFFBZ0FDZ0NJRUVCUWUzQUFFRUFFQk1nQXlnQ2RDSUJCRUFnQVJBVUlBTkJBRFlDZEFzZ0F5Z0NlQ0lCQkVBZ0FSQVVJQU5CQURZQ2VBc2dBeWdDbEFFUUZDQURFQlFNQVFzZ0F5QUFLQUlZTmdLUUFTQUFLQUlvSVNzZ0FDZ0NKQ0VpSUFBb0FpQWhIU0F2S0FLb0JpRVRJREFvQWhBaEFRSkFBa0FnTHlnQ0VDSVhRY0FBY1FSQUlCY2hDaU1BUWJBQ2F5SVFKQUFDUUNBVEJFQWdJZ1JBSUIxQkFVSHVHRUVBRUJNTUFnc2dIVUVCUWU0WVFRQVFFd3dCQ3lBREtBSjBJUUlDUUFKQUlCb29BaFFnR2lnQ0RHc2lCaUFhS0FJUUlCb29BZ2hySWdsc0lnRWdBeWdDaEFGTEJFQWdBaEFVSUFNZ0FVRUNkQ0lURUJ3aUFqWUNkQ0FDUlFSQVFRQWhBZ3dFQ3lBRElBRTJBb1FCREFFTElBSkZEUUVnQVVFQ2RDRVRDeUFDUVFBZ0V4QVpHZ3NnQXlnQ2VDRUNBa0FnQXlnQ2lBRkJ6eFJMRFFBZ0FoQVVJQU5Cd05JQUVCd2lBallDZUNBQ0RRQkJBQ0VDREFFTElBTkIwQlEyQW9nQklBSkJBRUhBMGdBUUdSb2dBeUFHTmdLQUFTQURJQWsyQW53Z0dpZ0NHQ0lFUlFSQVFRRWhBZ3dCQ3lBYUtBSWNJUTFCQVNFQ0FrQUNRQUpBQWtBQ1FDQWFLQUkwSWdFRVFDQWFLQUlFSVFoQkFDRUNRUUFoQ1FKQUlBRkJCRThFUUNBQlFYeHhJUWxCQUNFSEEwQWdDQ0FIUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0IwRUVhaUlISUFsSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFJZ0FTQUpSZzBCQ3dOQUlBZ2dDVUVEZEdvb0FnUWdBbW9oQWlBSlFRRnFJZ2tnQVVjTkFBc0xJQUZCQVVZRVFDQURLQUtRQVVVTkJRc2dBaUFES0FLWUFVME5BU0FES0FLVUFTQUNFQnNpRXcwQ1FRQWhBZ3dHQ3lBREtBS1FBVVVOQlFzZ0F5Z0NsQUVpRXcwQlFRQWhBZ3dFQ3lBRElBSTJBcGdCSUFNZ0V6WUNsQUVMSUJvb0FqUkZCRUJCQUNFQ0RBSUxJQm9vQWdRaEIwRUFJUUpCQUNFSkEwQWdBaUFUYWlBSElBbEJBM1FpQVdvaUJpZ0NBQ0FHS0FJRUVCWWFJQm9vQWdRaUJ5QUJhaWdDQkNBQ2FpRUNJQWxCQVdvaUNTQWFLQUkwU1EwQUN3d0JDeUFhS0FJRUtBSUFJUk1MUVFBaENVRUFJUWNDZjBFQUlCb29BaWdpQVVVTkFCb2dHaWdDQUNJR0tBSUlJUWRCQUNBQlFRRkdEUUFhSUFZb0FpQUxJUUVnQkNBTmF3SkFJQUVnQjJvaUIwVUVRRUVBSVFSQkFDRUlEQUVMUVFFaENTQWFLQUlBSWdFb0FnQWhCRUVBSVFnZ0IwRUJSZ1JBUVFBaENRd0JDeUFCS0FJWUlRZ0xRUUZxSVJZZ0F5Z0NkQ0VMSUFNb0FuZ2hEaUFhS0FJTUlSVWdHaWdDRkNFUElCb29BZ2doR1NBYUtBSVFJU3NDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQ1VVTkFDQUlEUUFnSWtVTkFTQWRRUUpCa2RRQVFRQVFFMEVCSVFjTUFnc2dCMEVFU1EwQklDSUVRQ0FRSUFjMkFuQWdIVUVCUWRIS0FDQVFRZkFBYWhBVERBZ0xJQkFnQnpZQ1lDQWRRUUZCMGNvQUlCQkI0QUJxRUJOQkFDRUNEQWdMSUIxQkFrR1IxQUJCQUJBVElCb29BaGdpQ1VFZVN3MEJRUUVoR3lBSklCWlBEUU1NQlFzZ0dpZ0NHQ0lCSWdsQkhrME5BU0FpUlEwQUlCQWdBVFlDSUNBZFFRRkI2ZDhBSUJCQklHb1FFd3dGQ3lBUUlBazJBZ0FnSFVFQlFlbmZBQ0FRRUJOQkFDRUNEQVVMSUFrZ0Zra05BU0FIUVFKSkJFQWdCeUViREFFTElBa2dGa2NFUUNBSElSc01BUXRCQVNFYlFkRE5BUzBBQUEwQUlDSkZCRUJCME0wQlFRRTZBQUFnRUNBSE5nSkFJQjFCQWtHVzBBQWdFRUZBYXhBVERBRUxRZEROQVMwQUFFVUVRRUhRelFGQkFUb0FBQ0FRSUFjMkFsQWdIVUVDUVpiUUFDQVFRZEFBYWhBVEN3c0NRQUpBSUFSQkFra05BQ0FDSUFSSkRRQWdCQ0FJYWlBQ1RRMEJDeUFpQkVCQkFDRUNJQjFCQVVHWHlnQkJBQkFUREFVTFFRQWhBaUFkUVFGQmw4b0FRUUFRRXd3RUN3SkFBa0FnQkNBVGFpSVlRUUZyTFFBQUlnRkJCSFFnR0VFQ2F5MEFBRUVQY1hJaUJrRUNTUTBBSUFGQi93RkdEUUFnQkNBR1RnMEJDeUFpQkVCQkFDRUNJQjFCQVVHazl3QkJBQkFUREFVTFFRQWhBaUFkUVFGQnBQY0FRUUFRRXd3RUN5QWFLQUljSVNRQ2Z5QVFRUUEyQXBBQ0lCQkJBRFlDbUFJZ0VFSUFOd09JQWlBUVFnQTNBNmdDSUJCQ0FEY0NuQUlnRUNBR1FRRnJJZ2MyQXBRQ0lCQWdCQ0FUYWlBR2F5SUpOZ0tBQWlBSk1RQUFJVWxCQ0NFQklCQkJDRFlDa0FJZ0VDQUpRUUZxSWdJMkFvQUNJQkFnQmtFQ2F5SU5OZ0tVQWlBUUlFbENENFFnU1NBSFFRRkdHeUpKTndPSUFpQVFJRWxDL3dGUk5nS1lBZ0pBSUFsQkEzRWlCMEVEUmcwQUFrQWdTVUwvQVZJTkFDQUNMUUFBUVk4QlRRMEFRUUFNQWd0Qy93RWhTaUFHUVFOUEJFQWdBakVBQUNGS0N5QVFJQVpCQTJzaUZ6WUNsQUlnRUVFUFFSQWdTVUwvQVZFaUZCc2lBVFlDa0FJZ0VDQUNJQVpCQWt0cUlnazJBb0FDSUJBZ1NrSVBoQ0JLSUExQkFVWWJJa3BDL3dGUk5nS1lBaUFRSUVsQ0IwSUlJQlFiaGlCS2hDSkpOd09JQWlBSFFRSkdEUUJDL3dFaFN3SkFJRXBDL3dGU0RRQWdDUzBBQUVHUEFVME5BRUVBREFJTElBWkJCRThFUUNBSk1RQUFJVXNMSUJBZ0JrRUVheUlDTmdLVUFpQVFJQWtnQmtFRFMyb2lDVFlDZ0FJZ0VDQkxRZytFSUVzZ0YwRUJSaHNpUzBML0FWRTJBcGdDSUJBZ0FVRUhRUWdnU2tML0FWRWlEUnRxSWdFMkFwQUNJQkFnU1VJSFFnZ2dEUnVHSUV1RUlrazNBNGdDSUFkQkFVWU5BQUpBSUV0Qy93RlNEUUFnQ1MwQUFFR1BBVTBOQUVFQURBSUxRdjhCSVVvZ0JrRUZUd1JBSUFreEFBQWhTZ3NnRUNBR1FRVnJOZ0tVQWlBUUlBa2dCa0VFUzJvMkFvQUNJQkFnU2tJUGhDQktJQUpCQVVZYklrcEMvd0ZSTmdLWUFpQVFJQUZCQjBFSUlFdEMvd0ZSSWdrYmFpSUJOZ0tRQWlBUUlFbENCMElJSUFrYmhpQktoQ0pKTndPSUFnc2dFQ0JKUWNBQUlBRnJyWVkzQTRnQ1FRRUxSUVJBSUNJRVFFRUFJUUlnSFVFQlFhblpBRUVBRUJNTUJRdEJBQ0VDSUIxQkFVR3AyUUJCQUJBVERBUUxJQ3NnR1dzaEVpQVFJQVlpRFVFQ2F5SU1OZ0wwQVNBUUlBUWdFMm9pRVVFRGF5SUdOZ0xnQVNBUUlCRkJBbXN0QUFBaUFVR1BBVXNpQnpZQytBRWdFQ0FCUVFSMnJTSkpOd1BvQVNBUVFRTkJCQ0JKUWdlRFFnZFJHeUlVTmdMd0FTQUdRUU54UVFGcUlnRWdEQ0FCSUF4Skd5RVhBa0FDUUNBTVJRUkFRUUFoQWlBUUlBd2dGMnMyQXZRQkRBRUxJQkFnRVVFRWF5SUJOZ0xnQVNBUUlBWXRBQUFpQWtHUEFVc2lDVFlDK0FFZ0VDQUNyU0pLUXY4Qmd5QVVyWVlnU1lRaVNUY0Q2QUVnRUVFSFFRZ2dTa0wvQUlOQy93QlJHMEVJSUFjYklCUnFJaFEyQXZBQkFrQWdGMEVDU1FSQUlBa2hCd3dCQ3lBUUlCRkJCV3NpQ1RZQzRBRWdFQ0FCTFFBQUlnWkJqd0ZMSWdjMkF2Z0JJQkFnQnEwaVNrTC9BWU1nRksyR0lFbUVJa2szQStnQklCQkJDRUVIUVFnZ1NrTC9BSU5DL3dCUkd5QUNRWThCVFJzZ0ZHb2lGRFlDOEFFZ0YwRUNSZ1JBSUFFaEJpQUpJUUVNQVFzZ0VDQVJRUVpySWdJMkF1QUJJQkFnQ1MwQUFDSUJJaUZCandGTElnYzJBdmdCSUJBZ0FhMGlTa0wvQVlNZ0ZLMkdJRW1FSWtrM0ErZ0JJQkJCQ0VFSFFRZ2dTa0wvQUlOQy93QlJHeUFHUVk4QlRSc2dGR29pRkRZQzhBRWdGMEVEUmdSQUlBa2hCaUFDSVFFTUFRc2dFQ0FSUVFkcklnRTJBdUFCSUJBZ0FpMEFBQ0lHUVk4QlN5SUhOZ0w0QVNBUUlBYXRJa3BDL3dHRElCU3RoaUJKaENKSk53UG9BU0FRUVFoQkIwRUlJRXBDL3dDRFF2OEFVUnNnSVVHUEFVMGJJQlJxSWhRMkF2QUJJQUloQmdzZ0VDQU1JQmRySWdrMkF2UUJJQlJCSUVzTkFTQUpRUVJPQkVBZ0JrRUVheWdDQUNFQ0lCQWdCa0VGYXpZQzRBRWdFQ0FKUVFSck5nTDBBUXdCQ3lBSlFRQk1CRUJCQUNFQ0RBRUxJQWxCQVhFQ1FDQVhJQTFCQTJ0R0JFQkJHQ0VYUVFBaEFnd0JDeUFKUWY3Ly8vOEhjU0VoUVJnaEYwRUFJUUlnQVNFR1FRQWhEQU5BSUJBZ0JrRUJheUlnTmdMZ0FTQUdMUUFBSUJBZ0JrRUNheUlCTmdMZ0FTQVFJQWxCQVdzMkF2UUJJQ0F0QUFBaEJpQVFJQWxCQW1zaUNUWUM5QUVnRjNRZ0FuSWdCaUFYUVFocmRISWhBaUFYUVJCcklSY2dBU0VHSUF4QkFtb2lEQ0FoUncwQUN3dEZEUUFnRUNBQlFRRnJOZ0xnQVNBQkxRQUFJQkFnQ1VFQmF6WUM5QUVnRjNRZ0FuSWhBZ3NnRUNBQ1FmOEJjU0lCUVk4QlN6WUMrQUVnRUVFSFFRZ2dBa0dBZ0lENEIzRkJnSUNBK0FkR0cwRUlJQWNiSWdaQkNFRUhRUWdnQWtHQWdQd0RjVUdBZ1B3RFJoc2dBa0gvLy8vL2VFMGJhaUlKUVFoQkIwRUlJQUpCZ1A0QmNVR0EvZ0ZHR3lBQ1FSQjJRZjhCY1NJSFFZOEJUUnRxSWhkQkNFRUhRUWdnQWtIL0FIRkIvd0JHR3lBQ1FRaDJRZjhCY1NJTVFZOEJUUnNnRkdwcU5nTHdBU0FRSUFjZ0JuUWdBa0VZZG5JZ0RDQUpkSElnQVNBWGRIS3RJQlN0aGlCSmhEY0Q2QUVMSUJCQndBRnFJQk1nQkNBTmEwSC9BUkJrQW45QkFDQWJRUUpKRFFBYUlCQkJvQUZxSUJnZ0NFRUFFR1JCQUNBYlFRSkdEUUFhUWdBaFNVSUFJVXNnRUVFQk5nS1lBU0FRUVFBMkFwQUJJQkJDQURjRGlBRWdFQ0FJUVFGcklnRTJBcFFCSUJBZ0JDQVRhaUFJYWlJR1FRRnJJZ2syQW9BQklBbEJBM0VoRndKQUlBaEJBRXdFUUNBSklRWU1BUXNnRUNBR1FRSnJJZ1kyQW9BQklBa3hBQUFoU1FzZ0VDQkpOd09JQVNBUUlFbENqd0ZXSWhNMkFwZ0JJQkJCQjBFSUlFbEMvd0NEUXY4QVVSc2lEVFlDa0FFQ1FDQVhSUTBBSUJBZ0NFRUNheUlITmdLVUFRSkFJQWhCQWtnRVFDQUdJUUlNQVFzZ0VDQUdRUUZySWdJMkFvQUJJQVl4QUFBaFN3c2dFQ0JMUW84QlZpSVROZ0tZQVNBUUlFc2dEYTJHSUVtRUlrbzNBNGdCSUJCQkNFRUhRUWdnUzBML0FJTkMvd0JSR3lCSlFvOEJXQnNnRFdvaURUWUNrQUVnRjBFQlJnUkFJQUloQmlCS0lVa2dBU0VJSUFjaEFRd0JDeUFRSUFoQkEyc2lCRFlDbEFFQ1FDQUlRUU5JQkVBZ0FpRUpEQUVMSUJBZ0FrRUJheUlKTmdLQUFTQUNNUUFBSVV3TElCQWdURUtQQVZZaUV6WUNtQUVnRUNCTUlBMnRoaUJLaENKSk53T0lBU0FRUVFoQkIwRUlJRXhDL3dDRFF2OEFVUnNnUzBLUEFWZ2JJQTFxSWcwMkFwQUJJQmRCQWtZRVFDQUpJUVlnQnlFSUlBUWhBUXdCQ3lBUUlBaEJCR3NpQVRZQ2xBRkNBQ0ZMQWtBZ0NFRUVTQVJBSUFraEJnd0JDeUFRSUFsQkFXc2lCallDZ0FFZ0NURUFBQ0ZMQ3lBUUlFdENqd0ZXSWhNMkFwZ0JJQkFnU3lBTnJZWWdTWVFpU1RjRGlBRWdFRUVJUVFkQkNDQkxRdjhBZzBML0FGRWJJRXhDandGWUd5QU5haUlOTmdLUUFTQUVJUWdMSUExQklFMEVRQUpBSUFoQkJVNEVRQ0FHUVFOcktBSUFJUUlnRUNBSVFRVnJOZ0tVQVNBUUlBWkJCR3MyQW9BQkRBRUxRUUFoQWlBSVFRSklEUUJCR0NFSUEwQWdFQ0FHUVFGcklnazJBb0FCSUFZdEFBQWdFQ0FCUVFGcklnYzJBcFFCSUFoMElBSnlJUUlnQVVFQlN5QUpJUVlnQ0VFSWF5RUlJQWNoQVEwQUN3c2dFQ0FDUWY4QmNTSUJRWThCU3pZQ21BRWdFRUVIUVFnZ0FrR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlCTWJJZ1pCQ0VFSFFRZ2dBa0dBZ1B3RGNVR0FnUHdEUmhzZ0FrSC8vLy8vZUUwYmFpSUpRUWhCQjBFSUlBSkJnUDRCY1VHQS9nRkdHeUFDUVJCMlFmOEJjU0lIUVk4QlRSdHFJZ2hCQ0VFSFFRZ2dBa0gvQUhGQi93QkdHeUFDUVFoMlFmOEJjU0lFUVk4QlRSc2dEV3BxTmdLUUFTQVFJQWNnQm5RZ0FrRVlkbklnQkNBSmRISWdBU0FJZEhLdElBMnRoaUJKaERjRGlBRUxRUUVMSVRNZ0R5QVZheUVoSUJaQkFXb2hMQ0FPUVFBNkFNQVFJQTVCd0JCcUlSWWdFRUdBQW1vUUxTRUVJQkpCQUVvRVFDQWtRUUZySVJFZ0RpRUdJQlloQjBFQUlSTWdDeUVCUVFBaEZ3TkFJQmNoRFNBVFFRaDBJQkJCNEFGcUVEVkIvd0J4UVFGMGNrSGdnUUZxTHdFQUlRa0NRQ0FURFFBZ0NVRUFJQVJCQW1zaUFrRi9SaHNoQ1NBRVFRRktCRUFnQWlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnRUNrRDZBRWdFQ2dDOEFFZ0JpQUdLQUlBSUFsQkJIWWlGVUVEY1NBSlFRSjJRVEJ4Y2lBamRISWlGRFlDQUNBSlFRVjJRUWR4SUFsQkVIRWlEMEVFZG5JaEV5QUpRUWR4SWdKcklSY2dBcTJJSWttbklRaEJBQ0VDSUJJZ0RVRUNja29FUUNBVFFRaDBJQWhCL3dCeFFRRjBja0hnZ1FGcUx3RUFJUUlDUUNBVERRQWdBa0VBSUFSQkFtc2lDRUYvUmhzaEFpQUVRUUZLQkVBZ0NDRUVEQUVMSUJCQmdBSnFFQzBoQkFzZ0FrRUVka0VCY1NBQ1FRVjJRUWR4Y2lFVElCY2dBa0VIY1NJSWF5RVhJRWtnQ0sySUlrbW5JUWdMSUFZZ0FrRUNkRUdBQm5FZ0FrRXdjWElnSTBFRWFuUWdGSEkyQWdBQ1FDQUNRUUoyUVFKeElBbEJBM1pCQVhGeUloUkJBMGNOQUVFRVFRTWdCRUVDYXlJTVFYOUdHeUVVSUFSQkFVb0VRQ0FNSVFRTUFRc2dFRUdBQW1vUUxTRUVDd0ovSUJSRkJFQWdFRUtCZ0lDQUVEY0NlRUVBREFFTElCUkJBazBFUUNBUVFRRWdDRUVIY1VHVW9nRnFMUUFBSWd4QkJYWkJmeUFNUVFKMlFRZHhJaGgwUVg5eklBZ2dERUVEY1NJSWRuRnFRUUZxSWd3Z0ZFRUJSaUlVR3pZQ2ZDQVFJQXhCQVNBVUd6WUNlQ0FJSUJocURBRUxJQWdnQ0VFSGNVR1VvZ0ZxTFFBQUlneEJBM0VpR0hZaENDQVVRUU5HQkVBZ0RFRUZka0VCYWlFVUlCaEJBMFlFUUNBUUlBaEJBWEZCQW5JMkFud2dFQ0FVUVg4Z0RFRUNka0VIY1NJTWRFRi9jeUFJUVFGMmNXbzJBbmdnREVFRWFnd0NDeUFRSUJRZ0NDQUlRUWR4UVpTaUFXb3RBQUFpQ0VFRGNTSWdkaUlsUVg4Z0RFRUNka0VIY1NJTWRFRi9jM0ZxTmdKNElCQkJmeUFJUVFKMlFRZHhJaFIwUVg5eklDVWdESFp4SUFoQkJYWnFRUUZxTmdKOElBd2dHR29nSUdvZ0ZHb01BUXNnRUNBSUlBaEJCM0ZCbEtJQmFpMEFBQ0lJUVFOeElpQjJJaVZCZnlBTVFRSjJRUWR4SWhSMFFYOXpjU0FNUVFWMmFrRURhallDZUNBUVFYOGdDRUVDZGtFSGNTSU1kRUYvY3lBbElCUjJjU0FJUVFWMmFrRURhallDZkNBWUlDQnFJQlJxSUF4cUN5RUlBa0FnTENBUUtBSjRJaFJQQkVBZ0VDZ0NmQ0lNSUN4TkRRRUxJQ0lFUUVFQUlRSWdIVUVCUWVmNkFFRUFFQk1NQnd0QkFDRUNJQjFCQVVIbitnQkJBQkFUREFZTElCQWdGeUFJYXpZQzhBRWdFQ0JKSUFpdGlEY0Q2QUVnQWtId0FYRWdGVUVQY1hKQi93RkIvd0VnRFVFRWFpSVhJQkpyUVFGMGRpQVNJQmRPR3lJSUlBaEIxUUJ4SUNGQkFVb2JJZ2hCZjNOeEJFQWdJZ1JBUVFBaEFpQWRRUUZCL2Q0QVFRQVFFd3dIQzBFQUlRSWdIVUVCUWYzZUFFRUFFQk1NQmdzQ1FBSkFJQThFUUNBUVFjQUJhaEFmSVJVZ0VDQVFLQUxRQVNBVUlBbEJFM1JCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRlVGL0lCaDBRWDl6Y1NBSlFRaDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVZRUjkwY2lFWURBRUxRUUFoR0NBSVFRRnhSUTBCQ3lBQklCZzJBZ0FMQWtBZ0NVRWdjUVJBSUJCQndBRnFFQjhoRlNBUUlCQW9BdEFCSUJRZ0NVRVNkRUVmZFdvaUdHczJBdEFCSUJBZ0VDa0R5QUVnR0sySU53UElBU0FCSUJKQkFuUnFJQlZCZnlBWWRFRi9jM0VnQ1VFSmRrRUJjU0FZZEhKQkFYSWlHRUVDYWlBUmRDQVZRUjkwY2pZQ0FDQUhRU0FnR0dkckloZ2dCeTBBQUVIL0FIRWlGU0FWSUJoSkcwR0FBWEk2QUFBTUFRc2dDRUVDY1VVTkFDQUJJQkpCQW5ScVFRQTJBZ0FMSUFGQkJHb2hGUUpBQWtBZ0NVSEFBSEVFUUNBUVFjQUJhaEFmSVE4Z0VDQVFLQUxRQVNBVUlBbEJFWFJCSDNWcUloaHJOZ0xRQVNBUUlCQXBBOGdCSUJpdGlEY0R5QUVnRDBGL0lCaDBRWDl6Y1NBSlFRcDJRUUZ4SUJoMGNrRUJja0VDYWlBUmRDQVBRUjkwY2lFWURBRUxRUUFoR0NBSVFRUnhSUTBCQ3lBVklCZzJBZ0FMSUFkQkFEb0FBUUpBSUFsQmdBRnhCRUFnRUVIQUFXb1FIeUVZSUJBZ0VDZ0MwQUVnRkNBSlFSQjBRUjkxYWlJVWF6WUMwQUVnRUNBUUtRUElBU0FVcllnM0E4Z0JJQlVnRWtFQ2RHb2dHRUYvSUJSMFFYOXpjU0FKUVF0MlFRRnhJQlIwY2tFQmNpSUpRUUpxSUJGMElCaEJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUJEQUVMSUFoQkNIRkZEUUFnRlNBU1FRSjBha0VBTmdJQUN5QUJRUWhxSVFrQ1FBSkFJQUpCRUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRTNSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUWgyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRUkJ4UlEwQkN5QUpJQlEyQWdBTEFrQWdBa0VnY1FSQUlCQkJ3QUZxRUI4aEdDQVFJQkFvQXRBQklBd2dBa0VTZEVFZmRXb2lGR3MyQXRBQklCQWdFQ2tEeUFFZ0ZLMklOd1BJQVNBSklCSkJBblJxSUJoQmZ5QVVkRUYvYzNFZ0FrRUpka0VCY1NBVWRISkJBWElpQ1VFQ2FpQVJkQ0FZUVI5MGNqWUNBQ0FIUVNBZ0NXZHJJZ2tnQnkwQUFVSC9BSEVpRkNBSklCUkxHMEdBQVhJNkFBRU1BUXNnQ0VFZ2NVVU5BQ0FKSUJKQkFuUnFRUUEyQWdBTElBRkJER29oQ1FKQUFrQWdBa0hBQUhFRVFDQVFRY0FCYWhBZklSZ2dFQ0FRS0FMUUFTQU1JQUpCRVhSQkgzVnFJaFJyTmdMUUFTQVFJQkFwQThnQklCU3RpRGNEeUFFZ0dFRi9JQlIwUVg5emNTQUNRUXAyUVFGeElCUjBja0VCY2tFQ2FpQVJkQ0FZUVI5MGNpRVVEQUVMUVFBaEZDQUlRY0FBY1VVTkFRc2dDU0FVTmdJQUN5QUhRUUpxSWdkQkFEb0FBQUpBSUFKQmdBRnhCRUFnRUVIQUFXb1FIeUVVSUJBZ0VDZ0MwQUVnRENBQ1FSQjBRUjkxYWlJSWF6WUMwQUVnRUNBUUtRUElBU0FJcllnM0E4Z0JJQWtnRWtFQ2RHb2dGRUYvSUFoMFFYOXpjU0FDUVF0MlFRRnhJQWgwY2tFQmNpSUpRUUpxSUJGMElCUkJIM1J5TmdJQUlBZEJvSDhnQ1dkck9nQUFEQUVMSUFoQmdBRkpEUUFnQ1NBU1FRSjBha0VBTmdJQUN5QWpRUkJ6SVNNZ0JpQU5RUVJ4YWlFR0lBRkJFR29oQVNBU0lCZEtEUUFMQ3lBS1FRaHhJVGtnRGtHd0RHb2hLQ0FPUWFBSWFpRXBJQTVCa0FScUlTVWdJVUVEVGdSQUlCSkJER3doTVNBU1FRTjBJVG9nSkVFQmF5RWdRUU1nSkVFQ2F5SUJkQ0V0UVFFZ0FYUWhMaUFTUVFkcVFRRjJRZnovLy84SGNVRUVhaUU5SUNzZ0dVRi9jMm9pQVVFRGRpSUdRUUowSWo1QkJHb2hPeUFHUVFGcUlqOUIvUC8vL3dOeEloOUJBblFoUENBZlFRTjBJUlVnQVVFWVNTRkFRUUloREFOQUlBd2hFU0FXTFFBQUlSZ2dGa0VBT2dBQUlDTkJiM0ZCQW5NaEl3SkFJQkpCQUV3RVFDQU1RUUpxSVF3TUFRc2dKU0FPSUJGQkJIRWJJUk1nRVVFQ2FpRU1JQXNnRVNBU2JFRUNkR29oQjBFQUlSUWdGaUVCUVFBaEZ3TkFJQmNoRFNBQkxRQUJRUVYyUVFSeElCUWdHRUgvQVhFaUdFRUhkbkp5SWdaQkNIUWdFRUhnQVdvUU5VSC9BSEZCQVhSeVFlQ1JBV292QVFBaENRSkFJQVlOQUNBSlFRQWdCRUVDYXlJR1FYOUdHeUVKSUFSQkFVb0VRQ0FHSVFRTUFRc2dFRUdBQW1vUUxTRUVDeUFRS1FQb0FTQVFLQUx3QVNBVElCTW9BZ0FnQ1VFRWRrRURjU0FKUVFKMlFUQnhjaUFqZEhJaUNEWUNBQ0FKUWNBQWNTSWNRUVYySUFsQmdBRnhJaXBCQm5aeUlSUWdDVUVIY1NJR2F5RUtJQWF0aUNKSnB5RVhRUUFoQWlBU0lBMUJBbkpLQkVBZ0ZDQUJMUUFDUVFWMlFRUnhJQUV0QUFGQkIzWnljaUlHUVFoMElCZEIvd0J4UVFGMGNrSGdrUUZxTHdFQUlRSUNRQ0FHRFFBZ0FrRUFJQVJCQW1zaUJrRi9SaHNoQWlBRVFRRktCRUFnQmlFRURBRUxJQkJCZ0FKcUVDMGhCQXNnQ2lBQ1FRZHhJZ1pySVFvZ0FrRUZkaUFDUVFaMmNrRUNjU0VVSUVrZ0JxMklJa21uSVJjTElCTWdBa0VDZEVHQUJuRWdBa0V3Y1hJZ0kwRUVhblFnQ0hJMkFnQkJBU0VJUVFFaEJnSkFBa0FDUUNBQ1FRSjJRUUp4SUFsQkEzWkJBWEZ5SWc4T0JBSUFBQUVBQzBFQklCZEJCM0ZCbEtJQmFpMEFBQ0lHUVFWMlFYOGdCa0VDZGtFSGNTSWVkRUYvY3lBWElBWkJBM0VpRjNaeGFrRUJhaUlHSUE5QkFVWWlEeHNoQ0NBR1FRRWdEeHNoQmlBWElCNXFJUThNQVFzZ0Z5QVhRUWR4UVpTaUFXb3RBQUFpQmtFRGNTSVhkaUllUVFkeFFaU2lBV290QUFBaUNFRURjU0luSUJkcUlBWkJBblpCQjNFaUYyb2dDRUVDZGtFSGNTSTBhaUVQSUI0Z0ozWWlIa0YvSUJkMFFYOXpjU0FHUVFWMmFrRUJhaUVHUVg4Z05IUkJmM01nSGlBWGRuRWdDRUVGZG1wQkFXb2hDQXNnRUNBS0lBOXJOZ0x3QVNBUUlFa2dENjJJTndQb0FTQUpRZkFCY1NJWElCZEJBV3R4QkVBZ0JpQVlRZjhBY1NJS0lBRXRBQUZCL3dCeEloZ2dDaUFZU3hzaUNrRUNheUlZUVFBZ0NpQVlUeHRxSVFZTElBSkI4QUZ4SWdvZ0NrRUJhM0VFUUNBSUlBRXRBQUZCL3dCeEloZ2dBUzBBQWtIL0FIRWlEeUFQSUJoSkd5SVlRUUpyUVFBZ0dFRUNTeHRxSVFnTElBWWdMRTBnQ0NBc1RYRkZCRUFnSWdSQVFRQWhBaUFkUVFGQnkvc0FRUUFRRXd3SkMwRUFJUUlnSFVFQlFjdjdBRUVBRUJNTUNBc2dBUzBBQWlFWUlBRkJBRHNBQVNBS0lCZEJCSFp5UWY4QlFmOEJJQTFCQkdvaUZ5QVNhMEVCZEhZZ0VpQVhUaHNpQ2tIVkFIRWdDaUFNSUNGS0d5SVBRWDl6Y1FSQUlDSUVRRUVBSVFJZ0hVRUJRZjNlQUVFQUVCTU1DUXRCQUNFQ0lCMUJBVUg5M2dCQkFCQVREQWdMQWtBQ1FDQUpRUkJ4QkVBZ0VFSEFBV29RSHlFZUlCQWdFQ2dDMEFFZ0JpQUpRUk4wUVI5MWFpSUthellDMEFFZ0VDQVFLUVBJQVNBS3JZZzNBOGdCSUI1QmZ5QUtkRUYvYzNFZ0NVRUlka0VCY1NBS2RISkJBWEpCQW1vZ0lIUWdIa0VmZEhJaENnd0JDMEVBSVFvZ0QwRUJjVVVOQVFzZ0J5QUtOZ0lBQ3dKQUlBbEJJSEVFUUNBUVFjQUJhaEFmSVI0Z0VDQVFLQUxRQVNBR0lBbEJFblJCSDNWcUlncHJOZ0xRQVNBUUlCQXBBOGdCSUFxdGlEY0R5QUVnQnlBU1FRSjBhaUFlUVg4Z0NuUkJmM054SUFsQkNYWkJBWEVnQ25SeVFRRnlJZ3BCQW1vZ0lIUWdIa0VmZEhJMkFnQWdBVUVnSUFwbmF5SUtJQUV0QUFCQi93QnhJaDRnQ2lBZVN4dEJnQUZ5T2dBQURBRUxJQTlCQW5GRkRRQWdCeUFTUVFKMGFrRUFOZ0lBQ3lBSFFRUnFJUW9DUUFKQUlCd0VRQ0FRUWNBQmFoQWZJUndnRUNBUUtBTFFBU0FHSUFsQkVYUkJIM1ZxSWg1ck5nTFFBU0FRSUJBcEE4Z0JJQjZ0aURjRHlBRWdIRUYvSUI1MFFYOXpjU0FKUVFwMlFRRnhJQjUwY2tFQmNrRUNhaUFnZENBY1FSOTBjaUVlREFFTFFRQWhIaUFQUVFSeFJRMEJDeUFLSUI0MkFnQUxBa0FnS2dSQUlCQkJ3QUZxRUI4aEhpQVFJQkFvQXRBQklBWWdDVUVRZEVFZmRXb2lCbXMyQXRBQklCQWdFQ2tEeUFFZ0JxMklOd1BJQVNBS0lCSkJBblJxSUI1QmZ5QUdkRUYvYzNFZ0NVRUxka0VCY1NBR2RISkJBWElpQmtFQ2FpQWdkQ0FlUVI5MGNqWUNBQ0FCUWFCL0lBWm5hem9BQVF3QkN5QVBRUWh4UlEwQUlBb2dFa0VDZEdwQkFEWUNBQXNnQjBFSWFpRUpBa0FDUUNBQ1FSQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSTjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFSWRrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBFUWNVVU5BUXNnQ1NBR05nSUFDd0pBSUFKQklIRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVuUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQ1haQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVRWdJQVpuYXlJR0lBRXRBQUZCL3dCeElna2dCaUFKU3h0QmdBRnlPZ0FCREFFTElBOUJJSEZGRFFBZ0NTQVNRUUowYWtFQU5nSUFDeUFIUVF4cUlRa0NRQUpBSUFKQndBQnhCRUFnRUVIQUFXb1FIeUVLSUJBZ0VDZ0MwQUVnQ0NBQ1FSRjBRUjkxYWlJR2F6WUMwQUVnRUNBUUtRUElBU0FHcllnM0E4Z0JJQXBCZnlBR2RFRi9jM0VnQWtFS2RrRUJjU0FHZEhKQkFYSkJBbW9nSUhRZ0NrRWZkSEloQmd3QkMwRUFJUVlnRDBIQUFIRkZEUUVMSUFrZ0JqWUNBQXNnQVVFQ2FpRUJBa0FnQWtHQUFYRUVRQ0FRUWNBQmFoQWZJUW9nRUNBUUtBTFFBU0FJSUFKQkVIUkJIM1ZxSWdack5nTFFBU0FRSUJBcEE4Z0JJQWF0aURjRHlBRWdDU0FTUVFKMGFpQUtRWDhnQm5SQmYzTnhJQUpCQzNaQkFYRWdCblJ5UVFGeUlnWkJBbW9nSUhRZ0NrRWZkSEkyQWdBZ0FVR2dmeUFHWjJzNkFBQU1BUXNnRDBHQUFVa05BQ0FKSUJKQkFuUnFRUUEyQWdBTElDTkJFSE1oSXlBVElBMUJCSEZxSVJNZ0IwRVFhaUVISUJJZ0Ywb05BQXNMQWtBZ0cwRUNTUTBBSUJGQkFuRkZEUUFnREVFRWNTRUdBa0FDZndKQUFrQWdNd1JBSUE0Z0pTQUdHeUVOUVFBaER5QVNRUUJNRFFFZ0N5QVJRUUpySUJKc1FRSjBhaUVYQTBBZ0VFR0FBV29RTlNFQ1FRQWhDU0FOS0FJQUlnY0VRQ0FYSUE5QkFuUnFJUWxCQUNFSVFROGhBUU5BQWtBZ0FTQUhjVVVOQUNBQlFaR2l4SWdCY1NJVElBZHhCRUFnQ1NBSktBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVCZENBSGNRUkFJQWtnRWtFQ2RHb2lDaUFLS0FJQUlBSkJmM05CQVhFZ0lIUnpJQzV5TmdJQUlBSkJBWFloQWdzZ0UwRUNkQ0FIY1FSQUlBa2dPbW9pQ2lBS0tBSUFJQUpCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQUpCQVhZaEFnc2dFMEVEZENBSGNVVU5BQ0FKSURGcUloTWdFeWdDQUNBQ1FYOXpRUUZ4SUNCMGN5QXVjallDQUNBQ1FRRjJJUUlMSUFsQkJHb2hDU0FCUVFSMElRRWdDRUVCYWlJSVFRaEhEUUFMSUFkcElRa0xJQTFCQkdvaERTQVFJQkFvQXBBQklBbHJOZ0tRQVNBUUlCQXBBNGdCSUFtdGlEY0RpQUVnRDBFSWFpSVBJQkpJRFFBTEN5QXBJQ2dnQmhzaENpQU9JQ1VnQmhzaERTQUdSU0VQSUJKQkFFd05BMEVBSVFZZ1FBMEJJQW9nRFNBN2Fra2dEU0FLSUR0cUlnSkpjUTBCUVFBZ0NpSUpJQTBpQVNBK2FrRUlha2tnQVVFRWFpQUNTWEVOQWhvZ0FTQThhaUVCSUFrZ1BHb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQW9nQWtFQ2RDSUdhaUlISUFZZ0RXb2lCdjBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlBY2dSeUFHL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUI5SERRQUxJQjhnUDBZTkF5QVZJUVlnUi8wYkF3d0NDeUFHUlNFUElDa2dLQ0FHR3lFS0RBSUxJQW9oQ1NBTklRRkJBQXNoQWdOQUlBSkJISFloQnlBSklBRW9BZ0FpQWtFRWRpQUhJQUpCQkhSeWNpQUNjaUlITmdJQUlBa2dCeUFCS0FJRVFSeDBjaUlIUVFGMlFmZnUzYnNIY1NBSFFRRjBRZTdkdS9kK2NYSWdCM0lnQWtGL2MzRTJBZ0FnQ1VFRWFpRUpJQUZCQkdvaEFTQUdRUWhxSWdZZ0VrZ05BQXNMSUJGQkJra05BRUVBSVFoQkFDRVRJQTBoQ1NBcElDZ2dEeHNpSENFQ0lBNGdKU0FQR3lJWUlRRWdFa0VBU2dSQUEwQWdDVUVFYWlFSElBSW9BZ0FoRnlBSktBSUFJUVlnQWlBNUJIOGdGd1VnQmtFRWRDQVRRUngyY2lBR1FRUjJjaUFIS0FJQVFSeDBjaUFHY2tFRGRFR0lrYUxFZUhFZ0YzSUxJQUVvQWdCQmYzTnhOZ0lBSUFGQkJHb2hBU0FDUVFScUlRSWdCaUVUSUFjaENTQUlRUWhxSWdnZ0VrZ05BQXNnQ3lBUlFRWnJJQkpzUVFKMGFpRkJRUUFoSGlBWUlSTURRRUVBSVFjZ0hDZ0NBQ0lCQkVBZ0hrRUVjaUZDSUJJZ0htc2hRMEVBSVFKQkFDRVVBMEFnQWlBUVFhQUJhaEFmSVFJQ1FDQVVRUVJxSUVNZ0ZDQkNhaUFTU0JzaU5DQVVUQVJBUVFBaENRd0JDeUFUS0FJQVFYOXpJU29nUVNBVUlCNXlRUUowYWlFUFFRQWhDVUVQSUJRaUNFRUNkQ0pFZENJWElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSnlBQmNRUkFJQUpCQVhFRVFDQUhJQ2R5SVFkQk1pQUlRUUowZENBcWNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUNkQkFYUWlOWEVFUUNBQ1FRRnhCRUFnQnlBMWNpRUhJQUZCOUFBZ0NFRUNkSFFnS25GeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdKMEVDZENJMWNRUkFJQUpCQVhFRVFDQUhJRFZ5SVFjZ0FVSG9BU0FJUVFKMGRDQXFjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBblFRTjBJaWR4UlEwQUlBSkJBWEVFUUNBSElDZHlJUWNnQVVIQUFTQUlRUUowZENBcWNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBMFNBMEFDeUFISUVSMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRjNGRkRRQWdGMEdSb3NTSUFYRWlCaUFIY1FSQUlBOGdEeWdDQUNBQ1FSOTBjaUF0Y2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0R5QVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdMWEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUE4Z09tb2lDQ0FJS0FJQUlBSkJIM1J5SUMxeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdEeUF4YWlJR0lBWW9BZ0FnQWtFZmRISWdMWEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRjBFRWRDRVhJQTlCQkdvaER5QVVRUUZxSWhRZ05FZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFVVFRRnhSUTBBQ3lBY0lCd29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBVEtBSUVRWDl6Y1hJMkFnUUxJQk1vQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQjRFUUNBS1FRUnJJZ0lnQWlnQ0FDQU5RUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRFNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBTktBSUVRWDl6SUFaQkgzWnhjallDQkNBY1FRUnFJUndnRTBFRWFpRVRJQXBCQkdvaENpQU5RUVJxSVEwZ0hrRUlhaUllSUJKSURRQUxDeUFZUVFBZ1BSQVpHZ3NnRENBaFNBMEFDd3NDUUNBYlFRSkpEUUFDUUNBaFFRTnhRUUZySWhkQkFra2dNM0VFUUNBU1FRQk1EUUZCQVNBa1FRSnJkQ0VISUFzZ0lVSDgvLzhIY1NBU2JFRUNkR29oQ2lBbElBNGdJVUVFY1JzaEJDQVNRUXhzSVJzZ0VrRURkQ0VXSUNSQkFXc2hEVUVBSVJRRFFDQVFRWUFCYWhBMUlRSkJBQ0VKSUFRb0FnQWlCZ1JBSUFvZ0ZFRUNkR29oQ1VFUElRRkJBQ0VJQTBBQ1FDQUJJQVp4UlEwQUlBRkJrYUxFaUFGeEloTWdCbkVFUUNBSklBa29BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFGMElBWnhCRUFnQ1NBU1FRSjBhaUlkSUIwb0FnQWdBa0YvYzBFQmNTQU5kSE1nQjNJMkFnQWdBa0VCZGlFQ0N5QVRRUUowSUFaeEJFQWdDU0FXYWlJZElCMG9BZ0FnQWtGL2MwRUJjU0FOZEhNZ0IzSTJBZ0FnQWtFQmRpRUNDeUFUUVFOMElBWnhSUTBBSUFrZ0cyb2lFeUFUS0FJQUlBSkJmM05CQVhFZ0RYUnpJQWR5TmdJQUlBSkJBWFloQWdzZ0NVRUVhaUVKSUFGQkJIUWhBU0FJUVFGcUlnaEJDRWNOQUFzZ0Jta2hDUXNnQkVFRWFpRUVJQkFnRUNnQ2tBRWdDV3MyQXBBQklCQWdFQ2tEaUFFZ0NhMklOd09JQVNBVVFRaHFJaFFnRWtnTkFBc0xJQmRCQVVzTkFDQVNRUUJNRFFBZ0pTQU9JQ0ZCQkhFaUFSc2hCeUFvSUNrZ0FSc2hDRUVBSVFZQ2Z3SkFJQ3NnR1VGL2Myb2lBVUU0U1EwQUlBZ2dCeUFCUVFGMlFmei8vLzhIY1NJSlFRUnFJZ0pxU1NBSElBSWdDR29pQWtseERRQWdDQ0FISUFscVFRaHFTU0FIUVFScUlBSkpjUTBBSUFGQkEzWkJBV29pRFVIOC8vLy9BM0VpQkVFRGRDRUdJQWNnQkVFQ2RDSUphaUVCSUFnZ0NXb2hDZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFnTkFJQWdnQWtFQ2RDSVRhaUlYSUFjZ0Uyb2lFLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1NQMVFJa2Y5Q3dJQUlCY2dSeUFUL1FBQ0JFRWMvYXNCL1ZBaVIwRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1IwRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQkgvVkFnU1AxUC9Rc0NBQ0JJSVVjZ0FrRUVhaUlDSUFSSERRQUxJQVFnRFVZTkFpQkgvUnNEREFFTElBZ2hDU0FISVFGQkFBc2hBZ05BSUFKQkhIWWhCeUFKSUFFb0FnQWlBa0VFZGlBSElBSkJCSFJ5Y2lBQ2NpSUhOZ0lBSUFrZ0J5QUJLQUlFUVJ4MGNpSUhRUUYyUWZmdTNic0hjU0FIUVFGMFFlN2R1L2QrY1hJZ0IzSWdBa0YvYzNFMkFnQWdDVUVFYWlFSklBRkJCR29oQVNBR1FRaHFJZ1lnRWtnTkFBc0xJQ0VnSVVFQmFrRURjV3RCQTJ0QkFDQWhRUVpLR3lJRUlDRk9EUUFnRWtFTWJDRXNJQkpCQTNRaExVRURJQ1JCQW10MElTQWdLeUFaUVg5emFpSUJRUU4ySWdaQkFuUWlHVUVFYWlFZElBWkJBV29pSkVIOC8vLy9BM0VpSWtFQ2RDRVJJQ0pCQTNRaEV5QUJRUmhKSVNzZ0FVRVhTeUV1QTBBQ1FBSkFBa0FDUUFKL0FrQWdJU0FFYXlJQlFRRnJJZ1pCQTA4RVFFRi9JUlFnQVVFRlNBMEZJQkpCQUV3TkJpQWxJQTRnQkVFRWNTSUJHeUVOSUNnZ0tTQUJHeUVJSURrRVFFRUFJUUVnTGtVTkJDQU5JQWdnSFdwSklBMGdIV29nQ0V0eERRUWdEU0FSYWlFSklBZ2dFV29oQWdOQUlBZ2dBVUVDZENJR2FpSUhJQWY5QUFJQUlBWWdEV3I5QUFJQS9VLzlDd0lBSUFGQkJHb2lBU0FpUncwQUN5QVRJUUVnSWlBa1JnMEdEQVVMSUE0Z0pTQUJHeUVYUVFBaEJpQXJEUUVnQ0NBWElCMXFTU0FYSUFnZ0hXb2lBVWx4RFFFZ0NDQVhJQmxxUVFocVNTQVhRUVJxSUFGSmNRMEJJQWdnRFNBZGFra2dBU0FOUzNFTkFTQU5JQkZxSVFjZ0NDQVJhaUVKSUJFZ0Yyb2hBdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZIUVFBaEFRTkFJQWdnQVVFQ2RDSUdhaUlLSUFZZ0Yyb2lHLzBBQWdBaVNFRUUvYTBCSUVoQkJQMnJBU0JISUVqOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ0cvMEFBZ1JCSFAyckFmMVFJRWo5VUVFRC9hc0IvUXlJaUlpSWlJaUlpSWlJaUlpSWlJaUkvVTRnQ3YwQUFnRDlVQ0FHSUExcS9RQUNBUDFQL1FzQ0FDQklJVWNnQVVFRWFpSUJJQ0pIRFFBTElDSWdKRVlOQlNBVElRWWdSLzBiQXd3Q0N5QUdRUUowUVp5aUFXb29BZ0FoRkF3RUN5QVhJUUlnQ0NFSklBMGhCMEVBQ3lFQkEwQWdBVUVjZGlFSUlBa2dDU2dDQUNBQ0tBSUFJZ0ZCQkhZZ0NDQUJRUVIwY25JZ0FpZ0NCRUVjZEhJZ0FYSkJBM1JCaUpHaXhIaHhjaUFIS0FJQVFYOXpjVFlDQUNBSFFRUnFJUWNnQ1VFRWFpRUpJQUpCQkdvaEFpQUdRUWhxSWdZZ0VrZ05BQXNNQWdzZ0NDRUNJQTBoQ1FzRFFDQUNJQUlvQWdBZ0NTZ0NBRUYvYzNFMkFnQWdDVUVFYWlFSklBSkJCR29oQWlBQlFRaHFJZ0VnRWtnTkFBc0xJQkpCQUV3TkFDQWxJQTRnQkVFRWNTSUJHeUVNSUNnZ0tTQUJHeUVZSUE0Z0pTQUJHeUVWSUNrZ0tDQUJHeUVLSUFzZ0JDQVNiRUVDZEdvaEtrRUFJUnNEUUVFQUlRY2dHQ2dDQUNBVWNTSUJCRUFnRzBFRWNpRW5JQklnRzJzaEgwRUFJUUpCQUNFTkEwQWdBaUFRUWFBQmFoQWZJUUlDUUNBTlFRUnFJQjhnRFNBbmFpQVNTQnNpSENBTlRBUkFRUUFoQ1F3QkN5QVVJQXdvQWdCQmYzTnhJU01nS2lBTklCdHlRUUowYWlFV1FRQWhDVUVQSUEwaUNFRUNkQ0l6ZENJUElRWURRQUpBSUFFZ0JuRkZEUUFnQmtHUm9zU0lBWEVpSGlBQmNRUkFJQUpCQVhFRVFDQUhJQjV5SVFkQk1pQUlRUUowZENBamNTQUJjaUVCQ3lBQ1FRRjJJUUlnQ1VFQmFpRUpDeUFCSUI1QkFYUWlNWEVFUUNBQ1FRRnhCRUFnQnlBeGNpRUhJQUZCOUFBZ0NFRUNkSFFnSTNGeUlRRUxJQUpCQVhZaEFpQUpRUUZxSVFrTElBRWdIa0VDZENJeGNRUkFJQUpCQVhFRVFDQUhJREZ5SVFjZ0FVSG9BU0FJUVFKMGRDQWpjWEloQVFzZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQVNBZVFRTjBJaDV4UlEwQUlBSkJBWEVFUUNBSElCNXlJUWNnQVVIQUFTQUlRUUowZENBamNYSWhBUXNnQ1VFQmFpRUpJQUpCQVhZaEFnc2dCa0VFZENFR0lBaEJBV29pQ0NBY1NBMEFDeUFISUROMlFmLy9BM0ZGRFFBRFFBSkFJQWNnRDNGRkRRQWdEMEdSb3NTSUFYRWlCaUFIY1FSQUlCWWdGaWdDQUNBQ1FSOTBjaUFnY2pZQ0FDQUNRUUYySVFJZ0NVRUJhaUVKQ3lBR1FRRjBJQWR4QkVBZ0ZpQVNRUUowYWlJSUlBZ29BZ0FnQWtFZmRISWdJSEkyQWdBZ0FrRUJkaUVDSUFsQkFXb2hDUXNnQmtFQ2RDQUhjUVJBSUJZZ0xXb2lDQ0FJS0FJQUlBSkJIM1J5SUNCeU5nSUFJQUpCQVhZaEFpQUpRUUZxSVFrTElBWkJBM1FnQjNGRkRRQWdGaUFzYWlJR0lBWW9BZ0FnQWtFZmRISWdJSEkyQWdBZ0NVRUJhaUVKSUFKQkFYWWhBZ3NnRDBFRWRDRVBJQlpCQkdvaEZpQU5RUUZxSWcwZ0hFZ05BQXNMSUJBZ0VDZ0NzQUVnQ1dzMkFyQUJJQkFnRUNrRHFBRWdDYTJJTndPb0FVRUJJUUpCQkNFTlFRRnhSUTBBQ3lBWUlCZ29BZ1FnQjBFYmRrRU9jU0FIUVIxMmNpQUhRUngyY2lBTUtBSUVRWDl6Y1hJMkFnUUxJQXdvQWdBZ0IzSWlCa0VEZGtHUm9zU0lBWEVpQVVFRWRpQUJRUVIwY2lBQmNpRUpJQnNFUUNBS1FRUnJJZ0lnQWlnQ0FDQVZRUVJyS0FJQVFYOXpJQUZCSEhSeGNqWUNBQXNnQ2lBS0tBSUFJQWtnRlNnQ0FFRi9jM0Z5TmdJQUlBb2dDaWdDQkNBVktBSUVRWDl6SUFaQkgzWnhjallDQkNBWVFRUnFJUmdnREVFRWFpRU1JQXBCQkdvaENpQVZRUVJxSVJVZ0cwRUlhaUliSUJKSURRQUxDeUFFUVFScUlnUWdJVWdOQUFzTFFRRWhBaUFoUVFCTURRTWdFa0VBVEEwRElCSkIvUC8vL3dkeElnWkJBblFoQnlBU1FRUkpJUVJCQUNFSUEwQWdDeUFJSUJKc1FRSjBhaUVCQWtBQ1FDQUVCRUFnQVNFQ1FRQWhDUXdCQ3lBQklBZHFJUUpCQUNFSkEwQWdBU0FKUVFKMGFpSU5JQTM5QUFJQUlrZjlEUC8vLzMvLy8vOS8vLy8vZi8vLy8zLzlUaUpJL2FFQklFZ2dSLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZMOUN3SUFJQWxCQkdvaUNTQUdSdzBBQ3lBR0lna2dFa1lOQVFzRFFDQUNRUUFnQWlnQ0FDSUJRZi8vLy84SGNTSU5heUFOSUFGQkFFZ2JOZ0lBSUFKQkJHb2hBaUFKUVFGcUlna2dFa2NOQUFzTFFRRWhBaUFJUVFGcUlnZ2dJVWNOQUFzTUF3c2dJa1VOQUNBUUlCb29BaGcyQWpRZ0VDQVdOZ0l3SUIxQkFVR3h5d0FnRUVFd2FoQVREQUVMSUJBZ0NUWUNGQ0FRSUJZMkFoQWdIVUVCUWJITEFDQVFRUkJxRUJOQkFDRUNEQUVMUVFBaEFnc2dFRUd3QW1va0FDQUNEUUVNQXdzZ0F5QUJRUWwwUVpDdUFXbzJBbXdDZjBFQUlRY2dBeWdDZENFQkFrQUNRQ0FhS0FJUUlCb29BZ2hySWdvZ0dpZ0NGQ0FhS0FJTWF5SU5iQ0lHSUFNb0FvUUJTd1JBSUFFUUZDQURJQVpCQW5RUUhDSUJOZ0owUVFBZ0FVVU5BeG9nQXlBR05nS0VBUXdCQ3lBQlJRMEJDeUFCUVFBZ0JrRUNkQkFaR2dzZ0F5Z0NlQ0VCQWtBZ0NrRUNhaUlJSUExQkEycEJBbllpRmtFQ2Ftd2lCaUFES0FLSUFVMEVRQ0FHUVFKMElSc01BUXNnQVJBVUlBTWdCa0VDZENJYkVCd2lBVFlDZUNBQkRRQkJBQXdCQ3lBRElBWTJBb2dCSUFGQkFDQWJFQmthQWtBZ0NFVU5BQ0FES0FKNElnUWhBUUpBSUFoQkJFOEVRQ0FFSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBRUlCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dCQ0FXUVFGcUlBaHNRUUowYWlFR1FRQWhCd0pBQWtBZ0NFRUVTUVJBSUFZaEFRd0JDeUFHSUFoQmZIRWlCMEVDZEdvaEFVRUFJUnNEUUNBR0lCdEJBblJxL1F3QUFDQkpBQUFnU1FBQUlFa0FBQ0JKL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFGQmdJQ0F5UVEyQWdBZ0FVRUVhaUVCSUFkQkFXb2lCeUFJUncwQUN3c2dEVUVEY1NJQlJRMEFRWUNBZ01nRVFZQ0FnTUFFUVlDQWdJQUVJQUZCQWtZYklBRkJBVVliSVJRZ0JDQUlJQlpzUVFKMGFpRUdRUUFoQndKQUlBaEJCRWtFUUNBR0lRRU1BUXNnQmlBSVFYeHhJZ2RCQW5ScUlRRWdGUDBSSVVoQkFDRWJBMEFnQmlBYlFRSjBhaUJJL1FzQ0FDQWJRUVJxSWhzZ0IwY05BQXNnQnlBSVJnMEJDd05BSUFFZ0ZEWUNBQ0FCUVFScUlRRWdCMEVCYWlJSElBaEhEUUFMQ3lBRElBMDJBb0FCSUFNZ0NqWUNmRUVCQzBVTkFpQWFLQUljSUJOcUlodEJIMDRFUUNBaVJRMENJQ1lnR3pZQ0VDQWRRUUpCNThNQUlDWkJFR29RRXd3REN5QURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdnR2lnQ1FBMEFBa0FDUUNBYUtBSTBJZ2RCQVUwRVFDQUhRUUZIRFFFZ0F5Z0NrQUZGRFFFTElCb29BZ1FoQVVFQUlRWUNRQ0FIUVFSUEJFQWdCMEY4Y1NFQ0EwQWdBU0FKUVFOMGFpSUdRUnhxSUFaQkZHb2dCa0VNYWlBRy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkgvYTRCSVVjZ0NVRUVhaUlKSUFKSERRQUxJRWNnUnlCSC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa2NnUnlCSC9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFZZ0FpQUhSZzBCQ3dOQUlBRWdBa0VEZEdvb0FnUWdCbW9oQmlBQ1FRRnFJZ0lnQjBjTkFBc0xJQU1vQXBRQklSQWdCa0VDYWlJSklBTW9BcGdCU3dSQUlCQWdDUkFiSWdGRkRRVWdBeUFCTmdLVUFTQUJJQVpxUVFBN0FBQWdBeUFKTmdLWUFTQURLQUtVQVNFUUlCb29BalJGRFFJZ0dpZ0NCQ0VCQzBFQUlRSkJBQ0VHQTBBZ0FpQVFhaUFCSUFaQkEzUWlCV29pQVNnQ0FDQUJLQUlFRUJZYUlCb29BZ1FpQVNBRmFpZ0NCQ0FDYWlFQ0lBWkJBV29pQmlBYUtBSTBTUTBBQ3d3QkN5QUhRUUZIRFFFZ0dpZ0NCQ2dDQUNFUUN5QWFLQUk4SWdFRVFDQURLQUowSVN3Z0F5QUJOZ0owQ3lBYUtBSXNCRUFnRjBFQ2NTRXRJQmRCQ0hFaEpTQURRUnhxSVJnZ0YwRUJjVVVoTGtFQ0lTRURRQ0FRSUI1cUlRRWdHaWdDQUNBb1FSaHNhaUlnS0FJQUlRVUNRQ0F1SUJzZ0dpZ0NIRUVFYTBvZ0lVRUJTM0p5SWlORkJFQWdBeUFCTmdJVUlBTWdBU0FGYWlJRk5nSVlJQU1nQlM4QUFEc0JjQ0FGUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQTBFQU5nSUlJQU5CQURZQ0FDQURJQUUyQWhBTUFRc2dBeUFCTmdJVUlBTWdBU0FGYWlJR05nSVlJQU1nQmk4QUFEc0JjQ0FHUWY4Qk9nQUFJQU1vQWhoQi93RTZBQUVnQXlBRFFSeHFOZ0pvSUFNZ0FUWUNFQ0FEUVFBMkFnd2dBeUFGQkg4Z0FTMEFBRUVRZEFWQmdJRDhCd3NpQlRZQ0FFRUJJUWtnQVVFQmFpRUNJQUV0QUFFaEJnSi9JQUV0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FEUVFFMkFnd2dCVUdBL2dOeURBSUxJQU1nQWpZQ0VFRUFJUWtnQmtFSmRDQUZhZ3dCQ3lBRElBSTJBaEFnQmtFSWRDQUZjZ3NoQVNBRElBazJBZ2dnQTBHQWdBSTJBZ1FnQXlBQlFRZDBOZ0lBQ3lBZ0tBSUFJU29DUUNBYlFRQk1EUUFnSUNnQ0NFVU5BRUVBSVNrZ0xVRUFSeUFqY1NFbkEwQUNRQUpBQWtBQ1FBSkFJQ0ZCQVdzT0FnRUNBQXNnSTBVRVFFRUJJQnQwSWdGQkFYWWdBWEloQkNBREtBSjhJaFpCQW5RaURTQURLQUo0YWtFTWFpRUJJQU1vQW5RaEJrRUFJUk1nQXlnQ2dBRWlCVUVFVHdSQUlCWkZEUVVnRmtFTWJDRUhJQlpCQTNRaENrRUFJQVJySVFJRFFFRUFJUVVEUUFKQUlBRWlDU2dDQUNJQlJRMEFBa0FnQVVHUWdJQUJjUTBBSUFGQjd3TnhSUTBBSUFNb0FnQWhBUUpBSUFNb0FnZ2lDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnQ1FDQUJJQWgyUVFGeFJRMEFBa0FnQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFDSUFRZ0FTQUlka0VCY1NJSUd6WUNBQ0FES0FKOElRRWdDVUVFYXlJVUlCUW9BZ0JCSUhJMkFnQWdDU0FKS0FJRVFRaHlOZ0lFSUFrZ0NTZ0NBQ0FJUVJOMGNrRVFjallDQUNBbERRQWdDVUYrSUFGclFRSjBhaUlCSUFFb0FnUkJnSUFDY2pZQ0JDQUJJQUVvQWdBZ0NFRWZkSEpCZ0lBRWNqWUNBQ0FCUVFScklnRWdBU2dDQUVHQWdBaHlOZ0lBQ3lBSklBa29BZ0JCZ0lDQUFYSWlBVFlDQUFzQ1FDQUJRWUNCZ0FoeERRQWdBVUg0SG5GRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FKQW44Z0FTQUlka0VCY1VVRVFDQUpLQUlBREFFTEFrQWdDQTBBSUFGQi93RkdJUlFnQXlnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFNZ0FUWUNBQ0FESUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBTkIvd0UyQWdBTFFRZ2hDQXNnQXlBSVFRRnJJZ2cyQWdnZ0JpQU5haUFDSUFRZ0FTQUlka0VCY1NJQkd6WUNBQ0FKUVFScklnZ2dDQ2dDQUVHQUFuSTJBZ0FnQ1NBSktBSUVRY0FBY2pZQ0JDQUpLQUlBSUFGQkZuUnlRWUFCY2d0QmdJQ0FDSElpQVRZQ0FBc0NRQ0FCUVlDSWdNQUFjUTBBSUFGQndQY0JjVVVOQUNBREtBSUFJUUVDUUNBREtBSUlJZ2dOQUNBQlFmOEJSaUVVSUFNb0FoQWlDQzBBQUNFQkFrQWdGRVVFUUNBRElBRTJBZ0FnQXlBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUVFSElRZ01BZ3RCL3dFaEFTQURRZjhCTmdJQUMwRUlJUWdMSUFNZ0NFRUJheUlJTmdJSUlBa0NmeUFCSUFoMlFRRnhSUVJBSUFrb0FnQU1BUXNDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFwcUlBSWdCQ0FCSUFoMlFRRnhJZ0ViTmdJQUlBbEJCR3NpQ0NBSUtBSUFRWUFRY2pZQ0FDQUpJQWtvQWdSQmdBUnlOZ0lFSUFrb0FnQWdBVUVaZEhKQmdBaHlDMEdBZ0lEQUFISWlBVFlDQUFzZ0FVR0F3SUNBQkhFTkFDQUJRWUM4RDNGRkRRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FCSUFoMlFRRnhCRUFDUUNBSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUFkcUlBSWdCQ0FCSUFoMlFRRnhJZ2diTmdJQUlBTW9BbndoQVNBSlFRUnJJaFFnRkNnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBSUFJQWhCSEhSeVFZREFBSEkyQWdBZ0NTQUJRUUowYWlJQklBRW9BZ1JCQkhJMkFnUWdBU0FCS0FJTVFRRnlOZ0lNSUFFZ0FTZ0NDQ0FJUVJKMGNrRUNjallDQ0FzZ0NTQUpLQUlBUVlDQWdJQUVjallDQUFzZ0JrRUVhaUVHSUFsQkJHb2hBU0FGUVFGcUlnVWdGa2NOQUFzZ0JpQUhhaUVHSUFsQkRHb2hBU0FUUVFScUloTWdBeWdDZ0FFaUJVRjhjVWtOQUFzTElBVWdFMDBOQXlBV1JRMERRUUFoQ2tFQUlBUnJJUTRnQlNFSUEwQUNRQ0FJSUJOR0JFQWdFeUVJREFFTElBRkJCR3NoRkNBQktBSUFJUTFCQUNFQ0EwQUNRQ0FOSUFKQkEyd2lDWFlpQjBHUWdJQUJjUTBBSUFkQjd3TnhSUTBBSUFNb0FnQWhCUUpBSUFNb0FnZ2lCdzBBSUFWQi93RkhJUWdnQXlnQ0VDSUhMUUFBSVFVQ1FDQUlSUVJBSUFWQmtBRlBCRUJCL3dFaEJTQURRZjhCTmdJQURBSUxJQU1nQlRZQ0FDQURJQWRCQVdvMkFoQkJCeUVIREFJTElBTWdCVFlDQUNBRElBZEJBV28yQWhBTFFRZ2hCd3NnQXlBSFFRRnJJZ2MyQWdnQ1FDQUZJQWQyUVFGeFJRMEFJQVlnQWlBV2JFRUNkR29DUUNBSERRQWdCVUgvQVVjaERTQURLQUlRSWdjdEFBQWhCUUpBSUExRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0IwRUJhallDRUVFSElRY01BZ3NnQXlBRk5nSUFJQU1nQjBFQmFqWUNFQXRCQ0NFSEN5QURJQWRCQVdzaUJ6WUNDQ0FPSUFRZ0JTQUhka0VCY1NJSEd6WUNBQ0FES0FKOElRZ2dGQ0FVS0FJQVFTQWdDWFJ5TmdJQUlBRWdBU2dDQUNBSFFSTjBRUkJ5SUFsMGNqWUNBQ0FCSUFFb0FnUkJDQ0FKZEhJMkFnUWdBaUFsY2tVRVFDQUJRWDRnQ0d0QkFuUnFJZ1VnQlNnQ0JFR0FnQUp5TmdJRUlBVWdCU2dDQUNBSFFSOTBja0dBZ0FSeU5nSUFJQVZCQkdzaUJTQUZLQUlBUVlDQUNISTJBZ0FMSUFKQkEwY05BQ0FCSUFoQkFuUnFJZ1VnQlNnQ0JFRUVjallDQkNBRklBVW9BZ3hCQVhJMkFnd2dCU0FGS0FJSUlBZEJFblJ5UVFKeU5nSUlDeUFCSUFFb0FnQkJnSUNBQVNBSmRISWlEVFlDQUNBREtBS0FBU0VGQ3lBRklRZ2dBa0VCYWlJQ0lBVWdFMnRKRFFBTEN5QUdRUVJxSVFZZ0FVRUVhaUVCSUFwQkFXb2lDaUFXUncwQUN3d0RDMEVBSVFsQkFDRVdRUUFoQ2dKQUFrQUNRQUpBSUFNb0Fud2lCRUhBQUVjTkFDQURLQUtBQVVIQUFFY05BRUVBUVFFZ0czUWlBVUVCZGlBQmNpSVRheUVVSUFOQkhHb2hCQ0FES0FKNFFZd0NhaUVHSUFNb0FnZ2hDQ0FES0FJRUlRVWdBeWdDQUNFSElBTW9BbWdoRFNBREtBSjBJUUVnRjBFSWNRMEJBMEJCQUNFS0EwQWdBU0VDSUFZaUNTZ0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FGSUFRZ0F5Z0NiQ0FCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnQ3hzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWdzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlBc2JEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRVhaQkJIRWdDVUVFYXlJTUtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nSUFJQXdnRENnQ0FFRWdjallDQUNBSklBa29BZ1JCQ0hJMkFnUWdDVUdNQW1zaURpQU9LQUlBUVlDQUNISTJBZ0FnQ1VHRUFtc2lEaUFPS0FJQVFZQ0FBbkkyQWdBZ0NVR0lBbXNpRGlBT0tBSUFJQUVnQzNNaUFVRWZkSEpCZ0lBRWNqWUNBQ0FHSUFGQkUzUnlRUkJ5QlNBR0MwR0FnSUFCY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FHUWZnZWNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFOMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRkhaQkJIRWdDVUVFYXlJTUtBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FBaUFNSUF3b0FnQkJnQUp5TmdJQUlBa2dDU2dDQkVIQUFISTJBZ1FnQmlBQklBdHpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FFSUFNb0Ftd2dCa0VHZGlJTFFlOERjV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlN3UkFJQTRvQWdRaERDQU5JQTVCQ0VFTUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VGSUFndEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBTUlBeEZJQkViREFFTElBY2dBVUVRZEdzaEJ5QUZRWUNBQW5GRkJFQWdEaWdDQkNFTUlBMGdEa0VNUVFnZ0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dERVVnRENBUkd3d0JDeUFPS0FJRUN3Ui9JQVVnQkNBSktBSUVRUmQyUVFSeElBbEJCR3NpRENnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUF0QnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZzBvQWdBaURpZ0NBQ0lCYXlFRklBdEJrTUFCYWkwQUFDRUxJQUlnRXlBVUlBc0NmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRVJJQTBnRGtFSVFRd2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCRWdFVVVnRlJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlSRWdEU0FPUVF4QkNDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFSUlNBUklCVWJEQUVMSUE0b0FnUUxJZ0ZHR3pZQ2dBUWdEQ0FNS0FJQVFZQVFjallDQUNBSklBa29BZ1JCZ0FSeU5nSUVJQVlnQVNBTGMwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQVFnQXlnQ2JDQUdRUWwySWd0Qjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTEJFQWdEaWdDQkNFTUlBMGdEa0VJUVF3Z0FTQUZTeUlSRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRGlBSUxRQUJJUVVnQ0MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0F5QU9OZ0lRSUFWQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBT05nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUF3Z0RFVWdFUnNNQVFzZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1VVRVFDQU9LQUlFSVF3Z0RTQU9RUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVPSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXdDQ3lBRElBNDJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUE0MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQndzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QU1SU0FNSUJFYkRBRUxJQTRvQWdRTEJIOGdCU0FFSUFrb0FnUkJHblpCQkhFZ0NVRUVheUlNS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnQzBHcUFYRnljbkp5SWd0QmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJT0tBSUFJZ0ZySVFVZ0MwR1F3QUZxTFFBQUlRc2dBaUFUSUJRZ0N3Si9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlSRWdEU0FPUVFoQkRDQUJJQVZMSWhVYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0VTQVJSU0FWR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaEVTQU5JQTVCREVFSUlBRWdCVXNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQkZGSUJFZ0ZSc01BUXNnRGlnQ0JBc2lBVVliTmdLQUJpQU1JQXdvQWdCQmdJQUJjallDQUNBSklBa29BZ1JCZ0NCeU5nSUVJQWtnQ1NnQ2hBSkJCSEkyQW9RQ0lBa2dDU2dDakFKQkFYSTJBb3dDSUFrZ0NTZ0NpQUlnQVNBTGN5SUJRUkowY2tFQ2NqWUNpQUlnQmlBQlFSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQ1NBR05nSUFDeUFKUVFScUlRWWdBa0VFYWlFQklBcEJBV29pQ2tIQUFFY05BQXNnQ1VFTWFpRUdJQUpCaEFacUlRRWdGa0U4U1NBV1FRUnFJUllOQUFzTUFndEJBU0FiZENJQlFRRjJJQUZ5SVJZZ0F5Z0NlQ0lDSUFSQkFuUnFRUXhxSVFZZ0F5Z0NnQUVoQVNBREtBSUlJUWdnQXlnQ0JDRUZJQU1vQWdBaEJ5QURLQUpvSVEwZ0F5Z0NkQ0VUQWtBZ0YwRUljUVJBQWtBZ0FVRUVTUTBBSUFRRVFDQUVRUXhzSVJFZ0JFRURkQ0VrUVFBZ0Ztc2hDeUFEUVJ4cUlSUURRRUVBSVE0RFFDQUdJZ0lvQWdBaUJnUkFBa0FnQmtHUWdJQUJjUTBBSUFaQjd3TnhJZ0ZGRFFBZ0JTQVVJQU1vQW13Z0FXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lFaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRWhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlTRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdFaHNMQkg4Z0JTQVVJQUlvQWdSQkVYWkJCSEVnQWtFRWF5SVZLQUlBUVJOMlFRRnhJQVpCRG5aQkVIRWdCa0VRZGtIQUFIRWdCa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QVdJQXNnRWdKL0lBRWdCMEVRZGswRVFDQUhJQUZCRUhScklRY2dCVUdBZ0FKeEJFQWdEQ2dDQkF3Q0N5QU1LQUlFSVE4Z0RTQU1RUXhCQ0NBQklBVkxJaHdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSERBRUxJQUZCandGTkJFQWdBeUFNTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFGUVFGMElnVkJnSUFDU1EwQUN5QVBSU0FQSUJ3YkRBRUxJQXdvQWdRaER5QU5JQXhCQ0VFTUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VGSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY01BUXNnQlVHUEFVMEVRQ0FESUF3MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQlNBUElBOUZJQndiQ3lJQlJoczJBZ0FnRlNBVktBSUFRU0J5TmdJQUlBSWdBaWdDQkVFSWNqWUNCQ0FHSUFFZ0VuTkJFM1J5UVJCeUJTQUdDMEdBZ0lBQmNpRUdDd0pBSUFaQmdJR0FDSEVOQUNBR1FmZ2VjVVVOQUNBRklCUWdBeWdDYkNBR1FRTjJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFVWRrRUVjU0FDUVFSckloVW9BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBVElBUkJBblJxSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ0ZHR3pZQ0FDQVZJQlVvQWdCQmdBSnlOZ0lBSUFJZ0FpZ0NCRUhBQUhJMkFnUWdCaUFCSUJKelFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0JTQVVJQU1vQW13Z0JrRUdkaUlTUWU4RGNXb3RBQUJCQW5ScUlnMG9BZ0FpRENnQ0FDSUJheUVGQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRlNBTklBeEJERUVJSUFFZ0JVc2lEeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElCVkZJQlVnRHhzTUFRc2dEQ2dDQkNFVklBMGdERUVJUVF3Z0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUJVZ0ZVVWdEeHNMQkg4Z0JTQVVJQUlvQWdSQkYzWkJCSEVnQWtFRWF5SVZLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVnRWtHUXdBRnFMUUFBSVJJZ0V5QWthaUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SUJSaHMyQWdBZ0ZTQVZLQUlBUVlBUWNqWUNBQ0FDSUFJb0FnUkJnQVJ5TmdJRUlBWWdBU0FTYzBFWmRISkJnQWh5QlNBR0MwR0FnSURBQUhJaEJnc0NRQ0FHUVlEQWdJQUVjUTBBSUFaQmdMd1BjVVVOQUNBRklCUWdBeWdDYkNBR1FRbDJJaEpCN3dOeGFpMEFBRUVDZEdvaURTZ0NBQ0lNS0FJQUlnRnJJUVVDZnlBQklBZEJFSFpOQkVBZ0J5QUJRUkIwYXlFSElBVkJnSUFDY1FSQUlBd29BZ1FNQWdzZ0RDZ0NCQ0VWSUEwZ0RFRU1RUWdnQVNBRlN5SVBHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFGQkNIUWdCMm9oQnd3QkN5QUJRWThCVFFSQUlBTWdERFlDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0ZVVWdGU0FQR3d3QkN5QU1LQUlFSVJVZ0RTQU1RUWhCRENBQklBVkxJZzhiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQU1vQWhBaUNFRUJhaUVNSUFndEFBRWhCU0FJTFFBQVFmOEJSd1JBSUFNZ0REWUNFRUVJSVFnZ0JVRUlkQ0FIYWlFSERBRUxJQVZCandGTkJFQWdBeUFNTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0FzZ0NFRUJheUVJSUFkQkFYUWhCeUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUVVnRlNBVlJTQVBHd3NFZnlBRklCUWdBaWdDQkVFYWRrRUVjU0FDUVFSckloVW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlFa0dRdmdGcUxRQUFRUUowYWlJTktBSUFJZ3dvQWdBaUFXc2hCU0FTUVpEQUFXb3RBQUFoRWlBUklCTnFJQllnQ3lBU0FuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaER5QU5JQXhCREVFSUlBRWdCVXNpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQTlGSUE4Z0hCc01BUXNnRENnQ0JDRVBJQTBnREVFSVFRd2dBU0FGU3lJY0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBOGdEMFVnSEJzTElneEdHellDQUNBVklCVW9BZ0JCZ0lBQmNqWUNBQ0FDSUFJb0FnUkJnQ0J5TmdJRUlBTW9BbnhCQW5RZ0Ftb2lBU0FCS0FJRVFRUnlOZ0lFSUFFZ0FTZ0NERUVCY2pZQ0RDQUJJQUVvQWdnZ0RDQVNjeUlCUVJKMGNrRUNjallDQ0NBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBQ0lBWTJBZ0FMSUFKQkJHb2hCaUFUUVFScUlSTWdEa0VCYWlJT0lBUkhEUUFMSUFKQkRHb2hCaUFSSUJOcUlSTWdDVUVFYWlJSklBTW9Bb0FCSWdGQmZIRkpEUUFMREFFTFFRUWdBVUY4Y1NJR0lBWkJCRTBiUVFGcklnWkJmSEZCQkdvaENTQUNJQVpCQVhSQmVIRnFRUlJxSVFZTElBTWdDRFlDQ0NBRElBVTJBZ1FnQXlBSE5nSUFJQU1nRFRZQ2FDQUVSUTBCSUFFZ0NVME5BUU5BSUFFZ0NVWkJBQ0VJSUFraEFVVUVRQU5BSUFNZ0JpQVRJQVFnQ0d4QkFuUnFJQllnQ0NBREtBSjhRUUpxUVFFUVlpQUlRUUZxSWdnZ0F5Z0NnQUVpQVNBSmEwa05BQXNMSUFaQkJHb2hCaUFUUVFScUlSTWdDa0VCYWlJS0lBUkhEUUFMREFFTEFrQWdBVUVFU1EwQUlBUUVRQ0FFUVF4c0lSRWdCRUVEZENFa1FRQWdGbXNoQ3lBRFFSeHFJUlFEUUVFQUlRNERRQ0FHSWdJb0FnQWlCZ1JBQWtBZ0JrR1FnSUFCY1EwQUlBWkI3d054SWdGRkRRQWdCU0FVSUFNb0Ftd2dBV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRWh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0Voc01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJU0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRWhzTEJIOGdCU0FVSUFJb0FnUkJFWFpCQkhFZ0FrRUVheUlWS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFXSUFzZ0VnSi9JQUVnQjBFUWRrMEVRQ0FISUFGQkVIUnJJUWNnQlVHQWdBSnhCRUFnRENnQ0JBd0NDeUFNS0FJRUlROGdEU0FNUVF4QkNDQUJJQVZMSWh3YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dBVUVJZENBSGFpRUhEQUVMSUFGQmp3Rk5CRUFnQXlBTU5nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFQUlNBUElCd2JEQUVMSUF3b0FnUWhEeUFOSUF4QkNFRU1JQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFRklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNNQVFzZ0JVR1BBVTBFUUNBRElBdzJBaEFnQlVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVBJQTlGSUJ3YkN5SU1SaHMyQWdBZ0ZTQVZLQUlBUVNCeU5nSUFJQUlnQWlnQ0JFRUljallDQkNBQ1FYNGdBeWdDZkd0QkFuUnFJZ0VnQVNnQ0JFR0FnQUp5TmdJRUlBRWdBU2dDQUNBTUlCSnpJZ3hCSDNSeVFZQ0FCSEkyQWdBZ0FVRUVheUlCSUFFb0FnQkJnSUFJY2pZQ0FDQUdJQXhCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUU4ySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRVVka0VFY1NBQ1FRUnJJaFVvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVRJQVJCQW5ScUlCWWdDeUFTQW44Z0FTQUhRUkIyVFFSQUlBY2dBVUVRZEdzaEJ5QUZRWUNBQW5FRVFDQU1LQUlFREFJTElBd29BZ1FoRHlBTklBeEJERUVJSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBQlFRaDBJQWRxSVFjTUFRc2dBVUdQQVUwRVFDQURJQXcyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQVZCQVhRaUJVR0FnQUpKRFFBTElBOUZJQThnSEJzTUFRc2dEQ2dDQkNFUElBMGdERUVJUVF3Z0FTQUZTeUljRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUVVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3d0JDeUFGUVk4QlRRUkFJQU1nRERZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VGSUE4Z0QwVWdIQnNMSWdGR0d6WUNBQ0FWSUJVb0FnQkJnQUp5TmdJQUlBSWdBaWdDQkVIQUFISTJBZ1FnQmlBQklCSnpRUlowY2tHQUFYSUZJQVlMUVlDQWdBaHlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUdRY0QzQVhGRkRRQWdCU0FVSUFNb0Ftd2dCa0VHZGlJU1FlOERjV290QUFCQkFuUnFJZzBvQWdBaURDZ0NBQ0lCYXlFRkFuOGdBU0FIUVJCMlRRUkFJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRUVRQ0FNS0FJRURBSUxJQXdvQWdRaEZTQU5JQXhCREVFSUlBRWdCVXNpRHh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVF3Z0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0F5QU1OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY01BUXNnQVVHUEFVMEVRQ0FESUF3MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSUN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQlZGSUJVZ0R4c01BUXNnRENnQ0JDRVZJQTBnREVFSVFRd2dBU0FGU3lJUEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERDQUlMUUFCSVFVZ0NDMEFBRUgvQVVjRVFDQURJQXcyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3dCQ3lBRlFZOEJUUVJBSUFNZ0REWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklCVWdGVVVnRHhzTEJIOGdCU0FVSUFJb0FnUkJGM1pCQkhFZ0FrRUVheUlWS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnRWtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVZ0VrR1F3QUZxTFFBQUlSSWdFeUFrYWlBV0lBc2dFZ0ovSUFFZ0IwRVFkazBFUUNBSElBRkJFSFJySVFjZ0JVR0FnQUp4QkVBZ0RDZ0NCQXdDQ3lBTUtBSUVJUThnRFNBTVFReEJDQ0FCSUFWTElod2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU1JQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQU1nRERZQ0VFRUlJUWdnQVVFSWRDQUhhaUVIREFFTElBRkJqd0ZOQkVBZ0F5QU1OZ0lRSUFGQkNYUWdCMm9oQjBFSElRZ01BUXNnQXlBREtBSU1RUUZxTmdJTUlBZEJnUDREYWlFSFFRZ2hDQXNnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUFJTQVBJQndiREFFTElBd29BZ1FoRHlBTklBeEJDRUVNSUFFZ0JVc2lIQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUXdnQ0MwQUFTRUZJQWd0QUFCQi93RkhCRUFnQXlBTU5nSVFRUWdoQ0NBRlFRaDBJQWRxSVFjTUFRc2dCVUdQQVUwRVFDQURJQXcyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FQSUE5RklCd2JDeUlCUmhzMkFnQWdGU0FWS0FJQVFZQVFjallDQUNBQ0lBSW9BZ1JCZ0FSeU5nSUVJQVlnQVNBU2MwRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQUZJQlFnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lEU2dDQUNJTUtBSUFJZ0ZySVFVQ2Z5QUJJQWRCRUhaTkJFQWdCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NRUkFJQXdvQWdRTUFnc2dEQ2dDQkNFVklBMGdERUVNUVFnZ0FTQUZTeUlQRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FES0FJUUlnaEJBV29oRENBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRElBdzJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3d0JDeUFCUVk4QlRRUkFJQU1nRERZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTElBaEJBV3NoQ0NBSFFRRjBJUWNnQlVFQmRDSUZRWUNBQWtrTkFBc2dGVVVnRlNBUEd3d0JDeUFNS0FJRUlSVWdEU0FNUVFoQkRDQUJJQVZMSWc4YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQlNBSUxRQUFRZjhCUndSQUlBTWdERFlDRUVFSUlRZ2dCVUVJZENBSGFpRUhEQUVMSUFWQmp3Rk5CRUFnQXlBTU5nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBc2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0ZTQVZSU0FQR3dzRWZ5QUZJQlFnQWlnQ0JFRWFka0VFY1NBQ1FRUnJJaFVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpRWtHUXZnRnFMUUFBUVFKMGFpSU5LQUlBSWd3b0FnQWlBV3NoQlNBU1FaREFBV290QUFBaEVpQVJJQk5xSUJZZ0N5QVNBbjhnQVNBSFFSQjJUUVJBSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkVFUUNBTUtBSUVEQUlMSUF3b0FnUWhEeUFOSUF4QkRFRUlJQUVnQlVzaUhCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRd2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdBeUFNTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNNQVFzZ0FVR1BBVTBFUUNBRElBdzJBaEFnQVVFSmRDQUhhaUVIUVFjaENBd0JDeUFESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUE5RklBOGdIQnNNQVFzZ0RDZ0NCQ0VQSUEwZ0RFRUlRUXdnQVNBRlN5SWNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEQ0FJTFFBQklRVWdDQzBBQUVIL0FVY0VRQ0FESUF3MkFoQkJDQ0VJSUFWQkNIUWdCMm9oQnd3QkN5QUZRWThCVFFSQUlBTWdERFlDRUNBRlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQThnRDBVZ0hCc0xJZ3hHR3pZQ0FDQVZJQlVvQWdCQmdJQUJjallDQUNBQ0lBSW9BZ1JCZ0NCeU5nSUVJQU1vQW54QkFuUWdBbW9pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dEQ0FTY3lJQlFSSjBja0VDY2pZQ0NDQUdJQUZCSEhSeVFZREFBSElGSUFZTFFZQ0FnSUFFY2lFR0N5QUNJQVkyQWdBTElBSkJCR29oQmlBVFFRUnFJUk1nRGtFQmFpSU9JQVJIRFFBTElBSkJER29oQmlBUklCTnFJUk1nQ1VFRWFpSUpJQU1vQW9BQklnRkJmSEZKRFFBTERBRUxRUVFnQVVGOGNTSUdJQVpCQkUwYlFRRnJJZ1pCZkhGQkJHb2hDU0FDSUFaQkFYUkJlSEZxUVJScUlRWUxJQU1nQ0RZQ0NDQURJQVUyQWdRZ0F5QUhOZ0lBSUFNZ0RUWUNhQ0FFUlEwQUlBRWdDVTBOQUFOQUlBRWdDVVpCQUNFSUlBa2hBVVVFUUFOQUlBTWdCaUFUSUFRZ0NHeEJBblJxSUJZZ0NDQURLQUo4UVFKcVFRQVFZaUFJUVFGcUlnZ2dBeWdDZ0FFaUFTQUphMGtOQUFzTElBWkJCR29oQmlBVFFRUnFJUk1nQ2tFQmFpSUtJQVJIRFFBTEN3d0NDd05BUVFBaENnTkFJQUVoQWlBR0lna29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQlNBRUlBTW9BbXdnQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhEQ0FOSUE1QkNFRU1JQUVnQlVzaUN4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQU1JQXhGSUFzYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRU1JQTBnRGtFTVFRZ2dBU0FGU3lJTEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnREVVZ0RDQUxHd3dCQ3lBT0tBSUVDd1IvSUFVZ0JDQUpLQUlFUVJGMlFRUnhJQWxCQkdzaURDZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSUxRWkMrQVdvdEFBQkJBblJxSWcwb0FnQWlEaWdDQUNJQmF5RUZJQXRCa01BQmFpMEFBQ0VMSUFJZ0V5QVVJQXNDZnlBQklBZEJFSFpMQkVBZ0RpZ0NCQ0VSSUEwZ0RrRUlRUXdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRVWdDQzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQVZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FGUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRUZJQkVnRVVVZ0ZSc01BUXNnQnlBQlFSQjBheUVISUFWQmdJQUNjVVVFUUNBT0tBSUVJUkVnRFNBT1FReEJDQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdBVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQUZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUZRUUYwSWdWQmdJQUNTUTBBQ3lBUlJTQVJJQlViREFFTElBNG9BZ1FMSWdGR0d6WUNBQ0FNSUF3b0FnQkJJSEkyQWdBZ0NTQUpLQUlFUVFoeU5nSUVJQVlnQVNBTGMwRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFVZ0JDQURLQUpzSUFaQkEzWWlDMEh2QTNGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCUUovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUXdnRFNBT1FRaEJEQ0FCSUFWTEloRWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdEQ0FNUlNBUkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhEQ0FOSUE1QkRFRUlJQUVnQlVzaUVSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUF4RklBd2dFUnNNQVFzZ0RpZ0NCQXNFZnlBRklBUWdDU2dDQkVFVWRrRUVjU0FKUVFScklnd29BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQUxRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJTktBSUFJZzRvQWdBaUFXc2hCU0FMUVpEQUFXb3RBQUFoQ3lBQ0lCTWdGQ0FMQW44Z0FTQUhRUkIyU3dSQUlBNG9BZ1FoRVNBTklBNUJDRUVNSUFFZ0JVc2lGUnRxS0FJQU5nSUFBMEFDUUNBSURRQWdBeWdDRUNJSVFRRnFJUTRnQ0MwQUFTRUZJQWd0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUlEQUlMSUFNZ0RqWUNFQ0FGUVFsMElBZHFJUWRCQnlFSURBRUxJQU1nRGpZQ0VFRUlJUWdnQlVFSWRDQUhhaUVIQ3lBSVFRRnJJUWdnQjBFQmRDRUhJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhCU0FSSUJGRklCVWJEQUVMSUFjZ0FVRVFkR3NoQnlBRlFZQ0FBbkZGQkVBZ0RpZ0NCQ0VSSUEwZ0RrRU1RUWdnQVNBRlN5SVZHMm9vQWdBMkFnQURRQUpBSUFnTkFDQURLQUlRSWdoQkFXb2hEaUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRZ01BZ3NnQXlBT05nSVFJQUZCQ1hRZ0Iyb2hCMEVISVFnTUFRc2dBeUFPTmdJUVFRZ2hDQ0FCUVFoMElBZHFJUWNMSUFoQkFXc2hDQ0FIUVFGMElRY2dCVUVCZENJRlFZQ0FBa2tOQUFzZ0VVVWdFU0FWR3d3QkN5QU9LQUlFQ3lJQlJoczJBb0FDSUF3Z0RDZ0NBRUdBQW5JMkFnQWdDU0FKS0FJRVFjQUFjallDQkNBR0lBRWdDM05CRm5SeVFZQUJjZ1VnQmd0QmdJQ0FDSEloQmdzQ1FDQUdRWUNJZ01BQWNRMEFJQVpCd1BjQmNVVU5BQ0FGSUFRZ0F5Z0NiQ0FHUVFaMklndEI3d054YWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVUNmeUFCSUFkQkVIWkxCRUFnRGlnQ0JDRU1JQTBnRGtFSVFRd2dBU0FGU3lJUkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFVZ0NDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBVkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUZRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRklBd2dERVVnRVJzTUFRc2dCeUFCUVJCMGF5RUhJQVZCZ0lBQ2NVVUVRQ0FPS0FJRUlRd2dEU0FPUVF4QkNDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0FVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBRkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFNUlNBTUlCRWJEQUVMSUE0b0FnUUxCSDhnQlNBRUlBa29BZ1JCRjNaQkJIRWdDVUVFYXlJTUtBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0MwR3FBWEZ5Y25KeUlndEJrTDRCYWkwQUFFRUNkR29pRFNnQ0FDSU9LQUlBSWdGcklRVWdDMEdRd0FGcUxRQUFJUXNnQWlBVElCUWdDd0ovSUFFZ0IwRVFka3NFUUNBT0tBSUVJUkVnRFNBT1FRaEJEQ0FCSUFWTEloVWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBTW9BaEFpQ0VFQmFpRU9JQWd0QUFFaEJTQUlMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaENBd0NDeUFESUE0MkFoQWdCVUVKZENBSGFpRUhRUWNoQ0F3QkN5QURJQTQyQWhCQkNDRUlJQVZCQ0hRZ0Iyb2hCd3NnQ0VFQmF5RUlJQWRCQVhRaEJ5QUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRVWdFU0FSUlNBVkd3d0JDeUFISUFGQkVIUnJJUWNnQlVHQWdBSnhSUVJBSUE0b0FnUWhFU0FOSUE1QkRFRUlJQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUJRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dBVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBVkJBWFFpQlVHQWdBSkpEUUFMSUJGRklCRWdGUnNNQVFzZ0RpZ0NCQXNpQVVZYk5nS0FCQ0FNSUF3b0FnQkJnQkJ5TmdJQUlBa2dDU2dDQkVHQUJISTJBZ1FnQmlBQklBdHpRUmwwY2tHQUNISUZJQVlMUVlDQWdNQUFjaUVHQ3dKQUlBWkJnTUNBZ0FSeERRQWdCa0dBdkE5eFJRMEFJQVVnQkNBREtBSnNJQVpCQ1hZaUMwSHZBM0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJRSi9JQUVnQjBFUWRrc0VRQ0FPS0FJRUlRd2dEU0FPUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFNb0FoQWlDRUVCYWlFT0lBZ3RBQUVoQlNBSUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQWRCZ1A0RGFpRUhRUWdoQ0F3Q0N5QURJQTQyQWhBZ0JVRUpkQ0FIYWlFSFFRY2hDQXdCQ3lBRElBNDJBaEJCQ0NFSUlBVkJDSFFnQjJvaEJ3c2dDRUVCYXlFSUlBZEJBWFFoQnlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFVZ0RDQU1SU0FSR3d3QkN5QUhJQUZCRUhScklRY2dCVUdBZ0FKeFJRUkFJQTRvQWdRaERDQU5JQTVCREVFSUlBRWdCVXNpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQXlnQ0VDSUlRUUZxSVE0Z0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBTWdEallDRUNBQlFRbDBJQWRxSVFkQkJ5RUlEQUVMSUFNZ0RqWUNFRUVJSVFnZ0FVRUlkQ0FIYWlFSEN5QUlRUUZySVFnZ0IwRUJkQ0VISUFWQkFYUWlCVUdBZ0FKSkRRQUxJQXhGSUF3Z0VSc01BUXNnRGlnQ0JBc0VmeUFGSUFRZ0NTZ0NCRUVhZGtFRWNTQUpRUVJySWd3b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBTFFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlOS0FJQUlnNG9BZ0FpQVdzaEJTQUxRWkRBQVdvdEFBQWhDeUFDSUJNZ0ZDQUxBbjhnQVNBSFFSQjJTd1JBSUE0b0FnUWhFU0FOSUE1QkNFRU1JQUVnQlVzaUZSdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0F5Z0NFQ0lJUVFGcUlRNGdDQzBBQVNFRklBZ3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFSURBSUxJQU1nRGpZQ0VDQUZRUWwwSUFkcUlRZEJCeUVJREFFTElBTWdEallDRUVFSUlRZ2dCVUVJZENBSGFpRUhDeUFJUVFGcklRZ2dCMEVCZENFSElBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEJTQVJJQkZGSUJVYkRBRUxJQWNnQVVFUWRHc2hCeUFGUVlDQUFuRkZCRUFnRGlnQ0JDRVJJQTBnRGtFTVFRZ2dBU0FGU3lJVkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBREtBSVFJZ2hCQVdvaERpQUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBeUFPTmdJUUlBRkJDWFFnQjJvaEIwRUhJUWdNQVFzZ0F5QU9OZ0lRUVFnaENDQUJRUWgwSUFkcUlRY0xJQWhCQVdzaENDQUhRUUYwSVFjZ0JVRUJkQ0lGUVlDQUFra05BQXNnRVVVZ0VTQVZHd3dCQ3lBT0tBSUVDeUlCUmhzMkFvQUdJQXdnRENnQ0FFR0FnQUZ5TmdJQUlBa2dDU2dDQkVHQUlISTJBZ1FnQ1NBSktBS0VBa0VFY2pZQ2hBSWdDU0FKS0FLTUFrRUJjallDakFJZ0NTQUpLQUtJQWlBQklBdHpJZ0ZCRW5SeVFRSnlOZ0tJQWlBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBSklBWTJBZ0FMSUFsQkJHb2hCaUFDUVFScUlRRWdDa0VCYWlJS1FjQUFSdzBBQ3lBSlFReHFJUVlnQWtHRUJtb2hBU0FXUVR4SklCWkJCR29oRmcwQUN3c2dBeUFJTmdJSUlBTWdCVFlDQkNBRElBYzJBZ0FnQXlBTk5nSm9Dd3dDQ3lBalJRUkFRUUVnRzNSQkFYWWhCeUFES0FKOElnUkJBblFpQ2lBREtBSjRha0VNYWlFQklBTW9BblFoQmtFQUlRMGdBeWdDZ0FFaUJVRUVUd1JBSUFSRkRRUWdCRUVNYkNFVElBUkJBM1FoRmtFQUlBZHJJUUlEUUVFQUlRVURRQUpBSUFFaUNTZ0NBQ0lCUlEwQUlBRkJrSUNBQVhGQkVFWUVRQ0FES0FJQUlRRUNRQ0FES0FJSUlnZ05BQ0FCUWY4QlJpRVVJQU1vQWhBaUNDMEFBQ0VCQWtBZ0ZFVUVRQ0FESUFFMkFnQWdBeUFJUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQXlBQk5nSUFJQU1nQ0VFQmFqWUNFRUVISVFnTUFndEIvd0VoQVNBRFFmOEJOZ0lBQzBFSUlRZ0xJQU1nQ0VFQmF5SUlOZ0lJSUFZZ0FpQUhJQUVnQ0haQkFYRWdCaWdDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0F3QUJ5SWdFMkFnQUxJQUZCZ0lHQUNIRkJnQUZHQkVBZ0F5Z0NBQ0VCQWtBZ0F5Z0NDQ0lJRFFBZ0FVSC9BVVloRkNBREtBSVFJZ2d0QUFBaEFRSkFJQlJGQkVBZ0F5QUJOZ0lBSUFNZ0NFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhCQkJ5RUlEQUlMUWY4QklRRWdBMEgvQVRZQ0FBdEJDQ0VJQ3lBRElBaEJBV3NpQ0RZQ0NDQUdJQXBxSWhRZ0FpQUhJQUVnQ0haQkFYRWdGQ2dDQUNJQlFSOTJSaHNnQVdvMkFnQWdDU0FKS0FJQVFZQ0FnQVJ5SWdFMkFnQUxJQUZCZ0lpQXdBQnhRWUFJUmdSQUlBTW9BZ0FoQVFKQUlBTW9BZ2dpQ0EwQUlBRkIvd0ZHSVJRZ0F5Z0NFQ0lJTFFBQUlRRUNRQ0FVUlFSQUlBTWdBVFlDQUNBRElBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQURJQUUyQWdBZ0F5QUlRUUZxTmdJUVFRY2hDQXdDQzBIL0FTRUJJQU5CL3dFMkFnQUxRUWdoQ0FzZ0F5QUlRUUZySWdnMkFnZ2dCaUFXYWlJVUlBSWdCeUFCSUFoMlFRRnhJQlFvQWdBaUFVRWZka1liSUFGcU5nSUFJQWtnQ1NnQ0FFR0FnSUFnY2lJQk5nSUFDeUFCUVlEQWdJQUVjVUdBd0FCSERRQWdBeWdDQUNFQkFrQWdBeWdDQ0NJSURRQWdBVUgvQVVZaEZDQURLQUlRSWdndEFBQWhBUUpBSUJSRkJFQWdBeUFCTmdJQUlBTWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQU1nQVRZQ0FDQURJQWhCQVdvMkFoQkJCeUVJREFJTFFmOEJJUUVnQTBIL0FUWUNBQXRCQ0NFSUN5QURJQWhCQVdzaUNEWUNDQ0FHSUJOcUloUWdBaUFISUFFZ0NIWkJBWEVnRkNnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQ1NBSktBSUFRWUNBZ0lBQ2NqWUNBQXNnQmtFRWFpRUdJQWxCQkdvaEFTQUZRUUZxSWdVZ0JFY05BQXNnQmlBVGFpRUdJQWxCREdvaEFTQU5RUVJxSWcwZ0F5Z0NnQUVpQlVGOGNVa05BQXNMSUFVZ0RVME5BaUFFUlEwQ1FRQWhDa0VBSUFkcklSWWdCU0VKQTBBQ1FDQUpJQTFHQkVBZ0RTRUpEQUVMSUFFb0FnQWhDRUVBSVFJRFFFR1FnSUFCSUFKQkEyd2lDWFFnQ0hGQkVDQUpkRVlFUUNBR0lBSWdCR3hCQW5ScUlRZ2dBeWdDQUNFRkFrQWdBeWdDQ0NJVERRQWdCVUgvQVVjaEZDQURLQUlRSWhNdEFBQWhCUUpBSUJSRkJFQWdCVUdRQVU4RVFFSC9BU0VGSUFOQi93RTJBZ0FNQWdzZ0F5QUZOZ0lBSUFNZ0UwRUJhallDRUVFSElSTU1BZ3NnQXlBRk5nSUFJQU1nRTBFQmFqWUNFQXRCQ0NFVEN5QURJQk5CQVdzaUV6WUNDQ0FJSUJZZ0J5QUZJQk4yUVFGeElBZ29BZ0FpQlVFZmRrWWJJQVZxTmdJQUlBRWdBU2dDQUVHQWdNQUFJQWwwY2lJSU5nSUFJQU1vQW9BQklRVUxJQVVoQ1NBQ1FRRnFJZ0lnQlNBTmEwa05BQXNMSUFaQkJHb2hCaUFCUVFScUlRRWdDa0VCYWlJS0lBUkhEUUFMREFJTElBTW9BbmdoQ0NBREtBSjBJUWtnQXlnQ2dBRWhCUUpBSUFNb0Fud2lGa0hBQUVjTkFDQUZRY0FBUncwQUlBaEJqQUpxSVFWQkFDRVdRUUJCQVNBYmRFRUJkaUlLYXlFVUlBTW9BZ2doQWlBREtBSUVJUVlnQXlnQ0FDRUJJQU1vQW1naERRTkFRUUFoRXdOQUlBa2hCeUFGSWdnb0FnQWlDUVJBSUFVZ0NVR1FnSUFCY1VFUVJnUkFJQVlnR0VFUVFROUJEaUFKUWU4RGNSc2dDVUdBZ01BQWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ0FDSUVRUjkyUmhzZ0JHbzJBZ0FnQ1VHQWdNQUFjaUVKQ3lBSlFZQ0JnQWh4UVlBQlJnUkFJQVlnR0VFUVFROUJEaUFKUWZnZWNSc2dDVUdBZ0lBRWNSdEJBblJxSWcwb0FnQWlCQ2dDQUNJRmF5RUdBbjhnQlNBQlFSQjJTd1JBSUFRb0FnUWhEaUFOSUFSQkNFRU1JQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQU9JQTVGSUF3YkRBRUxJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRkZCRUFnQkNnQ0JDRU9JQTBnQkVFTVFRZ2dCU0FHU3lJTUcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJDQUNMUUFCSVFVZ0FpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dBeUFFTmdJUUlBVkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QUVOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRGtVZ0RpQU1Hd3dCQ3lBRUtBSUVDeUVGSUFjZ0ZDQUtJQVVnQnlnQ2dBSWlCRUVmZGtZYklBUnFOZ0tBQWlBSlFZQ0FnQVJ5SVFrTElBbEJnSWlBd0FCeFFZQUlSZ1JBSUFZZ0dFRVFRUTlCRGlBSlFjRDNBWEViSUFsQmdJQ0FJSEViUVFKMGFpSU5LQUlBSWdRb0FnQWlCV3NoQmdKL0lBVWdBVUVRZGtzRVFDQUVLQUlFSVE0Z0RTQUVRUWhCRENBRklBWkxJZ3diYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVFSUFJdEFBRWhCaUFDTFFBQVFmOEJSZ1JBSUFaQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRElBUTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFRMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnRGlBT1JTQU1Hd3dCQ3lBQklBVkJFSFJySVFFZ0JrR0FnQUp4UlFSQUlBUW9BZ1FoRGlBTklBUkJERUVJSUFVZ0Jrc2lEQnRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUVFnQWkwQUFTRUZJQUl0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFNZ0JEWUNFQ0FGUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQkRZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElBNUZJQTRnREJzTUFRc2dCQ2dDQkFzaEJTQUhJQlFnQ2lBRklBY29Bb0FFSWdSQkgzWkdHeUFFYWpZQ2dBUWdDVUdBZ0lBZ2NpRUpDeUFKUVlEQWdJQUVjVUdBd0FCR0JIOGdCaUFZUVJCQkQwRU9JQWxCZ0x3UGNSc2dDVUdBZ0lDQUFuRWJRUUowYWlJTktBSUFJZ1FvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFka3NFUUNBRUtBSUVJUTRnRFNBRVFRaEJEQ0FGSUFaTElnd2JhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUVJQUl0QUFFaEJpQUNMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnd0NDeUFESUFRMkFoQWdCa0VKZENBQmFpRUJRUWNoQWd3QkN5QURJQVEyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXNnQWtFQmF5RUNJQUZCQVhRaEFTQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRWWdEaUFPUlNBTUd3d0JDeUFCSUFWQkVIUnJJUUVnQmtHQWdBSnhSUVJBSUFRb0FnUWhEaUFOSUFSQkRFRUlJQVVnQmtzaURCdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRUWdBaTBBQVNFRklBSXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQU1nQkRZQ0VDQUZRUWwwSUFGcUlRRkJCeUVDREFFTElBTWdCRFlDRUVFSUlRSWdCVUVJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUE1RklBNGdEQnNNQVFzZ0JDZ0NCQXNoQlNBSElCUWdDaUFGSUFjb0FvQUdJZ1JCSDNaR0d5QUVhallDZ0FZZ0NVR0FnSUNBQW5JRklBa0xOZ0lBQ3lBSVFRUnFJUVVnQjBFRWFpRUpJQk5CQVdvaUUwSEFBRWNOQUFzZ0NFRU1haUVGSUFkQmhBWnFJUWtnRmtFOFNTQVdRUVJxSVJZTkFBc2dBeUFDTmdJSUlBTWdCallDQkNBRElBRTJBZ0FnQXlBTk5nSm9EQUlMUVFFZ0czUkJBWFloRkNBSUlCWkJBblFpRVdwQkRHb2hCeUFES0FJSUlRSWdBeWdDQkNFR0lBTW9BZ0FoQVNBREtBSm9JUTFCQUNFRUFrQWdCVUVFU1EwQUlCWUVRQ0FXUVF4c0lRd2dGa0VEZENFVlFRQWdGR3NoRGdOQVFRQWhFd05BSUFjaUNpZ0NBQ0lJQkVBZ0J5QUlRWkNBZ0FGeFFSQkdCRUFnQmlBWVFSQkJEMEVPSUFoQjd3TnhHeUFJUVlDQXdBQnhHMEVDZEdvaURTZ0NBQ0lIS0FJQUlnVnJJUVlDZnlBRklBRkJFSFpOQkVBZ0FTQUZRUkIwYXlFQklBWkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VMSUEwZ0IwRU1RUWdnQlNBR1N5SVNHMm9vQWdBMkFnQURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hCeUFDTFFBQklRVWdBaTBBQUVIL0FVY0VRQ0FESUFjMkFoQkJDQ0VDSUFWQkNIUWdBV29oQVF3QkN5QUZRWThCVFFSQUlBTWdCellDRUNBRlFRbDBJQUZxSVFGQkJ5RUNEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0MwVWdDeUFTR3d3QkN5QUhLQUlFSVFzZ0RTQUhRUWhCRENBRklBWkxJaEliYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQU1vQWhBaUFrRUJhaUVISUFJdEFBRWhCaUFDTFFBQVFmOEJSd1JBSUFNZ0J6WUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkRBRUxJQVpCandGTkJFQWdBeUFITmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWdzZ0FrRUJheUVDSUFGQkFYUWhBU0FGUVFGMElnVkJnSUFDU1EwQUN5QUZJUVlnQ3lBTFJTQVNHd3NoQlNBSklBNGdGQ0FGSUFrb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJREFBSEloQ0FzZ0NFR0FnWUFJY1VHQUFVWUVRQ0FHSUJoQkVFRVBRUTRnQ0VINEhuRWJJQWhCZ0lDQUJIRWJRUUowYWlJTktBSUFJZ2NvQWdBaUJXc2hCZ0ovSUFVZ0FVRVFkazBFUUNBQklBVkJFSFJySVFFZ0JrR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXNnRFNBSFFReEJDQ0FGSUFaTEloSWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBTW9BaEFpQWtFQmFpRUhJQUl0QUFFaEJTQUNMUUFBUWY4QlJ3UkFJQU1nQnpZQ0VFRUlJUUlnQlVFSWRDQUJhaUVCREFFTElBVkJqd0ZOQkVBZ0F5QUhOZ0lRSUFWQkNYUWdBV29oQVVFSElRSU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQUdRUUYwSWdaQmdJQUNTUTBBQ3lBTFJTQUxJQkliREFFTElBY29BZ1FoQ3lBTklBZEJDRUVNSUFVZ0Jrc2lFaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdBeWdDRUNJQ1FRRnFJUWNnQWkwQUFTRUdJQUl0QUFCQi93RkhCRUFnQXlBSE5nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTUFRc2dCa0dQQVUwRVFDQURJQWMyQWhBZ0JrRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhCaUFMSUF0RklCSWJDeUVGSUFrZ0VXb2lCeUFPSUJRZ0JTQUhLQUlBSWdkQkgzWkdHeUFIYWpZQ0FDQUlRWUNBZ0FSeUlRZ0xJQWhCZ0lpQXdBQnhRWUFJUmdSQUlBWWdHRUVRUVE5QkRpQUlRY0QzQVhFYklBaEJnSUNBSUhFYlFRSjBhaUlOS0FJQUlnY29BZ0FpQldzaEJnSi9JQVVnQVVFUWRrMEVRQ0FCSUFWQkVIUnJJUUVnQmtHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRc2dEU0FIUVF4QkNDQUZJQVpMSWhJYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFNb0FoQWlBa0VCYWlFSElBSXRBQUVoQlNBQ0xRQUFRZjhCUndSQUlBTWdCellDRUVFSUlRSWdCVUVJZENBQmFpRUJEQUVMSUFWQmp3Rk5CRUFnQXlBSE5nSVFJQVZCQ1hRZ0FXb2hBVUVISVFJTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFjb0FnUWhDeUFOSUFkQkNFRU1JQVVnQmtzaUVodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0F5Z0NFQ0lDUVFGcUlRY2dBaTBBQVNFR0lBSXRBQUJCL3dGSEJFQWdBeUFITmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVNQVFzZ0JrR1BBVTBFUUNBRElBYzJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFESUFNb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEJpQUxJQXRGSUJJYkN5RUZJQWtnRldvaUJ5QU9JQlFnQlNBSEtBSUFJZ2RCSDNaR0d5QUhhallDQUNBSVFZQ0FnQ0J5SVFnTElBaEJnTUNBZ0FSeFFZREFBRVlFZnlBR0lCaEJFRUVQUVE0Z0NFR0F2QTl4R3lBSVFZQ0FnSUFDY1J0QkFuUnFJZzBvQWdBaUJ5Z0NBQ0lGYXlFR0FuOGdCU0FCUVJCMlRRUkFJQUVnQlVFUWRHc2hBU0FHUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaEN5QU5JQWRCREVFSUlBVWdCa3NpRWh0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQXlnQ0VDSUNRUUZxSVFjZ0FpMEFBU0VGSUFJdEFBQkIvd0ZIQkVBZ0F5QUhOZ0lRUVFnaEFpQUZRUWgwSUFGcUlRRU1BUXNnQlVHUEFVMEVRQ0FESUFjMkFoQWdCVUVKZENBQmFpRUJRUWNoQWd3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQXRGSUFzZ0Voc01BUXNnQnlnQ0JDRUxJQTBnQjBFSVFRd2dCU0FHU3lJU0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBREtBSVFJZ0pCQVdvaEJ5QUNMUUFCSVFZZ0FpMEFBRUgvQVVjRVFDQURJQWMyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXdCQ3lBR1FZOEJUUVJBSUFNZ0J6WUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQU1nQXlnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFR0lBc2dDMFVnRWhzTElRVWdDU0FNYWlJSElBNGdGQ0FGSUFjb0FnQWlCMEVmZGtZYklBZHFOZ0lBSUFoQmdJQ0FnQUp5QlNBSUN6WUNBQXNnQ2tFRWFpRUhJQWxCQkdvaENTQVRRUUZxSWhNZ0ZrY05BQXNnQ2tFTWFpRUhJQWtnREdvaENTQUVRUVJxSWdRZ0F5Z0NnQUVpQlVGOGNVa05BQXNNQVF0QkJDQUZRWHh4SWdjZ0IwRUVUUnRCQVdzaUIwRjhjVUVFYWlFRUlBZ2dCMEVCZEVGNGNXcEJGR29oQndzZ0F5QUNOZ0lJSUFNZ0JqWUNCQ0FESUFFMkFnQWdBeUFOTmdKb0lCWkZEUUVnQkNBRlR3MEJRUUFoQ2tFQUlCUnJJUXNnQlNFQkEwQUNRQ0FCSUFSR0JFQWdCQ0VCREFFTElBY29BZ0FoQWtFQUlRZ0RRRUdRZ0lBQklBaEJBMndpRFhRZ0FuRkJFQ0FOZEVZRVFDQUpJQWdnRm14QkFuUnFJUTRnQXlBWVFSQkJEMEVPSUFJZ0RYWWlBVUh2QTNFYklBRkJnSURBQUhFYlFRSjBhaUlUTmdKb0lBTWdBeWdDQkNBVEtBSUFJZ0lvQWdBaUFXc2lCVFlDQkFKL0lBRWdBeWdDQUNJR1FSQjJTd1JBSUFJb0FnUWhEQ0FESUFFMkFnUWdFeUFDUVFoQkRDQUJJQVZMSWhFYmFpZ0NBRFlDQUNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnSkJBV29oRXlBQ0xRQUJJUVVnQWkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUdRWUQrQTJvaEJrRUlJUUlNQWdzZ0F5QVROZ0lRSUFWQkNYUWdCbW9oQmtFSElRSU1BUXNnQXlBVE5nSVFRUWdoQWlBRlFRaDBJQVpxSVFZTElBTWdBa0VCYXlJQ05nSUlJQU1nQmtFQmRDSUdOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QU1JQXhGSUJFYkRBRUxJQU1nQmlBQlFSQjBheUlHTmdJQUlBVkJnSUFDY1VVRVFDQUNLQUlFSVF3Z0V5QUNRUXhCQ0NBQklBVkxJaEViYWlnQ0FEWUNBQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdKQkFXb2hFeUFDTFFBQklRRWdBaTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBR1FZRCtBMm9oQmtFSUlRSU1BZ3NnQXlBVE5nSVFJQUZCQ1hRZ0Jtb2hCa0VISVFJTUFRc2dBeUFUTmdJUVFRZ2hBaUFCUVFoMElBWnFJUVlMSUFNZ0FrRUJheUlDTmdJSUlBTWdCa0VCZENJR05nSUFJQU1nQlVFQmRDSUZOZ0lFSUFWQmdJQUNTUTBBQ3lBTVJTQU1JQkViREFFTElBSW9BZ1FMSVFFZ0RpQUxJQlFnQVNBT0tBSUFJZ1ZCSDNaR0d5QUZhallDQUNBSElBY29BZ0JCZ0lEQUFDQU5kSElpQWpZQ0FDQURLQUtBQVNFRkN5QUlRUUZxSWdnZ0JTSUJJQVJyU1EwQUN3c2dCMEVFYWlFSElBbEJCR29oQ1NBS1FRRnFJZ29nRmtjTkFBc01BUXRCQUNFUlFRQWhGQUpBQWtBQ1FBSkFJQU1vQW53aUZrSEFBRWNOQUNBREtBS0FBVUhBQUVjTkFFRUFRUUVnRzNRaUFVRUJkaUFCY2lJT2F5RU1JQU5CNUFCcUlRY2dBMEhnQUdvaENDQURRUnhxSVJZZ0F5Z0NlRUdNQW1vaEJpQURLQUlJSVFRZ0F5Z0NCQ0VCSUFNb0FnQWhBaUFES0FKb0lRa2dBeWdDZENFRklCZEJDSEVOQVFOQVFRQWhGUU5BSUFVaEV3SkFBa0FDZnlBR0lnMG9BZ0FpQmtVRVFDQUJJQWdvQWdBaUJTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQVVvQWdRaENTQUlJQVZCQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUZRUUZxSVFRZ0JTMEFBU0VCSUFVdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSklBbEZJQW9iREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdCU2dDQkNFSklBZ2dCVUVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnWkJBV29oQkNBR0xRQUJJUVVnQmkwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDVVVnQ1NBS0d3d0JDeUFGS0FJRUMwVUVRQ0FJSVFrTUJBc2dBU0FIS0FJQUlnVW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FGS0FJRUlRa2dCeUFGUVFoQkRDQUJJQVpKSWdzYmFpZ0NBQ0lGTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUpJQWxGSUFzYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUpJQWNnQlVFTVFRZ2dBU0FHU1NJTEcyb29BZ0FpQlRZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJpQUVMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBVW9BZ1FMSVFvZ0FTQUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWNnQlVFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ3hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dCeUFGUVF4QkNDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFVb0FnUUxJUVZCQUNFR0lBY2hDUUpBQWtBQ1FBSi9Ba0FDUUNBRklBcEJBWFJ5RGdRQUFRTUZDQXNnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJSktBSUFRUk4yUVFGeGNpSVJRWkMrQVdvdEFBQkJBblJxSWdvb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDeUFLSUFWQkNFRU1JQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lGUVFGcUlRUWdCUzBBQVNFQklBVXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUFvYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQlNnQ0JDRUxJQW9nQlVFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBRktBSUVDeUVGSUJNZ0RpQU1JQVVnRVVHUXdBRnFMUUFBSWdaR0d6WUNBQ0FKSUFrb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQTFCakFKcklna2dDU2dDQUVHQWdBaHlOZ0lBSUExQmhBSnJJZ2tnQ1NnQ0FFR0FnQUp5TmdJQUlBMUJpQUpySWdrZ0NTZ0NBQ0FGSUFaeklnVkJIM1J5UVlDQUJISTJBZ0FnQlVFVGRDQUJJQllnQXlnQ2JDMEFBa0VDZEdvaUNTZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VLSUFrZ0JVRUlRUXdnQVNBR1NTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hDU0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFKTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0VSc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUW9nQ1NBRlFReEJDQ0FCSUFaSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFrMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQWsyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkViREFFTElBVW9BZ1FMSVFWQkVISWlCaUFGUlEwQkdnc2dBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlLS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnQmtFRGRrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ3lnQ0FDSUpLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ1NnQ0JDRVJJQXNnQ1VFSVFRd2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnQ3hzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FKS0FJRUlSRWdDeUFKUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQlNBSkxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBc2JEQUVMSUFrb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ1VZYk5nS0FBaUFLSUFvb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRklBbHpRUlowY2tHQUFYSUxJUVlnQVNBV0lBTW9BbXdnQmtFR2RrSHZBM0ZxTFFBQVFRSjBhaUlLS0FJQUlna29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FKS0FJRUlRc2dDaUFKUVFoQkRDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FLR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQWtvQWdRaEN5QUtJQWxCREVFSUlBRWdCVWtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VGSUFrdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0Noc01BUXNnQ1NnQ0JBdEZEUUVMSUFFZ0ZpQU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBWkJCblpCcWdGeGNuSnljaUlTUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUZheUVCQW44Z0JTQUNRUkIyU3dSQUlBa29BZ1FoRVNBTElBbEJDRUVNSUFFZ0JVa2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUJJQWt0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FSSUJGRklBc2JEQUVMSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0NTZ0NCQ0VSSUFzZ0NVRU1RUWdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0VVVWdFU0FMR3d3QkN5QUpLQUlFQ3lFRklCTWdEaUFNSUFVZ0VrR1F3QUZxTFFBQUlnbEdHellDZ0FRZ0NpQUtLQUlBUVlBUWNqWUNBQ0FOSUEwb0FnUkJnQVJ5TmdJRUlBWWdCU0FKYzBFWmRISkJnQWh5SVFZTElBRWdGaUFES0FKc0lBWkJDWFpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VMSUFrZ0NrRUlRUXdnQVNBRlNTSVJHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQXNnQzBVZ0VSc01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUXNnQ1NBS1FReEJDQ0FCSUFWSkloRWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQkViREFFTElBb29BZ1FMUlEwREN5QUJJQllnRFNnQ0JFRWFka0VFY1NBTlFRUnJJaEVvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FHUVFsMlFhb0JjWEp5Y25JaUMwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzTUFRc0NRQ0FHUVpDQWdBRnhEUUFnQVNBV0lBTW9BbXdnQmtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVJHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRVJzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJFWFpCQkhFZ0RVRUVheUlMS0FJQVFSTjJRUUZ4SUFaQkRuWkJFSEVnQmtFUWRrSEFBSEVnQmtHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVFZ2NqWUNBQ0FOSUEwb0FnUkJDSEkyQWdRZ0RVR01BbXNpQ3lBTEtBSUFRWUNBQ0hJMkFnQWdEVUdFQW1zaUN5QUxLQUlBUVlDQUFuSTJBZ0FnRFVHSUFtc2lDeUFMS0FJQUlBVWdDbk1pQlVFZmRISkJnSUFFY2pZQ0FDQUdJQVZCRTNSeVFSQnlJUVlMQWtBZ0JrR0FnWUFJY1EwQUlBRWdGaUFES0FKc0lBWkJBM1lpRVVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCV3NoQVFKL0lBVWdBa0VRZGtzRVFDQUtLQUlFSVFzZ0NTQUtRUWhCRENBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ3lBTFJTQVNHd3dCQ3lBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0JVa2lFaHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUZJQVF0QUFCQi93RkdCRUFnQlVHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRWhzTUFRc2dDaWdDQkF0RkRRQWdBU0FXSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlMS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnRVVHcUFYRnljbkp5SWhKQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFUklBa2dDa0VJUVF3Z0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUJFZ0VVVWdEeHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVJFZ0NTQUtRUXhCQ0NBQklBVkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVJSU0FSSUE4YkRBRUxJQW9vQWdRTElRVWdFeUFPSUF3Z0JTQVNRWkRBQVdvdEFBQWlDa1liTmdLQUFpQUxJQXNvQWdCQmdBSnlOZ0lBSUEwZ0RTZ0NCRUhBQUhJMkFnUWdCaUFGSUFwelFSWjBja0dBQVhJaEJnc0NRQ0FHUVlDSWdNQUFjUTBBSUFFZ0ZpQURLQUpzSUFaQkJuWWlFVUh2QTNGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFWSkloSWJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBU0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFvb0FnUWhDeUFKSUFwQkRFRUlJQUVnQlVraUVodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dFaHNNQVFzZ0NpZ0NCQXRGRFFBZ0FTQVdJQTBvQWdSQkYzWkJCSEVnRFVFRWF5SUxLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFVUdxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VSSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUkVnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNrWWJOZ0tBQkNBTElBc29BZ0JCZ0JCeU5nSUFJQTBnRFNnQ0JFR0FCSEkyQWdRZ0JpQUZJQXB6UVJsMGNrR0FDSEloQmdzZ0JrR0F3SUNBQkhFTkFTQUJJQllnQXlnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMEJJQUVnRmlBTktBSUVRUnAyUVFSeElBMUJCR3NpRVNnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUJKQnFnRnhjbkp5Y2lJTFFaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXdzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlSSWdDU0FLUVFoQkRDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0VpQVNSU0FQR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEVpQUpJQXBCREVFSUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQkpGSUJJZ0R4c01BUXNnQ2lnQ0JBc2hCU0FUSUE0Z0RDQUZJQXRCa01BQmFpMEFBQ0lLUmhzMkFvQUdJQkVnRVNnQ0FFR0FnQUZ5TmdJQUlBMGdEU2dDQkVHQUlISTJBZ1FnQlNBS2N5SUZRUngwSUFaeUlBMGdEU2dDaEFKQkJISTJBb1FDSUEwZ0RTZ0NqQUpCQVhJMkFvd0NJQTBnRFNnQ2lBSWdCVUVTZEhKQkFuSTJBb2dDUVlEQUFISWhCZ3NnRFNBR1FmLy8vN1o3Y1RZQ0FBc2dEVUVFYWlFR0lCTkJCR29oQlNBVlFRRnFJaFZCd0FCSERRQUxJQTFCREdvaEJpQVRRWVFHYWlFRklCUkJQRWtnRkVFRWFpRVVEUUFMREFJTFFRRWdHM1FpQVVFQmRpQUJjaUVPSUFNb0FuZ2lCeUFXUVFKMGFrRU1haUVGSUFNb0FvQUJJUVlnQXlnQ0NDRUVJQU1vQWdRaEFTQURLQUlBSVFJZ0F5Z0NhQ0VKSUFNb0FuUWhFeUFYUVFoeEJFQUNRQ0FHUVFSSkRRQWdGZ1JBSUFOQjVBQnFJUWdnQTBIZ0FHb2hEU0FXUVF4c0lTUWdGa0VEZENFY1FRQWdEbXNoRlNBRFFSeHFJUXdEUUVFQUlSSURRQUpBQWtBQ2Z5QUZJZ2NvQWdBaUJRUkFBa0FnQlVHUWdJQUJjUTBBSUFFZ0RDQURLQUpzSUFWQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFTElBa2dDa0VNUVFnZ0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDMFVnQ3lBUEd3d0JDeUFLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVpKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0N5QUxSU0FQR3d0RkRRQWdBU0FNSUFjb0FnUkJFWFpCQkhFZ0IwRUVheUlMS0FJQVFSTjJRUUZ4SUFWQkRuWkJFSEVnQlVFUWRrSEFBSEVnQlVHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFUElBa2dDa0VNUVFnZ0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVlnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBZkd3d0JDeUFLS0FJRUlROGdDU0FLUVFoQkRDQUJJQVpKSWg4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FmR3dzaEJpQVRJQTRnRlNBR0lCbEJrTUFCYWkwQUFDSUtSaHMyQWdBZ0N5QUxLQUlBUVNCeU5nSUFJQWNnQnlnQ0JFRUljallDQkNBRklBWWdDbk5CRTNSeVFSQnlJUVVMQWtBZ0JVR0FnWUFJY1EwQUlBRWdEQ0FES0FKc0lBVkJBM1lpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVVka0VFY1NBSFFRUnJJZ3NvQWdCQkZuWkJBWEVnQlVFUGRrRVFjU0FGUVJOMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdGa0VDZEdvZ0RpQVZJQVlnR1VHUXdBRnFMUUFBSWdwR0d6WUNBQ0FMSUFzb0FnQkJnQUp5TmdJQUlBY2dCeWdDQkVIQUFISTJBZ1FnQlNBR0lBcHpRUlowY2tHQUFYSWhCUXNDUUNBRlFZQ0lnTUFBY1EwQUlBRWdEQ0FES0FKc0lBVkJCbllpRDBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJaGtiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJrYkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpR1J0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQmtiQzBVTkFDQUJJQXdnQnlnQ0JFRVhka0VFY1NBSFFRUnJJZ3NvQWdCQkdYWkJBWEVnQlVFU2RrRVFjU0FGUVJaMlFjQUFjU0FQUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUxJQXNvQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFwelFSbDBja0dBQ0hJaEJRc2dCVUdBd0lDQUJIRU5BaUFCSUF3Z0F5Z0NiQ0FGUVFsMklnOUI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FHU1NJWkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVpHd3dCQ3lBS0tBSUVJUXNnQ1NBS1FRaEJEQ0FCSUFaSkloa2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBWkd3dEZEUUlnQVNBTUlBY29BZ1JCR25aQkJIRWdCMEVFYXlJTEtBSUFRUngyUVFGeElBVkJGWFpCRUhFZ0JVRVpka0hBQUhFZ0QwR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackRBRUxJQUVnRFNnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQTBnQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUtHd3dCQ3lBR0tBSUVJUWtnRFNBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBS0d3dEZCRUFnRFNFSkRBTUxJQUVnQ0NnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0FpQmpZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQXNiREFFTElBWW9BZ1FoQ1NBSUlBWkJDRUVNSUFFZ0JVa2lDeHRxS0FJQUlnWTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFrZ0NVVWdDeHNMSVFvZ0FTQUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUpJQWdnQmtFTVFRZ2dBU0FGU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQUxHd3dCQ3lBR0tBSUVJUWtnQ0NBR1FRaEJEQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDU0FKUlNBTEd3c2hCa0VBSVFVZ0NDRUpBa0FDUUFKQUFuOENRQUpBSUFZZ0NrRUJkSElPQkFBQkF3VUhDeUFCSUF3Z0J5Z0NCRUVSZGtFRWNTQUhRUVJySWdrb0FnQkJFM1pCQVhGeUlnOUJrTDRCYWkwQUFFRUNkR29pQ2lnQ0FDSUdLQUlBSWdWcklRRUNmeUFGSUFKQkVIWk5CRUFnQWlBRlFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUxJQW9nQmtFTVFRZ2dBU0FGU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1pCQVdvaEJDQUdMUUFCSVFVZ0JpMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3dCQ3lBRlFZOEJUUVJBSUFNZ0JEWUNFQ0FGUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBR0tBSUVJUXNnQ2lBR1FRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3c2hCU0FUSUE0Z0ZTQUZJQTlCa01BQmFpMEFBQ0lHUmhzMkFnQWdDU0FKS0FJQVFTQnlOZ0lBSUFjZ0J5Z0NCRUVJY2pZQ0JDQUZJQVp6UVJOMElBRWdEQ0FES0FKc0xRQUNRUUowYWlJSktBSUFJZ1lvQWdBaUJXc2hBUUovSUFVZ0FrRVFkazBFUUNBQ0lBVkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUW9nQ1NBR1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJ3UkFJQU1nQ1RZQ0VFRUlJUVFnQlVFSWRDQUNhaUVDREFFTElBVkJqd0ZOQkVBZ0F5QUpOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQThiREFFTElBWW9BZ1FoQ2lBSklBWkJDRUVNSUFFZ0JVa2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQURJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQVZCQVhRaUJVR0FnQUpKRFFBTElBVWhBU0FLSUFwRklBOGJDeUVHUVJCeUlnVWdCa1VOQVJvTElBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDaWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQVZCQTNaQnFnRnhjbkp5Y2lJWlFaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FKS0FJRURBSUxJQWtvQWdRaER5QUxJQWxCREVFSUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VHSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FESUFRMkFoQWdCa0VKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTlGSUE4Z0N4c01BUXNnQ1NnQ0JDRVBJQXNnQ1VFSVFRd2dBU0FHU1NJTEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFFZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFNZ0JEWUNFQ0FCUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBOGdEMFVnQ3hzTElRWWdFeUFXUVFKMGFpQU9JQlVnQmlBWlFaREFBV290QUFBaUNVWWJOZ0lBSUFvZ0NpZ0NBRUdBQW5JMkFnQWdCeUFIS0FJRVFjQUFjallDQkNBRklBWWdDWE5CRm5SeVFZQUJjZ3NoQlNBQklBd2dBeWdDYkNBRlFRWjJRZThEY1dvdEFBQkJBblJxSWdvb0FnQWlDU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFR0lBa3RBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBUTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQ0VMSUFvZ0NVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVY0VRQ0FESUFRMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc0xSUTBCQ3lBQklBd2dCeWdDQkVFWGRrRUVjU0FIUVFScklnb29BZ0JCR1haQkFYRWdCVUVTZGtFUWNTQUZRUloyUWNBQWNTQUZRUVoyUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUxLQUlBSWdrb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDU2dDQkF3Q0N5QUpLQUlFSVE4Z0N5QUpRUXhCQ0NBQklBWkpJZ3NiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUNVRUJhaUVFSUFrdEFBRWhCaUFKTFFBQVFmOEJSd1JBSUFNZ0JEWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFFTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUFzYkRBRUxJQWtvQWdRaER5QUxJQWxCQ0VFTUlBRWdCa2tpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZIQkVBZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQXNiQ3lFR0lCTWdIR29nRGlBVklBWWdHVUdRd0FGcUxRQUFJZ2xHR3pZQ0FDQUtJQW9vQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCU0FHSUFselFSbDBja0dBQ0hJaEJRc2dBU0FNSUFNb0Ftd2dCVUVKZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFnc2dBU0FNSUFjb0FnUkJHblpCQkhFZ0IwRUVheUlMS0FJQVFSeDJRUUZ4SUFWQkZYWkJFSEVnQlVFWmRrSEFBSEVnQlVFSmRrR3FBWEZ5Y25KeUlnOUJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdackN5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhHU0FKSUFwQkRFRUlJQUVnQmtraUh4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFR0lBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRElBbzJBaEFnQmtFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUJsRklCa2dIeHNNQVFzZ0NpZ0NCQ0VaSUFrZ0NrRUlRUXdnQVNBR1NTSWZHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVY0VRQ0FESUFvMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQmtnR1VVZ0h4c0xJUVlnRXlBa2FpQU9JQlVnQmlBUFFaREFBV290QUFBaUNrWWJOZ0lBSUFzZ0N5Z0NBRUdBZ0FGeU5nSUFJQWNnQnlnQ0JFR0FJSEkyQWdRZ0JpQUtjeUlHUVJ4MElBVnlJQU1vQW54QkFuUWdCMm9pQlNBRktBSUVRUVJ5TmdJRUlBVWdCU2dDREVFQmNqWUNEQ0FGSUFVb0FnZ2dCa0VTZEhKQkFuSTJBZ2hCZ01BQWNpRUZDeUFISUFWQi8vLy90bnR4TmdJQUN5QUhRUVJxSVFVZ0UwRUVhaUVUSUJKQkFXb2lFaUFXUncwQUN5QUhRUXhxSVFVZ0V5QWthaUVUSUJSQkJHb2lGQ0FES0FLQUFTSUdRWHh4U1EwQUN3d0JDMEVFSUFaQmZIRWlCU0FGUVFSTkcwRUJheUlGUVh4eFFRUnFJUlFnQnlBRlFRRjBRWGh4YWtFVWFpRUZDeUFESUFRMkFnZ2dBeUFCTmdJRUlBTWdBallDQUNBRElBazJBbWdnRmtVTkF5QUdJQlJORFFNRFFFRUFJUVFnRkNBREtBS0FBVWNFUUFOQUlBTWdCU0FUSUFRZ0ZteEJBblJxSUE0Z0JFRUJFR0VnQkVFQmFpSUVJQU1vQW9BQklCUnJTUTBBQ3dzZ0JTQUZLQUlBUWYvLy83WjdjVFlDQUNBVFFRUnFJUk1nQlVFRWFpRUZJQkZCQVdvaUVTQVdSdzBBQ3d3REN3SkFJQVpCQkVrTkFDQVdCRUFnQTBIa0FHb2hDQ0FEUWVBQWFpRU5JQlpCREd3aEpDQVdRUU4wSVJ4QkFDQU9heUVWSUFOQkhHb2hEQU5BUVFBaEVnTkFBa0FDUUFKL0lBVWlCeWdDQUNJRkJFQUNRQ0FGUVpDQWdBRnhEUUFnQVNBTUlBTW9BbXdnQlVIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBWkpJZzhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUE4YkRBRUxJQW9vQWdRaEN5QUpJQXBCQ0VFTUlBRWdCa2tpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTElBdEZJQThiQzBVTkFDQUJJQXdnQnlnQ0JFRVJka0VFY1NBSFFRUnJJZ3NvQWdCQkUzWkJBWEVnQlVFT2RrRVFjU0FGUVJCMlFjQUFjU0FGUWFvQmNYSnljbklpR1VHUXZnRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE4Z0NTQUtRUXhCQ0NBQklBWkpJaDhiYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCaUFFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdBeUFLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVBSU0FQSUI4YkRBRUxJQW9vQWdRaER5QUpJQXBCQ0VFTUlBRWdCa2tpSHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZIQkVBZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FESUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRUN5QUVRUUZySVFRZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBUElBOUZJQjhiQ3lFS0lCTWdEaUFWSUFvZ0dVR1F3QUZxTFFBQUlnOUdHellDQUNBTElBc29BZ0JCSUhJMkFnQWdCeUFIS0FJRVFRaHlOZ0lFSUFkQmZpQURLQUo4YTBFQ2RHb2lCaUFHS0FJRVFZQ0FBbkkyQWdRZ0JpQUdLQUlBSUFvZ0QzTWlDa0VmZEhKQmdJQUVjallDQUNBR1FRUnJJZ1lnQmlnQ0FFR0FnQWh5TmdJQUlBVWdDa0VUZEhKQkVISWhCUXNDUUNBRlFZQ0JnQWh4RFFBZ0FTQU1JQU1vQW13Z0JVRURkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDeWdDQUVFV2RrRUJjU0FGUVE5MlFSQnhJQVZCRTNaQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QVdRUUowYWlBT0lCVWdCaUFaUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFR0FBbkkyQWdBZ0J5QUhLQUlFUWNBQWNqWUNCQ0FGSUFZZ0NuTkJGblJ5UVlBQmNpRUZDd0pBSUFWQmdJaUF3QUJ4RFFBZ0FTQU1JQU1vQW13Z0JVRUdkaUlQUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lHUnRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnR1JzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0laRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdHUnNMUlEwQUlBRWdEQ0FIS0FJRVFSZDJRUVJ4SUFkQkJHc2lDeWdDQUVFWmRrRUJjU0FGUVJKMlFSQnhJQVZCRm5aQndBQnhJQTlCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRHlBSklBcEJERUVJSUFFZ0Jra2lIeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnSHhzTUFRc2dDaWdDQkNFUElBa2dDa0VJUVF3Z0FTQUdTU0lmRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdIeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDa1liTmdJQUlBc2dDeWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ25OQkdYUnlRWUFJY2lFRkN5QUZRWURBZ0lBRWNRMENJQUVnRENBREtBSnNJQVZCQ1hZaUQwSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVpKSWhrYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQmlBRUxRQUFRZjhCUndSQUlBTWdDallDRUVFSUlRUWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQXlBS05nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCa2JEQUVMSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQmtraUdSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUxJQXRGSUJrYkMwVU5BaUFCSUF3Z0J5Z0NCRUVhZGtFRWNTQUhRUVJySWdzb0FnQkJISFpCQVhFZ0JVRVZka0VRY1NBRlFSbDJRY0FBY1NBUFFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTUFRc2dBU0FOS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dEU0FHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFZb0FnUWhDU0FOSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFvYkMwVUVRQ0FOSVFrTUF3c2dBU0FJS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBQ0lHTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFRklBUXRBQUJCL3dGSEJFQWdBeUFLTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JpZ0NCQ0VKSUFnZ0JrRUlRUXdnQVNBRlNTSUxHMm9vQWdBaUJqWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhBU0FFTFFBQVFmOEJSd1JBSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkFzZ0JFRUJheUVFSUFKQkFYUWhBaUFGUVFGMElnVkJnSUFDU1EwQUN5QUZJUUVnQ1NBSlJTQUxHd3NoQ2lBQklBWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dDQ0FHUVF4QkNDQUJJQVZKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBc2JEQUVMSUFZb0FnUWhDU0FJSUFaQkNFRU1JQUVnQlVraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUpJQWxGSUFzYkN5RUdRUUFoQlNBSUlRa0NRQUpBQWtBQ2Z3SkFBa0FnQmlBS1FRRjBjZzRFQUFFREJRY0xJQUVnRENBSEtBSUVRUkYyUVFSeElBZEJCR3NpQ1NnQ0FFRVRka0VCY1hJaUQwR1F2Z0ZxTFFBQVFRSjBhaUlLS0FJQUlnWW9BZ0FpQldzaEFRSi9JQVVnQWtFUWRrMEVRQ0FDSUFWQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRc2dDaUFHUVF4QkNDQUJJQVZKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNEQUVMSUFWQmp3Rk5CRUFnQXlBRU5nSVFJQVZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUFZb0FnUWhDeUFLSUFaQkNFRU1JQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRElBUTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUFvYkN5RUdJQk1nRGlBVklBWWdEMEdRd0FGcUxRQUFJZ3BHR3pZQ0FDQUpJQWtvQWdCQklISTJBZ0FnQnlBSEtBSUVRUWh5TmdJRUlBZEJmaUFES0FKOGEwRUNkR29pQlNBRktBSUVRWUNBQW5JMkFnUWdCU0FGS0FJQUlBWWdDbk1pQmtFZmRISkJnSUFFY2pZQ0FDQUZRUVJySWdVZ0JTZ0NBRUdBZ0FoeU5nSUFJQVpCRTNRZ0FTQU1JQU1vQW13dEFBSkJBblJxSWdrb0FnQWlCaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJUUVJBSUFJZ0JVRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhDaUFKSUFaQkRFRUlJQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRa2dCaTBBQVNFRklBWXRBQUJCL3dGSEJFQWdBeUFKTmdJUVFRZ2hCQ0FGUVFoMElBSnFJUUlNQVFzZ0JVR1BBVTBFUUNBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEeHNNQVFzZ0JpZ0NCQ0VLSUFrZ0JrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdaQkFXb2hDU0FHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FESUFrMkFoQkJDQ0VFSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBTWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQW9nQ2tVZ0R4c0xJUVpCRUhJaUJTQUdSUTBCR2dzZ0FTQU1JQWNvQWdSQkZIWkJCSEVnQjBFRWF5SUtLQUlBUVJaMlFRRnhJQVZCRDNaQkVIRWdCVUVUZGtIQUFIRWdCVUVEZGtHcUFYRnljbkp5SWhsQmtMNEJhaTBBQUVFQ2RHb2lDeWdDQUNJSktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWtvQWdRTUFnc2dDU2dDQkNFUElBc2dDVUVNUVFnZ0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVlnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQU1nQkRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEMFVnRHlBTEd3d0JDeUFKS0FJRUlROGdDeUFKUVFoQkRDQUJJQVpKSWdzYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlDVUVCYWlFRUlBa3RBQUVoQVNBSkxRQUFRZjhCUndSQUlBTWdCRFlDRUVFSUlRUWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBc2dCRUVCYXlFRUlBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0R5QVBSU0FMR3dzaEJpQVRJQlpCQW5ScUlBNGdGU0FHSUJsQmtNQUJhaTBBQUNJSlJoczJBZ0FnQ2lBS0tBSUFRWUFDY2pZQ0FDQUhJQWNvQWdSQndBQnlOZ0lFSUFVZ0JpQUpjMEVXZEhKQmdBRnlDeUVGSUFFZ0RDQURLQUpzSUFWQkJuWkI3d054YWkwQUFFRUNkR29pQ2lnQ0FDSUpLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRUxJQW9nQ1VFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ2xCQVdvaEJDQUpMUUFCSVFZZ0NTMEFBRUgvQVVjRVFDQURJQVEyQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0JEWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJ3UkFJQU1nQkRZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUVOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDeUFMUlNBS0d3dEZEUUVMSUFFZ0RDQUhLQUlFUVJkMlFRUnhJQWRCQkdzaUNpZ0NBRUVaZGtFQmNTQUZRUkoyUVJCeElBVkJGblpCd0FCeElBVkJCblpCcWdGeGNuSnljaUlaUVpDK0FXb3RBQUJCQW5ScUlnc29BZ0FpQ1NnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUpLQUlFREFJTElBa29BZ1FoRHlBTElBbEJERUVJSUFFZ0Jra2lDeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJSlFRRnFJUVFnQ1MwQUFTRUdJQWt0QUFCQi93RkhCRUFnQXlBRU5nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQVEyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBOUZJQThnQ3hzTUFRc2dDU2dDQkNFUElBc2dDVUVJUVF3Z0FTQUdTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUUVnQ1MwQUFFSC9BVWNFUUNBRElBUTJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQkRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUE4Z0QwVWdDeHNMSVFZZ0V5QWNhaUFPSUJVZ0JpQVpRWkRBQVdvdEFBQWlDVVliTmdJQUlBb2dDaWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUZJQVlnQ1hOQkdYUnlRWUFJY2lFRkN5QUJJQXdnQXlnQ2JDQUZRUWwyUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoQ3lBSklBcEJERUVJSUFFZ0Jra2lEeHRxS0FJQU5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkhCRUFnQXlBS05nSVFRUWdoQkNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQURJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBdEZJQXNnRHhzTUFRc2dDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUdTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVWNFUUNBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFzZ0MwVWdEeHNMUlEwQ0N5QUJJQXdnQnlnQ0JFRWFka0VFY1NBSFFRUnJJZ3NvQWdCQkhIWkJBWEVnQlVFVmRrRVFjU0FGUVJsMlFjQUFjU0FGUVFsMlFhb0JjWEp5Y25JaUQwR1F2Z0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQm1zTElRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVpJQWtnQ2tFTVFRZ2dBU0FHU1NJZkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFZZ0JDMEFBRUgvQVVjRVFDQURJQW8yQWhCQkNDRUVJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnR1VVZ0dTQWZHd3dCQ3lBS0tBSUVJUmtnQ1NBS1FRaEJEQ0FCSUFaSkloOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEFTQUVMUUFBUWY4QlJ3UkFJQU1nQ2pZQ0VFRUlJUVFnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXNnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdHU0FaUlNBZkd3c2hCaUFUSUNScUlBNGdGU0FHSUE5QmtNQUJhaTBBQUNJS1JoczJBZ0FnQ3lBTEtBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBR0lBcHpJZ1pCSEhRZ0JYSWdBeWdDZkVFQ2RDQUhhaUlGSUFVb0FnUkJCSEkyQWdRZ0JTQUZLQUlNUVFGeU5nSU1JQVVnQlNnQ0NDQUdRUkowY2tFQ2NqWUNDRUdBd0FCeUlRVUxJQWNnQlVILy8vKzJlM0UyQWdBTElBZEJCR29oQlNBVFFRUnFJUk1nRWtFQmFpSVNJQlpIRFFBTElBZEJER29oQlNBVElDUnFJUk1nRkVFRWFpSVVJQU1vQW9BQklnWkJmSEZKRFFBTERBRUxRUVFnQmtGOGNTSUZJQVZCQkUwYlFRRnJJZ1ZCZkhGQkJHb2hGQ0FISUFWQkFYUkJlSEZxUVJScUlRVUxJQU1nQkRZQ0NDQURJQUUyQWdRZ0F5QUNOZ0lBSUFNZ0NUWUNhQ0FXUlEwQ0lBWWdGRTBOQWdOQVFRQWhCQ0FVSUFNb0FvQUJSd1JBQTBBZ0F5QUZJQk1nQkNBV2JFRUNkR29nRGlBRVFRQVFZU0FFUVFGcUlnUWdBeWdDZ0FFZ0ZHdEpEUUFMQ3lBRklBVW9BZ0JCLy8vL3RudHhOZ0lBSUJOQkJHb2hFeUFGUVFScUlRVWdFVUVCYWlJUklCWkhEUUFMREFJTEEwQkJBQ0VWQTBBZ0JTRVRBa0FDUUFKL0lBWWlEU2dDQUNJR1JRUkFJQUVnQ0NnQ0FDSUZLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQlNnQ0JDRUpJQWdnQlVFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1ZCQVdvaEJDQUZMUUFCSVFFZ0JTMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFFTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUVOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FGS0FJRUlRa2dDQ0FGUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFRUlBWXRBQUVoQlNBR0xRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQVEyQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBUTJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFVb0FnUUxSUVJBSUFnaENRd0VDeUFCSUFjb0FnQWlCU2dDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFVb0FnUWhDU0FISUFWQkNFRU1JQUVnQmtraUN4dHFLQUlBSWdVMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWtnQ1VVZ0N4c01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUWtnQnlBRlFReEJDQ0FCSUFaSklnc2JhaWdDQUNJRk5nSUFBMEFDUUNBRURRQWdBeWdDRUNJRVFRRnFJUW9nQkMwQUFTRUdJQVF0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FESUFNb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUVEQUlMSUFNZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRURBRUxJQU1nQ2pZQ0VFRUlJUVFnQmtFSWRDQUNhaUVDQ3lBRVFRRnJJUVFnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBbEZJQWtnQ3hzTUFRc2dCU2dDQkFzaENpQUJJQVVvQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBRktBSUVJUWtnQnlBRlFRaEJEQ0FCSUFaSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQlVFQmFpRUVJQVV0QUFFaEFTQUZMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDU0FKUlNBTEd3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFVb0FnUWhDU0FISUFWQkRFRUlJQUVnQmtraUN4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lHUVFGcUlRUWdCaTBBQVNFRklBWXRBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDeHNNQVFzZ0JTZ0NCQXNoQlVFQUlRWWdCeUVKQWtBQ1FBSkFBbjhDUUFKQUlBVWdDa0VCZEhJT0JBQUJBd1VJQ3lBQklCWWdEU2dDQkVFUmRrRUVjU0FOUVFScklna29BZ0JCRTNaQkFYRnlJaEZCa0w0QmFpMEFBRUVDZEdvaUNpZ0NBQ0lGS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0JTZ0NCQ0VMSUFvZ0JVRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdWQkFXb2hCQ0FGTFFBQklRRWdCUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXNnQzBVZ0Noc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBRktBSUVJUXNnQ2lBRlFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQmtFQmFpRUVJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTFJTQUxJQW9iREFFTElBVW9BZ1FMSVFVZ0V5QU9JQXdnQlNBUlFaREFBV290QUFBaUJrWWJOZ0lBSUFrZ0NTZ0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnQlNBR2MwRVRkQ0FCSUJZZ0F5Z0NiQzBBQWtFQ2RHb2lDU2dDQUNJRktBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTEJFQWdCU2dDQkNFS0lBa2dCVUVJUVF3Z0FTQUdTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnVkJBV29oQ1NBRkxRQUJJUUVnQlMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBSk5nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdFUnNNQVFzZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUZLQUlFSVFvZ0NTQUZRUXhCQ0NBQklBWkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJrRUJhaUVKSUFZdEFBRWhCU0FHTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBazJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFrMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJFYkRBRUxJQVVvQWdRTElRVkJFSElpQmlBRlJRMEJHZ3NnQVNBV0lBMG9BZ1JCRkhaQkJIRWdEVUVFYXlJS0tBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0JrRURka0dxQVhGeWNuSnlJaEpCa0w0QmFpMEFBRUVDZEdvaUN5Z0NBQ0lKS0FJQUlnVnJJUUVDZnlBRklBSkJFSFpMQkVBZ0NTZ0NCQ0VSSUFzZ0NVRUlRUXdnQVNBRlNTSUxHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdsQkFXb2hCQ0FKTFFBQklRRWdDUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBRU5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFFTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQkVnRVVVZ0N4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSktBSUVJUkVnQ3lBSlFReEJDQ0FCSUFWSklnc2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEJTQUpMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBUlJTQVJJQXNiREFFTElBa29BZ1FMSVFVZ0V5QU9JQXdnQlNBU1FaREFBV290QUFBaUNVWWJOZ0tBQWlBS0lBb29BZ0JCZ0FKeU5nSUFJQTBnRFNnQ0JFSEFBSEkyQWdRZ0JpQUZJQWx6UVJaMGNrR0FBWElMSVFZZ0FTQVdJQU1vQW13Z0JrRUdka0h2QTNGcUxRQUFRUUowYWlJS0tBSUFJZ2tvQWdBaUJXc2hBUUovSUFVZ0FrRVFka3NFUUNBSktBSUVJUXNnQ2lBSlFRaEJEQ0FCSUFWSklnb2JhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQ1VFQmFpRUVJQWt0QUFFaEFTQUpMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFRMkFoQWdBVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQVEyQWhCQkNDRUVJQUZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUZRUUYwSWdWQmdJQUNTUTBBQ3lBRklRRWdDeUFMUlNBS0d3d0JDeUFDSUFWQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFrb0FnUWhDeUFLSUFsQkRFRUlJQUVnQlVraUNodHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lKUVFGcUlRUWdDUzBBQVNFRklBa3RBQUJCL3dGR0JFQWdCVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQkRZQ0VDQUZRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdCRFlDRUVFSUlRUWdCVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0NTZ0NCQXRGRFFFTElBRWdGaUFOS0FJRVFSZDJRUVJ4SUExQkJHc2lDaWdDQUVFWmRrRUJjU0FHUVJKMlFSQnhJQVpCRm5aQndBQnhJQVpCQm5aQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ3NvQWdBaUNTZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQWtvQWdRaEVTQUxJQWxCQ0VFTUlBRWdCVWtpQ3h0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUpRUUZxSVFRZ0NTMEFBU0VCSUFrdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdCRFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0JEWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQXNiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDU2dDQkNFUklBc2dDVUVNUVFnZ0FTQUZTU0lMRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnbEJBV29oQkNBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUVOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBRU5nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBTEd3d0JDeUFKS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ2xHR3pZQ2dBUWdDaUFLS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBSmMwRVpkSEpCZ0FoeUlRWUxJQUVnRmlBREtBSnNJQVpCQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lSRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFUnNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEViYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJFYkRBRUxJQW9vQWdRTFJRMERDeUFCSUJZZ0RTZ0NCRUVhZGtFRWNTQU5RUVJySWhFb0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBR1FRbDJRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc01BUXNDUUNBR1FaQ0FnQUZ4RFFBZ0FTQVdJQU1vQW13Z0JrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnb29BZ0FpQldzaEFRSi9JQVVnQWtFUWRrc0VRQ0FLS0FJRUlRc2dDU0FLUVFoQkRDQUJJQVZKSWhFYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQVNBRUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBRkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBRlFRRjBJZ1ZCZ0lBQ1NRMEFDeUFGSVFFZ0N5QUxSU0FSR3d3QkN5QUNJQVZCRUhScklRSWdBVUdBZ0FKeFJRUkFJQW9vQWdRaEN5QUpJQXBCREVFSUlBRWdCVWtpRVJ0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VGSUFRdEFBQkIvd0ZHQkVBZ0JVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBRlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0JVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXRGSUFzZ0VSc01BUXNnQ2lnQ0JBdEZEUUFnQVNBV0lBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJTEtBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkJrTDRCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRVJJQWtnQ2tFSVFRd2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklCRWdFVVVnRHhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlSRWdDU0FLUVF4QkNDQUJJQVZKSWc4YmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFSUlNBUklBOGJEQUVMSUFvb0FnUUxJUVVnRXlBT0lBd2dCU0FTUVpEQUFXb3RBQUFpQ2tZYk5nSUFJQXNnQ3lnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdCaUFGSUFwelFSTjBja0VRY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FCSUJZZ0F5Z0NiQ0FHUVFOMkloRkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdWcklRRUNmeUFGSUFKQkVIWkxCRUFnQ2lnQ0JDRUxJQWtnQ2tFSVFRd2dBU0FGU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFFZ0JDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUJRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0JVRUJkQ0lGUVlDQUFra05BQXNnQlNFQklBc2dDMFVnRWhzTUFRc2dBaUFGUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FLS0FJRUlRc2dDU0FLUVF4QkNDQUJJQVZKSWhJYmFpZ0NBRFlDQUFOQUFrQWdCQTBBSUFNb0FoQWlCRUVCYWlFS0lBUXRBQUVoQlNBRUxRQUFRZjhCUmdSQUlBVkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQkF3Q0N5QURJQW8yQWhBZ0JVRUpkQ0FDYWlFQ1FRY2hCQXdCQ3lBRElBbzJBaEJCQ0NFRUlBVkJDSFFnQW1vaEFnc2dCRUVCYXlFRUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFMUlNBTElCSWJEQUVMSUFvb0FnUUxSUTBBSUFFZ0ZpQU5LQUlFUVJSMlFRUnhJQTFCQkdzaUN5Z0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCRkJxZ0Z4Y25KeWNpSVNRWkMrQVdvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhFU0FKSUFwQkNFRU1JQUVnQlVraUR4dHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQVJJQkZGSUE4YkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRVJJQWtnQ2tFTVFRZ2dBU0FGU1NJUEcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRVVVZ0VTQVBHd3dCQ3lBS0tBSUVDeUVGSUJNZ0RpQU1JQVVnRWtHUXdBRnFMUUFBSWdwR0d6WUNnQUlnQ3lBTEtBSUFRWUFDY2pZQ0FDQU5JQTBvQWdSQndBQnlOZ0lFSUFZZ0JTQUtjMEVXZEhKQmdBRnlJUVlMQWtBZ0JrR0FpSURBQUhFTkFDQUJJQllnQXlnQ2JDQUdRUVoySWhGQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ1ZySVFFQ2Z5QUZJQUpCRUhaTEJFQWdDaWdDQkNFTElBa2dDa0VJUVF3Z0FTQUZTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUUVnQkMwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBQlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQlVFQmRDSUZRWUNBQWtrTkFBc2dCU0VCSUFzZ0MwVWdFaHNNQVFzZ0FpQUZRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUtLQUlFSVFzZ0NTQUtRUXhCQ0NBQklBVkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JBMEFJQU1vQWhBaUJFRUJhaUVLSUFRdEFBRWhCU0FFTFFBQVFmOEJSZ1JBSUFWQmtBRlBCRUFnQXlBREtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCQXdDQ3lBRElBbzJBaEFnQlVFSmRDQUNhaUVDUVFjaEJBd0JDeUFESUFvMkFoQkJDQ0VFSUFWQkNIUWdBbW9oQWdzZ0JFRUJheUVFSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUxSU0FMSUJJYkRBRUxJQW9vQWdRTFJRMEFJQUVnRmlBTktBSUVRUmQyUVFSeElBMUJCR3NpQ3lnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUJGQnFnRnhjbkp5Y2lJU1FaQytBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lGYXlFQkFuOGdCU0FDUVJCMlN3UkFJQW9vQWdRaEVTQUpJQXBCQ0VFTUlBRWdCVWtpRHh0cUtBSUFOZ0lBQTBBQ1FDQUVEUUFnQXlnQ0VDSUVRUUZxSVFvZ0JDMEFBU0VCSUFRdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRElBTW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VFREFJTElBTWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUVEQUVMSUFNZ0NqWUNFRUVJSVFRZ0FVRUlkQ0FDYWlFQ0N5QUVRUUZySVFRZ0FrRUJkQ0VDSUFWQkFYUWlCVUdBZ0FKSkRRQUxJQVVoQVNBUklCRkZJQThiREFFTElBSWdCVUVRZEdzaEFpQUJRWUNBQW5GRkJFQWdDaWdDQkNFUklBa2dDa0VNUVFnZ0FTQUZTU0lQRzJvb0FnQTJBZ0FEUUFKQUlBUU5BQ0FES0FJUUlnUkJBV29oQ2lBRUxRQUJJUVVnQkMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVFNQWdzZ0F5QUtOZ0lRSUFWQkNYUWdBbW9oQWtFSElRUU1BUXNnQXlBS05nSVFRUWdoQkNBRlFRaDBJQUpxSVFJTElBUkJBV3NoQkNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFVVVnRVNBUEd3d0JDeUFLS0FJRUN5RUZJQk1nRGlBTUlBVWdFa0dRd0FGcUxRQUFJZ3BHR3pZQ2dBUWdDeUFMS0FJQVFZQVFjallDQUNBTklBMG9BZ1JCZ0FSeU5nSUVJQVlnQlNBS2MwRVpkSEpCZ0FoeUlRWUxJQVpCZ01DQWdBUnhEUUVnQVNBV0lBTW9BbXdnQmtFSmRpSVNRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJRmF5RUJBbjhnQlNBQ1FSQjJTd1JBSUFvb0FnUWhDeUFKSUFwQkNFRU1JQUVnQlVraUVSdHFLQUlBTmdJQUEwQUNRQ0FFRFFBZ0F5Z0NFQ0lFUVFGcUlRb2dCQzBBQVNFQklBUXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQURJQU1vQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRURBSUxJQU1nQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVFREFFTElBTWdDallDRUVFSUlRUWdBVUVJZENBQ2FpRUNDeUFFUVFGcklRUWdBa0VCZENFQ0lBVkJBWFFpQlVHQWdBSkpEUUFMSUFVaEFTQUxJQXRGSUJFYkRBRUxJQUlnQlVFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQ2lnQ0JDRUxJQWtnQ2tFTVFRZ2dBU0FGU1NJUkcyb29BZ0EyQWdBRFFBSkFJQVFOQUNBREtBSVFJZ1JCQVdvaENpQUVMUUFCSVFVZ0JDMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFRTUFnc2dBeUFLTmdJUUlBVkJDWFFnQW1vaEFrRUhJUVFNQVFzZ0F5QUtOZ0lRUVFnaEJDQUZRUWgwSUFKcUlRSUxJQVJCQVdzaEJDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQzBVZ0N5QVJHd3dCQ3lBS0tBSUVDMFVOQVNBQklCWWdEU2dDQkVFYWRrRUVjU0FOUVFSckloRW9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlDMEdRdmdGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUJXc0xJUUVDZnlBRklBSkJFSFpMQkVBZ0NpZ0NCQ0VTSUFrZ0NrRUlRUXdnQVNBRlNTSVBHMm9vQWdBMkFnQURRQUpBSUFRTkFDQURLQUlRSWdSQkFXb2hDaUFFTFFBQklRRWdCQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRUU1BZ3NnQXlBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFRTUFRc2dBeUFLTmdJUVFRZ2hCQ0FCUVFoMElBSnFJUUlMSUFSQkFXc2hCQ0FDUVFGMElRSWdCVUVCZENJRlFZQ0FBa2tOQUFzZ0JTRUJJQklnRWtVZ0R4c01BUXNnQWlBRlFSQjBheUVDSUFGQmdJQUNjVVVFUUNBS0tBSUVJUklnQ1NBS1FReEJDQ0FCSUFWSklnOGJhaWdDQURZQ0FBTkFBa0FnQkEwQUlBTW9BaEFpQkVFQmFpRUtJQVF0QUFFaEJTQUVMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJBd0NDeUFESUFvMkFoQWdCVUVKZENBQ2FpRUNRUWNoQkF3QkN5QURJQW8yQWhCQkNDRUVJQVZCQ0hRZ0Ftb2hBZ3NnQkVFQmF5RUVJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBU1JTQVNJQThiREFFTElBb29BZ1FMSVFVZ0V5QU9JQXdnQlNBTFFaREFBV290QUFBaUNrWWJOZ0tBQmlBUklCRW9BZ0JCZ0lBQmNqWUNBQ0FOSUEwb0FnUkJnQ0J5TmdJRUlBVWdDbk1pQlVFY2RDQUdjaUFOSUEwb0FvUUNRUVJ5TmdLRUFpQU5JQTBvQW93Q1FRRnlOZ0tNQWlBTklBMG9Bb2dDSUFWQkVuUnlRUUp5TmdLSUFrR0F3QUJ5SVFZTElBMGdCa0gvLy8rMmUzRTJBZ0FMSUExQkJHb2hCaUFUUVFScUlRVWdGVUVCYWlJVlFjQUFSdzBBQ3lBTlFReHFJUVlnRTBHRUJtb2hCU0FVUVR4SklCUkJCR29oRkEwQUN3c2dBeUFFTmdJSUlBTWdBVFlDQkNBRElBSTJBZ0FnQXlBSk5nSm9Dd0pBSUJkQklIRkZEUUFnQXlBRFFlUUFhallDYUNBRElBTW9BZ1FnQXlnQ1pDSUdLQUlBSWdGcklnSTJBZ1FDUUNBQklBTW9BZ0FpQkVFUWRrc0VRQ0FESUFFMkFnUWdBeUFHUVFoQkRDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUlEUUFKQUlBSU5BQ0FES0FJUUlnbEJBV29oQWlBSkxRQUJJUVVnQ1MwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUlNQWdzZ0F5QUNOZ0lRSUFWQkNYUWdCR29oQkVFSElRSU1BUXNnQXlBQ05nSVFRUWdoQWlBRlFRaDBJQVJxSVFRTElBTWdBa0VCYXlJQ05nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUJJUUlNQVFzZ0F5QUVJQUZCRUhScklnUTJBZ0FnQWtHQWdBSnhEUUFnQXlBR1FReEJDQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFFRFFBSkFJQUVOQUNBREtBSVFJZ0ZCQVdvaENTQUJMUUFCSVFVZ0FTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFFTUFnc2dBeUFKTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUVNQVFzZ0F5QUpOZ0lRUVFnaEFTQUZRUWgwSUFScUlRUUxJQU1nQVVFQmF5SUJOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NnQXlBQ0lBWW9BZ0FpQVdzaUFqWUNCQUpBSUFFZ0JFRVFka3NFUUNBRElBRTJBZ1FnQXlBR1FRaEJEQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQURLQUlJSVFJRFFBSkFJQUlOQUNBREtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFVZ0NTMEFBRUgvQVVZRVFDQUZRWkFCVHdSQUlBTWdBeWdDREVFQmFqWUNEQ0FFUVlEK0Eyb2hCRUVJSVFJTUFnc2dBeUFDTmdJUUlBVkJDWFFnQkdvaEJFRUhJUUlNQVFzZ0F5QUNOZ0lRUVFnaEFpQUZRUWgwSUFScUlRUUxJQU1nQWtFQmF5SUNOZ0lJSUFNZ0JFRUJkQ0lFTmdJQUlBTWdBVUVCZENJQk5nSUVJQUZCZ0lBQ1NRMEFDeUFCSVFJTUFRc2dBeUFFSUFGQkVIUnJJZ1EyQWdBZ0FrR0FnQUp4RFFBZ0F5QUdRUXhCQ0NBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRRURRQUpBSUFFTkFDQURLQUlRSWdGQkFXb2hDU0FCTFFBQklRVWdBUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRRU1BZ3NnQXlBSk5nSVFJQVZCQ1hRZ0JHb2hCRUVISVFFTUFRc2dBeUFKTmdJUVFRZ2hBU0FGUVFoMElBUnFJUVFMSUFNZ0FVRUJheUlCTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQWtFQmRDSUNOZ0lFSUFKQmdJQUNTUTBBQ3dzZ0F5QUNJQVlvQWdBaUFXc2lBallDQkFKQUlBRWdCRUVRZGtzRVFDQURJQUUyQWdRZ0F5QUdRUWhCRENBQklBSkxHMm9vQWdBaUJqWUNaQ0FES0FJSUlRSURRQUpBSUFJTkFDQURLQUlRSWdsQkFXb2hBaUFKTFFBQklRVWdDUzBBQUVIL0FVWUVRQ0FGUVpBQlR3UkFJQU1nQXlnQ0RFRUJhallDRENBRVFZRCtBMm9oQkVFSUlRSU1BZ3NnQXlBQ05nSVFJQVZCQ1hRZ0JHb2hCRUVISVFJTUFRc2dBeUFDTmdJUVFRZ2hBaUFGUVFoMElBUnFJUVFMSUFNZ0FrRUJheUlDTmdJSUlBTWdCRUVCZENJRU5nSUFJQU1nQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBQklRSU1BUXNnQXlBRUlBRkJFSFJySWdRMkFnQWdBa0dBZ0FKeERRQWdBeUFHUVF4QkNDQUJJQUpMRzJvb0FnQWlCallDWkNBREtBSUlJUUVEUUFKQUlBRU5BQ0FES0FJUUlnRkJBV29oQ1NBQkxRQUJJUVVnQVMwQUFFSC9BVVlFUUNBRlFaQUJUd1JBSUFNZ0F5Z0NERUVCYWpZQ0RDQUVRWUQrQTJvaEJFRUlJUUVNQWdzZ0F5QUpOZ0lRSUFWQkNYUWdCR29oQkVFSElRRU1BUXNnQXlBSk5nSVFRUWdoQVNBRlFRaDBJQVJxSVFRTElBTWdBVUVCYXlJQk5nSUlJQU1nQkVFQmRDSUVOZ0lBSUFNZ0FrRUJkQ0lDTmdJRUlBSkJnSUFDU1EwQUN3c2dBeUFDSUFZb0FnQWlBV3NpQWpZQ0JDQUJJQVJCRUhaTEJFQWdBeUFCTmdJRUlBTWdCa0VJUVF3Z0FTQUNTeHRxS0FJQU5nSmtJQU1vQWdnaEFnTkFBa0FnQWcwQUlBTW9BaEFpQmtFQmFpRUpJQVl0QUFFaEJTQUdMUUFBUWY4QlJnUkFJQVZCa0FGUEJFQWdBeUFES0FJTVFRRnFOZ0lNSUFSQmdQNERhaUVFUVFnaEFnd0NDeUFESUFrMkFoQWdCVUVKZENBRWFpRUVRUWNoQWd3QkN5QURJQWsyQWhCQkNDRUNJQVZCQ0hRZ0JHb2hCQXNnQXlBQ1FRRnJJZ0kyQWdnZ0F5QUVRUUYwSWdRMkFnQWdBeUFCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMREFFTElBTWdCQ0FCUVJCMGF5SUZOZ0lBSUFKQmdJQUNjUTBBSUFNZ0JrRU1RUWdnQVNBQ1N4dHFLQUlBTmdKa0lBTW9BZ2doQkFOQUFrQWdCQTBBSUFNb0FoQWlCa0VCYWlFSklBWXRBQUVoQVNBR0xRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0F5QURLQUlNUVFGcU5nSU1JQVZCZ1A0RGFpRUZRUWdoQkF3Q0N5QURJQWsyQWhBZ0FVRUpkQ0FGYWlFRlFRY2hCQXdCQ3lBRElBazJBaEJCQ0NFRUlBRkJDSFFnQldvaEJRc2dBeUFFUVFGcklnUTJBZ2dnQXlBRlFRRjBJZ1UyQWdBZ0F5QUNRUUYwSWdJMkFnUWdBa0dBZ0FKSkRRQUxDd3NnSjBVTkFDQURFR01nQTBId3JRRTJBbVFnQTBHUW93RTJBbUFnQTBHd293RTJBaHdMUVFBZ0lVRUJhaUlCSUFGQkEwWWlBUnNoSVNBYklBRnJJUnNnS1VFQmFpSXBJQ0FvQWdoUERRRWdHMEVBU2cwQUN3c2dIaUFxYWlFZUlBTW9BaGdnQXk4QmNEc0FBQ0FvUVFGcUlpZ2dHaWdDTEVrTkFBc0xBa0FnSzBVTkFBSkFJQU1vQWhnaUFTQURLQUlRSWdWQkFtcExCRUFnSWtVTkFTQW1JQUVnQXlnQ0ZDSUdhellDT0NBbUlBVWdCbXMyQWpRZ0ppQUJJQVZyUVFKck5nSXdJQjFCQWtIZTlnQWdKa0V3YWhBVERBSUxJQU1vQWd3aUFVRURTUTBCSUNJRVFDQW1JQUUyQWxBZ0hVRUNRWjQzSUNaQjBBQnFFQk1NQWdzZ0ppQUJOZ0pBSUIxQkFrR2VOeUFtUVVCckVCTU1BUXNnSmlBQklBTW9BaFFpQm1zMkFpZ2dKaUFGSUFack5nSWtJQ1lnQVNBRmEwRUNhellDSUNBZFFRSkIzdllBSUNaQklHb1FFd3NnR2lnQ1BFVU5BQ0FESUN3MkFuUUxJREFvQWdRaEFTQWFLQUlNSUJvb0FnZ2dNQ2dDQUdzaEV5QXdLQUlRSWdaQkFYRUVRQ0F5S0FJY0lEaEJtQUZzYWlJSlFaQUJheWdDQUNBVGFpQUpRWmdCYXlnQ0FHc2hFd3NnQVdzaEJTQUdRUUp4QkVBZ01pZ0NIQ0E0UVpnQmJHb2lBVUdNQVdzb0FnQWdCV29nQVVHVUFXc29BZ0JySVFVTElCb29BandpQmlFQ0lBWkZCRUFnQXlnQ2RDRUNDeUFES0FLQUFTRU5JQU1vQW53aEJBSkFJQzhvQXFnR0lnbEZEUUFnRFVVZ0JFVnlJUUVnQ1VFZVRBUkFJQUVOQVVFQUlRZ0RRQ0FFSUFoc0lRTkJBQ0VCQTBBZ0FpQUJJQU5xUVFKMGFpSVhLQUlBSWdjZ0IwRWZkU0lLY3lBS2F5SUtJQWwyQkVBZ0YwRUFJQW9nTHlnQ3FBWjJJaGRySUJjZ0IwRUFTQnMyQWdBTElBRkJBV29pQVNBRVJ3MEFDeUFJUVFGcUlnZ2dEVWNOQUFzTUFRc2dBUTBBSUFKQkFDQUVJQTFzUVFKMEVCa2FDeUFHQkVBZ0JDQU5iQ0VHSUM4b0FoUkJBVVlFUUNBR1JRMEZRUUFoQVNBR1FRUlBCRUFnQmtGOGNTRUJRUUFoQXdOQUlBSWdBMEVDZEdvaUJTQUYvUUFDQUNKSC9Sc0FRUUp0L1JFZ1IvMGJBVUVDYmYwY0FTQkgvUnNDUVFKdC9Sd0NJRWY5R3dOQkFtMzlIQVA5Q3dJQUlBTkJCR29pQXlBQlJ3MEFDeUFCSUFaR0RRWUxBMEFnQWlBQlFRSjBhaUlGSUFVb0FnQkJBbTAyQWdBZ0FVRUJhaUlCSUFaSERRQUxEQVVMSUFaRkRRUWdNQ29DSUVNQUFBQS9sQ0ZOUVFBaEF3SkFJQVpCQkVrRVFDQUNJUUVNQVFzZ0FpQUdRWHh4SWdOQkFuUnFJUUVnVGYwVElVZEJBQ0VGQTBBZ0FpQUZRUUowYWlJSklFY2dDZjBBQWdEOStnSDk1Z0g5Q3dJQUlBVkJCR29pQlNBRFJ3MEFDeUFESUFaR0RRVUxBMEFnQVNCTklBRW9BZ0N5bERnQ0FDQUJRUVJxSVFFZ0EwRUJhaUlESUFaSERRQUxEQVFMSURjZ05tc2hGeUF2S0FJVVFRRkhEUUlnRFVVTkF5QXlLQUlrSWdZZ0JTQVhiQ0lGUVFKMGFpQVRRUUowYWlFSElBUkJmSEVpRzBFQmF5SUJRUVJ4SVJZZ055QUVJRFpxYTBFQ2RDRVVJQUZCQW5aQkFXcEIvdi8vL3dkeElSb2dCU0FUYWtFQ2RDQUdhaUFDYXlFZFFRQWhFeUFCUVFOSElRNERRRUVBSVFFQ1FDQWJSUTBBSUFRZ0Uyd2hCU0FISUJNZ0YyeEJBblJxSVFaQkFDRUpJQTRFUUFOQUlBWWdBVUVDZEdvZ0FpQUJJQVZxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBR0lBRkJCSElpQ0VFQ2RHb2dBaUFGSUFocVFRSjBhdjBBQWdBaVIvMGJBRUVDYmYwUklFZjlHd0ZCQW0zOUhBRWdSLzBiQWtFQ2JmMGNBaUJIL1JzRFFRSnQvUndEL1FzQ0FDQUJRUWhxSVFFZ0NVRUNhaUlKSUJwSERRQUxDeUFXRFFBZ0JpQUJRUUowYWlBQ0lBRWdCV3BCQW5ScS9RQUNBQ0pIL1JzQVFRSnQvUkVnUi8wYkFVRUNiZjBjQVNCSC9Sc0NRUUp0L1J3Q0lFZjlHd05CQW0zOUhBUDlDd0lBSUFGQkJHb2hBUXNDUUNBQklBUlBEUUFnQkNBVGJDRUZJQWNnRXlBWGJFRUNkR29oQ1FKQUFrQWdCQ0FCYXlJSVFRUlBCRUFnSFNBVElCUnNha0VQU3cwQkN5QUJJUVlNQVFzZ0FTQUZhaUVpSUFFZ0NFRjhjU0lLYWlFR1FRQWhBd05BSUFrZ0FTQURha0VDZEdvZ0FpQURJQ0pxUVFKMGF2MEFBZ0FpUi8wYkFFRUNiZjBSSUVmOUd3RkJBbTM5SEFFZ1IvMGJBa0VDYmYwY0FpQkgvUnNEUVFKdC9Sd0QvUXNDQUNBRFFRUnFJZ01nQ2tjTkFBc2dDQ0FLUmcwQkN5QUdRUUZxSVFFZ0JDQUdhMEVCY1FSQUlBa2dCa0VDZEdvZ0FpQUZJQVpxUVFKMGFpZ0NBRUVDYlRZQ0FDQUJJUVlMSUFFZ0JFWU5BQ0FGUVFGcUlRRURRQ0FKSUFaQkFuUnFJZ2dnQWlBRklBWnFRUUowYWlnQ0FFRUNiVFlDQUNBSUlBSWdBU0FHYWtFQ2RHb29BZ0JCQW0wMkFnUWdCa0VDYWlJR0lBUkhEUUFMQ3lBVFFRRnFJaE1nRFVjTkFBc01Bd3NnSmlBYk5nSUFJQjFCQWtIbnd3QWdKaEFUQ3lBRktBSUFRUUEyQWdBTUFRc2dEVVVOQUNBRVJRMEFJRElvQWlRZ0JTQVhiRUVDZEdvZ0UwRUNkR29oQ1NBRVFYeHhJZ1ZCQW5RaEJpQXdLZ0lnUXdBQUFEK1VJazM5RXlGSFFRQWhDQ0FFUVFSSklSTURRQUpBQWtBZ0V3UkFJQUloQnlBSklRRkJBQ0VEREFFTElBWWdDV29oQVNBQ0lBWnFJUWRCQUNFREEwQWdDU0FEUVFKMElncHFJRWNnQWlBS2F2MEFBZ0Q5K2dIOTVnSDlDd0lBSUFOQkJHb2lBeUFGUncwQUN5QUhJUUlnQlNJRElBUkdEUUVMSUFjaEFnTkFJQUVnVFNBQ0tBSUFzcFE0QWdBZ0FVRUVhaUVCSUFKQkJHb2hBaUFEUVFGcUlnTWdCRWNOQUFzTElBa2dGMEVDZEdvaENTQUlRUUZxSWdnZ0RVY05BQXNMSUFBUUZDQW1RZUFBYWlRQUM5WUVBUWwvSUFBb0FpeEJDRThFUUNBQUtBSW9JUVZCQ0NFS0EwQWdBQ2dDREVFRmRDRUlJQUFvQWdBaEJDQUFLQUlrSVFNQ1FDQUFLQUlVSWdZZ0FDZ0NFQ0lCVFEwQUlBUWdDR29oQnlBQlFRRnFJUUlnQmlBQmEwRUJjUVJBSUFjZ0FVRUdkR29pQ1NBRklBRWdBMnhCQW5ScUlnSDlBQUlBL1FzQ0FDQUpJQUg5QUFJUS9Rc0NFQ0FDSVFFTElBSWdCa1lOQUFOQUlBY2dBVUVHZEdvaUFpQUZJQUVnQTJ4QkFuUnFJZ245QUFJQS9Rc0NBQ0FDSUFuOUFBSVEvUXNDRUNBSElBRkJBV29pQWtFR2RHb2lDU0FGSUFJZ0EyeEJBblJxSWdMOUFBSVEvUXNDRUNBSklBTDlBQUlBL1FzQ0FDQUJRUUpxSWdFZ0JrY05BQXNMQWtBZ0FDZ0NIQ0lHSUFBb0FoZ2lBVTBOQUNBRUlBaHJRU0JxSVFjZ0JTQUFLQUlJSUFOc1FRSjBhaUVJSUFGQkFXb2hBaUFHSUFGclFRRnhCRUFnQnlBQlFRWjBhaUlFSUFnZ0FTQURiRUVDZEdvaUFmMEFBZ0Q5Q3dJQUlBUWdBZjBBQWhEOUN3SVFJQUloQVFzZ0FpQUdSZzBBQTBBZ0J5QUJRUVowYWlJQ0lBZ2dBU0FEYkVFQ2RHb2lCUDBBQWdEOUN3SUFJQUlnQlAwQUFoRDlDd0lRSUFjZ0FVRUJhaUlDUVFaMGFpSUVJQWdnQWlBRGJFRUNkR29pQXYwQUFoRDlDd0lRSUFRZ0F2MEFBZ0Q5Q3dJQUlBRkJBbW9pQVNBR1J3MEFDd3NnQUJBbVFRQWhBU0FBS0FJZ0JFQURRQ0FGSUFBb0FpUWdBV3hCQW5ScUlnSWdBQ2dDQUNBQlFRVjBhaUlEL1FBQ0FQMExBZ0FnQWlBRC9RQUNFUDBMQWhBZ0FVRUJhaUlCSUFBb0FpQkpEUUFMQ3lBRlFTQnFJUVVnQ2tFSWFpSUtJQUFvQWl4TkRRQUxDeUFBS0FJQUVCUWdBQkFVQzYwTkFTTi9JQUFvQWl4QkNFOEVRQ0FBS0FJa0lncEJCWFFoRlNBS1FRZHNJUllnQ2tFR2JDRVhJQXBCQld3aEdDQUtRUU5zSVJrZ0NrRUJkQ0VhSUFBb0FpZ2lBU0FLUVJ4c2FpRWVJQUVnQ2tFWWJHb2hIeUFCSUFwQkZHeHFJU0FnQVNBS1FRUjBhaUVoSUFFZ0NrRU1iR29oSWlBQklBcEJBM1JxSVNNZ0FTQUtRUUowSWh0cUlTUkJDQ0VjQTBBZ0FDQUJJQUFvQWlSQkNCQkRJQUFRSmdKQUlBQW9BaUFpRFVVTkFDQVZJQjFzSVFnZ0FDZ0NBQ0VHUVFBaEJBSkFBa0FnRFVISEFVME5BQ0FCSUFnZ0pHb2lBeUFOUVFKMElnVnFJZ3RKSUFNZ0FTQUZhaUlIU1hFTkFDQUJJQWdnSTJvaUFpQUZhaUlNU1NBQ0lBZEpjUTBBSUFFZ0JTQUlJQ0pxSWdscUlnVkpJQWNnQ1V0eERRQWdCaUFIU1NBQklBWWdEVUVGZEdvaURrRWNheUlQU1hFTkFDQUJJQTVCR0dzaUVFa2dCa0VFYWlJUklBZEpjUTBBSUFFZ0RrRVVheUlTU1NBR1FRaHFJaE1nQjBseERRQWdCeUFHUVF4cUloUkxJQUVnRGtFUWF5SUhTWEVOQUNBRElBeEpJQUlnQzBseERRQWdBeUFGU1NBSklBdEpjUTBBSUFNZ0Qwa2dCaUFMU1hFTkFDQURJQkJKSUFzZ0VVdHhEUUFnQXlBU1NTQUxJQk5MY1EwQUlBTWdCMGtnQ3lBVVMzRU5BQ0FDSUFWSklBa2dERWx4RFFBZ0FpQVBTU0FHSUF4SmNRMEFJQUlnRUVrZ0RDQVJTM0VOQUNBQ0lCSkpJQXdnRTB0eERRQWdBaUFIU1NBTUlCUkxjUTBBSUFrZ0Qwa2dCU0FHUzNFTkFDQUpJQkJKSUFVZ0VVdHhEUUFnQ1NBU1NTQUZJQk5MY1EwQUlBY2dDVXNnQlNBVVMzRU5BQ0FOUVh4eElRUkJBQ0VEQTBBZ0FTQURRUUowYWlBR0lBTkJCWFJxSWdKQjRBQnFJQUpCUUdzZ0FrRWdhaUFDL1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8wTEFnQWdBU0FESUFwcVFRSjBhaUFDUWVRQWFpQUNRY1FBYWlBQ1FTUnFJQUw5WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUJJQU1nR21wQkFuUnFJQUpCNkFCcUlBSkJ5QUJxSUFKQktHb2dBdjFjQWdqOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFaYWtFQ2RHb2dBa0hzQUdvZ0FrSE1BR29nQWtFc2FpQUMvVndDRFAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnRFVZTkFRc0RRQ0FCSUFSQkFuUnFJQVlnQkVFRmRHb2lBeW9DQURnQ0FDQUJJQVFnQ21wQkFuUnFJQU1xQWdRNEFnQWdBU0FFSUJwcVFRSjBhaUFES2dJSU9BSUFJQUVnQkNBWmFrRUNkR29nQXlvQ0REZ0NBQ0FFUVFGcUlnUWdEVWNOQUFzTElBQW9BZ0FoQmtFQUlRUUNRQ0FOUVROTkRRQWdDQ0FoYWlJRElBZ2dJR29pQWlBTlFRSjBJZ1ZxSWd0SklBSWdBeUFGYWlJSFNYRU5BQ0FESUFnZ0gyb2lDU0FGYWlJTVNTQUhJQWxMY1EwQUlBTWdDQ0FlYWlJSUlBVnFJZ1ZKSUFjZ0NFdHhEUUFnQXlBR0lBMUJCWFJxSWc1QkRHc2lEMGtnQmtFUWFpSVFJQWRKY1EwQUlBTWdEa0VJYXlJUlNTQUdRUlJxSWhJZ0IwbHhEUUFnQXlBT1FRUnJJaE5KSUFaQkdHb2lGQ0FIU1hFTkFDQURJQTVKSUFaQkhHb2lBeUFIU1hFTkFDQUNJQXhKSUFrZ0MwbHhEUUFnQWlBRlNTQUlJQXRKY1EwQUlBSWdEMGtnQ3lBUVMzRU5BQ0FDSUJGSklBc2dFa3R4RFFBZ0FpQVRTU0FMSUJSTGNRMEFJQUlnRGtrZ0F5QUxTWEVOQUNBSUlBeEpJQVVnQ1V0eERRQWdDU0FQU1NBTUlCQkxjUTBBSUFrZ0VVa2dEQ0FTUzNFTkFDQUpJQk5KSUF3Z0ZFdHhEUUFnQ1NBT1NTQURJQXhKY1EwQUlBZ2dEMGtnQlNBUVMzRU5BQ0FJSUJGSklBVWdFa3R4RFFBZ0NDQVRTU0FGSUJSTGNRMEFJQWdnRGtrZ0F5QUZTWEVOQUNBTlFYeHhJUVJCQUNFREEwQWdBU0FESUJ0cVFRSjBhaUFHSUFOQkJYUnFJZ0pCOEFCcUlBSkIwQUJxSUFKQk1Hb2dBdjFjQWhEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBRWdBeUFZYWtFQ2RHb2dBa0gwQUdvZ0FrSFVBR29nQWtFMGFpQUMvVndDRlAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FTQURJQmRxUVFKMGFpQUNRZmdBYWlBQ1FkZ0FhaUFDUVRocUlBTDlYQUlZL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBQklBTWdGbXBCQW5ScUlBSkIvQUJxSUFKQjNBQnFJQUpCUEdvZ0F2MWNBaHo5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlDd0lBSUFOQkJHb2lBeUFFUncwQUN5QUVJQTFHRFFFTEEwQWdBU0FFSUJ0cVFRSjBhaUFHSUFSQkJYUnFJZ01xQWhBNEFnQWdBU0FFSUJocVFRSjBhaUFES2dJVU9BSUFJQUVnQkNBWGFrRUNkR29nQXlvQ0dEZ0NBQ0FCSUFRZ0ZtcEJBblJxSUFNcUFodzRBZ0FnQkVFQmFpSUVJQTFIRFFBTEN5QWRRUUZxSVIwZ0FTQVZhaUVCSUJ4QkNHb2lIQ0FBS0FJc1RRMEFDd3NnQUNnQ0FCQVVJQUFRRkF0ekFRSi9JQUFvQWh3aUFVRUlhaUlESUFBb0FpQWlBazBFUUFOQUlBQWdBQ2dDR0NBQlFRSjBhaUFBS0FJVVFRZ1FOaUFESWdGQkNHb2lBeUFBS0FJZ0lnSk5EUUFMQ3lBQklBSkpCRUFnQUNBQUtBSVlJQUZCQW5ScUlBQW9BaFFnQWlBQmF4QTJDeUFBS0FJQUVCUWdBQkFVQzBRQUlBQW9BaHdpQVNBQUtBSWdTUVJBQTBBZ0FDQUFLQUlZSUFBb0FoUWdBV3hCQW5ScUVHWWdBVUVCYWlJQklBQW9BaUJKRFFBTEN5QUFLQUlBRUJRZ0FCQVVDd1VBRUc0QUN3WUFFSmtCQUFzTkFCQUxJQUJCZ0FGcUVBb0FDd1VBRUc0QUMyd0JBWDhnQUVRQUFBQUFBQUFBQUJBTkdnSkFRY2pmQVNnQ0FFRWJRUnBCRGlBQVFRRkdHeUFBUVFKR0d5SUFRUUZyZGtFQmNRUkFRY2pnQVVISTRBRW9BZ0JCQVNBQVFRRnJkSEkyQWdBTUFRc2dBRUVDZEVHZ3lRRnFLQUlBSWdJRVFDQUFJQUlSQWdBTEN3dW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQllhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQllhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0M2WUZBZ1orQkg4Z0FTQUJLQUlBUVFkcVFYaHhJZ0ZCRUdvMkFnQWdBQ0FCS1FNQUlRSWdBU2tEQ0NFSEl3QkJJR3NpQ0NRQUlBZEMvLy8vLy8vL1A0TWhCQUorSUFkQ01JaEMvLzhCZ3lJRHB5SUtRWUg0QUd0Qi9ROU5CRUFnQkVJRWhpQUNRanlJaENFRElBcEJnUGdBYTYwaEJBSkFJQUpDLy8vLy8vLy8vLzhQZ3lJQ1FvR0FnSUNBZ0lDQUNGb0VRQ0FEUWdGOElRTU1BUXNnQWtLQWdJQ0FnSUNBZ0FoU0RRQWdBMElCZ3lBRGZDRURDMElBSUFNZ0EwTC8vLy8vLy8vL0IxWWlBQnNoQWlBQXJTQUVmQXdCQ3dKQUlBSWdCSVJRRFFBZ0EwTC8vd0ZTRFFBZ0JFSUVoaUFDUWp5SWhFS0FnSUNBZ0lDQUJJUWhBa0wvRHd3QkN5QUtRZjZIQVVzRVFFSUFJUUpDL3c4TUFRdEJnUGdBUVlINEFDQURVQ0lCR3lJQUlBcHJJZ2xCOEFCS0JFQkNBQ0VDUWdBTUFRc2dBaUVESUFRZ0JFS0FnSUNBZ0lEQUFJUWdBUnNpQlNFR0FrQkJnQUVnQ1dzaUFVSEFBSEVFUUNBQ0lBRkJRR3F0aGlFR1FnQWhBd3dCQ3lBQlJRMEFJQVlnQWEwaUJJWWdBMEhBQUNBQmE2MkloQ0VHSUFNZ0JJWWhBd3NnQ0NBRE53TVFJQWdnQmpjREdBSkFJQWxCd0FCeEJFQWdCU0FKUVVCcXJZZ2hBa0lBSVFVTUFRc2dDVVVOQUNBRlFjQUFJQWxycllZZ0FpQUpyU0lEaUlRaEFpQUZJQU9JSVFVTElBZ2dBamNEQUNBSUlBVTNBd2dnQ0NrRENFSUVoaUFJS1FNQUlnTkNQSWlFSVFJQ1FDQUFJQXBISUFncEF4QWdDQ2tER0lSQ0FGSnhyU0FEUXYvLy8vLy8vLy8vRDRPRUlnTkNnWUNBZ0lDQWdJQUlXZ1JBSUFKQ0FYd2hBZ3dCQ3lBRFFvQ0FnSUNBZ0lDQUNGSU5BQ0FDUWdHRElBSjhJUUlMSUFKQ2dJQ0FnSUNBZ0FpRklBSWdBa0wvLy8vLy8vLy9CMVlpQUJzaEFpQUFyUXNoQXlBSVFTQnFKQUFnQjBLQWdJQ0FnSUNBZ0lCL2d5QURRalNHaENBQ2hMODVBd0FMOUJjREVuOEJmQU4rSXdCQnNBUnJJZ3drQUNBTVFRQTJBaXdDUUNBQnZTSVpRZ0JUQkVCQkFTRVFRYm9JSVJRZ0Fab2lBYjBoR1F3QkN5QUVRWUFRY1FSQVFRRWhFRUc5Q0NFVURBRUxRY0FJUWJzSUlBUkJBWEVpRUJzaEZDQVFSU0VYQ3dKQUlCbENnSUNBZ0lDQWdQai9BSU5DZ0lDQWdJQ0FnUGovQUZFRVFDQUFRU0FnQWlBUVFRTnFJZ1lnQkVILy8zdHhFQ0FnQUNBVUlCQVFIaUFBUVpJSlFmWUtJQVZCSUhFaUF4dEIrd2xCbndzZ0F4c2dBU0FCWWh0QkF4QWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBNQVFzZ0RFRVFhaUVSQWtBQ1FBSkFJQUVnREVFc2FoQndJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWhWQjRRQkhEUUVNQXdzZ0JVRWdjaUlWUWVFQVJnMENJQXdvQWl3aEN3d0JDeUFNSUFaQkhXc2lDellDTENBQlJBQUFBQUFBQUxCQm9pRUJDMEVHSUFNZ0EwRUFTQnNoQ2lBTVFUQnFRYUFDUVFBZ0MwRUFUaHRxSWc0aEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBTFFRQk1CRUFnQ3lFSklBY2hCaUFPSVFnTUFRc2dEaUVJSUFzaENRTkFRUjBnQ1NBSlFSMVBHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoRzBJQUlSa0RRQ0FHSUJsQy8vLy8vdytESUFZMUFnQWdHNFo4SWhwQ2dKVHIzQU9BSWhsQ2dPeVVvd3grSUJwOFBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBYVFvQ1U2OXdEVkEwQUlBaEJCR3NpQ0NBWlBnSUFDd05BSUFnZ0J5SUdTUVJBSUFaQkJHc2lCeWdDQUVVTkFRc0xJQXdnRENnQ0xDQURheUlKTmdJc0lBWWhCeUFKUVFCS0RRQUxDeUFKUVFCSUJFQWdDa0VaYWtFSmJrRUJhaUVTSUJWQjVnQkdJUk1EUUVFSlFRQWdDV3NpQXlBRFFRbFBHeUVOQWtBZ0JpQUlUUVJBSUFnb0FnQkZRUUowSVFjTUFRdEJnSlRyM0FNZ0RYWWhGa0YvSUExMFFYOXpJUTlCQUNFSklBZ2hCd05BSUFjZ0J5Z0NBQ0lESUExMklBbHFOZ0lBSUFNZ0QzRWdGbXdoQ1NBSFFRUnFJZ2NnQmtrTkFBc2dDQ2dDQUVWQkFuUWhCeUFKUlEwQUlBWWdDVFlDQUNBR1FRUnFJUVlMSUF3Z0RDZ0NMQ0FOYWlJSk5nSXNJQTRnQnlBSWFpSUlJQk1iSWdNZ0VrRUNkR29nQmlBR0lBTnJRUUoxSUJKS0d5RUdJQWxCQUVnTkFBc0xRUUFoQ1FKQUlBWWdDRTBOQUNBT0lBaHJRUUoxUVFsc0lRbEJDaUVISUFnb0FnQWlBMEVLU1EwQUEwQWdDVUVCYWlFSklBTWdCMEVLYkNJSFR3MEFDd3NnQ2lBSlFRQWdGVUhtQUVjYmF5QVZRZWNBUmlBS1FRQkhjV3NpQXlBR0lBNXJRUUoxUVFsc1FRbHJTQVJBSUF4Qk1HcEJoR0JCcEdJZ0MwRUFTQnRxSUFOQmdNZ0FhaUlMUVFsdElnTkJBblJxSVExQkNpRUhJQU5CZDJ3Z0Myb2lBMEVIVEFSQUEwQWdCMEVLYkNFSElBTkJBV29pQTBFSVJ3MEFDd3NDUUNBTktBSUFJZ3NnQ3lBSGJpSVNJQWRzSWc5R0lBMUJCR29pQXlBR1JuRU5BQ0FMSUE5cklRc0NRQ0FTUVFGeFJRUkFSQUFBQUFBQUFFQkRJUUVnQjBHQWxPdmNBMGNOQVNBSUlBMVBEUUVnRFVFRWF5MEFBRUVCY1VVTkFRdEVBUUFBQUFBQVFFTWhBUXRFQUFBQUFBQUE0RDlFQUFBQUFBQUE4RDlFQUFBQUFBQUErRDhnQXlBR1JodEVBQUFBQUFBQStEOGdDeUFIUVFGMklnTkdHeUFESUF0TEd5RVlBa0FnRncwQUlCUXRBQUJCTFVjTkFDQVltaUVZSUFHYUlRRUxJQTBnRHpZQ0FDQUJJQmlnSUFGaERRQWdEU0FISUE5cUlnTTJBZ0FnQTBHQWxPdmNBMDhFUUFOQUlBMUJBRFlDQUNBSUlBMUJCR3NpRFVzRVFDQUlRUVJySWdoQkFEWUNBQXNnRFNBTktBSUFRUUZxSWdNMkFnQWdBMEgvayt2Y0Ewc05BQXNMSUE0Z0NHdEJBblZCQ1d3aENVRUtJUWNnQ0NnQ0FDSURRUXBKRFFBRFFDQUpRUUZxSVFrZ0F5QUhRUXBzSWdkUERRQUxDeUFOUVFScUlnTWdCaUFESUFaSkd5RUdDd05BSUFZaUN5QUlUU0lIUlFSQUlBWkJCR3NpQmlnQ0FFVU5BUXNMQWtBZ0ZVSG5BRWNFUUNBRVFRaHhJUk1NQVFzZ0NVRi9jMEYvSUFwQkFTQUtHeUlHSUFsS0lBbEJlMHB4SWdNYklBWnFJUXBCZjBGK0lBTWJJQVZxSVFVZ0JFRUljU0lURFFCQmR5RUdBa0FnQncwQUlBdEJCR3NvQWdBaUQwVU5BRUVLSVFOQkFDRUdJQTlCQ25BTkFBTkFJQVlpQjBFQmFpRUdJQThnQTBFS2JDSURjRVVOQUFzZ0IwRi9jeUVHQ3lBTElBNXJRUUoxUVFsc0lRTWdCVUZmY1VIR0FFWUVRRUVBSVJNZ0NpQURJQVpxUVFscklnTkJBQ0FEUVFCS0d5SURJQU1nQ2tvYklRb01BUXRCQUNFVElBb2dBeUFKYWlBR2FrRUpheUlEUVFBZ0EwRUFTaHNpQXlBRElBcEtHeUVLQzBGL0lRMGdDa0g5Ly8vL0IwSCsvLy8vQnlBS0lCTnlJZzhiU2cwQklBb2dEMEVBUjJwQkFXb2hGZ0pBSUFWQlgzRWlCMEhHQUVZRVFDQUpJQlpCLy8vLy93ZHpTZzBESUFsQkFDQUpRUUJLR3lFR0RBRUxJQkVnQ1NBSlFSOTFJZ056SUFOcnJTQVJFQzhpQm10QkFVd0VRQU5BSUFaQkFXc2lCa0V3T2dBQUlCRWdCbXRCQWtnTkFBc0xJQVpCQW1zaUVpQUZPZ0FBSUFaQkFXdEJMVUVySUFsQkFFZ2JPZ0FBSUJFZ0Vtc2lCaUFXUWYvLy8vOEhjMG9OQWdzZ0JpQVdhaUlESUJCQi8vLy8vd2R6U2cwQklBQkJJQ0FDSUFNZ0VHb2lDU0FFRUNBZ0FDQVVJQkFRSGlBQVFUQWdBaUFKSUFSQmdJQUVjeEFnQWtBQ1FBSkFJQWRCeGdCR0JFQWdERUVRYWtFSmNpRUZJQTRnQ0NBSUlBNUxHeUlESVFnRFFDQUlOUUlBSUFVUUx5RUdBa0FnQXlBSVJ3UkFJQVlnREVFUWFrME5BUU5BSUFaQkFXc2lCa0V3T2dBQUlBWWdERUVRYWtzTkFBc01BUXNnQlNBR1J3MEFJQVpCQVdzaUJrRXdPZ0FBQ3lBQUlBWWdCU0FHYXhBZUlBaEJCR29pQ0NBT1RRMEFDeUFQQkVBZ0FFSHZERUVCRUI0TElBZ2dDMDhOQVNBS1FRQk1EUUVEUUNBSU5RSUFJQVVRTHlJR0lBeEJFR3BMQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMQ3lBQUlBWkJDU0FLSUFwQkNVNGJFQjRnQ2tFSmF5RUdJQWhCQkdvaUNDQUxUdzBESUFwQkNVb2dCaUVLRFFBTERBSUxBa0FnQ2tFQVNBMEFJQXNnQ0VFRWFpQUlJQXRKR3lFRElBeEJFR3BCQ1hJaEN5QUlJUWNEUUNBTElBYzFBZ0FnQ3hBdklnWkdCRUFnQmtFQmF5SUdRVEE2QUFBTEFrQWdCeUFJUndSQUlBWWdERUVRYWswTkFRTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0RFRVFha3NOQUFzTUFRc2dBQ0FHUVFFUUhpQUdRUUZxSVFZZ0NpQVRja1VOQUNBQVFlOE1RUUVRSGdzZ0FDQUdJQXNnQm1zaUJTQUtJQVVnQ2tnYkVCNGdDaUFGYXlFS0lBZEJCR29pQnlBRFR3MEJJQXBCQUU0TkFBc0xJQUJCTUNBS1FSSnFRUkpCQUJBZ0lBQWdFaUFSSUJKckVCNE1BZ3NnQ2lFR0N5QUFRVEFnQmtFSmFrRUpRUUFRSUFzZ0FFRWdJQUlnQ1NBRVFZREFBSE1RSUNBQ0lBa2dBaUFKU2hzaERRd0JDeUFVSUFWQkduUkJIM1ZCQ1hGcUlRa0NRQ0FEUVF0TERRQkJEQ0FEYXlFR1JBQUFBQUFBQURCQUlSZ0RRQ0FZUkFBQUFBQUFBREJBb2lFWUlBWkJBV3NpQmcwQUN5QUpMUUFBUVMxR0JFQWdHQ0FCbWlBWW9hQ2FJUUVNQVFzZ0FTQVlvQ0FZb1NFQkN5QVJJQXdvQWl3aUJ5QUhRUjkxSWdaeklBWnJyU0FSRUM4aUJrWUVRQ0FHUVFGcklnWkJNRG9BQUFzZ0VFRUNjaUVLSUFWQklIRWhDeUFHUVFKcklnNGdCVUVQYWpvQUFDQUdRUUZyUVMxQkt5QUhRUUJJR3pvQUFDQUVRUWh4UlNBRFFRQk1jU0VJSUF4QkVHb2hCd05BSUFjaUJRSi9JQUdaUkFBQUFBQUFBT0JCWXdSQUlBR3FEQUVMUVlDQWdJQjRDeUlHUVpESkFXb3RBQUFnQzNJNkFBQWdBU0FHdDZGRUFBQUFBQUFBTUVDaUlRRUNRQ0FGUVFGcUlnY2dERUVRYW10QkFVY05BQ0FCUkFBQUFBQUFBQUFBWVNBSWNRMEFJQVZCTGpvQUFTQUZRUUpxSVFjTElBRkVBQUFBQUFBQUFBQmlEUUFMUVg4aERTQURRZjMvLy84SElBb2dFU0FPYXlJSWFpSUdhMG9OQUNBQVFTQWdBaUFHSUFOQkFtb2dCeUFNUVJCcUlnVnJJZ2NnQjBFQ2F5QURTQnNnQnlBREd5SURhaUlHSUFRUUlDQUFJQWtnQ2hBZUlBQkJNQ0FDSUFZZ0JFR0FnQVJ6RUNBZ0FDQUZJQWNRSGlBQVFUQWdBeUFIYTBFQVFRQVFJQ0FBSUE0Z0NCQWVJQUJCSUNBQ0lBWWdCRUdBd0FCekVDQWdBaUFHSUFJZ0Jrb2JJUTBMSUF4QnNBUnFKQUFnRFFzRUFFSUFDd1FBUVFBTEhBQWdBQ2dDUEJBUklnQUVmMEhVelFFZ0FEWUNBRUYvQlVFQUN3dktBZ0VIZnlNQVFTQnJJZ01rQUNBRElBQW9BaHdpQkRZQ0VDQUFLQUlVSVFVZ0F5QUNOZ0ljSUFNZ0FUWUNHQ0FESUFVZ0JHc2lBVFlDRkNBQklBSnFJUVZCQWlFR0lBTkJFR29oQVFKL0EwQUNRQUpBQWtBZ0FDZ0NQQ0FCSUFZZ0EwRU1haEFCSWdRRWYwSFV6UUVnQkRZQ0FFRi9CVUVBQzBVRVFDQUZJQU1vQWd3aUIwWU5BU0FIUVFCT0RRSU1Bd3NnQlVGL1J3MENDeUFBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUUlBSU1Bd3NnQVNBSElBRW9BZ1FpQ0VzaUNVRURkR29pQkNBSElBaEJBQ0FKRzJzaUNDQUVLQUlBYWpZQ0FDQUJRUXhCQkNBSkcyb2lBU0FCS0FJQUlBaHJOZ0lBSUFVZ0Iyc2hCU0FHSUFscklRWWdCQ0VCREFFTEN5QUFRUUEyQWh3Z0FFSUFOd01RSUFBZ0FDZ0NBRUVnY2pZQ0FFRUFJQVpCQWtZTkFCb2dBaUFCS0FJRWF3c2dBMEVnYWlRQUMxSUJBWDhnQUNnQ1BDTUFRUkJySWdBa0FDQUJweUFCUWlDSXB5QUNRZjhCY1NBQVFRaHFFQWtpQWdSL1FkVE5BU0FDTmdJQVFYOEZRUUFMSVFJZ0FDa0RDQ0VCSUFCQkVHb2tBRUovSUFFZ0Foc0xCZ0FnQUJBQUN3WUFJQUFRQXd2dmdRRUZBM3d5ZndoN0EzNEdmU01BUWVEQUFHc2lHaVFBSUJwQkFEWUNJRUVDSVE0Q1FBSkFJQUFvQWdBaUNFR05sSnpVQUVZTkFDQUlRZitmL1k4RlJ3UkFBa0FnQ0VHQWdJRGdBRWNOQUNBQUtBSUVRZXFnZ1lFQ1J3MEFJQUFvQWdoQmpaU2MxQUJHRFFJTFFjMElFQUJCQVNFT0RBSUxRUUFoRGdzQ2YwRUFRUUZCNEFBUUZ5SUlSUTBBR2lBSVFRRTJBa3dDUUFKQUFrQUNRQ0FPRGdNQUF3RURDeUFJUWNRQU5nSllJQWhCeFFBMkFsUWdDRUhHQURZQ1VDQUlRY2NBTmdJUUlBaEJ5QUEyQWdRZ0NFSEpBRFlDSENBSVFjb0FOZ0lZSUFoQnl3QTJBaFFnQ0VITUFEWUNBQ0FJUWMwQU5nSmNJQWhCemdBMkFpd2dDRUhQQURZQ0tDQUlRZEFBTmdJa0lBaEIwUUEyQWlBZ0NFSFNBRFlDRENBSVFkTUFOZ0lJSUFnUVZpSU5OZ0l3SUEwTkFRd0NDeUFJUWRRQU5nSllJQWhCMVFBMkFsUWdDRUhXQURZQ1VDQUlRZGNBTmdJUUlBaEIyQUEyQWdRZ0NFSFpBRFlDWENBSVFkb0FOZ0lzSUFoQjJ3QTJBaWdnQ0VIY0FEWUNKQ0FJUWQwQU5nSWdJQWhCM2dBMkFod2dDRUhmQURZQ0dDQUlRZUFBTmdJVUlBaEI0UUEyQWd3Z0NFSGlBRFlDQ0NBSVFlTUFOZ0lBSUFnQ2YwRUJRWWdCRUJjaURRUkFJQTBRVmlJVU5nSUFBa0FnRkVVTkFDQU4vUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDYkNBTlFRQTZBSHdnRFJBNUloUTJBZ1FnRkVVTkFDQU5FRGtpRkRZQ0NDQVVSUTBBSUEwTUFnc2dEUkI5QzBFQUN5SU5OZ0l3SUExRkRRRUxJQWhCQVRZQ1NDQUlRUUUyQWtBZ0NFRUFOZ0k4SUFoQ0FEY0NOQ0FJUVFFMkFrUWdDQXdCQ3lBSUVCUkJBQXNpRFFSQUlBMUJBRFlDUENBTlFlUUFOZ0pJQ3lBTkJFQWdEVUVBTmdJNElBMUI1UUEyQWtRTElBMEVRQ0FOUVFBMkFqUWdEVUhtQURZQ1FBc2dHa0VrYWlJSUJFQWdDRUVBUWJqQUFCQVpJZ2hCQURZQ3VFQWdDRUovTndLSVFBc2dBd1JBSUJvZ0dpZ0MzRUJCQVhJMkF0eEFDeUFhSUFFMkFod2dHaUFBTmdJWUlCb2dBRFlDRkVFQklRNUJBQ0VCQWtBZ0drRVVhaUlJUlEwQVFRRkJ5QUFRRnlJQUJIOENmeUFBUVlDQXdBQTJBa0FnQUVHQWdNQUFFQmdpRkRZQ0lDQVVSUVJBSUFBUUZFRUFEQUVMSUFBZ0ZEWUNKQ0FBUVFJMkFod2dBRUVETmdJWUlBQkJCRFlDRkNBQVFRVTJBaEFnQUVFR05nSXNJQUJCQ0RZQ0tDQUFJQUFvQWtSQkFuSTJBa1FnQUFzRlFRQUxJZ0JGRFFBZ0FBUkFJQUJCQURZQ0JDQUFJQWcyQWdBTElBZzFBZ2doUWlBQUJFQWdBQ0JDTndNSUN3SkFJQUJGRFFBZ0FDMEFSRUVDY1VVTkFDQUFRY0FBTmdJUUN5QUFCRUFnQUVIQ0FEWUNHQXNnQUFSQUlBQkJ3d0EyQWh3TElBQWhBUXNnQVNFQUFuOGdHa0VrYWlFQkFrQWdEVVVOQUNBQlJRMEFJQTBvQWt4RkJFQWdEVUUwYWtFQlFZbk5BRUVBRUJOQkFBd0NDeUFOS0FJd0lBRWdEU2dDR0JFREFFRUJJUWtMSUFrTFJRUkFRZHdJRUFBZ0FCQTlJQTBRUGd3QkN3Si9JQnBCSUdvaEFVRUFJUWdDUUNBQVJRMEFJQTFGRFFBZ0RTZ0NURVVFUUNBTlFUUnFRUUZCMnMwQVFRQVFFMEVBREFJTElBQWdEU2dDTUNBQklBMUJOR29nRFNnQ0FCRUJBQ0VJQ3lBSUMwVUVRRUg0Q0JBQUlBQVFQU0FORUQ0Z0dpZ0NJQkFsREFFTElCb29BaUFoQVVFQUlRZ0NRQ0FOUlEwQUlBQkZEUUFnRFNnQ1RFVU5BQ0FOS0FJd0lBQWdBU0FOUVRScUlBMG9BZ1FSQVFBaENBc0NRQ0FJQkVCQkFDRUlBa0FnRFVVTkFDQUFSUTBBSUEwb0FreEZEUUFnRFNnQ01DQUFJQTFCTkdvZ0RTZ0NFQkVBQUNFSUN5QUlEUUVMUWY4SkVBQWdEUkErSUFBUVBTQWFLQUlnRUNVTUFRc2dBQkE5SUEwUVBpQWFLQUlnSWhRb0Fod2lBQVJBSUFBUUZDQWFLQUlnSWhSQ0FEY0NIQXNnRkNnQ0VDRWhBa0FDUUNBQ1JRUkFBa0FnQkVVTkFDQWhRUVJIRFFCQkFTRVpRUVFoSVF3REN3SkFBa0FnRkNnQ0ZDSUJRUU5HRFFBZ0lVRURSdzBBSUJRb0FoZ2lBQ2dDQUNBQUtBSUVSdzBCSUFBb0FqUkJBVVlOQVNBVVFRTTJBaFFNQXdzZ0lVRUNTdzBBSUJSQkFqWUNGQXdEQ3dKQUFrQWdBVUVEYXc0REF3RUFCQXNqQUVFUWF5SUpKQUFDUUFKQUFrQWdGQ2dDRUVFRVNRMEFJQlFvQWhnaUFDZ0NBQ0lCSUFBb0FqUkhEUUFnQVNBQUtBSm9SdzBBSUFFZ0FDZ0NuQUZIRFFBZ0FDZ0NCQ0lCSUFBb0FqaEhEUUFnQVNBQUtBSnNSdzBBSUFFZ0FDZ0NvQUZHRFFFTElBbEJuUWcyQWdRZ0NVRzRDallDQUVHd3l3RkJ6ajhnQ1JBYURBRUxBa0FnQUNnQ0RDQUFLQUlJYkNJTlJRUkFJQUFvQXNnQklRRU1BUXREQUFDQVAwRi9JQUFvQXJRQmRFRi9jN09WSVVWREFBQ0FQMEYvSUFBb0FvQUJkRUYvYzdPVklVZERBQUNBUDBGL0lBQW9Ba3gwUVg5enM1VWhTRU1BQUlBL1FYOGdBQ2dDR0hSQmYzT3psU0ZHSUFBb0FzZ0JJUUVnQUNnQ2xBRWhBaUFBS0FKZ0lRb2dBQ2dDTENFSVFRQWhBQUpBSUExQkNFa05BQ0FJSUFvZ0RVRUNkQ0lMYWlJUFNTQUtJQWdnQzJvaUZrbHhEUUFnQWlBV1NTQUlJQUlnQzJvaURFbHhEUUFnQVNBV1NTQUlJQUVnQzJvaUMwbHhEUUFnQ2lBTVNTQUNJQTlKY1EwQUlBRWdEMGtnQ2lBTFNYRU5BQ0FCSUF4SklBSWdDMGx4RFFBZ0RVRjhjU0VBSUVYOUV5RTZJRWY5RXlFN0lFajlFeUZBSUViOUV5RTlRUUFoQ3dOQUlBSWdDMEVDZENJUGFpSVcvUUFDQUNFK0lBb2dEMm9pRFAwQUFnQWhQeUFJSUE5cUloRDlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdQU0FRL1FBQ0FQMzZBZjNtQWYzbEFmME1BQUIvUXdBQWYwTUFBSDlEQUFCL1EvM21BZjBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUE2SUFFZ0QycjlBQUlBL2ZvQi9lWUIvZVVCSWp6OTVnSDkrQUg5Q3dJQUlBejlEQUFBZ0Q4QUFJQS9BQUNBUHdBQWdEOGdRQ0EvL2ZvQi9lWUIvZVVCL1F3QUFIOURBQUIvUXdBQWYwTUFBSDlEL2VZQklEejk1Z0g5K0FIOUN3SUFJQmI5REFBQWdEOEFBSUEvQUFDQVB3QUFnRDhnT3lBKy9mb0IvZVlCL2VVQi9Rd0FBSDlEQUFCL1F3QUFmME1BQUg5RC9lWUJJRHo5NWdIOStBSDlDd0lBSUF0QkJHb2lDeUFBUncwQUN5QUFJQTFHRFFFTEEwQUNmME1BQUlBL0lFWWdDQ0FBUVFKMElndHFJZzhvQWdDeWxKTkRBQUIvUTVSREFBQ0FQeUJGSUFFZ0Myb29BZ0N5bEpNaVNaUWlTb3REQUFBQVQxMEVRQ0JLcUF3QkMwR0FnSUNBZUFzaEZpQUNJQXRxSWd3b0FnQWhFQ0FLSUF0cUlnc29BZ0FoRGlBUElCWTJBZ0FnQ3dKL1F3QUFnRDhnU0NBT3NwU1RRd0FBZjBPVUlFbVVJa3FMUXdBQUFFOWRCRUFnU3FnTUFRdEJnSUNBZ0hnTE5nSUFJQXdDZjBNQUFJQS9JRWNnRUxLVWswTUFBSDlEbENCSmxDSkppME1BQUFCUFhRUkFJRW1vREFFTFFZQ0FnSUI0Q3pZQ0FDQUFRUUZxSWdBZ0RVY05BQXNMSUFFUUZDQVVLQUlZSWdCQkNEWUNnQUVnQUVFSU5nSk1JQUJCQ0RZQ0dDQUFRUUEyQXNnQklCUkJBVFlDRkNBVUlCUW9BaEJCQVdzaUFEWUNFQ0FBUVFSSkRRQkJBeUVBQTBBZ0ZDZ0NHQ0FBUVRSc2FpSUJJQUVvQW1RMkFqQWdBU0FCL1FBQ1ZQMExBaUFnQVNBQi9RQUNSUDBMQWhBZ0FTQUIvUUFDTlAwTEFnQWdBRUVCYWlJQUlCUW9BaEJKRFFBTEN5QUpRUkJxSkFBTUF3c2pBRUVRYXlJSkpBQUNRQUpBQWtBZ0ZDZ0NFRUVEU1EwQUlCUW9BaGdpQUNnQ0FDSUJJQUFvQWpSSERRQWdBU0FBS0FKb1J3MEFJQUFvQWdRaUFTQUFLQUk0UncwQUlBRWdBQ2dDYkVZTkFRc2dDVUhiQ0RZQ0JDQUpRYmdLTmdJQVFiRExBVUg0UHlBSkVCb01BUXNDUUNBQUtBSU1JQUFvQWdoc0lnSkZEUUJCZnlBQUtBSVlJZ3AwUVg5eklRRkJBRUVCSUFwQkFXdDBJZ29nQUNnQ2lBRWJJUTlCQUNBS0lBQW9BbFFiSVJZZ0FDZ0NsQUVoQ2lBQUtBSmdJUWdnQUNnQ0xDRU5RUUFoQUFKQUlBSkJCRWtOQUNBTklBZ2dBa0VDZENJTGFpSU1TU0FJSUFzZ0RXb2lFRWx4RFFBZ0NpQVFTU0FOSUFvZ0Myb2lDMGx4RFFBZ0NDQUxTU0FLSUF4SmNRMEFJQUpCZkhFaEFDQUIvUkVoUENBUC9SRWhQU0FXL1JFaFBrRUFJUXNEUUNBTklBdEJBblFpREdvaUVDQThJQW9nREdvaUR2MEFBZ0FnUGYyeEFmMzZBU0k2L1F4cGRMTS9hWFN6UDJsMHN6OXBkTE0vL2VZQklBZ2dER29pRFAwQUFnQWdQdjJ4QWYzNkFTSTcvUXl6V1JxNHMxa2F1TE5aR3JpeldScTQvZVlCSUJEOUFBSUEvZm9CSWtEOTVBSDk1QUg5REFBQUFEOEFBQUEvQUFBQVB3QUFBRC85NUFIOStBRWlQLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDI0QVNBOElELzlPZjFTL1FzQ0FDQU1JRHdnT3YwTUdkQTJ2eG5RTnI4WjBEYS9HZEEydi8zbUFTQkEvUXpWQ1lBLzFRbUFQOVVKZ0QvVkNZQS8vZVlCSUR2OURDY3hzTDRuTWJDK0p6R3d2aWN4c0w3OTVnSDk1QUg5NUFIOURBQUFBRDhBQUFBL0FBQUFQd0FBQUQvOTVBSDkrQUVpUC8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAyNEFTQThJRC85T2YxUy9Rc0NBQ0FPSUR3Z092ME12VGNHdDcwM0JyZTlOd2EzdlRjR3QvM21BU0JBL1F4bTlIOC9adlIvUDJiMGZ6OW05SDgvL2VZQklEdjlERFhTNGo4MTB1SS9OZExpUHpYUzRqLzk1Z0g5NUFIOTVBSDlEQUFBQUQ4QUFBQS9BQUFBUHdBQUFELzk1QUg5K0FFaU92ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMjRBU0E4SURyOU9mMVMvUXNDQUNBTFFRUnFJZ3NnQUVjTkFBc2dBQ0FDUmcwQkN3TkFBbjhnQ2lBQVFRSjBJZ3RxSWd3b0FnQWdEMnV5SWtWRGFYU3pQNVFnQ0NBTGFpSVFLQUlBSUJacnNpSkhRN05aR3JpVUlBc2dEV29pRGlnQ0FMSWlTSktTUXdBQUFEK1NJa2FMUXdBQUFFOWRCRUFnUnFnTUFRdEJnSUNBZ0hnTElRc2dEaUFCSUF0QkFDQUxRUUJLR3lBQklBdElHellDQUNBUUlBRUNmeUJGUXhuUU5yK1VJRWhEMVFtQVA1UWdSME1uTWJDK2xKS1NRd0FBQUQrU0lrYUxRd0FBQUU5ZEJFQWdScWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBTUlBRUNmeUJGUTcwM0JyZVVJRWhEWnZSL1A1UWdSME0xMHVJL2xKS1NRd0FBQUQrU0lrV0xRd0FBQUU5ZEJFQWdSYWdNQVF0QmdJQ0FnSGdMSWd0QkFDQUxRUUJLR3lBQklBdElHellDQUNBQVFRRnFJZ0FnQWtjTkFBc0xJQlJCQVRZQ0ZBc2dDVUVRYWlRQURBSUxJQ0VnQWlBQ0lDRkxHeUVoUVFFaEdRd0JDd0pBQWtBQ2Z3SkFBa0FnRkNnQ0dDSUJLQUlBUVFGSERRQUNRQUpBSUFFb0FqUkJBV3NPQWdFQUFnc2dBU2dDYUVFQ1J3MEJBa0FnQVNnQ0JFRUJSdzBBSUFFb0FqaEJBa2NOQUNBQktBSnNRUUpIRFFBZ0ZDSVdLQUlZSWdBb0FoZ2hBU0FBS0FLVUFTRU9JQUFvQW1BaENpQUFLQUlzSVJBZ0FDZ0NQQ0VmSUFBb0FnZ2lDU0FBS0FJTUlnSnNRUUowSWdBUUhDRUlJQUFRSENFTklBQVFIQ0VVQWtBQ1FBSkFBa0FDUUFKQUlBaEZEUUFnRFVVTkFDQVVSUTBBUVg4Z0FYUkJmM01oREVFQklBRkJBV3QwSVJFZ0FpQVdLQUlFUVFGeElnQnJJU1lnRmlnQ0FFRUJjU0VkSUFCRkRRTWdDVVVOQXdKL1FRQWdFV3V5dXlJRlJHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSVJNQ2Z5QUZSQ2N4Q0t3Y1d2dy9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNoRlNBSlFRaEpBbjhnQlVRNzMwK05sMjcyUDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElSc05BU0FOSUFoclFSQkpEUUVnRkNBSWEwRVFTUTBCSUFnZ0VHdEJFRWtOQVNBVUlBMXJRUkJKRFFFZ0RTQVFhMEVRU1EwQklCUWdFR3RCRUVrTkFTQVVJQWxCZkhFaUQwRUNkQ0lDYWlFQUlBSWdDR29oQVNBVi9SRWhPeUFUL1JFaFFDQU0vUkVoUENBYi9SRWhQUU5BSUFnZ0YwRUNkQ0lMYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBTElCQnEvUUFDQUNJNklEMzlyZ0VpUGlBOC9iWUJJRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQ0FMSUExcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb2dRUDJ4QVNJK0lEejl0Z0VnUHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBSUFzZ0ZHcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdPaUE3L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVdjBMQWdBZ0YwRUVhaUlYSUE5SERRQUxJQUlnRUdvaEVDQUNJQTFxSVFJZ0NTQVBSZzBFREFJTElBZ1FGQ0FORUJRZ0ZCQVVEQVFMSUFnaEFTQU5JUUlnRkNFQUN3TkFJQUVnRUNnQ0FDSUxJQnRxSWhjZ0RDQU1JQmRLRzBFQUlCZEJBRTRiTmdJQUlBSWdDeUFUYXlJWElBd2dEQ0FYU2h0QkFDQVhRUUJPR3pZQ0FDQUFJQXNnRldvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBRUVFYWlFQUlBSkJCR29oQWlBQlFRUnFJUUVnRUVFRWFpRVFJQTlCQVdvaUR5QUpSdzBBQ3d3QkN5QVVJUUFnRFNFQ0lBZ2hBUXNnQ1NBZGF5RWlBa0FnSmtGK2NTSW5CSDhDZjBFQUlCRnJzcnNpQlVScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVlSUNKQmZuRWlLRUVCYXdKL0lBVkVKekVJckJ4YS9EK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVnUVg1eEFuOGdCVVE3MzArTmwyNzJQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVNNZ0owRUJheUVwUVFKcUlRc2dDVUVDZENFYkEwQWdBQ0FiYWlFWElBSWdHMm9oRlNBQklCdHFJUThnRUNBYmFpRVRJQjBFUUNBQklCQW9BZ0FpQ1NBamFpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FDSUFrZ0htc2lFaUFNSUF3Z0Vrb2JRUUFnRWtFQVRoczJBZ0FnQUNBSklDQnFJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFvb0FnQWhHQ0FQQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFUS0FJQUlnbHFJaElnRENBTUlCSktHMEVBSUJKQkFFNGJOZ0lBSUJVZ0NRSi9JQmdnRVd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FYQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQWxxSWdrZ0RDQUpJQXhJRzBFQUlBbEJBRTRiTmdJQUlCZEJCR29oRnlBVlFRUnFJUlVnRDBFRWFpRVBJQk5CQkdvaEV5QUNRUVJxSVFJZ0VFRUVhaUVRSUFGQkJHb2hBU0FBUVFScUlRQUxRUUFoQ1NBb0JFQURRQ0FLS0FJQUlSd2dBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFQ2dDQUNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNBQ0FDSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQUNBS0tBSUFJUndnQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0JDSVNhaUlZSUF3Z0RDQVlTaHRCQUNBWVFRQk9HellDQkNBQ0lCSUNmeUFjSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lHQ0FNSUF3Z0dFb2JRUUFnR0VFQVRoczJBZ1FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFTYWlJU0lBd2dEQ0FTU2h0QkFDQVNRUUJPR3pZQ0JDQUtLQUlBSVJ3Z0R3Si9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0V5Z0NBQ0lTYWlJWUlBd2dEQ0FZU2h0QkFDQVlRUUJPR3pZQ0FDQVZJQklDZnlBY0lCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpR0NBTUlBd2dHRW9iUVFBZ0dFRUFUaHMyQWdBZ0Z3Si9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBU2FpSVNJQXdnRENBU1NodEJBQ0FTUVFCT0d6WUNBQ0FLS0FJQUlSd2dEd0ovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFeWdDQkNJU2FpSVlJQXdnRENBWVNodEJBQ0FZUVFCT0d6WUNCQ0FWSUJJQ2Z5QWNJQkZyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUdDQU1JQXdnR0VvYlFRQWdHRUVBVGhzMkFnUWdGd0ovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVNhaUlTSUF3Z0RDQVNTaHRCQUNBU1FRQk9HellDQkNBT1FRUnFJUTRnQ2tFRWFpRUtJQmRCQ0dvaEZ5QVZRUWhxSVJVZ0QwRUlhaUVQSUJOQkNHb2hFeUFBUVFocUlRQWdBa0VJYWlFQ0lBRkJDR29oQVNBUVFRaHFJUkFnQ1VFQ2FpSUpJQ2hKRFFBTElBc2hDUXNDUUNBSklDSlBEUUFnRUNnQ0FDRVNJQThDZnlBZklBbEJBWFlpR0VZRVFDQUJJQklnSTJvaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdBaUFTSUI1cklna2dEQ0FKSUF4SUcwRUFJQWxCQUU0Yk5nSUFJQUFnRWlBZ2FpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNBQ0FUS0FJQUlna2dIbXNpRHlBTUlBd2dEMG9iUVFBZ0QwRUFUaHNoRHlBSklDQnFJUk1nQ1NBamFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d3d0JDeUFLS0FJQUlROGdBUUovSUE0b0FnQWdFV3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFbW9pQ1NBTUlBa2dERWdiUVFBZ0NVRUFUaHMyQWdBZ0FpQVNBbjhnRHlBUmE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2tnRENBSklBeElHMEVBSUFsQkFFNGJOZ0lBSUFBQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRW1vaUNTQU1JQWtnREVnYlFRQWdDVUVBVGhzMkFnQWdFeWdDQUNJSkFuOGdDaWdDQUNBUmE3SzdJZ1ZFYXJ4MGt4Z0UxaitpSUE0b0FnQWdFV3V5dXlJR1JBd0NLNGNXMmVZL29xQWlCNWxFQUFBQUFBQUE0RUZqQkVBZ0I2b01BUXRCZ0lDQWdIZ0xheUlQSUF4SUlSTWdEeUFNSUJNYklSTWdEMEVBU0NFU0FuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFscUlnOGdEQ0FNSUE5S0d5RWNJQTlCQUVnaEpFRUFJQk1nRWhzaER3Si9JQVZFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpRVRRUUFnSENBa0d3czJBZ0FnRlNBUE5nSUFJQmNnRXlBTUlBd2dFMG9iUVFBZ0UwRUFUaHMyQWdBZ0FFRUVhaUVBSUFKQkJHb2hBaUFCUVFScUlRRWdFRUVFYWlFUUlCZ2dIMDhOQUNBT1FRUnFJUTRnQ2tFRWFpRUtDeUFBSUJ0cUlRQWdBaUFiYWlFQ0lBRWdHMm9oQVNBUUlCdHFJUkFnSlVFQ2FpSWxJQ2RKRFFBTElDbEJmbkZCQW1vRlFRQUxJQ1pQRFFBZ0hRUkFJQUVDZjBFQUlCRnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElCQW9BZ0FpQ1dvaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBaUFKQW44Z0JVUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0QzJzaUN5QU1JQXNnREVnYlFRQWdDMEVBVGhzMkFnQWdBQUovSUFWRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlKSUF3Z0NTQU1TQnRCQUNBSlFRQk9HellDQUNBQ1FRUnFJUUlnRUVFRWFpRVFJQUZCQkdvaEFTQUFRUVJxSVFBTElDSWdJa0YrY1NJYkJIOGdHMEVCYXlJSlFYNXhBa0FDZjBFQUlCdEJEMGtOQUJwQkFDQUJJQUlnQ1VFQmRpSVZRUU4wUVFocUloTnFJZ2xKSUFJZ0FTQVRhaUlMU1hFTkFCcEJBQ0FBSUF0SklBRWdBQ0FUYWlJUFNYRU5BQnBCQUNBQklCQWdFMm9pRTBrZ0N5QVFTM0VOQUJwQkFDQUtJQXRKSUFFZ0NpQVZRUUowUVFScUloSnFJaGRKY1EwQUdrRUFJQXNnRGtzZ0FTQU9JQkpxSWd0SmNRMEFHa0VBSUFJZ0Qwa2dBQ0FKU1hFTkFCcEJBQ0FDSUJOSklBa2dFRXR4RFFBYVFRQWdBaUFYU1NBSklBcExjUTBBR2tFQUlBSWdDMGtnQ1NBT1MzRU5BQnBCQUNBQUlCTkpJQThnRUV0eERRQWFRUUFnQUNBWFNTQUtJQTlKY1EwQUdrRUFJQUFnQzBrZ0RpQVBTWEVOQUJvZ0NpQVZRUUZxSWlWQi9QLy8vd2R4SWhkQkFuUWlKbW9oQ1NBQUlCZEJBM1FpRW1vaEN5QUJJQkpxSVE4Z0RQMFJJVHdnRWYwUklVQkJBQ0VWQTBBZ0VDQVZRUU4wSWhOQkdISWlIV29pSnlBUUlCTkJFSElpSG1vaUtDQVFJQk5CQ0hJaUlHb2lHQ0FRSUJOcUlpbjlYQUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJVG9DZnlBT0lCVkJBblFpSEdyOUFBSUFJRUQ5c1FIOStnRWlPLzFmSWozOUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlQdjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEpDQUtJQnhxL1FBQ0FDRS9JQUVnRTJvaUhQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnUHYwaEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FrL1J3QkFuOGdPeUE3L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVB2ME1POTlQalpkdTlqODczMCtObDI3MlAvM3lBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWtIOXJnRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FCSUNCcUlpUWdPLzFhQWdBQklBRWdIbW9pTENBNy9Wb0NBQUlnQVNBZGFpSXRJRHY5V2dJQUF3Si9JRDhnUVAyeEFmMzZBU0k3L1Y4aVAvME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0E5L1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJajM5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElTb2dBaUFUYWlJdS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlEb0NmeUE5L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQ3I5SEFFQ2Z5QTcvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpUGYwTWFyeDBreGdFMWo5cXZIU1RHQVRXUC8zeUFTQSsvUXdNQWl1SEZ0bm1Qd3dDSzRjVzJlWS8vZklCL2ZBQklqdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdPLzBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBTWlQdjJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlPLzFhQWdBQUlBSWdJR29pS2lBNy9Wb0NBQUVnQWlBZWFpSXZJRHY5V2dJQUFpQUNJQjFxSWpBZ08vMWFBZ0FEQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RXJJQUFnRTJvaUUvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTZBbjhnTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlFU0FyL1J3QkFuOGdQZjBNSnpFSXJCeGEvRDhuTVFpc0hGcjhQLzN5QVNJNi9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQWdKL0lEcjlJUUVpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3RElqMzlyZ0VpT2lBOC9iWUJJRHI5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqcjlXZ0lBQUNBQUlDQnFJaUFnT3YxYUFnQUJJQUFnSG1vaUhpQTYvVm9DQUFJZ0FDQWRhaUlkSURyOVdnSUFBeUFjL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUNkQkJHb2dLRUVFYWlBWVFRUnFJQ245WEFJRS9WWUNBQUg5VmdJQUF2MVdBZ0FESWpzZ1FmMnVBU0k2SUR6OXRnRWdPdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaU92MWFBZ1FBSUNRZ092MWFBZ1FCSUN3Z092MWFBZ1FDSUMwZ092MWFBZ1FESUM3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ095QSsvYkVCSWpvZ1BQMjJBU0E2L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTYvVm9DQkFBZ0tpQTYvVm9DQkFFZ0x5QTYvVm9DQkFJZ01DQTYvVm9DQkFNZ0UvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQTdJRDM5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQWdJRHI5V2dJRUFTQWVJRHI5V2dJRUFpQWRJRHI5V2dJRUF5QVZRUVJxSWhVZ0YwY05BQXNnRGlBbWFpRU9JQkFnRW1vaEVDQUNJQkpxSVFJZ0Z5QWxSZ1JBSUE4aEFTQUxJUUFnQ1NFS0RBSUxJQThoQVNBTElRQWdDU0VLSUJkQkFYUUxJUThEUUNBS0tBSUFJUk1nQVFKL0lBNG9BZ0FnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRUNnQ0FDSUphaUlMSUF3Z0N5QU1TQnRCQUNBTFFRQk9HellDQUNBQ0lBa0NmeUFUSUJGcnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lDeUFNSUFzZ0RFZ2JRUUFnQzBFQVRoczJBZ0FnQUFKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFKYWlJSklBd2dDU0FNU0J0QkFDQUpRUUJPR3pZQ0FDQUtLQUlBSVJNZ0FRSi9JQTRvQWdBZ0VXdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NCQ0lKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3pZQ0JDQUNJQWtDZnlBVElCRnJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpQ3lBTUlBc2dERWdiUVFBZ0MwRUFUaHMyQWdRZ0FBSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBSmFpSUpJQXdnQ1NBTVNCdEJBQ0FKUVFCT0d6WUNCQ0FPUVFScUlRNGdDa0VFYWlFS0lBQkJDR29oQUNBQ1FRaHFJUUlnQVVFSWFpRUJJQkJCQ0dvaEVDQVBRUUpxSWc4Z0cwa05BQXNMUVFKcUJVRUFDeUlMVFEwQUlCQW9BZ0FoQ1FKOElCOGdDMEVCZGtZRVFBSi9RUUFnRVd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnQ1dvaUNpQU1JQW9nREVnYlFRQWdDa0VBVGhzaERpQUZEQUVMQW44Z0RpZ0NBQ0FSYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFKYWlJTElBd2dDeUFNU0J0QkFDQUxRUUJPR3lFT0lBb29BZ0FnRVd1eXV3c2hCaUFCSUE0MkFnQWdBaUFKQW44Z0JrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUFTQU1JQUVnREVnYlFRQWdBVUVBVGhzMkFnQWdBQUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QUphaUlBSUF3Z0FDQU1TQnRCQUNBQVFRQk9HellDQUFzZ0ZpZ0NHQ2dDTEJBVUlCWW9BaGdpQUNBSU5nSXNJQUFvQW1BUUZDQVdLQUlZSWdBZ0RUWUNZQ0FBS0FLVUFSQVVJQllvQWhnaUFDQVVOZ0tVQVNBQUlBRDlBQUlBSWp6OUN3Sm9JQUFnUFAwTEFqUWdGa0VCTmdJVUN3d0hDeUFCS0FJRVFRRkhEUUVnQVNnQ09FRUJSdzBCSUFFb0FteEJBVWNOQVNBQktBSVlJUUFnQVNnQ2xBRWhBaUFCS0FKZ0lRc2dBU2dDTENFT0lBRW9BandoSUNBQktBSUlJZ29nQVNnQ0RDSWpiRUVDZENJQkVCd2hEeUFCRUJ3aEZpQUJFQndoRENBUFJRMEZJQlpGRFFVZ0RFVU5CU0FqQkVBZ0NpQVVLQUlBUVFGeElpeHJJU1VDZjBFQVFRRWdBRUVCYTNRaUUydXl1eUlGUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJU1pCZnlBQWRDQWxRWDV4SWlKQkFXc2lDa0VCZGlJQVFRRnFJU2NDZnlBRlJDY3hDS3djV3Z3L29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2hLQ0FLUVg1eElRb2dBRUVDZENFSUlBQkJBM1FoQUNBblFYeHhJUmRCZjNNaEVRSi9JQVZFTzk5UGpaZHU5aitpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFWUlBcEJBbW9oS1NBSVFRUnFJUndnQUVFSWFpRWJJQmRCQW5RaEpDQVhRUU4wSVJJZ0YwRUJkQ0VRSUJIOUVTRThJQlA5RVNGQUlDSkJCMGtoTFNBUElRb2dGaUVBSUF3aENBTkFJQ3dFUUNBS0lBNG9BZ0FpQVNBWWFpSU5JQkVnRFNBUlNCdEJBQ0FOUVFCT0d6WUNBQ0FBSUFFZ0ptc2lEU0FSSUEwZ0VVZ2JRUUFnRFVFQVRoczJBZ0FnQ0NBQklDaHFJZ0VnRVNBQklCRklHMEVBSUFGQkFFNGJOZ0lBSUFoQkJHb2hDQ0FLUVFScUlRb2dEa0VFYWlFT0lBQkJCR29oQUFzQ2Z3Si9JQ0pGQkVBZ0N5RUpJQWdoQVNBS0lRMUJBQXdCQzBFQUlSa0NRQUpBSUMwTkFDQUtJQUFnRzJvaUFVa2dBQ0FLSUJ0cUlnMUpjUTBBSUFnZ0RVa2dDaUFJSUJ0cUlnbEpjUTBBSUFvZ0RpQWJhaUlWU1NBTklBNUxjUTBBSUFzZ0RVa2dDaUFMSUJ4cUloOUpjUTBBSUFJZ0RVa2dDaUFDSUJ4cUlnMUpjUTBBSUFBZ0NVa2dBU0FJUzNFTkFDQUFJQlZKSUFFZ0RrdHhEUUFnQUNBZlNTQUJJQXRMY1EwQUlBQWdEVWtnQVNBQ1MzRU5BQ0FJSUJWSklBa2dEa3R4RFFBZ0NDQWZTU0FKSUF0TGNRMEFJQUlnQ1VrZ0NDQU5TWEVOQUNBTElDUnFJUWtnQ0NBU2FpRUJJQW9nRW1vaERRTkFJQTRnR1VFRGRDSVZRUmh5SWg5cUlpb2dEaUFWUVJCeUloMXFJaTRnRGlBVlFRaHlJaDVxSWk4Z0RpQVZhaUl3L1Z3Q0FQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlFNkFuOGdBaUFaUVFKMElpdHEvUUFDQUNCQS9iRUIvZm9CSWp2OVh5STkvUXc3MzArTmwyNzJQenZmVDQyWGJ2WS8vZklCSWo3OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJVEVnQ3lBcmF2MEFBZ0FoUHlBS0lCVnFJaXY5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lENzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ01mMGNBUUovSURzZ08vME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvMWZJajc5RER2ZlQ0MlhidlkvTzk5UGpaZHU5ai85OGdFaU8vMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFJQ2Z5QTcvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0F5SkIvYTRCSWpzZ1BQMjJBU0E3L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTcvVm9DQUFBZ0NpQWVhaUl4SUR2OVdnSUFBU0FLSUIxcUlqTWdPLzFhQWdBQ0lBb2dIMm9pTkNBNy9Wb0NBQU1DZnlBL0lFRDlzUUg5K2dFaU8vMWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUV5SUFBZ0ZXb2lOZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0E2QW44Z1BmMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5RVNBeS9Sd0JBbjhnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8xZklqMzlER3E4ZEpNWUJOWS9hcngwa3hnRTFqLzk4Z0VnUHYwTURBSXJoeGJaNWo4TUFpdUhGdG5tUC8zeUFmM3dBU0k3L1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBZ0ovSUR2OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndESWo3OXNRRWlPeUE4L2JZQklEdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWp2OVdnSUFBQ0FBSUI1cUlqSWdPLzFhQWdBQklBQWdIV29pTmlBNy9Wb0NBQUlnQUNBZmFpSTNJRHY5V2dJQUF3Si9JRC85RENjeENLd2NXdncvSnpFSXJCeGEvRC85OGdFaU8vMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoT0NBSUlCVnFJaFg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT2dKL0lEdjlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1JFZ09QMGNBUUovSUQzOURDY3hDS3djV3Z3L0p6RUlyQnhhL0QvOThnRWlPdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE2L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBeUk5L2E0Qklqb2dQUDIyQVNBNi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVaUk2L1ZvQ0FBQWdDQ0FlYWlJZUlEcjlXZ0lBQVNBSUlCMXFJaDBnT3YxYUFnQUNJQWdnSDJvaUh5QTYvVm9DQUFNZ0svME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQXFRUVJxSUM1QkJHb2dMMEVFYWlBdy9Wd0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5STdJRUg5cmdFaU9pQTgvYllCSURyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJanI5V2dJRUFDQXhJRHI5V2dJRUFTQXpJRHI5V2dJRUFpQTBJRHI5V2dJRUF5QTEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRHNnUHYyeEFTSTZJRHo5dGdFZ092ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpT3YxYUFnUUFJRElnT3YxYUFnUUJJRFlnT3YxYUFnUUNJRGNnT3YxYUFnUURJQlg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnT3lBOS9hNEJJam9nUFAyMkFTQTYvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VWlJNi9Wb0NCQUFnSGlBNi9Wb0NCQUVnSFNBNi9Wb0NCQUlnSHlBNi9Wb0NCQU1nR1VFRWFpSVpJQmRIRFFBTElBSWdKR29oQWlBT0lCSnFJUTRnQUNBU2FpRUFJQkFoR1NBcElCY2dKMFlOQWhvTUFRc2dDaUVOSUFnaEFTQUxJUWtMQTBBZ0NTZ0NBQ0VMSUEwQ2Z5QUNLQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUE0b0FnQWlDbW9pQ0NBUklBZ2dFVWdiUVFBZ0NFRUFUaHMyQWdBZ0FDQUtBbjhnQ3lBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVNBSUlCRklHMEVBSUFoQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnQ21vaUNpQVJJQW9nRVVnYlFRQWdDa0VBVGhzMkFnQWdDU2dDQUNFTElBMENmeUFDS0FJQUlCTnJzcnNpQlVRNzMwK05sMjcyUDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElBNG9BZ1FpQ21vaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzMkFnUWdBQ0FLQW44Z0N5QVRhN0s3SWdaRWFyeDBreGdFMWoraUlBVkVEQUlyaHhiWjVqK2lvQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXRySWdnZ0VTQUlJQkZJRzBFQUlBaEJBRTRiTmdJRUlBRUNmeUFHUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzZ0Ntb2lDaUFSSUFvZ0VVZ2JRUUFnQ2tFQVRoczJBZ1FnQWtFRWFpRUNJQWxCQkdvaENTQUJRUWhxSVFFZ0FFRUlhaUVBSUExQkNHb2hEU0FPUVFocUlRNGdHVUVDYWlJWklDSkpEUUFMSUNrTElnZ2dKVThFUUNBQklRZ2dEU0VLSUFrTUFRc2dEaWdDQUNFS0FuOGdJQ0FJUVFGMklobEdCRUFnQ2lBbWF5SUlJQkVnQ0NBUlNCdEJBQ0FJUVFCT0d5RUxJQW9nR0dvaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzaENDQW9EQUVMSUFvQ2Z5QUpLQUlBSUJOcnNyc2lCVVJxdkhTVEdBVFdQNklnQWlnQ0FDQVRhN0s3SWdaRURBSXJoeGJaNWoraW9DSUhtVVFBQUFBQUFBRGdRV01FUUNBSHFnd0JDMEdBZ0lDQWVBdHJJZ2dnRVVnaEN5QUlJQkVnQ3h0QkFDQUlRUUJPR3lFTEFuOGdCa1E3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFwcUlnZ2dFU0FJSUJGSUcwRUFJQWhCQUU0YklRZ0NmeUFGUkNjeENLd2NXdncvb2lJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzTElSVWdEU0FJTmdJQUlBQWdDellDQUNBQklBb2dGV29pQ2lBUklBb2dFVWdiUVFBZ0NrRUFUaHMyQWdBZ0FVRUVhaUVJSUFCQkJHb2hBQ0FOUVFScUlRb2dEa0VFYWlFT0lBa2dHU0FnVHcwQUdpQUNRUVJxSVFJZ0NVRUVhZ3NoQ3lBNVFRRnFJamtnSTBjTkFBc0xJQlFvQWhnb0Fpd1FGQ0FVS0FJWUlnQWdEellDTENBQUtBSmdFQlFnRkNnQ0dDSUFJQlkyQW1BZ0FDZ0NsQUVRRkNBVUtBSVlJZ0FnRERZQ2xBRWdBQ0FBL1FBQ0FDSTgvUXNDYUNBQUlEejlDd0kwSUJSQkFUWUNGRUVBSVJrTUJnc2dBU2dDYUVFQlJ3MEFJQUVvQWdSQkFVY05BQ0FCS0FJNFFRRkhEUUFnQVNnQ2JFRUJSdzBBSUFFb0FoZ2hBaUFCS0FLVUFTRUpJQUVvQW1BaERpQUJLQUlzSVFBZ0FTZ0NEQ0FCS0FJSWJDSU1RUUowSWdFUUhDRUlJQUVRSENFUElBRVFIQ0VMQWtBZ0NFVU5BQ0FQUlEwQUlBdEZEUUFnREVVTkJFRi9JQUowUVg5eklSbEJBU0FDUVFGcmRDRVRJQXhCQ0VrTkFpQVBJQWhyUVJCSkRRSWdDeUFJYTBFUVNRMENJQWdnQUd0QkVFa05BaUFJSUE1clFSQkpEUUlnQ0NBSmEwRVFTUTBDSUFzZ0QydEJFRWtOQWlBUElBQnJRUkJKRFFJZ0R5QU9hMEVRU1EwQ0lBOGdDV3RCRUVrTkFpQUxJQUJyUVJCSkRRSWdDeUFPYTBFUVNRMENJQXNnQ1d0QkVFa05BaUFKSUF4QmZIRWlDa0VDZENJUWFpRU5JQXNnRUdvaEFTQUlJQkJxSVFJZ0dmMFJJVHdnRS8wUklUb0RRQUovSUFrZ0ZrRUNkQ0lSYXYwQUFnQWdPdjJ4QWYzNkFTSTcvVjhpUGYwTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VCSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lFVklBNGdFV3I5QUFJQUlUOGdDQ0FSYXYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUlCRnEvUUFDQUNKQUFuOGdQdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUVTQVYvUndCQW44Z095QTcvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvVjhpTy8wTU85OVBqWmR1OWo4NzMwK05sMjcyUC8zeUFTSSsvU0VBSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0FnSi9JRDc5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0QvYTRCSWo0Z1BQMjJBU0ErL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVV2MExBZ0FDZnlBL0lEcjlzUUg5K2dFaVB2MWZJai85REdxOGRKTVlCTlkvYXJ4MGt4Z0Uxai85OGdFZ1BmME1EQUlyaHhiWjVqOE1BaXVIRnRubVAvM3lBZjN3QVNJOS9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUVWSUE4Z0VXcjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdRQUovSUQzOUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUkVnRmYwY0FRSi9JRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5WHlJOS9ReHF2SFNUR0FUV1AycThkSk1ZQk5ZLy9mSUJJRHY5REF3Q0s0Y1cyZVkvREFJcmh4Ylo1ai85OGdIOThBRWlPLzBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUE3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBLzJ4QVNJN0lEejl0Z0VnTy8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBQW44Z1AvME1KekVJckJ4YS9EOG5NUWlzSEZyOFAvM3lBU0k3L1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RVZJQXNnRVdyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1FBSi9JRHY5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9SRWdGZjBjQVFKL0lEMzlEQ2N4Q0t3Y1d2dy9KekVJckJ4YS9ELzk4Z0VpTy8waEFDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQUlDZnlBNy9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQS8ydUFTSTdJRHo5dGdFZ08vME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVkw5Q3dJQUlCWkJCR29pRmlBS1J3MEFDeUFLSUF4R0RRUWdEaUFRYWlFT0lBQWdFR29oQUNBUElCQnFEQU1MSUFnUUZDQVBFQlFnQ3hBVURBVUxJQnBCendNMkFnUWdHa0c0Q2pZQ0FFR3d5d0ZCbzhBQUlCb1FHZ3dFQ3lBSUlRSWdDeUVCSUFraERTQVBDeUVKQTBBZ0RpZ0NBQ0VSSUFJQ2Z5QU5LQUlBSUJOcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFBb0FnQWlGbW9pRUNBWklCQWdHVWdiUVFBZ0VFRUFUaHMyQWdBZ0NTQVdBbjhnRVNBVGE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJaEFnR1NBUUlCbElHMEVBSUJCQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRm1vaUZpQVpJQllnR1VnYlFRQWdGa0VBVGhzMkFnQWdBVUVFYWlFQklBbEJCR29oQ1NBQ1FRUnFJUUlnRFVFRWFpRU5JQTVCQkdvaERpQUFRUVJxSVFBZ0NrRUJhaUlLSUF4SERRQUxDeUFVS0FJWUtBSXNFQlFnRkNnQ0dDSUFJQWcyQWl3Z0FDZ0NZQkFVSUJRb0FoZ2lBQ0FQTmdKZ0lBQW9BcFFCRUJRZ0ZDZ0NHQ0FMTmdLVUFTQVVRUUUyQWhSQkFDRVpEQUVMSUE4UUZDQVdFQlFnREJBVUN5QWFLQUlnSVFBQ1FDQUREUUFnSVVVTkFDQUFLQUlZSVJSQkFDRVdBMEFnRkNBV1FUUnNhaUlES0FJWUlnSkJDRWNFUUFKQUlBSkJCMDBFUUNBREtBSU1JQU1vQWdoc0lRRWdBeWdDTENFSUlBTW9BaUFFUUNBQlJRMENRUUVnQWtFQmEzU3RJVUpCQUNFS0lBRkJCRThFUUNBQlFYeHhJUW9nUXYwU0lUeEJBQ0VPQTBBZ0NDQU9RUUowYWlJQ0lBTDlBQUlBSWpyOXh3RkJCLzNMQVNJNy9SMEFJRHo5SFFBaVEzLzlFaUE3L1IwQklEejlIUUVpUkgvOUhnRWdPaUE4L1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NjQlFRZjl5d0VpT3YwZEFDQkRmLzBTSURyOUhRRWdSSC85SGdIOURRQUJBZ01JQ1FvTEVCRVNFeGdaR2h2OUN3SUFJQTVCQkdvaURpQUtSdzBBQ3lBQklBcEdEUU1MQTBBZ0NDQUtRUUowYWlJQ0lBSTBBZ0JDQjRZZ1FuOCtBZ0FnQ2tFQmFpSUtJQUZIRFFBTERBSUxJQUZGRFFGQmZ5QUNkRUYvYzYwaFFrRUFJUW9nQVVFRVR3UkFJQUZCZkhFaENpQkMvUkloUEVFQUlRNERRQ0FJSUE1QkFuUnFJZ0lnQXYwQUFnQWlPdjNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSTcvUjBBSUR6OUhRQWlRNEQ5RWlBNy9SMEJJRHo5SFFFaVJJRDlIZ0VnT2lBOC9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ja0IvUXovQUFBQUFBQUFBUDhBQUFBQUFBQUEvZFVCSWpyOUhRQWdRNEQ5RWlBNi9SMEJJRVNBL1I0Qi9RMEFBUUlEQ0FrS0N4QVJFaE1ZR1JvYi9Rc0NBQ0FPUVFScUlnNGdDa2NOQUFzZ0FTQUtSZzBDQ3dOQUlBZ2dDa0VDZEdvaUFpQUNOUUlBUXY4QmZpQkNnRDRDQUNBS1FRRnFJZ29nQVVjTkFBc01BUXNnQWtFSWF5RUlJQU1vQWd3Z0F5Z0NDR3doQVNBREtBSXNJUTBnQXlnQ0lBUkFJQUZGRFFGQkFDRUtJQUZCQkU4RVFDQUJRWHh4SVFwQkFDRUNBMEFnRFNBQ1FRSjBhaUlKSUFuOUFBSUFJQWo5ckFIOUN3SUFJQUpCQkdvaUFpQUtSdzBBQ3lBQklBcEdEUUlMQTBBZ0RTQUtRUUowYWlJQ0lBSW9BZ0FnQ0hVMkFnQWdDa0VCYWlJS0lBRkhEUUFMREFFTElBRkZEUUJCQUNFS0lBRkJCRThFUUNBQlFYeHhJUXBCQUNFQ0EwQWdEU0FDUVFKMGFpSUpJQW45QUFJQUlBajlyUUg5Q3dJQUlBSkJCR29pQWlBS1J3MEFDeUFCSUFwR0RRRUxBMEFnRFNBS1FRSjBhaUlDSUFJb0FnQWdDSFkyQWdBZ0NrRUJhaUlLSUFGSERRQUxDeUFEUVFnMkFoZ0xJQlpCQVdvaUZpQWhSdzBBQ3dzZ0FDZ0NEQ0FBS0FJSWJDRUJBa0FnR1VVRVFDQUFLQUlVUVFKR0JFQWdBQ2dDRUVFQlJnUkFJQUFvQWhnb0Fpd2dBUkFTREFNTElBUkZEUUlnQUNnQ0dDSUFLQUlzSUFBb0FtQWdBUkFJREFJTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUVRQnd3QkN3SkFBa0FDUUNBaFFRRnJEZ1FBQXdFQ0F3c2dBQ2dDR0NnQ0xDQUJFQVlNQWdzZ0FDZ0NHQ0lBS0FJc0lBQW9BbUFnQUNnQ2xBRWdBUkFGREFFTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUFvQXNnQklBRVFCQXNnR2lnQ0lCQWxRUUFoRGdzZ0drSGd3QUJxSkFBZ0Rnc0lBRUVJSUFBUUtRdXJBZ0lDZmdKL1FuOGhBeUFBTFFCRVFRaHhSUVJBSUFBZ0FDZ0NJQ0lHTmdJa0FrQUNRQUpBSUFBZ0FDZ0NNQ0lGQkg4RFFDQUdJQVVnQUNnQ0FDQUFLQUlVRVFBQUlnVkJmMFlOQWlBQUlBQW9BaVFnQldvaUJqWUNKQ0FBSUFBb0FqQWdCV3NpQlRZQ01DQUZEUUFMSUFBb0FpQUZJQVlMTmdJa0lBRkNBRlVOQVVJQUlRTU1BZ3NnQUNBQUtBSkVRUWh5TmdKRUlBSkJCRUhQK1FCQkFCQVRJQUJCQURZQ01DQUFJQUFvQWtSQkNISTJBa1JDZnc4TFFnQWhBd05BSUFFZ0FDZ0NBQ0FBS0FJWUVRMEFJZ1JDZjFFRVFDQUNRUVJCd1BrQVFRQVFFeUFBSUFBb0FrUkJDSEkyQWtRZ0FDQUFLUU00SUFOOE53TTRRbjhnQXlBRFVCc1BDeUFESUFSOElRTWdBU0FFZlNJQlFnQlZEUUFMQ3lBQUlBQXBBemdnQTN3M0F6Z0xJQU1MSXdFQmZ5QUJJQUVvQWdBZ0FTZ0NDQ0lCSUFDbklnSWdBU0FDU1J0cU5nSUVRUUVMUEFJQ2Z3RitJQUVvQWdBZ0FTZ0NDR29pQXlBQktBSUVJZ0pHQkVCQ2Z3OExJQUVnQWlBQXAybzJBZ1FnQUNBRElBSnJyQ0lFSUFBZ0JGTWJDNXNCQVFWL1FRRWdBaWdDQ0NJSElBZEJBVTBiSVFRZ0FpZ0NCQ0lESUFJb0FnQnJJUVlEUUNBRUlnVkJBWFFoQkNBRklBWnJJQUZKRFFBTElBVWdCMGNFUUNBRkVCZ2lBMFVFUUVGL0R3c2dBaWdDQUNJRUJFQWdBeUFFSUFZUUZob2dBaWdDQUJBVUN5QUNJQVUyQWdnZ0FpQUROZ0lBSUFJZ0F5QUdhaUlETmdJRUN5QURJQUFnQVJBV0dpQUNJQUlvQWdRZ0FXbzJBZ1FnQVF1T0F3SUNmZ0ovSUFBb0FqQWlCU0FCcHlJR1R3UkFJQUFnQlNBR2F6WUNNQ0FBSUFBb0FpUWdCbW8yQWlRZ0FDQUFLUU00SUFGOE53TTRJQUVQQ3lBQUxRQkVRUVJ4QkVBZ0FFRUFOZ0l3SUFBZ0FDZ0NKQ0FGYWpZQ0pDQUFJQVd0SWdFZ0FDa0RPSHczQXpnZ0FVSi9JQVViRHdzQ1FDQUZSUVJBREFFTElBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FTQUZyU0lEZlNFQkN5QUJRZ0JWQkVBRFFDQUFLUU1JSUFBcEF6Z2dBU0FEZkh4VUJFQWdBa0VFUWVuNUFFRUFFQk1nQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FBSUFBcEF6Z2dBM3dpQXpjRE9DQUFLUU1JSWdFZ0EzMGhCQ0FCSUFBb0FnQWdBQ2dDSEJFTEFDQUFLQUpFSVFVRVFDQUFJQUUzQXpnTElBQWdCVUVFY2pZQ1JFSi9JQVFnQVNBRFVSc1BDeUFCSUFBb0FnQWdBQ2dDR0JFTkFDSUVRbjlSQkVBZ0FrRUVRZW41QUVFQUVCTWdBQ0FBS0FKRVFRUnlOZ0pFSUFBZ0FDa0RPQ0FEZkRjRE9FSi9JQU1nQTFBYkR3c2dBeUFFZkNFRElBRWdCSDBpQVVJQVZRMEFDd3NnQUNBQUtRTTRJQU44TndNNElBTUxSZ0VDZnlBQ0tBSUFJQUlvQWdocUlnUWdBaWdDQkNJRFJnUkFRWDhQQ3lBQUlBTWdCQ0FEYXlJQUlBRWdBQ0FCU1JzaUFCQVdHaUFDSUFJb0FnUWdBR28yQWdRZ0FBdXFBZ0VFZnlNQVFSQnJJZ1FrQUFKQUlBQW9BblFOQUNBQ1FRRk5CRUFnQTBFQlFZM0ZBRUVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FFS0FJTUlnWkIvLzhEY1NJSFJRUkFJQU5CQVVHdXhRQkJBQkFUREFFTElBZEJCbXhCQW1vZ0Frc0VRQ0FEUVFGQmpjVUFRUUFRRXd3QkN5QUdRUVpzRUJnaUEwVU5BQ0FBUVFnUUdDSUNOZ0owSUFKRkJFQWdBeEFVREFFTElBSWdBellDQUNBQ0lBUXZBUXdpQWpzQkJDQUNSUVJBUVFFaEJRd0JDMEVBSVFJRFFDQUJRUUpxSUFSQkRHb2lCVUVDRUJVZ0F5QUNRUVpzYWlJR0lBUW9BZ3c3QVFBZ0FVRUVhaUFGUVFJUUZTQUdJQVFvQWd3N0FRSWdBVUVHYWlJQklBVkJBaEFWSUFZZ0JDZ0NERHNCQkVFQklRVWdBa0VCYWlJQ0lBQW9BblF2QVFSSkRRQUxDeUFFUVJCcUpBQWdCUXZzQVFFRWZ5TUFRUkJySWdVa0FBSi9JQUFvQW5naUJFVUVRQ0FEUVFGQjM4UUFRUUFRRTBFQURBRUxJQVFvQWd3RVFDQURRUUZCcWRvQVFRQVFFMEVBREFFTElBSWdCQzBBRWlJQ1FRSjBJZ1JKQkVBZ0EwRUJRYjdFQUVFQUVCTkJBQXdCQzBFQUlBUVFHQ0lFUlEwQUdpQUNCRUJCQUNFREEwQWdBU0FGUVF4cUlnWkJBaEFWSUFRZ0EwRUNkR29pQnlBRktBSU1Pd0VBSUFGQkFtb2dCa0VCRUJVZ0J5QUZLQUlNT2dBQ0lBRkJBMm9nQmtFQkVCVWdCeUFGS0FJTU9nQURJQUZCQkdvaEFTQURRUUZxSWdNZ0FrY05BQXNMSUFBb0FuZ2dCRFlDREVFQkN5QUZRUkJxSkFBTDhBTUJDWDhqQUVFUWF5SUZKQUFDUUNBQ1FRTkpEUUFnQUNnQ2VBMEFJQUVnQlVFTWFrRUNFQlVnQlM4QkRDSUpRWUVJYTBIL2QwMEVRQ0FGSUFrMkFnQWdBMEVCUWFFYklBVVFFd3dCQ3lBQlFRSnFJQVZCREdwQkFSQVZJQVV2QVF3aUNFVUVRQ0FEUVFGQndSaEJBQkFUREFFTElBSWdDRUVEYWtrTkFDQUlJQWxzUVFKMEVCZ2lCMFVOQUNBSUVCZ2lDa1VFUUNBSEVCUU1BUXNnQ0JBWUlndEZCRUFnQnhBVUlBb1FGQXdCQzBFVUVCZ2lCa1VFUUNBSEVCUWdDaEFVSUFzUUZBd0JDeUFCUVFOcUlRTWdCaUFLTmdJSUlBWWdDellDQkNBR0lBazdBUkFnQmlBSE5nSUFJQVVvQWd3aERDQUdRUUEyQWd3Z0JpQU1PZ0FTSUFBZ0JqWUNlQU5BSUFNZ0JVRU1ha0VCRUJVZ0JDQUthaUFGTFFBTVFmOEFjVUVCYWpvQUFDQUVJQXRxSUFVb0FneEJnQUZ4UVFkMk9nQUFJQU5CQVdvaEF5QUVRUUZxSWdRZ0NFY05BQXNnQ1VVRVFFRUJJUVFNQVF0QkFDRUdBMEJCQUNFRVFRQWhBQU5BUVFRZ0JDQUthaTBBQUVFSGFrRURkaUlFSUFSQkJFOGJJZ1FnQXlBQmEyb2dBa29FUUVFQUlRUU1Bd3NnQXlBRlFReHFJQVFRRlNBSElBVW9BZ3cyQWdBZ0IwRUVhaUVISUFNZ0JHb2hBeUFBUVFGcUlnQkIvLzhEY1NJRUlBaEpEUUFMUVFFaEJDQUdRUUZxSWdaQi8vOERjU0FKU1EwQUN3c2dCVUVRYWlRQUlBUUxtQUVCQW44akFFRVFheUlGSkFBZ0FDZ0NHQ0lFUWY4QlJ3UkFJQVVnQkRZQ0FDQURRUUpCMFJRZ0JSQVRDd0pBQWtBZ0FDZ0NGQ0FDUmdSQUlBSU5BVUVCSVFRTUFndEJBQ0VFSUFOQkFVR0o4UUJCQUJBVERBRUxRUUFoQWdOQVFRRWhCQ0FCSUFBb0FrZ2dBa0VNYkdwQkNHcEJBUkFWSUFGQkFXb2hBU0FDUVFGcUlnSWdBQ2dDRkVrTkFBc0xJQVZCRUdva0FDQUVDNDRHQVFaL0l3QkIwQUJySWdRa0FBSkFJQUpCQWswRVFDQURRUUZCNmZBQVFRQVFFd3dCQ3lBQUxRQjhCRUFnQTBFRVFaVFhBRUVBRUJOQkFTRUdEQUVMUVFFaEJpQUJJQUJCS0dwQkFSQVZJQUZCQVdvZ0FFRTBha0VCRUJVZ0FVRUNhaUFBUVN4cVFRRVFGU0FCUVFOcUlRVUNRQUpBQWtBQ1FBSkFJQUFvQWlnaUIwRUJhdzRDQUFFQ0N5QUNRUVpOQkVBZ0JDQUNOZ0lRSUFOQkFVR085Z0FnQkVFUWFoQVRRUUFoQmd3RkN3SkFJQUpCQjBZTkFDQUFLQUl3UVE1R0RRQWdCQ0FDTmdJd0lBTkJBa0dPOWdBZ0JFRXdhaEFUQ3lBRklBQkJNR3BCQkJBVklBQW9BakJCRGtjTkEwRWtFQmdpQlVVRVFFRUFJUVlnQTBFQlFaUStRUUFRRXd3RkN5QUZRUTQyQWdBZ0JFRUFOZ0pBSUFSQkFEWUNPQ0FFUVFBMkFrZ2dCRUVBTmdJOElBUkJBRFlDUkNBRVFRQTJBa3hCc09xUUFpRUdJQVJCc09xUUFqWUNOQ0FGUVlDTWxhSUVOZ0lFQW44Z0FrRUhSd1JBSUFKQkkwWUVRQ0FCUVFkcUlBUkJ6QUJxUVFRUUZTQUJRUXRxSUFSQnlBQnFRUVFRRlNBQlFROXFJQVJCeEFCcVFRUVFGU0FCUVJOcUlBUkJRR3RCQkJBVklBRkJGMm9nQkVFOGFrRUVFQlVnQVVFYmFpQUVRVGhxUVFRUUZTQUJRUjlxSUFSQk5HcEJCQkFWSUFWQkFEWUNCQ0FFS0FJMElRWWdCQ2dDT0NFQ0lBUW9Ba0FoQXlBRUtBSThJUWNnQkNnQ1JDRUlJQVFvQWt3aENTQUVLQUpJREFJTElBUWdBallDSUNBRFFRSkJzdllBSUFSQklHb1FFd3RCQUNFQ1FRQWhBMEVBSVFkQkFBc2hBU0FGSUFjMkFoZ2dCU0FJTmdJUUlBVWdDVFlDQ0NBRklBWTJBaUFnQlNBQ05nSWNJQVVnQXpZQ0ZDQUZJQUUyQWd3Z0FFRUFOZ0p3SUFBZ0JUWUNiQXdEQ3lBQUlBSkJBMnNpQVRZQ2NDQUFRUUVnQVJBWElnTTJBbXdnQTBVTkFTQUNRUU5NRFFKQkFDRUNBMEFnQlNBRVFjd0Fha0VCRUJVZ0FDZ0NiQ0FDYWlBRUtBSk1PZ0FBSUFWQkFXb2hCU0FDUVFGcUlnSWdBVWNOQUFzTUFnc2dCMEVEU1EwQ0lBUWdCellDQUNBRFFRUkJxZndBSUFRUUV3d0NDMEVBSVFZZ0FFRUFOZ0p3REFFTFFRRWhCaUFBUVFFNkFId0xJQVJCMEFCcUpBQWdCZ3UwQXdFRGZ5TUFRU0JySWdRa0FBSkFJQUFvQWtnRVFDQURRUUpCd2paQkFCQVRRUUVoQWd3QkN5QUNRUTVIQkVCQkFDRUNJQU5CQVVISThBQkJBQkFUREFFTElBRWdBRUVRYWtFRUVCVWdBVUVFYWlBQVFReHFRUVFRRlNBQlFRaHFJQUJCRkdwQkFoQVZJQUFvQWd3aEJRSkFJQVFDZnlBQUtBSVFJZ1pGQkVBZ0FDZ0NGQXdCQ3lBQUtBSVVJZ0lnQlVVTkFCb2dBZzBCUVFBTE5nSUlJQVFnQmpZQ0JDQUVJQVUyQWdBZ0EwRUJRYXp2QUNBRUVCTkJBQ0VDREFFTElBSkJnWUFCYTBILy8zNU5CRUJCQUNFQ0lBTkJBVUhXN2dCQkFCQVREQUVMSUFBZ0FrRU1FQmNpQWpZQ1NDQUNSUVJBUVFBaEFpQURRUUZCKys0QVFRQVFFd3dCQzBFQklRSWdBVUVLYWlBQVFSaHFRUUVRRlNBQlFRdHFJQUJCSEdwQkFSQVZJQUFvQWh3aUJVRUhSd1JBSUFRZ0JUWUNFQ0FEUVFSQjYvNEFJQVJCRUdvUUV3c2dBVUVNYWlBQVFTQnFRUUVRRlNBQlFRMXFJQUJCSkdwQkFSQVZJQUFvQWdBaUFTQUJMUURVQVVIN0FYRWdBQ2dDR0VIL0FVWkJBblJ5T2dEVUFTQUFLQUlBSWdFZ0FDZ0NERFlDOEFFZ0FTQUFLQUlRTmdMMEFTQUFRUUU2QUlVQkN5QUVRU0JxSkFBZ0FndTNCQUVGZnlNQVFSQnJJZ1lrQUFKL0lBQXRBR1JCQW5GRkJFQWdBMEVCUWJmWUFFRUFFQk5CQUF3QkN5QUFRUUEyQW1nQ1FBSkFBa0FnQWdSQUEwQWdBa0VIVFFSQUlBTkJBVUdtR2tFQUVCTU1CUXNnQVNBR1FReHFJZ1ZCQkJBVklBWW9BZ3doQkNBQlFRUnFJQVZCQkJBVlFRZ2hCeUFHS0FJTUlRVUNRQUpBQWtBQ1FDQUVEZ0lCQUFNTElBSkJFRWtFUUVIT0dpRUVEQWNMSUFGQkNHb2dCa0VJYWtFRUVCVWdCaWdDQ0FSQVFkekJBQ0VFREFjTElBRkJER29nQmtFTWFrRUVFQlVnQmlnQ0RDSUVEUUZCbnhraEJBd0dDeUFEUVFGQm54bEJBQkFUREFZTFFSQWhCd3NnQkNBSFNRUkFJQU5CQVVHWHh3QkJBQkFUREFVTElBSWdCRWtFUUNBRFFRRkJ6OFlBUVFBUUUwRUFEQVlMQWtBQ1FDQUFJQUVnQjJvZ0JDQUhheUFEQW44Q1FBSkFBa0FnQlVIeDJMMmJCa3dFUUNBRlFlUEd3Wk1HUmcwQklBVkI1c3FSbXdaR0RRTWdCVUh3d3JXYkJrY05CVUdneFFFTUJBc2dCVUh5MkkyREIwWU5BVUdBeFFFZ0JVSHl5S0hMQmtZTkF4b2dCVUh5MkwyYkJrY05CRUdJeFFFTUF3dEJrTVVCREFJTFFaakZBUXdCQzBHb3hRRUxLQUlFRVFFQURRRkJBQXdIQ3lBQUlBQW9BbWhCLy8vLy93ZHlOZ0pvQzBFQklBZ2dCVUh5eUtITEJrWWJJUWdnQVNBRWFpRUJJQUlnQkdzaUFnMEFDeUFJRFFFTElBTkJBVUhyeFFCQkFCQVRRUUFNQXdzZ0FFRUJPZ0NFQVNBQUlBQW9BbVJCQkhJMkFtUkJBUXdDQ3lBRFFRRWdCRUVBRUJNTElBTkJBVUdMRDBFQUVCTkJBQXNnQmtFUWFpUUFDK0lCQVFGL0lBQW9BbVJCQVVjRVFDQURRUUZCNU5nQVFRQVFFMEVBRHdzQ1FDQUNRUWROQkVBTUFRc2dBU0FBUVRocVFRUVFGU0FCUVFScUlBQkJQR3BCQkJBVklBSkJBM0VFUUF3QkN5QUFJQUpCQ0dzaUFrRUNkaUlFTmdKQUFrQWdBa1VOQUNBQUlBUkJCQkFYSWdJMkFrUWdBa1VFUUNBRFFRRkJsaEZCQUJBVFFRQVBDeUFBS0FKQVJRMEFJQUZCQ0dvaEEwRUFJUUlEUUNBRElBQW9Ba1FnQWtFQ2RHcEJCQkFWSUFOQkJHb2hBeUFDUVFGcUlnSWdBQ2dDUUVrTkFBc0xJQUFnQUNnQ1pFRUNjallDWkVFQkR3c2dBMEVCUVo0dVFRQVFFMEVBQzM0QkFYOGpBRUVRYXlJRUpBQUNmeUFBS0FKa0JFQWdBMEVCUVlIWUFFRUFFQk5CQUF3QkN5QUNRUVJIQkVBZ0EwRUJRY0l1UVFBUUUwRUFEQUVMSUFFZ0JFRU1ha0VFRUJVZ0JDZ0NERUdLanFyb0FFY0VRQ0FEUVFGQjZpWkJBQkFUUVFBTUFRc2dBQ0FBS0FKa1FRRnlOZ0prUVFFTElBUkJFR29rQUF2RUFRRUNmeUFBSUFBb0FpQWlCRFlDSkFKQUlBQW9BakFpQXdSQUEwQWdCQ0FESUFBb0FnQWdBQ2dDRkJFQUFDSURRWDlHRFFJZ0FDQUFLQUlrSUFOcUlnUTJBaVFnQUNBQUtBSXdJQU5ySWdNMkFqQWdBdzBBQ3lBQUtBSWdJUVFMSUFCQkFEWUNNQ0FBSUFRMkFpUWdBU0FBS0FJQUlBQW9BaHdSQ3dCRkJFQWdBQ0FBS0FKRVFRaHlOZ0pFUVFBUEN5QUFJQUUzQXpoQkFROExJQUFnQUNnQ1JFRUljallDUkNBQ1FRUkJ6L2tBUVFBUUV5QUFJQUFvQWtSQkNISTJBa1JCQUFzTkFDQUFLQUlBSUFFZ0FoQk9Dd2tBSUFBb0FnQVFVd3NKQUNBQUtBSUFFRklMRFFBZ0FDZ0NBQ0FCSUFJUVZRdEJBUUYvSUFJRWZ5QURRUUpCeTg4QVFRQVFFeUFBS0FJQUlBRWdBaUFESUFRUVQwVUVRQ0FEUVFGQm5UQkJBQkFUUVFBUEN5QUFJQUlnQXhCK0JVRUFDd3NWQUNBQUtBSUFJQUVnQWlBRElBUWdCU0FHRUZjTER3QWdBQ2dDQUNBQklBSWdBeEJZQ3hNQUlBQW9BZ0FnQVNBQ0lBTWdCQ0FGRURFTEhRQWdBQ2dDQUNBQklBSWdBeUFFSUFVZ0JpQUhJQWdnQ1NBS0VDd0w1UVFCQm44Z0FTZ0NDRUUySUFNUUtFVUVRRUVBRHdzZ0FTZ0NCQ0lJS0FJQUlRY2dDQ2dDQ0NFR0FrQWdCd1JBUVFFaEJTQUhRUUZ4SVFrZ0IwRUJSZ1IvUVFBRklBZEJmbkVoQndOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUhSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NSc2hCUUpBSUFsRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0NFRUFOZ0lBSUFVTkFVRUFEd3NnQ0VFQU5nSUFDeUFCS0FJSUlnY29BZ0FoQkNBSEtBSUlJUVlDUUNBRUJFQkJBU0VGSUFSQkFYRWhDQ0FFUVFGR0JIOUJBQVVnQkVGK2NTRUpRUUFoQkFOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBWW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBWW9BZ1FSQUFCQkFFY0xJUVVnQmtFSWFpRUdJQVJCQW1vaUJDQUpSdzBBQ3lBRlJRc2hCRUVBSUFVZ0NCc2hCUUpBSUFoRkRRQWdCQTBBSUFFZ0FDQURJQVlvQWdBUkFBQkJBRWNoQlFzZ0IwRUFOZ0lBSUFVTkFVRUFEd3NnQjBFQU5nSUFDeUFCTFFDRUFVVUVRQ0FEUVFGQmk5c0FRUUFRRTBFQUR3c2dBUzBBaFFGRkJFQWdBMEVCUWU3YUFFRUFFQk5CQUE4TElBQWdBU2dDQUNBQ0lBTVFXUUpBSUFKRkRRQWdBaWdDQUNJQVJRMEFRUUVoQkFKQUFrQUNRQUpBQWtBQ1FDQUJLQUl3UVF4ckRnMERCQVFFQlFBQkJBUUVCQVFDQkF0QkFpRUVEQVFMUVFNaEJBd0RDMEVFSVFRTUFndEJCU0VFREFFTFFYOGhCQXNnQUNBRU5nSVVJQUVvQW13aUJVVU5BQ0FBSUFVMkFod2dBaWdDQUNBQktBSndOZ0lnSUFGQkFEWUNiQXNMNGdrQ0NYOEJmaU1BUWZBQWF5SURKQUJCZ0FnaENBSi9Ba0JCQVVHQUNCQVhJZ1lFUUNBRFFkd0FhaUVMSUFOQjdBQnFJUWtEUUFKQUFrQUNRQ0FCSUFOQjZBQnFJZ1JCQ0NBQ0VCMUJDRWNOQUNBRUlBTkIyQUJxUVFRUUZTQUpJQXRCQkJBVlFRZ2hCUUpBQWtBQ1FBSkFBa0FnQXlnQ1dBNENBQUVFQ3lBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2lERUw0Ly8vL0QxTU5BU0FDUVFGQjNNRUFRUUFRRXd3RUN5QUJJQU5CNkFCcUlnUkJDQ0FDRUIxQkNFY05BeUFFSUFOQjVBQnFRUVFRRlNBREtBSmtSUTBCSUFKQkFVSGN3UUJCQUJBVERBTUxJQU1nREtkQkNHbzJBbGdNQVFzZ0NTQURRZGdBYWtFRUVCVkJFQ0VGQ3lBREtBSmNJZ1JCNCtUQTB3WkdCRUFnQUNnQ1pDSUJRUVJ4QkVBZ0FDQUJRUWh5TmdKa0RBSUxJQUpCQVVHaExFRUFFQk1nQmhBVVFRQU1Cd3NnQXlnQ1dDSUhSUVJBSUFKQkFVR2ZHVUVBRUJNZ0JoQVVRUUFNQndzZ0JTQUhTd1JBSUFNZ0JEWUNCQ0FESUFjMkFnQWdBa0VCUWNqc0FDQURFQk1NQmdzQ1FBSi9BbjhDUUFKL0FrQUNRQUpBQWtBQ1FDQUVRZkhZdlpzR1RBUkFJQVJCNDhiQmt3WkdEUUlnQkVIbXlwR2JCa1lOQkNBRVFmREN0WnNHUncwQlFhREZBUXdHQ3lBRVFaL0F3TklHVEFSQUlBUkI4dGk5bXdaR0RRVkJnTVVCSUFSQjhzaWh5d1pHRFFZYUlBUkI4UExSc3daSERRRkI2TVFCREFnTElBUkI4dGlOZ3dkR0RRSWdCRUdnd01EU0JrWU5Ca0h3eEFFZ0JFSG81TURUQmtZTkJ4b0xJQUFvQW1RaUJFRUJjUTBJSUFKQkFVSHBEMEVBRUJNZ0JoQVVRUUFNRHd0QmtNVUJEQU1MUVpqRkFRd0NDMEdveFFFTUFRdEJpTVVCQ3lFS0lBTWdCRUgvQVhFMkFrd2dBeUFFUVJoMk5nSkFJQU1nQkVFSWRrSC9BWEUyQWtnZ0F5QUVRUkIyUWY4QmNUWUNSQ0FDUVFKQnRnOGdBMEZBYXhBVElBY2dCV3NpQlNBQUxRQmtRUVJ4RFFJYUlBTWdBeWdDWENJRVFSaDJOZ0l3SUFNZ0JFSC9BWEUyQWp3Z0F5QUVRUkIyUWY4QmNUWUNOQ0FESUFSQkNIWkIvd0Z4TmdJNElBSkJBa0hPTkNBRFFUQnFFQk1nQUNBQUtBSmtRZi8vLy84SGNqWUNaQ0FCSUFXdElnd2dBaUFCS0FJb0VRZ0FJQXhSRFFjZ0FrRUJRZjhjUVFBUUV5QUdFQlJCQUF3S0MwSGd4QUVMSVFvZ0J5QUZhd3NoQlNBQktRTUlJZ3hRQkg1Q0FBVWdEQ0FCS1FNNGZRc2dCYTFUQkVBZ0F5Z0NXQ0VFSUFNb0Fsd2hBQ0FESUFFcEF3Z2lERkFFZmtJQUJTQU1JQUVwQXpoOUN6NENLQ0FESUFVMkFpUWdBeUFBUWY4QmNUWUNJQ0FESUFCQkdIWTJBaFFnQXlBRU5nSVFJQU1nQUVFSWRrSC9BWEUyQWh3Z0F5QUFRUkIyUWY4QmNUWUNHQ0FDUVFGQm0vb0FJQU5CRUdvUUV3d0hDeUFGSUFoTkJFQWdCaUVFREFRTElBVWhDQ0FHSUFVUUd5SUVEUU1nQmhBVUlBSkJBVUhzRUVFQUVCTkJBQXdIQ3lBRVFRSnhSUVJBSUFKQkFVR3ZFRUVBRUJNZ0JoQVVRUUFNQndzZ0FDQUVRZi8vLy84SGNqWUNaQ0FCSUFjZ0JXdXRJZ3dnQWlBQktBSW9FUWdBSUF4UkRRTWdBQzBBWkVFSWNVVU5BU0FDUVFKQi94eEJBQkFUQ3lBR0VCUkJBUXdGQ3lBQ1FRRkIveHhCQUJBVElBWVFGRUVBREFRTElBRWdCQ0FGSUFJUUhTQUZSd1JBSUFKQkFVR3hIVUVBRUJNZ0JCQVVRUUFNQkFzZ0FDQUVJZ1lnQlNBQ0lBb29BZ1FSQVFBTkFBc2dCQkFVUVFBTUFnc2dBa0VCUVpZbVFRQVFFMEVBREFFTElBWVFGRUVBQ3lBRFFmQUFhaVFBQytBQkFRWi9JQUFvQWdoQk5pQUNFQ2hGQkVCQkFBOExJQUFvQWdnaUJpZ0NBQ0VESUFZb0FnZ2hCUUpBSUFNRVFFRUJJUVFnQTBFQmNTRUhJQU5CQVVZRWYwRUFCU0FEUVg1eElRTURRQUovUVFBZ0JFVU5BQnBCQUNBQUlBRWdBaUFGS0FJQUVRQUFSUTBBR2lBQUlBRWdBaUFGS0FJRUVRQUFRUUJIQ3lFRUlBVkJDR29oQlNBSVFRSnFJZ2dnQTBjTkFBc2dCRVVMSVFOQkFDQUVJQWNiSVFRQ1FDQUhSUTBBSUFNTkFDQUFJQUVnQWlBRktBSUFFUUFBUVFCSElRUUxJQVpCQURZQ0FDQUVEUUZCQUE4TElBWkJBRFlDQUFzZ0FDZ0NBQnBCQVFzS0FDQUFLQUlBR2tFQUN5a0FBa0FnQUNnQ0FDSUFSUTBBSUFBZ0FUWUMwQUVnQVVVTkFDQUFJQUF0QUZ4QkNISTZBRndMQ3lFQUlBQW9BZ0FnQVJCY0lBQkJBRG9BZkNBQUlBRW9BcmhBUVFGeE5nS0FBUXN5QUNBQ1JRUkFRUUFQQ3lBQUtBSUFJQUVnQWlBREVGRkZCRUFnQTBFQlFaMHdRUUFRRTBFQUR3c2dBQ0FDSUFNUWZndHBBZ0ovQVh3akFFRVFheUlESkFBZ0FnUkFBMEFnQUNBRFFRaHFFRTBnQVFKL0lBTXJBd2dpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMTmdJQUlBRkJCR29oQVNBQVFRaHFJUUFnQkVFQmFpSUVJQUpIRFFBTEN5QURRUkJxSkFBTGhBRUNBbjhCZlNNQVFSQnJJZ01rQUNBQ0JFQURRQ0FESUFBdEFBQTZBQThnQXlBQUxRQUJPZ0FPSUFNZ0FDMEFBam9BRFNBRElBQXRBQU02QUF3Z0FRSi9JQU1xQWd3aUJZdERBQUFBVDEwRVFDQUZxQXdCQzBHQWdJQ0FlQXMyQWdBZ0FVRUVhaUVCSUFCQkJHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0TEFRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBQWdBMEVNYWtFRUVCVWdBU0FES0FJTU5nSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxTd0VDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NERFlDQUNBQlFRUnFJUUVnQUVFQ2FpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzBvQkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUWhxRUUwZ0FTQURLd01JdGpnQ0FDQUJRUVJxSVFFZ0FFRUlhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMyZ0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBeUFBTFFBQU9nQVBJQU1nQUMwQUFUb0FEaUFESUFBdEFBSTZBQTBnQXlBQUxRQURPZ0FNSUFFZ0F5b0NERGdDQUNBQlFRUnFJUUVnQUVFRWFpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzB3QkFuOGpBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUXhxUVFRUUZTQUJJQU1vQWd5ek9BSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxUQUVDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJBaEFWSUFFZ0F5Z0NETE00QWdBZ0FVRUVhaUVCSUFCQkFtb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF1cUNBSU5md0Y3SXdCQkVHc2lDQ1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaENRSkFJQUpGQkVBZ0EwRUJRZjRnUVFBUUV3d0JDeUFBS0FKZ0lRWkJBU0VFSUFFZ0NFRUlha0VCRUJVZ0NDZ0NDQ0lGUVFKUEJFQWdBMEVDUVp2TUFFRUFFQk1NQVFzZ0JVRUJhaUFDUndSQVFRQWhCQ0FEUVFKQi9pQkJBQkFUREFFTEFrQWdCaWdDRUNJRFJRMEFJQWtvQXRBcklRUWdBMEVJVHdSQUlBTkJlSEVoQmtFQUlRSURRQ0FFUVFBMkFyeERJQVJCQURZQ2hEc2dCRUVBTmdMTU1pQUVRUUEyQXBRcUlBUkJBRFlDM0NFZ0JFRUFOZ0trR1NBRVFRQTJBdXdRSUFSQkFEWUN0QWdnQkVIQXd3QnFJUVFnQWtFSWFpSUNJQVpIRFFBTEN5QURRUWR4SWdORkRRQkJBQ0VDQTBBZ0JFRUFOZ0swQ0NBRVFiZ0lhaUVFSUFKQkFXb2lBaUFEUncwQUN3c2dDU2dDNkNzaUFnUi9JQUlRRkNBSlFRQTJBdWdySUFnb0FnZ0ZJQVVMUlFSQVFRRWhCQXdCQ3dOQUlBRkJBV29pQVNBSVFReHFRUUVRRlFKQUlBa29Bb0FzUlEwQUlBa29BdndySWdNb0FnQWdDQ2dDREVjTkFDQURLQUlFSWdVZ0FDZ0NZQ0lHS0FJUVJ3MEFJQU1vQWdnaUFnUkFRUUFoQkNBQ0tBSVFJQVVnQld3aUJTQUNLQUlBUVFKMFFaRENBV29vQWdCc1J3MERJQWtnQlVFQ2RCQVlJZ2MyQXVncklBZEZEUU1nQWlnQ0RDQUhJQVVnQWlnQ0FFRUNkRUhBeEFGcUtBSUFFUVVBQ3lBREtBSU1JZ0pGRFFCQkFDRUVJQUlvQWhBZ0JpZ0NFQ0lESUFJb0FnQkJBblJCa01JQmFpZ0NBR3hIRFFJZ0EwRUNkQkFZSWdWRkRRSWdBaWdDRENBRklBTWdBaWdDQUVFQ2RFSFF4QUZxS0FJQUVRVUFBa0FnQmlnQ0VDSUhSUTBBSUFrb0F0QXJJUVJCQUNFTEFrQUNRQ0FIUVFSSkRRQWdCRUcwQ0dvaURDQUZJQWRCQW5ScVNRUkFJQVVnQkNBSFFiZ0liR3BKRFFFTElBUkIzQ0ZxSVEwZ0JFR2tHV29oRGlBRVFld1FhaUVQSUFVZ0IwRjhjU0lHUVFKMGFpRUNJQVFnQmtHNENHeHFJUVJCQUNFREEwQWdEQ0FEUWJnSWJDSUthaUFGSUFOQkFuUnEvUUFDQUNJUi9Wb0NBQUFnQ2lBUGFpQVIvVm9DQUFFZ0NpQU9haUFSL1ZvQ0FBSWdDaUFOYWlBUi9Wb0NBQU1nQTBFRWFpSURJQVpIRFFBTElBWWdCMFlOQWd3QkN5QUZJUUpCQUNFR0N5QUhJQVlpQTJ0QkIzRWlDZ1JBQTBBZ0JDQUNLQUlBTmdLMENDQURRUUZxSVFNZ0JFRzRDR29oQkNBQ1FRUnFJUUlnQzBFQmFpSUxJQXBIRFFBTEN5QUdJQWRyUVhoTERRQURRQ0FFSUFJb0FnQTJBclFJSUFRZ0FpZ0NCRFlDN0JBZ0JDQUNLQUlJTmdLa0dTQUVJQUlvQWd3MkF0d2hJQVFnQWlnQ0VEWUNsQ29nQkNBQ0tBSVVOZ0xNTWlBRUlBSW9BaGcyQW9RN0lBUWdBaWdDSERZQ3ZFTWdCRUhBd3dCcUlRUWdBa0VnYWlFQ0lBTkJDR29pQXlBSFJ3MEFDd3NnQlJBVUMwRUJJUVFnRUVFQmFpSVFJQWdvQWdoSkRRQUxDeUFJUVJCcUpBQWdCQXNFQUVKL0M3c0pBUXAvSXdCQkVHc2lCU1FBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BclFCSUFBb0F1UUJRWXdzYkdvTUFRc2dBQ2dDREFzaEJ3Si9JQUpCQVUwRVFDQURRUUZCekNSQkFCQVRRUUFNQVFzZ0FTQUZRUXhxUVFJUUZTQUZLQUlNQkVBZ0EwRUNRZVF0UVFBUUUwRUJEQUVMSUFKQkJrMEVRQ0FEUVFGQnpDUkJBQkFUUVFBTUFRc2dBVUVDYWlBRlFRaHFRUUVRRlNBSEtBTDhLeUlKSVFBQ1FBSkFBa0FnQnlnQ2dDd2lCa1VOQUNBRktBSUlJUWdEUUNBQUtBSUFJQWhHRFFFZ0FFRVVhaUVBSUFSQkFXb2lCQ0FHUncwQUN3d0JDeUFFSUFaSERRRUxJQWNvQW9Rc0lBWkdCSDhnQnlBR1FRcHFJZ0EyQW9Rc0lBa2dBRUVVYkJBYklnQkZCRUFnQnlnQy9Dc1FGQ0FIUVFBMkFvUXNJQWRDQURjQy9Dc2dBMEVCUWVZa1FRQVFFMEVBREFNTElBY2dBRFlDL0NzZ0FDQUhLQUtBTENJRVFSUnNha0VBSUFjb0FvUXNJQVJyUVJSc0VCa2FJQWNvQXZ3cklRa2dCeWdDZ0N3RklBWUxRUlJzSUFscUlRQkJBU0VMQ3lBQUlBVW9BZ2cyQWdBZ0FVRURhaUFGUVF4cVFRSVFGU0FGS0FJTUJFQWdBMEVDUWVRdFFRQVFFMEVCREFFTElBRkJCV29nQlVFRWFrRUNFQlVnQlNnQ0JDSUVRUUpQQkVBZ0EwRUNRWlVZUVFBUUUwRUJEQUVMSUFKQkIyc2hCaUFFQkVBZ0FVRUhhaUVDUVFBaENRTkFJQVpCQWswRVFDQURRUUZCekNSQkFCQVRRUUFNQXdzZ0FpQUZRUXhxUVFFUUZTQUZLQUlNUVFGSEJFQWdBMEVDUWFZclFRQVFFMEVCREFNTElBSkJBV29nQlVFQ0VCVWdBQ0FGS0FJQUlnUkIvLzhCY1NJQk5nSUVJQVpCQTJzaUNDQUVRUTkyUVFGcUlnWWdBV3hCQW1vaUNra0VRQ0FEUVFGQnpDUkJBQkFUUVFBTUF3c2dBa0VEYWlFQ1FRQWhCQ0FCQkVBRFFDQUNJQVZCREdvZ0JoQVZJQVFnQlNnQ0RFY0VRQ0FEUVFKQnpqQkJBQkFUUVFFTUJRc2dBaUFHYWlFQ0lBUkJBV29pQkNBQUtBSUVTUTBBQ3dzZ0FpQUZRUUlRRlNBRklBVW9BZ0FpQkVILy93RnhJZ0UyQWdBZ0FDZ0NCQ0FCUndSQUlBTkJBa0hGR1VFQUVCTkJBUXdEQ3lBSUlBcHJJZ29nQkVFUGRrRUJhaUlHSUFGc1FRTnFJZ3hKQkVBZ0EwRUJRY3drUVFBUUUwRUFEQU1MSUFKQkFtb2hBa0VBSVFRZ0FRUkFBMEFnQWlBRlFReHFJQVlRRlNBRUlBVW9BZ3hIQkVBZ0EwRUNRYzR3UVFBUUUwRUJEQVVMSUFJZ0Jtb2hBaUFFUVFGcUlnUWdBQ2dDQkVrTkFBc0xJQUlnQlVFTWFrRURFQlVnQlNnQ0RDRUdJQUJDQURjQ0NDQUFJQVpCZ0lBRWNVVWdBQzBBRUVIK0FYRnlPZ0FRSUFVZ0JrSC9BWEVpQ0RZQ0NBSkFJQWhGRFFBZ0J5Z0M5Q3NpRFFSQUlBY29BdkFySVFSQkFDRUJBMEFnQ0NBRUtBSUlSZ1JBSUFBZ0JEWUNDQXdEQ3lBRVFSUnFJUVFnQVVFQmFpSUJJQTFIRFFBTEN5QURRUUZCekNSQkFCQVRRUUFNQXdzZ0JTQUdRUWgyUWY4QmNTSUdOZ0lJQWtBZ0JrVU5BQ0FIS0FMMEt5SUlCRUFnQnlnQzhDc2hCRUVBSVFFRFFDQUdJQVFvQWdoR0JFQWdBQ0FFTmdJTURBTUxJQVJCRkdvaEJDQUJRUUZxSWdFZ0NFY05BQXNMSUFOQkFVSE1KRUVBRUJOQkFBd0RDeUFLSUF4cklRWWdBa0VEYWlFQ0lBbEJBV29pQ1NBRktBSUVTUTBBQ3dzZ0JnUkFJQU5CQVVITUpFRUFFQk5CQUF3QkMwRUJJQXRGRFFBYUlBY2dCeWdDZ0N4QkFXbzJBb0FzUVFFTElBVkJFR29rQUF2MUFRRUZmeU1BUVJCcklnUWtBQUpBSUFBb0FtQW9BaEFpQmtFQ2FpQUNSd1JBSUFOQkFVSGtJMEVBRUJNTUFRc2dBU0FFUVF4cVFRSVFGU0FHSUFRb0FneEhCRUFnQTBFQlFlUWpRUUFRRXd3QkN5QUdSUVJBUVFFaEJRd0JDeUFCUVFKcUlRSWdBQ2dDWUNnQ0dDRUFRUUFoQVFOQUlBSWdCRUVJYWtFQkVCVWdBQ0FFS0FJSUlnVkIvd0J4SWdkQkFXb2lDRFlDR0NBQUlBVkJCM1pCQVhFMkFpQWdCMEVmVHdSQUlBUWdDRFlDQkNBRUlBRTJBZ0FnQTBFQlFZWDRBQ0FFRUJOQkFDRUZEQUlMSUFCQk5Hb2hBRUVCSVFVZ0FrRUJhaUVDSUFGQkFXb2lBU0FHUncwQUN3c2dCRUVRYWlRQUlBVUxsQVVCQ1g4akFFRVFheUlISkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDdEFFZ0FDZ0M1QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUZBbjhnQWtFQlRRUkFJQU5CQVVIL0gwRUFFQk5CQUF3QkN5QUJJQWRCREdwQkFoQVZBa0FnQnlnQ0RBUkFJQU5CQWtIekcwRUFFQk1NQVFzZ0FrRUdUUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFCUVFKcUlBZEJER3BCQWhBVklBVW9BdkFySVFRZ0J5MEFEQ0VLQWtBQ1FBSkFJQVVvQXZRcklnWkZCRUFnQkNFQURBRUxJQVFoQUFOQUlBQW9BZ2dnQ2tZTkFTQUFRUlJxSVFBZ0NFRUJhaUlJSUFaSERRQUxEQUVMSUFZZ0NFY05BUXNnQlNnQytDc2dCa1lFUUNBRklBWkJDbW9pQURZQytDc2dCQ0FBUVJSc0VCc2hBQ0FGS0FMd0t5RUVJQUJGQkVBZ0JCQVVJQVZCQURZQytDc2dCVUlBTndMd0t5QURRUUZCbVNCQkFCQVRRUUFNQkFzQ1FDQUFJQVJHRFFBZ0JTZ0NnQ3dpQzBVTkFDQUZLQUw4S3lFTVFRQWhDQU5BSUF3Z0NFRVViR29pQmlnQ0NDSUpCRUFnQmlBQUlBa2dCR3RxTmdJSUN5QUdLQUlNSWdrRVFDQUdJQUFnQ1NBRWEybzJBZ3dMSUFoQkFXb2lDQ0FMUncwQUN3c2dCU0FBTmdMd0t5QUFJQVVvQXZRcklnUkJGR3hxUVFBZ0JTZ0MrQ3NnQkd0QkZHd1FHUm9nQlNnQzlDc2hCaUFGS0FMd0t5RUVDeUFGSUFaQkFXbzJBdlFySUFRZ0JrRVViR29oQUFzZ0FDZ0NEQ0lFQkVBZ0JCQVVJQUJDQURjQ0RBc2dBQ0FLTmdJSUlBQWdCeWdDRENJRVFRcDJRUU54TmdJQUlBQWdCRUVJZGtFRGNUWUNCQ0FCUVFScUlBZEJER3BCQWhBVklBY29BZ3dFUUNBRFFRSkJxaGRCQUJBVERBRUxJQUFnQWtFR2F5SUNFQmdpQkRZQ0RDQUVSUVJBSUFOQkFVSC9IMEVBRUJOQkFBd0NDeUFFSUFGQkJtb2dBaEFXR2lBQUlBSTJBaEFMUVFFTElBZEJFR29rQUFzbkFFRUJJUUVnQUNnQ1lDZ0NFRUVDZENBQ1J3Ui9JQU5CQVVITElrRUFFQk5CQUFWQkFRc0xwd01CQkg4akFFRVFheUlHSkFBQ2Z5QUNRUUZOQkVBZ0EwRUJRZW9lUVFBUUUwRUFEQUVMSUFBdEFOUUJRUUZ4QkVBZ0EwRUJRZGZpQUVFQUVCTkJBQXdCQ3lBQUtBSzBBU0FBS0FMa0FVR01MR3hxSWdBZ0FDMEFpQ3hCQW5JNkFJZ3NJQUVnQmtFTWFrRUJFQlVDUUNBQUtBS3NLQ0lFUlFSQUlBQWdCaWdDREVFQmFpSUZRUWdRRnlJRU5nS3NLQ0FFUlFSQUlBTkJBVUdFSDBFQUVCTkJBQXdEQ3lBQUlBVTJBcWdvREFFTElBWW9BZ3dpQlNBQUtBS29LRWtOQUNBRUlBVkJBV29pQkVFRGRCQWJJZ1ZGQkVBZ0EwRUJRWVFmUVFBUUUwRUFEQUlMSUFBZ0JUWUNyQ2dnQlNBQUtBS29LQ0lIUVFOMGFrRUFJQVFnQjJ0QkEzUVFHUm9nQUNBRU5nS29LQ0FBS0FLc0tDRUVDeUFFSUFZb0Fnd2lCVUVEZEdvb0FnQUVRQ0FHSUFVMkFnQWdBMEVCUWZJMklBWVFFMEVBREFFTElBSkJBV3NpQWhBWUlRUWdBQ2dDckNnaUFDQUdLQUlNSWdWQkEzUnFJQVEyQWdBZ0JFVUVRQ0FEUVFGQmhCOUJBQkFUUVFBTUFRc2dBQ0FGUVFOMGFpQUNOZ0lFSUFBZ0JpZ0NERUVEZEdvb0FnQWdBVUVCYWlBQ0VCWWFRUUVMSUFaQkVHb2tBQXY2QWdFRWZ5TUFRUkJySWdZa0FBSi9JQUpCQVUwRVFDQURRUUZCc2lGQkFCQVRRUUFNQVFzZ0FDQUFMUURVQVVFQmNqb0ExQUVnQVNBR1FReHFRUUVRRlFKQUlBQW9Bb3dCSWdSRkJFQWdBQ0FHS0FJTVFRRnFJZ1ZCQ0JBWElnUTJBb3dCSUFSRkJFQWdBMEVCUWN3aFFRQVFFMEVBREFNTElBQWdCVFlDaUFFTUFRc2dCaWdDRENJRklBQW9Bb2dCU1EwQUlBUWdCVUVCYWlJRVFRTjBFQnNpQlVVRVFDQURRUUZCekNGQkFCQVRRUUFNQWdzZ0FDQUZOZ0tNQVNBRklBQW9Bb2dCSWdkQkEzUnFRUUFnQkNBSGEwRURkQkFaR2lBQUlBUTJBb2dCSUFBb0Fvd0JJUVFMSUFRZ0JpZ0NEQ0lGUVFOMGFpZ0NBQVJBSUFZZ0JUWUNBQ0FEUVFGQmlEY2dCaEFUUVFBTUFRc2dBa0VCYXlJQ0VCZ2hCQ0FBS0FLTUFTSUFJQVlvQWd3aUJVRURkR29nQkRZQ0FDQUVSUVJBSUFOQkFVSE1JVUVBRUJOQkFBd0JDeUFBSUFWQkEzUnFJQUkyQWdRZ0FDQUdLQUlNUVFOMGFpZ0NBQ0FCUVFGcUlBSVFGaHBCQVFzZ0JrRVFhaVFBQzV3QkFRTi9Jd0JCRUdzaUJDUUFBbjhnQWtVRVFDQURRUUZCNVI5QkFCQVRRUUFNQVFzZ0FTQUVRUXhxUVFFUUZVRUJJQUpCQVdzaUJVVU5BQnBCQUNFQVFRQWhBZ05BSUFGQkFXb2lBU0FFUVFocVFRRVFGU0FFS0FJSUlnWkJHSFJCSDNVZ0JrSC9BSEVnQW5KQkIzUnhJUUlnQUVFQmFpSUFJQVZIRFFBTFFRRWdBa1VOQUJvZ0EwRUJRZVVmUVFBUUUwRUFDeUFFUVJCcUpBQUxHd0JCQVNFQUlBSUVmMEVCQlNBRFFRRkI4aUZCQUJBVFFRQUxDOW9FQVFkL0l3QkJJR3NpQkNRQVFRRWhCUUpBSUFKQkFVMEVRRUVBSVFVZ0EwRUJRYW5PQUVFQUVCTU1BUXNnQUNnQ1RBMEFJQUVnQkVFY2FrRUJFQlVnQVVFQmFpQUVRUmhxUVFFUUZTQUVLQUlZSWdaQkJIWkJBM0VpQjBFRFJnUkFJQUJCQVRZQ1RDQURRUUpCZ2RvQVFRQVFFd3dCQ3lBQ1FRSnJJZ0lnQWlBR1FRVjJRUUp4UVFKcUlna2dCMm9pQ0c0aUJpQUliRWNFUUNBQVFRRTJBa3dnQTBFQ1FkN1dBRUVBRUJNTUFRc2dBaUFJU1EwQUFrQWdBQ2dDUkNJQ0lBWkJmM05OQkVBZ0FpQUdhaUlDUVlDQWdJQUNTUTBCQ3lBQVFRRTJBa3dnQTBFQ1FaUEpBRUVBRUJNTUFRc2dBQ2dDU0NBQ1FRTjBFQnNpQ0VVRVFDQUFRUUUyQWt3Z0EwRUNRYjdKQUVFQUVCTU1BUXNnQVVFQ2FpRUNJQUFnQ0RZQ1NBSkFJQWNFUUVFQklBWWdCa0VCVFJzaENrRUFJUVlEUUNBQ0lBUkJGR29nQnhBVklBUW9BaFFpQVNBQUtBS0VBU0FBS0FLQUFXeFBEUUlnQWlBSGFpSUJJQVJCRUdvZ0NSQVZJQWdnQUNnQ1JDSUNRUU4wYWlJRklBUW9BaFE3QVFBZ0JTQUVLQUlRTmdJRVFRRWhCU0FBSUFKQkFXbzJBa1FnQVNBSmFpRUNJQVpCQVdvaUJpQUtSdzBBQ3d3Q0MwRUJJQVlnQmtFQlRSc2hCeUFBS0FKRUlRRkJBQ0VHQTBBZ0JDQUJOZ0lVSUFFZ0FDZ0NoQUVnQUNnQ2dBRnNUdzBCSUFJZ0JFRVFhaUFKRUJVZ0NDQUFLQUpFSWdwQkEzUnFJZ1VnQVRzQkFDQUZJQVFvQWhBMkFnUkJBU0VGSUFBZ0NrRUJhaUlCTmdKRUlBSWdDV29oQWlBR1FRRnFJZ1lnQjBjTkFBc01BUXNnQUVFQk5nSk1JQVFnQVRZQ0FDQURRUUpCMGp3Z0JCQVRDeUFFUVNCcUpBQWdCUXNFQUVFQUN3dkx3UUVoQUVHQUNBdmdtUUZqWVc1dWIzUWdZV3hzYjJOaGRHVWdiM0JxWDNSalpGOXpaV2RmWkdGMFlWOWphSFZ1YTE5MEtpQmhjbkpoZVFBdEt5QWdJREJZTUhnQUxUQllLekJZSURCWUxUQjRLekI0SURCNEFGVnVhMjV2ZDI0Z1ptOXliV0YwQUVaaGFXeGxaQ0IwYnlCelpYUjFjQ0IwYUdVZ1pHVmpiMlJsY2dCR1lXbHNaV1FnZEc4Z2NtVmhaQ0IwYUdVZ2FHVmhaR1Z5QUc1aGJnQXFiRjkwYVd4bFgyeGxiaUErSUZWSlRsUmZUVUZZSUMwZ1QxQktYME5QVFUxUFRsOURRa3hMWDBSQlZFRmZSVmhVVWtFZ0xTQndYMm95YXkwK2JWOXpjR1ZqYVdacFkxOXdZWEpoYlM1dFgyUmxZMjlrWlhJdWJWOXpiM1JmYkdWdVozUm9BR2x1WmdCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUhSb1pTQnBiV0ZuWlFCSmJuWmhiR2xrSUdGalkyVnpjeUIwYnlCd2FTMCthVzVqYkhWa1pRQXZkRzF3TDI5d1pXNXFjR1ZuTDNOeVl5OWlhVzR2WTI5dGJXOXVMMk52Ykc5eUxtTUFRVXhNWDBOUVZWTUFUMUJLWDA1VlRWOVVTRkpGUVVSVEFFNUJUZ0JQU2xCZlJFOWZUazlVWDBSSlUxQk1RVmxmVkVsTVJWOUpUa1JGV0Y5SlJsOVVURTBBU1U1R0FIQmZhakpyTFQ1dFgzTndaV05wWm1salgzQmhjbUZ0TG0xZlpHVmpiMlJsY2k1dFgzTnZkRjlzWlc1bmRHZ2dQaUJWU1U1VVgwMUJXQ0F0SUU5UVNsOURUMDFOVDA1ZlEwSk1TMTlFUVZSQlgwVllWRkpCQUFrSkNTQndjbVZqWTJsdWRITnBlbVVnS0hjc2FDazlBQWtKQ1NCemRHVndjMmw2WlhNZ0tHMHNaU2s5QUZOUFZDQnRZWEpyWlhJZ1ptOXlJSFJwYkdVZ0pYVWdaR1ZqYkdGeVpYTWdiVzl5WlNCMGFXeGxMWEJoY25SeklIUm9ZVzRnWm05MWJtUWdhVzRnVkV4TklHMWhjbXRsY2k0QUtHNTFiR3dwQUNnbFpDd2xaQ2tnQUNWemZRb0FDUWtnZlFvQVcwUkZWbDBnUkhWdGNDQmhiaUJwYldGblpWOWpiMjF3WDJobFlXUmxjaUJ6ZEhKMVkzUWdld29BVzBSRlZsMGdSSFZ0Y0NCaGJpQnBiV0ZuWlY5b1pXRmtaWElnYzNSeWRXTjBJSHNLQUVsdFlXZGxJR2x1Wm04Z2V3b0FDU0JrWldaaGRXeDBJSFJwYkdVZ2V3b0FKWE1KSUdOdmJYQnZibVZ1ZENBbFpDQjdDZ0FKQ1NCamIyMXdJQ1ZrSUhzS0FBa2dWR2xzWlNCcGJtUmxlRG9nZXdvQUNTQk5ZWEpyWlhJZ2JHbHpkRG9nZXdvQVEyOWtaWE4wY21WaGJTQnBibVJsZUNCbWNtOXRJRzFoYVc0Z2FHVmhaR1Z5T2lCN0NnQkRiMlJsYzNSeVpXRnRJR2x1Wm04Z1puSnZiU0J0WVdsdUlHaGxZV1JsY2pvZ2V3b0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnS0FFWnZkVzVrSUdFZ2JXbHpjR3hoWTJWa0lDY2xZeVZqSldNbFl5Y2dZbTk0SUc5MWRITnBaR1VnYW5BeWFDQmliM2dLQUUxaGJHWnZjbTFsWkNCS1VESWdabWxzWlNCbWIzSnRZWFE2SUdacGNuTjBJR0p2ZUNCdGRYTjBJR0psSUVwUVJVY2dNakF3TUNCemFXZHVZWFIxY21VZ1ltOTRDZ0JOWVd4bWIzSnRaV1FnU2xBeUlHWnBiR1VnWm05eWJXRjBPaUJ6WldOdmJtUWdZbTk0SUcxMWMzUWdZbVVnWm1sc1pTQjBlWEJsSUdKdmVBb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR3B3WldjeU1EQXdJR0p2ZUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2QybDBhQ0JHVkZsUUlFSnZlQW9BUVNCdFlYSnJaWElnU1VRZ2QyRnpJR1Y0Y0dWamRHVmtJQ2d3ZUdabUxTMHBJR2x1YzNSbFlXUWdiMllnSlM0NGVBb0FDUWtnYldOMFBTVjRDZ0FKQ1FrZ1kySnNhM04wZVQwbEkzZ0tBQWtKQ1NCamMzUjVQU1VqZUFvQUNRa2djSEpuUFNVamVBb0FTVzUwWldkbGNpQnZkbVZ5Wm14dmR3b0FDU0IwWkhnOUpYVXNJSFJrZVQwbGRRb0FDU0IwZHowbGRTd2dkR2c5SlhVS0FBa2dkSGd3UFNWMUxDQjBlVEE5SlhVS0FFbHVkbUZzYVdRZ1kyOXRjRzl1Wlc1MElHbHVaR1Y0T2lBbGRRb0FVM1J5WldGdElIUnZieUJ6YUc5eWRBb0FUV0Z5YTJWeUlHaGhibVJzWlhJZ1puVnVZM1JwYjI0Z1ptRnBiR1ZrSUhSdklISmxZV1FnZEdobElHMWhjbXRsY2lCelpXZHRaVzUwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCbWIzSWdZM1Z5Y21WdWRDQndjbVZqYVc1amRDQmpiMlJsWW14dlkyc2daV3hsYldWdWRBb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVFTnZaQ0JUVUVOdll5QmxiR1Z0Wlc1MENnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUlkyUWdiM0lnVTFGall5QmxiR1Z0Wlc1MENnQkJJRUpRUTBNZ2FHVmhaR1Z5SUdKdmVDQnBjeUJoZG1GcGJHRmliR1VnWVd4MGFHOTFaMmdnUWxCRElHZHBkbVZ1SUdKNUlIUm9aU0JKU0VSU0lHSnZlQ0FvSldRcElHbHVaR2xqWVhSbElHTnZiWEJ2Ym1WdWRITWdZbWwwSUdSbGNIUm9JR2x6SUdOdmJuTjBZVzUwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJR2xzYkdWbllXd2dkR2xzWlNCdlptWnpaWFFLQUVsdWRtRnNhV1FnY0hKbFkybHVZM1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHaGhibVJzWlNCaVlXNWtJSEJ5WldOcGJuUnpDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR0ZzYkNCMWMyVmtJR052YlhCdmJtVnVkSE1LQUZOcGVtVWdiMllnWTI5a1pTQmliRzlqYXlCa1lYUmhJR1Y0WTJWbFpITWdjM2x6ZEdWdElHeHBiV2wwY3dvQVUybDZaU0J2WmlCMGFXeGxJR1JoZEdFZ1pYaGpaV1ZrY3lCemVYTjBaVzBnYkdsdGFYUnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JYVnNkR2x3YkdVZ1RVTlVJRzFoY210bGNuTUtBRU52Y25KMWNIUmxaQ0JRVUUwZ2JXRnlhMlZ5Y3dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ1ptOXlJSFJwYkdVZ2NtVnpiMngxZEdsdmJuTUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCdGRXeDBhWEJzWlNCamIyeHNaV04wYVc5dWN3b0FTVzUyWVd4cFpDQlFRMHhTSUdKdmVDNGdVbVZ3YjNKMGN5QXdJSEJoYkdWMGRHVWdZMjlzZFcxdWN3b0FWMlVnWkc4Z2JtOTBJSE4xY0hCdmNuUWdVazlKSUdsdUlHUmxZMjlrYVc1bklFaFVJR052WkdWaWJHOWphM01LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlIVnVaR1ZtYVc1bFpDQnphWHBsY3dvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJR052Ykd4bFkzUnBiMjV6SUhkcGRHaHZkWFFnYzJGdFpTQnVkVzFpWlhJZ2IyWWdhVzVrYVhobGN3b0FTVzUyWVd4cFpDQjBhV3hsWXkwK2QybHVYM2g0ZUNCMllXeDFaWE1LQUVOaGJtNXZkQ0JvWVc1a2JHVWdZbTk0SUc5bUlHeGxjM01nZEdoaGJpQTRJR0o1ZEdWekNnQkRZVzV1YjNRZ2FHRnVaR3hsSUZoTUlHSnZlQ0J2WmlCc1pYTnpJSFJvWVc0Z01UWWdZbmwwWlhNS0FFTnZiWEJ2Ym1WdWRDQnBibVJsZUNBbGRTQjFjMlZrSUhObGRtVnlZV3dnZEdsdFpYTUtBRWx1ZG1Gc2FXUWdVRU5NVWlCaWIzZ3VJRkpsY0c5eWRITWdKV1FnWlc1MGNtbGxjd29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z1kzSmxZWFJsSUZSaFp5MTBjbVZsSUc1dlpHVnpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JXTjBJR1JoZEdFZ2QybDBhR2x1SUcxMWJIUnBjR3hsSUUxRFZDQnlaV052Y21SekNnQkRZVzV1YjNRZ1pHVmpiMlJsSUhScGJHVXNJRzFsYlc5eWVTQmxjbkp2Y2dvQWIzQnFYMm95YTE5aGNIQnNlVjl1WWw5MGFXeGxYM0JoY25SelgyTnZjbkpsWTNScGIyNGdaWEp5YjNJS0FGQnliMkpzWlcwZ2QybDBhQ0J6YTJsd2NHbHVaeUJLVUVWSE1qQXdNQ0JpYjNnc0lITjBjbVZoYlNCbGNuSnZjZ29BVUhKdllteGxiU0IzYVhSb0lISmxZV1JwYm1jZ1NsQkZSekl3TURBZ1ltOTRMQ0J6ZEhKbFlXMGdaWEp5YjNJS0FGVnVhMjV2ZDI0Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnZEd3Z2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnYldnZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QjBZV3RsSUdsdUlHTm9ZWEpuWlNCVFNWb2diV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1VGQlVJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFQxUWdiV0Z5YTJWeUNnQkVhV1FnYm05MElHZGxkQ0JsZUhCbFkzUmxaQ0JUVDFRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJNVkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5VSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lITndZV05sSUdadmNpQmxlSEJsWTNSbFpDQlRUMUFnYldGeWEyVnlDZ0JGZUhCbFkzUmxaQ0JUVDFBZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRTFEVHlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVa2RPSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRTBnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRkJRVFNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVRXhOSUcxaGNtdGxjZ29BUlhod1pXTjBaV1FnUlZCSUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdjbVZ4ZFdseVpXUWdSVkJJSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QkRVa2NnYldGeWEyVnlDZ0JWYm10dWIzZHVJSEJ5YjJkeVpYTnphVzl1SUc5eVpHVnlJR2x1SUVOUFJDQnRZWEpyWlhJS0FGVnVhMjV2ZDI0Z1UyTnZaQ0IyWVd4MVpTQnBiaUJEVDBRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRU5QUkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVVU5FSUcxaGNtdGxjZ29BUTNKeWIzSWdjbVZoWkdsdVp5QkRRa1FnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklGQlBReUJ0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1EwOURJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUlEwTWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUUxRFF5QnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1RVTkRJRzFoY210bGNnb0FjbVZ4ZFdseVpXUWdVMGxhSUcxaGNtdGxjaUJ1YjNRZ1ptOTFibVFnYVc0Z2JXRnBiaUJvWldGa1pYSUtBSEpsY1hWcGNtVmtJRU5QUkNCdFlYSnJaWElnYm05MElHWnZkVzVrSUdsdUlHMWhhVzRnYUdWaFpHVnlDZ0J5WlhGMWFYSmxaQ0JSUTBRZ2JXRnlhMlZ5SUc1dmRDQm1iM1Z1WkNCcGJpQnRZV2x1SUdobFlXUmxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2FHRnVaR3hsSUdwd1pXY3lNREF3SUdacGJHVWdhR1ZoWkdWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lHaGxZV1JsY2dvQVJYSnliM0lnZDJsMGFDQktVQ0JUYVdkdVlYUjFjbVVnT2lCaVlXUWdiV0ZuYVdNZ2JuVnRZbVZ5Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCamRYSnlaVzUwSUc1MWJXSmxjaUJ2WmlCMGFXeGxMWEJoY25RZ0tDVmtLU3dnWjJsMmFXNW5JSFZ3Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCd2NtVjJhVzkxY3lCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQVNXNGdVMDlVSUcxaGNtdGxjaXdnVkZCVGIzUWdLQ1ZrS1NCcGN5QnViM1FnZG1Gc2FXUWdjbVZuWVhKa2N5QjBieUIwYUdVZ1kzVnljbVZ1ZENCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDaG9aV0ZrWlhJcElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQWRHbHNaWE1nY21WeGRXbHlaU0JoZENCc1pXRnpkQ0J2Ym1VZ2NtVnpiMngxZEdsdmJnb0FUV0Z5YTJWeUlHbHpJRzV2ZENCamIyMXdiR2xoYm5RZ2QybDBhQ0JwZEhNZ2NHOXphWFJwYjI0S0FGQnliMkpzWlcwZ2QybDBhQ0J6WldWcklHWjFibU4wYVc5dUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUVEyOWtJRk5RUTI5aklHVnNaVzFsYm5Rc0lFbHVkbUZzYVdRZ1kySnNhM2N2WTJKc2EyZ2dZMjl0WW1sdVlYUnBiMjRLQUVsdWRtRnNhV1FnYlhWc2RHbHdiR1VnWTI5dGNHOXVaVzUwSUhSeVlXNXpabTl5YldGMGFXOXVDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ1kyOXNiR1ZqZEdsdmJuTWdiM1JvWlhJZ2RHaGhiaUJoY25KaGVTQmtaV052Y25KbGJHRjBhVzl1Q2dCVWIyOGdiR0Z5WjJVZ2RtRnNkV1VnWm05eUlFNXdjRzBLQUU1dmRDQmxibTkxWjJnZ1lubDBaWE1nZEc4Z2NtVmhaQ0JPY0hCdENnQmlZV1FnY0d4aFkyVmtJR3B3WldjZ1kyOWtaWE4wY21WaGJRb0FDU0JOWVdsdUlHaGxZV1JsY2lCemRHRnlkQ0J3YjNOcGRHbHZiajBsYkd4cENna2dUV0ZwYmlCb1pXRmtaWElnWlc1a0lIQnZjMmwwYVc5dVBTVnNiR2tLQUUxaGNtdGxjaUJ6YVhwbElHbHVZMjl1YzJsemRHVnVkQ0IzYVhSb0lITjBjbVZoYlNCc1pXNW5kR2dLQUZScGJHVWdjR0Z5ZENCc1pXNW5kR2dnYzJsNlpTQnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQnpkSEpsWVcwZ2JHVnVaM1JvQ2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdiWFZzZEdsd2JHVWdaR0YwWVNCemNHRnVibWx1WndvQVYzSnZibWNnWm14aFp3b0FSWEp5YjNJZ2QybDBhQ0JHVkZsUUlITnBaMjVoZEhWeVpTQkNiM2dnYzJsNlpRb0FSWEp5YjNJZ2QybDBhQ0JLVUNCemFXZHVZWFIxY21VZ1FtOTRJSE5wZW1VS0FFbHVkbUZzYVdRZ2NISmxZMmx1WTNRZ2MybDZaUW9BU1c1amIyNXphWE4wWlc1MElHMWhjbXRsY2lCemFYcGxDZ0JKYm5aaGJHbGtJRzFoY210bGNpQnphWHBsQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSWdjMmw2WlFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV1JrSUdFZ2JtVjNJSFpoYkdsa1lYUnBiMjRnY0hKdlkyVmtkWEpsQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmtaV052WkdVZ2RHbHNaUW9BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0IwYUdVZ1kyOWtaWE4wY21WaGJTQnBiaUIwYUdVZ1NsQXlJR1pwYkdVS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0JqYjJ4c1pXTjBhVzl1Y3lCM2FYUm9JR2x1WkdsNElITm9kV1ptYkdVS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCVWFXVnlJREVnYUdGdVpHeGxDZ0JPYnlCa1pXTnZaR1ZrSUdGeVpXRWdjR0Z5WVcxbGRHVnljeXdnYzJWMElIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ2RHOGdkR2hsSUhkb2IyeGxJR2x0WVdkbENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJqY21WaGRHVWdWR0ZuTFhSeVpXVUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbGFXNXBkR2xoYkdsNlpTQjBhR1VnZEdGbklIUnlaV1VLQUVWeWNtOXlJSEpsWVdScGJtY2dVMUJEYjJRZ1UxQkRiMk1nWld4bGJXVnVkQ3dnU1c1MllXeHBaQ0IwY21GdWMyWnZjbTFoZEdsdmJpQm1iM1Z1WkFvQVJYSnliM0lnY21WaFpHbHVaeUJUVUVOdlpDQlRVRU52WXlCbGJHVnRaVzUwTGlCVmJuTjFjSEJ2Y25SbFpDQk5hWGhsWkNCSVZDQmpiMlJsTFdKc2IyTnJJSE4wZVd4bElHWnZkVzVrQ2dCVWFXeGxJRmtnWTI5dmNtUnBibUYwWlhNZ1lYSmxJRzV2ZENCemRYQndiM0owWldRS0FGUnBiR1VnV0NCamIyOXlaR2x1WVhSbGN5QmhjbVVnYm05MElITjFjSEJ2Y25SbFpBb0FTVzFoWjJVZ1kyOXZjbVJwYm1GMFpYTWdZV0p2ZG1VZ1NVNVVYMDFCV0NCaGNtVWdibTkwSUhOMWNIQnZjblJsWkFvQVNsQkZSekl3TURBZ1NHVmhaR1Z5SUdKdmVDQnViM1FnY21WaFpDQjVaWFFzSUNjbFl5VmpKV01sWXljZ1ltOTRJSGRwYkd3Z1ltVWdhV2R1YjNKbFpBb0FiM0JxWDJveWExOXRaWEpuWlY5d2NIUW9LU0JvWVhNZ1lXeHlaV0ZrZVNCaVpXVnVJR05oYkd4bFpBb0FiM0JxWDJveWExOWlkV2xzWkY5MGNGOXBibVJsZUY5bWNtOXRYM1JzYlNncE9pQjBhV3hsSUdsdVpHVjRJR0ZzYkc5allYUnBiMjRnWm1GcGJHVmtDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRk5QVkNCdFlYSnJaWEl1SUZScGJHVWdhVzVrWlhnZ1lXeHNiMk5oZEdsdmJpQm1ZV2xzWldRS0FFbG5ibTl5YVc1bklHbG9aSElnWW05NExpQkdhWEp6ZENCcGFHUnlJR0p2ZUNCaGJISmxZV1I1SUhKbFlXUUtBRnB3Y0hRZ0pYVWdZV3h5WldGa2VTQnlaV0ZrQ2dCYWNIQnRJQ1YxSUdGc2NtVmhaSGtnY21WaFpBb0FVRlJGVWswZ1kyaGxZMnNnWm1GcGJIVnlaVG9nSldRZ2MzbHVkR2hsYzJsNlpXUWdNSGhHUmlCdFlYSnJaWEp6SUhKbFlXUUtBQWtKQ1NCallteHJkejB5WGlWa0NnQUpDUWtnWTJKc2EyZzlNbDRsWkFvQUNRa0pJSEZ1ZEhOMGVUMGxaQW9BSlhNZ1pIZzlKV1FzSUdSNVBTVmtDZ0FKQ1FrZ2NtOXBjMmhwWm5ROUpXUUtBQWtKQ1NCdWRXMW5ZbWwwY3owbFpBb0FDUWtnYm5WdGJHRjVaWEp6UFNWa0NnQWxjeUJ1ZFcxamIyMXdjejBsWkFvQWIzQnFYMnB3TWw5aGNIQnNlVjlqWkdWbU9pQmhZMjQ5SldRc0lHNTFiV052YlhCelBTVmtDZ0J2Y0dwZmFuQXlYMkZ3Y0d4NVgyTmtaV1k2SUdOdVBTVmtMQ0J1ZFcxamIyMXdjejBsWkFvQUNRa0pJRzUxYlhKbGMyOXNkWFJwYjI1elBTVmtDZ0FKQ1NCMGVYQmxQU1VqZUN3Z2NHOXpQU1ZzYkdrc0lHeGxiajBsWkFvQUpYTWdjMmR1WkQwbFpBb0FDUWtKSUhGdFptSnBaRDBsWkFvQUpYTWdjSEpsWXowbFpBb0FDUWtnYm1JZ2IyWWdkR2xzWlMxd1lYSjBJR2x1SUhScGJHVWdXeVZrWFQwbFpBb0FKWE1nZURFOUpXUXNJSGt4UFNWa0NnQWxjeUI0TUQwbFpDd2dlVEE5SldRS0FFWmhhV3hsWkNCMGJ5QmtaV052WkdVZ2RHbHNaU0FsWkM4bFpBb0FVMlYwZEdsdVp5QmtaV052WkdsdVp5QmhjbVZoSUhSdklDVmtMQ1ZrTENWa0xDVmtDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJR052YlhCdmJtVnVkQ0FsWkFvQVNXNTJZV3hwWkNCMllXeDFaU0JtYjNJZ2JuVnRjbVZ6YjJ4MWRHbHZibk1nT2lBbFpDd2diV0Y0SUhaaGJIVmxJR2x6SUhObGRDQnBiaUJ2Y0dWdWFuQmxaeTVvSUdGMElDVmtDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0J1ZFcxaVpYSTZJQ1ZrTENCeVpXZGhjbVJwYm1jZ2RHaGxJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNWa0NnQlViMjhnYldGdWVTQlFUME56SUNWa0NnQnZjR3BmYWpKclgzSmxZV1JmZEd4dEtDazZJR2x1ZG1Gc2FXUWdkR2xzWlNCdWRXMWlaWElnSldRS0FFbHVkbUZzYVdRZ2RHbHNaU0J1ZFcxaVpYSWdKV1FLQUVsdWRtRnNhV1FnZEdsc1pTQndZWEowSUdsdVpHVjRJR1p2Y2lCMGFXeGxJRzUxYldKbGNpQWxaQzRnUjI5MElDVmtMQ0JsZUhCbFkzUmxaQ0FsWkFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJ1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwSUdseklHbHNiR1ZuWVd3Z0xUNGdKV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmphV1ZzWVdJS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCallteHJMVDVrWldOdlpHVmtYMlJoZEdFS0FFWmhhV3hsWkNCMGJ5QnRaWEpuWlNCUVVGUWdaR0YwWVFvQVJtRnBiR1ZrSUhSdklHMWxjbWRsSUZCUVRTQmtZWFJoQ2dCSmJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCc1lYbGxjbk1nYVc0Z1EwOUVJRzFoY210bGNpQTZJQ1ZrSUc1dmRDQnBiaUJ5WVc1blpTQmJNUzAyTlRVek5WMEtBQ1Z6T2lWa09tTnZiRzl5WDJOdGVXdGZkRzlmY21kaUNnbERRVTRnVGs5VUlFTlBUbFpGVWxRS0FDVnpPaVZrT21OdmJHOXlYMlZ6ZVdOalgzUnZYM0puWWdvSlEwRk9JRTVQVkNCRFQwNVdSVkpVQ2dBbGN6b2xaRHBqYjJ4dmNsOXplV05qWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0JUZEhKbFlXMGdkRzl2SUhOb2IzSjBMQ0JsZUhCbFkzUmxaQ0JUVDFRS0FGVnVZV0pzWlNCMGJ5QnpaWFFnZERFZ2FHRnVaR3hsSUdGeklGUk1Vd29BVTI5MElHeGxibWQwYUNCcGN5QnNaWE56SUhSb1lXNGdiV0Z5YTJWeUlITnBlbVVnS3lCdFlYSnJaWElnU1VRS0FGTjBjbVZoYlNCa2IyVnpJRzV2ZENCbGJtUWdkMmwwYUNCRlQwTUtBRU5oYm01dmRDQm9ZVzVrYkdVZ1ltOTRJSE5wZW1WeklHaHBaMmhsY2lCMGFHRnVJREplTXpJS0FHOXdhbDl3YVY5dVpYaDBYMnh5WTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0pzWTNBb0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYMk53Y213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0JqY213b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDl3YVY5dVpYaDBYM0p3WTJ3b0tUb2dhVzUyWVd4cFpDQmpiMjF3Ym04d0wyTnZiWEJ1YnpFS0FHOXdhbDkwTVY5a1pXTnZaR1ZmWTJKc2F5Z3BPaUIxYm5OMWNIQnZjblJsWkNCaWNHNXZYM0JzZFhOZmIyNWxJRDBnSldRZ1BqMGdNekVLQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdsc1pTQXhMekVLQUVsdWMzVm1abWxqYVdWdWRDQmtZWFJoSUdadmNpQkRUVUZRSUdKdmVDNEtBRTVsWldRZ2RHOGdjbVZoWkNCaElGQkRURklnWW05NElHSmxabTl5WlNCMGFHVWdRMDFCVUNCaWIzZ3VDZ0JKYm5OMVptWnBZMmxsYm5RZ1pHRjBZU0JtYjNJZ1EwUkZSaUJpYjNndUNnQk9kVzFpWlhJZ2IyWWdZMmhoYm01bGJDQmtaWE5qY21sd2RHbHZiaUJwY3lCbGNYVmhiQ0IwYnlCNlpYSnZJR2x1SUVORVJVWWdZbTk0TGdvQVUzUnlaV0Z0SUdWeWNtOXlJSGRvYVd4bElISmxZV1JwYm1jZ1NsQXlJRWhsWVdSbGNpQmliM2c2SUc1dklDZHBhR1J5SnlCaWIzZ3VDZ0JPYjI0Z1kyOXVabTl5YldGdWRDQmpiMlJsYzNSeVpXRnRJRlJRYzI5MFBUMVVUbk52ZEM0S0FGTjBjbVZoYlNCbGNuSnZjaUIzYUdsc1pTQnlaV0ZrYVc1bklFcFFNaUJJWldGa1pYSWdZbTk0T2lCaWIzZ2diR1Z1WjNSb0lHbHpJR2x1WTI5dWMybHpkR1Z1ZEM0S0FFSnZlQ0JzWlc1bmRHZ2dhWE1nYVc1amIyNXphWE4wWlc1MExnb0FVbVZ6YjJ4MWRHbHZiaUJtWVdOMGIzSWdhWE1nWjNKbFlYUmxjaUIwYUdGdUlIUm9aU0J0WVhocGJYVnRJSEpsYzI5c2RYUnBiMjRnYVc0Z2RHaGxJR052YlhCdmJtVnVkQzRLQUVOdmJYQnZibVZ1ZENCdFlYQndhVzVuSUhObFpXMXpJSGR5YjI1bkxpQlVjbmxwYm1jZ2RHOGdZMjl5Y21WamRDNEtBRzl3YWw5cU1tdGZZblZwYkdSZmRIQmZhVzVrWlhoZlpuSnZiVjkwYkcwb0tUb2dkR2xzWlNBbFpDQm9ZWE1nYm04Z2NtVm5hWE4wWlhKbFpDQjBhV3hsTFhCaGNuUWdhVzRnVkV4TklHMWhjbXRsY2lCelpXZHRaVzUwY3k0S0FHOXdhbDlxTW10ZmNtVmhaRjkwYkcwb0tUb2dkRzl2SUcxaGJua2dWRXhOSUcxaGNtdGxjbk11Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklHTmhibTV2ZENCaGJHeHZZMkYwWlNCdFgzUnBiR1ZmY0dGeWRGOXBibVp2Y3k0S0FFbHVZMjl0Y0d4bGRHVWdZMmhoYm01bGJDQmtaV1pwYm1sMGFXOXVjeTRLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRWx1ZG1Gc2FXUWdZMjlrWldKc2IyTnJJR3hsYm1kMGFDQjJZV3gxWlhNdUNnQlhaU0JrYnlCdWIzUWdjM1Z3Y0c5eWRDQnRiM0psSUhSb1lXNGdNeUJqYjJScGJtY2djR0Z6YzJWeklHbHVJR0Z1SUVoVUlHTnZaR1ZpYkc5amF6c2dWR2hwY3lCamIyUmxZbXh2WTJ0eklHaGhjeUFsWkNCd1lYTnpaWE11Q2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJVYUdWeVpTQmhjbVVnSldRZ2VtVnlieUJpYVhSd2JHRnVaWE1nYVc0Z0pXUWdZbWwwY0d4aGJtVnpMZ29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElIUnlZVzV6Wm05eWJXRjBhVzl1SUhOMFlXZGxjeTRLQUZWdWEyNXZkMjRnYldGeWEyVnlJR2hoY3lCaVpXVnVJR1JsZEdWamRHVmtJR0Z1WkNCblpXNWxjbUYwWldRZ1pYSnliM0l1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNObGRIVndYMlJsWTI5a1pYSWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNKbFlXUmZhR1ZoWkdWeUlHWjFibU4wYVc5dUlHbHpJRzV2ZENCaElHUmxZMjl0Y0hKbGMzTnZjaUJvWVc1a2JHVnlMZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlVURTBnYldGeWEyVnlMZ29BVkdsc1pYTWdaRzl1SjNRZ1lXeHNJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUxpQlRhMmx3SUhSb1pTQk5RMVFnYzNSbGNDNEtBRTUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNnbFpDa2dhWE1nYVc1amIyNXphWE4wWlc1MElIZHBkR2dnWVNCTlExUXVJRk5yYVhBZ2RHaGxJRTFEVkNCemRHVndMZ29BU2xBeUlHSnZlQ0IzYUdsamFDQmhjbVVnWVdaMFpYSWdkR2hsSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0J1YjNRZ1ltVWdjbVZoWkNCaWVTQjBhR2x6SUdaMWJtTjBhVzl1TGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVjJobGJpQjBhR1VnYm5WdFltVnlJRzltSUhwbGNtOGdjR3hoYm1WeklHSnBkSEJzWVc1bGN5QnBjeUJsY1hWaGJDQjBieUIwYUdVZ2JuVnRZbVZ5SUc5bUlHSnBkSEJzWVc1bGN5d2diMjVzZVNCMGFHVWdZMnhsWVc1MWNDQndZWE56SUcxaGEyVnpJSE5sYm5ObExDQmlkWFFnZDJVZ2FHRjJaU0FsWkNCd1lYTnpaWE1nYVc0Z2RHaHBjeUJqYjJSbFlteHZZMnN1SUZSb1pYSmxabTl5WlN3Z2IyNXNlU0IwYUdVZ1kyeGxZVzUxY0NCd1lYTnpJSGRwYkd3Z1ltVWdaR1ZqYjJSbFpDNGdWR2hwY3lCdFpYTnpZV2RsSUhkcGJHd2dibTkwSUdKbElHUnBjM0JzWVhsbFpDQmhaMkZwYmk0S0FFbHRZV2RsSUdoaGN5QnNaWE56SUdOdmJYQnZibVZ1ZEhNZ2RHaGhiaUJqYjJSbGMzUnlaV0Z0TGdvQVRtVmxaQ0IwYnlCa1pXTnZaR1VnZEdobElHMWhhVzRnYUdWaFpHVnlJR0psWm05eVpTQmlaV2RwYmlCMGJ5QmtaV052WkdVZ2RHaGxJSEpsYldGcGJtbHVaeUJqYjJSbGMzUnlaV0Z0TGdvQVVITnZkQ0IyWVd4MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCMGFXeGxMWEJoY25RZ2FYTWdaWEYxWVd3Z2RHOGdlbVZ5Ynl3Z2QyVWdZWE56ZFcxcGJtY2dhWFFnYVhNZ2RHaGxJR3hoYzNRZ2RHbHNaUzF3WVhKMElHOW1JSFJvWlNCamIyUmxjM1J5WldGdExnb0FRU0J0WVd4bWIzSnRaV1FnWTI5a1pXSnNiMk5ySUhSb1lYUWdhR0Z6SUcxdmNtVWdkR2hoYmlCdmJtVWdZMjlrYVc1bklIQmhjM01zSUdKMWRDQjZaWEp2SUd4bGJtZDBhQ0JtYjNJZ01tNWtJR0Z1WkNCd2IzUmxiblJwWVd4c2VTQjBhR1VnTTNKa0lIQmhjM01nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yTGdvQUNRa0pJSFJwYkdVdGNHRnlkRnNsWkYwNklITjBZWEpmY0c5elBTVnNiR2tzSUdWdVpGOW9aV0ZrWlhJOUpXeHNhU3dnWlc1a1gzQnZjejBsYkd4cExnb0FWR2xzWlNBbGRTQm9ZWE1nVkZCemIzUWdQVDBnTUNCaGJtUWdWRTV6YjNRZ1BUMGdNQ3dnWW5WMElHNXZJRzkwYUdWeUlIUnBiR1V0Y0dGeWRITWdkMlZ5WlNCbWIzVnVaQzRnUlU5RElHbHpJR0ZzYzI4Z2JXbHpjMmx1Wnk0S0FFTnZiWEJ2Ym1WdWRDQWxaQ0JrYjJWemJpZDBJR2hoZG1VZ1lTQnRZWEJ3YVc1bkxnb0FiM0JxWDJveWExOXlaV0ZrWDNSc2JTZ3BPaUJVVEUwZ2JXRnlhMlZ5SUc1dmRDQnZaaUJsZUhCbFkzUmxaQ0J6YVhwbExnb0FRU0JqYjI1bWIzSnRhVzVuSUVwUU1pQnlaV0ZrWlhJZ2MyaGhiR3dnYVdkdWIzSmxJR0ZzYkNCRGIyeHZkWElnVTNCbFkybG1hV05oZEdsdmJpQmliM2hsY3lCaFpuUmxjaUIwYUdVZ1ptbHljM1FzSUhOdklIZGxJR2xuYm05eVpTQjBhR2x6SUc5dVpTNEtBRlJvWlNCemFXZHVZWFIxY21VZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNCbWRIbHdJR0p2ZUNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlM0S0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVsdVkyOXljbVZqZENCTlJVd2djMlZuYldWdWRDQnpaWEYxWlc1alpTNEtBRU52YlhCdmJtVnVkQ0FsWkNCcGN5QnRZWEJ3WldRZ2RIZHBZMlV1Q2dCdmNHcGZhakpyWDNKbFlXUmZkR3h0S0NrNklGTlVJRDBnTXlCcGN5QnBiblpoYkdsa0xnb0FUMjVzZVNCdmJtVWdRMDFCVUNCaWIzZ2dhWE1nWVd4c2IzZGxaQzRLQUZkbElHNWxaV1FnWVc0Z2FXMWhaMlVnY0hKbGRtbHZkWE5zZVNCamNtVmhkR1ZrTGdvQVNVaEVVaUJpYjNoZmJXbHpjMmx1Wnk0Z1VtVnhkV2x5WldRdUNnQktVREpJSUdKdmVDQnRhWE56YVc1bkxpQlNaWEYxYVhKbFpDNEtBRTV2ZENCemRYSmxJR2h2ZHlCMGFHRjBJR2hoY0hCbGJtVmtMZ29BVFdGcGJpQm9aV0ZrWlhJZ2FHRnpJR0psWlc0Z1kyOXljbVZqZEd4NUlHUmxZMjlrWldRdUNnQlVhV3hsSUNWa0x5VmtJR2hoY3lCaVpXVnVJR1JsWTI5a1pXUXVDZ0JJWldGa1pYSWdiMllnZEdsc1pTQWxaQ0F2SUNWa0lHaGhjeUJpWldWdUlISmxZV1F1Q2dCRmJYQjBlU0JUVDFRZ2JXRnlhMlZ5SUdSbGRHVmpkR1ZrT2lCUWMyOTBQU1ZrTGdvQVJHbHlaV04wSUhWelpTQmhkQ0FqSldRZ2FHOTNaWFpsY2lCd1kyOXNQU1ZrTGdvQVNXMXdiR1Z0Wlc1MFlYUnBiMjRnYkdsdGFYUmhkR2x2YmpvZ1ptOXlJSEJoYkdWMGRHVWdiV0Z3Y0dsdVp5d2djR052YkZzbFpGMGdjMmh2ZFd4a0lHSmxJR1Z4ZFdGc0lIUnZJQ1ZrTENCaWRYUWdhWE1nWlhGMVlXd2dkRzhnSldRdUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDOXdZV3hsZEhSbElHbHVaR1Y0SUdadmNpQmthWEpsWTNRZ2JXRndjR2x1WnlBbFpDNEtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR050WVhCYkpXUmRMbTEwZVhBZ1BTQWxaQzRLQUZCemIzUWdkbUZzZFdVZ2FYTWdibTkwSUdOdmNuSmxZM1FnY21WbllYSmtjeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlRvZ0pXUXVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQldURU1nWTI5a1pTQndjbTlrZFdObGN5QnphV2R1YVdacFkyRnVkQ0J6WVcxd2JHVnpJRzkxZEhOcFpHVWdkR2hsSUdOdlpHVmliRzlqYXlCaGNtVmhMZ29BVlc1bGVIQmxZM1JsWkNCUFQwMHVDZ0F6TWlCaWFYUnpJR0Z5WlNCdWIzUWdaVzV2ZFdkb0lIUnZJR1JsWTI5a1pTQjBhR2x6SUdOdlpHVmliRzlqYXl3Z2MybHVZMlVnZEdobElHNTFiV0psY2lCdlppQmlhWFJ3YkdGdVpTd2dKV1FzSUdseklHeGhjbWRsY2lCMGFHRnVJRE13TGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYzJodmRXeGtJR0psSUQ0Z01DNEtBRkpwWjJoMElIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTRNVDBsWkNrZ2MyaHZkV3hrSUdKbElENGdNQzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2MyaHZkV3hrSUdKbElENDlJREF1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2djMmh2ZFd4a0lHSmxJRDQ5SURBdUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJNklIQmhZMnRsZENCb1pXRmtaWElnYUdGMlpTQmlaV1Z1SUhCeVpYWnBiM1Z6YkhrZ1ptOTFibVFnYVc0Z2RHaGxJRzFoYVc0Z2FHVmhaR1Z5SUNoUVVFMGdiV0Z5YTJWeUtTNEtBRk4wWVhKMElIUnZJSEpsWVdRZ2FqSnJJRzFoYVc0Z2FHVmhaR1Z5SUNnbGJHeGtLUzRLQUVKdmRIUnZiU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRFOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmx6YVhvOUpXUXBMZ29BVlhBZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0hOcGVqMGxaQ2t1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XSE5wZWowbFpDa3VDZ0JDYjNSMGIyMGdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t4UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JWY0NCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVUQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZsUGMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0U5emFYbzlKV1FwTGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmhQYzJsNlBTVmtLUzRLQUZOcGVtVWdlQ0J2WmlCMGFHVWdaR1ZqYjJSbFpDQmpiMjF3YjI1bGJuUWdhVzFoWjJVZ2FYTWdhVzVqYjNKeVpXTjBJQ2hqYjIxd1d5VmtYUzUzUFNWa0tTNEtBRk5wZW1VZ2VTQnZaaUIwYUdVZ1pHVmpiMlJsWkNCamIyMXdiMjVsYm5RZ2FXMWhaMlVnYVhNZ2FXNWpiM0p5WldOMElDaGpiMjF3V3lWa1hTNW9QU1ZrS1M0S0FGUnBiR1VnY21WaFpDd2daR1ZqYjJSbFpDQmhibVFnZFhCa1lYUmxaQ0JwY3lCdWIzUWdkR2hsSUdSbGMybHlaV1FnYjI1bElDZ2xaQ0IyY3lBbFpDa3VDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JwYm1SbGVDQWxaQ0FvUGowZ0pXUXBMZ29BYjNCcVgzSmxZV1JmYUdWaFpHVnlLQ2tnYzJodmRXeGtJR0psSUdOaGJHeGxaQ0JpWldadmNtVWdiM0JxWDNObGRGOWtaV052WkdWa1gyTnZiWEJ2Ym1WdWRITW9LUzRLQUUxbGJXOXllU0JoYkd4dlkyRjBhVzl1SUdaaGFXeDFjbVVnYVc0Z2IzQnFYMnB3TWw5aGNIQnNlVjl3WTJ4eUtDa3VDZ0JwYldGblpTMCtZMjl0Y0hOYkpXUmRMbVJoZEdFZ1BUMGdUbFZNVENCcGJpQnZjR3BmYW5BeVgyRndjR3g1WDNCamJISW9LUzRLQUdsdWRtRnNhV1FnWW05NElITnBlbVVnSldRZ0tDVjRLUW9BUm1GcGJDQjBieUJ5WldGa0lIUm9aU0JqZFhKeVpXNTBJRzFoY210bGNpQnpaV2R0Wlc1MElDZ2xJM2dwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRWxJUkZJZ2R5Z2xkU2tnYUNnbGRTa2dkbk11SUZOSldpQjNLQ1YxS1NCb0tDVjFLUW9BUlhKeWIzSWdjbVZoWkdsdVp5QkRUME1nYldGeWEyVnlJQ2hpWVdRZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITXBDZ0JKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUIwYVd4bGN5QTZJQ1YxSUhnZ0pYVWdLRzFoZUdsdGRXMGdabWw0WldRZ1lua2dhbkJsWnpJd01EQWdibTl5YlNCcGN5QTJOVFV6TlNCMGFXeGxjeWtLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ0tHbG9aSElwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FXMWhaMlVnYUdWaFpHVnlJQ2hwYUdSeUtRb0FWM0p2Ym1jZ2RtRnNkV1Z6SUdadmNqb2dkeWdsWkNrZ2FDZ2xaQ2tnYm5WdFkyOXRjSE1vSldRcElDaHBhR1J5S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJR1I0UFNWMUlHUjVQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F5TlRVZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCS1VFVkhNakF3TUNCdWIzSnRLUW9BUW1Ga0lHbHRZV2RsSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVOUFRGSWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCQ1lXUWdRbEJEUXlCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpTa0tBRVZ5Y205eUlIZHBkR2dnVTBsYUlHMWhjbXRsY2pvZ2JtVm5ZWFJwZG1VZ2IzSWdlbVZ5YnlCcGJXRm5aU0J6YVhwbElDZ2xiR3hrSUhnZ0pXeHNaQ2tLQUhOcmFYQTZJSE5sWjIxbGJuUWdkRzl2SUd4dmJtY2dLQ1ZrS1NCM2FYUm9JRzFoZUNBb0pXUXBJR1p2Y2lCamIyUmxZbXh2WTJzZ0pXUWdLSEE5SldRc0lHSTlKV1FzSUhJOUpXUXNJR005SldRcENnQnlaV0ZrT2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BUkdWemNHbDBaU0JLVURJZ1FsQkRJVDB5TlRVc0lIQnlaV05wYzJsdmJpQmhibVF2YjNJZ2MyZHVaQ0IyWVd4MVpYTWdabTl5SUdOdmJYQmJKV1JkSUdseklHUnBabVpsY21WdWRDQjBhR0Z1SUdOdmJYQmJNRjA2Q2lBZ0lDQWdJQ0FnV3pCZElIQnlaV01vSldRcElITm5ibVFvSldRcElGc2xaRjBnY0hKbFl5Z2xaQ2tnYzJkdVpDZ2xaQ2tLQUdKaFpDQmpiMjF3YjI1bGJuUWdiblZ0WW1WeUlHbHVJRkpIVGlBb0pXUWdkMmhsYmlCMGFHVnlaU0JoY21VZ2IyNXNlU0FsWkNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZENCcGN5QnViM1FnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCeVpXMWhhVzVwYm1jZ2JuVnRZbVZ5SUc5bUlIQmhjbUZ0WlhSbGNuTWdLQ0FsWkNCMmN5QWxaQ2tLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2dhVzUyWVd4cFpDQjBhV3hsSUhOcGVtVWdLSFJrZURvZ0pXUXNJSFJrZVRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoaVlXUWdjMmw2WlRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoRFNVVk1ZV0lzSUdKaFpDQnphWHBsT2lBbFpDa0tBRkJVUlZKTklHTm9aV05ySUdaaGFXeDFjbVU2SUNWa0lISmxiV0ZwYm1sdVp5QmllWFJsY3lCcGJpQmpiMlJsSUdKc2IyTnJJQ2dsWkNCMWMyVmtJQzhnSldRcENnQk5ZV3htYjNKdFpXUWdTRlFnWTI5a1pXSnNiMk5yTGlCUGJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNGdhWE1nYm05MElHMWxkRG9nTWlBOFBTQlRZM1Z3SUR3OUlHMXBiaWhNWTNWd0xDQTBNRGM1S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJSEJ5WldNOUpYVWdLSE5vYjNWc1pDQmlaU0JpWlhSM1pXVnVJREVnWVc1a0lETTRJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlM0Z1QzQmxia3B3WldjZ2IyNXNlU0J6ZFhCd2IzSjBjeUIxY0NCMGJ5QXpNU2tLQUVsdWRtRnNhV1FnWW1sMElHNTFiV0psY2lBbFpDQnBiaUJ2Y0dwZmRESmZjbVZoWkY5d1lXTnJaWFJmYUdWaFpHVnlLQ2tLQUZOMGNtVmhiU0JsY25KdmNpRUtBRVZ5Y205eUlHOXVJSGR5YVhScGJtY2djM1J5WldGdElRb0FVM1J5WldGdElISmxZV05vWldRZ2FYUnpJR1Z1WkNBaENnQkZlSEJsWTNSbFpDQmhJRk5QUXlCdFlYSnJaWElnQ2dCSmJuWmhiR2xrSUdKdmVDQnphWHBsSUNWa0lHWnZjaUJpYjNnZ0p5VmpKV01sWXlWakp5NGdUbVZsWkNBbFpDQmllWFJsY3l3Z0pXUWdZbmwwWlhNZ2NtVnRZV2x1YVc1bklBb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1JHVmpiMlJwYm1jZ2RHaHBjeUJqYjJSbFlteHZZMnNnYVhNZ2MzUnZjSEJsWkM0Z1ZWOXhJR2x6SUd4aGNtZGxjaUIwYUdGdUlIcGxjbThnWW1sMGNHeGhibVZ6SUNzZ01TQUtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGVmZjU0JwYzJ4aGNtZGxjaUIwYUdGdUlHSnBkSEJzWVc1bGN5QXJJREVnQ2dCRFQweFNJRUpQV0NCdFpYUm9JSFpoYkhWbElHbHpJRzV2ZENCaElISmxaM1ZzWVhJZ2RtRnNkV1VnS0NWa0tTd2djMjhnZDJVZ2QybHNiQ0JwWjI1dmNtVWdkR2hsSUdWdWRHbHlaU0JEYjJ4dmRYSWdVM0JsWTJsbWFXTmhkR2x2YmlCaWIzZ3VJQW9BVjJocGJHVWdjbVZoWkdsdVp5QkRRMUJmVVU1VVUxUlpJR1ZzWlcxbGJuUWdhVzV6YVdSbElGRkRSQ0J2Y2lCUlEwTWdiV0Z5YTJWeUlITmxaMjFsYm5Rc0lHNTFiV0psY2lCdlppQnpkV0ppWVc1a2N5QW9KV1FwSUdseklHZHlaV0YwWlhJZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwTGlCVGJ5QjNaU0JzYVcxcGRDQjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUhOMGIzSmxaQ0IwYnlCUFVFcGZTakpMWDAxQldFSkJUa1JUSUNnbFpDa2dZVzVrSUhOcmFYQWdkR2hsSUhKbGMzUXVJQW9BU2xBeUlFbElSRklnWW05NE9pQmpiMjF3Y21WemMybHZiaUIwZVhCbElHbHVaR2xqWVhSbElIUm9ZWFFnZEdobElHWnBiR1VnYVhNZ2JtOTBJR0VnWTI5dVptOXliV2x1WnlCS1VESWdabWxzWlNBb0pXUXBJQW9BVkdsc1pTQnBibVJsZUNCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZFhObGNpQnBjeUJwYm1OdmNuSmxZM1FnSldRZ0tHMWhlQ0E5SUNWa0tTQUtBRVZ5Y205eUlHUmxZMjlrYVc1bklHTnZiWEJ2Ym1WdWRDQWxaQzRLVkdobElHNTFiV0psY2lCdlppQnlaWE52YkhWMGFXOXVjeUIwYnlCeVpXMXZkbVVnS0NWa0tTQnBjeUJuY21WaGRHVnlJRzl5SUdWeGRXRnNJSFJvWVc0Z2RHaGxJRzUxYldKbGNpQnZaaUJ5WlhOdmJIVjBhVzl1Y3lCdlppQjBhR2x6SUdOdmJYQnZibVZ1ZENBb0pXUXBDazF2WkdsbWVTQjBhR1VnWTNCZmNtVmtkV05sSUhCaGNtRnRaWFJsY2k0S0NnQkpiV0ZuWlNCa1lYUmhJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUWdkMmwwYUNCMGFXeGxJQ1ZrTGdvS0FDTUFwUUJEQUdZQWd3RHVxQlFBMzlnakFMNFFRd0QvOVlNQWZpQlZBRjlSSXdBMUFFTUFUa1NEQU03RUZBRFB6Q01BL3VKREFQK1pnd0NXQU1VQVB6RWpBS1VBUXdCZVJJTUF6c2dVQU44Ukl3RCs5RU1BLy95REFKNEFWUUIzQUNNQU5RQkRBUC94Z3dDdWlCUUF0d0FqQVA3NFF3RHY1SU1Bam9qRkFCOFJJd0NsQUVNQVpnQ0RBTzZvRkFEZlZDTUF2aEJEQU84aWd3QitJRlVBZnlJakFEVUFRd0JPUklNQXpzUVVBTDhSSXdEKzRrTUE5d0NEQUpZQXhRQS9JaU1BcFFCREFGNUVnd0RPeUJRQTF3QWpBUDcwUXdEL3VvTUFuZ0JWQUc4QUl3QTFBRU1BLythREFLNklGQUN2b2lNQS92aERBT2NBZ3dDT2lNVUFMeUlDQU1VQWhBQitJQUlBenNRa0FQY0FBZ0Qrb2tRQVZnQUNBSjRBRkFEWEFBSUF2aENFQUdZQUFnQ3VpQ1FBM3hFQ0FPNm9SQUEyQUFJQWpvZ1VBQjhSQWdERkFJUUFiZ0FDQU02SUpBRC9pQUlBL3JoRUFFNUVBZ0NXQUJRQXR3QUNBUDdraEFCZVJBSUFwZ0FrQU9jQUFnRGVWRVFBTGlJQ0FENEFGQUIzQUFJQXhRQ0VBSDRnQWdET3hDUUEvL0VDQVA2aVJBQldBQUlBbmdBVUFMOFJBZ0MrRUlRQVpnQUNBSzZJSkFEdklnSUE3cWhFQURZQUFnQ09pQlFBZnlJQ0FNVUFoQUJ1QUFJQXpvZ2tBTy9rQWdEK3VFUUFUa1FDQUpZQUZBQ3ZvZ0lBL3VTRUFGNUVBZ0NtQUNRQTM5Z0NBTjVVUkFBdUlnSUFQZ0FVQUY5UkFnQlZBSVFBWmdBQ0FONklKQUQvTWdJQS9oRkVBRTVFQWdDdUFCUUF0d0FDQUg0eGhBQmVVUUlBeGdBa0FOY0FBZ0R1SUVRQUhoRUNBSjRBRkFCM0FBSUFWUUNFQUY1VUFnRE9SQ1FBNXdBQ0FQN3hSQUEyQUFJQXBnQVVBRjlWQWdEK2RJUUFQaEVDQUw0Z0pBQi9kQUlBM3NSRUFQLzRBZ0NXQUJRQUx5SUNBRlVBaEFCbUFBSUEzb2drQVBjQUFnRCtFVVFBVGtRQ0FLNEFGQUNQaUFJQWZqR0VBRjVSQWdER0FDUUF6OGdDQU80Z1JBQWVFUUlBbmdBVUFHOEFBZ0JWQUlRQVhsUUNBTTVFSkFEZjBRSUEvdkZFQURZQUFnQ21BQlFBZnlJQ0FQNTBoQUErRVFJQXZpQWtBTDhpQWdEZXhFUUE3eUlDQUpZQUZBQS9NZ01BM3RUOTlQLzhGQUErRVZVQWo0Z0RBTDR5aFFEbkFDVUFYbEgrcW45eUF3RE9SUDM0NzBRVUFINWtSUUN2b2dNQXBnQmRWZCtaL2ZFMkFQNzFiMklEQU43Ui9mVC81aFFBZm5GVkFMK3hBd0N1aUlVQTM5VWxBRTVFL3ZKL1pnTUF4Z0Q5K08vaUZBQmVWRVVBbnhFREFKWUFYVlhQeVAzeEhoSHV5R2NBQXdEZTFQMzAvL01VQUQ0UlZRQy9FUU1BdmpLRkFOL1lKUUJlVWY2cUx5SURBTTVFL2ZqM0FCUUFmbVJGQUorWUF3Q21BRjFWMXdEOThUWUEvdlZ2UkFNQTN0SDk5UCs1RkFCK2NWVUF0d0FEQUs2SWhRRGYzQ1VBVGtUKzhuY0FBd0RHQVAzNDcrUVVBRjVVUlFCL2N3TUFsZ0JkVmIrNC9mRWVFZTdJUHpJQ0FLVUFoQUIrUUFJQTNoQWtBTjhSQWdEK2NrUUFWZ0FDQUs2b0ZBQy9zZ0lBbGdDRUFHWUFBZ0RHQUNRQTV3QUNBTzdJUkFBdUlnSUFqb2dVQUhjQUFnQ2xBSVFBYmdBQ0FNNklKQUQzQUFJQS9wRkVBRFlBQWdDdW9oUUFyNm9DQVA2NGhBQmVBQUlBdmdBa0FNL0VBZ0R1UkVRQS8vUUNBRDRpRkFBZkVRSUFwUUNFQUg1QUFnRGVFQ1FBLzVrQ0FQNXlSQUJXQUFJQXJxZ1VBTGNBQWdDV0FJUUFaZ0FDQU1ZQUpBRFhBQUlBN3NoRUFDNGlBZ0NPaUJRQVQwUUNBS1VBaEFCdUFBSUF6b2drQU8vaUFnRCtrVVFBTmdBQ0FLNmlGQUIvUkFJQS9yaUVBRjRBQWdDK0FDUUFud0FDQU81RVJBRC9kZ0lBUGlJVUFEOHhBd0RHQUlVQS85bjk4bjVrL3ZHL21RTUFycUlsQU85bS9mUldBTzdpZjNNREFMNllSUUQzQVAzNFpnRCtkcCtJQXdDT2lCVUEzOVdsQUM0aTNwaFBSQU1BdnJLRkFQLzgvZkp1SXBZQXR3QURBSzZxSlFEZjBmMzBOZ0RlMUc5a0F3Q3VxRVVBNytyOStGNUU3dWgvY1FNQVBqSVZBTS9FcFFELytzNklQekVEQU1ZQWhRRC9kLzN5Zm1UKzhiK3pBd0N1b2lVQTV3RDk5RllBN3VKM0FBTUF2cGhGQU8vay9maG1BUDUyZjJZREFJNklGUURYQUtVQUxpTGVtRDh6QXdDK3NvVUEvM1g5OG00aWxnQ2ZrUU1BcnFvbEFOK1ovZlEyQU43VVgxRURBSzZvUlFEdjdQMzRYa1R1Nkg5eUF3QStNaFVBdjdHbEFQL3p6b2dmRVFNQTNsVDk4aDRSRkFCK1pQNzR6OHdEQUw2UlJRRHZJaVVBTGlMKzg0K0lBd0RHQUlVQTl3QVVBRjRSL3Z5dnFBTUFwZ0ExQU4vSS9mRStNZjVtYjJRREFNN0kvZkwvOVJRQVpnRCs5TCs2QXdDdUlrVUE1d0FsQUQ0eS91cC9jd01BdnJLRkFOOVZGQUJXQUg1eG54RURBSllBTlFEUHhQM3hQalB1NkU5RUF3RGVWUDN5SGhFVUFINWsvdmkvbVFNQXZwRkZBTy9pSlFBdUl2N3pmMllEQU1ZQWhRRHY1QlFBWGhIKy9KK1lBd0NtQURVQTF3RDk4VDR4L21adklnTUF6c2o5OHYrNUZBQm1BUDcwdHdBREFLNGlSUURmMFNVQVBqTCs2bmNBQXdDK3NvVUE3K3dVQUZZQWZuRi9jZ01BbGdBMUFMKzQvZkUrTSs3b1gxVDg4ZDdSL2ZyWEFQejRGZ0Q5LzM5MC9QUitjZjN6djdQODh1L3E3dWhQUlB6eHJpSUZBTCs0L1BqM0FQNzhkd0Q4OUY0Ui9mVi9kZnp5MzlqdTRqOHovUEcrc3YzNno0ajgrUC83L2Y5L2MvejBiZ0Q5ODdjQS9QTHZadjc1UHpIODhaNEFCUUMvdXZ6NC8vMys5bWNBL1BRbUFQMzFqNGo4OHQvYzN0UXZJdnp4M3RIOStzL0UvUGdXQVAzL2YzTDg5SDV4L2ZPL21menk3K3p1NkVjQS9QR3VJZ1VBcHdEOCtQLzMvdnhYQVB6MFhoSDk5WmNBL1BMZjFlN2lOd0Q4OGI2eS9mckhBUHo0Ly83OS8zOW0vUFJ1QVAzenI2ajg4dWNBL3ZrL012enhuZ0FGQUwreC9QanY1UDcyWDFUODlDWUEvZldIQVB6eTM1bmUxQjhSRXdCbEFFTUEzZ0NEQUkySUl3Qk9SQk1BcFFCREFLNklnd0ExQUNNQTF3QVRBTVVBUXdDZUFJTUFWUUFqQUM0aUV3Q1ZBRU1BZmdDREFQNFFJd0IzQUJNQVpRQkRBTTZJZ3dDTmlDTUFIaEVUQUtVQVF3QmVBSU1BTlFBakFPY0FFd0RGQUVNQXZnQ0RBRlVBSXdEL0VSTUFsUUJEQUQ0QWd3RHVRQ01BcjZJVEFHVUFRd0RlQUlNQWpZZ2pBRTVFRXdDbEFFTUFyb2lEQURVQUl3RHZSQk1BeFFCREFKNEFnd0JWQUNNQUxpSVRBSlVBUXdCK0FJTUEvaEFqQUxjQUV3QmxBRU1Bem9pREFJMklJd0FlRVJNQXBRQkRBRjRBZ3dBMUFDTUF6OFFUQU1VQVF3QytBSU1BVlFBakFQY0FFd0NWQUVNQVBnQ0RBTzVBSXdCdkFBRUFoQUFCQUZZQUFRQVVBQUVBMXdBQkFDUUFBUUNXQUFFQVJRQUJBSGNBQVFDRUFBRUF4Z0FCQUJRQUFRQ1BpQUVBSkFBQkFQY0FBUUExQUFFQUx5SUJBSVFBQVFEK1FBRUFGQUFCQUxjQUFRQWtBQUVBdndBQkFFVUFBUUJuQUFFQWhBQUJBS1lBQVFBVUFBRUFUMFFCQUNRQUFRRG5BQUVBTlFBQkFEOFJBUUNFQUFFQVZnQUJBQlFBQVFEUEFBRUFKQUFCQUpZQUFRQkZBQUVBYndBQkFJUUFBUURHQUFFQUZBQUJBSjhBQVFBa0FBRUE3d0FCQURVQUFRQS9NZ0VBaEFBQkFQNUFBUUFVQUFFQXJ3QUJBQ1FBQVFEL1JBRUFSUUFCQUY4QUFRQ0VBQUVBcGdBQkFCUUFBUUIvQUFFQUpBQUJBTjhBQVFBMUFBRUFIeEVCQUNRQUFRQldBQUVBaFFBQkFMOEFBUUFVQUFFQTl3QUJBTVlBQVFCM0FBRUFKQUFCQVAvNEFRQkZBQUVBZndBQkFCUUFBUURmQUFFQXBnQUJBRDh4QVFBa0FBRUFMaUlCQUlVQUFRQzNBQUVBRkFBQkFPOUVBUUN1b2dFQVp3QUJBQ1FBQVFEL1VRRUFSUUFCQUpjQUFRQVVBQUVBendBQkFEWUFBUUEvSWdFQUpBQUJBRllBQVFDRkFBRUF2N0lCQUJRQUFRRHZRQUVBeGdBQkFHOEFBUUFrQUFFQS8zSUJBRVVBQVFDZkFBRUFGQUFCQU5jQUFRQ21BQUVBVDBRQkFDUUFBUUF1SWdFQWhRQUJBSytvQVFBVUFBRUE1d0FCQUs2aUFRQmZBQUVBSkFBQkFQOUVBUUJGQUFFQWo0Z0JBQlFBQVFDdnFnRUFOZ0FCQUI4UkFnRCsrQ1FBVmdBQ0FMWUFoUUQvWmdJQXpnQVVBQjRSQWdDV0FEVUFyNmdDQVBZQUpBQStNUUlBcGdCRkFMK3pBZ0Mrc2hRQS8vVUNBR1lBZmxGZlZBSUEvdklrQUM0aUFnQ3VJb1VBNzBRQ0FNWUFGQUQvOUFJQWRnQTFBSDlFQWdEZVFDUUFQaklDQUo0QVJRRFhBQUlBdm9nVUFQLzZBZ0JlRWY3eFQwUUNBUDc0SkFCV0FBSUF0Z0NGQU8vSUFnRE9BQlFBSGhFQ0FKWUFOUUNQaUFJQTlnQWtBRDR4QWdDbUFFVUEzMFFDQUw2eUZBRC9xQUlBWmdCK1VXOEFBZ0QrOGlRQUxpSUNBSzRpaFFEbkFBSUF4Z0FVQU8vaUFnQjJBRFVBZjNJQ0FONUFKQUErTWdJQW5nQkZBTCt4QWdDK2lCUUEvM01DQUY0Ui92RS9Nd0VBaEFBQkFPNGdBUURGQUFFQXo4UUJBRVFBQVFEL01nRUFGUUFCQUkrSUFRQ0VBQUVBWmdBQkFDVUFBUUN2QUFFQVJBQUJBTzhpQVFDbUFBRUFYd0FCQUlRQUFRQk9SQUVBeFFBQkFNL01BUUJFQUFFQTl3QUJBQlVBQVFCdkFBRUFoQUFCQUZZQUFRQWxBQUVBbndBQkFFUUFBUURmQUFFQS9qQUJBQzhpQVFDRUFBRUE3aUFCQU1VQUFRRFB5QUVBUkFBQkFQOFJBUUFWQUFFQWR3QUJBSVFBQVFCbUFBRUFKUUFCQUg4QUFRQkVBQUVBNXdBQkFLWUFBUUEzQUFFQWhBQUJBRTVFQVFERkFBRUF0d0FCQUVRQUFRQy9BQUVBRlFBQkFEOEFBUUNFQUFFQVZnQUJBQ1VBQVFDWEFBRUFSQUFCQU5jQUFRRCtNQUVBSHhFQ0FPNm9SQUNPaUFJQTFnREZBUC96QWdEKy9DVUFQZ0FDQUxZQVZRRGYyQUlBL3ZoRUFHWUFBZ0IrSUlVQS81a0NBT1lBOVFBMkFBSUFwZ0FWQUo4QUFnRCs4a1FBZGdBQ0FNNUV4UUQvZGdJQS92RWxBRTVFQWdDdUFGVUF6OGdDQVA3MFJBQmVSQUlBdmhDRkFPL2tBZ0RlVlBVQUhoRUNBSllBRlFBdklnSUE3cWhFQUk2SUFnRFdBTVVBLy9vQ0FQNzhKUUErQUFJQXRnQlZBTDhSQWdEKytFUUFaZ0FDQUg0Z2hRRHZJZ0lBNWdEMUFEWUFBZ0NtQUJVQWZ5SUNBUDd5UkFCMkFBSUF6a1RGQVAvVkFnRCs4U1VBVGtRQ0FLNEFWUUJ2QUFJQS92UkVBRjVFQWdDK0VJVUEzeEVDQU41VTlRQWVFUUlBbGdBVkFGOVJBd0QyQUJRQUhoRkVBSTZJcFFEZjFBTUFycUpWQVA5MkpBQStJcllBcjZvREFPWUFGQUQvOVVRQVpnQ0ZBTS9NQXdDZUFNVUE3MFFrQURZQS92aC9NUU1BN3VnVUFQL3hSQUIyQUtVQXo4UURBSDRpVlFEZjBTUUFUa1QrOUY5UkF3RFdBQlFBNytKRUFGNUVoUUMvSWdNQWxnREZBTi9JSkFBdUl2N3lieUlEQVBZQUZBQWVFVVFBam9pbEFMK3hBd0N1b2xVQS96TWtBRDRpdGdDdnFBTUE1Z0FVQVArNVJBQm1BSVVBdjZnREFKNEF4UUR2NUNRQU5nRCsrRzlrQXdEdTZCUUEvL3hFQUhZQXBRRFB5QU1BZmlKVkFPL3FKQUJPUlA3MGYzUURBTllBRkFELytrUUFYa1NGQUwreUF3Q1dBTVVBMzBRa0FDNGkvdkkvTWZNQS92cjk4VFlBQkFDK01uVUEzeEh6QU41VS9mTHY1TlVBZm5IKy9IOXo4d0QrOC8zNEhoRUVBSllBVlFDL3NmTUF6Z0MxQU4vWS9mUm1BUDY1WDFUekFQNTIvZkVtQUFRQXBnQjFBSjhBOHdDdUFQM3kvL2ZWQUVZQS92Vi9kUE1BNWdEOStCWUFCQUNHQUZVQWo0anpBTVlBdFFEdjR2MzBYaEh1cUQ4Ujh3RCsrdjN4TmdBRUFMNHlkUURmMGZNQTNsVDk4di83MVFCK2NmNzhmMFR6QVA3ei9mZ2VFUVFBbGdCVkFIOXk4d0RPQUxVQTd5TDk5R1lBL3JsUFJQTUEvbmI5OFNZQUJBQ21BSFVBdnhIekFLNEEvZkwvLzlVQVJnRCs5VDh5OHdEbUFQMzRGZ0FFQUlZQVZRQnZBUE1BeGdDMUFMKzQvZlJlRWU2b0x5SUFRZXloQVF1a0hnRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQkFBQUFBVUFBQUMzSVVJaFp5RkNJUkVSRVJFek16TXpkM2QzZHdBQUFBQUFBQUFBQVZZQUFBQUFBQUJRVVFBQVlGRUFBQUZXQUFBQkFBQUFZRkVBQUZCUkFBQUJOQUFBQUFBQUFIQlJBQUR3VVFBQUFUUUFBQUVBQUFDQVVRQUFBRklBQUFFWUFBQUFBQUFBa0ZFQUFGQlNBQUFCR0FBQUFRQUFBS0JSQUFCZ1VnQUF3UW9BQUFBQUFBQ3dVUUFBc0ZJQUFNRUtBQUFCQUFBQXdGRUFBTUJTQUFBaEJRQUFBQUFBQU5CUkFBRFFWQUFBSVFVQUFBRUFBQURnVVFBQTRGUUFBQ0VDQUFBQUFBQUE4RlVBQUZCVkFBQWhBZ0FBQVFBQUFBQldBQUJnVlFBQUFWWUFBQUFBQUFBUVVnQUFBRklBQUFGV0FBQUJBQUFBSUZJQUFQQlJBQUFCVkFBQUFBQUFBREJTQUFEd1VnQUFBVlFBQUFFQUFBQkFVZ0FBQUZNQUFBRklBQUFBQUFBQVVGSUFBUEJTQUFBQlNBQUFBUUFBQUdCU0FBQUFVd0FBQVRnQUFBQUFBQUJ3VWdBQThGSUFBQUU0QUFBQkFBQUFnRklBQUFCVEFBQUJNQUFBQUFBQUFKQlNBQUJRVXdBQUFUQUFBQUVBQUFDZ1VnQUFZRk1BQUFFa0FBQUFBQUFBc0ZJQUFIQlRBQUFCSkFBQUFRQUFBTUJTQUFDQVV3QUFBUndBQUFBQUFBRFFVZ0FBc0ZNQUFBRWNBQUFCQUFBQTRGSUFBTUJUQUFBQkZnQUFBQUFBQU5CVUFBRFFVd0FBQVJZQUFBRUFBQURnVkFBQTRGTUFBQUZXQUFBQUFBQUFFRk1BQUFCVEFBQUJWZ0FBQVFBQUFDQlRBQUR3VWdBQUFWUUFBQUFBQUFBd1V3QUE4RklBQUFGVUFBQUJBQUFBUUZNQUFBQlRBQUFCVVFBQUFBQUFBRkJUQUFBUVV3QUFBVkVBQUFFQUFBQmdVd0FBSUZNQUFBRklBQUFBQUFBQWNGTUFBREJUQUFBQlNBQUFBUUFBQUlCVEFBQkFVd0FBQVRnQUFBQUFBQUNRVXdBQVVGTUFBQUU0QUFBQkFBQUFvRk1BQUdCVEFBQUJOQUFBQUFBQUFMQlRBQUJ3VXdBQUFUUUFBQUVBQUFEQVV3QUFnRk1BQUFFd0FBQUFBQUFBMEZNQUFKQlRBQUFCTUFBQUFRQUFBT0JUQUFDZ1V3QUFBU2dBQUFBQUFBRHdVd0FBa0ZNQUFBRW9BQUFCQUFBQUFGUUFBS0JUQUFBQkpBQUFBQUFBQUJCVUFBQ3dVd0FBQVNRQUFBRUFBQUFnVkFBQXdGTUFBQUVpQUFBQUFBQUFNRlFBQU5CVEFBQUJJZ0FBQVFBQUFFQlVBQURnVXdBQUFSd0FBQUFBQUFCUVZBQUE4Rk1BQUFFY0FBQUJBQUFBWUZRQUFBQlVBQUFCR0FBQUFBQUFBSEJVQUFBUVZBQUFBUmdBQUFFQUFBQ0FWQUFBSUZRQUFBRVdBQUFBQUFBQWtGUUFBREJVQUFBQkZnQUFBUUFBQUtCVUFBQkFWQUFBQVJRQUFBQUFBQUN3VkFBQVVGUUFBQUVVQUFBQkFBQUF3RlFBQUdCVUFBQUJFZ0FBQUFBQUFOQlVBQUJ3VkFBQUFSSUFBQUVBQUFEZ1ZBQUFnRlFBQUFFUkFBQUFBQUFBOEZRQUFKQlVBQUFCRVFBQUFRQUFBQUJWQUFDZ1ZBQUF3UW9BQUFBQUFBQVFWUUFBc0ZRQUFNRUtBQUFCQUFBQUlGVUFBTUJVQUFEQkNRQUFBQUFBQURCVkFBRFFWQUFBd1FrQUFBRUFBQUJBVlFBQTRGUUFBS0VJQUFBQUFBQUFVRlVBQVBCVUFBQ2hDQUFBQVFBQUFHQlZBQUFBVlFBQUlRVUFBQUFBQUFCd1ZRQUFFRlVBQUNFRkFBQUJBQUFBZ0ZVQUFDQlZBQUJCQkFBQUFBQUFBSkJWQUFBd1ZRQUFRUVFBQUFFQUFBQ2dWUUFBUUZVQUFLRUNBQUFBQUFBQXNGVUFBRkJWQUFDaEFnQUFBUUFBQU1CVkFBQmdWUUFBSVFJQUFBQUFBQURRVlFBQWNGVUFBQ0VDQUFBQkFBQUE0RlVBQUlCVkFBQkJBUUFBQUFBQUFQQlZBQUNRVlFBQVFRRUFBQUVBQUFBQVZnQUFvRlVBQUJFQkFBQUFBQUFBRUZZQUFMQlZBQUFSQVFBQUFRQUFBQ0JXQUFEQVZRQUFoUUFBQUFBQUFBQXdWZ0FBMEZVQUFJVUFBQUFCQUFBQVFGWUFBT0JWQUFCSkFBQUFBQUFBQUZCV0FBRHdWUUFBU1FBQUFBRUFBQUJnVmdBQUFGWUFBQ1VBQUFBQUFBQUFjRllBQUJCV0FBQWxBQUFBQVFBQUFJQldBQUFnVmdBQUZRQUFBQUFBQUFDUVZnQUFNRllBQUJVQUFBQUJBQUFBb0ZZQUFFQldBQUFKQUFBQUFBQUFBTEJXQUFCUVZnQUFDUUFBQUFFQUFBREFWZ0FBWUZZQUFBVUFBQUFBQUFBQTBGWUFBSEJXQUFBRkFBQUFBUUFBQU9CV0FBQ0FWZ0FBQVFBQUFBQUFBQURRVmdBQWtGWUFBQUVBQUFBQkFBQUE0RllBQUtCV0FBQUJWZ0FBQUFBQUFQQldBQUR3VmdBQUFWWUFBQUVBQUFBQVZ3QUFBRmNBQUFBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd0FCQlFZQkFnWUdBd01IQndNREJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEF3TUhCd01EQndjRUJBY0hCQVFIQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NCQWdZR0FnSUdCZ01EQndjREF3Y0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3TURCd2NEQXdjSEJBUUhCd1FFQndjRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQlFZSUNBWUdDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FZR0NBZ0dCZ2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBRUNCZ1lDQWdZR0F3TUhCd01EQndjQkFnWUdBZ0lHQmdNREJ3Y0RBd2NIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEFnSUdCZ0lDQmdZREF3Y0hBd01IQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBWUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdBQVFNREFRSURBd1VHQndjR0JnY0hBQUVEQXdFQ0F3TUZCZ2NIQmdZSEJ3VUdCd2NHQmdjSENBZ0lDQWdJQ0FnRkJnY0hCZ1lIQndnSUNBZ0lDQWdJQVFJREF3SUNBd01HQmdjSEJnWUhCd0VDQXdNQ0FnTURCZ1lIQndZR0J3Y0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnREF3UUVBd01FQkFjSEJ3Y0hCd2NIQXdNRUJBTURCQVFIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUFRSURBd0lDQXdNR0JnY0hCZ1lIQndFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBSUNBd01DQWdNREJnWUhCd1lHQndjQ0FnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUFEQVFRREJnUUhBUVFDQlFRSEJRY0FBd0VFQXdZRUJ3RUVBZ1VFQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndFRUFnVUVCd1VIQWdVQ0JRVUhCUWNEQmdRSEJnZ0hDQVFIQlFjSENBY0lBd1lFQndZSUJ3Z0VCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0VFQWdVRUJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEFnVUNCUVVIQlFjQ0JRSUZCUWNGQndRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dFQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJRY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQXdZRUJ3WUlCd2dFQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0VCd1VIQndnSENBVUhCUWNIQ0FjSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FZSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lDUWtLQ2drSkNnb01EQTBMREF3TkN3a0pDZ29KQ1FvS0RBd0xEUXdNQ3cwTURBME5EQXdMQ3d3SkRRb0pEQW9MREF3TEN3d01EUTBNQ1FzS0NRd0tEUWtKQ2dvSkNRb0tEQXdOQ3d3TURRc0pDUW9LQ1FrS0Nnd01DdzBNREFzTkRBd05EUXdNQ3dzTUNRMEtDUXdLQ3d3TUN3c01EQTBOREFrTENna01DZzBLQ2dvS0Nnb0tDZzBMRFFzTkN3MExDZ29KQ1FvS0NRa05Dd3dNRFFzTURBME5EUTBMQ3dzTERRb05DZ29MQ2dzTkRRd01Dd3NNREEwS0RBa0tDd2tNQ2dvSkNRb0tDUWtMRFF3TUN3ME1EQW9LQ2dvS0Nnb0tDdzBMRFFzTkN3MExDd3dNRFEwTURBc0tEQWtLRFFrTUN3c0xDdzBORFEwTENnc0tDZzBLRFFCQm1jQUJDemNCQUFFQUFRQUJBQUFCQVFBQUFRRUFBUUFCQUFFQUFRQUFBQUFCQVFFQkFBQUFBQUFCQUFFQUFBQUFBUUVCQVFBQUFBRUFBUUVCQUVIWndBRUxOd0VBQVFBQkFBRUFBQUVCQUFBQkFRQUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFRQUJBUUVBUVpuQkFRc0hBUUFCQUFFQUFRQkJxY0VCQzVVQ0FRQUJBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVBQUFBQUFRRUJBUUFBQUFBQUFRQUJBUUVBQUFFQkFBQUFBUUFCQUFFQUFRRUJBUUVCQVFFQkFBRUFBUUFCQUFFQUFBQUFBUUVCQVFBQkFBQUJBUUFCQUFBQUFBRUJBUUVBQVFBQkFRRUJBUUlBQUFBRUFBQUFCQUFBQUFnQUFBQ1Evd0FBREFBQUFCa0FBQUJTL3dBQUZBQUFBQm9BQUFCVC93QUFGQUFBQUJzQUFBQmUvd0FBRkFBQUFCd0FBQUJjL3dBQUZBQUFBQjBBQUFCZC93QUFGQUFBQUI0QUFBQmYvd0FBRkFBQUFCOEFBQUJSL3dBQUFnQUFBQ0FBQUFCVi93QUFCQUFBQUNFQUFBQlgvd0FBQkFBQUFDSUFBQUJZL3dBQUVBQUFBQ01BQUFCZy93QUFCQUFBQUNRQUFBQmgvd0FBRUFBQUFDVUFBQUNSL3dCQnlNTUJDMlZqL3dBQUJBQUFBQ1lBQUFCay93QUFGQUFBQUNjQUFBQjAvd0FBRkFBQUFDZ0FBQUI0L3dBQUJBQUFBQ2tBQUFCUS93QUFCQUFBQUNvQUFBQlovd0FBQkFBQUFDc0FBQUIxL3dBQUZBQUFBQ3dBQUFCMy93QUFGQUFBQUMwQUFBQUFBQUFBRkFCQndNUUJDelV1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFDQWdVR28zQUFBQWNIbDBaamdBQUFCb01uQnFPUUJCZ01VQkN6SnlaR2hwT2dBQUFISnNiMk03QUFBQVkyTndZandBQUFCeWJHTndQUUFBQUhCaGJXTStBQUFBWm1Wa1l6OEFBQUJBWmdCQndNVUJDMEVaQUFzQUdSa1pBQUFBQUFVQUFBQUFBQUFKQUFBQUFBc0FBQUFBQUFBQUFCa0FDZ29aR1JrRENnY0FBUUFKQ3hnQUFBa0dDd0FBQ3dBR0dRQUFBQmtaR1FCQmtjWUJDeUVPQUFBQUFBQUFBQUFaQUFzTkdSa1pBQTBBQUFJQUNRNEFBQUFKQUE0QUFBNEFRY3ZHQVFzQkRBQkIxOFlCQ3hVVEFBQUFBQk1BQUFBQUNRd0FBQUFBQUF3QUFBd0FRWVhIQVFzQkVBQkJrY2NCQ3hVUEFBQUFCQThBQUFBQUNSQUFBQUFBQUJBQUFCQUFRYi9IQVFzQkVnQkJ5OGNCQ3g0UkFBQUFBQkVBQUFBQUNSSUFBQUFBQUJJQUFCSUFBQm9BQUFBYUdob0FRWUxJQVFzT0dnQUFBQm9hR2dBQUFBQUFBQWtBUWJQSUFRc0JGQUJCdjhnQkN4VVhBQUFBQUJjQUFBQUFDUlFBQUFBQUFCUUFBQlFBUWUzSUFRc0JGZ0JCK2NnQkMyUVZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVVlBQUFBQWNBQUFBSEFBQUFCeEFBQUFjUUFBQUhFQUFBQnhBQUFBY1FBQUFIRUFBQUJ3QUFBQWNBQUFBSEVBQUFCd0FBQUFjQUFBQUhBQUFBQndBRUdBeWdFTEhYRUFBQUJ4QUFBQWNBQUFBSEFBQUFBQUFBQUFjQUFBQUFBQUFBQnhBRUdveXdFTENWQndBUUFBQUFBQUJRQkJ2TXNCQ3dGckFFSFV5d0VMQ213QUFBQnRBQUFBdUdzQVFlekxBUXNCQWdCQi9Nc0JDd2ovLy8vLy8vLy8vd0JCd013QkN3RUZBRUhNekFFTEFXNEFRZVRNQVFzT2JBQUFBRzhBQUFESWF3QUFBQVFBUWZ6TUFRc0JBUUJCak0wQkN3WC8vLy8vQ2c9PSI7cmV0dXJuIHJlY2VpdmVJbnN0YW5jZShpbnN0YW50aWF0ZVN5bmMoZCxlKVswXSl9KCksSD0oTC51LGEuX21hbGxvYz1MLnYsYS5fZnJlZT1MLncsYS5fanAyX2RlY29kZT1MLnksTC56KTtiPWZ1bmN0aW9uIHJ1bkNhbGxlcigpe1N8fHJ1bigpO1N8fChiPXJ1bkNhbGxlcil9O2Z1bmN0aW9uIHJ1bigpe2lmKCEoeT4wKSl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKGEucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVSdW4mJihhLnByZVJ1bj1bYS5wcmVSdW5dKTtmb3IoO2EucHJlUnVuLmxlbmd0aDspZT1hLnByZVJ1bi5zaGlmdCgpLGYudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTtpZighKHk+MCkpaWYoYS5zZXRTdGF0dXMpe2Euc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKCk9PntzZXRUaW1lb3V0KCgoKT0+YS5zZXRTdGF0dXMoIiIpKSwxKTtkb1J1bigpfSksMSl9ZWxzZSBkb1J1bigpfWZ1bmN0aW9uIGRvUnVuKCl7aWYoIVMpe1M9ITA7YS5jYWxsZWRSdW49ITA7aWYoIXUpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe2NhbGxSdW50aW1lQ2FsbGJhY2tzKHApfSgpO3QoYSk7YS5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZihhLnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2Zvcig7YS5wb3N0UnVuLmxlbmd0aDspZT1hLnBvc3RSdW4uc2hpZnQoKSxtLnVuc2hpZnQoZSl9dmFyIGU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MobSl9KCl9fX19aWYoYS5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVJbml0JiYoYS5wcmVJbml0PVthLnByZUluaXRdKTtmb3IoO2EucHJlSW5pdC5sZW5ndGg+MDspYS5wcmVJbml0LnBvcCgpKCl9cnVuKCk7cmV0dXJuIGF9KTtjb25zdCByaT1haTtjbGFzcyBKcHhFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpweEVycm9yIil9fWNsYXNzIEpweEltYWdle3N0YXRpYyNiPW51bGw7c3RhdGljIGRlY29kZShlLHQpe3R8fD17fTt0aGlzLiNifHw9cmkoe3dhcm59KTtjb25zdCBpPXRoaXMuI2IuZGVjb2RlKGUsdCk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXRocm93IG5ldyBKcHhFcnJvcihpKTtyZXR1cm4gaX1zdGF0aWMgY2xlYW51cCgpe3RoaXMuI2I9bnVsbH1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3QgaT10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0oaTw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0OmktcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlKX1kZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1KcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBhPTQwOTYscj17ZWFybHlDaGFuZ2U6aSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkoYSksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KGEpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShhKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtyLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtyLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1yfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxpPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9aT1pPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9aTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGk+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsaSxhPTEwMjQ7Y29uc3Qgcj10aGlzLmx6d1N0YXRlO2lmKCFyKXJldHVybjtjb25zdCBzPXIuZWFybHlDaGFuZ2U7bGV0IG49ci5uZXh0Q29kZTtjb25zdCBvPXIuZGljdGlvbmFyeVZhbHVlcyxnPXIuZGljdGlvbmFyeUxlbmd0aHMsYz1yLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGw9ci5jb2RlTGVuZ3RoLGg9ci5wcmV2Q29kZTtjb25zdCBDPXIuY3VycmVudFNlcXVlbmNlO2xldCBRPXIuY3VycmVudFNlcXVlbmNlTGVuZ3RoLEU9MCx1PXRoaXMuYnVmZmVyTGVuZ3RoLGQ9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSk7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhsKSxyPVE+MDtpZihlPDI1Nil7Q1swXT1lO1E9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7bD05O249MjU4O1E9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPG4pe1E9Z1tlXTtmb3IodD1RLTEsaT1lO3Q+PTA7dC0tKXtDW3RdPW9baV07aT1jW2ldfX1lbHNlIENbUSsrXT1DWzBdfWlmKHIpe2Nbbl09aDtnW25dPWdbaF0rMTtvW25dPUNbMF07bisrO2w9bitzJm4rcy0xP2w6MHxNYXRoLm1pbihNYXRoLmxvZyhuK3MpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfWg9ZTtFKz1RO2lmKGE8RSl7ZG97YSs9NTEyfXdoaWxlKGE8RSk7ZD10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKX1mb3IodD0wO3Q8UTt0KyspZFt1KytdPUNbdF19ci5uZXh0Q29kZT1uO3IuY29kZUxlbmd0aD1sO3IucHJldkNvZGU9aDtyLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1RO3RoaXMuYnVmZmVyTGVuZ3RoPXV9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3QgYT10aGlzLnByZWRpY3Rvcj1pLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gZTtpZigyIT09YSYmKGE8MTB8fGE+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PWE/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCByPXRoaXMuY29sb3JzPWkuZ2V0KCJDb2xvcnMiKXx8MSxzPXRoaXMuYml0cz1pLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LG49dGhpcy5jb2x1bW5zPWkuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1yKnMrNz4+Mzt0aGlzLnJvd0J5dGVzPW4qcipzKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGk9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxhPXRoaXMuYml0cyxyPXRoaXMuY29sb3JzLHM9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IXMubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgbixvPTAsZz0wLGM9MCxsPTAsaD10O2lmKDE9PT1hJiYxPT09cilmb3Iobj0wO248ZTsrK24pe2xldCBlPXNbbl1ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2lbaCsrXT1lfWVsc2UgaWYoOD09PWEpe2ZvcihuPTA7bjxyOysrbilpW2grK109c1tuXTtmb3IoO248ZTsrK24pe2lbaF09aVtoLXJdK3Nbbl07aCsrfX1lbHNlIGlmKDE2PT09YSl7Y29uc3QgdD0yKnI7Zm9yKG49MDtuPHQ7KytuKWlbaCsrXT1zW25dO2Zvcig7bjxlO24rPTIpe2NvbnN0IGU9KCgyNTUmc1tuXSk8PDgpKygyNTUmc1tuKzFdKSsoKDI1NSZpW2gtdF0pPDw4KSsoMjU1JmlbaC10KzFdKTtpW2grK109ZT4+OCYyNTU7aVtoKytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocisxKSxoPSgxPDxhKS0xO2xldCBDPTAsUT10O2NvbnN0IEU9dGhpcy5jb2x1bW5zO2ZvcihuPTA7bjxFOysrbilmb3IobGV0IHQ9MDt0PHI7Kyt0KXtpZihjPGEpe289bzw8OHwyNTUmc1tDKytdO2MrPTh9ZVt0XT1lW3RdKyhvPj5jLWEpJmg7Yy09YTtnPWc8PGF8ZVt0XTtsKz1hO2lmKGw+PTgpe2lbUSsrXT1nPj5sLTgmMjU1O2wtPTh9fWw+MCYmKGlbUSsrXT0oZzw8OC1sKSsobyYoMTw8OC1sKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxpPXRoaXMuc3RyLmdldEJ5dGUoKSxhPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFhLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZW5zdXJlQnVmZmVyKHIrZSk7bGV0IG49cy5zdWJhcnJheShyLWUscik7MD09PW4ubGVuZ3RoJiYobj1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sZyxjLGw9cjtzd2l0Y2goaSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbylzW2wrK109YVtvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKXNbbCsrXT1hW29dO2Zvcig7bzxlOysrbyl7c1tsXT1zW2wtdF0rYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pc1tsKytdPW5bb10rYVtvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbylzW2wrK109KG5bb10+PjEpK2Fbb107Zm9yKDtvPGU7KytvKXtzW2xdPShuW29dK3NbbC10XT4+MSkrYVtvXSYyNTU7bCsrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2c9bltvXTtjPWFbb107c1tsKytdPWcrY31mb3IoO288ZTsrK28pe2c9bltvXTtjb25zdCBlPW5bby10XSxpPXNbbC10XSxyPWkrZy1lO2xldCBoPXItaTtoPDAmJihoPS1oKTtsZXQgQz1yLWc7QzwwJiYoQz0tQyk7bGV0IFE9ci1lO1E8MCYmKFE9LVEpO2M9YVtvXTtzW2wrK109aDw9QyYmaDw9UT9pK2M6Qzw9UT9nK2M6ZStjfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7aX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9ZVswXTtpZihhPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7dFtpKytdPWVbMV07aWYoYT4wKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKGEpO3Quc2V0KGUsaSk7aSs9YX19ZWxzZXthPTI1Ny1hO2NvbnN0IHI9ZVsxXTt0PXRoaXMuZW5zdXJlQnVmZmVyKGkrYSsxKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXRbaSsrXT1yfXRoaXMuYnVmZmVyTGVuZ3RoPWl9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmk9ITEscmVjb3ZlcnlNb2RlOmE9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9aTt0aGlzLnJlY292ZXJ5TW9kZT1hO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBpPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1FdDspaS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1FdCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGk7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gaTtjYXNlIjw8Ijpjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1FdDspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PUV0KWJyZWFrO2Euc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PUV0KXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gYTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0oYSxlKTphO3RoaXMuc2hpZnQoKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGk9ZS5wb3M7bGV0IGEscixzPTA7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXMpcz02OT09PWE/MTowO2Vsc2UgaWYoMT09PXMpcz03Mz09PWE/MjowO2Vsc2UgaWYoMzI9PT1hfHwxMD09PWF8fDEzPT09YSl7cj1lLnBvcztjb25zdCBpPWUucGVla0J5dGVzKDE1KSxuPWkubGVuZ3RoO2lmKDA9PT1uKWJyZWFrO2ZvcihsZXQgZT0wO2U8bjtlKyspe2E9aVtlXTtpZigoMCE9PWF8fDA9PT1pW2UrMV0pJiYoMTAhPT1hJiYxMyE9PWEmJihhPDMyfHxhPjEyNykpKXtzPTA7YnJlYWt9fWlmKDIhPT1zKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpLnNsaWNlKCkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBnPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PUV0KXtzPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgaT10W2UuY21kXTtpZighaSl7cz0wO2JyZWFrfWlmKGkudmFyaWFibGVBcmdzP2c8PWkubnVtQXJnczpnPT09aS5udW1BcmdzKWJyZWFrO2c9MH1lbHNlIGcrK31pZigyPT09cylicmVha31lbHNlIHM9MDtpZigtMT09PWEpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihyKXt3YXJuKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLXIpKX19bGV0IG49NDtlLnNraXAoLW4pO2E9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChuKTtpc1doaXRlU3BhY2UoYSl8fG4tLTtyZXR1cm4gZS5wb3Mtbi1pfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaSxhLHI9ITE7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09aSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpyPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OmE9ZS5nZXRVaW50MTYoKTthPjI/ZS5za2lwKGEtMik6ZS5za2lwKC0yKX1pZihyKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWkpe2NvbnN0IHQ9ZS5wb3M7aT1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UoaSk7KXtlLnNraXAoKTtpPWUucGVla0J5dGUoKX1pZig2Mj09PWkpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGk7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1pOyk7Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGk9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09aSlpPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09aSlpPTczPT09dD8yOjA7ZWxzZSBpZigyPT09aSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGk9dC5zdHJlYW0sYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09RXQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09RXQpYnJlYWs7YVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHI9aS5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKGEuRnx8YS5GaWx0ZXIpO2xldCBuO2lmKHMgaW5zdGFuY2VvZiBOYW1lKW49cy5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihzWzBdKTtlIGluc3RhbmNlb2YgTmFtZSYmKG49ZS5uYW1lKX1jb25zdCBvPWkucG9zO2xldCBnLGM7c3dpdGNoKG4pe2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Zz10aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6Zz10aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpnPXRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2RlZmF1bHQ6Zz10aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGkpfWlmKGc8MWUzJiZyPjApe2NvbnN0IGU9aS5wb3M7aS5wb3M9dC5iZWdpbklubGluZUltYWdlUG9zO2M9ZnVuY3Rpb24gZ2V0SW5saW5lSW1hZ2VDYWNoZUtleShlKXtjb25zdCB0PVtdLGk9ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8aS0xOyl0LnB1c2goZVthKytdPDw4fGVbYSsrXSk7YTxpJiZ0LnB1c2goZVthXSk7cmV0dXJuIGkrIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KX0oaS5nZXRCeXRlcyhyK2cpKTtpLnBvcz1lO2NvbnN0IGE9dGhpcy5pbWFnZUNhY2hlW2NdO2lmKHZvaWQgMCE9PWEpe3RoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTthLnJlc2V0KCk7cmV0dXJuIGF9fWNvbnN0IGw9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgZSBpbiBhKWwuc2V0KGUsYVtlXSk7bGV0IGg9aS5tYWtlU3ViU3RyZWFtKG8sZyxsKTtlJiYoaD1lLmNyZWF0ZVN0cmVhbShoLGcpKTtoPXRoaXMuZmlsdGVyKGgsbCxnKTtoLmRpY3Q9bDtpZih2b2lkIDAhPT1jKXtoLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbY109aH10aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGh9I0QoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBpPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLGE9aS5sZW5ndGgscj1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxzPTktYTtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3Qgbj10LnBlZWtCeXRlcygyMDQ4KSxvPW4ubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgZz0wO2Zvcig7ZzxvOyl7bGV0IG89MDtmb3IoO288YSYmbltnK29dPT09aVtvXTspbysrO2lmKG8+PWEpe2xldCBhPSExO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dCYmbltnK28rcl09PT1lW3JdOylyKys7aWYocj49cyl7YT0hMDticmVha31pZihyPj10KXtpZihpc1doaXRlU3BhY2UobltnK28rcl0pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5pLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTthPSEwfWJyZWFrfX1pZihhKXt0LnBvcys9ZztyZXR1cm4gdC5wb3MtZX19ZysrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBpPXRoaXMubGV4ZXI7bGV0IGE9aS5zdHJlYW07aS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHI9YS5wb3MtMTtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2luZm8oYEJhZCBsZW5ndGggIiR7cyYmcy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3M9MH1hLnBvcz1yK3M7aS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtzPXRoaXMuI0Qocik7aWYoczwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKTtpLm5leHRDaGFyKCk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKX10aGlzLnNoaWZ0KCk7YT1hLm1ha2VTdWJTdHJlYW0ocixzLGUpO3QmJihhPXQuY3JlYXRlU3RyZWFtKGEscykpO2E9dGhpcy5maWx0ZXIoYSxlLHMpO2EuZGljdD1lO3JldHVybiBhfWZpbHRlcihlLHQsaSl7bGV0IGE9dC5nZXQoIkYiLCJGaWx0ZXIiKSxyPXQuZ2V0KCJEUCIsIkRlY29kZVBhcm1zIik7aWYoYSBpbnN0YW5jZW9mIE5hbWUpe0FycmF5LmlzQXJyYXkocikmJndhcm4oIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUsaSxyKX1sZXQgcz1pO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHQ9YSxpPXI7Zm9yKGxldCBuPTAsbz10Lmxlbmd0aDtuPG87KytuKXthPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbbl0pO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIGZpbHRlciBuYW1lICIke2F9ImApO3I9bnVsbDtBcnJheS5pc0FycmF5KGkpJiZuIGluIGkmJihyPXRoaXMueHJlZi5mZXRjaElmUmVmKGlbbl0pKTtlPXRoaXMubWFrZUZpbHRlcihlLGEubmFtZSxzLHIpO3M9bnVsbH19cmV0dXJuIGV9bWFrZUZpbHRlcihlLHQsaSxhKXtpZigwPT09aSl7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gYT9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLGkpLGksYSk6bmV3IEZsYXRlU3RyZWFtKGUsaSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKGEpe2EuaGFzKCJFYXJseUNoYW5nZSIpJiYodD1hLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLGksdCksaSxhKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLGksdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxpLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxpLGEpO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOnJldHVybiBuZXcgQXNjaWk4NVN0cmVhbShlLGkpO2Nhc2UiQUh4IjpjYXNlIkFTQ0lJSGV4RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpSGV4U3RyZWFtKGUsaSk7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgQ0NJVFRGYXhTdHJlYW0oZSxpLGEpO2Nhc2UiUkwiOmNhc2UiUnVuTGVuZ3RoRGVjb2RlIjpyZXR1cm4gbmV3IFJ1bkxlbmd0aFN0cmVhbShlLGkpO2Nhc2UiSkJJRzJEZWNvZGUiOnJldHVybiBuZXcgSmJpZzJTdHJlYW0oZSxpLGEpfXdhcm4oYEZpbHRlciAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZC5gKTtyZXR1cm4gZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJbnZhbGlkIHN0cmVhbTogIiR7ZX0iYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfX19Y29uc3Qgc2k9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxpPTAsYT0xO2lmKDQ1PT09ZSl7YT0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7aT0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCByPWUtNDgscz0wLG49MTtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTA7KWlmKGU+PTQ4JiZlPD01Nyl7Y29uc3QgYT1lLTQ4O2lmKHQpcz0xMCpzK2E7ZWxzZXswIT09aSYmKGkqPTEwKTtyPTEwKnIrYX19ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT1pKWJyZWFrO2k9MX1lbHNlIGlmKDQ1PT09ZSl3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKTtlbHNle2lmKDY5IT09ZSYmMTAxIT09ZSlicmVhaztlPXRoaXMucGVla0NoYXIoKTtpZig0Mz09PWV8fDQ1PT09ZSl7bj00NT09PWU/LTE6MTt0aGlzLm5leHRDaGFyKCl9ZWxzZSBpZihlPDQ4fHxlPjU3KWJyZWFrO3Q9ITB9MCE9PWkmJihyLz1pKTt0JiYocio9MTAqKihuKnMpKTtyZXR1cm4gYSpyfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHI9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO2kucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGkucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6YT10aGlzLm5leHRDaGFyKCk7c3dpdGNoKGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDppLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6aS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmkucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmkucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjppLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZhO2E9dGhpcy5uZXh0Q2hhcigpO3I9ITA7aWYoYT49NDgmJmE8PTU1KXtlPShlPDwzKSsoMTUmYSk7YT10aGlzLm5leHRDaGFyKCk7aWYoYT49NDgmJmE8PTU1KXtyPSExO2U9KGU8PDMpKygxNSZhKX19aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWJyZWFrO2RlZmF1bHQ6aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWlmKHQpYnJlYWs7cnx8KGE9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gaS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhc2lbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYoc2lbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7aS5wdXNoKCIjIik7YnJlYWt9Y29uc3QgYT10b0hleERpZ2l0KGUpO2lmKC0xIT09YSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHI9dG9IZXhEaWdpdChlKTtpZigtMT09PXIpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTtpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKHNpW2VdKWJyZWFrO2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1pLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPDw0fHIpKX1lbHNlIGkucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7aS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7aS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGkuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fHdhcm4oYGdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAke2V9YCk6d2FybigiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0PXRoaXMuY3VycmVudENoYXIsaT0tMSxhPS0xO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKHQ8MCl7d2FybigiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09c2lbdF0pe2E9dG9IZXhEaWdpdCh0KTtpZigtMT09PWEpdGhpcy5faGV4U3RyaW5nV2Fybih0KTtlbHNlIGlmKC0xPT09aSlpPWE7ZWxzZXtlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0fGEpKTtpPS0xfXQ9dGhpcy5uZXh0Q2hhcigpfWVsc2UgdD10aGlzLm5leHRDaGFyKCl9LTEhPT1pJiZlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpPDw0KSk7cmV0dXJuIGUuam9pbigiIil9Z2V0T2JqKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT1zaVt0XSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiB0aGlzLmdldE51bWJlcigpO2Nhc2UgNDA6cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5nZXROYW1lKCk7Y2FzZSA5MTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiXSIpO2Nhc2UgNjA6dD10aGlzLm5leHRDaGFyKCk7aWYoNjA9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIjw8Iil9cmV0dXJuIHRoaXMuZ2V0SGV4U3RyaW5nKCk7Y2FzZSA2Mjp0PXRoaXMubmV4dENoYXIoKTtpZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPj4iKX1yZXR1cm4gQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgieyIpO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgSWxsZWdhbCBjaGFyYWN0ZXI6ICR7dH1gKX1sZXQgaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXtjb25zdCBlPXRoaXMucGVla0NoYXIoKTtpZihlPj0zMiYmZTw9MTI3KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoaSl9fWNvbnN0IGE9dGhpcy5rbm93bkNvbW1hbmRzO2xldCByPXZvaWQgMCE9PWE/LltpXTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiFzaVt0XTspe2NvbnN0IGU9aStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHImJnZvaWQgMD09PWFbZV0pYnJlYWs7aWYoMTI4PT09aS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2kubGVuZ3RofWApO2k9ZTtyPXZvaWQgMCE9PWE/LltpXX1pZigidHJ1ZSI9PT1pKXJldHVybiEwO2lmKCJmYWxzZSI9PT1pKXJldHVybiExO2lmKCJudWxsIj09PWkpcmV0dXJuIG51bGw7IkJJIj09PWkmJih0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9dGhpcy5zdHJlYW0ucG9zKTtyZXR1cm4gQ21kLmdldChpKX1za2lwVG9OZXh0TGluZSgpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Zm9yKDtlPj0wOyl7aWYoMTM9PT1lKXtlPXRoaXMubmV4dENoYXIoKTsxMD09PWUmJnRoaXMubmV4dENoYXIoKTticmVha31pZigxMD09PWUpe3RoaXMubmV4dENoYXIoKTticmVha31lPXRoaXMubmV4dENoYXIoKX19fWNsYXNzIExpbmVhcml6YXRpb257c3RhdGljIGNyZWF0ZShlKXtmdW5jdGlvbiBnZXRJbnQoZSx0LGk9ITEpe2NvbnN0IGE9ZS5nZXQodCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmKGk/YT49MDphPjApKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcihgVGhlICIke3R9IiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfWNvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUpLHhyZWY6bnVsbH0pLGk9dC5nZXRPYmooKSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLHM9dC5nZXRPYmooKTtsZXQgbixvO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmaXNDbWQociwib2JqIikmJnMgaW5zdGFuY2VvZiBEaWN0JiYibnVtYmVyIj09dHlwZW9mKG49cy5nZXQoIkxpbmVhcml6ZWQiKSkmJm4+MCkpcmV0dXJuIG51bGw7aWYoKG89Z2V0SW50KHMsIkwiKSkhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7cmV0dXJue2xlbmd0aDpvLGhpbnRzOmZ1bmN0aW9uIGdldEhpbnRzKGUpe2NvbnN0IHQ9ZS5nZXQoIkgiKTtsZXQgaTtpZihBcnJheS5pc0FycmF5KHQpJiYoMj09PShpPXQubGVuZ3RoKXx8ND09PWkpKXtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBpPXRbZV07aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGkpJiZpPjApKXRocm93IG5ldyBFcnJvcihgSGludCAoJHtlfSkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSGludCBhcnJheSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9KHMpLG9iamVjdE51bWJlckZpcnN0OmdldEludChzLCJPIiksZW5kRmlyc3Q6Z2V0SW50KHMsIkUiKSxudW1QYWdlczpnZXRJbnQocywiTiIpLG1haW5YUmVmRW50cmllc09mZnNldDpnZXRJbnQocywiVCIpLHBhZ2VGaXJzdDpzLmhhcygiUCIpP2dldEludChzLCJQIiwhMCk6MH19fWNvbnN0IG5pPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sb2k9MioqMjQtMTtjbGFzcyBDTWFwe2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzPVtbXSxbXSxbXSxbXV07dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXM9MDt0aGlzLl9tYXA9W107dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxpKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxpKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfW1hcENpZFJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBDaWRSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IoO2U8PXQ7KXRoaXMuX21hcFtlKytdPWkrK31tYXBCZlJhbmdlKGUsdCxpKXtpZih0LWU+b2kpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1pO2NvbnN0IHQ9aS5jaGFyQ29kZUF0KGEpKzE7dD4yNTU/aT1pLnN1YnN0cmluZygwLGEtMSkrU3RyaW5nLmZyb21DaGFyQ29kZShpLmNoYXJDb2RlQXQoYS0xKSsxKSsiXDAiOmk9aS5zdWJzdHJpbmcoMCxhKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7aWYodC1lPm9pKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1pLmxlbmd0aDtsZXQgcj0wO2Zvcig7ZTw9dCYmcjxhOyl7dGhpcy5fbWFwW2VdPWlbcisrXTsrK2V9fW1hcE9uZShlLHQpe3RoaXMuX21hcFtlXT10fWxvb2t1cChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNvbnRhaW5zKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtjb25zdCB0PXRoaXMuX21hcCxpPXQubGVuZ3RoO2lmKGk8PTY1NTM2KWZvcihsZXQgYT0wO2E8aTthKyspdm9pZCAwIT09dFthXSYmZShhLHRbYV0pO2Vsc2UgZm9yKGNvbnN0IGkgaW4gdCllKGksdFtpXSl9Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgaSBpbiB0KWlmKHRbaV09PT1lKXJldHVybiAwfGk7cmV0dXJuLTF9Z2V0TWFwKCl7cmV0dXJuIHRoaXMuX21hcH1yZWFkQ2hhckNvZGUoZSx0LGkpe2xldCBhPTA7Y29uc3Qgcj10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IHM9MCxuPXIubGVuZ3RoO3M8bjtzKyspe2E9KGE8PDh8ZS5jaGFyQ29kZUF0KHQrcykpPj4+MDtjb25zdCBuPXJbc107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7KXtjb25zdCB0PW5bZSsrXSxyPW5bZSsrXTtpZihhPj10JiZhPD1yKXtpLmNoYXJjb2RlPWE7aS5sZW5ndGg9cysxO3JldHVybn19fWkuY2hhcmNvZGU9MDtpLmxlbmd0aD0xfWdldENoYXJDb2RlTGVuZ3RoKGUpe2NvbnN0IHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07Zm9yKGxldCB0PTAscj1hLmxlbmd0aDt0PHI7KXtjb25zdCByPWFbdCsrXSxzPWFbdCsrXTtpZihlPj1yJiZlPD1zKXJldHVybiBpKzF9fXJldHVybiAxfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1nZXQgaXNJZGVudGl0eUNNYXAoKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPWk7ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihpKXx8InN0cmluZyI9PXR5cGVvZiBpKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoaSk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTppO2UubWFwQmZSYW5nZShhLHIsdCl9ZWxzZXtpZighaXNDbWQoaSwiWyIpKWJyZWFrO3tpPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyFpc0NtZChpLCJdIikmJmkhPT1FdDspe3MucHVzaChpKTtpPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShhLHIscyl9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1FdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RJbnQoaSk7Y29uc3Qgcj1pO2UubWFwT25lKGEscil9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PUV0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHM9aTtlLm1hcENpZFJhbmdlKGEscixzKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBpKWJyZWFrO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCByPXN0clRvSW50KGkpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoaS5sZW5ndGgsYSxyKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBpPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihpKSYmKGUudmVydGljYWw9ISFpKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO2kgaW5zdGFuY2VvZiBOYW1lJiYoZS5uYW1lPWkubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxpLGEpe2xldCByLHM7QTpmb3IoOzspdHJ5e2NvbnN0IGk9dC5nZXRPYmooKTtpZihpPT09RXQpYnJlYWs7aWYoaSBpbnN0YW5jZW9mIE5hbWUpeyJXTW9kZSI9PT1pLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1pLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtyPWl9ZWxzZSBpZihpIGluc3RhbmNlb2YgQ21kKXN3aXRjaChpLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBBO2Nhc2UidXNlY21hcCI6ciBpbnN0YW5jZW9mIE5hbWUmJihzPXIubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hYSYmcyYmKGE9cyk7cmV0dXJuIGE/ZXh0ZW5kQ01hcChlLGksYSk6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxpKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoaSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyllLmNvZGVzcGFjZVJhbmdlc1tpXT10W2ldLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGkpfSkpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFuaS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6aSxpc0NvbXByZXNzZWQ6YX09YXdhaXQgdChlKSxyPW5ldyBDTWFwKCEwKTtpZihhKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhpLHIsKGU9PmV4dGVuZENNYXAocix0LGUpKSk7Y29uc3Qgcz1uZXcgTGV4ZXIobmV3IFN0cmVhbShpKSk7cmV0dXJuIHBhcnNlQ01hcChyLHMsdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOml9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBhPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxpKTtyZXR1cm4gYS5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChhLm5hbWUsdCk6YX10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDE3OTUpO2NvbnN0IGdpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sSWk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sY2k9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sbGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxoaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLENpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sQmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLFFpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxFaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLHVpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gUWk7Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gQmk7Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gQ2k7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIEVpO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiB1aTtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gbGk7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGhpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IGRpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCIsIjAwMS4wMDAiLCIwMDEuMDAxIiwiMDAxLjAwMiIsIjAwMS4wMDMiLCJCbGFjayIsIkJvbGQiLCJCb29rIiwiTGlnaHQiLCJNZWRpdW0iLCJSZWd1bGFyIiwiUm9tYW4iLCJTZW1pYm9sZCJdLGZpPTM5MSxwaT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoicmV0dXJuIixtaW46MCx1bmRlZlN0YWNrOiEwfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxtaT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWl9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkY7dGhpcy5jZmY9dDtjb25zdCBpPXRoaXMucGFyc2VIZWFkZXIoKSxhPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChzLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChyLm9iai5nZXQoMCkpLGc9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWkub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChhLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChzLm9iaik7dC50b3BEaWN0PWc7dC5nbG9iYWxTdWJySW5kZXg9bi5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9Zy5oYXNOYW1lKCJST1MiKTtjb25zdCBjPWcuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGw9dGhpcy5wYXJzZUluZGV4KGMpLm9iaixoPWcuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7aCYmKGUuZm9udE1hdHJpeD1oKTtjb25zdCBDPWcuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKEMpe2UuYXNjZW50PU1hdGgubWF4KENbM10sQ1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKENbMV0sQ1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IFEsRTtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoZy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpLHI9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocik7dC5mZEFycmF5LnB1c2gocil9RT1udWxsO1E9dGhpcy5wYXJzZUNoYXJzZXRzKGcuZ2V0QnlOYW1lKCJjaGFyc2V0IiksbC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGcuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGwuY291bnQpfWVsc2V7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxsLmNvdW50LHQuc3RyaW5ncywhMSk7RT10aGlzLnBhcnNlRW5jb2RpbmcoZy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsUS5jaGFyc2V0KX10LmNoYXJzZXQ9UTt0LmVuY29kaW5nPUU7Y29uc3QgdT10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmwsbG9jYWxTdWJySW5kZXg6Zy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpuLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmcucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXUuY2hhclN0cmluZ3M7dC5zZWFjcz11LnNlYWNzO3Qud2lkdGhzPXUud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJjEhPT1lW2ldOykrK2k7aWYoaT49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1pKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGkpO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scj1lWzFdLHM9ZVsyXSxuPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscixzLG4pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgaT1lW3QrK107aWYoMzA9PT1pKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBpPSIiO2NvbnN0IGE9MTUscj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0scz1lLmxlbmd0aDtmb3IoO3Q8czspe2NvbnN0IHM9ZVt0KytdLG49cz4+NCxvPTE1JnM7aWYobj09PWEpYnJlYWs7aSs9cltuXTtpZihvPT09YSlicmVhaztpKz1yW29dfXJldHVybiBwYXJzZUZsb2F0KGkpfSgpO2lmKDI4PT09aSl7aT1lW3QrK107aT0oaTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBpfWlmKDI5PT09aSl7aT1lW3QrK107aT1pPDw4fGVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107cmV0dXJuIGl9aWYoaT49MzImJmk8PTI0NilyZXR1cm4gaS0xMzk7aWYoaT49MjQ3JiZpPD0yNTApcmV0dXJuIDI1NiooaS0yNDcpK2VbdCsrXSsxMDg7aWYoaT49MjUxJiZpPD0yNTQpcmV0dXJuLTI1NiooaS0yNTEpLWVbdCsrXS0xMDg7d2FybignQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicraSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgaT1bXTtjb25zdCBhPVtdO3Q9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7dDxyOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7YS5wdXNoKFtyLGldKTtpPVtdOysrdH1lbHNlIGkucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIGF9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxpPXRoaXMuYnl0ZXMsYT1pW2UrK108PDh8aVtlKytdLHI9W107bGV0IHMsbixvPWU7aWYoMCE9PWEpe2NvbnN0IHQ9aVtlKytdLGc9ZSsoYSsxKSp0LTE7Zm9yKHM9MCxuPWErMTtzPG47KytzKXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDsrK3Ipe2E8PD04O2ErPWlbZSsrXX1yLnB1c2goZythKX1vPXJbYV19Zm9yKHM9MCxuPXIubGVuZ3RoLTE7czxuOysrcyl7Y29uc3QgZT1yW3NdLGE9cltzKzFdO3QuYWRkKGkuc3ViYXJyYXkoZSxhKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpO3QucHVzaChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhhKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgZShpKTtmb3IoY29uc3RbZSxpXW9mIHQpYS5zZXRCeUtleShlLGkpO3JldHVybiBhfXBhcnNlQ2hhclN0cmluZyhlLHQsaSxhKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IHI9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrO2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjspe2NvbnN0IGc9dFtvKytdO2xldCBjPW51bGw7aWYoMTI9PT1nKXtjb25zdCBlPXRbbysrXTtpZigwPT09ZSl7dFtvLTJdPTEzOTt0W28tMV09MjI7cj0wfWVsc2UgYz1taVtlXX1lbHNlIGlmKDI4PT09Zyl7c1tyXT0odFtvXTw8MjR8dFtvKzFdPDwxNik+PjE2O28rPTI7cisrfWVsc2UgaWYoMTQ9PT1nKXtpZihyPj00KXtyLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPXMuc2xpY2UocixyKzQpO3JldHVybiExfX1jPXBpW2ddfWVsc2UgaWYoZz49MzImJmc8PTI0Nil7c1tyXT1nLTEzOTtyKyt9ZWxzZSBpZihnPj0yNDcmJmc8PTI1NCl7c1tyXT1nPDI1MT8oZy0yNDc8PDgpK3Rbb10rMTA4Oi0oZy0yNTE8PDgpLXRbb10tMTA4O28rKztyKyt9ZWxzZSBpZigyNTU9PT1nKXtzW3JdPSh0W29dPDwyNHx0W28rMV08PDE2fHRbbysyXTw8OHx0W28rM10pLzY1NTM2O28rPTQ7cisrfWVsc2UgaWYoMTk9PT1nfHwyMD09PWcpe2UuaGludHMrPXI+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfW8rPWUuaGludHMrNz4+MztyJT0yO2M9cGlbZ119ZWxzZXtpZigxMD09PWd8fDI5PT09Zyl7Y29uc3QgdD0xMD09PWc/aTphO2lmKCF0KXtjPXBpW2ddO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1sZXQgbj0zMjc2ODt0LmNvdW50PDEyNDA/bj0xMDc6dC5jb3VudDwzMzkwMCYmKG49MTEzMSk7Y29uc3Qgbz1zWy0tcl0rbjtpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtjPXBpW2ddO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPXI7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxpLGEpKXJldHVybiExO2UuY2FsbERlcHRoLS07cj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWcpe2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9aWYoMD09PWcmJm89PT10Lmxlbmd0aCl7dFtvLTFdPTE0O2M9cGlbMTRdfWVsc2V7aWYoOT09PWcpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfWM9cGlbZ119fWlmKGMpe2lmKGMuc3RlbSl7ZS5oaW50cys9cj4+MTtpZigzPT09Z3x8MjM9PT1nKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Z3x8MTg9PT1nKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtvLTFdPTE9PT1nPzM6MjN9fWlmKCJtaW4iaW4gYyYmIWUudW5kZWZTdGFjayYmcjxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3IrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1yKXt0W28tMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7ci09Yy5taW47cj49MiYmYy5zdGVtP3IlPTI6cj4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cj4wJiYoZS53aWR0aD1zW3ItMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihzLHIpO3IrPWMuc3RhY2tEZWx0YX1lbHNlIGlmKGMuc3RhY2tDbGVhcmluZylyPTA7ZWxzZSBpZihjLnJlc2V0U3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihjLnVuZGVmU3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1uPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbik7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmksZmRTZWxlY3Q6YSxmZEFycmF5OnIscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG49W10sbz1bXSxnPWUuY291bnQ7Zm9yKGxldCBjPTA7YzxnO2MrKyl7Y29uc3QgZz1lLmdldChjKSxsPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsQz1udWxsLFE9cztpZihhJiZyLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoYyk7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49ci5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7UT1yW2VdLnByaXZhdGVEaWN0O0M9US5zdWJyc0luZGV4fX1lbHNlIHQmJihDPXQpO2gmJihoPXRoaXMucGFyc2VDaGFyU3RyaW5nKGwsZyxDLGkpKTtpZihudWxsIT09bC53aWR0aCl7Y29uc3QgZT1RLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bY109ZStsLndpZHRofWVsc2V7Y29uc3QgZT1RLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bY109ZX1udWxsIT09bC5zZWFjJiYobltjXT1sLnNlYWMpO2h8fGUuc2V0KGMsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm4sd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGk9dFswXSxhPXRbMV07aWYoMD09PWl8fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHI9YStpLHM9dGhpcy5ieXRlcy5zdWJhcnJheShhLHIpLG49dGhpcy5wYXJzZURpY3Qocyksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsbixlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bzswPT09by5nZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIpJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKCFvLmdldEJ5TmFtZSgiU3VicnMiKSlyZXR1cm47Y29uc3QgZz1vLmdldEJ5TmFtZSgiU3VicnMiKSxjPWErZztpZigwPT09Z3x8Yz49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgbD10aGlzLnBhcnNlSW5kZXgoYyk7by5zdWJyc0luZGV4PWwub2JqfXBhcnNlQ2hhcnNldHMoZSx0LGksYSl7aWYoMD09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLklTT19BRE9CRSxnaSk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVCxJaSk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGJpLkVYUEVSVF9TVUJTRVQsY2kpO2NvbnN0IHI9dGhpcy5ieXRlcyxzPWUsbj1yW2UrK10sbz1bYT8wOiIubm90ZGVmIl07bGV0IGcsYyxsO3QtPTE7c3dpdGNoKG4pe2Nhc2UgMDpmb3IobD0wO2w8dDtsKyspe2c9cltlKytdPDw4fHJbZSsrXTtvLnB1c2goYT9nOmkuZ2V0KGcpKX1icmVhaztjYXNlIDE6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTtmb3IobD0wO2w8PWM7bCsrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztjYXNlIDI6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTw8OHxyW2UrK107Zm9yKGw9MDtsPD1jO2wrKylvLnB1c2goYT9nKys6aS5nZXQoZysrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX1jb25zdCBoPWUsQz1yLnN1YmFycmF5KHMsaCk7cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLG4sbyxDKX1wYXJzZUVuY29kaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPXRoaXMuYnl0ZXM7bGV0IG4sbyxnLGM9ITEsbD1udWxsO2lmKDA9PT1lfHwxPT09ZSl7Yz0hMDtuPWU7Y29uc3QgdD1lP2xpOkJpO2ZvcihvPTAsZz1hLmxlbmd0aDtvPGc7bysrKXtjb25zdCBlPXQuaW5kZXhPZihhW29dKTstMSE9PWUmJihyW2VdPW8pfX1lbHNle2NvbnN0IHQ9ZTtuPXNbZSsrXTtzd2l0Y2goMTI3Jm4pe2Nhc2UgMDpjb25zdCB0PXNbZSsrXTtmb3Iobz0xO288PXQ7bysrKXJbc1tlKytdXT1vO2JyZWFrO2Nhc2UgMTpjb25zdCBpPXNbZSsrXTtsZXQgYT0xO2ZvcihvPTA7bzxpO28rKyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107Zm9yKGxldCBlPXQ7ZTw9dCtpO2UrKylyW2VdPWErK31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICR7bn0gaW4gQ0ZGYCl9Y29uc3QgZz1lO2lmKDEyOCZuKXtzW3RdJj0xMjc7IWZ1bmN0aW9uIHJlYWRTdXBwbGVtZW50KCl7Y29uc3QgdD1zW2UrK107Zm9yKG89MDtvPHQ7bysrKXtjb25zdCB0PXNbZSsrXSxuPShzW2UrK108PDgpKygyNTUmc1tlKytdKTtyW3RdPWEuaW5kZXhPZihpLmdldChuKSl9fSgpfWw9cy5zdWJhcnJheSh0LGcpfW4mPTEyNztyZXR1cm4gbmV3IENGRkVuY29kaW5nKGMsbixyLGwpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCBpPXRoaXMuYnl0ZXMsYT1pW2UrK10scj1bXTtsZXQgcztzd2l0Y2goYSl7Y2FzZSAwOmZvcihzPTA7czx0Oysrcyl7Y29uc3QgdD1pW2UrK107ci5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBuPWlbZSsrXTw8OHxpW2UrK107Zm9yKHM9MDtzPG47KytzKXtsZXQgdD1pW2UrK108PDh8aVtlKytdO2lmKDA9PT1zJiYwIT09dCl7d2FybigicGFyc2VGRFNlbGVjdDogVGhlIGZpcnN0IHJhbmdlIG11c3QgaGF2ZSBhIGZpcnN0IEdJRCBvZiAwIC0tIHRyeWluZyB0byByZWNvdmVyLiIpO3Q9MH1jb25zdCBhPWlbZSsrXSxuPWlbZV08PDh8aVtlKzFdO2ZvcihsZXQgZT10O2U8bjsrK2Upci5wdXNoKGEpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke2F9Ii5gKX1pZihyLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KGEscil9fWNsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19Y2xhc3MgQ0ZGSGVhZGVye2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMubWFqb3I9ZTt0aGlzLm1pbm9yPXQ7dGhpcy5oZHJTaXplPWk7dGhpcy5vZmZTaXplPWF9fWNsYXNzIENGRlN0cmluZ3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/ZGlbZV06ZS1maTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1maV06ZGlbMF19Z2V0U0lEKGUpe2xldCB0PWRpLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrZmk6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXTt0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgaSBvZiB0KWlmKGlzTmFOKGkpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBpPXRoaXMudHlwZXNbZV07Im51bSIhPT1pJiYic2lkIiE9PWkmJiJvZmZzZXQiIT09aXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoaVswXSk/KGlbMF1bMF08PDgpK2lbMF1bMV06aVswXTt0LmtleVRvTmFtZU1hcFtlXT1pWzFdO3QubmFtZVRvS2V5TWFwW2lbMV1dPWU7dC50eXBlc1tlXT1pWzJdO3QuZGVmYXVsdHNbZV09aVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShpWzBdKT9pWzBdOltpWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IHlpPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoeWkpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IHdpPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHdpKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBiaT17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7Y29uc3RydWN0b3IoKXt0aGlzLm9mZnNldHM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc1RyYWNraW5nKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c310cmFjayhlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQsaSl7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IGE9aS5kYXRhLHI9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7Y29uc3QgaT01KmUrcixzPWkrMSxuPWkrMixvPWkrMyxnPWkrNDtpZigyOSE9PWFbaV18fDAhPT1hW3NdfHwwIT09YVtuXXx8MCE9PWFbb118fDAhPT1hW2ddKXRocm93IG5ldyBGb3JtYXRFcnJvcigid3JpdGluZyB0byBhbiBvZmZzZXQgdGhhdCBpcyBub3QgZW1wdHkiKTtjb25zdCBjPXRbZV07YVtpXT0yOTthW3NdPWM+PjI0JjI1NTthW25dPWM+PjE2JjI1NTthW29dPWM+PjgmMjU1O2FbZ109MjU1JmN9fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaHt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0saT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGkpO2NvbnN0IGE9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGkgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2kuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGkuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtpLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHI9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3I/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgbj1zLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGc9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGcpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZCluLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgaT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtuLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGkpfWNvbnN0IGM9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO24uc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChjKTtjb25zdCBsPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO24uc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQobCk7aWYoZS5pc0NJREZvbnQpe24uc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgaT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChpKTtzPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBhPXMudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxhLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbbl0sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBpPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoaSl7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChpWzJdPytpWzJdOjApK2lbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscixzPSIiO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7KythKXtjb25zdCBlPXRbYV07cys9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXMrPTEmcy5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgbj1bMzBdO2ZvcihhPTAscj1zLmxlbmd0aDthPHI7YSs9MiluLnB1c2gocGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIG59ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGkubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWlbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHMgb2YgZSl7aWYoaSl7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3MucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3MucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixuPXRoaXMuY29tcGlsZURpY3QocyxlKTthLnB1c2goZSk7ci5hZGQobik7ZS5vZmZzZXQodCl9cj10aGlzLmNvbXBpbGVJbmRleChyLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpyfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZVthXSxzPXIucHJpdmF0ZURpY3Q7aWYoIXN8fCFyLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbj1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocyxuKTtsZXQgZz1pLmxlbmd0aDtuLm9mZnNldChnKTtvLmxlbmd0aHx8KGc9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsZ10saSk7aS5hZGQobyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtuLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbby5sZW5ndGhdLGkpO2kuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUub3JkZXIpe2lmKCEoYSBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IHI9ZS52YWx1ZXNbYV0scz1lLnR5cGVzW2FdO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtpZigwIT09ci5sZW5ndGgpe2ZvcihsZXQgbj0wLG89cy5sZW5ndGg7bjxvOysrbil7Y29uc3Qgbz1zW25dLGc9cltuXTtzd2l0Y2gobyl7Y2FzZSJudW0iOmNhc2Uic2lkIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW2FdO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGkubGVuZ3RoKTtpLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6aS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGcpKTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDsrK2UpaS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKHJbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1pLnB1c2goLi4uZS5vcGNvZGVzW2FdKX19cmV0dXJuIGl9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpdC5hZGQoc3RyaW5nVG9CeXRlcyhpKSk7cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyU3RyaW5ncyhlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IobGV0IGk9MDtpPGUuY291bnQ7aSsrKXtjb25zdCBhPWUuZ2V0KGkpOzAhPT1hLmxlbmd0aD90LmFkZChhKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhcnNldChlLHQsaSxhKXtsZXQgcjtjb25zdCBzPXQtMTtpZihhKXI9bmV3IFVpbnQ4QXJyYXkoWzIsMCwwLHM+PjgmMjU1LDI1NSZzXSk7ZWxzZXtyPW5ldyBVaW50OEFycmF5KDErMipzKTtyWzBdPTA7bGV0IHQ9MDtjb25zdCBhPWUuY2hhcnNldC5sZW5ndGg7bGV0IG49ITE7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKz0yKXtsZXQgbz0wO2lmKHQ8YSl7Y29uc3QgYT1lLmNoYXJzZXRbdCsrXTtvPWkuZ2V0U0lEKGEpO2lmKC0xPT09byl7bz0wO2lmKCFuKXtuPSEwO3dhcm4oYENvdWxkbid0IGZpbmQgJHthfSBpbiBDRkYgc3RyaW5nc2ApfX19cltzXT1vPj44JjI1NTtyW3MrMV09MjU1Jm99fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHIpfWNvbXBpbGVFbmNvZGluZyhlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9Y29tcGlsZUZEU2VsZWN0KGUpe2NvbnN0IHQ9ZS5mb3JtYXQ7bGV0IGksYTtzd2l0Y2godCl7Y2FzZSAwOmk9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCk7aVswXT10O2ZvcihhPTA7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspaVthKzFdPWUuZmRTZWxlY3RbYV07YnJlYWs7Y2FzZSAzOmNvbnN0IHI9MDtsZXQgcz1lLmZkU2VsZWN0WzBdO2NvbnN0IG49W3QsMCwwLHI+PjgmMjU1LDI1NSZyLHNdO2ZvcihhPTE7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspe2NvbnN0IHQ9ZS5mZFNlbGVjdFthXTtpZih0IT09cyl7bi5wdXNoKGE+PjgmMjU1LDI1NSZhLHQpO3M9dH19Y29uc3Qgbz0obi5sZW5ndGgtMykvMztuWzFdPW8+PjgmMjU1O25bMl09MjU1Jm87bi5wdXNoKGE+PjgmMjU1LDI1NSZhKTtpPW5ldyBVaW50OEFycmF5KG4pfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlLHQ9W10pe2NvbnN0IGk9ZS5vYmplY3RzLGE9aS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuWzAsMF07Y29uc3Qgcj1bYT4+OCYyNTUsMjU1JmFdO2xldCBzLG4sbz0xO2ZvcihzPTA7czxhOysrcylvKz1pW3NdLmxlbmd0aDtuPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O3IucHVzaChuKTtsZXQgZz0xO2ZvcihzPTA7czxhKzE7cysrKXsxPT09bj9yLnB1c2goMjU1JmcpOjI9PT1uP3IucHVzaChnPj44JjI1NSwyNTUmZyk6Mz09PW4/ci5wdXNoKGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyk6ci5wdXNoKGc+Pj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTtpW3NdJiYoZys9aVtzXS5sZW5ndGgpfWZvcihzPTA7czxhO3MrKyl7dFtzXSYmdFtzXS5vZmZzZXQoci5sZW5ndGgpO3IucHVzaCguLi5pW3NdKX1yZXR1cm4gcn19Y29uc3QgRGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksRmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMTUyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSksU2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzYzNzIxXT0xNjk7ZVs2MzE5M109MTY5O2VbNjM3MjBdPTE3NDtlWzYzMTk0XT0xNzQ7ZVs2MzcyMl09ODQ4MjtlWzYzMTk1XT04NDgyO2VbNjM3MjldPTkxMjc7ZVs2MzczMF09OTEyODtlWzYzNzMxXT05MTI5O2VbNjM3NDBdPTkxMzE7ZVs2Mzc0MV09OTEzMjtlWzYzNzQyXT05MTMzO2VbNjM3MjZdPTkxMjE7ZVs2MzcyN109OTEyMjtlWzYzNzI4XT05MTIzO2VbNjM3MzddPTkxMjQ7ZVs2MzczOF09OTEyNTtlWzYzNzM5XT05MTI2O2VbNjM3MjNdPTkxMTU7ZVs2MzcyNF09OTExNjtlWzYzNzI1XT05MTE3O2VbNjM3MzRdPTkxMTg7ZVs2MzczNV09OTExOTtlWzYzNzM2XT05MTIwfSkpO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBpPXRbZV07aWYodm9pZCAwIT09aSlyZXR1cm4gaTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKWE9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO2E9ZS5zdWJzdHJpbmcoMSl9aWYoYT09PWEudG9VcHBlckNhc2UoKSl7aT1wYXJzZUludChhLDE2KTtpZihpPj0wKXJldHVybiBpfX1yZXR1cm4tMX1jb25zdCBraT1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBpPWtpW3RdO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErPTIpaWYoZT49aVthXSYmZTw9aVthKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGk9a2kubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9a2lbdF07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgUmk9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLE5pPW5ldyBNYXA7Y29uc3QgR2k9ITAsTWk9MSx4aT0yLEhpPTQsSmk9MzIsdmk9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGk9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1pKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWkpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcixzLG47Y29uc3Qgbz0hIShlLmZsYWdzJkhpKTtpZihlLmlzSW50ZXJuYWxGb250KXtuPXQ7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe249Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKG8pZm9yKHMgaW4gdClhW3NdPXRbc107ZWxzZXtuPUJpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWNvbnN0IGc9ZS5kaWZmZXJlbmNlcztsZXQgYztpZihnKWZvcihzIGluIGcpe2NvbnN0IGU9Z1tzXTtyPWkuaW5kZXhPZihlKTtpZigtMT09PXIpe2N8fChjPURpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGMpO3QhPT1lJiYocj1pLmluZGV4T2YodCkpfWFbc109cj49MD9yOjB9cmV0dXJuIGF9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgWWk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChlPT57ZVs4MjExXT02NTA3NDtlWzgyMTJdPTY1MDczO2VbODIyOV09NjUwNzI7ZVs4MjMwXT02NTA0OTtlWzEyMjg5XT02NTA0MTtlWzEyMjkwXT02NTA0MjtlWzEyMjk2XT02NTA4NztlWzEyMjk3XT02NTA4ODtlWzEyMjk4XT02NTA4NTtlWzEyMjk5XT02NTA4NjtlWzEyMzAwXT02NTA4OTtlWzEyMzAxXT02NTA5MDtlWzEyMzAyXT02NTA5MTtlWzEyMzAzXT02NTA5MjtlWzEyMzA0XT02NTA4MztlWzEyMzA1XT02NTA4NDtlWzEyMzA4XT02NTA4MTtlWzEyMzA5XT02NTA4MjtlWzEyMzEwXT02NTA0NztlWzEyMzExXT02NTA0ODtlWzY1MTAzXT02NTA3NjtlWzY1MjgxXT02NTA0NTtlWzY1Mjg4XT02NTA3NztlWzY1Mjg5XT02NTA3ODtlWzY1MjkyXT02NTA0MDtlWzY1MzA2XT02NTA0MztlWzY1MzA3XT02NTA0NDtlWzY1MzExXT02NTA0NjtlWzY1MzM5XT02NTA5NTtlWzY1MzQxXT02NTA5NjtlWzY1MzQzXT02NTA3NTtlWzY1MzcxXT02NTA3OTtlWzY1MzczXT02NTA4MH0pKSxLaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpLFRpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpLHFpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5HaWxsU2Fuc01UPSJIZWx2ZXRpY2EiO2VbIkdpbGxTYW5zTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiR2lsbFNhbnNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiR2lsbFNhbnNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSkpLE9pPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSksUGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pKSxXaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSksamk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzIyN109MzIyO2VbMjY0XT0yNjE7ZVsyOTFdPTM0Nn0pKSxYaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gS2koKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShLaSgpW3RdfHxxaSgpW3RdfHxPaSgpW3RdfHxQaSgpW3RdKX1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY29kZVBvaW50QXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fWNsYXNzIElkZW50aXR5VG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZTt0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIsaT10aGlzLmxhc3RDaGFyO3Q8PWk7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKGUsdCxHaSk7dGhpcy5jZmY9aS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBhPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPWEuY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIit0LmxvYWRlZE5hbWUpO3RoaXMuZGF0YT1lfXRoaXMuX2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jZmYuY2hhclN0cmluZ3MuY291bnR9Z2V0Q2hhcnNldCgpe3JldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXR9Z2V0R2x5cGhNYXBwaW5nKCl7Y29uc3QgZT10aGlzLmNmZix0PXRoaXMucHJvcGVydGllcyx7Y2lkVG9HaWRNYXA6aSxjTWFwOmF9PXQscj1lLmNoYXJzZXQuY2hhcnNldDtsZXQgcyxuO2lmKHQuY29tcG9zaXRlKXtsZXQgdCxvO2lmKGk/Lmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPWlbZV07dm9pZCAwIT09YSYmKHRbYV09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobj0wO248ci5sZW5ndGg7bisrKXtjb25zdCBlPXJbbl07bz1hLmNoYXJDb2RlT2YoZSk7dm9pZCAwIT09dD8uW29dJiYobz10W29dKTtzW29dPW59ZWxzZSBmb3Iobj0wO248ZS5jaGFyU3RyaW5ncy5jb3VudDtuKyspe289YS5jaGFyQ29kZU9mKG4pO3Nbb109bn1yZXR1cm4gc31sZXQgbz1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYobz10LmRlZmF1bHRFbmNvZGluZyk7cz10eXBlMUZvbnRHbHlwaE1hcHBpbmcodCxvLHIpO3JldHVybiBzfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IGk9ZS5jaGFyc2V0LGE9dC5lbmNvZGluZyxyPVtdO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZih0Pj0wKXtjb25zdCBhPWlbdF07YSYmKHJbZV09YSl9fXIubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPXIpfX1mdW5jdGlvbiBnZXRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gZ2V0VWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIGdldEludDE2KGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiBnZXRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBnZXRJbnQxNihlLHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MzI3Njg7dDwxMjQwP2k9MTA3OnQ8MzM5MDAmJihpPTExMzEpO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsaSl7Y29uc3QgYT0xPT09Z2V0VWludDE2KGUsdCsyKT9nZXRVaW50MzIoZSx0KzgpOmdldFVpbnQzMihlLHQrMTYpLHI9Z2V0VWludDE2KGUsdCthKTtsZXQgcyxuLG87aWYoND09PXIpe2dldFVpbnQxNihlLHQrYSsyKTtjb25zdCBpPWdldFVpbnQxNihlLHQrYSs2KT4+MTtuPXQrYSsxNDtzPVtdO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb109e2VuZDpnZXRVaW50MTYoZSxuKX07bis9Mjtmb3Iobz0wO288aTtvKyssbis9MilzW29dLnN0YXJ0PWdldFVpbnQxNihlLG4pO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb10uaWREZWx0YT1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9Mil7bGV0IHQ9Z2V0VWludDE2KGUsbik7aWYoMCE9PXQpe3Nbb10uaWRzPVtdO2ZvcihsZXQgaT0wLGE9c1tvXS5lbmQtc1tvXS5zdGFydCsxO2k8YTtpKyspe3Nbb10uaWRzW2ldPWdldFVpbnQxNihlLG4rdCk7dCs9Mn19fXJldHVybiBzfWlmKDEyPT09cil7Y29uc3QgaT1nZXRVaW50MzIoZSx0K2ErMTIpO249dCthKzE2O3M9W107Zm9yKG89MDtvPGk7bysrKXt0PWdldFVpbnQzMihlLG4pO3MucHVzaCh7c3RhcnQ6dCxlbmQ6Z2V0VWludDMyKGUsbis0KSxpZERlbHRhOmdldFVpbnQzMihlLG4rOCktdH0pO24rPTEyfXJldHVybiBzfXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtyfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxpLGEpe2NvbnN0IHI9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxpLXQpLHt9LGEpLnBhcnNlKCk7cmV0dXJue2dseXBoczpyLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6ci50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczpyLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6ci5pc0NJREZvbnQsZmRTZWxlY3Q6ci5mZFNlbGVjdCxmZEFycmF5OnIuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKTtsZXQgYT0wLHI9MCxzPWUubGVuZ3RoLTE7Zm9yKDtyPHM7KXtjb25zdCB0PXIrcysxPj4xO2k8ZVt0XS5zdGFydD9zPXQtMTpyPXR9ZVtyXS5zdGFydDw9aSYmaTw9ZVtyXS5lbmQmJihhPWVbcl0uaWREZWx0YSsoZVtyXS5pZHM/ZVtyXS5pZHNbaS1lW3JdLnN0YXJ0XTppKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmksZ2x5cGhJZDphfX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsaSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxpLGEscil7dC5hZGQoIlEiLFtlLGksYSxyXSl9bGV0IGE9MDtjb25zdCByPWdldEludDE2KGUsYSk7bGV0IHMsbj0wLG89MDthKz0xMDtpZihyPDApZG97cz1nZXRVaW50MTYoZSxhKTtjb25zdCByPWdldFVpbnQxNihlLGErMik7YSs9NDtsZXQgZyxjO2lmKDEmcyl7aWYoMiZzKXtnPWdldEludDE2KGUsYSk7Yz1nZXRJbnQxNihlLGErMil9ZWxzZXtnPWdldFVpbnQxNihlLGEpO2M9Z2V0VWludDE2KGUsYSsyKX1hKz00fWVsc2UgaWYoMiZzKXtnPWdldEludDgoZSxhKyspO2M9Z2V0SW50OChlLGErKyl9ZWxzZXtnPWVbYSsrXTtjPWVbYSsrXX1pZigyJnMpe249ZztvPWN9ZWxzZXtuPTA7bz0wfWxldCBsPTEsaD0xLEM9MCxRPTA7aWYoOCZzKXtsPWg9Z2V0RmxvYXQyMTQoZSxhKTthKz0yfWVsc2UgaWYoNjQmcyl7bD1nZXRGbG9hdDIxNChlLGEpO2g9Z2V0RmxvYXQyMTQoZSxhKzIpO2ErPTR9ZWxzZSBpZigxMjgmcyl7bD1nZXRGbG9hdDIxNChlLGEpO0M9Z2V0RmxvYXQyMTQoZSxhKzIpO1E9Z2V0RmxvYXQyMTQoZSxhKzQpO2g9Z2V0RmxvYXQyMTQoZSxhKzYpO2ErPTh9Y29uc3QgRT1pLmdseXBoc1tyXTtpZihFKXt0LnNhdmUoKTt0LnRyYW5zZm9ybShbbCxDLFEsaCxuLG9dKTtjb21waWxlR2x5ZihFLHQsaSk7dC5yZXN0b3JlKCl9fXdoaWxlKDMyJnMpO2Vsc2V7Y29uc3QgdD1bXTtsZXQgaSxnO2ZvcihpPTA7aTxyO2krKyl7dC5wdXNoKGdldFVpbnQxNihlLGEpKTthKz0yfWErPTIrZ2V0VWludDE2KGUsYSk7Y29uc3QgYz10LmF0KC0xKSsxLGw9W107Zm9yKDtsLmxlbmd0aDxjOyl7cz1lW2ErK107bGV0IHQ9MTs4JnMmJih0Kz1lW2ErK10pO2Zvcig7dC0tID4wOylsLnB1c2goe2ZsYWdzOnN9KX1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgxOCZsW2ldLmZsYWdzKXtjYXNlIDA6bis9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgMjpuLT1lW2ErK107YnJlYWs7Y2FzZSAxODpuKz1lW2ErK119bFtpXS54PW59Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMzYmbFtpXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDQ6by09ZVthKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVthKytdfWxbaV0ueT1vfWxldCBoPTA7Zm9yKGE9MDthPHI7YSsrKXtjb25zdCBlPXRbYV0scj1sLnNsaWNlKGgsZSsxKTtpZigxJnJbMF0uZmxhZ3Mpci5wdXNoKHJbMF0pO2Vsc2UgaWYoMSZyLmF0KC0xKS5mbGFncylyLnVuc2hpZnQoci5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihyWzBdLngrci5hdCgtMSkueCkvMix5OihyWzBdLnkrci5hdCgtMSkueSkvMn07ci51bnNoaWZ0KGUpO3IucHVzaChlKX1tb3ZlVG8oclswXS54LHJbMF0ueSk7Zm9yKGk9MSxnPXIubGVuZ3RoO2k8ZztpKyspaWYoMSZyW2ldLmZsYWdzKWxpbmVUbyhyW2ldLngscltpXS55KTtlbHNlIGlmKDEmcltpKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHJbaV0ueCxyW2ldLnkscltpKzFdLngscltpKzFdLnkpO2krK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8ocltpXS54LHJbaV0ueSwocltpXS54K3JbaSsxXS54KS8yLChyW2ldLnkrcltpKzFdLnkpLzIpO2g9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGksYSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoIk0iLFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZCgiTCIsW2UsaV0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxpLGEscixzLG4pe3QuYWRkKCJDIixbZSxpLGEscixzLG5dKX1jb25zdCByPVtdO2xldCBzPTAsbj0wLG89MDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtsZXQgYyxsLGgsQyxRLEUsdSxkLGYscD0hMSxtPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9ci5sZW5ndGg+PjE7cD0hMDticmVhaztjYXNlIDQ6bis9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgNjpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDc6Zm9yKDtyLmxlbmd0aD4wOyl7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztzKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA4OmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMTA6ZD1yLnBvcCgpO2Y9bnVsbDtpZihpLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1pLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxpLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWkuZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7ZCs9Z2V0U3Vicm91dGluZUJpYXMoYSk7Zj1hW2RdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgZj1pLnN1YnJzW2QraS5zdWJyc0JpYXNdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6bT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMzQ6Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbixsLFEscyxRKTtjPXMrci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxsLG4scyxuKTticmVhaztjYXNlIDM1OmM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO3IucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXMrci5zaGlmdCgpO1E9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtFPVErci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsbCxFLHMsRSk7Yz1zK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO3U9RStyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsRSxsLHUscyxuKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cyx0PW47Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWwrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtzPWw7bj1DO01hdGguYWJzKHMtZSk+TWF0aC5hYnMobi10KT9zKz1yLnNoaWZ0KCk6bis9ci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke219YCl9YnJlYWs7Y2FzZSAxNDppZihyLmxlbmd0aD49NCl7Y29uc3QgZT1yLnBvcCgpLGE9ci5wb3AoKTtuPXIucG9wKCk7cz1yLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKHMsbik7bGV0IG89bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtCaVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9ci5sZW5ndGg+PjE7Zys9bys3Pj4zO3A9ITA7YnJlYWs7Y2FzZSAyMTpuKz1yLnBvcCgpO3MrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDIyOnMrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDI0OmZvcig7ci5sZW5ndGg+Mjspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfXMrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7YnJlYWs7Y2FzZSAyNTpmb3IoO3IubGVuZ3RoPjY7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pO2JyZWFrO2Nhc2UgMjY6ci5sZW5ndGglMiYmKHMrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bDtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjc6ci5sZW5ndGglMiYmKG4rPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtoPW47bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2Nhc2UgMjg6ci5wdXNoKChlW2ddPDwyNHxlW2crMV08PDE2KT4+MTYpO2crPTI7YnJlYWs7Y2FzZSAyOTpkPXIucG9wKCkraS5nc3VicnNCaWFzO2Y9aS5nc3VicnNbZF07ZiYmcGFyc2UoZik7YnJlYWs7Y2FzZSAzMDpmb3IoO3IubGVuZ3RoPjA7KXtjPXM7aD1uK3Iuc2hpZnQoKTtsPWMrci5zaGlmdCgpO0M9aCtyLnNoaWZ0KCk7cz1sK3Iuc2hpZnQoKTtuPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsbCxDLHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKX1icmVhaztjYXNlIDMxOmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uO2w9YytyLnNoaWZ0KCk7Qz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO3M9bCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxsLEMscyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zO2g9bityLnNoaWZ0KCk7bD1jK3Iuc2hpZnQoKTtDPWgrci5zaGlmdCgpO3M9bCtyLnNoaWZ0KCk7bj1DKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLGwsQyxzLG4pfWJyZWFrO2RlZmF1bHQ6aWYobTwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7bX1gKTtpZihtPDI0NylyLnB1c2gobS0xMzkpO2Vsc2UgaWYobTwyNTEpci5wdXNoKDI1NioobS0yNDcpK2VbZysrXSsxMDgpO2Vsc2UgaWYobTwyNTUpci5wdXNoKDI1NiotKG0tMjUxKS1lW2crK10tMTA4KTtlbHNle3IucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNnxlW2crMl08PDh8ZVtnKzNdKS82NTUzNik7Zys9NH19cCYmKHIubGVuZ3RoPTApfX0oZSl9Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTt0cmFuc2Zvcm1TdGFjaz1bXTtjdXJyZW50VHJhbnNmb3JtPVsxLDAsMCwxLDAsMF07YWRkKGUsdCl7aWYodCl7Y29uc3RbaSxhLHIscyxuLG9dPXRoaXMuY3VycmVudFRyYW5zZm9ybTtmb3IobGV0IGU9MCxnPXQubGVuZ3RoO2U8ZztlKz0yKXtjb25zdCBnPXRbZV0sYz10W2UrMV07dFtlXT1pKmcrcipjK247dFtlKzFdPWEqZytzKmMrb310aGlzLmNtZHMucHVzaChgJHtlfSR7dC5qb2luKCIgIil9YCl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX10cmFuc2Zvcm0oZSl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPVV0aWwudHJhbnNmb3JtKHRoaXMuY3VycmVudFRyYW5zZm9ybSxlKX10cmFuc2xhdGUoZSx0KXt0aGlzLnRyYW5zZm9ybShbMSwwLDAsMSxlLHRdKX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMuY3VycmVudFRyYW5zZm9ybS5zbGljZSgpKX1yZXN0b3JlKCl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCl8fFsxLDAsMCwxLDAsMF19Z2V0U1ZHKCl7cmV0dXJuIHRoaXMuY21kcy5qb2luKCIiKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lO3RoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOml9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2xldCBhLHI9dGhpcy5jb21waWxlZEdseXBoc1tpXTtpZih2b2lkIDA9PT1yKXt0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtyPSIiO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXJ9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHJ9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWU/Lmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiIiO2xldCBpPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtpPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8cn1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KGksNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBhPW5ldyBDb21tYW5kczthLnRyYW5zZm9ybShpLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLGEsdCk7YS5hZGQoIloiKTtyZXR1cm4gYS5nZXRTVkcoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9RGkoKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGkpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGkpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IGEscixzLG4sbyxnO2NvbnN0IGM9Z2V0VWludDE2KGksNCk7Zm9yKGxldCBlPTAsbD0xMjtlPGM7ZSsrLGwrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcoaS5zdWJhcnJheShsLGwrNCkpLGM9Z2V0VWludDMyKGksbCs4KSxoPWdldFVpbnQzMihpLGwrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOmE9cGFyc2VDbWFwKGksYyk7YnJlYWs7Y2FzZSJnbHlmIjpyPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UibG9jYSI6cz1pLnN1YmFycmF5KGMsYytoKTticmVhaztjYXNlImhlYWQiOmc9Z2V0VWludDE2KGksYysxOCk7bz1nZXRVaW50MTYoaSxjKzUwKTticmVhaztjYXNlIkNGRiAiOm49cGFyc2VDZmYoaSxjLGMraCx0KX19aWYocil7Y29uc3QgdD1nP1sxL2csMCwwLDEvZywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGkpe2xldCBhLHI7aWYoaSl7YT00O3I9Z2V0VWludDMyfWVsc2V7YT0yO3I9KGUsdCk9PjIqZ2V0VWludDE2KGUsdCl9Y29uc3Qgcz1bXTtsZXQgbj1yKHQsMCk7Zm9yKGxldCBpPWE7aTx0Lmxlbmd0aDtpKz1hKXtjb25zdCBhPXIodCxpKTtzLnB1c2goZS5zdWJhcnJheShuLGEpKTtuPWF9cmV0dXJuIHN9KHIscyxvKSxhLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChuLGEsZS5mb250TWF0cml4KX19Y29uc3QgVmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pKTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KSl9KSksWmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTtjbGFzcyBHbHlmVGFibGV7Y29uc3RydWN0b3Ioe2dseWZUYWJsZTplLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmksbnVtR2x5cGhzOmF9KXt0aGlzLmdseXBocz1bXTtjb25zdCByPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKSxzPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxuPXQ/NDoyO2xldCBvPXQ/ci5nZXRVaW50MzIoMCk6MipyLmdldFVpbnQxNigwKSxnPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Zys9bjtjb25zdCBlPXQ/ci5nZXRVaW50MzIoZyk6MipyLmdldFVpbnQxNihnKTtpZihlPT09byl7dGhpcy5nbHlwaHMucHVzaChuZXcgR2x5cGgoe30pKTtjb250aW51ZX1jb25zdCBpPUdseXBoLnBhcnNlKG8scyk7dGhpcy5nbHlwaHMucHVzaChpKTtvPWV9fWdldFNpemUoKXtyZXR1cm4gdGhpcy5nbHlwaHMucmVkdWNlKCgoZSx0KT0+ZSsodC5nZXRTaXplKCkrMyYtNCkpLDApfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGk9ZT4xMzEwNzAsYT1pPzQ6MixyPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSphKSk7aT9yLnNldFVpbnQzMigwLDApOnIuc2V0VWludDE2KDAsMCk7bGV0IHM9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3MrPWUud3JpdGUocyx0KTtzPXMrMyYtNDtuKz1hO2k/ci5zZXRVaW50MzIobixzKTpyLnNldFVpbnQxNihuLHM+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzppLGxvY2E6bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxpPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGk7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6aT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1pfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2ksYV09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1pO2lmKGEubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBpPVtdO2Zvcig7Oyl7Y29uc3RbYSxyXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPWE7aS5wdXNoKHIpO2lmKCEoMzImci5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsY29tcG9zaXRlczppfSl9Y29uc3Qgcj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsYS5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxzaW1wbGU6cn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBpPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWkud3JpdGUoZSx0KTtyZXR1cm4gZS1pfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBpIG9mIHRoaXMuY29tcG9zaXRlcylpLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46aSx4TWF4OmEseU1heDpyfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWk7dGhpcy54TWF4PWE7dGhpcy55TWF4PXJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOml9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWk7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7YS5wdXNoKGkpfWNvbnN0IHI9YVtpLTFdKzEscz10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK3MpO2UrPXM7Y29uc3Qgbz1bXTtmb3IobGV0IGk9MDtpPHI7ZSsrLGkrKyl7bGV0IGE9dC5nZXRVaW50OChlKTtvLnB1c2goYSk7aWYoOCZhKXtjb25zdCByPXQuZ2V0VWludDgoKytlKTthXj04O2ZvcihsZXQgZT0wO2U8cjtlKyspby5wdXNoKGEpO2krPXJ9fWNvbnN0IGc9W107bGV0IGM9W10sbD1bXSxoPVtdO2NvbnN0IEM9W107bGV0IFE9MCxFPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDImcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MTYmcj9pOi1pO2MucHVzaChFKX1lbHNlIGlmKDE2JnIpYy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChFKX1pZihhW1FdPT09aSl7USsrO2cucHVzaChjKTtjPVtdfX1FPTA7UT0wO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IHI9b1tpXTtpZig0JnIpe2NvbnN0IGk9dC5nZXRVaW50OChlKyspO0UrPTMyJnI/aTotaTtsLnB1c2goRSl9ZWxzZSBpZigzMiZyKWwucHVzaChFKTtlbHNle0UrPXQuZ2V0SW50MTYoZSk7ZSs9MjtsLnB1c2goRSl9aC5wdXNoKDEmcnw2NCZyKTtpZihhW1FdPT09aSl7Yz1nW1FdO1ErKztDLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOmgseENvb3JkaW5hdGVzOmMseUNvb3JkaW5hdGVzOmx9KSk7bD1bXTtoPVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpDLGluc3RydWN0aW9uczpufSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGk9MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtlKz1hLmZsYWdzLmxlbmd0aDtmb3IobGV0IHI9MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWEueENvb3JkaW5hdGVzW3JdLG49YS55Q29vcmRpbmF0ZXNbcl07bGV0IG89TWF0aC5hYnMocy10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9cztvPU1hdGguYWJzKG4taSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTtpPW59fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lLGE9W10scj1bXSxzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdCBpIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWkuZmxhZ3NbZV07Y29uc3QgZz1pLnhDb29yZGluYXRlc1tlXTtsZXQgYz1nLW47aWYoMD09PWMpe3R8PTE2O2EucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzE4OjI7YS5wdXNoKGUpfWVsc2UgYS5wdXNoKGMpfW49Zztjb25zdCBsPWkueUNvb3JkaW5hdGVzW2VdO2M9bC1vO2lmKDA9PT1jKXt0fD0zMjtyLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGMpO2lmKGU8PTI1NSl7dHw9Yz49MD8zNjo0O3IucHVzaChlKX1lbHNlIHIucHVzaChjKX1vPWw7cy5wdXNoKHQpfXQuc2V0VWludDE2KGUsYS5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgaSBvZiBzKXQuc2V0VWludDgoZSsrLGkpO2ZvcihsZXQgaT0wLHI9YS5sZW5ndGg7aTxyO2krKyl7Y29uc3Qgcj1hW2ldLG49c1tpXTtpZigyJm4pdC5zZXRVaW50OChlKysscik7ZWxzZSBpZighKDE2Jm4pKXt0LnNldEludDE2KGUscik7ZSs9Mn19Zm9yKGxldCBpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXJbaV0sbj1zW2ldO2lmKDQmbil0LnNldFVpbnQ4KGUrKyxhKTtlbHNlIGlmKCEoMzImbikpe3Quc2V0SW50MTYoZSxhKTtlKz0yfX1yZXR1cm4gZS1pfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3VycylpZigwIT09aS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgYT0wLHI9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2E8cjthKyspaS54Q29vcmRpbmF0ZXNbYV09TWF0aC5yb3VuZChlKyhpLnhDb29yZGluYXRlc1thXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTppLGFyZ3VtZW50MjphLHRyYW5zZjpyLGluc3RydWN0aW9uczpzfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWk7dGhpcy5hcmd1bWVudDI9YTt0aGlzLnRyYW5zZj1yO3RoaXMuaW5zdHJ1Y3Rpb25zPXN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgaT1lLGE9W107bGV0IHI9dC5nZXRVaW50MTYoZSk7Y29uc3Qgcz10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IG4sbztpZigxJnIpe2lmKDImcil7bj10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7bj10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtyXj0xfWVsc2V7aWYoMiZyKXtuPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7bj10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGc9bnVsbDtpZigyNTYmcil7Y29uc3QgaT10LmdldFVpbnQxNihlKTtlKz0yO2c9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWl9cmV0dXJuW2UtaSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOnIsZ2x5cGhJbmRleDpzLGFyZ3VtZW50MTpuLGFyZ3VtZW50MjpvLHRyYW5zZjphLGluc3RydWN0aW9uczpnfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWl9c2NhbGUoZSx0KXt9fWZ1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGkpe2VbdF09aT4+OCYyNTU7ZVt0KzFdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGkpe2VbdF09aT4+MjQmMjU1O2VbdCsxXT1pPj4xNiYyNTU7ZVt0KzJdPWk+PjgmMjU1O2VbdCszXT0yNTUmaX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGkpe2lmKGkgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGksdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGkpZm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKWVbdCsrXT0yNTUmaS5jaGFyQ29kZUF0KGEpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgaSllW3QrK109MjU1JmF9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgaT0xLGE9MDtmb3IoOyhpXmUpPmk7KXtpPDw9MTthKyt9Y29uc3Qgcj1pKnQ7cmV0dXJue3JhbmdlOnIsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1yfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsaT1PYmplY3Qua2V5cyh0KTtpLnNvcnQoKTtjb25zdCBhPWkubGVuZ3RoO2xldCByLHMsbixvLGcsYz0xMisxNiphO2NvbnN0IGw9W2NdO2ZvcihyPTA7cjxhO3IrKyl7bz10W2lbcl1dO2MrPShvLmxlbmd0aCszJi00KT4+PjA7bC5wdXNoKGMpfWNvbnN0IGg9bmV3IFVpbnQ4QXJyYXkoYyk7Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07d3JpdGVEYXRhKGgsbFtyXSxvKX0idHJ1ZSI9PT1lJiYoZT1zdHJpbmczMig2NTUzNikpO2hbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtoWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7aFsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2hbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGgsNCxhKTtjb25zdCBDPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGEsMTYpO3dyaXRlSW50MTYoaCw2LEMucmFuZ2UpO3dyaXRlSW50MTYoaCw4LEMuZW50cnkpO3dyaXRlSW50MTYoaCwxMCxDLnJhbmdlU2hpZnQpO2M9MTI7Zm9yKHI9MDtyPGE7cisrKXtnPWlbcl07aFtjXT0yNTUmZy5jaGFyQ29kZUF0KDApO2hbYysxXT0yNTUmZy5jaGFyQ29kZUF0KDEpO2hbYysyXT0yNTUmZy5jaGFyQ29kZUF0KDIpO2hbYyszXT0yNTUmZy5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKHM9bFtyXSxuPWxbcisxXTtzPG47cys9NCl7ZT1lK3JlYWRVaW50MzIoaCxzKT4+PjB9d3JpdGVJbnQzMihoLGMrNCxlKTt3cml0ZUludDMyKGgsYys4LGxbcl0pO3dyaXRlSW50MzIoaCxjKzEyLHRbZ10ubGVuZ3RoKTtjKz0xNn1yZXR1cm4gaH1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fWNvbnN0IF9pPVs0XSx6aT1bNV0sJGk9WzZdLEFhPVs3XSxlYT1bOF0sdGE9WzEyLDM1XSxpYT1bMTRdLGFhPVsyMV0scmE9WzIyXSxzYT1bMzBdLG5hPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcixzLG4sbz0hMTtmb3IobGV0IGc9MDtnPGE7ZysrKXtsZXQgYT1lW2ddO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytnXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLF9pKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsemkpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSwkaSk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLEFhKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsZWEpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbbl0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtuXSx0LGkpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXI9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscmEpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChpYVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsYWEpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscmEpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsc2EpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbmEpO2JyZWFrO2Nhc2UgMzA3ODppZihpKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsaWEpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsaWEpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyxlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxhYSk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgZz10aGlzLnN0YWNrLnBvcCgpLGM9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goYy9nKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgbD10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1uJiYzPT09bCl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsdGEsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PW4mJjA9PT1sJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytnXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrZ10tMTA4OigyNTUmZVsrK2ddKTw8MjR8KDI1NSZlWysrZ10pPDwxNnwoMjU1JmVbKytnXSk8PDh8MjU1JmVbKytnXTt0aGlzLnN0YWNrLnB1c2goYSl9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+YSlyZXR1cm4hMDtjb25zdCByPWEtZTtmb3IobGV0IGU9cjtlPGE7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTtpP3RoaXMuc3RhY2suc3BsaWNlKHIsZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsaSl7aWYoaT49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBhLHIscz0wfHQ7Zm9yKGE9MDthPGk7YSsrKXM9NTI4NDUqKGVbYV0rcykrMjI3MTkmNjU1MzU7Y29uc3Qgbj1lLmxlbmd0aC1pLG89bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGE9aSxyPTA7cjxuO2ErKyxyKyspe2NvbnN0IHQ9ZVthXTtvW3JdPXRecz4+ODtzPTUyODQ1Kih0K3MpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGk9ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKGk/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsaSl7bGV0IGE9MHx0O2NvbnN0IHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyPj4+MSk7bGV0IG4sbztmb3Iobj0wLG89MDtuPHI7bisrKXtjb25zdCB0PWVbbl07aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7bisrO2xldCBpO2Zvcig7bjxyJiYhaXNIZXhEaWdpdChpPWVbbl0pOyluKys7aWYobjxyKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxpKSwxNik7c1tvKytdPWVeYT4+ODthPTUyODQ1KihlK2EpKzIyNzE5JjY1NTM1fX1yZXR1cm4gcy5zbGljZShpLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFpO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgaT0iIjtkb3tpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBpfXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGk9W10sYT1bXSxyPU9iamVjdC5jcmVhdGUobnVsbCk7ci5sZW5JVj00O2NvbnN0IHM9e3N1YnJzOltdLGNoYXJzdHJpbmdzOltdLHByb3BlcnRpZXM6e3ByaXZhdGVEYXRhOnJ9fTtsZXQgbixvLGcsYztmb3IoO251bGwhPT0obj10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT1uKXtuPXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2gobil7Y2FzZSJDaGFyU3RyaW5ncyI6dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7Oyl7bj10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PW58fCJlbmQiPT09bilicmVhaztpZigiLyIhPT1uKWNvbnRpbnVlO2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1zLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgaT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09bj90aGlzLmdldFRva2VuKCk6Ii8iPT09biYmdGhpcy5wcmV2Q2hhcigpO2EucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOml9KX1icmVhaztjYXNlIlN1YnJzIjp0aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjPXMucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGcsYyk7dGhpcy5uZXh0Q2hhcigpO249dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1uJiZ0aGlzLmdldFRva2VuKCk7aVtlXT1hfWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aCwwO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGRIVyI6Y2FzZSJTdGRWVyI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlckFycmF5KClbMF07YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlcigpfHwuMDY7YnJlYWs7Y2FzZSJGb3JjZUJvbGQiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWRCb29sZWFuKCl9fWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6cn1vZiBhKXtjb25zdCBhPW5ldyBUeXBlMUNoYXJTdHJpbmcsbj1hLmNvbnZlcnQodCxpLHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCk7bGV0IG89YS5vdXRwdXQ7biYmKG89WzE0XSk7Y29uc3QgZz17Z2x5cGhOYW1lOnIsY2hhcnN0cmluZzpvLHdpZHRoOmEud2lkdGgsbHNiOmEubHNiLHNlYWM6YS5zZWFjfTsiLm5vdGRlZiI9PT1yP3MuY2hhcnN0cmluZ3MudW5zaGlmdChnKTpzLmNoYXJzdHJpbmdzLnB1c2goZyk7aWYoZS5idWlsdEluRW5jb2Rpbmcpe2NvbnN0IHQ9ZS5idWlsdEluRW5jb2RpbmcuaW5kZXhPZihyKTt0Pi0xJiZ2b2lkIDA9PT1lLndpZHRoc1t0XSYmdD49ZS5maXJzdENoYXImJnQ8PWUubGFzdENoYXImJihlLndpZHRoc1t0XT1hLndpZHRoKX19cmV0dXJuIHN9ZXh0cmFjdEZvbnRIZWFkZXIoZSl7bGV0IHQ7Zm9yKDtudWxsIT09KHQ9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09dCl7dD10aGlzLmdldFRva2VuKCk7c3dpdGNoKHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3QgaT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1pO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IGE9dGhpcy5nZXRUb2tlbigpO2xldCByO2lmKC9eXGQrJC8udGVzdChhKSl7cj1bXTtjb25zdCBlPTB8cGFyc2VJbnQoYSwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCIhPT10JiYiZGVmIiE9PXQ7KXt0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dClyZXR1cm59aWYoImRlZiI9PT10KWJyZWFrO2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGk9dGhpcy5nZXRUb2tlbigpO3JbZV09aTt0aGlzLmdldFRva2VuKCl9fWVsc2Ugcj1nZXRFbmNvZGluZyhhKTtlLmJ1aWx0SW5FbmNvZGluZz1yO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHM9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heChzWzNdLHNbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihzWzFdLHNbM10pO2UuYXNjZW50U2NhbGVkPSEwfX19fWZ1bmN0aW9uIGZpbmRCbG9jayhlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aCxyPXQubGVuZ3RoLHM9YS1yO2xldCBuPWksbz0hMTtmb3IoO248czspe2xldCBpPTA7Zm9yKDtpPHImJmVbbitpXT09PXRbaV07KWkrKztpZihpPj1yKXtuKz1pO2Zvcig7bjxhJiZpc1doaXRlU3BhY2UoZVtuXSk7KW4rKztvPSEwO2JyZWFrfW4rK31yZXR1cm57Zm91bmQ6byxsZW5ndGg6bn19Y2xhc3MgVHlwZTFGb250e2NvbnN0cnVjdG9yKGUsdCxpKXtsZXQgYT1pLmxlbmd0aDEscj1pLmxlbmd0aDIscz10LnBlZWtCeXRlcyg2KTtjb25zdCBuPTEyOD09PXNbMF0mJjE9PT1zWzFdO2lmKG4pe3Quc2tpcCg2KTthPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBvPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3QgaT1bMTAxLDEwMSwxMjAsMTAxLDk5XSxhPWUucG9zO2xldCByLHMsbixvO3RyeXtyPWUuZ2V0Qnl0ZXModCk7cz1yLmxlbmd0aH1jYXRjaHt9aWYocz09PXQpe249ZmluZEJsb2NrKHIsaSx0LTIqaS5sZW5ndGgpO2lmKG4uZm91bmQmJm4ubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0ociksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9YTtmb3IoOzspe249ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLGksMCk7aWYoMD09PW4ubGVuZ3RoKWJyZWFrO2UucG9zKz1uLmxlbmd0aDtpZihuLmZvdW5kKXtvPWUucG9zLWE7YnJlYWt9fWUucG9zPWE7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KHQsYSk7bmV3IFR5cGUxUGFyc2VyKG8uc3RyZWFtLCExLEdpKS5leHRyYWN0Rm9udEhlYWRlcihpKTtpZihuKXtzPXQuZ2V0Qnl0ZXMoNik7cj1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3QgZz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3QgaT1lLmdldEJ5dGVzKCk7aWYoMD09PWkubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oaSksbGVuZ3RoOmkubGVuZ3RofX0odCksYz1uZXcgVHlwZTFQYXJzZXIoZy5zdHJlYW0sITAsR2kpLmV4dHJhY3RGb250UHJvZ3JhbShpKTtmb3IoY29uc3QgZSBpbiBjLnByb3BlcnRpZXMpaVtlXT1jLnByb3BlcnRpZXNbZV07Y29uc3QgbD1jLmNoYXJzdHJpbmdzLGg9dGhpcy5nZXRUeXBlMkNoYXJzdHJpbmdzKGwpLEM9dGhpcy5nZXRUeXBlMlN1YnJzKGMuc3VicnMpO3RoaXMuY2hhcnN0cmluZ3M9bDt0aGlzLmRhdGE9dGhpcy53cmFwKGUsaCx0aGlzLmNoYXJzdHJpbmdzLEMsaSk7dGhpcy5zZWFjcz10aGlzLmdldFNlYWNzKGMuY2hhcnN0cmluZ3MpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGgrMX1nZXRDaGFyc2V0KCl7Y29uc3QgZT1bIi5ub3RkZWYiXTtmb3IoY29uc3R7Z2x5cGhOYW1lOnR9b2YgdGhpcy5jaGFyc3RyaW5ncyllLnB1c2godCk7cmV0dXJuIGV9Z2V0R2x5cGhNYXBwaW5nKGUpe2NvbnN0IHQ9dGhpcy5jaGFyc3RyaW5ncztpZihlLmNvbXBvc2l0ZSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyl7aVtlLmNNYXAuY2hhckNvZGVPZihhKV09YSsxfXJldHVybiBpfWNvbnN0IGk9WyIubm90ZGVmIl07bGV0IGEscjtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKWkucHVzaCh0W3JdLmdseXBoTmFtZSk7Y29uc3Qgcz1lLmJ1aWx0SW5FbmNvZGluZztpZihzKXthPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gcyl7cj1pLmluZGV4T2Yoc1tlXSk7cj49MCYmKGFbZV09cil9fXJldHVybiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSxhLGkpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTthLnNlYWMmJih0W2krMV09YS5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl0LnB1c2goaS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgaT1lLmxlbmd0aDt0PWk8MTEzMz8xMDc6aTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPHQ7cisrKWEucHVzaChbMTFdKTtmb3Iocj0wO3I8aTtyKyspYS5wdXNoKGVbcl0pO3JldHVybiBhfXdyYXAoZSx0LGksYSxyKXtjb25zdCBzPW5ldyBDRkY7cy5oZWFkZXI9bmV3IENGRkhlYWRlcigxLDAsNCw0KTtzLm5hbWVzPVtlXTtjb25zdCBuPW5ldyBDRkZUb3BEaWN0O24uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO24uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7bi5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO24uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO24uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7bi5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtuLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsci5mb250TWF0cml4KTtuLnNldEJ5TmFtZSgiRm9udEJCb3giLHIuYmJveCk7bi5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO24uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7bi5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1uO2NvbnN0IG89bmV3IENGRlN0cmluZ3M7by5hZGQoIlZlcnNpb24gMC4xMSIpO28uYWRkKCJTZWUgb3JpZ2luYWwgbm90aWNlIik7by5hZGQoZSk7by5hZGQoZSk7by5hZGQoIk1lZGl1bSIpO3Muc3RyaW5ncz1vO3MuZ2xvYmFsU3VickluZGV4PW5ldyBDRkZJbmRleDtjb25zdCBnPXQubGVuZ3RoLGM9WyIubm90ZGVmIl07bGV0IGwsaDtmb3IobD0wO2w8ZztsKyspe2NvbnN0IGU9aVtsXS5nbHlwaE5hbWU7LTE9PT1kaS5pbmRleE9mKGUpJiZvLmFkZChlKTtjLnB1c2goZSl9cy5jaGFyc2V0PW5ldyBDRkZDaGFyc2V0KCExLDAsYyk7Y29uc3QgQz1uZXcgQ0ZGSW5kZXg7Qy5hZGQoWzEzOSwxNF0pO2ZvcihsPTA7bDxnO2wrKylDLmFkZCh0W2xdKTtzLmNoYXJTdHJpbmdzPUM7Y29uc3QgUT1uZXcgQ0ZGUHJpdmF0ZURpY3Q7US5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCBFPVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGw9MCxoPUUubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9RVtsXTtpZighKGUgaW4gci5wcml2YXRlRGF0YSkpY29udGludWU7Y29uc3QgdD1yLnByaXZhdGVEYXRhW2VdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPXQubGVuZ3RoLTE7ZT4wO2UtLSl0W2VdLT10W2UtMV07US5zZXRCeU5hbWUoZSx0KX1zLnRvcERpY3QucHJpdmF0ZURpY3Q9UTtjb25zdCB1PW5ldyBDRkZJbmRleDtmb3IobD0wLGg9YS5sZW5ndGg7bDxoO2wrKyl1LmFkZChhW2xdKTtRLnN1YnJzSW5kZXg9dTtyZXR1cm4gbmV3IENGRkNvbXBpbGVyKHMpLmNvbXBpbGUoKX19Y29uc3Qgb2E9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLGdhPTFlMyxJYT1bImFzY2VudCIsImJib3giLCJibGFjayIsImJvbGQiLCJjaGFyUHJvY09wZXJhdG9yTGlzdCIsImNvbXBvc2l0ZSIsImNzc0ZvbnRJbmZvIiwiZGF0YSIsImRlZmF1bHRWTWV0cmljcyIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiLCJmYWxsYmFja05hbWUiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwic3lzdGVtRm9udEluZm8iLCJ0eXBlIiwidmVydGljYWwiXSxjYT1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09clswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxpPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGkpaVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBpIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKGkpfHwodFtpXT1lLmZhbGxiYWNrVG9Vbmljb2RlW2ldKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsaSxhLHIscyxuLG8sZyl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1pO3RoaXMuYWNjZW50PWE7dGhpcy53aWR0aD1yO3RoaXMudm1ldHJpYz1zO3RoaXMub3BlcmF0b3JMaXN0SWQ9bjt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWd9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PU5pLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IGk9ZS5tYXRjaChSaSksYT17aXNXaGl0ZXNwYWNlOiEhaT8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhaT8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIWk/LlszXX07Tmkuc2V0KGUsYSk7cmV0dXJuIGF9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGkpe2VbdCsxXT1pO2VbdF09aT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBpPShlPDw4KSt0O3JldHVybiAzMjc2OCZpP2ktNjU1MzY6aX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe3JldHVybiJ0dGNmIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfWZ1bmN0aW9uIGdldEZvbnRGaWxlVHlwZShlLHt0eXBlOnQsc3VidHlwZTppLGNvbXBvc2l0ZTphfSl7bGV0IHIscztpZihmdW5jdGlvbiBpc1RydWVUeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PXJlYWRVaW50MzIodCwwKXx8InRydWUiPT09Ynl0ZXNUb1N0cmluZyh0KX0oZSl8fGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKSlyPWE/IkNJREZvbnRUeXBlMiI6IlRydWVUeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzT3BlblR5cGVGaWxlKGUpe3JldHVybiJPVFRPIj09PWJ5dGVzVG9TdHJpbmcoZS5wZWVrQnl0ZXMoNCkpfShlKSlyPWE/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjtlbHNlIGlmKGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7cmV0dXJuIDM3PT09dFswXSYmMzM9PT10WzFdfHwxMjg9PT10WzBdJiYxPT09dFsxXX0oZSkpcj1hPyJDSURGb250VHlwZTAiOiJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7ZWxzZSBpZihmdW5jdGlvbiBpc0NGRkZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gdFswXT49MSYmdFszXT49MSYmdFszXTw9NH0oZSkpaWYoYSl7cj0iQ0lERm9udFR5cGUwIjtzPSJDSURGb250VHlwZTBDIn1lbHNle3I9Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtzPSJUeXBlMUMifWVsc2V7d2FybigiZ2V0Rm9udEZpbGVUeXBlOiBVbmFibGUgdG8gZGV0ZWN0IGNvcnJlY3QgZm9udCBmaWxlIFR5cGUvU3VidHlwZS4iKTtyPXQ7cz1pfXJldHVybltyLHNdfWZ1bmN0aW9uIGFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoZSx0KXtmb3IoY29uc3QgaSBpbiB0KWVbK2ldPXRbaV19ZnVuY3Rpb24gYnVpbGRUb0ZvbnRDaGFyKGUsdCxpKXtjb25zdCBhPVtdO2xldCByO2ZvcihsZXQgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7cj1nZXRVbmljb2RlRm9yR2x5cGgoZVtpXSx0KTstMSE9PXImJihhW2ldPXIpfWZvcihjb25zdCBlIGluIGkpe3I9Z2V0VW5pY29kZUZvckdseXBoKGlbZV0sdCk7LTEhPT1yJiYoYVsrZV09cil9cmV0dXJuIGF9ZnVuY3Rpb24gaXNNYWNOYW1lUmVjb3JkKGUpe3JldHVybiAxPT09ZS5wbGF0Zm9ybSYmMD09PWUuZW5jb2RpbmcmJjA9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGlzV2luTmFtZVJlY29yZChlKXtyZXR1cm4gMz09PWUucGxhdGZvcm0mJjE9PT1lLmVuY29kaW5nJiYxMDMzPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxpPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBhPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYSk7d2FybihhKTtyZXR1cm4gdH1mdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPW5ldyBNYXAsbj1bXSxvPW5ldyBTZXQ7bGV0IGc9MDtsZXQgYz1vYVtnXVswXSxsPW9hW2ddWzFdO2Zvcihjb25zdCBDIGluIGUpe2xldCBRPWVbQ107aWYoIXQoUSkpY29udGludWU7aWYoYz5sKXtnKys7aWYoZz49b2EubGVuZ3RoKXt3YXJuKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha31jPW9hW2ddWzBdO2w9b2FbZ11bMV19Y29uc3QgRT1jKys7MD09PVEmJihRPWkpO2xldCB1PWEuZ2V0KEMpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9dS5jb2RlUG9pbnRBdCgwKSk7aWYodSYmIShoPXUsb2FbMF1bMF08PWgmJmg8PW9hWzBdWzFdfHxvYVsxXVswXTw9aCYmaDw9b2FbMV1bMV0pJiYhby5oYXMoUSkpe3Muc2V0KHUsUSk7by5hZGQoUSl9cltFXT1RO25bQ109RX12YXIgaDtyZXR1cm57dG9Gb250Q2hhcjpuLGNoYXJDb2RlVG9HbHlwaElkOnIsdG9Vbmljb2RlRXh0cmFNYXA6cyxuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlOmN9fWZ1bmN0aW9uIGNyZWF0ZUNtYXBUYWJsZShlLHQsaSl7Y29uc3QgYT1mdW5jdGlvbiBnZXRSYW5nZXMoZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHQgaW4gZSllW3RdPj1pfHxhLnB1c2goe2ZvbnRDaGFyQ29kZTowfHQsZ2x5cGhJZDplW3RdfSk7aWYodClmb3IoY29uc3RbZSxyXW9mIHQpcj49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6ZSxnbHlwaElkOnJ9KTswPT09YS5sZW5ndGgmJmEucHVzaCh7Zm9udENoYXJDb2RlOjAsZ2x5cGhJZDowfSk7YS5zb3J0KChmdW5jdGlvbiBmb250R2V0UmFuZ2VzU29ydChlLHQpe3JldHVybiBlLmZvbnRDaGFyQ29kZS10LmZvbnRDaGFyQ29kZX0pKTtjb25zdCByPVtdLHM9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxzOyl7Y29uc3QgdD1hW2VdLmZvbnRDaGFyQ29kZSxpPVthW2VdLmdseXBoSWRdOysrZTtsZXQgbj10O2Zvcig7ZTxzJiZuKzE9PT1hW2VdLmZvbnRDaGFyQ29kZTspe2kucHVzaChhW2VdLmdseXBoSWQpOysrbjsrK2U7aWYoNjU1MzU9PT1uKWJyZWFrfXIucHVzaChbdCxuLGldKX1yZXR1cm4gcn0oZSx0LGkpLHI9YS5hdCgtMSlbMV0+NjU1MzU/MjoxO2xldCBzLG4sbyxnLGM9IlwwXDAiK3N0cmluZzE2KHIpKyJcMANcMAEiK3N0cmluZzMyKDQrOCpyKTtmb3Iocz1hLmxlbmd0aC0xO3M+PTAmJiEoYVtzXVswXTw9NjU1MzUpOy0tcyk7Y29uc3QgbD1zKzE7YVtzXVswXTw2NTUzNSYmNjU1MzU9PT1hW3NdWzFdJiYoYVtzXVsxXT02NTUzNCk7Y29uc3QgaD1hW3NdWzFdPDY1NTM1PzE6MCxDPWwraCxRPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKEMsMik7bGV0IEUsdSxkLGYscD0iIixtPSIiLHk9IiIsdz0iIixiPSIiLEQ9MDtmb3Iocz0wLG49bDtzPG47cysrKXtFPWFbc107dT1FWzBdO2Q9RVsxXTtwKz1zdHJpbmcxNih1KTttKz1zdHJpbmcxNihkKTtmPUVbMl07bGV0IGU9ITA7Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe3krPXN0cmluZzE2KGZbMF0tdSY2NTUzNSk7dys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKEMtcykrMipEO0QrPWQtdSsxO3krPXN0cmluZzE2KDApO3crPXN0cmluZzE2KGUpO2ZvcihvPTAsZz1mLmxlbmd0aDtvPGc7KytvKWIrPXN0cmluZzE2KGZbb10pfX1pZihoPjApe20rPSLDv8O/IjtwKz0iw7/DvyI7eSs9IlwwASI7dys9IlwwXDAifWNvbnN0IFM9IlwwXDAiK3N0cmluZzE2KDIqQykrc3RyaW5nMTYoUS5yYW5nZSkrc3RyaW5nMTYoUS5lbnRyeSkrc3RyaW5nMTYoUS5yYW5nZVNoaWZ0KSttKyJcMFwwIitwK3krdytiO2xldCBrPSIiLFI9IiI7aWYocj4xKXtjKz0iXDADXDBcbiIrc3RyaW5nMzIoNCs4KnIrNCtTLmxlbmd0aCk7az0iIjtmb3Iocz0wLG49YS5sZW5ndGg7czxuO3MrKyl7RT1hW3NdO3U9RVswXTtmPUVbMl07bGV0IGU9ZlswXTtmb3Iobz0xLGc9Zi5sZW5ndGg7bzxnOysrbylpZihmW29dIT09ZltvLTFdKzEpe2Q9RVswXStvLTE7ays9c3RyaW5nMzIodSkrc3RyaW5nMzIoZCkrc3RyaW5nMzIoZSk7dT1kKzE7ZT1mW29dfWsrPXN0cmluZzMyKHUpK3N0cmluZzMyKEVbMV0pK3N0cmluZzMyKGUpfVI9IlwwXGZcMFwwIitzdHJpbmczMihrLmxlbmd0aCsxNikrIlwwXDBcMFwwIitzdHJpbmczMihrLmxlbmd0aC8xMil9cmV0dXJuIGMrIlwwBCIrc3RyaW5nMTYoUy5sZW5ndGgrNCkrUytSK2t9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGkpe2l8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluOjAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgYT0wLHI9MCxzPTAsbj0wLG89bnVsbCxnPTAsYz0tMTtpZih0KXtmb3IobGV0IGUgaW4gdCl7ZXw9MDsobz5lfHwhbykmJihvPWUpO2c8ZSYmKGc9ZSk7Yz1nZXRVbmljb2RlUmFuZ2VGb3IoZSxjKTtpZihjPDMyKWF8PTE8PGM7ZWxzZSBpZihjPDY0KXJ8PTE8PGMtMzI7ZWxzZSBpZihjPDk2KXN8PTE8PGMtNjQ7ZWxzZXtpZighKGM8MTIzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO258PTE8PGMtOTZ9fWc+NjU1MzUmJihnPTY1NTM1KX1lbHNle289MDtnPTI1NX1jb25zdCBsPWUuYmJveHx8WzAsMCwwLDBdLGg9aS51bml0c1BlckVtfHwoZS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uZS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzKSxDPWUuYXNjZW50U2NhbGVkPzE6aC9nYSxRPWkuYXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuYXNjZW50fHxsWzNdKSk7bGV0IEU9aS5kZXNjZW50fHxNYXRoLnJvdW5kKEMqKGUuZGVzY2VudHx8bFsxXSkpO0U+MCYmZS5kZXNjZW50PjAmJmxbMV08MCYmKEU9LUUpO2NvbnN0IHU9aS55TWF4fHxRLGQ9LWkueU1pbnx8LUU7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrc3RyaW5nMzIoYSkrc3RyaW5nMzIocikrc3RyaW5nMzIocykrc3RyaW5nMzIobikrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoZ3x8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoUSkrc3RyaW5nMTYoRSkrIlwwZCIrc3RyaW5nMTYodSkrc3RyaW5nMTYoZCkrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KG98fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7cmV0dXJuIlwwA1wwXDAiK3N0cmluZzMyKE1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSkpKyJcMFwwXDBcMCIrc3RyaW5nMzIoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBpPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxhPVtdO2xldCByLHMsbixvLGc7Zm9yKHI9MCxzPWkubGVuZ3RoO3I8cztyKyspe2c9dFsxXVtyXXx8aVtyXTtjb25zdCBlPVtdO2ZvcihuPTAsbz1nLmxlbmd0aDtuPG87bisrKWUucHVzaChzdHJpbmcxNihnLmNoYXJDb2RlQXQobikpKTthLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgYz1baSxhXSxsPVsiXDABIiwiXDADIl0saD1bIlwwXDAiLCJcMAEiXSxDPVsiXDBcMCIsIgRcdCJdLFE9aS5sZW5ndGgqbC5sZW5ndGg7bGV0IEU9IlwwXDAiK3N0cmluZzE2KFEpK3N0cmluZzE2KDEyKlErNiksdT0wO2ZvcihyPTAscz1sLmxlbmd0aDtyPHM7cisrKXtjb25zdCBlPWNbcl07Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspe2c9ZVtuXTtFKz1sW3JdK2hbcl0rQ1tyXStzdHJpbmcxNihuKStzdHJpbmcxNihnLmxlbmd0aCkrc3RyaW5nMTYodSk7dSs9Zy5sZW5ndGh9fUUrPWkuam9pbigiIikrYS5qb2luKCIiKTtyZXR1cm4gRX1jbGFzcyBGb250e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLm5hbWU9ZTt0aGlzLnBzTmFtZT1udWxsO3RoaXMubWltZXR5cGU9bnVsbDt0aGlzLmRpc2FibGVGb250RmFjZT0hMTt0aGlzLmxvYWRlZE5hbWU9aS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9aS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89aS5jc3NGb250SW5mbzt0aGlzLl9jaGFyc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZ2x5cGhDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSEhKGkuZmxhZ3MmeGkpO2lmKCFhJiYhaS5pc1NpbXVsYXRlZEZsYWdzKXtjb25zdCB0PWUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikuc3BsaXQoIi0iLDEpWzBdLGk9T2koKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIrIikpaWYoaVtlXSl7YT0hMDticmVha319dGhpcy5pc1NlcmlmRm9udD1hO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoaS5mbGFncyZIaSk7dGhpcy5pc01vbm9zcGFjZT0hIShpLmZsYWdzJk1pKTtsZXR7dHlwZTpyLHN1YnR5cGU6c309aTt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLnN5c3RlbUZvbnRJbmZvPWkuc3lzdGVtRm9udEluZm87Y29uc3Qgbj1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW47dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9blsxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWkuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9aS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9aS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9aS5jb21wb3NpdGU7dGhpcy5jTWFwPWkuY01hcDt0aGlzLmNhcEhlaWdodD1pLmNhcEhlaWdodC9nYTt0aGlzLmFzY2VudD1pLmFzY2VudC9nYTt0aGlzLmRlc2NlbnQ9aS5kZXNjZW50L2dhO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLmJib3g9aS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWkuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09aS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGkuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWkuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFpLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9aS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1pLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGkpO3JldHVybn1bcixzXT1nZXRGb250RmlsZVR5cGUodCxpKTtyPT09dGhpcy50eXBlJiZzPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3J9LyR7c30uYCk7bGV0IG87dHJ5e3N3aXRjaChyKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1zfHwiQ0lERm9udFR5cGUwQyI9PT1zP25ldyBDRkZGb250KHQsaSk6bmV3IFR5cGUxRm9udChlLHQsaSk7YWRqdXN0V2lkdGhzKGkpO289dGhpcy5jb252ZXJ0KGUsYSxpKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxpKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhpKTtyPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtyfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShpKTt0aGlzLmRhdGE9bzt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9czt0aGlzLmZvbnRNYXRyaXg9aS5mb250TWF0cml4O3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1pLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxHaSkpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5JYSwuLi5jYV06SWEsaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhLHI7Zm9yKGEgb2YgdCl7cj10aGlzW2FdO3ZvaWQgMCE9PXImJihpW2FdPXIpfXJldHVybiBpfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6aX09dGhpcztsZXQgYT1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCByPUtpKCkscz1xaSgpLG49ISFyW2FdLG89ISghc1thXXx8IXJbc1thXV0pO2E9clthXXx8c1thXXx8YTtjb25zdCBnPVppKClbYV07aWYoZyl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9Zy5hc2NlbnQvZ2EpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Zy5kZXNjZW50L2dhKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1nLmNhcEhlaWdodC9nYSl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3QoYSk7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGM9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFufHxjKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChufHxvKSYmIkNJREZvbnRUeXBlMiI9PT1pJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBpPWUuY2lkVG9HaWRNYXAsYT1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsV2koKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLGppKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLFhpKCkpO2lmKGkpe2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTt2b2lkIDAhPT1pW3RdJiYoYVsrZV09aVt0XSl9aS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1hW2VdO3ZvaWQgMD09PWlbcl0mJihhWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2FbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoRWksRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcih1aSxGaSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYobnx8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsRGkoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PWl8fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZVsrdF09aX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9RGkoKSxpPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBpPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PWkmJihhPWkpfWlbK3RdPWF9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoaSxXaSgpKTt0aGlzLnRvRm9udENoYXI9aX1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpO3RoaXMubG9hZGVkTmFtZT1hLnNwbGl0KCItIiwxKVswXX1jaGVja0FuZFJlcGFpcihlLHQsaSl7Y29uc3QgYT1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpWyJPUy8yIl09bnVsbDtpLmNtYXA9bnVsbDtpLmhlYWQ9bnVsbDtpLmhoZWE9bnVsbDtpLmhtdHg9bnVsbDtpLm1heHA9bnVsbDtpLm5hbWU9bnVsbDtpLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO2EuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoaVt0LnRhZ109dCkpfXJldHVybiBpfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAscz1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChhKTtjb25zdCBuPWUuZ2V0Qnl0ZXMocik7ZS5wb3M9cztpZigiaGVhZCI9PT10KXtuWzhdPW5bOV09blsxMF09blsxMV09MDtuWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmksbGVuZ3RoOnIsb2Zmc2V0OmEsZGF0YTpufX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxpLGEscixzKXtjb25zdCBuPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8aT5lLmxlbmd0aHx8aS10PD0xMilyZXR1cm4gbjtjb25zdCBvPWUuc3ViYXJyYXkodCxpKSxnPXNpZ25lZEludDE2KG9bMl0sb1szXSksYz1zaWduZWRJbnQxNihvWzRdLG9bNV0pLGw9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYoZz5sKXt3cml0ZVNpZ25lZEludDE2KG8sMixsKTt3cml0ZVNpZ25lZEludDE2KG8sNixnKX1pZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGMpfWNvbnN0IEM9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZihDPDApe2lmKEM8LTEpcmV0dXJuIG47YS5zZXQobyxyKTtuLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gbn1sZXQgUSxFPTEwLHU9MDtmb3IoUT0wO1E8QztRKyspe3U9KG9bRV08PDh8b1tFKzFdKSsxO0UrPTJ9Y29uc3QgZD1FLGY9b1tFXTw8OHxvW0UrMV07bi5zaXplT2ZJbnN0cnVjdGlvbnM9ZjtFKz0yK2Y7Y29uc3QgcD1FO2xldCBtPTA7Zm9yKFE9MDtRPHU7USsrKXtjb25zdCBlPW9bRSsrXTsxOTImZSYmKG9bRS0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IGk9Mjs0JmU/aT0xOjMyJmUmJihpPTApO2NvbnN0IGE9dCtpO20rPWE7aWYoOCZlKXtjb25zdCBlPW9bRSsrXTswPT09ZSYmKG9bRS0xXV49OCk7USs9ZTttKz1lKmF9fWlmKDA9PT1tKXJldHVybiBuO2xldCB5PUUrbTtpZih5Pm8ubGVuZ3RoKXJldHVybiBuO2lmKCFzJiZmPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxkKSxyKTthLnNldChbMCwwXSxyK2QpO2Euc2V0KG8uc3ViYXJyYXkocCx5KSxyK2QrMik7eS09ZjtvLmxlbmd0aC15PjMmJih5PXkrMyYtNCk7bi5sZW5ndGg9eTtyZXR1cm4gbn1pZihvLmxlbmd0aC15PjMpe3k9eSszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCx5KSxyKTtuLmxlbmd0aD15O3JldHVybiBufWEuc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBpPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1pO2NvbnN0IGE9W1tdLFtdXSxyPVtdLHM9ZS5sZW5ndGgsbj1pK3M7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHM8NilyZXR1cm5bYSxyXTtjb25zdCBvPXQuZ2V0VWludDE2KCksZz10LmdldFVpbnQxNigpO2xldCBjLGw7Zm9yKGM9MDtjPG8mJnQucG9zKzEyPD1uO2MrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZyLnB1c2goZSl9Zm9yKGM9MCxsPXIubGVuZ3RoO2M8bDtjKyspe2NvbnN0IGU9cltjXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBzPWkrZytlLm9mZnNldDtpZihzK2UubGVuZ3RoPm4pY29udGludWU7dC5wb3M9cztjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgaT0iIjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1pfWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Escl19Y29uc3Qgcj1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGksYSxzLG4sbyxnPWUuZGF0YSxjPTAsbD0wLGg9MDtjb25zdCBDPVtdLFE9W10sRT1bXTtsZXQgdT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxkPSExLGY9MCxwPTA7Zm9yKGxldCBlPWcubGVuZ3RoO2M8ZTspe2NvbnN0IGU9Z1tjKytdO2lmKDY0PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKUMucHVzaChnW2MrK10pfWVsc2UgaWYoNjU9PT1lKXthPWdbYysrXTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHM8PDh8Z1tjKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe2E9ZS0xNzYrMTtpZihkfHxwKWMrPWE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspQy5wdXNoKGdbYysrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe2E9ZS0xODQrMTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cz1nW2MrK107Qy5wdXNoKHNpZ25lZEludDE2KHMsZ1tjKytdKSl9fWVsc2UgaWYoNDMhPT1lfHx1KWlmKDQ0IT09ZXx8dSl7aWYoNDU9PT1lKWlmKGQpe2Q9ITE7bD1jfWVsc2V7bz1RLnBvcCgpO2lmKCFvKXt3YXJuKCJUVDogRU5ERiBiYWQgc3RhY2siKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufW49RS5wb3AoKTtnPW8uZGF0YTtjPW8uaTt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dPUMubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9Y31lbHNlIGlmKDg4PT09ZSkrK2Y7ZWxzZSBpZigyNz09PWUpcD1mO2Vsc2UgaWYoODk9PT1lKXtwPT09ZiYmKHA9MCk7LS1mfWVsc2UgaWYoMjg9PT1lJiYhZCYmIXApe2NvbnN0IGU9Qy5hdCgtMSk7ZT4wJiYoYys9ZS0xKX19ZWxzZXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2g9YztuPUMucG9wKCk7dC5mdW5jdGlvbnNEZWZpbmVkW25dPXtkYXRhOmcsaTpjfX1lbHNlIGlmKCFkJiYhcCl7bj1DLmF0KC0xKTtpZihpc05hTihuKSlpbmZvKCJUVDogQ0FMTCBlbXB0eSBzdGFjayAob3IgaW52YWxpZCBlbnRyeSkuIik7ZWxzZXt0LmZ1bmN0aW9uc1VzZWRbbl09ITA7aWYobiBpbiB0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKXtjb25zdCBlPUMubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl07aWYoZTwwKXt3YXJuKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufUMubGVuZ3RoPWV9ZWxzZSBpZihuIGluIHQuZnVuY3Rpb25zRGVmaW5lZCYmIUUuaW5jbHVkZXMobikpe1EucHVzaCh7ZGF0YTpnLGk6YyxzdGFja1RvcDpDLmxlbmd0aC0xfSk7RS5wdXNoKG4pO289dC5mdW5jdGlvbnNEZWZpbmVkW25dO2lmKCFvKXt3YXJuKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWc9by5kYXRhO2M9by5pfX19aWYoIWQmJiFwKXtsZXQgdD0wO2U8PTE0Mj90PXJbZV06ZT49MTkyJiZlPD0yMjM/dD0tMTplPj0yMjQmJih0PS0yKTtpZihlPj0xMTMmJmU8PTExNyl7YT1DLnBvcCgpO2lzTmFOKGEpfHwodD0yKi1hKX1mb3IoO3Q8MCYmQy5sZW5ndGg+MDspe0MucG9wKCk7dCsrfWZvcig7dD4wOyl7Qy5wdXNoKE5hTik7dC0tfX19dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM9dTtjb25zdCBtPVtnXTtjPmcubGVuZ3RoJiZtLnB1c2gobmV3IFVpbnQ4QXJyYXkoYy1nLmxlbmd0aCkpO2lmKGg+bCl7d2FybigiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKTttLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpfSFmdW5jdGlvbiBmb2xkVFRUYWJsZShlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCBpLGEscj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXIrPXRbaV0ubGVuZ3RoO3I9ciszJi00O2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG49MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7cy5zZXQodFtpXSxuKTtuKz10W2ldLmxlbmd0aH1lLmRhdGE9cztlLmxlbmd0aD1yfX0oZSxtKX1sZXQgcyxuLG8sZztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmksb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGk9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbj17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmksbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBuO2Nhc2UgMjpuLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gbn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7aX0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbj0wO248aTtuKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW25dO2NvbnN0IGk9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGkubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtnXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAsYT1nLmxlbmd0aDtlPGE7ZSsrKWZvcihsZXQgYT0wLG49Z1tlXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1nW2VdW2FdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmksdGFibGVzOm99O2lmKCEoci5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgciluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6aSx0YWJsZXM6b30pfX19aWYocyl7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3M9ZS5oZWFkZXI7bj1lLnRhYmxlc31lbHNle3M9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO249cmVhZFRhYmxlcyh0LHMubnVtVGFibGVzKX1jb25zdCBjPSFuWyJDRkYgIl07aWYoYyl7aWYoIW4ubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighbi5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO24uZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtjb25zdCB0PWkuY29tcG9zaXRlJiYoaS5jaWRUb0dpZE1hcD8ubGVuZ3RoPjB8fCEoaS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09cy52ZXJzaW9uJiYhdHx8IW4uaGVhZHx8IW4uaGhlYXx8IW4ubWF4cHx8IW4ucG9zdCl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZGb250KGcsaSk7YWRqdXN0V2lkdGhzKGkpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGkpfWRlbGV0ZSBuLmdseWY7ZGVsZXRlIG4ubG9jYTtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIW4ubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrbi5tYXhwLm9mZnNldDtsZXQgbD10LmdldEludDMyKCk7Y29uc3QgaD10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09bCYmMjA0ODAhPT1sKXtpZig2PT09bi5tYXhwLmxlbmd0aClsPTIwNDgwO2Vsc2V7aWYoIShuLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtsPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsaSl7ZVt0KzNdPTI1NSZpO2VbdCsyXT1pPj4+ODtlW3QrMV09aT4+PjE2O2VbdF09aT4+PjI0fShuLm1heHAuZGF0YSwwLGwpfWlmKGkuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1oJiZjKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09aSx0PWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLGE9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOm4uZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOm4ubG9jYS5kYXRhLG51bUdseXBoczpofSk7YS5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTpzLGlzTG9jYXRpb25Mb25nOm99PWEud3JpdGUoKTtuLmdseWYuZGF0YT1yO24ubG9jYS5kYXRhPXM7aWYobyE9PSEhdCl7bi5oZWFkLmRhdGFbNTBdPTA7bi5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGc9bi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgaT00KnQsYT1NYXRoLnJvdW5kKGVbdF0qaW50MTYoZ1tpXSxnW2krMV0pKTtnW2ldPWE+PjgmMjU1O2dbaSsxXT0yNTUmYTt3cml0ZVNpZ25lZEludDE2KGcsaSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihnW2krMl0sZ1tpKzNdKSkpfX1sZXQgQz1oKzEsUT0hMDtpZihDPjY1NTM1KXtRPSExO0M9aDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRT0wLHU9MDtpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7bi5tYXhwLmRhdGFbMTRdPTA7bi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7RT10LmdldFVpbnQxNigpO3QucG9zKz00O3U9dC5nZXRVaW50MTYoKX1uLm1heHAuZGF0YVs0XT1DPj44O24ubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IGQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxpLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGk9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7aTxhO2krKyl7aWYoaT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtpXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtpXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYoaSYmMSZpLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsxKTtlLnNldChpLmRhdGEpO2kuZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KG4uZnBnbSxuLnByZXAsblsiY3Z0ICJdLEUpO2lmKCFkKXtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxpLGEscixzKXtpZighdCl7aSYmKGkuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG49ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1uKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgZz1yLW8tKGkubGVuZ3RoLTQqbz4+MSk7aWYoZz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzIqZyk7ZS5zZXQoaS5kYXRhKTtpZihzKXtlW2kubGVuZ3RoXT1pLmRhdGFbMl07ZVtpLmxlbmd0aCsxXT1pLmRhdGFbM119aS5kYXRhPWV9fSh0LG4uaGhlYSxuLmhtdHgsbi5oZWFkLEMsUSk7aWYoIW4uaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxpKXtjb25zdCBhPWUuZGF0YSxyPWZ1bmN0aW9uIGludDMyKGUsdCxpLGEpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoaTw8OCkrYX0oYVswXSxhWzFdLGFbMl0sYVszXSk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO2FbMF09MDthWzFdPTE7YVsyXT0wO2FbM109MH1jb25zdCBzPWludDE2KGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYoaT09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKGkhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2FbNTBdPTA7YVs1MV09MX19fShuLmhlYWQsaCxjP24ubG9jYS5sZW5ndGg6MCk7bGV0IGY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihjKXtjb25zdCBlPWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsaSxhLHIscyxuKXtsZXQgbyxnLGM7aWYoYSl7bz00O2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGkpe2VbdF09aT4+PjI0JjI1NTtlW3QrMV09aT4+MTYmMjU1O2VbdCsyXT1pPj44JjI1NTtlW3QrM109MjU1Jml9fWVsc2V7bz0yO2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGkpe2VbdF09aT4+OSYyNTU7ZVt0KzFdPWk+PjEmMjU1fX1jb25zdCBsPXM/aSsxOmksaD1vKigxK2wpLEM9bmV3IFVpbnQ4QXJyYXkoaCk7Qy5zZXQoZS5kYXRhLnN1YmFycmF5KDAsaCkpO2UuZGF0YT1DO2NvbnN0IFE9dC5kYXRhLEU9US5sZW5ndGgsdT1uZXcgVWludDhBcnJheShFKTtsZXQgZCxmO2NvbnN0IHA9W107Zm9yKGQ9MCxmPTA7ZDxpKzE7ZCsrLGYrPW8pe2xldCBlPWcoQyxmKTtlPkUmJihlPUUpO3AucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXAuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKGQ9MDtkPGk7ZCsrKXBbZF0uZW5kT2Zmc2V0PXBbZCsxXS5vZmZzZXQ7cC5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKGQ9MDtkPGk7ZCsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09cFtkXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgaT1wW2QrMV0ub2Zmc2V0O2lmKDAhPT1pKXtwW2RdLmVuZE9mZnNldD1pO2JyZWFrfX1jb25zdCBtPXAuYXQoLTIpOzAhPT1tLm9mZnNldCYmMD09PW0uZW5kT2Zmc2V0JiYobS5lbmRPZmZzZXQ9RSk7Y29uc3QgeT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB3PTA7YyhDLDAsdyk7Zm9yKGQ9MCxmPW87ZDxpO2QrKyxmKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoUSxwW2RdLm9mZnNldCxwW2RdLmVuZE9mZnNldCx1LHcsciksdD1lLmxlbmd0aDswPT09dCYmKHlbZF09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPm4mJihuPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt3Kz10O2MoQyxmLHcpfWlmKDA9PT13KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAsZj1vO2Q8bDtkKyssZis9byljKEMsZixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihzKXtjb25zdCBpPWcoQyxvKTtpZih1Lmxlbmd0aD5pK3cpdC5kYXRhPXUuc3ViYXJyYXkoMCxpK3cpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGkrdyk7dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsdykpfXQuZGF0YS5zZXQodS5zdWJhcnJheSgwLGkpLHcpO2MoZS5kYXRhLEMubGVuZ3RoLW8sdytpKX1lbHNlIHQuZGF0YT11LnN1YmFycmF5KDAsdyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6bn19KG4ubG9jYSxuLmdseWYsaCxlLGQsUSx1KTtmPXQubWlzc2luZ0dseXBocztpZihsPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe24ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtuLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighbi5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1uLmhoZWEuZGF0YVsxMF0mJjA9PT1uLmhoZWEuZGF0YVsxMV0pe24uaGhlYS5kYXRhWzEwXT0yNTU7bi5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBwPXt1bml0c1BlckVtOmludDE2KG4uaGVhZC5kYXRhWzE4XSxuLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbNDJdLG4uaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVszOF0sbi5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNF0sbi5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNl0sbi5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbOF0sbi5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1wLmFzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXAuZGVzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXAubGluZUdhcC9wLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO24ucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGksYSl7Y29uc3Qgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjtjb25zdCBzPXIrZS5sZW5ndGgsbj10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxnLGM9ITA7c3dpdGNoKG4pe2Nhc2UgNjU1MzY6bz12aTticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PWEpe2M9ITE7YnJlYWt9Y29uc3Qgcj1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Yz0hMTticmVha31yLnB1c2goZSl9aWYoIWMpYnJlYWs7Y29uc3QgbD1bXSxoPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCk7aC5sZW5ndGg9ZTtmb3IoZz0wO2c8ZTsrK2cpaFtnXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtsLnB1c2goaC5qb2luKCIiKSl9bz1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9cltnXTtlPDI1OD9vLnB1c2godmlbZV0pOm8ucHVzaChsW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK24pO2M9ITE7aS5kZWZhdWx0RW5jb2RpbmcmJihvPWkuZGVmYXVsdEVuY29kaW5nKX1pLmdseXBoTmFtZXM9bztyZXR1cm4gY30obi5wb3N0LGksaCk7bi5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGkpfTtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHI9LTE7dD9yPWE6dm9pZCAwIT09ZVthXSYmKHI9ZVthXSk7cj49MCYmcjxoJiZoYXNHbHlwaChyKSYmKG1baV09cil9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcixzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPXQuZ2V0VWludDE2KCkscz10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgbD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09cnx8bz8uZW5jb2RpbmdJZCE9PXMpe2lmKDAhPT1yfHwwIT09cyYmMSE9PXMmJjMhPT1zKWlmKDE9PT1yJiYwPT09cylsPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1zfHwhYSYmbyl7aWYoaSYmMz09PXImJjA9PT1zKXtsPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtsPSEwO2l8fChnPSEwKX1lbHNlIGw9ITA7bCYmKG89e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOnMsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9cytvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IGw9ITE7Y29uc3QgaD1bXTtsZXQgQyxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKEM9MDtDPDI1NjtDKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmaC5wdXNoKHtjaGFyQ29kZTpDLGdseXBoSWQ6ZX0pfWw9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCByPWFbZVtpXV07Zm9yKEM9MDtDPHIuZW50cnlDb3VudDtDKyspe2NvbnN0IGU9KGk8PDgpK0Mrci5maXJzdENvZGU7dC5wb3M9ci5pZFJhbmdlUG9zKzIqQztRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3IuaWREZWx0YSklNjU1MzYpO2gucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtYSk7ci5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3IuZW5kLXIuc3RhcnQrMSl9ZWxzZSByLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKEM9MDtDPG87QysrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtzPXIuc3RhcnQ7Y29uc3QgZT1yLmVuZCx0PXIuZGVsdGE7bj1yLm9mZnNldEluZGV4O2ZvcihDPXM7Qzw9ZTtDKyspaWYoNjU1MzUhPT1DKXtRPW48MD9DOmdbbitDLXNdO1E9USt0JjY1NTM1O2gucHVzaCh7Y2hhckNvZGU6QyxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihDPTA7QzxpO0MrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStDO2gucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihDPTA7QzxlO0MrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWgucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19aC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxoLmxlbmd0aDtlKyspaWYoaFtlLTFdLmNoYXJDb2RlPT09aFtlXS5jaGFyQ29kZSl7aC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmgsaGFzU2hvcnRDbWFwOmx9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT1EaSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOkJpW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cj9jPWVbZ106MT09PWEmJjA9PT1yJiYoYz1DaS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcyltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PUMtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLEMpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksR2kpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1RaSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPVFpLHI9W10scz1EaSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1zW3RdO3ZvaWQgMCE9PWkmJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGkpe2kuZml4ZWRQaXRjaD0hMTtpLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT1EaSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYoaVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oaSxpLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGE9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKGE9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcz10LmdldEdseXBoTWFwcGluZyhpKTtsZXQgbj1udWxsLG89cyxnPW51bGw7aWYoIWkuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhzLHQuaGFzR2x5cGhJZC5iaW5kKHQpLGEsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBsPXQuc2VhY3M7aWYobiYmbD8ubGVuZ3RoKXtjb25zdCBlPWkuZm9udE1hdHJpeHx8cixhPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gbCl7dHw9MDtjb25zdCBpPWxbdF0scj1CaVtpWzJdXSxnPUJpW2lbM11dLGM9YS5pbmRleE9mKHIpLGg9YS5pbmRleE9mKGcpO2lmKGM8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IEM9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhzLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpDfX19aS5zZWFjTWFwPW99Y29uc3QgaD1pLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5pLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsQz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO0MuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7Qy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoaSxvKSk7Qy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sZyxjKSk7Qy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNihoKSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihpLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc3RyaW5nMTYoaS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTtDLmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGkuYXNjZW50KStzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihpLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGkuaXRhbGljQW5nbGUpKmkueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYoYykpO0MuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGk9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IGE9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxyPWM7dDxyO3QrKyl7bGV0IHI9MDtpZihlKXtjb25zdCBpPWVbdC0xXTtyPSJ3aWR0aCJpbiBpP2kud2lkdGg6MH1lbHNlIGkmJihyPU1hdGguY2VpbChpW3RdfHwwKSk7YSs9c3RyaW5nMTYocikrc3RyaW5nMTYoMCl9cmV0dXJuIGF9KCkpO0MuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihjKSk7Qy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTtDLmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoaSkpO3JldHVybiBDLnRvQXJyYXkoKX1nZXQgX3NwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoaSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1tpXTticmVha31jb25zdCBlPURpKClbaV07bGV0IGE9MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXthPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGUsYSkpfSFhJiZ0aGlzLnRvVW5pY29kZSYmKGE9dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7YTw9MCYmKGE9ZSk7dD10aGlzLndpZHRoc1thXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywiX3NwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgaSxhLHIscz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKHM/LmlzU3BhY2U9PT10KXJldHVybiBzO2xldCBuPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7bj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49Y29udmVydENpZFN0cmluZyhlLG4pKX1hPXRoaXMud2lkdGhzW25dOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW25dO2xldCBnPXRoaXMudG9Vbmljb2RlLmdldChlKXx8ZTsibnVtYmVyIj09dHlwZW9mIGcmJihnPVN0cmluZy5mcm9tQ2hhckNvZGUoZykpO2xldCBjPXZvaWQgMCE9PXRoaXMudG9Gb250Q2hhcltlXTtpPXRoaXMudG9Gb250Q2hhcltlXXx8ZTtpZih0aGlzLm1pc3NpbmdGaWxlKXtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fHRoaXMuZGVmYXVsdEVuY29kaW5nW2VdO2lmKCgiLm5vdGRlZiI9PT10fHwiIj09PXQpJiYiVHlwZTEiPT09dGhpcy50eXBlKXtpPTMyO2lmKCIiPT09dCl7YXx8PXRoaXMuX3NwYWNlV2lkdGg7Zz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfX1pPWZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/U2koKVtlXXx8ZToxNzM9PT1lPzQ1OmV9KGkpfXRoaXMuaXNUeXBlM0ZvbnQmJihyPWkpO2xldCBsPW51bGw7aWYodGhpcy5zZWFjTWFwPy5bZV0pe2M9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07aT10LmJhc2VGb250Q2hhckNvZGU7bD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGg9IiI7Im51bWJlciI9PXR5cGVvZiBpJiYoaTw9MTExNDExMT9oPVN0cmluZy5mcm9tQ29kZVBvaW50KGkpOndhcm4oYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7aX1gKSk7aWYodGhpcy5taXNzaW5nRmlsZSYmdGhpcy52ZXJ0aWNhbCYmMT09PWgubGVuZ3RoKXtjb25zdCBlPVlpKClbaC5jaGFyQ29kZUF0KDApXTtlJiYoaD1nPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfXM9bmV3IGZvbnRzX0dseXBoKGUsaCxnLGwsYSxvLHIsdCxjKTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1zfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxhOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHIsaSk7Y29uc3R7Y2hhcmNvZGU6YSxsZW5ndGg6c309aTtyKz1zO2NvbnN0IG49dGhpcy5fY2hhclRvR2x5cGgoYSwxPT09cyYmMzI9PT1lLmNoYXJDb2RlQXQoci0xKSk7dC5wdXNoKG4pfX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSkscj10aGlzLl9jaGFyVG9HbHlwaChhLDMyPT09YSk7dC5wdXNoKHIpfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPTA7Zm9yKDthPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLGEsaSk7Y29uc3Qgcj1pLmxlbmd0aDt0LnB1c2goW2EsYStyXSk7YSs9cn19ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpdC5wdXNoKFtpLGkrMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10saT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KHIpO3M+NTUyOTUmJihzPDU3MzQ0fHxzPjY1NTMzKSYmcisrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPWEocyk7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9aS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KHMpKX10LnB1c2goaS5qb2luKCIiKSk7cmV0dXJuIHR9fWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YShlPSExKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IGxhPTIsaGE9MyxDYT00LEJhPTUsUWE9NixFYT03O2NsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxpLGEscil7Y29uc3Qgcz1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxuPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobil7Y2FzZSBsYTpjYXNlIGhhOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHMsdCxpLGEscik7Y2FzZSBDYTpjYXNlIEJhOmNhc2UgUWE6Y2FzZSBFYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxpLGEscik7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK24pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2dldElSKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0SVJgIGNhbGxlZC4iKX19Y2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09bGE/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1oYSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBvPTAsZz0xO2NvbnN0IGM9ZS5nZXRBcnJheSgiRG9tYWluIik7aXNOdW1iZXJBcnJheShjLDIpJiYoW28sZ109Yyk7bGV0IGw9ITEsaD0hMTtjb25zdCBDPWUuZ2V0QXJyYXkoIkV4dGVuZCIpOyhmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoKGU9PiJib29sZWFuIj09dHlwZW9mIGUpKX0pKEMsMikmJihbbCxoXT1DKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1oYXx8bCYmaCkpe2NvbnN0W2UsdCxpLGEscixzXT10aGlzLmNvb3Jkc0FycixuPU1hdGguaHlwb3QoZS1hLHQtcik7aTw9cytuJiZzPD1pK24mJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PWw7dGhpcy5leHRlbmRFbmQ9aDtjb25zdCBRPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLEU9YS5jcmVhdGVGcm9tQXJyYXkoUSksdT0oZy1vKS84NDAsZD10aGlzLmNvbG9yU3RvcHM9W107aWYobz49Z3x8dTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCBmPW5ldyBGbG9hdDMyQXJyYXkobi5udW1Db21wcykscD1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCBtLHk9MDtwWzBdPW87RShwLDAsZiwwKTtsZXQgdz1uLmdldFJnYihmLDApO2NvbnN0IGI9VXRpbC5tYWtlSGV4Q29sb3Iod1swXSx3WzFdLHdbMl0pO2QucHVzaChbMCxiXSk7bGV0IEQ9MTtwWzBdPW8rdTtFKHAsMCxmLDApO2xldCBTPW4uZ2V0UmdiKGYsMCksaz1TWzBdLXdbMF0rMSxSPVNbMV0td1sxXSsxLE49U1syXS13WzJdKzEsRz1TWzBdLXdbMF0tMSxNPVNbMV0td1sxXS0xLFU9U1syXS13WzJdLTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXtwWzBdPW8rZSp1O0UocCwwLGYsMCk7bT1uLmdldFJnYihmLDApO2NvbnN0IHQ9ZS15O2s9TWF0aC5taW4oaywobVswXS13WzBdKzEpL3QpO1I9TWF0aC5taW4oUiwobVsxXS13WzFdKzEpL3QpO049TWF0aC5taW4oTiwobVsyXS13WzJdKzEpL3QpO0c9TWF0aC5tYXgoRywobVswXS13WzBdLTEpL3QpO009TWF0aC5tYXgoTSwobVsxXS13WzFdLTEpL3QpO1U9TWF0aC5tYXgoVSwobVsyXS13WzJdLTEpL3QpO2lmKCEoRzw9ayYmTTw9UiYmVTw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoU1swXSxTWzFdLFNbMl0pO2QucHVzaChbRC84NDAsZV0pO2s9bVswXS1TWzBdKzE7Uj1tWzFdLVNbMV0rMTtOPW1bMl0tU1syXSsxO0c9bVswXS1TWzBdLTE7TT1tWzFdLVNbMV0tMTtVPW1bMl0tU1syXS0xO3k9RDt3PVN9RD1lO1M9bX1jb25zdCB4PVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goWzEseF0pO2xldCBMPSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7bT1uLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO0w9VXRpbC5tYWtlSGV4Q29sb3IobVswXSxtWzFdLG1bMl0pfWlmKCFsKXtkLnVuc2hpZnQoWzAsTF0pO2RbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighaCl7ZC5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjtkLnB1c2goWzEsTF0pfXRoaXMuY29sb3JTdG9wcz1kfWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgaSxhLHIscyxuO2lmKHQ9PT1sYSl7YT1bZVswXSxlWzFdXTtyPVtlWzJdLGVbM11dO3M9bnVsbDtuPW51bGw7aT0iYXhpYWwifWVsc2UgaWYodD09PWhhKXthPVtlWzBdLGVbMV1dO3I9W2VbM10sZVs0XV07cz1lWzJdO249ZVs1XTtpPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsaSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscixzLG5dfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgaT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShpKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1pKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGkpLTE7cmV0dXJuKHQ8PDgtaXwoMjU1JmUpPj5pKT4+PjB9aWYoOD09PWUmJjA9PT1pKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtpPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2krPTh9aS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuYnVmZmVyPXQmKDE8PGkpLTE7cmV0dXJuIHQ+Pml9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGk9dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMuY29udGV4dC5kZWNvZGUscj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KnIqKGFbMV0tYVswXSkrYVswXSxpKnIqKGFbM10tYVsyXSkrYVsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGk9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxhPXRoaXMuY29udGV4dC5kZWNvZGUscj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgcz0wLG49NDtzPGU7cysrLG4rPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtyW3NdPWUqaSooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgcz10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKHIsMCxzLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IocywwKX19bGV0IHVhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4gdWFbZV18fD1mdW5jdGlvbiBidWlsZEIoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MDtpPD1lO2krKyl7Y29uc3QgYT1pL2Uscj0xLWE7dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3IqKjMsMyphKnIqKjIsMyphKioyKnIsYSoqM10pKX1yZXR1cm4gdH0oZSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG49Q29sb3JTcGFjZS5wYXJzZSh7Y3M6cy5nZXRSYXcoIkNTIil8fHMuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczppLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KTt0aGlzLmJhY2tncm91bmQ9cy5oYXMoIkJhY2tncm91bmQiKT9uLmdldFJnYihzLmdldCgiQmFja2dyb3VuZCIpLDApOm51bGw7Y29uc3Qgbz1zLmdldFJhdygiRnVuY3Rpb24iKSxnPW8/YS5jcmVhdGVGcm9tQXJyYXkobyk6bnVsbDt0aGlzLmNvb3Jkcz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLmZpZ3VyZXM9W107Y29uc3QgYz17Yml0c1BlckNvb3JkaW5hdGU6cy5nZXQoIkJpdHNQZXJDb29yZGluYXRlIiksYml0c1BlckNvbXBvbmVudDpzLmdldCgiQml0c1BlckNvbXBvbmVudCIpLGJpdHNQZXJGbGFnOnMuZ2V0KCJCaXRzUGVyRmxhZyIpLGRlY29kZTpzLmdldEFycmF5KCJEZWNvZGUiKSxjb2xvckZuOmcsY29sb3JTcGFjZTpuLG51bUNvbXBzOmc/MTpuLm51bUNvbXBzfSxsPW5ldyBNZXNoU3RyZWFtUmVhZGVyKGUsYyk7bGV0IGg9ITE7c3dpdGNoKHRoaXMuc2hhZGluZ1R5cGUpe2Nhc2UgQ2E6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKGwpO2JyZWFrO2Nhc2UgQmE6Y29uc3QgZT0wfHMuZ2V0KCJWZXJ0aWNlc1BlclJvdyIpO2lmKGU8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgVmVydGljZXNQZXJSb3ciKTt0aGlzLl9kZWNvZGVUeXBlNVNoYWRpbmcobCxlKTticmVhaztjYXNlIFFhOnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyhsKTtoPSEwO2JyZWFrO2Nhc2UgRWE6dGhpcy5fZGVjb2RlVHlwZTdTaGFkaW5nKGwpO2g9ITA7YnJlYWs7ZGVmYXVsdDp1bnJlYWNoYWJsZSgiVW5zdXBwb3J0ZWQgbWVzaCB0eXBlLiIpfWlmKGgpe3RoaXMuX3VwZGF0ZUJvdW5kcygpO2ZvcihsZXQgZT0wLHQ9dGhpcy5maWd1cmVzLmxlbmd0aDtlPHQ7ZSsrKXRoaXMuX2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpfXRoaXMuX3VwZGF0ZUJvdW5kcygpO3RoaXMuX3BhY2tEYXRhKCl9X2RlY29kZVR5cGU0U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1bXSxyPVtdO2xldCBzPTA7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBuPWUucmVhZEZsYWcoKSxvPWUucmVhZENvb3JkaW5hdGUoKSxnPWUucmVhZENvbXBvbmVudHMoKTtpZigwPT09cyl7aWYoISgwPD1uJiZuPD0yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTQgZmxhZyIpO3N3aXRjaChuKXtjYXNlIDA6cz0zO2JyZWFrO2Nhc2UgMTpyLnB1c2goci5hdCgtMiksci5hdCgtMSkpO3M9MTticmVhaztjYXNlIDI6ci5wdXNoKHIuYXQoLTMpLHIuYXQoLTEpKTtzPTF9YS5wdXNoKG4pfXIucHVzaCh0Lmxlbmd0aCk7dC5wdXNoKG8pO2kucHVzaChnKTtzLS07ZS5hbGlnbigpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJ0cmlhbmdsZXMiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxzPWUucmVhZENvbXBvbmVudHMoKTtyLnB1c2goaS5sZW5ndGgpO2kucHVzaCh0KTthLnB1c2gocyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ImxhdHRpY2UiLGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkociksdmVydGljZXNQZXJSb3c6dH0pfV9kZWNvZGVUeXBlNlNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzg6MTI7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVsxMV09bis3O2FbNF09bisxO2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO2w9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09bDthWzExXT1uKzM7YVs0XT1jO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzExXT1uKzM7YVs0XT1hWzJdO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX1hWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVswXV1bMF0tdFthWzE1XV1bMF0rNioodFthWzRdXVswXSt0W2FbMV1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMTNdXVswXSt0W2FbN11dWzBdKSkvOSwoLTQqdFthWzBdXVsxXS10W2FbMTVdXVsxXSs2Kih0W2FbNF1dWzFdK3RbYVsxXV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsxM11dWzFdK3RbYVs3XV1bMV0pKS85XSk7YVs2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbM11dWzBdLXRbYVsxMl1dWzBdKzYqKHRbYVsyXV1bMF0rdFthWzddXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzRdXVswXSt0W2FbMTRdXVswXSkpLzksKC00KnRbYVszXV1bMV0tdFthWzEyXV1bMV0rNioodFthWzJdXVsxXSt0W2FbN11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbNF1dWzFdK3RbYVsxNF1dWzFdKSkvOV0pO2FbOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzEyXV1bMF0tdFthWzNdXVswXSs2Kih0W2FbOF1dWzBdK3RbYVsxM11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbMTFdXVswXSt0W2FbMV1dWzBdKSkvOSwoLTQqdFthWzEyXV1bMV0tdFthWzNdXVsxXSs2Kih0W2FbOF1dWzFdK3RbYVsxM11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbMTFdXVsxXSt0W2FbMV1dWzFdKSkvOV0pO2FbMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxNV1dWzBdLXRbYVswXV1bMF0rNioodFthWzExXV1bMF0rdFthWzE0XV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsyXV1bMF0rdFthWzhdXVswXSkpLzksKC00KnRbYVsxNV1dWzFdLXRbYVswXV1bMV0rNioodFthWzExXV1bMV0rdFthWzE0XV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsyXV1bMV0rdFthWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGk9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNikscj1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU3IGZsYWciKTtjb25zdCBuPXQubGVuZ3RoO2ZvcihsZXQgaT0wLGE9MCE9PXM/MTI6MTY7aTxhO2krKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBvPWkubGVuZ3RoO2ZvcihsZXQgdD0wLGE9MCE9PXM/Mjo0O3Q8YTt0KyspaS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGcsYyxsLGg7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1uKzM7YVsxM109bis0O2FbMTRdPW4rNTthWzE1XT1uKzY7YVs4XT1uKzI7YVs5XT1uKzEzO2FbMTBdPW4rMTQ7YVsxMV09bis3O2FbNF09bisxO2FbNV09bisxMjthWzZdPW4rMTU7YVs3XT1uKzg7YVswXT1uO2FbMV09bisxMTthWzJdPW4rMTA7YVszXT1uKzk7clsyXT1vKzE7clszXT1vKzI7clswXT1vO3JbMV09byszO2JyZWFrO2Nhc2UgMTpnPWFbMTJdO2M9YVsxM107bD1hWzE0XTtoPWFbMTVdO2FbMTJdPWg7YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1sO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YzthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clsyXTtjPXJbM107clsyXT1jO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAyOmc9YVsxNV07Yz1hWzExXTthWzEyXT1hWzNdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVs3XTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbM107clsyXT1yWzFdO3JbM109bztyWzBdPWc7clsxXT1vKzE7YnJlYWs7Y2FzZSAzOmFbMTJdPWFbMF07YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzFdO2FbOV09bis5O2FbMTBdPW4rMTA7YVsxMV09biszO2FbNF09YVsyXTthWzVdPW4rODthWzZdPW4rMTE7YVs3XT1uKzQ7YVswXT1hWzNdO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O3JbMl09clswXTtyWzNdPW87clswXT1yWzFdO3JbMV09bysxfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJwYXRjaCIsY29vcmRzOm5ldyBJbnQzMkFycmF5KGEpLGNvbG9yczpuZXcgSW50MzJBcnJheShyKX0pfX1fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl7Y29uc3QgdD10aGlzLmZpZ3VyZXNbZV07YXNzZXJ0KCJwYXRjaCI9PT10LnR5cGUsIlVuZXhwZWN0ZWQgcGF0Y2ggbWVzaCBmaWd1cmUiKTtjb25zdCBpPXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj10LmNvb3JkcyxzPXQuY29sb3JzLG49TWF0aC5taW4oaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxvPU1hdGgubWluKGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSksZz1NYXRoLm1heChpW3JbMF1dWzBdLGlbclszXV1bMF0saVtyWzEyXV1bMF0saVtyWzE1XV1bMF0pLGM9TWF0aC5tYXgoaVtyWzBdXVsxXSxpW3JbM11dWzFdLGlbclsxMl1dWzFdLGlbclsxNV1dWzFdKTtsZXQgbD1NYXRoLmNlaWwoKGctbikqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbMl0tdGhpcy5ib3VuZHNbMF0pKTtsPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGwpKTtsZXQgaD1NYXRoLmNlaWwoKGMtbykqTWVzaFNoYWRpbmcuVFJJQU5HTEVfREVOU0lUWS8odGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0pKTtoPU1hdGgubWF4KE1lc2hTaGFkaW5nLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKE1lc2hTaGFkaW5nLk1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULGgpKTtjb25zdCBDPWwrMSxRPW5ldyBJbnQzMkFycmF5KChoKzEpKkMpLEU9bmV3IEludDMyQXJyYXkoKGgrMSkqQyk7bGV0IHU9MDtjb25zdCBkPW5ldyBVaW50OEFycmF5KDMpLGY9bmV3IFVpbnQ4QXJyYXkoMykscD1hW3NbMF1dLG09YVtzWzFdXSx5PWFbc1syXV0sdz1hW3NbM11dLGI9Z2V0QihoKSxEPWdldEIobCk7Zm9yKGxldCBlPTA7ZTw9aDtlKyspe2RbMF09KHBbMF0qKGgtZSkreVswXSplKS9ofDA7ZFsxXT0ocFsxXSooaC1lKSt5WzFdKmUpL2h8MDtkWzJdPShwWzJdKihoLWUpK3lbMl0qZSkvaHwwO2ZbMF09KG1bMF0qKGgtZSkrd1swXSplKS9ofDA7ZlsxXT0obVsxXSooaC1lKSt3WzFdKmUpL2h8MDtmWzJdPShtWzJdKihoLWUpK3dbMl0qZSkvaHwwO2ZvcihsZXQgdD0wO3Q8PWw7dCsrLHUrKyl7aWYoISgwIT09ZSYmZSE9PWh8fDAhPT10JiZ0IT09bCkpY29udGludWU7bGV0IHM9MCxuPTAsbz0wO2ZvcihsZXQgYT0wO2E8PTM7YSsrKWZvcihsZXQgZz0wO2c8PTM7ZysrLG8rKyl7Y29uc3QgYz1iW2VdW2FdKkRbdF1bZ107cys9aVtyW29dXVswXSpjO24rPWlbcltvXV1bMV0qY31RW3VdPWkubGVuZ3RoO2kucHVzaChbcyxuXSk7RVt1XT1hLmxlbmd0aDtjb25zdCBnPW5ldyBVaW50OEFycmF5KDMpO2dbMF09KGRbMF0qKGwtdCkrZlswXSp0KS9sfDA7Z1sxXT0oZFsxXSoobC10KStmWzFdKnQpL2x8MDtnWzJdPShkWzJdKihsLXQpK2ZbMl0qdCkvbHwwO2EucHVzaChnKX19UVswXT1yWzBdO0VbMF09c1swXTtRW2xdPXJbM107RVtsXT1zWzFdO1FbQypoXT1yWzEyXTtFW0MqaF09c1syXTtRW0MqaCtsXT1yWzE1XTtFW0MqaCtsXT1zWzNdO3RoaXMuZmlndXJlc1tlXT17dHlwZToibGF0dGljZSIsY29vcmRzOlEsY29sb3JzOkUsdmVydGljZXNQZXJSb3c6Q319X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0saT1lLGE9dDtmb3IobGV0IHI9MSxzPXRoaXMuY29vcmRzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPXRoaXMuY29vcmRzW3JdWzBdLG49dGhpcy5jb29yZHNbcl1bMV07ZT1lPnM/czplO3Q9dD5uP246dDtpPWk8cz9zOmk7YT1hPG4/bjphfXRoaXMuYm91bmRzPVtlLHQsaSxhXX1fcGFja0RhdGEoKXtsZXQgZSx0LGksYTtjb25zdCByPXRoaXMuY29vcmRzLHM9bmV3IEZsb2F0MzJBcnJheSgyKnIubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXTtzW2krK109dFswXTtzW2krK109dFsxXX10aGlzLmNvb3Jkcz1zO2NvbnN0IG49dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKm4ubGVuZ3RoKTtmb3IoZT0wLGk9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXTtvW2krK109dFswXTtvW2krK109dFsxXTtvW2krK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGc9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1nLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWdbZV0scj10LmNvb3JkcyxzPXQuY29sb3JzO2ZvcihpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtyW2ldKj0yO3NbaV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09MHx8ZVszXS1lWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBNZXNoU2hhZGluZyBib3VuZHM6IFske2V9XS5gKTtyZXR1cm5bIk1lc2giLHRoaXMuc2hhZGluZ1R5cGUsdGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzLGUsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWNsYXNzIER1bW15U2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2dldElSKCl7cmV0dXJuWyJEdW1teSJdfX1mdW5jdGlvbiBnZXRUaWxpbmdQYXR0ZXJuSVIoZSx0LGkpe2NvbnN0IHI9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHM9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIXN8fHNbMl0tc1swXT09MHx8c1szXS1zWzFdPT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3Qgbj10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgZz10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGM9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsaSxlLHIscyxuLG8sZyxjXX1jb25zdCBkYT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxmYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30scGE9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sbWE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHlhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx3YT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sYmE9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5MDE2LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MzgzNCwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkzODUsLjg1MTIyLC43NzQ1MiwuODY1MDMsLjc1MTg2LC42ODg4NywuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQyNTgsLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzkwMTYsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuODYxMjgsLjk0NDY5LC44NDU3LC45NDQ2OSwuODk0NjQsMS4wOTg0MiwuODQ2MzYsLjk0NDY5LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTU4OTcsLjk0NDY5LC45NDgyLC45NDQ2OSwuOTQ0NjksMS4wNDY5MiwuNzgyMjMsMS4yMDU2MiwuOTQ0NjksLjkwMzMyLC45ODk4NiwuODY2MjEsLjkwNTI3LC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMDg3MDcsLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzM4MzQsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5Mzg1LC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1Mjg0LC44NTMxMSwuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODY5MywuODQ1NywuODk0NjQsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTQ0NjksLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjk0ODIsLjkwNzQ3LC44NjY1MSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjkwNTI3LC45NDQ2OSwuOTA1MjcsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC44NTE5MywuOTI0NTQsLjg2NDc3LC45OTIxLC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwxLDEsLjg2Mjc1LC45NDQ2OSwuOTA4NzIsLjk1Nzg2LC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3NzQxLDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkwNDUyLC45ODE1NiwxLjExODQyLC43NzI2MSwxLjExNDI5LC44OTM4NSwuOTQ0NjksMSwxLC44OTM4NSwuOTQ0NjksLjk1ODc3LC44NjkwMSwuOTQ0NjksLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg2NjcsLjkwMDE2LC43NTE4NiwxLjA0NjkyLDEsMSwuNzUxODYsMS4wNDY5MiwuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLDEsMSwuNzk3NzYsLjkyMTg4LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC44NjEyOCwuNzYzMTgsLjg2OTMsLjg1MzExLC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42Nzc0MiwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY2ODYsLjkwODYxLC42MjI2NywuNzQzNTksLjY1NjQ5LC44NTQ5OCwuNTY5NjMsLjg4MjU0LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43NTQ0MywuODQ1MDMsLjczMjA2LC43NjY1OSwuODYyNzUsLjg1MTIyLC45MDY4NSwuNzc4OTIsLjg1NzQ2LDEuMDI2MzgsLjg5Mzg1LC43NTY1NywuODUxMjIsLjg2Mjc1LC43NzQ1MiwuNzQxNzEsLjc5Nzc2LC43MzA2LC45NTE2NSwuNzc4MTgsLjg5NzcyLC44ODgzMSwuOTA2ODUsLjczMDYsLjk4MTQyLDEuMDIxOTEsLjk2NTc2LDEuMjM1MTYsLjk5MDE4LC45ODE0MiwuOTIzNiwuODkyNTgsLjk0MDM1LDEuMDIxOTEsLjc4ODQ4LC45NjU3NiwuOTU2MSwxLjIzNTE2LC45MDkxOCwuOTI1NzgsLjk1NDI0LC44OTc0NiwuODM5NjksLjk0ODIsLjgwMTEzLC44OTQ0MiwuODUyMDgsLjg2MTU1LC45ODAyMiwuOTkwMTgsMS4wMDQ1MiwuODEyMDksLjk5MjQ3LC44OTE4MSwxLjIzNTE2LC45OTAxOCwuOTQ4MiwuOTkwMTgsLjg5MTgxLC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODg4NDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NDY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45Njc2NiwxLDEsMSwxLDEsMSwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY5MDQzLDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTkzMzEsLjgyNjE2LC45MTEzMywuODQyODYsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLjA3MTg1LC45OTQxMywuOTYzMzQsMS4wODA2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLERhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxGYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDMzNzQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDQyLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMzgyOCwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMzQsLjk5OTc3LDEsLjk5OTk3LDEuMDAwMjYsMS4wMDA3OCwxLjAwMDM2LC45OTk3MywxLjAwMDEzLDEuMDAwNiwuOTk5NzcsLjk5OTc3LC45OTk4OCwuODUxNDgsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LDEuMDAwNjksMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5ODQsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMjQsMS4wMDAwMSwuOTk5OSwxLDEuMDAwNiwxLjAwMDAxLDEuMDAwNDEsLjk5OTYyLDEuMDAwMjYsMS4wMDA2LC45OTk5NSwxLjAwMDQxLC45OTk0MiwuOTk5NzMsLjk5OTI3LDEuMDAwODIsLjk5OTAyLDEuMDAwMjYsMS4wMDA4NywxLjAwMDYsMS4wMDA2OSwuOTk5NzMsLjk5ODY3LC45OTk3MywuOTk5MywxLjAwMDI2LDEuMDAwNDksMS4wMDA1NiwxLC45OTk4OCwuOTk5MzUsLjk5OTk1LC45OTk1NCwxLjAwMDU1LC45OTk0NSwxLjAwMDMyLDEuMDAwNiwuOTk5OTUsMS4wMDAyNiwuOTk5OTUsMS4wMDAzMiwxLjAwMDAxLDEuMDAwMDgsLjk5OTcxLDEuMDAwMTksLjk5OTQsMS4wMDAwMSwxLjAwMDYsMS4wMDA0NCwuOTk5NzMsMS4wMDAyMywxLjAwMDQ3LDEsLjk5OTQyLC45OTU2MSwuOTk5ODksMS4wMDAzNSwuOTk5NzcsMS4wMDAzNSwuOTk5NzcsMS4wMDAxOSwuOTk5NDQsMS4wMDAwMSwxLjAwMDIxLC45OTkyNiwxLjAwMDM1LDEuMDAwMzUsLjk5OTQyLDEuMDAwNDgsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5ODksMS4wMDA1NywxLjAwMDAxLC45OTkzNiwxLjAwMDUyLDEuMDAwMTIsLjk5OTk2LDEuMDAwNDMsMSwxLjAwMDM1LC45OTk0LC45OTk3NiwxLjAwMDM1LC45OTk3MywxLjAwMDUyLDEuMDAwNDEsMS4wMDExOSwxLjAwMDM3LC45OTk3MywxLjAwMDAyLC45OTk4NiwxLjAwMDQxLDEuMDAwNDEsLjk5OTAyLC45OTk2LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsLjk5OTczLDEuMDAwNTIsLjk5OTczLDEsLjk5OTczLDEuMDAwNDEsMS4wMDA3NSwuOTk5NCwxLjAwMDMsLjk5OTk5LDEsMS4wMDA0MSwuOTk5NTUsMSwuOTk5MTUsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAxMTksLjk5OTU1LC45OTk3MywxLjAwMDYsLjk5OTExLDEuMDAwNiwxLjAwMDI2LC45OTk3MiwxLjAwMDI2LC45OTkwMiwxLjAwMDQxLC45OTk3MywuOTk5OTksMSwxLDEuMDAwMzgsMS4wMDA1LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsMS4wMDA0NywxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFNhPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxrYT1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFJhPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sTmE9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sR2E9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxNYT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxVYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0seGE9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sTGE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLEhhPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxKYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sdmE9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFlhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxLYT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLFRhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxxYT1bMS4zNjg5OCwxLDEsLjcyNzA2LC44MDQ3OSwuODM3MzQsLjk4ODk0LC45OTc5MywuOTg5NywuOTM4ODQsLjg2MjA5LC45NDI5MiwuOTQyOTIsMS4xNjY2MSwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTkxMzcsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcyODUxLC43ODk2NiwuOTA4MzgsLjgzNjM3LC44MjM5MSwuOTYzNzYsLjgwMDYxLC44NjI3NSwuODc2OCwuOTU0MDcsMS4wMjU4LC43MzkwMSwuODUwMjIsLjgzNjU1LDEuMDE1NiwuOTU1NDYsLjkyMTc5LC44NzEwNywuOTIxNzksLjgyMTE0LC44MDk2LC44OTcxMywuOTQ0MzgsLjk1MzUzLC45NDA4MywuOTE5MDUsLjkwNDA2LC45NDQ2LC45NDI5MiwxLjE4Nzc3LC45NDI5MiwxLjAyMDU4LC44OTkwMywuOTAwODgsLjk0OTM4LC45Nzg5OCwuODEwOTMsLjk3NTcxLC45NDkzOCwxLjAyNCwuOTU3NywuOTU5MzMsLjk4NjIxLDEuMDQ3NCwuOTc0NTUsLjk4OTgxLC45NjcyLC45NTkzMywuOTQ0NiwuOTc4OTgsLjk3NDA3LC45NzY0NiwuNzgwMzYsMS4xMDIwOCwuOTU0NDIsLjk1Mjk4LC45NzU3OSwuOTMzMiwuOTQwMzksLjkzOCwuODA2ODcsMS4wMTE0OSwuODA2ODcsMS4wMjA1OCwuODA0NzksLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLDEuMDExNDksMS4wMDg3MiwuOTAwODgsLjkxODgyLDEuMDIxMywuODM2MSwxLjAyMDU4LC42MjI5NSwuNTQzMjQsLjg5MDIyLDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NzQ1NSwuOTM1ODIsLjkwMDg4LDEsMS4wNTY4NiwuODM2MSwuOTk2NDIsLjk5NjQyLC45OTY0MiwuNzI4NTEsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjg2OCwuODIzOTEsLjgwMDYxLC44MDA2MSwuODAwNjEsLjgwMDYxLDEuMDI1OCwxLjAyNTgsMS4wMjU4LDEuMDI1OCwuOTc0ODQsLjk1NTQ2LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksMS4wMjA1OCwuOTIxNzksLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45MDQwNiwuODY5NTgsLjk4MjI1LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45MDMxLC44MTA5MywuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45Mzk2OSwuOTU5MzMsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsLjk0NDYsMS4wODU5NSwuOTQ0NiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk0MDM5LC45Nzg5OCwuOTQwMzksLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuOTYzNzYsLjg0MzEzLC45NzQ4NCwuOTc1NzEsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44NzY4LC45NTc3LC44NzY4LC45NTc3LC44NzY4LC45NTc3LDEsMSwuOTU0MDcsLjk1OTMzLC45NzA2OSwuOTU5MzMsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLC44ODcsMS4wMTU5MSwuNzM5MDEsMS4wNDc0LDEsMSwuOTc0NTUsLjgzNjU1LC45ODk4MSwxLDEsLjgzNjU1LC43Mzk3NywuODM2NTUsLjczOTAzLC44NDYzOCwxLjAzMywuOTU1NDYsLjk1OTMzLDEsMSwuOTU1NDYsLjk1OTMzLC44MjcxLC45NTQxNywuOTU5MzMsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkzNiwuOTE5NjQsLjgyMTE0LC45NzY0NiwxLDEsLjgyMTE0LC45NzY0NiwuODA5NiwuNzgwMzYsLjgwOTYsLjc4MDM2LDEsMSwuODA5NiwuNzgwMzYsMSwxLC44OTcxMywuNzc0NTIsLjg5NzEzLDEuMTAyMDgsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45MDQwNiwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwxLC45OTc5MywuOTA4MzgsLjk0OTM4LC44NjgsLjkwMzEsLjkyMTc5LC45NDQ2LDEsMSwuODk3MTMsMS4xMDIwOCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTA5ODksLjkzNTgsLjkxOTQ1LC44MzE4MSwuNzUyNjEsLjg3OTkyLC44Mjk3NiwuOTYwMzQsLjgzNjg5LC45NzI2OCwxLjAwNzgsLjkwODM4LC44MzYzNywuODAxOSwuOTAxNTcsLjgwMDYxLC45NDQ2LC45NTQwNywuOTI0MzYsMS4wMjU4LC44NTAyMiwuOTcxNTMsMS4wMTU2LC45NTU0NiwuODkxOTIsLjkyMTc5LC45MjM2MSwuODcxMDcsLjk2MzE4LC44OTcxMywuOTM3MDQsLjk1NjM4LC45MTkwNSwuOTE3MDksLjkyNzk2LDEuMDI1OCwuOTM3MDQsLjk0ODM2LDEuMDM3MywuOTU5MzMsMS4wMDc4LC45NTg3MSwuOTQ4MzYsLjk2MTc0LC45MjYwMSwuOTQ5OCwuOTg2MDcsLjk1Nzc2LC45NTkzMywxLjA1NDUzLDEuMDA3OCwuOTgyNzUsLjkzMTQsLjk1NjE3LC45MTcwMSwxLjA1OTkzLC45NDQ2LC43ODM2NywuOTU1MywxLC44NjgzMiwxLjAxMjgsLjk1ODcxLC45OTM5NCwuODc1NDgsLjk2MzYxLC44Njc3NCwxLjAwNzgsLjk1ODcxLC45NDQ2LC45NTg3MSwuODY3NzQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTA0MDYsLjk0MDM5LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTM1ODIsLjkzNTgyLC45MzU4MiwxLC45MDgsLjkwOCwuOTE4LC45NDIxOSwuOTQyMTksLjk2NTQ0LDEsMS4yODUsMSwxLC44MTA3OSwuODEwNzksMSwxLC43NDg1NCwxLDEsMSwxLC45OTc5MywxLDEsMSwuNjUsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE3MTczLDEsLjgwNTM1LC43NjE2OSwxLjAyMDU4LDEuMDczMiwxLjA1NDg2LDEsMSwxLjMwNjkyLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTYxNjEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sT2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFBhPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sV2E9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LGphPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxYYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sVmE9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFphPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxfYT1bMS43NjczOCwxLDEsLjk5Mjk3LC45ODI0LDEuMDQwMTYsMS4wNjQ5NywxLjAzNDI0LC45NzUyOSwxLjE3NjQ3LDEuMjMyMDMsMS4xMDg1LDEuMTA4NSwxLjE2OTM5LDEuMjEwNywuOTc1NCwxLjIxNDA4LC45NzU0LDEuNTk1NzgsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwuODEzNzgsLjgxMzc4LDEuMjEwNywxLjIxMDcsMS4yMTA3LC43MTcwMywuOTc4NDcsLjk3MzYzLC44ODc3NiwuODY0MSwxLjAyMDk2LC43OTc5NSwuODUxMzIsLjkxNCwxLjA2MDg1LDEuMTQwNiwuODAwNywuODk4NTgsLjgzNjkzLDEuMTQ4ODksMS4wOTM5OCwuOTc0ODksLjkyMDk0LC45NzQ4OSwuOTAzOTksLjg0MDQxLC45NTkyMywxLjAwMTM1LDEsMS4wNjQ2NywuOTgyNDMsLjkwOTk2LC45OTM2MSwxLjEwODUsMS41Njk0MiwxLjEwODUsMS4yMTA3LC43NDYyNywuOTQyODIsLjk2NzUyLDEuMDE1MTksLjg2MzA0LDEuMDEzNTksLjk3Mjc4LDEuMTUxMDMsMS4wMTM1OSwuOTg1NjEsMS4wMjI4NSwxLjAyMjg1LDEuMDA1MjcsMS4wMjI4NSwxLjAzMDIsLjk5MDQxLDEuMDAwOCwxLjAxNTE5LDEuMDEzNTksMS4wMjI1OCwuNzkxMDQsMS4xNjg2MiwuOTkwNDEsLjk3NDU0LDEuMDI1MTEsLjk5Mjk4LC45Njc1MiwuOTU4MDEsLjk0ODU2LDEuMTY1NzksLjk0ODU2LDEuMjEwNywuOTgyNCwxLjAzNDI0LDEuMDM0MjQsMSwxLjAzNDI0LDEuMTY1NzksLjg3MjcsMS4zODcxLDEuMTg2MjIsMS4xMDgxOCwxLjA0NDc4LDEuMjEwNywxLjE4NjIyLC43NTE1NSwuOTQ5OTQsMS4yODgyNiwxLjIxNDA4LDEuMjE0MDgsLjkxMDU2LDEsLjkxNTcyLC45NzU0LC42NDY2MywxLjE4MzI4LDEuMjQ4NjYsMS4wNDQ3OCwxLjE0MTY5LDEuMTU3NDksMS4xNzM4OSwuNzE3MDMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjkzNTA2LC44NjQxLC43OTc5NSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wMjA5NiwxLjA5Mzk4LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsMS4yMTA3LC45NzQ4OSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MDk5NiwuOTIwOTQsMS4wMjc5OCwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTMxMzYsLjg2MzA0LC45NzI3OCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LC45NzEyMiwuOTkwNDEsMSwxLDEsMSwxLDEuMjg4MjYsMS4wMDA4LC45OTA0MSwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTY3NTIsMS4wMTUxOSwuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LDEuMDIwOTYsMS4wMzA1NywxLjAyMDk2LDEuMDM1MTcsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LDEsMSwxLjA2MDg1LC45ODU2MSwxLjA2MDg1LDEuMDA4NzksMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsMS4xNDA2LDEuMDIyODUsLjk3MTM4LDEuMDg2OTIsLjgwMDcsMS4wMjI4NSwxLDEsMS4wMDUyNywuODM2OTMsMS4wMjI4NSwxLDEsLjgzNjkzLC45NDU1LC44MzY5MywuOTA0MTgsLjgzNjkzLDEuMTMwMDUsMS4wOTM5OCwuOTkwNDEsMSwxLDEuMDkzOTgsLjk5MDQxLC45NjY5MiwxLjA5MjUxLC45OTA0MSwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTM5OTQsLjk3OTMxLC45MDM5OSwxLjAyMjU4LDEsMSwuOTAzOTksMS4wMjI1OCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LDEsMSwuOTU5MjMsMS4wNzAzNCwuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjAwMTM1LC45OTA0MSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwuOTA5OTYsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsMS4wNzczMywxLjAzNDI0LC45NzM2MywuOTY3NTIsLjkzNTA2LC45MzEzNiwuOTc0ODksMS4wMDA4LDEsMSwuOTU5MjMsMS4xNjg2MiwxLjE1MTAzLDEuMTUxMDMsMS4wMTE3MywxLjAzOTU5LC43NTk1MywuODEzNzgsLjc5OTEyLDEuMTUxMDMsMS4yMTk5NCwuOTUxNjEsLjg3ODE1LDEuMDExNDksLjgxNTI1LC43Njc2LC45ODE2NywxLjAxMTM0LDEuMDI1NDYsLjg0MDk3LDEuMDMwODksMS4xODEwMiwuOTczNjMsLjg4Nzc2LC44NTEzNCwuOTc4MjYsLjc5Nzk1LC45OTM2MSwxLjA2MDg1LC45NzQ4OSwxLjE0MDYsLjg5ODU4LDEuMDM4OCwxLjE0ODg5LDEuMDkzOTgsLjg2MDM5LC45NzQ4OSwxLjA1OTUsLjkyMDk0LC45NDc5MywuOTU5MjMsLjkwOTk2LC45OTM0NiwuOTgyNDMsMS4wMjExMiwuOTU0OTMsMS4xNDA2LC45MDk5NiwxLjAzNTc0LDEuMDI1OTcsMS4wMDA4LDEuMTgxMDIsMS4wNjYyOCwxLjAzNTc0LDEuMDE5MiwxLjAxOTMyLDEuMDA4ODYsLjk3NTMxLDEuMDEwNiwxLjAwMDgsMS4xMzE4OSwxLjE4MTAyLDEuMDIyNzcsLjk4NjgzLDEuMDAxNiwuOTk1NjEsMS4wNzIzNywxLjAwMDgsLjkwNDM0LC45OTkyMSwuOTM4MDMsLjg5NjUsMS4yMzA4NSwxLjA2NjI4LDEuMDQ5ODMsLjk2MjY4LDEuMDQ5OSwuOTg0MzksMS4xODEwMiwxLjA2NjI4LDEuMDAwOCwxLjA2NjI4LC45ODQzOSwuNzk3OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTQ2NiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTcyNzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMjA2NSwxLDEsMSwxLDEsMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLDEsMS4yMTQwOCwuODk5MDMsMSwxLC43NTE1NSwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43MzA0NywuNzMwNDcsMS4yMDY0MiwuOTEyMTEsMS4yNTYzNSwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMTI0NTQsLjkzNTAzLDEuMDM0MjQsMS4xOTY4NywxLjAzNDI0LDEsMSwxLC43NzEsMSwxLDEuMTU3NDksMS4xNTc0OSwxLjE1NzQ5LDEuMTA5NDgsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4xNjg5NywxLC45NjA4NSwuOTAxMzcsMS4yMTA3LDEuMTg0MTYsMS4xMzk3MywuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTE3MiwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4ODc0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4wOTE5MywxLjA5MTkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6YT17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sJGE9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjAzOTU5LDEuMDQwMTYsMS4wMjgwOSwxLjAzNiwuOTc2MzksMS4xMDk1MywxLjIzMjAzLDEuMTExNDQsMS4xMTE0NCwxLjE2OTM5LDEuMjEyMzcsLjk3NTQsMS4yMTI2MSwuOTc1NCwxLjU5NzU0LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LDEuMDM2LC44MTM3OCwuODEzNzgsMS4yMTIzNywxLjIxMjM3LDEuMjEyMzcsLjczNTQxLC45Nzg0NywuOTczNjMsLjg5NzIzLC44Nzg5NywxLjA0MjYsLjc5NDI5LC44NTI5MiwuOTExNDksMS4wNTgxNSwxLjE0MDYsLjc5NjMxLC45MDEyOCwuODM4NTMsMS4wNDM5NiwxLjEwNjE1LC45NzU1MiwuOTQ0MzYsLjk3NTUyLC44ODY0MSwuODA1MjcsLjk2MDgzLDEuMDAxMzUsMSwxLjA2Nzc3LC45ODE3LC45MTE0MiwuOTkzNjEsMS4xMTE0NCwxLjU3MjkzLDEuMTExNDQsMS4yMTIzNywuNzQ2MjcsMS4zMTgxOCwxLjA2NTg1LC45NzA0MiwuODMwNTUsLjk3MDQyLC45MzUwMywxLjEyNjEsLjk3MDQyLC45NzkyMiwxLjE0MjM2LC45NDU1MiwxLjAxMDU0LDEuMTQyMzYsMS4wMjQ3MSwuOTc5MjIsLjk0MTY1LC45NzA0MiwuOTcwNDIsMS4wMjc2LC43ODkyOSwxLjEyNjEsLjk3OTIyLC45NTg3NCwxLjAyMTk3LC45ODUwNywuOTY3NTIsLjk3MTY4LC45NTEwNywxLjE2NTc5LC45NTEwNywxLjIxMjM3LDEuMDM5NTksMS4wMzYsMS4wMzYsMSwxLjAzNiwxLjE2NTc5LC44NzM1NywxLjMxODE4LDEuMTg3NTQsMS4yNjc4MSwxLjA1MzU2LDEuMjEyMzcsMS4xODYyMiwuNzk0ODcsLjk0OTk0LDEuMjkwMDQsMS4yNDA0NywxLjI0MDQ3LDEuMzE4MTgsMSwuOTE0ODQsLjk3NTQsMS4zMTgxOCwxLjEzNDksMS4yNDg2NiwxLjA1MzU2LDEuMTM5MzQsMS4xNTU3NCwxLjE3Mzg5LC43MzU0MSwuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTQzODUsLjg3ODk3LC43OTQyOSwuNzk0MjksLjc5NDI5LC43OTQyOSwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4wNDI2LDEuMTA2MTUsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwxLjIxMjM3LC45NzU1MiwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LC45MTE0MiwuOTQ0MzYsLjk4NzIxLDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LC45NjcwNSwuODMwNTUsLjkzNTAzLC45MzUwMywuOTM1MDMsLjkzNTAzLDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsLjkzMTI1LC45NzkyMiwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LDEuMjkwMDQsLjk0MTY1LC45NzkyMiwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTY3NTIsLjk3MDQyLC45Njc1MiwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuOTczNjMsMS4wNjU4NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LDEuMDQyNiwxLjAwMzMsMS4wNDI2LC45NzA0MiwuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsMSwxLDEuMDU4MTUsLjk3OTIyLDEuMDU4MTUsLjk3OTIyLDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LDEuMTQwNiwxLjE0MjM2LC45NzQ0MSwxLjA0MzAyLC43OTYzMSwxLjAxNTgyLDEsMSwxLjAxMDU0LC44Mzg1MywxLjE0MjM2LDEsMSwuODM4NTMsMS4wOTEyNSwuODM4NTMsLjkwNDE4LC44Mzg1MywxLjE5NTA4LDEuMTA2MTUsLjk3OTIyLDEsMSwxLjEwNjE1LC45NzkyMiwxLjAxMDM0LDEuMTA0NjYsLjk3OTIyLC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45MTYwMiwuOTE5ODEsLjg4NjQxLDEuMDI3NiwxLDEsLjg4NjQxLDEuMDI3NiwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LDEsMSwuOTYwODMsMS4wNTQwMywuOTU5MjMsMS4xNjg2MiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjAwMTM1LC45NzkyMiwxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwuOTExNDIsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsMS4yMzE5OSwxLjAzNiwuOTczNjMsMS4wNjU4NSwuOTQzODUsLjk2NzA1LC45NzU1MiwuOTQxNjUsMSwxLC45NjA4MywxLjEyNjEsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsLjk1MTYxLDEuMjcxMjYsMS4wMDgxMSwuODMyODQsLjc3NzAyLC45OTEzNywuOTUyNTMsMS4wMzQ3LC44NjE0MiwxLjA3MjA1LDEuMTQyMzYsLjk3MzYzLC44OTcyMywuODY4NjksMS4wOTgxOCwuNzk0MjksLjk5MzYxLDEuMDU4MTUsLjk3NTUyLDEuMTQwNiwuOTAxMjgsMS4wNjY2MiwxLjA0Mzk2LDEuMTA2MTUsLjg0OTE4LC45NzU1MiwxLjA0Njk0LC45NDQzNiwuOTgwMTUsLjk2MDgzLC45MTE0MiwxLjAwMzU2LC45ODE3LDEuMDE5NDUsLjk4OTk5LDEuMTQwNiwuOTExNDIsMS4wNDk2MSwuOTg5OCwxLjAwNjM5LDEuMTQyMzYsMS4wNzUxNCwxLjA0OTYxLC45OTYwNywxLjAyODk3LDEuMDA4LC45ODk4LC45NTEzNCwxLjAwNjM5LDEuMTExMjEsMS4xNDIzNiwxLjAwNTE4LC45Nzk4MSwxLjAyMTg2LDEsMS4wODU3OCwuOTQxNjUsLjk5MzE0LC45ODM4NywuOTMwMjgsLjkzMzc3LDEuMzUxMjUsMS4wNzUxNCwxLjEwNjg3LC45MzQ5MSwxLjA0MjMyLDEuMDAzNTEsMS4xNDIzNiwxLjA3NTE0LC45NDE2NSwxLjA3NTE0LDEuMDAzNTEsLjc5NDI5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDkwOTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkzNTAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NjYwOSwxLDEsMSwxLDEsMSwxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLDEsMS4yMTI2MSwuODk5MDMsMSwxLC43NTE1NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0Mzk0LC45ODYzMywuOTg2MzMsLjk4NjMzLC43Mjk1OSwuNzI5NTksMS4yMDUwMiwuOTE0MDYsMS4yNjUxNCwxLjIyMiwxLjAyOTU2LDEuMDMzNzIsMS4wMzM3MiwuOTYwMzksMS4yNDYzMywxLDEuMDkxMjUsLjkzMzI3LDEuMDMzMzYsMS4xNjU0MSwxLjAzNiwxLDEsMSwuNzcxLDEsMSwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LC44NjM2NCwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYyMjQsMSwxLDEuMTY3OTgsMSwuOTYwODUsLjkwMDY4LDEuMjEyMzcsMS4xODQxNiwxLjEzOTA0LC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMzM5LDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg3NzUsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEzMjY5LDEuMTMyNjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEFyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxlcj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHRyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxpcj1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sYXI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHJyPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiTXlyaWFkUHJvLVJlZ3VsYXIiXT1lWyJQZGZKUy1GYWxsYmFjay1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6VmEsYmFzZVdpZHRoczpLYSxiYXNlTWFwcGluZzpUYSxtZXRyaWNzOlphfTtlWyJNeXJpYWRQcm8tQm9sZCJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpxYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6T2F9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmphLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpYYX07ZVsiTXlyaWFkUHJvLUJvbGRJdCJdPWVbIk15cmlhZFByby1Cb2xkSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlBhLGJhc2VXaWR0aHM6SGEsYmFzZU1hcHBpbmc6SmEsbWV0cmljczpXYX07ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhfTtlWyJBcmlhbC1Cb2xkTVQiXT1lWyJBcmlhbC1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGF9O2VbIkFyaWFsLUl0YWxpY01UIl09ZVsiQXJpYWwtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpZYX07ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphfTtlWyJDYWxpYnJpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpiYSxiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6RGF9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmRhLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczpmYX07ZVsiQ2FsaWJyaS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOnlhLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp3YX07ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6cGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOm1hfTtlWyJTZWdvZXVpLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczppcixiYXNlV2lkdGhzOkthLGJhc2VNYXBwaW5nOlRhLG1ldHJpY3M6YXJ9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOl9hLGJhc2VXaWR0aHM6eGEsYmFzZU1hcHBpbmc6TGEsbWV0cmljczp6YX07ZVsiU2Vnb2V1aS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmVyLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczp0cn07ZVsiU2Vnb2V1aS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6JGEsYmFzZVdpZHRoczpIYSxiYXNlTWFwcGluZzpKYSxtZXRyaWNzOkFyfTtlWyJIZWx2ZXRpY2EtUmVndWxhciJdPWUuSGVsdmV0aWNhPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOk1hLGJhc2VXaWR0aHM6S2EsYmFzZU1hcHBpbmc6VGEsbWV0cmljczpVYX07ZVsiSGVsdmV0aWNhLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpGYSxiYXNlV2lkdGhzOnhhLGJhc2VNYXBwaW5nOkxhLG1ldHJpY3M6U2F9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOk5hLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6WWEsbWV0cmljczpHYX07ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczprYSxiYXNlV2lkdGhzOkhhLGJhc2VNYXBwaW5nOkphLG1ldHJpY3M6UmF9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJyKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczppLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpyfT10LHM9cj9pLm1hcCgoKGUsdCk9PmUqclt0XSkpOmk7bGV0IG4sbz0tMjtjb25zdCBnPVtdO2Zvcihjb25zdFtlLHRdb2YgYS5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChbZV0sW3RdKT0+ZS10KSkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe24ucHVzaChzW3RdKTtvKz0xfWVsc2V7bz1lO249W3NbdF1dO2cucHVzaChlLG4pfXJldHVybiBnfShlKSxpPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2kuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtpLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtpLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2kuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2kuc2V0KCJXIix0KTtpLnNldCgiRmlyc3RDaGFyIix0WzBdKTtpLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2kuc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcj1uZXcgRGljdChudWxsKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO2kuc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gaX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChzci5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHNyLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQoc3IuTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChzci5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KHNyLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTtpZih0aGlzLmFjY2VwdChzci5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQoc3IuTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgaT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qoc3IuUkJSQUNFKTt0aGlzLmV4cGVjdChzci5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1pO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBzcj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihzci5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHNyLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihzci5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBFdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihzci5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBpPXRoaXMuc3RyQnVmO2kubGVuZ3RoPTA7aVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCBhPWkuam9pbigiIik7c3dpdGNoKGEudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKGEpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBpPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHtpfWApO3JldHVybiBpfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGkpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNGPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I1MoKXtsZXQgZT0wO2Zvcihjb25zdCB0IG9mIHRoaXMuX2ltYWdlQ2FjaGUpZSs9dC5ieXRlU2l6ZTtyZXR1cm4gZX1nZXQjaygpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jUzxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGk9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFpKXtpPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsaSl9aS5hZGQodCk7cmV0dXJuIShpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI2spfWFkZERlY29kZUZhaWxlZChlKXt0aGlzLiNGLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI0YuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgaT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpJiYoaS5ieXRlU2l6ZXx8KGkuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSlyZXR1cm4gbnVsbDtpZihpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7aS5hZGQodCk7cmV0dXJuIGF9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNrP3dhcm4oIkdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGNhY2hlIGxpbWl0IHJlYWNoZWQuIik6dGhpcy5faW1hZ2VDYWNoZS5wdXQoZSx0KSl9Y2xlYXIoZT0hMSl7aWYoIWUpe3RoaXMuI0YuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y2xhc3MgUERGRnVuY3Rpb25GYWN0b3J5e2NvbnN0cnVjdG9yKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQ9ITB9KXt0aGlzLnhyZWY9ZTt0aGlzLmlzRXZhbFN1cHBvcnRlZD0hMSE9PXR9Y3JlYXRlKGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2YgUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxpKTtyZXR1cm4gaX1nZXRDYWNoZWQoZSl7bGV0IHQ7ZSBpbnN0YW5jZW9mIFJlZj90PWU6ZSBpbnN0YW5jZW9mIERpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodD1lLmRpY3Q/Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGk7ZSBpbnN0YW5jZW9mIFJlZj9pPWU6ZSBpbnN0YW5jZW9mIERpY3Q/aT1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaT1lLmRpY3Q/Lm9iaklkKTtpJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsaSx0KX1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoKGU9PitlKSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LGksYSl7bGV0IHIscyxuPTE7Zm9yKHI9MCxzPWUubGVuZ3RoO3I8cztyKyspbio9ZVtyXTtuKj10O2NvbnN0IG89bmV3IEFycmF5KG4pO2xldCBnPTAsYz0wO2NvbnN0IGw9MS8oMioqaS0xKSxoPWEuZ2V0Qnl0ZXMoKG4qaSs3KS84KTtsZXQgQz0wO2ZvcihyPTA7cjxuO3IrKyl7Zm9yKDtnPGk7KXtjPDw9ODtjfD1oW0MrK107Zys9OH1nLT1pO29bcl09KGM+PmcpKmw7YyY9KDE8PGcpLTF9cmV0dXJuIG99c3RhdGljIHBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pe2NvbnN0IGE9aS5kaWN0fHxpO3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbk9iajppfSl7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppfSk7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBpKWEucHVzaCh0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46ZS5mZXRjaElmUmVmKHIpfSkpO3JldHVybiBmdW5jdGlvbihlLHQsaSxyKXtmb3IobGV0IHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspYVtzXShlLHQsaSxyK3MpfX1zdGF0aWMgY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7ZnVuY3Rpb24gdG9NdWx0aUFycmF5KGUpe2NvbnN0IHQ9ZS5sZW5ndGgsaT1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKz0yKWlbYSsrXT1bZVtyXSxlW3IrMV1dO3JldHVybiBpfWZ1bmN0aW9uIGludGVycG9sYXRlKGUsdCxpLGEscil7cmV0dXJuIGErKHItYSkvKGktdCkqKGUtdCl9bGV0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyfHwhcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG49ci5sZW5ndGgvMixvPXMubGVuZ3RoLzI7cj10b011bHRpQXJyYXkocik7cz10b011bHRpQXJyYXkocyk7Y29uc3QgZz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlNpemUiKSksYz1hLmdldCgiQml0c1BlclNhbXBsZSIpLGw9YS5nZXQoIk9yZGVyIil8fDE7MSE9PWwmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2wpO2xldCBoPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGgpaD10b011bHRpQXJyYXkoaCk7ZWxzZXtoPVtdO2ZvcihsZXQgZT0wO2U8bjsrK2UpaC5wdXNoKFswLGdbZV0tMV0pfWxldCBDPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRGVjb2RlIikpO0M9Qz90b011bHRpQXJyYXkoQyk6cztjb25zdCBRPXRoaXMuZ2V0U2FtcGxlQXJyYXkoZyxvLGMsaSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsaSxhKXtjb25zdCBjPTE8PG4sbD1uZXcgRmxvYXQ2NEFycmF5KGMpLEU9bmV3IFVpbnQzMkFycmF5KGMpO2xldCB1LGQ7Zm9yKGQ9MDtkPGM7ZCsrKWxbZF09MTtsZXQgZj1vLHA9MTtmb3IodT0wO3U8bjsrK3Upe2NvbnN0IGk9clt1XVswXSxhPXJbdV1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3VdLGkpLGEpLGksYSxoW3VdWzBdLGhbdV1bMV0pO2NvbnN0IG49Z1t1XTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksbi0xKTtjb25zdCBvPXM8bi0xP01hdGguZmxvb3Iocyk6cy0xLEM9bysxLXMsUT1zLW8sbT1vKmYseT1tK2Y7Zm9yKGQ9MDtkPGM7ZCsrKWlmKGQmcCl7bFtkXSo9UTtFW2RdKz15fWVsc2V7bFtkXSo9QztFW2RdKz1tfWYqPW47cDw8PTF9Zm9yKGQ9MDtkPG87KytkKXtsZXQgZT0wO2Zvcih1PTA7dTxjO3UrKyllKz1RW0VbdV0rZF0qbFt1XTtlPWludGVycG9sYXRlKGUsMCwxLENbZF1bMF0sQ1tkXVsxXSk7aVthK2RdPU1hdGgubWluKE1hdGgubWF4KGUsc1tkXVswXSksc1tkXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDppfSl7Y29uc3QgYT10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMwIikpfHxbMF0scj10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkMxIikpfHxbMV0scz1pLmdldCgiTiIpLG49W107Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKW4ucHVzaChyW2VdLWFbZV0pO2NvbnN0IG89bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxpLHIpe2NvbnN0IGc9MT09PXM/ZVt0XTplW3RdKipzO2ZvcihsZXQgZT0wO2U8bzsrK2UpaVtyK2VdPWFbZV0rZypuW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJEb21haW4iKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4iKTtpZigxIT09YS5sZW5ndGgvMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCByPVtdO2Zvcihjb25zdCBhIG9mIGkuZ2V0KCJGdW5jdGlvbnMiKSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihhKX0pKTtjb25zdCBzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQm91bmRzIikpLG49dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJFbmNvZGUiKSksbz1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRm4oZSx0LGksZyl7Y29uc3QgYz1mdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcChlLHQsaSl7ZT5pP2U9aTplPHQmJihlPXQpO3JldHVybiBlfShlW3RdLGFbMF0sYVsxXSksbD1zLmxlbmd0aDtsZXQgaDtmb3IoaD0wO2g8bCYmIShjPHNbaF0pOysraCk7bGV0IEM9YVswXTtoPjAmJihDPXNbaC0xXSk7bGV0IFE9YVsxXTtoPHMubGVuZ3RoJiYoUT1zW2hdKTtjb25zdCBFPW5bMipoXSx1PW5bMipoKzFdO29bMF09Qz09PVE/RTpFKyhjLUMpKih1LUUpLyhRLUMpO3JbaF0obywwLGksZyl9fXN0YXRpYyBjb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KXtjb25zdCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHJhbmdlLiIpO2NvbnN0IG49bmV3IFBvc3RTY3JpcHRMZXhlcihpKSxvPW5ldyBQb3N0U2NyaXB0UGFyc2VyKG4pLnBhcnNlKCk7aWYodCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKG8scixzKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IGc9cy5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxsPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKG8pLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgQz04MTkyO2NvbnN0IFE9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxpLGEpe2xldCByLG4sbz0iIjtjb25zdCBFPVE7Zm9yKHI9MDtyPGM7cisrKXtuPWVbdCtyXTtFW3JdPW47bys9bisiXyJ9Y29uc3QgdT1oW29dO2lmKHZvaWQgMCE9PXUpe2kuc2V0KHUsYSk7cmV0dXJufWNvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShnKSxmPWwuZXhlY3V0ZShFKSxwPWYubGVuZ3RoLWc7Zm9yKHI9MDtyPGc7cisrKXtuPWZbcCtyXTtsZXQgZT1zWzIqcl07aWYobjxlKW49ZTtlbHNle2U9c1syKnIrMV07bj5lJiYobj1lKX1kW3JdPW59aWYoQz4wKXtDLS07aFtvXT1kfWkuc2V0KGQsYSl9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgaT10Lmxlbmd0aC1lLGE9ZS0xO2E+PTA7YS0tLGkrKyl0LnB1c2godFtpXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGk9dGhpcy5zdGFjayxhPWkubGVuZ3RoLWUscj1pLmxlbmd0aC0xLHM9YSsodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPWEsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX1mb3IobGV0IGU9YSx0PXMtMTtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPXMsdD1yO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgaT0wO2NvbnN0IGE9dGhpcy5vcGVyYXRvcnMscj1hLmxlbmd0aDtsZXQgcyxuLG87Zm9yKDtpPHI7KXtzPWFbaSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIHMpc3dpdGNoKHMpe2Nhc2UianoiOm89dC5wb3AoKTtuPXQucG9wKCk7bnx8KGk9byk7YnJlYWs7Y2FzZSJqIjpuPXQucG9wKCk7aT1uO2JyZWFrO2Nhc2UiYWJzIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKG4pKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobitvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChuJiZvKTp0LnB1c2gobiZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtuPXQucG9wKCk7bj1NYXRoLmF0YW4yKG4sbykvTWF0aC5QSSoxODA7bjwwJiYobis9MzYwKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO249dC5wb3AoKTtuPjA/dC5wdXNoKG48PG8pOnQucHVzaChuPj5vKTticmVhaztjYXNlImNlaWxpbmciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG4pKTticmVhaztjYXNlImNvcHkiOm49dC5wb3AoKTt0LmNvcHkobik7YnJlYWs7Y2FzZSJjb3MiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobiUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6bj0wfHQucG9wKCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG49PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihuKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vb3wwKTticmVhaztjYXNlImluZGV4IjpuPXQucG9wKCk7dC5pbmRleChuKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPD1vKTticmVhaztjYXNlImxuIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG4pKTticmVhaztjYXNlImxvZyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKG4pKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4hPT1vKTticmVhaztjYXNlIm5lZyI6bj10LnBvcCgpO3QucHVzaCgtbik7YnJlYWs7Y2FzZSJub3QiOm49dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuP3QucHVzaCghbik6dC5wdXNoKH5uKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG58fG8pOnQucHVzaChufG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnJvbGwobixvKTticmVhaztjYXNlInJvdW5kIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQobikpO2JyZWFrO2Nhc2Uic2luIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpuPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChuKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4tbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm49dC5wb3AoKTtuPW48MD9NYXRoLmNlaWwobik6TWF0aC5mbG9vcihuKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiE9PW8pOnQucHVzaChuXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7c31gKX1lbHNlIHQucHVzaChzKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSxhLHIpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWk7dGhpcy5taW49YTt0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBpPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxhPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGksYSl9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsaSl7Y29uc3QgYT1bXSxyPVtdLHM9dC5sZW5ndGg+PjEsbj1pLmxlbmd0aD4+MTtsZXQgbyxnLGMsbCxoLEMsUSxFLHU9MDtmb3IobGV0IGU9MDtlPHM7ZSsrKWEucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe0U9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIEUpc3dpdGNoKEUpe2Nhc2UiYWRkIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2Uic3ViIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2w9YS5wb3AoKTtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGMsbCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Qz1hLnBvcCgpO2EucHVzaChoLEMpO2JyZWFrO2Nhc2UicG9wIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2EucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtjPWEucG9wKCk7aWYoImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO289Yy5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8YS5sZW5ndGg8bylyZXR1cm4gbnVsbDtoPWFbYS5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLW8tMV09UTthLnB1c2goUSk7ci5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oUSxoKSk7YnJlYWs7Y2FzZSJkdXAiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7Yz1hLnBvcCgpO2EucHVzaChidWlsZE1pbk9wZXJhdGlvbihjLGVbdCsxXSkpO3QrPTY7YnJlYWt9aD1hLmF0KC0xKTtpZigibGl0ZXJhbCI9PT1oLnR5cGV8fCJ2YXIiPT09aC50eXBlKXthLnB1c2goaCk7YnJlYWt9UT1uZXcgQXN0VmFyaWFibGUodSsrLGgubWluLGgubWF4KTthW2EubGVuZ3RoLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsaCkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtsPWEucG9wKCk7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWwudHlwZXx8ImxpdGVyYWwiIT09Yy50eXBlKXJldHVybiBudWxsO2c9bC5udW1iZXI7bz1jLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoZyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7Zz0oZyVvK28pJW87aWYoMD09PWcpYnJlYWs7YS5wdXNoKC4uLmEuc3BsaWNlKGEubGVuZ3RoLW8sby1nKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIGEucHVzaChuZXcgQXN0TGl0ZXJhbChFKSl9aWYoYS5sZW5ndGghPT1uKXJldHVybiBudWxsO2NvbnN0IGQ9W107Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7ZC5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWFbZV0scj1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQocik7Y29uc3Qgcz1pWzIqZV0sbj1pWzIqZSsxXSxvPVtyLnRvU3RyaW5nKCldO2lmKHM+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixzLCIsICIpO28ucHVzaCgiKSIpfWlmKG48dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixuLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7ZC5wdXNoKG8uam9pbigiIikpfXJldHVybiBkLmpvaW4oIlxuIil9fWNvbnN0IG5yPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxvcj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGkpe2xldCBhLHI7Zm9yKGE9dCxyPWUubGVuZ3RoO2E8cjsrK2EpaWYoZVthXSE9PWkpcmV0dXJuIGE7cmV0dXJuIGF9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxpLGEpe2ZvcihsZXQgcj10O3I8aTsrK3IpZVtyXT1hfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGkpe2ZvcihsZXQgYT10LHI9aS0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGk9ITEpe2xldCBhPSJsdHIiO2k/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBncj1bXSxJcj1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxpPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxpKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsaSk7Z3IubGVuZ3RoPXI7SXIubGVuZ3RoPXI7bGV0IHMsbixvPTA7Zm9yKHM9MDtzPHI7KytzKXtncltzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgaT0iTCI7aWYodDw9MjU1KWk9bnJbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWk9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7aT1vclsyNTUmdF07aXx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKGk9IkFMIik7IlIiIT09aSYmIkFMIiE9PWkmJiJBTiIhPT1pfHxvKys7SXJbc109aX1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgZz1bXTtmb3Iocz0wO3M8cjsrK3MpZ1tzXT10O2NvbnN0IGM9aXNPZGQodCk/IlIiOiJMIixsPWMsaD1sO2xldCBDLFE9bDtmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1JcltzXT9JcltzXT1ROlE9SXJbc107UT1sO2ZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiRU4iPT09Qz9JcltzXT0iQUwiPT09UT8iQU4iOiJFTiI6IlIiIT09QyYmIkwiIT09QyYmIkFMIiE9PUN8fChRPUMpfWZvcihzPTA7czxyOysrcyl7Qz1JcltzXTsiQUwiPT09QyYmKElyW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1JcltzXSYmIkVOIj09PUlyW3MtMV0mJiJFTiI9PT1JcltzKzFdJiYoSXJbc109IkVOIik7IkNTIiE9PUlyW3NdfHwiRU4iIT09SXJbcy0xXSYmIkFOIiE9PUlyW3MtMV18fElyW3MrMV0hPT1JcltzLTFdfHwoSXJbc109SXJbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1JcltzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09SXJbZV07LS1lKUlyW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1JcltlXTsrK2UpSXJbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe0M9SXJbc107IldTIiE9PUMmJiJFUyIhPT1DJiYiRVQiIT09QyYmIkNTIiE9PUN8fChJcltzXT0iT04iKX1RPWw7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdOyJFTiI9PT1DP0lyW3NdPSJMIj09PVE/IkwiOiJFTiI6IlIiIT09QyYmIkwiIT09Q3x8KFE9Qyl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1JcltzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChJcixzKzEsIk9OIik7bGV0IHQ9bDtzPjAmJih0PUlyW3MtMV0pO2xldCBpPWg7ZSsxPHImJihpPUlyW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09aSYmKGk9IlIiKTt0PT09aSYmc2V0VmFsdWVzKElyLHMsZSx0KTtzPWUtMX1mb3Iocz0wO3M8cjsrK3MpIk9OIj09PUlyW3NdJiYoSXJbc109Yyk7Zm9yKHM9MDtzPHI7KytzKXtDPUlyW3NdO2lzRXZlbihnW3NdKT8iUiI9PT1DP2dbc10rPTE6IkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9Mik6IkwiIT09QyYmIkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9MSl9bGV0IEUsdT0tMSxkPTk5O2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKXtFPWdbc107dTxFJiYodT1FKTtkPkUmJmlzT2RkKEUpJiYoZD1FKX1mb3IoRT11O0U+PWQ7LS1FKXtsZXQgZT0tMTtmb3Iocz0wLG49Zy5sZW5ndGg7czxuOysrcylpZihnW3NdPEUpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoZ3IsZSxzKTtlPS0xfX1lbHNlIGU8MCYmKGU9cyk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhncixlLGcubGVuZ3RoKX1mb3Iocz0wLG49Z3IubGVuZ3RoO3M8bjsrK3Mpe2NvbnN0IGU9Z3Jbc107IjwiIT09ZSYmIj4iIT09ZXx8KGdyW3NdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoZ3Iuam9pbigiIiksYSl9Y29uc3QgY3I9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sbHI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGhyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LENyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxRcj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOmNyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOmxyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6aHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Q3IsdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOmNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6bHIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOmhyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkNyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpjcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOmxyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6aHIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Q3IsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6bHIsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpocixmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpjcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmxyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmhyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpDcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpjcn1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dXSksRXI9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6aSxmYWxsYmFjazphLHN0eWxlOnIsdWx0aW1hdGU6c30sbixvLGc9ITAsYz0hMCxsPSIiKXtjb25zdCBoPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9bD9gICR7bH1gOiIiO2Zvcihjb25zdCBpIG9mIHQpbi5wdXNoKGBsb2NhbCgke2l9JHtlfSlgKX1pZihlKXtjb25zdCB0PVFyLmdldChlKSxzPWx8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgbHI6cmV0dXJuIkJvbGQiO2Nhc2UgaHI6cmV0dXJuIkl0YWxpYyI7Y2FzZSBDcjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShyKTtPYmplY3QuYXNzaWduKGgsZ2VuZXJhdGVGb250KHQsbixvLGcmJiFhLGMmJiFpLHMpKX1yJiYoaC5zdHlsZT1yKTtzJiYoaC51bHRpbWF0ZT1zKTtpZihnJiZhKXtjb25zdCBlPVFyLmdldChhKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsbixvLGcsYyYmIWksbCk7aC51bHRpbWF0ZXx8PXR9YyYmaSYmbyYmbi5wdXNoKGB1cmwoJHtvfSR7aX0pYCk7cmV0dXJuIGh9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsaSxhLHIscyl7aWYoYS5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1zJiYiVHlwZTEiIT09c3x8IS9eW0EtWl17Nn1cKy8udGVzdChhKXx8KGE9YS5zbGljZSg3KSk7Y29uc3Qgbj1hPW5vcm1hbGl6ZUZvbnROYW1lKGEpO2xldCBvPWUuZ2V0KG4pO2lmKG8pcmV0dXJuIG87bGV0IGc9UXIuZ2V0KGEpO2lmKCFnKWZvcihjb25zdFtlLHRdb2YgRXIpaWYoYS5zdGFydHNXaXRoKGUpKXthPWAke3R9JHthLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtnPVFyLmdldChhKTticmVha31sZXQgYz0hMTtpZighZyl7Zz1Rci5nZXQocik7Yz0hMH1jb25zdCBsPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFnKXtpZighdmFsaWRhdGVGb250TmFtZShhKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHthfWApO2Uuc2V0KG4sbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KGEpLGk9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSkscj10JiZpJiZDcnx8dCYmbHJ8fGkmJmhyfHxjcjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke2x9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6bCxiYXNlRm9udE5hbWU6YSxzcmM6YGxvY2FsKCR7YX0pYCxzdHlsZTpyfTtlLnNldChuLG8pO3JldHVybiBvfWNvbnN0IGg9W107YyYmdmFsaWRhdGVGb250TmFtZShhKSYmaC5wdXNoKGBsb2NhbCgke2F9KWApO2NvbnN0e3N0eWxlOkMsdWx0aW1hdGU6UX09Z2VuZXJhdGVGb250KGcsaCxpKSxFPW51bGw9PT1RLHU9RT8iIjpgLCR7UX1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7bH0ke3V9YCxndWVzc0ZhbGxiYWNrOkUsbG9hZGVkTmFtZTpsLGJhc2VGb250TmFtZTphLHNyYzpoLmpvaW4oIiwiKSxzdHlsZTpDfTtlLnNldChuLG8pO3JldHVybiBvfWNsYXNzIEltYWdlUmVzaXplcntzdGF0aWMjUj0yMDQ4O3N0YXRpYyN5PUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI3k/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvYm1wIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLiNSJiZ0PD10aGlzLiNSKXJldHVybiExO2NvbnN0e01BWF9ESU06aX09dGhpcztpZihlPml8fHQ+aSlyZXR1cm4hMDtjb25zdCBhPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiBhPnRoaXMuTUFYX0FSRUE7aWYoYTx0aGlzLiNSKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuI1I9TWF0aC5tYXgodGhpcy4jUixNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy4jUj10aGlzLl9ndWVzc01heCh0aGlzLiNSLGksMTI4LDApO3JldHVybiBhPih0aGlzLk1BWF9BUkVBPXRoaXMuI1IqKjIpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNSLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jeT10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCksYT1pLmdldENvbnRleHQoIjJkIik7YS5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCByPWEuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107aS53aWR0aD1pLmhlaWdodD0xO3JldHVybiAwIT09cn1jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsaSxhKXtmb3IoO2UraSsxPHQ7KXtjb25zdCBpPU1hdGguZmxvb3IoKGUrdCkvMikscj1hfHxpO3RoaXMuX2FyZUdvb2REaW1zKGkscik/ZT1pOnQ9aX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9PWU7aWYodCppKjQ+eXQpe2NvbnN0IGU9dGhpcy4jTigpO2lmKGUpcmV0dXJuIGV9Y29uc3QgYT10aGlzLl9lbmNvZGVCTVAoKTtsZXQgcixzO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe3I9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOlthLmJ1ZmZlcl19KTtzPXIuZGVjb2RlKCkuY2F0Y2goKGU9Pnt3YXJuKGBCTVAgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkOiAke2V9YCk7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFt0aGlzLl9lbmNvZGVCTVAoKS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpfSkpLmZpbmFsbHkoKCgpPT57ci5jbG9zZSgpfSkpfWVsc2Ugcz1jcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpO2NvbnN0e01BWF9BUkVBOm4sTUFYX0RJTTpvfT1JbWFnZVJlc2l6ZXIsZz1NYXRoLm1heCh0L28saS9vLE1hdGguc3FydCh0KmkvbikpLGM9TWF0aC5tYXgoZywyKSxsPU1hdGgucm91bmQoMTAqKGcrMS4yNSkpLzEwL2MsaD1NYXRoLmZsb29yKE1hdGgubG9nMihsKSksQz1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO0NbMF09YztDLnNwbGljZSgtMSwxLGwvKDE8PGgpKTtsZXQgUT10LEU9aTtjb25zdCB1PWF3YWl0IHM7bGV0IGQ9dS5pbWFnZXx8dTtmb3IoY29uc3QgZSBvZiBDKXtjb25zdCB0PVEsaT1FO1E9TWF0aC5mbG9vcihRL2UpLTE7RT1NYXRoLmZsb29yKEUvZSktMTtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoUSxFKTthLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGQsMCwwLHQsaSwwLDAsUSxFKTtkLmNsb3NlKCk7ZD1hLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfWUuZGF0YT1udWxsO2UuYml0bWFwPWQ7ZS53aWR0aD1RO2UuaGVpZ2h0PUU7cmV0dXJuIGV9I04oKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHtkYXRhOnQsd2lkdGg6aSxoZWlnaHQ6YSxraW5kOnJ9PWUscz1pKmEqNCxuPU1hdGguY2VpbChNYXRoLmxvZzIocy95dCkpLG89aT4+bixnPWE+Pm47bGV0IGMsbD1hO3RyeXtjPW5ldyBVaW50OEFycmF5KHMpfWNhdGNoe2xldCBlPU1hdGguZmxvb3IoTWF0aC5sb2cyKHMrMSkpO2Zvcig7Oyl0cnl7Yz1uZXcgVWludDhBcnJheSgyKiplLTEpO2JyZWFrfWNhdGNoe2UtPTF9bD1NYXRoLmZsb29yKCgyKiplLTEpLyg0KmkpKTtjb25zdCB0PWkqbCo0O3Q8Yy5sZW5ndGgmJihjPW5ldyBVaW50OEFycmF5KHQpKX1jb25zdCBoPW5ldyBVaW50MzJBcnJheShjLmJ1ZmZlciksQz1uZXcgVWludDMyQXJyYXkobypnKTtsZXQgUT0wLEU9MDtjb25zdCB1PU1hdGguY2VpbChhL2wpLGQ9YSVsPT0wP2E6YSVsO2ZvcihsZXQgZT0wO2U8dTtlKyspe2NvbnN0IGE9ZTx1LTE/bDpkOyh7c3JjUG9zOlF9PWNvbnZlcnRUb1JHQkEoe2tpbmQ6cixzcmM6dCxkZXN0Omgsd2lkdGg6aSxoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6UX0pKTtmb3IobGV0IGU9MCx0PWE+Pm47ZTx0O2UrKyl7Y29uc3QgdD1oLnN1YmFycmF5KChlPDxuKSppKTtmb3IobGV0IGU9MDtlPG87ZSsrKUNbRSsrXT10W2U8PG5dfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGcpKXtlLmRhdGE9QztlLndpZHRoPW87ZS5oZWlnaHQ9ZztlLmtpbmQ9UjtyZXR1cm4gbnVsbH1jb25zdCBmPW5ldyBPZmZzY3JlZW5DYW52YXMobyxnKTtmLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KEMuYnVmZmVyKSxvLGcpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Zi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9ZztyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOml9PXRoaXMuX2ltZ0RhdGE7bGV0IGEscj10aGlzLl9pbWdEYXRhLmRhdGEscz1uZXcgVWludDhBcnJheSgwKSxuPXMsbz0wO3N3aXRjaChpKXtjYXNlIFM6e2E9MTtzPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGk9ZSs3Pj4zLG49aSszJi00O2lmKGkhPT1uKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4qdCk7bGV0IGE9MDtmb3IobGV0IHM9MCxvPXQqaTtzPG87cys9aSxhKz1uKWUuc2V0KHIuc3ViYXJyYXkocyxzK2kpLGEpO3I9ZX1icmVha31jYXNlIGs6YT0yNDtpZigzJmUpe2NvbnN0IGk9MyplLGE9aSszJi00LHM9YS1pLG49bmV3IFVpbnQ4QXJyYXkoYSp0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLGE9dCppO2U8YTtlKz1pKXtjb25zdCB0PXIuc3ViYXJyYXkoZSxlK2kpO2ZvcihsZXQgZT0wO2U8aTtlKz0zKXtuW28rK109dFtlKzJdO25bbysrXT10W2UrMV07bltvKytdPXRbZV19bys9c31yPW59ZWxzZSBmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXJbZV07cltlXT1yW2UrMl07cltlKzJdPXR9YnJlYWs7Y2FzZSBSOmE9MzI7bz0zO249bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGk9bmV3IERhdGFWaWV3KG4uYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7aS5zZXRVaW50MzIoMCwyNTUsITApO2kuc2V0VWludDMyKDQsNjUyODAsITApO2kuc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7aS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTtpLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTtpLnNldFVpbnQzMig4LDY1MjgwLCEwKTtpLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBnPTA7Y29uc3QgYz00MCtuLmxlbmd0aCxsPTE0K2Mrcy5sZW5ndGgrci5sZW5ndGgsaD1uZXcgVWludDhBcnJheShsKSxDPW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7Qy5zZXRVaW50MTYoZywxOTc3OCwhMCk7Zys9MjtDLnNldFVpbnQzMihnLGwsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMTQrYytzLmxlbmd0aCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLGMsITApO2crPTQ7Qy5zZXRJbnQzMihnLGUsITApO2crPTQ7Qy5zZXRJbnQzMihnLC10LCEwKTtnKz00O0Muc2V0VWludDE2KGcsMSwhMCk7Zys9MjtDLnNldFVpbnQxNihnLGEsITApO2crPTI7Qy5zZXRVaW50MzIoZyxvLCEwKTtnKz00O0Muc2V0VWludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldEludDMyKGcsMCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLHMubGVuZ3RoLzQsITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O2guc2V0KG4sZyk7Zys9bi5sZW5ndGg7aC5zZXQocyxnKTtnKz1zLmxlbmd0aDtoLnNldChyLGcpO3JldHVybiBofX1jb25zdCB1cj0zMjg1Mzc3NTIwLGRyPTQyOTQ5MDE3NjAsZnI9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTp1cjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOnVyfXVwZGF0ZShlKXtsZXQgdCxpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTtpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPD0yNTUpdFtpKytdPXI7ZWxzZXt0W2krK109cj4+Pjg7dFtpKytdPTI1NSZyfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2k9dC5ieXRlTGVuZ3RofWNvbnN0IGE9aT4+MixyPWktNCphLHM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsYSk7bGV0IG49MCxvPTAsZz10aGlzLmgxLGM9dGhpcy5oMjtjb25zdCBsPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsQz0xMTYwMSxRPTEzNzE1O2ZvcihsZXQgZT0wO2U8YTtlKyspaWYoMSZlKXtuPXNbZV07bj1uKmwmZHJ8bipDJmZyO249bjw8MTV8bj4+PjE3O249bipoJmRyfG4qUSZmcjtnXj1uO2c9Zzw8MTN8Zz4+PjE5O2c9NSpnKzM4NjQyOTIxOTZ9ZWxzZXtvPXNbZV07bz1vKmwmZHJ8bypDJmZyO289bzw8MTV8bz4+PjE3O289bypoJmRyfG8qUSZmcjtjXj1vO2M9Yzw8MTN8Yz4+PjE5O2M9NSpjKzM4NjQyOTIxOTZ9bj0wO3N3aXRjaChyKXtjYXNlIDM6bl49dFs0KmErMl08PDE2O2Nhc2UgMjpuXj10WzQqYSsxXTw8ODtjYXNlIDE6bl49dFs0KmFdO249bipsJmRyfG4qQyZmcjtuPW48PDE1fG4+Pj4xNztuPW4qaCZkcnxuKlEmZnI7MSZhP2dePW46Y149bn10aGlzLmgxPWc7dGhpcy5oMj1jfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJmRyfDM2MDQ1KmUmZnI7dD00MjgzNTQzNTExKnQmZHJ8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmZHIpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZkcnw2MDQ5OSplJmZyO3Q9MzMwMTg4MjM2Nip0JmRyfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJmRyKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxpLGEscil7bGV0IHM9ZTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoLTE7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO3M9c1tpXXx8PVtdfXNbdC5hdCgtMSldPXtjaGVja0ZuOmksaXRlcmF0ZUZuOmEscHJvY2Vzc0ZuOnJ9fWNvbnN0IHByPVtdO2FkZFN0YXRlKHByLFt4QSxIQSxBdCxMQV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUlubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1BdDtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPXItMSxnPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihnPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGM9MDtjb25zdCBsPVtdO2xldCBoPTAsQz0xLFE9MTtmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCB0PWFbbisoZTw8MildLGk9YVtvKyhlPDwyKV1bMF07aWYoQytpLndpZHRoPjFlMyl7Yz1NYXRoLm1heChjLEMpO1ErPWgrMjtDPTA7aD0wfWwucHVzaCh7dHJhbnNmb3JtOnQseDpDLHk6USx3Omkud2lkdGgsaDppLmhlaWdodH0pO0MrPWkud2lkdGgrMjtoPU1hdGgubWF4KGgsaS5oZWlnaHQpfWNvbnN0IEU9TWF0aC5tYXgoYyxDKSsxLHU9UStoKzEsZD1uZXcgVWludDhBcnJheShFKnUqNCksZj1FPDwyO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtvKyhlPDwyKV1bMF0uZGF0YSxpPWxbZV0udzw8MjtsZXQgcj0wLHM9bFtlXS54K2xbZV0ueSpFPDwyO2Quc2V0KHQuc3ViYXJyYXkoMCxpKSxzLWYpO2ZvcihsZXQgYT0wLG49bFtlXS5oO2E8bjthKyspe2Quc2V0KHQuc3ViYXJyYXkocixyK2kpLHMpO3IrPWk7cys9Zn1kLnNldCh0LnN1YmFycmF5KHItaSxyKSxzKTtmb3IoO3M+PTA7KXt0W3MtNF09dFtzXTt0W3MtM109dFtzKzFdO3Rbcy0yXT10W3MrMl07dFtzLTFdPXRbcyszXTt0W3MraV09dFtzK2ktNF07dFtzK2krMV09dFtzK2ktM107dFtzK2krMl09dFtzK2ktMl07dFtzK2krM109dFtzK2ktMV07cy09Zn19Y29uc3QgcD17d2lkdGg6RSxoZWlnaHQ6dX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKEUsdSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShkLmJ1ZmZlciksRSx1KSwwLDApO3AuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7cC5kYXRhPW51bGx9ZWxzZXtwLmtpbmQ9UjtwLmRhdGE9ZH1pLnNwbGljZShzLDQqZyxldCk7YS5zcGxpY2Uocyw0KmcsW3AsbF0pO3JldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLF9lLExBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6cmV0dXJuIGlbdF09PT1IQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1fZTtjYXNlIDM6cmV0dXJuIGlbdF09PT1MQX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9KSwoZnVuY3Rpb24gZm91bmRJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89ci0xO2xldCBnPU1hdGguZmxvb3IoKHQtcykvNCk7aWYoZzwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBjLGwsaD0hMTtjb25zdCBDPWFbb11bMF0sUT1hW25dWzBdLEU9YVtuXVsxXSx1PWFbbl1bMl0sZD1hW25dWzNdO2lmKEU9PT11KXtoPSEwO2M9bis0O2xldCBlPW8rNDtmb3IobGV0IHQ9MTt0PGc7dCsrLGMrPTQsZSs9NCl7bD1hW2NdO2lmKGFbZV1bMF0hPT1DfHxsWzBdIT09UXx8bFsxXSE9PUV8fGxbMl0hPT11fHxsWzNdIT09ZCl7dDwxMD9oPSExOmc9dDticmVha319fWlmKGgpe2c9TWF0aC5taW4oZywxZTMpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSgyKmcpO2M9bjtmb3IobGV0IHQ9MDt0PGc7dCsrLGMrPTQpe2w9YVtjXTtlW3Q8PDFdPWxbNF07ZVsxKyh0PDwxKV09bFs1XX1pLnNwbGljZShzLDQqZyxpdCk7YS5zcGxpY2Uocyw0KmcsW0MsUSxFLHUsZCxlXSl9ZWxzZXtnPU1hdGgubWluKGcsMTAwKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8Zzt0Kyspe2w9YVtuKyh0PDwyKV07Y29uc3QgaT1hW28rKHQ8PDIpXVswXTtlLnB1c2goe2RhdGE6aS5kYXRhLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0LGludGVycG9sYXRlOmkuaW50ZXJwb2xhdGUsY291bnQ6aS5jb3VudCx0cmFuc2Zvcm06bH0pfWkuc3BsaWNlKHMsNCpnLHplKTthLnNwbGljZShzLDQqZyxbZV0pfXJldHVybiBzKzF9KSk7YWRkU3RhdGUocHIsW3hBLEhBLCRlLExBXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxpPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbaV1bMV0mJjA9PT10W2ldWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIGlbdF09PT14QTtjYXNlIDE6aWYoaVt0XSE9PUhBKXJldHVybiExO2NvbnN0IHI9ZS5pQ3Vyci0yLHM9YVtyXVswXSxuPWFbcl1bM107cmV0dXJuIGFbdF1bMF09PT1zJiYwPT09YVt0XVsxXSYmMD09PWFbdF1bMl0mJmFbdF1bM109PT1uO2Nhc2UgMjppZihpW3RdIT09JGUpcmV0dXJuITE7Y29uc3Qgbz1hW2UuaUN1cnItMV1bMF07cmV0dXJuIGFbdF1bMF09PT1vO2Nhc2UgMzpyZXR1cm4gaVt0XT09PUxBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1hW3ItMV1bMF0sZz1hW25dWzBdLGM9YVtuXVszXSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMWUzKTtpZihsPDMpcmV0dXJuIHQtKHQtcyklNDtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtsZXQgQz1uO2ZvcihsZXQgZT0wO2U8bDtlKyssQys9NCl7Y29uc3QgdD1hW0NdO2hbZTw8MV09dFs0XTtoWzErKGU8PDEpXT10WzVdfWNvbnN0IFE9W28sZyxjLGhdO2kuc3BsaWNlKHMsNCpsLHR0KTthLnNwbGljZShzLDQqbCxRKTtyZXR1cm4gcysxfSkpO2FkZFN0YXRlKHByLFt0ZSxvZSxoZSxCZSxpZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PXRlO2Nhc2UgMTpyZXR1cm4gaVt0XT09PW9lO2Nhc2UgMjpyZXR1cm4gaVt0XT09PWhlO2Nhc2UgMzppZihpW3RdIT09QmUpcmV0dXJuITE7Y29uc3Qgcj1lLmlDdXJyLTMscz1hW3JdWzBdLG49YVtyXVsxXTtyZXR1cm4gYVt0XVswXT09PXMmJmFbdF1bMV09PT1uO2Nhc2UgNDpyZXR1cm4gaVt0XT09PWllfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTQsbj1yLTMsbz1yLTIsZz1yLTEsYz1yLGw9YVtuXVswXSxoPWFbbl1bMV07bGV0IEM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS81KSwxZTMpO2lmKEM8MylyZXR1cm4gdC0odC1zKSU1O2xldCBRPXM7aWYocz49NCYmaVtzLTRdPT09aVtuXSYmaVtzLTNdPT09aVtvXSYmaVtzLTJdPT09aVtnXSYmaVtzLTFdPT09aVtjXSYmYVtzLTRdWzBdPT09bCYmYVtzLTRdWzFdPT09aCl7QysrO1EtPTV9bGV0IEU9USs0O2ZvcihsZXQgZT0xO2U8QztlKyspe2kuc3BsaWNlKEUsMyk7YS5zcGxpY2UoRSwzKTtFKz0yfXJldHVybiBFKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsaT1lLmxlbmd0aCxhPXRoaXMuc3RhdGUscj10aGlzLm1hdGNoO2lmKCFhJiYhciYmdCsxPT09aSYmIXByW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9aTtyZXR1cm59Y29uc3Qgcz10aGlzLmNvbnRleHQ7Zm9yKDt0PGk7KXtpZihyKXtpZigoMCxyLml0ZXJhdGVGbikocyx0KSl7dCsrO2NvbnRpbnVlfXQ9KDAsci5wcm9jZXNzRm4pKHMsdCsxKTtpPWUubGVuZ3RoO3I9bnVsbDthPW51bGw7aWYodD49aSlicmVha31hPShhfHxwcilbZVt0XV07aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkpe3MuaUN1cnI9dDt0Kys7aWYoIWEuY2hlY2tGbnx8KDAsYS5jaGVja0ZuKShzKSl7cj1hO2E9bnVsbH1lbHNlIGE9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPWE7dGhpcy5tYXRjaD1yO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJnU/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5vcHRpbWl6ZXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PUxBfHxlPT09aWUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxpLGE9ITEpe2lmKGEpe3RoaXMuYWRkT3AoeEEpO3RoaXMuYWRkT3AoVUEsW1tbIlNNYXNrIiwhMV1dXSl9dm9pZCAwIT09aSYmdGhpcy5hZGRPcChLZSxbIk9DIixpXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoVGUsW10pO2EmJnRoaXMuYWRkT3AoTEEpfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AoREEsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTppLGxlbmd0aDphfT10aGlzO2ZvcihsZXQgcj0wO3I8YTtyKyspc3dpdGNoKHRbcl0pe2Nhc2UgQXQ6Y2FzZSBldDpjYXNlIF9lOmNvbnN0IHQ9aVtyXVswXTshdC5jYWNoZWQmJnQuZGF0YT8uYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJmUucHVzaCh0LmRhdGEuYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBpPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1pO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOml9LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWZ1bmN0aW9uIGRlY29kZUFuZENsYW1wKGUsdCxpLGEpeyhlPXQrZSppKTwwP2U9MDplPmEmJihlPWEpO3JldHVybiBlfWZ1bmN0aW9uIHJlc2l6ZUltYWdlTWFzayhlLHQsaSxhLHIscyl7Y29uc3Qgbj1yKnM7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KG4pOnQ8PTE2P25ldyBVaW50MTZBcnJheShuKTpuZXcgVWludDMyQXJyYXkobik7Y29uc3QgZz1pL3IsYz1hL3M7bGV0IGwsaCxDLFEsRT0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KHIpLGQ9aTtmb3IobD0wO2w8cjtsKyspdVtsXT1NYXRoLmZsb29yKGwqZyk7Zm9yKGw9MDtsPHM7bCsrKXtDPU1hdGguZmxvb3IobCpjKSpkO2ZvcihoPTA7aDxyO2grKyl7UT1DK3VbaF07b1tFKytdPWVbUV19fXJldHVybiBvfWNsYXNzIFBERkltYWdle2NvbnN0cnVjdG9yKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTphPSExLHNtYXNrOnI9bnVsbCxtYXNrOnM9bnVsbCxpc01hc2s6bj0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSl7dGhpcy5pbWFnZT1pO2NvbnN0IGM9aS5kaWN0LGw9Yy5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgaDtpZihsIGluc3RhbmNlb2YgTmFtZSloPWwubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobCkpe2NvbnN0IHQ9ZS5mZXRjaElmUmVmKGxbMF0pO3QgaW5zdGFuY2VvZiBOYW1lJiYoaD10Lm5hbWUpfXN3aXRjaChoKXtjYXNlIkpQWERlY29kZSI6KHt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodCxjb21wb25lbnRzQ291bnQ6aS5udW1Db21wcyxiaXRzUGVyQ29tcG9uZW50OmkuYml0c1BlckNvbXBvbmVudH09SnB4SW1hZ2UucGFyc2VJbWFnZVByb3BlcnRpZXMoaS5zdHJlYW0pKTtpLnN0cmVhbS5yZXNldCgpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmhhcygiU01hc2tJbkRhdGEiKX07YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6aS5iaXRzUGVyQ29tcG9uZW50PTE7aS5udW1Db21wcz0xfWxldCBDPWMuZ2V0KCJXIiwiV2lkdGgiKSxRPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihpLndpZHRoKSYmaS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGkuaGVpZ2h0KSYmaS5oZWlnaHQ+MCYmKGkud2lkdGghPT1DfHxpLmhlaWdodCE9PVEpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO0M9aS53aWR0aDtRPWkuaGVpZ2h0fWlmKEM8MXx8UTwxKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtDfSBvciBoZWlnaHQ6ICR7UX1gKTt0aGlzLndpZHRoPUM7dGhpcy5oZWlnaHQ9UTt0aGlzLmludGVycG9sYXRlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKTt0aGlzLmltYWdlTWFzaz1jLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITE7dGhpcy5tYXR0ZT1jLmdldCgiTWF0dGUiKXx8ITE7bGV0IEU9aS5iaXRzUGVyQ29tcG9uZW50O2lmKCFFKXtFPWMuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iik7aWYoIUUpe2lmKCF0aGlzLmltYWdlTWFzayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAke3RoaXMuaW1hZ2VNYXNrfWApO0U9MX19dGhpcy5icGM9RTtpZighdGhpcy5pbWFnZU1hc2spe2xldCByPWMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpO2NvbnN0IHM9ISFyO2lmKHMpdGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJihyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIikpO2Vsc2UgaWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucylyPU5hbWUuZ2V0KCJEZXZpY2VSR0JBIik7ZWxzZSBzd2l0Y2goaS5udW1Db21wcyl7Y2FzZSAxOnI9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cj1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnI9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSW1hZ2VzIHdpdGggJHtpLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9dGhpcy5jb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnIseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXM/dGhpcy5udW1Db21wOjA7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5pc0luZGV4ZWRDb2xvcm1hcD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX19dGhpcy5kZWNvZGU9Yy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLEUpfHxuJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PEUpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgaT0wLGE9MDtpPHRoaXMuZGVjb2RlLmxlbmd0aDtpKz0yLCsrYSl7Y29uc3Qgcj10aGlzLmRlY29kZVtpXSxzPXRoaXMuZGVjb2RlW2krMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbYV09dD8ocy1yKS9lOnMtcjt0aGlzLmRlY29kZUFkZGVuZHNbYV09dD9yOmUqcn19aWYocil0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7ZWxzZSBpZihzKWlmKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtzLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTp3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9c31zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgbj1pO2xldCBvPW51bGwsZz1udWxsO2NvbnN0IGM9aS5kaWN0LmdldCgiU01hc2siKSxsPWkuZGljdC5nZXQoIk1hc2siKTtjP2MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP289Yzp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOmwmJihsIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShsKT9nPWw6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphLHNtYXNrOm8sbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpyLGludGVycG9sYXRlOnN9KXtjb25zdCBuPSh0Kzc+PjMpKmksbz1lLmJ5dGVMZW5ndGg7bGV0IGcsYztpZighYXx8ciYmIShuPT09bykpaWYocil7Zz1uZXcgVWludDhBcnJheShuKTtnLnNldChlKTtnLmZpbGwoMjU1LG8pfWVsc2UgZz1uZXcgVWludDhBcnJheShlKTtlbHNlIGc9ZTtpZihyKWZvcihjPTA7YzxvO2MrKylnW2NdXj0yNTU7cmV0dXJue2RhdGE6Zyx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnIsaW50ZXJwb2xhdGU6cyxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpuPSExfSl7Y29uc3Qgbz0xPT09dCYmMT09PWkmJnI9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKG8pcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6b307aWYobil7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQodCxpKSl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0OmEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpyfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpSLGRhdGE6YSx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnN9KX1jb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxuPWEuZ2V0Q29udGV4dCgiMmQiKSxvPW4uY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6by5kYXRhLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6cn0pO24ucHV0SW1hZ2VEYXRhKG8sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6cyxiaXRtYXA6YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6cixpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludGVycG9sYXRlOnN9KX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxpPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscj10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxzPSgxPDx0KS0xO2xldCBuLG87aWYoMT09PXQpe2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl09KyFlW25dO3JldHVybn1sZXQgZz0wO2ZvcihuPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O248bztuKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7ZVtnXT1kZWNvZGVBbmRDbGFtcChlW2ddLGFbdF0sclt0XSxzKTtnKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMubnVtQ29tcHMscz1pKmEqcjtsZXQgbixvPTA7bj10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgZz1pKnIsYz0oMTw8dCktMTtsZXQgbCxoLEM9MDtpZigxPT09dCl7bGV0IHQsaSxyO2ZvcihsZXQgcz0wO3M8YTtzKyspe2k9QysoLTgmZyk7cj1DK2c7Zm9yKDtDPGk7KXtoPWVbbysrXTtuW0NdPWg+PjcmMTtuW0MrMV09aD4+NiYxO25bQysyXT1oPj41JjE7bltDKzNdPWg+PjQmMTtuW0MrNF09aD4+MyYxO25bQys1XT1oPj4yJjE7bltDKzZdPWg+PjEmMTtuW0MrN109MSZoO0MrPTh9aWYoQzxyKXtoPWVbbysrXTt0PTEyODtmb3IoO0M8cjspe25bQysrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBpPTA7aD0wO2ZvcihDPTAsbD1zO0M8bDsrK0Mpe2lmKEMlZz09MCl7aD0wO2k9MH1mb3IoO2k8dDspe2g9aDw8OHxlW28rK107aSs9OH1jb25zdCBhPWktdDtsZXQgcj1oPj5hO3I8MD9yPTA6cj5jJiYocj1jKTtuW0NdPXI7aCY9KDE8PGEpLTE7aT1hfX1yZXR1cm4gbn1hc3luYyBmaWxsT3BhY2l0eShlLHQsaSxhLHIpe2NvbnN0IHM9dGhpcy5zbWFzayxuPXRoaXMubWFzaztsZXQgbyxnLGMsbCxoLEM7aWYocyl7Zz1zLndpZHRoO2M9cy5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTthd2FpdCBzLmZpbGxHcmF5QnVmZmVyKG8pO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8scy5icGMsZyxjLHQsaSkpfWVsc2UgaWYobilpZihuIGluc3RhbmNlb2YgUERGSW1hZ2Upe2c9bi53aWR0aDtjPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7bi5udW1Db21wcz0xO2F3YWl0IG4uZmlsbEdyYXlCdWZmZXIobyk7Zm9yKGw9MCxoPWcqYztsPGg7KytsKW9bbF09MjU1LW9bbF07Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxnLGMsdCxpKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihsPTAsaD10Kmk7bDxoOysrbCl7bGV0IHQ9MDtjb25zdCBpPWwqZTtmb3IoQz0wO0M8ZTsrK0Mpe2NvbnN0IGU9cltpK0NdLGE9MipDO2lmKGU8blthXXx8ZT5uW2ErMV0pe3Q9MjU1O2JyZWFrfX1vW2xdPXR9fX1pZihvKWZvcihsPTAsQz0zLGg9dCphO2w8aDsrK2wsQys9NCllW0NdPW9bbF07ZWxzZSBmb3IobD0wLEM9MyxoPXQqYTtsPGg7KytsLEMrPTQpZVtDXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCByPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKSxzPXJbMF0sbj1yWzFdLG89clsyXSxnPXQqaSo0O2ZvcihsZXQgdD0wO3Q8Zzt0Kz00KXtjb25zdCBpPWVbdCszXTtpZigwPT09aSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGE9MjU1L2k7ZVt0XT0oZVt0XS1zKSphK3M7ZVt0KzFdPShlW3QrMV0tbikqYStuO2VbdCsyXT0oZVt0KzJdLW8pKmErb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgaT10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxyPXt3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLG49dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGc9dGhpcy5icGMsYz1uKnMqZys3Pj4zLGw9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoaSxhKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Iua2luZD1SO2NvbnN0IGU9ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKm4qNCx7fSk7cmV0dXJuIHQ/bD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UociwhMSk6dGhpcy5jcmVhdGVCaXRtYXAoUixpLGEsZSk6cn1pZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1nP2U9UzoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Z3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9ayk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmk9PT1uJiZhPT09byl7Y29uc3Qgcz1hd2FpdCB0aGlzLiNHKG4sbyk7aWYocylyZXR1cm4gcztjb25zdCBnPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse30pO2lmKHQpcmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOmcsa2luZDplLHdpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxuLG8sZyk7ci5raW5kPWU7ci5kYXRhPWc7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1TLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qYztpZih0JiYhbCl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuI0coaSxhKTtpZih0KXJldHVybiB0O2NvbnN0IHI9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDppLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQkE6ITB9KTtyZXR1cm4gdGhpcy5jcmVhdGVCaXRtYXAoUixpLGEscil9fWVsc2Ugc3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTM7Y2FzZSJEZXZpY2VSR0IiOmNhc2UiRGV2aWNlQ01ZSyI6ci5raW5kPWs7ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6aSxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6ITB9KTtyZXR1cm4gbD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocik6cn19fWNvbnN0IGg9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qYyx7aW50ZXJuYWw6ITB9KSxDPTB8aC5sZW5ndGgvYyphL28sUT10aGlzLmdldENvbXBvbmVudHMoaCk7bGV0IEUsdSxkLGYscCxtO2lmKHQmJiFsKXtkPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKTtmPWQuZ2V0Q29udGV4dCgiMmQiKTtwPWYuY3JlYXRlSW1hZ2VEYXRhKGksYSk7bT1wLmRhdGF9ci5raW5kPVI7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhbHx8KG09bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSo0KSk7RT0xO3U9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eShtLGksYSxDLFEpfWVsc2V7aWYoIXR8fGwpe3Iua2luZD1rO209bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGkqYSozKTtFPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkobS5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO0U9MX11PSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKFEpO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKG0sbixvLGksYSxDLGcsUSxFKTt1JiZ0aGlzLnVuZG9QcmVibGVuZChtLGksQyk7aWYodCYmIWwpe2YucHV0SW1hZ2VEYXRhKHAsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmksaGVpZ2h0OmEsYml0bWFwOmQudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19ci5kYXRhPW07cmV0dXJuIGw/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcihgUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJHt0fWApO2NvbnN0IGk9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5icGMscz1pKnQqcis3Pj4zLG49YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGEqcyx7aW50ZXJuYWw6ITB9KSxvPXRoaXMuZ2V0Q29tcG9uZW50cyhuKTtsZXQgZyxjO2lmKDE9PT1yKXtjPWkqYTtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihnPTA7ZzxjOysrZyllW2ddPW9bZ10tMSYyNTU7ZWxzZSBmb3IoZz0wO2c8YzsrK2cpZVtnXT0yNTUmLW9bZ107cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG8pO2M9aSphO2NvbnN0IGw9MjU1LygoMTw8ciktMSk7Zm9yKGc9MDtnPGM7KytnKWVbZ109bCpvW2ddfWNyZWF0ZUJpdG1hcChlLHQsaSxhKXtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxzPXIuZ2V0Q29udGV4dCgiMmQiKTtsZXQgbjtpZihlPT09UiluPW5ldyBJbWFnZURhdGEoYSx0LGkpO2Vsc2V7bj1zLmNyZWF0ZUltYWdlRGF0YSh0LGkpO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6YSxkZXN0Om5ldyBVaW50MzJBcnJheShuLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfXMucHV0SW1hZ2VEYXRhKG4sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksYml0bWFwOnIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjRyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5pbWFnZS5nZXRUcmFuc2ZlcmFibGVJbWFnZSgpO3JldHVybiBpP3tkYXRhOm51bGwsd2lkdGg6ZSxoZWlnaHQ6dCxiaXRtYXA6aSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfTpudWxsfWFzeW5jIGdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDppLGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOnI9ITEsaW50ZXJuYWw6cz0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1pfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIWE7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIXI7Y29uc3Qgbj1hd2FpdCB0aGlzLmltYWdlLmdldEltYWdlRGF0YShlLHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpO2lmKHN8fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pcmV0dXJuIG47YXNzZXJ0KG4gaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobil9fWNvbnN0IG1yPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSx5cj0xLHdyPTIsYnI9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciI7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In1pZih0KXJldHVybiBudWxsO3dhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkTG9jYWxseUNhY2hlZEltYWdlT3BzKGUsdCl7dC5vYmpJZCYmZS5hZGREZXBlbmRlbmN5KHQub2JqSWQpO2UuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQsdC5oYXNNYXNrKTt0LmZuPT09X2UmJnQuYXJnc1swXT8uY291bnQ+MCYmdC5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmksaWRGYWN0b3J5OmEsZm9udENhY2hlOnIsYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6ZyxvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWk7dGhpcy5pZEZhY3Rvcnk9YTt0aGlzLmZvbnRDYWNoZT1yO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1zO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW47dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Zzt0aGlzLm9wdGlvbnM9Y3x8bXI7dGhpcy50eXBlM0ZvbnRSZWZzPW51bGw7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBSZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyk7SnBlZ1N0cmVhbS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGk9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCBhPVtlXSxyPXRoaXMueHJlZjtmb3IoO2EubGVuZ3RoOyl7Y29uc3QgZT1hLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcz1lLmdldCgiWE9iamVjdCIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiBzLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihpLmhhcyhlKSljb250aW51ZTt0cnl7ZT1yLmZldGNoKGUpfWNhdGNoKHQpe2kucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmaS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFpLmhhcyh0Lm9iaklkKSkpe2EucHVzaCh0KTt0Lm9iaklkJiZpLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGkpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMjTShlKXtjb25zdCB0PWF3YWl0IGZldGNoKGUpO2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0IHQuYXJyYXlCdWZmZXIoKSl9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgaTtpZihudWxsIT09dGhpcy5vcHRpb25zLmNNYXBVcmwpe2k9e2NNYXBEYXRhOmF3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH19ZWxzZSBpPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsaSk7cmV0dXJuIGl9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBpPVRpKClbZV07bGV0IGE7dHJ5e2E9bnVsbCE9PXRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsP2F3YWl0IHRoaXMuI00oYCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHtpfWApOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoU3RhbmRhcmRGb250RGF0YSIse2ZpbGVuYW1lOml9KX1jYXRjaChlKXt3YXJuKGUpO3JldHVybiBudWxsfXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLGEpO3JldHVybiBuZXcgU3RyZWFtKGEpfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz10LmRpY3QsZz1sb29rdXBNYXRyaXgoby5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbCxoO28uaGFzKCJPQyIpJiYobD1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKG8uZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1sJiZhLmFkZE9wKEtlLFsiT0MiLGxdKTtjb25zdCBDPW8uZ2V0KCJHcm91cCIpO2lmKEMpe2g9e21hdHJpeDpnLGJib3g6YyxzbWFzazppLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShDLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7aC5pc29sYXRlZD1DLmdldCgiSSIpfHwhMTtoLmtub2Nrb3V0PUMuZ2V0KCJLIil8fCExO2lmKEMuaGFzKCJDUyIpKXtjb25zdCBpPUMuZ2V0UmF3KCJDUyIpLGE9Q29sb3JTcGFjZS5nZXRDYWNoZWQoaSx0aGlzLnhyZWYsbik7dD1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6aSxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl9fWlmKGk/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtpLmJhY2tkcm9wPXQuZ2V0UmdiKGkuYmFja2Ryb3AsMCl9YS5hZGRPcChqZSxbaF0pfWNvbnN0IFE9Qz9bZyxudWxsXTpbZyxjXTthLmFkZE9wKFBlLFEpO2F3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOm8uZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6c30pO2EuYWRkT3AoV2UsW10pO0MmJmEuYWRkT3AoWGUsW2hdKTt2b2lkIDAhPT1sJiZhLmFkZE9wKFRlLFtdKX1fc2VuZEltZ0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8aT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLGEpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sYSl9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTppPSExLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OnIsbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IG89dC5kaWN0LGc9by5vYmpJZCxjPW8uZ2V0KCJXIiwiV2lkdGgiKSxsPW8uZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWN8fCJudW1iZXIiIT10eXBlb2YgY3x8IWx8fCJudW1iZXIiIT10eXBlb2YgbCl7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGg9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWgmJmMqbD5oKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IEM7by5oYXMoIk9DIikmJihDPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO2xldCBRLEU7aWYoby5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPW8uZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxpPWMrNz4+MyxuPXQuZ2V0Qnl0ZXMoaSpsKSxoPW8uZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe1E9UERGSW1hZ2UuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6bix3aWR0aDpjLGhlaWdodDpsLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpoPy5bMF0+MCxpbnRlcnBvbGF0ZTplfSk7US5jYWNoZWQ9ISFyO0U9W1FdO2EuYWRkSW1hZ2VPcHMoX2UsRSxDKTtpZihyKXtjb25zdCBlPXtmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59UT1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OmwsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoUS5pc1NpbmdsZU9wYXF1ZVBpeGVsKXthLmFkZEltYWdlT3BzKGF0LFtdLEMpO2lmKHIpe2NvbnN0IGU9e2ZuOmF0LGFyZ3M6W10sb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDthLmFkZERlcGVuZGVuY3kodSk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO3RoaXMuX3NlbmRJbWdEYXRhKHUsUSk7RT1be2RhdGE6dSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodCxpbnRlcnBvbGF0ZTpRLmludGVycG9sYXRlLGNvdW50OjF9XTthLmFkZEltYWdlT3BzKF9lLEUsQyk7aWYocil7Y29uc3QgZT17b2JqSWQ6dSxmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1vLmhhcygiU01hc2siKXx8by5oYXMoIk1hc2siKTtpZihpJiZjK2w8MjAwJiYhdSl7dHJ5e2NvbnN0IHI9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyhBdCxbUV0sQyl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgZD1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGY9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KWQ9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtkfWA7ZWxzZSBpZihyJiZnKXtmPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihmKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7ZD1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2R9YH19YS5hZGREZXBlbmRlbmN5KGQpO0U9W2QsYyxsXTthLmFkZEltYWdlT3BzKCRlLEUsQyx1KTtpZihmKXtpZih0aGlzLmdsb2JhbEltYWdlQ2FjaGUuaGFzRGVjb2RlRmFpbGVkKGcpKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDpkLGZuOiRlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6QyxoYXNNYXNrOnUsYnl0ZVNpemU6MH0pO3RoaXMuX3NlbmRJbWdEYXRhKGQsbnVsbCxmKTtyZXR1cm59aWYoYypsPjI1ZTR8fHUpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbZCwiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjpnfV0pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOmQsZm46JGUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpDLGhhc01hc2s6dSxieXRlU2l6ZTowfSk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTppLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pLnRoZW4oKGFzeW5jIGU9PntRPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO1EucmVmPWc7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsUS5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoZCxRLGYpfSkpLmNhdGNoKChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHtkfSI6ICIke2V9Ii5gKTtnJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGcpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YShkLG51bGwsZil9KSk7aWYocil7Y29uc3QgZT17b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1fTtzLnNldChyLGcsZSk7aWYoZyl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGcsZSk7ZiYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6ZCxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsaGFzTWFzazp1LGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxpLGEscixzKXtjb25zdCBuPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGc9ZS5nZXQoIlRSIik7aWYoaXNQREZGdW5jdGlvbihnKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGcpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtpWzBdPWEvMjU1O2UoaSwwLGksMCk7dFthXT0yNTUqaVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQsbixvLGksYSxyLnN0YXRlLmNsb25lKCkscyl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCFpc1BERkZ1bmN0aW9uKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGk9W107bGV0IGE9MCxyPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTthKys7aWYoaXNOYW1lKHQsIklkZW50aXR5Iikpe2kucHVzaChudWxsKTtjb250aW51ZX1pZighaXNQREZGdW5jdGlvbih0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbj1uZXcgVWludDhBcnJheSgyNTYpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe29bMF09ZS8yNTU7cyhvLDAsbywwKTtuW2VdPTI1NSpvWzBdfDB9aS5wdXNoKG4pO3IrK31yZXR1cm4gMSE9PWEmJjQhPT1hfHwwPT09cj9udWxsOml9aGFuZGxlVGlsaW5nVHlwZShlLHQsaSxhLHIscyxuLG8pe2NvbnN0IGc9bmV3IE9wZXJhdG9yTGlzdCxjPURpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbci5nZXQoIlJlc291cmNlcyIpLGldfSk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06YSx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0Omd9KS50aGVuKChmdW5jdGlvbigpe2NvbnN0IGk9Zy5nZXRJUigpLGE9Z2V0VGlsaW5nUGF0dGVybklSKGkscix0KTtzLmFkZERlcGVuZGVuY2llcyhnLmRlcGVuZGVuY2llcyk7cy5hZGRPcChlLGEpO3Iub2JqSWQmJm8uc2V0KG51bGwsci5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6aSxkaWN0OnJ9KX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBoYW5kbGVUaWxpbmdUeXBlIC0gaWdub3JpbmcgcGF0dGVybjogIiR7ZX0iLmApfX0pKX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxpLGEscixzLG49bnVsbCxvPW51bGwpe2NvbnN0IGc9dD8uWzBdaW5zdGFuY2VvZiBOYW1lP3RbMF0ubmFtZTpudWxsO2xldCBjPWF3YWl0IHRoaXMubG9hZEZvbnQoZyxpLGUsbixvKTtpZihjLmZvbnQuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IGMubG9hZFR5cGUzRGF0YSh0aGlzLGUscik7YS5hZGREZXBlbmRlbmNpZXMoYy50eXBlM0RlcGVuZGVuY2llcyl9Y2F0Y2goZSl7Yz1uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBUeXBlMyBmb250IGxvYWQgZXJyb3I6ICR7ZX1gKSxkaWN0OmMuZm9udCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pfXMuZm9udD1jLmZvbnQ7Yy5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGMubG9hZGVkTmFtZX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgaT10LmZvbnQsYT1pLmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZEKXx8IlBhdHRlcm4iPT09dC5maWxsQ29sb3JTcGFjZS5uYW1lfHxpLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJlBhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHMoaSxhLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpfXJldHVybiBhfWVuc3VyZVN0YXRlRm9udChlKXtpZihlLmZvbnQpcmV0dXJuO2NvbnN0IHQ9bmV3IEZvcm1hdEVycm9yKCJNaXNzaW5nIHNldEZvbnQgKFRmKSBvcGVyYXRvciBiZWZvcmUgdGV4dCByZW5kZXJpbmcgb3BlcmF0b3IuIik7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDt3YXJuKGBlbnN1cmVTdGF0ZUZvbnQ6ICIke3R9Ii5gKX1hc3luYyBzZXRHU3RhdGUoe3Jlc291cmNlczplLGdTdGF0ZTp0LG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OmEsdGFzazpyLHN0YXRlTWFuYWdlcjpzLGxvY2FsR1N0YXRlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSl7Y29uc3QgZz10Lm9iaklkO2xldCBjPSEwO2NvbnN0IGw9W107bGV0IGg9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0IGEgb2YgdC5nZXRLZXlzKCkpe2NvbnN0IG49dC5nZXQoYSk7c3dpdGNoKGEpe2Nhc2UiVHlwZSI6YnJlYWs7Y2FzZSJMVyI6Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpsLnB1c2goW2Esbl0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU2V0Rm9udChlLG51bGwsblswXSxpLHIscy5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7aS5hZGREZXBlbmRlbmN5KGUpO2wucHVzaChbYSxbZSxuWzFdXV0pfSkpKSk7YnJlYWs7Y2FzZSJCTSI6bC5wdXNoKFthLG5vcm1hbGl6ZUJsZW5kTW9kZShuKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKGlzTmFtZShuLCJOb25lIikpe2wucHVzaChbYSwhMV0pO2JyZWFrfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjPSExO2g9aC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhuLGUsaSxyLHMsbykpKTtsLnB1c2goW2EsITBdKX1lbHNlIHdhcm4oIlVuc3VwcG9ydGVkIFNNYXNrIHR5cGUiKTticmVhaztjYXNlIlRSIjpjb25zdCB0PXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihuKTtsLnB1c2goW2EsdF0pO2JyZWFrO2Nhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiU00iOmNhc2UiU0EiOmNhc2UiQUlTIjpjYXNlIlRLIjppbmZvKCJncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSk7YnJlYWs7ZGVmYXVsdDppbmZvKCJVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKX19YXdhaXQgaDtsLmxlbmd0aD4wJiZpLmFkZE9wKFVBLFtsXSk7YyYmbi5zZXQoYSxnLGwpfWxvYWRGb250KGUsdCxpLGE9bnVsbCxyPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgRXJyb3JGb250KGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pO2xldCBzO2lmKHQpdCBpbnN0YW5jZW9mIFJlZiYmKHM9dCk7ZWxzZXtjb25zdCB0PWkuZ2V0KCJGb250Iik7dCYmKHM9dC5nZXRSYXcoZSkpfWlmKHMpe2lmKHRoaXMudHlwZTNGb250UmVmcz8uaGFzKHMpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMocykpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKTt0cnl7dD10aGlzLnhyZWYuZmV0Y2hJZlJlZihzKX1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIGxvb2t1cCBmYWlsZWQ6ICIke2V9Ii5gKX19aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1hfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpuLHJlc29sdmU6b309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGc7dHJ5e2c9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Zy5jc3NGb250SW5mbz1yfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmMsaGFzaDpsfT1nLGg9cyBpbnN0YW5jZW9mIFJlZjtsZXQgQztpZihsJiZjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW2xdKXtjb25zdCB0PWVbbF0uYWxpYXNSZWY7aWYoaCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhzLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyl9fWVsc2UgZVtsXT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtoJiYoZVtsXS5hbGlhc1JlZj1zKTtDPWVbbF0uZm9udElEfWVsc2UgQz10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQoQz8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGgpdGhpcy5mb250Q2FjaGUucHV0KHMsbik7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke0N9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxuKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtDfWA7dGhpcy50cmFuc2xhdGVGb250KGcpLnRoZW4oKGU9PntvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBufWJ1aWxkUGF0aChlLHQsaSxhPSExKXtjb25zdCByPWUubGVuZ3RoLTE7aXx8KGk9W10pO2lmKHI8MHx8ZS5mbkFycmF5W3JdIT09cnQpe2lmKGEpe3dhcm4oYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3AoeEEsbnVsbCl9bGV0IHI7c3dpdGNoKHQpe2Nhc2UgT0E6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107cj1bTWF0aC5taW4oaVswXSxlKSxNYXRoLm1pbihpWzFdLHQpLE1hdGgubWF4KGlbMF0sZSksTWF0aC5tYXgoaVsxXSx0KV07YnJlYWs7Y2FzZSBKQTpjYXNlIHZBOnI9W2lbMF0saVsxXSxpWzBdLGlbMV1dO2JyZWFrO2RlZmF1bHQ6cj1bMS8wLDEvMCwtMS8wLC0xLzBdfWUuYWRkT3AocnQsW1t0XSxpLHJdKTthJiZlLmFkZE9wKExBLG51bGwpfWVsc2V7Y29uc3QgYT1lLmFyZ3NBcnJheVtyXTthWzBdLnB1c2godCk7YVsxXS5wdXNoKC4uLmkpO2NvbnN0IHM9YVsyXTtzd2l0Y2godCl7Y2FzZSBPQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtzWzBdPU1hdGgubWluKHNbMF0saVswXSxlKTtzWzFdPU1hdGgubWluKHNbMV0saVsxXSx0KTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSxlKTtzWzNdPU1hdGgubWF4KHNbM10saVsxXSx0KTticmVhaztjYXNlIEpBOmNhc2UgdkE6c1swXT1NYXRoLm1pbihzWzBdLGlbMF0pO3NbMV09TWF0aC5taW4oc1sxXSxpWzFdKTtzWzJdPU1hdGgubWF4KHNbMl0saVswXSk7c1szXT1NYXRoLm1heChzWzNdLGlbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtyZXR1cm4gQ29sb3JTcGFjZS5wYXJzZUFzeW5jKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLmNhdGNoKChlPT57aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcixzPWEuZ2V0KGUpO2lmKHMpcmV0dXJuIHM7dHJ5e3I9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksaSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1zPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHM9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtzfWApO2Euc2V0KGUscyk7dGhpcy5wYXJzaW5nVHlwZTNGb250P3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtzLCJQYXR0ZXJuIixyXSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3MsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHJdKTtyZXR1cm4gc31oYW5kbGVDb2xvck4oZSx0LGksYSxyLHMsbixvLGcsYyl7Y29uc3QgbD1pLnBvcCgpO2lmKGwgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXIuZ2V0UmF3KGwubmFtZSksQz1oIGluc3RhbmNlb2YgUmVmJiZnLmdldEJ5UmVmKGgpO2lmKEMpdHJ5e2NvbnN0IHI9YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsLHM9Z2V0VGlsaW5nUGF0dGVybklSKEMub3BlcmF0b3JMaXN0SVIsQy5kaWN0LHIpO2UuYWRkT3AodCxzKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IFE9dGhpcy54cmVmLmZldGNoSWZSZWYoaCk7aWYoUSl7Y29uc3Qgcj1RIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9RLmRpY3Q6USxsPXIuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGw9PT15cil7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scyxRLHIsZSxuLGcpfWlmKGw9PT13cil7Y29uc3QgaT1yLmdldCgiU2hhZGluZyIpLGE9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6aSxyZXNvdXJjZXM6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpjfSk7aWYoYSl7Y29uc3QgaT1sb29rdXBNYXRyaXgoci5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIsYSxpXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtsfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7bH1gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsaSl7aWYoKyt0PjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEoYTwyKSYmciBpbnN0YW5jZW9mIE5hbWUpe3N3aXRjaChyLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6aS5wdXNoKHIubmFtZSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJbnZhbGlkIG9wZXJhdG9yICR7ci5uYW1lfSBpbiB2aXNpYmlsaXR5IGV4cHJlc3Npb25gKTtyZXR1cm59Zm9yKGxldCByPTE7cjxhO3IrKyl7Y29uc3QgYT1lW3JdLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoYSk7aWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT1bXTtpLnB1c2goZSk7dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihzLHQsZSl9ZWxzZSBhIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goYS50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGk7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2k9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKX1lbHNle2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTtpPWV9Y29uc3QgYT1pLmdldCgiVHlwZSIpPy5uYW1lO2lmKCJPQ0ciPT09YSlyZXR1cm57dHlwZTphLGlkOmkub2JqSWR9O2lmKCJPQ01EIj09PWEpe2NvbnN0IGU9aS5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KTtpZih0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9aS5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBpIG9mIHQpZS5wdXNoKGkudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6YSxpZHM6ZSxwb2xpY3k6aS5nZXQoIlAiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6YSxpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczppLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpyPW51bGwsZmFsbGJhY2tGb250RGljdDpzPW51bGx9KXtpfHw9RGljdC5lbXB0eTtyfHw9bmV3IEV2YWxTdGF0ZTtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBuPXRoaXMsbz10aGlzLnhyZWY7bGV0IGc9ITE7Y29uc3QgYz1uZXcgTG9jYWxJbWFnZUNhY2hlLGw9bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLGg9bmV3IExvY2FsR1N0YXRlQ2FjaGUsQz1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUsUT1uZXcgTWFwLEU9aS5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSx1PWkuZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHksZD1uZXcgU3RhdGVNYW5hZ2VyKHIpLGY9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLG8sZCkscD1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD1mLnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylhLmFkZE9wKExBLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxhLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxyKX1jYXRjaChlKXtyKGUpfX0pLHIpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtwLnJlc2V0KCk7Y29uc3QgbT17fTtsZXQgeSx3LGIsRCxTLGs7Zm9yKDshKHk9cC5jaGVjaygpKTspe20uYXJncz1udWxsO2lmKCFmLnJlYWQobSkpYnJlYWs7bGV0IGU9bS5hcmdzLHI9bS5mbjtzd2l0Y2goMHxyKXtjYXNlIEhlOms9ZVswXWluc3RhbmNlb2YgTmFtZTtTPWVbMF0ubmFtZTtpZihrKXtjb25zdCB0PWMuZ2V0QnlOYW1lKFMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpZighayl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBzPUUuZ2V0UmF3KFMpO2lmKHMgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9Yy5nZXRCeVJlZihzKXx8bi5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKHMpO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2UoKTtyZXR1cm59Y29uc3QgaT1uLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShzLG4ucGFnZUluZGV4KTtpZihpKXthLmFkZERlcGVuZGVuY3koaS5vYmpJZCk7YS5hZGRJbWFnZU9wcyhpLmZuLGkuYXJncyxpLm9wdGlvbmFsQ29udGVudCxpLmhhc01hc2spO2UoKTtyZXR1cm59cz1vLmZldGNoKHMpfWlmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBnPXMuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpaWYoIkltYWdlIiE9PWcubmFtZSl7aWYoIlBTIiE9PWcubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtnLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOnMsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbihlLHIpO2Vsc2V7ZC5zYXZlKCk7bi5idWlsZEZvcm1YT2JqZWN0KGkscyxudWxsLGEsdCxkLnN0YXRlLmNsb25lKCksbCkudGhlbigoZnVuY3Rpb24oKXtkLnJlc3RvcmUoKTtlKCl9KSxyKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBvZTpjb25zdCBmPWVbMV07bmV4dChuLmhhbmRsZVNldEZvbnQoaSxlLG51bGwsYSx0LGQuc3RhdGUscykudGhlbigoZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO2EuYWRkT3Aob2UsW2UsZl0pfSkpKTtyZXR1cm47Y2FzZSB0ZTpnPSEwO2JyZWFrO2Nhc2UgaWU6Zz0hMTticmVhaztjYXNlIExlOmNvbnN0IHA9ZVswXS5jYWNoZUtleTtpZihwKXtjb25zdCB0PWMuZ2V0QnlOYW1lKHApO2lmKHQpe2FkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhhLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cCxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkpO3JldHVybjtjYXNlIEJlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWVbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7YnJlYWs7Y2FzZSBRZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX1jb25zdCBtPVtdLHk9ZC5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD9tLnB1c2goLi4ubi5oYW5kbGVUZXh0KHQseSkpOiJudW1iZXIiPT10eXBlb2YgdCYmbS5wdXNoKHQpO2VbMF09bTtyPUJlO2JyZWFrO2Nhc2UgRWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgdWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChDZSk7YS5hZGRPcChyZSxbZS5zaGlmdCgpXSk7YS5hZGRPcChhZSxbZS5zaGlmdCgpXSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgZ2U6ZC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbWU6e2NvbnN0IHQ9Q29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxvLGwpO2lmKHQpe2Quc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKChmdW5jdGlvbihlKXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBwZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sbCk7aWYodCl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSkudGhlbigoZnVuY3Rpb24oZSl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBiZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9UmU7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFNlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgRmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIEdlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgTmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBrZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpEPWQuc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1SZTticmVha31lPVtdO3I9bnQ7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsRGUsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2Ugd2U6RD1kLnN0YXRlLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlO2lmKCFEKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVha31lPVtdO3I9c3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsd2UsZSxELHUsaSx0LGwsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPWtlO2JyZWFrO2Nhc2UgTWU6bGV0IFI7dHJ5e2NvbnN0IHQ9aS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtSPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIVIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBOPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlIscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFOKWNvbnRpbnVlO2U9W05dO3I9TWU7YnJlYWs7Y2FzZSBVQTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1oLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKFVBLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoUyk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyx0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpoLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KS50aGVuKGUscil9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIEpBOmNhc2UgdkE6Y2FzZSBZQTpjYXNlIEtBOmNhc2UgVEE6Y2FzZSBxQTpjYXNlIE9BOm4uYnVpbGRQYXRoKGEscixlLGcpO2NvbnRpbnVlO2Nhc2UgSmU6Y2FzZSB2ZTpjYXNlIHFlOmNhc2UgT2U6Y29udGludWU7Y2FzZSBLZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChLZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKEtlLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19YS5hZGRPcChyLGUpfWlmKHkpbmV4dChicik7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbGFuZzpsPW51bGwsbWFya2VkQ29udGVudERhdGE6aD1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOkM9ITEsa2VlcFdoaXRlU3BhY2U6UT0hMX0pe2l8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihofHw9e2xldmVsOjB9KTtjb25zdCBFPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmx9LHU9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sZD1bIiAiLCIgIl07bGV0IGY9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oZisxKSUyLGk9IiAiIT09ZFtmXSYmIiAiPT09ZFt0XTtkW2ZdPWU7Zj10O3JldHVybiFRJiZpfWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hUSYmIiAiIT09ZFtmXSYmIiAiPT09ZFsoZisxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2RbMF09ZFsxXT0iICI7Zj0wfWNvbnN0IHA9dGhpcyxtPXRoaXMueHJlZix5PVtdO2xldCB3PW51bGw7Y29uc3QgYj1uZXcgTG9jYWxJbWFnZUNhY2hlLEQ9bmV3IExvY2FsR1N0YXRlQ2FjaGUsUz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbSxzKTtsZXQgaztmdW5jdGlvbiBwdXNoV2hpdGVzcGFjZSh7d2lkdGg6ZT0wLGhlaWdodDp0PTAsdHJhbnNmb3JtOmk9dS5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOmE9dS5mb250TmFtZX0pe0UuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6ZSxoZWlnaHQ6dCx0cmFuc2Zvcm06aSxmb250TmFtZTphLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1rLmZvbnQsdD1bay5mb250U2l6ZSprLnRleHRIU2NhbGUsMCwwLGsuZm9udFNpemUsMCxrLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoay5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmIWlzQXJyYXlFcXVhbChrLmZvbnRNYXRyaXgscikpe2NvbnN0IGk9ZS5iYm94WzNdLWUuYmJveFsxXTtpPjAmJih0WzNdKj1pKmsuZm9udE1hdHJpeFszXSl9cmV0dXJuIFV0aWwudHJhbnNmb3JtKGsuY3RtLFV0aWwudHJhbnNmb3JtKGsudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gZW5zdXJlVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZClyZXR1cm4gdTtjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1rO2lmKCFnLmhhcyh0KSl7Zy5hZGQodCk7RS5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9O2lmKHAub3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzJiZlLnN5c3RlbUZvbnRJbmZvKXtjb25zdCBpPUUuc3R5bGVzW3RdO2kuZm9udFN1YnN0aXR1dGlvbj1lLnN5c3RlbUZvbnRJbmZvLmNzcztpLmZvbnRTdWJzdGl0dXRpb25Mb2FkZWROYW1lPWUuc3lzdGVtRm9udEluZm8ubG9hZGVkTmFtZX19dS5mb250TmFtZT10O2NvbnN0IGk9dS50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXt1LndpZHRoPXUudG90YWxXaWR0aD1NYXRoLmh5cG90KGlbMF0saVsxXSk7dS5oZWlnaHQ9dS50b3RhbEhlaWdodD0wO3UudmVydGljYWw9ITB9ZWxzZXt1LndpZHRoPXUudG90YWxXaWR0aD0wO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChpWzJdLGlbM10pO3UudmVydGljYWw9ITF9Y29uc3QgYT1NYXRoLmh5cG90KGsudGV4dExpbmVNYXRyaXhbMF0say50ZXh0TGluZU1hdHJpeFsxXSkscj1NYXRoLmh5cG90KGsuY3RtWzBdLGsuY3RtWzFdKTt1LnRleHRBZHZhbmNlU2NhbGU9ciphO2NvbnN0e2ZvbnRTaXplOnN9PWs7dS50cmFja2luZ1NwYWNlTWluPS4xMDIqczt1Lm5vdEFTcGFjZT0uMDMqczt1Lm5lZ2F0aXZlU3BhY2VNYXg9LS4yKnM7dS5zcGFjZUluRmxvd01pbj0uMTAyKnM7dS5zcGFjZUluRmxvd01heD0uNipzO3UuaGFzRU9MPSExO3UuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIHV9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIXUuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSkqZTtpZih0IT09dS50ZXh0QWR2YW5jZVNjYWxlKXtpZih1LnZlcnRpY2FsKXt1LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU7dS5oZWlnaHQ9MH1lbHNle3UudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7dS53aWR0aD0wfXUudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBydW5CaWRpVHJhbnNmb3JtKGUpe2xldCB0PWUuc3RyLmpvaW4oIiIpO0N8fCh0PWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIUN0KXtDdD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7QnQ9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwoQ3QsKChlLHQsaSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpCdC5nZXQoaSkpKX0odCkpO2NvbnN0IGk9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6aS5zdHIsZGlyOmkuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLGEpe2NvbnN0IHM9YXdhaXQgcC5sb2FkRm9udChlLGEsaSk7aWYocy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBzLmxvYWRUeXBlM0RhdGEocCxpLHQpfWNhdGNoe31rLmxvYWRlZE5hbWU9cy5sb2FkZWROYW1lO2suZm9udD1zLmZvbnQ7ay5mb250TWF0cml4PXMuZm9udC5mb250TWF0cml4fHxyfWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxpKXtjb25zdCBhPU1hdGguaHlwb3QoaVswXSxpWzFdKTtyZXR1cm5bKGlbMF0qZStpWzFdKnQpL2EsKGlbMl0qZStpWzNdKnQpL2FdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgaT10WzRdLGE9dFs1XTtpZihrLmZvbnQ/LnZlcnRpY2FsKXtpZihpPGNbMF18fGk+Y1syXXx8YStlPGNbMV18fGE+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGkrZTxjWzBdfHxpPmNbMl18fGE8Y1sxXXx8YT5jWzNdKXJldHVybiExO2lmKCFrLmZvbnR8fCF1LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IHI9dS5wcmV2VHJhbnNmb3JtWzRdLHM9dS5wcmV2VHJhbnNmb3JtWzVdO2lmKHI9PT1pJiZzPT09YSlyZXR1cm4hMDtsZXQgbj0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/bj10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYobj10WzFdPjA/OTA6MjcwKTtzd2l0Y2gobil7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2ksYV09W2EsaV07W3Isc109W3Mscl07YnJlYWs7Y2FzZSAxODA6W2ksYSxyLHNdPVstaSwtYSwtciwtc107YnJlYWs7Y2FzZSAyNzA6W2ksYV09Wy1hLC1pXTtbcixzXT1bLXMsLXJdO2JyZWFrO2RlZmF1bHQ6W2ksYV09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxhLHQpO1tyLHNdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKHIscyx1LnByZXZUcmFuc2Zvcm0pfWlmKGsuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS91LnRleHRBZHZhbmNlU2NhbGUsdD1pLXIsbj1NYXRoLnNpZ24odS5oZWlnaHQpO2lmKGU8bip1Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41KnUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT51LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHUuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx1LnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqdS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShpLXIpL3UudGV4dEFkdmFuY2VTY2FsZSxnPWEtcyxsPU1hdGguc2lnbih1LndpZHRoKTtpZihvPGwqdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhnKT4uNSp1LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGcpPnUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1sKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PWwqdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8sdS5wcmV2VHJhbnNmb3JtLGwpKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB1LndpZHRoKz1vO01hdGguYWJzKGcpPi4yNSp1LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGk9ay5mb250O2lmKCFlKXtjb25zdCBlPWsuY2hhclNwYWNpbmcrdDtlJiYoaS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6ay50cmFuc2xhdGVUZXh0TWF0cml4KGUqay50ZXh0SFNjYWxlLDApKTtRJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3QgYT1pLmNoYXJzVG9HbHlwaHMoZSkscj1rLmZvbnRNYXRyaXhbMF0qay5mb250U2l6ZTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKyspe2NvbnN0IG49YVtlXSx7Y2F0ZWdvcnk6b309bjtpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgZz1rLmNoYXJTcGFjaW5nKyhlKzE9PT1zP3Q6MCksYz1uLndpZHRoO2kudmVydGljYWwmJihjPW4udm1ldHJpYz9uLnZtZXRyaWNbMF06LWMpO2xldCBsPWMqcjtpZighUSYmby5pc1doaXRlc3BhY2Upe2lmKGkudmVydGljYWwpe2crPS1sK2sud29yZFNwYWNpbmc7ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpfWVsc2V7Zys9bCtrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGwpKXtpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChsKmsudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBoPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJihsPTApO2lmKGkudmVydGljYWwpe2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGwpO2w9TWF0aC5hYnMobCk7aC5oZWlnaHQrPWx9ZWxzZXtsKj1rLnRleHRIU2NhbGU7ay50cmFuc2xhdGVUZXh0TWF0cml4KGwsMCk7aC53aWR0aCs9bH1sJiYoaC5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IEM9bi51bmljb2RlO3NhdmVMYXN0Q2hhcihDKSYmaC5zdHIucHVzaCgiICIpO2guc3RyLnB1c2goQyk7ZyYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYodS5pbml0aWFsaXplZCl7dS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIEUuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmsubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxpKXtpZihpKnUuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWkqdS5zcGFjZUluRmxvd01heCl7aWYodS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt1LnN0ci5wdXNoKCIgIil9cmV0dXJuITF9Y29uc3QgYT11LmZvbnROYW1lO2xldCByPTA7aWYodS52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih1LmluaXRpYWxpemVkJiZ1LnN0cil7dS52ZXJ0aWNhbD91LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU6dS50b3RhbFdpZHRoKz11LndpZHRoKnUudGV4dEFkdmFuY2VTY2FsZTtFLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh1KSk7dS5pbml0aWFsaXplZD0hMTt1LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9RS5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe28uZW5xdWV1ZShFLHQpO0UuaXRlbXM9W107RS5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgUj1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3Qsby5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ui5yZXNldCgpO2NvbnN0IHU9e307bGV0IGQsZixOLEc9W107Zm9yKDshKGQ9Ui5jaGVjaygpKTspe0cubGVuZ3RoPTA7dS5hcmdzPUc7aWYoIVMucmVhZCh1KSlicmVhaztjb25zdCBlPWs7az1zLnN0YXRlO2NvbnN0IHI9dS5mbjtHPXUuYXJncztzd2l0Y2goMHxyKXtjYXNlIG9lOmNvbnN0IHI9R1swXS5uYW1lLHU9R1sxXTtpZihrLmZvbnQmJnI9PT1rLmZvbnROYW1lJiZ1PT09ay5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9cjtrLmZvbnRTaXplPXU7bmV4dChoYW5kbGVTZXRGb250KHIsbnVsbCkpO3JldHVybjtjYXNlIEllOmsudGV4dFJpc2U9R1swXTticmVhaztjYXNlIHNlOmsudGV4dEhTY2FsZT1HWzBdLzEwMDticmVhaztjYXNlIG5lOmsubGVhZGluZz1HWzBdO2JyZWFrO2Nhc2UgY2U6ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBsZTprLmxlYWRpbmc9LUdbMV07ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChHWzBdLEdbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBDZTprLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBoZTprLnNldFRleHRNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO2suc2V0VGV4dExpbmVNYXRyaXgoR1swXSxHWzFdLEdbMl0sR1szXSxHWzRdLEdbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgYWU6ay5jaGFyU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgcmU6ay53b3JkU3BhY2luZz1HWzBdO2JyZWFrO2Nhc2UgdGU6ay50ZXh0TWF0cml4PWEuc2xpY2UoKTtrLnRleHRMaW5lTWF0cml4PWEuc2xpY2UoKTticmVhaztjYXNlIFFlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGQ9KGsuZm9udC52ZXJ0aWNhbD8xOi0xKSprLmZvbnRTaXplLzFlMyxTPUdbMF07Zm9yKGxldCBlPTAsdD1TLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PVNbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXkucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0KmR9KX19aWYoeS5sZW5ndGg+MCl7Y29uc3QgZT15LmpvaW4oIiIpO3kubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIEJlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBFZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOkdbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHVlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWsud29yZFNwYWNpbmc9R1swXTtrLmNoYXJTcGFjaW5nPUdbMV07ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpHWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO3c/Pz1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5O049R1swXWluc3RhbmNlb2YgTmFtZTtmPUdbMF0ubmFtZTtpZihOJiZiLmdldEJ5TmFtZShmKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGEpe2lmKCFOKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHI9dy5nZXRSYXcoZik7aWYociBpbnN0YW5jZW9mIFJlZil7aWYoYi5nZXRCeVJlZihyKSl7ZSgpO3JldHVybn1pZihwLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShyLHAucGFnZUluZGV4KSl7ZSgpO3JldHVybn1yPW0uZmV0Y2gocil9aWYoIShyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IEU9ci5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoRSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PUUubmFtZSl7Yi5zZXQoZixyLmRpY3Qub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3QgdT1zLnN0YXRlLmNsb25lKCksZD1uZXcgU3RhdGVNYW5hZ2VyKHUpLHk9bG9va3VwTWF0cml4KHIuZGljdC5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7eSYmZC50cmFuc2Zvcm0oeSk7ZW5xdWV1ZUNodW5rKCk7Y29uc3QgRD17ZW5xdWV1ZUludm9rZWQ6ITEsZW5xdWV1ZShlLHQpe3RoaXMuZW5xdWV1ZUludm9rZWQ9ITA7by5lbnF1ZXVlKGUsdCl9LGdldCBkZXNpcmVkU2l6ZSgpe3JldHVybiBvLmRlc2lyZWRTaXplfSxnZXQgcmVhZHkoKXtyZXR1cm4gby5yZWFkeX19O3AuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpyLHRhc2s6dCxyZXNvdXJjZXM6ci5kaWN0LmdldCgiUmVzb3VyY2VzIil8fGksc3RhdGVNYW5hZ2VyOmQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixzaW5rOkQsc2VlblN0eWxlczpnLHZpZXdCb3g6YyxsYW5nOmwsbWFya2VkQ29udGVudERhdGE6aCxkaXNhYmxlTm9ybWFsaXphdGlvbjpDLGtlZXBXaGl0ZVNwYWNlOlF9KS50aGVuKChmdW5jdGlvbigpe0QuZW5xdWV1ZUludm9rZWR8fGIuc2V0KGYsci5kaWN0Lm9iaklkLCEwKTtlKCl9KSxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgVUE6Tj1HWzBdaW5zdGFuY2VvZiBOYW1lO2Y9R1swXS5uYW1lO2lmKE4mJkQuZ2V0QnlOYW1lKGYpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIU4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGE9aS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcj1hLmdldChmKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9ci5nZXQoIkZvbnQiKTtpZihzKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9bnVsbDtrLmZvbnRTaXplPXNbMV07aGFuZGxlU2V0Rm9udChudWxsLHNbMF0pLnRoZW4oZSx0KX1lbHNle0Quc2V0KGYsci5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighcC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBZZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztFLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOkdbMF1pbnN0YW5jZW9mIE5hbWU/R1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEtlOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO2xldCBlPW51bGw7R1sxXWluc3RhbmNlb2YgRGljdCYmKGU9R1sxXS5nZXQoIk1DSUQiKSk7RS5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtwLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzpHWzBdaW5zdGFuY2VvZiBOYW1lP0dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBUZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1oLmxldmVsKWJyZWFrO2gubGV2ZWwtLTtFLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSBMQTohZXx8ZS5mb250PT09ay5mb250JiZlLmZvbnRTaXplPT09ay5mb250U2l6ZSYmZS5mb250TmFtZT09PWsuZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoRS5pdGVtcy5sZW5ndGg+PW8uZGVzaXJlZFNpemUpe2Q9ITA7YnJlYWt9fWlmKGQpbmV4dChicik7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBpPXRoaXMueHJlZjtsZXQgYTtjb25zdCByPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGk9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTtpIGluc3RhbmNlb2YgRGljdCYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmkuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgcz1bXTtsZXQgbixvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe249ZS5nZXQoIkVuY29kaW5nIik7aWYobiBpbnN0YW5jZW9mIERpY3Qpe289bi5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYobi5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9bi5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtzW3QrK109ZS5uYW1lfX19fWVsc2UgaWYobiBpbnN0YW5jZW9mIE5hbWUpbz1uLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGc9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxjPVBpKClbdC5uYW1lXTtvJiZnJiZjJiYobz1udWxsKTtpZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7Y29uc3QgZT0hISh0LmZsYWdzJkhpKSxpPSEhKHQuZmxhZ3MmSmkpO249Qmk7IlRydWVUeXBlIiE9PXQudHlwZXx8aXx8KG49UWkpO2lmKGV8fGMpe249Q2k7ZyYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/bj1FaTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/bj11aTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYobj1RaSkpfXQuZGVmYXVsdEVuY29kaW5nPW59dC5kaWZmZXJlbmNlcz1zO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxzLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHI7Y29uc3QgbD1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWw7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxsKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgaT1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscj1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBuPURpKCk7Zm9yKGNvbnN0IHMgaW4gYSl7bGV0IG89YVtzXTtpZigiIj09PW8pY29udGludWU7bGV0IGc9bltvXTtpZih2b2lkIDAhPT1nKXtpW3NdPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk7Y29udGludWV9bGV0IGM9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgaT1vLnN1YnN0cmluZygxKTtpZih0KXtjPXBhcnNlSW50KGksMTYpO2JyZWFrfWM9K2k7aWYoTnVtYmVyLmlzTmFOKGMpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGksMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmc9Z2V0VW5pY29kZUZvckdseXBoKG8sbik7LTEhPT1nJiYoYz1nKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjppW3NdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihjPjAmJmM8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoYykpe2lmKHImJmM9PT0rcyl7Y29uc3QgZT1nZXRFbmNvZGluZyhyKTtpZihlJiYobz1lW3NdKSl7aVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10pO2NvbnRpbnVlfX1pW3NdPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpfX1yZXR1cm4gaX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzppfT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke2l9LVVDUzJgKSxyPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxzPVtdLG49W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBpPXIubG9va3VwKHQpO2lmKGkpe24ubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9MiluLnB1c2goKGkuY2hhckNvZGVBdChlKTw8OCkraS5jaGFyQ29kZUF0KGUrMSkpO3NbZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5uKX19KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAocyl9cmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1hc3luYyByZWFkVG9Vbmljb2RlKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcD9uZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IFRvVW5pY29kZU1hcCh0LmdldE1hcCgpKX1pZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl0cnl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7aWYodCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcClyZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtpW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBpPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JmkpKXthLnB1c2goaSk7Y29udGludWV9ZSs9Mjtjb25zdCByPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJmkpPDwxMCkrKDEwMjMmcikrNjU1MzYpfWlbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoaSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgaT1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthKytdPDw4fGVbYV0scz1hPj4xOygwIT09cnx8dC5oYXMocykpJiYoaVtzXT1yKX1yZXR1cm4gaX1leHRyYWN0V2lkdGhzKGUsdCxpKXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj1bXSxzPTA7Y29uc3Qgbj1bXTtsZXQgbztpZihpLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtzPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGc9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcihsZXQgZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKGdbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgaT1hLmZldGNoSWZSZWYoZ1tlXSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCBpPWEuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGkmJihyW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKWJyZWFrO3tjb25zdCBzPWEuZmV0Y2hJZlJlZihnWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygcyljb250aW51ZTtmb3IobGV0IGU9dDtlPD1pO2UrKylyW2VdPXN9fX1pZihpLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBpPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1baVsxXSwuNSpzLGlbMF1dO2k9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihpW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHI9YS5mZXRjaElmUmVmKGlbZV0pO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPVthLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlKytdKSxhLmZldGNoSWZSZWYocltlXSldO2lzTnVtYmVyQXJyYXkoaSxudWxsKSYmKG5bdF09aSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocikpYnJlYWs7e2NvbnN0IHM9W2EuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXI7ZSsrKW5bZV09c319fX19ZWxzZXtjb25zdCBuPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT1pLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBpPWEuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGkmJihyW2VdPWkpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtzPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGkpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgZz0hMCxjPXM7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKHQpaWYoYyl7aWYoYyE9PXQpe2c9ITE7YnJlYWt9fWVsc2UgYz10fWc/aS5mbGFnc3w9TWk6aS5mbGFncyY9fk1pO2kuZGVmYXVsdFdpZHRoPXM7aS53aWR0aHM9cjtpLmRlZmF1bHRWTWV0cmljcz1vO2kudm1ldHJpY3M9bn1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIE9pKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPSExO2xldCByPUtpKClbZV18fGU7Y29uc3Qgcz1WaSgpO3IgaW4gc3x8KHI9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBuPXNbcl07aWYoIm51bWJlciI9PXR5cGVvZiBuKXt0PW47YT0hMH1lbHNlIGk9bigpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6aX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHI9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9pW3RdPWVbYVt0XV06dCBpbiByJiZlW3JbdF1dJiYoaVt0XT1lW3JbdF1dKTtyZXR1cm4gaX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHI9ITE7aWYoIlR5cGUwIj09PWkubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2k9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cj0hMH1sZXQgcz1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9MCk7bGV0IG49ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49cj82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksZz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBpPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGkgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGkubmFtZSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGkudG9TdHJpbmcoKSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBpLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9pW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGlbYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShpLmpvaW4oKSl9YS51cGRhdGUoYCR7c30tJHtufWApO2lmKGcgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWcuc3RyfHxnLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBnIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUoZy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHIpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgaT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgaSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmkucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7aS5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCByPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtyIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUoci5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnIsdHlwZTppLm5hbWUsZmlyc3RDaGFyOnMsbGFzdENoYXI6bix0b1VuaWNvZGU6ZyxoYXNoOmE/YS5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDppLGNvbXBvc2l0ZTphLHR5cGU6cyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGNzc0ZvbnRJbmZvOmN9KXtjb25zdCBsPSJUeXBlMyI9PT1zO2lmKCFlKXtpZighbCl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGE9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscj1lLnNwbGl0KCItIiwxKVswXSxjPSh0aGlzLmlzU2VyaWZGb250KHIpP3hpOjApfChhLm1vbm9zcGFjZT9NaTowKXwoUGkoKVtyXT9IaTpKaSksaD17dHlwZTpzLG5hbWU6ZSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczphLndpZHRocyxkZWZhdWx0V2lkdGg6YS5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpjLGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6bH0sQz10LmdldCgiV2lkdGhzIiksUT1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBFPW51bGw7aWYoUSl7RT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShRKTtoLmlzSW50ZXJuYWxGb250PSEhRX0haC5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoaC5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsUSxzKSk7Y29uc3QgdT1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGgpO2lmKEFycmF5LmlzQXJyYXkoQykpe2NvbnN0IGU9W107bGV0IHQ9bjtmb3IoY29uc3QgaSBvZiBDKXtjb25zdCBhPXRoaXMueHJlZi5mZXRjaElmUmVmKGkpOyJudW1iZXIiPT10eXBlb2YgYSYmKGVbdF09YSk7dCsrfXUud2lkdGhzPWV9ZWxzZSB1LndpZHRocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGEud2lkdGhzLHUpO3JldHVybiBuZXcgRm9udChlLEUsdSl9e2NvbnN0IGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJGb250QkJveCIpLFswLDAsMCwwXSk7KGU9bmV3IERpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLE5hbWUuZ2V0KHMpKTtlLnNldCgiRm9udEJCb3giLGkpfX1sZXQgaD1lLmdldCgiRm9udE5hbWUiKSxDPXQuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgaCYmKGg9TmFtZS5nZXQoaCkpOyJzdHJpbmciPT10eXBlb2YgQyYmKEM9TmFtZS5nZXQoQykpO2NvbnN0IFE9aD8ubmFtZSxFPUM/Lm5hbWU7aWYoIWwmJlEhPT1FKXtpbmZvKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtRfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke0V9Ii5gKTtRJiZFJiYoRS5zdGFydHNXaXRoKFEpfHwhaXNLbm93bkZvbnROYW1lKFEpJiZpc0tub3duRm9udE5hbWUoRSkpJiYoaD1udWxsKX1ofHw9QztpZighKGggaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7bGV0IHUsZCxmLHAsbTt0cnl7dT1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKTtpZih1KXtpZighKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIHNob3VsZCBiZSBhIHN0cmVhbSIpO2lmKHUuaXNFbXB0eSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZvbnRGaWxlIGlzIGVtcHR5Iil9fWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke2gubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO3U9bnVsbH1sZXQgeT0hMSx3PW51bGwsYj1udWxsO2lmKHUpe2lmKHUuZGljdCl7Y29uc3QgZT11LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihkPWUubmFtZSk7Zj11LmRpY3QuZ2V0KCJMZW5ndGgxIik7cD11LmRpY3QuZ2V0KCJMZW5ndGgyIik7bT11LmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoYyl7Y29uc3QgZT1nZXRYZmFGb250TmFtZShoLm5hbWUpO2lmKGUpe2MuZm9udEZhbWlseT1gJHtjLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Yy5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt3PWUuZmFjdG9yc3x8bnVsbDt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7eT0hIXU7aT10PWdldFhmYUZvbnREaWN0KGgubmFtZSk7YT0hMH19ZWxzZSBpZighbCl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSk7aWYoZSl7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTt5PSEhdX0heSYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoYj1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHMpKX1jb25zdCBEPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksciksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94Iiksdm9pZCAwKTtsZXQgaz1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBrJiYoaz12b2lkIDApO2xldCBSPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj12b2lkIDApO2xldCBOPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBOJiYoTj0wKTtsZXQgRz1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBHJiYoRz0wKTtsZXQgTT1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKE0pfHwoTT0wKTtsZXQgVT1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIFUmJihVPTApO2NvbnN0IHg9e3R5cGU6cyxuYW1lOmgubmFtZSxzdWJ0eXBlOmQsZmlsZTp1LGxlbmd0aDE6ZixsZW5ndGgyOnAsbGVuZ3RoMzptLGlzSW50ZXJuYWxGb250OnksbG9hZGVkTmFtZTppLmxvYWRlZE5hbWUsY29tcG9zaXRlOmEsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OkQsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6ZyxiYm94OlMsYXNjZW50OmssZGVzY2VudDpSLHhIZWlnaHQ6TixjYXBIZWlnaHQ6RyxmbGFnczpNLGl0YWxpY0FuZ2xlOlUsaXNUeXBlM0ZvbnQ6bCxjc3NGb250SW5mbzpjLHNjYWxlRmFjdG9yczp3LHN5c3RlbUZvbnRJbmZvOmJ9O2lmKGEpe2NvbnN0IGU9aS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJih4LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7eC5jTWFwPXQ7eC52ZXJ0aWNhbD14LmNNYXAudmVydGljYWx9Y29uc3QgTD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LHgpO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsTCk7cmV0dXJuIG5ldyBGb250KGgubmFtZSx1LEwpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsaSxhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtpLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250e2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6aSxldmFsdWF0b3JPcHRpb25zOmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9aTt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPWF8fG1yO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxpKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBhPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHI9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXIuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnIucHV0KHRoaXMuZGljdC5vYmpJZCk7YS50eXBlM0ZvbnRSZWZzPXI7Y29uc3Qgcz10aGlzLmZvbnQsbj10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGc9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksYz10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxsPU9iamVjdC5jcmVhdGUobnVsbCksaD1VdGlsLm5vcm1hbGl6ZVJlY3Qocy5iYm94fHxbMCwwLDAsMF0pLEM9aFsyXS1oWzBdLFE9aFszXS1oWzFdLEU9TWF0aC5oeXBvdChDLFEpO2Zvcihjb25zdCBlIG9mIGcuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Zy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBhLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9PntyLmZuQXJyYXlbMF09PT1mZSYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhyLEUpO2xbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKW4uYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdDtsW2VdPWkuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPW8udGhlbigoKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWw7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlLHQ9TmFOKXtjb25zdCBpPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksYT1pWzJdLWlbMF0scj1pWzNdLWlbMV0scz1NYXRoLmh5cG90KGEscik7aWYoMD09PWF8fDA9PT1yKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGlbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxpWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0saVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGlbM10pfWxldCBuPTAsbz1lLmxlbmd0aDtmb3IoO248bzspe3N3aXRjaChlLmZuQXJyYXlbbl0pe2Nhc2UgZmU6YnJlYWs7Y2FzZSBwZTpjYXNlIG1lOmNhc2UgeWU6Y2FzZSB3ZTpjYXNlIGJlOmNhc2UgRGU6Y2FzZSBGZTpjYXNlIFNlOmNhc2Uga2U6Y2FzZSBSZTpjYXNlIE5lOmNhc2UgR2U6Y2FzZSBNZTpjYXNlIEdBOmUuZm5BcnJheS5zcGxpY2UobiwxKTtlLmFyZ3NBcnJheS5zcGxpY2UobiwxKTtvLS07Y29udGludWU7Y2FzZSBVQTpjb25zdFt0XT1lLmFyZ3NBcnJheVtuXTtsZXQgaT0wLGE9dC5sZW5ndGg7Zm9yKDtpPGE7KXtjb25zdFtlXT10W2ldO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGksMSk7YS0tO2NvbnRpbnVlfWkrK319bisrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoYSk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9cjt0aGlzLnRleHRNYXRyaXg9YS5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9YS5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TWF0cml4O25bMF09ZTtuWzFdPXQ7blsyXT1pO25bM109YTtuWzRdPXI7bls1XT1zfXNldFRleHRMaW5lTWF0cml4KGUsdCxpLGEscixzKXtjb25zdCBuPXRoaXMudGV4dExpbmVNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGk9dGhpcy50ZXh0TWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShhKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPWI7dGhpcy5fZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTt0aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3RoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbH1nZXQgZmlsbENvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yU3BhY2V9c2V0IGZpbGxDb2xvclNwYWNlKGUpe3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPWV9Z2V0IHN0cm9rZUNvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlQ29sb3JTcGFjZX1zZXQgc3Ryb2tlQ29sb3JTcGFjZShlKXt0aGlzLl9zdHJva2VDb2xvclNwYWNlPXRoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9ZX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6U0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6a0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6UkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6TkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOkdBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOk1BLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpVQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDp4QSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDpMQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6SEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6SkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6dkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6WUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6S0EsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6VEEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6cUEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOk9BLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOiRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOmVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDp0ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6aWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDpyZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6c2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOm5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpvZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6Z2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOkllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpjZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6bGUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOmhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOkNlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpCZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6UWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpFZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOnVlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDpkZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6ZmUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6eWUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDp3ZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOmJlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6RGUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOkZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOlNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDprZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6UmUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6TmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6R2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOk1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6eGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOkxlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpIZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6SmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOnZlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpLZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOlRlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpxZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscj1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXIpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcz1yLmlkLG49ci5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1zPj1KQSYmczw9JEE7aWYoci52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09RXQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgeEE6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgTEE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgSEE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIG9lOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgeEE6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBMQTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBoZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBvZTpjb25zdFtlLHJdPXM7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBtZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIGJlOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIEJlOmNhc2UgUWU6Y2FzZSBFZTpjYXNlIHVlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxyPW51bGw7Zm9yKGNvbnN0W2Usc11vZiBpKWlmKGEpaWYoZT09PWErci5sZW5ndGgpci5wdXNoKHMpO2Vsc2V7dC5wdXNoKGEscik7YT1lO3I9W3NdfWVsc2V7YT1lO3I9W3NdfWEmJnQucHVzaChhLHIpO2Uuc2V0KCJXIix0KTtjb25zdCBzPW5ldyBEaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLHIsbyxnXT1lO2xldCBjPW8tYSxsPWctcjt0JTE4MCE9MCYmKFtjLGxdPVtsLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLGwrbippLWhdLGJib3g6WzAsMCxjLGxdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGwsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEscixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBsPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtsPU1hdGgubWF4KGwsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWwqPWEvMWUzO2NvbnN0W2gsQyxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1DO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7bD51JiYoZj11L2wpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1uKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihyLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpTfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IGs9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7a30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBSPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixSLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsUyk7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRz1uZXcgU3RyaW5nU3RyZWFtKFIpO0cuZGljdD1OO3JldHVybiBHfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWl9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsaT1uZXcgUmVmU2V0O2kucHV0KHRoaXMucm9vdCk7Y29uc3QgYT1bdGhpcy5yb290XTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCByPXQuZmV0Y2hJZlJlZihhLnNoaWZ0KCkpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKHIuaGFzKCJLaWRzIikpe2NvbnN0IGU9ci5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihpLmhhcyh0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTthLnB1c2godCk7aS5wdXQodCl9Y29udGludWV9Y29uc3Qgcz1yLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKWZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krPTIpZS5zZXQodC5mZXRjaElmUmVmKHNbaV0pLHQuZmV0Y2hJZlJlZihzW2krMV0pKX1yZXR1cm4gZX1nZXRSYXcoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgaT10LmZldGNoSWZSZWYodGhpcy5yb290KSxhPTA7Zm9yKDtpLmhhcygiS2lkcyIpOyl7aWYoKythPjEwKXt3YXJuKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgcj1pLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO2xldCBzPTAsbj1yLmxlbmd0aC0xO2Zvcig7czw9bjspe2NvbnN0IGE9cytuPj4xLG89dC5mZXRjaElmUmVmKHJbYV0pLGc9by5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGdbMF0pKW49YS0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihnWzFdKSkpe2k9bzticmVha31zPWErMX19aWYocz5uKXJldHVybiBudWxsfWNvbnN0IHI9aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShyKSl7bGV0IGk9MCxhPXIubGVuZ3RoLTI7Zm9yKDtpPD1hOyl7Y29uc3Qgcz1pK2E+PjEsbj1zKygxJnMpLG89dC5mZXRjaElmUmVmKHJbbl0pO2lmKGU8bylhPW4tMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gcltuKzFdO2k9bisyfX19cmV0dXJuIG51bGx9Z2V0KGUpe3JldHVybiB0aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmdldFJhdyhlKSl9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7dWE9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXt1dD1PYmplY3QuY3JlYXRlKG51bGwpO2R0PU9iamVjdC5jcmVhdGUobnVsbCk7ZnQ9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7TmkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3Q/ZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbDpudWxsfWNsYXNzIEZpbGVTcGVjeyNVPSExO2NvbnN0cnVjdG9yKGUsdCxpPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7aXx8KGUuaGFzKCJFRiIpP3RoaXMuI1U9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI1UpcmV0dXJuIG51bGw7dGhpcy5fY29udGVudFJlZnx8PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290Py5nZXQoIkVGIikpO2xldCBlPW51bGw7aWYodGhpcy5fY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLl9jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTp3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlIHdhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IGRlc2NyaXB0aW9uKCl7bGV0IGU9IiI7Y29uc3QgdD10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkpO3JldHVybiBzaGFkb3codGhpcywiZGVzY3JpcHRpb24iLGUpfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cmF3RmlsZW5hbWU6dGhpcy5maWxlbmFtZSxmaWxlbmFtZTooZT10aGlzLmZpbGVuYW1lLGUuc3Vic3RyaW5nKGUubGFzdEluZGV4T2YoIi8iKSsxKSksY29udGVudDp0aGlzLmNvbnRlbnQsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbn07dmFyIGV9fWNvbnN0IERyPTAsRnI9LTIsU3I9LTMsa3I9LTQsUnI9LTUsTnI9LTYsR3I9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgaT1lW3RdO3JldHVybiIgIj09PWl8fCJcbiI9PT1pfHwiXHIiPT09aXx8Ilx0Ij09PWl9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGk9W107bGV0IGE9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7c2tpcFdzKCk7Zm9yKDthPGUubGVuZ3RoJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdJiYiPyIhPT1lW2FdOyl7c2tpcFdzKCk7bGV0IHQ9IiIscj0iIjtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj0iIT09ZVthXTspe3QrPWVbYV07KythfXNraXBXcygpO2lmKCI9IiE9PWVbYV0pcmV0dXJuIG51bGw7KythO3NraXBXcygpO2NvbnN0IHM9ZVthXTtpZignIichPT1zJiYiJyIhPT1zKXJldHVybiBudWxsO2NvbnN0IG49ZS5pbmRleE9mKHMsKythKTtpZihuPDApcmV0dXJuIG51bGw7cj1lLnN1YnN0cmluZyhhLG4pO2kucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKX0pO2E9bisxO3NraXBXcygpfXJldHVybntuYW1lOnIsYXR0cmlidXRlczppLHBhcnNlZDphLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBpPXQ7Zm9yKDtpPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsaSkmJiI+IiE9PWVbaV0mJiI/IiE9PWVbaV0mJiIvIiE9PWVbaV07KSsraTtjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7aTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsaSk7KSsraX0oKTtjb25zdCByPWk7Zm9yKDtpPGUubGVuZ3RoJiYoIj8iIT09ZVtpXXx8Ij4iIT09ZVtpKzFdKTspKytpO3JldHVybntuYW1lOmEsdmFsdWU6ZS5zdWJzdHJpbmcocixpKSxwYXJzZWQ6aS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBpPXQ7aWYoIjwiPT09ZVt0XSl7KytpO2xldCB0O3N3aXRjaChlW2ldKXtjYXNlIi8iOisraTt0PWUuaW5kZXhPZigiPiIsaSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoR3IpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhpLHQpKTtpPXQrMTticmVhaztjYXNlIj8iOisraTtjb25zdCBhPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsaSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGkrYS5wYXJzZWQsaSthLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKFNyKTtyZXR1cm59dGhpcy5vblBpKGEubmFtZSxhLnZhbHVlKTtpKz1hLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGkrMSxpKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixpKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFJyKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoaSszLHQpKTtpPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0PWUuaW5kZXhPZigiXV0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEZyKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGkrOCx0KSk7aT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dGhpcy5vbkVycm9yKE5yKTtyZXR1cm59e2NvbnN0IGE9ZS5pbmRleE9mKCJbIixpKzgpO2xldCByPSExO3Q9ZS5pbmRleE9mKCI+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKGtyKTtyZXR1cm59aWYoYT4wJiZ0PmEpe3Q9ZS5pbmRleE9mKCJdPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihrcik7cmV0dXJufXI9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhpKzgsdCsocj8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTtpPXQrKHI/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCByPXRoaXMuX3BhcnNlQ29udGVudChlLGkpO2lmKG51bGw9PT1yKXt0aGlzLm9uRXJyb3IoTnIpO3JldHVybn1sZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhpK3IucGFyc2VkLGkrci5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihHcik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoci5uYW1lLHIuYXR0cmlidXRlcyxzKTtpKz1yLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7aTxlLmxlbmd0aCYmIjwiIT09ZVtpXTspaSsrO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMoYSkpfXQ9aX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGkpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBpPWVbdF07aWYoaS5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKGkubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1pLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBuPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKGkubmFtZT09PWEubm9kZU5hbWUpe2lmKG49PT1pLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtuKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBpPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PWkpcmV0dXJuIGl9fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksaT10KzE7aWYoaTxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2UsaV0pO3I9ZS5jaGlsZE5vZGVzW2ldO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT1Ecjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09RHIpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LGkpe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighaSl7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxpLGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCppKzEqYSl9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLGE9WyI+Il07Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqaS5jaGFyQ29kZUF0KGUpK2kuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6YS5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIGEuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsaT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsaS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jb25zdCBNcj0xLFVyPTIseHI9MyxMcj00LEhyPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpY3Q9ZTt0aGlzLnJlZj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCl9I3goZSx0LGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IGE9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLGEpfWEucHVzaChbdCxpXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jeChlLHQsTHIpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3QsaV1vZiBlKWkgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KHQsaS5uYW1lKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTppfSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT0wLHI9ITA7Zm9yKGNvbnN0W2Usc11vZiBpKXtjb25zdHtyZWY6aX09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEoaSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7cj0hMDticmVha31mb3IoY29uc3QgZSBvZiBzKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztyPSExfX1pZihyKXtmb3IoY29uc3QgZSBvZiBpLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOmkscGRmTWFuYWdlcjphLGNoYW5nZXM6cn0pe2NvbnN0IHM9YS5jYXRhbG9nLmNsb25lRGljdCgpLG49bmV3IFJlZlNldENhY2hlO24ucHV0KGkscyk7Y29uc3Qgbz10LmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsbyk7Y29uc3QgZz1uZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIlN0cnVjdFRyZWVSb290IikpO2NvbnN0IGM9dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtnLnNldCgiUGFyZW50VHJlZSIsYyk7Y29uc3QgbD1bXTtnLnNldCgiSyIsbCk7bi5wdXQobyxnKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9W107aC5zZXQoIk51bXMiLEMpO2NvbnN0IFE9YXdhaXQgdGhpcy4jTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLHN0cnVjdFRyZWVSb290Om51bGwsa2lkczpsLG51bXM6Qyx4cmVmOnQscGRmTWFuYWdlcjphLGNoYW5nZXM6cixjYWNoZTpufSk7Zy5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixRKTtuLnB1dChjLGgpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKXIucHV0KGUse2RhdGE6dH0pfWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSx4cmVmOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCBzPXIuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocykpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IG49bmV3IE51bWJlclRyZWUocix0KTtmb3IoY29uc3QgdCBvZiBpLmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO2lmKCFpLmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkobi5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHt0fSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IG89ITA7Zm9yKGNvbnN0W3Qscl1vZiBpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7U3RydWN0VHJlZVJvb3QuI0goe2VsZW1lbnRzOnIseHJlZjp0aGlzLmRpY3QueHJlZixwYWdlRGljdDppLG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIHIpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO289ITF9fWlmKG8pe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsY2hhbmdlczppfSl7Y29uc3QgYT10aGlzLmRpY3QueHJlZixyPXRoaXMuZGljdC5jbG9uZSgpLHM9dGhpcy5yZWYsbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQocyxyKTtsZXQgbyxnPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoZyBpbnN0YW5jZW9mIFJlZilvPWEuZmV0Y2goZyk7ZWxzZXtvPWc7Zz1hLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixnKX1vPW8uY2xvbmUoKTtuLnB1dChnLG8pO2xldCBjPW8uZ2V0UmF3KCJOdW1zIiksbD1udWxsO2lmKGMgaW5zdGFuY2VvZiBSZWYpe2w9YztjPWEuZmV0Y2gobCl9Yz1jLnNsaWNlKCk7bHx8by5zZXQoIk51bXMiLGMpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cyxzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmMseHJlZjphLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOmksY2FjaGU6bn0pO2lmKC0xIT09aCl7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixoKTtsJiZuLnB1dChsLGMpO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKWkucHV0KGUse2RhdGE6dH0pfX1zdGF0aWMgYXN5bmMjTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LHN0cnVjdFRyZWVSb290Omksa2lkczphLG51bXM6cix4cmVmOnMscGRmTWFuYWdlcjpuLGNoYW5nZXM6byxjYWNoZTpnfSl7Y29uc3QgYz1OYW1lLmdldCgiT0JKUiIpO2xldCBsLGg9LTE7Zm9yKGNvbnN0W0MsUV1vZiBlKXtjb25zdCBlPWF3YWl0IG4uZ2V0UGFnZShDKSx7cmVmOkV9PWUsdT1FIGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTpuLHJlZjpkLHBhcmVudFRyZWVJZDpmLHN0cnVjdFRyZWVQYXJlbnQ6cH1vZiBRKXtpZighbj8udHlwZSljb250aW51ZTtjb25zdHtzdHJ1Y3RQYXJlbnQ6UX09bjtpZihpJiZOdW1iZXIuaXNJbnRlZ2VyKFEpJiZRPj0wKXtsZXQgdD0obHx8PW5ldyBNYXApLmdldChDKTtpZih2b2lkIDA9PT10KXt0PW5ldyBTdHJ1Y3RUcmVlUGFnZShpLGUucGFnZURpY3QpLmNvbGxlY3RPYmplY3RzKEUpO2wuc2V0KEMsdCl9Y29uc3QgYT10Py5nZXQoUSk7aWYoYSl7Y29uc3QgZT1zLmZldGNoKGEpLmNsb25lKCk7U3RydWN0VHJlZVJvb3QuI0ooZSxuKTtvLnB1dChhLHtkYXRhOmV9KTtjb250aW51ZX19aD1NYXRoLm1heChoLGYpO2NvbnN0IG09cy5nZXROZXdUZW1wb3JhcnlSZWYoKSx5PW5ldyBEaWN0KHMpO1N0cnVjdFRyZWVSb290LiNKKHksbik7YXdhaXQgdGhpcy4jdih7c3RydWN0VHJlZVBhcmVudDpwLHRhZ0RpY3Q6eSxuZXdUYWdSZWY6bSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LGZhbGxiYWNrS2lkczphLHhyZWY6cyxjYWNoZTpnfSk7Y29uc3Qgdz1uZXcgRGljdChzKTt5LnNldCgiSyIsdyk7dy5zZXQoIlR5cGUiLGMpO3UmJncuc2V0KCJQZyIsRSk7dy5zZXQoIk9iaiIsZCk7Zy5wdXQobSx5KTtyLnB1c2goZixtKX19cmV0dXJuIGgrMX1zdGF0aWMjSihlLHt0eXBlOnQsdGl0bGU6aSxsYW5nOmEsYWx0OnIsZXhwYW5kZWQ6cyxhY3R1YWxUZXh0Om59KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2kmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGkpKTthJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShhKSk7ciYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7cyYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocykpO24mJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG4pKX1zdGF0aWMjSCh7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6aSxudW1iZXJUcmVlOmF9KXtjb25zdCByPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO2xldCBpPXIuZ2V0KGUpO2lmKCFpKXtpPVtdO3Iuc2V0KGUsaSl9aS5wdXNoKHQpfWNvbnN0IHM9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlyZXR1cm47Y29uc3Qgbj1hLmdldChzKSx1cGRhdGVFbGVtZW50PShlLGksYSk9Pntjb25zdCBzPXIuZ2V0KGUpO2lmKHMpe2NvbnN0IGU9aS5nZXRSYXcoIlAiKSxyPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOmEsZGljdDppfTtmb3IoY29uc3QgdCBvZiBzKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBuKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGk9dC5mZXRjaChlKSxhPWkuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSl1cGRhdGVFbGVtZW50KGEsaSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByIG9mIGEpe3I9dC5mZXRjaElmUmVmKHIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJnVwZGF0ZUVsZW1lbnQocixpLGUpKWJyZWFrO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUoci5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3QgYT1yLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJnVwZGF0ZUVsZW1lbnQoYSxpLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI3Yoe3N0cnVjdFRyZWVQYXJlbnQ6ZSx0YWdEaWN0OnQsbmV3VGFnUmVmOmksc3RydWN0VHJlZVJvb3RSZWY6YSxmYWxsYmFja0tpZHM6cix4cmVmOnMsY2FjaGU6bn0pe2xldCBvLGc9bnVsbDtpZihlKXsoe3JlZjpnfT1lKTtvPWUuZGljdC5nZXRSYXcoIlAiKXx8YX1lbHNlIG89YTt0LnNldCgiUCIsbyk7Y29uc3QgYz1zLmZldGNoSWZSZWYobyk7aWYoIWMpe3IucHVzaChpKTtyZXR1cm59bGV0IGw9bi5nZXQobyk7aWYoIWwpe2w9Yy5jbG9uZSgpO24ucHV0KG8sbCl9Y29uc3QgaD1sLmdldFJhdygiSyIpO2xldCBDPWggaW5zdGFuY2VvZiBSZWY/bi5nZXQoaCk6bnVsbDtpZighQyl7Qz1zLmZldGNoSWZSZWYoaCk7Qz1BcnJheS5pc0FycmF5KEMpP0Muc2xpY2UoKTpbaF07Y29uc3QgZT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO2wuc2V0KCJLIixlKTtuLnB1dChlLEMpfWNvbnN0IFE9Qy5pbmRleE9mKGcpO0Muc3BsaWNlKFE+PTA/USsxOkMubGVuZ3RoLDAsaSl9fWNsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDppfT10aGlzLnRyZWU7cmV0dXJuIGkucm9sZU1hcC5oYXModCk/aS5yb2xlTWFwLmdldCh0KTp0fXBhcnNlS2lkcygpe2xldCBlPW51bGw7Y29uc3QgdD10aGlzLmRpY3QuZ2V0UmF3KCJQZyIpO3QgaW5zdGFuY2VvZiBSZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBpPXRoaXMucGFyc2VLaWQoZSx0KTtpJiZ0aGlzLmtpZHMucHVzaChpKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGkpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpNcixtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgaT1udWxsO3QgaW5zdGFuY2VvZiBSZWY/aT10aGlzLmRpY3QueHJlZi5mZXRjaCh0KTp0IGluc3RhbmNlb2YgRGljdCYmKGk9dCk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldFJhdygiUGciKTthIGluc3RhbmNlb2YgUmVmJiYoZT1hLnRvU3RyaW5nKCkpO2NvbnN0IHI9aS5nZXQoIlR5cGUiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiVHlwZSIpLm5hbWU6bnVsbDtpZigiTUNSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiU3RtIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlVyLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDppLmdldCgiTUNJRCIpfSl9aWYoIk9CSlIiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCB0PWkuZ2V0UmF3KCJPYmoiKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6eHIscmVmT2JqSWQ6dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pfXJldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpIcixkaWN0Oml9KX19Y2xhc3MgU3RydWN0RWxlbWVudHtjb25zdHJ1Y3Rvcih7dHlwZTplLGRpY3Q6dD1udWxsLG1jaWQ6aT1udWxsLHBhZ2VPYmpJZDphPW51bGwscmVmT2JqSWQ6cj1udWxsfSl7dGhpcy50eXBlPWU7dGhpcy5kaWN0PXQ7dGhpcy5tY2lkPWk7dGhpcy5wYWdlT2JqSWQ9YTt0aGlzLnJlZk9iaklkPXI7dGhpcy5wYXJlbnROb2RlPW51bGx9fWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy5yb290RGljdD1lP2UuZGljdDpudWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfWNvbGxlY3RPYmplY3RzKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLnJvb3Quc3RydWN0UGFyZW50SWRzPy5nZXQoZSk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgTWFwLHI9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2Zvcihjb25zdFtlXW9mIGkpe2NvbnN0IHQ9ci5nZXRSYXcoZSk7dCBpbnN0YW5jZW9mIFJlZiYmYS5zZXQoZSx0KX1yZXR1cm4gYX1wYXJzZShlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm47Y29uc3QgaT10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpJiYhYSlyZXR1cm47Y29uc3Qgcj1uZXcgTWFwLHM9bmV3IE51bWJlclRyZWUodCx0aGlzLnJvb3REaWN0LnhyZWYpO2lmKE51bWJlci5pc0ludGVnZXIoaSkpe2NvbnN0IGU9cy5nZXQoaSk7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2godCkscil9aWYoYSlmb3IoY29uc3RbZSx0XW9mIGEpe2NvbnN0IGk9cy5nZXQoZSk7aWYoaSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoSWZSZWYoaSkscik7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT14ciYmKGUua2lkc1swXS50eXBlPXQpfX19YWRkTm9kZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBhPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsYSk7Y29uc3Qgcj1lLmdldCgiUCIpO2lmKCFyfHxpc05hbWUoci5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSl7dGhpcy5hZGRUb3BMZXZlbE5vZGUoZSxhKXx8dC5kZWxldGUoZSk7cmV0dXJuIGF9Y29uc3Qgcz10aGlzLmFkZE5vZGUocix0LGkrMSk7aWYoIXMpcmV0dXJuIGE7bGV0IG49ITE7Zm9yKGNvbnN0IHQgb2Ygcy5raWRzKWlmKHQudHlwZT09PUhyJiZ0LmRpY3Q9PT1lKXt0LnBhcmVudE5vZGU9YTtuPSEwfW58fHQuZGVsZXRlKGUpO3JldHVybiBhfWFkZFRvcExldmVsTm9kZShlLHQpe2NvbnN0IGk9dGhpcy5yb290RGljdC5nZXQoIksiKTtpZighaSlyZXR1cm4hMTtpZihpIGluc3RhbmNlb2YgRGljdCl7aWYoaS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiEwO2xldCBhPSExO2ZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKXtjb25zdCBzPWlbcl07aWYocz8udG9TdHJpbmcoKT09PWUub2JqSWQpe3RoaXMubm9kZXNbcl09dDthPSEwfX1yZXR1cm4gYX1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxpPTApe2lmKGk+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Eucm9sZT1lLnJvbGU7YS5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2goYSk7bGV0IHI9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiByJiYocj1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgciYmKGEuYWx0PXN0cmluZ1RvUERGU3RyaW5nKHIpKTtjb25zdCBzPWUuZGljdC5nZXQoIkEiKTtpZihzIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KHMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKWEuYmJveD1lO2Vsc2V7Y29uc3QgZT1zLmdldCgiV2lkdGgiKSx0PXMuZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihhLmJib3g9WzAsMCxlLHRdKX19Y29uc3Qgbj1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBuJiYoYS5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKG4pKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09SHI/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxhLGkrMSk6dC50eXBlPT09TXJ8fHQudHlwZT09PVVyP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT14cj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PUxyJiZhLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWZ1bmN0aW9uIGlzVmFsaWRFeHBsaWNpdERlc3QoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoPDIpcmV0dXJuITE7Y29uc3RbdCxpLC4uLmFdPWU7aWYoISh0IGluc3RhbmNlb2YgUmVmfHxOdW1iZXIuaXNJbnRlZ2VyKHQpKSlyZXR1cm4hMTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4hMTtjb25zdCByPWEubGVuZ3RoO2xldCBzPSEwO3N3aXRjaChpLm5hbWUpe2Nhc2UiWFlaIjppZihyPDJ8fHI+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PXI7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKHI+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1yKXJldHVybiExO3M9ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBhKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxzJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gaXNWYWxpZEV4cGxpY2l0RGVzdChlKT9lOm51bGx9ZnVuY3Rpb24gZmV0Y2hSZW1vdGVEZXN0KGUpe2xldCB0PWUuZ2V0KCJEIik7aWYodCl7dCBpbnN0YW5jZW9mIE5hbWUmJih0PXQubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBzdHJpbmdUb1BERlN0cmluZyh0KTtpZihpc1ZhbGlkRXhwbGljaXREZXN0KHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9ne2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsO3RoaXMuZm9udENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlRGljdENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IFJlZlNldDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWNsb25lRGljdCgpe3JldHVybiB0aGlzLl9jYXREaWN0LmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2lmKG10LnRlc3QoZS5uYW1lKSlyZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLGUubmFtZSk7d2FybihgSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAke2UubmFtZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybiBzaGFkb3codGhpcywibGFuZyIsZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiY29sbGVjdGlvbiIsZSl9Z2V0IGFjcm9Gb3JtKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGk9dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpLmRpY3QgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZGljdC5nZXQoIlR5cGUiKSxhPWkuZGljdC5nZXQoIlN1YnR5cGUiKTtpZihpc05hbWUoZSwiTWV0YWRhdGEiKSYmaXNOYW1lKGEsIlhNTCIpKXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhpLmdldFN0cmluZygpKTtlJiYodD1uZXcgTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIix0KX1nZXQgbWFya0luZm8oKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRNYXJrSW5mbygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBpIGluIHQpe2NvbnN0IGE9ZS5nZXQoaSk7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRbaV09YSl9cmV0dXJuIHR9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkU3RydWN0VHJlZVJvb3QoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgU3RydWN0VHJlZVJvb3QodCxlKTtpLmluaXQoKTtyZXR1cm4gaX1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD17aXRlbXM6W119LGk9W3tvYmo6ZSxwYXJlbnQ6dH1dLGE9bmV3IFJlZlNldDthLnB1dChlKTtjb25zdCByPXRoaXMueHJlZixzPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdCB0PWkuc2hpZnQoKSxuPXIuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PW4pY29udGludWU7bi5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IG89e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpuLHJlc3VsdE9iajpvLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBnPW4uZ2V0KCJUaXRsZSIpLGM9bi5nZXQoIkYiKXx8MCxsPW4uZ2V0QXJyYXkoIkMiKSxoPW4uZ2V0KCJDb3VudCIpO2xldCBDPXM7IWlzTnVtYmVyQXJyYXkobCwzKXx8MD09PWxbMF0mJjA9PT1sWzFdJiYwPT09bFsyXXx8KEM9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IobCwwKSk7Y29uc3QgUT17YWN0aW9uOm8uYWN0aW9uLGF0dGFjaG1lbnQ6by5hdHRhY2htZW50LGRlc3Q6by5kZXN0LHVybDpvLnVybCx1bnNhZmVVcmw6by51bnNhZmVVcmwsbmV3V2luZG93Om8ubmV3V2luZG93LHNldE9DR1N0YXRlOm8uc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBnP3N0cmluZ1RvUERGU3RyaW5nKGcpOiIiLGNvbG9yOkMsY291bnQ6TnVtYmVyLmlzSW50ZWdlcihoKT9oOnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O3QucGFyZW50Lml0ZW1zLnB1c2goUSk7ZT1uLmdldFJhdygiRmlyc3QiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoZSkpe2kucHVzaCh7b2JqOmUscGFyZW50OlF9KTthLnB1dChlKX1lPW4uZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO2EucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBpPVtdO2Zvcihjb25zdCBlIGluIHcpe2NvbnN0IGE9d1tlXTt0JmEmJmkucHVzaChhKX1yZXR1cm4gaX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGk9dC5nZXQoIkQiKTtpZighaSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCByPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiBSZWYmJiFyLmhhcyhlKSYmci5wdXQoZSx0aGlzLiNZKGUpKTtlPXRoaXMuI0soaSxyKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogJHtlfWApfXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixlKX0jWShlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxpPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH0scmJHcm91cHM6W119LGE9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIGEmJihpLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcoYSkpO2xldCByPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7ci5ldmVyeSgoZT0+ZSBpbnN0YW5jZW9mIE5hbWUpKSYmKGkuaW50ZW50PXIubWFwKChlPT5lLm5hbWUpKSk7Y29uc3Qgcz10LmdldCgiVXNhZ2UiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gaTtjb25zdCBuPWkudXNhZ2Usbz1zLmdldCgiUHJpbnQiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1vLmdldCgiUHJpbnRTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpuLnByaW50PXtwcmludFN0YXRlOmUubmFtZX19fWNvbnN0IGc9cy5nZXQoIlZpZXciKTtpZihnIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1nLmdldCgiVmlld1N0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4udmlldz17dmlld1N0YXRlOmUubmFtZX19fXJldHVybiBpfSNLKGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBpPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmaS5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGk9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhzKSl7YS5wdXQocyk7ci5wdXNoKHMudG9TdHJpbmcoKSk7Y29udGludWV9Y29uc3QgZT1wYXJzZU5lc3RlZE9yZGVyKHMsaSk7ZSYmci5wdXNoKGUpfWlmKGk+MClyZXR1cm4gcjtjb25zdCBzPVtdO2Zvcihjb25zdFtlXW9mIHQuaXRlbXMoKSlhLmhhcyhlKXx8cy5wdXNoKGUudG9TdHJpbmcoKSk7cy5sZW5ndGgmJnIucHVzaCh7bmFtZTpudWxsLG9yZGVyOnN9KTtyZXR1cm4gcn1mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnIpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9aS5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHM9aS5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcylyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gbj8ubGVuZ3RoP3tuYW1lOnN0cmluZ1RvUERGU3RyaW5nKHMpLG9yZGVyOm59Om51bGx9Y29uc3QgaT10aGlzLnhyZWYsYT1uZXcgUmVmU2V0LHI9MTA7IWZ1bmN0aW9uIHBhcnNlUkJHcm91cHMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZighQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHI9bmV3IFNldDtmb3IoY29uc3QgaSBvZiBlKWlmKGkgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGkpJiYhci5oYXMoaS50b1N0cmluZygpKSl7ci5hZGQoaS50b1N0cmluZygpKTt0LmdldChpKS5yYkdyb3Vwcy5wdXNoKHIpfX19KGUuZ2V0KCJSQkdyb3VwcyIpKTtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpbLi4udF19fXNldEFjdHVhbE51bVBhZ2VzKGU9bnVsbCl7dGhpcy5fYWN0dWFsTnVtUGFnZXM9ZX1nZXQgaGFzQWN0dWFsTnVtUGFnZXMoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FjdHVhbE51bVBhZ2VzfWdldCBfcGFnZXNDb3VudCgpe2NvbnN0IGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybiBzaGFkb3codGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuX2FjdHVhbE51bVBhZ2VzOnRoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy5fcmVhZERlc3RzKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBOYW1lVHJlZSlmb3IoY29uc3RbaSxhXW9mIGUuZ2V0QWxsKCkpe2NvbnN0IGU9ZmV0Y2hEZXN0KGEpO2UmJih0W3N0cmluZ1RvUERGU3RyaW5nKGkpXT1lKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgZSl7Y29uc3QgZT1mZXRjaERlc3QoYSk7ZSYmKHRbaV09ZSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXN0aW5hdGlvbnMiLHQpfWdldERlc3RpbmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fcmVhZERlc3RzKCk7aWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlKXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPXRoaXMuZGVzdGluYXRpb25zW2VdO2lmKGEpe3dhcm4oYEZvdW5kICIke2V9IiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLmApO3JldHVybiBhfX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH1fcmVhZERlc3RzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtyZXR1cm4gZT8uaGFzKCJEZXN0cyIpP25ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgaT1udWxsLGE9IiI7Y29uc3Qgcj1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IHM9IiIsbj0xO2ZvcihsZXQgZT0wLG89dGhpcy5udW1QYWdlcztlPG87ZSsrKXtjb25zdCBvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2k9ZS5uYW1lfWVsc2UgaT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2UgYT0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWV9ZWxzZSBuPTF9c3dpdGNoKGkpe2Nhc2UiRCI6cz1uO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpzPXRvUm9tYW5OdW1lcmFscyhuLCJyIj09PWkpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09aT85Nzo2NSxhPW4tMTtzPVN0cmluZy5mcm9tQ2hhckNvZGUodCthJWUpLnJlcGVhdChNYXRoLmZsb29yKGEvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHtpfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cz0iIn10W2VdPWErcztuKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTGF5b3V0Iik7bGV0IHQ9IiI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3QgaSBvZiBlLmdldEtleXMoKSl7Y29uc3QgYT1lLmdldChpKTtsZXQgcjtzd2l0Y2goaSl7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIGEmJihyPWEpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCUyPT0wKXthLmV2ZXJ5KCgoZSx0LGkpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49aVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocj1hKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wJiYocj1hKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7aX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cil7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtpXT1yfWVsc2Ugd2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPW5ldyBEaWN0KHRoaXMueHJlZik7aS5zZXQoIkEiLGUpO2NvbnN0IGE9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDppLHJlc3VsdE9iajphfSk7QXJyYXkuaXNBcnJheShhLmRlc3QpP3QuZGVzdD1hLmRlc3Q6YS5hY3Rpb24mJih0LmFjdGlvbj1hLmFjdGlvbil9ZWxzZSBBcnJheS5pc0FycmF5KGUpJiYodC5kZXN0PWUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsb2JqZWN0U2l6ZSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBpPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXtjb25zdCBpPW5ldyBGaWxlU3BlYyhhLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtzdHJpbmdUb1BERlN0cmluZyhlKV09aS5zZXJpYWxpemFibGV9fXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXt0fHwodD1uZXcgRGljdCh0aGlzLnhyZWYpKTt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlKSxhKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfV9jb2xsZWN0SmF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsaSl7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoaS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgYT1pLmdldCgiSlMiKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhPWEuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuO2E9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiYodHx8PW5ldyBNYXApLnNldChlLGEpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsaV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSksaSl9Y29uc3QgaT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2kmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGkpO3JldHVybiB0fWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPXRoaXMuX2NvbGxlY3RKYXZhU2NyaXB0KCk7bGV0IHQ9Y29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMuX2NhdERpY3QsbUEpO2lmKGUpe3R8fD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgZSlpIGluIHQ/dFtpXS5wdXNoKGEpOnRbaV09W2FdfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBpPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgYSBvZiBpKWlmKGEubG9hZGVkTmFtZT09PWUpe2EuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMucGFnZURpY3RDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxpPW5ldyBSZWZTZXQsYT10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTthIGluc3RhbmNlb2YgUmVmJiZpLnB1dChhKTtjb25zdCByPXRoaXMueHJlZixzPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLG49dGhpcy5wYWdlSW5kZXhDYWNoZSxvPXRoaXMucGFnZURpY3RDYWNoZTtsZXQgZz0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCBhPXQucG9wKCk7aWYoYSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYz1zLmdldChhKTtpZihjPj0wJiZnK2M8PWUpe2crPWM7Y29udGludWV9aWYoaS5oYXMoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTtpLnB1dChhKTtjb25zdCBsPWF3YWl0KG8uZ2V0KGEpfHxyLmZldGNoQXN5bmMoYSkpO2lmKGwgaW5zdGFuY2VvZiBEaWN0KXtsZXQgdD1sLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIikpe3MuaGFzKGEpfHxzLnB1dChhLDEpO24uaGFzKGEpfHxuLnB1dChhLGcpO2lmKGc9PT1lKXJldHVybltsLGFdO2crKztjb250aW51ZX19dC5wdXNoKGwpO2NvbnRpbnVlfWlmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmN9PWE7bGV0IGw9YS5nZXRSYXcoIkNvdW50Iik7bCBpbnN0YW5jZW9mIFJlZiYmKGw9YXdhaXQgci5mZXRjaEFzeW5jKGwpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGwpJiZsPj0wKXtjJiYhcy5oYXMoYykmJnMucHV0KGMsbCk7aWYoZytsPD1lKXtnKz1sO2NvbnRpbnVlfX1sZXQgaD1hLmdldFJhdygiS2lkcyIpO2ggaW5zdGFuY2VvZiBSZWYmJihoPWF3YWl0IHIuZmV0Y2hBc3luYyhoKSk7aWYoIUFycmF5LmlzQXJyYXkoaCkpe2xldCB0PWEuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgci5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYS5oYXMoIktpZHMiKSl7aWYoZz09PWUpcmV0dXJuW2EsbnVsbF07ZysrO2NvbnRpbnVlfXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9aC5sZW5ndGgtMTtlPj0wO2UtLSl7Y29uc3QgaT1oW2VdO3QucHVzaChpKTthPT09dGhpcy50b3BsZXZlbFBhZ2VzRGljdCYmaSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGkpJiZvLnB1dChpLHIuZmV0Y2hBc3luYyhpKSl9fXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoZT0hMSl7Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLGk9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgUmVmU2V0LHI9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocik7Y29uc3Qgcz1uZXcgTWFwLG49dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgZz0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGcpO3Muc2V0KGcrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IGk7aWYoZSYmdCYmMD09PWcpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7aX0iLmApO2k9RGljdC5lbXB0eX1zLnNldChnKyssW2ksbnVsbF0pfWZvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnJ9PWU7bGV0IHM9dC5nZXRSYXcoIktpZHMiKTtpZihzIGluc3RhbmNlb2YgUmVmKXRyeXtzPWF3YWl0IG4uZmV0Y2hBc3luYyhzKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkocykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKHI+PXMubGVuZ3RoKXtpLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89c1tyXTtsZXQgZztpZihvIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KG8pO3RyeXtnPWF3YWl0IG4uZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgZz1vO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBjPWcuZ2V0UmF3KCJUeXBlIik7aWYoYyBpbnN0YW5jZW9mIFJlZil0cnl7Yz1hd2FpdCBuLmZldGNoQXN5bmMoYyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShjLCJQYWdlIil8fCFnLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGcsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOmkucHVzaCh7Y3VycmVudE5vZGU6Zyxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIHN9Z2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2NvbnN0IGk9dGhpcy54cmVmO2xldCBhPTA7Y29uc3QgbmV4dD10PT5mdW5jdGlvbiBwYWdlc0JlZm9yZVJlZih0KXtsZXQgYSxyPTA7cmV0dXJuIGkuZmV0Y2hBc3luYyh0KS50aGVuKChmdW5jdGlvbihpKXtpZihpc1JlZnNFcXVhbCh0LGUpJiYhaXNEaWN0KGksIlBhZ2UiKSYmIShpIGluc3RhbmNlb2YgRGljdCYmIWkuaGFzKCJUeXBlIikmJmkuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFpKXJldHVybiBudWxsO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTthPWkuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gaS5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBzPVtdO2xldCBuPSExO2Zvcihjb25zdCBhIG9mIGUpe2lmKCEoYSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChhLHQpKXtuPSEwO2JyZWFrfXMucHVzaChpLmZldGNoQXN5bmMoYSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9yKz1lLmdldCgiQ291bnQiKTpyKyt9KSkpfWlmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcixhXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLGEpO3JldHVybiBhfWNvbnN0W2kscl09dDthKz1pO3JldHVybiBuZXh0KHIpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmk9bnVsbCxkb2NBdHRhY2htZW50czphPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHIscyxuPWUuZ2V0KCJBIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSluPWUuZ2V0KCJEZXN0Iik7ZWxzZXtuPWUuZ2V0KCJBQSIpO24gaW5zdGFuY2VvZiBEaWN0JiYobi5oYXMoIkQiKT9uPW4uZ2V0KCJEIik6bi5oYXMoIlUiKSYmKG49bi5nZXQoIlUiKSkpfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW4uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgaT1lLm5hbWU7c3dpdGNoKGkpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPW4uZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZz1bXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9jLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmcucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpnLHJlZnM6YyxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpyPW4uZ2V0KCJVUkkiKTtyIGluc3RhbmNlb2YgTmFtZSYmKHI9Ii8iK3IubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpzPW4uZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGw9bi5nZXQoIkYiKTtpZihsIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMobCxudWxsLCEwKSx7cmF3RmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7cj10fWVsc2Uic3RyaW5nIj09dHlwZW9mIGwmJihyPWwpO2NvbnN0IGg9ZmV0Y2hSZW1vdGVEZXN0KG4pO2gmJiJzdHJpbmciPT10eXBlb2YgciYmKHI9ci5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IEM9bi5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIEMmJih0Lm5ld1dpbmRvdz1DKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBRPW4uZ2V0KCJUIik7bGV0IEU7aWYoYSYmUSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9US5nZXQoIlIiKSx0PVEuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoRT1hW3N0cmluZ1RvUERGU3RyaW5nKHQpXSl9aWYoRSl7dC5hdHRhY2htZW50PUU7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qobik7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB1PW4uZ2V0KCJOIik7dSBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj11Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGQ9bi5nZXQoIlN0YXRlIiksZj1uLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwwPT09ZC5sZW5ndGgpYnJlYWs7Y29uc3QgcD1bXTtmb3IoY29uc3QgZSBvZiBkKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6cC5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZwLnB1c2goZS50b1N0cmluZygpKTtpZihwLmxlbmd0aCE9PWQubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnAscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBmfHxmfTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IG09bi5nZXQoIkpTIik7bGV0IHk7bSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eT1tLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgbSYmKHk9bSk7Y29uc3Qgdz15JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeSkpO2lmKHcpe3I9dy51cmw7dC5uZXdXaW5kb3c9dy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1pfHwiU3VibWl0Rm9ybSI9PT1pKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2l9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocz1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChyLGkse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1yfWlmKHMpe3MgaW5zdGFuY2VvZiBOYW1lJiYocz1zLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcz90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcocyk6aXNWYWxpZEV4cGxpY2l0RGVzdChzKSYmKHQuZGVzdD1zKX19fWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSkoKGk9YSlpbnN0YW5jZW9mIFJlZnx8aSBpbnN0YW5jZW9mIERpY3R8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGkpKSYmdC5wdXNoKGEpO3ZhciBpfWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IFJlZlNldDtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmaS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGkpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10saT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKGEpO2kucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCByPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtyPSEwO2kucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1yJiZ0LnB1c2goYSl9fWFkZENoaWxkcmVuKGEsZSl9aWYoaS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGkpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fWNvbnN0IEpyPVN5bWJvbCgpLHZyPVN5bWJvbCgpLFlyPVN5bWJvbCgpLEtyPVN5bWJvbCgpLFRyPVN5bWJvbCgpLHFyPVN5bWJvbCgpLE9yPVN5bWJvbCgpLFByPVN5bWJvbCgpLFdyPVN5bWJvbCgpLGpyPVN5bWJvbCgiY29udGVudCIpLFhyPVN5bWJvbCgiZGF0YSIpLFZyPVN5bWJvbCgpLFpyPVN5bWJvbCgiZXh0cmEiKSxfcj1TeW1ib2woKSx6cj1TeW1ib2woKSwkcj1TeW1ib2woKSxBcz1TeW1ib2woKSxlcz1TeW1ib2woKSx0cz1TeW1ib2woKSxpcz1TeW1ib2woKSxhcz1TeW1ib2woKSxycz1TeW1ib2woKSxzcz1TeW1ib2woKSxucz1TeW1ib2woKSxvcz1TeW1ib2woKSxncz1TeW1ib2woKSxJcz1TeW1ib2woKSxjcz1TeW1ib2woKSxscz1TeW1ib2woKSxocz1TeW1ib2woKSxDcz1TeW1ib2woKSxCcz1TeW1ib2woKSxRcz1TeW1ib2woKSxFcz1TeW1ib2woKSx1cz1TeW1ib2woKSxkcz1TeW1ib2woKSxmcz1TeW1ib2woKSxwcz1TeW1ib2woKSxtcz1TeW1ib2woKSx5cz1TeW1ib2woKSx3cz1TeW1ib2woKSxicz1TeW1ib2woKSxEcz1TeW1ib2woKSxGcz1TeW1ib2woKSxTcz1TeW1ib2woKSxrcz1TeW1ib2woIm5hbWVzcGFjZUlkIiksUnM9U3ltYm9sKCJub2RlTmFtZSIpLE5zPVN5bWJvbCgpLEdzPVN5bWJvbCgpLE1zPVN5bWJvbCgpLFVzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLExzPVN5bWJvbCgpLEhzPVN5bWJvbCgpLEpzPVN5bWJvbCgpLHZzPVN5bWJvbCgicm9vdCIpLFlzPVN5bWJvbCgpLEtzPVN5bWJvbCgpLFRzPVN5bWJvbCgpLHFzPVN5bWJvbCgpLE9zPVN5bWJvbCgpLFdzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLFZzPVN5bWJvbCgpLFpzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLHpzPVN5bWJvbCgidWlkIiksJHM9U3ltYm9sKCksQW49e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sZW49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LHRuPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7cmV0dXJuIGUmJmkoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGk9ZS50cmltKCkubWF0Y2godG4pO2lmKCFpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxyXT1pLHM9cGFyc2VGbG9hdChhKTtpZihpc05hTihzKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXMpcmV0dXJuIDA7Y29uc3Qgbj1lbltyXTtyZXR1cm4gbj9uKHMpOnN9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtpLGFdPXQ7cmV0dXJue251bTppLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1pO3RoaXMuYnJlYWtOb2RlPWF9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBpPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsaSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8saT10LmZvbnRGYW1pbHk7bGV0IGE9dGhpcy5mb250cy5nZXQoaSk7aWYoIWEpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChpLGEpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PWEpfWxldCByPSIiO2NvbnN0IHM9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3I9cz49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpzPj03MDAmJihyPSJib2xkIik7aWYoIXIpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocj0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihyKz0iaXRhbGljIil9cnx8KHI9InJlZ3VsYXIiKTthW3JdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgaT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcj1lLnJlcGxhY2VBbGwoYSwiIik7aT10aGlzLmZvbnRzLmdldChyKTtpZihpKXt0aGlzLmNhY2hlLnNldChlLGkpO3JldHVybiBpfXI9ci50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe3I9ci5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KX1pZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZihzLmxlbmd0aD49MSl7MSE9PXMubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHNbMF0pO3JldHVybiBzWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5saW5lSGVpZ2h0PWk7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCByPWEuZmluZChlLnR5cGVmYWNlKTtpZihyKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHIpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxpLGEpXX1wdXNoRGF0YShlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1hLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCByPW5ldyBGb250SW5mbyhlLHQsaXx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7ci5wZGZGb250fHwoci5wZGZGb250PWEucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKHIpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGksYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxpKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsaSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxpPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxyPXQucGRmRm9udCxzPXIubGluZUhlaWdodHx8MS4yLG49dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqaSxvPXMtKHZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXApLGc9TWF0aC5tYXgoMSxvKSppLGM9aS8xZTMsbD1yLmRlZmF1bHRXaWR0aHx8ci5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXIuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGk9ci5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9ZS53aWR0aHx8bDt0aGlzLmdseXBocy5wdXNoKFt0KmMrYSxuLGcsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtpLDEuMippLGksZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxpPTAsYT0wLHI9MCxzPTAsbj0wLG89ITEsZz0hMDtmb3IobGV0IGM9MCxsPXRoaXMuZ2x5cGhzLmxlbmd0aDtjPGw7YysrKXtjb25zdFtsLGgsQyxRLEVdPXRoaXMuZ2x5cGhzW2NdLHU9IiAiPT09USxkPWc/QzpoO2lmKEUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7Zz0hMX1lbHNlIGlmKHUpaWYocytsPmUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7bz0hMDtnPSExfWVsc2V7bj1NYXRoLm1heChkLG4pO2k9cztzKz1sO3Q9Y31lbHNlIGlmKHMrbD5lKXtyKz1uO249ZDtpZigtMSE9PXQpe2M9dDthPU1hdGgubWF4KGEsaSk7cz0wO3Q9LTE7aT0wfWVsc2V7YT1NYXRoLm1heChhLHMpO3M9bH1vPSEwO2c9ITF9ZWxzZXtzKz1sO249TWF0aC5tYXgoZCxuKX19YT1NYXRoLm1heChhLHMpO3IrPW4rdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMiphLGhlaWdodDpyLGlzQnJva2VuOm99fX1jb25zdCBhbj0vXlteLltdKy8scm49L15bXlxdXSsvLHNuPTAsbm49MSxvbj0yLGduPTMsSW49NCxjbj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW29zXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxsbj1uZXcgV2Vha01hcDtmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LGk9ITApe2xldCBhPWUubWF0Y2goYW4pO2lmKCFhKXJldHVybiBudWxsO2xldFtyXT1hO2NvbnN0IHM9W3tuYW1lOnIsY2FjaGVOYW1lOiIuIityLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOnNufV07bGV0IG49ci5sZW5ndGg7Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3QgZz1uO2lmKCJbIj09PWUuY2hhckF0KG4rKykpe2E9ZS5zbGljZShuKS5tYXRjaChybik7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1zLmF0KC0xKS5pbmRleD0iKiI9PT0obz0obz1hWzBdKS50cmltKCkpPzEvMDpwYXJzZUludChvLDEwKXx8MDtuKz1hWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBjO3N3aXRjaChlLmNoYXJBdChuKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtuKys7Yz1ubjticmVhaztjYXNlIiMiOm4rKztjPW9uO2JyZWFrO2Nhc2UiWyI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWduO2JyZWFrO2Nhc2UiKCI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9SW47YnJlYWs7ZGVmYXVsdDpjPXNufWE9ZS5zbGljZShuKS5tYXRjaChhbik7aWYoIWEpYnJlYWs7W3JdPWE7bis9ci5sZW5ndGg7cy5wdXNoKHtuYW1lOnIsY2FjaGVOYW1lOmUuc2xpY2UoZyxuKSxvcGVyYXRvcjpjLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIG87cmV0dXJuIHN9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsaSxhPSEwLHI9ITApe2NvbnN0IHM9cGFyc2VFeHByZXNzaW9uKGksYSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbj1jbi5nZXQoc1swXS5uYW1lKTtsZXQgbyxnPTA7aWYobil7bz0hMDtlPVtuKGUsdCldO2c9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBpPXMubGVuZ3RoO2c8aTtnKyspe2NvbnN0e25hbWU6aSxjYWNoZU5hbWU6YSxvcGVyYXRvcjpuLGluZGV4OmN9PXNbZ10sbD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxzO2lmKHIpe3M9bG4uZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7bG4uc2V0KHQscyl9ZT1zLmdldChhKX1pZighZSl7c3dpdGNoKG4pe2Nhc2Ugc246ZT10W2lzXShpLCExKTticmVhaztjYXNlIG5uOmU9dFtpc10oaSwhMCk7YnJlYWs7Y2FzZSBvbjplPXRbdHNdKGkpO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXImJnMuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmbC5wdXNoKGUpfWlmKDAhPT1sLmxlbmd0aHx8b3x8MCE9PWcpZT1pc0Zpbml0ZShjKT9sLmZpbHRlcigoZT0+YzxlLmxlbmd0aCkpLm1hcCgoZT0+ZVtjXSkpOmwuZmxhdCgpO2Vsc2V7Y29uc3QgaT10W2xzXSgpO2lmKCEodD1pKSlyZXR1cm4gbnVsbDtnPS0xO2U9W3RdfX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsaSl7Y29uc3QgYT1wYXJzZUV4cHJlc3Npb24oaSk7aWYoIWEpcmV0dXJuIG51bGw7aWYoYS5zb21lKChlPT5lLm9wZXJhdG9yPT09bm4pKSlyZXR1cm4gbnVsbDtjb25zdCByPWNuLmdldChhWzBdLm5hbWUpO2xldCBzPTA7aWYocil7ZT1yKGUsdCk7cz0xfWVsc2UgZT10fHxlO2ZvcihsZXQgdD1hLmxlbmd0aDtzPHQ7cysrKXtjb25zdHtuYW1lOnQsb3BlcmF0b3I6aSxpbmRleDpyfT1hW3NdO2lmKCFpc0Zpbml0ZShyKSl7YVtzXS5pbmRleD0wO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfWxldCBuO3N3aXRjaChpKXtjYXNlIHNuOm49ZVtpc10odCwhMSk7YnJlYWs7Y2FzZSBubjpuPWVbaXNdKHQsITApO2JyZWFrO2Nhc2Ugb246bj1lW3RzXSh0KTtuPW4uaXNYRkFPYmplY3RBcnJheT9uLmNoaWxkcmVuOltuXX1pZigwPT09bi5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSk7aWYoIShyPG4ubGVuZ3RoKSl7YVtzXS5pbmRleD1yLW4ubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfXtjb25zdCB0PW5bcl07aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgaG49U3ltYm9sKCksQ249U3ltYm9sKCksQm49U3ltYm9sKCksUW49U3ltYm9sKCJfY2hpbGRyZW4iKSxFbj1TeW1ib2woKSx1bj1TeW1ib2woKSxkbj1TeW1ib2woKSxmbj1TeW1ib2woKSxwbj1TeW1ib2woKSxtbj1TeW1ib2woKSx5bj1TeW1ib2woKSx3bj1TeW1ib2woKSxibj1TeW1ib2woKSxEbj1TeW1ib2woInBhcmVudCIpLEZuPVN5bWJvbCgpLFNuPVN5bWJvbCgpLGtuPVN5bWJvbCgpO2xldCBSbj0wO2NvbnN0IE5uPUFuLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpc1trc109ZTt0aGlzW1JzXT10O3RoaXNbeW5dPWk7dGhpc1tEbl09bnVsbDt0aGlzW1FuXT1bXTt0aGlzW3pzXT1gJHt0fSR7Um4rK31gO3RoaXNbQ3NdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGk9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4OnJ9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShyKT9yOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtrc109PT1Obj8tMTp0W2tzXTtpPW5ldyBYbWxPYmplY3QoZSxhKTt0W1lyXShpKX10PWl9cmV0dXJuIGl9W0dzXShlKXtpZighdGhpc1t5bl18fCF0aGlzW01zXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbUnNdLGk9dGhpc1t0XTtpZighKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1pJiZ0aGlzW0pzXShpKTt0aGlzW3RdPWU7dGhpc1tZcl0oZSk7cmV0dXJuITB9aWYoaS5wdXNoKGUpKXt0aGlzW1lyXShlKTtyZXR1cm4hMH1sZXQgYT0iIjt0aGlzLmlkP2E9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihhPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW1JzXX0iJHthfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtNc10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtSc10pJiZlW2tzXT09PXRoaXNba3NdfVt5c10oKXtyZXR1cm4hMX1bSnJdKCl7cmV0dXJuITF9W2RzXSgpe3JldHVybiExfVtmc10oKXtyZXR1cm4hMX1bTHNdKCl7dGhpcy5wYXJhJiZ0aGlzW2hzXSgpW1pyXS5wYXJhU3RhY2sucG9wKCl9W0hzXSgpe3RoaXNbaHNdKClbWnJdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W1RzXShlKXt0aGlzLmlkJiZ0aGlzW2tzXT09PUFuLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtoc10oKXtyZXR1cm4gdGhpc1tDc10udGVtcGxhdGV9W3dzXSgpe3JldHVybiExfVtic10oKXtyZXR1cm4hMX1bWXJdKGUpe2VbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChlKTshZVtDc10mJnRoaXNbQ3NdJiYoZVtDc109dGhpc1tDc10pfVtKc10oZSl7Y29uc3QgdD10aGlzW1FuXS5pbmRleE9mKGUpO3RoaXNbUW5dLnNwbGljZSh0LDEpfVtCc10oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1bT3NdKGUpe31bVXNdKGUpe31bX3JdKCl7fVtUcl0oZSl7ZGVsZXRlIHRoaXNbeW5dO2lmKHRoaXNbT3JdKXtlLmNsZWFuKHRoaXNbT3JdKTtkZWxldGUgdGhpc1tPcl19fVtFc10oZSl7cmV0dXJuIHRoaXNbUW5dLmluZGV4T2YoZSl9W3VzXShlLHQpe3RbRG5dPXRoaXM7dGhpc1tRbl0uc3BsaWNlKGUsMCx0KTshdFtDc10mJnRoaXNbQ3NdJiYodFtDc109dGhpc1tDc10pfVtEc10oKXtyZXR1cm4hdGhpcy5uYW1lfVtTc10oKXtyZXR1cm4iIn1banNdKCl7cmV0dXJuIDA9PT10aGlzW1FuXS5sZW5ndGg/dGhpc1tqcl06dGhpc1tRbl0ubWFwKChlPT5lW2pzXSgpKSkuam9pbigiIil9Z2V0W0JuXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybiBzaGFkb3codGhpcyxCbixlLl9hdHRyaWJ1dGVzKX1bbXNdKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W2xzXSgpfXJldHVybiExfVtsc10oKXtyZXR1cm4gdGhpc1tEbl19W2NzXSgpe3JldHVybiB0aGlzW2xzXSgpfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW2VdOnRoaXNbUW5dfVtWcl0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tqcl0mJihlLiRjb250ZW50PXRoaXNbanJdKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO251bGwhPT1pJiYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdD9lW3RdPWlbVnJdKCk6aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2kuaXNFbXB0eSgpfHwoZVt0XT1pLmR1bXAoKSk6ZVt0XT1pKX1yZXR1cm4gZX1bX3NdKCl7cmV0dXJuIG51bGx9W1ZzXSgpe3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfSpbZ3NdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1tvc10oKSl5aWVsZCBlfSpbZm5dKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tnc10oKSlpZighZXx8dD09PWUuaGFzKGlbUnNdKSl7Y29uc3QgZT10aGlzW2VzXSgpLHQ9aVtWc10oZSk7dC5zdWNjZXNzfHwodGhpc1tacl0uZmFpbGluZ05vZGU9aSk7eWllbGQgdH19W3pyXSgpe3JldHVybiBudWxsfVt2cl0oZSx0KXt0aGlzW1pyXS5jaGlsZHJlbi5wdXNoKGUpfVtlc10oKXt9W0tyXSh7ZmlsdGVyOmU9bnVsbCxpbmNsdWRlOnQ9ITB9KXtpZih0aGlzW1pyXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tlc10oKSx0PXRoaXNbWnJdLmZhaWxpbmdOb2RlW1ZzXShlKTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbWnJdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tacl0uZ2VuZXJhdG9yPXRoaXNbZm5dKGUsdCk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbWnJdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1t2cl0odC5odG1sLHQuYmJveCl9dGhpc1tacl0uZ2VuZXJhdG9yPW51bGw7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9W3FzXShlKXt0aGlzW1NuXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bbW5dKGUpe2NvbnN0IHQ9dGhpc1tCbl0saT10aGlzW1NuXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWkuaGFzKGUpKSl9W1lzXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0paVtGbl0oZSx0KX1bRm5dKGUsdCl7Y29uc3QgaT10aGlzW3BuXShlLHQpO2k/dGhpc1tobl0oaSxlLHQpOnRoaXNbWXNdKGUsdCl9W3BuXShlLHQpe2NvbnN0e3VzZTppLHVzZWhyZWY6YX09dGhpcztpZighaSYmIWEpcmV0dXJuIG51bGw7bGV0IHI9bnVsbCxzPW51bGwsbj1udWxsLG89aTtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/bj1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKG49YS5zbGljZSgyKSl9ZWxzZSBpLnN0YXJ0c1dpdGgoIiMiKT9uPWkuc2xpY2UoMSk6cz1pO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihuKXI9ZS5nZXQobik7ZWxzZXtyPXNlYXJjaE5vZGUoZS5nZXQodnMpLHRoaXMscywhMCwhMSk7ciYmKHI9clswXSl9aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihyW1JzXSE9PXRoaXNbUnNdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3JbUnNdfSAhPT0gJHt0aGlzW1JzXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocikpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHIpO2NvbnN0IGc9cltwbl0oZSx0KTtnJiZyW2huXShnLGUsdCk7cltZc10oZSx0KTt0LmRlbGV0ZShyKTtyZXR1cm4gcn1baG5dKGUsdCxpKXtpZihpLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2pyXSYmZVtqcl0mJih0aGlzW2pyXT1lW2pyXSk7bmV3IFNldChpKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1ttbl0oZVtTbl0pKXt0aGlzW3RdPWVbdF07dGhpc1tTbl0mJnRoaXNbU25dLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tCbl0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dGhpc1thXSxzPWVbYV07aWYociBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiByW1FuXSllW0ZuXSh0LGkpO2ZvcihsZXQgYT1yW1FuXS5sZW5ndGgsbj1zW1FuXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgcz1lW1FuXVthXVtQcl0oKTtpZighci5wdXNoKHMpKWJyZWFrO3NbRG5dPXRoaXM7dGhpc1tRbl0ucHVzaChzKTtzW0ZuXSh0LGkpfX1lbHNlIGlmKG51bGw9PT1yKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW1ByXSgpO2VbRG5dPXRoaXM7dGhpc1thXT1lO3RoaXNbUW5dLnB1c2goZSk7ZVtGbl0odCxpKX19ZWxzZXtyW1lzXSh0LGkpO3MmJnJbaG5dKHMsdCxpKX19fXN0YXRpY1tFbl0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGU9PlhGQU9iamVjdFtFbl0oZSkpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bUHJdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVt6c109YCR7ZVtSc119JHtSbisrfWA7ZVtRbl09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbQm5dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbRW5dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1t0XTtlW3RdPWkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoaVt3bl0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pe2NvbnN0IGk9dFtSc10sYT10W1ByXSgpO2VbUW5dLnB1c2goYSk7YVtEbl09ZTtudWxsPT09ZVtpXT9lW2ldPWE6ZVtpXVtRbl0ucHVzaChhKX1yZXR1cm4gZX1bb3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tRbl0uZmlsdGVyKCh0PT50W1JzXT09PWUpKTp0aGlzW1FuXX1bdHNdKGUpe3JldHVybiB0aGlzW2VdfVtpc10oZSx0LGk9ITApe3JldHVybiBBcnJheS5mcm9tKHRoaXNbYXNdKGUsdCxpKSl9Klthc10oZSx0LGk9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0pe2lbUnNdPT09ZSYmKHlpZWxkIGkpO2kubmFtZT09PWUmJih5aWVsZCBpKTsodHx8aVtEc10oKSkmJih5aWVsZCppW2FzXShlLHQsITEpKX1pJiZ0aGlzW0JuXS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKHRoaXMsZSx0aGlzW2VdKSl9ZWxzZSB5aWVsZCB0aGlzW0RuXX19Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbd25dPWU7dGhpc1tRbl09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe2lmKHRoaXNbUW5dLmxlbmd0aDw9dGhpc1t3bl0pe3RoaXNbUW5dLnB1c2goZSk7cmV0dXJuITB9d2FybihgWEZBIC0gbm9kZSAiJHtlW1JzXX0iIGFjY2VwdHMgbm8gbW9yZSB0aGFuICR7dGhpc1t3bl19IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tRbl0ubGVuZ3RofWR1bXAoKXtyZXR1cm4gMT09PXRoaXNbUW5dLmxlbmd0aD90aGlzW1FuXVswXVtWcl0oKTp0aGlzW1FuXS5tYXAoKGU9PmVbVnJdKCkpKX1bUHJdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1t3bl0pO2VbUW5dPXRoaXNbUW5dLm1hcCgoZT0+ZVtQcl0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW1FuXX1jbGVhcigpe3RoaXNbUW5dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXNbRG5dPWU7dGhpc1tSc109dDt0aGlzW2pyXT1pO3RoaXNbV3JdPSExO3RoaXNbenNdPSJhdHRyaWJ1dGUiK1JuKyt9W2xzXSgpe3JldHVybiB0aGlzW0RuXX1bcHNdKCl7cmV0dXJuITB9W3JzXSgpe3JldHVybiB0aGlzW2pyXS50cmltKCl9W09zXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbanJdPWUudG9TdHJpbmcoKX1banNdKCl7cmV0dXJuIHRoaXNbanJdfVttc10oZSl7cmV0dXJuIHRoaXNbRG5dPT09ZXx8dGhpc1tEbl1bbXNdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9e30pe3N1cGVyKGUsdCk7dGhpc1tqcl09IiI7dGhpc1t1bl09bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbQ25dPWU7Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhpKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LGEpKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1pW05zXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3VuXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3VuXT0hMCkpfX10aGlzW1dyXT0hMX1bWnNdKGUpe2NvbnN0IHQ9dGhpc1tSc107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2pyXSkpO3JldHVybn1jb25zdCBpPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNba3NdPT09Tm4/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke2l9YCk7Zm9yKGNvbnN0W3QsaV1vZiB0aGlzW0NuXS5lbnRyaWVzKCkpe2NvbnN0IGE9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7YX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoaVtqcl0pfSJgKX1udWxsIT09dGhpc1t1bl0mJih0aGlzW3VuXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tqcl18fDAhPT10aGlzW1FuXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbanJdKSJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbanJdKSk6dGhpc1tqcl1bWnNdKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tRbl0pdFtac10oZSk7ZS5wdXNoKGA8LyR7YX0ke2l9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtHc10oZSl7aWYodGhpc1tqcl0pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTt0aGlzW2pyXT0iIn10aGlzW1lyXShlKTtyZXR1cm4hMH1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXtpZih0aGlzW2pyXSYmdGhpc1tRbl0ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW2tzXSwiI3RleHQiKTt0aGlzW1lyXShlKTtlW2pyXT10aGlzW2pyXTtkZWxldGUgdGhpc1tqcl19fVtWc10oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tSc10/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tqcl19KTpIVE1MUmVzdWx0LkVNUFRZfVtvc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW1FuXS5maWx0ZXIoKHQ9PnRbUnNdPT09ZSkpOnRoaXNbUW5dfVtBc10oKXtyZXR1cm4gdGhpc1tDbl19W3RzXShlKXtjb25zdCB0PXRoaXNbQ25dLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbb3NdKGUpfSpbYXNdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7aSYmKHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbUW5dKXtpW1JzXT09PWUmJih5aWVsZCBpKTt0JiYoeWllbGQqaVthc10oZSx0KSl9fSpbJHJdKGUsdCl7Y29uc3QgaT10aGlzW0NuXS5nZXQoZSk7IWl8fHQmJmlbV3JdfHwoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tRbl0peWllbGQqaVskcl0oZSx0KX0qW25zXShlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tRbl0pe2FbUnNdIT09ZXx8aSYmYVtXcl18fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtuc10oZSx0LGkpKX19W3BzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aHx8dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ6dGhpc1t1bl19W3JzXSgpe3JldHVybiBudWxsPT09dGhpc1t1bl0/MD09PXRoaXNbUW5dLmxlbmd0aD90aGlzW2pyXS50cmltKCk6dGhpc1tRbl1bMF1ba3NdPT09QW4ueGh0bWwuaWQ/dGhpc1tRbl1bMF1banNdKCkudHJpbSgpOm51bGw6dGhpc1tqcl0udHJpbSgpfVtPc10oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2pyXT1lLnRvU3RyaW5nKCl9W1ZyXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNba3NdKTt0aGlzW2pyXSYmKHQuJGNvbnRlbnQ9dGhpc1tqcl0pO3QuJG5hbWU9dGhpc1tSc107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzW1FuXSl0LmNoaWxkcmVuLnB1c2goaVtWcl0oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGldb2YgdGhpc1tDbl0pdC5hdHRyaWJ1dGVzW2VdPWlbanJdO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2pyXT0iIn1bVXNdKGUpe3RoaXNbanJdKz1lfVtfcl0oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUsdCk7dGhpc1tibl09aX1bX3JdKCl7dGhpc1tqcl09Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2pyXSxkZWZhdWx0VmFsdWU6dGhpc1tibl1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tibl0uaW5jbHVkZXMoZSl9KX1bVHJdKGUpe3N1cGVyW1RyXShlKTtkZWxldGUgdGhpc1tibl19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoZSx0KTt0aGlzW2RuXT1pO3RoaXNba25dPWF9W19yXSgpe3RoaXNbanJdPWdldEludGVnZXIoe2RhdGE6dGhpc1tqcl0sZGVmYXVsdFZhbHVlOnRoaXNbZG5dLHZhbGlkYXRlOnRoaXNba25dfSl9W1RyXShlKXtzdXBlcltUcl0oZSk7ZGVsZXRlIHRoaXNbZG5dO2RlbGV0ZSB0aGlzW2tuXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsKGU9PjE9PT1lKSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLChlPT4wPT09ZSkpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBHbj17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGk9ZVtjc10oKTtpZihpJiYoIWkubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2xldCBhPWUudztjb25zdCByPWUuaDtpZihpLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWlbWnJdLHI9ZS5jb2xTcGFuO2xldCBzO2lmKC0xPT09cil7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihzKXx8KGE9ZS53PXMpfXQud2lkdGg9IiIhPT1hP21lYXN1cmVUb1N0cmluZyhhKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1yP21lYXN1cmVUb1N0cmluZyhyKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lW2NzXSgpO2lmKCFpPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW1JzXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bX3NdKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVtjc10oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsaSxhLHIscyl7Y29uc3Qgbj1uZXcgVGV4dE1lYXN1cmUodCxpLGEscik7InN0cmluZyI9PXR5cGVvZiBlP24uYWRkU3RyaW5nKGUpOmVbeHNdKG4pO3JldHVybiBuLmNvbXB1dGUocyl9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBpPW51bGwsYT1udWxsLHI9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcz0wLG49MDtpZihlLm1hcmdpbil7cz1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtuPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsZz1udWxsO2lmKGUucGFyYSl7Zz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2cudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtnLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Zy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtnLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBjPWUuZm9udDtpZighYyl7Y29uc3QgdD1lW2hzXSgpO2xldCBpPWVbbHNdKCk7Zm9yKDtpJiZpIT09dDspe2lmKGkuZm9udCl7Yz1pLmZvbnQ7YnJlYWt9aT1pW2xzXSgpfX1jb25zdCBsPShlLnd8fHQud2lkdGgpLXMsaD1lW0NzXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtqcl0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtqcl0sYyxnLG8saCxsKTthPXQud2lkdGg7aT10LmhlaWdodDtyPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbanNdKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsYyxnLG8saCxsKTthPWUud2lkdGg7aT1lLmhlaWdodDtyPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1zKTtudWxsPT09aXx8ZS5ofHwoaSs9bil9cmV0dXJue3c6YSxoOmksaXNCcm9rZW46cn19ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGkpe2xldCBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHI9ZS53O2lmKCIiPT09cil7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW2NzXSgpO3I9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIHI9TWF0aC5taW4oZS5tYXhXLGkud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcocil9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW2NzXSgpO3M9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIHM9TWF0aC5taW4oZS5tYXhILGkuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhzKX1hPVtlLngsZS55LHIsc119cmV0dXJuIGF9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbY3NdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgaT10W1pyXSxhPWUuY29sU3BhbjtsZXQgcjtyPS0xPT09YT9pLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uLGkuY3VycmVudENvbHVtbithKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKHIpfHwoZS53PXIpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWVbYV07aWYobnVsbCE9PXQpaWYoR24uaGFzT3duUHJvcGVydHkoYSkpR25bYV0oZSxpKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtfc10oKTtlP09iamVjdC5hc3NpZ24oaSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7YX0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczppfT10LHtzdHlsZTphfT1pLHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2kuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6aSxpbnNldHM6c309ZS5ib3JkZXJbWnJdO2xldCBuLG8sZz1zWzBdLGM9c1szXTtjb25zdCBsPXNbMF0rc1syXSxoPXNbMV0rc1szXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpnLT1pWzBdLzI7Yy09aVszXS8yO249YGNhbGMoMTAwJSArICR7KGlbMV0raVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoaVswXStpWzJdKS8yLWx9cHgpYDticmVhaztjYXNlImxlZnQiOmctPWlbMF07Yy09aVszXTtuPWBjYWxjKDEwMCUgKyAke2lbMV0raVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHtpWzBdK2lbMl0tbH1weClgO2JyZWFrO2Nhc2UicmlnaHQiOm49aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289bD9gY2FsYygxMDAlIC0gJHtsfXB4KWA6IjEwMCUifWNvbnN0IEM9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJkMucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgUT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpDLHN0eWxlOnt0b3A6YCR7Z31weGAsbGVmdDpgJHtjfXB4YCx3aWR0aDpuLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1hW2VdKXtRLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmNoaWxkcmVuLnB1c2goUSx0KX1lbHNlIHIuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1hW2VdKXtyLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PWEucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBhLnBvc2l0aW9uO2lmKGEuYWxpZ25TZWxmKXtyLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmO2RlbGV0ZSBhLmFsaWduU2VsZn1yZXR1cm4gcn1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBpPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLGE9Z2V0TWVhc3VyZW1lbnQoZVtpXSwiMHB4Iik7ZVtpXT1hLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbaHNdKClbWnJdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxpKXtpZihpLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBhPWdldEN1cnJlbnRQYXJhKGUpO2lmKGEpe2NvbnN0IGU9aS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChhLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWFbX3NdKCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyh0KSlpIGluIGV8fChlW2ldPWEpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsaSxhKXtpZighaSl7ZGVsZXRlIGEuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcj1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTthLmZvbnRGYW1pbHk9YCIke3J9ImA7Y29uc3Qgcz1pLmZpbmQocik7aWYocyl7Y29uc3R7Zm9udEZhbWlseTppfT1zLnJlZ3VsYXIuY3NzRm9udEluZm87aSE9PXImJihhLmZvbnRGYW1pbHk9YCIke2l9ImApO2NvbnN0IG49Z2V0Q3VycmVudFBhcmEodCk7aWYobiYmIiIhPT1uLmxpbmVIZWlnaHQpcmV0dXJuO2lmKGEubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUscyk7byYmKGEubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW1pyXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtacl0uYXR0cmlidXRlcyxjaGlsZHJlbjplW1pyXS5jaGlsZHJlbn07aWYoZVtacl0uZmFpbGluZ05vZGUpe2NvbnN0IGk9ZVtacl0uZmFpbGluZ05vZGVbenJdKCk7aSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFtpXSkpOnQuY2hpbGRyZW4ucHVzaChpKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsaSl7Y29uc3QgYT1lW1pyXSxyPWEuYXZhaWxhYmxlU3BhY2UsW3MsbixvLGddPWk7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjphLndpZHRoPU1hdGgubWF4KGEud2lkdGgscytvKTthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxuK2cpO2EuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighYS5saW5lfHwxPT09YS5hdHRlbXB0KXthLmxpbmU9Y3JlYXRlTGluZShlLFtdKTthLmNoaWxkcmVuLnB1c2goYS5saW5lKTthLm51bWJlckluTGluZT0wfWEubnVtYmVySW5MaW5lKz0xO2EubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1hLmF0dGVtcHQpe2EuY3VycmVudFdpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGEucHJldkhlaWdodCtnKX1lbHNle2EuY3VycmVudFdpZHRoPW87YS5wcmV2SGVpZ2h0PWEuaGVpZ2h0O2EuaGVpZ2h0Kz1nO2EuYXR0ZW1wdD0wfWEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxhLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7YS5jaGlsZHJlbi5wdXNoKHQpO2Eud2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsZyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoYS5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIGEuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOmEud2lkdGg9TWF0aC5taW4oci53aWR0aCxNYXRoLm1heChhLndpZHRoLG8pKTthLmhlaWdodCs9ZzthLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtacl0uYXZhaWxhYmxlU3BhY2UsaT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtacl0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbWnJdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtaS1lW1pyXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtacl0uY29sdW1uV2lkdGhzLnNsaWNlKGVbWnJdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbWnJdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbaHNdKClbWnJdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgaT1lW2NzXSgpLGE9aVtacl0/LmF0dGVtcHR8fDAsWyxyLHMsbl09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGksYT0iIj09PWUudz9OYU46ZS53LHI9IiI9PT1lLmg/TmFOOmUuaCxbcyxuXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltzLG5dPVthLzIscl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcyxuXT1bMCxyXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcyxuXT1bYSxyXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3Msbl09W2EvMixyLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3Msbl09WzAsci8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcyxuXT1bYSxyLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcyxuXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltzLG5dPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGldPVstcywtbl07YnJlYWs7Y2FzZSA5MDpbdCxpXT1bLW4sc107W2Escl09W3IsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LGldPVtzLG5dO1thLHJdPVstYSwtcl07YnJlYWs7Y2FzZSAyNzA6W3QsaV09W24sLXNdO1thLHJdPVstcixhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkraStNYXRoLm1pbigwLHIpLE1hdGguYWJzKGEpLE1hdGguYWJzKHIpXX0oZSk7c3dpdGNoKGkubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mnx8MD09PWlbWnJdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtoc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFpW2JzXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW2hzXSgpW1pyXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVt3c10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWlbYnNdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChuK3ItdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBuK3I+ZVtoc10oKVtacl0uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbaHNdKClbWnJdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBNbj1Bbi50ZW1wbGF0ZS5pZCxVbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhuPS9eSChcZCspJC8sTG49bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxIbj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3NzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtZcl0odCk7ZS52YWx1ZT10fWUudmFsdWVbT3NdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbb3NdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtnc10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWlmKGVbV3NdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUudHJhdmVyc2FsW29zXSgpKWlmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXt0PWk7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtXc109ZVtsc10oKVtXc107cmV0dXJufWNvbnN0IGk9ZVtoc10oKTtlW1dzXT0rK2lbV3NdO2NvbnN0IGE9aVtLc10odC5yZWYsZSk7aWYoIWEpcmV0dXJuO2U9YVswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBpPWUuYXNzaXN0O2lmKGkpe2NvbnN0IGU9aVtWc10oKTtlJiYodC50aXRsZT1lKTtjb25zdCBhPWkucm9sZS5tYXRjaCh4bik7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIsaT1hWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1pfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGk9ZVtsc10oKTsicm93Ij09PWkubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1pLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tqcl0/dC5zcGVha1tqcl06dC50b29sVGlwP3QudG9vbFRpcFtqcl06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO2lmKG51bGw9PT10W1pyXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtacl0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W1pyXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2hzXSgpO3RbWnJdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtacl0pcmV0dXJuITE7ZVtacl09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW2hzXSgpO2xldCBpPW51bGw7aWYoZS50YXJnZXQpe2k9dFtLc10oZS50YXJnZXQsZVtsc10oKSk7aWYoIWkpcmV0dXJuITE7aT1pWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTphLGN1cnJlbnRDb250ZW50QXJlYTpyfT10W1pyXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtpIGluc3RhbmNlb2YgUGFnZUFyZWF8fChpPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbWnJdLnRhcmdldD1pfHxhO3JldHVybiEwfWlmKGkmJmkhPT1hKXtlW1pyXS50YXJnZXQ9aTtyZXR1cm4hMH1yZXR1cm4hMX1pIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChpPW51bGwpO2NvbnN0IHM9aSYmaVtsc10oKTtsZXQgbixvPXM7aWYoZS5zdGFydE5ldylpZihpKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YociksYT1lLmluZGV4T2YoaSk7LTEhPT10JiZ0PGEmJihvPW51bGwpO249YS0xfWVsc2Ugbj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocik7ZWxzZXtpZighaXx8aT09PXIpcmV0dXJuITE7bj1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSktMTtvPXM9PT1hP251bGw6c31lW1pyXS50YXJnZXQ9bztlW1pyXS5pbmRleD1uO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxpKXtjb25zdCBhPWVbaHNdKCkscj1hW1pyXS5ub0xheW91dEZhaWx1cmUscz10W2NzXTt0W2NzXT0oKT0+ZTthW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgbj10W1ZzXShpKTtlW3ZyXShuLmh0bWwsbi5iYm94KTthW1pyXS5ub0xheW91dEZhaWx1cmU9cjt0W2NzXT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtfc10oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW19zXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7bGV0IGE7Y29uc3Qgcj17eG1sbnM6VW4sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpVbixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTppfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxzPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtuLG8sZyxjXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07YT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6VW4sZDpgTSAke259ICR7b30gQSA1MCA1MCAwICR7c30gMCAke2d9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTppfX07T2JqZWN0LmFzc2lnbihyLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBzPXtuYW1lOiJzdmciLGNoaWxkcmVuOlthXSxhdHRyaWJ1dGVzOnJ9O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3NdfSk7cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltnc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bRHNdKCl7cmV0dXJuITB9W2ZzXSgpe3JldHVybiEwfVt2cl0oZSx0KXtjb25zdFtpLGEscixzXT10O3RoaXNbWnJdLndpZHRoPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoLGkrcik7dGhpc1tacl0uaGVpZ2h0PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCxhK3MpO3RoaXNbWnJdLmNoaWxkcmVuLnB1c2goZSl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5hdmFpbGFibGVTcGFjZX1bVnNdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGk9e3N0eWxlOnQsaWQ6dGhpc1t6c10sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZpLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGE9W107dGhpc1tacl09e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCByPXRoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXIuc3VjY2Vzcyl7aWYoci5pc0JyZWFrKCkpcmV0dXJuIHI7ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tacl0ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW1pyXS5oZWlnaHQpO2NvbnN0IHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOmF9LG49W3RoaXMueCx0aGlzLnksdGhpc1tacl0ud2lkdGgsdGhpc1tacl0uaGVpZ2h0XTtkZWxldGUgdGhpc1tacl07cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzLG4pfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bVnNdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW2pyXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tqcl0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc3NdKCl7aWYoIXRoaXNbWnJdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxpPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7aVswXT10aGlzLm1hcmdpbi50b3BJbnNldDtpWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDtpWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW1pyXT17d2lkdGhzOnQsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbWnJdfVtfc10oKXtjb25zdHtlZGdlczplfT10aGlzW3NzXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbX3NdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oaSx0aGlzLm1hcmdpbltfc10oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW19zXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWkuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjppLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmkuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6aS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1pLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2kuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGl9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bVnNdKGUpe3RoaXNbWnJdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tsc10oKVtsc10oKSxpPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbenNdLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2pyXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJmkuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbenNdLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtPc10oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3NzXShlKXtpZighdGhpc1tacl0pe2xldHt3aWR0aDp0LGhlaWdodDppfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppPXRoaXMucmVzZXJ2ZTw9MD9pOnRoaXMucmVzZXJ2ZX10aGlzW1pyXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9KX1yZXR1cm4gdGhpc1tacl19W1ZzXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtWc10oZSkuaHRtbDtpZighdCl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBpPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOml9PXRoaXNbc3NdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9aX19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCByPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihyLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbTHNdKCk7dGhpcy5yZXNlcnZlPWk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpyLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUoIm1hcmdpbiIpLGk9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1pO2xldCBhLHIscztjb25zdCBuPXRoaXNbbHNdKClbbHNdKCksbz1uLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbi5pdGVtcy5jaGlsZHJlblswXVtWc10oKS5odG1sfHxbXSxnPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGM9KG4udmFsdWU/Lltqc10oKXx8Im9mZiIpPT09Zy5vbnx8dm9pZCAwLGw9bltjc10oKSxoPW5benNdO2xldCBDO2lmKGwgaW5zdGFuY2VvZiBFeGNsR3JvdXApe3M9bFt6c107YT0icmFkaW8iO3I9InhmYVJhZGlvIjtDPWxbWHJdPy5benNdfHxsW3pzXX1lbHNle2E9ImNoZWNrYm94IjtyPSJ4ZmFDaGVja2JveCI7Qz1uW1hyXT8uW3pzXXx8blt6c119Y29uc3QgUT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltyXSxzdHlsZTp0LGZpZWxkSWQ6aCxkYXRhSWQ6Qyx0eXBlOmEsY2hlY2tlZDpjLHhmYU9uOmcub24seGZhT2ZmOmcub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07cyYmKFEuYXR0cmlidXRlcy5uYW1lPXMpO2lmKGlzUmVxdWlyZWQobikpe1EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO1EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbUV19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtmb250U2l6ZTpgY2FsYygke2kuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LHI9W107aWYoaS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1pLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbj1lLmNoaWxkcmVuW3RdW1ZzXSgpLmh0bWwsbz1lLmNoaWxkcmVuW3NdW1ZzXSgpLmh0bWw7bGV0IGc9ITE7Y29uc3QgYz1pLnZhbHVlPy5banNdKCl8fCIiO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxuW2VdLHN0eWxlOmF9LHZhbHVlOm5bZV19O29bZV09PT1jJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWc9ITApO3IucHVzaCh0KX1nfHxyLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCBzPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6aVt6c10sZGF0YUlkOmlbWHJdPy5benNdfHxpW3pzXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGkpKXtzWyJhcmlhLXJlcXVpcmVkIl09ITA7cy5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYocy5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOnIsYXR0cmlidXRlczpzfV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFtpLGEscl09dDtpZighZSlyZXR1cm57cjppLGc6YSxiOnJ9O2NvbnN0IHM9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9Pk1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihzLmxlbmd0aDwzKXJldHVybntyOmksZzphLGI6cn07W2ksYSxyXT1zO3JldHVybntyOmksZzphLGI6cn19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W0JzXSgpe3JldHVybiExfVtfc10oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W1ZzXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGk9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczppLGlkOnRoaXNbenNdfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKTt0aGlzW2pyXT1lP25ldyBEYXRlKGUpOm51bGx9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2pyXS50cmltKCkpO3RoaXNbanJdPWlzTmFOKGUpP251bGw6ZX1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tqcl0/dGhpc1tqcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy53LGk9dGhpcy5oLHt3OmEsaDpyLGlzQnJva2VuOnN9PWxheW91dE5vZGUodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYocyYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1hfXImJiIiPT09dGhpcy5oJiYodGhpcy5oPXIpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbj10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbik7aWYobi5tYXJnaW4pe24ucGFkZGluZz1uLm1hcmdpbjtkZWxldGUgbi5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e3N0eWxlOm4saWQ6dGhpc1t6c10sY2xhc3M6b307dGhpcy5uYW1lJiYoZy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmcsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgbD1jb21wdXRlQmJveCh0aGlzLGMsZSksaD10aGlzLnZhbHVlP3RoaXMudmFsdWVbVnNdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09aCl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX1jLmNoaWxkcmVuLnB1c2goaCk7c2V0UGFyYSh0aGlzLG4saCk7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxsKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW19zXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtkc10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W0dzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVba3NdPT09QW4ueGh0bWwuaWQpe3RoaXNbanJdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbanJdPWU7cmV0dXJuITB9cmV0dXJuITF9W1ZzXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbanJdP3RoaXNbanJdW1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W2ZzXSgpe3JldHVybiEwfVtCc10oKXtyZXR1cm4hMH1bT3NdKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtZcl0oZSk7dC52YWx1ZT1lfXQudmFsdWVbT3NdKGUpfX1bYnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJnRoaXNbWnJdLm51bWJlckluTGluZT4wfHx0aGlzW2xzXSgpW2JzXSgpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtacl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3pyXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W3ZyXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtlc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1ZzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1t3c10oKTthfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCByPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tjc10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tacl0uY29sdW1uV2lkdGhzPWU7dGhpc1tacl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBzPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbj1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmbi5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZuLnB1c2goInhmYVByaW50T25seSIpO2kuc3R5bGU9cztpLmNsYXNzPW47dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tIc10oKTtjb25zdCBnPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGM9Zz8yOjE7Zm9yKDt0aGlzW1pyXS5hdHRlbXB0PGM7dGhpc1tacl0uYXR0ZW1wdCsrKXtnJiYxPT09dGhpc1tacl0uYXR0ZW1wdCYmKHRoaXNbWnJdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbS3JdKHtmaWx0ZXI6cixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0xzXSgpO3JldHVybiBlfWlmKGcmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiYwPT09dGhpc1tacl0ubnVtYmVySW5MaW5lJiYhdGhpc1toc10oKVtacl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW1pyXS5hdHRlbXB0PWM7YnJlYWt9fXRoaXNbTHNdKCk7YXx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW1pyXS5hdHRlbXB0PT09Yyl7YXx8ZGVsZXRlIHRoaXNbWnJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGw9MCxoPTA7aWYodGhpcy5tYXJnaW4pe2w9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBDPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK2wsdGhpcy53fHwwKSxRPU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtoLHRoaXMuaHx8MCksRT1bdGhpcy54LHRoaXMueSxDLFFdOyIiPT09dGhpcy53JiYocy53aWR0aD1tZWFzdXJlVG9TdHJpbmcoQykpOyIiPT09dGhpcy5oJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKFEpKTtjb25zdCB1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2RlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxFKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bZnNdKCl7cmV0dXJuITB9W09zXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bVnNdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtDc109dGhpc1tDc107dGhpc1tZcl0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtZcl0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW1pyXTt0aGlzW0hzXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltWc10oZSkuaHRtbDpudWxsLGk9dGhpcy53LGE9dGhpcy5oO2xldCByPTAscz0wO2lmKHRoaXMubWFyZ2luKXtyPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3M9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG49bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsaT1udWxsLGE9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilhPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6aX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXthPXQ7bz1pfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGk9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLGE9ZVtDc10uZm9udEZpbmRlci5maW5kKHQpO2k9c2VsZWN0Rm9udChlLGEpfWlmKCFpKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGE9ZS5zaXplfHwxMCxyPWkubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGkubGluZUhlaWdodCk6MS4yLHM9dm9pZCAwPT09aS5saW5lR2FwPy4yOmkubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpyKmEsbGluZUdhcDpzKmEsbGluZU5vR2FwOk1hdGgubWF4KDEsci1zKSphfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9bj1nZXRCb3JkZXJEaW1zKHRoaXMudWlbc3NdKCkpO2ErPW4udztvKz1uLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnIsaDpzLGlzQnJva2VuOm59PXRoaXMuY2FwdGlvbltzc10oZSk7aWYobiYmdGhpc1tjc10oKVtic10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9cjtpPXM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppKz1vfX1lbHNle3Q9YTtpPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXI7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGkmJiIiPT09dGhpcy5oKXtpKz1zO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxpP2k6dGhpcy5taW5IKX19dGhpc1tMc10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWk7dGhpcy5oPWE7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgZz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZnLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpvLGlkOnRoaXNbenNdLGNsYXNzOmd9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGcpO3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGw9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46bH07YXBwbHlBc3Npc3QodGhpcyxjKTtjb25zdCBDPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW19zXSgpOm51bGwsUT1jb21wdXRlQmJveCh0aGlzLGgsZSksRT10aGlzLnVpW1ZzXSgpLmh0bWw7aWYoIUUpe09iamVjdC5hc3NpZ24obyxDKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX10aGlzW1dzXSYmKEUuY2hpbGRyZW4/LlswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tXc106RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbV3NdKTtFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IHU9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoW3VdPUUuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLEMpfWVsc2UgT2JqZWN0LmFzc2lnbihvLEMpO2wucHVzaChFKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KUUuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW1ZzXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW2pzXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W3NzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW1ZzXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1FLmNoaWxkcmVuWzBdLm5hbWU/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmRS5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe249bnx8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3NzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bc3NdKGUpLmgpO2NvbnN0IGk9dGhpcy5oLXQtcy1uLmg7RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoaSl9ZWxzZSBFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn11JiZFLmNoaWxkcmVuLnB1c2godSk7aWYoIXQpe0UuYXR0cmlidXRlcy5jbGFzcyYmRS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7RS5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCxRKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtFLmF0dHJpYnV0ZXMuY2xhc3N8fChFLmF0dHJpYnV0ZXMuY2xhc3M9W10pO0UuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W19zXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PWVbbHNdKClbbHNdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSJjb2xvciIscj1hO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2E9ImJhY2tncm91bmQtY29sb3IiO3I9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGkuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2E9cj0iZmlsbCI7aS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcz10W19zXSh0aGlzLmNvbG9yKTtzJiYoaVtzLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPXMpO3JldHVybiBpfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3JbX3NdKCk7aVtlLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPWV9cmV0dXJuIGl9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tqcl0udHJpbSgpKTt0aGlzW2pyXT1pc05hTihlKT9udWxsOmV9W1ZzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbanJdP3RoaXNbanJdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzW0NzXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1bX3NdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbQ3NdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtWc10oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhTG4uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tDc10uaW1hZ2VzJiZ0aGlzW0NzXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW2pyXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPWZ1bmN0aW9uIGZyb21CYXNlNjRVdGlsKGUpe3JldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQ/VWludDhBcnJheS5mcm9tQmFzZTY0KGUpOnN0cmluZ1RvQnl0ZXMoYXRvYihlKSl9KHRoaXNbanJdKSk7aWYoIWUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7aWYoIXRoaXMuY29udGVudFR5cGUpe2Zvcihjb25zdFt0LGldb2YgSG4paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGkpPT50PT09ZVtpXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWk7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBpO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6aT17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOmk9e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOmk9e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbbHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6aSxzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVtsc10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bVnNdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfcl0oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbanJdLnRyaW0oKSwxMCk7dGhpc1tqcl09aXNOYU4oZSk/bnVsbDplfVtWc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtWc10oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbb3NdKCkpZS5wdXNoKHRbanNdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtWc10oKXtjb25zdCBlPXRoaXNbbHNdKClbbHNdKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxpPXRbX3NdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpO2Euc3Ryb2tlPWkuY29sb3I7bGV0IHMsbixvLGcsYz0iMTAwJSIsbD0iMTAwJSI7aWYoZS53PD1yKXtbcyxuLG8sZ109WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXIpe1tzLG4sbyxnXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2w9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3MsbixvLGddPVswLDAsIjEwMCUiLCIxMDAlIl06W3MsbixvLGddPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgaD17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHgxOnMseTE6bix4MjpvLHkyOmcsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbix3aWR0aDpjLGhlaWdodDpsLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9fX07aWYoaGFzTWFyZ2luKGUpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbaF19KTtoLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgpfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxpbmVhciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b1JpZ2h0IiwidG9Cb3R0b20iLCJ0b0xlZnQiLCJ0b1RvcCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7cmV0dXJuYGxpbmVhci1ncmFkaWVudCgke3RoaXMudHlwZS5yZXBsYWNlKC8oW1JCTFRdKS8sIiAkMSIpLnRvTG93ZXJDYXNlKCl9LCAke2V9LCAke3RoaXMuY29sb3I/dGhpcy5jb2xvcltfc10oKToiIzAwMDAwMCJ9KWB9fWNsYXNzIExvY2tEb2N1bWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sImxvY2tEb2N1bWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bX3JdKCl7dGhpc1tqcl09Z2V0U3RyaW5nT3B0aW9uKHRoaXNbanJdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWFuaWZlc3QiLCEwKTt0aGlzLmFjdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpb24sWyJpbmNsdWRlIiwiYWxsIiwiZXhjbHVkZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtYXJnaW4iLCEwKTt0aGlzLmJvdHRvbUluc2V0PWdldE1lYXN1cmVtZW50KGUuYm90dG9tSW5zZXQsIjAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVmdEluc2V0PWdldE1lYXN1cmVtZW50KGUubGVmdEluc2V0LCIwIik7dGhpcy5yaWdodEluc2V0PWdldE1lYXN1cmVtZW50KGUucmlnaHRJbnNldCwiMCIpO3RoaXMudG9wSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS50b3BJbnNldCwiMCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtfc10oKXtyZXR1cm57bWFyZ2luOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRvcEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMucmlnaHRJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmJvdHRvbUluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWRwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBlcm1pc3Npb25zPWdldEludGVnZXIoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KTt0aGlzLnNpZ25hdHVyZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lZGl1bSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwibWVkaXVtIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmltYWdpbmdCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBpPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoaS5sZW5ndGg8NHx8aVsyXTwwfHxpWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbYSxyLHMsbl09aTtyZXR1cm57eDphLHk6cix3aWR0aDpzLGhlaWdodDpufX0oZS5pbWFnaW5nQkJveCk7dGhpcy5sb25nPWdldE1lYXN1cmVtZW50KGUubG9uZyk7dGhpcy5vcmllbnRhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pO3RoaXMuc2hvcnQ9Z2V0TWVhc3VyZW1lbnQoZS5zaG9ydCk7dGhpcy5zdG9jaz1lLnN0b2NrfHwiIjt0aGlzLnRyYXlJbj1nZXRTdHJpbmdPcHRpb24oZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSk7dGhpcy50cmF5T3V0PWdldFN0cmluZ09wdGlvbihlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZXNzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTnVtZXJpY0VkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W1ZzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tsc10oKVtsc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW3pzXSxkYXRhSWQ6aVtYcl0/Llt6c118fGlbenNdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgT2NjdXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD9nZXRJbnRlZ2VyKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W1RyXSgpe2NvbnN0IGU9dGhpc1tsc10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NzXSgpe2lmKCF0aGlzW1pyXSl7Y29uc3QgZT10aGlzW2xzXSgpLHQ9dGhpc1toc10oKSxpPXRbS3NdKHRoaXMudGFyZ2V0LGUpLGE9dFtLc10odGhpcy5sZWFkZXIsZSkscj10W0tzXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tacl09e3RhcmdldDppPy5bMF18fG51bGwsbGVhZGVyOmE/LlswXXx8bnVsbCx0cmFpbGVyOnI/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbWnJdfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtGc10oKXtpZighdGhpc1tacl0pe3RoaXNbWnJdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tacl0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3FyXSgpe2RlbGV0ZSB0aGlzW1pyXX1bSXNdKCl7dGhpc1tacl18fCh0aGlzW1pyXT17bnVtYmVyT2ZVc2U6MH0pO2NvbnN0IGU9dGhpc1tsc10oKTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09ZS5yZWxhdGlvbiYmdGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7cmV0dXJuIHRoaXN9cmV0dXJuIGVbSXNdKCl9W2VzXSgpe3JldHVybiB0aGlzW1pyXS5zcGFjZXx8e3dpZHRoOjAsaGVpZ2h0OjB9fVtWc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW1pyXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tacl0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbWnJdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tLcl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbS3JdKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1t6c10sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W3FyXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtxcl0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtxcl0oKX1bRnNdKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbWnJdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtJc10oKXt0aGlzW1pyXXx8KHRoaXNbWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9KTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tacl0ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW1pyXS5wYWdlSW5kZXhdW0lzXSgpfWlmKHRoaXNbWnJdLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbWnJdLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbWnJdLnBhZ2VTZXRJbmRleF1bSXNdKCl9aWYodGhpc1tGc10oKSl7dGhpc1tacl0ubnVtYmVyT2ZVc2UrPTE7dGhpc1tacl0ucGFnZUluZGV4PS0xO3RoaXNbWnJdLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbbHNdKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbSXNdKCk7dGhpc1txcl0oKTtyZXR1cm4gdGhpc1tJc10oKX1jb25zdCBlPXRoaXNbaHNdKClbWnJdLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGk9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IGE9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09aSkpO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pKTtyZXR1cm4gYXx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoKGUsdCk9PnQlMj09MT9nZXRNZWFzdXJlbWVudChlKTplKSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtfc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW19zXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiLGk9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke2l9KHRvIHRvcCwke2F9KSAke2l9KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pICR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7aX0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke2l9KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7aX0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtlPWU/ZVtfc10oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbX3NdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVtWc10oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbX3NdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtfc10oKSk6aS5maWxsPSJ0cmFuc3BhcmVudCI7aS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtpLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbX3NdKCkscj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOlVuLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6YS5yYWRpdXMscnk6YS5yYWRpdXMsc3R5bGU6aX19XSxhdHRyaWJ1dGVzOnt4bWxuczpVbixzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifSx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19O2lmKGhhc01hcmdpbih0aGlzW2xzXSgpW2xzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgUmVmRWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNldFByb3BlcnR5Iik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25EYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W19zXShlKXtyZXR1cm4gZT9lW19zXSgpOiIjRkZGRkZGIn19Y2xhc3MgU3BlYWsgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInNwZWFrIik7dGhpcy5kaXNhYmxlPWdldEludGVnZXIoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PWdldFN0cmluZ09wdGlvbihlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtfc10oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihNYXRoLnJvdW5kKGUudmFsdWUuciooMS10KSt0aGlzLnZhbHVlLnIqdCksTWF0aC5yb3VuZChlLnZhbHVlLmcqKDEtdCkrdGhpcy52YWx1ZS5nKnQpLE1hdGgucm91bmQoZS52YWx1ZS5iKigxLXQpK3RoaXMudmFsdWUuYip0KSl9fWNsYXNzIFN1YmZvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtjc10oKXtjb25zdCBlPXRoaXNbbHNdKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2VbY3NdKCk6ZX1bZnNdKCl7cmV0dXJuITB9W2JzXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW1pyXS5hdHRlbXB0JiZ0aGlzW1pyXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tsc10oKVtic10oKX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVt6cl0oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVt2cl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bZXNdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVt3c10oKXtjb25zdCBlPXRoaXNbY3NdKCk7aWYoIWVbd3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tacl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tacl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tacl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbWnJdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbWnJdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW1pyXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtWc10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtDc109dGhpc1tDc107dGhpc1tZcl0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW0NzXT10aGlzW0NzXTt0aGlzW1lyXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbQ3NdPXRoaXNbQ3NdO3RoaXNbWXJdKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW0pzXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW1pyXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW3pzXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tacl18fCh0aGlzW1pyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbWnJdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmksYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1toc10oKSxyPWFbWnJdLm5vTGF5b3V0RmFpbHVyZSxzPXRoaXNbd3NdKCk7c3x8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgbj1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW2NzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW1pyXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW1pyXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG89dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxnPVsieGZhU3ViZm9ybSJdLGM9bGF5b3V0Q2xhc3ModGhpcyk7YyYmZy5wdXNoKGMpO2kuc3R5bGU9bztpLmNsYXNzPWc7dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3NzXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW0hzXSgpO2NvbnN0IGw9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsaD1sPzI6MTtmb3IoO3RoaXNbWnJdLmF0dGVtcHQ8aDt0aGlzW1pyXS5hdHRlbXB0Kyspe2wmJjE9PT10aGlzW1pyXS5hdHRlbXB0JiYodGhpc1tacl0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tLcl0oe2ZpbHRlcjpuLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbTHNdKCk7cmV0dXJuIGV9aWYobCYmMD09PXRoaXNbWnJdLmF0dGVtcHQmJjA9PT10aGlzW1pyXS5udW1iZXJJbkxpbmUmJiFhW1pyXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbWnJdLmF0dGVtcHQ9aDticmVha319dGhpc1tMc10oKTtzfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2FbWnJdLm5vTGF5b3V0RmFpbHVyZT1yO2lmKHRoaXNbWnJdLmF0dGVtcHQ9PT1oKXt0aGlzLm92ZXJmbG93JiYodGhpc1toc10oKVtacl0ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpO3N8fGRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tzc10oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IEM9MCxRPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7UT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBFPU1hdGgubWF4KHRoaXNbWnJdLndpZHRoK0MsdGhpcy53fHwwKSx1PU1hdGgubWF4KHRoaXNbWnJdLmhlaWdodCtRLHRoaXMuaHx8MCksZD1bdGhpcy54LHRoaXMueSxFLHVdOyIiPT09dGhpcy53JiYoby53aWR0aD1tZWFzdXJlVG9TdHJpbmcoRSkpOyIiPT09dGhpcy5oJiYoby5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHUpKTtpZigoIjBweCI9PT1vLndpZHRofHwiMHB4Ij09PW8uaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsaSk7Y29uc3QgcD1IVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGQpO2lmKHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXt0aGlzW1pyXS5hZnRlckJyZWFrQWZ0ZXI9cDtyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW1pyXTtyZXR1cm4gcH19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwic3ViZm9ybVNldCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWQiLCJjaG9pY2UiLCJ1bm9yZGVyZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW2dzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtjc10oKXtsZXQgZT10aGlzW2xzXSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtsc10oKTtyZXR1cm4gZX1bZnNdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETiIpO3RoaXMuZGVsaW1pdGVyPWUuZGVsaW1pdGVyfHwiLCI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe3RoaXNbanJdPW5ldyBNYXAodGhpc1tqcl0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bX3JdKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW1dzXT01ZTN9W3dzXSgpe3JldHVybiEwfVtLc10oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbUXNdLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9KltYc10oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1tacl09e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbcXJdKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4saT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IGE9bnVsbCxyPW51bGwscz1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtyPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9ci50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5icmVhaztzPXIuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9aWYocil7Y29uc3QgZT10aGlzW0tzXShzLHJbbHNdKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7YT1lO3JbWnJdPXt9fX1hfHwoYT10WzBdKTthW1pyXT17bnVtYmVyT2ZVc2U6MX07Y29uc3Qgbj1hW2xzXSgpO25bWnJdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpuLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSkscGFnZVNldEluZGV4OjB9O2xldCBvLGc9bnVsbCxjPW51bGwsbD0hMCxoPTAsQz0wO2Zvcig7Oyl7aWYobCloPTA7ZWxzZXtpLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsraCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBpfX1vPW51bGw7dGhpc1tacl0uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW1ZzXSgpLmh0bWw7aS5jaGlsZHJlbi5wdXNoKHQpO2lmKGcpe3RoaXNbWnJdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZ1tWc10oYVtacl0uc3BhY2UpLmh0bWwpO2c9bnVsbH1pZihjKXt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGNbVnNdKGFbWnJdLnNwYWNlKS5odG1sKTtjPW51bGx9Y29uc3Qgcj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2w9ITE7dGhpc1tacl0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW1pyXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGk9ZVt6cl0oKTtpZihpKXtsfHw9aS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGkpfX07Zm9yKGxldCB0PUMsYT1yLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXNbWnJdLmN1cnJlbnRDb250ZW50QXJlYT1yW3RdLG49e3dpZHRoOmEudyxoZWlnaHQ6YS5ofTtDPTA7aWYoZyl7c1t0XS5jaGlsZHJlbi5wdXNoKGdbVnNdKG4pLmh0bWwpO2c9bnVsbH1pZihjKXtzW3RdLmNoaWxkcmVuLnB1c2goY1tWc10obikuaHRtbCk7Yz1udWxsfWNvbnN0IGg9ZVtWc10obik7aWYoaC5zdWNjZXNzKXtpZihoLmh0bWwpe2x8fD1oLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChoLmh0bWwpfWVsc2UhbCYmaS5jaGlsZHJlbi5sZW5ndGg+MSYmaS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gaX1pZihoLmlzQnJlYWsoKSl7Y29uc3QgZT1oLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe2c9dGhpc1tLc10oZS5sZWFkZXIsZVtsc10oKSk7Zz1nP2dbMF06bnVsbH1pZihlLnRyYWlsZXIpe2M9dGhpc1tLc10oZS50cmFpbGVyLGVbbHNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7bz1lW1pyXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW1pyXS50YXJnZXQpe289ZVtacl0udGFyZ2V0O0M9ZVtacl0uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVtacl0uaW5kZXh9ZWxzZSBpZih0aGlzW1pyXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1tacl0ub3ZlcmZsb3dOb2RlO3RoaXNbWnJdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGk9ZVtzc10oKSxhPWkudGFyZ2V0O2kuYWRkTGVhZGVyPW51bGwhPT1pLmxlYWRlcjtpLmFkZFRyYWlsZXI9bnVsbCE9PWkudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYoYSBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89YTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1yLmluZGV4T2YoYSk7aWYoLTEhPT1lKWU+cz90PWUtMTpDPWU7ZWxzZXtvPWFbbHNdKCk7Qz1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSl9fX1lbHNlIGZsdXNoKHQpfXRoaXNbWnJdLnBhZ2VOdW1iZXIrPTE7byYmKG9bRnNdKCk/b1tacl0ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTthPW98fGFbSXNdKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bSnJdKCl7cmV0dXJuITB9W0dzXShlKXtpZihlW2tzXT09PUFuLnhodG1sLmlkKXt0aGlzW2pyXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbUnNdfS5gKTtyZXR1cm4hMX1bVXNdKGUpe3RoaXNbanJdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW1VzXShlKX1bX3JdKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXSYmKHRoaXNbanJdPXRoaXNbanJdLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bc3NdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW2pyXT90aGlzW2pyXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9Pnt0JiZlLnB1c2godCk7cmV0dXJuIGV9KSxbXSkuam9pbigiXG4iKTp0aGlzW2pyXVtqc10oKX1bVnNdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tqcl0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tqcl0pLmh0bWw7aWYodGhpc1tqcl0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tqcl0pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2pyXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW2pyXVtWc10oZSl9fWNsYXNzIFRleHRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtWc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKTtsZXQgaTtjb25zdCBhPXRoaXNbbHNdKClbbHNdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPWEgaW5zdGFuY2VvZiBEcmF3PzE6MCk7aT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6YVtYcl0/Llt6c118fGFbenNdLGZpZWxkSWQ6YVt6c10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7aS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7aS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBUaW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpO3RoaXNbanJdPWU/bmV3IERhdGUoZSk6bnVsbH1bVnNdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2pyXT90aGlzW2pyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0b29sVGlwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUcmF2ZXJzYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYXZlcnNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bRHNdKCl7cmV0dXJuITF9fWNsYXNzIFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3NzXSgpe2lmKHZvaWQgMD09PXRoaXNbWnJdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW1pyXT10O3JldHVybiB0fX10aGlzW1pyXT1udWxsfXJldHVybiB0aGlzW1pyXX1bVnNdKGUpe2NvbnN0IHQ9dGhpc1tzc10oKTtyZXR1cm4gdD90W1ZzXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihNbiwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD1nZXRTdHJpbmdPcHRpb24oZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTW4sInZhbHVlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldEludGVnZXIoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYXJjPW51bGw7dGhpcy5ib29sZWFuPW51bGw7dGhpcy5kYXRlPW51bGw7dGhpcy5kYXRlVGltZT1udWxsO3RoaXMuZGVjaW1hbD1udWxsO3RoaXMuZXhEYXRhPW51bGw7dGhpcy5mbG9hdD1udWxsO3RoaXMuaW1hZ2U9bnVsbDt0aGlzLmludGVnZXI9bnVsbDt0aGlzLmxpbmU9bnVsbDt0aGlzLnJlY3RhbmdsZT1udWxsO3RoaXMudGV4dD1udWxsO3RoaXMudGltZT1udWxsfVtPc10oZSl7Y29uc3QgdD10aGlzW2xzXSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aT8uaW1hZ2VFZGl0KXtpZighdGhpcy5pbWFnZSl7dGhpcy5pbWFnZT1uZXcgSW1hZ2Uoe30pO3RoaXNbWXJdKHRoaXMuaW1hZ2UpfXRoaXMuaW1hZ2VbanJdPWVbanJdO3JldHVybn1jb25zdCBpPWVbUnNdO2lmKG51bGw9PT10aGlzW2ldKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbZV09bnVsbDt0aGlzW0pzXSh0KX19dGhpc1tlW1JzXV09ZTt0aGlzW1lyXShlKX1lbHNlIHRoaXNbaV1banJdPWVbanJdfVtqc10oKXtpZih0aGlzLmV4RGF0YSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuZXhEYXRhW2pyXT90aGlzLmV4RGF0YVtqcl0udHJpbSgpOnRoaXMuZXhEYXRhW2pyXVtqc10oKS50cmltKCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJpbWFnZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybih0W2pyXXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfXJldHVybiBudWxsfVtWc10oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGk9dGhpc1t0XTtpZihpIGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybiBpW1ZzXShlKX1yZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFyaWFibGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE1uLCJ2YXJpYWJsZXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtEc10oKXtyZXR1cm4hMH19Y2xhc3MgVGVtcGxhdGVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFRlbXBsYXRlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPVRlbXBsYXRlTmFtZXNwYWNlW2VdKHQpO2lbcXNdKHQpO3JldHVybiBpfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgdGVtcGxhdGVfRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX1BhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fWNvbnN0IEpuPUFuLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgVGV4dCh7fSk7dFtqcl09ZTtyZXR1cm4gdH1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgWG1sT2JqZWN0KEFuLmRhdGFzZXRzLmlkLCJkYXRhIik7dGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbb3NdKCkubGVuZ3RoO3RoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT1lLnRlbXBsYXRlW1ByXSgpfV9pc0NvbnN1bWVEYXRhKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfV9pc01hdGNoVGVtcGxhdGUoKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfWJpbmQoKXt0aGlzLl9iaW5kRWxlbWVudCh0aGlzLmZvcm0sdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5mb3JtfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfV9iaW5kVmFsdWUoZSx0LGkpe2VbWHJdPXQ7aWYoZVtCc10oKSlpZih0W3BzXSgpKXtjb25zdCBpPXRbcnNdKCk7ZVtPc10oY3JlYXRlVGV4dChpKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBpPXRbb3NdKCkubWFwKChlPT5lW2pyXS50cmltKCkpKS5qb2luKCJcbiIpO2VbT3NdKGNyZWF0ZVRleHQoaSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W3BzXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGksYSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHIscztmb3IobGV0IGE9MDthPDM7YSsrKXtyPWlbbnNdKGUsITEsITApO2Zvcig7Oyl7cz1yLm5leHQoKS52YWx1ZTtpZighcylicmVhaztpZih0PT09c1twc10oKSlyZXR1cm4gc31pZihpW2tzXT09PUFuLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1pW1JzXSlicmVhaztpPWlbbHNdKCl9aWYoIWEpcmV0dXJuIG51bGw7cj10aGlzLmRhdGFbbnNdKGUsITAsITEpO3M9ci5uZXh0KCkudmFsdWU7aWYocylyZXR1cm4gcztyPXRoaXMuZGF0YVskcl0oZSwhMCk7cz1yLm5leHQoKS52YWx1ZTtyZXR1cm4gcz8uW3BzXSgpP3M6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjppLHRhcmdldDphLGNvbm5lY3Rpb246cn1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihyKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IHM9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZighcyl7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7aX0uYCk7Y29udGludWV9Y29uc3Rbbl09cztpZighblttc10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxhLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbZ109bztpZighZ1ttc10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgYz1nW2xzXSgpO2lmKGcgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8YyBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGcgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGMgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGw9bltqc10oKSxoPWdbUnNdO2lmKGcgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW2hdPWw7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYykuY29uc3RydWN0b3IsW2VdKTtjW2hdPXRbaF19ZWxzZSBpZihnLmhhc093blByb3BlcnR5KGpyKSl7Z1tYcl09bjtnW2pyXT1sO2dbX3JdKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtKc10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGk9bmV3IEl0ZW1zKHt9KSxhPW5ldyBJdGVtcyh7fSk7ZVtZcl0oaSk7ZS5pdGVtcy5wdXNoKGkpO2VbWXJdKGEpO2UuaXRlbXMucHVzaChhKTtmb3IoY29uc3R7cmVmOnIsbGFiZWxSZWY6cyx2YWx1ZVJlZjpuLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighciljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFttc10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke3J9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGc9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZighZyl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtufS5gKTtjb250aW51ZX1jb25zdFtjXT1nO2lmKCFjW21zXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGw9Y3JlYXRlVGV4dChvW2pzXSgpKSxoPWNyZWF0ZVRleHQoY1tqc10oKSk7aVtZcl0obCk7aS50ZXh0LnB1c2gobCk7YVtZcl0oaCk7YS50ZXh0LnB1c2goaCl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtyfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsaSl7bGV0IGE7aWYodC5sZW5ndGg+MSl7YT1lW1ByXSgpO2FbSnNdKGEub2NjdXIpO2Eub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGkpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9ZVtsc10oKSxzPWVbUnNdLG49cltFc10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sZz1hW1ByXSgpO3Jbc10ucHVzaChnKTtyW3VzXShuK2UsZyk7dGhpcy5fYmluZFZhbHVlKGcsbyxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGcsbyk7dGhpcy5fYmluZEl0ZW1zKGcsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGk9ZVtsc10oKSxhPWVbUnNdO2lmKCEoaVthXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgcjtyPWUubmFtZT9pW2FdLmNoaWxkcmVuLmZpbHRlcigodD0+dC5uYW1lPT09ZS5uYW1lKSkubGVuZ3RoOmlbYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHM9aVtFc10oZSkrMSxuPXQuaW5pdGlhbC1yO2lmKG4pe2NvbnN0IHQ9ZVtQcl0oKTt0W0pzXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7aVthXS5wdXNoKHQpO2lbdXNdKHMsdCk7Zm9yKGxldCBlPTE7ZTxuO2UrKyl7Y29uc3Qgcj10W1ByXSgpO2lbYV0ucHVzaChyKTtpW3VzXShzK2Uscil9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjppfT1lO2lmKCFpfHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09aS5tYXg/MS8wOmkubWF4O3JldHVybltpLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGk9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtvc10oKSl7aWYoYVtYcl0pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW1JzXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbb3NdKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtrc109PT1Kbj8tMTp0W2tzXSxpPWFbWHJdPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtZcl0oaSk7dGhpcy5fYmluZEVsZW1lbnQoYSxpKX1jb250aW51ZX1pZighYVtmc10oKSljb250aW51ZTtsZXQgZT0hMSxyPW51bGwscz1udWxsLG49bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtSc119LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1zPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihyPWEuYmluZC5waWN0dXJlW2pyXSl9Y29uc3RbbyxnXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocyl7bj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKG51bGw9PT1uKXtuPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHMpO2lmKCFuKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG5bV3JdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsbik7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYobj1uLmZpbHRlcigoZT0+IWVbV3JdKSkpO24ubGVuZ3RoPmc/bj1uLnNsaWNlKDAsZyk6MD09PW4ubGVuZ3RoJiYobj1udWxsKTtuJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJm4uZm9yRWFjaCgoZT0+e2VbV3JdPSEwfSkpfWVsc2V7aWYoIWEubmFtZSl7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgaT1bXTtmb3IoO2kubGVuZ3RoPGc7KXtjb25zdCByPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGEubmFtZSxhW0JzXSgpLHQsZSk7aWYoIXIpYnJlYWs7cltXcl09ITA7aS5wdXNoKHIpfW49aS5sZW5ndGg+MD9pOm51bGx9ZWxzZXtuPXRbbnNdKGEubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighbil7aWYoMD09PW8pe2kucHVzaChhKTtjb250aW51ZX1jb25zdCBlPXRba3NdPT09Sm4/LTE6dFtrc107bj1hW1hyXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihuW1dyXT0hMCk7dFtZcl0obik7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKG5bV3JdPSEwKTtuPVtuXX19bj90aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxuLHIpOm8+MD90aGlzLl9zZXRBbmRCaW5kKGEsdCk6aS5wdXNoKGEpfWkuZm9yRWFjaCgoZT0+ZVtsc10oKVtKc10oZSkpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtvc10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5hdCgtMSksW2Escl09aTtpZihhKzE9PT1yLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPXJbKytpWzBdXSxuPWUuZ2V0KHNbenNdKTtpZihuKXNbT3NdKG4pO2Vsc2V7Y29uc3QgdD1zW0FzXSgpO2Zvcihjb25zdCBpIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoaVt6c10pO2lmKHQpe2lbT3NdKHQpO2JyZWFrfX19Y29uc3Qgbz1zW29zXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IGk9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W29zXSgpKSJkYXRhIiE9PWVbUnNdJiZlW1pzXShpKTt0aGlzLmRhdGFbWnNdKGkpO2kucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIGkuam9pbigiIil9fWNvbnN0IHZuPUFuLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGU9PmU+PTEmJmU8PTgpKX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiYmVoYXZpb3JPdmVycmlkZSIpfVtfcl0oKXt0aGlzW2pyXT1uZXcgTWFwKHRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lLmluY2x1ZGVzKCI6IikpKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxpPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IGEgb2YgaS5zcGxpdCgiLCIpLm1hcCgoZT0+ZS50cmltKCkpKS5maWx0ZXIoKGU9PiEhZSkpKXthPWEuc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT9wYXJzZUludChpWzFdLDE2KTowfSkpOzE9PT1hLmxlbmd0aCYmYS5wdXNoKGFbMF0pO2UucHVzaChhKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJleGNsdWRlIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBjb25maWdfTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJtc2dJZCIsMSwoZT0+ZT49MSkpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZT0+ZT49MiYmZTw9NSkpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwYWNrZXRzIil9W19yXSgpeyIqIiE9PXRoaXNbanJdJiYodGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhZ2VPZmZzZXQiKTt0aGlzLng9Z2V0SW50ZWdlcih7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT1nZXRJbnRlZ2VyKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnZVJhbmdlIil9W19yXSgpe2NvbnN0IGU9dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0yKXQucHVzaChlLnNsaWNlKGksaSsyKSk7dGhpc1tqcl09dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBhcnQiLDEsKGU9PiExKSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJyYW5nZSIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+ZS5zcGxpdCgiLSIpLm1hcCgoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkpKS5maWx0ZXIoKGU9PmUuZXZlcnkoKGU9PiFpc05hTihlKSkpKSkubWFwKChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInJlY29yZCIpfVtfcl0oKXt0aGlzW2pyXT10aGlzW2pyXS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW2pyXSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tqcl09ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVsZXZhbnQiKX1bX3JdKCl7dGhpc1tqcl09dGhpc1tqcl0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuYW1lIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKTsodGhpc1tqcl0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tqcl0pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdGFydFBhZ2UiLDAsKGU9PiEwKSl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJzdWJzZXRCZWxvdyIsMTAwLChlPT5lPj0wJiZlPD0xMDApKX19Y2xhc3MgU3VwcHJlc3NCYW5uZXIgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRhZ2dlZCIpfX1jbGFzcyBjb25maWdfVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlPW51bGw7dGhpcy5yZWxldmFudD1udWxsO3RoaXMuc3RhcnRQYWdlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLnhzbD1udWxsfX1jbGFzcyBUaHJlc2hvbGQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyBUbyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidGVtcGxhdGVDYWNoZSIpO3RoaXMubWF4RW50cmllcz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFRyYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ0cmFjZSIsITApO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHJhbnNmb3JtIiwhMCk7dGhpcy5ncm91cFBhcmVudD1udWxsO3RoaXMuaWZFbXB0eT1udWxsO3RoaXMubmFtZUF0dHI9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnByZXNlbmNlPW51bGw7dGhpcy5yZW5hbWU9bnVsbDt0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgVHlwZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ1cmkiKX19Y2xhc3MgY29uZmlnX1ZhbGlkYXRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfX1jbGFzcyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W19yXSgpe3RoaXNbanJdPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHZuLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sIndpbmRvdyIpfVtfcl0oKXtjb25zdCBlPXRoaXNbanJdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW2pyXT1bMCwwXTtlbHNlezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3RoaXNbanJdPWV9fX1jbGFzcyBYZGMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodm4sInhkYyIsITApO3RoaXMudXJpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieGRwIiwhMCk7dGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIFhzbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwieHNsIiwhMCk7dGhpcy5kZWJ1Zz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIFpwbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih2biwienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IGNvbmZpZ19BcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBjb25maWdfRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgY29uZmlnX01lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgY29uZmlnX1BpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgY29uZmlnX1NjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fWNvbnN0IFluPUFuLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBjb25uZWN0aW9uX3NldF9VcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWW4sIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihZbiwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFluLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3QgS249QW4uZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YSIsZSl9W3lzXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihLbiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtHc10oZSl7Y29uc3QgdD1lW1JzXTsoImRhdGEiPT09dCYmZVtrc109PT1Lbnx8IlNpZ25hdHVyZSI9PT10JiZlW2tzXT09PUFuLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbWXJdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgZGF0YXNldHNfRGF0YShlKX19Y29uc3QgVG49QW4ubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBDdXJyZW5jeVN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF0ZVBhdHRlcm5zIiwhMCk7dGhpcy5kYXRlUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRhdGVUaW1lU3ltYm9scyIpfX1jbGFzcyBEYXkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJlcmFOYW1lcyIsITApO3RoaXMuZXJhPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibG9jYWxlU2V0IiwhMCk7dGhpcy5sb2NhbGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW0iKX19Y2xhc3MgTWVyaWRpZW1OYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBNb250aCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IFhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihUbiwibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclBhdHRlcm5zIiwhMCk7dGhpcy5udW1iZXJQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJudW1iZXJTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImRlY2ltYWwiLCJncm91cGluZyIsInBlcmNlbnQiLCJtaW51cyIsInplcm8iXSl9fWNsYXNzIE51bWJlclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoNSl9fWNsYXNzIFRpbWVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVG4sInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFRuLCJ0eXBlRmFjZXMiLCEwKTt0aGlzLnR5cGVGYWNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1skc10oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19Y29uc3QgcW49QW4uc2lnbmF0dXJlLmlkO2NsYXNzIHNpZ25hdHVyZV9TaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBPbj1Bbi5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fWNvbnN0IFBuPUFuLnhkcC5pZDtjbGFzcyB4ZHBfWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFBuLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGVtcGxhdGU9bnVsbH1bTXNdKGUpe2NvbnN0IHQ9QW5bZVtSc11dO3JldHVybiB0JiZlW2tzXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbJHNdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IHhkcF9YZHAoZSl9fWNvbnN0IFduPUFuLnhodG1sLmlkLGpuPVN5bWJvbCgpLFhuPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksVm49bmV3IE1hcChbWyJwYWdlLWJyZWFrLWFmdGVyIiwiYnJlYWtBZnRlciJdLFsicGFnZS1icmVhay1iZWZvcmUiLCJicmVha0JlZm9yZSJdLFsicGFnZS1icmVhay1pbnNpZGUiLCJicmVha0luc2lkZSJdLFsia2VybmluZy1tb2RlIixlPT4ibm9uZSI9PT1lPyJub25lIjoibm9ybWFsIl0sWyJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIixlPT5gc2NhbGVYKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPU1hdGguYWJzKGdldE1lYXN1cmVtZW50KGUpKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLFpuPS9ccysvZyxfbj0vW1xyXG5dKy9nLHpuPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGE7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGldb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1Wbi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBzPWk7ZSYmKHM9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShpLHIpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7c31gOnM6YVt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKChlLHQpPT50LnRvVXBwZXJDYXNlKCkpKV09c31hLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOmEuZm9udEZhbWlseSx3ZWlnaHQ6YS5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOmEuZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnIuZm9udFNpemV8fDB9LHQsdFtDc10uZm9udEZpbmRlcixhKTtpZihpJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGk9Z2V0TWVhc3VyZW1lbnQoYS5mb250U2l6ZSk7YS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoaSplKTthLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChhLnZlcnRpY2FsQWxpZ24pKSppKnQpfWkmJmEuZm9udFNpemUmJihhLmZvbnRTaXplPWBjYWxjKCR7YS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQoYSk7cmV0dXJuIGF9Y29uc3QgJG49bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoV24sdCk7dGhpc1tqbl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bVHJdKGUpe3N1cGVyW1RyXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxpXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtDc10udXNlZFR5cGVmYWNlcy5hZGQoaSk7cmV0dXJuIFhuLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bSnJdKCl7cmV0dXJuISRuLmhhcyh0aGlzW1JzXSl9W1VzXShlLHQ9ITEpe2lmKHQpdGhpc1tqbl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChfbiwiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoWm4sIiAiKSl9ZSYmKHRoaXNbanJdKz1lKX1beHNdKGUsdD0hMCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCByPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjppLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjppLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6aS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmkucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmkubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6YS50b3A9YS5ib3R0b209YS5sZWZ0PWEucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6YS50b3A9YS5ib3R0b209ZVswXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzphLnRvcD1lWzBdO2EuYm90dG9tPWVbMl07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6YS50b3A9ZVswXTthLmxlZnQ9ZVsxXTthLmJvdHRvbT1lWzJdO2EucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmEudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6YS5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6YS5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjphLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOnI9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShpLGEscik7aWYodGhpc1tqcl0pZS5hZGRTdHJpbmcodGhpc1tqcl0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tvc10oKSkiI3RleHQiIT09dFtSc10/dFt4c10oZSk6ZS5hZGRTdHJpbmcodFtqcl0pO3QmJmUucG9wRm9udCgpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbanJdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBpO2k9dGhpc1tqbl0/dGhpc1tqcl0/dGhpc1tqcl0ucmVwbGFjZUFsbCh6biwiXG4iKTp2b2lkIDA6dGhpc1tqcl18fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbUnNdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW2puXSl9LGNoaWxkcmVuOnQsdmFsdWU6aX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W3hzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtWc10oZSl7Y29uc3QgdD1zdXBlcltWc10oZSkse2h0bWw6aX09dDtpZighaSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpLm5hbWU9ImRpdiI7aS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W2pzXSgpe3JldHVybiJcbiJ9W3hzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bVnNdKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtWc10oZSl7Y29uc3QgdD1bXTt0aGlzW1pyXT17Y2hpbGRyZW46dH07dGhpc1tLcl0oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW2pyXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W3hzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbeHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1beHNdKGUpe3N1cGVyW3hzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1banNdKCl7cmV0dXJuIHRoaXNbbHNdKClbb3NdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltqc10oKTpzdXBlcltqc10oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljWyRzXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBBbz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bJHNdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW1FzXT1lfVtHc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W19yXSgpe3N1cGVyW19yXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW1FzXS5zZXQodnMsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbWXNdKHRoaXNbUXNdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbUXNdPXRoaXNbUXNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bR3NdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhBbikubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6aSxuYW1lc3BhY2U6YSxwcmVmaXhlczpyfSl7Y29uc3Qgcz1udWxsIT09YTtpZihzKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpfXImJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChyKTtpZihpLmhhc093blByb3BlcnR5KE5zKSl7Y29uc3QgZT1Bby5kYXRhc2V0cyx0PWlbTnNdO2xldCBhPW51bGw7Zm9yKGNvbnN0W2kscl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoaSk9PT1lKXthPXt4ZmE6cn07YnJlYWt9fWE/aVtOc109YTpkZWxldGUgaVtOc119Y29uc3Qgbj10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPW4/Llskc10odCxpKXx8bmV3IEVtcHR5O29beXNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhzfHxyfHxvW3lzXSgpKSYmKG9bT3JdPXtoYXNOYW1lc3BhY2U6cyxwcmVmaXhlczpyLG5zQWdub3N0aWM6b1t5c10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2kse2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKEFuKSlpZihhKGUpKXt0PUFvW2ldO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOml9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoaSk7bGV0IGE9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFhKXthPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LGEpfWEucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6aSxuc0Fnbm9zdGljOmF9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2kmJmkuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO2EmJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPURyO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09RHIpe3RoaXMuX2N1cnJlbnRbX3JdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W0pyXSgpP3RoaXMuX2N1cnJlbnRbVXNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtVc10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtVc10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBpPW51bGwsYT1udWxsO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cyx2YWx1ZTpufW9mIGUpaWYoInhtbG5zIj09PXMpaT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTppPW47ZWxzZSBpZihzLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXMuc3Vic3RyaW5nKDYpO2F8fChhPVtdKTthLnB1c2goe3ByZWZpeDplLHZhbHVlOm59KX1lbHNle2NvbnN0IGU9cy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXJbc109bjtlbHNle2xldCB0PXJbTnNdO3R8fCh0PXJbTnNdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2ksYV09W3Muc2xpY2UoMCxlKSxzLnNsaWNlKGUrMSldOyh0W2ldfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbYV09bn19cmV0dXJuW2ksYSxyXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGk9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1pP1tlLG51bGxdOltlLnN1YnN0cmluZyhpKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxpKV19b25CZWdpbkVsZW1lbnQoZSx0LGkpe2NvbnN0W2EscixzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbixvXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksZz10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpvLG5hbWU6bixhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pO2dbQ3NdPXRoaXMuX2dsb2JhbERhdGE7aWYoaSl7Z1tfcl0oKTt0aGlzLl9jdXJyZW50W0dzXShnKSYmZ1tUc10odGhpcy5faWRzKTtnW1RyXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1nfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbZHNdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtqcl0pe2NvbnN0IGU9bmV3IFhGQVBhcnNlcjtlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3QgaT1lLnBhcnNlKHRbanJdKTt0W2pyXT1udWxsO3RbR3NdKGkpfXRbX3JdKCk7dGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKTt0aGlzLl9jdXJyZW50W0dzXSh0KSYmdFtUc10odGhpcy5faWRzKTt0W1RyXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBYRkFGYWN0b3J5e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBYRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBCaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKTt0aGlzLmZvcm1bQ3NdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW1hzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsaSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGk9ZS5uZXh0KCk7aS5kb25lP3QoaS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2koZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDppfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChpKV19KSl9Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW0NzXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1bQ3NdLmZvbnRGaW5kZXI9bmV3IEZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW0NzXS51c2VkVHlwZWZhY2VzKXtlPXN0cmlwUXVvdGVzKGUpO3RoaXMuZm9ybVtDc10uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW0NzXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbUnNdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW1lyXSh0KTt0PWV9Y29uc3QgaT10W1ZzXSgpO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1pLHthdHRyaWJ1dGVzOnJ9PWE7aWYocil7ci5jbGFzcyYmKHIuY2xhc3M9ci5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO3IuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDphLHN0cjp0W2pzXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKV0pLnRoZW4oKChbdCxpLGEscixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czppLHN0cnVjdFRyZWVSb290OmEsYmFzZVVybDpyLGF0dGFjaG1lbnRzOnN9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsaSxhLHIscyxuKXtjb25zdCBvPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxpLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGkucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxpLGEscixzLG8sbl0pfXN0YXRpYyBfY3JlYXRlKGUsdCxpLGEscj0hMSxzPW51bGwsbj1udWxsLG89bnVsbCl7Y29uc3QgZz1lLmZldGNoSWZSZWYodCk7aWYoIShnIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmMscGRmTWFuYWdlcjpsfT1pLGg9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7YS5jcmVhdGVPYmpJZCgpfWA7bGV0IEM9Zy5nZXQoIlN1YnR5cGUiKTtDPUMgaW5zdGFuY2VvZiBOYW1lP0MubmFtZTpudWxsO2NvbnN0IFE9e3hyZWY6ZSxyZWY6dCxkaWN0Omcsc3VidHlwZTpDLGlkOmgsYW5ub3RhdGlvbkdsb2JhbHM6aSxjb2xsZWN0RmllbGRzOnIsb3JwaGFuRmllbGRzOnMsbmVlZEFwcGVhcmFuY2VzOiFyJiYhMD09PWMuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6bixldmFsdWF0b3JPcHRpb25zOmwuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm99O3N3aXRjaChDKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oUSk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0Omcsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oUSk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oUSl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKFEpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihRKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKFEpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKFEpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKFEpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oUSk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihRKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKFEpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKFEpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oUSk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oUSk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oUSk7ZGVmYXVsdDpyfHx3YXJuKEM/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke0N9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihRKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGkpe3RyeXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHI9YS5nZXRSYXcoIlAiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtyXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcz1hd2FpdCBpLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBhPWF3YWl0IGkuZ2V0UGFnZShlKSxyPWF3YWl0IGkuZW5zdXJlKGEsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGkgb2YgcilpZihpIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChpLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxpKXtpZighaSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBhO2Zvcihjb25zdHtiaXRtYXBJZDppLGJpdG1hcDpyfW9mIGUpaWYocil7YXx8PW5ldyBNYXA7YS5zZXQoaSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIGF9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2NvbnN0IHM9ZS54cmVmO2xldCBuO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmd9PWUub3B0aW9ucztmb3IoY29uc3QgYyBvZiBpKWlmKCFjLmRlbGV0ZWQpc3dpdGNoKGMuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjppZighbil7Y29uc3QgZT1uZXcgRGljdChzKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO249cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChuLHtkYXRhOmV9KX1vLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjpufSkpO2JyZWFrO2Nhc2UgcDpjLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIpKTticmVhaztjYXNlIHk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMscikpO2JyZWFrO2Nhc2UgbTpjb25zdCBpPWc/YXdhaXQoYT8uZ2V0KGMuYml0bWFwSWQpKTpudWxsO2lmKGk/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWk7aWYodCl7Y29uc3QgaT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KGkse2RhdGE6dH0pO2UuZGljdC5zZXQoIlNNYXNrIixpKX1jb25zdCBhPWkuaW1hZ2VSZWY9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnB1dChhLHtkYXRhOmV9KTtpLmltYWdlU3RyZWFtPWkuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLHIse2ltYWdlOml9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKG8pfX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0e29wdGlvbnM6cyx4cmVmOm59PXQsbz1bXTtmb3IoY29uc3QgZyBvZiBhKWlmKCFnLmRlbGV0ZWQpc3dpdGNoKGcuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjpvLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yOnQsdGFzazppLGV2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIHA6Zy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIG06Y29uc3QgYT1zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkP2F3YWl0KHI/LmdldChnLmJpdG1hcElkKSk6bnVsbDtpZihhPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KTthLmltYWdlUmVmPW5ldyBKcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGk9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgMzpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSA0OkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlLChlPT5lLzI1NSkpfWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBpPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShpLG51bGwpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgZT0wLHI9aS5sZW5ndGg7ZTxyO2UrPTgpe2NvbnN0W3IscyxuLG8sZyxjLGwsaF09aS5zbGljZShlLGUrOCksQz1NYXRoLm1pbihyLG4sZyxsKSxRPU1hdGgubWF4KHIsbixnLGwpLEU9TWF0aC5taW4ocyxvLGMsaCksdT1NYXRoLm1heChzLG8sYyxoKTtpZihudWxsIT09dCYmKEM8dFswXXx8UT50WzJdfHxFPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7YS5zZXQoW0MsdSxRLHUsQyxFLFEsRV0sZSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHIscyxuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXN8fHI9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8ocy1hKSxnPShlWzNdLWVbMV0pLyhuLXIpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcipnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YSxyZWY6cixvcnBoYW5GaWVsZHM6c309ZSxuPXM/LmdldChyKTtuJiZ0LnNldCgiUGFyZW50IixuKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBnPSEhKHRoaXMuZmxhZ3MmaUEpLGM9ISEodGhpcy5mbGFncyZhQSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZlQSksbm9IVE1MOmcmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKGEuc3RydWN0VHJlZVJvb3Qpe2xldCBpPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWk9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IGE9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQscEEpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgbD10LmdldCgiSVQiKTtsIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1sLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczppfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2kmfkFBOmkmfiR8QUF9aWYoZSl7aXw9QUE7cmV0dXJuIHQ/aSZ+dEF8JDppJn4kfHRBfWkmPX4oJHx0QSk7cmV0dXJuIHQ/aSZ+QUE6aXxBQX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLHopJiYhdGhpcy5faGFzRmxhZyhlLHRBKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxBQSkmJiF0aGlzLl9oYXNGbGFnKGUsJCkmJiF0aGlzLl9oYXNGbGFnKGUseil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3QgaT1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1pPyFpOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsJCl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGkuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZ6JiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj16KX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGk9ZVt0XTtpZihpIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goaS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWkubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7aX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGk9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSYmMCE9PWkpe2klPTM2MDtpPDAmJihpKz0zNjApO2klOTA9PTAmJih0aGlzLnJvdGF0aW9uPWkpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGk9dC5nZXQoIk4iKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWk7cmV0dXJufWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWUuZ2V0KCJBUyIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUmJmkuaGFzKGEubmFtZSkpKXJldHVybjtjb25zdCByPWkuZ2V0KGEubmFtZSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cil9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1sb2FkUmVzb3VyY2VzKGUsdCl7cmV0dXJuIHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIikudGhlbigodD0+e2lmKCF0KXJldHVybjtyZXR1cm4gbmV3IE9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGkscil7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgZz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShzJiZpJmMpO2lmKGwmJihvWzBdPT09b1syXXx8b1sxXT09PW9bM10pKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFnKXtpZighbClyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtnPW5ldyBTdHJpbmdTdHJlYW0oIiIpO2cuZGljdD1uZXcgRGljdH1jb25zdCBoPWcuZGljdCxDPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkNvbG9yU3BhY2UiLCJQYXR0ZXJuIiwiU2hhZGluZyIsIlhPYmplY3QiLCJGb250Il0sZyksUT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLEU9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHU9Z2V0VHJhbnNmb3JtTWF0cml4KG8sUSxFKSxkPW5ldyBPcGVyYXRvckxpc3Q7bGV0IGY7dGhpcy5vYyYmKGY9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1mJiZkLmFkZE9wKEtlLFsiT0MiLGZdKTtkLmFkZE9wKFZlLFtuLG8sdSxFLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmcsdGFzazp0LHJlc291cmNlczpDLG9wZXJhdG9yTGlzdDpkLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2QuYWRkT3AoWmUsW10pO3ZvaWQgMCE9PWYmJmQuYWRkT3AoVGUsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmQsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9fWFzeW5jIHNhdmUoZSx0LGksYSl7cmV0dXJuIG51bGx9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxpKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCBhPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdLHRoaXMuYXBwZWFyYW5jZSkscj1bXSxzPVtdO2xldCBuPW51bGw7Y29uc3Qgbz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcylpZih2b2lkIDAhPT10LnN0cil7bnx8PXQudHJhbnNmb3JtLnNsaWNlKC0yKTtzLnB1c2godC5zdHIpO2lmKHQuaGFzRU9MKXtyLnB1c2gocy5qb2luKCIiKS50cmltRW5kKCkpO3MubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczphLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGtlZXBXaGl0ZVNwYWNlOiEwLHNpbms6byx2aWV3Qm94Oml9KTt0aGlzLnJlc2V0KCk7cy5sZW5ndGgmJnIucHVzaChzLmpvaW4oIiIpLnRyaW1FbmQoKSk7aWYoci5sZW5ndGg+MXx8clswXSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2UuZGljdCx0PWxvb2t1cFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpLGk9bG9va3VwTWF0cml4KGUuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQobix0LGkpO3RoaXMuZGF0YS50ZXh0Q29udGVudD1yfX1fdHJhbnNmb3JtUG9pbnQoZSx0LGkpe2NvbnN0e3JlY3Q6YX09dGhpcy5kYXRhO3R8fD1bMCwwLDEsMV07aXx8PVsxLDAsMCwxLDAsMF07Y29uc3Qgcj1nZXRUcmFuc2Zvcm1NYXRyaXgoYSx0LGkpO3JbNF0tPWFbMF07cls1XS09YVsxXTtlPVV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxyKTtyZXR1cm4gVXRpbC5hcHBseVRyYW5zZm9ybShlLGkpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJuIHRoaXMuZGF0YS5raWRJZHM/e2lkOnRoaXMuZGF0YS5pZCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3IsdHlwZToiIixraWRJZHM6dGhpcy5kYXRhLmtpZElkcyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgscm90YXRpb246dGhpcy5yb3RhdGlvbn06bnVsbH1yZXNldCgpe2Zvcihjb25zdCBlIG9mIHRoaXMuX3N0cmVhbXMpZS5yZXNldCgpfV9jb25zdHJ1Y3RGaWVsZE5hbWUoZSl7aWYoIWUuaGFzKCJUIikmJiFlLmhhcygiUGFyZW50Iikpe3dhcm4oIlVua25vd24gZmllbGQgbmFtZSwgZmFsbGluZyBiYWNrIHRvIGVtcHR5IGZpZWxkIG5hbWUuIik7cmV0dXJuIiJ9aWYoIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSk7Y29uc3QgdD1bXTtlLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIlQiKSkpO2xldCBpPWU7Y29uc3QgYT1uZXcgUmVmU2V0O2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2Zvcig7aS5oYXMoIlBhcmVudCIpOyl7aT1pLmdldCgiUGFyZW50Iik7aWYoIShpIGluc3RhbmNlb2YgRGljdCl8fGkub2JqSWQmJmEuaGFzKGkub2JqSWQpKWJyZWFrO2kub2JqSWQmJmEucHV0KGkub2JqSWQpO2kuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiVCIpKSl9cmV0dXJuIHQuam9pbigiLiIpfX1jbGFzcyBBbm5vdGF0aW9uQm9yZGVyU3R5bGV7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTE7dGhpcy5yYXdXaWR0aD0xO3RoaXMuc3R5bGU9UUE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7dGhpcy5yYXdXaWR0aD1lO2NvbnN0IGk9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7aWYoaT4wJiZhPjAmJihlPml8fGU+YSkpe3dhcm4oYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1RQTticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9RUE7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPXVBO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1kQTticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ZkF9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBpPSEwLGE9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2k9ITE7YnJlYWt9dD4wJiYoYT0hMSl9aWYoMD09PWUubGVuZ3RofHxpJiYhYSl7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKE5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX1jbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIklSVCIpKXtjb25zdCBlPXQuZ2V0UmF3KCJJUlQiKTt0aGlzLmRhdGEuaW5SZXBseVRvPWUgaW5zdGFuY2VvZiBSZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgaT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWkgaW5zdGFuY2VvZiBOYW1lP2kubmFtZTpffWxldCBpPW51bGw7aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PVope2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpZihlLmhhcygiQ3JlYXRpb25EYXRlIikpe3RoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5jcmVhdGlvbkRhdGU9bnVsbDtpZihlLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoZS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpPWUuZ2V0UmF3KCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTtpPXQuZ2V0UmF3KCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dGhpcy5kYXRhLnBvcHVwUmVmPWkgaW5zdGFuY2VvZiBSZWY/aS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbCh0LmdldCgiUkMiKSkpfXNldENyZWF0aW9uRGF0ZShlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfV9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLGV4dHJhOnQsc3Ryb2tlQ29sb3I6aSxmaWxsQ29sb3I6YSxibGVuZE1vZGU6cixzdHJva2VBbHBoYTpzLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOm99KXtsZXQgZz1OdW1iZXIuTUFYX1ZBTFVFLGM9TnVtYmVyLk1BWF9WQUxVRSxsPU51bWJlci5NSU5fVkFMVUUsaD1OdW1iZXIuTUlOX1ZBTFVFO2NvbnN0IEM9WyJxIl07dCYmQy5wdXNoKHQpO2kmJkMucHVzaChgJHtpWzBdfSAke2lbMV19ICR7aVsyXX0gUkdgKTthJiZDLnB1c2goYCR7YVswXX0gJHthWzFdfSAke2FbMl19IHJnYCk7Y29uc3QgUT10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1RLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3RbdCxpLGEscl09byhDLFEuc3ViYXJyYXkoZSxlKzgpKTtnPU1hdGgubWluKGcsdCk7bD1NYXRoLm1heChsLGkpO2M9TWF0aC5taW4oYyxhKTtoPU1hdGgubWF4KGgscil9Qy5wdXNoKCJRIik7Y29uc3QgRT1uZXcgRGljdChlKSx1PW5ldyBEaWN0KGUpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0oQy5qb2luKCIgIikpO2QuZGljdD11O0Uuc2V0KCJGbTAiLGQpO2NvbnN0IGY9bmV3IERpY3QoZSk7ciYmZi5zZXQoIkJNIixOYW1lLmdldChyKSk7Im51bWJlciI9PXR5cGVvZiBzJiZmLnNldCgiQ0EiLHMpOyJudW1iZXIiPT10eXBlb2YgbiYmZi5zZXQoImNhIixuKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGYpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLEUpO2NvbnN0IHk9bmV3IERpY3QoZSk7eS5zZXQoIlJlc291cmNlcyIsbSk7Y29uc3Qgdz10aGlzLmRhdGEucmVjdD1bZyxjLGwsaF07eS5zZXQoIkJCb3giLHcpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD15O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpO2xldCBuO2lmKHMpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTtpLnB1dChhLHtkYXRhOnN9KX1lbHNlIG49dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJm4uc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTtpLnB1dChyLHtkYXRhOm59KTtyZXR1cm57cmVmOnJ9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oaSx0LGEpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KGksdCxyP3thcDpyfTp7fSksbj1uZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe2RpY3Q6cyx4cmVmOnQsYW5ub3RhdGlvbkdsb2JhbHM6ZSxldmFsdWF0b3JPcHRpb25zOmEuZXZhbHVhdG9yT3B0aW9uc30pO2kucmVmJiYobi5yZWY9bi5yZWZUb1JlcGxhY2U9aS5yZWYpO3JldHVybiBufX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppLGFubm90YXRpb25HbG9iYWxzOmF9PWUscj10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzO3IuYW5ub3RhdGlvblR5cGU9Vjt2b2lkIDA9PT1yLmZpZWxkTmFtZSYmKHIuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09ci5hY3Rpb25zJiYoci5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGksdCxwQSkpO2xldCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7ci5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShzKTtjb25zdCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO3IuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4pO2lmKHZvaWQgMD09PXMmJmEueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtyLmZpZWxkVmFsdWU9cz1hLnhmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1zJiZudWxsIT09ci5kZWZhdWx0RmllbGRWYWx1ZSYmKHIuZmllbGRWYWx1ZT1yLmRlZmF1bHRGaWVsZFZhbHVlKTtyLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7ci5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1yLmZpZWxkVmFsdWUmJm51bGwhPT1yLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtyLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBnPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGM9YS5hY3JvRm9ybS5nZXQoIkRSIiksbD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6ZyxhY3JvRm9ybVJlc291cmNlczpjLGFwcGVhcmFuY2VSZXNvdXJjZXM6bCxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjppLGRpY3RBcnJheTpbZyxsLGNdLG1lcmdlU3ViRGljdHM6ITB9KX07ci5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyLmZpZWxkRmxhZ3MpfHxyLmZpZWxkRmxhZ3M8MCkmJihyLmZpZWxkRmxhZ3M9MCk7ci5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyQSk7ci5yZXF1aXJlZD10aGlzLmhhc0ZpZWxkRmxhZyhzQSk7ci5oaWRkZW49dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncywkKXx8dGhpcy5faGFzRmxhZyhyLmFubm90YXRpb25GbGFncyx0QSl9X2RlY29kZUZvcm1WYWx1ZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmZpbHRlcigoZT0+InN0cmluZyI9PXR5cGVvZiBlKSkubWFwKChlPT5zdHJpbmdUb1BERlN0cmluZyhlKSkpOmUgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGUubmFtZSk6InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGx9aGFzRmllbGRGbGFnKGUpe3JldHVybiEhKHRoaXMuZGF0YS5maWVsZEZsYWdzJmUpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiEwfW11c3RCZVZpZXdlZChlLHQpe3JldHVybiB0P3RoaXMudmlld2FibGU6c3VwZXIubXVzdEJlVmlld2VkKGUsdCkmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsdEEpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gYTtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgodCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHM9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihzPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtyfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3MrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtyfSBTIGB9cmV0dXJuIHN9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpe2lmKGkmQyYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpO2NvbnN0IHI9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaSxhKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1yKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGksYSk7Y29uc3Qgcz1uZXcgT3BlcmF0b3JMaXN0O2lmKCF0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8bnVsbD09PXIpcmV0dXJue29wTGlzdDpzLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Y29uc3Qgbj0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZpJmMpLG89WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZz1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbyxbMSwwLDAsMSwwLDBdKTtsZXQgbDt0aGlzLm9jJiYobD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWwmJnMuYWRkT3AoS2UsWyJPQyIsbF0pO3MuYWRkT3AoVmUsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxnLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSksbl0pO2NvbnN0IGg9bmV3IFN0cmluZ1N0cmVhbShyKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmgsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnN9KTtzLmFkZE9wKFplLFtdKTt2b2lkIDAhPT1sJiZzLmFkZE9wKFRlLFtdKTtyZXR1cm57b3BMaXN0OnMsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOm59fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dGhpcy5ib3JkZXJDb2xvciYmdC5zZXQoIkJDIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYm9yZGVyQ29sb3IpKTt0aGlzLmJhY2tncm91bmRDb2xvciYmdC5zZXQoIkJHIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYmFja2dyb3VuZENvbG9yKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hbWVuZFNhdmVkRGljdChlLHQpe31zZXRWYWx1ZShlLHQsaSxhKXtjb25zdHtkaWN0OnIscmVmOnN9PWZ1bmN0aW9uIGdldFBhcmVudFRvVXBkYXRlKGUsdCxpKXtjb25zdCBhPW5ldyBSZWZTZXQscj1lLHM9e2RpY3Q6bnVsbCxyZWY6bnVsbH07Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmIWEuaGFzKHQpOyl7YS5wdXQodCk7aWYoZS5oYXMoIlQiKSlicmVhaztpZighKCh0PWUuZ2V0UmF3KCJQYXJlbnQiKSlpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHM7ZT1pLmZldGNoKHQpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlIT09cil7cy5kaWN0PWU7cy5yZWY9dH1yZXR1cm4gc30oZSx0aGlzLnJlZixpKTtpZihyKXtpZighYS5oYXMocykpe2NvbnN0IGU9ci5jbG9uZSgpO2Uuc2V0KCJWIix0KTthLnB1dChzLHtkYXRhOmV9KTtyZXR1cm4gZX19ZWxzZSBlLnNldCgiViIsdCk7cmV0dXJuIG51bGx9YXN5bmMgc2F2ZShlLHQsaSxyKXtjb25zdCBzPWk/LmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhzPy5ub1ZpZXcscz8ubm9QcmludCk7bGV0IG89cz8udmFsdWUsZz1zPy5yb3RhdGlvbjtpZihvPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PW8pe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PWcmJnZvaWQgMD09PW4pcmV0dXJuO298fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1nJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KG8pJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKG8sdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1uKXJldHVybjt2b2lkIDA9PT1nJiYoZz10aGlzLnJvdGF0aW9uKTtsZXQgYz1udWxsO2lmKCF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2M9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsaCxpKTtpZihudWxsPT09YyYmdm9pZCAwPT09bilyZXR1cm59bGV0IGw9ITE7aWYoYz8ubmVlZEFwcGVhcmFuY2VzKXtsPSEwO2M9bnVsbH1jb25zdHt4cmVmOkN9PWUsUT1DLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoUSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBFPW5ldyBEaWN0KEMpO2Zvcihjb25zdCBlIG9mIFEuZ2V0S2V5cygpKSJBUCIhPT1lJiZFLnNldChlLFEuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1uKXtFLnNldCgiRiIsbik7aWYobnVsbD09PWMmJiFsKXtjb25zdCBlPVEuZ2V0UmF3KCJBUCIpO2UmJkUuc2V0KCJBUCIsZSl9fWNvbnN0IHU9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvfSxkPXRoaXMuc2V0VmFsdWUoRSxBcnJheS5pc0FycmF5KG8pP28ubWFwKHN0cmluZ1RvQXNjaWlPclVURjE2QkUpOnN0cmluZ1RvQXNjaWlPclVURjE2QkUobyksQyxyKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGksZHx8RSk7Y29uc3QgZj10aGlzLl9nZXRNS0RpY3QoZyk7ZiYmRS5zZXQoIk1LIixmKTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpFLHhmYTp1LG5lZWRBcHBlYXJhbmNlczpsfSk7aWYobnVsbCE9PWMpe2NvbnN0IGU9Qy5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KEMpO0Uuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IHM9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKEMpLG49bmV3IFN0cmluZ1N0cmVhbShjKSxvPW4uZGljdD1uZXcgRGljdChDKTtvLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7by5zZXQoIlJlc291cmNlcyIscyk7by5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSk7ZyE9PWEmJm8uc2V0KCJNYXRyaXgiLGcpO3IucHV0KGUse2RhdGE6bix4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KX1FLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCl9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGksYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcob0EpKXJldHVybiBudWxsO2NvbnN0IHI9YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHMsbjtpZihyKXtzPXIuZm9ybWF0dGVkVmFsdWV8fHIudmFsdWU7bj1yLnJvdGF0aW9ufWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2NvbnN0IGc9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoYSk7aWYodm9pZCAwPT09cyl7cz10aGlzLmRhdGEuZmllbGRWYWx1ZTtpZighcylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2B9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTthc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltRW5kKCk7aWYodGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSkpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2A7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IGMsbD0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKTtsPWMubGVuZ3RofWVsc2UgYz1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldCBDPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLFE9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1uJiYyNzAhPT1ufHwoW1EsQ109W0MsUV0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2xldCBFLHUsZCxmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7Y29uc3QgcD1bXTtsZXQgbT0hMTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PWYuZW5jb2RlU3RyaW5nKGUpO3QubGVuZ3RoPjEmJihtPSEwKTtwLnB1c2godC5qb2luKCIiKSl9aWYobSYmaSZoKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKG0mJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixhPW5ldyBGYWtlVW5pY29kZUZvbnQoZS54cmVmLGkpLHI9YS5jcmVhdGVGb250UmVzb3VyY2VzKGMuam9pbigiIikpLG49ci5nZXRSYXcoIkZvbnQiKTtpZih0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuaGFzKCJGb250Iikpe2NvbnN0IGU9dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmdldCgiRm9udCIpO2Zvcihjb25zdCB0IG9mIG4uZ2V0S2V5cygpKWUuc2V0KHQsbi5nZXRSYXcodCkpfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIsbik7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Zj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scik7Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXBbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9Z31lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKEMtMixRLTQscyxmLGwpfWxldCB5PWYuZGVzY2VudDt5PWlzTmFOKHkpP28qZDpNYXRoLm1heChvKmQsTWF0aC5hYnMoeSkqdSk7Y29uc3Qgdz1NYXRoLm1pbihNYXRoLmZsb29yKChDLXUpLzIpLDEpLGI9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShFLHAsZix1LFEsQyxiLDIsdyx5LGQsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKEUsZixwWzBdLHUsUSxDLDIsdyx5LGQsYSk7Y29uc3QgRD13K3k7aWYoMD09PWJ8fGI+MilyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcoMil9ICR7bnVtYmVyVG9TdHJpbmcoRCl9IFRtICgke2VzY2FwZVN0cmluZyhwWzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQocFswXSxmLHUsUSxiLHtzaGlmdDowfSwyLEQpfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsaSxhKXtjb25zdCByPW5ldyBPcGVyYXRvckxpc3Qscz17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6bixmb250U2l6ZTpvfT1pO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChhLFtuJiZOYW1lLmdldChuKSxvXSxudWxsLHIsdCxzLG51bGwpO3JldHVybiBzLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsaSxhLHIpe2xldHtmb250U2l6ZTpufT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG89KG58fDEyKSpzLGc9TWF0aC5yb3VuZChlL28pO2lmKCFuKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0V2lkdGgoaSxhKTtuPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3MsdC9yKSk7Zz0xfWVsc2V7Y29uc3QgYz1pLnNwbGl0KC9cclxuP3xcbi8pLGw9W107Zm9yKGNvbnN0IGUgb2YgYyl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxpPWEuY2hhcnNUb0dseXBocyh0KSxyPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtsLnB1c2goe2xpbmU6dCxnbHlwaHM6aSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWk9PntsZXQgcj0wO2Zvcihjb25zdCBzIG9mIGwpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsaSx0LHMpLmxlbmd0aCppO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07Zz1NYXRoLm1heChnLHIpO2Zvcig7Oyl7bz1lL2c7bj1yb3VuZFdpdGhUd29EaWdpdHMoby9zKTtpZighaXNUb29CaWcobikpYnJlYWs7ZysrfX1jb25zdHtmb250TmFtZTpjLGZvbnRDb2xvcjpsfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOml9KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGksITApfWB9KHtmb250U2l6ZTpuLGZvbnROYW1lOmMsZm9udENvbG9yOmx9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbixlL2ddfV9yZW5kZXJUZXh0KGUsdCxpLGEscixzLG4sbyl7bGV0IGc7aWYoMT09PXIpe2c9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaSkvMn1lbHNlIGlmKDI9PT1yKXtnPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaS1ufWVsc2UgZz1uO2NvbnN0IGM9bnVtYmVyVG9TdHJpbmcoZy1zLnNoaWZ0KTtzLnNoaWZ0PWc7cmV0dXJuYCR7Y30gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6aSxhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxyPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFyKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsaV0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocikpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9YS5nZXQoIkZvbnQiKTtpZihpIGluc3RhbmNlb2YgRGljdCYmaS5oYXMocikpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocixpLmdldFJhdyhyKSk7Y29uc3Qgcz1uZXcgRGljdChlKTtzLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3MsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9JDt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpKXx8aTwwfHxpPjIpJiYoaT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1pO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhCQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhvQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhsQSkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhDQSl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxpLGEscixzLG4sbyxnLGMsbCl7Y29uc3QgaD1yL3RoaXMuZGF0YS5tYXhMZW4sQz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhsKSxRPVtdLEU9dC5nZXRDaGFyUG9zaXRpb25zKGkpO2Zvcihjb25zdFtlLHRdb2YgRSlRLnB1c2goYCgke2VzY2FwZVN0cmluZyhpLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgdT1RLmpvaW4oYCAke251bWJlclRvU3RyaW5nKGgpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtDfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhuKX0gJHtudW1iZXJUb1N0cmluZyhvK2cpfSBUbSAke3V9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLGwsaCl7Y29uc3QgQz1bXSxRPXItMipvLEU9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHM9dC5sZW5ndGg7ZTxzO2UrKyl7Y29uc3Qgcz10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHMsaSxhLFEpO2ZvcihsZXQgdD0wLHM9aC5sZW5ndGg7dDxzO3QrKyl7Y29uc3Qgcz1oW3RdLFE9MD09PWUmJjA9PT10Py1nLShsLWMpOi1sO0MucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHMsaSxhLHIsbixFLG8sUSkpfX1jb25zdCB1PXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGQ9Qy5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHt1fUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHMpfSBUbSAke2R9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxpLGEscj17fSl7ZT1yLmxpbmV8fGU7Y29uc3Qgcz1yLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHMubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBuPXIucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1pLzFlMyxnPVtdO2xldCBjPS0xLGw9LTEsaD0tMSxDPTAsUT0wO2ZvcihsZXQgdD0wLGk9cy5sZW5ndGg7dDxpO3QrKyl7Y29uc3RbaSxyXT1uW3RdLEU9c1t0XSx1PUUud2lkdGgqbztpZigiICI9PT1FLnVuaWNvZGUpaWYoUSt1PmEpe2cucHVzaChlLnN1YnN0cmluZyhDLGkpKTtDPWk7UT11O2M9LTE7aD0tMX1lbHNle1ErPXU7Yz1pO2w9cjtoPXR9ZWxzZSBpZihRK3U+YSlpZigtMSE9PWMpe2cucHVzaChlLnN1YnN0cmluZyhDLGwpKTtDPWw7dD1oKzE7Yz0tMTtRPTB9ZWxzZXtnLnB1c2goZS5zdWJzdHJpbmcoQyxpKSk7Qz1pO1E9dX1lbHNlIFErPXV9QzxlLmxlbmd0aCYmZy5wdXNoKGUuc3Vic3RyaW5nKEMsZS5sZW5ndGgpKTtyZXR1cm4gZ31hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGkpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsaSk7Y29uc3QgYT10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIWEpcmV0dXJuO2NvbnN0IHI9YS5qb2luKCJcbiIpO2lmKHI9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcz1yLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKChlLHQpPT50P2BcXCR7dH1gOiJcXHMrIikpO25ldyBSZWdFeHAoYF5cXHMqJHtzfVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmhhc0ZpZWxkRmxhZyhvQSksY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMuZGF0YS5jaGVja0JveD0hdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhnQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhJQSk7dGhpcy5kYXRhLnB1c2hCdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlIHdhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxyKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLCExLHIpO2xldCBzPW51bGwsbj1udWxsO2lmKHIpe2NvbnN0IGU9ci5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO249ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLHIpO251bGw9PXMmJihzPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3Qgbz1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKG8pe2NvbnN0IHM9dGhpcy5hcHBlYXJhbmNlLGc9bG9va3VwTWF0cml4KG8uZGljdC5nZXRBcnJheSgiTWF0cml4IiksYSk7biYmby5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpKTt0aGlzLmFwcGVhcmFuY2U9bztjb25zdCBjPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyKTt0aGlzLmFwcGVhcmFuY2U9cztvLmRpY3Quc2V0KCJNYXRyaXgiLGcpO3JldHVybiBjfXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGksYSl7dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsaSxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24mJnRoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsaSxhKX1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1uJiYobj10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTt0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxpLGEpe2lmKCFpKXJldHVybjtjb25zdCByPWkuZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgbj1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09bylyZXR1cm59bGV0IGc9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtnPWcuY2xvbmUoKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7Y29uc3QgYz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxsPU5hbWUuZ2V0KG8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiJPZmYiKTtvJiZ0aGlzLnNldFZhbHVlKGcsbCxlLnhyZWYsYSk7Zy5zZXQoIkFTIixsKTtnLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09cyYmZy5zZXQoIkYiLHMpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KG4pO2gmJmcuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6Zyx4ZmE6YyxuZWVkQXBwZWFyYW5jZXM6ITF9KX1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgaT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxhPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLHI9WzAsMCxpLGFdLHM9LjgqTWF0aC5taW4oaSxhKTtsZXQgbixvO2lmKCJjaGVjayI9PT10KXtuPXt3aWR0aDouNzU1KnMsaGVpZ2h0Oi43MDUqc307bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtuPXt3aWR0aDouNzkxKnMsaGVpZ2h0Oi43MDUqc307bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBnPWBxIEJUIC9QZGZKc1phRGIgJHtzfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoaS1uLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoYS1uLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxjPW5ldyBEaWN0KGUueHJlZik7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2wuc2V0KCJGb250IixoKTtjLnNldCgiUmVzb3VyY2VzIixsKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oZyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWM7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPWEpO2NvbnN0IHI9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHM9aS5nZXRLZXlzKCk7aWYoMD09PXMubGVuZ3RoKXMucHVzaCgiT2ZmIixyKTtlbHNlIGlmKDE9PT1zLmxlbmd0aCkiT2ZmIj09PXNbMF0/cy5wdXNoKHIpOnMudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihzLmluY2x1ZGVzKHIpKXtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixyKX1lbHNle2NvbnN0IGU9cy5maW5kKChlPT4iT2ZmIiE9PWUpKTtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixlKX1zLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9c1sxXTtjb25zdCBuPWkuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7Y29uc3Qgbz1pLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgaT10LmdldCgiViIpO2kgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGkpKX1jb25zdCBpPWUuZGljdC5nZXQoIkFQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9aS5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IHI9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I6bnVsbDtjb25zdCBzPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pLmZldGNoSWZSZWYoYVtlXSkscj1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP2kuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pOzA9PT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgmJnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wJiYodGhpcy5kYXRhLm9wdGlvbnM9dGhpcy5kYXRhLmZpZWxkVmFsdWUubWFwKChlPT4oe2V4cG9ydFZhbHVlOmUsZGlzcGxheVZhbHVlOmV9KSkpKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoY0EpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhoQSk7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2NvbnN0IGE9W10se29wdGlvbnM6cn09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxzPXIubGVuZ3RoO2U8cztlKyspaWYocltlXS5leHBvcnRWYWx1ZT09PWlbdF0pe2EucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixhKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpO2xldCByLG47Y29uc3Qgbz1hPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtuPW8ucm90YXRpb247cj1vLnZhbHVlfWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXImJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cj9yPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocil8fChyPVtyXSk7bGV0IGc9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbYyxnXT1bZyxjXSk7Y29uc3QgbD10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsaD1bXTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZoLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgQz1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBRLHtmb250U2l6ZTpFfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKEUpUT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGctMSkvbDtsZXQgdCxpPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxDKTtpZihhPmkpe2k9YTt0PWV9fVtRLEVdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGMtNCx0LEMsLTEpfWNvbnN0IHU9RSpzLGQ9KHUtRSkvMixmPU1hdGguZmxvb3IoZy91KTtsZXQgcD0wO2lmKGgubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uaCksdD1NYXRoLm1heCguLi5oKTtwPU1hdGgubWF4KDAsdC1mKzEpO3A+ZSYmKHA9ZSl9Y29uc3QgbT1NYXRoLm1pbihwK2YrMSxsKSx5PVsiL1R4IEJNQyBxIixgMSAxICR7Y30gJHtnfSByZSBXIG5gXTtpZihoLmxlbmd0aCl7eS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGgpcDw9ZSYmZTxtJiZ5LnB1c2goYDEgJHtnLShlLXArMSkqdX0gJHtjfSAke3V9IHJlIGZgKX15LnB1c2goIkJUIixRLGAxIDAgMCAxIDAgJHtnfSBUbWApO2NvbnN0IHc9e3NoaWZ0OjB9O2ZvcihsZXQgZT1wO2U8bTtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxpPWU9PT1wP2Q6MDt5LnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LEMsRSxjLDAsdywyLC11K2kpKX15LnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIHkuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TjtpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1HO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO2EmJih0aGlzLmRhdGEucXVhZFBvaW50cz1hKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ajt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgaT10LmdldCgiUGFyZW50Iik7aWYoIWkpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGkuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTtpc05hbWUoaS5nZXQoIlJUIiksWikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZXZhbHVhdG9yT3B0aW9uczp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3RoaXMuX2hhc0FwcGVhcmFuY2U9ISF0aGlzLmFwcGVhcmFuY2U7aWYodGhpcy5faGFzQXBwZWFyYW5jZSl7Y29uc3R7Zm9udENvbG9yOmUsZm9udFNpemU6YX09ZnVuY3Rpb24gcGFyc2VBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGkpLnBhcnNlKCl9KHRoaXMuYXBwZWFyYW5jZSx0LGkpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1hfHwxMH1lbHNle3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6dCxmb250U2l6ZTphfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHRoaXMuX2NvbnRlbnRzLnN0cil7dGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuX2NvbnRlbnRzLnN0ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUudHJpbUVuZCgpKSk7Y29uc3R7Y29vcmRzOmUsYmJveDp0LG1hdHJpeDppfT1GYWtlVW5pY29kZUZvbnQuZ2V0Rmlyc3RQb3NpdGlvbkluZm8odGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KGUsdCxpKX1pZih0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1lLmRpY3QuZ2V0KCJDQSIpLHM9bmV3IEZha2VVbmljb2RlRm9udChpLCJzYW5zLXNlcmlmIik7dGhpcy5hcHBlYXJhbmNlPXMuY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhLHQscik7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSl9ZWxzZSB3YXJuKCJGcmVlVGV4dEFubm90YXRpb246IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKX19Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX2hhc0FwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLGZvbnRTaXplOnMsb2xkQW5ub3RhdGlvbjpuLHJlY3Q6byxyb3RhdGlvbjpnLHVzZXI6Yyx2YWx1ZTpsfT1lLGg9bnx8bmV3IERpY3QodCk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZyZWVUZXh0IikpO2lmKG4pe2guc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtoLmRlbGV0ZSgiUkMiKX1lbHNlIGguc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixvKTtjb25zdCBDPWAvSGVsdiAke3N9IFRmICR7Z2V0UGRmQ29sb3IociwhMCl9YDtoLnNldCgiREEiLEMpO2guc2V0KCJDb250ZW50cyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aC5zZXQoIkYiLDQpO2guc2V0KCJCb3JkZXIiLFswLDAsMF0pO2guc2V0KCJSb3RhdGUiLGcpO2MmJmguc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGMpKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjphLGV2YWx1YXRvcjpyLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpsLHZhbHVlOmh9PWUsQz1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKGEpUS5zZXQoIkhlbHYiLGEpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1DLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShyLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxDKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7bCUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1oLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBTPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO1MucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgaz0xO0Q+bSYmKGs9bS9EKTtsZXQgUj0xO2NvbnN0IE49cypnLEc9MSpnLE09Tip3Lmxlbmd0aDtNPnkmJihSPXkvTSk7Y29uc3QgVT1nKk1hdGgubWluKGssUik7bGV0IHgsTCxIO3N3aXRjaChsKXtjYXNlIDA6SD1bMSwwLDAsMV07TD1bY1swXSxjWzFdLG0seV07eD1bY1swXSxjWzNdLUddO2JyZWFrO2Nhc2UgOTA6SD1bMCwxLC0xLDBdO0w9W2NbMV0sLWNbMl0sbSx5XTt4PVtjWzFdLC1jWzBdLUddO2JyZWFrO2Nhc2UgMTgwOkg9Wy0xLDAsMCwtMV07TD1bLWNbMl0sLWNbM10sbSx5XTt4PVstY1syXSwtY1sxXS1HXTticmVhaztjYXNlIDI3MDpIPVswLC0xLDEsMF07TD1bLWNbM10sY1swXSxtLHldO3g9Wy1jWzNdLGNbMl0tR119Y29uc3QgSj1bInEiLGAke0guam9pbigiICIpfSAwIDAgY21gLGAke0wuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFUpfSBUZmBdO0oucHVzaChgJHt4LmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKFNbMF0pfSkgVGpgKTtjb25zdCB2PW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Uy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1TW2VdO0oucHVzaChgMCAtJHt2fSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUoucHVzaCgiRVQiLCJRIik7Y29uc3QgWT1KLmpvaW4oIlxuIiksSz1uZXcgRGljdCh0KTtLLnNldCgiRm9ybVR5cGUiLDEpO0suc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtLLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Sy5zZXQoIkJCb3giLGMpO0suc2V0KCJSZXNvdXJjZXMiLEMpO0suc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgVD1uZXcgU3RyaW5nU3RyZWFtKFkpO1QuZGljdD1LO3JldHVybiBUfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxvPW4/cjpudWxsLGc9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxjPTIqZyxsPVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0rYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2NdO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLGwpfHwodGhpcy5yZWN0YW5nbGU9bCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtnfSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpuLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7YVswXX0gJHthWzFdfSBtYCxgJHthWzJdfSAke2FbM119IGxgLCJTIik7cmV0dXJuW3RbMF0tZyx0WzJdK2csdFs3XS1nLHRbM10rZ119fSl9fX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT14O3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG49cz9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFs0XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzVdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdFs0XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLG49dFszXS10WzddLXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7ZS5wdXNoKGAke2l9ICR7YX0gJHtyfSAke259IHJlYCk7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1MO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscz1yP2dldFBkZkNvbG9yQXJyYXkocik6bnVsbCxuPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsZz1pKyhyLWkpLzIsYz1hKyhuLWEpLzIsbD0oci1pKS8yKm8saD0obi1hKS8yKm87ZS5wdXNoKGAke2d9ICR7bn0gbWAsYCR7ZytsfSAke259ICR7cn0gJHtjK2h9ICR7cn0gJHtjfSBjYCxgJHtyfSAke2MtaH0gJHtnK2x9ICR7YX0gJHtnfSAke2F9IGNgLGAke2ctbH0gJHthfSAke2l9ICR7Yy1ofSAke2l9ICR7Y30gY2AsYCR7aX0gJHtjK2h9ICR7Zy1sfSAke259ICR7Z30gJHtufSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1KO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShhLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShhKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLG49MipzLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKXtvWzBdPU1hdGgubWluKG9bMF0scltlXS1uKTtvWzFdPU1hdGgubWluKG9bMV0scltlKzFdLW4pO29bMl09TWF0aC5tYXgob1syXSxyW2VdK24pO29bM109TWF0aC5tYXgob1szXSxyW2UrMV0rbil9VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbyl8fCh0aGlzLnJlY3RhbmdsZT1vKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3N9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpO3QrPTIpZS5wdXNoKGAke3JbdF19ICR7clt0KzFdfSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUh9fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU99fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Vzt0aGlzLmRhdGEuaW5rTGlzdHM9W107dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtjb25zdCBhPXQuZ2V0QXJyYXkoIklua0xpc3QiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upe2lmKCFBcnJheS5pc0FycmF5KGFbZV0pKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShhW2VdLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCByPTAscz1hW2VdLmxlbmd0aDtyPHM7cis9Mil7Y29uc3Qgcz1pLmZldGNoSWZSZWYoYVtlXVtyXSksbj1pLmZldGNoSWZSZWYoYVtlXVtyKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHMmJiJudW1iZXIiPT10eXBlb2Ygbil7dFtyXT1zO3RbcisxXT1ufX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxzPTIqcixuPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpe25bMF09TWF0aC5taW4oblswXSxlW3RdLXMpO25bMV09TWF0aC5taW4oblsxXSxlW3QrMV0tcyk7blsyXT1NYXRoLm1heChuWzJdLGVbdF0rcyk7blszXT1NYXRoLm1heChuWzNdLGVbdCsxXStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKz0yKWUucHVzaChgJHt0W2ldfSAke3RbaSsxXX0gJHswPT09aT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpyLGNvbG9yOnMsb3BhY2l0eTpuLHBhdGhzOm8sb3V0bGluZXM6ZyxyZWN0OmMscm90YXRpb246bCx0aGlja25lc3M6aCx1c2VyOkN9PWUsUT1yfHxuZXcgRGljdCh0KTtRLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO1Euc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW5rIikpO1Euc2V0KHI/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO1Euc2V0KCJSZWN0IixjKTtRLnNldCgiSW5rTGlzdCIsZz8ucG9pbnRzfHxvLnBvaW50cyk7US5zZXQoIkYiLDQpO1Euc2V0KCJSb3RhdGUiLGwpO0MmJlEuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKEMpKTtnJiZRLnNldCgiSVQiLE5hbWUuZ2V0KCJJbmtIaWdobGlnaHQiKSk7Y29uc3QgRT1uZXcgRGljdCh0KTtRLnNldCgiQlMiLEUpO0Uuc2V0KCJXIixoKTtRLnNldCgiQyIsQXJyYXkuZnJvbShzLChlPT5lLzI1NSkpKTtRLnNldCgiQ0EiLG4pO2NvbnN0IHU9bmV3IERpY3QodCk7US5zZXQoIkFQIix1KTtpP3Uuc2V0KCJOIixpKTp1LnNldCgiTiIsYSk7cmV0dXJuIFF9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSk7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6bixvcGFjaXR5Om99PWUsZz1bYCR7bn0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmZy5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBzLmxpbmVzKXtnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixpPWUubGVuZ3RoO3Q8aTt0Kz02KWlmKGlzTmFOKGVbdF0pKWcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W2ksYSxyLHMsbixvXT1lLnNsaWNlKHQsdCs2KTtnLnB1c2goW2ksYSxyLHMsbixvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWcucHVzaCgiUyIpO2NvbnN0IGM9Zy5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixyKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksaT1uZXcgRGljdCh0KSxhPW5ldyBEaWN0KHQpO2Euc2V0KCJDQSIsbyk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7aS5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixpKTtsLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOntvdXRsaW5lOnN9LG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1s0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1s1XSl9IG1gKTtmb3IobGV0IGU9Nix0PXMubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKHNbZV0pKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhzW2UrNF0pfSAke251bWJlclRvU3RyaW5nKHNbZSs1XSl9IGxgKTtlbHNle2NvbnN0W3QsaSxhLHIsbixnXT1zLnNsaWNlKGUsZSs2KTtvLnB1c2goW3QsaSxhLHIsbixnXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX1vLnB1c2goImggZiIpO2NvbnN0IGc9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgbD1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO2wuc2V0KCJFeHRHU3RhdGUiLGgpO2Muc2V0KCJSZXNvdXJjZXMiLGwpO2NvbnN0IEM9bmV3IERpY3QodCk7aC5zZXQoIlIwIixDKTtDLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7Qy5zZXQoImNhIixuKTtDLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBRPW5ldyBTdHJpbmdTdHJlYW0oZyk7US5kaWN0PWM7cmV0dXJuIFF9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXY7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlsxLDEsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF19ICR7dFsxXX0gbWAsYCR7dFsyXX0gJHt0WzNdfSBsYCxgJHt0WzZdfSAke3RbN119IGxgLGAke3RbNF19ICR7dFs1XX0gbGAsImYiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpyLG9sZEFubm90YXRpb246cyxvcGFjaXR5Om4scmVjdDpvLHJvdGF0aW9uOmcsdXNlcjpjLHF1YWRQb2ludHM6bH09ZSxoPXN8fG5ldyBEaWN0KHQpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7aC5zZXQocz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIlJlY3QiLG8pO2guc2V0KCJGIiw0KTtoLnNldCgiQm9yZGVyIixbMCwwLDBdKTtoLnNldCgiUm90YXRlIixnKTtoLnNldCgiUXVhZFBvaW50cyIsbCk7aC5zZXQoIkMiLEFycmF5LmZyb20ociwoZT0+ZS8yNTUpKSk7aC5zZXQoIkNBIixuKTtjJiZoLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtoLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixpfHxhKX1yZXR1cm4gaH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7Y29uc3R7Y29sb3I6YSxyZWN0OnIsb3V0bGluZXM6cyxvcGFjaXR5Om59PWUsbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl0sZz1bXTtmb3IoY29uc3QgZSBvZiBzKXtnLmxlbmd0aD0wO2cucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGk9ZS5sZW5ndGg7dDxpO3QrPTIpZy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtnLnB1c2goImgiKTtvLnB1c2goZy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7bC5zZXQoIkJCb3giLHIpO2wuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTtjb25zdCBoPW5ldyBEaWN0KHQpLEM9bmV3IERpY3QodCk7aC5zZXQoIkV4dEdTdGF0ZSIsQyk7bC5zZXQoIlJlc291cmNlcyIsaCk7Y29uc3QgUT1uZXcgRGljdCh0KTtDLnNldCgiUjAiLFEpO1Euc2V0KCJCTSIsTmFtZS5nZXQoIk11bHRpcGx5IikpO2lmKDEhPT1uKXtRLnNldCgiY2EiLG4pO1Euc2V0KCJUeXBlIixOYW1lLmdldCgiRXh0R1N0YXRlIikpfWNvbnN0IEU9bmV3IFN0cmluZ1N0cmVhbShjKTtFLmRpY3Q9bDtyZXR1cm4gRX19Y2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMC41NzEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbNF19ICR7dFs1XSsxLjN9IG1gLGAke3RbNl19ICR7dFs3XSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUs7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT0odFsxXS10WzVdKS82O2xldCBhPWkscj10WzRdO2NvbnN0IHM9dFs1XSxuPXRbNl07ZS5wdXNoKGAke3J9ICR7cythfSBtYCk7ZG97cis9MjthPTA9PT1hP2k6MDtlLnB1c2goYCR7cn0gJHtzK2F9IGxgKX13aGlsZShyPG4pO2UucHVzaCgiUyIpO3JldHVyblt0WzRdLG4scy0yKmkscysyKmldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1UO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXSt0WzRdKS8yKyIgIisodFsxXSt0WzVdKS8yKyIgbSIsKHRbMl0rdFs2XSkvMisiICIrKHRbM10rdFs3XSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ueyNUO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1xO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMX1tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhlLHQ9bnVsbCl7aWYoZSl7aWYoIXRoaXMuZGF0YS5pc0VkaXRhYmxlKXJldHVybiExO3RoaXMuI1Q9dGhpcy5kYXRhLmhhc093bkNhbnZhczt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3JldHVybiEwfXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy4jVDtyZXR1cm4hdD8uaGFzKHRoaXMuZGF0YS5pZCl9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09ZSxyPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKSxzPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3MuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBuPXMuZ2V0SW1hZ2VEYXRhKDAsMCxpLGEpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpLGc9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PiEhKDI1NSZ+ZSkpO2lmKGcpe3MuZmlsbFN0eWxlPSJ3aGl0ZSI7cy5maWxsUmVjdCgwLDAsaSxhKTtzLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgYz1yLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLGw9TmFtZS5nZXQoIlhPYmplY3QiKSxoPU5hbWUuZ2V0KCJJbWFnZSIpLEM9bmV3IERpY3QodCk7Qy5zZXQoIlR5cGUiLGwpO0Muc2V0KCJTdWJ0eXBlIixoKTtDLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7Qy5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VSR0IiKSk7Qy5zZXQoIkZpbHRlciIsTmFtZS5nZXQoIkRDVERlY29kZSIpKTtDLnNldCgiQkJveCIsWzAsMCxpLGFdKTtDLnNldCgiV2lkdGgiLGkpO0Muc2V0KCJIZWlnaHQiLGEpO2xldCBRPW51bGw7aWYoZyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3Qgcj1uZXcgRGljdCh0KTtyLnNldCgiVHlwZSIsbCk7ci5zZXQoIlN1YnR5cGUiLGgpO3Iuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtyLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZUdyYXkiKSk7ci5zZXQoIldpZHRoIixpKTtyLnNldCgiSGVpZ2h0IixhKTtRPW5ldyBTdHJlYW0oZSwwLDAscil9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBTdHJlYW0oYXdhaXQgYywwLDAsQyksc21hc2tTdHJlYW06USx3aWR0aDppLGhlaWdodDphfX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e29sZEFubm90YXRpb246cixyZWN0OnMscm90YXRpb246bix1c2VyOm99PWUsZz1yfHxuZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2cuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Zy5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zy5zZXQoIlJlY3QiLHMpO2cuc2V0KCJGIiw0KTtnLnNldCgiQm9yZGVyIixbMCwwLDBdKTtnLnNldCgiUm90YXRlIixuKTtvJiZnLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShvKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtnLnNldCgiQVAiLGUpO2k/ZS5zZXQoIk4iLGkpOmUuc2V0KCJOIixhKX1yZXR1cm4gZ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2NvbnN0e3JvdGF0aW9uOmF9PWUse2ltYWdlUmVmOnIsd2lkdGg6cyxoZWlnaHQ6bn09aS5pbWFnZSxvPW5ldyBEaWN0KHQpLGc9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGcpO2cuc2V0KCJJbTAiLHIpO2NvbnN0IGM9YHEgJHtzfSAwIDAgJHtufSAwIDAgY20gL0ltMCBEbyBRYCxsPW5ldyBEaWN0KHQpO2wuc2V0KCJGb3JtVHlwZSIsMSk7bC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2wuc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtsLnNldCgiQkJveCIsWzAsMCxzLG5dKTtsLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscyxuKTtsLnNldCgiTWF0cml4IixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PWw7cmV0dXJuIGh9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxpKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPWEuc2VyaWFsaXphYmxlO2NvbnN0IHI9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1yIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhyLm5hbWUpOiJQdXNoUGluIjtjb25zdCBzPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiBzJiZzPj0wJiZzPD0xP3M6bnVsbH19Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1pO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWkrZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsaSk7dGhpcy5idWZmZXJMZW5ndGg9YX19Y2xhc3MgQVJDRm91ckNpcGhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmE9MDt0aGlzLmI9MDtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1NiksaT1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHI9MDthPDI1NjsrK2Epe2NvbnN0IHM9dFthXTtyPXIrcytlW2ElaV0mMjU1O3RbYV09dFtyXTt0W3JdPXN9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxpPXRoaXMuYjtjb25zdCBhPXRoaXMucyxyPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBuPTA7bjxyOysrbil7dD10KzEmMjU1O2NvbnN0IHI9YVt0XTtpPWkrciYyNTU7Y29uc3Qgbz1hW2ldO2FbdF09bzthW2ldPXI7c1tuXT1lW25dXmFbcitvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPWk7cmV0dXJuIHN9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y29uc3QgZW89ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pLHQ9bmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSk7cmV0dXJuIGZ1bmN0aW9uIGhhc2goaSxhLHIpe2xldCBzPTE3MzI1ODQxOTMsbj0tMjcxNzMzODc5LG89LTE3MzI1ODQxOTQsZz0yNzE3MzM4Nzg7Y29uc3QgYz1yKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KGMpO2xldCBoLEM7Zm9yKGg9MDtoPHI7KytoKWxbaF09aVthKytdO2xbaCsrXT0xMjg7Y29uc3QgUT1jLTg7Zm9yKDtoPFE7KWxbaCsrXT0wO2xbaCsrXT1yPDwzJjI1NTtsW2grK109cj4+NSYyNTU7bFtoKytdPXI+PjEzJjI1NTtsW2grK109cj4+MjEmMjU1O2xbaCsrXT1yPj4+MjkmMjU1O2xbaCsrXT0wO2xbaCsrXT0wO2xbaCsrXT0wO2NvbnN0IEU9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihoPTA7aDxjOyl7Zm9yKEM9MDtDPDE2OysrQyxoKz00KUVbQ109bFtoXXxsW2grMV08PDh8bFtoKzJdPDwxNnxsW2grM108PDI0O2xldCBpLGEscj1zLGM9bixRPW8sdT1nO2ZvcihDPTA7Qzw2NDsrK0Mpe2lmKEM8MTYpe2k9YyZRfH5jJnU7YT1DfWVsc2UgaWYoQzwzMil7aT11JmN8fnUmUTthPTUqQysxJjE1fWVsc2UgaWYoQzw0OCl7aT1jXlFedTthPTMqQys1JjE1fWVsc2V7aT1RXihjfH51KTthPTcqQyYxNX1jb25zdCBzPXUsbj1yK2krdFtDXStFW2FdfDAsbz1lW0NdO3U9UTtRPWM7Yz1jKyhuPDxvfG4+Pj4zMi1vKXwwO3I9c31zPXMrcnwwO249bitjfDA7bz1vK1F8MDtnPWcrdXwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JmcsZz4+OCYyNTUsZz4+MTYmMjU1LGc+Pj4yNCYyNTVdKX19KCk7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGk7aWYoMzImZSl7aT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7aT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8aTw8MzItZTt0aGlzLmhpZ2g9aT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGk9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihpKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8aX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgdG89ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2Q2xvc3VyZSgpe2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjaChlLHQsaSl7cmV0dXJuIGUmdF5+ZSZpfWZ1bmN0aW9uIG1haihlLHQsaSl7cmV0dXJuIGUmdF5lJmledCZpfWZ1bmN0aW9uIHNpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWNvbnN0IGU9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEpe2xldCByPTE3NzkwMzM3MDMscz0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixvPTI3NzM0ODA3NjIsZz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxsPTUyODczNDYzNSxoPTE1NDE0NTkyMjU7Y29uc3QgQz02NCpNYXRoLmNlaWwoKGErOSkvNjQpLFE9bmV3IFVpbnQ4QXJyYXkoQyk7bGV0IEUsdTtmb3IoRT0wO0U8YTsrK0UpUVtFXT10W2krK107UVtFKytdPTEyODtjb25zdCBkPUMtODtmb3IoO0U8ZDspUVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPWE+Pj4yOSYyNTU7UVtFKytdPWE+PjIxJjI1NTtRW0UrK109YT4+MTMmMjU1O1FbRSsrXT1hPj41JjI1NTtRW0UrK109YTw8MyYyNTU7Y29uc3QgZj1uZXcgVWludDMyQXJyYXkoNjQpO2ZvcihFPTA7RTxDOyl7Zm9yKHU9MDt1PDE2OysrdSl7Zlt1XT1RW0VdPDwyNHxRW0UrMV08PDE2fFFbRSsyXTw8OHxRW0UrM107RSs9NH1mb3IodT0xNjt1PDY0OysrdSlmW3VdPShyb3RyKHA9Zlt1LTJdLDE3KV5yb3RyKHAsMTkpXnA+Pj4xMCkrZlt1LTddK2xpdHRsZVNpZ21hKGZbdS0xNV0pK2ZbdS0xNl18MDtsZXQgdCxpLGE9cixDPXMsZD1uLG09byx5PWcsdz1jLGI9bCxEPWg7Zm9yKHU9MDt1PDY0OysrdSl7dD1EK3NpZ21hUHJpbWUoeSkrY2goeSx3LGIpK2VbdV0rZlt1XTtpPXNpZ21hKGEpK21haihhLEMsZCk7RD1iO2I9dzt3PXk7eT1tK3R8MDttPWQ7ZD1DO0M9YTthPXQraXwwfXI9cithfDA7cz1zK0N8MDtuPW4rZHwwO289byttfDA7Zz1nK3l8MDtjPWMrd3wwO2w9bCtifDA7aD1oK0R8MH12YXIgcDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3I+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaF0pfX0oKSxpbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGksYSxyKXtlLmFzc2lnbih0KTtlLmFuZChpKTtyLmFzc2lnbih0KTtyLm5vdCgpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIG1haihlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3IuYW5kKGEpO2UueG9yKHIpO3IuYXNzaWduKGkpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIHNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihpKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg3KTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnNoaWZ0UmlnaHQoNik7ZS54b3IoaSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsaSxhLHI9ITEpe2xldCBzLG4sbyxnLGMsbCxoLEM7aWYocil7cz1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2c9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7bD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7aD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7Qz1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtzPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtnPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtsPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2g9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7Qz1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBRPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksRT1uZXcgVWludDhBcnJheShRKTtsZXQgdSxkO2Zvcih1PTA7dTxhOysrdSlFW3VdPXRbaSsrXTtFW3UrK109MTI4O2NvbnN0IGY9US0xNjtmb3IoO3U8ZjspRVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPWE+Pj4yOSYyNTU7RVt1KytdPWE+PjIxJjI1NTtFW3UrK109YT4+MTMmMjU1O0VbdSsrXT1hPj41JjI1NTtFW3UrK109YTw8MyYyNTU7Y29uc3QgcD1uZXcgQXJyYXkoODApO2Zvcih1PTA7dTw4MDt1KyspcFt1XT1uZXcgV29yZDY0KDAsMCk7bGV0IG09bmV3IFdvcmQ2NCgwLDApLHk9bmV3IFdvcmQ2NCgwLDApLHc9bmV3IFdvcmQ2NCgwLDApLGI9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE49bmV3IFdvcmQ2NCgwLDApLEc9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLFU9bmV3IFdvcmQ2NCgwLDApO2xldCB4LEw7Zm9yKHU9MDt1PFE7KXtmb3IoZD0wO2Q8MTY7KytkKXtwW2RdLmhpZ2g9RVt1XTw8MjR8RVt1KzFdPDwxNnxFW3UrMl08PDh8RVt1KzNdO3BbZF0ubG93PUVbdSs0XTw8MjR8RVt1KzVdPDwxNnxFW3UrNl08PDh8RVt1KzddO3UrPTh9Zm9yKGQ9MTY7ZDw4MDsrK2Qpe3g9cFtkXTtsaXR0bGVTaWdtYVByaW1lKHgscFtkLTJdLFUpO3guYWRkKHBbZC03XSk7bGl0dGxlU2lnbWEoTSxwW2QtMTVdLFUpO3guYWRkKE0pO3guYWRkKHBbZC0xNl0pfW0uYXNzaWduKHMpO3kuYXNzaWduKG4pO3cuYXNzaWduKG8pO2IuYXNzaWduKGcpO0QuYXNzaWduKGMpO1MuYXNzaWduKGwpO2suYXNzaWduKGgpO1IuYXNzaWduKEMpO2ZvcihkPTA7ZDw4MDsrK2Qpe04uYXNzaWduKFIpO3NpZ21hUHJpbWUoTSxELFUpO04uYWRkKE0pO2NoKE0sRCxTLGssVSk7Ti5hZGQoTSk7Ti5hZGQoZVtkXSk7Ti5hZGQocFtkXSk7c2lnbWEoRyxtLFUpO21haihNLG0seSx3LFUpO0cuYWRkKE0pO3g9UjtSPWs7az1TO1M9RDtiLmFkZChOKTtEPWI7Yj13O3c9eTt5PW07eC5hc3NpZ24oTik7eC5hZGQoRyk7bT14fXMuYWRkKG0pO24uYWRkKHkpO28uYWRkKHcpO2cuYWRkKGIpO2MuYWRkKEQpO2wuYWRkKFMpO2guYWRkKGspO0MuYWRkKFIpfWlmKHIpe0w9bmV3IFVpbnQ4QXJyYXkoNDgpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKX1lbHNle0w9bmV3IFVpbnQ4QXJyYXkoNjQpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtsLmNvcHlUbyhMLDQwKTtoLmNvcHlUbyhMLDQ4KTtDLmNvcHlUbyhMLDU2KX1yZXR1cm4gTH19KCk7Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7dW5yZWFjaGFibGUoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGksYSxyO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpc1tlXV49dFtpXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2k9c1sxM107c1sxM109c1s5XTtzWzldPXNbNV07c1s1XT1zWzFdO3NbMV09aTtpPXNbMTRdO2E9c1sxMF07c1sxNF09c1s2XTtzWzEwXT1zWzJdO3NbNl09aTtzWzJdPWE7aT1zWzE1XTthPXNbMTFdO3I9c1s3XTtzWzE1XT1zWzNdO3NbMTFdPWk7c1s3XT1hO3NbM109cjtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPXRoaXMuX2ludl9zW3NbZV1dO2ZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2Epc1tpXV49dFthXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W3NbZV1dLGE9dGhpcy5fbWl4W3NbZSsxXV0scj10aGlzLl9taXhbc1tlKzJdXSxuPXRoaXMuX21peFtzW2UrM11dO2k9dF5hPj4+OF5hPDwyNF5yPj4+MTZecjw8MTZebj4+PjI0Xm48PDg7c1tlXT1pPj4+MjQmMjU1O3NbZSsxXT1pPj4xNiYyNTU7c1tlKzJdPWk+PjgmMjU1O3NbZSszXT0yNTUmaX19aT1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1pO2k9c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1pO3NbMl09YTtpPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09aTtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtzW2VdPXRoaXMuX2ludl9zW3NbZV1dO3NbZV1ePXRbZV19cmV0dXJuIHN9X2VuY3J5cHQoZSx0KXtjb25zdCBpPXRoaXMuX3M7bGV0IGEscixzO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYpO24uc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cz1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1zO3M9blsyXTtyPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXM7blsxNF09cjtzPW5bM107cj1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXM7blsxMV09cjtuWzE1XT1hO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1uW2UrMF0saT1uW2UrMV0scj1uW2UrMl0scz1uW2UrM107YT10Xmlecl5zO25bZSswXV49YV50aGlzLl9taXhDb2xbdF5pXTtuW2UrMV1ePWFedGhpcy5fbWl4Q29sW2lecl07bltlKzJdXj1hXnRoaXMuX21peENvbFtyXnNdO25bZSszXV49YV50aGlzLl9taXhDb2xbc150XX1mb3IobGV0IGk9MCxhPTE2KmU7aTwxNjsrK2ksKythKW5baV1ePXRbYV19Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT1pW25bZV1dO3M9blsxXTtuWzFdPW5bNV07bls1XT1uWzldO25bOV09blsxM107blsxM109cztzPW5bMl07cj1uWzZdO25bMl09blsxMF07bls2XT1uWzE0XTtuWzEwXT1zO25bMTRdPXI7cz1uWzNdO3I9bls3XTthPW5bMTFdO25bM109blsxNV07bls3XT1zO25bMTFdPXI7blsxNV09YTtmb3IobGV0IGU9MCxpPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKytpKW5bZV1ePXRbaV07cmV0dXJuIG59X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO2xldCBuPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtyXT1lW3RdOysrcjtpZihyPDE2KWNvbnRpbnVlO2NvbnN0IGk9dGhpcy5fZGVjcnlwdChhLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49bltlXTtuPWE7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj1uO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqcy5sZW5ndGg7aWYodCl7Y29uc3QgZT1zLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBpPTE1LGE9MTYtdDtpPj1hOy0taSlpZihlW2ldIT09dCl7dD0wO2JyZWFrfW8tPXQ7c1tzLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGc9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGk9cy5sZW5ndGg7ZTxpOysrZSx0Kz0xNilnLnNldChzW2VdLHQpO3JldHVybiBnfWRlY3J5cHRCbG9jayhlLHQsaT1udWxsKXtjb25zdCBhPWUubGVuZ3RoLHI9dGhpcy5idWZmZXI7bGV0IHM9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihpKXRoaXMuaXY9aTtlbHNle2ZvcihsZXQgdD0wO3M8MTYmJnQ8YTsrK3QsKytzKXJbc109ZVt0XTtpZihzPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1zO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PXI7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBpPWUubGVuZ3RoO2xldCBhPXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBzPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBuPTA7bjxpOysrbil7YVtyXT1lW25dOysrcjtpZihyPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKWFbZV1ePXRbZV07Y29uc3QgaT10aGlzLl9lbmNyeXB0KGEsdGhpcy5fa2V5KTt0PWk7cy5wdXNoKGkpO2E9bmV3IFVpbnQ4QXJyYXkoMTYpO3I9MH10aGlzLmJ1ZmZlcj1hO3RoaXMuYnVmZmVyTGVuZ3RoPXI7dGhpcy5pdj10O2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgbj0xNipzLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgZT0wLHQ9MCxpPXMubGVuZ3RoO2U8aTsrK2UsdCs9MTYpby5zZXQoc1tlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPXRoaXMuX3Jjb24sYT1uZXcgVWludDhBcnJheSgxNzYpO2Euc2V0KGUpO2ZvcihsZXQgZT0xNixyPTE7ZTwxNzY7KytyKXtsZXQgcz1hW2UtM10sbj1hW2UtMl0sbz1hW2UtMV0sZz1hW2UtNF07cz10W3NdO249dFtuXTtvPXRbb107Zz10W2ddO3NePWlbcl07Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1zXj1hW2UtMTZdO2UrKzthW2VdPW5ePWFbZS0xNl07ZSsrO2FbZV09b149YVtlLTE2XTtlKys7YVtlXT1nXj1hW2UtMTZdO2UrK319cmV0dXJuIGF9fWNsYXNzIEFFUzI1NkNpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTQ7dGhpcy5fa2V5U2l6ZT0yMjQ7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxpPW5ldyBVaW50OEFycmF5KDI0MCk7aS5zZXQoZSk7bGV0IGEscixzLG4sbz0xO2ZvcihsZXQgZT0zMixnPTE7ZTwyNDA7KytnKXtpZihlJTMyPT0xNil7YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dfWVsc2UgaWYoZSUzMj09MCl7YT1pW2UtM107cj1pW2UtMl07cz1pW2UtMV07bj1pW2UtNF07YT10W2FdO3I9dFtyXTtzPXRbc107bj10W25dO2FePW87KG88PD0xKT49MjU2JiYobz0yNTUmKDI3Xm8pKX1mb3IobGV0IHQ9MDt0PDQ7Kyt0KXtpW2VdPWFePWlbZS0zMl07ZSsrO2lbZV09cl49aVtlLTMyXTtlKys7aVtlXT1zXj1pW2UtMzJdO2UrKztpW2VdPW5ePWlbZS0zMl07ZSsrfX1yZXR1cm4gaX19Y2xhc3MgUERGMTd7Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhyLDAsci5sZW5ndGgpLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0byhhLDAsYS5sZW5ndGgpLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10byhyLDAsci5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO2NvbnN0IHI9dG8oYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYyMHtfaGFzaChlLHQsaSl7bGV0IGE9dG8odCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxyPVswXSxzPTA7Zm9yKDtzPDY0fHxyLmF0KC0xKT5zLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtpLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KHQpO2xldCBsPTA7Yy5zZXQoZSxsKTtsKz1lLmxlbmd0aDtjLnNldChhLGwpO2wrPWEubGVuZ3RoO2Muc2V0KGksbCk7Y29uc3QgaD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxpPTA7ZTw2NDtlKyssaSs9dCloLnNldChjLGkpO3I9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGgsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IEM9ci5zbGljZSgwLDE2KS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApJTM7MD09PUM/YT10byhyLDAsci5sZW5ndGgpOjE9PT1DP2E9KG49cixvPTAsZz1yLmxlbmd0aCxpbyhuLG8sZywhMCkpOjI9PT1DJiYoYT1pbyhyLDAsci5sZW5ndGgpKTtzKyt9dmFyIG4sbyxnO3JldHVybiBhLnN1YmFycmF5KDAsMzIpfWNoZWNrT3duZXJQYXNzd29yZChlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLHIsaSksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxhLFtdKSxpKX1nZXRPd25lcktleShlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9dGhpcy5faGFzaChlLHIsaSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUsYSxbXSk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGksITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBpPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgRGVjcnlwdFN0cmVhbShlLHQsKGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gaS5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZGVjcnlwdEJsb2NrKGksITApO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgQUVTQmFzZUNpcGhlcil7Y29uc3QgaT0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpLnJlcGVhdChpKTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO2Vsc2UgZm9yKGxldCBlPTA7ZTwxNjtlKyspYVtlXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtsZXQgcj1zdHJpbmdUb0J5dGVzKGUpO3I9dC5lbmNyeXB0KHIsYSk7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNityLmxlbmd0aCk7cy5zZXQoYSk7cy5zZXQociwxNik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcocyl9bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZW5jcnlwdChpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhpKX19Y2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtzdGF0aWMjcT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pOyNPKGUsdCxpLGEscixzLG4sbyxnLGMsbCxoKXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IEM9Nj09PWU/bmV3IFBERjIwOm5ldyBQREYxNztyZXR1cm4gQy5jaGVja1VzZXJQYXNzd29yZCh0LG8sbik/Qy5nZXRVc2VyS2V5KHQsZyxsKTp0Lmxlbmd0aCYmQy5jaGVja093bmVyUGFzc3dvcmQodCxhLHMsaSk/Qy5nZXRPd25lcktleSh0LHIscyxjKTpudWxsfSNQKGUsdCxpLGEscixzLG4sbyl7Y29uc3QgZz00MCtpLmxlbmd0aCtlLmxlbmd0aCxjPW5ldyBVaW50OEFycmF5KGcpO2xldCBsLGgsQz0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7QzxoOysrQyljW0NdPXRbQ119bD0wO2Zvcig7QzwzMjspY1tDKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbCsrXTtmb3IobD0wLGg9aS5sZW5ndGg7bDxoOysrbCljW0MrK109aVtsXTtjW0MrK109MjU1JnI7Y1tDKytdPXI+PjgmMjU1O2NbQysrXT1yPj4xNiYyNTU7Y1tDKytdPXI+Pj4yNCYyNTU7Zm9yKGw9MCxoPWUubGVuZ3RoO2w8aDsrK2wpY1tDKytdPWVbbF07aWYocz49NCYmIW8pe2NbQysrXT0yNTU7Y1tDKytdPTI1NTtjW0MrK109MjU1O2NbQysrXT0yNTV9bGV0IFE9ZW8oYywwLEMpO2NvbnN0IEU9bj4+MztpZihzPj0zKWZvcihsPTA7bDw1MDsrK2wpUT1lbyhRLDAsRSk7Y29uc3QgdT1RLnN1YmFycmF5KDAsRSk7bGV0IGQsZjtpZihzPj0zKXtmb3IoQz0wO0M8MzI7KytDKWNbQ109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jcVtDXTtmb3IobD0wLGg9ZS5sZW5ndGg7bDxoOysrbCljW0MrK109ZVtsXTtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2soZW8oYywwLEMpKTtoPXUubGVuZ3RoO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoaCk7Zm9yKGw9MTtsPD0xOTsrK2wpe2ZvcihsZXQgZT0wO2U8aDsrK2UpdFtlXT11W2VdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcih0KTtmPWQuZW5jcnlwdEJsb2NrKGYpfWZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfWVsc2V7ZD1uZXcgQVJDRm91ckNpcGhlcih1KTtmPWQuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3EpO2ZvcihsPTAsaD1mLmxlbmd0aDtsPGg7KytsKWlmKGFbbF0hPT1mW2xdKXJldHVybiBudWxsfXJldHVybiB1fSNXKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBzPTA7Y29uc3Qgbj1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtzPG47KytzKXJbc109ZVtzXTtsZXQgbz0wO2Zvcig7czwzMjspcltzKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI3FbbysrXTtsZXQgZz1lbyhyLDAscyk7Y29uc3QgYz1hPj4zO2lmKGk+PTMpZm9yKG89MDtvPDUwOysrbylnPWVvKGcsMCxnLmxlbmd0aCk7bGV0IGwsaDtpZihpPj0zKXtoPXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShjKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxjOysrdCllW3RdPWdbdF1ebztsPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO2g9bC5lbmNyeXB0QmxvY2soaCl9fWVsc2V7bD1uZXcgQVJDRm91ckNpcGhlcihnLnN1YmFycmF5KDAsYykpO2g9bC5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIGh9I2ooZSx0LGksYT0hMSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShpLmxlbmd0aCs5KSxzPWkubGVuZ3RoO2xldCBuO2ZvcihuPTA7bjxzOysrbilyW25dPWlbbl07cltuKytdPTI1NSZlO3JbbisrXT1lPj44JjI1NTtyW24rK109ZT4+MTYmMjU1O3JbbisrXT0yNTUmdDtyW24rK109dD4+OCYyNTU7aWYoYSl7cltuKytdPTExNTtyW24rK109NjU7cltuKytdPTEwODtyW24rK109ODR9cmV0dXJuIGVvKHIsMCxuKS5zdWJhcnJheSgwLE1hdGgubWluKGkubGVuZ3RoKzUsMTYpKX0jWChlLHQsaSxhLHIpe2lmKCEodCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjcnlwdCBmaWx0ZXIgbmFtZS4iKTtjb25zdCBzPXRoaXMsbj1lLmdldCh0Lm5hbWUpLG89bj8uZ2V0KCJDRk0iKTtpZighb3x8Ik5vbmUiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgTnVsbENpcGhlcn07aWYoIlYyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIocy4jaihpLGEsciwhMSkpfTtpZigiQUVTVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMTI4Q2lwaGVyKHMuI2ooaSxhLHIsITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsaSl7Y29uc3QgYT1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShhLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1hLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3Qgcj1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwxIT09ciYmMiE9PXImJjQhPT1yJiY1IT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09cjtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIXMpaWYocjw9MylzPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxpPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmkgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGkubmFtZSk7cz1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7czw0MCYmKHM8PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIocyl8fHM8NDB8fHMlOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IG49c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksZz1uLnN1YmFycmF5KDAsMzIpLGM9by5zdWJhcnJheSgwLDMyKSxsPWUuZ2V0KCJQIiksaD1lLmdldCgiUiIpLEM9KDQ9PT1yfHw1PT09cikmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPUM7Y29uc3QgUT1zdHJpbmdUb0J5dGVzKHQpO2xldCBFLHU7aWYoaSl7aWYoNj09PWgpdHJ5e2k9dXRmOFN0cmluZ1RvU3RyaW5nKGkpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1FPXN0cmluZ1RvQnl0ZXMoaSl9aWYoNSE9PXIpdT10aGlzLiNQKFEsRSxnLGMsbCxoLHMsQyk7ZWxzZXtjb25zdCB0PW4uc3ViYXJyYXkoMzIsNDApLGk9bi5zdWJhcnJheSg0MCw0OCksYT1vLnN1YmFycmF5KDAsNDgpLHI9by5zdWJhcnJheSgzMiw0MCkscz1vLnN1YmFycmF5KDQwLDQ4KSxsPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLEM9c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksUT1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTt1PXRoaXMuI08oaCxFLGcsdCxpLGEsYyxyLHMsbCxDLFEpfWlmKCF1JiYhaSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixvdCk7aWYoIXUmJmkpe2NvbnN0IGU9dGhpcy4jVyhFLGcsaCxzKTt1PXRoaXMuI1AoUSxlLGcsYyxsLGgscyxDKX1pZighdSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsZ3QpO3RoaXMuZW5jcnlwdGlvbktleT11O2lmKHI+PTQpe2NvbnN0IHQ9ZS5nZXQoIkNGIik7dCBpbnN0YW5jZW9mIERpY3QmJih0LnN1cHByZXNzRW5jcnlwdGlvbj0hMCk7dGhpcy5jZj10O3RoaXMuc3RtZj1lLmdldCgiU3RtRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLnN0cmY9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5lZmY9ZS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHRoaXMuI1godGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jWCh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgaT10aGlzLiNqKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpLGNpcGhlckNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGkpfTtyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybShjaXBoZXJDb25zdHJ1Y3RvcixjaXBoZXJDb25zdHJ1Y3Rvcil9fWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBpPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09aT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgWFJlZnsjVj1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsaSxhO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7aT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxhPWU/Lmxlbmd0aD9lWzBdOiIiO2kuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShpLGEsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7YT10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1hO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0saT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9aS5zdHJlYW1Qb3M7ZS5idWYxPWkucGFyc2VyQnVmMTtlLmJ1ZjI9aS5wYXJzZXJCdWYyO2xldCBhO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBpKXx8ISgiZW50cnlDb3VudCJpbiBpKSl7aWYoaXNDbWQoYT1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7aS5maXJzdEVudHJ5TnVtPWE7aS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHI9aS5maXJzdEVudHJ5TnVtO2NvbnN0IHM9aS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IGE9aS5lbnRyeU51bTthPHM7YSsrKXtpLnN0cmVhbVBvcz10LnBvcztpLmVudHJ5TnVtPWE7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IG49e307bi5vZmZzZXQ9ZS5nZXRPYmooKTtuLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpuLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpuLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihuLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4uZ2VuKXx8IW4uZnJlZSYmIW4udW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7cn0sICR7c31gKTswPT09YSYmbi5mcmVlJiYxPT09ciYmKHI9MCk7dGhpcy5lbnRyaWVzW2Ercl18fCh0aGlzLmVudHJpZXNbYStyXT1uKX1pLmVudHJ5TnVtPTA7aS5zdHJlYW1Qb3M9dC5wb3M7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBpLmZpcnN0RW50cnlOdW07ZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gYX1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3R7ZGljdDp0LHBvczppfT1lLGE9dC5nZXQoIlciKSxyPXQuZ2V0KCJJbmRleCIpfHxbMCx0LmdldCgiU2l6ZSIpXTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczpyLGJ5dGVXaWR0aHM6YSxlbnRyeU51bTowLHN0cmVhbVBvczppfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2ksYSxyXT10LmJ5dGVXaWR0aHMscz10LmVudHJ5UmFuZ2VzO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0W24sb109cztpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke259LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke259LCAke299YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxvOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsZz0wLGM9MDtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09aSYmKG89MSk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtnPWc8PDh8dH1mb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtjPWM8PDh8dH1jb25zdCBsPXt9O2wub2Zmc2V0PWc7bC5nZW49Yztzd2l0Y2gobyl7Y2FzZSAwOmwuZnJlZT0hMDticmVhaztjYXNlIDE6bC51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tuK3NdfHwodGhpcy5lbnRyaWVzW24rc109bCl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBpPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gaX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGkpe2NvbnN0IGE9aS5sZW5ndGgscj1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7dDxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVt0K3JdPT09aVtyXTspKytyO2lmKHI+PWEpYnJlYWs7dCsrO3MrK31yZXR1cm4gc31jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGk9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHM9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBuPXRoaXMuc3RyZWFtO24ucG9zPTA7Y29uc3Qgbz1uLmdldEJ5dGVzKCksZz1ieXRlc1RvU3RyaW5nKG8pLGM9by5sZW5ndGg7bGV0IGw9bi5zdGFydDtjb25zdCBoPVtdLEM9W107Zm9yKDtsPGM7KXtsZXQgUT1vW2xdO2lmKDk9PT1RfHwxMD09PVF8fDEzPT09UXx8MzI9PT1RKXsrK2w7Y29udGludWV9aWYoMzc9PT1RKXtkb3srK2w7aWYobD49YylicmVhaztRPW9bbF19d2hpbGUoMTAhPT1RJiYxMyE9PVEpO2NvbnRpbnVlfWNvbnN0IEU9cmVhZFRva2VuKG8sbCk7bGV0IHU7aWYoRS5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzRdKSkpe2wrPXNraXBVbnRpbChvLGwsYSk7aC5wdXNoKGwpO2wrPXNraXBVbnRpbChvLGwscil9ZWxzZSBpZih1PWkuZXhlYyhFKSl7Y29uc3QgdD0wfHVbMV0saT0wfHVbMl0sYT1sK0UubGVuZ3RoO2xldCByLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09aSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4ubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtFfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0Omwtbi5zdGFydCxnZW46aSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1hO2NvbnN0IFE9ZS5leGVjKGcpO2lmKFEpe3I9ZS5sYXN0SW5kZXgrMS1sO2lmKCJlbmRvYmoiIT09UVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtRWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3ItPVFbMV0ubGVuZ3RoKzF9fWVsc2Ugcj1jLWw7Y29uc3QgZD1vLnN1YmFycmF5KGwsbCtyKSxmPXNraXBVbnRpbChkLDAscyk7aWYoZjxyJiZkW2YrNV08NjQpe0MucHVzaChsLW4uc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChsLW4uc3RhcnQpfWwrPXJ9ZWxzZSBpZihFLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1FLmxlbmd0aHx8L1xzLy50ZXN0KEVbN10pKSl7aC5wdXNoKGwpO2NvbnN0IGU9bCtFLmxlbmd0aDtsZXQgaTt0Lmxhc3RJbmRleD1lO2NvbnN0IGE9dC5leGVjKGcpO2lmKGEpe2k9dC5sYXN0SW5kZXgrMS1sO2lmKCJzdGFydHhyZWYiIT09YVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHthWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1hWzFdLmxlbmd0aCsxfX1lbHNlIGk9Yy1sO2wrPWl9ZWxzZSBsKz1FLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIEMpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBRPVtdO2xldCBFLHUsZD0hMTtmb3IoY29uc3QgZSBvZiBoKXtuLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe1EucHVzaChpKTtpLmhhcygiRW5jcnlwdCIpJiYoZD0hMCl9fWZvcihjb25zdCBlIG9mWy4uLlEsImdlbkZhbGxiYWNrIiwuLi5RXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF1KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgaT1lLmdldCgiUm9vdCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlBhZ2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcj1hLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpJiYodD0hMCl9Y2F0Y2goZSl7dT1lO2NvbnRpbnVlfWlmKHQmJighZHx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO0U9ZX1pZihFKXJldHVybiBFO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFRLmxlbmd0aClmb3IoY29uc3RbZSx0XW9mIHRoaXMuZW50cmllcy5lbnRyaWVzKCkpe2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9UmVmLmdldChlLHQuZ2VuKTtsZXQgYTt0cnl7YT10aGlzLmZldGNoKGkpfWNhdGNoe2NvbnRpbnVlfWEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT1hLmRpY3QpO2lmKGEgaW5zdGFuY2VvZiBEaWN0JiZhLmhhcygiUm9vdCIpKXJldHVybiBhfXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoaS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWkuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBhPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHIscz1hLmdldE9iaigpO2lmKGlzQ21kKHMsInhyZWYiKSl7cj10aGlzLnByb2Nlc3NYUmVmVGFibGUoYSk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PXIpO3M9ci5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMpJiYhdGhpcy5feHJlZlN0bXMuaGFzKHMpKXt0aGlzLl94cmVmU3Rtcy5hZGQocyk7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpO3RoaXMuI1Y/Pz1zfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoYS5nZXRPYmooKSkmJmlzQ21kKGEuZ2V0T2JqKCksIm9iaiIpJiYocz1hLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7cj10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKHMpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9cz1yLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocyk/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpOnMgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7cmV0dXJuIHRoaXMuI1Y/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgaT1lLm51bSxhPXRoaXMuX2NhY2hlTWFwLmdldChpKTtpZih2b2lkIDAhPT1hKXthIGluc3RhbmNlb2YgRGljdCYmIWEub2JqSWQmJihhLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGF9bGV0IHI9dGhpcy5nZXRFbnRyeShpKTtpZihudWxsPT09cil7dGhpcy5fY2FjaGVNYXAuc2V0KGkscik7cmV0dXJuIHJ9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBRdH10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3I9ci51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHIsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxyLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1yIGluc3RhbmNlb2YgRGljdD9yLm9iaklkPWUudG9TdHJpbmcoKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHIuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiByfWZldGNoVW5jb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPWUuZ2VuO2xldCByPWUubnVtO2lmKHQuZ2VuIT09YSl7Y29uc3Qgcz1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxhKXt3YXJuKHMpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocix0LmdlbiksdCxpKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IHM9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocykseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89bi5nZXRPYmooKSxnPW4uZ2V0T2JqKCksYz1uLmdldE9iaigpO2lmKG8hPT1yfHxnIT09YXx8IShjIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Yy5jbWQpe2lmKGMuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtyPXBhcnNlSW50KGMuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihyKSlyZXR1cm4gcn10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWk/bi5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLGEpKTpuLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHIsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPXQub2Zmc2V0LHI9dGhpcy5mZXRjaChSZWYuZ2V0KGEsMCkpO2lmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBzPXIuZGljdC5nZXQoIkZpcnN0Iiksbj1yLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBnPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBpPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7aX1gKTtnW2VdPXQ7Y1tlXT1pfWNvbnN0IGw9KHIuc3RhcnR8fDApK3MsaD1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1lPG4tMT9jW2UrMV0tY1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoci5tYWtlU3ViU3RyZWFtKGwrY1tlXSx0LHIuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPW8uZ2V0T2JqKCk7aFtlXT1pO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHM9Z1tlXSxDPXRoaXMuZW50cmllc1tzXTtDJiZDLm9mZnNldD09PWEmJkMuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHMsaSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBpO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoaS5iZWdpbixpLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgYW89WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDppLHBhZ2VEaWN0OmEscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnMsZm9udENhY2hlOm4sYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpnLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6bCxub25CbGVuZE1vZGVzU2V0OmgseGZhRmFjdG9yeTpDfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLnBhZ2VEaWN0PWE7dGhpcy54cmVmPXQ7dGhpcy5yZWY9cjt0aGlzLmZvbnRDYWNoZT1uO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWc7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT1DO2NvbnN0IFE9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHN7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2l9XyR7KytRLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7ci50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGkpPzEhPT1pLmxlbmd0aCYmaVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6aX0pOmlbMF06aX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fGFvKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7Y29uc3QgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IiwibnVtYmVyIj09dHlwZW9mIGUmJmU+MD9lOjEpfWdldCB2aWV3KCl7Y29uc3R7Y3JvcEJveDplLG1lZGlhQm94OnR9PXRoaXM7aWYoZSE9PXQmJiFpc0FycmF5RXF1YWwoZSx0KSl7Y29uc3QgaT1VdGlsLmludGVyc2VjdChlLHQpO2lmKGkmJmlbMl0taVswXT4wJiZpWzNdLWlbMV0+MClyZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLGkpO3dhcm4oIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybiBzaGFkb3codGhpcywidmlldyIsdCl9Z2V0IHJvdGF0ZSgpe2xldCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9Z2V0Q29udGVudFN0cmVhbSgpe3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKS50aGVuKChlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW0pKX1nZXQgeGZhRGF0YSgpe3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jI1ooZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHIuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7ci5pZH1gKTtjb250aW51ZX1pZihyLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoci5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhyLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWk/LnB1dChlKTtyLnJlZj1lO2EucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKChlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihyLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0pLCgoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSkpO2RlbGV0ZSByLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IHM9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksbj1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI1ooaSxuLG8pO2NvbnN0IGc9dGhpcy5wYWdlRGljdCxjPXRoaXMuYW5ub3RhdGlvbnMuZmlsdGVyKChlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJm4uaGFzKGUpKSkpLGw9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKHMsdCxpLGEscik7Zm9yKGNvbnN0e3JlZjplfW9mIGwuYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZjLnB1c2goZSk7Y29uc3QgaD1nLmNsb25lKCk7aC5zZXQoIkFubm90cyIsYyk7ci5wdXQodGhpcy5yZWYse2RhdGE6aH0pO2Zvcihjb25zdCBlIG9mIG4pci5wdXQoZSx7ZGF0YTpudWxsfSl9c2F2ZShlLHQsaSxhKXtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3JldHVybiB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucy50aGVuKChmdW5jdGlvbihlKXtjb25zdCBzPVtdO2Zvcihjb25zdCBuIG9mIGUpcy5wdXNoKG4uc2F2ZShyLHQsaSxhKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2Fybihgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwocyl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBPYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmksaW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzPW51bGwsbW9kaWZpZWRJZHM6bj1udWxsfSl7Y29uc3Qgbz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxoPXRoaXMubG9hZFJlc291cmNlcyhbIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdKSx1PW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLGY9dGhpcy54ZmFGYWN0b3J5P251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAocykscD1mPy5nZXQodGhpcy5wYWdlSW5kZXgpO2xldCBtPVByb21pc2UucmVzb2x2ZShudWxsKSx5PW51bGw7aWYocCl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCB0O2NvbnN0IGE9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6ZSxiaXRtYXA6dH1vZiBwKSFlfHx0fHxhLmhhcyhlKXx8YS5hZGQoZSk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6cn09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKGEuc2l6ZT4wKXtjb25zdCBlPXAuc2xpY2UoKTtmb3IoY29uc3RbdCxpXW9mIHMpdC5zdGFydHNXaXRoKGQpJiZpLmJpdG1hcCYmYS5oYXMoaS5iaXRtYXBJZCkmJmUucHVzaChpKTt0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGUsdGhpcy54cmVmLHIpfWVsc2UgdD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhwLHRoaXMueHJlZixyKTt5PW5ldyBSZWZTZXQ7bT1Qcm9taXNlLmFsbChbZSx0aGlzLiNaKHAseSxudWxsKV0pLnRoZW4oKChbZV0pPT5lP0Fubm90YXRpb25GYWN0b3J5LnByaW50TmV3QW5ub3RhdGlvbnMoZSx1LGkscCx0KTpudWxsKSl9Y29uc3Qgdz1Qcm9taXNlLmFsbChbbyxoXSkudGhlbigoKFtzXSk9Pntjb25zdCBuPW5ldyBPcGVyYXRvckxpc3QoYSx0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTp1Lmhhc0JsZW5kTW9kZXModGhpcy5yZXNvdXJjZXMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6cn0pO3JldHVybiB1LmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnMsdGFzazppLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxvcGVyYXRvckxpc3Q6bn0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt3LHRoaXMuX3BhcnNlZEFubm90YXRpb25zLG1dKS50aGVuKChmdW5jdGlvbihbZSx0LHJdKXtpZihyKXt0PXQuZmlsdGVyKChlPT4hKGUucmVmJiZ5LmhhcyhlLnJlZikpKSk7Zm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBhPXJbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IHM9dC5maW5kSW5kZXgoKGU9PmUucmVmJiZpc1JlZnNFcXVhbChlLnJlZixhLnJlZlRvUmVwbGFjZSkpKTtpZihzPj0wKXt0LnNwbGljZShzLDEsYSk7ci5zcGxpY2UoZS0tLDEpO2ktLX19fXQ9dC5jb25jYXQocil9aWYoMD09PXQubGVuZ3RofHxhJlEpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3Qgbz0hIShhJkMpLGg9ISEoYSZFKSxkPSEhKGEmZyksZj0hIShhJmMpLHA9ISEoYSZsKSxtPVtdO2Zvcihjb25zdCBlIG9mIHQpKGR8fGYmJmUubXVzdEJlVmlld2VkKHMsbykmJmUubXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoaCxuKXx8cCYmZS5tdXN0QmVQcmludGVkKHMpKSYmbS5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsaSxhLHMpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2kubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKG0pLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBpPSExLGE9ITE7Zm9yKGNvbnN0e29wTGlzdDpyLHNlcGFyYXRlRm9ybTpzLHNlcGFyYXRlQ2FudmFzOm59b2YgdCl7ZS5hZGRPcExpc3Qocik7aXx8PXM7YXx8PW59ZS5mbHVzaCghMCx7Zm9ybTppLGNhbnZhczphfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cn0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbj10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSksbz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtnLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbcyxuLG9dKTtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpnLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cix2aWV3Qm94OnRoaXMudmlldyxsYW5nOmN9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztjb25zdCB0PWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX3BhcnNlU3RydWN0VHJlZSIsW2VdKTtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0LCJzZXJpYWxpemFibGUiKX1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IFN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSh0aGlzLnJlZik7cmV0dXJuIHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxpKXtjb25zdCBhPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gYTtjb25zdCByPVtdLHM9W107bGV0IG47Y29uc3Qgbz0hIShpJmcpLGg9ISEoaSZjKSxDPSEhKGkmbCk7Zm9yKGNvbnN0IGkgb2YgYSl7Y29uc3QgYT1vfHxoJiZpLnZpZXdhYmxlOyhhfHxDJiZpLnByaW50YWJsZSkmJnIucHVzaChpLmRhdGEpO2lmKGkuaGFzVGV4dENvbnRlbnQmJmEpe258fD1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtzLnB1c2goaS5leHRyYWN0VGV4dENvbnRlbnQobix0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApfSkpKX19YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIHJ9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJBbm5vdHMiKTtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYXJzZWRBbm5vdGF0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxpXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IGE9aT8ub3JwaGFuRmllbGRzLHI9W107Zm9yKGNvbnN0IGkgb2YgZSlyLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixpLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsYSx0aGlzLnJlZikuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYF9wYXJzZWRBbm5vdGF0aW9uczogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtjb25zdCBzPVtdO2xldCBuLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocikpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8obnx8PVtdKS5wdXNoKGUpOnMucHVzaChlKSk7byYmcy5wdXNoKC4uLm8pO24mJnMucHVzaCguLi5uKTtyZXR1cm4gc30pKSl9Z2V0IGpzQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIixjb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCx5QSkpfX1jb25zdCBybz1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxzbz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLG5vPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsaT0xMDI0LGE9ITEpe2NvbnN0IHI9dC5sZW5ndGgscz1lLnBlZWtCeXRlcyhpKSxuPXMubGVuZ3RoLXI7aWYobjw9MClyZXR1cm4hMTtpZihhKXtjb25zdCBpPXItMTtsZXQgYT1zLmxlbmd0aC0xO2Zvcig7YT49aTspe2xldCBuPTA7Zm9yKDtuPHImJnNbYS1uXT09PXRbaS1uXTspbisrO2lmKG4+PXIpe2UucG9zKz1hLWk7cmV0dXJuITB9YS0tfX1lbHNle2xldCBpPTA7Zm9yKDtpPD1uOyl7bGV0IGE9MDtmb3IoO2E8ciYmc1tpK2FdPT09dFthXTspYSsrO2lmKGE+PXIpe2UucG9zKz1pO3JldHVybiEwfWkrK319cmV0dXJuITF9Y2xhc3MgUERGRG9jdW1lbnR7Y29uc3RydWN0b3IoZSx0KXtpZih0Lmxlbmd0aDw9MCl0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IFhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgaT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKytpLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLG5vKSl7ZS5za2lwKDYpO2xldCBpPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShpKTspe2UucG9zKys7aT1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IGk9MTAyNCxhPXNvLmxlbmd0aDtsZXQgcj0hMSxzPWUuZW5kO2Zvcig7IXImJnM+MDspe3MtPWktYTtzPDAmJihzPTApO2UucG9zPXM7cj1maW5kKGUsc28saSwhMCl9aWYocil7ZS5za2lwKDkpO2xldCBpO2Rve2k9ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKGkpKTtsZXQgYT0iIjtmb3IoO2k+PTMyJiZpPD01Nzspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUoaSk7aT1lLmdldEJ5dGUoKX10PXBhcnNlSW50KGEsMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxybykpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHJvLmxlbmd0aCk7bGV0IHQsaT0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmaS5sZW5ndGg8NzspaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTttdC50ZXN0KGkpP3RoaXMuX3ZlcnNpb249aTp3YXJuKGBJbnZhbGlkIFBERiBoZWFkZXIgdmVyc2lvbjogJHtpfWApfXBhcnNlU3RhcnRYUmVmKCl7dGhpcy54cmVmLnNldFN0YXJ0WFJlZih0aGlzLnN0YXJ0WFJlZil9Z2V0IG51bVBhZ2VzKCl7bGV0IGU9MDtlPXRoaXMuY2F0YWxvZy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLmNhdGFsb2cubnVtUGFnZXM6dGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXROdW1QYWdlcygpOnRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dGhpcy5jYXRhbG9nLm51bVBhZ2VzO3JldHVybiBzaGFkb3codGhpcywibnVtUGFnZXMiLGUpfV9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUsdD0wKXtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXt3YXJuKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgaT1pc05hbWUoZS5nZXQoIkZUIiksIlNpZyIpLGE9ZS5nZXQoIlJlY3QiKSxyPUFycmF5LmlzQXJyYXkoYSkmJmEuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGkmJnJ9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksaT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXtpWyJ4ZHA6eGRwIl09dDtyZXR1cm4gaX1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTIpe2xldCByO3I9MD09PWU/InhkcDp4ZHAiOmU9PT1hLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFpLmhhc093blByb3BlcnR5KHIpKWNvbnRpbnVlO2NvbnN0IHM9dGhpcy54cmVmLmZldGNoSWZSZWYodFtlKzFdKTtzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXMuaXNFbXB0eSYmKGlbcl09cyl9cmV0dXJuIGl9Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgaT1lW3RdO2lmKGkpdHJ5e2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGkuZ2V0U3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG5ldyBEYXRhc2V0UmVhZGVyKHtbdF06ZX0pKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoYSl0cnl7dFtpXT1zdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYUZhY3RvcnkiLGU/bmV3IFhGQUZhY3RvcnkoZSk6bnVsbCl9Z2V0IGlzUHVyZVhmYSgpe3JldHVybiEhdGhpcy54ZmFGYWN0b3J5JiZ0aGlzLnhmYUZhY3RvcnkuaXNWYWxpZCgpfWdldCBodG1sRm9yWGZhKCl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0UGFnZXMoKTpudWxsfWFzeW5jIGxvYWRYZmFJbWFnZXMoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtpZighZSlyZXR1cm47Y29uc3QgdD1lLmdldEtleXMoKSxpPW5ldyBPYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgaS5sb2FkKCk7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoaSk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuc2V0KGksdC5nZXRCeXRlcygpKX10aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKGEpfWFzeW5jIGxvYWRYZmFGb250cyhlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIik7aWYoIWkpcmV0dXJuO2NvbnN0IGE9YXdhaXQgaS5nZXRBc3luYygiRFIiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1uZXcgT2JqZWN0TG9hZGVyKGEsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCByLmxvYWQoKTtjb25zdCBzPWEuZ2V0KCJGb250Iik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zKTtuLnVzZVN5c3RlbUZvbnRzPSExO2NvbnN0IG89bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6LTEsaWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5jYXRhbG9nLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuY2F0YWxvZy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLmNhdGFsb2cuc3RhbmRhcmRGb250RGF0YUNhY2hlLG9wdGlvbnM6bn0pLGc9bmV3IE9wZXJhdG9yTGlzdCxjPVtdLGw9e2dldCBmb250KCl7cmV0dXJuIGMuYXQoLTEpfSxzZXQgZm9udChlKXtjLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxoPVtdO2Zvcihjb25zdFtlLGldb2Ygcyl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmgucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsbCxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwoaCk7Y29uc3QgQz10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIUMpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2gubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBRPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgQylnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fFEuYWRkKGUpO1Euc2l6ZSYmQy5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIEMpaWYoIVEuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtoLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LGwscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGgpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLFEpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IGksYTtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7aT1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKGE9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBpPWVvKHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZSgwLDEwMjQpLDAsMTAyNCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaW5nZXJwcmludHMiLFt0b0hleFV0aWwoaSksYT90b0hleFV0aWwoYSk6bnVsbF0pfWFzeW5jIF9nZXRMaW5lYXJpemF0aW9uUGFnZShlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjppLHhyZWY6YX09dGhpcyxyPVJlZi5nZXQoaS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCBhLmZldGNoQXN5bmMocik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBpPWUuZ2V0UmF3KCJUeXBlIik7aSBpbnN0YW5jZW9mIFJlZiYmKGk9YXdhaXQgYS5mZXRjaEFzeW5jKGkpKTtpZihpc05hbWUoaSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocil8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChyLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHIpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChyLDApO3JldHVybltlLHJdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChpKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2kubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6aSxsaW5lYXJpemF0aW9uOmEseGZhRmFjdG9yeTpyfT10aGlzO2xldCBzO3M9cj9Qcm9taXNlLnJlc29sdmUoW0RpY3QuZW1wdHksbnVsbF0pOmE/LnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6aS5nZXRQYWdlRGljdChlKTtzPXMudGhlbigoKFt0LGFdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOmEsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6aS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTppLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmkuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6aS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTppLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0Omkubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OnJ9KSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKTtyZXR1cm4gc31hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoMCk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7dGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6aX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IGE7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjthPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYoYTw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKGEtMSl9Y2F0Y2gocil7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShhLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHIgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke2F9LmApO2xldCBzO3RyeXtzPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW2Escl1db2Ygcyl7bGV0IHM7aWYoYSBpbnN0YW5jZW9mIEVycm9yKXtzPVByb21pc2UucmVqZWN0KGEpO3MuY2F0Y2goKCgpPT57fSkpfWVsc2Ugcz1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6aSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxzKX10LnNldEFjdHVhbE51bVBhZ2VzKHMuc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjXyhlLHQsaSxhLHIscyxuKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShpIGluc3RhbmNlb2YgUmVmKXx8cy5oYXMoaSkpcmV0dXJuO3MucHV0KGkpO2NvbnN0IGc9YXdhaXQgby5mZXRjaEFzeW5jKGkpO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZihnLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGcuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBpPWc7Zm9yKDs7KXtpPWkuZ2V0UmF3KCJQYXJlbnQiKXx8dDtpZihpIGluc3RhbmNlb2YgUmVmKXtpZihzLmhhcyhpKSlicmVhaztpPWF3YWl0IG8uZmV0Y2hBc3luYyhpKX1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihpLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGkuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YDticmVha319fXQmJiFnLmhhcygiUGFyZW50IikmJmlzTmFtZShnLmdldCgiU3VidHlwZSIpLCJXaWRnZXQiKSYmbi5wdXQoaSx0KTthLmhhcyhlKXx8YS5zZXQoZSxbXSk7YS5nZXQoZSkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxpLHIsbnVsbCwhMCxuLG51bGwpLnRoZW4oKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7aWYoIWcuaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IGM9YXdhaXQgZy5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYykpZm9yKGNvbnN0IHQgb2YgYylhd2FpdCB0aGlzLiNfKGUsaSx0LGEscixzLG4pfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKChhc3luYyBlPT57aWYoIWUuaGFzRmllbGRzKXJldHVybiBudWxsO2NvbnN0W3QsaV09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIildKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBSZWZTZXQscj1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxuPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhd2FpdCBpLmdldEFzeW5jKCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNfKCIiLG51bGwsZSxzLHQsYSxuKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgcylvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigodD0+eyh0PXQuZmlsdGVyKChlPT4hIWUpKSkubGVuZ3RoPjAmJihyW2VdPXQpfSkpKTthd2FpdCBQcm9taXNlLmFsbChvKTtyZXR1cm57YWxsRmllbGRzOnIsb3JwaGFuRmllbGRzOm59fSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0LmFsbEZpZWxkcykuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtPy5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkoZSl8fDA9PT1lLmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSlpIGluc3RhbmNlb2YgUmVmJiZ0LnB1c2goaS50b1N0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLHQubGVuZ3RoP3Q6bnVsbCl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7ZS5ldmFsdWF0b3JPcHRpb25zLmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBvbz0xLGdvPTIsSW89MSxjbz0yLGxvPTMsaG89NCxDbz01LEJvPTYsUW89NyxFbz04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybiBlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjej1uZXcgQWJvcnRDb250cm9sbGVyO2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1pO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTtpLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuIyQuYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI3ouc2lnbmFsfSl9IyQoe2RhdGE6ZX0pe2lmKGUudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYoZS5zdHJlYW0pe3RoaXMuI0FBKGUpO3JldHVybn1pZihlLmNhbGxiYWNrKXtjb25zdCB0PWUuY2FsbGJhY2tJZCxpPXRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAke3R9YCk7ZGVsZXRlIHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbdF07aWYoZS5jYWxsYmFjaz09PW9vKWkucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PWdvKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjYWxsYmFjayBjYXNlIik7aS5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpfXJldHVybn1jb25zdCB0PXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl07aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogJHtlLmFjdGlvbn1gKTtpZihlLmNhbGxiYWNrSWQpe2NvbnN0IGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmo7UHJvbWlzZS50cnkodCxlLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsY2FsbGJhY2s6b28sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9KSwoZnVuY3Rpb24odCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxjYWxsYmFjazpnbyxjYWxsYmFja0lkOmUuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfWVsc2UgZS5zdHJlYW1JZD90aGlzLiNlQShlKTp0KGUuZGF0YSl9b24oZSx0KXtjb25zdCBpPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihpW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTtpW2VdPXR9c2VuZChlLHQsaSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0saSl9c2VuZFdpdGhQcm9taXNlKGUsdCxpKXtjb25zdCBhPXRoaXMuY2FsbGJhY2tJZCsrLHI9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1thXT1yO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDphLGRhdGE6dH0saSl9Y2F0Y2goZSl7ci5yZWplY3QoZSl9cmV0dXJuIHIucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsaSxhKXtjb25zdCByPXRoaXMuc3RyZWFtSWQrKyxzPXRoaXMuc291cmNlTmFtZSxuPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Omk9Pntjb25zdCBnPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6aSxzdGFydENhbGw6ZyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixhY3Rpb246ZSxzdHJlYW1JZDpyLGRhdGE6dCxkZXNpcmVkU2l6ZTppLmRlc2lyZWRTaXplfSxhKTtyZXR1cm4gZy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpCbyxzdHJlYW1JZDpyLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06SW8sc3RyZWFtSWQ6cixyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxpKX0jZUEoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpobyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmxvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkNvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87UHJvbWlzZS50cnkobixlLmRhdGEsbykudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSl9I0FBKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIEVvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFFvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBCbzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7UHJvbWlzZS50cnkobi5vblB1bGx8fG9uRm4pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06UW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO2JyZWFrO2Nhc2UgaG86YXNzZXJ0KHMsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihzLmlzQ2xvc2VkKWJyZWFrO3MuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgbG86YXNzZXJ0KHMsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmlzQ2xvc2VkPSEwO3MuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBDbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3RBKHMsdCk7YnJlYWs7Y2FzZSBjbzplLnN1Y2Nlc3M/cy5jYW5jZWxDYWxsLnJlc29sdmUoKTpzLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiN0QShzLHQpO2JyZWFrO2Nhc2UgSW86aWYoIW4pYnJlYWs7Y29uc3Qgbz13cmFwUmVhc29uKGUucmVhc29uKTtQcm9taXNlLnRyeShuLm9uQ2FuY2VsfHxvbkZuLG8pLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Y28sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KG8pO24uaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjdEEoZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuI3o/LmFib3J0KCk7dGhpcy4jej1udWxsfX1hc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsaSx7ZW5jcnlwdDphPW51bGx9KXtjb25zdCByPWE/LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik7aS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdCh0LGkscik6dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgd3JpdGVTdHJlYW0odCxpLHIpOihBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZhd2FpdCB3cml0ZUFycmF5KHQsaSxyKTtpLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGkpe3QucHVzaCgiPDwiKTtmb3IoY29uc3QgYSBvZiBlLmdldEtleXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShhKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShlLmdldFJhdyhhKSx0LGkpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsaSl7bGV0IGE9ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6cn09ZSxbcyxuXT1hd2FpdCBQcm9taXNlLmFsbChbci5nZXRBc3luYygiRmlsdGVyIiksci5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89aXNOYW1lKEFycmF5LmlzQXJyYXkocyk/YXdhaXQgci54cmVmLmZldGNoSWZSZWZBc3luYyhzWzBdKTpzLCJGbGF0ZURlY29kZSIpO2lmKGEubGVuZ3RoPj0yNTZ8fG8pdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO2F3YWl0IHQucmVhZHk7dC53cml0ZShhKS50aGVuKChhc3luYygpPT57YXdhaXQgdC5yZWFkeTthd2FpdCB0LmNsb3NlKCl9KSkuY2F0Y2goKCgpPT57fSkpO2NvbnN0IGk9YXdhaXQgbmV3IFJlc3BvbnNlKGUucmVhZGFibGUpLmFycmF5QnVmZmVyKCk7YT1uZXcgVWludDhBcnJheShpKTtsZXQgZyxjO2lmKHMpe2lmKCFvKXtnPUFycmF5LmlzQXJyYXkocyk/W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLnNdOltOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxzXTtuJiYoYz1BcnJheS5pc0FycmF5KG4pP1tudWxsLC4uLm5dOltudWxsLG5dKX19ZWxzZSBnPU5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpO2cmJnIuc2V0KCJGaWx0ZXIiLGcpO2MmJnIuc2V0KCJEZWNvZGVQYXJtcyIsYyl9Y2F0Y2goZSl7aW5mbyhgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWxldCBnPWJ5dGVzVG9TdHJpbmcoYSk7aSYmKGc9aS5lbmNyeXB0U3RyaW5nKGcpKTtyLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7YXdhaXQgd3JpdGVEaWN0KHIsdCxpKTt0LnB1c2goIiBzdHJlYW1cbiIsZywiXG5lbmRzdHJlYW0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxpKXt0LnB1c2goIlsiKTtsZXQgYT0hMDtmb3IoY29uc3QgciBvZiBlKXthP2E9ITE6dC5wdXNoKCIgIik7YXdhaXQgd3JpdGVWYWx1ZShyLHQsaSl9dC5wdXNoKCJdIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsaSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdC5wdXNoKGAvJHtlc2NhcGVQREZOYW1lKGUubmFtZSl9YCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKXx8QXJyYXlCdWZmZXIuaXNWaWV3KGUpKWF3YWl0IHdyaXRlQXJyYXkoZSx0LGkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtpJiYoZT1pLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaChudW1iZXJUb1N0cmluZyhlKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LGkpOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKGUsdCxpKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGksYSl7Zm9yKGxldCByPXQraS0xO3I+aS0xO3ItLSl7YVtyXT0yNTUmZTtlPj49OH1yZXR1cm4gaSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaVt0K2FdPTI1NSZlLmNoYXJDb2RlQXQoYSl9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmkseHJlZjphfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBpPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTphfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9cGFyc2VYRkFQYXRoKHQpO2xldCBzPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUociwwKTshcyYmci5sZW5ndGg+MSYmKHM9aS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbci5hdCgtMSldLDApKTtzP3MuY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KGEpP2EubWFwKChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsYSldOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgYT1bXTtpLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpO3JldHVybiBhLmpvaW4oIiIpfShhLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksaSl9Y29uc3Qgcj1uZXcgU3RyaW5nU3RyZWFtKGUpO3IuZGljdD1uZXcgRGljdChhKTtyLmRpY3Quc2V0KCJUeXBlIixOYW1lLmdldCgiRW1iZWRkZWRGaWxlIikpO2kucHV0KHQse2RhdGE6cn0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOml9b2YgZSlpLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGkubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGkpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBhPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBpPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIscj1baS50b1N0cmluZygpLGEsZS50b1N0cmluZygpXTtsZXQgcz1yLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSl7ci5wdXNoKGUpO3MrPWUubGVuZ3RofWNvbnN0IG49bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG89MDtmb3IoY29uc3QgZSBvZiByKXt3cml0ZVN0cmluZyhlLG8sbik7bys9ZS5sZW5ndGh9cmV0dXJuIGJ5dGVzVG9TdHJpbmcoZW8obikpfShlLHQpO2kuc2V0KCJJRCIsW3QuZmlsZUlkc1swXSxhXSl9fWFzeW5jIGZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LGNoYW5nZXM6aSx4cmVmOmE9bnVsbCxoYXNYZmE6cj0hMSx4ZmFEYXRhc2V0c1JlZjpzPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTpuPSExLG5lZWRBcHBlYXJhbmNlczpvLGFjcm9Gb3JtUmVmOmc9bnVsbCxhY3JvRm9ybTpjPW51bGwseGZhRGF0YTpsPW51bGwsdXNlWHJlZlN0cmVhbTpoPSExfSl7YXdhaXQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQWNyb2Zvcm0oe3hyZWY6ZSxhY3JvRm9ybTp0LGFjcm9Gb3JtUmVmOmksaGFzWGZhOmEsaGFzWGZhRGF0YXNldHNFbnRyeTpyLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm4sY2hhbmdlczpvfSl7IWF8fHJ8fHN8fHdhcm4oIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIW4mJighYXx8IXN8fHIpKXJldHVybjtjb25zdCBnPXQuY2xvbmUoKTtpZihhJiYhcil7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLHMpO2cuc2V0KCJYRkEiLGUpfW4mJmcuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtvLnB1dChpLHtkYXRhOmd9KX0oe3hyZWY6YSxhY3JvRm9ybTpjLGFjcm9Gb3JtUmVmOmcsaGFzWGZhOnIsaGFzWGZhRGF0YXNldHNFbnRyeTpuLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm8sY2hhbmdlczppfSk7ciYmdXBkYXRlWEZBKHt4ZmFEYXRhOmwseGZhRGF0YXNldHNSZWY6cyxjaGFuZ2VzOmkseHJlZjphfSk7Y29uc3QgQz1mdW5jdGlvbiBnZXRUcmFpbGVyRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgRGljdChudWxsKTthLnNldCgiUHJldiIsZS5zdGFydFhSZWYpO2NvbnN0IHI9ZS5uZXdSZWY7aWYoaSl7dC5wdXQocix7ZGF0YToiIn0pO2Euc2V0KCJTaXplIixyLm51bSsxKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhSZWYiKSl9ZWxzZSBhLnNldCgiU2l6ZSIsci5udW0pO251bGwhPT1lLnJvb3RSZWYmJmEuc2V0KCJSb290IixlLnJvb3RSZWYpO251bGwhPT1lLmluZm9SZWYmJmEuc2V0KCJJbmZvIixlLmluZm9SZWYpO251bGwhPT1lLmVuY3J5cHRSZWYmJmEuc2V0KCJFbmNyeXB0IixlLmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LGksaCksUT1bXSxFPWF3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlcyhlLHQsaT1bXSl7Y29uc3QgYT1bXTtmb3IoY29uc3Rbcix7ZGF0YTpzfV1vZiBlLml0ZW1zKCkpaWYobnVsbCE9PXMmJiJzdHJpbmciIT10eXBlb2Ygcyl7YXdhaXQgd3JpdGVPYmplY3QocixzLGksdCk7YS5wdXNoKHtyZWY6cixkYXRhOmkuam9pbigiIil9KTtpLmxlbmd0aD0wfWVsc2UgYS5wdXNoKHtyZWY6cixkYXRhOnN9KTtyZXR1cm4gYS5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpfShpLGEsUSk7bGV0IHU9ZS5sZW5ndGg7Y29uc3QgZD1lLmF0KC0xKTtpZigxMCE9PWQmJjEzIT09ZCl7US5wdXNoKCJcbiIpO3UrPTF9Zm9yKGNvbnN0e2RhdGE6ZX1vZiBFKW51bGwhPT1lJiZRLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGksYSxyKXtjb25zdCBzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7bGV0IGk7bj1NYXRoLm1heChuLHQpO2lmKG51bGwhPT1hKXtpPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtzLnB1c2goWzEsdCxpXSk7dCs9YS5sZW5ndGh9ZWxzZXtpPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3MucHVzaChbMCwwLGldKX1vPU1hdGgubWF4KG8saSl9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKGkpKTtjb25zdCBnPVsxLGdldFNpemVJbkJ5dGVzKG4pLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsZyk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgYz1nLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksbD1uZXcgVWludDhBcnJheShjKnMubGVuZ3RoKSxoPW5ldyBTdHJlYW0obCk7aC5kaWN0PWE7bGV0IEM9MDtmb3IoY29uc3RbZSx0LGldb2Ygcyl7Qz13cml0ZUludChlLGdbMF0sQyxsKTtDPXdyaXRlSW50KHQsZ1sxXSxDLGwpO0M9d3JpdGVJbnQoaSxnWzJdLEMsbCl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxyLHt9KTtyLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LHUsRSxDLFEpOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsaSxhLHIpe3IucHVzaCgieHJlZlxuIik7Y29uc3Qgcz1nZXRJbmRleGVzKGkpO2xldCBuPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtpZihlLm51bT09PXNbbl0pe3IucHVzaChgJHtzW25dfSAke3NbbisxXX1cbmApO24rPTJ9aWYobnVsbCE9PWEpe3IucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSByLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtyLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHIpO3IucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCx1LEUsQyxRKSk7Y29uc3QgZj1RLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLGUubGVuZ3RoKSxwPW5ldyBVaW50OEFycmF5KGYpO3Auc2V0KGUpO2xldCBtPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIFEpe3dyaXRlU3RyaW5nKGUsbSxwKTttKz1lLmxlbmd0aH1yZXR1cm4gcH1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgaT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChpKTtyZXR1cm4gaX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSkpfWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlYWR5fWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fbXNnSGFuZGxlcj1pO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IGE9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPWEuZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWN7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFpJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIHNlbGYmJnRoaXMuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfXN0YXRpYyBzZXR1cChlLHQpe2xldCBpPSExO2Uub24oInRlc3QiLCh0PT57aWYoIWkpe2k9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSkpO2Uub24oImNvbmZpZ3VyZSIsKGU9PnshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKEl0PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGU9PnRoaXMuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCkpKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC4xMC4zOCI7aWYoZyE9PWMpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Z30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtjfSIuYCk7Y29uc3QgbD1bXTtmb3IoY29uc3QgZSBpbltdKWwucHVzaChlKTtpZihsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIitsLmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IGg9bysiX3dvcmtlciI7bGV0IEM9bmV3IE1lc3NhZ2VIYW5kbGVyKGgsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBpLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFtpLmxvYWRYZmFGb250cyhDLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksaS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygibnVtUGFnZXMiKSxpLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cixodG1sRm9yWGZhOnQ/YXdhaXQgaS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO0Muc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7Qy5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2kudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTtDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsd3JhcFJlYXNvbihlKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pKTpvbkZhaWx1cmUoZSl9KSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmkscmFuZ2VDaHVua1NpemU6YSxsZW5ndGg6cyxkb2NCYXNlVXJsOm4sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjfSl7Y29uc3QgbD17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bixkb2NJZDpvLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6YyxoYW5kbGVyOkMsbGVuZ3RoOnMscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfTtpZihlKXtsLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGwpfWNvbnN0IGg9bmV3IFBERldvcmtlclN0cmVhbShDKSxRPWguZ2V0RnVsbFJlYWRlcigpLEU9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IHUsZD1bXSxmPTA7US5oZWFkZXJzUmVhZHkudGhlbigoZnVuY3Rpb24oKXtpZihRLmlzUmFuZ2VTdXBwb3J0ZWQpe2wuc291cmNlPWg7bC5sZW5ndGg9US5jb250ZW50TGVuZ3RoO2wuZGlzYWJsZUF1dG9GZXRjaHx8PVEuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7dT1uZXcgTmV0d29ya1BkZk1hbmFnZXIobCk7Zm9yKGNvbnN0IGUgb2YgZCl1LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7ZD1bXTtFLnJlc29sdmUodSk7cj1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOml9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe2lmKCF1KXtjb25zdCBlPWFycmF5QnVmZmVyc1RvQnl0ZXMoZCk7ZD1bXTtzJiZlLmxlbmd0aCE9PXMmJndhcm4oInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO2wuc291cmNlPWU7dT1uZXcgTG9jYWxQZGZNYW5hZ2VyKGwpO0UucmVzb2x2ZSh1KX1yPW51bGw7cmV0dXJufWYrPWUuYnl0ZUxlbmd0aDtRLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxDLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmYsdG90YWw6TWF0aC5tYXgoZixRLmNvbnRlbnRMZW5ndGh8fDApfSk7dT91LnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6ZC5wdXNoKGUpO1EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTtRLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7RS5yZWplY3QoZSk7cj1udWxsfSkpO3I9ZT0+e2guY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBFLnByb21pc2V9KShlKS50aGVuKChmdW5jdGlvbihlKXtpZihhKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1pPWU7aS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKChlPT57Qy5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSkpfSkpLnRoZW4ocGRmTWFuYWdlclJlYWR5LG9uRmFpbHVyZSl9Qy5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmUoZSwicm90YXRlIiksaS5lbnN1cmUoZSwicmVmIiksaS5lbnN1cmUoZSwidXNlclVuaXQiKSxpLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGksYV0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDppLHZpZXc6YX19KSl9KSl9KSk7Qy5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KSk7Qy5vbigiR2V0RGVzdGluYXRpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KSk7Qy5vbigiR2V0RGVzdGluYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2UuaWRdKX0pKTtDLm9uKCJHZXRQYWdlTGFiZWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSkpO0Mub24oIkdldFBhZ2VMYXlvdXQiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7Qy5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSkpO0Mub24oIkdldFZpZXdlclByZWZlcmVuY2VzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pKTtDLm9uKCJHZXRPcGVuQWN0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSkpO0Mub24oIkdldEF0dGFjaG1lbnRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pKTtDLm9uKCJHZXREb2NKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pKTtDLm9uKCJHZXRQYWdlSlNBY3Rpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwianNBY3Rpb25zIil9KSl9KSk7Qy5vbigiR2V0T3V0bGluZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSkpO0Mub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSkpO0Mub24oIkdldFBlcm1pc3Npb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pKTtDLm9uKCJHZXRNZXRhZGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGkuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKV0pfSkpO0Mub24oIkdldE1hcmtJbmZvIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTtDLm9uKCJHZXREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVzfSkpfSkpO0Mub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiBpLmdldEFubm90YXRpb25zRGF0YShDLGEsdCkudGhlbigoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7cmV0dXJuIGV9KSwoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7dGhyb3cgZX0pKX0pKX0pKTtDLm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCkpfSkpO0Mub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSk7Qy5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpO0Mub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOmEsZmlsZW5hbWU6cn0pe2NvbnN0IHM9W2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLGkuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksaS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGkuZW5zdXJlRG9jKCJ4cmVmIiksaS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxpLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLG49bmV3IFJlZlNldENhY2hlLG89W10sZz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYSksW2MsbCxoLFEsRSx1LGRdPWF3YWl0IFByb21pc2UuYWxsKHMpLGY9RS50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCBwO2lmKGcpe2Q/YXdhaXQgZC5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmkseHJlZjpFLG5ld0Fubm90YXRpb25zQnlQYWdlOmd9KSYmKHA9ZCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpnfSkmJihwPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoYS52YWx1ZXMoKSxFLGkuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1wP286W107Zm9yKGNvbnN0W2Escl1vZiBnKXQucHVzaChpLmdldFBhZ2UoYSkudGhlbigodD0+e2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmUgKGVkaXRvcik6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMoQyxpLHIsZSxuKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO251bGw9PT1wP28ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYygpPT57YXdhaXQgU3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6Zyx4cmVmOkUsY2F0YWxvZ1JlZjpmLHBkZk1hbmFnZXI6aSxjaGFuZ2VzOm59KX0pKSk6cCYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jKCk9Pnthd2FpdCBwLnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmcscGRmTWFuYWdlcjppLGNoYW5nZXM6bn0pfSkpKX1pZihlKW8ucHVzaChpLnNlcmlhbGl6ZVhmYURhdGEoYSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2goaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmU6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhpKTtyZXR1cm4gdC5zYXZlKEMsaSxhLG4pLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKX0pKX0pKSk7Y29uc3QgbT1hd2FpdCBQcm9taXNlLmFsbChvKTtsZXQgeT1udWxsO2lmKGUpe3k9bVswXTtpZigheSlyZXR1cm4gYy5ieXRlc31lbHNlIGlmKDA9PT1uLnNpemUpcmV0dXJuIGMuYnl0ZXM7Y29uc3Qgdz1oJiZsIGluc3RhbmNlb2YgRGljdCYmbi52YWx1ZXMoKS5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLGI9bCBpbnN0YW5jZW9mIERpY3QmJmwuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgRD1udWxsLFM9ITE7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGxldCBlPTAsdD1iLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09YltlXSl7RD1iW2UrMV07Uz0hMH1udWxsPT09RCYmKEQ9RS5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBiJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgaz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKEUudHJhaWxlcil7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9RS50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtpLGFdb2YgdCkic3RyaW5nIj09dHlwZW9mIGEmJihlW2ldPXN0cmluZ1RvUERGU3RyaW5nKGEpKTtrPXtyb290UmVmOmYsZW5jcnlwdFJlZjpFLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOkUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpFLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mbzplLGZpbGVJZHM6RS50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6dT9ROkUubGFzdFhSZWZTdHJlYW1Qb3M/P1EsZmlsZW5hbWU6cn19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6Yy5ieXRlcyx4cmVmSW5mbzprLGNoYW5nZXM6bix4cmVmOkUsaGFzWGZhOiEhYix4ZmFEYXRhc2V0c1JlZjpELGhhc1hmYURhdGFzZXRzRW50cnk6UyxuZWVkQXBwZWFyYW5jZXM6dyxhY3JvRm9ybVJlZjpoLGFjcm9Gb3JtOmwseGZhRGF0YTp5LHVzZVhyZWZTdHJlYW06aXNEaWN0KEUudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntFLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7Qy5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUucGFnZUluZGV4O2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhyKTtjb25zdCBzPW4+PWJBP0RhdGUubm93KCk6MDtpLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpDLHNpbms6dCx0YXNrOnIsaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZSxtb2RpZmllZElkczplLm1vZGlmaWVkSWRzfSkudGhlbigoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhyKTtzJiZpbmZvKGBwYWdlPSR7YSsxfSAtIGdldE9wZXJhdG9yTGlzdDogdGltZT0ke0RhdGUubm93KCktc31tcywgbGVuPSR7ZS5sZW5ndGh9YCk7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2socik7ci50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO0Mub24oIkdldFRleHRDb250ZW50IiwoZnVuY3Rpb24oZSx0KXtjb25zdHtwYWdlSW5kZXg6YSxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9PWU7aS5nZXRQYWdlKGEpLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrYSk7c3RhcnRXb3JrZXJUYXNrKGkpO2NvbnN0IG89bj49YkE/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOkMsdGFzazppLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDpyLGRpc2FibGVOb3JtYWxpemF0aW9uOnN9KS50aGVuKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSk7byYmaW5mbyhgcGFnZT0ke2ErMX0gLSBnZXRUZXh0Q29udGVudDogdGltZT1gKyhEYXRlLm5vdygpLW8pKyJtcyIpO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtDLm9uKCJHZXRTdHJ1Y3RUcmVlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlKGUsImdldFN0cnVjdFRyZWUiKX0pKX0pKTtDLm9uKCJGb250RmFsbGJhY2siLChmdW5jdGlvbihlKXtyZXR1cm4gaS5mb250RmFsbGJhY2soZS5pZCxDKX0pKTtDLm9uKCJDbGVhbnVwIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2xlYW51cCghMCl9KSk7Qy5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24oZSl7YT0hMDtjb25zdCB0PVtdO2lmKGkpe2kudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWkuY2xlYW51cCgpO3QucHVzaChlKTtpPW51bGx9ZWxzZSBjbGVhckdsb2JhbENhY2hlcygpO3I/LihuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7Qy5kZXN0cm95KCk7Qz1udWxsfSkpfSkpO0Mub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7c2V0dXBEb2MoZSk7ZT1udWxsfSkpO3JldHVybiBofXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO3RoaXMuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dmFyIHVvPV9fd2VicGFja19leHBvcnRzX18uV29ya2VyTWVzc2FnZUhhbmRsZXI7ZXhwb3J0e3VvIGFzIFdvcmtlck1lc3NhZ2VIYW5kbGVyfTs=";function Jmt(s,e,t){const i=s.contentWindow.document.createElement("style");i.textContent=`
- @page {
- margin: 3mm;
- size: ${e}pt ${t}pt;
- }
- body {
- margin: 0;
- }
- canvas {
- width: 100%;
- page-break-after: always;
- page-break-before: avoid;
- page-break-inside: avoid;
- }
- `,s.contentWindow.document.head.appendChild(i),s.contentWindow.document.body.style.width="100%"}function Xmt(s){return new Promise(e=>{const t=document.createElement("iframe");t.width="0",t.height="0",t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.border="none",t.style.overflow="hidden",t.onload=()=>e(t),s.appendChild(t)})}function Ymt(s,e){const t=URL.createObjectURL(new Blob([s],{type:"application/pdf"})),i=document.createElement("a");i.href=t,i.download=e,i.style.display="none",document.body.append(i),i.click(),setTimeout(()=>{URL.revokeObjectURL(t),document.body.removeChild(i)},1e3)}function sue(s){for(;s!=null&&s.firstChild;)s.removeChild(s.firstChild)}function RO(s){s==null||s.querySelectorAll("canvas").forEach(e=>{var t;e.width=1,e.height=1,(t=e.getContext("2d"))==null||t.clearRect(0,0,1,1)})}function oue(s){return Object.prototype.hasOwnProperty.call(s,"_pdfInfo")}function LRe({onError:s,onPasswordRequest:e,onProgress:t,source:i}){const n=mE(null),o=mE(null);return gQe(async()=>{const l=Zne(i);if(l){if(oue(l)){n.value=l;return}try{o.value=vmt(l),e&&(o.value.onPassword=(r,a)=>{e({callback:r,isWrongPassword:a===Gmt.INCORRECT_PASSWORD})}),t&&(o.value.onProgress=t),n.value=await o.value.promise}catch(r){if(n.value=null,s)s(r);else throw r}}}),Oc(n,(l,r)=>{r==null||r.destroy()}),eme(()=>{var l,r,a,d;(l=o.value)!=null&&l.onPassword&&(o.value.onPassword=null),(r=o.value)!=null&&r.onProgress&&(o.value.onProgress=null),(a=o.value)==null||a.destroy(),oue(Zne(i))||(d=n.value)==null||d.destroy()}),{doc:n}}var pw={};pw.d=(s,e)=>{for(var t in e)pw.o(e,t)&&!pw.o(s,t)&&Object.defineProperty(s,t,{enumerable:!0,get:e[t]})};pw.o=(s,e)=>Object.prototype.hasOwnProperty.call(s,e);var Oo=globalThis.pdfjsViewer={};pw.d(Oo,{AnnotationLayerBuilder:()=>jRe,DownloadManager:()=>Ept,EventBus:()=>PRe,FindState:()=>fb,GenericL10n:()=>xz,LinkTarget:()=>GF,PDFFindController:()=>Wpt,PDFHistory:()=>Dgt,PDFLinkService:()=>ORe,PDFPageView:()=>gSe,PDFScriptingManager:()=>Kgt,PDFSinglePageViewer:()=>t0t,PDFViewer:()=>WSe,ProgressBar:()=>ipt,RenderingStates:()=>$o,ScrollMode:()=>ls,SimpleLinkService:()=>rne,SpreadMode:()=>La,StructTreeLayerBuilder:()=>aSe,TextLayerBuilder:()=>mSe,XfaLayerBuilder:()=>pSe,parseQueryString:()=>Ez});const zmt="auto",kRe=1,lue=1.1,_mt=.1,Omt=10,SO=0,jmt=1.25,IRe=40,DRe=5,$o={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},YW={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},bp={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},ls={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},La={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};function GRe(s,e,t=!1){let i=s.offsetParent;if(!i){console.error("offsetParent is not set -- cannot scroll");return}let n=s.offsetTop+s.clientTop,o=s.offsetLeft+s.clientLeft;for(;i.clientHeight===i.scrollHeight&&i.clientWidth===i.scrollWidth||t&&(i.classList.contains("markedContent")||getComputedStyle(i).overflow==="hidden");)if(n+=i.offsetTop,o+=i.offsetLeft,i=i.offsetParent,!i)return;e&&(e.top!==void 0&&(n+=e.top),e.left!==void 0&&(o+=e.left,i.scrollLeft=o)),i.scrollTop=n}function Hmt(s,e,t=void 0){const i=function(l){o||(o=window.requestAnimationFrame(function(){o=null;const r=s.scrollLeft,a=n.lastX;r!==a&&(n.right=r>a),n.lastX=r;const d=s.scrollTop,c=n.lastY;d!==c&&(n.down=d>c),n.lastY=d,e(n)}))},n={right:!0,down:!0,lastX:s.scrollLeft,lastY:s.scrollTop,_eventHandler:i};let o=null;return s.addEventListener("scroll",i,{useCapture:!0,signal:t}),t==null||t.addEventListener("abort",()=>window.cancelAnimationFrame(o),{once:!0}),n}function Ez(s){const e=new Map;for(const[t,i]of new URLSearchParams(s))e.set(t.toLowerCase(),i);return e}const rue=/[\x00-\x1F]/g;function gw(s,e=!1){return rue.test(s)?e?s.replaceAll(rue,t=>t==="\0"?"":" "):s.replaceAll("\0",""):s}function BT(s,e,t=0){let i=t,n=s.length-1;if(n<0||!e(s[n]))return s.length;if(e(s[i]))return i;for(;i<n;){const o=i+n>>1,l=s[o];e(l)?n=o:i=o+1}return i}function aue(s){if(Math.floor(s)===s)return[s,1];const e=1/s,t=8;if(e>t)return[1,t];if(Math.floor(e)===e)return[1,e];const i=s>1?e:s;let n=0,o=1,l=1,r=1;for(;;){const d=n+l,c=o+r;if(c>t)break;i<=d/c?(l=d,r=c):(n=d,o=c)}let a;return i-n/o<l/r-i?a=i===s?[n,o]:[o,n]:a=i===s?[l,r]:[r,l],a}function TI(s,e){return s-s%e}function Pmt(s,e,t){if(s<2)return s;let i=e[s].div,n=i.offsetTop+i.clientTop;n>=t&&(i=e[s-1].div,n=i.offsetTop+i.clientTop);for(let o=s-2;o>=0&&(i=e[o].div,!(i.offsetTop+i.clientTop+i.clientHeight<=n));--o)s=o;return s}function Kmt({scrollEl:s,views:e,sortByVisibility:t=!1,horizontal:i=!1,rtl:n=!1}){const o=s.scrollTop,l=o+s.clientHeight,r=s.scrollLeft,a=r+s.clientWidth;function d(Z){const A=Z.div;return A.offsetTop+A.clientTop+A.clientHeight>o}function c(Z){const A=Z.div,N=A.offsetLeft+A.clientLeft,W=N+A.clientWidth;return n?N<a:W>r}const h=[],u=new Set,m=e.length;let p=BT(e,i?c:d);p>0&&p<m&&!i&&(p=Pmt(p,e,o));let g=i?a:-1;for(let Z=p;Z<m;Z++){const A=e[Z],N=A.div,W=N.offsetLeft+N.clientLeft,Q=N.offsetTop+N.clientTop,R=N.clientWidth,M=N.clientHeight,w=W+R,Y=Q+M;if(g===-1)Y>=l&&(g=Y);else if((i?W:Q)>g)break;if(Y<=o||Q>=l||w<=r||W>=a)continue;const G=Math.max(0,o-Q)+Math.max(0,Y-l),P=Math.max(0,r-W)+Math.max(0,w-a),j=(M-G)/M,X=(R-P)/R,ie=j*X*100|0;h.push({id:A.id,x:W,y:Q,view:A,percent:ie,widthPercent:X*100|0}),u.add(A.id)}const b=h[0],f=h.at(-1);return t&&h.sort(function(Z,A){const N=Z.percent-A.percent;return Math.abs(N)>.001?-N:Z.id-A.id}),{first:b,last:f,views:h,ids:u}}function ERe(s){return Number.isInteger(s)&&s%90===0}function qmt(s){return Number.isInteger(s)&&Object.values(ls).includes(s)&&s!==ls.UNKNOWN}function $mt(s){return Number.isInteger(s)&&Object.values(La).includes(s)&&s!==La.UNKNOWN}function vRe(s){return s.width<=s.height}new Promise(function(s){window.requestAnimationFrame(s)});const ept=document.documentElement.style;function tpt(s,e,t){return Math.min(Math.max(s,e),t)}var IF,jR,DF,Y2,HR;class ipt{constructor(e){J(this,IF,null),J(this,jR,null),J(this,DF,0),J(this,Y2,null),J(this,HR,!0),L(this,IF,e.classList),L(this,Y2,e.style)}get percent(){return F(this,DF)}set percent(e){if(L(this,DF,tpt(e,0,100)),isNaN(e)){F(this,IF).add("indeterminate");return}F(this,IF).remove("indeterminate"),F(this,Y2).setProperty("--progressBar-percent",`${F(this,DF)}%`)}setWidth(e){if(!e)return;const t=e.parentNode.offsetWidth-e.offsetWidth;t>0&&F(this,Y2).setProperty("--progressBar-end-offset",`${t}px`)}setDisableAutoFetch(e=5e3){F(this,DF)===100||isNaN(F(this,DF))||(F(this,jR)&&clearTimeout(F(this,jR)),this.show(),L(this,jR,setTimeout(()=>{L(this,jR,null),this.hide()},e)))}hide(){F(this,HR)&&(L(this,HR,!1),F(this,IF).add("hidden"))}show(){F(this,HR)||(L(this,HR,!0),F(this,IF).remove("hidden"))}}IF=new WeakMap,jR=new WeakMap,DF=new WeakMap,Y2=new WeakMap,HR=new WeakMap;function npt(s){let e=ls.VERTICAL,t=La.NONE;switch(s){case"SinglePage":e=ls.PAGE;break;case"OneColumn":break;case"TwoPageLeft":e=ls.PAGE;case"TwoColumnLeft":t=La.ODD;break;case"TwoPageRight":e=ls.PAGE;case"TwoColumnRight":t=La.EVEN;break}return{scrollMode:e,spreadMode:t}}const BI=function(){const s=document.createElement("div");return s.style.width="round(down, calc(1.6666666666666665 * 792px), 1px)",s.style.width==="calc(1320px)"?Math.fround:e=>e}(),mu={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function spt(s){return s<11904}function opt(s){return(s&65408)===0}function lpt(s){return s>=97&&s<=122||s>=65&&s<=90}function rpt(s){return s>=48&&s<=57}function apt(s){return s===32||s===9||s===13||s===10}function dpt(s){return s>=13312&&s<=40959||s>=63744&&s<=64255}function cpt(s){return s>=12448&&s<=12543}function hpt(s){return s>=12352&&s<=12447}function upt(s){return s>=65376&&s<=65439}function mpt(s){return(s&65408)===3584}function LI(s){return spt(s)?opt(s)?apt(s)?mu.SPACE:lpt(s)||rpt(s)||s===95?mu.ALPHA_LETTER:mu.PUNCT:mpt(s)?mu.THAI_LETTER:s===160?mu.SPACE:mu.ALPHA_LETTER:dpt(s)?mu.HAN_LETTER:cpt(s)?mu.KATAKANA_LETTER:hpt(s)?mu.HIRAGANA_LETTER:upt(s)?mu.HALFWIDTH_KATAKANA_LETTER:mu.ALPHA_LETTER}let WO;function ppt(){return WO||(WO=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),WO}const fb={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},gpt=250,bpt=-50,Upt=-400,due={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},cue=new Set([12441,12442,2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,3642,3770,3972,4153,4154,5908,5940,6098,6752,6980,7082,7083,7154,7155,11647,43014,43052,43204,43347,43456,43766,44013,3158,3953,3954,3962,3963,3964,3965,3968,3956]);let VO;const fpt=new RegExp("\\p{M}+","gu"),Fpt=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),Zpt=new RegExp("([^\\p{M}])\\p{M}*$","u"),Apt=new RegExp("^\\p{M}*([^\\p{M}])","u"),Npt=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,hue=new Map,Rpt="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",uue=new Map;let QO=null,yO=null;function CO(s){const e=[];let t;for(;(t=Npt.exec(s))!==null;){let{index:g}=t;for(const b of t[0]){let f=hue.get(b);f||(f=b.normalize("NFD").length,hue.set(b,f)),e.push([f,g++])}}let i;if(e.length===0&&QO)i=QO;else if(e.length>0&&yO)i=yO;else{const g=Object.keys(due).join(""),b=ppt(),f=`([${g}])|([${b}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\p{Ll}-\\n\\p{Lu})|(\\S-\\n)|((?:\\p{Ideographic}|[-ヿ])\\n)|(\\n)`;e.length===0?i=QO=new RegExp(f+"|(\\u0000)","gum"):i=yO=new RegExp(f+`|(${Rpt})`,"gum")}const n=[];for(;(t=fpt.exec(s))!==null;)n.push([t[0].length,t.index]);let o=s.normalize("NFD");const l=[0,0];let r=0,a=0,d=0,c=0,h=0,u=!1;o=o.replace(i,(g,b,f,Z,A,N,W,Q,R,M,w)=>{var Y,G,P;if(w-=c,b){const j=due[b],X=j.length;for(let ie=1;ie<X;ie++)l.push(w-d+ie,d-ie);return d-=X-1,j}if(f){let j=uue.get(f);j||(j=f.normalize("NFKC"),uue.set(f,j));const X=j.length;for(let ie=1;ie<X;ie++)l.push(w-d+ie,d-ie);return d-=X-1,j}if(Z)return u=!0,w+h===((Y=n[r])==null?void 0:Y[1])?++r:(l.push(w-1-d+1,d-1),d-=1,c+=1),l.push(w-d+1,d),c+=1,h+=1,Z.charAt(0);if(A){const j=A.endsWith(`
- `),X=j?A.length-2:A.length;u=!0;let ie=X;w+h===((G=n[r])==null?void 0:G[1])&&(ie-=n[r][0],++r);for(let se=1;se<=ie;se++)l.push(w-1-d+se,d-se);return d-=ie,c+=ie,j?(w+=X-1,l.push(w-d+1,1+d),d+=1,c+=1,h+=1,A.slice(0,X)):A}if(N)return c+=1,h+=1,N.replace(`
- `,"");if(W){const j=W.length-2;return l.push(w-d+j,1+d),d+=1,c+=1,h+=1,W.slice(0,-2)}if(Q){const j=Q.length-1;return l.push(w-d+j,d),c+=1,h+=1,Q.slice(0,-1)}if(R)return l.push(w-d+1,d-1),d-=1,c+=1,h+=1," ";if(w+h===((P=e[a])==null?void 0:P[1])){const j=e[a][0]-1;++a;for(let X=1;X<=j;X++)l.push(w-(d-X),d-X);d-=j,c+=j}return M}),l.push(o.length,d);const m=new Uint32Array(l.length>>1),p=new Int32Array(l.length>>1);for(let g=0,b=l.length;g<b;g+=2)m[g>>1]=l[g],p[g>>1]=l[g+1];return[o,[m,p],u]}function Spt(s,e,t){if(!s)return[e,t];const[i,n]=s,o=e,l=e+t-1;let r=BT(i,h=>h>=o);i[r]>o&&--r;let a=BT(i,h=>h>=l,r);i[a]>l&&--a;const d=o+n[r],c=l+n[a]+1-d;return[d,c]}var xr,bw,PR,fn,xRe,yq,wO,mue,JRe,Cq,pue,gue,kI,wy,bR,bue,MO,TO,II,XRe,BO,LO,My;class Wpt{constructor({linkService:e,eventBus:t,updateMatchesCountOnProgress:i=!0}){J(this,fn),J(this,xr,null),J(this,bw,!0),J(this,PR,0),this._linkService=e,this._eventBus=t,L(this,bw,i),this.onIsPageVisible=null,E(this,fn,yq).call(this),t._on("find",E(this,fn,xRe).bind(this)),t._on("findbarclose",E(this,fn,XRe).bind(this))}get highlightMatches(){return this._highlightMatches}get pageMatches(){return this._pageMatches}get pageMatchesLength(){return this._pageMatchesLength}get selected(){return this._selected}get state(){return F(this,xr)}setDocument(e){this._pdfDocument&&E(this,fn,yq).call(this),e&&(this._pdfDocument=e,this._firstPageCapability.resolve())}scrollMatchIntoView({element:e=null,selectedLeft:t=0,pageIndex:i=-1,matchIndex:n=-1}){if(!this._scrollMatches||!e||n===-1||n!==this._selected.matchIdx||i===-1||i!==this._selected.pageIdx)return;this._scrollMatches=!1;const o={top:bpt,left:t+Upt};GRe(e,o,!0)}match(e,t,i){const n=this._hasDiacritics[i];let o=!1;if(typeof e=="string"?[o,e]=E(this,fn,Cq).call(this,e,n):e=e.sort().reverse().map(h=>{const[u,m]=E(this,fn,Cq).call(this,h,n);return o||(o=u),`(${m})`}).join("|"),!e)return;const{caseSensitive:l,entireWord:r}=F(this,xr),a=`g${o?"u":""}${l?"":"i"}`;e=new RegExp(e,a);const d=[];let c;for(;(c=e.exec(t))!==null;)r&&!E(this,fn,JRe).call(this,t,c.index,c[0].length)||d.push({index:c.index,length:c[0].length});return d}}xr=new WeakMap,bw=new WeakMap,PR=new WeakMap,fn=new WeakSet,xRe=function(s){if(!s)return;const e=this._pdfDocument,{type:t}=s;(F(this,xr)===null||E(this,fn,mue).call(this,s))&&(this._dirtyMatch=!0),L(this,xr,s),t!=="highlightallchange"&&E(this,fn,My).call(this,fb.PENDING),this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||e&&this._pdfDocument!==e)return;E(this,fn,gue).call(this);const i=!this._highlightMatches,n=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),t?this._dirtyMatch?E(this,fn,bR).call(this):t==="again"?(E(this,fn,bR).call(this),i&&F(this,xr).highlightAll&&E(this,fn,wy).call(this)):t==="highlightallchange"?(n?E(this,fn,bR).call(this):this._highlightMatches=!0,E(this,fn,wy).call(this)):E(this,fn,bR).call(this):this._findTimeout=setTimeout(()=>{E(this,fn,bR).call(this),this._findTimeout=null},gpt)})},yq=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],L(this,PR,0),L(this,xr,null),this._selected={pageIdx:-1,matchIdx:-1},this._offset={pageIdx:null,matchIdx:null,wrapped:!1},this._extractTextPromises=[],this._pageContents=[],this._pageDiffs=[],this._hasDiacritics=[],this._matchesCountTotal=0,this._pagesToSearch=null,this._pendingFindMatches=new Set,this._resumePageIdx=null,this._dirtyMatch=!1,clearTimeout(this._findTimeout),this._findTimeout=null,this._firstPageCapability=Promise.withResolvers()},wO=function(){const{query:s}=F(this,xr);return typeof s=="string"?(s!==this._rawQuery&&(this._rawQuery=s,[this._normalizedQuery]=CO(s)),this._normalizedQuery):(s||[]).filter(e=>!!e).map(e=>CO(e)[0])},mue=function(s){var e;const t=s.query,i=F(this,xr).query,n=typeof t;if(n!==typeof i)return!0;if(n==="string"){if(t!==i)return!0}else if(JSON.stringify(t)!==JSON.stringify(i))return!0;switch(s.type){case"again":const o=this._selected.pageIdx+1,l=this._linkService;return o>=1&&o<=l.pagesCount&&o!==l.page&&!(((e=this.onIsPageVisible)==null?void 0:e.call(this,o))??!0);case"highlightallchange":return!1}return!0},JRe=function(s,e,t){let i=s.slice(0,e).match(Zpt);if(i){const n=s.charCodeAt(e),o=i[1].charCodeAt(0);if(LI(n)===LI(o))return!1}if(i=s.slice(e+t).match(Apt),i){const n=s.charCodeAt(e+t-1),o=i[1].charCodeAt(0);if(LI(n)===LI(o))return!1}return!0},Cq=function(s,e){const{matchDiacritics:t}=F(this,xr);let i=!1;s=s.replaceAll(Fpt,(o,l,r,a,d,c)=>l?`[ ]*\\${l}[ ]*`:r?`[ ]*${r}[ ]*`:a?"[ ]+":t?d||c:d?cue.has(d.charCodeAt(0))?d:"":e?(i=!0,`${c}\\p{M}*`):c);const n="[ ]*";return s.endsWith(n)&&(s=s.slice(0,s.length-n.length)),t&&e&&(VO||(VO=String.fromCharCode(...cue)),i=!0,s=`${s}(?=[${VO}]|[^\\p{M}]|$)`),[i,s]},pue=function(s){const e=F(this,fn,wO);if(e.length===0)return;const t=this._pageContents[s],i=this.match(e,t,s),n=this._pageMatches[s]=[],o=this._pageMatchesLength[s]=[],l=this._pageDiffs[s];i==null||i.forEach(({index:a,length:d})=>{const[c,h]=Spt(l,a,d);h&&(n.push(c),o.push(h))}),F(this,xr).highlightAll&&E(this,fn,kI).call(this,s),this._resumePageIdx===s&&(this._resumePageIdx=null,E(this,fn,MO).call(this));const r=n.length;this._matchesCountTotal+=r,F(this,bw)?r>0&&E(this,fn,LO).call(this):++Ad(this,PR)._===this._linkService.pagesCount&&E(this,fn,LO).call(this)},gue=function(){if(this._extractTextPromises.length>0)return;let s=Promise.resolve();const e={disableNormalization:!0};for(let t=0,i=this._linkService.pagesCount;t<i;t++){const{promise:n,resolve:o}=Promise.withResolvers();this._extractTextPromises[t]=n,s=s.then(()=>this._pdfDocument.getPage(t+1).then(l=>l.getTextContent(e)).then(l=>{const r=[];for(const a of l.items)r.push(a.str),a.hasEOL&&r.push(`
- `);[this._pageContents[t],this._pageDiffs[t],this._hasDiacritics[t]]=CO(r.join("")),o()},l=>{console.error(`Unable to get text content for page ${t+1}`,l),this._pageContents[t]="",this._pageDiffs[t]=null,this._hasDiacritics[t]=!1,o()}))}},kI=function(s){this._scrollMatches&&this._selected.pageIdx===s&&(this._linkService.page=s+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:s})},wy=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},bR=function(){const s=F(this,xr).findPrevious,e=this._linkService.page-1,t=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=e,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,L(this,PR,0),this._matchesCountTotal=0,E(this,fn,wy).call(this);for(let n=0;n<t;n++)this._pendingFindMatches.has(n)||(this._pendingFindMatches.add(n),this._extractTextPromises[n].then(()=>{this._pendingFindMatches.delete(n),E(this,fn,pue).call(this,n)}))}if(F(this,fn,wO).length===0){E(this,fn,My).call(this,fb.FOUND);return}if(this._resumePageIdx)return;const i=this._offset;if(this._pagesToSearch=t,i.matchIdx!==null){const n=this._pageMatches[i.pageIdx].length;if(!s&&i.matchIdx+1<n||s&&i.matchIdx>0){i.matchIdx=s?i.matchIdx-1:i.matchIdx+1,E(this,fn,II).call(this,!0);return}E(this,fn,TO).call(this,s)}E(this,fn,MO).call(this)},bue=function(s){const e=this._offset,t=s.length,i=F(this,xr).findPrevious;return t?(e.matchIdx=i?t-1:0,E(this,fn,II).call(this,!0),!0):(E(this,fn,TO).call(this,i),e.wrapped&&(e.matchIdx=null,this._pagesToSearch<0)?(E(this,fn,II).call(this,!1),!0):!1)},MO=function(){this._resumePageIdx!==null&&console.error("There can only be one pending page.");let s=null;do{const e=this._offset.pageIdx;if(s=this._pageMatches[e],!s){this._resumePageIdx=e;break}}while(!E(this,fn,bue).call(this,s))},TO=function(s){const e=this._offset,t=this._linkService.pagesCount;e.pageIdx=s?e.pageIdx-1:e.pageIdx+1,e.matchIdx=null,this._pagesToSearch--,(e.pageIdx>=t||e.pageIdx<0)&&(e.pageIdx=s?t-1:0,e.wrapped=!0)},II=function(s=!1){let e=fb.NOT_FOUND;const t=this._offset.wrapped;if(this._offset.wrapped=!1,s){const i=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,e=t?fb.WRAPPED:fb.FOUND,i!==-1&&i!==this._selected.pageIdx&&E(this,fn,kI).call(this,i)}E(this,fn,My).call(this,e,F(this,xr).findPrevious),this._selected.pageIdx!==-1&&(this._scrollMatches=!0,E(this,fn,kI).call(this,this._selected.pageIdx))},XRe=function(s){const e=this._pdfDocument;this._firstPageCapability.promise.then(()=>{!this._pdfDocument||e&&this._pdfDocument!==e||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),E(this,fn,My).call(this,fb.FOUND),this._highlightMatches=!1,E(this,fn,wy).call(this))})},BO=function(){var s;const{pageIdx:e,matchIdx:t}=this._selected;let i=0,n=this._matchesCountTotal;if(t!==-1){for(let o=0;o<e;o++)i+=((s=this._pageMatches[o])==null?void 0:s.length)||0;i+=t+1}return(i<1||i>n)&&(i=n=0),{current:i,total:n}},LO=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:E(this,fn,BO).call(this)})},My=function(s,e=!1){var t,i;!F(this,bw)&&(F(this,PR)!==this._linkService.pagesCount||s===fb.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:s,previous:e,entireWord:((t=F(this,xr))==null?void 0:t.entireWord)??null,matchesCount:E(this,fn,BO).call(this),rawQuery:((i=F(this,xr))==null?void 0:i.query)??null})};const Vpt="noopener noreferrer nofollow",GF={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var wq,YRe;const zRe=class _Re{constructor({eventBus:e,externalLinkTarget:t=null,externalLinkRel:i=null,ignoreDestinationZoom:n=!1}={}){Ii(this,"externalLinkEnabled",!0),this.eventBus=e,this.externalLinkTarget=t,this.externalLinkRel=i,this._ignoreDestinationZoom=n,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(e,t=null){this.baseUrl=t,this.pdfDocument=e}setViewer(e){this.pdfViewer=e}setHistory(e){this.pdfHistory=e}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(e){this.pdfDocument&&(this.pdfViewer.currentPageNumber=e)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(e){this.pdfDocument&&(this.pdfViewer.pagesRotation=e)}get isInPresentationMode(){return this.pdfDocument?this.pdfViewer.isInPresentationMode:!1}async goToDestination(e){if(!this.pdfDocument)return;let t,i,n;if(typeof e=="string"?(t=e,i=await this.pdfDocument.getDestination(e)):(t=null,i=await e),!Array.isArray(i)){console.error(`goToDestination: "${i}" is not a valid destination array, for dest="${e}".`);return}const[o]=i;if(o&&typeof o=="object"){if(n=this.pdfDocument.cachedPageNumber(o),!n)try{n=await this.pdfDocument.getPageIndex(o)+1}catch{console.error(`goToDestination: "${o}" is not a valid page reference, for dest="${e}".`);return}}else Number.isInteger(o)&&(n=o+1);if(!n||n<1||n>this.pagesCount){console.error(`goToDestination: "${n}" is not a valid page number, for dest="${e}".`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:t,explicitDest:i,pageNumber:n})),this.pdfViewer.scrollPageIntoView({pageNumber:n,destArray:i,ignoreDestinationZoom:this._ignoreDestinationZoom})}goToPage(e){if(!this.pdfDocument)return;const t=typeof e=="string"&&this.pdfViewer.pageLabelToPageNumber(e)||e|0;if(!(Number.isInteger(t)&&t>0&&t<=this.pagesCount)){console.error(`PDFLinkService.goToPage: "${e}" is not a valid page.`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(t)),this.pdfViewer.scrollPageIntoView({pageNumber:t})}addLinkAttributes(e,t,i=!1){if(!t||typeof t!="string")throw new Error('A valid "url" parameter must provided.');const n=i?GF.BLANK:this.externalLinkTarget,o=this.externalLinkRel;this.externalLinkEnabled?e.href=e.title=t:(e.href="",e.title=`Disabled: ${t}`,e.onclick=()=>!1);let l="";switch(n){case GF.NONE:break;case GF.SELF:l="_self";break;case GF.BLANK:l="_blank";break;case GF.PARENT:l="_parent";break;case GF.TOP:l="_top";break}e.target=l,e.rel=typeof o=="string"?o:Vpt}getDestinationHash(e){if(typeof e=="string"){if(e.length>0)return this.getAnchorUrl("#"+escape(e))}else if(Array.isArray(e)){const t=JSON.stringify(e);if(t.length>0)return this.getAnchorUrl("#"+escape(t))}return this.getAnchorUrl("")}getAnchorUrl(e){return this.baseUrl?this.baseUrl+e:e}setHash(e){var t;if(!this.pdfDocument)return;let i,n;if(e.includes("=")){const o=Ez(e);if(o.has("search")){const l=o.get("search").replaceAll('"',""),r=o.get("phrase")==="true";this.eventBus.dispatch("findfromurlhash",{source:this,query:r?l:l.match(/\S+/g)})}if(o.has("page")&&(i=o.get("page")|0||1),o.has("zoom")){const l=o.get("zoom").split(","),r=l[0],a=parseFloat(r);r.includes("Fit")?r==="Fit"||r==="FitB"?n=[null,{name:r}]:r==="FitH"||r==="FitBH"||r==="FitV"||r==="FitBV"?n=[null,{name:r},l.length>1?l[1]|0:null]:r==="FitR"?l.length!==5?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):n=[null,{name:r},l[1]|0,l[2]|0,l[3]|0,l[4]|0]:console.error(`PDFLinkService.setHash: "${r}" is not a valid zoom value.`):n=[null,{name:"XYZ"},l.length>1?l[1]|0:null,l.length>2?l[2]|0:null,a?a/100:r]}n?this.pdfViewer.scrollPageIntoView({pageNumber:i||this.page,destArray:n,allowNegativeOffset:!0}):i&&(this.page=i),o.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:o.get("pagemode")}),o.has("nameddest")&&this.goToDestination(o.get("nameddest"));return}n=unescape(e);try{n=JSON.parse(n),Array.isArray(n)||(n=n.toString())}catch{}if(typeof n=="string"||E(t=_Re,wq,YRe).call(t,n)){this.goToDestination(n);return}console.error(`PDFLinkService.setHash: "${unescape(e)}" is not a valid destination.`)}executeNamedAction(e){var t,i;if(this.pdfDocument){switch(e){case"GoBack":(t=this.pdfHistory)==null||t.back();break;case"GoForward":(i=this.pdfHistory)==null||i.forward();break;case"NextPage":this.pdfViewer.nextPage();break;case"PrevPage":this.pdfViewer.previousPage();break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break}this.eventBus.dispatch("namedaction",{source:this,action:e})}}async executeSetOCGState(e){if(!this.pdfDocument)return;const t=this.pdfDocument,i=await this.pdfViewer.optionalContentConfigPromise;t===this.pdfDocument&&(i.setOCGState(e),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(i))}};wq=new WeakSet,YRe=function(s){if(!Array.isArray(s)||s.length<2)return!1;const[e,t,...i]=s;if(!(typeof e=="object"&&Number.isInteger(e==null?void 0:e.num)&&Number.isInteger(e==null?void 0:e.gen))&&!Number.isInteger(e)||!(typeof t=="object"&&typeof(t==null?void 0:t.name)=="string"))return!1;const n=i.length;let o=!0;switch(t.name){case"XYZ":if(n<2||n>3)return!1;break;case"Fit":case"FitB":return n===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(n>1)return!1;break;case"FitR":if(n!==4)return!1;o=!1;break;default:return!1}for(const l of i)if(!(typeof l=="number"||o&&l===null))return!1;return!0},J(zRe,wq);let ORe=zRe;class rne extends ORe{setDocument(e,t=null){}}const{AbortException:Qpt,AnnotationEditorLayer:ypt,AnnotationEditorParamsType:bNt,AnnotationEditorType:Tc,AnnotationEditorUIManager:Cpt,AnnotationLayer:wpt,AnnotationMode:l0,build:UNt,ColorPicker:fNt,createValidAbsoluteUrl:Mpt,DOMSVGFactory:FNt,DrawLayer:Tpt,FeatureTest:ZNt,fetchData:Uue,getDocument:ANt,getFilenameFromUrl:NNt,getPdfFilenameFromUrl:Bpt,getXfaPageViewport:RNt,GlobalWorkerOptions:SNt,ImageKind:WNt,InvalidPDFException:VNt,isDataScheme:QNt,isPdfFile:Lpt,MissingPDFException:yNt,noContextMenu:CNt,normalizeUnicode:kpt,OPS:wNt,OutputScale:Ipt,PasswordResponses:MNt,PDFDataRangeTransport:TNt,PDFDateString:BNt,PDFWorker:LNt,PermissionFlag:DI,PixelsPerInch:Og,RenderingCancelledException:ane,setLayerDimensions:Dpt,shadow:jJ,stopEvent:Mq,TextLayer:Gpt,TouchManager:kNt,UnexpectedResponseException:INt,Util:DNt,VerbosityLevel:GNt,version:fue,XfaLayer:kO}=globalThis.pdfjsLib;var MG,EF,TG,Tq;class jRe{constructor({pdfPage:e,linkService:t,downloadManager:i,annotationStorage:n=null,imageResourcesPath:o="",renderForms:l=!0,enableScripting:r=!1,hasJSActionsPromise:a=null,fieldObjectsPromise:d=null,annotationCanvasMap:c=null,accessibilityManager:h=null,annotationEditorUIManager:u=null,onAppend:m=null}){J(this,TG),J(this,MG,null),J(this,EF,null),this.pdfPage=e,this.linkService=t,this.downloadManager=i,this.imageResourcesPath=o,this.renderForms=l,this.annotationStorage=n,this.enableScripting=r,this._hasJSActionsPromise=a||Promise.resolve(!1),this._fieldObjectsPromise=d||Promise.resolve(null),this._annotationCanvasMap=c,this._accessibilityManager=h,this._annotationEditorUIManager=u,L(this,MG,m),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=t.eventBus}async render(e,t,i="display"){var n,o;if(this.div){if(this._cancelled||!this.annotationLayer)return;this.annotationLayer.update({viewport:e.clone({dontFlip:!0})});return}const[l,r,a]=await Promise.all([this.pdfPage.getAnnotations({intent:i}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const d=this.div=document.createElement("div");if(d.className="annotationLayer",(n=F(this,MG))==null||n.call(this,d),l.length===0){this.hide();return}this.annotationLayer=new wpt({div:d,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:e.clone({dontFlip:!0}),structTreeLayer:(t==null?void 0:t.structTreeLayer)||null}),await this.annotationLayer.render({annotations:l,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:r,fieldObjects:a}),this.linkService.isInPresentationMode&&E(this,TG,Tq).call(this,YW.FULLSCREEN),F(this,EF)||(L(this,EF,new AbortController),(o=this._eventBus)==null||o._on("presentationmodechanged",c=>{E(this,TG,Tq).call(this,c.state)},{signal:F(this,EF).signal}))}cancel(){var e;this._cancelled=!0,(e=F(this,EF))==null||e.abort(),L(this,EF,null)}hide(){this.div&&(this.div.hidden=!0)}hasEditableAnnotations(){var e;return!!((e=this.annotationLayer)!=null&&e.hasEditableAnnotations())}}MG=new WeakMap,EF=new WeakMap,TG=new WeakSet,Tq=function(s){if(!this.div)return;let e=!1;switch(s){case YW.FULLSCREEN:e=!0;break;case YW.NORMAL:break;default:return}for(const t of this.div.childNodes)t.hasAttribute("data-internal-link")||(t.inert=e)};function Fue(s,e){const t=document.createElement("a");if(!t.click)throw new Error('DownloadManager: "a.click()" is not supported.');t.href=s,t.target="_parent","download"in t&&(t.download=e),(document.body||document.documentElement).append(t),t.click(),t.remove()}var HRe;class Ept{constructor(){J(this,HRe,new WeakMap)}downloadData(e,t,i){const n=URL.createObjectURL(new Blob([e],{type:i}));Fue(n,t)}openOrDownloadData(e,t,i=null){const n=Lpt(t)?"application/pdf":"";return this.downloadData(e,t,n),!1}download(e,t,i){let n;if(e)n=URL.createObjectURL(new Blob([e],{type:"application/pdf"}));else{if(!Mpt(t,"http://example.com")){console.error(`download - not a valid URL: ${t}`);return}n=t+"#pdfjs.action=download"}Fue(n,i)}}HRe=new WeakMap;const Zue={EVENT:"event",TIMEOUT:"timeout"};async function vpt({target:s,name:e,delay:t=0}){if(typeof s!="object"||!(e&&typeof e=="string")||!(Number.isInteger(t)&&t>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:i,resolve:n}=Promise.withResolvers(),o=new AbortController;function l(d){o.abort(),clearTimeout(a),n(d)}const r=s instanceof PRe?"_on":"addEventListener";s[r](e,l.bind(null,Zue.EVENT),{signal:o.signal});const a=setTimeout(l.bind(null,Zue.TIMEOUT),t);return i}var z2;class PRe{constructor(){J(this,z2,Object.create(null))}on(e,t,i=null){this._on(e,t,{external:!0,once:i==null?void 0:i.once,signal:i==null?void 0:i.signal})}off(e,t,i=null){this._off(e,t)}dispatch(e,t){const i=F(this,z2)[e];if(!i||i.length===0)return;let n;for(const{listener:o,external:l,once:r}of i.slice(0)){if(r&&this._off(e,o),l){(n||(n=[])).push(o);continue}o(t)}if(n){for(const o of n)o(t);n=null}}_on(e,t,i=null){var n;let o=null;if((i==null?void 0:i.signal)instanceof AbortSignal){const{signal:l}=i;if(l.aborted){console.error("Cannot use an `aborted` signal.");return}const r=()=>this._off(e,t);o=()=>l.removeEventListener("abort",r),l.addEventListener("abort",r)}((n=F(this,z2))[e]||(n[e]=[])).push({listener:t,external:(i==null?void 0:i.external)===!0,once:(i==null?void 0:i.once)===!0,rmAbort:o})}_off(e,t,i=null){var n;const o=F(this,z2)[e];if(o)for(let l=0,r=o.length;l<r;l++){const a=o[l];if(a.listener===t){(n=a.rmAbort)==null||n.call(a),o.splice(l,1);return}}}}z2=new WeakMap;class vz{constructor(e){this.value=e}valueOf(){return this.value}}class Dl extends vz{constructor(e="???"){super(e)}toString(e){return`{${this.value}}`}}class g0 extends vz{constructor(e,t={}){super(e),this.opts=t}toString(e){try{return e.memoizeIntlObject(Intl.NumberFormat,this.opts).format(this.value)}catch(t){return e.reportError(t),this.value.toString(10)}}}class Uw extends vz{constructor(e,t={}){super(e),this.opts=t}toString(e){try{return e.memoizeIntlObject(Intl.DateTimeFormat,this.opts).format(this.value)}catch(t){return e.reportError(t),new Date(this.value).toISOString()}}}const Aue=100,xpt="",Jpt="";function Xpt(s,e,t){if(t===e||t instanceof g0&&e instanceof g0&&t.value===e.value)return!0;if(e instanceof g0&&typeof t=="string"){let i=s.memoizeIntlObject(Intl.PluralRules,e.opts).select(e.value);if(t===i)return!0}return!1}function Nue(s,e,t){return e[t]?EV(s,e[t].value):(s.reportError(new RangeError("No default")),new Dl)}function Bq(s,e){const t=[],i=Object.create(null);for(const n of e)n.type==="narg"?i[n.name]=LT(s,n.value):t.push(LT(s,n));return{positional:t,named:i}}function LT(s,e){switch(e.type){case"str":return e.value;case"num":return new g0(e.value,{minimumFractionDigits:e.precision});case"var":return Ypt(s,e);case"mesg":return zpt(s,e);case"term":return _pt(s,e);case"func":return Opt(s,e);case"select":return jpt(s,e);default:return new Dl}}function Ypt(s,{name:e}){let t;if(s.params)if(Object.prototype.hasOwnProperty.call(s.params,e))t=s.params[e];else return new Dl(`$${e}`);else if(s.args&&Object.prototype.hasOwnProperty.call(s.args,e))t=s.args[e];else return s.reportError(new ReferenceError(`Unknown variable: $${e}`)),new Dl(`$${e}`);if(t instanceof vz)return t;switch(typeof t){case"string":return t;case"number":return new g0(t);case"object":if(t instanceof Date)return new Uw(t.getTime());default:return s.reportError(new TypeError(`Variable type not supported: $${e}, ${typeof t}`)),new Dl(`$${e}`)}}function zpt(s,{name:e,attr:t}){const i=s.bundle._messages.get(e);if(!i)return s.reportError(new ReferenceError(`Unknown message: ${e}`)),new Dl(e);if(t){const n=i.attributes[t];return n?EV(s,n):(s.reportError(new ReferenceError(`Unknown attribute: ${t}`)),new Dl(`${e}.${t}`))}return i.value?EV(s,i.value):(s.reportError(new ReferenceError(`No value: ${e}`)),new Dl(e))}function _pt(s,{name:e,attr:t,args:i}){const n=`-${e}`,o=s.bundle._terms.get(n);if(!o)return s.reportError(new ReferenceError(`Unknown term: ${n}`)),new Dl(n);if(t){const r=o.attributes[t];if(r){s.params=Bq(s,i).named;const a=EV(s,r);return s.params=null,a}return s.reportError(new ReferenceError(`Unknown attribute: ${t}`)),new Dl(`${n}.${t}`)}s.params=Bq(s,i).named;const l=EV(s,o.value);return s.params=null,l}function Opt(s,{name:e,args:t}){let i=s.bundle._functions[e];if(!i)return s.reportError(new ReferenceError(`Unknown function: ${e}()`)),new Dl(`${e}()`);if(typeof i!="function")return s.reportError(new TypeError(`Function ${e}() is not callable`)),new Dl(`${e}()`);try{let n=Bq(s,t);return i(n.positional,n.named)}catch(n){return s.reportError(n),new Dl(`${e}()`)}}function jpt(s,{selector:e,variants:t,star:i}){let n=LT(s,e);if(n instanceof Dl)return Nue(s,t,i);for(const o of t){const l=LT(s,o.key);if(Xpt(s,n,l))return EV(s,o.value)}return Nue(s,t,i)}function KRe(s,e){if(s.dirty.has(e))return s.reportError(new RangeError("Cyclic reference")),new Dl;s.dirty.add(e);const t=[],i=s.bundle._useIsolating&&e.length>1;for(const n of e){if(typeof n=="string"){t.push(s.bundle._transform(n));continue}if(s.placeables++,s.placeables>Aue)throw s.dirty.delete(e),new RangeError(`Too many placeables expanded: ${s.placeables}, max allowed is ${Aue}`);i&&t.push(xpt),t.push(LT(s,n).toString(s)),i&&t.push(Jpt)}return s.dirty.delete(e),t.join("")}function EV(s,e){return typeof e=="string"?s.bundle._transform(e):KRe(s,e)}class Hpt{constructor(e,t,i){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=e,this.errors=t,this.args=i}reportError(e){if(!this.errors||!(e instanceof Error))throw e;this.errors.push(e)}memoizeIntlObject(e,t){let i=this.bundle._intls.get(e);i||(i={},this.bundle._intls.set(e,i));let n=JSON.stringify(t);return i[n]||(i[n]=new e(this.bundle.locales,t)),i[n]}}function HJ(s,e){const t=Object.create(null);for(const[i,n]of Object.entries(s))e.includes(i)&&(t[i]=n.valueOf());return t}const Rue=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function Ppt(s,e){let t=s[0];if(t instanceof Dl)return new Dl(`NUMBER(${t.valueOf()})`);if(t instanceof g0)return new g0(t.valueOf(),{...t.opts,...HJ(e,Rue)});if(t instanceof Uw)return new g0(t.valueOf(),{...HJ(e,Rue)});throw new TypeError("Invalid argument to NUMBER")}const Sue=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function Kpt(s,e){let t=s[0];if(t instanceof Dl)return new Dl(`DATETIME(${t.valueOf()})`);if(t instanceof Uw)return new Uw(t.valueOf(),{...t.opts,...HJ(e,Sue)});if(t instanceof g0)return new Uw(t.valueOf(),{...HJ(e,Sue)});throw new TypeError("Invalid argument to DATETIME")}const Wue=new Map;function qpt(s){const e=Array.isArray(s)?s.join(" "):s;let t=Wue.get(e);return t===void 0&&(t=new Map,Wue.set(e,t)),t}class $pt{constructor(e,{functions:t,useIsolating:i=!0,transform:n=o=>o}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(e)?e:[e],this._functions={NUMBER:Ppt,DATETIME:Kpt,...t},this._useIsolating=i,this._transform=n,this._intls=qpt(e)}hasMessage(e){return this._messages.has(e)}getMessage(e){return this._messages.get(e)}addResource(e,{allowOverrides:t=!1}={}){const i=[];for(let n=0;n<e.body.length;n++){let o=e.body[n];if(o.id.startsWith("-")){if(t===!1&&this._terms.has(o.id)){i.push(new Error(`Attempt to override an existing term: "${o.id}"`));continue}this._terms.set(o.id,o)}else{if(t===!1&&this._messages.has(o.id)){i.push(new Error(`Attempt to override an existing message: "${o.id}"`));continue}this._messages.set(o.id,o)}}return i}formatPattern(e,t=null,i=null){if(typeof e=="string")return this._transform(e);let n=new Hpt(this,i,t);try{return KRe(n,e).toString(n)}catch(o){if(n.errors&&o instanceof Error)return n.errors.push(o),new Dl().toString(n);throw o}}}const IO=/^(-?[a-zA-Z][\w-]*) *= */gm,Vue=/\.([a-zA-Z][\w-]*) *= */y,egt=/\*?\[/y,DO=/(-?[0-9]+(?:\.([0-9]+))?)/y,tgt=/([a-zA-Z][\w-]*)/y,Que=/([$-])?([a-zA-Z][\w-]*)(?:\.([a-zA-Z][\w-]*))?/y,igt=/^[A-Z][A-Z0-9_-]*$/,GI=/([^{}\n\r]+)/y,ngt=/([^\\"\n\r]*)/y,yue=/\\([\\"])/y,Cue=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{6})/y,sgt=/^\n+/,wue=/ +$/,ogt=/ *\r?\n/g,lgt=/( *)$/,rgt=/{\s*/y,Mue=/\s*}/y,agt=/\[\s*/y,dgt=/\s*] */y,cgt=/\s*\(\s*/y,hgt=/\s*->\s*/y,ugt=/\s*:\s*/y,mgt=/\s*,?\s*/y,pgt=/\s+/y;class ggt{constructor(e){this.body=[],IO.lastIndex=0;let t=0;for(;;){let w=IO.exec(e);if(w===null)break;t=IO.lastIndex;try{this.body.push(a(w[1]))}catch(Y){if(Y instanceof SyntaxError)continue;throw Y}}function i(w){return w.lastIndex=t,w.test(e)}function n(w,Y){if(e[t]===w)return t++,!0;if(Y)throw new Y(`Expected ${w}`);return!1}function o(w,Y){if(i(w))return t=w.lastIndex,!0;if(Y)throw new Y(`Expected ${w.toString()}`);return!1}function l(w){w.lastIndex=t;let Y=w.exec(e);if(Y===null)throw new SyntaxError(`Expected ${w.toString()}`);return t=w.lastIndex,Y}function r(w){return l(w)[1]}function a(w){let Y=c(),G=d();if(Y===null&&Object.keys(G).length===0)throw new SyntaxError("Expected message value or attributes");return{id:w,value:Y,attributes:G}}function d(){let w=Object.create(null);for(;i(Vue);){let Y=r(Vue),G=c();if(G===null)throw new SyntaxError("Expected attribute value");w[Y]=G}return w}function c(){let w;if(i(GI)&&(w=r(GI)),e[t]==="{"||e[t]==="}")return h(w?[w]:[],1/0);let Y=Q();return Y?w?h([w,Y],Y.length):(Y.value=R(Y.value,sgt),h([Y],Y.length)):w?R(w,wue):null}function h(w=[],Y){for(;;){if(i(GI)){w.push(r(GI));continue}if(e[t]==="{"){w.push(u());continue}if(e[t]==="}")throw new SyntaxError("Unbalanced closing brace");let X=Q();if(X){w.push(X),Y=Math.min(Y,X.length);continue}break}let G=w.length-1,P=w[G];typeof P=="string"&&(w[G]=R(P,wue));let j=[];for(let X of w)X instanceof Tue&&(X=X.value.slice(0,X.value.length-Y)),X&&j.push(X);return j}function u(){o(rgt,SyntaxError);let w=m();if(o(Mue))return w;if(o(hgt)){let Y=b();return o(Mue,SyntaxError),{type:"select",selector:w,...Y}}throw new SyntaxError("Unclosed placeable")}function m(){if(e[t]==="{")return u();if(i(Que)){let[,w,Y,G=null]=l(Que);if(w==="$")return{type:"var",name:Y};if(o(cgt)){let P=p();if(w==="-")return{type:"term",name:Y,attr:G,args:P};if(igt.test(Y))return{type:"func",name:Y,args:P};throw new SyntaxError("Function names must be all upper-case")}return w==="-"?{type:"term",name:Y,attr:G,args:[]}:{type:"mesg",name:Y,attr:G}}return Z()}function p(){let w=[];for(;;){switch(e[t]){case")":return t++,w;case void 0:throw new SyntaxError("Unclosed argument list")}w.push(g()),o(mgt)}}function g(){let w=m();return w.type!=="mesg"?w:o(ugt)?{type:"narg",name:w.name,value:Z()}:w}function b(){let w=[],Y=0,G;for(;i(egt);){n("*")&&(G=Y);let P=f(),j=c();if(j===null)throw new SyntaxError("Expected variant value");w[Y++]={key:P,value:j}}if(Y===0)return null;if(G===void 0)throw new SyntaxError("Expected default variant");return{variants:w,star:G}}function f(){o(agt,SyntaxError);let w;return i(DO)?w=A():w={type:"str",value:r(tgt)},o(dgt,SyntaxError),w}function Z(){if(i(DO))return A();if(e[t]==='"')return N();throw new SyntaxError("Invalid expression")}function A(){let[,w,Y=""]=l(DO),G=Y.length;return{type:"num",value:parseFloat(w),precision:G}}function N(){n('"',SyntaxError);let w="";for(;;){if(w+=r(ngt),e[t]==="\\"){w+=W();continue}if(n('"'))return{type:"str",value:w};throw new SyntaxError("Unclosed string literal")}}function W(){if(i(yue))return r(yue);if(i(Cue)){let[,w,Y]=l(Cue),G=parseInt(w||Y,16);return G<=55295||57344<=G?String.fromCodePoint(G):"�"}throw new SyntaxError("Unknown escape sequence")}function Q(){let w=t;switch(o(pgt),e[t]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return M(e.slice(w,t))}return e[t-1]===" "?M(e.slice(w,t)):!1}function R(w,Y){return w.replace(Y,"")}function M(w){let Y=w.replace(ogt,`
- `),G=lgt.exec(w)[1].length;return new Tue(Y,G)}}}class Tue{constructor(e,t){this.value=e,this.length=t}}const bgt=/<|&#?\w+;/,Ugt={"http://www.w3.org/1999/xhtml":["em","strong","small","s","cite","q","dfn","abbr","data","time","code","var","samp","kbd","sub","sup","i","b","u","mark","bdi","bdo","span","br","wbr"]},fgt={"http://www.w3.org/1999/xhtml":{global:["title","aria-label","aria-valuetext"],a:["download"],area:["download","alt"],input:["alt","placeholder"],menuitem:["label"],menu:["label"],optgroup:["label"],option:["label"],track:["label"],img:["alt"],textarea:["placeholder"],th:["abbr"]},"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul":{global:["accesskey","aria-label","aria-valuetext","label","title","tooltiptext"],description:["value"],key:["key","keycode"],label:["value"],textbox:["placeholder","value"]}};function Fgt(s,e){const{value:t}=e;if(typeof t=="string")if(s.localName==="title"&&s.namespaceURI==="http://www.w3.org/1999/xhtml")s.textContent=t;else if(!bgt.test(t))s.textContent=t;else{const i=s.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");i.innerHTML=t,Zgt(i.content,s)}qRe(e,s)}function Zgt(s,e){for(const t of s.childNodes)if(t.nodeType!==t.TEXT_NODE){if(t.hasAttribute("data-l10n-name")){const i=Ngt(e,t);s.replaceChild(i,t);continue}if(Sgt(t)){const i=Rgt(t);s.replaceChild(i,t);continue}console.warn(`An element of forbidden type "${t.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),s.replaceChild(Lq(t),t)}e.textContent="",e.appendChild(s)}function Agt(s,e){if(!s)return!1;for(let t of s)if(t.name===e)return!0;return!1}function qRe(s,e){const t=e.hasAttribute("data-l10n-attrs")?e.getAttribute("data-l10n-attrs").split(",").map(i=>i.trim()):null;for(const i of Array.from(e.attributes))Bue(i.name,e,t)&&!Agt(s.attributes,i.name)&&e.removeAttribute(i.name);if(s.attributes)for(const i of Array.from(s.attributes))Bue(i.name,e,t)&&e.getAttribute(i.name)!==i.value&&e.setAttribute(i.name,i.value)}function Ngt(s,e){const t=e.getAttribute("data-l10n-name"),i=s.querySelector(`[data-l10n-name="${t}"]`);if(!i)return console.warn(`An element named "${t}" wasn't found in the source.`),Lq(e);if(i.localName!==e.localName)return console.warn(`An element named "${t}" was found in the translation but its type ${e.localName} didn't match the element found in the source (${i.localName}).`),Lq(e);s.removeChild(i);const n=i.cloneNode(!1);return $Re(e,n)}function Rgt(s){const e=s.ownerDocument.createElement(s.localName);return $Re(s,e)}function Lq(s){return s.ownerDocument.createTextNode(s.textContent)}function Sgt(s){const e=Ugt[s.namespaceURI];return e&&e.includes(s.localName)}function Bue(s,e,t=null){if(t&&t.includes(s))return!0;const i=fgt[e.namespaceURI];if(!i)return!1;const n=s.toLowerCase(),o=e.localName;if(i.global.includes(n))return!0;if(!i[o])return!1;if(i[o].includes(n))return!0;if(e.namespaceURI==="http://www.w3.org/1999/xhtml"&&o==="input"&&n==="value"){const l=e.type.toLowerCase();if(l==="submit"||l==="button"||l==="reset")return!0}return!1}function $Re(s,e){return e.textContent=s.textContent,qRe(s,e),e}class Wgt extends Array{static from(e){return e instanceof this?e:new this(e)}}class Vgt extends Wgt{constructor(e){if(super(),Symbol.asyncIterator in Object(e))this.iterator=e[Symbol.asyncIterator]();else if(Symbol.iterator in Object(e))this.iterator=e[Symbol.iterator]();else throw new TypeError("Argument must implement the iteration protocol.")}[Symbol.asyncIterator](){const e=this;let t=0;return{async next(){return e.length<=t&&e.push(e.iterator.next()),e[t++]}}}async touchNext(e=1){let t=0;for(;t++<e;){const i=this[this.length-1];if(i&&(await i).done)break;this.push(this.iterator.next())}return this[this.length-1]}}class Qgt{constructor(e=[],t){this.resourceIds=e,this.generateBundles=t,this.onChange(!0)}addResourceIds(e,t=!1){return this.resourceIds.push(...e),this.onChange(t),this.resourceIds.length}removeResourceIds(e){return this.resourceIds=this.resourceIds.filter(t=>!e.includes(t)),this.onChange(),this.resourceIds.length}async formatWithFallback(e,t){const i=[];let n=!1;for await(const o of this.bundles){n=!0;const l=wgt(t,o,e,i);if(l.size===0)break;if(typeof console<"u"){const r=o.locales[0],a=Array.from(l).join(", ");console.warn(`[fluent] Missing translations in ${r}: ${a}`)}}return!n&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.
- keys: ${JSON.stringify(e)}.
- resourceIds: ${JSON.stringify(this.resourceIds)}.`),i}formatMessages(e){return this.formatWithFallback(e,Cgt)}formatValues(e){return this.formatWithFallback(e,ygt)}async formatValue(e,t){const[i]=await this.formatValues([{id:e,args:t}]);return i}handleEvent(){this.onChange()}onChange(e=!1){this.bundles=Vgt.from(this.generateBundles(this.resourceIds)),e&&this.bundles.touchNext(2)}}function ygt(s,e,t,i){return t.value?s.formatPattern(t.value,i,e):null}function Cgt(s,e,t,i){const n={value:null,attributes:null};t.value&&(n.value=s.formatPattern(t.value,i,e));let o=Object.keys(t.attributes);if(o.length>0){n.attributes=new Array(o.length);for(let[l,r]of o.entries()){let a=s.formatPattern(t.attributes[r],i,e);n.attributes[l]={name:r,value:a}}}return n}function wgt(s,e,t,i){const n=[],o=new Set;return t.forEach(({id:l,args:r},a)=>{if(i[a]!==void 0)return;let d=e.getMessage(l);if(d){if(n.length=0,i[a]=s(e,n,d,r),n.length>0&&typeof console<"u"){const c=e.locales[0],h=n.join(", ");console.warn(`[fluent][resolver] errors in ${c}/${l}: ${h}.`)}}else o.add(l)}),o}const vF="data-l10n-id",Ty="data-l10n-args",Mgt=`[${vF}]`;class Tgt extends Qgt{constructor(e,t){super(e,t),this.roots=new Set,this.pendingrAF=null,this.pendingElements=new Set,this.windowElement=null,this.mutationObserver=null,this.observerConfig={attributes:!0,characterData:!1,childList:!0,subtree:!0,attributeFilter:[vF,Ty]}}onChange(e=!1){super.onChange(e),this.roots&&this.translateRoots()}setAttributes(e,t,i){return e.setAttribute(vF,t),i?e.setAttribute(Ty,JSON.stringify(i)):e.removeAttribute(Ty),e}getAttributes(e){return{id:e.getAttribute(vF),args:JSON.parse(e.getAttribute(Ty)||null)}}connectRoot(e){for(const t of this.roots)if(t===e||t.contains(e)||e.contains(t))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==e.ownerDocument.defaultView)throw new Error(`Cannot connect a root:
- DOMLocalization already has a root from a different window.`)}else this.windowElement=e.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver(t=>this.translateMutations(t));this.roots.add(e),this.mutationObserver.observe(e,this.observerConfig)}disconnectRoot(e){return this.roots.delete(e),this.pauseObserving(),this.roots.size===0?(this.mutationObserver=null,this.windowElement&&this.pendingrAF&&this.windowElement.cancelAnimationFrame(this.pendingrAF),this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const e=Array.from(this.roots);return Promise.all(e.map(t=>this.translateFragment(t)))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const e of this.roots)this.mutationObserver.observe(e,this.observerConfig)}translateMutations(e){for(const t of e)switch(t.type){case"attributes":t.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(t.target);break;case"childList":for(const i of t.addedNodes)if(i.nodeType===i.ELEMENT_NODE)if(i.childElementCount)for(const n of this.getTranslatables(i))this.pendingElements.add(n);else i.hasAttribute(vF)&&this.pendingElements.add(i);break}this.pendingElements.size>0&&this.pendingrAF===null&&(this.pendingrAF=this.windowElement.requestAnimationFrame(()=>{this.translateElements(Array.from(this.pendingElements)),this.pendingElements.clear(),this.pendingrAF=null}))}translateFragment(e){return this.translateElements(this.getTranslatables(e))}async translateElements(e){if(!e.length)return;const t=e.map(this.getKeysForElement),i=await this.formatMessages(t);return this.applyTranslations(e,i)}applyTranslations(e,t){this.pauseObserving();for(let i=0;i<e.length;i++)t[i]!==void 0&&Fgt(e[i],t[i]);this.resumeObserving()}getTranslatables(e){const t=Array.from(e.querySelectorAll(Mgt));return typeof e.hasAttribute=="function"&&e.hasAttribute(vF)&&t.push(e),t}getKeysForElement(e){return{id:e.getAttribute(vF),args:JSON.parse(e.getAttribute(Ty)||null)}}}var BG,Fb,_2,Vc,PJ,eSe,tSe;const iSe=class kq{constructor({lang:e,isRTL:t},i=null){J(this,BG),J(this,Fb),J(this,_2),J(this,Vc);var n,o;L(this,_2,E(n=kq,PJ,eSe).call(n,e)),L(this,Vc,i),L(this,BG,t??E(o=kq,PJ,tSe).call(o,F(this,_2))?"rtl":"ltr")}_setL10n(e){L(this,Vc,e)}getLanguage(){return F(this,_2)}getDirection(){return F(this,BG)}async get(e,t=null,i){var n;return Array.isArray(e)?(e=e.map(o=>({id:o})),(await F(this,Vc).formatMessages(e)).map(o=>o.value)):((n=(await F(this,Vc).formatMessages([{id:e,args:t}]))[0])==null?void 0:n.value)||i}async translate(e){(F(this,Fb)||L(this,Fb,new Set)).add(e);try{F(this,Vc).connectRoot(e),await F(this,Vc).translateRoots()}catch{}}async translateOnce(e){try{await F(this,Vc).translateElements([e])}catch(t){console.error("translateOnce:",t)}}async destroy(){if(F(this,Fb)){for(const e of F(this,Fb))F(this,Vc).disconnectRoot(e);F(this,Fb).clear(),L(this,Fb,null)}F(this,Vc).pauseObserving()}pause(){F(this,Vc).pauseObserving()}resume(){F(this,Vc).resumeObserving()}};BG=new WeakMap,Fb=new WeakMap,_2=new WeakMap,Vc=new WeakMap,PJ=new WeakSet,eSe=function(s){return s=(s==null?void 0:s.toLowerCase())||"en-us",{en:"en-us",es:"es-es",fy:"fy-nl",ga:"ga-ie",gu:"gu-in",hi:"hi-in",hy:"hy-am",nb:"nb-no",ne:"ne-np",nn:"nn-no",pa:"pa-in",pt:"pt-pt",sv:"sv-se",zh:"zh-cn"}[s]||s},tSe=function(s){const e=s.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(e)},J(iSe,PJ);let Bgt=iSe;function Lue(s,e){const t=new ggt(e),i=new $pt(s),n=i.addResource(t);return n.length&&console.error("L10n errors",n),i}var Mb,nSe,kue,Iue,sSe,GO;const oSe=class O2 extends Bgt{constructor(e){super({lang:e});const t=e?E(O2,Mb,nSe).bind(O2,"en-us",this.getLanguage()):E(O2,Mb,sSe).bind(O2,this.getLanguage());this._setL10n(new Tgt([],t))}};Mb=new WeakSet,nSe=async function*(s,e){const{baseURL:t,paths:i}=await E(this,Mb,Iue).call(this),n=[e];if(s!==e){const o=e.split("-",1)[0];o!==e&&n.push(o),n.push(s)}for(const o of n){const l=await E(this,Mb,kue).call(this,o,t,i);l?yield l:o==="en-us"&&(yield E(this,Mb,GO).call(this,o))}},kue=async function(s,e,t){const i=t[s];if(!i)return null;const n=new URL(i,e),o=await Uue(n,"text");return Lue(s,o)},Iue=async function(){try{const{href:s}=document.querySelector('link[type="application/l10n"]'),e=await Uue(s,"json");return{baseURL:s.replace(/[^/]*$/,"")||"./",paths:e}}catch{}return{baseURL:"./",paths:Object.create(null)}},sSe=async function*(s){yield E(this,Mb,GO).call(this,s)},GO=async function(s){return Lue(s,`pdfjs-previous-button =
- .title = Previous Page
- pdfjs-previous-button-label = Previous
- pdfjs-next-button =
- .title = Next Page
- pdfjs-next-button-label = Next
- pdfjs-page-input =
- .title = Page
- pdfjs-of-pages = of { $pagesCount }
- pdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })
- pdfjs-zoom-out-button =
- .title = Zoom Out
- pdfjs-zoom-out-button-label = Zoom Out
- pdfjs-zoom-in-button =
- .title = Zoom In
- pdfjs-zoom-in-button-label = Zoom In
- pdfjs-zoom-select =
- .title = Zoom
- pdfjs-presentation-mode-button =
- .title = Switch to Presentation Mode
- pdfjs-presentation-mode-button-label = Presentation Mode
- pdfjs-open-file-button =
- .title = Open File
- pdfjs-open-file-button-label = Open
- pdfjs-print-button =
- .title = Print
- pdfjs-print-button-label = Print
- pdfjs-save-button =
- .title = Save
- pdfjs-save-button-label = Save
- pdfjs-download-button =
- .title = Download
- pdfjs-download-button-label = Download
- pdfjs-bookmark-button =
- .title = Current Page (View URL from Current Page)
- pdfjs-bookmark-button-label = Current Page
- pdfjs-tools-button =
- .title = Tools
- pdfjs-tools-button-label = Tools
- pdfjs-first-page-button =
- .title = Go to First Page
- pdfjs-first-page-button-label = Go to First Page
- pdfjs-last-page-button =
- .title = Go to Last Page
- pdfjs-last-page-button-label = Go to Last Page
- pdfjs-page-rotate-cw-button =
- .title = Rotate Clockwise
- pdfjs-page-rotate-cw-button-label = Rotate Clockwise
- pdfjs-page-rotate-ccw-button =
- .title = Rotate Counterclockwise
- pdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise
- pdfjs-cursor-text-select-tool-button =
- .title = Enable Text Selection Tool
- pdfjs-cursor-text-select-tool-button-label = Text Selection Tool
- pdfjs-cursor-hand-tool-button =
- .title = Enable Hand Tool
- pdfjs-cursor-hand-tool-button-label = Hand Tool
- pdfjs-scroll-page-button =
- .title = Use Page Scrolling
- pdfjs-scroll-page-button-label = Page Scrolling
- pdfjs-scroll-vertical-button =
- .title = Use Vertical Scrolling
- pdfjs-scroll-vertical-button-label = Vertical Scrolling
- pdfjs-scroll-horizontal-button =
- .title = Use Horizontal Scrolling
- pdfjs-scroll-horizontal-button-label = Horizontal Scrolling
- pdfjs-scroll-wrapped-button =
- .title = Use Wrapped Scrolling
- pdfjs-scroll-wrapped-button-label = Wrapped Scrolling
- pdfjs-spread-none-button =
- .title = Do not join page spreads
- pdfjs-spread-none-button-label = No Spreads
- pdfjs-spread-odd-button =
- .title = Join page spreads starting with odd-numbered pages
- pdfjs-spread-odd-button-label = Odd Spreads
- pdfjs-spread-even-button =
- .title = Join page spreads starting with even-numbered pages
- pdfjs-spread-even-button-label = Even Spreads
- pdfjs-document-properties-button =
- .title = Document Properties…
- pdfjs-document-properties-button-label = Document Properties…
- pdfjs-document-properties-file-name = File name:
- pdfjs-document-properties-file-size = File size:
- pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)
- pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
- pdfjs-document-properties-title = Title:
- pdfjs-document-properties-author = Author:
- pdfjs-document-properties-subject = Subject:
- pdfjs-document-properties-keywords = Keywords:
- pdfjs-document-properties-creation-date = Creation Date:
- pdfjs-document-properties-modification-date = Modification Date:
- pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
- pdfjs-document-properties-creator = Creator:
- pdfjs-document-properties-producer = PDF Producer:
- pdfjs-document-properties-version = PDF Version:
- pdfjs-document-properties-page-count = Page Count:
- pdfjs-document-properties-page-size = Page Size:
- pdfjs-document-properties-page-size-unit-inches = in
- pdfjs-document-properties-page-size-unit-millimeters = mm
- pdfjs-document-properties-page-size-orientation-portrait = portrait
- pdfjs-document-properties-page-size-orientation-landscape = landscape
- pdfjs-document-properties-page-size-name-a-three = A3
- pdfjs-document-properties-page-size-name-a-four = A4
- pdfjs-document-properties-page-size-name-letter = Letter
- pdfjs-document-properties-page-size-name-legal = Legal
- pdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })
- pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })
- pdfjs-document-properties-linearized = Fast Web View:
- pdfjs-document-properties-linearized-yes = Yes
- pdfjs-document-properties-linearized-no = No
- pdfjs-document-properties-close-button = Close
- pdfjs-print-progress-message = Preparing document for printing…
- pdfjs-print-progress-percent = { $progress }%
- pdfjs-print-progress-close-button = Cancel
- pdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.
- pdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.
- pdfjs-toggle-sidebar-button =
- .title = Toggle Sidebar
- pdfjs-toggle-sidebar-notification-button =
- .title = Toggle Sidebar (document contains outline/attachments/layers)
- pdfjs-toggle-sidebar-button-label = Toggle Sidebar
- pdfjs-document-outline-button =
- .title = Show Document Outline (double-click to expand/collapse all items)
- pdfjs-document-outline-button-label = Document Outline
- pdfjs-attachments-button =
- .title = Show Attachments
- pdfjs-attachments-button-label = Attachments
- pdfjs-layers-button =
- .title = Show Layers (double-click to reset all layers to the default state)
- pdfjs-layers-button-label = Layers
- pdfjs-thumbs-button =
- .title = Show Thumbnails
- pdfjs-thumbs-button-label = Thumbnails
- pdfjs-current-outline-item-button =
- .title = Find Current Outline Item
- pdfjs-current-outline-item-button-label = Current Outline Item
- pdfjs-findbar-button =
- .title = Find in Document
- pdfjs-findbar-button-label = Find
- pdfjs-additional-layers = Additional Layers
- pdfjs-thumb-page-title =
- .title = Page { $page }
- pdfjs-thumb-page-canvas =
- .aria-label = Thumbnail of Page { $page }
- pdfjs-find-input =
- .title = Find
- .placeholder = Find in document…
- pdfjs-find-previous-button =
- .title = Find the previous occurrence of the phrase
- pdfjs-find-previous-button-label = Previous
- pdfjs-find-next-button =
- .title = Find the next occurrence of the phrase
- pdfjs-find-next-button-label = Next
- pdfjs-find-highlight-checkbox = Highlight All
- pdfjs-find-match-case-checkbox-label = Match Case
- pdfjs-find-match-diacritics-checkbox-label = Match Diacritics
- pdfjs-find-entire-word-checkbox-label = Whole Words
- pdfjs-find-reached-top = Reached top of document, continued from bottom
- pdfjs-find-reached-bottom = Reached end of document, continued from top
- pdfjs-find-match-count =
- { $total ->
- [one] { $current } of { $total } match
- *[other] { $current } of { $total } matches
- }
- pdfjs-find-match-count-limit =
- { $limit ->
- [one] More than { $limit } match
- *[other] More than { $limit } matches
- }
- pdfjs-find-not-found = Phrase not found
- pdfjs-page-scale-width = Page Width
- pdfjs-page-scale-fit = Page Fit
- pdfjs-page-scale-auto = Automatic Zoom
- pdfjs-page-scale-actual = Actual Size
- pdfjs-page-scale-percent = { $scale }%
- pdfjs-page-landmark =
- .aria-label = Page { $page }
- pdfjs-loading-error = An error occurred while loading the PDF.
- pdfjs-invalid-file-error = Invalid or corrupted PDF file.
- pdfjs-missing-file-error = Missing PDF file.
- pdfjs-unexpected-response-error = Unexpected server response.
- pdfjs-rendering-error = An error occurred while rendering the page.
- pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
- pdfjs-text-annotation-type =
- .alt = [{ $type } Annotation]
- pdfjs-password-label = Enter the password to open this PDF file.
- pdfjs-password-invalid = Invalid password. Please try again.
- pdfjs-password-ok-button = OK
- pdfjs-password-cancel-button = Cancel
- pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.
- pdfjs-editor-free-text-button =
- .title = Text
- pdfjs-editor-free-text-button-label = Text
- pdfjs-editor-ink-button =
- .title = Draw
- pdfjs-editor-ink-button-label = Draw
- pdfjs-editor-stamp-button =
- .title = Add or edit images
- pdfjs-editor-stamp-button-label = Add or edit images
- pdfjs-editor-highlight-button =
- .title = Highlight
- pdfjs-editor-highlight-button-label = Highlight
- pdfjs-highlight-floating-button1 =
- .title = Highlight
- .aria-label = Highlight
- pdfjs-highlight-floating-button-label = Highlight
- pdfjs-editor-remove-ink-button =
- .title = Remove drawing
- pdfjs-editor-remove-freetext-button =
- .title = Remove text
- pdfjs-editor-remove-stamp-button =
- .title = Remove image
- pdfjs-editor-remove-highlight-button =
- .title = Remove highlight
- pdfjs-editor-free-text-color-input = Color
- pdfjs-editor-free-text-size-input = Size
- pdfjs-editor-ink-color-input = Color
- pdfjs-editor-ink-thickness-input = Thickness
- pdfjs-editor-ink-opacity-input = Opacity
- pdfjs-editor-stamp-add-image-button =
- .title = Add image
- pdfjs-editor-stamp-add-image-button-label = Add image
- pdfjs-editor-free-highlight-thickness-input = Thickness
- pdfjs-editor-free-highlight-thickness-title =
- .title = Change thickness when highlighting items other than text
- pdfjs-free-text2 =
- .aria-label = Text Editor
- .default-content = Start typing…
- pdfjs-ink =
- .aria-label = Draw Editor
- pdfjs-ink-canvas =
- .aria-label = User-created image
- pdfjs-editor-alt-text-button =
- .aria-label = Alt text
- pdfjs-editor-alt-text-button-label = Alt text
- pdfjs-editor-alt-text-edit-button =
- .aria-label = Edit alt text
- pdfjs-editor-alt-text-dialog-label = Choose an option
- pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.
- pdfjs-editor-alt-text-add-description-label = Add a description
- pdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.
- pdfjs-editor-alt-text-mark-decorative-label = Mark as decorative
- pdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.
- pdfjs-editor-alt-text-cancel-button = Cancel
- pdfjs-editor-alt-text-save-button = Save
- pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative
- pdfjs-editor-alt-text-textarea =
- .placeholder = For example, “A young man sits down at a table to eat a meal”
- pdfjs-editor-resizer-top-left =
- .aria-label = Top left corner — resize
- pdfjs-editor-resizer-top-middle =
- .aria-label = Top middle — resize
- pdfjs-editor-resizer-top-right =
- .aria-label = Top right corner — resize
- pdfjs-editor-resizer-middle-right =
- .aria-label = Middle right — resize
- pdfjs-editor-resizer-bottom-right =
- .aria-label = Bottom right corner — resize
- pdfjs-editor-resizer-bottom-middle =
- .aria-label = Bottom middle — resize
- pdfjs-editor-resizer-bottom-left =
- .aria-label = Bottom left corner — resize
- pdfjs-editor-resizer-middle-left =
- .aria-label = Middle left — resize
- pdfjs-editor-highlight-colorpicker-label = Highlight color
- pdfjs-editor-colorpicker-button =
- .title = Change color
- pdfjs-editor-colorpicker-dropdown =
- .aria-label = Color choices
- pdfjs-editor-colorpicker-yellow =
- .title = Yellow
- pdfjs-editor-colorpicker-green =
- .title = Green
- pdfjs-editor-colorpicker-blue =
- .title = Blue
- pdfjs-editor-colorpicker-pink =
- .title = Pink
- pdfjs-editor-colorpicker-red =
- .title = Red
- pdfjs-editor-highlight-show-all-button-label = Show all
- pdfjs-editor-highlight-show-all-button =
- .title = Show all
- pdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)
- pdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)
- pdfjs-editor-new-alt-text-textarea =
- .placeholder = Write your description here…
- pdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.
- pdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.
- pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more
- pdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically
- pdfjs-editor-new-alt-text-not-now-button = Not now
- pdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically
- pdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.
- pdfjs-editor-new-alt-text-error-close-button = Close
- pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
- .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
- pdfjs-editor-new-alt-text-added-button =
- .aria-label = Alt text added
- pdfjs-editor-new-alt-text-added-button-label = Alt text added
- pdfjs-editor-new-alt-text-missing-button =
- .aria-label = Missing alt text
- pdfjs-editor-new-alt-text-missing-button-label = Missing alt text
- pdfjs-editor-new-alt-text-to-review-button =
- .aria-label = Review alt text
- pdfjs-editor-new-alt-text-to-review-button-label = Review alt text
- pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }
- pdfjs-image-alt-text-settings-button =
- .title = Image alt text settings
- pdfjs-image-alt-text-settings-button-label = Image alt text settings
- pdfjs-editor-alt-text-settings-dialog-label = Image alt text settings
- pdfjs-editor-alt-text-settings-automatic-title = Automatic alt text
- pdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically
- pdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.
- pdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)
- pdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.
- pdfjs-editor-alt-text-settings-delete-model-button = Delete
- pdfjs-editor-alt-text-settings-download-model-button = Download
- pdfjs-editor-alt-text-settings-downloading-model-button = Downloading…
- pdfjs-editor-alt-text-settings-editor-title = Alt text editor
- pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image
- pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.
- pdfjs-editor-alt-text-settings-close-button = Close
- pdfjs-editor-undo-bar-message-highlight = Highlight removed
- pdfjs-editor-undo-bar-message-freetext = Text removed
- pdfjs-editor-undo-bar-message-ink = Drawing removed
- pdfjs-editor-undo-bar-message-stamp = Image removed
- pdfjs-editor-undo-bar-message-multiple =
- { $count ->
- [one] { $count } annotation removed
- *[other] { $count } annotations removed
- }
- pdfjs-editor-undo-bar-undo-button =
- .title = Undo
- pdfjs-editor-undo-bar-undo-button-label = Undo
- pdfjs-editor-undo-bar-close-button =
- .title = Close
- pdfjs-editor-undo-bar-close-button-label = Close`)},J(oSe,Mb);let xz=oSe;const Lgt=1e3,kgt=50,Igt=1e3;function Iq(){return document.location.hash}var xF,Cs,jg,LG,KJ,fw,kG,Dq,Due,Gue,Gq,lSe,rSe;class Dgt{constructor({linkService:e,eventBus:t}){J(this,Cs),J(this,xF,null),this.linkService=e,this.eventBus=t,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",i=>{this._isPagesLoaded=!!i.pagesCount},{once:!0})})}initialize({fingerprint:e,resetHistory:t=!1,updateUrl:i=!1}){if(!e||typeof e!="string"){console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');return}this._initialized&&this.reset();const n=this._fingerprint!==""&&this._fingerprint!==e;this._fingerprint=e,this._updateUrl=i===!0,this._initialized=!0,E(this,Cs,lSe).call(this);const o=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=Iq(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!E(this,Cs,fw).call(this,o,!0)||t){const{hash:r,page:a,rotation:d}=E(this,Cs,Dq).call(this,!0);if(!r||n||t){E(this,Cs,jg).call(this,null,!0);return}E(this,Cs,jg).call(this,{hash:r,page:a,rotation:d},!0);return}const l=o.destination;E(this,Cs,kG).call(this,l,o.uid,!0),l.rotation!==void 0&&(this._initialRotation=l.rotation),l.dest?(this._initialBookmark=JSON.stringify(l.dest),this._destination.page=null):l.hash?this._initialBookmark=l.hash:l.page&&(this._initialBookmark=`page=${l.page}`)}reset(){this._initialized&&(E(this,Cs,Gq).call(this),this._initialized=!1,E(this,Cs,rSe).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:e=null,explicitDest:t,pageNumber:i}){if(!this._initialized)return;if(e&&typeof e!="string"){console.error(`PDFHistory.push: "${e}" is not a valid namedDest parameter.`);return}else if(Array.isArray(t)){if(!E(this,Cs,KJ).call(this,i)&&(i!==null||this._destination)){console.error(`PDFHistory.push: "${i}" is not a valid pageNumber parameter.`);return}}else{console.error(`PDFHistory.push: "${t}" is not a valid explicitDest parameter.`);return}const n=e||JSON.stringify(t);if(!n)return;let o=!1;if(this._destination&&(Ggt(this._destination.hash,n)||Egt(this._destination.dest,t))){if(this._destination.page)return;o=!0}this._popStateInProgress&&!o||(E(this,Cs,jg).call(this,{dest:t,hash:n,page:i,rotation:this.linkService.rotation},o),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1})))}pushPage(e){var t;if(this._initialized){if(!E(this,Cs,KJ).call(this,e)){console.error(`PDFHistory.pushPage: "${e}" is not a valid page number.`);return}((t=this._destination)==null?void 0:t.page)!==e&&(this._popStateInProgress||(E(this,Cs,jg).call(this,{dest:null,hash:`page=${e}`,page:e,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1}))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||E(this,Cs,LG).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const e=window.history.state;E(this,Cs,fw).call(this,e)&&e.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const e=window.history.state;E(this,Cs,fw).call(this,e)&&e.uid<this._maxUid&&window.history.forward()}get popStateInProgress(){return this._initialized&&(this._popStateInProgress||this._blockHashChange>0)}get initialBookmark(){return this._initialized?this._initialBookmark:null}get initialRotation(){return this._initialized?this._initialRotation:null}}xF=new WeakMap,Cs=new WeakSet,jg=function(s,e=!1){const t=e||!this._destination,i={fingerprint:this._fingerprint,uid:t?this._uid:this._uid+1,destination:s};E(this,Cs,kG).call(this,s,i.uid);let n;if(this._updateUrl&&s!=null&&s.hash){const o=document.location.href.split("#",1)[0];o.startsWith("file://")||(n=`${o}#${s.hash}`)}t?window.history.replaceState(i,"",n):window.history.pushState(i,"",n)},LG=function(s=!1){if(!this._position)return;let e=this._position;if(s&&(e=Object.assign(Object.create(null),this._position),e.temporary=!0),!this._destination){E(this,Cs,jg).call(this,e);return}if(this._destination.temporary){E(this,Cs,jg).call(this,e,!0);return}if(this._destination.hash===e.hash||!this._destination.page&&this._numPositionUpdates<=kgt)return;let t=!1;if(this._destination.page>=e.first&&this._destination.page<=e.page){if(this._destination.dest!==void 0||!this._destination.first)return;t=!0}E(this,Cs,jg).call(this,e,t)},KJ=function(s){return Number.isInteger(s)&&s>0&&s<=this.linkService.pagesCount},fw=function(s,e=!1){if(!s)return!1;if(s.fingerprint!==this._fingerprint)if(e){if(typeof s.fingerprint!="string"||s.fingerprint.length!==this._fingerprint.length)return!1;const[t]=performance.getEntriesByType("navigation");if((t==null?void 0:t.type)!=="reload")return!1}else return!1;return!(!Number.isInteger(s.uid)||s.uid<0||s.destination===null||typeof s.destination!="object")},kG=function(s,e,t=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),t&&s!=null&&s.temporary&&delete s.temporary,this._destination=s,this._uid=e,this._maxUid=Math.max(this._maxUid,e),this._numPositionUpdates=0},Dq=function(s=!1){const e=unescape(Iq()).substring(1),t=Ez(e),i=t.get("nameddest")||"";let n=t.get("page")|0;return(!E(this,Cs,KJ).call(this,n)||s&&i.length>0)&&(n=null),{hash:e,page:n,rotation:this.linkService.rotation}},Due=function({location:s}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:s.pdfOpenParams.substring(1),page:this.linkService.page,first:s.pageNumber,rotation:s.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout(()=>{this._popStateInProgress||E(this,Cs,LG).call(this,!0),this._updateViewareaTimeout=null},Igt))},Gue=function({state:s}){const e=Iq(),t=this._currentHash!==e;if(this._currentHash=e,!s){this._uid++;const{hash:n,page:o,rotation:l}=E(this,Cs,Dq).call(this);E(this,Cs,jg).call(this,{hash:n,page:o,rotation:l},!0);return}if(!E(this,Cs,fw).call(this,s))return;this._popStateInProgress=!0,t&&(this._blockHashChange++,vpt({target:window,name:"hashchange",delay:Lgt}).then(()=>{this._blockHashChange--}));const i=s.destination;E(this,Cs,kG).call(this,i,s.uid,!0),ERe(i.rotation)&&(this.linkService.rotation=i.rotation),i.dest?this.linkService.goToDestination(i.dest):i.hash?this.linkService.setHash(i.hash):i.page&&(this.linkService.page=i.page),Promise.resolve().then(()=>{this._popStateInProgress=!1})},Gq=function(){(!this._destination||this._destination.temporary)&&E(this,Cs,LG).call(this)},lSe=function(){if(F(this,xF))return;L(this,xF,new AbortController);const{signal:s}=F(this,xF);this.eventBus._on("updateviewarea",E(this,Cs,Due).bind(this),{signal:s}),window.addEventListener("popstate",E(this,Cs,Gue).bind(this),{signal:s}),window.addEventListener("pagehide",E(this,Cs,Gq).bind(this),{signal:s})},rSe=function(){var s;(s=F(this,xF))==null||s.abort(),L(this,xF,null)};function Ggt(s,e){return typeof s!="string"||typeof e!="string"?!1:s===e||Ez(s).get("nameddest")===e}function Egt(s,e){function t(i,n){if(typeof i!=typeof n||Array.isArray(i)||Array.isArray(n))return!1;if(i!==null&&typeof i=="object"&&n!==null){if(Object.keys(i).length!==Object.keys(n).length)return!1;for(const o in i)if(!t(i[o],n[o]))return!1;return!0}return i===n||Number.isNaN(i)&&Number.isNaN(n)}if(!(Array.isArray(s)&&Array.isArray(e))||s.length!==e.length)return!1;for(let i=0,n=s.length;i<n;i++)if(!t(s[i],e[i]))return!1;return!0}var IG,DG,GG,EG,vG,j2;class vgt{constructor(e){J(this,IG,null),J(this,DG,null),J(this,GG,null),J(this,EG,null),J(this,vG,null),J(this,j2),this.pdfPage=e.pdfPage,this.accessibilityManager=e.accessibilityManager,this.l10n=e.l10n,this.l10n||(this.l10n=new xz),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,L(this,j2,e.uiManager),L(this,IG,e.annotationLayer||null),L(this,vG,e.textLayer||null),L(this,DG,e.drawLayer||null),L(this,GG,e.onAppend||null),L(this,EG,e.structTreeLayer||null)}async render(e,t="display"){var i;if(t!=="display"||this._cancelled)return;const n=e.clone({dontFlip:!0});if(this.div){this.annotationEditorLayer.update({viewport:n}),this.show();return}const o=this.div=document.createElement("div");o.className="annotationEditorLayer",o.hidden=!0,o.dir=F(this,j2).direction,(i=F(this,GG))==null||i.call(this,o),this.annotationEditorLayer=new ypt({uiManager:F(this,j2),div:o,structTreeLayer:F(this,EG),accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:n,annotationLayer:F(this,IG),textLayer:F(this,vG),drawLayer:F(this,DG)});const l={viewport:n,div:o,annotations:null,intent:t};this.annotationEditorLayer.render(l),this.show()}cancel(){this._cancelled=!0,this.div&&this.annotationEditorLayer.destroy()}hide(){this.div&&(this.annotationEditorLayer.pause(!0),this.div.hidden=!0)}show(){!this.div||this.annotationEditorLayer.isInvisible||(this.div.hidden=!1,this.annotationEditorLayer.pause(!1))}}IG=new WeakMap,DG=new WeakMap,GG=new WeakMap,EG=new WeakMap,vG=new WeakMap,j2=new WeakMap;{var Eq=new Map;const s=navigator.userAgent||"",e=navigator.platform||"",t=navigator.maxTouchPoints||1,i=/Android/.test(s),n=/\b(iPad|iPhone|iPod)(?=;)/.test(s)||e==="MacIntel"&&t>1;(function(){(n||i)&&Eq.set("maxCanvasPixels",5242880)})(),function(){i&&Eq.set("useSystemFonts",!1)}()}const ot={BROWSER:1,VIEWER:2,API:4,WORKER:8,EVENT_DISPATCH:16,PREFERENCE:128},vq={BOOLEAN:1,NUMBER:2,OBJECT:4,STRING:8,UNDEFINED:16},Up={allowedGlobalEvents:{value:null,kind:ot.BROWSER},canvasMaxAreaInBytes:{value:-1,kind:ot.BROWSER+ot.API},isInAutomation:{value:!1,kind:ot.BROWSER},localeProperties:{value:{lang:navigator.language||"en-US"},kind:ot.BROWSER},nimbusDataStr:{value:"",kind:ot.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:ot.BROWSER},supportsDocumentFonts:{value:!0,kind:ot.BROWSER},supportsIntegratedFind:{value:!1,kind:ot.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:ot.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:ot.BROWSER},supportsPinchToZoom:{value:!0,kind:ot.BROWSER},toolbarDensity:{value:0,kind:ot.BROWSER+ot.EVENT_DISPATCH},altTextLearnMoreUrl:{value:"",kind:ot.VIEWER+ot.PREFERENCE},annotationEditorMode:{value:0,kind:ot.VIEWER+ot.PREFERENCE},annotationMode:{value:2,kind:ot.VIEWER+ot.PREFERENCE},cursorToolOnLoad:{value:0,kind:ot.VIEWER+ot.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:ot.VIEWER},defaultZoomDelay:{value:400,kind:ot.VIEWER+ot.PREFERENCE},defaultZoomValue:{value:"",kind:ot.VIEWER+ot.PREFERENCE},disableHistory:{value:!1,kind:ot.VIEWER},disablePageLabels:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},enableAltText:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},enableAltTextModelDownload:{value:!0,kind:ot.VIEWER+ot.PREFERENCE+ot.EVENT_DISPATCH},enableGuessAltText:{value:!0,kind:ot.VIEWER+ot.PREFERENCE+ot.EVENT_DISPATCH},enableHighlightFloatingButton:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},enableNewAltTextWhenAddingImage:{value:!0,kind:ot.VIEWER+ot.PREFERENCE},enablePermissions:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:ot.VIEWER+ot.PREFERENCE},enableScripting:{value:!0,kind:ot.VIEWER+ot.PREFERENCE},enableUpdatedAddImage:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:ot.VIEWER},externalLinkTarget:{value:0,kind:ot.VIEWER+ot.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:ot.VIEWER+ot.PREFERENCE},historyUpdateUrl:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},imageResourcesPath:{value:"./images/",kind:ot.VIEWER},maxCanvasPixels:{value:2**25,kind:ot.VIEWER},forcePageColors:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:ot.VIEWER+ot.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:ot.VIEWER+ot.PREFERENCE},pdfBugEnabled:{value:!1,kind:ot.VIEWER+ot.PREFERENCE},printResolution:{value:150,kind:ot.VIEWER},sidebarViewOnLoad:{value:-1,kind:ot.VIEWER+ot.PREFERENCE},scrollModeOnLoad:{value:-1,kind:ot.VIEWER+ot.PREFERENCE},spreadModeOnLoad:{value:-1,kind:ot.VIEWER+ot.PREFERENCE},textLayerMode:{value:1,kind:ot.VIEWER+ot.PREFERENCE},viewOnLoad:{value:0,kind:ot.VIEWER+ot.PREFERENCE},cMapPacked:{value:!0,kind:ot.API},cMapUrl:{value:"../web/cmaps/",kind:ot.API},disableAutoFetch:{value:!1,kind:ot.API+ot.PREFERENCE},disableFontFace:{value:!1,kind:ot.API+ot.PREFERENCE},disableRange:{value:!1,kind:ot.API+ot.PREFERENCE},disableStream:{value:!1,kind:ot.API+ot.PREFERENCE},docBaseUrl:{value:"",kind:ot.API},enableHWA:{value:!0,kind:ot.API+ot.VIEWER+ot.PREFERENCE},enableXfa:{value:!0,kind:ot.API+ot.PREFERENCE},fontExtraProperties:{value:!1,kind:ot.API},isEvalSupported:{value:!0,kind:ot.API},isOffscreenCanvasSupported:{value:!0,kind:ot.API},maxImageSize:{value:-1,kind:ot.API},pdfBug:{value:!1,kind:ot.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:ot.API},useSystemFonts:{value:void 0,kind:ot.API,type:vq.BOOLEAN+vq.UNDEFINED},verbosity:{value:1,kind:ot.API},workerPort:{value:null,kind:ot.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:ot.WORKER}};Up.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:ot.VIEWER},Up.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:ot.VIEWER},Up.viewerCssTheme={value:0,kind:ot.VIEWER+ot.PREFERENCE},Up.enableFakeMLManager={value:!0,kind:ot.VIEWER};Up.disablePreferences={value:!1,kind:ot.VIEWER};var kZ;const mg=class{static get(e){return F(this,kZ).get(e)}static getAll(e=null,t=!1){const i=Object.create(null);for(const n in Up){const o=Up[n];e&&!(e&o.kind)||(i[n]=t?o.value:F(this,kZ).get(n))}return i}static set(e,t){this.setAll({[e]:t})}static setAll(e,t=!1){this._hasInvokedSet||(this._hasInvokedSet=!0);let i;for(const n in e){const o=Up[n],l=e[n];if(!o||!(typeof l==typeof o.value||vq[(typeof l).toUpperCase()]&o.type))continue;const{kind:r}=o;t&&!(r&ot.BROWSER||r&ot.PREFERENCE)||(this.eventBus&&r&ot.EVENT_DISPATCH&&(i||(i=new Map)).set(n,l),F(this,kZ).set(n,l))}if(i)for(const[n,o]of i)this.eventBus.dispatch(n.toLowerCase(),{source:this,value:o})}};kZ=new WeakMap,Ii(mg,"eventBus"),J(mg,kZ,new Map),(()=>{for(const s in Up)F(mg,kZ).set(s,Up[s].value);for(const[s,e]of Eq)F(mg,kZ).set(s,e);mg._hasInvokedSet=!1,mg._checkDisablePreferences=()=>mg.get("disablePreferences")?!0:(mg._hasInvokedSet&&console.warn('The Preferences may override manually set AppOptions; please use the "disablePreferences"-option to prevent that.'),!1)})();let xgt=mg;var pg;class Jgt{constructor(e){J(this,pg,null),this.pageIndex=e.pageIndex}async render(e="display"){e!=="display"||F(this,pg)||this._cancelled||L(this,pg,new Tpt({pageIndex:this.pageIndex}))}cancel(){this._cancelled=!0,F(this,pg)&&(F(this,pg).destroy(),L(this,pg,null))}setParent(e){var t;(t=F(this,pg))==null||t.setParent(e)}getDrawLayer(){return F(this,pg)}}pg=new WeakMap;const Eue={Document:null,DocumentFragment:null,Part:"group",Sect:"group",Div:"group",Aside:"note",NonStruct:"none",P:null,H:"heading",Title:null,FENote:"note",Sub:"group",Lbl:null,Span:null,Em:null,Strong:null,Link:"link",Annot:"note",Form:"form",Ruby:null,RB:null,RT:null,RP:null,Warichu:null,WT:null,WP:null,L:"list",LI:"listitem",LBody:null,Table:"table",TR:"row",TH:"columnheader",TD:"cell",THead:"columnheader",TBody:null,TFoot:null,Caption:null,Figure:"figure",Formula:null,Artifact:null},Xgt=/^H(\d+)$/;var H2,Lm,P2,Fw,Zw,tU,mZ,EO,vue,xq;class aSe{constructor(e,t){J(this,mZ),J(this,H2),J(this,Lm,null),J(this,P2),J(this,Fw,new Map),J(this,Zw),J(this,tU,null),L(this,H2,e.getStructTree()),L(this,Zw,t)}async render(){var e;if(F(this,P2))return F(this,P2);const{promise:t,resolve:i,reject:n}=Promise.withResolvers();L(this,P2,t);try{L(this,Lm,E(this,mZ,xq).call(this,await F(this,H2)))}catch(o){n(o)}return L(this,H2,null),(e=F(this,Lm))==null||e.classList.add("structTree"),i(F(this,Lm)),t}async getAriaAttributes(e){try{return await this.render(),F(this,Fw).get(e)}catch{}return null}hide(){F(this,Lm)&&!F(this,Lm).hidden&&(F(this,Lm).hidden=!0)}show(){var e;(e=F(this,Lm))!=null&&e.hidden&&(F(this,Lm).hidden=!1)}addElementsToTextLayer(){var e;if(F(this,tU)){for(const[t,i]of F(this,tU))(e=document.getElementById(t))==null||e.append(i);F(this,tU).clear(),L(this,tU,null)}}}H2=new WeakMap,Lm=new WeakMap,P2=new WeakMap,Fw=new WeakMap,Zw=new WeakMap,tU=new WeakMap,mZ=new WeakSet,EO=function(s,e){const{alt:t,id:i,lang:n}=s;if(t!==void 0){let o=!1;const l=gw(t);for(const r of s.children)if(r.type==="annotation"){let a=F(this,Fw).get(r.id);a||(a=new Map,F(this,Fw).set(r.id,a)),a.set("aria-label",l),o=!0}o||e.setAttribute("aria-label",l)}i!==void 0&&e.setAttribute("aria-owns",i),n!==void 0&&e.setAttribute("lang",gw(n,!0))},vue=function(s,e){const{alt:t,bbox:i,children:n}=s,o=n==null?void 0:n[0];if(!F(this,Zw)||!t||!i||(o==null?void 0:o.type)!=="content")return!1;const{id:l}=o;if(!l)return!1;e.setAttribute("aria-owns",l);const r=document.createElement("span");(F(this,tU)||L(this,tU,new Map)).set(l,r),r.setAttribute("role","img"),r.setAttribute("aria-label",gw(t));const{pageHeight:a,pageX:d,pageY:c}=F(this,Zw),h="calc(var(--scale-factor)*",{style:u}=r;return u.width=`${h}${i[2]-i[0]}px)`,u.height=`${h}${i[3]-i[1]}px)`,u.left=`${h}${i[0]-d}px)`,u.top=`${h}${a-i[3]+c}px)`,!0},xq=function(s){if(!s)return null;const e=document.createElement("span");if("role"in s){const{role:t}=s,i=t.match(Xgt);if(i?(e.setAttribute("role","heading"),e.setAttribute("aria-level",i[1])):Eue[t]&&e.setAttribute("role",Eue[t]),t==="Figure"&&E(this,mZ,vue).call(this,s,e))return e}if(E(this,mZ,EO).call(this,s,e),s.children)if(s.children.length===1&&"id"in s.children[0])E(this,mZ,EO).call(this,s.children[0],e);else for(const t of s.children)e.append(E(this,mZ,xq).call(this,t));return e};var Zb,Au,Ab,JF,Aw,xG,JG,Jq;const dSe=class XG{constructor(){J(this,JG),J(this,Zb,!1),J(this,Au,null),J(this,Ab,new Map),J(this,JF,new Map)}setTextMapping(e){L(this,Au,e)}enable(){if(F(this,Zb))throw new Error("TextAccessibilityManager is already enabled.");if(!F(this,Au))throw new Error("Text divs and strings have not been set.");if(L(this,Zb,!0),L(this,Au,F(this,Au).slice()),F(this,Au).sort(E(XG,Aw,xG)),F(this,Ab).size>0){const e=F(this,Au);for(const[t,i]of F(this,Ab)){if(!document.getElementById(t)){F(this,Ab).delete(t);continue}E(this,JG,Jq).call(this,t,e[i])}}for(const[e,t]of F(this,JF))this.addPointerInTextLayer(e,t);F(this,JF).clear()}disable(){F(this,Zb)&&(F(this,JF).clear(),L(this,Au,null),L(this,Zb,!1))}removePointerInTextLayer(e){if(!F(this,Zb)){F(this,JF).delete(e);return}const t=F(this,Au);if(!t||t.length===0)return;const{id:i}=e,n=F(this,Ab).get(i);if(n===void 0)return;const o=t[n];F(this,Ab).delete(i);let l=o.getAttribute("aria-owns");l!=null&&l.includes(i)&&(l=l.split(" ").filter(r=>r!==i).join(" "),l?o.setAttribute("aria-owns",l):(o.removeAttribute("aria-owns"),o.setAttribute("role","presentation")))}addPointerInTextLayer(e,t){const{id:i}=e;if(!i)return null;if(!F(this,Zb))return F(this,JF).set(e,t),null;t&&this.removePointerInTextLayer(e);const n=F(this,Au);if(!n||n.length===0)return null;const o=BT(n,d=>{var c;return E(c=XG,Aw,xG).call(c,e,d)<0}),l=Math.max(0,o-1),r=n[l];E(this,JG,Jq).call(this,i,r),F(this,Ab).set(i,l);const a=r.parentNode;return a!=null&&a.classList.contains("markedContent")?a.id:null}moveElementInDOM(e,t,i,n){const o=this.addPointerInTextLayer(i,n);if(!e.hasChildNodes())return e.append(t),o;const l=Array.from(e.childNodes).filter(d=>d!==t);if(l.length===0)return o;const r=i||t,a=BT(l,d=>{var c;return E(c=XG,Aw,xG).call(c,r,d)<0});return a===0?l[0].before(t):l[a-1].after(t),o}};Zb=new WeakMap,Au=new WeakMap,Ab=new WeakMap,JF=new WeakMap,Aw=new WeakSet,xG=function(s,e){const t=s.getBoundingClientRect(),i=e.getBoundingClientRect();if(t.width===0&&t.height===0)return 1;if(i.width===0&&i.height===0)return-1;const n=t.y,o=t.y+t.height,l=t.y+t.height/2,r=i.y,a=i.y+i.height,d=i.y+i.height/2;if(l<=r&&d>=o)return-1;if(d<=n&&l>=a)return 1;const c=t.x+t.width/2,h=i.x+i.width/2;return c-h},JG=new WeakSet,Jq=function(s,e){const t=e.getAttribute("aria-owns");t!=null&&t.includes(s)||e.setAttribute("aria-owns",t?`${t} ${s}`:s),e.removeAttribute("role")},J(dSe,Aw);let Ygt=dSe;var XF;class zgt{constructor({findController:e,eventBus:t,pageIndex:i}){J(this,XF,null),this.findController=e,this.matches=[],this.eventBus=t,this.pageIdx=i,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(e,t){this.textDivs=e,this.textContentItemsStr=t}enable(){if(!this.textDivs||!this.textContentItemsStr)throw new Error("Text divs and strings have not been set.");if(this.enabled)throw new Error("TextHighlighter is already enabled.");this.enabled=!0,F(this,XF)||(L(this,XF,new AbortController),this.eventBus._on("updatetextlayermatches",e=>{(e.pageIndex===this.pageIdx||e.pageIndex===-1)&&this._updateMatches()},{signal:F(this,XF).signal})),this._updateMatches()}disable(){var e;this.enabled&&(this.enabled=!1,(e=F(this,XF))==null||e.abort(),L(this,XF,null),this._updateMatches(!0))}_convertMatches(e,t){if(!e)return[];const{textContentItemsStr:i}=this;let n=0,o=0;const l=i.length-1,r=[];for(let a=0,d=e.length;a<d;a++){let c=e[a];for(;n!==l&&c>=o+i[n].length;)o+=i[n].length,n++;n===i.length&&console.error("Could not find a matching mapping");const h={begin:{divIdx:n,offset:c-o}};for(c+=t[a];n!==l&&c>o+i[n].length;)o+=i[n].length,n++;h.end={divIdx:n,offset:c-o},r.push(h)}return r}_renderMatches(e){if(e.length===0)return;const{findController:t,pageIdx:i}=this,{textContentItemsStr:n,textDivs:o}=this,l=i===t.selected.pageIdx,r=t.selected.matchIdx,a=t.state.highlightAll;let d=null;const c={divIdx:-1,offset:void 0};function h(f,Z){const A=f.divIdx;return o[A].textContent="",u(A,0,f.offset,Z)}function u(f,Z,A,N){let W=o[f];if(W.nodeType===Node.TEXT_NODE){const M=document.createElement("span");W.before(M),M.append(W),o[f]=M,W=M}const Q=n[f].substring(Z,A),R=document.createTextNode(Q);if(N){const M=document.createElement("span");if(M.className=`${N} appended`,M.append(R),W.append(M),N.includes("selected")){const{left:w}=M.getClientRects()[0],Y=W.getBoundingClientRect().left;return w-Y}return 0}return W.append(R),0}let m=r,p=m+1;if(a)m=0,p=e.length;else if(!l)return;let g=-1,b=-1;for(let f=m;f<p;f++){const Z=e[f],A=Z.begin;if(A.divIdx===g&&A.offset===b)continue;g=A.divIdx,b=A.offset;const N=Z.end,W=l&&f===r,Q=W?" selected":"";let R=0;if(!d||A.divIdx!==d.divIdx?(d!==null&&u(d.divIdx,d.offset,c.offset),h(A)):u(d.divIdx,d.offset,A.offset),A.divIdx===N.divIdx)R=u(A.divIdx,A.offset,N.offset,"highlight"+Q);else{R=u(A.divIdx,A.offset,c.offset,"highlight begin"+Q);for(let M=A.divIdx+1,w=N.divIdx;M<w;M++)o[M].className="highlight middle"+Q;h(N,"highlight end"+Q)}d=N,W&&t.scrollMatchIntoView({element:o[A.divIdx],selectedLeft:R,pageIndex:i,matchIndex:r})}d&&u(d.divIdx,d.offset,c.offset)}_updateMatches(e=!1){if(!this.enabled&&!e)return;const{findController:t,matches:i,pageIdx:n}=this,{textContentItemsStr:o,textDivs:l}=this;let r=-1;for(const c of i){const h=Math.max(r,c.begin.divIdx);for(let u=h,m=c.end.divIdx;u<=m;u++){const p=l[u];p.textContent=o[u],p.className=""}r=c.end.divIdx+1}if(!(t!=null&&t.highlightMatches)||e)return;const a=t.pageMatches[n]||null,d=t.pageMatchesLength[n]||null;this.matches=this._convertMatches(a,d),this._renderMatches(this.matches)}}XF=new WeakMap;var qJ,YG,KR,gg,Sc,hF,Xq,cSe,zG,hSe,xue;const qR=class uSe{constructor({pdfPage:e,highlighter:t=null,accessibilityManager:i=null,enablePermissions:n=!1,onAppend:o=null}){J(this,Xq),J(this,qJ,!1),J(this,YG,null),J(this,KR,!1),J(this,gg,null),this.pdfPage=e,this.highlighter=t,this.accessibilityManager=i,L(this,qJ,n===!0),L(this,YG,o),this.div=document.createElement("div"),this.div.tabIndex=0,this.div.className="textLayer"}async render(e,t=null){var i,n,o,l,r;if(F(this,KR)&&F(this,gg)){F(this,gg).update({viewport:e,onBefore:this.hide.bind(this)}),this.show();return}this.cancel(),L(this,gg,new Gpt({textContentSource:this.pdfPage.streamTextContent(t||{includeMarkedContent:!0,disableNormalization:!0}),container:this.div,viewport:e}));const{textDivs:a,textContentItemsStr:d}=F(this,gg);(i=this.highlighter)==null||i.setTextMapping(a,d),(n=this.accessibilityManager)==null||n.setTextMapping(a),await F(this,gg).render(),L(this,KR,!0);const c=document.createElement("div");c.className="endOfContent",this.div.append(c),E(this,Xq,cSe).call(this,c),(o=F(this,YG))==null||o.call(this,this.div),(l=this.highlighter)==null||l.enable(),(r=this.accessibilityManager)==null||r.enable()}hide(){var e;!this.div.hidden&&F(this,KR)&&((e=this.highlighter)==null||e.disable(),this.div.hidden=!0)}show(){var e;this.div.hidden&&F(this,KR)&&(this.div.hidden=!1,(e=this.highlighter)==null||e.enable())}cancel(){var e,t,i,n;(e=F(this,gg))==null||e.cancel(),L(this,gg,null),(t=this.highlighter)==null||t.disable(),(i=this.accessibilityManager)==null||i.disable(),E(n=uSe,zG,hSe).call(n,this.div)}};qJ=new WeakMap,YG=new WeakMap,KR=new WeakMap,gg=new WeakMap,Sc=new WeakMap,hF=new WeakMap,Xq=new WeakSet,cSe=function(s){var e;const{div:t}=this;t.addEventListener("mousedown",()=>{t.classList.add("selecting")}),t.addEventListener("copy",i=>{if(!F(this,qJ)){const n=document.getSelection();i.clipboardData.setData("text/plain",gw(kpt(n.toString())))}Mq(i)}),F(qR,Sc).set(t,s),E(e=qR,zG,xue).call(e)},zG=new WeakSet,hSe=function(s){var e;F(this,Sc).delete(s),F(this,Sc).size===0&&((e=F(this,hF))==null||e.abort(),L(this,hF,null))},xue=function(){if(F(this,hF))return;L(this,hF,new AbortController);const{signal:s}=F(this,hF),e=(o,l)=>{l.append(o),o.style.width="",o.style.height="",l.classList.remove("selecting")};let t=!1;document.addEventListener("pointerdown",()=>{t=!0},{signal:s}),document.addEventListener("pointerup",()=>{t=!1,F(this,Sc).forEach(e)},{signal:s}),window.addEventListener("blur",()=>{t=!1,F(this,Sc).forEach(e)},{signal:s}),document.addEventListener("keyup",()=>{t||F(this,Sc).forEach(e)},{signal:s});var i,n;document.addEventListener("selectionchange",()=>{var o;const l=document.getSelection();if(l.rangeCount===0){F(this,Sc).forEach(e);return}const r=new Set;for(let m=0;m<l.rangeCount;m++){const p=l.getRangeAt(m);for(const g of F(this,Sc).keys())!r.has(g)&&p.intersectsNode(g)&&r.add(g)}for(const[m,p]of F(this,Sc))r.has(m)?m.classList.add("selecting"):e(p,m);if(i??(i=getComputedStyle(F(this,Sc).values().next().value).getPropertyValue("-moz-user-select")==="none"),i)return;const a=l.getRangeAt(0),d=n&&(a.compareBoundaryPoints(Range.END_TO_END,n)===0||a.compareBoundaryPoints(Range.START_TO_END,n)===0);let c=d?a.startContainer:a.endContainer;c.nodeType===Node.TEXT_NODE&&(c=c.parentNode);const h=(o=c.parentElement)==null?void 0:o.closest(".textLayer"),u=F(this,Sc).get(h);u&&(u.style.width=h.style.width,u.style.height=h.style.height,c.parentElement.insertBefore(u,d?c:c.nextSibling)),n=a.cloneRange()},{signal:s})},J(qR,zG),J(qR,Sc,new Map),J(qR,hF,null);let mSe=qR;class pSe{constructor({pdfPage:e,annotationStorage:t=null,linkService:i,xfaHtml:n=null}){this.pdfPage=e,this.annotationStorage=t,this.linkService=i,this.xfaHtml=n,this.div=null,this._cancelled=!1}async render(e,t="display"){if(t==="print"){const o={viewport:e.clone({dontFlip:!0}),div:this.div,xfaHtml:this.xfaHtml,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:t};return this.div=document.createElement("div"),o.div=this.div,kO.render(o)}const i=await this.pdfPage.getXfa();if(this._cancelled||!i)return{textDivs:[]};const n={viewport:e.clone({dontFlip:!0}),div:this.div,xfaHtml:i,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:t};return this.div?kO.update(n):(this.div=document.createElement("div"),n.div=this.div,kO.render(n))}cancel(){this._cancelled=!0}hide(){this.div&&(this.div.hidden=!0)}}const _gt={annotationEditorUIManager:null,annotationStorage:null,downloadManager:null,enableScripting:!1,fieldObjectsPromise:null,findController:null,hasJSActionsPromise:null,get linkService(){return new rne}},Ogt=new Map([["canvasWrapper",0],["textLayer",1],["annotationLayer",2],["annotationEditorLayer",3],["xfaLayer",3]]);var $R,YF,_G,eS,OG,zF,_F,Nw,jG,HG,PG,YS,K2,q2,Tb,IZ,Ls,zS,KG,By,Yq,zq,_q,Oq,jq,Jue,Xue,Hq,Pq;class gSe{constructor(e){J(this,Ls),J(this,$R,l0.ENABLE_FORMS),J(this,YF,null),J(this,_G,!1),J(this,eS,!1),J(this,OG,!1),J(this,zF,null),J(this,_F,null),J(this,Nw,null),J(this,jG,null),J(this,HG,1),J(this,PG,1),J(this,YS,null),J(this,K2,$o.INITIAL),J(this,q2,bp.ENABLE),J(this,Tb,{directDrawing:!0,initialOptionalContent:!0,regularAnnotations:!0}),J(this,IZ,[null,null,null,null]);var t,i;const n=e.container,o=e.defaultViewport;this.id=e.id,this.renderingId="page"+this.id,L(this,zF,e.layerProperties||_gt),this.pdfPage=null,this.pageLabel=null,this.rotation=0,this.scale=e.scale||kRe,this.viewport=o,this.pdfPageRotate=o.rotation,this._optionalContentConfigPromise=e.optionalContentConfigPromise||null,L(this,q2,e.textLayerMode??bp.ENABLE),L(this,$R,e.annotationMode??l0.ENABLE_FORMS),this.imageResourcesPath=e.imageResourcesPath||"",this.maxCanvasPixels=e.maxCanvasPixels??xgt.get("maxCanvasPixels"),this.pageColors=e.pageColors||null,L(this,_G,e.enableHWA||!1),this.eventBus=e.eventBus,this.renderingQueue=e.renderingQueue,this.l10n=e.l10n,this.l10n||(this.l10n=new xz),this.renderTask=null,this.resume=null,this._isStandalone=!((t=this.renderingQueue)!=null&&t.hasViewer()),this._container=n,this._annotationCanvasMap=null,this.annotationLayer=null,this.annotationEditorLayer=null,this.textLayer=null,this.xfaLayer=null,this.structTreeLayer=null,this.drawLayer=null;const l=document.createElement("div");if(l.className="page",l.setAttribute("data-page-number",this.id),l.setAttribute("role","region"),l.setAttribute("data-l10n-id","pdfjs-page-landmark"),l.setAttribute("data-l10n-args",JSON.stringify({page:this.id})),this.div=l,E(this,Ls,KG).call(this),n==null||n.append(l),this._isStandalone){n==null||n.style.setProperty("--scale-factor",this.scale*Og.PDF_TO_CSS_UNITS),(i=this.pageColors)!=null&&i.background&&(n==null||n.style.setProperty("--page-bg-color",this.pageColors.background));const{optionalContentConfigPromise:r}=e;r&&r.then(a=>{r===this._optionalContentConfigPromise&&(F(this,Tb).initialOptionalContent=a.hasInitialVisibility)}),e.l10n||this.l10n.translate(this.div)}}get renderingState(){return F(this,K2)}set renderingState(e){if(e!==F(this,K2))switch(L(this,K2,e),F(this,_F)&&(clearTimeout(F(this,_F)),L(this,_F,null)),e){case $o.PAUSED:this.div.classList.remove("loading");break;case $o.RUNNING:this.div.classList.add("loadingIcon"),L(this,_F,setTimeout(()=>{this.div.classList.add("loading"),L(this,_F,null)},0));break;case $o.INITIAL:case $o.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(e){var t,i,n,o;this._isStandalone&&(((t=this.pageColors)==null?void 0:t.foreground)==="CanvasText"||((i=this.pageColors)==null?void 0:i.background)==="Canvas")&&((n=this._container)==null||n.style.setProperty("--hcm-highlight-filter",e.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),(o=this._container)==null||o.style.setProperty("--hcm-highlight-selected-filter",e.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=e,this.pdfPageRotate=e.rotate;const l=(this.rotation+this.pdfPageRotate)%360;this.viewport=e.getViewport({scale:this.scale*Og.PDF_TO_CSS_UNITS,rotation:l}),E(this,Ls,KG).call(this),this.reset()}destroy(){var e;this.reset(),(e=this.pdfPage)==null||e.cleanup()}hasEditableAnnotations(){var e;return!!((e=this.annotationLayer)!=null&&e.hasEditableAnnotations())}get _textHighlighter(){return jJ(this,"_textHighlighter",new zgt({pageIndex:this.id-1,eventBus:this.eventBus,findController:F(this,zF).findController}))}reset({keepAnnotationLayer:e=!1,keepAnnotationEditorLayer:t=!1,keepXfaLayer:i=!1,keepTextLayer:n=!1,keepCanvasWrapper:o=!1}={}){var l,r,a,d,c;this.cancelRendering({keepAnnotationLayer:e,keepAnnotationEditorLayer:t,keepXfaLayer:i,keepTextLayer:n}),this.renderingState=$o.INITIAL;const h=this.div,u=h.childNodes,m=e&&((l=this.annotationLayer)==null?void 0:l.div)||null,p=t&&((r=this.annotationEditorLayer)==null?void 0:r.div)||null,g=i&&((a=this.xfaLayer)==null?void 0:a.div)||null,b=n&&((d=this.textLayer)==null?void 0:d.div)||null,f=o&&F(this,YF)||null;for(let Z=u.length-1;Z>=0;Z--){const A=u[Z];switch(A){case m:case p:case g:case b:case f:continue}A.remove();const N=F(this,IZ).indexOf(A);N>=0&&(F(this,IZ)[N]=null)}h.removeAttribute("data-loaded"),m&&this.annotationLayer.hide(),p&&this.annotationEditorLayer.hide(),g&&this.xfaLayer.hide(),b&&this.textLayer.hide(),(c=this.structTreeLayer)==null||c.hide(),!o&&F(this,YF)&&(L(this,YF,null),E(this,Ls,Hq).call(this))}toggleEditingMode(e){this.hasEditableAnnotations()&&(L(this,OG,e),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0}))}update({scale:e=0,rotation:t=null,optionalContentConfigPromise:i=null,drawingDelay:n=-1}){var o;this.scale=e||this.scale,typeof t=="number"&&(this.rotation=t),i instanceof Promise&&(this._optionalContentConfigPromise=i,i.then(r=>{i===this._optionalContentConfigPromise&&(F(this,Tb).initialOptionalContent=r.hasInitialVisibility)})),F(this,Tb).directDrawing=!0;const l=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*Og.PDF_TO_CSS_UNITS,rotation:l}),E(this,Ls,KG).call(this),this._isStandalone&&((o=this._container)==null||o.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let r=!1;if(F(this,eS)){if(this.maxCanvasPixels===0)r=!0;else if(this.maxCanvasPixels>0){const{width:d,height:c}=this.viewport,{sx:h,sy:u}=this.outputScale;r=(Math.floor(d)*h|0)*(Math.floor(c)*u|0)>this.maxCanvasPixels}}const a=n>=0&&n<1e3;if(a||r){if(a&&!r&&this.renderingState!==$o.FINISHED&&(this.cancelRendering({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:n}),this.renderingState=$o.FINISHED,F(this,Tb).directDrawing=!1),this.cssTransform({redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!a,hideTextLayer:a}),a)return;this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:F(this,YS)});return}}this.cssTransform({}),this.reset({keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,keepCanvasWrapper:!0})}cancelRendering({keepAnnotationLayer:e=!1,keepAnnotationEditorLayer:t=!1,keepXfaLayer:i=!1,keepTextLayer:n=!1,cancelExtraDelay:o=0}={}){var l;this.renderTask&&(this.renderTask.cancel(o),this.renderTask=null),this.resume=null,this.textLayer&&(!n||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.annotationLayer&&(!e||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationEditorLayer&&(!t||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!i||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,(l=this._textHighlighter)==null||l.disable())}cssTransform({redrawAnnotationLayer:e=!1,redrawAnnotationEditorLayer:t=!1,redrawXfaLayer:i=!1,redrawTextLayer:n=!1,hideTextLayer:o=!1}){var l;const{canvas:r}=this;if(!r)return;const a=F(this,Nw);if(this.viewport!==a){const d=(360+this.viewport.rotation-a.rotation)%360;if(d===90||d===270){const{width:c,height:h}=this.viewport,u=h/c,m=c/h;r.style.transform=`rotate(${d}deg) scale(${u},${m})`}else r.style.transform=d===0?"":`rotate(${d}deg)`}e&&this.annotationLayer&&E(this,Ls,Yq).call(this),t&&this.annotationEditorLayer&&(this.drawLayer&&E(this,Ls,_q).call(this),E(this,Ls,zq).call(this)),i&&this.xfaLayer&&E(this,Ls,Oq).call(this),this.textLayer&&(o?(this.textLayer.hide(),(l=this.structTreeLayer)==null||l.hide()):n&&E(this,Ls,jq).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(e,t){return this.viewport.convertToPdfPoint(e,t)}async draw(){this.renderingState!==$o.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:e,l10n:t,pageColors:i,pdfPage:n,viewport:o}=this;if(!n)throw this.renderingState=$o.FINISHED,new Error("pdfPage is not loaded");this.renderingState=$o.RUNNING;let l=F(this,YF);if(l||(l=L(this,YF,document.createElement("div")),l.classList.add("canvasWrapper"),E(this,Ls,zS).call(this,l,"canvasWrapper")),!this.textLayer&&F(this,q2)!==bp.DISABLE&&!n.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new Ygt),this.textLayer=new mSe({pdfPage:n,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:F(this,q2)===bp.ENABLE_PERMISSIONS,onAppend:G=>{this.l10n.pause(),E(this,Ls,zS).call(this,G,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&F(this,$R)!==l0.DISABLE){const{annotationStorage:G,annotationEditorUIManager:P,downloadManager:j,enableScripting:X,fieldObjectsPromise:ie,hasJSActionsPromise:se,linkService:pe}=F(this,zF);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new jRe({pdfPage:n,annotationStorage:G,imageResourcesPath:this.imageResourcesPath,renderForms:F(this,$R)===l0.ENABLE_FORMS,linkService:pe,downloadManager:j,enableScripting:X,hasJSActionsPromise:se,fieldObjectsPromise:ie,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:P,onAppend:Ue=>{E(this,Ls,zS).call(this,Ue,"annotationLayer")}})}const r=G=>{if(p==null||p(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this)){this.renderingState=$o.PAUSED,this.resume=()=>{this.renderingState=$o.RUNNING,G()};return}G()},{width:a,height:d}=o,c=document.createElement("canvas");c.setAttribute("role","presentation");const h=!!(i!=null&&i.background&&i!=null&&i.foreground),u=this.canvas,m=!u&&!h;this.canvas=c,L(this,Nw,o);let p=G=>{if(m){l.prepend(c),p=null;return}G&&(u?(u.replaceWith(c),u.width=u.height=0):l.prepend(c),p=null)};const g=c.getContext("2d",{alpha:!1,willReadFrequently:!F(this,_G)}),b=this.outputScale=new Ipt;if(this.maxCanvasPixels===0){const G=1/this.scale;b.sx*=G,b.sy*=G,L(this,eS,!0)}else if(this.maxCanvasPixels>0){const G=a*d,P=Math.sqrt(this.maxCanvasPixels/G);b.sx>P||b.sy>P?(b.sx=P,b.sy=P,L(this,eS,!0)):L(this,eS,!1)}const f=aue(b.sx),Z=aue(b.sy),A=c.width=TI(BI(a*b.sx),f[0]),N=c.height=TI(BI(d*b.sy),Z[0]),W=TI(BI(a),f[1]),Q=TI(BI(d),Z[1]);b.sx=A/W,b.sy=N/Q,F(this,HG)!==f[1]&&(e.style.setProperty("--scale-round-x",`${f[1]}px`),L(this,HG,f[1])),F(this,PG)!==Z[1]&&(e.style.setProperty("--scale-round-y",`${Z[1]}px`),L(this,PG,Z[1]));const R=b.scaled?[b.sx,0,0,b.sy,0,0]:null,M={canvasContext:g,transform:R,viewport:o,annotationMode:F(this,$R),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:i,isEditing:F(this,OG)},w=this.renderTask=n.render(M);w.onContinue=r;const Y=w.promise.then(async()=>{var G;p==null||p(!0),await E(this,Ls,Pq).call(this,w),this.structTreeLayer||(this.structTreeLayer=new aSe(n,o.rawDims)),E(this,Ls,jq).call(this),this.annotationLayer&&await E(this,Ls,Yq).call(this);const{annotationEditorUIManager:P}=F(this,zF);P&&(this.drawLayer||(this.drawLayer=new Jgt({pageIndex:this.id})),await E(this,Ls,_q).call(this),this.drawLayer.setParent(l),this.annotationEditorLayer||(this.annotationEditorLayer=new vgt({uiManager:P,pdfPage:n,l10n:t,structTreeLayer:this.structTreeLayer,accessibilityManager:this._accessibilityManager,annotationLayer:(G=this.annotationLayer)==null?void 0:G.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:j=>{E(this,Ls,zS).call(this,j,"annotationEditorLayer")}})),E(this,Ls,zq).call(this))},G=>(G instanceof ane?(u==null||u.remove(),E(this,Ls,Hq).call(this)):p==null||p(!0),E(this,Ls,Pq).call(this,w,G)));if(n.isPureXfa){if(!this.xfaLayer){const{annotationStorage:G,linkService:P}=F(this,zF);this.xfaLayer=new pSe({pdfPage:n,annotationStorage:G,linkService:P})}E(this,Ls,Oq).call(this)}return e.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),Y}setPageLabel(e){this.pageLabel=typeof e=="string"?e:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:this.pageLabel??this.id})),this.pageLabel!==null?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:e,initialOptionalContent:t,regularAnnotations:i}=F(this,Tb);return e&&t&&i?this.canvas:null}}$R=new WeakMap,YF=new WeakMap,_G=new WeakMap,eS=new WeakMap,OG=new WeakMap,zF=new WeakMap,_F=new WeakMap,Nw=new WeakMap,jG=new WeakMap,HG=new WeakMap,PG=new WeakMap,YS=new WeakMap,K2=new WeakMap,q2=new WeakMap,Tb=new WeakMap,IZ=new WeakMap,Ls=new WeakSet,zS=function(s,e){const t=Ogt.get(e),i=F(this,IZ)[t];if(F(this,IZ)[t]=s,i){i.replaceWith(s);return}for(let n=t-1;n>=0;n--){const o=F(this,IZ)[n];if(o){o.after(s);return}}this.div.prepend(s)},KG=function(){const{viewport:s}=this;if(this.pdfPage){if(F(this,jG)===s.rotation)return;L(this,jG,s.rotation)}Dpt(this.div,s,!0,!1)},By=function(s,e){this.eventBus.dispatch(s,{source:this,pageNumber:this.id,error:e})},Yq=async function(){let s=null;try{await this.annotationLayer.render(this.viewport,{structTreeLayer:this.structTreeLayer},"display")}catch(e){console.error("#renderAnnotationLayer:",e),s=e}finally{E(this,Ls,By).call(this,"annotationlayerrendered",s)}},zq=async function(){let s=null;try{await this.annotationEditorLayer.render(this.viewport,"display")}catch(e){console.error("#renderAnnotationEditorLayer:",e),s=e}finally{E(this,Ls,By).call(this,"annotationeditorlayerrendered",s)}},_q=async function(){try{await this.drawLayer.render("display")}catch(s){console.error("#renderDrawLayer:",s)}},Oq=async function(){var s;let e=null;try{const t=await this.xfaLayer.render(this.viewport,"display");t!=null&&t.textDivs&&this._textHighlighter&&E(this,Ls,Xue).call(this,t.textDivs)}catch(t){console.error("#renderXfaLayer:",t),e=t}finally{(s=this.xfaLayer)!=null&&s.div&&(this.l10n.pause(),E(this,Ls,zS).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),E(this,Ls,By).call(this,"xfalayerrendered",e)}},jq=async function(){if(!this.textLayer)return;let s=null;try{await this.textLayer.render(this.viewport)}catch(e){if(e instanceof Qpt)return;console.error("#renderTextLayer:",e),s=e}E(this,Ls,By).call(this,"textlayerrendered",s),E(this,Ls,Jue).call(this)},Jue=async function(){var s,e,t;if(!this.textLayer)return;const i=await((s=this.structTreeLayer)==null?void 0:s.render());i&&(this.l10n.pause(),(e=this.structTreeLayer)==null||e.addElementsToTextLayer(),this.canvas&&i.parentNode!==this.canvas&&this.canvas.append(i),this.l10n.resume()),(t=this.structTreeLayer)==null||t.show()},Xue=async function(s){const e=await this.pdfPage.getTextContent(),t=[];for(const i of e.items)t.push(i.str);this._textHighlighter.setTextMapping(s,t),this._textHighlighter.enable()},Hq=function(){const{canvas:s}=this;s&&(s.remove(),s.width=s.height=0,this.canvas=null,L(this,Nw,null))},Pq=async function(s,e=null){if(s===this.renderTask&&(this.renderTask=null),e instanceof ane){L(this,YS,null);return}if(L(this,YS,e),this.renderingState=$o.FINISHED,F(this,Tb).regularAnnotations=!s.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:F(this,YS)}),e)throw e};async function jgt(s){const e="",t=e.split("#",1)[0];let{info:i,metadata:n,contentDispositionFilename:o,contentLength:l}=await s.getMetadata();if(!l){const{length:r}=await s.getDownloadInfo();l=r}return{...i,baseURL:t,filesize:l,filename:o||Bpt(e),metadata:n==null?void 0:n.getRaw(),authors:n==null?void 0:n.get("dc:creator"),numPages:s.numPages,URL:e}}class Hgt{constructor(e){this._ready=new Promise((t,i)=>{Ut(()=>import(e),[],import.meta.url).then(n=>{t(n.QuickJSSandbox())}).catch(i)})}async createSandbox(e){(await this._ready).create(e)}async dispatchEventInSandbox(e){const t=await this._ready;setTimeout(()=>t.dispatchEvent(e),0)}async destroySandbox(){(await this._ready).nukeSandbox()}}var Rg,_S,qG,zW,_W,$J,Od,iU,Rw,Ur,Iu,Qc,bSe,$G,Kq,USe,$2;class Pgt{constructor({eventBus:e,externalServices:t=null,docProperties:i=null}){J(this,Qc),J(this,Rg,null),J(this,_S,null),J(this,qG,null),J(this,zW,null),J(this,_W,null),J(this,$J,null),J(this,Od,null),J(this,iU,null),J(this,Rw,!1),J(this,Ur,null),J(this,Iu,null),L(this,_W,e),L(this,$J,t),L(this,qG,i)}setViewer(e){L(this,iU,e)}async setDocument(e){var t;if(F(this,Od)&&await E(this,Qc,$2).call(this),L(this,Od,e),!e)return;const[i,n,o]=await Promise.all([e.getFieldObjects(),e.getCalculationOrderIds(),e.getJSActions()]);if(!i&&!o){await E(this,Qc,$2).call(this);return}if(e!==F(this,Od))return;try{L(this,Ur,E(this,Qc,USe).call(this))}catch(a){console.error("setDocument:",a),await E(this,Qc,$2).call(this);return}const l=F(this,_W);L(this,zW,new AbortController);const{signal:r}=F(this,zW);l._on("updatefromsandbox",a=>{(a==null?void 0:a.source)===window&&E(this,Qc,bSe).call(this,a.detail)},{signal:r}),l._on("dispatcheventinsandbox",a=>{var d;(d=F(this,Ur))==null||d.dispatchEventInSandbox(a.detail)},{signal:r}),l._on("pagechanging",({pageNumber:a,previous:d})=>{a!==d&&(E(this,Qc,Kq).call(this,d),E(this,Qc,$G).call(this,a))},{signal:r}),l._on("pagerendered",({pageNumber:a})=>{this._pageOpenPending.has(a)&&a===F(this,iU).currentPageNumber&&E(this,Qc,$G).call(this,a)},{signal:r}),l._on("pagesdestroy",async()=>{var a,d;await E(this,Qc,Kq).call(this,F(this,iU).currentPageNumber),await((a=F(this,Ur))==null?void 0:a.dispatchEventInSandbox({id:"doc",name:"WillClose"})),(d=F(this,Rg))==null||d.resolve()},{signal:r});try{const a=await F(this,qG).call(this,e);if(e!==F(this,Od))return;await F(this,Ur).createSandbox({objects:i,calculationOrder:n,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:{...a,actions:o}}),l.dispatch("sandboxcreated",{source:this})}catch(a){console.error("setDocument:",a),await E(this,Qc,$2).call(this);return}await((t=F(this,Ur))==null?void 0:t.dispatchEventInSandbox({id:"doc",name:"Open"})),await E(this,Qc,$G).call(this,F(this,iU).currentPageNumber,!0),Promise.resolve().then(()=>{e===F(this,Od)&&L(this,Rw,!0)})}async dispatchWillSave(){var e;return(e=F(this,Ur))==null?void 0:e.dispatchEventInSandbox({id:"doc",name:"WillSave"})}async dispatchDidSave(){var e;return(e=F(this,Ur))==null?void 0:e.dispatchEventInSandbox({id:"doc",name:"DidSave"})}async dispatchWillPrint(){var e;if(F(this,Ur)){await((e=F(this,Iu))==null?void 0:e.promise),L(this,Iu,Promise.withResolvers());try{await F(this,Ur).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(t){throw F(this,Iu).resolve(),L(this,Iu,null),t}await F(this,Iu).promise}}async dispatchDidPrint(){var e;return(e=F(this,Ur))==null?void 0:e.dispatchEventInSandbox({id:"doc",name:"DidPrint"})}get destroyPromise(){var e;return((e=F(this,_S))==null?void 0:e.promise)||null}get ready(){return F(this,Rw)}get _pageOpenPending(){return jJ(this,"_pageOpenPending",new Set)}get _visitedPages(){return jJ(this,"_visitedPages",new Map)}}Rg=new WeakMap,_S=new WeakMap,qG=new WeakMap,zW=new WeakMap,_W=new WeakMap,$J=new WeakMap,Od=new WeakMap,iU=new WeakMap,Rw=new WeakMap,Ur=new WeakMap,Iu=new WeakMap,Qc=new WeakSet,bSe=async function(s){var e,t;const i=F(this,iU),n=i.isInPresentationMode||i.isChangingPresentationMode,{id:o,siblings:l,command:r,value:a}=s;if(!o){switch(r){case"clear":console.clear();break;case"error":console.error(a);break;case"layout":if(!n){const c=npt(a);i.spreadMode=c.spreadMode}break;case"page-num":i.currentPageNumber=a+1;break;case"print":await i.pagesPromise,F(this,_W).dispatch("print",{source:this});break;case"println":console.log(a);break;case"zoom":n||(i.currentScaleValue=a);break;case"SaveAs":F(this,_W).dispatch("download",{source:this});break;case"FirstPage":i.currentPageNumber=1;break;case"LastPage":i.currentPageNumber=i.pagesCount;break;case"NextPage":i.nextPage();break;case"PrevPage":i.previousPage();break;case"ZoomViewIn":n||i.increaseScale();break;case"ZoomViewOut":n||i.decreaseScale();break;case"WillPrintFinished":(e=F(this,Iu))==null||e.resolve(),L(this,Iu,null);break}return}if(n&&s.focus)return;delete s.id,delete s.siblings;const d=l?[o,...l]:[o];for(const c of d){const h=document.querySelector(`[data-element-id="${c}"]`);h?h.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:s})):(t=F(this,Od))==null||t.annotationStorage.setValue(c,s)}},$G=async function(s,e=!1){const t=F(this,Od),i=this._visitedPages;if(e&&L(this,Rg,Promise.withResolvers()),!F(this,Rg))return;const n=F(this,iU).getPageView(s-1);if((n==null?void 0:n.renderingState)!==$o.FINISHED){this._pageOpenPending.add(s);return}this._pageOpenPending.delete(s);const o=(async()=>{var l,r;const a=await(i.has(s)?null:(l=n.pdfPage)==null?void 0:l.getJSActions());t===F(this,Od)&&await((r=F(this,Ur))==null?void 0:r.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:s,actions:a}))})();i.set(s,o)},Kq=async function(s){var e;const t=F(this,Od),i=this._visitedPages;if(!F(this,Rg)||this._pageOpenPending.has(s))return;const n=i.get(s);n&&(i.set(s,null),await n,t===F(this,Od)&&await((e=F(this,Ur))==null?void 0:e.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:s})))},USe=function(){if(L(this,_S,Promise.withResolvers()),F(this,Ur))throw new Error("#initScripting: Scripting already exists.");return F(this,$J).createScripting()},$2=async function(){var s,e,t,i;if(!F(this,Ur)){L(this,Od,null),(s=F(this,_S))==null||s.resolve();return}F(this,Rg)&&(await Promise.race([F(this,Rg).promise,new Promise(n=>{setTimeout(n,1e3)})]).catch(()=>{}),L(this,Rg,null)),L(this,Od,null);try{await F(this,Ur).destroySandbox()}catch{}(e=F(this,Iu))==null||e.reject(new Error("Scripting destroyed.")),L(this,Iu,null),(t=F(this,zW))==null||t.abort(),L(this,zW,null),this._pageOpenPending.clear(),this._visitedPages.clear(),L(this,Ur,null),L(this,Rw,!1),(i=F(this,_S))==null||i.resolve()};class Kgt extends Pgt{constructor(e){e.externalServices||window.addEventListener("updatefromsandbox",t=>{e.eventBus.dispatch("updatefromsandbox",{source:window,detail:t.detail})}),e.externalServices||(e.externalServices={createScripting:()=>new Hgt(e.sandboxBundleSrc)}),e.docProperties||(e.docProperties=t=>jgt(t)),super(e)}}const qgt=3e4;class $gt{constructor(){this.pdfViewer=null,this.pdfThumbnailViewer=null,this.onIdle=null,this.highestPriorityPage=null,this.idleTimeout=null,this.printing=!1,this.isThumbnailViewEnabled=!1,Object.defineProperty(this,"hasViewer",{value:()=>!!this.pdfViewer})}setViewer(e){this.pdfViewer=e}setThumbnailViewer(e){this.pdfThumbnailViewer=e}isHighestPriority(e){return this.highestPriorityPage===e.renderingId}renderHighestPriority(e){var t;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(e)&&(this.isThumbnailViewEnabled&&(t=this.pdfThumbnailViewer)!=null&&t.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),qgt)))}getHighestPriority(e,t,i,n=!1){const o=e.views,l=o.length;if(l===0)return null;for(let h=0;h<l;h++){const u=o[h].view;if(!this.isViewFinished(u))return u}const r=e.first.id,a=e.last.id;if(a-r+1>l){const h=e.ids;for(let u=1,m=a-r;u<m;u++){const p=i?r+u:a-u;if(h.has(p))continue;const g=t[p-1];if(!this.isViewFinished(g))return g}}let d=i?a:r-2,c=t[d];return c&&!this.isViewFinished(c)||n&&(d+=i?1:-1,c=t[d],c&&!this.isViewFinished(c))?c:null}isViewFinished(e){return e.renderingState===$o.FINISHED}renderView(e){switch(e.renderingState){case $o.FINISHED:return!1;case $o.PAUSED:this.highestPriorityPage=e.renderingId,e.resume();break;case $o.RUNNING:this.highestPriorityPage=e.renderingId;break;case $o.INITIAL:this.highestPriorityPage=e.renderingId,e.draw().finally(()=>{this.renderHighestPriority()}).catch(t=>{t instanceof ane||console.error("renderView:",t)});break}return!0}}const Yue=10,EI={FORCE_SCROLL_MODE_PAGE:1e4,FORCE_LAZY_PAGE_INIT:5e3,PAUSE_EAGER_PAGE_INIT:250};function zue(s){return Object.values(Tc).includes(s)&&s!==Tc.DISABLE}var nU,tS,eE,qq;class e0t{constructor(e){J(this,eE),J(this,nU,new Set),J(this,tS,0),L(this,tS,e)}push(e){const t=F(this,nU);t.has(e)&&t.delete(e),t.add(e),t.size>F(this,tS)&&E(this,eE,qq).call(this)}resize(e,t=null){L(this,tS,e);const i=F(this,nU);if(t){const n=i.size;let o=1;for(const l of i)if(t.has(l.id)&&(i.delete(l),i.add(l)),++o>n)break}for(;i.size>F(this,tS);)E(this,eE,qq).call(this)}has(e){return F(this,nU).has(e)}[Symbol.iterator](){return F(this,nU).keys()}}nU=new WeakMap,tS=new WeakMap,eE=new WeakSet,qq=function(){const s=F(this,nU).keys().next().value;s==null||s.destroy(),F(this,nU).delete(s)};var OF,tE,iE,Sg,Uh,OW,Sw,nE,sE,oE,lE,rE,aE,jF,iS,jW,OS,eC,pZ,Ww,dE,tC,HW,DZ,cE,Vw,ss,fSe,FSe,ZSe,Qw,eX,_ue,vO,Oue,Bb,$q,ASe,NSe,RSe,e$,SSe,hE;class WSe{constructor(e){J(this,ss),J(this,OF,null),J(this,tE,null),J(this,iE,null),J(this,Sg,Tc.NONE),J(this,Uh,null),J(this,OW,l0.ENABLE_FORMS),J(this,Sw,null),J(this,nE,null),J(this,sE,!1),J(this,oE,!1),J(this,lE,!1),J(this,rE,!1),J(this,aE,!1),J(this,jF,null),J(this,iS,null),J(this,jW,null),J(this,OS,null),J(this,eC,!1),J(this,pZ,null),J(this,Ww,!1),J(this,dE,0),J(this,tC,new ResizeObserver(E(this,ss,SSe).bind(this))),J(this,HW,null),J(this,DZ,null),J(this,cE,!0),J(this,Vw,bp.ENABLE);var t,i;const n="4.10.38";if(fue!==n)throw new Error(`The API version "${fue}" does not match the Viewer version "${n}".`);if(this.container=e.container,this.viewer=e.viewer||e.container.firstElementChild,((t=this.container)==null?void 0:t.tagName)!=="DIV"||((i=this.viewer)==null?void 0:i.tagName)!=="DIV")throw new Error("Invalid `container` and/or `viewer` option.");if(this.container.offsetParent&&getComputedStyle(this.container).position!=="absolute")throw new Error("The `container` must be absolutely positioned.");F(this,tC).observe(this.container),this.eventBus=e.eventBus,this.linkService=e.linkService||new rne,this.downloadManager=e.downloadManager||null,this.findController=e.findController||null,L(this,tE,e.altTextManager||null),L(this,nE,e.editorUndoBar||null),this.findController&&(this.findController.onIsPageVisible=l=>this._getVisiblePages().ids.has(l)),this._scriptingManager=e.scriptingManager||null,L(this,Vw,e.textLayerMode??bp.ENABLE),L(this,OW,e.annotationMode??l0.ENABLE_FORMS),L(this,Sg,e.annotationEditorMode??Tc.NONE),L(this,iE,e.annotationEditorHighlightColors||null),L(this,oE,e.enableHighlightFloatingButton===!0),L(this,rE,e.enableUpdatedAddImage===!0),L(this,aE,e.enableNewAltTextWhenAddingImage===!0),this.imageResourcesPath=e.imageResourcesPath||"",this.enablePrintAutoRotate=e.enablePrintAutoRotate||!1,this.removePageBorders=e.removePageBorders||!1,this.maxCanvasPixels=e.maxCanvasPixels,this.l10n=e.l10n,this.l10n||(this.l10n=new xz),L(this,lE,e.enablePermissions||!1),this.pageColors=e.pageColors||null,L(this,iS,e.mlManager||null),L(this,sE,e.enableHWA||!1),L(this,cE,e.supportsPinchToZoom!==!1),this.defaultRenderingQueue=!e.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new $gt,this.renderingQueue.setViewer(this)):this.renderingQueue=e.renderingQueue;const{abortSignal:o}=e;o==null||o.addEventListener("abort",()=>{F(this,tC).disconnect(),L(this,tC,null)},{once:!0}),this.scroll=Hmt(this.container,this._scrollUpdate.bind(this),o),this.presentationModeState=YW.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),E(this,ss,e$).call(this),this.eventBus._on("thumbnailrendered",({pageNumber:l,pdfPage:r})=>{const a=this._pages[l-1];F(this,OF).has(a)||r==null||r.cleanup()}),e.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(e){return this._pages[e]}getCachedPageViews(){return new Set(F(this,OF))}get pageViewsReady(){return this._pages.every(e=>e==null?void 0:e.pdfPage)}get renderForms(){return F(this,OW)===l0.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(e){if(!Number.isInteger(e))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(e,!0)||console.error(`currentPageNumber: "${e}" is not a valid page.`))}_setCurrentPageNumber(e,t=!1){var i;if(this._currentPageNumber===e)return t&&E(this,ss,$q).call(this),!0;if(!(0<e&&e<=this.pagesCount))return!1;const n=this._currentPageNumber;return this._currentPageNumber=e,this.eventBus.dispatch("pagechanging",{source:this,pageNumber:e,pageLabel:((i=this._pageLabels)==null?void 0:i[e-1])??null,previous:n}),t&&E(this,ss,$q).call(this),!0}get currentPageLabel(){var e;return((e=this._pageLabels)==null?void 0:e[this._currentPageNumber-1])??null}set currentPageLabel(e){if(!this.pdfDocument)return;let t=e|0;if(this._pageLabels){const i=this._pageLabels.indexOf(e);i>=0&&(t=i+1)}this._setCurrentPageNumber(t,!0)||console.error(`currentPageLabel: "${e}" is not a valid page.`)}get currentScale(){return this._currentScale!==SO?this._currentScale:kRe}set currentScale(e){if(isNaN(e))throw new Error("Invalid numeric scale.");this.pdfDocument&&E(this,ss,Bb).call(this,e,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(e){this.pdfDocument&&E(this,ss,Bb).call(this,e,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(e){if(!ERe(e))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(e%=360,e<0&&(e+=360),this._pagesRotation===e))return;this._pagesRotation=e;const t=this._currentPageNumber;this.refresh(!0,{rotation:e}),this._currentScaleValue&&E(this,ss,Bb).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:e,pageNumber:t}),this.defaultRenderingQueue&&this.update()}get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null}get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null}get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null}get _layerProperties(){const e=this;return jJ(this,"_layerProperties",{get annotationEditorUIManager(){return F(e,Uh)},get annotationStorage(){var t;return(t=e.pdfDocument)==null?void 0:t.annotationStorage},get downloadManager(){return e.downloadManager},get enableScripting(){return!!e._scriptingManager},get fieldObjectsPromise(){var t;return(t=e.pdfDocument)==null?void 0:t.getFieldObjects()},get findController(){return e.findController},get hasJSActionsPromise(){var t;return(t=e.pdfDocument)==null?void 0:t.hasJSActions()},get linkService(){return e.linkService}})}async getAllText(){const e=[],t=[];for(let i=1,n=this.pdfDocument.numPages;i<=n;++i){if(F(this,Ww))return null;t.length=0;const o=await this.pdfDocument.getPage(i),{items:l}=await o.getTextContent();for(const r of l)r.str&&t.push(r.str),r.hasEOL&&t.push(`
- `);e.push(gw(t.join("")))}return e.join(`
- `)}setDocument(e){var t,i,n;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),(t=this.findController)==null||t.setDocument(null),(i=this._scriptingManager)==null||i.setDocument(null),(n=F(this,Uh))==null||n.destroy(),L(this,Uh,null)),this.pdfDocument=e,!e)return;const o=e.numPages,l=e.getPage(1),r=e.getOptionalContentConfig({intent:"display"}),a=F(this,lE)?e.getPermissions():Promise.resolve(),{eventBus:d,pageColors:c,viewer:h}=this;L(this,jF,new AbortController);const{signal:u}=F(this,jF);if(o>EI.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const g=this._scrollMode=ls.PAGE;d.dispatch("scrollmodechanged",{source:this,mode:g})}this._pagesCapability.promise.then(()=>{d.dispatch("pagesloaded",{source:this,pagesCount:o})},()=>{});const m=g=>{const b=this._pages[g.pageNumber-1];b&&F(this,OF).push(b)};d._on("pagerender",m,{signal:u});const p=g=>{g.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:g.timestamp}),d._off("pagerendered",p))};d._on("pagerendered",p,{signal:u}),Promise.all([l,a]).then(([g,b])=>{var f,Z;if(e!==this.pdfDocument)return;this._firstPageCapability.resolve(g),this._optionalContentConfigPromise=r;const{annotationEditorMode:A,annotationMode:N,textLayerMode:W}=E(this,ss,fSe).call(this,b);if(W!==bp.DISABLE){const w=L(this,pZ,document.createElement("div"));w.id="hiddenCopyElement",h.before(w)}if(typeof AbortSignal.any=="function"&&A!==Tc.DISABLE){const w=A;e.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):zue(w)?(L(this,Uh,new Cpt(this.container,h,F(this,tE),d,e,c,F(this,iE),F(this,oE),F(this,rE),F(this,aE),F(this,iS),F(this,nE),F(this,cE))),d.dispatch("annotationeditoruimanager",{source:this,uiManager:F(this,Uh)}),w!==Tc.NONE&&(w===Tc.STAMP&&((f=F(this,iS))==null||f.loadModel("altText")),F(this,Uh).updateMode(w))):console.error(`Invalid AnnotationEditor mode: ${w}`)}const Q=this._scrollMode===ls.PAGE?null:h,R=this.currentScale,M=g.getViewport({scale:R*Og.PDF_TO_CSS_UNITS});h.style.setProperty("--scale-factor",M.scale),c!=null&&c.background&&h.style.setProperty("--page-bg-color",c.background),((c==null?void 0:c.foreground)==="CanvasText"||(c==null?void 0:c.background)==="Canvas")&&(h.style.setProperty("--hcm-highlight-filter",e.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),h.style.setProperty("--hcm-highlight-selected-filter",e.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let w=1;w<=o;++w){const Y=new gSe({container:Q,eventBus:d,id:w,scale:R,defaultViewport:M.clone(),optionalContentConfigPromise:r,renderingQueue:this.renderingQueue,textLayerMode:W,annotationMode:N,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:c,l10n:this.l10n,layerProperties:this._layerProperties,enableHWA:F(this,sE)});this._pages.push(Y)}(Z=this._pages[0])==null||Z.setPdfPage(g),this._scrollMode===ls.PAGE?E(this,ss,Qw).call(this):this._spreadMode!==La.NONE&&this._updateSpreadMode(),E(this,ss,FSe).call(this,u).then(async()=>{var w,Y;if(e!==this.pdfDocument)return;if((w=this.findController)==null||w.setDocument(e),(Y=this._scriptingManager)==null||Y.setDocument(e),F(this,pZ)&&document.addEventListener("copy",E(this,ss,ZSe).bind(this,W),{signal:u}),F(this,Uh)&&d.dispatch("annotationeditormodechanged",{source:this,mode:F(this,Sg)}),e.loadingParams.disableAutoFetch||o>EI.FORCE_LAZY_PAGE_INIT){this._pagesCapability.resolve();return}let G=o-1;if(G<=0){this._pagesCapability.resolve();return}for(let P=2;P<=o;++P){const j=e.getPage(P).then(X=>{const ie=this._pages[P-1];ie.pdfPage||ie.setPdfPage(X),--G===0&&this._pagesCapability.resolve()},X=>{console.error(`Unable to get page ${P} to initialize viewer`,X),--G===0&&this._pagesCapability.resolve()});P%EI.PAUSE_EAGER_PAGE_INIT===0&&await j}}),d.dispatch("pagesinit",{source:this}),e.getMetadata().then(({info:w})=>{e===this.pdfDocument&&w.Language&&(h.lang=w.Language)}),this.defaultRenderingQueue&&this.update()}).catch(g=>{console.error("Unable to initialize viewer",g),this._pagesCapability.reject(g)})}setPageLabels(e){var t;if(this.pdfDocument){e?Array.isArray(e)&&this.pdfDocument.numPages===e.length?this._pageLabels=e:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let i=0,n=this._pages.length;i<n;i++)this._pages[i].setPageLabel(((t=this._pageLabels)==null?void 0:t[i])??null)}}_resetView(){var e,t;this._pages=[],this._currentPageNumber=1,this._currentScale=SO,this._currentScaleValue=null,this._pageLabels=null,L(this,OF,new e0t(Yue)),this._location=null,this._pagesRotation=0,this._optionalContentConfigPromise=null,this._firstPageCapability=Promise.withResolvers(),this._onePageRenderedCapability=Promise.withResolvers(),this._pagesCapability=Promise.withResolvers(),this._scrollMode=ls.VERTICAL,this._previousScrollMode=ls.UNKNOWN,this._spreadMode=La.NONE,L(this,HW,{previousPageNumber:1,scrollDown:!0,pages:[]}),(e=F(this,jF))==null||e.abort(),L(this,jF,null),this.viewer.textContent="",this._updateScrollMode(),this.viewer.removeAttribute("lang"),(t=F(this,pZ))==null||t.remove(),L(this,pZ,null),E(this,ss,hE).call(this)}_scrollUpdate(){this.pagesCount!==0&&this.update()}pageLabelToPageNumber(e){if(!this._pageLabels)return null;const t=this._pageLabels.indexOf(e);return t<0?null:t+1}scrollPageIntoView({pageNumber:e,destArray:t=null,allowNegativeOffset:i=!1,ignoreDestinationZoom:n=!1}){if(!this.pdfDocument)return;const o=Number.isInteger(e)&&this._pages[e-1];if(!o){console.error(`scrollPageIntoView: "${e}" is not a valid pageNumber parameter.`);return}if(this.isInPresentationMode||!t){this._setCurrentPageNumber(e,!0);return}let l=0,r=0,a=0,d=0,c,h;const u=o.rotation%180!==0,m=(u?o.height:o.width)/o.scale/Og.PDF_TO_CSS_UNITS,p=(u?o.width:o.height)/o.scale/Og.PDF_TO_CSS_UNITS;let g=0;switch(t[1].name){case"XYZ":l=t[2],r=t[3],g=t[4],l=l!==null?l:0,r=r!==null?r:p;break;case"Fit":case"FitB":g="page-fit";break;case"FitH":case"FitBH":r=t[2],g="page-width",r===null&&this._location?(l=this._location.left,r=this._location.top):(typeof r!="number"||r<0)&&(r=p);break;case"FitV":case"FitBV":l=t[2],a=m,d=p,g="page-height";break;case"FitR":l=t[2],r=t[3],a=t[4]-l,d=t[5]-r;let A=IRe,N=DRe;this.removePageBorders&&(A=N=0),c=(this.container.clientWidth-A)/a/Og.PDF_TO_CSS_UNITS,h=(this.container.clientHeight-N)/d/Og.PDF_TO_CSS_UNITS,g=Math.min(Math.abs(c),Math.abs(h));break;default:console.error(`scrollPageIntoView: "${t[1].name}" is not a valid destination type.`);return}if(n||(g&&g!==this._currentScale?this.currentScaleValue=g:this._currentScale===SO&&(this.currentScaleValue=zmt)),g==="page-fit"&&!t[4]){E(this,ss,eX).call(this,o);return}const b=[o.viewport.convertToViewportPoint(l,r),o.viewport.convertToViewportPoint(l+a,r+d)];let f=Math.min(b[0][0],b[1][0]),Z=Math.min(b[0][1],b[1][1]);i||(f=Math.max(f,0),Z=Math.max(Z,0)),E(this,ss,eX).call(this,o,{left:f,top:Z})}_updateLocation(e){const t=this._currentScale,i=this._currentScaleValue,n=parseFloat(i)===t?Math.round(t*1e4)/100:i,o=e.id,l=this._pages[o-1],r=this.container,a=l.getPagePoint(r.scrollLeft-e.x,r.scrollTop-e.y),d=Math.round(a[0]),c=Math.round(a[1]);let h=`#page=${o}`;this.isInPresentationMode||(h+=`&zoom=${n},${d},${c}`),this._location={pageNumber:o,scale:n,top:c,left:d,rotation:this._pagesRotation,pdfOpenParams:h}}update(){const e=this._getVisiblePages(),t=e.views,i=t.length;if(i===0)return;const n=Math.max(Yue,2*i+1);F(this,OF).resize(n,e.ids),this.renderingQueue.renderHighestPriority(e);const o=this._spreadMode===La.NONE&&(this._scrollMode===ls.PAGE||this._scrollMode===ls.VERTICAL),l=this._currentPageNumber;let r=!1;for(const a of t){if(a.percent<100)break;if(a.id===l&&o){r=!0;break}}this._setCurrentPageNumber(r?l:t[0].id),this._updateLocation(e.first),this.eventBus.dispatch("updateviewarea",{source:this,location:this._location})}containsElement(e){return this.container.contains(e)}focus(){this.container.focus()}get _isContainerRtl(){return getComputedStyle(this.container).direction==="rtl"}get isInPresentationMode(){return this.presentationModeState===YW.FULLSCREEN}get isChangingPresentationMode(){return this.presentationModeState===YW.CHANGING}get isHorizontalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollWidth>this.container.clientWidth}get isVerticalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollHeight>this.container.clientHeight}_getVisiblePages(){const e=this._scrollMode===ls.PAGE?F(this,HW).pages:this._pages,t=this._scrollMode===ls.HORIZONTAL,i=t&&this._isContainerRtl;return Kmt({scrollEl:this.container,views:e,sortByVisibility:!0,horizontal:t,rtl:i})}cleanup(){for(const e of this._pages)e.renderingState!==$o.FINISHED&&e.reset()}_cancelRendering(){for(const e of this._pages)e.cancelRendering()}forceRendering(e){const t=e||this._getVisiblePages(),i=E(this,ss,RSe).call(this,t),n=this._spreadMode!==La.NONE&&this._scrollMode!==ls.HORIZONTAL,o=this.renderingQueue.getHighestPriority(t,this._pages,i,n);return o?(E(this,ss,NSe).call(this,o).then(()=>{this.renderingQueue.renderView(o)}),!0):!1}get hasEqualPageSizes(){const e=this._pages[0];for(let t=1,i=this._pages.length;t<i;++t){const n=this._pages[t];if(n.width!==e.width||n.height!==e.height)return!1}return!0}getPagesOverview(){let e;return this._pages.map(t=>{const i=t.pdfPage.getViewport({scale:1}),n=vRe(i);if(e===void 0)e=n;else if(this.enablePrintAutoRotate&&n!==e)return{width:i.height,height:i.width,rotation:(i.rotation-90)%360};return{width:i.width,height:i.height,rotation:i.rotation}})}get optionalContentConfigPromise(){return this.pdfDocument?this._optionalContentConfigPromise?this._optionalContentConfigPromise:(console.error("optionalContentConfigPromise: Not initialized yet."),this.pdfDocument.getOptionalContentConfig({intent:"display"})):Promise.resolve(null)}set optionalContentConfigPromise(e){if(!(e instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${e}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=e,this.refresh(!1,{optionalContentConfigPromise:e}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:e}))}get scrollMode(){return this._scrollMode}set scrollMode(e){if(this._scrollMode!==e){if(!qmt(e))throw new Error(`Invalid scroll mode: ${e}`);this.pagesCount>EI.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=e,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:e}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(e=null){const t=this._scrollMode,i=this.viewer;i.classList.toggle("scrollHorizontal",t===ls.HORIZONTAL),i.classList.toggle("scrollWrapped",t===ls.WRAPPED),!(!this.pdfDocument||!e)&&(t===ls.PAGE?E(this,ss,Qw).call(this):this._previousScrollMode===ls.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&E(this,ss,Bb).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(e,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(e){if(this._spreadMode!==e){if(!$mt(e))throw new Error(`Invalid spread mode: ${e}`);this._spreadMode=e,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:e}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(e=null){if(!this.pdfDocument)return;const t=this.viewer,i=this._pages;if(this._scrollMode===ls.PAGE)E(this,ss,Qw).call(this);else if(t.textContent="",this._spreadMode===La.NONE)for(const n of this._pages)t.append(n.div);else{const n=this._spreadMode-1;let o=null;for(let l=0,r=i.length;l<r;++l)o===null?(o=document.createElement("div"),o.className="spread",t.append(o)):l%2===n&&(o=o.cloneNode(!1),t.append(o)),o.append(i[l].div)}e&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&E(this,ss,Bb).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(e,!0),this.update())}_getPageAdvance(e,t=!1){switch(this._scrollMode){case ls.WRAPPED:{const{views:i}=this._getVisiblePages(),n=new Map;for(const{id:o,y:l,percent:r,widthPercent:a}of i){if(r===0||a<100)continue;let d=n.get(l);d||n.set(l,d||(d=[])),d.push(o)}for(const o of n.values()){const l=o.indexOf(e);if(l===-1)continue;const r=o.length;if(r===1)break;if(t)for(let a=l-1,d=0;a>=d;a--){const c=o[a],h=o[a+1]-1;if(c<h)return e-h}else for(let a=l+1,d=r;a<d;a++){const c=o[a],h=o[a-1]+1;if(c>h)return h-e}if(t){const a=o[0];if(a<e)return e-a+1}else{const a=o[r-1];if(a>e)return a-e+1}break}break}case ls.HORIZONTAL:break;case ls.PAGE:case ls.VERTICAL:{if(this._spreadMode===La.NONE)break;const i=this._spreadMode-1;if(t&&e%2!==i||!t&&e%2===i)break;const{views:n}=this._getVisiblePages(),o=t?e-1:e+1;for(const{id:l,percent:r,widthPercent:a}of n)if(l===o){if(r>0&&a===100)return 2;break}break}}return 1}nextPage(){const e=this._currentPageNumber,t=this.pagesCount;if(e>=t)return!1;const i=this._getPageAdvance(e,!1)||1;return this.currentPageNumber=Math.min(e+i,t),!0}previousPage(){const e=this._currentPageNumber;if(e<=1)return!1;const t=this._getPageAdvance(e,!0)||1;return this.currentPageNumber=Math.max(e-t,1),!0}updateScale({drawingDelay:e,scaleFactor:t=null,steps:i=null,origin:n}){if(i===null&&t===null)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let o=this._currentScale;if(t>0&&t!==1)o=Math.round(o*t*100)/100;else if(i){const l=i>0?lue:1/lue,r=i>0?Math.ceil:Math.floor;i=Math.abs(i);do o=r((o*l).toFixed(2)*10)/10;while(--i>0)}o=Math.max(_mt,Math.min(Omt,o)),E(this,ss,Bb).call(this,o,{noScroll:!1,drawingDelay:e,origin:n})}increaseScale(e={}){this.updateScale({...e,steps:e.steps??1})}decreaseScale(e={}){this.updateScale({...e,steps:-(e.steps??1)})}get containerTopLeft(){return F(this,Sw)||L(this,Sw,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return F(this,Uh)?F(this,Sg):Tc.DISABLE}set annotationEditorMode({mode:e,editId:t=null,isFromKeyboard:i=!1}){var n;if(!F(this,Uh))throw new Error("The AnnotationEditor is not enabled.");if(F(this,Sg)===e)return;if(!zue(e))throw new Error(`Invalid AnnotationEditor mode: ${e}`);if(!this.pdfDocument)return;e===Tc.STAMP&&((n=F(this,iS))==null||n.loadModel("altText"));const{eventBus:o}=this,l=()=>{E(this,ss,hE).call(this),L(this,Sg,e),F(this,Uh).updateMode(e,t,i),o.dispatch("annotationeditormodechanged",{source:this,mode:e})};if(e===Tc.NONE||F(this,Sg)===Tc.NONE){const r=e!==Tc.NONE;r||this.pdfDocument.annotationStorage.resetModifiedIds();for(const d of this._pages)d.toggleEditingMode(r);const a=E(this,ss,ASe).call(this);if(r&&a){E(this,ss,hE).call(this),L(this,jW,new AbortController);const d=AbortSignal.any([F(this,jF).signal,F(this,jW).signal]);o._on("pagerendered",({pageNumber:c})=>{a.delete(c),a.size===0&&L(this,OS,setTimeout(l,0))},{signal:d});return}}l()}refresh(e=!1,t=Object.create(null)){if(this.pdfDocument){for(const i of this._pages)i.update(t);F(this,DZ)!==null&&(clearTimeout(F(this,DZ)),L(this,DZ,null)),e||this.update()}}}OF=new WeakMap,tE=new WeakMap,iE=new WeakMap,Sg=new WeakMap,Uh=new WeakMap,OW=new WeakMap,Sw=new WeakMap,nE=new WeakMap,sE=new WeakMap,oE=new WeakMap,lE=new WeakMap,rE=new WeakMap,aE=new WeakMap,jF=new WeakMap,iS=new WeakMap,jW=new WeakMap,OS=new WeakMap,eC=new WeakMap,pZ=new WeakMap,Ww=new WeakMap,dE=new WeakMap,tC=new WeakMap,HW=new WeakMap,DZ=new WeakMap,cE=new WeakMap,Vw=new WeakMap,ss=new WeakSet,fSe=function(s){const e={annotationEditorMode:F(this,Sg),annotationMode:F(this,OW),textLayerMode:F(this,Vw)};return s&&(!s.includes(DI.COPY)&&F(this,Vw)===bp.ENABLE&&(e.textLayerMode=bp.ENABLE_PERMISSIONS),s.includes(DI.MODIFY_CONTENTS)||(e.annotationEditorMode=Tc.DISABLE),!s.includes(DI.MODIFY_ANNOTATIONS)&&!s.includes(DI.FILL_INTERACTIVE_FORMS)&&F(this,OW)===l0.ENABLE_FORMS&&(e.annotationMode=l0.ENABLE)),e},FSe=async function(s){if(document.visibilityState==="hidden"||!this.container.offsetParent||this._getVisiblePages().views.length===0)return;const e=Promise.withResolvers(),t=new AbortController;document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&e.resolve()},{signal:typeof AbortSignal.any=="function"?AbortSignal.any([s,t.signal]):s}),await Promise.race([this._onePageRenderedCapability.promise,e.promise]),t.abort()},ZSe=function(s,e){const t=document.getSelection(),{focusNode:i,anchorNode:n}=t;if(n&&i&&t.containsNode(F(this,pZ))){if(F(this,eC)||s===bp.ENABLE_PERMISSIONS){Mq(e);return}L(this,eC,!0);const{classList:o}=this.viewer;o.add("copyAll");const l=new AbortController;window.addEventListener("keydown",r=>L(this,Ww,r.key==="Escape"),{signal:l.signal}),this.getAllText().then(async r=>{r!==null&&await navigator.clipboard.writeText(r)}).catch(r=>{console.warn(`Something goes wrong when extracting the text: ${r.message}`)}).finally(()=>{L(this,eC,!1),L(this,Ww,!1),l.abort(),o.remove("copyAll")}),Mq(e)}},Qw=function(){if(this._scrollMode!==ls.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const s=this._currentPageNumber,e=F(this,HW),t=this.viewer;if(t.textContent="",e.pages.length=0,this._spreadMode===La.NONE&&!this.isInPresentationMode){const i=this._pages[s-1];t.append(i.div),e.pages.push(i)}else{const i=new Set,n=this._spreadMode-1;n===-1?i.add(s-1):s%2!==n?(i.add(s-1),i.add(s)):(i.add(s-2),i.add(s-1));const o=document.createElement("div");if(o.className="spread",this.isInPresentationMode){const l=document.createElement("div");l.className="dummyPage",o.append(l)}for(const l of i){const r=this._pages[l];r&&(o.append(r.div),e.pages.push(r))}t.append(o)}e.scrollDown=s>=e.previousPageNumber,e.previousPageNumber=s},eX=function(s,e=null){const{div:t,id:i}=s;if(this._currentPageNumber!==i&&this._setCurrentPageNumber(i),this._scrollMode===ls.PAGE&&(E(this,ss,Qw).call(this),this.update()),!e&&!this.isInPresentationMode){const n=t.offsetLeft+t.clientLeft,o=n+t.clientWidth,{scrollLeft:l,clientWidth:r}=this.container;(this._scrollMode===ls.HORIZONTAL||n<l||o>l+r)&&(e={left:0,top:0})}GRe(t,e),!this._currentScaleValue&&this._location&&(this._location=null)},_ue=function(s){return s===this._currentScale||Math.abs(s-this._currentScale)<1e-15},vO=function(s,e,{noScroll:t=!1,preset:i=!1,drawingDelay:n=-1,origin:o=null}){if(this._currentScaleValue=e.toString(),E(this,ss,_ue).call(this,s)){i&&this.eventBus.dispatch("scalechanging",{source:this,scale:s,presetValue:e});return}this.viewer.style.setProperty("--scale-factor",s*Og.PDF_TO_CSS_UNITS);const l=n>=0&&n<1e3;this.refresh(!0,{scale:s,drawingDelay:l?n:-1}),l&&L(this,DZ,setTimeout(()=>{L(this,DZ,null),this.refresh()},n));const r=this._currentScale;if(this._currentScale=s,!t){let a=this._currentPageNumber,d;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(a=this._location.pageNumber,d=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:a,destArray:d,allowNegativeOffset:!0}),Array.isArray(o)){const c=s/r-1,[h,u]=this.containerTopLeft;this.container.scrollLeft+=(o[0]-u)*c,this.container.scrollTop+=(o[1]-h)*c}}this.eventBus.dispatch("scalechanging",{source:this,scale:s,presetValue:i?e:void 0}),this.defaultRenderingQueue&&this.update()},Oue=function(){return this._spreadMode!==La.NONE&&this._scrollMode!==ls.HORIZONTAL?2:1},Bb=function(s,e){let t=parseFloat(s);if(t>0)e.preset=!1,E(this,ss,vO).call(this,t,s,e);else{const i=this._pages[this._currentPageNumber-1];if(!i)return;let n=IRe,o=DRe;this.isInPresentationMode?(n=o=4,this._spreadMode!==La.NONE&&(n*=2)):this.removePageBorders?n=o=0:this._scrollMode===ls.HORIZONTAL&&([n,o]=[o,n]);const l=(this.container.clientWidth-n)/i.width*i.scale/F(this,ss,Oue),r=(this.container.clientHeight-o)/i.height*i.scale;switch(s){case"page-actual":t=1;break;case"page-width":t=l;break;case"page-height":t=r;break;case"page-fit":t=Math.min(l,r);break;case"auto":const a=vRe(i)?l:Math.min(r,l);t=Math.min(jmt,a);break;default:console.error(`#setScale: "${s}" is an unknown zoom value.`);return}e.preset=!0,E(this,ss,vO).call(this,t,s,e)}},$q=function(){const s=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&E(this,ss,Bb).call(this,this._currentScaleValue,{noScroll:!0}),E(this,ss,eX).call(this,s)},ASe=function(){const s=this._getVisiblePages(),e=[],{ids:t,views:i}=s;for(const n of i){const{view:o}=n;if(!o.hasEditableAnnotations()){t.delete(o.id);continue}e.push(n)}return e.length===0?null:(this.renderingQueue.renderHighestPriority({first:e[0],last:e.at(-1),views:e,ids:t}),t)},NSe=async function(s){if(s.pdfPage)return s.pdfPage;try{const e=await this.pdfDocument.getPage(s.id);return s.pdfPage||s.setPdfPage(e),e}catch(e){return console.error("Unable to get page for page view",e),null}},RSe=function(s){var e,t;if(((e=s.first)==null?void 0:e.id)===1)return!0;if(((t=s.last)==null?void 0:t.id)===this.pagesCount)return!1;switch(this._scrollMode){case ls.PAGE:return F(this,HW).scrollDown;case ls.HORIZONTAL:return this.scroll.right}return this.scroll.down},e$=function(s=this.container.clientHeight){s!==F(this,dE)&&(L(this,dE,s),ept.setProperty("--viewer-container-height",`${s}px`))},SSe=function(s){for(const e of s)if(e.target===this.container){E(this,ss,e$).call(this,Math.floor(e.borderBoxSize[0].blockSize)),L(this,Sw,null);break}},hE=function(){var s;(s=F(this,jW))==null||s.abort(),L(this,jW,null),F(this,OS)!==null&&(clearTimeout(F(this,OS)),L(this,OS,null))};class t0t extends WSe{_resetView(){super._resetView(),this._scrollMode=ls.PAGE,this._spreadMode=La.NONE}set scrollMode(e){}_updateScrollMode(){}set spreadMode(e){}_updateSpreadMode(){}}Oo.AnnotationLayerBuilder;Oo.DownloadManager;Oo.EventBus;Oo.FindState;Oo.GenericL10n;Oo.LinkTarget;Oo.PDFFindController;Oo.PDFHistory;var i0t=Oo.PDFLinkService;Oo.PDFPageView;Oo.PDFScriptingManager;Oo.PDFSinglePageViewer;Oo.PDFViewer;Oo.ProgressBar;Oo.RenderingStates;Oo.ScrollMode;Oo.SimpleLinkService;Oo.SpreadMode;Oo.StructTreeLayerBuilder;Oo.TextLayerBuilder;Oo.XfaLayerBuilder;Oo.parseQueryString;const n0t=["id"],s0t=["id"],o0t=te("canvas",null,null,-1),l0t={key:0,class:"textLayer"},r0t={key:1,class:"annotationLayer"},VSe=que({__name:"VuePdfEmbed",props:{annotationLayer:{type:Boolean},height:{},id:{},imageResourcesPath:{},linkService:{},page:{},rotation:{default:0},scale:{default:1},source:{},textLayer:{type:Boolean},width:{}},emits:["internal-link-clicked","loaded","loading-failed","password-requested","progress","rendered","rendering-failed"],setup(s,{expose:e,emit:t}){const i=s,n=mE([]),o=x([]),l=mE(null);let r=null;const{doc:a}=LRe({onError:f=>{n.value=[],t("loading-failed",f)},onPasswordRequest({callback:f,isWrongPassword:Z}){t("password-requested",{callback:f,isWrongPassword:Z})},onProgress:f=>{t("progress",f)},source:vI(i,"source")}),d=HF(()=>{if(!a.value||!i.annotationLayer)return null;if(i.linkService)return i.linkService;const f=new i0t;return f.setDocument(a.value),f.setViewer({scrollPageIntoView:({pageNumber:Z})=>{t("internal-link-clicked",Z)}}),f}),c=async f=>{if(!a.value)return;const Z=await a.value.getData(),A=await a.value.getMetadata(),N=f??A.contentDispositionFilename??"";Ymt(Z,N)},h=f=>{let Z,A;return i.height&&!i.width?(A=i.height,Z=A/f):(Z=i.width??l.value.clientWidth,A=Z*f),[Z,A]},u=async(f=300,Z="",A=!1)=>{var N,W,Q;if(!a.value)return;const R=f/72,M=96/72;let w,Y,G;try{w=window.document.createElement("div"),w.style.display="none",window.document.body.appendChild(w),Y=await Xmt(w);const P=i.page&&!A?[i.page]:[...Array(a.value.numPages+1).keys()].slice(1);await Promise.all(P.map(async(j,X)=>{const ie=await a.value.getPage(j),se=ie.getViewport({scale:1,rotation:0});if(X===0){const Qe=se.width*R/M,He=se.height*R/M;Jmt(Y,Qe,He)}const pe=window.document.createElement("canvas");pe.width=se.width*R,pe.height=se.height*R,w.appendChild(pe);const Ue=pe.cloneNode();Y.contentWindow.document.body.appendChild(Ue),await ie.render({canvasContext:pe.getContext("2d"),intent:"print",transform:[R,0,0,R,0,0],viewport:se}).promise,Ue.getContext("2d").drawImage(pe,0,0)})),Z&&(G=window.document.title,window.document.title=Z),(N=Y.contentWindow)==null||N.focus(),(W=Y.contentWindow)==null||W.print()}finally{G&&(window.document.title=G),RO(w),(Q=w.parentNode)==null||Q.removeChild(w)}},m=async()=>{if(!(!a.value||r!=null&&r.isAborted))try{n.value=i.page?[i.page]:[...Array(a.value.numPages+1).keys()].slice(1),o.value=Array(n.value.length).fill(1),await Promise.all(n.value.map(async(f,Z)=>{const A=await a.value.getPage(f);if(r!=null&&r.isAborted)return;const N=((i.rotation%90===0?i.rotation:0)+A.rotate)%360,[W,Q,R]=Array.from(l.value.getElementsByClassName("vue-pdf-embed__page")[Z].children),M=!!(N/90%2),w=A.view[2]-A.view[0],Y=A.view[3]-A.view[1],[G,P]=h(M?w/Y:Y/w),j=`${Math.floor(G)}px`,X=`${Math.floor(P)}px`,ie=G/(M?Y:w),se=A.getViewport({scale:ie,rotation:N});o.value[Z]=ie,W.style.display="block",W.style.width=j,W.style.height=X;const pe=[p(A,se.clone({scale:se.scale*window.devicePixelRatio*i.scale}),W)];return i.textLayer&&pe.push(b(A,se.clone({dontFlip:!0}),Q)),i.annotationLayer&&pe.push(g(A,se.clone({dontFlip:!0}),R||Q)),Promise.all(pe)})),r!=null&&r.isAborted||t("rendered")}catch(f){n.value=[],o.value=[],r!=null&&r.isAborted||t("rendering-failed",f)}},p=async(f,Z,A)=>{A.width=Z.width,A.height=Z.height,await f.render({canvasContext:A.getContext("2d"),viewport:Z}).promise},g=async(f,Z,A)=>{sue(A),new Dmt({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:A,page:f,structTreeLayer:null,viewport:Z}).render({annotations:await f.getAnnotations(),div:A,imageResourcesPath:i.imageResourcesPath,linkService:d.value,page:f,renderForms:!1,viewport:Z})},b=async(f,Z,A)=>{sue(A),new Emt({container:A,textContentSource:await f.getTextContent(),viewport:Z}).render()};return Oc(a,f=>{f&&t("loaded",f)},{immediate:!0}),Oc(()=>[a.value,i.annotationLayer,i.height,i.imageResourcesPath,i.page,i.rotation,i.scale,i.textLayer,i.width],async([f])=>{f&&(r&&(r.isAborted=!0,await r.promise),RO(l.value),r={isAborted:!1,promise:m()},await r.promise,r=null)},{immediate:!0}),eme(()=>{RO(l.value)}),e({doc:a,download:c,print:u}),(f,Z)=>(ce(),we("div",{id:f.id,ref_key:"root",ref:l,class:"vue-pdf-embed"},[(ce(!0),we(Zt,null,Rt(n.value,(A,N)=>(ce(),we("div",{key:A},[Ed(f.$slots,"before-page",{page:A}),te("div",{id:f.id&&`${f.id}-${A}`,class:"vue-pdf-embed__page",style:uE({"--scale-factor":o.value[N],position:"relative"})},[o0t,f.textLayer?(ce(),we("div",l0t)):xn("",!0),f.annotationLayer?(ce(),we("div",r0t)):xn("",!0)],12,s0t),Ed(f.$slots,"after-page",{page:A})]))),128))],8,n0t))}});window!=null&&window.Vue&&(window.VuePdfEmbed=VSe,window.useVuePdfEmbed=LRe);NO!=null&&NO.workerSrc||(NO.workerSrc=xmt);const a0t={class:"pdf-container"},d0t={__name:"index",setup(s){const e=x(new URL(""+new URL("sample-630e7c77.pdf",import.meta.url).href,self.location).href),t=x(1.5);return(i,n)=>(ce(),we("div",a0t,[C(V(VSe),{source:e.value,scale:t.value},null,8,["source","scale"])]))}},c0t=im(d0t,[["__scopeId","data-v-f434d1b4"]]);const h1=s=>(OT("data-v-8d6340ea"),s=s(),jT(),s),h0t={class:"common-layout"},u0t={class:"main_container padding_gg"},m0t={class:"heder_tabs"},p0t={class:"imgzong Role"},g0t={class:"listitem lbg_color3 bkcolor3 threelist"},b0t={style:{display:"flex","align-items":"center"}},U0t=["src"],f0t={class:"listitem lbg_color3 bkcolor3"},F0t={class:"threelist"},Z0t=["onClick"],A0t=["onClick"],N0t={class:"listitem lbg_color3 bkcolor3"},R0t={class:"threelist"},S0t=["onClick"],W0t=["onClick"],V0t={class:"listitem lbg_color3 bkcolor3"},Q0t={class:"threelist"},y0t=["onClick"],C0t={class:"imgzong"},w0t={class:"listitem lbg_color3 bkcolor3 threelist"},M0t=["onClick"],T0t={class:"listitem lbg_color3 bkcolor3"},B0t={class:"threelist"},L0t=["onClick"],k0t={class:"imgzong"},I0t=["onClick"],D0t={class:"item2"},G0t={class:"imgzong"},E0t=["onClick"],v0t={class:"item2"},x0t={class:"imgzong"},J0t=["onClick"],X0t={class:"item2"},Y0t={class:"my-header"},z0t=["id"],_0t={class:"dialog-footer"},O0t={class:"my-header"},j0t=["id"],H0t={class:"numberinput"},P0t={class:"dialog-footer"},K0t={class:"my-header"},q0t=["id"],$0t={class:"numberinput"},ebt={class:"dialog-footer"},tbt={class:"my-header"},ibt=["id"],nbt={class:"numberinput"},sbt={class:"dialog-footer"},obt={class:"my-header"},lbt=["id"],rbt={class:"numberinput"},abt={class:"dialog-footer"},dbt={class:"my-header"},cbt=["id"],hbt={class:"numberinput"},ubt={class:"dialog-footer"},mbt={class:"my-header"},pbt=["id"],gbt={class:"sev_ruwu sev"},bbt={class:"disflex"},Ubt={class:"dialog-footer"},fbt={class:"my-header"},Fbt=["id"],Zbt={class:"sev_ruwu"},Abt={class:"disflex"},Nbt={class:"dialog-footer"},Rbt={class:"my-header"},Sbt=["id"],Wbt={class:"numberinput lefttext"},Vbt=h1(()=>te("span",null,"代理模型",-1)),Qbt=h1(()=>te("span",null,"加点准则",-1)),ybt=h1(()=>te("span",null,"优化算法",-1)),Cbt={class:"dialog-footer"},wbt={class:"my-header"},Mbt=["id"],Tbt={class:"dialog-footer"},Bbt={class:"my-header"},Lbt=["id"],kbt={class:"dialog-footer"},Ibt={class:"my-header"},Dbt=["id"],Gbt={class:"dialog-footer"},Ebt={class:"my-header"},vbt=["id"],xbt={class:"dialog-footer"},Jbt={class:"my-header"},Xbt=["id"],Ybt={class:"dialog-footer"},zbt={class:"my-header"},_bt=["id"],Obt={class:"cloudbox"},jbt=h1(()=>te("div",{style:{height:"300px"}},null,-1)),Hbt={class:"my-header"},Pbt=["id"],Kbt={class:"dialog-footer"},qbt={class:"my-header"},$bt=["id"],eUt={class:"dialog-footer"},tUt={class:"my-header"},iUt=["id"],nUt={class:"dialog-footer"},sUt={class:"my-header"},oUt=["id"],lUt={class:"numberinput lefttext"},rUt={class:"dialog-footer"},aUt={class:"my-header"},dUt=["id"],cUt={class:"dialog-footer"},hUt={class:"my-header"},uUt=["id"],mUt={class:"dialog-footer"},pUt={class:"my-header"},gUt=["id"],bUt={class:"numberinput lefttext"},UUt={class:"dialog-footer"},fUt={class:"my-header"},FUt=["id"],ZUt={class:"dialog-footer"},AUt={class:"my-header"},NUt=["id"],RUt={class:"numberinput lefttext"},SUt={class:"dialog-footer"},WUt={class:"my-header"},VUt=["id"],QUt={class:"dialog-footer"},yUt={class:"my-header"},CUt=["id"],wUt={class:"dialog-footer"},MUt={class:"my-header"},TUt=["id"],BUt={class:"dialog-footer"},LUt={class:"my-header"},kUt=["id"],IUt={class:"dialog-footer"},DUt={class:"my-header"},GUt=["id"],EUt={class:"footerp",style:{height:"500px",padding:"15px"}},vUt={class:"pythfoter"},xUt={class:"span active"},JUt=h1(()=>te("span",null,"信息栏 ",-1)),XUt={class:"dialog-footer"},YUt={class:"my-header"},zUt=["id"],_Ut={class:"dialog-footer"},OUt={class:"my-header"},jUt=["id"],HUt={class:"dialog-footer"},PUt={class:"main mianflex"},KUt={class:"main_container"},qUt={class:"main_model"},$Ut={class:"jindutiao"},eft={class:"demo-progress"},tft={class:"percentage-value"},ift={class:"main_model"},nft={class:"maxh221"},sft={class:"conter_mian classtable",style:{width:"100%",height:"100%"}},oft={key:0,class:"conter_mian classtable",style:{width:"100%",height:"100%"}},lft={key:1,class:"conter_mian classtable conter_flex",style:{width:"100%",height:"100%"}},rft={class:"echart_left ech"},aft={class:"echart_right ech"},dft={class:"conter_mian classtable echartcont"},cft={class:"gooterpading"},hft={class:"footerTitle el-tag--primary"},uft=["onClick"],mft={key:0},pft={key:0,class:"footerTextBox"},gft={key:1,class:"youhualog"},bft=["onClick"],Uft={class:"footer-content"},fft={key:0,class:"eldesign classtable"},Fft={key:1,class:"elconstraint classtable"},Zft={key:2,class:"eloptimize classtable"},Aft={class:"dibu"},Nft={class:"footer-add"},Rft={class:"sev_ruwu"},Sft={class:"disflex"},Wft=h1(()=>te("div",{class:"pading_foter"},null,-1)),Vft={__name:"home",setup(s){let e=x();x(0),x("");let t=x(),i=x(`import os
- import numpy as np
- from surromdao.solver import BaseSolver
- class Branin(BaseSolver):
- def __init__(self, filename=os.path):
- super().__init__(filename)
-
- def compute(self, xdict):
- x = np.zeros(2)
- # x[0] = xdict['x1']
- # x[1] = xdict['x2']`),n=x(),o=x(),l=x(),r=x(),a=x(),d=x(),c=x(),h=x(),u=x(),m=x("优化问题组件"),p=x("学科分析组件"),g=x("优化器组件"),b=x([{label:"优化问题",value:"优化问题"}]),f=x([{label:"进化优化器",value:"进化优化器",icon:ome},{label:"代理优化器",value:"代理优化器",icon:lme},{label:"梯度优化器",value:"梯度优化器",icon:rme}]);x(100),x(200),x([]);let Z=x({}),A=x({}),N=x({}),W=x(70),Q=x(!1),R=x(!0),M=x(!1),w=x(!1),Y=x(!1),G=x(!1),P=x(!1),j=x(!1),X=x(!1),ie=x(!1),se=x(!1),pe=x(!1),Ue=x(!1),Qe=x(),He=x(),Te=x(),xe=x(),Je=x(),Mt=x(),St=x(),Pe=x(!1);const Be=bQe(),rt=$ue();x({algorithm:"GA",popsize:100,epoch:100,probcrossover:.1,probmut:.1,proboperator:"SBX交叉",probscale:1,strategy:"最佳保留策略",operator:"倒位变异",gpu:"YES"});let Tt=x(null),qt=x(),yt=x(),fe=x(),Vi=x(),st=x([{label:"参数1",prop:"value1"},{label:"参数2",prop:"value2"},{label:"参数3",prop:"value3"},{label:"参数4",prop:"value4"},{label:"参数5",prop:"value5"}]);x({}),x({});let Fn=x([]),qi=x([]),Zo=x([{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"},{value1:"0.00",value2:"0.00",value3:"0.00",value4:"0.00",value5:"0.00"}]),is=x(""),Ao=x(null),js=x({lockReconnect:!1,timeout:28*1e3,timeoutObj:null,serverTimeoutObj:null,timeoutnum:null});x(),x("");let xl=x(""),wi=x("");x(""),x("");let rl=x(),yo=x();x(!1);let Dt=x(!0);x("Rosenbrock"),x("one");const oo=[{name:"信息栏",img:Ane},{name:"优化问题",img:SQe}],oh=[{name:"设计变量",noimg:yQe,isimg:WQe},{name:"约束条件",noimg:QQe,isimg:wQe},{name:"优化目标",noimg:VQe,isimg:CQe}];x([]),x(0),x([{date:"2016-05-04",name:"Aleyna Kutzner"},{date:"2016-05-03",name:"Helen Jacobi"}]),x([{date:"2016-05-04",name:"Aleyna Kutzner",con:-1},{date:"2016-05-03",name:"Helen Jacobi",con:1}]),x([]),x(0);let ou=x([{label:"GA",value:"GA"},{label:"PSO",value:"PSO"},{label:"NSGA2",value:"NSGA2"}]);x([{data:1,name:"结构质量",con:-1},{data:23,name:"KS失效",con:1},{data:0,name:"最大变形",con:-1}]),x([{label:"设计变量",value:"设计变量"},{label:"约束条件",value:"约束条件"},{label:"目标函数",value:"目标函数"}]);let Oa=x("");const al=x(0),je=x(0);x(0);const ut=x(""),cn=x("rgba(16, 185, 129, 0.5)");let $i=x(!1),ei=x("Xfoil");x([{id:1,label:"工程",children:[{id:"1-1",label:"优化问题",img:ime},{id:"1-2",label:"分析流程",img:nme},{id:"1-3",label:"优化器",img:sme}]}]);let ja=x([{label:"最大化",value:-1},{label:"最小化",value:1}]);x([{label:"升力系数",value:"升力系数"},{label:"翼型面积",value:"翼型面积"}]),x([{label:"大于",value:-1},{label:"小于",value:1}]),x([{label:"约束条件",value:-1},{label:"优化目标",value:1}]),x([]);let _i=x(""),hn=x(""),yr=x("");x("");const wd=x("Role");x("message");let Ai=x(""),Li=x(""),ma=x(!1),lh=x(100),Oi=x(170),No=x(130),hi=x(),ee=x([{url:"kk1.png",titlie:"列表"},{url:"kk2.png",titlie:"散点图"},{url:"kk4.png",titlie:"折线图"},{url:"kk8.png",titlie:"帕雷托图"},{url:"kk3.png",titlie:"面积图"},{url:"kk5.png",titlie:"柱状图"},{url:"k3.png",titlie:"饼状图"},{url:"kk6.png",titlie:"横条图"},{url:"kk7.png",titlie:"雷达图"},{url:"kk9.png",titlie:"云图/等值线"},{url:"kk10.png",titlie:"查看报告"},{url:"kk11.png",titlie:"导出报告"}]);x([{url:"f41.png",titlie:"测试函数模板"},{url:"r1.png",titlie:"工程优化模板"},{url:"r2.png",titlie:"自定义"}]),x([{url:"t0.png",titlie:"外形参数化"}]),x([{url:"tow1.png",titlie:"优化问题组件"},{url:"tow2.png",titlie:"学科分析组件"},{url:"tow3.png",titlie:"优化器组件"}]);let ne=x([{url:"l1.png",titlie:"逻辑流连线"},{url:"l2.png",titlie:"数据流连线"}]),le=x([{url:"w6.png",titlie:"选择连线颜色"}]),ue=x([{url:"cai1.png",titlie:"模块组合"},{url:"cai2.png",titlie:"模块拆分"}]),be=x([{url:"w9.png",titlie:"选择图框颜色"}]),Ce=x([{url:"w10.png",titlie:"添加注释"}]),Xe=x([{url:"you1.png",titlie:"开始"},{url:"you2.png",titlie:"暂停"},{url:"you3.png",titlie:"续算"},{url:"tts.png",titlie:"结束"}]),Nt=x([{url:"yh1.png",titlie:"列表监控"},{url:"yh2.png",titlie:"曲线监控"},{url:"yh3.png",titlie:"过程监控"}]),Bt=x([{url:"rr2.png",titlie:"任务检索"},{url:"rr1.png",titlie:"任务管理"},{url:"rr3.png",titlie:"备份"}]),Ni=x([{url:"e1.png",titlie:"用户手册"},{url:"e2.png",titlie:"帮助文档"},{url:"e3.png",titlie:"关于软件"}]),un=x([{label:"CST参数化",value:"CST参数化"},{label:"FFD参数化",value:"FFD参数化"}]),Zn=x([{label:"任务编号",value:"任务编号"},{label:"任务名称",value:"任务名称"},{label:"任务类型",value:"任务类型"},{label:"创建时间",value:"创建时间"}]),Vn=x("任务名称"),ns=x([{label:"Kriging模型",value:"Kriging模型"},{label:"相关函数类型",value:"相关函数类型"},{label:"超参数优化方法",value:"超参数优化方法"},{label:"Hooke Jeeves方法循环次数",value:"Hooke Jeeves方法循环次数"}]),mo=x("Kriging模型"),xs=x("固定设计空间"),Cr=x("拉丁超立方"),Ht=x([{label:"固定设计空间",value:"固定设计空间"}]),Ae=x([{label:"拉丁超立方",value:"拉丁超立方"}]),ct=x("EI + MSP"),Yt=x([{label:"EI + MSP",value:"EI + MSP"}]),Bn=x("概率相乘法"),Ro=x([{label:"概率相乘法",value:"概率相乘法"}]),So=x("SBX交叉"),Jl=x([{label:"SBX交叉",value:"SBX交叉"}]),dr=x("最佳保留策略"),Fc=x("GA"),Xl=x([{label:"最佳保留策略",value:"最佳保留策略"}]),lu=x("倒位变异"),mN=x([{label:"倒位变异",value:"倒位变异"}]),pN=x("1e-7"),JB=x([{label:"1e-7",value:"1e-7"}]),Wf=x("NO"),u1=x([{label:"YES",value:"YES"},{label:"NO",value:"NO"}]),ru=x([]),wr=x([{label:"-cl",value:"-cl"},{label:"cd",value:"cd"}]),E0=x([{url:"meshFile.png",btnname:"文件选择"},{url:"yu.png",btnname:"域"},{url:"kk9.png",btnname:"云图"},{url:"seka.png",btnname:"色卡"},{url:"dengzx.png",btnname:"等值线"}]),We=x({newdialog:!1,setdialog:!1,targetdialog:!1,design:!1,constraint:!1,parameter:!1,agency:!1,optimizer:!1,jboptimizer:!1,dboptimizer:!1,tboptimizer:!1,isADflow:!1,lookover:!1,exportreport:!1,Xfiol:!1,tidu:!1,CSTt:!1,ffdt:!1,XfAD:!1,cstffd:!1,Taxs:!1,enddialog:!1,addfun:!1,sufun:!1,task:!1,guanli:!1,optgroup:!1,Pythonshow:!1,listdialog:!1,scatterdialog:!1,echartLinedialog:!1,paretodialog:!1,clouddialog:!1,fsidialog:!1,flightdialog:!1});x([{label:"升阻比",value:"升阻比"},{label:"RCS",value:"RCS"}]),x([{label:"气动",value:"气动"},{label:"结构",value:"结构"},{label:"隐身",value:"隐身"},{label:"噪声",value:"噪声"}]);const Jz=[{label:"大飞机",options:[{value:"气动优化",label:"气动优化"},{value:"气弹优化",label:"气弹优化"}]},{label:"直升机",options:[{value:"气动优化1",label:"气动优化"},{value:"气弹优化2",label:"气弹优化"},{value:"气动噪声优化",label:"气动噪声优化"}]}],v0=x([]),cm=x([]),Jp=x([]),Vf=x([]),XB=[{color:"#f56c6c",percentage:20},{color:"#f56c6c",percentage:40},{color:"#5cb87a",percentage:60},{color:"#5cb87a",percentage:80},{color:"#5cb87a",percentage:100}];let tn=x("1"),ui=x(1);const Sn=ze=>new URL(Object.assign({"../assets/img/ADflow.png":TSe,"../assets/img/Framem.png":BSe,"../assets/img/aero.png":LSe,"../assets/img/analysisParams.png":kSe,"../assets/img/baog.png":ISe,"../assets/img/cai1.png":DSe,"../assets/img/cai2.png":GSe,"../assets/img/configParams.png":ESe,"../assets/img/csh.png":vSe,"../assets/img/dengzx.png":xSe,"../assets/img/e1.png":JSe,"../assets/img/e2.png":XSe,"../assets/img/e3.png":YSe,"../assets/img/f11.png":zSe,"../assets/img/f12.png":_Se,"../assets/img/f13.png":OSe,"../assets/img/f21.png":jSe,"../assets/img/f22.png":HSe,"../assets/img/f31.png":PSe,"../assets/img/f32.png":KSe,"../assets/img/f33.png":qSe,"../assets/img/f41.png":$Se,"../assets/img/ffd.png":eWe,"../assets/img/flight1.png":tWe,"../assets/img/flight2.png":iWe,"../assets/img/flight3.png":nWe,"../assets/img/flight4.png":sWe,"../assets/img/gc.png":oWe,"../assets/img/gc1.png":lWe,"../assets/img/gc2.png":rWe,"../assets/img/gc3.png":aWe,"../assets/img/inputParams.png":dWe,"../assets/img/jia.png":cWe,"../assets/img/jian.png":hWe,"../assets/img/k1.png":uWe,"../assets/img/k2.png":mWe,"../assets/img/k3.png":pWe,"../assets/img/k4.png":gWe,"../assets/img/k5.png":bWe,"../assets/img/k6.png":UWe,"../assets/img/k7.png":fWe,"../assets/img/k8.png":FWe,"../assets/img/k9.png":ZWe,"../assets/img/kk1.png":AWe,"../assets/img/kk10.png":NWe,"../assets/img/kk11.png":RWe,"../assets/img/kk2.png":SWe,"../assets/img/kk3.png":WWe,"../assets/img/kk4.png":VWe,"../assets/img/kk5.png":QWe,"../assets/img/kk6.png":yWe,"../assets/img/kk7.png":CWe,"../assets/img/kk8.png":wWe,"../assets/img/kk9.png":MWe,"../assets/img/l1.png":TWe,"../assets/img/l2.png":BWe,"../assets/img/meshFile.png":LWe,"../assets/img/mob.png":kWe,"../assets/img/nos.png":IWe,"../assets/img/noz.png":DWe,"../assets/img/open.png":GWe,"../assets/img/open2.png":EWe,"../assets/img/open3.png":vWe,"../assets/img/q0.png":xWe,"../assets/img/q1.png":JWe,"../assets/img/q2.png":XWe,"../assets/img/q3.png":YWe,"../assets/img/r1.png":zWe,"../assets/img/r2.png":_We,"../assets/img/rr1.png":OWe,"../assets/img/rr2.png":jWe,"../assets/img/rr3.png":HWe,"../assets/img/s.png":PWe,"../assets/img/s0.png":KWe,"../assets/img/s1.png":qWe,"../assets/img/s2.png":$We,"../assets/img/s3.png":eVe,"../assets/img/seka.png":tVe,"../assets/img/ss.png":iVe,"../assets/img/ss1.png":nVe,"../assets/img/ss2.png":sVe,"../assets/img/t0.png":oVe,"../assets/img/t1.png":lVe,"../assets/img/t2.png":rVe,"../assets/img/t3.png":aVe,"../assets/img/t4.png":dVe,"../assets/img/tow1.png":cVe,"../assets/img/tow2.png":hVe,"../assets/img/tow3.png":uVe,"../assets/img/tt.png":mVe,"../assets/img/tt1.png":pVe,"../assets/img/tt2.png":gVe,"../assets/img/tt3.png":bVe,"../assets/img/tts.png":UVe,"../assets/img/w.png":fVe,"../assets/img/w1.png":FVe,"../assets/img/w10.png":ZVe,"../assets/img/w2.png":AVe,"../assets/img/w3.png":NVe,"../assets/img/w4.png":RVe,"../assets/img/w5.png":SVe,"../assets/img/w6.png":WVe,"../assets/img/w7.png":VVe,"../assets/img/w8.png":QVe,"../assets/img/w9.png":yVe,"../assets/img/wen.png":CVe,"../assets/img/xin.png":wVe,"../assets/img/xin2.png":MVe,"../assets/img/xuek0.png":TVe,"../assets/img/xuek1.png":BVe,"../assets/img/xuek10.png":LVe,"../assets/img/xuek11.png":kVe,"../assets/img/xuek12.png":IVe,"../assets/img/xuek2.png":DVe,"../assets/img/xuek3.png":GVe,"../assets/img/xuek4.png":EVe,"../assets/img/xuek5.png":vVe,"../assets/img/xuek6.png":xVe,"../assets/img/xuek7.png":JVe,"../assets/img/xuek8.png":XVe,"../assets/img/xuek9.png":YVe,"../assets/img/y.png":zVe,"../assets/img/y2.png":_Ve,"../assets/img/yh1.png":OVe,"../assets/img/yh2.png":jVe,"../assets/img/yh3.png":HVe,"../assets/img/you1.png":PVe,"../assets/img/you2.png":KVe,"../assets/img/you3.png":qVe,"../assets/img/youh1.png":$Ve,"../assets/img/youh2.png":eQe,"../assets/img/youh3.png":tQe,"../assets/img/yu.png":iQe,"../assets/img/zy.png":nQe,"../assets/img/zy2.png":sQe})[`../assets/img/${ze}`],self.location).href;na(()=>{setTimeout(function(){Yz(),UN(),wf()},1500)});const YB=(ze,O)=>{console.log(ze),Jp.value.splice(ze,1)},Qf=(ze,O)=>{cm.value.splice(ze,1)},Xz=(ze,O)=>{v0.value.splice(ze,1)},Yz=()=>{wi.value=rt.query.pid,console.log(rt.query.pid)},Xp=(ze,O)=>{console.log("标签页:",ze.props.name),Li.value=ze.props.name,Li.value=="User"&&Be.replace({path:"/"}),Li.value=="Role"?(R.value=!0,console.log(11111)):(R.value=!1,console.log(R.value)),x0(),m1(),Li.value=="Config"?(Pe.value=!0,jB()):Pe.value=!1},Nl=ze=>{},m1=()=>{We.value.newdialog=!1,We.value.setdialog=!1,We.value.targetdialog=!1,We.value.design=!1,We.value.constraint=!1,We.value.parameter=!1,We.value.agency=!1,We.value.addfun=!1,We.value.sufun=!1,We.value.enddialog=!1,We.value.task=!1,We.value.guanli=!1},zz=ze=>{console.log("双击",ze),ze=="优化器"?(ei.value="代理优化器",yf(),We.value.optgroup=!0):ze=="参数化"?(ei.value="CST",zB(),We.value.cstffd=!0):ze=="气动分析"?(ei.value="Xfoil",p1(),We.value.XfAD=!0):ze=="进化优化器"?(ei.value="进化优化器",We.value.jboptimizer=!0,ro(()=>{a.value&&a.value.getoptimize(wi.value)})):ze=="代理优化器"?(ei.value="代理优化器",We.value.dboptimizer=!0,ro(()=>{d.value&&d.value.getDoptimize(wi.value)})):ze=="梯度优化器"?(ei.value="梯度优化器",We.value.tboptimizer=!0,ro(()=>{c.value&&c.value.getToptimize(wi.value)})):ze=="CST"?(ei.value="CST",We.value.CSTt=!0,ro(()=>{n.value&&n.value.getcst(wi.value)})):ze=="FFD"?(ei.value="FFD",We.value.ffdt=!0,ro(()=>{o.value&&o.value.getffds(wi.value)})):ze=="ADflow"?(ei.value="ADflow",We.value.isADflow=!0,ro(()=>{r.value&&r.value.getadflow(wi.value)})):ze=="Xfoil"?(We.value.Xfiol=!0,ro(()=>{l.value&&l.value.getxfoil(wi.value)})):ze=="TACS"?We.value.Taxs=!0:ze=="模版"?(We.value.optgroup=!0,ei.value="代理优化器"):ze=="Python"?(We.value.Pythonshow=!0,_B()):ze=="FUM to FEM"?We.value.fsidialog=!0:ze=="Flight"?We.value.flightdialog=!0:(We.value.optimizer=!1,We.value.jboptimizer=!1,We.value.Xfiol=!1,We.value.lookover=!1,We.value.tidu=!1,We.value.CSTt=!1,We.value.XfAD=!1,We.value.cstffd=!1,We.value.Pythonshow=!1,We.value.fsidialog=!1,We.value.flightdialog=!1)},yf=()=>{const ze={transCode:"MDO0018",pid:wi.value},O={transCode:"MDO0031",pid:wi.value},zt={transCode:"MDO0033",pid:wi.value};Promise.all([rs(ze),rs(O),rs(zt)]).then(([ri,Ri,bi])=>{console.log("1:",ri.checked),console.log("2:",Ri.checked),console.log("3:",bi.checked),ri.hasOwnProperty("eid")?a.value.getoptimizeAssign(ri):bi.hasOwnProperty("grid")?c.value.getToptimizeAssign(bi):Ri.hasOwnProperty("suid")&&d.value.getDoptimizeAssign(Ri),ri.checked===1?ei.value="进化优化器":Ri.checked===1?ei.value="代理优化器":bi.checked===1&&(ei.value="梯度优化器"),console.log("Updated activeadf:",ei.value)}).catch(ri=>{console.error("请求失败:",ri)})},zB=()=>{const ze={transCode:"MDO0040",pid:wi.value},O={transCode:"MDO0043",pid:wi.value};Promise.all([rs(ze),rs(O)]).then(([zt,ri])=>{console.log("1:",zt.checked),console.log("2:",ri.checked),zt.hasOwnProperty("cstid")?n.value.getcstAssign(zt):ri.hasOwnProperty("ffdid")&&o.value.getffdsAssign(ri),zt.checked===1?ei.value="CST":ri.checked===1&&(ei.value="FFD"),console.log("Updated activeadf:",ei.value)}).catch(zt=>{console.error("请求失败:",zt)})},p1=()=>{const ze={transCode:"MDO0046",pid:wi.value},O={transCode:"MDO0049",pid:wi.value};Promise.all([rs(ze),rs(O)]).then(([zt,ri])=>{console.log("1:",zt.checked),console.log("2:",ri.checked),zt.hasOwnProperty("xfid")?l.value.getxfoilAssign(zt):ri.hasOwnProperty("adid")&&r.value.getadflowAssign(ri),zt.checked===1?ei.value="Xfoil":ri.checked===1&&(ei.value="ADflow"),console.log("Updated activeadf:",ei.value)}).catch(zt=>{console.error("请求失败:",zt)})},_B=()=>{console.log("Pythonchushihua");const ze={transCode:"MDO0036",pid:wi.value};rs(ze).then(O=>{console.log("Python:",O),O.ptython&&(i.value=O.ptython)}).catch(O=>{console.error("请求失败:",O)})},OB=()=>{console.log("Python确认按钮提交");const ze={transCode:"MDO0037",pid:wi.value,python:i.value};rs(ze).then(O=>{console.log("Python确认按钮提交:",O)}).catch(O=>{console.error("请求失败:",O)})},_z=ze=>{console.log("Editor content changed in parent component:",ze)},pa=(ze,O,zt,ri)=>{console.log(zt),console.log("模块选择:",ri),Li.value=ri,Oz()},Oz=()=>{switch(Li.value){case"新建任务":We.value.newdialog=!0;break;case"问题设定":We.value.setdialog=!0;break;case"优化目标":We.value.targetdialog=!0;break;case"设计变量":We.value.design=!0;break;case"约束条件":We.value.constraint=!0;break;case"外形参数化":We.value.parameter=!0;break;case"代理模型":We.value.agency=!0;break;case"加点方法":We.value.addfun=!0;break;case"优化算法":We.value.sufun=!0;break;case"终止条件":We.value.enddialog=!0;break;case"任务管理":We.value.task=!0;break;case"任务检索":We.value.guanli=!0;break;case"选择连线颜色":$i.value=!0;break;case"逻辑流连线":yo.value.linestrokeWidth(1);break;case"数据流连线":yo.value.linestrokeWidth(3);break;case"模块组合":yo.value.bgcolorfunc(cn.value),yo.value.onSelection();break;case"开始":jz();break;case"列表监控":x0();break;case"曲线监控":x0(),jB();break;case"过程监控":x0();break;case"列表":rh(),We.value.listdialog=!0;break;case"面积图":rh();break;case"饼状图":rh();break;case"柱状图":rh();break;case"折线图":We.value.echartLinedialog=!0,rh();break;case"散点图":We.value.scatterdialog=!0,rh();break;case"横条图":rh();break;case"雷达图":rh();break;case"帕雷托图":We.value.paretodialog=!0,rh();break;case"云图/等值线":We.value.clouddialog=!0;break;case"查看报告":rh(),We.value.lookover=!0;break;case"导出报告":We.value.exportreport=!0;break}},rh=()=>{switch(Li.value){case"面积图":G.value=!0,X.value=!1,P.value=!1,j.value=!1,se.value=!1,ie.value=!1,pe=!1,Ue=!1;break;case"柱状图":G.value=!1,X.value=!0,P.value=!1,j.value=!1,se.value=!1,ie.value=!1,pe=!1,Ue=!1;break;case"饼状图":G.value=!1,X.value=!1,P.value=!1,j.value=!1,se.value=!1,ie.value=!1,pe=!0,Ue=!1;break;case"折线图":G.value=!1,X.value=!1,P.value=!0,j.value=!1,se.value=!1,ie.value=!1,pe=!1,Ue=!1;break;case"散点图":G.value=!1,X.value=!1,P.value=!1,j.value=!1,se.value=!1,ie.value=!0,pe=!1,Ue=!1;break;case"横条图":G.value=!1,X.value=!1,P.value=!1,j.value=!0,se.value=!1,ie.value=!1,pe=!1,Ue=!1;break;case"雷达图":G.value=!1,X.value=!1,P.value=!1,j.value=!1,se.value=!0,ie.value=!1,pe=!1,Ue=!1;break;case"帕雷托图":G.value=!1,X.value=!1,P.value=!1,j.value=!1,se.value=!1,ie.value=!1,pe=!1,Ue=!0;break;default:G.value=!1,X.value=!1,P.value=!1,j.value=!1,se.value=!1,ie.value=!1,pe=!1,Ue=!1;break}},x0=()=>{wd.value=="Three"&&Li.value=="列表监控"||wd.value=="Three"&&Li.value=="开始"?M.value=!0:M.value=!1,wd.value=="Three"&&Li.value=="曲线监控"?w.value=!0:w.value=!1,wd.value=="Three"&&Li.value=="过程监控"?Y.value=!0:Y.value=!1},jz=()=>{const ze={transCode:"MDO0039",pid:wi.value};rs(ze).then(O=>{xl.value="",qi.value=[],Fn.value=[],Zo.value=[],st.value=[],Cn({message:"开始运行",type:"success"})}).catch(O=>{Cn.error(O.returnMsg)})},jB=()=>{const ze={transCode:"MDO0021",pid:wi.value};rs(ze).then(O=>{is.value=JSON.stringify(O.rows),Vi.value.getsockechart(is.value),Qe.value.getsockechart(is.value),He.value.getsockechart(is.value),Te.value.getsockechart(is.value),xe.value.getsockechart(is.value),St.value.getsockechart(is.value),Je.value.getsockechart(is.value),Mt.value.getsockechart(is.value)}).catch(O=>{Cn.error(O.returnMsg)})},Hz=ze=>{console.log("color change:",yo.value),yo.value.changeAllEdgesColor(ut.value)},Pz=ze=>{yo.value.bgcolorfunc(cn.value)},ps=ze=>{console.log(111),We.value.newdialog=!1,ze()},Kz=()=>{let ze=Number(rl.value)>1?Number(rl.value):1;if(je.value==0)for(let O=0;O<ze;O++)Jp.value.push({name:`x${O+1}`,upper:null,lower:null,reference:null,remark:""});else if(je.value==1)for(let O=0;O<ze;O++)cm.value.push({name:`g${O+1}`,con:-1,reference:null,upper:0,lower:0});else if(je.value==2)for(let O=0;O<ze;O++)v0.value.push({name:`c${O+1}`,optdir:1,weight:0,scaling:0,factor:0,reference:null,remark:""})},qz=ze=>{al.value=ze,al.value==0||al.value==1&&Cf()},HB=ze=>{je.value=ze,je.value==0?Cf():je.value==1?g1():je.value==2&&gN()},Cf=()=>{const ze={transCode:"MDO0022",pid:wi.value};rs(ze).then(O=>{if(O.rows.length!==0){let zt={id:"1-1-1",label:"设计变量",img:RQe,children:[]},Ri=e.value.datatree[0].children[0].children.find(ni=>ni.id===zt.id);console.log(Ri),Ri||e.value.datatree[0].children[0].children.push(zt);let bi=e.value.datatree[0].children[0].children;e.value.datatree[0].children[0].children.forEach((ni,Wo)=>{ni.label=="设计变量"&&(e.value.datatree[0].children[0].children[Wo].children=[])}),O.rows=O.rows.map((ni,Wo)=>(ni.lower=Number(ni.lower),ni.upper=Number(ni.upper),ni.reference=Number(ni.reference),Z.value={id:"1-1-1-"+Wo,label:ni.name,img:c9},bi.forEach((zl,Un)=>{zl.label=="设计变量"&&e.value.datatree[0].children[0].children[Un].children.push(Z.value)}),ni)),Jp.value=O.rows}}).catch(O=>{Cn.error(O.returnMsg)})},g1=()=>{const ze={transCode:"MDO0023",pid:wi.value};rs(ze).then(O=>{if(O.rows.length!==0){let zt={id:"1-2-2",label:"约束条件",img:fQe,children:[]};e.value.datatree[0].children[0].children.find(ni=>ni.id===zt.id)||e.value.datatree[0].children[0].children.push(zt),e.value.datatree[0].children[0].children.forEach((ni,Wo)=>{ni.label=="约束条件"&&(e.value.datatree[0].children[0].children[Wo].children=[])});let bi=e.value.datatree[0].children[0].children;O.rows=O.rows.map((ni,Wo)=>(ni.con=Number(ni.con),ni.reference=Number(ni.reference),ni.upper=Number(ni.upper),ni.lower=Number(ni.lower),console.log("item:",ni),A.value={id:"1-2-2-"+Wo,label:ni.name,img:c9},bi.forEach((zl,Un)=>{zl.label=="约束条件"&&e.value.datatree[0].children[0].children[Un].children.push(A.value)}),ni)),cm.value=O.rows}}).catch(O=>{Cn.error(O.returnMsg)})},gN=()=>{const ze={transCode:"MDO0024",pid:wi.value};rs(ze).then(O=>{if(O.rows.length!==0){let zt={id:"1-3-3",label:"目标函数",img:oQe,children:[]};e.value.datatree[0].children[0].children.find(ni=>ni.id===zt.id)||e.value.datatree[0].children[0].children.push(zt),e.value.datatree[0].children[0].children.forEach((ni,Wo)=>{ni.label=="目标函数"&&(e.value.datatree[0].children[0].children[Wo].children=[])});let bi=e.value.datatree[0].children[0].children;O.rows=O.rows.map((ni,Wo)=>(ni.optdir=Number(ni.optdir),ni.weight=Number(ni.weight),ni.scaling=Number(ni.scaling),ni.factor=Number(ni.factor),ni.reference=Number(ni.reference),ni.remark=ni.remark,N.value={id:"1-3-3-"+Wo,label:ni.name,img:c9},bi.forEach((zl,Un)=>{zl.label=="目标函数"&&e.value.datatree[0].children[0].children[Un].children.push(N.value)}),ni)),v0.value=O.rows}}).catch(O=>{Cn.error(O.returnMsg)})},bN=(ze,O)=>(console.log("Data:",O),ze=O.map(zt=>Object.keys(zt).filter(ri=>!ri.includes("id")).map(ri=>{const Ri=zt[ri];return Ri==null||Ri===""?" ":Ri}).join(",")).join(";"),ze),PB=()=>{console.log(je.value),je.value==0?(_i.value="",console.log("designtable:",Jp.value),_i.value=bN(_i.value,Jp.value),b1()):je.value==1?(hn.value="",console.log("tabledata:",cm.value),hn.value=bN(hn.value,cm.value),$z()):je.value==2&&(yr.value="",console.log("eloptimize:",v0.value),yr.value=bN(yr.value,v0.value),e9())},b1=()=>{const ze={transCode:"MDO0008",pid:wi.value,varlist:_i.value};rs(ze).then(O=>{Cn({message:O.returnMsg,type:"success"}),Cf()}).catch(O=>{Cn.error(O.returnMsg)})},$z=()=>{const ze={transCode:"MDO0009",pid:wi.value,conlist:hn.value};rs(ze).then(O=>{Cn({message:O.returnMsg,type:"success"}),g1()}).catch(O=>{Cn.error(O.returnMsg)})},e9=()=>{const ze={transCode:"MDO0010",pid:wi.value,funlist:yr.value};rs(ze).then(O=>{Cn({message:O.returnMsg,type:"success"}),gN()}).catch(O=>{Cn.error(O.returnMsg)})};function KB(ze){let O=ze,zt=qi.value[0].vars.split(",");st.value=[],zt.forEach(function(bi){let ni={label:bi,prop:bi};st.value.push(ni)});const Ri=zt.map((bi,ni)=>({[bi]:O[ni]})).reduce((bi,ni)=>({...bi,...ni}),{});Zo.value.push(Ri)}const wf=()=>{const ze={transCode:"MDO0025",pid:wi.value};rs(ze).then(O=>{xl.value=O.logs.split(`
- `).filter(ri=>ri.trim()!=="").join(`
- `);const zt=qB(xl.value);for(let ri=0;ri<zt.length;ri++){qi.value.push(zt[ri]);let Ri=zt[ri].vals.split(" ");KB(Ri);let bi=[];bi.push(zt[ri]),qt.value.getsockechart(bi),yt.value.getsockechart(bi),fe.value.getsockechart(bi)}}).catch(O=>{Cn.error(O.returnMsg)})};function qB(ze){const O=/\{[^}]+\}/g,zt=ze.match(O);return zt?zt.map(ri=>{try{return JSON.parse(ri)}catch{return console.error("Failed to parse object:",ri),null}}).filter(Boolean):[]}function UN(){const ze="wss://www.adicn.com/airoptwebsocket?projectId="+wi.value;Ao=new WebSocket(ze),Ao.onopen=t9,Ao.onmessage=i9,Ao.onerror=n9,Ao.onclose=S}const t9=ze=>{console.log("WebSocket连接成功",ze),console.log(),I()},i9=ze=>{if(qi.value=[],ze.data.indexOf("{")!==-1){Q.value=!0;let O=Number(JSON.parse(ze.data).step);W.value=Number(O/20*100),console.log(W.value),Tt.value=ze.data,qi.value.push(JSON.parse(ze.data));let zt=JSON.parse(ze.data).vals.split(" ");KB(zt),qt.value.getsockechart(qi.value),yt.getsockechart(qi.value),fe.getsockechart(qi.value),Vi.value.getsockechart(qi.value),Qe.value.getsockechart(qi.value),He.value.getsockechart(qi.value),Te.value.getsockechart(qi.value),xe.value.getsockechart(qi.value),St.value.getsockechart(qi.value),Je.value.getsockechart(qi.value),Mt.value.getsockechart(qi.value)}else if(ze.data.indexOf("——成功")!==-1&&setTimeout(function(){Q.value=!1,console.log("关闭定时器")},1e4),ze.data.indexOf("msg=heartChec")==-1){const O=ze.data.split(`
- `).filter(ri=>ri.trim()!=="").join(`
- `);xl.value=xl.value+`
- `+O;let zt=document.getElementById("textarea_id");zt.scrollTop=zt.scrollHeight}B()},n9=ze=>{console.log("连接错误",ze),Ao.close(),y()},S=ze=>{console.log("断开连接",ze)},y=()=>{js.value.lockReconnect||(js.value.lockReconnect=!0,js.value.timeoutnum&&clearTimeout(js.value.timeoutnum),js.value.timeoutnum=setTimeout(function(){UN(),js.value.lockReconnect=!1},1e4))},B=()=>{clearTimeout(js.value.timeoutObj),clearTimeout(js.value.serverTimeoutObj),I()},I=()=>{js.value.timeoutObj&&clearTimeout(js.value.timeoutObj),js.value.serverTimeoutObj&&clearTimeout(js.value.serverTimeoutObj),js.value.timeoutObj=setTimeout(function(){Ao.readyState==1?Ao.send("heartCheck"):y(),js.value.serverTimeoutObj=setTimeout(function(){Ao.close()},js.value.timeout)},js.value.timeout)},z=ze=>{ze=="claer"?xl.value="":Dt.value=!Dt.value},_=(ze,O)=>{console.log("表单切换",ze.props.label),ei.value=ze.props.label,ze.props.name==="进化优化器"?ro(()=>{a.value&&a.value.getoptimize(wi.value)}):ze.props.name==="代理优化器"?ro(()=>{d.value&&d.value.getDoptimize(wi.value)}):ze.props.name==="梯度优化器"&&ro(()=>{c.value&&c.value.getToptimize(wi.value)})},$=()=>{a.value&&typeof a.value.getaddsave=="function"&&a.value.getaddsave()},me=()=>{d.value&&typeof d.value.getaddDsave=="function"&&d.value.getaddDsave()},he=()=>{c.value&&typeof c.value.getaddTsave=="function"&&c.value.getaddTsave()},Se=ze=>{ze=="进化优化器"?$():ze=="代理优化器"?me():ze=="梯度优化器"&&he()},_e=(ze,O)=>{console.log("表单切换",ze.props.label),ei.value=ze.props.label,ze.props.name==="CST"?ro(()=>{n.value&&n.value.getcst(wi.value)}):ze.props.name==="FFD"&&ro(()=>{o.value&&o.value.getffds(wi.value)})},tt=()=>{n.value&&n.value.getcstsave(),We.value.CSTt=!1},Ie=()=>{o.value&&o.value.getffdsave(),We.value.ffdt=!1},mt=ze=>{ze=="CST"?tt():ze=="FFD"&&Ie()},Hi=(ze,O)=>{console.log("表单切换",ze.props.label),ei.value=ze.props.label,ze.props.name==="Xfoil"?ro(()=>{l.value&&(console.log("pid-0:",wi.value),l.value.getxfoil(wi.value))}):ze.props.name==="ADflow"&&ro(()=>{r.value&&r.value.getadflow(wi.value)})},Ln=()=>{l.value&&l.value.getxfoilsave()},mn=()=>{r.value&&r.value.getadflowsave()},Yl=ze=>{ze=="Xfoil"?Ln():ze=="ADflow"&&mn()};let ys=x(!1),jo=x({fileselect:!1,domain:!1,cloud:!1,colorchart:!1,isoline:!1}),Mr=x("");const yn=ze=>{switch(jo.value.fileselect=!1,jo.value.domain=!1,jo.value.cloud=!1,jo.value.colorchart=!1,jo.value.isoline=!1,ze){case"文件选择":jo.value.fileselect=!0,Mr.value="文件选择";break;case"域":jo.value.domain=!0,Mr.value="域";break;case"云图":jo.value.cloud=!0,Mr.value="云图";break;case"色卡":jo.value.colorchart=!0,Mr.value="色卡";break;case"等值线":jo.value.isoline=!0,Mr.value="等值线";break}ys.value=!0};return(ze,O)=>{const zt=qe("el-header"),ri=qe("el-tab-pane"),Ri=qe("el-image"),bi=qe("el-option"),ni=qe("el-option-group"),Wo=qe("el-color-picker"),zl=qe("el-tabs"),Un=qe("el-input"),mi=qe("el-form-item"),Ha=qe("el-form"),Co=qe("el-input-number"),Wn=qe("el-table-column"),J0=qe("el-table"),U1=qe("el-checkbox"),$B=qe("el-checkbox-group"),As=qe("el-card"),Mf=qe("el-col"),Zc=qe("el-row"),X0=qe("el-progress"),s9=qe("el-footer"),o9=qe("el-main"),eL=qe("el-container");return ce(),we("div",h0t,[C(eL,null,{default:T(()=>[C(zt,null,{default:T(()=>[C(UQe)]),_:1}),C(o9,null,{default:T(()=>[te("div",u0t,[te("div",m0t,[C(zl,{modelValue:wd.value,"onUpdate:modelValue":O[10]||(O[10]=D=>wd.value=D),type:"card",class:"demo-tabs",onTabClick:Xp},{default:T(()=>[C(ri,{label:"首页",name:"User"}),C(ri,{label:"问题设定",name:"Role"},{default:T(()=>[te("div",p0t,[te("div",g0t,[te("div",{class:"item2 margr",onClick:O[1]||(O[1]=D=>pa(D,ze.index,"Role-2",V(g)))},[C(Ri,{src:Sn("tow1.png"),fit:"cover"},null,8,["src"]),te("span",null,zn(V(m)),1),C(V(Ei),{modelValue:V(m),"onUpdate:modelValue":O[0]||(O[0]=D=>Ft(m)?m.value=D:m=D),class:"no-border headersele","suffix-icon":V(Ki)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(b),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),te("div",{class:"item2 margr",onClick:O[3]||(O[3]=D=>pa(D,ze.index,"Role-1",V(p)))},[C(Ri,{src:Sn("tow2.png"),fit:"cover"},null,8,["src"]),te("span",null,zn(V(p)),1),C(V(Ei),{modelValue:V(p),"onUpdate:modelValue":O[2]||(O[2]=D=>Ft(p)?p.value=D:p=D),class:"no-border headersele","suffix-icon":V(Ki)},{default:T(()=>[(ce(),we(Zt,null,Rt(Jz,D=>C(ni,{key:D.label,label:D.label},{default:T(()=>[(ce(!0),we(Zt,null,Rt(D.options,Ve=>(ce(),ft(bi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:2},1032,["label"])),64))]),_:1},8,["modelValue","suffix-icon"])]),te("div",{class:"item2 margr",onClick:O[5]||(O[5]=D=>pa(D,ze.index,"Role-2",V(g)))},[C(Ri,{src:Sn("tow3.png"),fit:"cover"},null,8,["src"]),te("span",null,zn(V(g)),1),C(V(Ei),{modelValue:V(g),"onUpdate:modelValue":O[4]||(O[4]=D=>Ft(g)?g.value=D:g=D),class:"no-border headersele","suffix-icon":V(Ki)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(f),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},{default:T(()=>[te("div",b0t,[te("img",{src:D.icon,style:{width:"20px",height:"20px","margin-right":"10px"}},null,8,U0t),te("span",null,zn(D.label),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])])]),te("div",f0t,[te("div",F0t,[(ce(!0),we(Zt,null,Rt(V(ne),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem wentsd",{activeOrange:V(Ai)=="Role1"+Ve}]),key:"Role1"+Ve,onClick:kn=>pa(kn,Ve,"Role1"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)],10,Z0t))),128)),(ce(!0),we(Zt,null,Rt(V(le),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem wentsd",{activeOrange:V(Ai)=="Role11"+Ve}]),key:"Role11"+Ve,onClick:kn=>pa(kn,Ve,"Role11"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),C(Wo,{modelValue:ut.value,"onUpdate:modelValue":O[6]||(O[6]=kn=>ut.value=kn),onChange:O[7]||(O[7]=kn=>Hz()),class:Mi({"is-show-panel":V($i)})},null,8,["modelValue","class"]),te("span",null,zn(D.titlie),1)],10,A0t))),128))])]),te("div",N0t,[te("div",R0t,[(ce(!0),we(Zt,null,Rt(V(ue),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem wentsd",{activeOrange:V(Ai)=="Role2"+Ve}]),key:"Role2"+Ve,onClick:kn=>pa(kn,Ve,"Role2"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)],10,S0t))),128)),(ce(!0),we(Zt,null,Rt(V(be),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem wentsd",{activeOrange:V(Ai)=="Role22"+Ve}]),key:"Role22"+Ve,onClick:kn=>pa(kn,Ve,"Role22"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),C(Wo,{modelValue:cn.value,"onUpdate:modelValue":O[8]||(O[8]=kn=>cn.value=kn),"color-format":"rgba","show-alpha":"",onChange:O[9]||(O[9]=kn=>Pz()),class:Mi({"is-show-panel":V($i)})},null,8,["modelValue","class"]),te("span",null,zn(D.titlie),1)],10,W0t))),128))])]),te("div",V0t,[te("div",Q0t,[(ce(!0),we(Zt,null,Rt(V(Ce),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem wentsd",{activeOrange:V(Ai)=="Role3"+Ve}]),key:"Role3"+Ve,onClick:kn=>pa(kn,Ve,"Role3"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)],10,y0t))),128))])])])]),_:1}),C(ri,{label:"优化运行",name:"Three"},{default:T(()=>[te("div",C0t,[te("div",w0t,[(ce(!0),we(Zt,null,Rt(V(Xe),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem",{activeOrange:V(Ai)=="Three-"+Ve}]),key:"Three-"+Ve,onClick:kn=>pa(kn,Ve,"Three-"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)],10,M0t))),128))]),te("div",T0t,[te("div",B0t,[(ce(!0),we(Zt,null,Rt(V(Nt),(D,Ve)=>(ce(),we("div",{class:Mi(["item2 floatitem wentsd1",{activeOrange:V(Ai)=="Three1"+Ve}]),key:"Three1"+Ve,onClick:kn=>pa(kn,Ve,"Three1"+Ve,D.titlie)},[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)],10,L0t))),128))])])])]),_:1}),C(ri,{label:"可视化",name:"Config"},{default:T(()=>[te("div",k0t,[(ce(!0),we(Zt,null,Rt(V(ee),(D,Ve)=>(ce(),we("div",{class:Mi(["listitem lbg_color3 bkcolor3 threelist",{activeOrange:V(Ai)=="Config-"+Ve}]),key:"Config-"+Ve,onClick:kn=>pa(kn,Ve,"Config-"+Ve,D.titlie)},[te("div",D0t,[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)])],10,I0t))),128))])]),_:1}),C(ri,{label:"数据库管理",name:"Seven"},{default:T(()=>[te("div",G0t,[(ce(!0),we(Zt,null,Rt(V(Bt),(D,Ve)=>(ce(),we("div",{class:Mi(["listitem lbg_color3 bkcolor3 threelist",{activeOrange:V(Ai)=="Seven"+Ve}]),key:"Seven"+Ve,onClick:kn=>pa(kn,Ve,"Seven"+Ve,D.titlie)},[te("div",v0t,[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)])],10,E0t))),128))])]),_:1}),C(ri,{label:"帮助",name:"eight"},{default:T(()=>[te("div",x0t,[(ce(!0),we(Zt,null,Rt(V(Ni),(D,Ve)=>(ce(),we("div",{class:Mi(["listitem lbg_color3 bkcolor3 threelist",{activeOrange:V(Ai)=="eight"+Ve}]),key:"eight"+Ve,onClick:kn=>pa(kn,Ve,"eight"+Ve,D.titlie)},[te("div",X0t,[C(Ri,{src:Sn(D.url),fit:"cover"},null,8,["src"]),te("span",null,zn(D.titlie),1)])],10,J0t))),128))])]),_:1})]),_:1},8,["modelValue"])]),V(Li)=="新建任务"?(ce(),ft(V(gs),{key:0,modelValue:V(We).newdialog,"onUpdate:modelValue":O[17]||(O[17]=D=>V(We).newdialog=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"480",class:"dialog_class bgcolor tianjia"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Y0t,[C(Ri,{src:Sn("s0.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"新建任务",10,z0t)])]),footer:T(()=>[te("div",_0t,[C(V(Lt),{onClick:O[15]||(O[15]=D=>V(We).newdialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[16]||(O[16]=D=>V(We).newdialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[C(Ha,null,{default:T(()=>[C(mi,{label:"任务编号:","label-width":V(lh)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[11]||(O[11]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"任务名称:","label-width":V(lh)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[12]||(O[12]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"任务类型:","label-width":V(lh)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[13]||(O[13]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"备注:","label-width":V(lh)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[14]||(O[14]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",type:"textarea",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="问题设定"?(ce(),ft(V(gs),{key:1,modelValue:V(We).setdialog,"onUpdate:modelValue":O[23]||(O[23]=D=>V(We).setdialog=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"480",class:"dialog_class bgcolor tianjia"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",O0t,[C(Ri,{src:Sn("q0.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"问题设定",10,j0t)])]),footer:T(()=>[te("div",P0t,[C(V(Lt),{onClick:O[21]||(O[21]=D=>V(We).setdialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[22]||(O[22]=D=>V(We).setdialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",H0t,[C(Ha,null,{default:T(()=>[C(mi,{label:"目标函数个数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[18]||(O[18]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"建立代理模型约束个数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[19]||(O[19]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"不建立代理模型约束个数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[20]||(O[20]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="Task-11"?(ce(),ft(V(gs),{key:2,modelValue:V(We).parameter,"onUpdate:modelValue":O[27]||(O[27]=D=>V(We).parameter=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"480",class:"dialog_class bgcolor tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",K0t,[C(Ri,{src:Sn("t0.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"外形参数化",10,q0t)])]),footer:T(()=>[te("div",ebt,[C(V(Lt),{onClick:O[25]||(O[25]=D=>V(We).parameter=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[26]||(O[26]=D=>V(We).parameter=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",$0t,[C(Ha,null,{default:T(()=>[C(mi,{label:"参数化方法:","label-width":V(lh)},{default:T(()=>[C(V(Ei),{modelValue:V(hi),"onUpdate:modelValue":O[24]||(O[24]=D=>Ft(hi)?hi.value=D:hi=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(un),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="代理模型"?(ce(),ft(V(gs),{key:3,modelValue:V(We).agency,"onUpdate:modelValue":O[34]||(O[34]=D=>V(We).agency=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"480",class:"dialog_class bgcolor tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",tbt,[C(Ri,{src:Sn("t2.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"代理模型",10,ibt)])]),footer:T(()=>[te("div",sbt,[C(V(Lt),{onClick:O[32]||(O[32]=D=>V(We).agency=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[33]||(O[33]=D=>V(We).agency=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",nbt,[C(Ha,null,{default:T(()=>[C(mi,{label:"代理模型类型:","label-width":V(No)},{default:T(()=>[C(V(Ei),{modelValue:V(mo),"onUpdate:modelValue":O[28]||(O[28]=D=>Ft(mo)?mo.value=D:mo=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(ns),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"设计空间类型:","label-width":V(No)},{default:T(()=>[C(V(Ei),{modelValue:V(xs),"onUpdate:modelValue":O[29]||(O[29]=D=>Ft(xs)?xs.value=D:xs=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Ht),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"试验设计方法:","label-width":V(No)},{default:T(()=>[C(V(Ei),{modelValue:V(Cr),"onUpdate:modelValue":O[30]||(O[30]=D=>Ft(Cr)?Cr.value=D:Cr=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Ae),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"初始样本点数:","label-width":V(No)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[31]||(O[31]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="终止条件 "?(ce(),ft(V(gs),{key:4,modelValue:V(We).enddialog,"onUpdate:modelValue":O[42]||(O[42]=D=>V(We).enddialog=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"480",class:"dialog_class bgcolor tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",obt,[C(Ri,{src:Sn("t4.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"终止条件",10,lbt)])]),footer:T(()=>[te("div",abt,[C(V(Lt),{onClick:O[40]||(O[40]=D=>V(We).enddialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[41]||(O[41]=D=>V(We).enddialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",rbt,[C(Ha,null,{default:T(()=>[C(mi,{label:"EI最小值:","label-width":V(Oi)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[35]||(O[35]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"目标函数收敛误差:","label-width":V(Oi)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[36]||(O[36]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"优化解收敛精度:","label-width":V(Oi)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[37]||(O[37]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"真实函数约束精度:","label-width":V(Oi)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[38]||(O[38]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"代理模型约束精度:","label-width":V(Oi)},{default:T(()=>[C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[39]||(O[39]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="加点方法"?(ce(),ft(V(gs),{key:5,modelValue:V(We).addfun,"onUpdate:modelValue":O[49]||(O[49]=D=>V(We).addfun=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"480",class:"dialog_class sel bgcolor tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",dbt,[C(Ri,{src:Sn("t3.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"加点方法",10,cbt)])]),footer:T(()=>[te("div",ubt,[C(V(Lt),{onClick:O[47]||(O[47]=D=>V(We).addfun=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[48]||(O[48]=D=>V(We).addfun=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",hbt,[C(Ha,null,{default:T(()=>[C(mi,{label:"最大样本点数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[43]||(O[43]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"加点准则:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(ct),"onUpdate:modelValue":O[44]||(O[44]=D=>Ft(ct)?ct.value=D:ct=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Yt),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"单次迭代新增样本点数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[45]||(O[45]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"约束处理方法:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(Bn),"onUpdate:modelValue":O[46]||(O[46]=D=>Ft(Bn)?Bn.value=D:Bn=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Ro),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="任务管理"?(ce(),ft(V(gs),{key:6,modelValue:V(We).task,"onUpdate:modelValue":O[54]||(O[54]=D=>V(We).task=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"800px",class:"dialog_class bgcolor tianjia"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",mbt,[C(Ri,{src:Sn("s11.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"任务管理",10,pbt)])]),footer:T(()=>[te("div",Ubt,[C(V(Lt),{onClick:O[52]||(O[52]=D=>V(We).task=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[53]||(O[53]=D=>V(We).task=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[C(J0,{data:Vf.value,stripe:"",style:{width:"100%"}},{default:T(()=>[C(Wn,{prop:"id",label:"任务编号"}),C(Wn,{prop:"name",label:"任务名称"}),C(Wn,{prop:"state",label:"任务类型"}),C(Wn,{prop:"time",label:"备注"})]),_:1},8,["data"]),te("div",gbt,[te("div",bbt,[C(mi,{label:"关键字:"},{default:T(()=>[C(V(Ei),{modelValue:V(Vn),"onUpdate:modelValue":O[50]||(O[50]=D=>Ft(Vn)?Vn.value=D:Vn=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Zn),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1}),C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[51]||(O[51]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"]),C(V(Lt),{class:"btncolor"},{default:T(()=>[it("查询")]),_:1}),C(V(Lt),{class:"btncolor"},{default:T(()=>[it("添加")]),_:1}),C(V(Lt),{class:"btncolor"},{default:T(()=>[it("删除")]),_:1}),C(V(Lt),{class:"btncolor"},{default:T(()=>[it("提交")]),_:1})])])])]),_:1},8,["modelValue"])):xn("",!0),V(Li)=="任务检索"?(ce(),ft(V(gs),{key:7,modelValue:V(We).guanli,"onUpdate:modelValue":O[60]||(O[60]=D=>V(We).guanli=D),"align-center":"",modal:!1,"close-on-click-modal":!0,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"800px",class:"dialog_class bgcolor tianjia"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",fbt,[C(Ri,{src:Sn("s11.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"任务检索",10,Fbt)])]),footer:T(()=>[te("div",Nbt,[C(V(Lt),{onClick:O[58]||(O[58]=D=>V(We).guanli=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[59]||(O[59]=D=>V(We).guanli=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[te("div",Zbt,[te("div",Abt,[C(mi,{label:"关键字:"},{default:T(()=>[C(V(Ei),{modelValue:V(Vn),"onUpdate:modelValue":O[55]||(O[55]=D=>Ft(Vn)?Vn.value=D:Vn=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Zn),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1}),C(Un,{modelValue:V(tn),"onUpdate:modelValue":O[56]||(O[56]=D=>Ft(tn)?tn.value=D:tn=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入关键字"},null,8,["modelValue"]),C(U1,{class:"magright",label:"范围",modelValue:V(ma),"onUpdate:modelValue":O[57]||(O[57]=D=>Ft(ma)?ma.value=D:ma=D)},null,8,["modelValue"]),C(V(Lt),{class:"btncolor"},{default:T(()=>[it("查询")]),_:1})])]),C(J0,{data:Vf.value,stripe:"",style:{width:"100%"}},{default:T(()=>[C(Wn,{prop:"id",label:"任务编号"}),C(Wn,{prop:"name",label:"任务名称"}),C(Wn,{prop:"state",label:"任务类型"}),C(Wn,{prop:"time",label:"备注"})]),_:1},8,["data"])])]),_:1},8,["modelValue"])):xn("",!0),C(V(gs),{modelValue:V(We).optimizer,"onUpdate:modelValue":O[82]||(O[82]=D=>V(We).optimizer=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"430",class:"dialog_class bgcolor tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Rbt,[C(Ri,{src:Sn("t2.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"优化器",10,Sbt)])]),footer:T(()=>[te("div",Cbt,[C(V(Lt),{onClick:O[80]||(O[80]=D=>V(We).optimizer=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[81]||(O[81]=D=>V(We).optimizer=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",Wbt,[C(Ha,null,{default:T(()=>[Vbt,C(mi,{label:"代理模型类型:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(mo),"onUpdate:modelValue":O[61]||(O[61]=D=>Ft(mo)?mo.value=D:mo=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(ns),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"设计空间类型:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(xs),"onUpdate:modelValue":O[62]||(O[62]=D=>Ft(xs)?xs.value=D:xs=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Ht),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"试验设计方法:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(Cr),"onUpdate:modelValue":O[63]||(O[63]=D=>Ft(Cr)?Cr.value=D:Cr=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Ae),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"初始样本点数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[64]||(O[64]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),Qbt,C(mi,{label:"最大样本点数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[65]||(O[65]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"加点准则:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(ct),"onUpdate:modelValue":O[66]||(O[66]=D=>Ft(ct)?ct.value=D:ct=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Yt),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"单次迭代新增样本点数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[67]||(O[67]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"约束处理方法:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(Bn),"onUpdate:modelValue":O[68]||(O[68]=D=>Ft(Bn)?Bn.value=D:Bn=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Ro),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),ybt,C(mi,{label:"优化算法:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(Fc),"onUpdate:modelValue":O[69]||(O[69]=D=>Ft(Fc)?Fc.value=D:Fc=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(ou),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"种群规模:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[70]||(O[70]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"最大迭代次数:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[71]||(O[71]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"交叉概率:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[72]||(O[72]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"变异概率:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[73]||(O[73]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"交叉算子:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(So),"onUpdate:modelValue":O[74]||(O[74]=D=>Ft(So)?So.value=D:So=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Jl),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"竞赛规模:","label-width":V(Oi)},{default:T(()=>[C(Co,{modelValue:V(ui),"onUpdate:modelValue":O[75]||(O[75]=D=>Ft(ui)?ui.value=D:ui=D),min:1,max:10,"controls-position":"right"},null,8,["modelValue"])]),_:1},8,["label-width"]),C(mi,{label:"保留优选策略:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(dr),"onUpdate:modelValue":O[76]||(O[76]=D=>Ft(dr)?dr.value=D:dr=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(Xl),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"变异算子选择:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(lu),"onUpdate:modelValue":O[77]||(O[77]=D=>Ft(lu)?lu.value=D:lu=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(mN),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"precision:","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(pN),"onUpdate:modelValue":O[78]||(O[78]=D=>Ft(pN)?pN.value=D:pN=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(JB),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"]),C(mi,{label:"GPU","label-width":V(Oi)},{default:T(()=>[C(V(Ei),{modelValue:V(Wf),"onUpdate:modelValue":O[79]||(O[79]=D=>Ft(Wf)?Wf.value=D:Wf=D),"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(u1),D=>(ce(),ft(bi,{key:D.value,label:D.label,value:D.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","suffix-icon"])]),_:1},8,["label-width"])]),_:1})])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).Xfiol,"onUpdate:modelValue":O[85]||(O[85]=D=>V(We).Xfiol=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg2 summary-dlg","before-close":ps,width:"675",class:"dialog_class bgcolor tianjia colortext sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",wbt,[C(Ri,{src:Sn("xuek9.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"Xfoil",10,Mbt)])]),footer:T(()=>[te("div",Tbt,[C(V(Lt),{type:"info",onClick:O[83]||(O[83]=D=>V(We).Xfiol=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[84]||(O[84]=D=>{Ln(),V(We).Xfiol=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Vse,{ref_key:"Xfoilref",ref:l},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).listdialog,"onUpdate:modelValue":O[88]||(O[88]=D=>V(We).listdialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"537",class:"dialog_style sel",style:{"max-height":"70%"}},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Bbt,[te("h4",{id:D,class:Mi(Ve)},"列表",10,Lbt)])]),footer:T(()=>[te("div",kbt,[C(V(Lt),{onClick:O[86]||(O[86]=D=>V(We).listdialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[87]||(O[87]=D=>V(We).listdialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[C(B9)])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).scatterdialog,"onUpdate:modelValue":O[91]||(O[91]=D=>V(We).scatterdialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"500",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Ibt,[te("h4",{id:D,class:Mi(Ve)},"散点图",10,Dbt)])]),footer:T(()=>[te("div",Gbt,[C(V(Lt),{onClick:O[89]||(O[89]=D=>V(We).scatterdialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[90]||(O[90]=D=>V(We).scatterdialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[C(B9)])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).echartLinedialog,"onUpdate:modelValue":O[94]||(O[94]=D=>V(We).echartLinedialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"500",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Ebt,[te("h4",{id:D,class:Mi(Ve)},"折线图",10,vbt)])]),footer:T(()=>[te("div",xbt,[C(V(Lt),{onClick:O[92]||(O[92]=D=>V(We).echartLinedialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[93]||(O[93]=D=>V(We).echartLinedialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[C(B9)])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).paretodialog,"onUpdate:modelValue":O[99]||(O[99]=D=>V(We).paretodialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"500",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Jbt,[te("h4",{id:D,class:Mi(Ve)},"帕雷托图",10,Xbt)])]),footer:T(()=>[te("div",Ybt,[C(V(Lt),{onClick:O[97]||(O[97]=D=>V(We).paretodialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[98]||(O[98]=D=>V(We).paretodialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",null,[C(Ha,null,{default:T(()=>[C(mi,{label:"选择在X轴显示的一个变量和响应"}),C(As,null,{default:T(()=>[C($B,{modelValue:V(ru),"onUpdate:modelValue":O[95]||(O[95]=D=>Ft(ru)?ru.value=D:ru=D)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(wr),D=>(ce(),ft(U1,{key:D.value,label:D.value,style:{display:"block"}},{default:T(()=>[it(zn(D.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),C(mi,{label:"选择在Y轴显示的一个变量和响应"}),C(As,{shadow:"hover",style:{width:"100%"}},{default:T(()=>[C($B,{modelValue:V(ru),"onUpdate:modelValue":O[96]||(O[96]=D=>Ft(ru)?ru.value=D:ru=D)},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(wr),D=>(ce(),ft(U1,{key:D.value,label:D.value,style:{display:"block"}},{default:T(()=>[it(zn(D.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).clouddialog,"onUpdate:modelValue":O[100]||(O[100]=D=>V(We).clouddialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"800",class:"dialog_style bgcolor tianjia sel",style:{"max-height":"70%"}},{header:T(({titleId:D,titleClass:Ve})=>[te("div",zbt,[te("h4",{id:D,class:Mi(Ve)},"云图/等值线显示",10,_bt)])]),default:T(()=>[te("div",null,[te("div",Obt,[C(Zc,{gutter:"20"},{default:T(()=>[C(Mf,{span:2}),(ce(!0),we(Zt,null,Rt(V(E0),(D,Ve)=>(ce(),ft(Mf,{key:Ve,span:4},{default:T(()=>[C(V(Lt),{style:{width:"100%"},onClick:kn=>yn(D.btnname)},{default:T(()=>[C(Ri,{src:Sn(D.url),alt:"img",fit:"cover",style:{width:"20px","margin-right":"4px"}},null,8,["src"]),it(" "+zn(D.btnname),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})]),jbt])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(ys),"onUpdate:modelValue":O[103]||(O[103]=D=>Ft(ys)?ys.value=D:ys=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"600",class:"dialog_class bgcolor tianjia"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",Hbt,[te("h4",{id:D,class:Mi(Ve)},zn(V(Mr)),11,Pbt)])]),footer:T(()=>[te("div",Kbt,[C(V(Lt),{onClick:O[101]||(O[101]=D=>Ft(ys)?ys.value=!1:ys=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[102]||(O[102]=D=>Ft(ys)?ys.value=!1:ys=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Ske,{activesd:V(jo)},null,8,["activesd"])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).lookover,"onUpdate:modelValue":O[106]||(O[106]=D=>V(We).lookover=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlgPdf","before-close":ps,width:"580px",height:"800px"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",qbt,[C(Ri,{src:Sn("k8.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"查看报告:",10,$bt)])]),footer:T(()=>[te("div",eUt,[C(V(Lt),{onClick:O[104]||(O[104]=D=>V(We).lookover=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[105]||(O[105]=D=>V(We).lookover=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(c0t)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).exportreport,"onUpdate:modelValue":O[109]||(O[109]=D=>V(We).exportreport=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"600",class:"dialog_class bgcolor tianjia sel",style:{"max-height":"70%"}},{header:T(({titleId:D,titleClass:Ve})=>[te("div",tUt,[te("h4",{id:D,class:Mi(Ve)},"导出报告:",10,iUt)])]),footer:T(()=>[te("div",nUt,[C(V(Lt),{onClick:O[107]||(O[107]=D=>V(We).exportreport=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[108]||(O[108]=D=>V(We).exportreport=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(iIe)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).XfAD,"onUpdate:modelValue":O[113]||(O[113]=D=>V(We).XfAD=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"860",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",sUt,[te("h4",{id:D,class:Mi(Ve)},"气动分析",10,oUt)])]),footer:T(()=>[te("div",rUt,[C(V(Lt),{onClick:O[111]||(O[111]=D=>V(We).XfAD=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[112]||(O[112]=D=>{Yl(V(ei)),V(We).XfAD=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",lUt,[C(Ha,null,{default:T(()=>[C(zl,{"tab-position":"left",class:"demo-tabs",modelValue:V(ei),"onUpdate:modelValue":O[110]||(O[110]=D=>Ft(ei)?ei.value=D:ei=D),onTabClick:Hi},{default:T(()=>[C(ri,{label:"Xfoil",name:"Xfoil"},{default:T(()=>[C(Vse,{ref_key:"Xfoilref",ref:l},null,512)]),_:1}),C(ri,{label:"ADflow",name:"ADflow"},{default:T(()=>[C(Wse,{ref_key:"ADflowref",ref:r},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1})])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).CSTt,"onUpdate:modelValue":O[116]||(O[116]=D=>V(We).CSTt=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"840",class:"dialog_class bgcolor colortext tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",aUt,[C(Ri,{src:Sn("xuek0.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"CST",10,dUt)])]),footer:T(()=>[te("div",cUt,[C(V(Lt),{onClick:O[114]||(O[114]=D=>V(We).CSTt=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[115]||(O[115]=D=>tt())},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Qse,{ref_key:"Cstref",ref:n},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).ffdt,"onUpdate:modelValue":O[119]||(O[119]=D=>V(We).ffdt=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"730",class:"dialog_class bgcolor colortext tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",hUt,[C(Ri,{src:Sn("ffd.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"FFD",10,uUt)])]),footer:T(()=>[te("div",mUt,[C(V(Lt),{onClick:O[117]||(O[117]=D=>V(We).ffdt=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[118]||(O[118]=D=>Ie())},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(yse,{ref_key:"Ffdref",ref:o},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).cstffd,"onUpdate:modelValue":O[123]||(O[123]=D=>V(We).cstffd=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"1000",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",pUt,[te("h4",{id:D,class:Mi(Ve)},"参数化",10,gUt)])]),footer:T(()=>[te("div",UUt,[C(V(Lt),{onClick:O[121]||(O[121]=D=>V(We).cstffd=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[122]||(O[122]=D=>{mt(V(ei)),V(We).cstffd=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",bUt,[C(Ha,null,{default:T(()=>[C(zl,{"tab-position":"left",class:"demo-tabs",modelValue:V(ei),"onUpdate:modelValue":O[120]||(O[120]=D=>Ft(ei)?ei.value=D:ei=D),onTabClick:_e},{default:T(()=>[C(ri,{label:"CST",name:"CST"},{default:T(()=>[C(Qse,{ref_key:"Cstref",ref:n},null,512)]),_:1}),C(ri,{label:"FFD",name:"FFD"},{default:T(()=>[C(yse,{ref_key:"Ffdref",ref:o},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1})])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).Taxs,"onUpdate:modelValue":O[125]||(O[125]=D=>V(We).Taxs=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"700",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",fUt,[te("h4",{id:D,class:Mi(Ve)},"TACS",10,FUt)])]),footer:T(()=>[te("div",ZUt,[C(V(Lt),{onClick:O[124]||(O[124]=D=>V(We).Taxs=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary"},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(tIe)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).optgroup,"onUpdate:modelValue":O[129]||(O[129]=D=>V(We).optgroup=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"700",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",AUt,[te("h4",{id:D,class:Mi(Ve)},"优化器",10,NUt)])]),footer:T(()=>[te("div",SUt,[C(V(Lt),{onClick:O[127]||(O[127]=D=>V(We).optgroup=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[128]||(O[128]=D=>{Se(V(ei)),V(We).optgroup=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[te("div",RUt,[C(Ha,null,{default:T(()=>[C(zl,{"tab-position":"left",class:"demo-tabs",modelValue:V(ei),"onUpdate:modelValue":O[126]||(O[126]=D=>Ft(ei)?ei.value=D:ei=D),onTabClick:_},{default:T(()=>[C(ri,{label:"代理优化器",name:"代理优化器"},{default:T(()=>[C(Nse,{ref_key:"Doptimizeref",ref:d},null,512)]),_:1}),C(ri,{label:"进化优化器",name:"进化优化器"},{default:T(()=>[C(Rse,{ref_key:"Joptimizeref",ref:a},null,512)]),_:1}),C(ri,{label:"梯度优化器",name:"梯度优化器"},{default:T(()=>[C(Sse,{ref_key:"Toptimizeref",ref:c},null,512)]),_:1})]),_:1},8,["modelValue"])]),_:1})])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).jboptimizer,"onUpdate:modelValue":O[132]||(O[132]=D=>V(We).jboptimizer=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"430",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",WUt,[C(Ri,{src:Sn("t2.png"),fit:"contain"},null,8,["src"]),te("h4",{id:D,class:Mi(Ve)},"优化算法:",10,VUt)])]),footer:T(()=>[te("div",QUt,[C(V(Lt),{onClick:O[130]||(O[130]=D=>V(We).jboptimizer=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[131]||(O[131]=D=>{$(),V(We).jboptimizer=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Rse,{ref_key:"Joptimizeref",ref:a},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).dboptimizer,"onUpdate:modelValue":O[135]||(O[135]=D=>V(We).dboptimizer=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"430",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",yUt,[te("h4",{id:D,class:Mi(Ve)},"代理优化器",10,CUt)])]),footer:T(()=>[te("div",wUt,[C(V(Lt),{onClick:O[133]||(O[133]=D=>V(We).dboptimizer=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[134]||(O[134]=D=>{me(),V(We).dboptimizer=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Nse,{ref_key:"Doptimizeref",ref:d},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).tboptimizer,"onUpdate:modelValue":O[138]||(O[138]=D=>V(We).tboptimizer=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"430",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",MUt,[te("h4",{id:D,class:Mi(Ve)},"梯度优化器:",10,TUt)])]),footer:T(()=>[te("div",BUt,[C(V(Lt),{onClick:O[136]||(O[136]=D=>V(We).tboptimizer=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[137]||(O[137]=D=>{he(),V(We).tboptimizer=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Sse,{ref_key:"Toptimizeref",ref:c},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).isADflow,"onUpdate:modelValue":O[141]||(O[141]=D=>V(We).isADflow=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"630",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",LUt,[te("h4",{id:D,class:Mi(Ve)},"ADflow",10,kUt)])]),footer:T(()=>[te("div",IUt,[C(V(Lt),{onClick:O[139]||(O[139]=D=>V(We).isADflow=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[140]||(O[140]=D=>{mn(),V(We).isADflow=!1})},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Wse,{ref_key:"ADflowref",ref:r},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).Pythonshow,"onUpdate:modelValue":O[145]||(O[145]=D=>V(We).Pythonshow=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"700",class:"dialog_class bgcolor colortext tianjia sel"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",DUt,[te("h4",{id:D,class:Mi(Ve)},"Python",10,GUt)])]),footer:T(()=>[te("div",XUt,[C(V(Lt),{onClick:O[143]||(O[143]=D=>V(We).Pythonshow=!1)},{default:T(()=>[it("检查")]),_:1}),C(V(Lt),{type:"primary",onClick:O[144]||(O[144]=D=>{OB(),V(We).Pythonshow=!1})},{default:T(()=>[it(" 保存 ")]),_:1})])]),default:T(()=>[te("div",EUt,[te("div",null,[C(Uht,{value:V(i),language:"python",onChange:_z},null,8,["value"])]),te("div",vUt,[te("div",xUt,[C(Ri,{src:V(Ane),fit:"contain"},null,8,["src"]),JUt]),C(Un,{modelValue:V(t),"onUpdate:modelValue":O[142]||(O[142]=D=>Ft(t)?t.value=D:t=D),style:{width:"100%"},autosize:{minRows:2,maxRows:4},type:"textarea",placeholder:"Please input"},null,8,["modelValue"])])])]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).fsidialog,"onUpdate:modelValue":O[148]||(O[148]=D=>V(We).fsidialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"670",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",YUt,[te("h4",{id:D,class:Mi(Ve)},"FUM to FEM",10,zUt)])]),footer:T(()=>[te("div",_Ut,[C(V(Lt),{onClick:O[146]||(O[146]=D=>V(We).fsidialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[147]||(O[147]=D=>V(We).fsidialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Cke,{ref_key:"Fsiref",ref:h},null,512)]),_:1},8,["modelValue"]),C(V(gs),{modelValue:V(We).flightdialog,"onUpdate:modelValue":O[151]||(O[151]=D=>V(We).flightdialog=D),"align-center":"",modal:!1,"close-on-click-modal":!1,"append-to-body":!0,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg","before-close":ps,width:"630",class:"dialog_class bgcolor tianjia sel colortext"},{header:T(({titleId:D,titleClass:Ve})=>[te("div",OUt,[te("h4",{id:D,class:Mi(Ve)},"Flight",10,jUt)])]),footer:T(()=>[te("div",HUt,[C(V(Lt),{onClick:O[149]||(O[149]=D=>V(We).flightdialog=!1)},{default:T(()=>[it("取消")]),_:1}),C(V(Lt),{type:"primary",onClick:O[150]||(O[150]=D=>V(We).flightdialog=!1)},{default:T(()=>[it(" 确定 ")]),_:1})])]),default:T(()=>[C(Yke,{ref_key:"Flightref",ref:u},null,512)]),_:1},8,["modelValue"]),te("div",PUt,[C(_Be,{ref_key:"Sidebarref",ref:e},null,512),te("div",KUt,[te("div",qUt,[ws(te("div",$Ut,[te("div",eft,[C(X0,{percentage:V(W),"stroke-width":15,color:XB},{default:T(({percentage:D})=>[te("span",tft,"当前进度:"+zn(D)+"%",1)]),_:1},8,["percentage"])])],512),[[ks,V(Q)]]),ws(te("div",ift,[C(HTe,{ref_key:"vuefval",ref:yo,Xfiol:V(We).Xfiol,jboptimizer:V(We).jboptimizer,optimizer:V(We).optimizer,onOptimizerfalse:O[152]||(O[152]=D=>zz(D))},null,8,["Xfiol","jboptimizer","optimizer"])],512),[[ks,V(R)]]),te("div",nft,[ws(te("div",sft,[C(J0,{data:V(Zo),border:"",style:{display:"flex",flex:"1",overflow:"auto",height:"100%"}},{default:T(()=>[C(Wn,{type:"index",label:"编号",width:"150"}),(ce(!0),we(Zt,null,Rt(V(st),(D,Ve)=>(ce(),ft(Wn,{key:Ve,prop:D.prop,label:D.label},null,8,["prop","label"]))),128))]),_:1},8,["data"])],512),[[ks,V(M)]]),V(w)?(ce(),we("div",oft,[C(MSe,{ref_key:"optmonitor1",ref:qt,echartdata:V(Tt),selval:V(Oa),curvedata:V(is)},null,8,["echartdata","selval","curvedata"])])):xn("",!0),V(Y)?(ce(),we("div",lft,[te("div",rft,[C(LQe,{ref_key:"processMonitor1ref",ref:yt,echartdata:V(Tt),selval:V(Oa),curvedata:V(is)},null,8,["echartdata","selval","curvedata"])]),te("div",aft,[C(GQe,{ref_key:"processMonitor2ref",ref:fe,echartdata:V(Tt),selval:V(Oa),curvedata:V(is)},null,8,["echartdata","selval","curvedata"])])])):xn("",!0),ws(te("div",dft,[ws(C(HBe,{ref_key:"arearef",ref:Vi,areashow:V(G)},null,8,["areashow"]),[[ks,V(G)]]),ws(C(qBe,{ref_key:"bargraphref",ref:Qe,bargraphshow:V(X)},null,8,["bargraphshow"]),[[ks,V(X)]]),ws(C(iLe,{ref_key:"echartLineref",ref:He,echartLineshow:V(P)},null,8,["echartLineshow"]),[[ks,V(P)]]),ws(C(oLe,{ref_key:"BarChartref",ref:Te,BarChartshow:V(j)},null,8,["BarChartshow"]),[[ks,V(j)]]),ws(C(aLe,{ref_key:"scatterref",ref:St,scattershow:V(ie)},null,8,["scattershow"]),[[ks,V(ie)]]),ws(C(hLe,{ref_key:"radarref",ref:xe,radarshow:V(se)},null,8,["radarshow"]),[[ks,V(se)]]),ws(C(pLe,{ref_key:"pieref",ref:Je,pieshow:V(pe)},null,8,["pieshow"]),[[ks,V(pe)]]),ws(C(ULe,{ref_key:"paretoref",ref:Mt,paretoshow:V(Ue)},null,8,["paretoshow"]),[[ks,V(Ue)]])],512),[[ks,V(Pe)]])]),C(s9,{class:"femFooter"},{default:T(()=>[te("div",cft,[te("div",hft,[te("div",null,[(ce(),we(Zt,null,Rt(oo,(D,Ve)=>te("div",{class:Mi(["span",{active:al.value===Ve}]),key:Ve,onClick:kn=>qz(Ve)},[C(Ri,{src:D.img,fit:"contain"},null,8,["src"]),te("span",null,zn(D.name),1)],10,uft)),64))]),te("div",null,[te("li",null,[te("span",{onClick:O[153]||(O[153]=D=>z("foot"))},"▲▼")])])]),V(Dt)?(ce(),we("div",mft,[al.value==0?(ce(),we("div",pft,[C(Un,{class:"footerText",type:"textarea",id:"textarea_id",modelValue:V(xl),"onUpdate:modelValue":O[154]||(O[154]=D=>Ft(xl)?xl.value=D:xl=D)},null,8,["modelValue"])])):xn("",!0),al.value==1?(ce(),we("div",gft,[te("ul",null,[(ce(),we(Zt,null,Rt(oh,(D,Ve)=>te("li",{key:Ve,class:Mi({active2:je.value===Ve}),onClick:kn=>HB(Ve)},[je.value===Ve?(ce(),ft(Ri,{key:0,src:D.isimg,fit:"contain"},null,8,["src"])):(ce(),ft(Ri,{key:1,src:D.noimg,fit:"contain"},null,8,["src"])),it(" "+zn(D.name),1)],10,bft)),64))]),te("div",Uft,[je.value==0?(ce(),we("div",fft,[C(J0,{data:Jp.value,border:"",style:{width:"100%"},height:"100"},{default:T(()=>[C(Wn,{type:"index",label:"编号",width:"70"}),C(Wn,{prop:"name",label:"变量名称"},{default:T(({row:D})=>[C(Un,{modelValue:D.name,"onUpdate:modelValue":Ve=>D.name=Ve,onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"upper",label:"上限值"},{default:T(({row:D})=>[C(Un,{type:"text",modelValue:D.upper,"onUpdate:modelValue":Ve=>D.upper=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.-]/g, '').replace(/(\\..*?)\\..*/g, '$1').replace(/^-(?=\\.)/, '')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"lower",label:"下限值"},{default:T(({row:D})=>[C(Un,{modelValue:D.lower,"onUpdate:modelValue":Ve=>D.lower=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.-]/g, '').replace(/(\\..*?)\\..*/g, '$1').replace(/^-(?=\\.)/, '')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"reference",label:"基准值",width:"100"},{default:T(({row:D})=>[C(Un,{modelValue:D.reference,"onUpdate:modelValue":Ve=>D.reference=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.]/g, '').replace(/(\\..*?)\\..*/g, '$1')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"remark",label:"说明"},{default:T(({row:D})=>[C(Un,{modelValue:D.remark,"onUpdate:modelValue":Ve=>D.remark=Ve,onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{label:"操作",width:"140"},{default:T(D=>[C(V(Lt),{size:"small",type:"danger",onClick:xI(Ve=>YB(D.$index,D.row),["stop"])},{default:T(()=>[it("删除")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])])):xn("",!0),je.value==1?(ce(),we("div",Fft,[C(J0,{data:cm.value,stripe:"",style:{width:"100%"},height:"100"},{default:T(()=>[C(Wn,{type:"index",label:"编号",width:"100"}),C(Wn,{prop:"name",label:"约束名称"},{default:T(({row:D})=>[C(Un,{modelValue:D.name,"onUpdate:modelValue":Ve=>D.name=Ve,onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"reference",label:"约束基准值"},{default:T(({row:D})=>[C(Un,{modelValue:D.reference,"onUpdate:modelValue":Ve=>D.reference=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.]/g, '').replace(/(\\..*?)\\..*/g, '$1')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"upper",label:"上限值"},{default:T(({row:D})=>[C(Un,{modelValue:D.upper,"onUpdate:modelValue":Ve=>D.upper=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.-]/g, '').replace(/(\\..*?)\\..*/g, '$1').replace(/^-(?=\\.)/, '')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"lower",label:"下限值"},{default:T(({row:D})=>[C(Un,{modelValue:D.lower,"onUpdate:modelValue":Ve=>D.lower=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.-]/g, '').replace(/(\\..*?)\\..*/g, '$1').replace(/^-(?=\\.)/, '')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{label:"操作",width:"140"},{default:T(D=>[C(V(Lt),{size:"small",type:"danger",onClick:xI(Ve=>Qf(D.$index,D.row),["stop"])},{default:T(()=>[it("删除")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])])):xn("",!0),je.value==2?(ce(),we("div",Zft,[C(J0,{data:v0.value,stripe:"",style:{width:"100%"},height:"100"},{default:T(()=>[C(Wn,{type:"index",label:"编号",width:"70"}),C(Wn,{prop:"name",label:"目标名称"},{default:T(({row:D})=>[C(Un,{modelValue:D.name,"onUpdate:modelValue":Ve=>D.name=Ve},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),C(Wn,{prop:"optdir",label:"优化方向"},{default:T(D=>[C(V(Ei),{class:"no-border",modelValue:D.row.optdir,"onUpdate:modelValue":Ve=>D.row.optdir=Ve,"suffix-icon":V(Ki),placeholder:"请选择"},{default:T(()=>[(ce(!0),we(Zt,null,Rt(V(ja),Ve=>(ce(),ft(bi,{key:Ve.value,label:Ve.label,value:Ve.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","suffix-icon"])]),_:1}),C(Wn,{prop:"weight",label:"权重系数"},{default:T(({row:D})=>[C(Un,{modelValue:D.weight,"onUpdate:modelValue":Ve=>D.weight=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.]/g, '').replace(/(\\..*?)\\..*/g, '$1')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"reference",label:"约束基准值"},{default:T(({row:D})=>[C(Un,{modelValue:D.reference,"onUpdate:modelValue":Ve=>D.reference=Ve,modelModifiers:{Number:!0},oninput:"value=value.replace(/[^0-9.]/g, '').replace(/(\\..*?)\\..*/g, '$1')",onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{prop:"remark",label:"说明"},{default:T(({row:D})=>[C(Un,{modelValue:D.remark,"onUpdate:modelValue":Ve=>D.remark=Ve,onChange:Ve=>Nl(D)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),C(Wn,{label:"操作",width:"140"},{default:T(D=>[C(V(Lt),{size:"small",type:"danger",onClick:xI(Ve=>Xz(D.$index,D.row),["stop"])},{default:T(()=>[it("删除")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])])):xn("",!0)]),te("div",Aft,[te("div",Nft,[te("div",Rft,[te("div",Sft,[C(mi,{label:"新增变量数:"},{default:T(()=>[C(Un,{modelValue:V(rl),"onUpdate:modelValue":O[155]||(O[155]=D=>Ft(rl)?rl.value=D:rl=D),maxlength:"18",oninput:"value=value.replace(/[^\\a-\\z\\A-\\Z0-9\\u4E00-\\u9FA5]/g,'')",class:"w-50 m-2",placeholder:"请输入关键字"},null,8,["modelValue"])]),_:1}),C(V(Lt),{class:"btncolor"},{default:T(()=>[it("导入")]),_:1}),C(V(Lt),{class:"btncolor",onClick:Kz},{default:T(()=>[it("新增")]),_:1}),C(V(Lt),{class:"btncolor",onClick:PB},{default:T(()=>[it("确认")]),_:1})])])])])])):xn("",!0)])):xn("",!0),Wft])]),_:1})])])])])]),_:1})]),_:1})])}}},Qft=im(Vft,[["__scopeId","data-v-8d6340ea"]]),vNt=Object.freeze(Object.defineProperty({__proto__:null,default:Qft},Symbol.toStringTag,{value:"Module"}));export{vNt as h,QB as m,UFe as t};
|