"use strict";(self.webpackChunkfindagrave_frontend=self.webpackChunkfindagrave_frontend||[]).push([[3763],{69917(t,o,e){e.d(o,{Ri:()=>n,TV:()=>i,kQ:()=>r});e(71757);function i(t,o,e,i){let n="",r=`path= ${i&&i.length>0?i:"/"};`,a=`domain=.${location.hostname.split(".").slice(-2).join(".")};`;if(e){let t=new Date;t.setTime(t.getTime()+24*e*60*60*1e3),n=`expires=${t.toUTCString()};`}document.cookie=`${t}=${o};${n}${r}${a}SameSite=Lax;Secure;`}function n(t){let o=document.cookie.split("; ").find(o=>o.split("=")[0]===t);return o?o.split("=")[1]:""}function r(){var t=n("consentSettings"),o={pref:!1,ga:!1,aa:!1};try{o=JSON.parse(t)}catch(t){}return o}},87938(t,o,e){e.d(o,{V:()=>r});var i=function(t,o,e,i){return new(e||(e=Promise))(function(n,r){function a(t){try{s(i.next(t))}catch(t){r(t)}}function l(t){try{s(i.throw(t))}catch(t){r(t)}}function s(t){var o;t.done?n(t.value):(o=t.value,o instanceof e?o:new e(function(t){t(o)})).then(a,l)}s((i=i.apply(t,o||[])).next())})};function n(t){const o=Math.abs(t),e=Math.floor(o),i=60*(o-e),n=Math.floor(i),r=60*(i-n);return{parts:[[e,1],[n,1],[Math.round(1e4*r),1e4]]}}function r(t,o){return i(this,void 0,void 0,function*(){if(!t)return t;if(!function(t){const{latitude:o,longitude:e}=t;return"number"==typeof o&&isFinite(o)&&Math.abs(o)<=90&&"number"==typeof e&&isFinite(e)&&Math.abs(e)<=180&&!(0===o&&0===e)}(o))return t;const e=new Uint8Array(yield t.arrayBuffer());if(e.length<2||255!==e[0]||216!==e[1])return t;const i=function(t){const o=[],e=t=>o.push(255&t),i=t=>{e(t>>8),e(t)},r=t=>{e(t>>24),e(t>>16),e(t>>8),e(t)};i(19789),i(42),r(8);const a="number"==typeof t.orientation&&t.orientation>=1&&t.orientation<=8,l=a?2:1,s=2+12*l+4+8;i(l),a&&(i(274),i(3),r(1),i(t.orientation),i(0)),i(34853),i(4),r(1),r(s),r(0);const d=t.latitude,u=t.longitude,c="number"==typeof t.altitude&&isFinite(t.altitude),h=n(d),p=n(u),v=c?7:5;let f=s+(2+12*v+4);const E=f;f+=24;const g=f;f+=24;const y=c?f:0;c&&(f+=8),i(v),i(0),i(1),r(4),e(2),e(3),e(0),e(0);const P=d>=0?78:83;i(1),i(2),r(2),e(P),e(0),i(0),i(2),i(5),r(3),r(E);const m=u>=0?69:87;if(i(3),i(2),r(2),e(m),e(0),i(0),i(4),i(5),r(3),r(g),c){const o=t.altitude;i(5),i(1),r(1),e(o<0?1:0),e(0),i(0),i(6),i(5),r(1),r(y)}r(0);const _=([t,o])=>{r(t),r(o)};return h.parts.forEach(_),p.parts.forEach(_),c&&_([Math.round(100*Math.abs(t.altitude)),100]),new Uint8Array(o)}(o),r=[69,120,105,102,0,0],a=2+r.length+i.length;if(a>65535)return t;const l=new Uint8Array(2+a);let s=0;l[s++]=255,l[s++]=225,l[s++]=a>>8&255,l[s++]=255&a,r.forEach(t=>{l[s++]=t}),l.set(i,s);const d=new Uint8Array(e.length+l.length);return d.set(e.subarray(0,2),0),d.set(l,2),d.set(e.subarray(2),2+l.length),new Blob([d],{type:"image/jpeg"})})}},85244(t,o,e){e.d(o,{Z:()=>n});var i=function(t,o,e,i){return new(e||(e=Promise))(function(n,r){function a(t){try{s(i.next(t))}catch(t){r(t)}}function l(t){try{s(i.throw(t))}catch(t){r(t)}}function s(t){var o;t.done?n(t.value):(o=t.value,o instanceof e?o:new e(function(t){t(o)})).then(a,l)}s((i=i.apply(t,o||[])).next())})};function n(t){return i(this,void 0,void 0,function*(){const o=(t.blob?t.blob.stream():t.stream()).getReader(),e=[];let i=!1;for(;!i;){const{value:t,done:n}=yield o.read();i=n,t&&e.push(t)}const n=new Uint8Array(e.reduce((t,o)=>t+o.length,0));let r=0;for(const t of e)n.set(t,r),r+=t.length;const a=yield crypto.subtle.digest("SHA-256",n);return Array.from(new Uint8Array(a)).map(t=>t.toString(16).padStart(2,"0")).join("")})}},1745(t,o,e){e.d(o,{U:()=>a,o:()=>r});var i=e(87938),n=function(t,o,e,i){return new(e||(e=Promise))(function(n,r){function a(t){try{s(i.next(t))}catch(t){r(t)}}function l(t){try{s(i.throw(t))}catch(t){r(t)}}function s(t){var o;t.done?n(t.value):(o=t.value,o instanceof e?o:new e(function(t){t(o)})).then(a,l)}s((i=i.apply(t,o||[])).next())})};function r(t){return n(this,void 0,void 0,function*(){if(!t.options.heifConverter){const o=yield fetch("/assets/js/libheif/libheif.wasm"),e=yield o.arrayBuffer(),i=libheif({wasmBinary:e});t.options.heifConverter=new i.HeifDecoder}return t.options.heifConverter})}function a(t,o){return n(this,arguments,void 0,function*(t,o,e={}){const{maxWidth:n=1600,maxHeight:r=1600,quality:a=.85,gps:l}=e,s=t.decode(o)[0];if(!s)return null;const d=s.get_width(),u=s.get_height(),c=Math.min(1,n/d,r/u),h=Math.round(d*c),p=Math.round(u*c),v=document.createElement("canvas");v.width=d,v.height=u;const f=v.getContext("2d");if(f){const t=f.createImageData(d,u);yield new Promise(o=>{s.display(t,o)}),f.putImageData(t,0,0),s.free()}const E=document.createElement("canvas");E.width=h,E.height=p;const g=E.getContext("2d");g&&g.drawImage(v,0,0,h,p);let y=yield new Promise(t=>{E.toBlob(o=>t(o),"image/jpeg",a)});return l&&(y=yield(0,i.V)(y,l)),{blob:y,width:E.width,height:E.height}})}},99376(t,o,e){e.d(o,{v:()=>i});e(71757);function i(t){return t&&["city","county","state","country"].map(o=>t[o]).filter(t=>t).join(", ")}},59041(t,o,e){e.d(o,{A:()=>i});class i{constructor(t){this.data=t,this.subscribers=[]}subscribe(t){this.subscribers.push(t)}set(t,o){this.data.set(t,o),this.subscribers.forEach(t=>t(this.data))}delete(t){this.data.delete(t),this.subscribers.forEach(t=>t(this.data))}get(t){return this.data.get(t)}getAll(){return this.data}setAll(t){this.data=t,this.subscribers.forEach(t=>t(this.data))}}},27460(t,o,e){e.d(o,{No:()=>d,v2:()=>h});var i=e(39708),n=e(95099),r=e(85244),a=function(t,o,e,i){return new(e||(e=Promise))(function(n,r){function a(t){try{s(i.next(t))}catch(t){r(t)}}function l(t){try{s(i.throw(t))}catch(t){r(t)}}function s(t){var o;t.done?n(t.value):(o=t.value,o instanceof e?o:new e(function(t){t(o)})).then(a,l)}s((i=i.apply(t,o||[])).next())})},l=function(t,o){var e={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&o.indexOf(i)<0&&(e[i]=t[i]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(t);n0?e:void 0}const u=i.J1` mutation ValidatePhotoUpload($input: PhotoValidationInput!) { validatePhotoUpload(input: $input) { __typename ... on PhotoValidationSuccess { validationToken validationWarnings } ... on PhotoUploadDuplicate { duplicateValidationToken: validationToken validationWarnings duplicate { id path approvalStatus type contributor { id } coordinates { lat lon } caption analysis { isReadableGraveImage isSafeForAllAudiences inscription deceased { givenNames surNames maidenName title suffix birthDayOfMonth birthMonth birthYear deathDayOfMonth deathMonth deathYear possibleVeteran duplicates { memorialId firstName lastName middleName nickName prefix suffix maidenName birthDay birthMonth birthYear deathDay deathMonth deathYear fileName isFamous noMorePhotos intermentIsSponsored totalImageCount sponsorContributorId photoContributorCounts } } } } } ... on PhotoUploadError { errorCode message } } }`,c=i.J1` mutation CreatePresignedPostUrl($input: PhotoUploadInput!) { createPresignedPostUrl(input: $input) { __typename ... on PhotoUploadSuccess { url key fields uploadToken } ... on PhotoUploadError { errorCode message } } }`;class h{constructor(t,o){this.apolloClient=t,this.getUploadInput=o,this.queue=new n.A({concurrency:5})}add(t,o,e){return a(this,void 0,void 0,function*(){this.queue.add(()=>a(this,void 0,void 0,function*(){try{const e=yield this.getUploadConfig(t);this.attachUploadData(t,e),e.duplicatePhoto?o("DUPLICATE_PHOTO"):o()}catch(t){o(t.message)}}))})}prepare(t){return a(this,void 0,void 0,function*(){var o,e;if(t._validationError){if("DUPLICATE_PHOTO_LINKED"===t._validationError)return;if("VALIDATE_NOT_DEPLOYED"!==t._validationError)throw new Error(t._validationError);t._validationError=null}if(t._validationToken){const i=t._validationToken;t._validationToken=null;try{const o=yield this.callCreatePresignedPostUrl(i);return void this.attachUploadData(t,o)}catch(t){if(!((null===(o=t.message)||void 0===o?void 0:o.includes("Validation token is missing or expired"))||(null===(e=t.message)||void 0===e?void 0:e.includes("validatePhotoUpload first"))))throw t}}const i=yield this.getUploadConfig(t);this.attachUploadData(t,i)})}validate(t){return a(this,void 0,void 0,function*(){var o,e;t._validationToken=null,t._validationError=null,t.duplicatePhoto=void 0,t.duplicateValidationToken=void 0,t.gpsOutOfBounds=!1,t._validating=!0;try{t.hash||(t.hash=yield this.calculateFileHash(t));const e=this.getUploadInput(t);let i;try{i=yield this.callValidatePhotoUpload(e)}catch(o){return void(t._validationError="VALIDATE_NOT_DEPLOYED")}if("PhotoUploadError"===i.__typename&&"INTERNAL_ERROR"===i.errorCode&&(i=yield this.callValidatePhotoUpload(e)),this.applyValidationWarnings(t,i),"PhotoValidationSuccess"===i.__typename){if(!i.validationToken)throw new Error("INTERNAL_ERROR");return void(t._validationToken=i.validationToken)}if("PhotoUploadDuplicate"===i.__typename){const o=this.resolveDuplicateResult(i.duplicate,i.duplicateValidationToken,i.validationWarnings);return t.duplicatePhoto=o.duplicatePhoto,t.duplicateValidationToken=o.duplicateValidationToken,void(t._validationError="DUPLICATE_PHOTO_LINKED")}if("PhotoUploadError"===i.__typename){const e=null!==(o=i.errorCode)&&void 0!==o?o:"UPLOAD_ERROR";throw t._validationError=e,new Error(e)}throw t._validationError="UPLOAD_ERROR",new Error("UPLOAD_ERROR")}catch(o){const i=(null===(e=o.message)||void 0===e?void 0:e.includes("Unauthorized"))?"Please log in to upload photos":o.message;throw t._validationError||(t._validationError=i),new Error(i)}finally{t._validating=!1}})}getUploadConfig(t){return a(this,void 0,void 0,function*(){t.hash=yield this.calculateFileHash(t);const o=this.getUploadInput(t);try{return yield this.runValidateAndPresign(t,o)}catch(t){const o=t.message.includes("Unauthorized")?"Please log in to upload photos":t.message;throw new Error(o)}})}runValidateAndPresign(t,o){return a(this,void 0,void 0,function*(){const e=yield this.callValidatePhotoUpload(o);if("PhotoUploadError"===e.__typename&&"INTERNAL_ERROR"===e.errorCode){const e=yield this.callValidatePhotoUpload(o);if("PhotoUploadError"===e.__typename&&"INTERNAL_ERROR"===e.errorCode)throw new Error("INTERNAL_ERROR");return this.applyValidationWarnings(t,e),this.dispatchValidateResult(e)}return this.applyValidationWarnings(t,e),this.dispatchValidateResult(e)})}callValidatePhotoUpload(t){return a(this,void 0,void 0,function*(){var o,e,i,n,r,a,s,d,c,h,p,v;const{fghash:f,photoParams:E}=t,g=l(t,["fghash","photoParams"]),y=Object.assign(Object.assign({},g),{photoParams:Object.assign(Object.assign({},null!=E?E:{}),f?{fghash:f}:{})});let P,m;try{({data:P,error:m}=yield this.apolloClient.mutate({mutation:u,variables:{input:y}}))}catch(t){const l=(null!==(n=null!==(o=null==t?void 0:t.graphQLErrors)&&void 0!==o?o:null===(i=null===(e=null==t?void 0:t.networkError)||void 0===e?void 0:e.result)||void 0===i?void 0:i.errors)&&void 0!==n?n:[]).some(t=>{var o,e,i;return"GRAPHQL_VALIDATION_FAILED"===(null===(o=null==t?void 0:t.extensions)||void 0===o?void 0:o.code)||(null===(e=null==t?void 0:t.message)||void 0===e?void 0:e.includes('Cannot query field "validatePhotoUpload"'))||(null===(i=null==t?void 0:t.message)||void 0===i?void 0:i.includes('Unknown type "PhotoValidationInput"'))})||(null===(r=null==t?void 0:t.message)||void 0===r?void 0:r.includes('Cannot query field "validatePhotoUpload"'))||(null===(a=null==t?void 0:t.message)||void 0===a?void 0:a.includes('Unknown type "PhotoValidationInput"'))||(null===(s=null==t?void 0:t.message)||void 0===s?void 0:s.includes("GRAPHQL_VALIDATION_FAILED"))||400===(null===(d=null==t?void 0:t.networkError)||void 0===d?void 0:d.statusCode);if(l)throw new Error("VALIDATE_NOT_DEPLOYED");throw new Error(null!==(c=null==t?void 0:t.message)&&void 0!==c?c:"INTERNAL_ERROR")}if(m){const t=Array.isArray(m)?m.some(t=>{var o;return"GRAPHQL_VALIDATION_FAILED"===(null===(o=null==t?void 0:t.extensions)||void 0===o?void 0:o.code)}):"GRAPHQL_VALIDATION_FAILED"===(null===(h=null==m?void 0:m.extensions)||void 0===h?void 0:h.code);if(t)throw new Error("VALIDATE_NOT_DEPLOYED");throw new Error(null!==(v=null===(p=m[0])||void 0===p?void 0:p.message)&&void 0!==v?v:"INTERNAL_ERROR")}if(!(null==P?void 0:P.validatePhotoUpload))throw new Error("INTERNAL_ERROR");return P.validatePhotoUpload})}dispatchValidateResult(t){return a(this,void 0,void 0,function*(){var o;if("PhotoValidationSuccess"===t.__typename){const o=t.validationToken;if(!o)throw new Error("INTERNAL_ERROR");return this.callCreatePresignedPostUrl(o)}if("PhotoUploadDuplicate"===t.__typename)return this.resolveDuplicateResult(t.duplicate,t.duplicateValidationToken,t.validationWarnings);if("PhotoUploadError"===t.__typename)throw new Error(null!==(o=t.errorCode)&&void 0!==o?o:"UPLOAD_ERROR");throw new Error("UPLOAD_ERROR")})}callCreatePresignedPostUrl(t){return a(this,void 0,void 0,function*(){var o,e;const i={validationToken:t},{data:n,error:r}=yield this.apolloClient.mutate({mutation:c,variables:{input:i}});if(r)throw new Error(null!==(e=null===(o=r[0])||void 0===o?void 0:o.message)&&void 0!==e?e:"UPLOAD_ERROR");return this.resolvePresignedResult(null==n?void 0:n.createPresignedPostUrl)})}resolvePresignedResult(t){var o;if(!t)throw new Error("UPLOAD_ERROR");if("PhotoUploadSuccess"===t.__typename)return t;if("PhotoUploadError"===t.__typename)throw new Error(null!==(o=t.errorCode)&&void 0!==o?o:"UPLOAD_ERROR");throw new Error("UPLOAD_ERROR")}resolveDuplicateResult(t,o,e){var i;if(Array.isArray(e)&&e.includes("NO_PHOTO_ANALYSIS"))throw new Error("DUPLICATE_PHOTO");if(!t)throw new Error("DUPLICATE_PHOTO");if(null===(i=t.approvalStatus)||void 0===i?void 0:i.includes("Declined"))throw new Error("DECLINED_PHOTO_STATUS");if(!t.id)throw new Error("DUPLICATE_PHOTO");return{duplicatePhoto:t,duplicateValidationToken:o}}applyValidationWarnings(t,o){const e=o.validationWarnings;Array.isArray(e)&&e.includes("COORDINATES_OUTSIDE_CEMETERY")&&(t.gpsOutOfBounds=!0)}calculateFileHash(t){return a(this,void 0,void 0,function*(){return(0,r.Z)(t)})}attachUploadData(t,o){if(o.duplicatePhoto)return t.duplicatePhoto=o.duplicatePhoto,void(t.duplicateValidationToken=o.duplicateValidationToken);t.uploadUrl=o.url,t.key=o.key,t.AWSFields=o.fields||{},t.uploadToken=o.uploadToken}}}}]); //# sourceMappingURL=3763.d5277aa80f12828e6304.js.map