{"version":3,"sources":["webpack:///./node_modules/croppie/croppie.js","webpack:///./src/views/user/UserGeneralAndContactInfoSection.vue?1b3b","webpack:///./node_modules/vue-croppie/dist/vue-croppie.es.js","webpack:///./src/components/PhoneNumberInput.vue?6745","webpack:///./src/components/PhoneNumberInput.vue?843f","webpack:///./src/components/PhoneNumberInput.vue?4d46","webpack:///./src/components/PhoneNumberInput.vue","webpack:///./src/views/user/UserGeneralAndContactInfoSection.vue?0753","webpack:///./src/views/user/UserGeneralAndContactInfoSection.vue?7950","webpack:///./src/views/user/UserGeneralAndContactInfoSection.vue","webpack:///./src/views/user/UserGeneralAndContactInfoSection.vue?e54f"],"names":["root","factory","self","Promise","a","b","apply","arguments","c","this","TypeError","_state","_value","_deferreds","i","e","f","d","push","k","onFulfilled","onRejected","reject","resolve","then","g","call","length","h","j","setTimeout","setImmediate","l","Array","isArray","Object","prototype","toString","all","slice","constructor","race","_setImmediateFn","module","exports","window","CustomEvent","event","params","bubbles","cancelable","detail","undefined","evt","document","createEvent","initCustomEvent","Event","HTMLCanvasElement","toBlob","defineProperty","value","callback","type","quality","binStr","atob","toDataURL","split","len","arr","Uint8Array","charCodeAt","Blob","CSS_TRANS_ORG","CSS_TRANSFORM","CSS_USERSELECT","cssPrefixes","emptyStyles","createElement","style","EXIF_NORM","EXIF_FLIP","vendorPrefix","prop","capProp","toUpperCase","getExifOffset","ornt","rotate","indexOf","index","offset","deepExtend","destination","source","property","clone","object","debounce","func","wait","immediate","timeout","context","args","later","callNow","clearTimeout","dispatchChange","element","initEvent","dispatchEvent","fireEvent","css","el","styles","val","tmp","addClass","classList","add","className","removeClass","remove","replace","setAttributes","attrs","key","setAttribute","num","v","parseInt","loadImage","src","doExif","img","Image","opacity","_resolve","removeAttribute","match","onload","EXIF","getData","onerror","ev","naturalImageDimensions","w","naturalWidth","naturalHeight","orient","getExifOrientation","x","width","height","TRANSLATE_OPTS","suffix","Transform","y","scale","parseFloat","parse","fromMatrix","fromString","vals","substring","values","translate","Croppie","globals","TransformOrigin","exifdata","Orientation","drawCanvas","canvas","orientation","ctx","getContext","save","Math","PI","drawImage","restore","_create","boundary","viewport","overlay","bw","bh","contClass","customViewportClass","options","useCanvas","enableOrientation","_hasExif","data","elements","preview","isNaN","appendChild","customClass","_initDraggable","enableZoom","_initializeZoom","enableResize","_initializeResize","enableExif","direction","originalX","originalY","maxWidth","maxHeight","vr","hr","wrap","isDragging","minSize","mouseDown","button","preventDefault","overlayRect","getBoundingClientRect","pageX","pageY","currentTarget","touches","addEventListener","mouseMove","mouseUp","body","deltaX","deltaY","newHeight","newWidth","_updateOverlay","_updateZoomLimits","_updateCenterPoint","_triggerUpdate","removeEventListener","resizeControls","_setZoomerVal","z","zoomer","fix","max","min","zoomerWrap","change","_onZoom","origin","viewportRect","transform","scroll","delta","targetZoom","mouseWheelZoom","ctrlKey","wheelDelta","_currentZoom","step","display","showZoomer","ui","vpRect","applyCss","transCss","enforceBoundary","boundaries","_getVirtualBoundaries","transBoundaries","oBoundaries","maxX","minX","maxY","minY","_debouncedOverlay","vpWidth","vpHeight","centerFromBoundaryX","clientWidth","centerFromBoundaryY","clientHeight","imgRect","curImgWidth","curImgHeight","halfWidth","halfHeight","originMinX","originMaxX","originMinY","originMaxY","vpData","pc","top","left","center","adj","cx","cy","tx","ty","newCss","originalDistance","assignTransformCoordinates","bottom","right","toggleGrabState","keyDown","zoom","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","DOWN_ARROW","shiftKey","keyCode","enableKeyMovement","movement","parseKeyDown","keyMove","setZoom","touch1","touch2","dist","sqrt","boundRect","imgData","get","_isVisible","update","$","Prototype","trigger","offsetHeight","offsetWidth","_updatePropertiesFromImage","initialZoom","cssReset","transformReset","originReset","isVisible","bound","_originalImageWidth","_originalImageHeight","points","_bindPoints","_centerImage","initial","defaultInitialZoom","minW","minH","minZoom","maxZoom","boundaryData","boundZoom","pointsWidth","vpOffset","originTop","originLeft","transformTop","transformLeft","imgDim","vpDim","boundDim","vpLeft","vpTop","_transferImageToCanvas","customOrientation","clearRect","_getCanvas","circle","canvasWidth","outputWidth","canvasHeight","outputHeight","backgroundColor","fillStyle","fillRect","sx","sy","sWidth","sHeight","dx","dy","dWidth","dHeight","abs","globalCompositeOperation","beginPath","arc","closePath","fill","_getHtmlResult","div","url","_getBase64Result","format","_getBlobResult","blob","_replaceImage","parentNode","forEach","replaceChild","_bind","cb","hasExif","relative","natDim","rect","aspectRatio","imgAspectRatio","x0","y0","x1","y1","map","p","decimalPoints","toFixed","_get","widthDiff","heightDiff","x2","y2","Infinity","Number","NEGATIVE_INFINITY","RESULT_DEFAULTS","RESULT_FORMATS","_result","prom","opts","resultType","size","ratio","toLowerCase","_refresh","_rotate","deg","_destroy","removeChild","jQuery","fn","croppie","ot","singleInst","result","bind","each","method","isFunction","removeData","Error","defaults","tagName","origImage","replacementDiv","bindOpts","orientationControls","enabled","leftClass","rightClass","refresh","destroy","render","_vm","_h","$createElement","_c","_self","$helpers","isExists","user","staticClass","directives","name","rawName","expression","isAvatarCropDisabled","on","$event","isAvatarChangeMode","avatarCrop","ref","$const","avatarLargeImageSize","modifiers","isAvatarUploadDisabled","uploadAvatar","maxFileSizeBytes","autoUploadFileInput","model","$$v","avatarUploadFiles","$files","avatarImageUrl","avatarFileId","largeAvatarVersion","$props","validateState","$set","_v","_s","veeErrors","first","minPasswordLength","maxPasswordLength","_e","confirmPassword","isAdminEdit","origUserLastName","origUserFirstName","origUserPatronymicName","class","mapRegions","id","onMapElementsChanged","scopedSlots","_u","selectNoOptionsText","proxy","mapPoints","mapDistricts","organizations","isOrganizationReadonly","isNotEmpty","organizationPhonesPrefix","_l","phone","refInFor","phoneLabels","updatePhoneLabels","number","additionalPhones","splice","email","additionalEmails","staticRenderFns","VueCroppieComponent","props","String","Boolean","default","croppieInitialized","Function","mounted","initCroppie","methods","_this","$refs","croppieContainer","$emit","angle","_this2","output","VueCroppie","install","Vue","component","use","displayName","state","feedbackId","onChange","formattedPhoneValue","inputComponent","phoneNumberInput","$el","phoneValue","updateValue","cursorPosition","inputElement","selectionStart","phoneNumberMaxLength","$nextTick","setSelectionRange","isInit","phoneNumberResult","$appUtils","formatAdditionalPhoneNumber","displayValue","phoneNumber","required","origUserInit","isUserCreate","availableOrganizations","organizationId","selectedOrganization","findFirstInArray","phoneNumbersSecondPrefix","avatarFileUpload","firstName","lastName","patronymicName","oldVal","userCreate","password","specialUserPasswordTrim","formatUserFullName","veeFields","dirty","validated","has","newFile","oldFile","error","avatarFileUploadComponent","getAvatarFileUploadComponent","active","file","files","upload","filePreview","getAvatarCropComponent","previewUrl","errorMessage","showErrorNotification","fileBlob","isRegionChanged","isDistrictChanged","isNumeric","mapDistrictId","mapPointId","updateMapLookups","getAvailableOrganizationOptions","thisInst","mapRegionId","generateMapSelectOptions","label","trim","anyInArray","sortStrings","$validator","validateAll","components","PhoneNumberInput","VueUploadComponent"],"mappings":"qGAAA,SAMC,SAAUA,EAAMC,GAGT,IAAc,qEAHtB,CAWkB,qBAATC,MAAuBA,MAAa,WAGlB,oBAAZC,SAEN,SAASC,GAAG,SAASC,EAAED,EAAEC,GAAG,OAAO,WAAWD,EAAEE,MAAMD,EAAEE,YAAY,SAASC,EAAEJ,GAAG,GAAG,kBAAkBK,KAAK,MAAM,IAAIC,UAAU,wCAAwC,GAAG,oBAAoBN,EAAE,MAAM,IAAIM,UAAU,kBAAkBD,KAAKE,OAAO,KAAKF,KAAKG,OAAO,KAAKH,KAAKI,WAAW,GAAGC,EAAEV,EAAEC,EAAEU,EAAEN,MAAMJ,EAAEW,EAAEP,OAAO,SAASQ,EAAEb,GAAG,IAAIC,EAAEI,KAAK,OAAO,OAAOA,KAAKE,YAAYF,KAAKI,WAAWK,KAAKd,QAAQe,GAAE,WAAW,IAAIX,EAAEH,EAAEM,OAAOP,EAAEgB,YAAYhB,EAAEiB,WAAW,GAAG,OAAOb,EAAV,CAA+D,IAAIS,EAAE,IAAIA,EAAET,EAAEH,EAAEO,QAAQ,MAAMG,GAAG,YAAYX,EAAEkB,OAAOP,GAAGX,EAAEmB,QAAQN,QAA1GZ,EAAEM,OAAOP,EAAEmB,QAAQnB,EAAEkB,QAAQjB,EAAEO,WAAgF,SAASG,EAAEX,GAAG,IAAI,GAAGA,IAAIK,KAAK,MAAM,IAAIC,UAAU,6CAA6C,GAAGN,IAAI,kBAAkBA,GAAG,oBAAoBA,GAAG,CAAC,IAAII,EAAEJ,EAAEoB,KAAK,GAAG,oBAAoBhB,EAAE,YAAYM,EAAET,EAAEG,EAAEJ,GAAGC,EAAEU,EAAEN,MAAMJ,EAAEW,EAAEP,OAAOA,KAAKE,QAAO,EAAGF,KAAKG,OAAOR,EAAEqB,EAAEC,KAAKjB,MAAM,MAAMQ,GAAGD,EAAEU,KAAKjB,KAAKQ,IAAI,SAASD,EAAEZ,GAAGK,KAAKE,QAAO,EAAGF,KAAKG,OAAOR,EAAEqB,EAAEC,KAAKjB,MAAM,SAASgB,IAAI,IAAI,IAAIrB,EAAE,EAAEC,EAAEI,KAAKI,WAAWc,OAAOtB,EAAED,EAAEA,IAAIa,EAAES,KAAKjB,KAAKA,KAAKI,WAAWT,IAAIK,KAAKI,WAAW,KAAK,SAASe,EAAExB,EAAEC,EAAEG,EAAES,GAAGR,KAAKW,YAAY,oBAAoBhB,EAAEA,EAAE,KAAKK,KAAKY,WAAW,oBAAoBhB,EAAEA,EAAE,KAAKI,KAAKc,QAAQf,EAAEC,KAAKa,OAAOL,EAAE,SAASH,EAAEV,EAAEC,EAAEG,GAAG,IAAIS,GAAE,EAAG,IAAIb,GAAE,SAASA,GAAGa,IAAIA,GAAE,EAAGZ,EAAED,OAAK,SAASA,GAAGa,IAAIA,GAAE,EAAGT,EAAEJ,OAAM,MAAMW,GAAG,GAAGE,EAAE,OAAOA,GAAE,EAAGT,EAAEO,IAAI,IAAIc,EAAEC,WAAWX,EAAE,oBAAoBY,cAAcA,cAAc,SAAS3B,GAAGyB,EAAEzB,EAAE,IAAI4B,EAAEC,MAAMC,SAAS,SAAS9B,GAAG,MAAM,mBAAmB+B,OAAOC,UAAUC,SAASX,KAAKtB,IAAII,EAAE4B,UAAU,SAAS,SAAShC,GAAG,OAAOK,KAAKe,KAAK,KAAKpB,IAAII,EAAE4B,UAAUZ,KAAK,SAASpB,EAAEC,GAAG,IAAIU,EAAEN,KAAK,OAAO,IAAID,GAAE,SAASA,EAAEQ,GAAGC,EAAES,KAAKX,EAAE,IAAIa,EAAExB,EAAEC,EAAEG,EAAEQ,QAAOR,EAAE8B,IAAI,WAAW,IAAIlC,EAAE6B,MAAMG,UAAUG,MAAMb,KAAK,IAAInB,UAAUoB,QAAQK,EAAEzB,UAAU,IAAIA,UAAU,GAAGA,WAAW,OAAO,IAAIC,GAAE,SAASH,EAAEG,GAAG,SAASS,EAAED,EAAES,GAAG,IAAI,GAAGA,IAAI,kBAAkBA,GAAG,oBAAoBA,GAAG,CAAC,IAAIG,EAAEH,EAAED,KAAK,GAAG,oBAAoBI,EAAE,YAAYA,EAAEF,KAAKD,GAAE,SAASrB,GAAGa,EAAED,EAAEZ,KAAII,GAAGJ,EAAEY,GAAGS,EAAE,MAAMV,GAAGV,EAAED,GAAG,MAAMU,GAAGN,EAAEM,IAAI,GAAG,IAAIV,EAAEuB,OAAO,OAAOtB,EAAE,IAAI,IAAI,IAAIU,EAAEX,EAAEuB,OAAOX,EAAE,EAAEA,EAAEZ,EAAEuB,OAAOX,IAAIC,EAAED,EAAEZ,EAAEY,QAAOR,EAAEe,QAAQ,SAASnB,GAAG,OAAOA,GAAG,kBAAkBA,GAAGA,EAAEoC,cAAchC,EAAEJ,EAAE,IAAII,GAAE,SAASH,GAAGA,EAAED,OAAMI,EAAEc,OAAO,SAASlB,GAAG,OAAO,IAAII,GAAE,SAASH,EAAEG,GAAGA,EAAEJ,OAAMI,EAAEiC,KAAK,SAASrC,GAAG,OAAO,IAAII,GAAE,SAASH,EAAEG,GAAG,IAAI,IAAIS,EAAE,EAAEF,EAAEX,EAAEuB,OAAOZ,EAAEE,EAAEA,IAAIb,EAAEa,GAAGO,KAAKnB,EAAEG,OAAMA,EAAEkC,gBAAgB,SAAStC,GAAGe,EAAEf,GAAgCuC,EAAOC,QAAQD,EAAOC,QAAQpC,EAAEJ,EAAED,UAAUC,EAAED,QAAQK,GAAh3E,CAAo3EC,MAGt1E,oBAAvBoC,OAAOC,aACd,WACG,SAASA,EAAcC,EAAOC,GAC1BA,EAASA,GAAU,CAAEC,SAAS,EAAOC,YAAY,EAAOC,YAAQC,GAChE,IAAIC,EAAMC,SAASC,YAAa,eAEhC,OADAF,EAAIG,gBAAiBT,EAAOC,EAAOC,QAASD,EAAOE,WAAYF,EAAOG,QAC/DE,EAEXP,EAAYV,UAAYS,OAAOY,MAAMrB,UACrCS,OAAOC,YAAcA,EARzB,GAYCY,kBAAkBtB,UAAUuB,QAC7BxB,OAAOyB,eAAeF,kBAAkBtB,UAAW,SAAU,CACzDyB,MAAO,SAAUC,EAAUC,EAAMC,GAK7B,IAJA,IAAIC,EAASC,KAAMzD,KAAK0D,UAAUJ,EAAMC,GAASI,MAAM,KAAK,IAC5DC,EAAMJ,EAAOtC,OACb2C,EAAM,IAAIC,WAAWF,GAEZvD,EAAE,EAAGA,EAAEuD,EAAKvD,IACjBwD,EAAIxD,GAAKmD,EAAOO,WAAW1D,GAG/BgD,EAAU,IAAIW,KAAM,CAACH,GAAM,CAACP,KAAMA,GAAQ,kBAMtD,IAIIW,EACAC,EACAC,EANAC,EAAc,CAAC,SAAU,MAAO,MAChCC,EAAcxB,SAASyB,cAAc,OAAOC,MAC5CC,EAAY,CAAC,EAAE,EAAE,EAAE,GACnBC,EAAY,CAAC,EAAE,EAAE,EAAE,GAKvB,SAASC,EAAaC,GAClB,GAAIA,KAAQN,EACR,OAAOM,EAGX,IAAIC,EAAUD,EAAK,GAAGE,cAAgBF,EAAK7C,MAAM,GAC7CzB,EAAI+D,EAAYlD,OAEpB,MAAOb,IAEH,GADAsE,EAAOP,EAAY/D,GAAKuE,EACpBD,KAAQN,EACR,OAAOM,EASnB,SAASG,EAAcC,EAAMC,GACzB,IAAInB,EAAMW,EAAUS,QAAQF,IAAS,EAAIP,EAAYC,EACjDS,EAAQrB,EAAIoB,QAAQF,GACpBI,EAAUH,EAAS,GAAMnB,EAAI3C,OAEjC,OAAO2C,GAAKA,EAAI3C,OAASgE,EAASC,EAAStB,EAAI3C,QAAW2C,EAAI3C,QAIlE,SAASkE,EAAWC,EAAaC,GAE7B,IAAK,IAAIC,KADTF,EAAcA,GAAe,GACRC,EACbA,EAAOC,IAAaD,EAAOC,GAAUxD,aAAeuD,EAAOC,GAAUxD,cAAgBL,QACrF2D,EAAYE,GAAYF,EAAYE,IAAa,GACjDH,EAAWC,EAAYE,GAAWD,EAAOC,KAEzCF,EAAYE,GAAYD,EAAOC,GAGvC,OAAOF,EAGX,SAASG,EAAMC,GACX,OAAOL,EAAW,GAAIK,GAG1B,SAASC,EAASC,EAAMC,EAAMC,GAC1B,IAAIC,EACJ,OAAO,WACH,IAAIC,EAAU/F,KAAMgG,EAAOlG,UACvBmG,EAAQ,WACRH,EAAU,KACLD,GAAWF,EAAK9F,MAAMkG,EAASC,IAEpCE,EAAUL,IAAcC,EAC5BK,aAAaL,GACbA,EAAUzE,WAAW4E,EAAOL,GACxBM,GAASP,EAAK9F,MAAMkG,EAASC,IAIzC,SAASI,EAAeC,GACpB,GAAI,gBAAiBxD,SAAU,CAC3B,IAAID,EAAMC,SAASC,YAAY,cAC/BF,EAAI0D,UAAU,UAAU,GAAO,GAC/BD,EAAQE,cAAc3D,QAGtByD,EAAQG,UAAU,YAK1B,SAASC,EAAIC,EAAIC,EAAQC,GACrB,GAAwB,kBAAb,EAAuB,CAC9B,IAAIC,EAAMF,EACVA,EAAS,GACTA,EAAOE,GAAOD,EAGlB,IAAK,IAAIjC,KAAQgC,EACbD,EAAGnC,MAAMI,GAAQgC,EAAOhC,GAIhC,SAASmC,EAASJ,EAAI3G,GACd2G,EAAGK,UACHL,EAAGK,UAAUC,IAAIjH,GAGjB2G,EAAGO,WAAa,IAAMlH,EAI9B,SAASmH,EAAYR,EAAI3G,GACjB2G,EAAGK,UACHL,EAAGK,UAAUI,OAAOpH,GAGpB2G,EAAGO,UAAYP,EAAGO,UAAUG,QAAQrH,EAAG,IAI/C,SAASsH,EAAcX,EAAIY,GACvB,IAAK,IAAIC,KAAOD,EACZZ,EAAGc,aAAaD,EAAKD,EAAMC,IAInC,SAASE,EAAIC,GACT,OAAOC,SAASD,EAAG,IAIvB,SAASE,EAAUC,EAAKC,GACpB,IAAIC,EAAM,IAAIC,MAEd,OADAD,EAAIxD,MAAM0D,QAAU,IACb,IAAIvI,SAAQ,SAAUoB,EAASD,GAClC,SAASqH,IACLH,EAAIxD,MAAM0D,QAAU,IACpB5G,YAAW,WACPP,EAAQiH,KACT,GAGPA,EAAII,gBAAgB,eAChBN,EAAIO,MAAM,uBACVL,EAAIP,aAAa,cAAe,aAGpCO,EAAIM,OAAS,WACLP,EACAQ,KAAKC,QAAQR,GAAK,WACdG,OAIJA,KAGRH,EAAIS,QAAU,SAAUC,GACpBV,EAAIxD,MAAM0D,QAAU,EACpB5G,YAAW,WACPR,EAAO4H,KACR,IAEPV,EAAIF,IAAMA,KAIlB,SAASa,EAAuBX,EAAKhD,GACjC,IAAI4D,EAAIZ,EAAIa,aACRzH,EAAI4G,EAAIc,cACRC,EAAS/D,GAAQgE,EAAmBhB,GACxC,GAAIe,GAAUA,GAAU,EAAG,CACvB,IAAIE,EAAGL,EACPA,EAAIxH,EACJA,EAAI6H,EAER,MAAO,CAAEC,MAAON,EAAGO,OAAQ/H,GA/I/B+C,EAAgBQ,EAAa,aAC7BT,EAAgBS,EAAa,mBAC7BP,EAAiBO,EAAa,cAiJ9B,IAAIyE,EAAiB,CACjB,YAAe,CACXC,OAAQ,SAEZ,UAAa,CACTA,OAAQ,KAGZC,EAAY,SAAUL,EAAGM,EAAGC,GAC5BvJ,KAAKgJ,EAAIQ,WAAWR,GACpBhJ,KAAKsJ,EAAIE,WAAWF,GACpBtJ,KAAKuJ,MAAQC,WAAWD,IAG5BF,EAAUI,MAAQ,SAAU/B,GACxB,OAAIA,EAAEnD,MACK8E,EAAUI,MAAM/B,EAAEnD,MAAML,IAE1BwD,EAAEzC,QAAQ,WAAa,GAAKyC,EAAEzC,QAAQ,SAAW,EAC/CoE,EAAUK,WAAWhC,GAGrB2B,EAAUM,WAAWjC,IAIpC2B,EAAUK,WAAa,SAAUhC,GAC7B,IAAIkC,EAAOlC,EAAEmC,UAAU,GAAGlG,MAAM,KAKhC,OAJKiG,EAAK1I,QAAgB,SAANwG,IAChBkC,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAGpB,IAAIP,EAAU5B,EAAImC,EAAK,IAAKnC,EAAImC,EAAK,IAAKJ,WAAWI,EAAK,MAGrEP,EAAUM,WAAa,SAAUjC,GAC7B,IAAIoC,EAASpC,EAAE/D,MAAM,MACjBoG,EAAYD,EAAO,GAAGD,UAAUG,GAAQC,QAAQF,UAAU7I,OAAS,GAAGyC,MAAM,KAC5E4F,EAAQO,EAAO5I,OAAS,EAAI4I,EAAO,GAAGD,UAAU,GAAK,EACrDb,EAAIe,EAAU7I,OAAS,EAAI6I,EAAU,GAAK,EAC1CT,EAAIS,EAAU7I,OAAS,EAAI6I,EAAU,GAAK,EAE9C,OAAO,IAAIV,EAAUL,EAAGM,EAAGC,IAG/BF,EAAU1H,UAAUC,SAAW,WAC3B,IAAIwH,EAASD,EAAea,GAAQC,QAAQF,WAAWX,QAAU,GACjE,OAAOY,GAAQC,QAAQF,UAAY,IAAM/J,KAAKgJ,EAAI,OAAShJ,KAAKsJ,EAAI,KAAOF,EAAS,WAAapJ,KAAKuJ,MAAQ,KAGlH,IAAIW,EAAkB,SAAUxD,GAC5B,IAAKA,IAAOA,EAAGnC,MAAMN,GAGjB,OAFAjE,KAAKgJ,EAAI,OACThJ,KAAKsJ,EAAI,GAGb,IAAI7C,EAAMC,EAAGnC,MAAMN,GAAeN,MAAM,KACxC3D,KAAKgJ,EAAIQ,WAAW/C,EAAI,IACxBzG,KAAKsJ,EAAIE,WAAW/C,EAAI,KAO5B,SAASsC,EAAoBhB,GACzB,OAAOA,EAAIoC,UAAYpC,EAAIoC,SAASC,YAAc3C,EAAIM,EAAIoC,SAASC,aAAe,EAGtF,SAASC,EAAWC,EAAQvC,EAAKwC,GAC7B,IAAItB,EAAQlB,EAAIkB,MACZC,EAASnB,EAAImB,OACbsB,EAAMF,EAAOG,WAAW,MAM5B,OAJAH,EAAOrB,MAAQlB,EAAIkB,MACnBqB,EAAOpB,OAASnB,EAAImB,OAEpBsB,EAAIE,OACIH,GACN,KAAK,EACFC,EAAIT,UAAUd,EAAO,GACrBuB,EAAIjB,OAAO,EAAG,GACd,MAEH,KAAK,EACDiB,EAAIT,UAAUd,EAAOC,GACrBsB,EAAIxF,OAAO,IAAI2F,KAAKC,GAAG,KACvB,MAEJ,KAAK,EACDJ,EAAIT,UAAU,EAAGb,GACjBsB,EAAIjB,MAAM,GAAI,GACd,MAEJ,KAAK,EACDe,EAAOrB,MAAQC,EACfoB,EAAOpB,OAASD,EAChBuB,EAAIxF,OAAO,GAAG2F,KAAKC,GAAG,KACtBJ,EAAIjB,MAAM,GAAI,GACd,MAEJ,KAAK,EACDe,EAAOrB,MAAQC,EACfoB,EAAOpB,OAASD,EAChBuB,EAAIxF,OAAO,GAAG2F,KAAKC,GAAG,KACtBJ,EAAIT,UAAU,GAAIb,GAClB,MAEJ,KAAK,EACDoB,EAAOrB,MAAQC,EACfoB,EAAOpB,OAASD,EAChBuB,EAAIxF,QAAQ,GAAG2F,KAAKC,GAAG,KACvBJ,EAAIT,WAAWd,EAAOC,GACtBsB,EAAIjB,MAAM,GAAI,GACd,MAEJ,KAAK,EACDe,EAAOrB,MAAQC,EACfoB,EAAOpB,OAASD,EAChBuB,EAAIT,UAAU,EAAGd,GACjBuB,EAAIxF,QAAQ,GAAG2F,KAAKC,GAAG,KACvB,MAENJ,EAAIK,UAAU9C,EAAK,EAAE,EAAGkB,EAAOC,GAC/BsB,EAAIM,UAIR,SAASC,IACL,IAGIC,EAAUjD,EAAKkD,EAAUC,EAASC,EAAIC,EAHtC3L,EAAOO,KACPqL,EAAY,oBACZC,EAAsB7L,EAAK8L,QAAQN,SAAS3H,KAAO,SAAW7D,EAAK8L,QAAQN,SAAS3H,KAAO,KAG/F7D,EAAK8L,QAAQC,UAAY/L,EAAK8L,QAAQE,mBAAqBC,EAASzK,KAAKxB,GAEzEA,EAAKkM,KAAO,GACZlM,EAAKmM,SAAW,GAEhBZ,EAAWvL,EAAKmM,SAASZ,SAAWnI,SAASyB,cAAc,OAC3D2G,EAAWxL,EAAKmM,SAASX,SAAWpI,SAASyB,cAAc,OAC3DyD,EAAMtI,EAAKmM,SAAS7D,IAAMlF,SAASyB,cAAc,OACjD4G,EAAUzL,EAAKmM,SAASV,QAAUrI,SAASyB,cAAc,OAErD7E,EAAK8L,QAAQC,WACb/L,EAAKmM,SAAStB,OAASzH,SAASyB,cAAc,UAC9C7E,EAAKmM,SAASC,QAAUpM,EAAKmM,SAAStB,QAGtC7K,EAAKmM,SAASC,QAAU9D,EAG5BjB,EAASkE,EAAU,eACnBA,EAASxD,aAAa,kBAAmB,QACzC2D,EAAK1L,EAAK8L,QAAQP,SAAS/B,MAC3BmC,EAAK3L,EAAK8L,QAAQP,SAAS9B,OAC3BzC,EAAIuE,EAAU,CACV/B,MAAQkC,GAAMW,MAAMX,GAAM,GAAK,MAC/BjC,OAASkC,GAAMU,MAAMV,GAAM,GAAK,QAGpCtE,EAASmE,EAAU,eACfK,GACAxE,EAASmE,EAAUK,GAEvB7E,EAAIwE,EAAU,CACVhC,MAAOxJ,EAAK8L,QAAQN,SAAShC,MAAQ,KACrCC,OAAQzJ,EAAK8L,QAAQN,SAAS/B,OAAS,OAE3C+B,EAASzD,aAAa,WAAY,GAElCV,EAASrH,EAAKmM,SAASC,QAAS,YAChCxE,EAAc5H,EAAKmM,SAASC,QAAS,CAAE,IAAO,UAAW,eAAgB,UACzE/E,EAASoE,EAAS,cAElBzL,EAAK4G,QAAQ0F,YAAYf,GACzBA,EAASe,YAAYtM,EAAKmM,SAASC,SACnCb,EAASe,YAAYd,GACrBD,EAASe,YAAYb,GAErBpE,EAASrH,EAAK4G,QAASgF,GACnB5L,EAAK8L,QAAQS,aACblF,EAASrH,EAAK4G,QAAS5G,EAAK8L,QAAQS,aAGxCC,EAAehL,KAAKjB,MAEhBP,EAAK8L,QAAQW,YACbC,EAAgBlL,KAAKxB,GAOrBA,EAAK8L,QAAQa,cACbC,EAAkBpL,KAAKxB,GAkC/B,SAASiM,IACL,OAAO1L,KAAKuL,QAAQe,YAAclK,OAAOkG,KAG7C,SAAS+D,IACL,IAGIE,EACAC,EACAC,EAEAC,EACAC,EACAC,EACAC,EAVApN,EAAOO,KACP8M,EAAOjK,SAASyB,cAAc,OAC9ByI,GAAa,EAIbC,EAAU,GAwBd,SAASC,EAAUxE,GACf,SAAkB9F,IAAd8F,EAAGyE,QAAsC,IAAdzE,EAAGyE,UAElCzE,EAAG0E,kBACCJ,GAAJ,CAIA,IAAIK,EAAc3N,EAAKmM,SAASV,QAAQmC,wBASxC,GAPAN,GAAa,EACbP,EAAY/D,EAAG6E,MACfb,EAAYhE,EAAG8E,MACfhB,GAAgE,IAApD9D,EAAG+E,cAAcvG,UAAUhC,QAAQ,YAAqB,IAAM,IAC1EyH,EAAWU,EAAYnE,MACvB0D,EAAYS,EAAYlE,OAEpBT,EAAGgF,QAAS,CACZ,IAAIA,EAAUhF,EAAGgF,QAAQ,GACzBjB,EAAYiB,EAAQH,MACpBb,EAAYgB,EAAQF,MAGxBnL,OAAOsL,iBAAiB,YAAaC,GACrCvL,OAAOsL,iBAAiB,YAAaC,GACrCvL,OAAOsL,iBAAiB,UAAWE,GACnCxL,OAAOsL,iBAAiB,WAAYE,GACpC/K,SAASgL,KAAKtJ,MAAMJ,GAAkB,QAG1C,SAASwJ,EAAUlF,GACf,IAAI6E,EAAQ7E,EAAG6E,MACXC,EAAQ9E,EAAG8E,MAIf,GAFA9E,EAAG0E,iBAEC1E,EAAGgF,QAAS,CACZ,IAAIA,EAAUhF,EAAGgF,QAAQ,GACzBH,EAAQG,EAAQH,MAChBC,EAAQE,EAAQF,MAGpB,IAAIO,EAASR,EAAQd,EACjBuB,EAASR,EAAQd,EACjBuB,EAAYvO,EAAK8L,QAAQN,SAAS/B,OAAS6E,EAC3CE,EAAWxO,EAAK8L,QAAQN,SAAShC,MAAQ6E,EAE3B,MAAdvB,GAAqByB,GAAahB,GAAWgB,GAAarB,GAC1DlG,EAAIqG,EAAM,CACN5D,OAAQ8E,EAAY,OAGxBvO,EAAK8L,QAAQP,SAAS9B,QAAU6E,EAChCtH,EAAIhH,EAAKmM,SAASZ,SAAU,CACxB9B,OAAQzJ,EAAK8L,QAAQP,SAAS9B,OAAS,OAG3CzJ,EAAK8L,QAAQN,SAAS/B,QAAU6E,EAChCtH,EAAIhH,EAAKmM,SAASX,SAAU,CACxB/B,OAAQzJ,EAAK8L,QAAQN,SAAS/B,OAAS,QAGxB,MAAdqD,GAAqB0B,GAAYjB,GAAWiB,GAAYvB,IAC7DjG,EAAIqG,EAAM,CACN7D,MAAOgF,EAAW,OAGtBxO,EAAK8L,QAAQP,SAAS/B,OAAS6E,EAC/BrH,EAAIhH,EAAKmM,SAASZ,SAAU,CACxB/B,MAAOxJ,EAAK8L,QAAQP,SAAS/B,MAAQ,OAGzCxJ,EAAK8L,QAAQN,SAAShC,OAAS6E,EAC/BrH,EAAIhH,EAAKmM,SAASX,SAAU,CACxBhC,MAAOxJ,EAAK8L,QAAQN,SAAShC,MAAQ,QAI7CiF,EAAejN,KAAKxB,GACpB0O,EAAkBlN,KAAKxB,GACvB2O,EAAmBnN,KAAKxB,GACxB4O,EAAepN,KAAKxB,GACpBgN,EAAYc,EACZf,EAAYc,EAGhB,SAASM,IACLb,GAAa,EACb3K,OAAOkM,oBAAoB,YAAaX,GACxCvL,OAAOkM,oBAAoB,YAAaX,GACxCvL,OAAOkM,oBAAoB,UAAWV,GACtCxL,OAAOkM,oBAAoB,WAAYV,GACvC/K,SAASgL,KAAKtJ,MAAMJ,GAAkB,GA9G1C2C,EAASgG,EAAM,cACfrG,EAAIqG,EAAM,CACN7D,MAAOjJ,KAAKuL,QAAQN,SAAShC,MAAQ,KACrCC,OAAQlJ,KAAKuL,QAAQN,SAAS/B,OAAS,OAGvClJ,KAAKuL,QAAQgD,eAAerF,SAC5B0D,EAAK/J,SAASyB,cAAc,OAC5BwC,EAAS8F,EAAI,uBACbE,EAAKf,YAAYa,IAGjB5M,KAAKuL,QAAQgD,eAAetF,QAC5B4D,EAAKhK,SAASyB,cAAc,OAC5BwC,EAAS+F,EAAI,yBACbC,EAAKf,YAAYc,IAkGjBD,IACAA,EAAGc,iBAAiB,YAAaT,GACjCL,EAAGc,iBAAiB,aAAcT,IAGlCJ,IACAA,EAAGa,iBAAiB,YAAaT,GACjCJ,EAAGa,iBAAiB,aAAcT,IAGtCjN,KAAK4L,SAASZ,SAASe,YAAYe,GAGvC,SAAS0B,EAAc9G,GACnB,GAAI1H,KAAKuL,QAAQW,WAAY,CACzB,IAAIuC,EAAIzO,KAAK4L,SAAS8C,OAClB9H,EAAM+H,EAAIjH,EAAG,GAEjB+G,EAAErL,MAAQuH,KAAKiE,IAAIpF,WAAWiF,EAAEI,KAAMlE,KAAKkE,IAAIrF,WAAWiF,EAAEG,KAAMhI,IAAMhF,YAIhF,SAASuK,IACL,IAAI1M,EAAOO,KACP8M,EAAOrN,EAAKmM,SAASkD,WAAajM,SAASyB,cAAc,OACzDoK,EAASjP,EAAKmM,SAAS8C,OAAS7L,SAASyB,cAAc,SAe3D,SAASyK,IACLC,EAAQ/N,KAAKxB,EAAM,CACf2D,MAAOoG,WAAWkF,EAAOtL,OACzB6L,OAAQ,IAAI/E,EAAgBzK,EAAKmM,SAASC,SAC1CqD,aAAczP,EAAKmM,SAASX,SAASoC,wBACrC8B,UAAW9F,EAAUI,MAAMhK,EAAKmM,SAASC,WAIjD,SAASuD,EAAO3G,GACZ,IAAI4G,EAAOC,EAEX,GAAmC,SAAhC7P,EAAK8L,QAAQgE,iBAA4C,IAAf9G,EAAG+G,QAC9C,OAAO,EAELH,EADO5G,EAAGgH,WACFhH,EAAGgH,WAAa,KACjBhH,EAAGsF,OACFtF,EAAGsF,OAAS,KACbtF,EAAG/F,OACF+F,EAAG/F,QAAU,GAEb,EAGZ4M,EAAa7P,EAAKiQ,aAAgBL,EAAQ5P,EAAKiQ,aAE/CjH,EAAG0E,iBACHqB,EAAcvN,KAAKxB,EAAM6P,GACzBP,EAAO9N,KAAKxB,GAzChBqH,EAASgG,EAAM,kBACfhG,EAAS4H,EAAQ,aACjBA,EAAOpL,KAAO,QACdoL,EAAOiB,KAAO,SACdjB,EAAOtL,MAAQ,IACfsL,EAAOnK,MAAMqL,QAAUnQ,EAAK8L,QAAQsE,WAAa,GAAK,OACtDnB,EAAOlH,aAAa,aAAc,QAElC/H,EAAK4G,QAAQ0F,YAAYe,GACzBA,EAAKf,YAAY2C,GAEjBjP,EAAKiQ,aAAe,EAiCpBjQ,EAAKmM,SAAS8C,OAAOhB,iBAAiB,QAASqB,GAC/CtP,EAAKmM,SAAS8C,OAAOhB,iBAAiB,SAAUqB,GAE5CtP,EAAK8L,QAAQgE,iBACb9P,EAAKmM,SAASZ,SAAS0C,iBAAiB,aAAc0B,GACtD3P,EAAKmM,SAASZ,SAAS0C,iBAAiB,iBAAkB0B,IAIlE,SAASJ,EAAQc,GACb,IAAIrQ,EAAOO,KACPmP,EAAYW,EAAKA,EAAGX,UAAY9F,EAAUI,MAAMhK,EAAKmM,SAASC,SAC9DkE,EAASD,EAAKA,EAAGZ,aAAezP,EAAKmM,SAASX,SAASoC,wBACvD4B,EAASa,EAAKA,EAAGb,OAAS,IAAI/E,EAAgBzK,EAAKmM,SAASC,SAEhE,SAASmE,IACL,IAAIC,EAAW,GACfA,EAAS/L,GAAiBiL,EAAUvN,WACpCqO,EAAShM,GAAiBgL,EAAOrN,WACjC6E,EAAIhH,EAAKmM,SAASC,QAASoE,GAQ/B,GALAxQ,EAAKiQ,aAAeI,EAAKA,EAAG1M,MAAQ3D,EAAKiQ,aACzCP,EAAU5F,MAAQ9J,EAAKiQ,aACvBjQ,EAAKmM,SAAS8C,OAAOlH,aAAa,gBAAiB/H,EAAKiQ,cACxDM,IAEIvQ,EAAK8L,QAAQ2E,gBAAiB,CAC9B,IAAIC,EAAaC,EAAsBnP,KAAKxB,EAAMsQ,GAC9CM,EAAkBF,EAAWpG,UAC7BuG,EAAcH,EAAWlB,OAEzBE,EAAUnG,GAAKqH,EAAgBE,OAC/BtB,EAAOjG,EAAIsH,EAAYE,KACvBrB,EAAUnG,EAAIqH,EAAgBE,MAG9BpB,EAAUnG,GAAKqH,EAAgBG,OAC/BvB,EAAOjG,EAAIsH,EAAYC,KACvBpB,EAAUnG,EAAIqH,EAAgBG,MAG9BrB,EAAU7F,GAAK+G,EAAgBI,OAC/BxB,EAAO3F,EAAIgH,EAAYI,KACvBvB,EAAU7F,EAAI+G,EAAgBI,MAG9BtB,EAAU7F,GAAK+G,EAAgBK,OAC/BzB,EAAO3F,EAAIgH,EAAYG,KACvBtB,EAAU7F,EAAI+G,EAAgBK,MAGtCV,IACAW,EAAkB1P,KAAKxB,GACvB4O,EAAepN,KAAKxB,GAGxB,SAAS2Q,EAAsBnF,GAC3B,IAAIxL,EAAOO,KACPuJ,EAAQ9J,EAAKiQ,aACbkB,EAAU3F,EAAShC,MACnB4H,EAAW5F,EAAS/B,OACpB4H,EAAsBrR,EAAKmM,SAASZ,SAAS+F,YAAc,EAC3DC,EAAsBvR,EAAKmM,SAASZ,SAASiG,aAAe,EAC5DC,EAAUzR,EAAKmM,SAASC,QAAQwB,wBAChC8D,EAAcD,EAAQjI,MACtBmI,EAAeF,EAAQhI,OACvBmI,EAAYT,EAAU,EACtBU,EAAaT,EAAW,EAExBN,GAAsD,GAA7Cc,EAAY9H,EAASuH,GAC9BN,EAAOD,GAASY,GAAe,EAAI5H,GAAWqH,GAAW,EAAIrH,IAE7DkH,GAAuD,GAA9Ca,EAAa/H,EAASyH,GAC/BN,EAAOD,GAASW,GAAgB,EAAI7H,GAAWsH,GAAY,EAAItH,IAE/DgI,EAAc,EAAIhI,EAAS8H,EAC3BG,EAAcL,GAAe,EAAI5H,GAAUgI,EAE3CE,EAAc,EAAIlI,EAAS+H,EAC3BI,EAAcN,GAAgB,EAAI7H,GAAUkI,EAEhD,MAAO,CACH1H,UAAW,CACPwG,KAAMA,EACNC,KAAMA,EACNC,KAAMA,EACNC,KAAMA,GAEVzB,OAAQ,CACJsB,KAAMiB,EACNhB,KAAMe,EACNd,KAAMiB,EACNhB,KAAMe,IAKlB,SAASrD,EAAmBpJ,GACxB,IAAIvF,EAAOO,KACPuJ,EAAQ9J,EAAKiQ,aACb/D,EAAOlM,EAAKmM,SAASC,QAAQwB,wBAC7BsE,EAASlS,EAAKmM,SAASX,SAASoC,wBAChC8B,EAAY9F,EAAUI,MAAMhK,EAAKmM,SAASC,QAAQtH,MAAML,IACxD0N,EAAK,IAAI1H,EAAgBzK,EAAKmM,SAASC,SACvCgG,EAAOF,EAAOE,IAAMlG,EAAKkG,IAAQF,EAAOzI,OAAS,EACjD4I,EAAQH,EAAOG,KAAOnG,EAAKmG,KAASH,EAAO1I,MAAQ,EACnD8I,EAAS,GACTC,EAAM,GAEV,GAAIhN,EAAQ,CACR,IAAIiN,EAAKL,EAAG5I,EACRkJ,EAAKN,EAAGtI,EACR6I,EAAKhD,EAAUnG,EACfoJ,EAAKjD,EAAU7F,EAEnByI,EAAOzI,EAAI2I,EACXF,EAAO/I,EAAIkJ,EACX/C,EAAU7F,EAAI6I,EACdhD,EAAUnG,EAAIoJ,OAGdL,EAAOzI,EAAIuI,EAAMtI,EACjBwI,EAAO/I,EAAI8I,EAAOvI,EAElByI,EAAI1I,GAAKyI,EAAOzI,EAAIsI,EAAGtI,IAAM,EAAIC,GACjCyI,EAAIhJ,GAAK+I,EAAO/I,EAAI4I,EAAG5I,IAAM,EAAIO,GAEjC4F,EAAUnG,GAAKgJ,EAAIhJ,EACnBmG,EAAU7F,GAAK0I,EAAI1I,EAGvB,IAAI+I,EAAS,GACbA,EAAOpO,GAAiB8N,EAAO/I,EAAI,MAAQ+I,EAAOzI,EAAI,KACtD+I,EAAOnO,GAAiBiL,EAAUvN,WAClC6E,EAAIhH,EAAKmM,SAASC,QAASwG,GAG/B,SAASpG,IACL,IAEIO,EACAC,EACA6F,EACAvC,EACAZ,EANA1P,EAAOO,KACP+M,GAAa,EAOjB,SAASwF,EAA2BzE,EAAQC,GACxC,IAAImD,EAAUzR,EAAKmM,SAASC,QAAQwB,wBAChCwE,EAAM1C,EAAU7F,EAAIyE,EACpB+D,EAAO3C,EAAUnG,EAAI8E,EAErBrO,EAAK8L,QAAQ2E,iBACTH,EAAO8B,IAAMX,EAAQW,IAAM9D,GAAUgC,EAAOyC,OAAStB,EAAQsB,OAASzE,IACtEoB,EAAU7F,EAAIuI,GAGd9B,EAAO+B,KAAOZ,EAAQY,KAAOhE,GAAUiC,EAAO0C,MAAQvB,EAAQuB,MAAQ3E,IACtEqB,EAAUnG,EAAI8I,KAIlB3C,EAAU7F,EAAIuI,EACd1C,EAAUnG,EAAI8I,GAItB,SAASY,EAAgB3F,GACvBtN,EAAKmM,SAASC,QAAQrE,aAAa,eAAgBuF,GACnDtN,EAAKmM,SAASZ,SAASxD,aAAa,kBAAmBuF,EAAY,OAAQ,QAG7E,SAAS4F,EAAQlK,GACb,IAMQmK,EANJC,EAAc,GACdC,EAAc,GACdC,EAAc,GACdC,EAAc,GAElB,IAAIvK,EAAGwK,UAAaxK,EAAGyK,UAAYJ,GAAYrK,EAAGyK,UAAYF,GAUzD,GAAIvT,EAAK8L,QAAQ4H,mBAAsB1K,EAAGyK,SAAW,IAAMzK,EAAGyK,SAAW,GAAK,CAC/EzK,EAAG0E,iBACH,IAAIiG,EAAWC,EAAa5K,EAAGyK,SAE/B/D,EAAY9F,EAAUI,MAAMhK,EAAKmM,SAASC,SAC1ChJ,SAASgL,KAAKtJ,MAAMJ,GAAkB,OACtC4L,EAAStQ,EAAKmM,SAASX,SAASoC,wBAChCiG,EAAQF,SAdJR,EADAnK,EAAGyK,UAAYJ,EACRtJ,WAAW/J,EAAKmM,SAAS8C,OAAOtL,OAASoG,WAAW/J,EAAKmM,SAAS8C,OAAOiB,MAGzEnG,WAAW/J,EAAKmM,SAAS8C,OAAOtL,OAASoG,WAAW/J,EAAKmM,SAAS8C,OAAOiB,MAEpFlQ,EAAK8T,QAAQX,GAYjB,SAASS,EAAa9L,GAClB,OAAQA,GACJ,KAAKsL,EACD,MAAO,CAAC,EAAG,GACf,KAAKC,EACD,MAAO,CAAC,EAAG,GACf,KAAKC,EACD,MAAO,EAAE,EAAG,GAChB,KAAKC,EACD,MAAO,CAAC,GAAI,KAK5B,SAASM,EAAQF,GACb,IAAItF,EAASsF,EAAS,GAClBrF,EAASqF,EAAS,GAClBf,EAAS,GAEbE,EAA2BzE,EAAQC,GAEnCsE,EAAOnO,GAAiBiL,EAAUvN,WAClC6E,EAAIhH,EAAKmM,SAASC,QAASwG,GAC3BnE,EAAejN,KAAKxB,GACpBoD,SAASgL,KAAKtJ,MAAMJ,GAAkB,GACtCiK,EAAmBnN,KAAKxB,GACxB4O,EAAepN,KAAKxB,GACpB6S,EAAmB,EAGvB,SAASrF,EAAUxE,GACf,SAAkB9F,IAAd8F,EAAGyE,QAAsC,IAAdzE,EAAGyE,UAElCzE,EAAG0E,kBACCJ,GAAJ,CAKA,GAJAA,GAAa,EACbP,EAAY/D,EAAG6E,MACfb,EAAYhE,EAAG8E,MAEX9E,EAAGgF,QAAS,CACZ,IAAIA,EAAUhF,EAAGgF,QAAQ,GACzBjB,EAAYiB,EAAQH,MACpBb,EAAYgB,EAAQF,MAExBmF,EAAgB3F,GAChBoC,EAAY9F,EAAUI,MAAMhK,EAAKmM,SAASC,SAC1CzJ,OAAOsL,iBAAiB,YAAaC,GACrCvL,OAAOsL,iBAAiB,YAAaC,GACrCvL,OAAOsL,iBAAiB,UAAWE,GACnCxL,OAAOsL,iBAAiB,WAAYE,GACpC/K,SAASgL,KAAKtJ,MAAMJ,GAAkB,OACtC4L,EAAStQ,EAAKmM,SAASX,SAASoC,yBAGpC,SAASM,EAAUlF,GACfA,EAAG0E,iBACH,IAAIG,EAAQ7E,EAAG6E,MACXC,EAAQ9E,EAAG8E,MAEf,GAAI9E,EAAGgF,QAAS,CACZ,IAAIA,EAAUhF,EAAGgF,QAAQ,GACzBH,EAAQG,EAAQH,MAChBC,EAAQE,EAAQF,MAGpB,IAAIO,EAASR,EAAQd,EACjBuB,EAASR,EAAQd,EACjB4F,EAAS,GAEb,GAAgB,cAAZ5J,EAAGnF,MACCmF,EAAGgF,QAAQvM,OAAS,EAAG,CACvB,IAAIsS,EAAS/K,EAAGgF,QAAQ,GACpBgG,EAAShL,EAAGgF,QAAQ,GACpBiG,EAAO/I,KAAKgJ,MAAMH,EAAOlG,MAAQmG,EAAOnG,QAAUkG,EAAOlG,MAAQmG,EAAOnG,QAAUkG,EAAOjG,MAAQkG,EAAOlG,QAAUiG,EAAOjG,MAAQkG,EAAOlG,QAEvI+E,IACDA,EAAmBoB,EAAOjU,EAAKiQ,cAGnC,IAAInG,EAAQmK,EAAOpB,EAInB,OAFA9D,EAAcvN,KAAKxB,EAAM8J,QACzBnD,EAAe3G,EAAKmM,SAAS8C,QAKrC6D,EAA2BzE,EAAQC,GAEnCsE,EAAOnO,GAAiBiL,EAAUvN,WAClC6E,EAAIhH,EAAKmM,SAASC,QAASwG,GAC3BnE,EAAejN,KAAKxB,GACpBgN,EAAYc,EACZf,EAAYc,EAGhB,SAASM,IACLb,GAAa,EACb2F,EAAgB3F,GAChB3K,OAAOkM,oBAAoB,YAAaX,GACxCvL,OAAOkM,oBAAoB,YAAaX,GACxCvL,OAAOkM,oBAAoB,UAAWV,GACtCxL,OAAOkM,oBAAoB,WAAYV,GACvC/K,SAASgL,KAAKtJ,MAAMJ,GAAkB,GACtCiK,EAAmBnN,KAAKxB,GACxB4O,EAAepN,KAAKxB,GACpB6S,EAAmB,EAGvB7S,EAAKmM,SAASV,QAAQwC,iBAAiB,YAAaT,GACpDxN,EAAKmM,SAASX,SAASyC,iBAAiB,UAAWiF,GACnDlT,EAAKmM,SAASV,QAAQwC,iBAAiB,aAAcT,GAGzD,SAASiB,IACL,GAAKlO,KAAK4L,SAAV,CACA,IAAInM,EAAOO,KACP4T,EAAYnU,EAAKmM,SAASZ,SAASqC,wBACnCwG,EAAUpU,EAAKmM,SAASC,QAAQwB,wBAEpC5G,EAAIhH,EAAKmM,SAASV,QAAS,CACvBjC,MAAO4K,EAAQ5K,MAAQ,KACvBC,OAAQ2K,EAAQ3K,OAAS,KACzB2I,IAAMgC,EAAQhC,IAAM+B,EAAU/B,IAAO,KACrCC,KAAO+B,EAAQ/B,KAAO8B,EAAU9B,KAAQ,QAprBhD5H,EAAgBvI,UAAUC,SAAW,WACjC,OAAO5B,KAAKgJ,EAAI,MAAQhJ,KAAKsJ,EAAI,MAsrBrC,IAAIqH,EAAoBjL,EAASwI,EAAgB,KAEjD,SAASG,IACL,IAYQ5F,EAZJhJ,EAAOO,KACP2L,EAAOlM,EAAKqU,MAEXC,EAAW9S,KAAKxB,KAIrBA,EAAK8L,QAAQyI,OAAO/S,KAAKxB,EAAMkM,GAC3BlM,EAAKwU,GAA0B,qBAAdC,UACjBzU,EAAKwU,EAAExU,EAAK4G,SAAS8N,QAAQ,iBAAkBxI,IAI3CvJ,OAAOC,YACPoG,EAAK,IAAIpG,YAAY,SAAU,CAAEK,OAAQiJ,KAEzClD,EAAK5F,SAASC,YAAY,eAC1B2F,EAAG1F,gBAAgB,UAAU,GAAM,EAAM4I,IAG7ClM,EAAK4G,QAAQE,cAAckC,KAInC,SAASsL,IACL,OAAO/T,KAAK4L,SAASC,QAAQuI,aAAe,GAAKpU,KAAK4L,SAASC,QAAQwI,YAAc,EAGzF,SAASC,IACL,IAIIT,EAJApU,EAAOO,KACPuU,EAAc,EACdC,EAAW,GACXzM,EAAMtI,EAAKmM,SAASC,QAEpB4I,EAAiB,IAAIpL,EAAU,EAAG,EAAGkL,GACrCG,EAAc,IAAIxK,EAClByK,EAAYZ,EAAW9S,KAAKxB,GAE3BkV,IAAalV,EAAKkM,KAAKiJ,QAI5BnV,EAAKkM,KAAKiJ,OAAQ,EAClBJ,EAAStQ,GAAiBuQ,EAAe7S,WACzC4S,EAASvQ,GAAiByQ,EAAY9S,WACtC4S,EAAS,WAAa,EACtB/N,EAAIsB,EAAKyM,GAETX,EAAUpU,EAAKmM,SAASC,QAAQwB,wBAEhC5N,EAAKoV,oBAAsBhB,EAAQ5K,MACnCxJ,EAAKqV,qBAAuBjB,EAAQ3K,OACpCzJ,EAAKkM,KAAKpB,YAAcxB,EAAmBtJ,EAAKmM,SAAS7D,KAErDtI,EAAK8L,QAAQW,WACbiC,EAAkBlN,KAAKxB,GAAM,GAG7BA,EAAKiQ,aAAe6E,EAGxBE,EAAelL,MAAQ9J,EAAKiQ,aAC5B8E,EAAStQ,GAAiBuQ,EAAe7S,WACzC6E,EAAIsB,EAAKyM,GAEL/U,EAAKkM,KAAKoJ,OAAO7T,OACjB8T,EAAY/T,KAAKxB,EAAMA,EAAKkM,KAAKoJ,QAGjCE,EAAahU,KAAKxB,GAGtB2O,EAAmBnN,KAAKxB,GACxByO,EAAejN,KAAKxB,IAGxB,SAAS0O,EAAmB+G,GACxB,IAGIX,EACAY,EAMAC,EACAC,EAXA5V,EAAOO,KACPsV,EAAU3K,KAAKiE,IAAInP,EAAK8L,QAAQ+J,QAAS,IAAM,EAC/CC,EAAU9V,EAAK8L,QAAQgK,SAAW,IAGlC7G,EAASjP,EAAKmM,SAAS8C,OACvBnF,EAAQC,WAAWkF,EAAOtL,OAC1BoS,EAAe/V,EAAKmM,SAASZ,SAASqC,wBACtCwG,EAAUnL,EAAuBjJ,EAAKmM,SAAS7D,IAAKtI,EAAKkM,KAAKpB,aAC9DoH,EAASlS,EAAKmM,SAASX,SAASoC,wBAGhC5N,EAAK8L,QAAQ2E,kBACbkF,EAAOzD,EAAO1I,MAAQ4K,EAAQ5K,MAC9BoM,EAAO1D,EAAOzI,OAAS2K,EAAQ3K,OAC/BoM,EAAU3K,KAAKiE,IAAIwG,EAAMC,IAGzBC,GAAWC,IACXA,EAAUD,EAAU,GAGxB5G,EAAOG,IAAMF,EAAI2G,EAAS,GAC1B5G,EAAOE,IAAMD,EAAI4G,EAAS,IAErBL,IAAY3L,EAAQmF,EAAOG,KAAOtF,EAAQmF,EAAOE,KAClDJ,EAAcvN,KAAKxB,EAAM8J,EAAQmF,EAAOG,IAAMH,EAAOG,IAAMH,EAAOE,KAE7DsG,IACLC,EAAqBxK,KAAKiE,IAAK4G,EAAavM,MAAQ4K,EAAQ5K,MAASuM,EAAatM,OAAS2K,EAAQ3K,QACnGqL,EAAsC,OAAxB9U,EAAKkM,KAAK8J,UAAqBhW,EAAKkM,KAAK8J,UAAYN,EACnE3G,EAAcvN,KAAKxB,EAAM8U,IAG7BnO,EAAesI,GAGnB,SAASsG,EAAYD,GACjB,GAAsB,IAAlBA,EAAO7T,OACP,KAAM,gDAAkD6T,EAE5D,IAAItV,EAAOO,KACP0V,EAAcX,EAAO,GAAKA,EAAO,GAEjCpD,EAASlS,EAAKmM,SAASX,SAASoC,wBAChCuG,EAAYnU,EAAKmM,SAASZ,SAASqC,wBACnCsI,EAAW,CACP7D,KAAMH,EAAOG,KAAO8B,EAAU9B,KAC9BD,IAAKF,EAAOE,IAAM+B,EAAU/B,KAEhCtI,EAAQoI,EAAO1I,MAAQyM,EACvBE,EAAYb,EAAO,GACnBc,EAAad,EAAO,GACpBe,GAAiB,EAAIf,EAAO,GAAMY,EAAS9D,IAC3CkE,GAAkB,EAAIhB,EAAO,GAAMY,EAAS7D,KAC5CO,EAAS,GAEbA,EAAOpO,GAAiB4R,EAAa,MAAQD,EAAY,KACzDvD,EAAOnO,GAAiB,IAAImF,EAAU0M,EAAeD,EAAcvM,GAAO3H,WAC1E6E,EAAIhH,EAAKmM,SAASC,QAASwG,GAE3B7D,EAAcvN,KAAKxB,EAAM8J,GACzB9J,EAAKiQ,aAAenG,EAGxB,SAAS0L,IACL,IAAIxV,EAAOO,KACPgW,EAASvW,EAAKmM,SAASC,QAAQwB,wBAC/B4I,EAAQxW,EAAKmM,SAASX,SAASoC,wBAC/B6I,EAAWzW,EAAKmM,SAASZ,SAASqC,wBAClC8I,EAASF,EAAMnE,KAAOoE,EAASpE,KAC/BsE,EAAQH,EAAMpE,IAAMqE,EAASrE,IAC7BlJ,EAAIwN,GAAWH,EAAO/M,MAAQgN,EAAMhN,OAAS,EAC7C9H,EAAIiV,GAAUJ,EAAO9M,OAAS+M,EAAM/M,QAAU,EAC9CiG,EAAY,IAAI9F,EAAUV,EAAGxH,EAAG1B,EAAKiQ,cAEzCjJ,EAAIhH,EAAKmM,SAASC,QAAS3H,EAAeiL,EAAUvN,YAGxD,SAASyU,EAAuBC,GAC5B,IAAI7W,EAAOO,KACPsK,EAAS7K,EAAKmM,SAAStB,OACvBvC,EAAMtI,EAAKmM,SAAS7D,IACpByC,EAAMF,EAAOG,WAAW,MAE5BD,EAAI+L,UAAU,EAAG,EAAGjM,EAAOrB,MAAOqB,EAAOpB,QACzCoB,EAAOrB,MAAQlB,EAAIkB,MACnBqB,EAAOpB,OAASnB,EAAImB,OAEpB,IAAIqB,EAAc9K,EAAK8L,QAAQE,mBAAqB6K,GAAqBvN,EAAmBhB,GAC5FsC,EAAWC,EAAQvC,EAAKwC,GAG5B,SAASiM,EAAW7K,GAChB,IAAIlM,EAAOO,KACP+U,EAASpJ,EAAKoJ,OACdjD,EAAOrK,EAAIsN,EAAO,IAClBlD,EAAMpK,EAAIsN,EAAO,IACjBtC,EAAQhL,EAAIsN,EAAO,IACnBvC,EAAS/K,EAAIsN,EAAO,IACpB9L,EAAQwJ,EAAMX,EACd5I,EAASsJ,EAAOX,EAChB4E,EAAS9K,EAAK8K,OACdnM,EAASzH,SAASyB,cAAc,UAChCkG,EAAMF,EAAOG,WAAW,MAGxBiM,EAAc/K,EAAKgL,aAAe1N,EAClC2N,EAAejL,EAAKkL,cAAgB3N,EAExCoB,EAAOrB,MAAQyN,EACfpM,EAAOpB,OAAS0N,EAEZjL,EAAKmL,kBACLtM,EAAIuM,UAAYpL,EAAKmL,gBACrBtM,EAAIwM,SAAS,EAAG,EAAGN,EAAaE,IAKpC,IAAIK,EAAKnF,EACLoF,EAAKrF,EACLsF,EAASlO,EACTmO,EAAUlO,EACVmO,EAAK,EACLC,EAAK,EACLC,EAASb,EACTc,EAAUZ,EA8Cd,OAtCI9E,EAAO,IACPmF,EAAK,EACLI,EAAM1M,KAAK8M,IAAI3F,GAAQ7I,EAASyN,GAIhCS,EAASF,EAAKxX,EAAKoV,sBACnBsC,EAAS1X,EAAKoV,oBAAsBoC,EACpCM,EAAWJ,EAASlO,EAASyN,GAQ7B7E,EAAM,IACNqF,EAAK,EACLI,EAAM3M,KAAK8M,IAAI5F,GAAO3I,EAAU0N,GAIhCQ,EAAUF,EAAKzX,EAAKqV,uBACpBsC,EAAU3X,EAAKqV,qBAAuBoC,EACtCM,EAAWJ,EAAUlO,EAAU0N,GAKnCpM,EAAIK,UAAU7K,KAAK4L,SAASC,QAASoL,EAAIC,EAAIC,EAAQC,EAASC,EAAIC,EAAIC,EAAQC,GAC1Ef,IACAjM,EAAIuM,UAAY,OAChBvM,EAAIkN,yBAA2B,iBAC/BlN,EAAImN,YACJnN,EAAIoN,IAAItN,EAAOrB,MAAQ,EAAGqB,EAAOpB,OAAS,EAAGoB,EAAOrB,MAAQ,EAAG,EAAa,EAAV0B,KAAKC,IAAQ,GAC/EJ,EAAIqN,YACJrN,EAAIsN,QAEDxN,EAGX,SAASyN,EAAepM,GACpB,IAAIoJ,EAASpJ,EAAKoJ,OACdiD,EAAMnV,SAASyB,cAAc,OAC7ByD,EAAMlF,SAASyB,cAAc,OAC7B2E,EAAQ8L,EAAO,GAAKA,EAAO,GAC3B7L,EAAS6L,EAAO,GAAKA,EAAO,GAchC,OAZAjO,EAASkR,EAAK,kBACdA,EAAIjM,YAAYhE,GAChBtB,EAAIsB,EAAK,CACL+J,MAAQ,EAAIiD,EAAO,GAAM,KACzBlD,KAAO,EAAIkD,EAAO,GAAM,OAE5BhN,EAAIF,IAAM8D,EAAKsM,IACfxR,EAAIuR,EAAK,CACL/O,MAAOA,EAAQ,KACfC,OAAQA,EAAS,OAGd8O,EAGX,SAASE,EAAiBvM,GACtB,OAAO6K,EAAWvV,KAAKjB,KAAM2L,GAAMjI,UAAUiI,EAAKwM,OAAQxM,EAAKpI,SAGnE,SAAS6U,EAAezM,GACpB,IAAIlM,EAAOO,KACX,OAAO,IAAIN,SAAQ,SAAUoB,GACzB0V,EAAWvV,KAAKxB,EAAMkM,GAAMzI,QAAO,SAAUmV,GACzCvX,EAAQuX,KACT1M,EAAKwM,OAAQxM,EAAKpI,YAI7B,SAAS+U,EAAcvQ,GACf/H,KAAK4L,SAAS7D,IAAIwQ,aAClB/W,MAAMG,UAAU6W,QAAQvX,KAAKjB,KAAK4L,SAAS7D,IAAIhB,WAAW,SAAShH,GAAKgI,EAAIhB,UAAUC,IAAIjH,MAC1FC,KAAK4L,SAAS7D,IAAIwQ,WAAWE,aAAa1Q,EAAK/H,KAAK4L,SAAS7D,KAC7D/H,KAAK4L,SAASC,QAAU9D,GAE5B/H,KAAK4L,SAAS7D,IAAMA,EAGxB,SAAS2Q,EAAMnN,EAASoN,GACpB,IACIV,EADAxY,EAAOO,KAEP+U,EAAS,GACTnC,EAAO,KACPgG,EAAUlN,EAASzK,KAAKxB,GAE5B,GAAyB,kBAAd,EACPwY,EAAM1M,EACNA,EAAU,QAET,GAAI/J,MAAMC,QAAQ8J,GACnBwJ,EAASxJ,EAAQzJ,YAEhB,IAAyB,qBAAd,GAA6BrC,EAAKkM,KAAKsM,IAGnD,OAFA3D,EAA2BrT,KAAKxB,GAChC4O,EAAepN,KAAKxB,GACb,KAGPwY,EAAM1M,EAAQ0M,IACdlD,EAASxJ,EAAQwJ,QAAU,GAC3BnC,EAAgC,qBAAlBrH,EAAY,KAAoB,KAAOA,EAAQqH,KAOjE,OAJAnT,EAAKkM,KAAKiJ,OAAQ,EAClBnV,EAAKkM,KAAKsM,IAAMA,GAAOxY,EAAKkM,KAAKsM,IACjCxY,EAAKkM,KAAK8J,UAAY7C,EAEfhL,EAAUqQ,EAAKW,GAAS7X,MAAK,SAAUgH,GAE1C,GADAuQ,EAAcrX,KAAKxB,EAAMsI,GACpBgN,EAAO7T,OAsBHzB,EAAK8L,QAAQsN,WAClB9D,EAAS,CACLA,EAAO,GAAKhN,EAAIa,aAAe,IAC/BmM,EAAO,GAAKhN,EAAIc,cAAgB,IAChCkM,EAAO,GAAKhN,EAAIa,aAAe,IAC/BmM,EAAO,GAAKhN,EAAIc,cAAgB,UA3BpB,CAChB,IAIII,EAAOC,EAJP4P,EAASpQ,EAAuBX,GAChCgR,EAAOtZ,EAAKmM,SAASX,SAASoC,wBAC9B2L,EAAcD,EAAK9P,MAAQ8P,EAAK7P,OAChC+P,EAAiBH,EAAO7P,MAAQ6P,EAAO5P,OAGvC+P,EAAiBD,GACjB9P,EAAS4P,EAAO5P,OAChBD,EAAQC,EAAS8P,IAGjB/P,EAAQ6P,EAAO7P,MACfC,EAAS4P,EAAO5P,OAAS8P,GAG7B,IAAIE,GAAMJ,EAAO7P,MAAQA,GAAS,EAC9BkQ,GAAML,EAAO5P,OAASA,GAAU,EAChCkQ,EAAKF,EAAKjQ,EACVoQ,EAAKF,EAAKjQ,EACdzJ,EAAKkM,KAAKoJ,OAAS,CAACmE,EAAIC,EAAIC,EAAIC,GAWpC5Z,EAAKkM,KAAKoJ,OAASA,EAAOuE,KAAI,SAAUC,GACpC,OAAO/P,WAAW+P,MAElB9Z,EAAK8L,QAAQC,WACb6K,EAAuBpV,KAAKxB,EAAM8L,EAAQhB,aAE9C+J,EAA2BrT,KAAKxB,GAChC4O,EAAepN,KAAKxB,GACpBkZ,GAAMA,OAId,SAAShK,EAAIjH,EAAG8R,GACZ,OAAOhQ,WAAW9B,GAAG+R,QAAQD,GAAiB,GAGlD,SAASE,IACL,IAAIja,EAAOO,KACP6T,EAAUpU,EAAKmM,SAASC,QAAQwB,wBAChCsE,EAASlS,EAAKmM,SAASX,SAASoC,wBAChC+L,EAAKzH,EAAOG,KAAO+B,EAAQ/B,KAC3BuH,EAAK1H,EAAOE,IAAMgC,EAAQhC,IAC1B8H,GAAahI,EAAO1I,MAAQxJ,EAAKmM,SAASX,SAASoJ,aAAe,EAClEuF,GAAcjI,EAAOzI,OAASzJ,EAAKmM,SAASX,SAASmJ,cAAgB,EACrEyF,EAAKT,EAAK3Z,EAAKmM,SAASX,SAASoJ,YAAcsF,EAC/CG,EAAKT,EAAK5Z,EAAKmM,SAASX,SAASmJ,aAAewF,EAChDrQ,EAAQ9J,EAAKiQ,cAEbnG,IAAUwQ,KAAYjO,MAAMvC,MAC5BA,EAAQ,GAGZ,IAAIqF,EAAMnP,EAAK8L,QAAQ2E,gBAAkB,EAAI8J,OAAOC,kBAMpD,OALAb,EAAKzO,KAAKiE,IAAIA,EAAKwK,EAAK7P,GACxB8P,EAAK1O,KAAKiE,IAAIA,EAAKyK,EAAK9P,GACxBsQ,EAAKlP,KAAKiE,IAAIA,EAAKiL,EAAKtQ,GACxBuQ,EAAKnP,KAAKiE,IAAIA,EAAKkL,EAAKvQ,GAEjB,CACHwL,OAAQ,CAACpG,EAAIyK,GAAKzK,EAAI0K,GAAK1K,EAAIkL,GAAKlL,EAAImL,IACxClH,KAAMrJ,EACNgB,YAAa9K,EAAKkM,KAAKpB,aAI/B,IAAI2P,EAAkB,CACd5W,KAAM,SACN6U,OAAQ,MACR5U,QAAS,GAEb4W,EAAiB,CAAC,OAAQ,OAAQ,OAEtC,SAASC,GAAQ7O,GACb,IAWI8O,EAXA5a,EAAOO,KACP2L,EAAO+N,EAAKzY,KAAKxB,GACjB6a,EAAOlV,EAAWI,EAAM0U,GAAkB1U,EAAM+F,IAChDgP,EAAmC,kBAAd,EAAyBhP,EAAW+O,EAAKhX,MAAQ,SACtEkX,EAAOF,EAAKE,MAAQ,WACpBrC,EAASmC,EAAKnC,OACd5U,EAAU+W,EAAK/W,QACfuT,EAAkBwD,EAAKxD,gBACvBL,EAAgC,mBAAhB6D,EAAK7D,OAAuB6D,EAAK7D,OAAyC,WAA/BhX,EAAK8L,QAAQN,SAAS3H,KACjFyM,EAAStQ,EAAKmM,SAASX,SAASoC,wBAChCoN,EAAQ1K,EAAO9G,MAAQ8G,EAAO7G,OA8ClC,MA3Ca,aAATsR,GACA7O,EAAKgL,YAAc5G,EAAO9G,MAC1B0C,EAAKkL,aAAe9G,EAAO7G,QACJ,kBAATsR,IACVA,EAAKvR,OAASuR,EAAKtR,QACnByC,EAAKgL,YAAc6D,EAAKvR,MACxB0C,EAAKkL,aAAe2D,EAAKtR,QAClBsR,EAAKvR,OACZ0C,EAAKgL,YAAc6D,EAAKvR,MACxB0C,EAAKkL,aAAe2D,EAAKvR,MAAQwR,GAC1BD,EAAKtR,SACZyC,EAAKgL,YAAc6D,EAAKtR,OAASuR,EACjC9O,EAAKkL,aAAe2D,EAAKtR,SAI7BiR,EAAelV,QAAQkT,IAAW,IAClCxM,EAAKwM,OAAS,SAAWA,EACzBxM,EAAKpI,QAAUA,GAGnBoI,EAAK8K,OAASA,EACd9K,EAAKsM,IAAMxY,EAAKkM,KAAKsM,IACrBtM,EAAKmL,gBAAkBA,EAEvBuD,EAAO,IAAI3a,SAAQ,SAAUoB,GACzB,OAAOyZ,EAAWG,eAEd,IAAK,YACD5Z,EAAQ0V,EAAWvV,KAAKxB,EAAMkM,IAC9B,MACJ,IAAK,SACL,IAAK,SACD7K,EAAQoX,EAAiBjX,KAAKxB,EAAMkM,IACpC,MACJ,IAAK,OACDyM,EAAenX,KAAKxB,EAAMkM,GAAM5K,KAAKD,GACrC,MACJ,QACIA,EAAQiX,EAAe9W,KAAKxB,EAAMkM,IAClC,UAGL0O,EAGX,SAASM,KACLrG,EAA2BrT,KAAKjB,MAGpC,SAAS4a,GAAQC,GACb,IAAK7a,KAAKuL,QAAQC,YAAcxL,KAAKuL,QAAQE,kBACzC,KAAM,uEAGV,IAAIhM,EAAOO,KACPsK,EAAS7K,EAAKmM,SAAStB,OAE3B7K,EAAKkM,KAAKpB,YAAczF,EAAcrF,EAAKkM,KAAKpB,YAAasQ,GAC7DxQ,EAAWC,EAAQ7K,EAAKmM,SAAS7D,IAAKtI,EAAKkM,KAAKpB,aAChD6D,EAAmBnN,KAAKxB,GAAM,GAC9B0O,EAAkBlN,KAAKxB,GAG3B,SAASqb,KACL,IAAIrb,EAAOO,KACXP,EAAK4G,QAAQ0U,YAAYtb,EAAKmM,SAASZ,UACvC9D,EAAYzH,EAAK4G,QAAS,qBACtB5G,EAAK8L,QAAQW,YACbzM,EAAK4G,QAAQ0U,YAAYtb,EAAKmM,SAASkD,mBAEpCrP,EAAKmM,SAGhB,GAAIxJ,OAAO4Y,OAAQ,CACf,IAAI/G,GAAI7R,OAAO4Y,OACf/G,GAAEgH,GAAGC,QAAU,SAAUZ,GACrB,IAAIa,SAAYb,EAEhB,GAAW,WAAPa,EAAiB,CACjB,IAAInV,EAAOxE,MAAMG,UAAUG,MAAMb,KAAKnB,UAAW,GAC7Csb,EAAanH,GAAEjU,MAAM2L,KAAK,WAE9B,MAAa,QAAT2O,EACOc,EAAWtH,MAEJ,WAATwG,EACEc,EAAWC,OAAOxb,MAAMub,EAAYpV,GAE7B,SAATsU,EACEc,EAAWE,KAAKzb,MAAMub,EAAYpV,GAGtChG,KAAKub,MAAK,WACb,IAAIlb,EAAI4T,GAAEjU,MAAM2L,KAAK,WACrB,GAAKtL,EAAL,CAEA,IAAImb,EAASnb,EAAEia,GACf,IAAIrG,GAAEwH,WAAWD,GAOb,KAAM,WAAalB,EAAO,oBAN1BkB,EAAO3b,MAAMQ,EAAG2F,GACH,YAATsU,GACArG,GAAEjU,MAAM0b,WAAW,eAS/B,OAAO1b,KAAKub,MAAK,WACb,IAAIlb,EAAI,IAAI2J,GAAQhK,KAAMsa,GAC1Bja,EAAE4T,EAAIA,GACNA,GAAEjU,MAAM2L,KAAK,UAAWtL,OAMxC,SAAS2J,GAAQ3D,EAASiU,GACtB,GAAIjU,EAAQY,UAAUhC,QAAQ,sBAAwB,EAClD,MAAM,IAAI0W,MAAM,oDAKpB,GAHA3b,KAAKqG,QAAUA,EACfrG,KAAKuL,QAAUnG,EAAWI,EAAMwE,GAAQ4R,UAAWtB,GAER,QAAvCta,KAAKqG,QAAQwV,QAAQnB,cAAyB,CAC9C,IAAIoB,EAAY9b,KAAKqG,QACrBS,EAASgV,EAAW,qBACpBzU,EAAcyU,EAAW,CAAC,cAAgB,OAAQ,IAAQ,KAC1D,IAAIC,EAAiBlZ,SAASyB,cAAc,OAC5CtE,KAAKqG,QAAQkS,WAAWxM,YAAYgQ,GACpCA,EAAehQ,YAAY+P,GAC3B9b,KAAKqG,QAAU0V,EACf/b,KAAKuL,QAAQ0M,IAAMjY,KAAKuL,QAAQ0M,KAAO6D,EAAUjU,IAIrD,GADAkD,EAAQ9J,KAAKjB,MACTA,KAAKuL,QAAQ0M,IAAK,CAClB,IAAI+D,EAAW,CACX/D,IAAKjY,KAAKuL,QAAQ0M,IAClBlD,OAAQ/U,KAAKuL,QAAQwJ,eAElB/U,KAAKuL,QAAQ,cACbvL,KAAKuL,QAAQ,UACpBmN,EAAMzX,KAAKjB,KAAMgc,IAoEzB,OAhEAhS,GAAQ4R,SAAW,CACf3Q,SAAU,CACNhC,MAAO,IACPC,OAAQ,IACR5F,KAAM,UAEV0H,SAAU,GACViR,oBAAqB,CACjBC,SAAS,EACTC,UAAW,GACXC,WAAY,IAEhB7N,eAAgB,CACZtF,OAAO,EACPC,QAAQ,GAEZ8C,YAAa,GACb6D,YAAY,EACZ3D,YAAY,EACZE,cAAc,EACdmD,gBAAgB,EAChBjD,YAAY,EACZ4D,iBAAiB,EACjBzE,mBAAmB,EACnB0H,mBAAmB,EACnBa,OAAQ,cAGZhK,GAAQC,QAAU,CACdF,UAAW,eAGf3E,EAAW4E,GAAQrI,UAAW,CAC1B2Z,KAAM,SAAU/P,EAASoN,GACrB,OAAOD,EAAMzX,KAAKjB,KAAMuL,EAASoN,IAErC7E,IAAK,WACD,IAAInI,EAAO+N,EAAKzY,KAAKjB,MACjB+U,EAASpJ,EAAKoJ,OAOlB,OANI/U,KAAKuL,QAAQsN,WACb9D,EAAO,IAAM/U,KAAK4L,SAAS7D,IAAIa,aAAe,IAC9CmM,EAAO,IAAM/U,KAAK4L,SAAS7D,IAAIc,cAAgB,IAC/CkM,EAAO,IAAM/U,KAAK4L,SAAS7D,IAAIa,aAAe,IAC9CmM,EAAO,IAAM/U,KAAK4L,SAAS7D,IAAIc,cAAgB,KAE5C8C,GAEX0P,OAAQ,SAAU/X,GACd,OAAO8W,GAAQnZ,KAAKjB,KAAMsD,IAE9B+Y,QAAS,WACL,OAAO1B,GAAS1Z,KAAKjB,OAEzBuT,QAAS,SAAU7L,GACf8G,EAAcvN,KAAKjB,KAAM0H,GACzBtB,EAAepG,KAAK4L,SAAS8C,SAEjC1J,OAAQ,SAAU6V,GACdD,GAAQ3Z,KAAKjB,KAAM6a,IAEvByB,QAAS,WACL,OAAOxB,GAAS7Z,KAAKjB,SAGtBgK,O,oCCvlDX,IAAIuS,EAAS,WAAa,IAAIC,EAAIxc,KAASyc,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAQD,EAAIK,SAASC,SAASN,EAAIO,MAAOJ,EAAG,MAAM,CAACA,EAAG,SAAS,CAACrV,MAAM,CAAC,MAAQ,uBAAuB,CAACqV,EAAG,cAAc,CAACA,EAAG,cAAc,CAACK,YAAY,qBAAqB,CAACL,EAAG,MAAM,CAACK,YAAY,eAAe,CAACL,EAAG,MAAM,CAACM,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAAS/Z,MAAOoZ,EAAsB,mBAAEY,WAAW,uBAAuBJ,YAAY,yBAAyB,CAACL,EAAG,WAAW,CAACK,YAAY,gCAAgC1V,MAAM,CAAC,KAAO,KAAK,QAAU,YAAY,KAAO,GAAG,SAAWkV,EAAIa,sBAAsBC,GAAG,CAAC,MAAQ,SAASC,GAAQf,EAAIgB,oBAAqB,KAAS,CAACb,EAAG,IAAI,CAACK,YAAY,qBAAqBL,EAAG,WAAW,CAACK,YAAY,iCAAiC1V,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,GAAG,SAAWkV,EAAIa,sBAAsBC,GAAG,CAAC,MAAQd,EAAIiB,aAAa,CAACd,EAAG,IAAI,CAACK,YAAY,yBAAyBL,EAAG,MAAM,CAACK,YAAY,eAAe,CAACL,EAAG,sBAAsB,CAACe,IAAI,aAAapW,MAAM,CAAC,SAAW,CAAE2B,MAAOuT,EAAImB,OAAOC,qBAAsB1U,OAAQsT,EAAImB,OAAOC,qBAAsBta,KAAM,UAAW,cAAe,EAAM,WAAa,WAAW,IAAI,GAAGqZ,EAAG,MAAM,CAACM,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAAS/Z,OAAQoZ,EAAIgB,mBAAoBJ,WAAW,wBAAwBJ,YAAY,UAAU,CAACL,EAAG,qBAAqB,CAACM,WAAW,CAAC,CAACC,KAAK,YAAYC,QAAQ,oBAAoBU,UAAU,CAAC,OAAQ,KAAQH,IAAI,mBAAmBV,YAAY,+BAA+B1V,MAAM,CAAC,MAAQ,sBAAsB,SAAWkV,EAAIsB,uBAAuB,gBAAgBtB,EAAIuB,aAAa,KAAOvB,EAAImB,OAAOK,kBAAkBV,GAAG,CAAC,aAAad,EAAIyB,qBAAqBC,MAAM,CAAC9a,MAAOoZ,EAAqB,kBAAEnZ,SAAS,SAAU8a,GAAM3B,EAAI4B,kBAAkBD,GAAKf,WAAW,sBAAsB,CAACT,EAAG,MAAM,CAACrV,MAAM,CAAC,IAAM,SAAS,IAAMkV,EAAI6B,OAAOC,eAAe9B,EAAIO,KAAKwB,aAAc/B,EAAI6B,OAAOG,oBAAoB,OAAShC,EAAImB,OAAOC,qBAAqB,MAAQpB,EAAImB,OAAOC,2BAA2B,KAAKjB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,IAAI,OAAS,MAAM,CAAEkV,EAAIiC,OAAmB,aAAE9B,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,QAAQ,YAAY,mBAAmB,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,iBAAmBga,WAAW,qBAAqB9V,MAAM,CAAC,GAAK,iBAAiB,KAAO,iBAAiB,KAAO,QAAQ,aAAa,UAAY,YAAc,QAAQ,MAAQkV,EAAIkC,cAAc,kBAAkB,mBAAmB,0BAA0B,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAa,SAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,WAAYoB,IAAMf,WAAW,mBAAmBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,4BAA4B,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,mBAAmB,qCAAqC,GAAGpC,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,QAAQ,YAAY,mBAAmB,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,GAAK,iBAAiB,KAAO,iBAAiB,KAAO,QAAQ,SAAW,IAAI4W,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAa,SAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,WAAYoB,IAAMf,WAAW,oBAAoB,IAAI,GAAIZ,EAAIiC,OAAmB,aAAE9B,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,SAAS,YAAY,mBAAmB,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAO,gBAAkBoZ,EAAImB,OAAOqB,kBAAoB,QAAUxC,EAAImB,OAAOsB,kBAAoB,eAAgB7B,WAAW,qGAAqGM,IAAI,eAAepW,MAAM,CAAC,GAAK,iBAAiB,KAAO,iBAAiB,KAAO,WAAW,aAAa,WAAa,YAAc,SAAS,MAAQkV,EAAIkC,cAAc,kBAAkB,mBAAmB,2BAA2BR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAa,SAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,WAAYoB,IAAMf,WAAW,mBAAmBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,4BAA4B,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,mBAAmB,qCAAqC,IAAI,GAAGvC,EAAI0C,KAAM1C,EAAIiC,OAAmB,aAAE9B,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,uBAAuB,YAAY,0BAA0B,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,kCAAoCga,WAAW,sCAAsC9V,MAAM,CAAC,GAAK,wBAAwB,KAAO,wBAAwB,KAAO,WAAW,aAAa,yBAA2B,YAAc,uBAAuB,MAAQkV,EAAIkC,cAAc,yBAAyB,mBAAmB,iCAAiC,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAmB,gBAAEnZ,SAAS,SAAU8a,GAAM3B,EAAI2C,gBAAgBhB,GAAKf,WAAW,qBAAqBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,mCAAmC,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,0BAA0B,qCAAqC,IAAI,GAAGvC,EAAI0C,MAAM,GAAGvC,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,IAAI,OAAS,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,WAAW,YAAY,mBAAmB,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAOoZ,EAAIiC,OAAOW,YAAc,WAAa,4BAA8B5C,EAAI6C,iBAAkBjC,WAAW,qFAAqF9V,MAAM,CAAC,GAAK,iBAAiB,KAAO,iBAAiB,aAAa,aAAe,YAAc,WAAW,MAAQkV,EAAIkC,cAAc,kBAAkB,mBAAmB,0BAA0B,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAa,SAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,WAAYoB,IAAMf,WAAW,mBAAmBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,4BAA4B,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,mBAAmB,qCAAqC,IAAI,GAAGpC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,OAAO,YAAY,oBAAoB,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAOoZ,EAAIiC,OAAOW,YAAc,GAAK,4BAA8B5C,EAAI8C,kBAAmBlC,WAAW,8EAA8E9V,MAAM,CAAC,GAAK,kBAAkB,KAAO,kBAAkB,aAAa,UAAW,YAAc,OAAO,MAAQkV,EAAIkC,cAAc,mBAAmB,mBAAmB,2BAA2B,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAc,UAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,YAAaoB,IAAMf,WAAW,oBAAoBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,6BAA6B,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,oBAAoB,qCAAqC,IAAI,GAAGpC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,cAAc,YAAY,yBAAyB,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAOoZ,EAAIiC,OAAOW,YAAc,GAAK,4BAA8B5C,EAAI+C,uBAAwBnC,WAAW,mFAAmF9V,MAAM,CAAC,GAAK,uBAAuB,KAAO,uBAAuB,aAAa,gBAAkB,YAAc,cAAc,MAAQkV,EAAIkC,cAAc,wBAAwB,mBAAmB,gCAAgC,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAmB,eAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,iBAAkBoB,IAAMf,WAAW,yBAAyBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,kCAAkC,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,yBAAyB,qCAAqC,IAAI,IAAI,GAAGpC,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,IAAI,OAAS,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,UAAU,YAAY,sBAAsB,CAACqV,EAAG,WAAW,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,WAAaga,WAAW,eAAeoC,MAAM,CAAE,YAAuD,IAA3ChD,EAAIkC,cAAc,qBAA+B,cAAyD,IAA3ClC,EAAIkC,cAAc,sBAAiCpX,MAAM,CAAC,GAAK,oBAAoB,KAAO,oBAAoB,aAAa,YAAc,YAAc,mBAAmB,mBAAmB,6BAA6B,QAAUkV,EAAIiD,WAAW,OAAS,SAAUzW,GAAK,OAAOA,EAAE0W,KAAOpC,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAImD,sBAAqB,GAAM,KAASC,YAAYpD,EAAIqD,GAAG,CAAC,CAACtY,IAAI,aAAa0T,GAAG,WAAW,MAAO,CAACuB,EAAIoC,GAAGpC,EAAIqC,GAAGrC,EAAImB,OAAOmC,wBAAwBC,OAAM,IAAO,MAAK,EAAM,YAAY7B,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAgB,YAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,cAAeoB,IAAMf,WAAW,sBAAsBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,+BAA+B,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,sBAAsB,qCAAqC,IAAI,GAAGpC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,QAAQ,YAAY,wBAAwB,CAACqV,EAAG,WAAW,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAgC,IAAzBoZ,EAAIwD,UAAU9e,OAAe,WAAa,GAAIkc,WAAW,6CAA6CoC,MAAM,CAAE,YAAyD,IAA7ChD,EAAIkC,cAAc,uBAAiC,cAA2D,IAA7ClC,EAAIkC,cAAc,wBAAmCpX,MAAM,CAAC,GAAK,sBAAsB,KAAO,sBAAsB,aAAa,UAAY,eAAe,sBAAsB,qBAAqB,SAAS,YAAc,iBAAiB,mBAAmB,+BAA+B,QAAUkV,EAAIyD,aAAa,OAAS,SAAUjX,GAAK,OAAOA,EAAE0W,KAAOpC,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAImD,sBAAqB,GAAO,KAAQC,YAAYpD,EAAIqD,GAAG,CAAC,CAACtY,IAAI,aAAa0T,GAAG,WAAW,MAAO,CAACuB,EAAIoC,GAAGpC,EAAIqC,GAAGrC,EAAImB,OAAOmC,wBAAwBC,OAAM,IAAO,MAAK,EAAM,YAAY7B,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAkB,cAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,gBAAiBoB,IAAMf,WAAW,wBAAwBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,iCAAiC,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,wBAAwB,qCAAqC,IAAI,GAAGpC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,kBAAkB,YAAY,qBAAqB,CAACqV,EAAG,WAAW,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAOoZ,EAAIwD,UAAU9e,OAAS,EAAI,WAAa,GAAIkc,WAAW,2CAA2CoC,MAAM,CAAE,YAAsD,IAA1ChD,EAAIkC,cAAc,oBAA8B,cAAwD,IAA1ClC,EAAIkC,cAAc,qBAAgCpX,MAAM,CAAC,GAAK,mBAAmB,KAAO,mBAAmB,aAAa,oBAAsB,YAAc,2BAA2B,mBAAmB,4BAA4B,QAAUkV,EAAIwD,UAAU,OAAS,SAAUhX,GAAK,OAAOA,EAAE0W,KAAOpC,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAImD,sBAAqB,GAAO,KAASC,YAAYpD,EAAIqD,GAAG,CAAC,CAACtY,IAAI,aAAa0T,GAAG,WAAW,MAAO,CAACuB,EAAIoC,GAAGpC,EAAIqC,GAAGrC,EAAImB,OAAOmC,wBAAwBC,OAAM,IAAO,MAAK,EAAM,YAAY7B,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAe,WAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,aAAcoB,IAAMf,WAAW,qBAAqBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,8BAA8B,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,qBAAqB,qCAAqC,IAAI,IAAI,GAAGpC,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,IAAI,OAAS,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,cAAc,YAAY,yBAAyB,CAACqV,EAAG,WAAW,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,WAAaga,WAAW,eAAeoC,MAAM,CAAE,YAA0D,IAA9ChD,EAAIkC,cAAc,wBAAkC,cAA4D,IAA9ClC,EAAIkC,cAAc,yBAAoCpX,MAAM,CAAC,GAAK,uBAAuB,KAAO,uBAAuB,aAAa,gBAAkB,YAAc,uBAAuB,mBAAmB,gCAAgC,QAAUkV,EAAI0D,cAAc,OAAS,SAAUlX,GAAK,OAAOA,EAAE0W,IAAM,SAAWlD,EAAI2D,uBAAuB,WAAa3D,EAAI2D,uBAAuB,UAAU3D,EAAI2D,wBAAwBP,YAAYpD,EAAIqD,GAAG,CAAC,CAACtY,IAAI,aAAa0T,GAAG,WAAW,MAAO,CAACuB,EAAIoC,GAAGpC,EAAIqC,GAAGrC,EAAImB,OAAOmC,wBAAwBC,OAAM,IAAO,MAAK,EAAM,YAAY7B,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAmB,eAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,iBAAkBoB,IAAMf,WAAW,yBAAyBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,kCAAkC,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,yBAAyB,qCAAqC,IAAI,GAAGpC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACrV,MAAM,CAAC,MAAQ,SAAS,YAAY,uBAAuB,CAACqV,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,WAAaga,WAAW,eAAe9V,MAAM,CAAC,GAAK,qBAAqB,KAAO,qBAAqB,aAAa,WAAa,YAAc,SAAS,MAAQkV,EAAIkC,cAAc,sBAAsB,mBAAmB,8BAA8B,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAiB,aAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,eAAgBoB,IAAMf,WAAW,uBAAuBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,gCAAgC,CAACkV,EAAIoC,GAAG,qCAAqCpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,uBAAuB,qCAAqC,IAAI,IAAI,IAAI,IAAI,IAAI,GAAGpC,EAAG,SAAS,CAACrV,MAAM,CAAC,MAAQ,yBAAyB,CAACqV,EAAG,cAAc,CAACA,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,KAAK,CAACK,YAAY,eAAe,CAACR,EAAIoC,GAAG,cAAcjC,EAAG,aAAa,CAACA,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACA,EAAG,eAAe,CAACrV,MAAM,CAAC,GAAK,yBAAyB,KAAO,0BAA2B,SAAW,IAAI4W,MAAM,CAAC9a,MAAOoZ,EAAImB,OAAoB,cAAEta,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAImB,OAAQ,gBAAiBQ,IAAMf,WAAW,2BAA2B,IAAI,GAAGT,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACA,EAAG,gBAAgB,CAACA,EAAG,wBAAwB,CAACM,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAAS/Z,MAAOoZ,EAAIK,SAASuD,WAAW5D,EAAI6D,0BAA2BjD,WAAW,kDAAkD9V,MAAM,CAAC,UAAU,KAAK,CAACkV,EAAIoC,GAAG,iDAAiDpC,EAAIqC,GAAGrC,EAAI6D,0BAA0B,gDAAgD1D,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,mBAAqBga,WAAW,uBAAuB9V,MAAM,CAAC,GAAK,0BAA0B,KAAO,0BAA0B,aAAa,mBAAqB,YAAc,iBAAiB,MAAQkV,EAAIkC,cAAc,2BAA2B,mBAAmB,mCAAmC,KAAO,IAAIR,MAAM,CAAC9a,MAAOoZ,EAAIO,KAAoB,gBAAE1Z,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKnC,EAAIO,KAAM,kBAAmBoB,IAAMf,WAAW,0BAAkIZ,EAAI0C,MAAM,GAAGvC,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,mCAAmC,MAAQkV,EAAIkC,cAAc,6BAA6B,CAAClC,EAAIoC,GAAG,6CAA6CpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,4BAA4B,6CAA6C,IAAI,GAAGpC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,QAAQ,GAAGkV,EAAI8D,GAAI9D,EAAIO,KAAqB,kBAAE,SAASwD,EAAMrb,GAAO,OAAOyX,EAAG,aAAa,CAACpV,IAAIrC,GAAO,CAACyX,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,eAAe,CAACA,EAAG,WAAW,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,WAAaga,WAAW,cAAc,CAACF,KAAK,YAAYC,QAAQ,oBAAoBU,UAAU,CAAC,OAAQ,KAAQH,IAAI,qBAAuBxY,EAAMsb,UAAS,EAAKhB,MAAM,CAAE,cAAkE,IAApDhD,EAAIkC,cAAc,qBAAuBxZ,IAAmBoC,MAAM,CAAC,GAAK,qBAAuBpC,EAAM,KAAO,qBAAuBA,EAAM,aAAa,UAAY,YAAc,gBAAgB,mBAAmB,8BAAgCA,EAAM,QAAUsX,EAAIiE,YAAY,SAAW,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAQ,+CAA+CnD,GAAG,CAAC,iBAAiBd,EAAIkE,mBAAmBd,YAAYpD,EAAIqD,GAAG,CAAC,CAACtY,IAAI,aAAa0T,GAAG,WAAW,MAAO,CAACuB,EAAIoC,GAAGpC,EAAIqC,GAAGrC,EAAImB,OAAOmC,wBAAwBC,OAAM,IAAO,MAAK,GAAM7B,MAAM,CAAC9a,MAAOmd,EAAW,MAAEld,SAAS,SAAU8a,GAAM3B,EAAImC,KAAK4B,EAAO,QAASpC,IAAMf,WAAW,iBAAiBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,8BAAgCpC,IAAQ,CAACsX,EAAIoC,GAAG,6CAA6CpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,qBAAuB7Z,IAAQ,6CAA6C,IAAI,GAAGyX,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,qBAAqB,CAACrV,MAAM,CAAC,GAAK,sBAAwBpC,EAAM,cAAc,+BAAiCA,EAAM,gBAAgB,WAAW,eAAe,iBAAiB,MAAQsX,EAAIkC,cAAc,sBAAwBxZ,GAAO,cAAcqb,EAAMI,QAAQrD,GAAG,CAAC,oBAAoB,SAASC,GAAQ,OAAOf,EAAImC,KAAK4B,EAAO,SAAUhD,IAAS,qBAAqB,SAASA,GAAQ,OAAOf,EAAImC,KAAK4B,EAAO,SAAUhD,QAAa,GAAGZ,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,WAAW,CAACK,YAAY,iBAAiB1V,MAAM,CAAC,QAAU,iBAAiB,KAAO,KAAK,KAAO,IAAIgW,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIO,KAAK6D,iBAAiBC,OAAO3b,EAAO,MAAM,CAACyX,EAAG,IAAI,CAACK,YAAY,8BAA8B,IAAI,MAAKL,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACK,YAAY,WAAW1V,MAAM,CAAC,QAAU,UAAU,MAAQ,GAAG,KAAO,IAAIgW,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIO,KAAK6D,iBAAiBngB,KAAK,OAAO,CAACkc,EAAG,IAAI,CAACK,YAAY,sBAAsBR,EAAIoC,GAAG,wDAAwD,IAAI,IAAI,GAAGjC,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,MAAM,CAACqV,EAAG,KAAK,CAACK,YAAY,eAAe,CAACR,EAAIoC,GAAG,kCAAkCpC,EAAI8D,GAAI9D,EAAIO,KAAqB,kBAAE,SAAS+D,EAAM5b,GAAO,OAAOyX,EAAG,aAAa,CAACpV,IAAIrC,GAAO,CAACyX,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,OAAO,CAACqV,EAAG,eAAe,CAACA,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAM,iBAAmBga,WAAW,qBAAqB9V,MAAM,CAAC,GAAK,sBAAwBpC,EAAM,KAAO,sBAAwBA,EAAM,KAAO,QAAQ,aAAa,UAAY,YAAc,QAAQ,MAAQsX,EAAIkC,cAAc,sBAAwBxZ,GAAO,mBAAmB,8BAAgCA,EAAM,KAAO,IAAIgZ,MAAM,CAAC9a,MAAO0d,EAAkB,aAAEzd,SAAS,SAAU8a,GAAM3B,EAAImC,KAAKmC,EAAO,eAAgB3C,IAAMf,WAAW,wBAAwBT,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAK,+BAAiCpC,IAAQ,CAACsX,EAAIoC,GAAG,6CAA6CpC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAM,sBAAwB7Z,IAAQ,6CAA6C,IAAI,GAAGyX,EAAG,QAAQ,CAACrV,MAAM,CAAC,KAAO,YAAY,CAACqV,EAAG,WAAW,CAACK,YAAY,WAAW1V,MAAM,CAAC,QAAU,iBAAiB,KAAO,KAAK,KAAO,IAAIgW,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIO,KAAKgE,iBAAiBF,OAAO3b,EAAO,MAAM,CAACyX,EAAG,IAAI,CAACK,YAAY,8BAA8B,IAAI,MAAKL,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,WAAW,CAACK,YAAY,iBAAiB1V,MAAM,CAAC,QAAU,UAAU,MAAQ,GAAG,KAAO,IAAIgW,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOf,EAAIO,KAAKgE,iBAAiBtgB,KAAK,OAAO,CAACkc,EAAG,IAAI,CAACK,YAAY,sBAAsBR,EAAIoC,GAAG,sDAAsD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAGpC,EAAI0C,MACtomB8B,EAAkB,G,+GCClBC,EAAsB,CACxB/D,KAAM,aACNX,OAAQ,SAAgBpb,GACtB,OAAOA,EAAE,MAAO,CACdqe,MAAOxf,KAAKgM,YACZ0R,IAAK,mBACLgC,GAAI,sBAGRwB,MAAO,CACLlW,SAAUtJ,OACVsK,YAAamV,OACb7U,WAAY8U,QACZ3V,kBAAmB,CACjBnI,KAAM8d,QACNC,SAAS,GAEXjV,aAAc,CACZ9I,KAAM8d,QACNC,SAAS,GAEXnV,WAAY,CACV5I,KAAM8d,QACNC,SAAS,GAEXnR,gBAAiB,CACf5M,KAAM8d,QACNC,SAAS,GAEX9R,eAAgB,CACdjM,KAAM,CAAC8d,QAASD,QAChBE,SAAS,GAEXxR,WAAY,CACVvM,KAAM8d,QACNC,SAAS,GAEXC,mBAAoB,CAClBhe,KAAMie,SACNF,QAAS,cAEXpW,SAAU,CACR3H,KAAM5B,OACN2f,QAAS,WACP,MAAO,CACLpY,MAAO,IACPC,OAAQ,IACR5F,KAAM,YAIZgS,QAAS0E,OACTzE,QAASyE,QAEXwH,QAAS,WACPxhB,KAAKyhB,eAEP9V,KAAM,WACJ,MAAO,CACLuP,QAAS,OAGbwG,QAAS,CACPD,YAAa,WACX,IAAIE,EAAQ3hB,KAER0G,EAAK1G,KAAK4hB,MAAMC,iBAChBtW,EAAU,CACZe,WAAYtM,KAAKsM,WACjBb,kBAAmBzL,KAAKyL,kBACxBS,WAAYlM,KAAKkM,WACjBE,aAAcpM,KAAKoM,aACnB8D,gBAAiBlQ,KAAKkQ,gBACtBX,eAAgBvP,KAAKuP,eACrBtE,SAAUjL,KAAKiL,SACf4E,WAAY7P,KAAK6P,WACjByF,QAAStV,KAAKsV,QACdC,QAASvV,KAAKuV,SAGZvV,KAAKgL,WACPO,EAAQP,SAAWhL,KAAKgL,UAG1BtE,EAAGgH,iBAAiB,UAAU,SAAUjF,GACtCkZ,EAAMG,MAAM,SAAUrZ,EAAG/F,WAE3B1C,KAAKkb,QAAU,IAAI,IAAQxU,EAAI6E,GAC/BvL,KAAKshB,sBAEPhG,KAAM,SAAc/P,GAClB,OAAOvL,KAAKkb,QAAQI,KAAK/P,IAE3B+Q,QAAS,WACPtc,KAAKkb,QAAQoB,WAEfxI,IAAK,SAAa6E,GAChB,IAAIA,EAGF,OAAO3Y,KAAKkb,QAAQpH,MAFpB6E,EAAG3Y,KAAKkb,QAAQpH,QAKpB9O,OAAQ,SAAgB+c,GACtB/hB,KAAKkb,QAAQlW,OAAO+c,IAEtBxO,QAAS,SAAiBnQ,GACxBpD,KAAKkb,QAAQ3H,QAAQnQ,IAEvBiY,OAAQ,SAAgB9P,EAASoN,GAC/B,IAAIqJ,EAAShiB,KAKb,OAHKuL,IAASA,EAAU,CACtBjI,KAAM,WAEDtD,KAAKkb,QAAQG,OAAO9P,GAASxK,MAAK,SAAUkhB,GAOjD,OANKtJ,EAGHA,EAAGsJ,GAFHD,EAAOF,MAAM,SAAUG,GAKlBA,MAGX5F,QAAS,WACPrc,KAAKkb,QAAQoB,UACbtc,KAAKyhB,iBAKPS,EAAa,CACfC,QAAS,SAAiBC,EAAK7W,GAC7B6W,EAAIC,UAAUpB,EAAoB/D,KAAM+D,KAIxC7e,QAAUA,OAAOggB,KACnBA,IAAIE,IAAIJ,G,UAGK,IChJX,EAAS,WAAa,IAAI1F,EAAIxc,KAASyc,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,eAAe,CAACA,EAAG,gBAAgB,CAACA,EAAG,eAAe,CAACM,WAAW,CAAC,CAACC,KAAK,WAAWC,QAAQ,aAAa/Z,MAAOoZ,EAAIiC,OAAmB,aAAErB,WAAW,wBAAwBM,IAAI,mBAAmBpW,MAAM,CAAC,GAAKkV,EAAIiC,OAAOiB,GAAG,KAAOlD,EAAIiC,OAAOiB,GAAG,aAAa,IAAMlD,EAAIiC,OAAO8D,YAAc,IAAI,YAAc/F,EAAIiC,OAAO8D,YAAY,MAAQ/F,EAAIiC,OAAO+D,MAAM,mBAAmBhG,EAAIiC,OAAOgE,YAAYnF,GAAG,CAAC,MAAQd,EAAIkG,SAAS,KAAOlG,EAAIkG,UAAUxE,MAAM,CAAC9a,MAAOoZ,EAAuB,oBAAEnZ,SAAS,SAAU8a,GAAM3B,EAAImG,oBAAoBxE,GAAKf,WAAW,yBAAiIZ,EAAI0C,MAAM,GAAGvC,EAAG,0BAA0B,CAACrV,MAAM,CAAC,GAAKkV,EAAIiC,OAAOgE,WAAW,MAAQjG,EAAIiC,OAAO+D,QAAQ,CAAChG,EAAIoC,GAAG,aAAapC,EAAIqC,GAAGrC,EAAIsC,UAAUC,MAAMvC,EAAIiC,OAAOiB,KAAK,aAAa,IACr7B,EAAkB,G,48DCiCD,EAArB,kE,0BAUI,EAAAiD,oBAAqC,KAVzC,sCAYI,WACI,IAAMC,EAAiB5iB,KAAK4hB,MAAMiB,iBAClC,OAAOD,EAAeE,MAd9B,qBAiBI,WACI9iB,KAAK2iB,oBAAsB3iB,KAAK+iB,WAChC/iB,KAAKgjB,aAAY,KAnBzB,sBAsBI,SAAS1gB,GAAK,WACN2gB,EAAiBjjB,KAAKkjB,aAAaC,gBAAkB,EACzDF,GAAkBtY,KAAKkE,IAAI7O,KAAK6c,SAASC,SAAS9c,KAAK2iB,qBAAuB3iB,KAAK2iB,oBAAqBzhB,OAAS,EAAG,OAAckiB,qBAAuB,GAEzJpjB,KAAKgjB,cAELC,GAAkBjjB,KAAK6c,SAASC,SAAS9c,KAAK2iB,qBAAuB3iB,KAAK2iB,oBAAqBzhB,OAAS,EAExGlB,KAAKqjB,WAAU,WACX,EAAKH,aAAaI,kBAAkBL,EAAgBA,QA/BhE,yBAmCI,WAA0B,IAAdM,EAAc,wDAChBC,EAAoBxjB,KAAKyjB,UAAUC,4BAA4B1jB,KAAK2iB,oBAAqBY,GAE/FvjB,KAAK2iB,oBAAsBa,EAAkBG,aAC7C3jB,KAAK8hB,MAAM,oBAAqB0B,EAAkBI,iBAvC1D,GAA8C,QACF,GAAvC,eAAK,CAAEtgB,KAAM6d,OAAQ0C,UAAU,K,yBACQ,GAAvC,eAAK,CAAEvgB,KAAM6d,OAAQ0C,UAAU,K,iCACP,GAAxB,eAAK,CAAEvgB,KAAM8d,W,4BAC2B,GAAxC,eAAK,CAAE9d,KAAM6d,OAAQ0C,UAAU,K,mCACS,GAAxC,eAAK,CAAEvgB,KAAM6d,OAAQ0C,UAAU,K,kCACQ,GAAvC,eAAK,CAAEvgB,KAAM6d,OAAQ0C,UAAU,K,iCAEtB,GAAT,kB,iCARgB,EAAgB,GADpC,QACoB,WClCsX,I,YCOvY,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,I,gxEC0ZM,EAArB,kE,0BAOI,EAAArG,oBAAqB,EACrB,EAAAM,wBAAyB,EACzB,EAAAT,sBAAuB,EACvB,EAAAe,kBAA8B,GAE9B,EAAAe,gBAAkB,GAElB,EAAA2E,cAAe,EACf,EAAAxE,kBAAoB,GACpB,EAAAD,iBAAmB,GACnB,EAAAE,uBAAyB,GAEzB,EAAAE,WAA6B,GAC7B,EAAAQ,aAA+B,GAC/B,EAAAD,UAA4B,GAE5B,EAAAE,cAAgC,GAEhC,EAAAO,YAAwB,GAzB5B,gDA2BI,WACI,OAAOzgB,KAAK+jB,eAAiB/jB,KAAK6c,SAASC,SAAS9c,KAAK+c,OAAS/c,KAAK+c,KAAMiH,uBAAuB9iB,QAAU,IA5BtH,oCA+BI,WAA4B,WACxB,GAAIlB,KAAK6c,SAASC,SAAS9c,KAAK+c,OACxB/c,KAAK6c,SAASC,SAAS9c,KAAK+c,KAAMkH,gBAAiB,CACnD,IAAMC,EAAuBlkB,KAAK6c,SAASsH,iBAAiBnkB,KAAK+c,KAAMiH,wBAAwB,SAAAhb,GAAC,OAAIA,EAAE0W,KAAO,EAAK3C,KAAMkH,kBAExH,GAAIjkB,KAAK6c,SAASC,SAASoH,GACvB,gBAAUA,EAAsBE,0BAK5C,MAAO,KA1Cf,0CA6CI,WACI,OAAOpkB,KAAK4hB,MAAMyC,mBA9C1B,oCAiDI,WACI,OAAOrkB,KAAK4hB,MAAMnE,aAlD1B,0BAsDI,SAAa7W,GACL5G,KAAK8jB,cAEL9jB,KAAK6c,SAASC,SAAS9c,KAAK+c,QAC5B/c,KAAKsf,kBAAoBtf,KAAK+c,KAAMuH,UACpCtkB,KAAKqf,iBAAmBrf,KAAK+c,KAAMwH,SACnCvkB,KAAKuf,uBAAyBvf,KAAK+c,KAAMyH,eAEzCxkB,KAAK8jB,cAAe,KA9DhC,8BAmEI,SAAiBld,EAAa6d,GAC1B,GAAI7d,IAAQ6d,GAERzkB,KAAK6c,SAASC,SAAS9c,KAAK+c,MAAO,CACnC,IAAI2H,EAA4B1kB,KAAK+c,KACrC2H,EAAWC,SAAW3kB,KAAKyjB,UAAUmB,wBAAwBF,EAAWC,aAxEpF,+BA6EI,SAAkB/d,EAAa6d,GACvBzkB,KAAKof,aAAexY,IAAQ6d,GAE5BzkB,KAAK6c,SAASC,SAAS9c,KAAK+c,QAC5B/c,KAAK+c,KAAMuH,UAAYtkB,KAAKyjB,UAAUoB,mBAAmB7kB,KAAK+c,KAAMuH,cAjFhF,8BAsFI,SAAiB1d,EAAa6d,GACtBzkB,KAAKof,aAAexY,IAAQ6d,GAE5BzkB,KAAK6c,SAASC,SAAS9c,KAAK+c,QAC5B/c,KAAK+c,KAAMwH,SAAWvkB,KAAKyjB,UAAUoB,mBAAmB7kB,KAAK+c,KAAMwH,aA1F/E,oCA+FI,SAAuB3d,EAAa6d,GAC5BzkB,KAAKof,aAAexY,IAAQ6d,GAE5BzkB,KAAK6c,SAASC,SAAS9c,KAAK+c,QAC5B/c,KAAK+c,KAAMyH,eAAiBxkB,KAAKyjB,UAAUoB,mBAAmB7kB,KAAK+c,KAAMyH,mBAnGrF,2BAuGI,SAAc9G,GACV,OAAI1d,KAAK8kB,UAAUpH,KACd1d,KAAK8kB,UAAUpH,GAAKqH,OAAS/kB,KAAK8kB,UAAUpH,GAAKsH,YAC1ChlB,KAAK8e,UAAUmG,IAAIvH,GAGxB,OA7Gf,iCAgHI,SAAoBwH,EAAiBC,GACjC,IAAInlB,KAAK8d,yBAGLsD,QAAQ8D,KAAa9D,QAAQ+D,IAAYA,EAAQC,QAAUF,EAAQE,OAAO,CAC1E,IAAIC,EAA4BrlB,KAAKslB,+BAChCD,EAA0BE,SAC3BF,EAA0BE,QAAS,MAvHnD,uDA4HI,WAAmBC,EAAcnD,GAAjC,oBAAA1iB,EAAA,2DACQK,KAAK8d,wBAA2B9d,KAAK6c,SAASC,SAAS0I,IAAUxlB,KAAK6c,SAASC,SAAS0I,EAAKA,MADrG,iDAGIxlB,KAAK8d,wBAAyB,EAE9B2H,EAAA,KAASC,OAAO,OAA+B,KAAMF,EAAKA,MAAM,SAAAG,GACtD,EAAKC,yBAA0BtK,KAAK,CACtCrD,IAAK,EAAKoG,OAAOwH,WAAWF,KAEhC,EAAKnI,oBAAqB,EAE1B,EAAKM,wBAAyB,KAC/B,SAAAgI,GACK,EAAKjJ,SAASpB,WAAW,EAAKsK,wBAC9B,EAAKA,sBAAuBD,GAGhC,EAAKhI,wBAAyB,KAjBtC,gDA5HJ,iHAiJI,mCAAAne,EAAA,8DACIK,KAAKqd,sBAAuB,EADhC,SAGqCrd,KAAK4lB,yBAA0BvK,OAAO,CACnE/X,KAAM,OACNkX,KAAM,WACNrC,OAAQ,MACR5U,QAAS,EACTkT,QAAQ,IARhB,OAGQuP,EAHR,OAWIP,EAAA,KAASC,OAAO,OAA+B1lB,KAAKqe,OAAOG,mBAAoBwH,GAAU,SAAAL,GACrF,EAAK5I,KAAMwB,aAAeoH,EAAYjG,GAEtC,EAAKlC,oBAAqB,EAE1B,EAAKH,sBAAuB,KAC7B,SAAAyI,GACK,EAAKjJ,SAASpB,WAAW,EAAKsK,wBAC9B,EAAKA,sBAAuBD,GAGhC,EAAKzI,sBAAuB,KAtBpC,gDAjJJ,wHA2KI,WAA2B4I,EAA0BC,GAArD,SAAAvmB,EAAA,8DACQsmB,GACIjmB,KAAK6c,SAASsJ,UAAUnmB,KAAK+c,KAAMqJ,iBACnCpmB,KAAK+c,KAAMqJ,cAAgB,MAE3BpmB,KAAK6c,SAASsJ,UAAUnmB,KAAK+c,KAAMsJ,cACnCrmB,KAAK+c,KAAMsJ,WAAa,OAGvBH,GACDlmB,KAAK6c,SAASsJ,UAAUnmB,KAAK+c,KAAMsJ,cACnCrmB,KAAK+c,KAAMsJ,WAAa,MAXpC,SAeUrmB,KAAKsmB,mBAff,gDA3KJ,oHA6LI,sBAAA3mB,EAAA,uEACUK,KAAKsmB,mBADf,OAGItmB,KAAKkgB,cAAgB,OAASqG,gCAAgCvmB,KAAK+c,KAAMiH,wBAEzEhkB,KAAK0gB,oBALT,gDA7LJ,oHAqMI,gCAAA/gB,EAAA,8DACU6mB,EAAWxmB,KAEXymB,EAAczmB,KAAK6c,SAASC,SAAS9c,KAAK+c,MAAQ/c,KAAK+c,KAAM0J,YAAc,KAC3EL,EAAgBpmB,KAAK6c,SAASC,SAAS9c,KAAK+c,MAAQ/c,KAAK+c,KAAMqJ,cAAgB,KAJzF,SAMU,OAASM,yBAAyBD,EAAaL,GAAe,SAAC3G,EAAYQ,EAAcD,GAC3FwG,EAAS/G,WAAaA,EACtB+G,EAASvG,aAAeA,EACxBuG,EAASxG,UAAYA,IACtBhgB,KAAK+lB,uBAVZ,gDArMJ,wFAkNI,WAAiB,WACPS,EAAWxmB,KAEjBqB,YAAW,WAOP,GANAmlB,EAAS/F,YAAc,CACnB,WACA,YACA,aAGA+F,EAAS3J,SAASC,SAAS0J,EAASzJ,MACpC,IAD2C,eAClC1c,GACL,IAAIsmB,EAAQH,EAASzJ,KAAM6D,iBAAiBvgB,GAAGsmB,MAE/C,IAAIH,EAAS3J,SAASuD,WAAWuG,GAG7B,iBAFAA,EAAQA,EAAOC,OAKdJ,EAAS3J,SAASgK,WAAWL,EAAS/F,aAAa,SAAAlf,GAAC,OAAIA,IAAMolB,MAC/DH,EAAS/F,YAAYhgB,KAAKkmB,IAVzBtmB,EAAI,EAAGA,EAAImmB,EAASzJ,KAAM6D,iBAAiB1f,OAAQb,IAAK,EAAxDA,GAgBb,EAAKwc,SAASiK,YAAYN,EAAS/F,aAAa,SAAAzX,GAAC,OAAIA,OACtD,KA9OX,yBAiPI,WACI,OAAOhJ,KAAK+mB,WAAWC,kBAlP/B,GAA8D,QAC5C,GAAb,eAAKtlB,S,2BACU,GAAf,eAAK6f,W,4CAES,GAAd,eAAKH,U,mCACS,GAAd,eAAKA,U,kCAiDN,GADC,eAAM,S,2BAWN,MAGD,GADC,eAAM,kB,+BAQN,MAGD,GADC,eAAM,mB,gCAON,MAGD,GADC,eAAM,kB,+BAON,MAGD,GADC,eAAM,wB,qCAON,MArGgB,EAAgC,GANpD,eAAU,CACP6F,WAAY,CACRC,iBAAA,EACAC,mBAAA,IAAoBlG,0BAGP,WC5awZ,ICQza,I,UAAY,eACd,EACA1E,EACAyE,GACA,EACA,KACA,WACA,OAIa,U,2CCnBf,W","file":"js/chunk-5d78b913.aaede897.js","sourcesContent":["/*************************\r\n * Croppie\r\n * Copyright 2019\r\n * Foliotek\r\n * Version: 2.6.4\r\n *************************/\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(factory);\r\n } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n root.Croppie = factory();\r\n }\r\n}(typeof self !== 'undefined' ? self : this, function () {\r\n\r\n /* Polyfills */\r\n if (typeof Promise !== 'function') {\r\n /*! promise-polyfill 3.1.0 */\r\n !function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if(\"object\"!==typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!==typeof a)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void k(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(a&&(\"object\"===typeof a||\"function\"===typeof a)){var c=a.then;if(\"function\"===typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled=\"function\"===typeof a?a:null,this.onRejected=\"function\"===typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=setTimeout,k=\"function\"===typeof setImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return\"[object Array]\"===Object.prototype.toString.call(a)};c.prototype[\"catch\"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&(\"object\"===typeof g||\"function\"===typeof g)){var h=g.then;if(\"function\"===typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},\"undefined\"!==typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this);\r\n }\r\n\r\n if ( typeof window.CustomEvent !== \"function\" ) {\r\n (function(){\r\n function CustomEvent ( event, params ) {\r\n params = params || { bubbles: false, cancelable: false, detail: undefined };\r\n var evt = document.createEvent( 'CustomEvent' );\r\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\r\n return evt;\r\n }\r\n CustomEvent.prototype = window.Event.prototype;\r\n window.CustomEvent = CustomEvent;\r\n }());\r\n }\r\n\r\n if (!HTMLCanvasElement.prototype.toBlob) {\r\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\r\n value: function (callback, type, quality) {\r\n var binStr = atob( this.toDataURL(type, quality).split(',')[1] ),\r\n len = binStr.length,\r\n arr = new Uint8Array(len);\r\n\r\n for (var i=0; i -1 ? EXIF_NORM : EXIF_FLIP,\r\n index = arr.indexOf(ornt),\r\n offset = (rotate / 90) % arr.length;// 180 = 2%4 = 2 shift exif by 2 indexes\r\n\r\n return arr[(arr.length + index + (offset % arr.length)) % arr.length];\r\n }\r\n\r\n // Credits to : Andrew Dupont - http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/\r\n function deepExtend(destination, source) {\r\n destination = destination || {};\r\n for (var property in source) {\r\n if (source[property] && source[property].constructor && source[property].constructor === Object) {\r\n destination[property] = destination[property] || {};\r\n deepExtend(destination[property], source[property]);\r\n } else {\r\n destination[property] = source[property];\r\n }\r\n }\r\n return destination;\r\n }\r\n\r\n function clone(object) {\r\n return deepExtend({}, object);\r\n }\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n\r\n function dispatchChange(element) {\r\n if (\"createEvent\" in document) {\r\n var evt = document.createEvent(\"HTMLEvents\");\r\n evt.initEvent(\"change\", false, true);\r\n element.dispatchEvent(evt);\r\n }\r\n else {\r\n element.fireEvent(\"onchange\");\r\n }\r\n }\r\n\r\n //http://jsperf.com/vanilla-css\r\n function css(el, styles, val) {\r\n if (typeof (styles) === 'string') {\r\n var tmp = styles;\r\n styles = {};\r\n styles[tmp] = val;\r\n }\r\n\r\n for (var prop in styles) {\r\n el.style[prop] = styles[prop];\r\n }\r\n }\r\n\r\n function addClass(el, c) {\r\n if (el.classList) {\r\n el.classList.add(c);\r\n }\r\n else {\r\n el.className += ' ' + c;\r\n }\r\n }\r\n\r\n function removeClass(el, c) {\r\n if (el.classList) {\r\n el.classList.remove(c);\r\n }\r\n else {\r\n el.className = el.className.replace(c, '');\r\n }\r\n }\r\n\r\n function setAttributes(el, attrs) {\r\n for (var key in attrs) {\r\n el.setAttribute(key, attrs[key]);\r\n }\r\n }\r\n\r\n function num(v) {\r\n return parseInt(v, 10);\r\n }\r\n\r\n /* Utilities */\r\n function loadImage(src, doExif) {\r\n var img = new Image();\r\n img.style.opacity = '0';\r\n return new Promise(function (resolve, reject) {\r\n function _resolve() {\r\n img.style.opacity = '1';\r\n setTimeout(function () {\r\n resolve(img);\r\n }, 1);\r\n }\r\n\r\n img.removeAttribute('crossOrigin');\r\n if (src.match(/^https?:\\/\\/|^\\/\\//)) {\r\n img.setAttribute('crossOrigin', 'anonymous');\r\n }\r\n\r\n img.onload = function () {\r\n if (doExif) {\r\n EXIF.getData(img, function () {\r\n _resolve();\r\n });\r\n }\r\n else {\r\n _resolve();\r\n }\r\n };\r\n img.onerror = function (ev) {\r\n img.style.opacity = 1;\r\n setTimeout(function () {\r\n reject(ev);\r\n }, 1);\r\n };\r\n img.src = src;\r\n });\r\n }\r\n\r\n function naturalImageDimensions(img, ornt) {\r\n var w = img.naturalWidth;\r\n var h = img.naturalHeight;\r\n var orient = ornt || getExifOrientation(img);\r\n if (orient && orient >= 5) {\r\n var x= w;\r\n w = h;\r\n h = x;\r\n }\r\n return { width: w, height: h };\r\n }\r\n\r\n /* CSS Transform Prototype */\r\n var TRANSLATE_OPTS = {\r\n 'translate3d': {\r\n suffix: ', 0px'\r\n },\r\n 'translate': {\r\n suffix: ''\r\n }\r\n };\r\n var Transform = function (x, y, scale) {\r\n this.x = parseFloat(x);\r\n this.y = parseFloat(y);\r\n this.scale = parseFloat(scale);\r\n };\r\n\r\n Transform.parse = function (v) {\r\n if (v.style) {\r\n return Transform.parse(v.style[CSS_TRANSFORM]);\r\n }\r\n else if (v.indexOf('matrix') > -1 || v.indexOf('none') > -1) {\r\n return Transform.fromMatrix(v);\r\n }\r\n else {\r\n return Transform.fromString(v);\r\n }\r\n };\r\n\r\n Transform.fromMatrix = function (v) {\r\n var vals = v.substring(7).split(',');\r\n if (!vals.length || v === 'none') {\r\n vals = [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n return new Transform(num(vals[4]), num(vals[5]), parseFloat(vals[0]));\r\n };\r\n\r\n Transform.fromString = function (v) {\r\n var values = v.split(') '),\r\n translate = values[0].substring(Croppie.globals.translate.length + 1).split(','),\r\n scale = values.length > 1 ? values[1].substring(6) : 1,\r\n x = translate.length > 1 ? translate[0] : 0,\r\n y = translate.length > 1 ? translate[1] : 0;\r\n\r\n return new Transform(x, y, scale);\r\n };\r\n\r\n Transform.prototype.toString = function () {\r\n var suffix = TRANSLATE_OPTS[Croppie.globals.translate].suffix || '';\r\n return Croppie.globals.translate + '(' + this.x + 'px, ' + this.y + 'px' + suffix + ') scale(' + this.scale + ')';\r\n };\r\n\r\n var TransformOrigin = function (el) {\r\n if (!el || !el.style[CSS_TRANS_ORG]) {\r\n this.x = 0;\r\n this.y = 0;\r\n return;\r\n }\r\n var css = el.style[CSS_TRANS_ORG].split(' ');\r\n this.x = parseFloat(css[0]);\r\n this.y = parseFloat(css[1]);\r\n };\r\n\r\n TransformOrigin.prototype.toString = function () {\r\n return this.x + 'px ' + this.y + 'px';\r\n };\r\n\r\n function getExifOrientation (img) {\r\n return img.exifdata && img.exifdata.Orientation ? num(img.exifdata.Orientation) : 1;\r\n }\r\n\r\n function drawCanvas(canvas, img, orientation) {\r\n var width = img.width,\r\n height = img.height,\r\n ctx = canvas.getContext('2d');\r\n\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n ctx.save();\r\n switch (orientation) {\r\n case 2:\r\n ctx.translate(width, 0);\r\n ctx.scale(-1, 1);\r\n break;\r\n\r\n case 3:\r\n ctx.translate(width, height);\r\n ctx.rotate(180*Math.PI/180);\r\n break;\r\n\r\n case 4:\r\n ctx.translate(0, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 5:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(90*Math.PI/180);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 6:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(90*Math.PI/180);\r\n ctx.translate(0, -height);\r\n break;\r\n\r\n case 7:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.rotate(-90*Math.PI/180);\r\n ctx.translate(-width, height);\r\n ctx.scale(1, -1);\r\n break;\r\n\r\n case 8:\r\n canvas.width = height;\r\n canvas.height = width;\r\n ctx.translate(0, width);\r\n ctx.rotate(-90*Math.PI/180);\r\n break;\r\n }\r\n ctx.drawImage(img, 0,0, width, height);\r\n ctx.restore();\r\n }\r\n\r\n /* Private Methods */\r\n function _create() {\r\n var self = this,\r\n contClass = 'croppie-container',\r\n customViewportClass = self.options.viewport.type ? 'cr-vp-' + self.options.viewport.type : null,\r\n boundary, img, viewport, overlay, bw, bh;\r\n\r\n self.options.useCanvas = self.options.enableOrientation || _hasExif.call(self);\r\n // Properties on class\r\n self.data = {};\r\n self.elements = {};\r\n\r\n boundary = self.elements.boundary = document.createElement('div');\r\n viewport = self.elements.viewport = document.createElement('div');\r\n img = self.elements.img = document.createElement('img');\r\n overlay = self.elements.overlay = document.createElement('div');\r\n\r\n if (self.options.useCanvas) {\r\n self.elements.canvas = document.createElement('canvas');\r\n self.elements.preview = self.elements.canvas;\r\n }\r\n else {\r\n self.elements.preview = img;\r\n }\r\n\r\n addClass(boundary, 'cr-boundary');\r\n boundary.setAttribute('aria-dropeffect', 'none');\r\n bw = self.options.boundary.width;\r\n bh = self.options.boundary.height;\r\n css(boundary, {\r\n width: (bw + (isNaN(bw) ? '' : 'px')),\r\n height: (bh + (isNaN(bh) ? '' : 'px'))\r\n });\r\n\r\n addClass(viewport, 'cr-viewport');\r\n if (customViewportClass) {\r\n addClass(viewport, customViewportClass);\r\n }\r\n css(viewport, {\r\n width: self.options.viewport.width + 'px',\r\n height: self.options.viewport.height + 'px'\r\n });\r\n viewport.setAttribute('tabindex', 0);\r\n\r\n addClass(self.elements.preview, 'cr-image');\r\n setAttributes(self.elements.preview, { 'alt': 'preview', 'aria-grabbed': 'false' });\r\n addClass(overlay, 'cr-overlay');\r\n\r\n self.element.appendChild(boundary);\r\n boundary.appendChild(self.elements.preview);\r\n boundary.appendChild(viewport);\r\n boundary.appendChild(overlay);\r\n\r\n addClass(self.element, contClass);\r\n if (self.options.customClass) {\r\n addClass(self.element, self.options.customClass);\r\n }\r\n\r\n _initDraggable.call(this);\r\n\r\n if (self.options.enableZoom) {\r\n _initializeZoom.call(self);\r\n }\r\n\r\n // if (self.options.enableOrientation) {\r\n // _initRotationControls.call(self);\r\n // }\r\n\r\n if (self.options.enableResize) {\r\n _initializeResize.call(self);\r\n }\r\n }\r\n\r\n // function _initRotationControls () {\r\n // var self = this,\r\n // wrap, btnLeft, btnRight, iLeft, iRight;\r\n\r\n // wrap = document.createElement('div');\r\n // self.elements.orientationBtnLeft = btnLeft = document.createElement('button');\r\n // self.elements.orientationBtnRight = btnRight = document.createElement('button');\r\n\r\n // wrap.appendChild(btnLeft);\r\n // wrap.appendChild(btnRight);\r\n\r\n // iLeft = document.createElement('i');\r\n // iRight = document.createElement('i');\r\n // btnLeft.appendChild(iLeft);\r\n // btnRight.appendChild(iRight);\r\n\r\n // addClass(wrap, 'cr-rotate-controls');\r\n // addClass(btnLeft, 'cr-rotate-l');\r\n // addClass(btnRight, 'cr-rotate-r');\r\n\r\n // self.elements.boundary.appendChild(wrap);\r\n\r\n // btnLeft.addEventListener('click', function () {\r\n // self.rotate(-90);\r\n // });\r\n // btnRight.addEventListener('click', function () {\r\n // self.rotate(90);\r\n // });\r\n // }\r\n\r\n function _hasExif() {\r\n return this.options.enableExif && window.EXIF;\r\n }\r\n\r\n function _initializeResize () {\r\n var self = this;\r\n var wrap = document.createElement('div');\r\n var isDragging = false;\r\n var direction;\r\n var originalX;\r\n var originalY;\r\n var minSize = 50;\r\n var maxWidth;\r\n var maxHeight;\r\n var vr;\r\n var hr;\r\n\r\n addClass(wrap, 'cr-resizer');\r\n css(wrap, {\r\n width: this.options.viewport.width + 'px',\r\n height: this.options.viewport.height + 'px'\r\n });\r\n\r\n if (this.options.resizeControls.height) {\r\n vr = document.createElement('div');\r\n addClass(vr, 'cr-resizer-vertical');\r\n wrap.appendChild(vr);\r\n }\r\n\r\n if (this.options.resizeControls.width) {\r\n hr = document.createElement('div');\r\n addClass(hr, 'cr-resizer-horisontal');\r\n wrap.appendChild(hr);\r\n }\r\n\r\n function mouseDown(ev) {\r\n if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n ev.preventDefault();\r\n if (isDragging) {\r\n return;\r\n }\r\n\r\n var overlayRect = self.elements.overlay.getBoundingClientRect();\r\n\r\n isDragging = true;\r\n originalX = ev.pageX;\r\n originalY = ev.pageY;\r\n direction = ev.currentTarget.className.indexOf('vertical') !== -1 ? 'v' : 'h';\r\n maxWidth = overlayRect.width;\r\n maxHeight = overlayRect.height;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n originalX = touches.pageX;\r\n originalY = touches.pageY;\r\n }\r\n\r\n window.addEventListener('mousemove', mouseMove);\r\n window.addEventListener('touchmove', mouseMove);\r\n window.addEventListener('mouseup', mouseUp);\r\n window.addEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n }\r\n\r\n function mouseMove(ev) {\r\n var pageX = ev.pageX;\r\n var pageY = ev.pageY;\r\n\r\n ev.preventDefault();\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n pageX = touches.pageX;\r\n pageY = touches.pageY;\r\n }\r\n\r\n var deltaX = pageX - originalX;\r\n var deltaY = pageY - originalY;\r\n var newHeight = self.options.viewport.height + deltaY;\r\n var newWidth = self.options.viewport.width + deltaX;\r\n\r\n if (direction === 'v' && newHeight >= minSize && newHeight <= maxHeight) {\r\n css(wrap, {\r\n height: newHeight + 'px'\r\n });\r\n\r\n self.options.boundary.height += deltaY;\r\n css(self.elements.boundary, {\r\n height: self.options.boundary.height + 'px'\r\n });\r\n\r\n self.options.viewport.height += deltaY;\r\n css(self.elements.viewport, {\r\n height: self.options.viewport.height + 'px'\r\n });\r\n }\r\n else if (direction === 'h' && newWidth >= minSize && newWidth <= maxWidth) {\r\n css(wrap, {\r\n width: newWidth + 'px'\r\n });\r\n\r\n self.options.boundary.width += deltaX;\r\n css(self.elements.boundary, {\r\n width: self.options.boundary.width + 'px'\r\n });\r\n\r\n self.options.viewport.width += deltaX;\r\n css(self.elements.viewport, {\r\n width: self.options.viewport.width + 'px'\r\n });\r\n }\r\n\r\n _updateOverlay.call(self);\r\n _updateZoomLimits.call(self);\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalY = pageY;\r\n originalX = pageX;\r\n }\r\n\r\n function mouseUp() {\r\n isDragging = false;\r\n window.removeEventListener('mousemove', mouseMove);\r\n window.removeEventListener('touchmove', mouseMove);\r\n window.removeEventListener('mouseup', mouseUp);\r\n window.removeEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = '';\r\n }\r\n\r\n if (vr) {\r\n vr.addEventListener('mousedown', mouseDown);\r\n vr.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n if (hr) {\r\n hr.addEventListener('mousedown', mouseDown);\r\n hr.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n this.elements.boundary.appendChild(wrap);\r\n }\r\n\r\n function _setZoomerVal(v) {\r\n if (this.options.enableZoom) {\r\n var z = this.elements.zoomer,\r\n val = fix(v, 4);\r\n\r\n z.value = Math.max(parseFloat(z.min), Math.min(parseFloat(z.max), val)).toString();\r\n }\r\n }\r\n\r\n function _initializeZoom() {\r\n var self = this,\r\n wrap = self.elements.zoomerWrap = document.createElement('div'),\r\n zoomer = self.elements.zoomer = document.createElement('input');\r\n\r\n addClass(wrap, 'cr-slider-wrap');\r\n addClass(zoomer, 'cr-slider');\r\n zoomer.type = 'range';\r\n zoomer.step = '0.0001';\r\n zoomer.value = '1';\r\n zoomer.style.display = self.options.showZoomer ? '' : 'none';\r\n zoomer.setAttribute('aria-label', 'zoom');\r\n\r\n self.element.appendChild(wrap);\r\n wrap.appendChild(zoomer);\r\n\r\n self._currentZoom = 1;\r\n\r\n function change() {\r\n _onZoom.call(self, {\r\n value: parseFloat(zoomer.value),\r\n origin: new TransformOrigin(self.elements.preview),\r\n viewportRect: self.elements.viewport.getBoundingClientRect(),\r\n transform: Transform.parse(self.elements.preview)\r\n });\r\n }\r\n\r\n function scroll(ev) {\r\n var delta, targetZoom;\r\n\r\n if(self.options.mouseWheelZoom === 'ctrl' && ev.ctrlKey !== true){\r\n return 0; \r\n } else if (ev.wheelDelta) {\r\n delta = ev.wheelDelta / 1200; //wheelDelta min: -120 max: 120 // max x 10 x 2\r\n } else if (ev.deltaY) {\r\n delta = ev.deltaY / 1060; //deltaY min: -53 max: 53 // max x 10 x 2\r\n } else if (ev.detail) {\r\n delta = ev.detail / -60; //delta min: -3 max: 3 // max x 10 x 2\r\n } else {\r\n delta = 0;\r\n }\r\n\r\n targetZoom = self._currentZoom + (delta * self._currentZoom);\r\n\r\n ev.preventDefault();\r\n _setZoomerVal.call(self, targetZoom);\r\n change.call(self);\r\n }\r\n\r\n self.elements.zoomer.addEventListener('input', change);// this is being fired twice on keypress\r\n self.elements.zoomer.addEventListener('change', change);\r\n\r\n if (self.options.mouseWheelZoom) {\r\n self.elements.boundary.addEventListener('mousewheel', scroll);\r\n self.elements.boundary.addEventListener('DOMMouseScroll', scroll);\r\n }\r\n }\r\n\r\n function _onZoom(ui) {\r\n var self = this,\r\n transform = ui ? ui.transform : Transform.parse(self.elements.preview),\r\n vpRect = ui ? ui.viewportRect : self.elements.viewport.getBoundingClientRect(),\r\n origin = ui ? ui.origin : new TransformOrigin(self.elements.preview);\r\n\r\n function applyCss() {\r\n var transCss = {};\r\n transCss[CSS_TRANSFORM] = transform.toString();\r\n transCss[CSS_TRANS_ORG] = origin.toString();\r\n css(self.elements.preview, transCss);\r\n }\r\n\r\n self._currentZoom = ui ? ui.value : self._currentZoom;\r\n transform.scale = self._currentZoom;\r\n self.elements.zoomer.setAttribute('aria-valuenow', self._currentZoom);\r\n applyCss();\r\n\r\n if (self.options.enforceBoundary) {\r\n var boundaries = _getVirtualBoundaries.call(self, vpRect),\r\n transBoundaries = boundaries.translate,\r\n oBoundaries = boundaries.origin;\r\n\r\n if (transform.x >= transBoundaries.maxX) {\r\n origin.x = oBoundaries.minX;\r\n transform.x = transBoundaries.maxX;\r\n }\r\n\r\n if (transform.x <= transBoundaries.minX) {\r\n origin.x = oBoundaries.maxX;\r\n transform.x = transBoundaries.minX;\r\n }\r\n\r\n if (transform.y >= transBoundaries.maxY) {\r\n origin.y = oBoundaries.minY;\r\n transform.y = transBoundaries.maxY;\r\n }\r\n\r\n if (transform.y <= transBoundaries.minY) {\r\n origin.y = oBoundaries.maxY;\r\n transform.y = transBoundaries.minY;\r\n }\r\n }\r\n applyCss();\r\n _debouncedOverlay.call(self);\r\n _triggerUpdate.call(self);\r\n }\r\n\r\n function _getVirtualBoundaries(viewport) {\r\n var self = this,\r\n scale = self._currentZoom,\r\n vpWidth = viewport.width,\r\n vpHeight = viewport.height,\r\n centerFromBoundaryX = self.elements.boundary.clientWidth / 2,\r\n centerFromBoundaryY = self.elements.boundary.clientHeight / 2,\r\n imgRect = self.elements.preview.getBoundingClientRect(),\r\n curImgWidth = imgRect.width,\r\n curImgHeight = imgRect.height,\r\n halfWidth = vpWidth / 2,\r\n halfHeight = vpHeight / 2;\r\n\r\n var maxX = ((halfWidth / scale) - centerFromBoundaryX) * -1;\r\n var minX = maxX - ((curImgWidth * (1 / scale)) - (vpWidth * (1 / scale)));\r\n\r\n var maxY = ((halfHeight / scale) - centerFromBoundaryY) * -1;\r\n var minY = maxY - ((curImgHeight * (1 / scale)) - (vpHeight * (1 / scale)));\r\n\r\n var originMinX = (1 / scale) * halfWidth;\r\n var originMaxX = (curImgWidth * (1 / scale)) - originMinX;\r\n\r\n var originMinY = (1 / scale) * halfHeight;\r\n var originMaxY = (curImgHeight * (1 / scale)) - originMinY;\r\n\r\n return {\r\n translate: {\r\n maxX: maxX,\r\n minX: minX,\r\n maxY: maxY,\r\n minY: minY\r\n },\r\n origin: {\r\n maxX: originMaxX,\r\n minX: originMinX,\r\n maxY: originMaxY,\r\n minY: originMinY\r\n }\r\n };\r\n }\r\n\r\n function _updateCenterPoint(rotate) {\r\n var self = this,\r\n scale = self._currentZoom,\r\n data = self.elements.preview.getBoundingClientRect(),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n transform = Transform.parse(self.elements.preview.style[CSS_TRANSFORM]),\r\n pc = new TransformOrigin(self.elements.preview),\r\n top = (vpData.top - data.top) + (vpData.height / 2),\r\n left = (vpData.left - data.left) + (vpData.width / 2),\r\n center = {},\r\n adj = {};\r\n\r\n if (rotate) {\r\n var cx = pc.x;\r\n var cy = pc.y;\r\n var tx = transform.x;\r\n var ty = transform.y;\r\n\r\n center.y = cx;\r\n center.x = cy;\r\n transform.y = tx;\r\n transform.x = ty;\r\n }\r\n else {\r\n center.y = top / scale;\r\n center.x = left / scale;\r\n\r\n adj.y = (center.y - pc.y) * (1 - scale);\r\n adj.x = (center.x - pc.x) * (1 - scale);\r\n\r\n transform.x -= adj.x;\r\n transform.y -= adj.y;\r\n }\r\n\r\n var newCss = {};\r\n newCss[CSS_TRANS_ORG] = center.x + 'px ' + center.y + 'px';\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n }\r\n\r\n function _initDraggable() {\r\n var self = this,\r\n isDragging = false,\r\n originalX,\r\n originalY,\r\n originalDistance,\r\n vpRect,\r\n transform;\r\n\r\n function assignTransformCoordinates(deltaX, deltaY) {\r\n var imgRect = self.elements.preview.getBoundingClientRect(),\r\n top = transform.y + deltaY,\r\n left = transform.x + deltaX;\r\n\r\n if (self.options.enforceBoundary) {\r\n if (vpRect.top > imgRect.top + deltaY && vpRect.bottom < imgRect.bottom + deltaY) {\r\n transform.y = top;\r\n }\r\n\r\n if (vpRect.left > imgRect.left + deltaX && vpRect.right < imgRect.right + deltaX) {\r\n transform.x = left;\r\n }\r\n }\r\n else {\r\n transform.y = top;\r\n transform.x = left;\r\n }\r\n }\r\n\r\n function toggleGrabState(isDragging) {\r\n self.elements.preview.setAttribute('aria-grabbed', isDragging);\r\n self.elements.boundary.setAttribute('aria-dropeffect', isDragging? 'move': 'none');\r\n }\r\n\r\n function keyDown(ev) {\r\n var LEFT_ARROW = 37,\r\n UP_ARROW = 38,\r\n RIGHT_ARROW = 39,\r\n DOWN_ARROW = 40;\r\n\r\n if (ev.shiftKey && (ev.keyCode === UP_ARROW || ev.keyCode === DOWN_ARROW)) {\r\n var zoom;\r\n if (ev.keyCode === UP_ARROW) {\r\n zoom = parseFloat(self.elements.zoomer.value) + parseFloat(self.elements.zoomer.step)\r\n }\r\n else {\r\n zoom = parseFloat(self.elements.zoomer.value) - parseFloat(self.elements.zoomer.step)\r\n }\r\n self.setZoom(zoom);\r\n }\r\n else if (self.options.enableKeyMovement && (ev.keyCode >= 37 && ev.keyCode <= 40)) {\r\n ev.preventDefault();\r\n var movement = parseKeyDown(ev.keyCode);\r\n\r\n transform = Transform.parse(self.elements.preview);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n vpRect = self.elements.viewport.getBoundingClientRect();\r\n keyMove(movement);\r\n }\r\n\r\n function parseKeyDown(key) {\r\n switch (key) {\r\n case LEFT_ARROW:\r\n return [1, 0];\r\n case UP_ARROW:\r\n return [0, 1];\r\n case RIGHT_ARROW:\r\n return [-1, 0];\r\n case DOWN_ARROW:\r\n return [0, -1];\r\n }\r\n }\r\n }\r\n\r\n function keyMove(movement) {\r\n var deltaX = movement[0],\r\n deltaY = movement[1],\r\n newCss = {};\r\n\r\n assignTransformCoordinates(deltaX, deltaY);\r\n\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n _updateOverlay.call(self);\r\n document.body.style[CSS_USERSELECT] = '';\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalDistance = 0;\r\n }\r\n\r\n function mouseDown(ev) {\r\n if (ev.button !== undefined && ev.button !== 0) return;\r\n\r\n ev.preventDefault();\r\n if (isDragging) return;\r\n isDragging = true;\r\n originalX = ev.pageX;\r\n originalY = ev.pageY;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n originalX = touches.pageX;\r\n originalY = touches.pageY;\r\n }\r\n toggleGrabState(isDragging);\r\n transform = Transform.parse(self.elements.preview);\r\n window.addEventListener('mousemove', mouseMove);\r\n window.addEventListener('touchmove', mouseMove);\r\n window.addEventListener('mouseup', mouseUp);\r\n window.addEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = 'none';\r\n vpRect = self.elements.viewport.getBoundingClientRect();\r\n }\r\n\r\n function mouseMove(ev) {\r\n ev.preventDefault();\r\n var pageX = ev.pageX,\r\n pageY = ev.pageY;\r\n\r\n if (ev.touches) {\r\n var touches = ev.touches[0];\r\n pageX = touches.pageX;\r\n pageY = touches.pageY;\r\n }\r\n\r\n var deltaX = pageX - originalX,\r\n deltaY = pageY - originalY,\r\n newCss = {};\r\n\r\n if (ev.type === 'touchmove') {\r\n if (ev.touches.length > 1) {\r\n var touch1 = ev.touches[0];\r\n var touch2 = ev.touches[1];\r\n var dist = Math.sqrt((touch1.pageX - touch2.pageX) * (touch1.pageX - touch2.pageX) + (touch1.pageY - touch2.pageY) * (touch1.pageY - touch2.pageY));\r\n\r\n if (!originalDistance) {\r\n originalDistance = dist / self._currentZoom;\r\n }\r\n\r\n var scale = dist / originalDistance;\r\n\r\n _setZoomerVal.call(self, scale);\r\n dispatchChange(self.elements.zoomer);\r\n return;\r\n }\r\n }\r\n\r\n assignTransformCoordinates(deltaX, deltaY);\r\n\r\n newCss[CSS_TRANSFORM] = transform.toString();\r\n css(self.elements.preview, newCss);\r\n _updateOverlay.call(self);\r\n originalY = pageY;\r\n originalX = pageX;\r\n }\r\n\r\n function mouseUp() {\r\n isDragging = false;\r\n toggleGrabState(isDragging);\r\n window.removeEventListener('mousemove', mouseMove);\r\n window.removeEventListener('touchmove', mouseMove);\r\n window.removeEventListener('mouseup', mouseUp);\r\n window.removeEventListener('touchend', mouseUp);\r\n document.body.style[CSS_USERSELECT] = '';\r\n _updateCenterPoint.call(self);\r\n _triggerUpdate.call(self);\r\n originalDistance = 0;\r\n }\r\n\r\n self.elements.overlay.addEventListener('mousedown', mouseDown);\r\n self.elements.viewport.addEventListener('keydown', keyDown);\r\n self.elements.overlay.addEventListener('touchstart', mouseDown);\r\n }\r\n\r\n function _updateOverlay() {\r\n if (!this.elements) return; // since this is debounced, it can be fired after destroy\r\n var self = this,\r\n boundRect = self.elements.boundary.getBoundingClientRect(),\r\n imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n css(self.elements.overlay, {\r\n width: imgData.width + 'px',\r\n height: imgData.height + 'px',\r\n top: (imgData.top - boundRect.top) + 'px',\r\n left: (imgData.left - boundRect.left) + 'px'\r\n });\r\n }\r\n var _debouncedOverlay = debounce(_updateOverlay, 500);\r\n\r\n function _triggerUpdate() {\r\n var self = this,\r\n data = self.get();\r\n\r\n if (!_isVisible.call(self)) {\r\n return;\r\n }\r\n\r\n self.options.update.call(self, data);\r\n if (self.$ && typeof Prototype === 'undefined') {\r\n self.$(self.element).trigger('update.croppie', data);\r\n }\r\n else {\r\n var ev;\r\n if (window.CustomEvent) {\r\n ev = new CustomEvent('update', { detail: data });\r\n } else {\r\n ev = document.createEvent('CustomEvent');\r\n ev.initCustomEvent('update', true, true, data);\r\n }\r\n\r\n self.element.dispatchEvent(ev);\r\n }\r\n }\r\n\r\n function _isVisible() {\r\n return this.elements.preview.offsetHeight > 0 && this.elements.preview.offsetWidth > 0;\r\n }\r\n\r\n function _updatePropertiesFromImage() {\r\n var self = this,\r\n initialZoom = 1,\r\n cssReset = {},\r\n img = self.elements.preview,\r\n imgData,\r\n transformReset = new Transform(0, 0, initialZoom),\r\n originReset = new TransformOrigin(),\r\n isVisible = _isVisible.call(self);\r\n\r\n if (!isVisible || self.data.bound) {// if the croppie isn't visible or it doesn't need binding\r\n return;\r\n }\r\n\r\n self.data.bound = true;\r\n cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n cssReset[CSS_TRANS_ORG] = originReset.toString();\r\n cssReset['opacity'] = 1;\r\n css(img, cssReset);\r\n\r\n imgData = self.elements.preview.getBoundingClientRect();\r\n\r\n self._originalImageWidth = imgData.width;\r\n self._originalImageHeight = imgData.height;\r\n self.data.orientation = getExifOrientation(self.elements.img);\r\n\r\n if (self.options.enableZoom) {\r\n _updateZoomLimits.call(self, true);\r\n }\r\n else {\r\n self._currentZoom = initialZoom;\r\n }\r\n\r\n transformReset.scale = self._currentZoom;\r\n cssReset[CSS_TRANSFORM] = transformReset.toString();\r\n css(img, cssReset);\r\n\r\n if (self.data.points.length) {\r\n _bindPoints.call(self, self.data.points);\r\n }\r\n else {\r\n _centerImage.call(self);\r\n }\r\n\r\n _updateCenterPoint.call(self);\r\n _updateOverlay.call(self);\r\n }\r\n\r\n function _updateZoomLimits (initial) {\r\n var self = this,\r\n minZoom = Math.max(self.options.minZoom, 0) || 0,\r\n maxZoom = self.options.maxZoom || 1.5,\r\n initialZoom,\r\n defaultInitialZoom,\r\n zoomer = self.elements.zoomer,\r\n scale = parseFloat(zoomer.value),\r\n boundaryData = self.elements.boundary.getBoundingClientRect(),\r\n imgData = naturalImageDimensions(self.elements.img, self.data.orientation),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n minW,\r\n minH;\r\n if (self.options.enforceBoundary) {\r\n minW = vpData.width / imgData.width;\r\n minH = vpData.height / imgData.height;\r\n minZoom = Math.max(minW, minH);\r\n }\r\n\r\n if (minZoom >= maxZoom) {\r\n maxZoom = minZoom + 1;\r\n }\r\n\r\n zoomer.min = fix(minZoom, 4);\r\n zoomer.max = fix(maxZoom, 4);\r\n \r\n if (!initial && (scale < zoomer.min || scale > zoomer.max)) {\r\n _setZoomerVal.call(self, scale < zoomer.min ? zoomer.min : zoomer.max);\r\n }\r\n else if (initial) {\r\n defaultInitialZoom = Math.max((boundaryData.width / imgData.width), (boundaryData.height / imgData.height));\r\n initialZoom = self.data.boundZoom !== null ? self.data.boundZoom : defaultInitialZoom;\r\n _setZoomerVal.call(self, initialZoom);\r\n }\r\n\r\n dispatchChange(zoomer);\r\n }\r\n\r\n function _bindPoints(points) {\r\n if (points.length !== 4) {\r\n throw \"Croppie - Invalid number of points supplied: \" + points;\r\n }\r\n var self = this,\r\n pointsWidth = points[2] - points[0],\r\n // pointsHeight = points[3] - points[1],\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n boundRect = self.elements.boundary.getBoundingClientRect(),\r\n vpOffset = {\r\n left: vpData.left - boundRect.left,\r\n top: vpData.top - boundRect.top\r\n },\r\n scale = vpData.width / pointsWidth,\r\n originTop = points[1],\r\n originLeft = points[0],\r\n transformTop = (-1 * points[1]) + vpOffset.top,\r\n transformLeft = (-1 * points[0]) + vpOffset.left,\r\n newCss = {};\r\n\r\n newCss[CSS_TRANS_ORG] = originLeft + 'px ' + originTop + 'px';\r\n newCss[CSS_TRANSFORM] = new Transform(transformLeft, transformTop, scale).toString();\r\n css(self.elements.preview, newCss);\r\n\r\n _setZoomerVal.call(self, scale);\r\n self._currentZoom = scale;\r\n }\r\n\r\n function _centerImage() {\r\n var self = this,\r\n imgDim = self.elements.preview.getBoundingClientRect(),\r\n vpDim = self.elements.viewport.getBoundingClientRect(),\r\n boundDim = self.elements.boundary.getBoundingClientRect(),\r\n vpLeft = vpDim.left - boundDim.left,\r\n vpTop = vpDim.top - boundDim.top,\r\n w = vpLeft - ((imgDim.width - vpDim.width) / 2),\r\n h = vpTop - ((imgDim.height - vpDim.height) / 2),\r\n transform = new Transform(w, h, self._currentZoom);\r\n\r\n css(self.elements.preview, CSS_TRANSFORM, transform.toString());\r\n }\r\n\r\n function _transferImageToCanvas(customOrientation) {\r\n var self = this,\r\n canvas = self.elements.canvas,\r\n img = self.elements.img,\r\n ctx = canvas.getContext('2d');\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n var orientation = self.options.enableOrientation && customOrientation || getExifOrientation(img);\r\n drawCanvas(canvas, img, orientation);\r\n }\r\n\r\n function _getCanvas(data) {\r\n var self = this,\r\n points = data.points,\r\n left = num(points[0]),\r\n top = num(points[1]),\r\n right = num(points[2]),\r\n bottom = num(points[3]),\r\n width = right-left,\r\n height = bottom-top,\r\n circle = data.circle,\r\n canvas = document.createElement('canvas'),\r\n ctx = canvas.getContext('2d'),\r\n startX = 0,\r\n startY = 0,\r\n canvasWidth = data.outputWidth || width,\r\n canvasHeight = data.outputHeight || height;\r\n\r\n canvas.width = canvasWidth;\r\n canvas.height = canvasHeight;\r\n\r\n if (data.backgroundColor) {\r\n ctx.fillStyle = data.backgroundColor;\r\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\r\n }\r\n\r\n // By default assume we're going to draw the entire\r\n // source image onto the destination canvas.\r\n var sx = left,\r\n sy = top,\r\n sWidth = width,\r\n sHeight = height,\r\n dx = 0,\r\n dy = 0,\r\n dWidth = canvasWidth,\r\n dHeight = canvasHeight;\r\n\r\n //\r\n // Do not go outside of the original image's bounds along the x-axis.\r\n // Handle translations when projecting onto the destination canvas.\r\n //\r\n\r\n // The smallest possible source x-position is 0.\r\n if (left < 0) {\r\n sx = 0;\r\n dx = (Math.abs(left) / width) * canvasWidth;\r\n }\r\n\r\n // The largest possible source width is the original image's width.\r\n if (sWidth + sx > self._originalImageWidth) {\r\n sWidth = self._originalImageWidth - sx;\r\n dWidth = (sWidth / width) * canvasWidth;\r\n }\r\n\r\n //\r\n // Do not go outside of the original image's bounds along the y-axis.\r\n //\r\n\r\n // The smallest possible source y-position is 0.\r\n if (top < 0) {\r\n sy = 0;\r\n dy = (Math.abs(top) / height) * canvasHeight;\r\n }\r\n\r\n // The largest possible source height is the original image's height.\r\n if (sHeight + sy > self._originalImageHeight) {\r\n sHeight = self._originalImageHeight - sy;\r\n dHeight = (sHeight / height) * canvasHeight;\r\n }\r\n\r\n // console.table({ left, right, top, bottom, canvasWidth, canvasHeight, width, height, startX, startY, circle, sx, sy, dx, dy, sWidth, sHeight, dWidth, dHeight });\r\n\r\n ctx.drawImage(this.elements.preview, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\r\n if (circle) {\r\n ctx.fillStyle = '#fff';\r\n ctx.globalCompositeOperation = 'destination-in';\r\n ctx.beginPath();\r\n ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2, true);\r\n ctx.closePath();\r\n ctx.fill();\r\n }\r\n return canvas;\r\n }\r\n\r\n function _getHtmlResult(data) {\r\n var points = data.points,\r\n div = document.createElement('div'),\r\n img = document.createElement('img'),\r\n width = points[2] - points[0],\r\n height = points[3] - points[1];\r\n\r\n addClass(div, 'croppie-result');\r\n div.appendChild(img);\r\n css(img, {\r\n left: (-1 * points[0]) + 'px',\r\n top: (-1 * points[1]) + 'px'\r\n });\r\n img.src = data.url;\r\n css(div, {\r\n width: width + 'px',\r\n height: height + 'px'\r\n });\r\n\r\n return div;\r\n }\r\n\r\n function _getBase64Result(data) {\r\n return _getCanvas.call(this, data).toDataURL(data.format, data.quality);\r\n }\r\n\r\n function _getBlobResult(data) {\r\n var self = this;\r\n return new Promise(function (resolve) {\r\n _getCanvas.call(self, data).toBlob(function (blob) {\r\n resolve(blob);\r\n }, data.format, data.quality);\r\n });\r\n }\r\n\r\n function _replaceImage(img) {\r\n if (this.elements.img.parentNode) {\r\n Array.prototype.forEach.call(this.elements.img.classList, function(c) { img.classList.add(c); });\r\n this.elements.img.parentNode.replaceChild(img, this.elements.img);\r\n this.elements.preview = img; // if the img is attached to the DOM, they're not using the canvas\r\n }\r\n this.elements.img = img;\r\n }\r\n\r\n function _bind(options, cb) {\r\n var self = this,\r\n url,\r\n points = [],\r\n zoom = null,\r\n hasExif = _hasExif.call(self);\r\n\r\n if (typeof (options) === 'string') {\r\n url = options;\r\n options = {};\r\n }\r\n else if (Array.isArray(options)) {\r\n points = options.slice();\r\n }\r\n else if (typeof (options) === 'undefined' && self.data.url) { //refreshing\r\n _updatePropertiesFromImage.call(self);\r\n _triggerUpdate.call(self);\r\n return null;\r\n }\r\n else {\r\n url = options.url;\r\n points = options.points || [];\r\n zoom = typeof(options.zoom) === 'undefined' ? null : options.zoom;\r\n }\r\n\r\n self.data.bound = false;\r\n self.data.url = url || self.data.url;\r\n self.data.boundZoom = zoom;\r\n\r\n return loadImage(url, hasExif).then(function (img) {\r\n _replaceImage.call(self, img);\r\n if (!points.length) {\r\n var natDim = naturalImageDimensions(img);\r\n var rect = self.elements.viewport.getBoundingClientRect();\r\n var aspectRatio = rect.width / rect.height;\r\n var imgAspectRatio = natDim.width / natDim.height;\r\n var width, height;\r\n\r\n if (imgAspectRatio > aspectRatio) {\r\n height = natDim.height;\r\n width = height * aspectRatio;\r\n }\r\n else {\r\n width = natDim.width;\r\n height = natDim.height / aspectRatio;\r\n }\r\n\r\n var x0 = (natDim.width - width) / 2;\r\n var y0 = (natDim.height - height) / 2;\r\n var x1 = x0 + width;\r\n var y1 = y0 + height;\r\n self.data.points = [x0, y0, x1, y1];\r\n }\r\n else if (self.options.relative) {\r\n points = [\r\n points[0] * img.naturalWidth / 100,\r\n points[1] * img.naturalHeight / 100,\r\n points[2] * img.naturalWidth / 100,\r\n points[3] * img.naturalHeight / 100\r\n ];\r\n }\r\n\r\n self.data.points = points.map(function (p) {\r\n return parseFloat(p);\r\n });\r\n if (self.options.useCanvas) {\r\n _transferImageToCanvas.call(self, options.orientation);\r\n }\r\n _updatePropertiesFromImage.call(self);\r\n _triggerUpdate.call(self);\r\n cb && cb();\r\n });\r\n }\r\n\r\n function fix(v, decimalPoints) {\r\n return parseFloat(v).toFixed(decimalPoints || 0);\r\n }\r\n\r\n function _get() {\r\n var self = this,\r\n imgData = self.elements.preview.getBoundingClientRect(),\r\n vpData = self.elements.viewport.getBoundingClientRect(),\r\n x1 = vpData.left - imgData.left,\r\n y1 = vpData.top - imgData.top,\r\n widthDiff = (vpData.width - self.elements.viewport.offsetWidth) / 2, //border\r\n heightDiff = (vpData.height - self.elements.viewport.offsetHeight) / 2,\r\n x2 = x1 + self.elements.viewport.offsetWidth + widthDiff,\r\n y2 = y1 + self.elements.viewport.offsetHeight + heightDiff,\r\n scale = self._currentZoom;\r\n\r\n if (scale === Infinity || isNaN(scale)) {\r\n scale = 1;\r\n }\r\n\r\n var max = self.options.enforceBoundary ? 0 : Number.NEGATIVE_INFINITY;\r\n x1 = Math.max(max, x1 / scale);\r\n y1 = Math.max(max, y1 / scale);\r\n x2 = Math.max(max, x2 / scale);\r\n y2 = Math.max(max, y2 / scale);\r\n\r\n return {\r\n points: [fix(x1), fix(y1), fix(x2), fix(y2)],\r\n zoom: scale,\r\n orientation: self.data.orientation\r\n };\r\n }\r\n\r\n var RESULT_DEFAULTS = {\r\n type: 'canvas',\r\n format: 'png',\r\n quality: 1\r\n },\r\n RESULT_FORMATS = ['jpeg', 'webp', 'png'];\r\n\r\n function _result(options) {\r\n var self = this,\r\n data = _get.call(self),\r\n opts = deepExtend(clone(RESULT_DEFAULTS), clone(options)),\r\n resultType = (typeof (options) === 'string' ? options : (opts.type || 'base64')),\r\n size = opts.size || 'viewport',\r\n format = opts.format,\r\n quality = opts.quality,\r\n backgroundColor = opts.backgroundColor,\r\n circle = typeof opts.circle === 'boolean' ? opts.circle : (self.options.viewport.type === 'circle'),\r\n vpRect = self.elements.viewport.getBoundingClientRect(),\r\n ratio = vpRect.width / vpRect.height,\r\n prom;\r\n\r\n if (size === 'viewport') {\r\n data.outputWidth = vpRect.width;\r\n data.outputHeight = vpRect.height;\r\n } else if (typeof size === 'object') {\r\n if (size.width && size.height) {\r\n data.outputWidth = size.width;\r\n data.outputHeight = size.height;\r\n } else if (size.width) {\r\n data.outputWidth = size.width;\r\n data.outputHeight = size.width / ratio;\r\n } else if (size.height) {\r\n data.outputWidth = size.height * ratio;\r\n data.outputHeight = size.height;\r\n }\r\n }\r\n\r\n if (RESULT_FORMATS.indexOf(format) > -1) {\r\n data.format = 'image/' + format;\r\n data.quality = quality;\r\n }\r\n\r\n data.circle = circle;\r\n data.url = self.data.url;\r\n data.backgroundColor = backgroundColor;\r\n\r\n prom = new Promise(function (resolve) {\r\n switch(resultType.toLowerCase())\r\n {\r\n case 'rawcanvas':\r\n resolve(_getCanvas.call(self, data));\r\n break;\r\n case 'canvas':\r\n case 'base64':\r\n resolve(_getBase64Result.call(self, data));\r\n break;\r\n case 'blob':\r\n _getBlobResult.call(self, data).then(resolve);\r\n break;\r\n default:\r\n resolve(_getHtmlResult.call(self, data));\r\n break;\r\n }\r\n });\r\n return prom;\r\n }\r\n\r\n function _refresh() {\r\n _updatePropertiesFromImage.call(this);\r\n }\r\n\r\n function _rotate(deg) {\r\n if (!this.options.useCanvas || !this.options.enableOrientation) {\r\n throw 'Croppie: Cannot rotate without enableOrientation && EXIF.js included';\r\n }\r\n\r\n var self = this,\r\n canvas = self.elements.canvas;\r\n\r\n self.data.orientation = getExifOffset(self.data.orientation, deg);\r\n drawCanvas(canvas, self.elements.img, self.data.orientation);\r\n _updateCenterPoint.call(self, true);\r\n _updateZoomLimits.call(self);\r\n }\r\n\r\n function _destroy() {\r\n var self = this;\r\n self.element.removeChild(self.elements.boundary);\r\n removeClass(self.element, 'croppie-container');\r\n if (self.options.enableZoom) {\r\n self.element.removeChild(self.elements.zoomerWrap);\r\n }\r\n delete self.elements;\r\n }\r\n\r\n if (window.jQuery) {\r\n var $ = window.jQuery;\r\n $.fn.croppie = function (opts) {\r\n var ot = typeof opts;\r\n\r\n if (ot === 'string') {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n var singleInst = $(this).data('croppie');\r\n\r\n if (opts === 'get') {\r\n return singleInst.get();\r\n }\r\n else if (opts === 'result') {\r\n return singleInst.result.apply(singleInst, args);\r\n }\r\n else if (opts === 'bind') {\r\n return singleInst.bind.apply(singleInst, args);\r\n }\r\n\r\n return this.each(function () {\r\n var i = $(this).data('croppie');\r\n if (!i) return;\r\n\r\n var method = i[opts];\r\n if ($.isFunction(method)) {\r\n method.apply(i, args);\r\n if (opts === 'destroy') {\r\n $(this).removeData('croppie');\r\n }\r\n }\r\n else {\r\n throw 'Croppie ' + opts + ' method not found';\r\n }\r\n });\r\n }\r\n else {\r\n return this.each(function () {\r\n var i = new Croppie(this, opts);\r\n i.$ = $;\r\n $(this).data('croppie', i);\r\n });\r\n }\r\n };\r\n }\r\n\r\n function Croppie(element, opts) {\r\n if (element.className.indexOf('croppie-container') > -1) {\r\n throw new Error(\"Croppie: Can't initialize croppie more than once\");\r\n }\r\n this.element = element;\r\n this.options = deepExtend(clone(Croppie.defaults), opts);\r\n\r\n if (this.element.tagName.toLowerCase() === 'img') {\r\n var origImage = this.element;\r\n addClass(origImage, 'cr-original-image');\r\n setAttributes(origImage, {'aria-hidden' : 'true', 'alt' : '' });\r\n var replacementDiv = document.createElement('div');\r\n this.element.parentNode.appendChild(replacementDiv);\r\n replacementDiv.appendChild(origImage);\r\n this.element = replacementDiv;\r\n this.options.url = this.options.url || origImage.src;\r\n }\r\n\r\n _create.call(this);\r\n if (this.options.url) {\r\n var bindOpts = {\r\n url: this.options.url,\r\n points: this.options.points\r\n };\r\n delete this.options['url'];\r\n delete this.options['points'];\r\n _bind.call(this, bindOpts);\r\n }\r\n }\r\n\r\n Croppie.defaults = {\r\n viewport: {\r\n width: 100,\r\n height: 100,\r\n type: 'square'\r\n },\r\n boundary: { },\r\n orientationControls: {\r\n enabled: true,\r\n leftClass: '',\r\n rightClass: ''\r\n },\r\n resizeControls: {\r\n width: true,\r\n height: true\r\n },\r\n customClass: '',\r\n showZoomer: true,\r\n enableZoom: true,\r\n enableResize: false,\r\n mouseWheelZoom: true,\r\n enableExif: false,\r\n enforceBoundary: true,\r\n enableOrientation: false,\r\n enableKeyMovement: true,\r\n update: function () { }\r\n };\r\n\r\n Croppie.globals = {\r\n translate: 'translate3d'\r\n };\r\n\r\n deepExtend(Croppie.prototype, {\r\n bind: function (options, cb) {\r\n return _bind.call(this, options, cb);\r\n },\r\n get: function () {\r\n var data = _get.call(this);\r\n var points = data.points;\r\n if (this.options.relative) {\r\n points[0] /= this.elements.img.naturalWidth / 100;\r\n points[1] /= this.elements.img.naturalHeight / 100;\r\n points[2] /= this.elements.img.naturalWidth / 100;\r\n points[3] /= this.elements.img.naturalHeight / 100;\r\n }\r\n return data;\r\n },\r\n result: function (type) {\r\n return _result.call(this, type);\r\n },\r\n refresh: function () {\r\n return _refresh.call(this);\r\n },\r\n setZoom: function (v) {\r\n _setZoomerVal.call(this, v);\r\n dispatchChange(this.elements.zoomer);\r\n },\r\n rotate: function (deg) {\r\n _rotate.call(this, deg);\r\n },\r\n destroy: function () {\r\n return _destroy.call(this);\r\n }\r\n });\r\n return Croppie;\r\n}));\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.$helpers.isExists(_vm.user))?_c('div',[_c('b-card',{attrs:{\"title\":\"Основна інформація\"}},[_c('b-card-text',[_c('b-container',{staticClass:\"position-relative\"},[_c('div',{staticClass:\"user-avatar\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAvatarChangeMode),expression:\"isAvatarChangeMode\"}],staticClass:\"avatar-crop-container\"},[_c('b-button',{staticClass:\"btn-icon float-left mt-1 mb-1\",attrs:{\"size\":\"sm\",\"variant\":\"secondary\",\"pill\":\"\",\"disabled\":_vm.isAvatarCropDisabled},on:{\"click\":function($event){_vm.isAvatarChangeMode = false}}},[_c('i',{staticClass:\"feather icon-x\"})]),_c('b-button',{staticClass:\"btn-icon float-right mt-1 mb-1\",attrs:{\"size\":\"sm\",\"variant\":\"success\",\"pill\":\"\",\"disabled\":_vm.isAvatarCropDisabled},on:{\"click\":_vm.avatarCrop}},[_c('i',{staticClass:\"feather icon-check\"})]),_c('div',{staticClass:\"avatar-crop\"},[_c('VueCroppieComponent',{ref:\"avatarCrop\",attrs:{\"viewport\":{ width: _vm.$const.avatarLargeImageSize, height: _vm.$const.avatarLargeImageSize, type: 'circle' },\"enableResize\":false,\"resultType\":'blob'}})],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isAvatarChangeMode),expression:\"!isAvatarChangeMode\"}],staticClass:\"avatar\"},[_c('VueUploadComponent',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],ref:\"avatarFileUpload\",staticClass:\"avatar-upload cursor-pointer\",attrs:{\"title\":\"Натисніть для зміни\",\"disabled\":_vm.isAvatarUploadDisabled,\"custom-action\":_vm.uploadAvatar,\"size\":_vm.$const.maxFileSizeBytes},on:{\"input-file\":_vm.autoUploadFileInput},model:{value:(_vm.avatarUploadFiles),callback:function ($$v) {_vm.avatarUploadFiles=$$v},expression:\"avatarUploadFiles\"}},[_c('img',{attrs:{\"alt\":\"avatar\",\"src\":_vm.$files.avatarImageUrl(_vm.user.avatarFileId, _vm.$files.largeAvatarVersion),\"height\":_vm.$const.avatarLargeImageSize,\"width\":_vm.$const.avatarLargeImageSize}})])],1)]),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\",\"offset\":\"3\"}},[(_vm.$props.isUserCreate)?_c('b-form-group',{attrs:{\"label\":\"Логін\",\"label-for\":\"username-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"id\":\"username-input\",\"name\":\"username-input\",\"type\":\"email\",\"data-vv-as\":\"\\\"Логін\\\"\",\"placeholder\":\"Логін\",\"state\":_vm.validateState('username-input'),\"aria-describedby\":\"username-input-feedback\",\"trim\":\"\"},model:{value:(_vm.user.username),callback:function ($$v) {_vm.$set(_vm.user, \"username\", $$v)},expression:\"user.username\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"username-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('username-input'))+\"\\n \")])],1):_c('b-form-group',{attrs:{\"label\":\"Логін\",\"label-for\":\"username-input\"}},[_c('b-form-input',{attrs:{\"id\":\"username-input\",\"name\":\"username-input\",\"type\":\"email\",\"readonly\":\"\"},model:{value:(_vm.user.username),callback:function ($$v) {_vm.$set(_vm.user, \"username\", $$v)},expression:\"user.username\"}})],1)],1),(_vm.$props.isUserCreate)?_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Пароль\",\"label-for\":\"password-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|min:' + _vm.$const.minPasswordLength + '|max:' + _vm.$const.maxPasswordLength + '|appPassword'),expression:\"'required|min:' + $const.minPasswordLength + '|max:' + $const.maxPasswordLength + '|appPassword'\"}],ref:\"userPassword\",attrs:{\"id\":\"password-input\",\"name\":\"password-input\",\"type\":\"password\",\"data-vv-as\":\"\\\"Пароль\\\"\",\"placeholder\":\"Пароль\",\"state\":_vm.validateState('password-input'),\"aria-describedby\":\"password-input-feedback\"},model:{value:(_vm.user.password),callback:function ($$v) {_vm.$set(_vm.user, \"password\", $$v)},expression:\"user.password\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"password-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('password-input'))+\"\\n \")])],1)],1):_vm._e(),(_vm.$props.isUserCreate)?_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Підтвердження пароля\",\"label-for\":\"confirmPassword-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|confirmed:userPassword'),expression:\"'required|confirmed:userPassword'\"}],attrs:{\"id\":\"confirmPassword-input\",\"name\":\"confirmPassword-input\",\"type\":\"password\",\"data-vv-as\":\"\\\"Підтвердження пароля\\\"\",\"placeholder\":\"Підтвердження пароля\",\"state\":_vm.validateState('confirmPassword-input'),\"aria-describedby\":\"confirmPassword-input-feedback\",\"trim\":\"\"},model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"confirmPassword-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('confirmPassword-input'))+\"\\n \")])],1)],1):_vm._e()],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\",\"offset\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Прізвище\",\"label-for\":\"lastName-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.$props.isAdminEdit ? 'required' : 'required|appUserFullName:' + _vm.origUserLastName),expression:\"$props.isAdminEdit ? 'required' : 'required|appUserFullName:' + origUserLastName\"}],attrs:{\"id\":\"lastName-input\",\"name\":\"lastName-input\",\"data-vv-as\":\"\\\"Прізвище\\\"\",\"placeholder\":\"Прізвище\",\"state\":_vm.validateState('lastName-input'),\"aria-describedby\":\"lastName-input-feedback\",\"trim\":\"\"},model:{value:(_vm.user.lastName),callback:function ($$v) {_vm.$set(_vm.user, \"lastName\", $$v)},expression:\"user.lastName\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"lastName-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('lastName-input'))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Ім'я\",\"label-for\":\"firstName-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.$props.isAdminEdit ? '' : 'required|appUserFullName:' + _vm.origUserFirstName),expression:\"$props.isAdminEdit ? '' : 'required|appUserFullName:' + origUserFirstName\"}],attrs:{\"id\":\"firstName-input\",\"name\":\"firstName-input\",\"data-vv-as\":\"\\\"Ім'я\\\"\",\"placeholder\":\"Ім'я\",\"state\":_vm.validateState('firstName-input'),\"aria-describedby\":\"firstName-input-feedback\",\"trim\":\"\"},model:{value:(_vm.user.firstName),callback:function ($$v) {_vm.$set(_vm.user, \"firstName\", $$v)},expression:\"user.firstName\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"firstName-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('firstName-input'))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"По батькові\",\"label-for\":\"patronymicName-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.$props.isAdminEdit ? '' : 'required|appUserFullName:' + _vm.origUserPatronymicName),expression:\"$props.isAdminEdit ? '' : 'required|appUserFullName:' + origUserPatronymicName\"}],attrs:{\"id\":\"patronymicName-input\",\"name\":\"patronymicName-input\",\"data-vv-as\":\"\\\"По батькові\\\"\",\"placeholder\":\"По батькові\",\"state\":_vm.validateState('patronymicName-input'),\"aria-describedby\":\"patronymicName-input-feedback\",\"trim\":\"\"},model:{value:(_vm.user.patronymicName),callback:function ($$v) {_vm.$set(_vm.user, \"patronymicName\", $$v)},expression:\"user.patronymicName\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"patronymicName-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('patronymicName-input'))+\"\\n \")])],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\",\"offset\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Область\",\"label-for\":\"mapRegionId-input\"}},[_c('v-select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],class:{ 'is-valid': _vm.validateState('mapRegionId-input') === true, 'is-invalid': _vm.validateState('mapRegionId-input') === false },attrs:{\"id\":\"mapRegionId-input\",\"name\":\"mapRegionId-input\",\"data-vv-as\":\"\\\"Область\\\"\",\"placeholder\":\"Виберіть область\",\"aria-describedby\":\"mapRegionId-input-feedback\",\"options\":_vm.mapRegions,\"reduce\":function (x) { return x.id; }},on:{\"input\":function($event){return _vm.onMapElementsChanged(true, false)}},scopedSlots:_vm._u([{key:\"no-options\",fn:function(){return [_vm._v(_vm._s(_vm.$const.selectNoOptionsText))]},proxy:true}],null,false,1880632583),model:{value:(_vm.user.mapRegionId),callback:function ($$v) {_vm.$set(_vm.user, \"mapRegionId\", $$v)},expression:\"user.mapRegionId\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"mapRegionId-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('mapRegionId-input'))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Район\",\"label-for\":\"mapDistrictId-input\"}},[_c('v-select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.mapPoints.length === 0 ? 'required' : ''),expression:\"mapPoints.length === 0 ? 'required' : ''\"}],class:{ 'is-valid': _vm.validateState('mapDistrictId-input') === true, 'is-invalid': _vm.validateState('mapDistrictId-input') === false },attrs:{\"id\":\"mapDistrictId-input\",\"name\":\"mapDistrictId-input\",\"data-vv-as\":\"\\\"Район\\\"\",\"data-vv-name\":\"mapDistrictId-input\",\"data-vv-value-path\":\"_value\",\"placeholder\":\"Виберіть район\",\"aria-describedby\":\"mapDistrictId-input-feedback\",\"options\":_vm.mapDistricts,\"reduce\":function (x) { return x.id; }},on:{\"input\":function($event){return _vm.onMapElementsChanged(false, true)}},scopedSlots:_vm._u([{key:\"no-options\",fn:function(){return [_vm._v(_vm._s(_vm.$const.selectNoOptionsText))]},proxy:true}],null,false,1880632583),model:{value:(_vm.user.mapDistrictId),callback:function ($$v) {_vm.$set(_vm.user, \"mapDistrictId\", $$v)},expression:\"user.mapDistrictId\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"mapDistrictId-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('mapDistrictId-input'))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Населений пункт\",\"label-for\":\"mapPointId-input\"}},[_c('v-select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.mapPoints.length > 0 ? 'required' : ''),expression:\"mapPoints.length > 0 ? 'required' : ''\"}],class:{ 'is-valid': _vm.validateState('mapPointId-input') === true, 'is-invalid': _vm.validateState('mapPointId-input') === false },attrs:{\"id\":\"mapPointId-input\",\"name\":\"mapPointId-input\",\"data-vv-as\":\"\\\"Населений пункт\\\"\",\"placeholder\":\"Виберіть населений пункт\",\"aria-describedby\":\"mapPointId-input-feedback\",\"options\":_vm.mapPoints,\"reduce\":function (x) { return x.id; }},on:{\"input\":function($event){return _vm.onMapElementsChanged(false, false)}},scopedSlots:_vm._u([{key:\"no-options\",fn:function(){return [_vm._v(_vm._s(_vm.$const.selectNoOptionsText))]},proxy:true}],null,false,1880632583),model:{value:(_vm.user.mapPointId),callback:function ($$v) {_vm.$set(_vm.user, \"mapPointId\", $$v)},expression:\"user.mapPointId\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"mapPointId-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('mapPointId-input'))+\"\\n \")])],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\",\"offset\":\"3\"}},[_c('b-form-group',{attrs:{\"label\":\"Організація\",\"label-for\":\"organizationId-input\"}},[_c('v-select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],class:{ 'is-valid': _vm.validateState('organizationId-input') === true, 'is-invalid': _vm.validateState('organizationId-input') === false },attrs:{\"id\":\"organizationId-input\",\"name\":\"organizationId-input\",\"data-vv-as\":\"\\\"Організація\\\"\",\"placeholder\":\"Виберіть організацію\",\"aria-describedby\":\"organizationId-input-feedback\",\"options\":_vm.organizations,\"reduce\":function (x) { return x.id; },\"disabled\":_vm.isOrganizationReadonly,\"clearable\":!_vm.isOrganizationReadonly,\"no-drop\":_vm.isOrganizationReadonly},scopedSlots:_vm._u([{key:\"no-options\",fn:function(){return [_vm._v(_vm._s(_vm.$const.selectNoOptionsText))]},proxy:true}],null,false,1880632583),model:{value:(_vm.user.organizationId),callback:function ($$v) {_vm.$set(_vm.user, \"organizationId\", $$v)},expression:\"user.organizationId\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"organizationId-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('organizationId-input'))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":\"Посада\",\"label-for\":\"positionName-input\"}},[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"id\":\"positionName-input\",\"name\":\"positionName-input\",\"data-vv-as\":\"\\\"Посада\\\"\",\"placeholder\":\"Посада\",\"state\":_vm.validateState('positionName-input'),\"aria-describedby\":\"positionName-input-feedback\",\"trim\":\"\"},model:{value:(_vm.user.positionName),callback:function ($$v) {_vm.$set(_vm.user, \"positionName\", $$v)},expression:\"user.positionName\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":\"positionName-input-feedback\"}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('positionName-input'))+\"\\n \")])],1)],1)],1)],1)],1)],1),_c('b-card',{attrs:{\"title\":\"Контактна інформація\"}},[_c('b-card-text',[_c('b-container',[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"7\"}},[_c('h5',{staticClass:\"text-center\"},[_vm._v(\"Телефони\")]),_c('b-form-row',[_c('b-col',{attrs:{\"cols\":\"5\"}},[_c('b-form-group',[_c('b-form-input',{attrs:{\"id\":'main-phone-label-input',\"name\":'\\'main-phone-label-input',\"readonly\":\"\"},model:{value:(_vm.$const.mainPhoneName),callback:function ($$v) {_vm.$set(_vm.$const, \"mainPhoneName\", $$v)},expression:\"$const.mainPhoneName\"}})],1)],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-form-group',[_c('b-input-group',[_c('b-input-group-prepend',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$helpers.isNotEmpty(_vm.organizationPhonesPrefix)),expression:\"$helpers.isNotEmpty(organizationPhonesPrefix)\"}],attrs:{\"is-text\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.organizationPhonesPrefix)+\"\\n \")]),_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|numeric'),expression:\"'required|numeric'\"}],attrs:{\"id\":\"main-phone-number-input\",\"name\":\"main-phone-number-input\",\"data-vv-as\":\"\\\"Номер телефона\\\"\",\"placeholder\":\"Номер телефона\",\"state\":_vm.validateState('main-phone-number-input'),\"aria-describedby\":'main-phone-number-input-feedback',\"trim\":\"\"},model:{value:(_vm.user.mainPhoneNumber),callback:function ($$v) {_vm.$set(_vm.user, \"mainPhoneNumber\", $$v)},expression:\"user.mainPhoneNumber\"}}),(false)?_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_c('i',{staticClass:\"feather icon-shield\"})]):_vm._e()],1),_c('b-form-invalid-feedback',{attrs:{\"id\":'main-phone-number-input-feedback',\"state\":_vm.validateState('main-phone-number-input')}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('main-phone-number-input'))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"1\"}})],1),_vm._l((_vm.user.additionalPhones),function(phone,index){return _c('b-form-row',{key:index},[_c('b-col',{attrs:{\"cols\":\"5\"}},[_c('b-form-group',[_c('v-select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"},{name:\"b-tooltip\",rawName:\"v-b-tooltip.focus\",modifiers:{\"focus\":true}}],ref:'phone-label-input-' + index,refInFor:true,class:{ 'is-invalid': _vm.validateState('phone-label-input-' + index) === false },attrs:{\"id\":'phone-label-input-' + index,\"name\":'phone-label-input-' + index,\"data-vv-as\":\"\\\"Назва\\\"\",\"placeholder\":\"Вкажіть назву\",\"aria-describedby\":'phone-label-input-feedback-' + index,\"options\":_vm.phoneLabels,\"taggable\":\"\",\"select-on-tab\":\"\",\"select-on-blur\":\"\",\"title\":\"Виберіть зі списку або введіть свій варіант\"},on:{\"option:created\":_vm.updatePhoneLabels},scopedSlots:_vm._u([{key:\"no-options\",fn:function(){return [_vm._v(_vm._s(_vm.$const.selectNoOptionsText))]},proxy:true}],null,true),model:{value:(phone.label),callback:function ($$v) {_vm.$set(phone, \"label\", $$v)},expression:\"phone.label\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":'phone-label-input-feedback-' + index}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('phone-label-input-' + index))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('phone-number-input',{attrs:{\"id\":'phone-number-input-' + index,\"feedback-id\":'phone-number-input-feedback-' + index,\"validate-rule\":'required',\"display-name\":\"Номер телефона\",\"state\":_vm.validateState('phone-number-input-' + index),\"phone-value\":phone.number},on:{\"update:phoneValue\":function($event){return _vm.$set(phone, \"number\", $event)},\"update:phone-value\":function($event){return _vm.$set(phone, \"number\", $event)}}})],1),_c('b-col',{attrs:{\"cols\":\"1\"}},[_c('b-button',{staticClass:\"btn-icon mt-25\",attrs:{\"variant\":\"outline-danger\",\"size\":\"sm\",\"pill\":\"\"},on:{\"click\":function($event){return _vm.user.additionalPhones.splice(index, 1)}}},[_c('i',{staticClass:\"feather icon-x icon-sm\"})])],1)],1)}),_c('b-row',[_c('b-col',[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"success\",\"block\":\"\",\"pill\":\"\"},on:{\"click\":function($event){return _vm.user.additionalPhones.push({})}}},[_c('i',{staticClass:\"feather icon-plus\"}),_vm._v(\" Додати телефон\\n \")])],1)],1)],2),_c('b-col',{attrs:{\"cols\":\"5\"}},[_c('h5',{staticClass:\"text-center\"},[_vm._v(\"Електронна пошта (додаткова)\")]),_vm._l((_vm.user.additionalEmails),function(email,index){return _c('b-form-row',{key:index},[_c('b-col',{attrs:{\"cols\":\"11\"}},[_c('b-form-group',[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|email'),expression:\"'required|email'\"}],attrs:{\"id\":'email-number-input-' + index,\"name\":'email-number-input-' + index,\"type\":\"email\",\"data-vv-as\":\"\\\"Пошта\\\"\",\"placeholder\":\"Пошта\",\"state\":_vm.validateState('email-number-input-' + index),\"aria-describedby\":'email-number-input-feedback' + index,\"trim\":\"\"},model:{value:(email.emailAddress),callback:function ($$v) {_vm.$set(email, \"emailAddress\", $$v)},expression:\"email.emailAddress\"}}),_c('b-form-invalid-feedback',{attrs:{\"id\":'email-number-input-feedback-' + index}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first('email-number-input-' + index))+\"\\n \")])],1)],1),_c('b-col',{attrs:{\"cols\":\"1 mt-25\"}},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"outline-danger\",\"size\":\"sm\",\"pill\":\"\"},on:{\"click\":function($event){return _vm.user.additionalEmails.splice(index, 1)}}},[_c('i',{staticClass:\"feather icon-x icon-sm\"})])],1)],1)}),_c('b-row',[_c('b-col',[_c('b-button',{staticClass:\"btn-icon mt-25\",attrs:{\"variant\":\"success\",\"block\":\"\",\"pill\":\"\"},on:{\"click\":function($event){return _vm.user.additionalEmails.push({})}}},[_c('i',{staticClass:\"feather icon-plus\"}),_vm._v(\" Додати пошту\\n \")])],1)],1)],2)],1)],1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Croppie from 'croppie';\n\nvar VueCroppieComponent = {\n name: 'VueCroppie',\n render: function render(h) {\n return h('div', {\n class: this.customClass,\n ref: 'croppieContainer',\n id: 'croppieContainer'\n });\n },\n props: {\n boundary: Object,\n customClass: String,\n enableExif: Boolean,\n enableOrientation: {\n type: Boolean,\n default: true\n },\n enableResize: {\n type: Boolean,\n default: true\n },\n enableZoom: {\n type: Boolean,\n default: true\n },\n enforceBoundary: {\n type: Boolean,\n default: true\n },\n mouseWheelZoom: {\n type: [Boolean, String],\n default: true\n },\n showZoomer: {\n type: Boolean,\n default: true\n },\n croppieInitialized: {\n type: Function,\n default: function _default() {}\n },\n viewport: {\n type: Object,\n default: function _default() {\n return {\n width: 200,\n height: 200,\n type: 'square'\n };\n }\n },\n minZoom: Number,\n maxZoom: Number\n },\n mounted: function mounted() {\n this.initCroppie();\n },\n data: function data() {\n return {\n croppie: null\n };\n },\n methods: {\n initCroppie: function initCroppie() {\n var _this = this;\n\n var el = this.$refs.croppieContainer;\n var options = {\n enableExif: this.enableExif,\n enableOrientation: this.enableOrientation,\n enableZoom: this.enableZoom,\n enableResize: this.enableResize,\n enforceBoundary: this.enforceBoundary,\n mouseWheelZoom: this.mouseWheelZoom,\n viewport: this.viewport,\n showZoomer: this.showZoomer,\n minZoom: this.minZoom,\n maxZoom: this.maxZoom\n };\n\n if (this.boundary) {\n options.boundary = this.boundary;\n }\n\n el.addEventListener('update', function (ev) {\n _this.$emit('update', ev.detail);\n });\n this.croppie = new Croppie(el, options);\n this.croppieInitialized();\n },\n bind: function bind(options) {\n return this.croppie.bind(options);\n },\n destroy: function destroy() {\n this.croppie.destroy();\n },\n get: function get(cb) {\n if (cb) {\n cb(this.croppie.get());\n } else {\n return this.croppie.get();\n }\n },\n rotate: function rotate(angle) {\n this.croppie.rotate(angle);\n },\n setZoom: function setZoom(value) {\n this.croppie.setZoom(value);\n },\n result: function result(options, cb) {\n var _this2 = this;\n\n if (!options) options = {\n type: 'base64'\n };\n return this.croppie.result(options).then(function (output) {\n if (!cb) {\n _this2.$emit('result', output);\n } else {\n cb(output);\n }\n\n return output;\n });\n },\n refresh: function refresh() {\n this.croppie.destroy();\n this.initCroppie();\n }\n }\n};\n\nvar VueCroppie = {\n install: function install(Vue, options) {\n Vue.component(VueCroppieComponent.name, VueCroppieComponent);\n }\n};\n\nif (window && window.Vue) {\n Vue.use(VueCroppie);\n}\n\nexport default VueCroppie;\nexport { VueCroppieComponent };\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-group',[_c('b-input-group',[_c('b-form-input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.$props.validateRule),expression:\"$props.validateRule\"}],ref:\"phoneNumberInput\",attrs:{\"id\":_vm.$props.id,\"name\":_vm.$props.id,\"data-vv-as\":'\"' + _vm.$props.displayName + '\"',\"placeholder\":_vm.$props.displayName,\"state\":_vm.$props.state,\"aria-describedby\":_vm.$props.feedbackId},on:{\"keyup\":_vm.onChange,\"blur\":_vm.onChange},model:{value:(_vm.formattedPhoneValue),callback:function ($$v) {_vm.formattedPhoneValue=$$v},expression:\"formattedPhoneValue\"}}),(false)?_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_c('i',{staticClass:\"feather icon-shield\"})]):_vm._e()],1),_c('b-form-invalid-feedback',{attrs:{\"id\":_vm.$props.feedbackId,\"state\":_vm.$props.state}},[_vm._v(\"\\n \"+_vm._s(_vm.veeErrors.first(_vm.$props.id))+\"\\n \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Inject, Prop, Vue} from 'vue-property-decorator'\nimport {AppUtilsModel} from \"@/plugins/app-utils\";\n\n@Component\nexport default class PhoneNumberInput extends Vue {\n @Prop({ type: String, required: true }) id: string | undefined;\n @Prop({ type: String, required: true }) feedbackId: string | undefined;\n @Prop({ type: Boolean }) state: boolean | null | undefined;\n @Prop({ type: String, required: false }) validateRule: string | undefined;\n @Prop({ type: String, required: false }) displayName: string | undefined;\n @Prop({ type: String, required: true }) phoneValue: string | null | undefined;\n\n @Inject() readonly $validator!: any;\n\n formattedPhoneValue: string | null = null;\n\n get inputElement(): HTMLInputElement {\n const inputComponent = this.$refs.phoneNumberInput as Vue;\n return inputComponent.$el as HTMLInputElement;\n }\n\n created() {\n this.formattedPhoneValue = this.phoneValue!;\n this.updateValue(true);\n }\n\n onChange(event) {\n let cursorPosition = this.inputElement.selectionStart || 0;\n cursorPosition -= Math.min(this.$helpers.isExists(this.formattedPhoneValue) ? this.formattedPhoneValue!.length : 0, AppUtilsModel.phoneNumberMaxLength + 5);\n\n this.updateValue();\n\n cursorPosition += this.$helpers.isExists(this.formattedPhoneValue) ? this.formattedPhoneValue!.length : 0;\n\n this.$nextTick(() => {\n this.inputElement.setSelectionRange(cursorPosition, cursorPosition);\n });\n }\n\n updateValue(isInit = false) {\n const phoneNumberResult = this.$appUtils.formatAdditionalPhoneNumber(this.formattedPhoneValue, isInit);\n\n this.formattedPhoneValue = phoneNumberResult.displayValue;\n this.$emit('update:phoneValue', phoneNumberResult.phoneNumber);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneNumberInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneNumberInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhoneNumberInput.vue?vue&type=template&id=b3749070&scoped=true&\"\nimport script from \"./PhoneNumberInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhoneNumberInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3749070\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from 'vue-property-decorator'\nimport {IUserBasicEditParams, IUserGeneralAndContactInfoSection, SelectOption, UserCreateDto} from \"@/global\";\nimport appUtils from '@/plugins/app-utils'\nimport * as enums from \"@/global-enum\";\nimport filesApi from '@/api/files'\nimport VueUploadComponent from 'vue-upload-component';\n//@ts-ignore\nimport {VueCroppieComponent} from 'vue-croppie';\nimport 'croppie/croppie.css'\nimport {VueSelectConstructor} from \"vue-select\";\nimport PhoneNumberInput from \"@/components/PhoneNumberInput.vue\";\n\n@Component({\n components: {\n PhoneNumberInput,\n VueUploadComponent, VueCroppieComponent\n }\n})\nexport default class UserGeneralAndContactInfoSection extends Vue implements IUserGeneralAndContactInfoSection {\n @Prop(Object) user: IUserBasicEditParams | undefined;\n @Prop(Function) showErrorNotification: ((errorMessage?: string) => void) | undefined;\n\n @Prop(Boolean) isUserCreate: boolean | undefined;\n @Prop(Boolean) isAdminEdit: boolean | undefined;\n\n isAvatarChangeMode = false;\n isAvatarUploadDisabled = false;\n isAvatarCropDisabled = false;\n avatarUploadFiles: VUFile[] = [];\n\n confirmPassword = \"\";\n\n origUserInit = false;\n origUserFirstName = \"\";\n origUserLastName = \"\";\n origUserPatronymicName = \"\";\n\n mapRegions: SelectOption[] = [];\n mapDistricts: SelectOption[] = [];\n mapPoints: SelectOption[] = [];\n\n organizations: SelectOption[] = [];\n\n phoneLabels: string[] = [];\n\n get isOrganizationReadonly() {\n return this.isUserCreate || !this.$helpers.isExists(this.user) || this.user!.availableOrganizations.length <= 1\n }\n\n get organizationPhonesPrefix() {\n if (this.$helpers.isExists(this.user)) {\n if (this.$helpers.isExists(this.user!.organizationId)) {\n const selectedOrganization = this.$helpers.findFirstInArray(this.user!.availableOrganizations, x => x.id === this.user!.organizationId);\n\n if (this.$helpers.isExists(selectedOrganization)) {\n return `${selectedOrganization!.phoneNumbersSecondPrefix}`\n }\n }\n }\n\n return \"\";\n };\n\n getAvatarFileUploadComponent() {\n return this.$refs.avatarFileUpload as VueUploadComponent;\n }\n\n getAvatarCropComponent() {\n return this.$refs.avatarCrop;\n }\n\n @Watch(\"user\")\n onUserUpdate(val: any) {\n if (this.origUserInit) return;\n\n if (this.$helpers.isExists(this.user)) {\n this.origUserFirstName = this.user!.firstName;\n this.origUserLastName = this.user!.lastName;\n this.origUserPatronymicName = this.user!.patronymicName;\n\n this.origUserInit = true;\n }\n }\n\n @Watch(\"user.password\")\n onPasswordUpdate(val: string, oldVal: string) {\n if (val === oldVal) return;\n\n if (this.$helpers.isExists(this.user)) {\n let userCreate = this.user!;\n userCreate.password = this.$appUtils.specialUserPasswordTrim(userCreate.password);\n }\n }\n\n @Watch(\"user.firstName\")\n onFirstNameUpdate(val: string, oldVal: string) {\n if (this.isAdminEdit || val === oldVal) return;\n\n if (this.$helpers.isExists(this.user)) {\n this.user!.firstName = this.$appUtils.formatUserFullName(this.user!.firstName);\n }\n }\n\n @Watch(\"user.lastName\")\n onLastNameUpdate(val: string, oldVal: string) {\n if (this.isAdminEdit || val === oldVal) return;\n\n if (this.$helpers.isExists(this.user)) {\n this.user!.lastName = this.$appUtils.formatUserFullName(this.user!.lastName);\n }\n }\n\n @Watch(\"user.patronymicName\")\n onPatronymicNameUpdate(val: string, oldVal: string) {\n if (this.isAdminEdit || val === oldVal) return;\n\n if (this.$helpers.isExists(this.user)) {\n this.user!.patronymicName = this.$appUtils.formatUserFullName(this.user!.patronymicName);\n }\n }\n\n validateState(ref: string) {\n if (this.veeFields[ref] &&\n (this.veeFields[ref].dirty || this.veeFields[ref].validated)) {\n return !this.veeErrors.has(ref);\n }\n\n return null\n }\n\n autoUploadFileInput(newFile: VUFile, oldFile: VUFile) {\n if (this.isAvatarUploadDisabled) return;\n\n // Automatic upload\n if (Boolean(newFile) !== Boolean(oldFile) || oldFile.error !== newFile.error) {\n let avatarFileUploadComponent = this.getAvatarFileUploadComponent();\n if (!avatarFileUploadComponent.active) {\n avatarFileUploadComponent.active = true\n }\n }\n }\n\n async uploadAvatar(file: VUFile, component: VueUploadComponent) {\n if (this.isAvatarUploadDisabled || !this.$helpers.isExists(file) || !this.$helpers.isExists(file.file)) return;\n\n this.isAvatarUploadDisabled = true;\n\n filesApi.upload(enums.FileMetatype_UserAvatar, null, file.file, filePreview => {\n (this.getAvatarCropComponent()).bind({\n url: this.$files.previewUrl(filePreview)\n });\n this.isAvatarChangeMode = true;\n\n this.isAvatarUploadDisabled = false;\n }, errorMessage => {\n if (this.$helpers.isFunction(this.showErrorNotification)) {\n this.showErrorNotification!(errorMessage);\n }\n\n this.isAvatarUploadDisabled = false;\n })\n }\n\n async avatarCrop() {\n this.isAvatarCropDisabled = true;\n\n let fileBlob: Blob = await (this.getAvatarCropComponent()).result({\n type: 'blob',\n size: 'original',\n format: 'png',\n quality: 1,\n circle: false\n });\n\n filesApi.upload(enums.FileMetatype_UserAvatar, this.$files.largeAvatarVersion, fileBlob, filePreview => {\n this.user!.avatarFileId = filePreview.id;\n\n this.isAvatarChangeMode = false;\n\n this.isAvatarCropDisabled = false;\n }, errorMessage => {\n if (this.$helpers.isFunction(this.showErrorNotification)) {\n this.showErrorNotification!(errorMessage);\n }\n\n this.isAvatarCropDisabled = false;\n })\n }\n\n async onMapElementsChanged(isRegionChanged: boolean, isDistrictChanged: boolean) {\n if (isRegionChanged) {\n if (this.$helpers.isNumeric(this.user!.mapDistrictId)) {\n this.user!.mapDistrictId = null;\n }\n if (this.$helpers.isNumeric(this.user!.mapPointId)) {\n this.user!.mapPointId = null;\n }\n }\n else if (isDistrictChanged) {\n if (this.$helpers.isNumeric(this.user!.mapPointId)) {\n this.user!.mapPointId = null;\n }\n }\n\n await this.updateMapLookups();\n }\n\n async afterDataInit() {\n await this.updateMapLookups();\n\n this.organizations = appUtils.getAvailableOrganizationOptions(this.user!.availableOrganizations);\n\n this.updatePhoneLabels();\n }\n\n async updateMapLookups() {\n const thisInst = this;\n\n const mapRegionId = this.$helpers.isExists(this.user) ? this.user!.mapRegionId : null;\n const mapDistrictId = this.$helpers.isExists(this.user) ? this.user!.mapDistrictId : null;\n\n await appUtils.generateMapSelectOptions(mapRegionId, mapDistrictId, (mapRegions, mapDistricts, mapPoints) => {\n thisInst.mapRegions = mapRegions;\n thisInst.mapDistricts = mapDistricts;\n thisInst.mapPoints = mapPoints;\n }, this.showErrorNotification!);\n }\n\n updatePhoneLabels() {\n const thisInst = this;\n\n setTimeout(() => {\n thisInst.phoneLabels = [\n \"домашній\",\n \"мобільний\",\n \"службовий\",\n ];\n\n if (thisInst.$helpers.isExists(thisInst.user)) {\n for (let i = 0; i < thisInst.user!.additionalPhones.length; i++) {\n let label = thisInst.user!.additionalPhones[i].label;\n\n if (thisInst.$helpers.isNotEmpty(label)) {\n label = label!.trim();\n } else {\n continue;\n }\n\n if (!thisInst.$helpers.anyInArray(thisInst.phoneLabels, l => l === label)) {\n thisInst.phoneLabels.push(label);\n }\n }\n }\n\n // sort\n this.$helpers.sortStrings(thisInst.phoneLabels, x => x);\n }, 0);\n }\n\n validateAll() {\n return this.$validator.validateAll();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGeneralAndContactInfoSection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGeneralAndContactInfoSection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UserGeneralAndContactInfoSection.vue?vue&type=template&id=6bf7fcaf&scoped=true&\"\nimport script from \"./UserGeneralAndContactInfoSection.vue?vue&type=script&lang=ts&\"\nexport * from \"./UserGeneralAndContactInfoSection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UserGeneralAndContactInfoSection.vue?vue&type=style&index=0&id=6bf7fcaf&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6bf7fcaf\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGeneralAndContactInfoSection.vue?vue&type=style&index=0&id=6bf7fcaf&lang=scss&scoped=true&\""],"sourceRoot":""}